From 7d94fb8e8b808c88c17e6cea9204f0953c2e2624 Mon Sep 17 00:00:00 2001
From: Oliver Instruction 4 has a data dependency on 1
+ Instruction 11 has a data dependency on both 2 and 9
+ Instruction 8 has a control flow dependency from 6
+ Target: Start with a line and a set of variables. Goal: Find the subset of the program that generates the same values for the specified variables. Worst case assumptions:
+ Program Slicing Recap
+
+
+
+
+
+01: read(N)
+02: Z := 0
+03: I := 1
+04: while (I < N) do
+05: read(X)
+06: if (X < 0) then
+07: Y := f1(X)
+ else
+08: Y := f2(X)
+ end if
+09: Z = f3(Z, Y)
+10: I = I + 1
+ end while
+11: write(Z)
+
Control Flow Graph
+
+ Data Flow Dependency
+
+
+
+01: read(N)
+02: Z := 0
+03: I := 1
+04: while (I < N) do
+
Data Flow Dependency
+
+
(any unbroken path from write to read counts)
+
+02: Z := 0
+ ...
+04: while (I < N) do
+ ...
+09: Z = f3(Z, Y)
+ ...
+ end while
+11: write(Z)
+
Control Flow Dependency
+
+
Instruction 9 has a control flow dependency from 4
+
+04: while (I < N) do
+06: if (X < 0) then
+ else
+08: Y := f2(X)
+09: Z = f3(Z, Y)
+
Slicing
+ Slicing Algorithm
+
+
+ Function Slices
+
+
+
+ Up/Down Flow
+
+ For call $f(a, b, c)$ with $f$ defined as $\texttt{def } f(x, y, z)$.
+
+
+ define f(x, y, z):
+1: x = y + z
+2: z = y * z
+ end
+
+
+
+
+
+1: x = 2
+2: y = 3
+3: *z = 4
+4: write(x)
+
+ Does $x$ on the last line depend on line 3?
+It depends on what $z$ is
+
+1: x[0] = 2
+2: x[1] = 3
+3: x[z] = 4
+4: write(x[0])
+
+ Does $x[0]$ on the last line depend on line 3?
+It also depends on what $z$ is
+Which value gets written to can change at runtime.
+Idea 1: Worst-case assumptions
+Slightly tighter restrictions possible if referring to an array/struct instead of a pointer
+Idea 2: Determine possible program states
+
+ struct { int curr; LL *next } LL;
+1: read(N)
+2: I := 0
+3: X := new LL { -1, null }
+4: Y := &X->curr
+5: while(I < N)
+6: X := new LL { I, X }
+7: Y := X->next->curr
+8: I := I + 1
+ end while
+9: print_ll(X)
+
+ What does X depend on as of line 6?
+Consider possible state trajectories
+ +View each entry in the state trajectory as a set of possible states
+{ | N = [read value] (line 1); |
I = 0 (line 2); | |
$\ell_1$ = { -1, null } (line 3); | |
Y = ptr to $\ell_1$.curr; (line 4); | |
X = ptr to $\ell_2$ (line 6); | |
$\ell_2$ = { 0, ptr to $\ell_1$ } (line 6) } |
{ | N = [read value] (line 1); |
I = 0 (line 2); | |
X = ptr to $\ell_1$ (line 3); | |
$\ell_1$ = { -1, null } (line 3); | |
Y = ptr to $\ell_1$.curr; (line 4); } |
{ | N = [read value] (line 1); |
I = 0 (line 2); | |
$\ell_1$ = { -1, null } (line 3); | |
Y = ptr to $\ell_1$.curr; (line 4); | |
X = ptr to $\ell_2$ OR $\ell_1$ (lines 3 or 6) | |
$\ell_2$ = { 0, ptr to $\ell_1$ } (line 6) } |
Problem: Infinite possible states!
+Each time through the loop we get another $\ell$ assigned.
+Observation: Only need to repeat states enough times to get dependencies
+Idea: Collapse states into the minimum needed
+
+ struct { int curr; LL *next } LL;
+1: read(N)
+2: I := 0
+3: X := new LL { -1, null }
+4: while(I < N)
+5: X := new LL { I, X }
+6: I := I + 1
+ end while
+7: print_ll(X)
+
+ { | N = $\mathbb C$ (line 1); |
I = $\mathbb C$ (line 2); | |
$\ell_1$ = { $\mathbb C$, null } (line 3); | |
X = ptr to $\ell_1$ (line 3) |
{ | N = $\mathbb C$ (line 1); |
I = $\mathbb C$ (line 2); | |
$\ell_1$ = { $\mathbb C$, null } (line 3); | |
$\ell_2$ = { $\mathbb C$, ptr to $\ell_1$ } (line 5); | |
X = ptr to $\ell_2$ (line 5) |
{ | N = $\mathbb C$ (line 1); |
I = $\mathbb C$ (line 2); | |
$\ell_1$ = { $\mathbb C$, null } (line 3); | |
$\ell_2$ = { $\mathbb C$, ptr to $\ell_1$ } (line 5); | |
$\ell_3$ = { $\mathbb C$, ptr to $\ell_2$ } (line 5); | |
X = ptr to $\ell_2$ (line 5) |
$\ell_2$ and $\ell_3$ are "similar". Replace them with a new virtual $v_4$
+{ | N = $\mathbb C$ (line 1); |
I = $\mathbb C$ (line 2); | |
$\ell_1$ = { $\mathbb C$, null } (line 3); | |
$v_4$ = { $\mathbb C$, ptr to $\ell_1$ OR $v_4$ } (line 5); | |
X = ptr to $v_4$ (line 5) |
2+ loops subsumes both 1 loop and 3+ loops
+Final state representation: { 0 loops; 2+ loops }
+What if we want to slice a program in the context of specific inputs?
+
+01: read(N)
+02: Z := 0
+03: I := 1
+04: while (I < N) do
+05: read(X)
+06: if (X < 0) then
+07: Y := f1(X)
+ else
+08: Y := f2(X)
+ end if
+09: Z = f3(Z, Y)
+10: I = I + 1
+ end while
+11: write(Z)
+
+ ... with N = 2, X = -4, 3 the trace of this program is
+ $1^1$ $2^1$ $3^1$ $4^1$ $5^1$ $6^1$ $7^1$ $9^1$ $10^1$ $4^2$ $5^2$ $6^2$ $8^2$ $9^2$ $10^2$ $4^3$ $11^1$
+
(superscripts distiguish repeated occurrences)
+Instead of considering all paths, focus on the trace under the provided inputs
+(Dependencies for Y as of $8^2$ on N = 2, X = -4, 3)
+Added benefit: Can handle pointer tracking gracefully: Know exactly what the pointer's value will be.
+Dyc!ja{HV*Bdrf17( z1l}Iwb^R|@6qSCD-KpK&UX@57?&oF?wiTt~^c3cY_W8U=$8VF?vE2T)ZRo!heY!m(wY+W z7WT8J?E5hWwtVO@DwKYD-)h|H#*BqDULtC3k=;3i1J3InCaiOLf={ZJ(p9Qv1r>eN zpZ2ko9u#FE2JST%xJLWkp*byniiO`nn=RtjO=v81Rp^NGb(%NnrfpCftxC3@kd4M| z2d0={%_c_|(J~$f9{eb-dpTY04nu2P A$EwWA0e*mA$+(%iW+sjE46Ibu8&k zH}Ao|U 7~z?M;}cRuZ*IPKAQL+Fpw_os7kHg&Dj)jd(H& z_QRdGTs2?Zctju>O8;_4OCmQ*Iis@3`W4E0B!`@@ZN2^ `7(9a*Wi^p*{wG+v=b5w9%0c(H&-8WFSAzq%{@l>9o8xzn`=3LU|J+A z@)b+6J#A{`zLHyfC*vq7AJ+KfxMe=tc%E(+>+n3=f)b5*)#B$y$8fDQ+Q$$6qGE*} z<%(jz7W`IBZG@gbvGeCsZIduAw?{Acs-ZT=3nQkbc{VTXu1KF?C7XIwT$NfSb*g_e zc&4mm_&%sJOlsgi*piQ?CmmPs=1;wUkD_>WC7bIp=xc7A6n HS8^pv)PG%(s(@_d!#4hb0Vawv3qyC6Fitg9&tgU}^J?)I`0i5jT~c=;@7f-z z`)IzS38Ej1i*`J-W?353@KLDnjT)i|loebx|Dg)J9=M$Nj9WmJ-c0sDcZe$zza>|D zA;;r$TDe-7WIVRr2wRHXy^pt+8BA%Jl~GooSL|u0ci%~;z2CY*r?5C|mhFK>jZp3} z-?$wr5<*XEw(#&Ti<6L}FC%k+H_LzxCaIw05~eOKK~8hmG`X;PhU!fcJ<-;)famrO z=X#C=MbFP36MZ&+BHkK%Pi=E0pThx>IuLeF^-4f Hbrh&i`ZfJBftO-swkap)7-vdei_!ZXWNb5e{ CRLjW{G$?c`u^{(`06#Pc#EunPx0-n(wr+qLLu#5eBV;EaBObujIz; #Z(UD)mo8NcZ-9nJVtXauLiNCf)2EmQa-HnKasj `l)pDI+|YF0ofwXpkz4he(w0s78Y9M6{z z75_eV*R5u1V#?MdEBq>Sj6$!!;`ckEa)=6NqxAWR74^-O2g!RH^VEq{ hJS2ZDp2sA5+U}d)vC|@6G2~rAV47Fgm)WG-WR5>D9hsb>*K@=X=<| zJg;t+?=9z_JosgR#UZYIdTS@y$c#l&)wbjW14=Mz^5+93gYdFZL`dz_L5iN*3nn~k z3O9^shSy&H#eW-}xtj(rza@Ls5 <6Do>l%jD{m4+KBh*bJ2b0e~@;{rpq%6P9utIWDApFH} zN_@9U=|Z_IKU^*qb?Hw)a&-DhMBJXmnea%T@<%d_i47Je)z>YrYQOfM-7s~(-PL){YuFiQ;aw4%nX9d7_Dgcj8g5iw5vk zx7CeyGip~ UZ3mUVSBsjM3C ZALdQq(Q T&N9`ZI%*J74wGg~MkZNuS#G zQ7{OH%)OyIbC!F7T3k@su5ODVaukG{UX>uDeOFMvq?$u?PXcv*j!_wZZXrxU%Z8`a zD9v!D30D;@r)`I{jsSh*q!_(8XK^+qD>60YCsS9OW-6vE;W>NW*$JD8N+tFLp6nqx zZ-6iz6(#L2*X*sO#cSEqu4?bk)Dpg&BMNzlyz*a^zZl=EX1gP1SGErfZA`1Nz1JpU z-WalYznk9_Qhgt5=GD HG!E(*glhg|+LSva=P&O>+oivIfG#=O0!+zGh+4r3I z=2<4sVtEqb2UOMQCONy58@j=(-?W$F1|~?VwtZOFoLufTy*yO)Ue|svHu~z5jP_Ds z>G5}g)})2muwbR?9Lz0Zg6+g@OKhH9x=6MT^YvYI8c}}Y+hndA3agT?LY-eG{-*pO z_x;UhPIRI2S*>`nQp(`Of=$#n;r8u3{;)4TA90(Wl_ZpM m-CpI!7GeI&0t zQ0uVmQBq|wgfTfBa^F;bocoQ#1sZ9Tp-$dB#iW}uL3)}f&QqtZiI_f;Odik5hL>tH zjY}MDBpmmj`lDAyYGD7C^qGtMK6^`+n-jeg; ^mH@hBPaXr$t%j)?7& zn=kdQc#ZCmEXf(*fIj0h!1kkZ4Iz?zJ9|WL$or-&hvM1Ja0%*~sJ=nwpPb(E0pAQo zwR_S1U6P&Ao&=xJ9!ZE#rnsBWza00>3(QoVKI48<&2t`gy-l}=V$CpD^ytO@-$nAV z?;7dlImS0qj&B9N9c!qG%@$3tSm}Lerj4UGQ7IW8Kek^(>&N9j*61wNVrzvitlfH6 zLv7~&NJ#5Zg@=l~n@f3H+2F 6`3y3XPlkJ{hiR)V+7Pp4SI;)FU|QD`+~ zjiXij$F;;YMJ^{xM^k4zQ!z%)E294;95E7nH$A3&o&CDJT+%8#l<4(uEvo1GGNk^8 z*ir$@LkVJS3QIJ<@U7ayM|Iftn(6zd`FSfbUEdVC{!$5R*~2SpYDs)?CWdpDl#o=z zdrrp3A(LFX_<0jXD5X?AR^>+Avx tT`)$7ve`cjILT+f{bG^WH(N` WU=ea0j;wE`FRmB`>PG&2zzjeuCUY$#3680DC-{vf{&Qm+NOYpHKB(g=N z?@cmC1i{H>?S#0jmO(@DzhC8L1M8`4A&&;qsX0p>1vzK`Bqr|#q)D^#QBaX{mt-gJ z%(uAEXWnERK<)VO4!<~JvxH7f-qTV{SX=SaF1y8k<-4)+$kA3+(;+%Sub{3X;X4$s zu{;bD#xRPoNM30l`_qo15q7Y=+)|@9FU&plrd?tm(XvVNWycfXSbL$u$)bd{UVI%) zm734GmF2{cqmf3`!KIGF`y`s9@8Ei@fL8u&e4_r-gM$@)V%wVakZRU5l=&PpNj2;Q z2dS3@{fT{dm8jL&&GJg0{+;;ySoVC@v3KnC-hR-5d)Kv`MWu#|4c9;F@^p`^Ha}`2 z7@=Z5)KpVO{6qdJd|#0US8zPkO&=o=yv)e|Q2ff|p1?&cZw+k~taThpGy+;;V=s9G zf&rnStYGLj|MQ!#$<5glu>-z4Qo<-CDzOiX?&~%v{WNJn<17~798jKcAWN9FdMMl{ z%(BHffJueHq8j_2*@&2Urw|+aIm5lu{Kh4@qu(9bPk7P|X1+i5<87m}x8Hv$(P*F9 zd^0+_o6;s;V8DdgssG;p{3t$T3l}JDXlw=H?|1=1!CS~XDAyU%keA~ g5BNU|`QJBa$S4^? zzT45O>T2BEw{KTgR?2H@6CetUicns>c=7s~j)DTp{QNuu5h{ a0{O>} zAI($#=k>K_re|i>CQ8(XK7CTs(Mdcz{rS@+Jw3g!v=qIptc;z5L&3r#?`%K)#fzf4 zIzoiQboI^oCP(J$w{PAE5|cPNIq6zhTz$M277;0`slk(xkwHGd-`{_Gu7No|Az`BJ z@gquV>fX6IO1SvUi!$v7uClT@LA(HK9xg6!a%$@HrY7Oi^77c=vEgA95(P_3dR0|b zenG+KF)=vt@$utz7E;^W+wy8^SnuAwTU! *3yoJ`KkOMt!D*xHIU8-3H* zsHdwN5*dk!K>p?J<1^9XYPP+*tEi%)vM5qpRu(by%1jC3@#=oFB78xJ@gVEW^mGi` z6ouSafgBd1vby>MY(ivY ch}tD5g)1 14Kcc11ovX81)#BV%HQxoi;H zT3S{P4%ikJ7M{9a$rRii9XaUag5uSZ=on!?pFVxMw%pj*n39%;1~2NpzeI~%vzS;E zY^DG4E{3zSGo)xyWhHhdpQWmyAz9sn_p#yO=uOVEgioG4sc&oyd-aOP|8(!l$YOqy zlZ{P{#^XWz6N0yH-<}s2Ger{8;syi+bet{)Y%h1o`8Epux9;~r^0(;e`3U)uuL-M$ zvN<&Ar1;i5Gc&V2S%yb;^R_RYjgODW z+`yVI@_Pac55O;` xp!&$n_V z9%G8REy_m`(juQOE-r5MbFN{0a&j&9ArjNFIsg@V&wqdS-28Y`Sw)4BnHkOA-X0m% z_wQveiRieGQ8w`o4-c^k2vi*!Py+$DyEMTCMfPczAfoLsnc1cIvW|F>!F<=;`UT z23<)a-y6ySS(i&obS0_@A1d`qN`q+Z4JvDE`y%it`V<~LctEEbPZ{d?rQG^xW0;?x zf91~qEQh RH< zEG#St;*fcbzPULKDjFII8Cm$++CyXpT>ROg6mz2ioTT=#G&MC9_uZoz&6A3Xqu?uU zX(5M24Qvdj2{=x&Z2$Q28{>@a>({Rk)_&wlZr#G6rl$U!FGD>#ItsP3h5JA8U}^W= z&u`rXBqW4w&Jwi49Y~~&13(;7K0W;eAmgz;&WMhQ$podeKA0307l%hfOWQ9Ynv<=| zt_)fDp|_WWoIJ9$lm(wk7(0#a?m#++ft9s&55-mi85!Bi_CyIbK7QXTv$x3P`J63+ zr=z3eFk44!O#EL9Vo`wiOr()`z8v(IAc;=q!@+8=fX}X>R=)HtKpH{grH>!)(8&0c z{XN|uggxQ6|4fN|4TEwm$D{C{ubH{H@T{$^vGMSfY;9TI`R)@wdi1EZwG}Wsm2XaN zcyv@%SC<$9nUa+ijdO!_C5%Y6`|NPNsI;{2W*@RUHf*Is3+e8b_rzOj^;}>1`7<8w zQ&%pWo{Ppdt~2kszWRH(;NI0UG=#n1^-p$jagjwbnU{y>zraF@;8E~)fB1mP%ggKG z>ACtxJ(wAi6}eo8CV%RU_=OgiNF}<*pc=D6-d03d|&g5;#Cam9E zBfU_8e&rVh!T_$Y`*U5vayq% Ybmb(#+)TuQhG#)6~7w&UQDSfuEoF`uZB6 zyRR?i#^Lqf{l^rCa#Pa)=d0hpM*$9g&JiP`4?1HclCeV8{oF!yTwE_i&hzZR8re8T zMhK9>`#dsY*Ya6JL`2+soA}AkxzPA{d}LA}KYDSx&-dl~#nSr#agP-QA-ybqkuJ8e zv2kmA`(xr`Hs$c&-^Xlb>nz|MqVn=+WiJnuv~olf&>sI+Pggm+yH4mB7}jt{bW+kF zq~QUqv$v;bl@F)aP6KF6(DnHvWK^|tL`_;;Zf%Vf5V^X#wn_dYARrJAybwP5wGb5@ zjg3zyO}V$XmnHF-_4~?YT1SWU< 7hijXNWLN0!1Su@ aX0K?^wf8Cq1tXjE$w+V=Rn zA_MV|cUufL2?@#BZp~{XImEytx4ODG7HrhH_{SMwYI@7b*|~pn1W2Be654!=>)#p2 zit6fWVq#*1rKKeqIr+nhVwHn~gOHRIl4S=z4qje>M5&b@Kk#ncxKVq*85b&g@&4!r zp1^>uk)k4M+q-wEsi~w;KZ&Ec5=u-d>RX?9$Z$Ehx#KTRerW<{-Pqhz0ctI1(7CZ; zdvQE#x%2aDqq4H0k&!9{XbO5lY)lLzQ}OGr>uf|aRO#8imbNwy;{4)*lmzJScXb1U zG)eDmd8iv@<)*;DPmT@_3T*}xV}1y7am7(lQ9Y2rOi@>c*3Jt3L*K}#9Jb8>8ve3( zus$#eSy|bsA| 0Qo)tT?e|%H{nQ1O6r@I1IM!d`o@k@#EI )!?ctUiR}2wpw>T@G2<;Jz&Dvd}`HSVZhRQ`=Ll5@#E YdEk2E(nHmo4#CY{gP%(-u}lg4-ex;(o+{|?LSzc~J}y1UCMGTcxg{q*^- zg}3XIWt!2^(IItpyb#~;M`QWcbM@BxX~gf}y`!=Wz7l!(@ZrI)x68#qdyreKlP`?} z)c*3Imk3D)uyXjSUcVlM#Kd)XcLxP$4V7f_&YJ^%Z1eiBn`IF3GBYt9^ix=_toBAB zan-2KoI^~b53be+UHOBy>HhQykN(*K3faw@w=c2^ TNYS5~a9-`MCULBA^ Uej0sxvS^(rW`?3NmH5|L1kE{=IuD@Hu9XF;wCn3_O;dxqtz~{rxI5 z$%6v}ACF}oz#U6VOQo+~X#?68f6C k2perGP zLZL@}&XnQfBht*^R(Sp3Jp#eO!Ex~WcUWg XMUu@-tc`jyz`U7m(a>(B!b2!>+VX{r%UV%~OiH zP!1%~CkfaLtn7Vjzf>72B?NAzQ4bvF;c)8h`sU_{#6&_Mlq og#ee)-7PD1JK3#Q6>ixsF94e>SgqlIdGi5&~zww03re4fzStG z5!Qo=v} %Z;n&}xCOrS1dQ$ZvopTEJ2Q2aUHj0eb|22yY|UnZ`;o*$}QX)RGiMurwR5F!Lx z#CdLlaM a_fPI%w4?`T2>w7Vo-eX2_AbUJF{Jz_jz3L{oEfN -aD=qWil)Erz~ zX;D#8eWR3jb#%%P4m=L=6z<=rvh2`a0Z142+EAYyA1{Qe`T~^fpI29h$%i)`9l5}9 z6{yABN`VfxRh2;CfYIJK-uV*6#LRqNY)u*i9mm)*9h?W 5fdww6KJ?v6bQ;W;&PrsL#n5eF!gA_@t zD=P@ND*fy%nU8J&=!8J=)RZBWT#&S*vvb
V|Z*V37)2ghDBHk0k|CNdMRLoSyfp%4$p)?CCDxx4?{rvquj(B+i>&fD`Muk{o`TF{@ zu&`JGK_m6eg++t|MeMxT vE{=0dR^8ZLtx~fprAl&=mx%KWp5uD5`rM++aA1+1a*-c zDeB>HAuA_m9p0cd@UJK;Dk_WMvW+W2AE4~oVNpezkff7=7U zJLu;^0TK*Fo&d@h=>nR)b(?E)yaDa)-^p*-OBFCq5SI<;&d|?t^YZ%t@y4OdMUyZS zQ&YzQ;#h5de1YT>@Yq2LB4>%ktWPFi+JPPbYR2Ic5DYIbTkhF2gL{(#?%vn=d3`Od z_`W9zuT2^hJ1+3kTtJmGgQv4Q^J>AFujlMxL@n&>?qZuz;Q3~zV7rqM6o25^Y7}It zVvW(O)S9wKw|p~&SSbL}`5$j-Y2}KO0MArYRmFt(vx(Jo0_#VHG)u&pT=rs{d9mZ^ z4d{YtLpB72gag14>fOFcc6yX`0~rUt9!Dg1Neq%aGAs;DUtj @OvN z7-j%R1KLR+n4*?{_g|!^C#R=}a~PCI52`P>Jyx@yWN3Dp#s!6?uC0x13Sf2~LSo7T zD)sla-UbH)s#g(yUs_wMh3wY`2F%8ruj}eqfpI~fye%ds=6~_0N}1jrddT_N*^uE6 zI|!Mby?tlu)}zzCZ%q&TaiL#Pl3b;nEkXay&CO-!<4cN;25GDSktqbd6#b7^MC3(v zO-)%HA+m%A2cy7QahxpGNKZ@qZM5)GCO{Mi9d*9(QPSscHLI(uVE?eaX=o^dgg(p^ zLv9qyS8%<7?j=Ho^$ia8E-X-Ua&meZTn`PYBjq_Xrr!QI3KCEj(AHz5M!^)Y+4}sF zor^21r9~7Z3*+>wOn{Mys3 2aXd7j_Rm*%+PTz)rO7za#cB-dLC*q1?i1~+fsyi^%Q?t?~ZN{Ry5T8yxI zNSd^E({<=pO&+U?`UVCiAQbh%*zcorR#Cxdc3sFI=Qd$@A>;}QPdkpBr}(ANqu764 zpk7kj+uK_=-;|e^Pu!>fvAfI8%p3-CAtrhokQmuaAi-}0+y9zx-uUr@Yr^L80e6>! zjg69+`_i)?zs~;tO@kznkdPRjlA)oXP=j0st;>9PW;;NI2VnJn6AfJB9EcEj_rufK z!+g22f!Q!P0PiOe?A6;R;x*OPeO;PIp4VT&3v*ok5aA8}2NTmf=%~Q@;)AY^jbkJR z2&hHJ1NPsmfjUrD_Ff+#xLA#%XK}NGa^gHXI%0yrc=`HLV2!%(er ~ycUIAGwt*X*!v>!?RwEv$COu7p68`(XeKY4=z+Qt?9^r=K!dwZHZ0|OB1 z7`iW6`T05^ue`x#i+Mc@vPa*+q4KP&LOVwlI#1c$oJm!iC{kDUMiP{Oa|0oT1l0H} zLP}467kD5Ouyx>-0Tr&`q9=U*{CNn7gS|gLEO=;QA_WX&K+J-!pSO^(o(bcM3!wHI z48-FAZkukeJei8YBT5A*C7_cwSuAEAHn*^F1j0rdTn9Wy6`G4J6xog8o(RRFv;2wa z>Dw@%dH48xVjs=IUAZe|5TC+8+ IDVKlBD!uW`f;D^45^_N iNlA zJ>c6A5^}6D7%(sc*MA4O7e{9dPD8>iAxNiR0NM^9Xpqbvl!Sip66C4l$8?U;k`g5# zb(h3e?h%hNg--aOFp aJAj?dYC@!&435(}D9h-CgouiYioVgIAZT)c z87mtb=m^qgUVk??UKn^G5CAP<5GvX0GaEz*WCb@jx9!n|9&nAh2AlqxUr5suIbsrN z=HlW4seENGR|gL5I*3ZR0ZaCL;|3VHOniL%c`d%@M|OSv{R(Dg)QEb|byZtiTlLMS zLj3$l=NM_KjmiGSPh-{gueh+5ZqF4sNrkSYd2iOkrlz)*jELy$WWl|RsbB-j5E%i| z*?uvb0emR>Qm`^R8?HCN lfm za!3{j0KU?i8ci%Bx{bJu_o6V^{F?@ZwCd&Dq@mkls{*7~8RXv`m5{5I9<&(A{CDpp zVf;p#q>Yb@TMRZ{XWMlTsACXl(b3nGdn;giR8>`t1kv>L^dMCcEF|~`%U Av0I{DJcv}kfSa|#plYt1Y$^g{28=FN`Z&y zTcde#m6hx<`vVEl(ehwKk$|ow83e8M99Y9TNH!Hn5CllZTi@RKtW*D_M^381M@59d z3jv!d1aSu6?KrdU;pO!KcsK(w_ITr?yFf>cbEmFd-;3{q1P5CVIV0kI(82!VyCckT z)bHFuMf~~s^#+o`T6V+(n+?dD`2>)f2C;Bm?zC7$y?qxla%gEOU($C^3mBUI<3*uI zqor4WPv33}03GT`?Gj{SQsiwU5-!g)Bb|L^rpCy~IO1=KiG`Kc*(s}?E8d`I_6w#f z{W!mSdwXw7rd)L$o}RJ+7X}tt3`SF@6|!xg_=1>-M`kW^q^7PO0xjfzbLwj|q+j#i z|5y=tP)c$#0;U=o!4d<&41jc%e*e4Qwfu0<>vYc|D?9tc>@3Cf^fV$Q<_6oHsZwS~ zkR{x*vry7!+a*cFl$3KnUu8pnsX~mA4!Fq2C(x`2fMXvvI|F3|{aYm^2mXf=*kAxc zFk7NGZ}W=ayFb7KxU6ez%=Q4I@6#tu-oXcefRj)L8fIoW;OuhW95lDIyo(e{1eE-R z{j9N5v$J2oujub8kO|0euVgi{u;6i{U3z1O7kG6%JCb1_EH0h}S_+y~3=C}ND;E+m z8+exf_bfn63`xZz5|*Z3wR{0(j}*$lg6QbzfIak5a6!9fT?U(u-(y7{IZZ&Sj&kjs z4X2;C5$3HPC`b o_-$2r2$py;-(u3$k%FoWK z>?|-2TYXx=u@HZD#t+uljLWNRm}aqaaw %I;`7vyn2XwLKJc8jUQ8%gRcO!V~hNUG!Odulw>oIwGq{Le63L9#qU zA${ N9&O-;>>e@mn`_Mbj}jE=5sZOsb0JXCXQaI{t|((Q2bgQ>@_xrUPA!5-1U z(?Q^M9I~?c(a}(6-1lq(z=Y8O2Z1eAUS96 WN@Y&Vraut}+ zO@4=K_FpZ*fJCZ409p=K*7D(#-#u9L$yHT5T+Z{FVNe#y;M*opiNt1>r9WP@7~S{) zsXS3*%m>X71)K^>xuA~4=^mJ(AV-pO^YcuSl2kw})3a^ u!tf!Y2x1hgdy9UGem6T~_difTl12!_z(&pJaeuX0lr8;?%6ENB05EFZ=aeBN{ zQIHDbPm8V~3#ZWtFjruto0gN4V@`N?4S1#P6fD-t#wKhqi5{uHKzU>=PAkBu2x;m6 zn0?JGDry9eMaV;Iwja%nxx9P^17-&&C(%zqB_$;SPE+g-&dw!8MWOC292+pu0(j;& zYr#i=Z5e%edCB@U6CMvBQ}p_E5@3j!Bi`;ipC9}%YOcDoCF{N<-PhN*0>6Nfc9-9X zKeC)P$|%BqW1xmEmb3b|Vf6I&D(#Yn#VIoZc`E@48GFN6tT}VAQWhk&JIk%3^(47e zK*hj+SEt%RV~!3E$vHV@jitsHo0*m%8}23K8&z=_8XJSpfCV)B= s0111bvyr~3zG)&1z>$X^bPWugkI26u zr5E6ylD$1Ew3Tz!R0RNWHEU}|AT{8?X1hFdh0Xx~(7S&>7J605-2z!{qw=gQN~8x2 zE_DxdxY9N0T$l`lvoQ$A6&fCm(RD7{(tt#K34=~dkd~D-HO#!cI=pBw^KvhS+GpqC zQ9+glMivNR@FCbk FcqGJ#Hp3T6k05Eyo$fP1e3r&LPz z2dAdUpi#i+uxGqT=|3UFLMo#1(#6#krnWJ(Qg8&S&ax{pIhk19Yas En~1rh@$Zg)j#d{?trPL!;%o&{78O zpT?yGoN8&Z`$P`lR0gfV%b$Ob_mS2SvfgHDO<`)#4F;qY voIFSJc43E7pa(fq^oheyw5n1EpOEu=9+0xQgQ27Wh5N78bPN|IKdy z1w8!#gB+ws0NZ8*Uat22a%kpA=MXvz^5hYG5A hEYF*^a8OA z>Wh(y2^I9;rF_~c*2=$xPoGCeBh%7uh`P>CZU04%vSIqr;D78CPcKJj`Rq_7ZDZ;g z&^ohA3%{Rp0w$)WtI#`N%soby7u1zJ12Ix IKbO*24Yr 3kXnBQHgM8IeBevZVnRt zIV4i=)Kt@i*)Q0vc%apc3=D-D@3#L9i!DD319!+}xsw*CPv+3Oq{PHXI6DBAcH3Wb zOpoN@(g6Vb!wEHdYY;aF$Hy-|Suu);+!V6^98zA+`uzFxagf_pd l613CGYg3*?L_{Fzp_3CQ1mh4GDV$s>?C78Ylt9XBpo_?(EKq#^=hPA~K_#H? zNV^#Zo=Sk*_PZP4P#}{La*QoMWoZuSU) i+hPb~*5r7U)`bhdF%VT*p%(um~Dp z@D@||5BMIGKOs_0gKv4Jy2+5%P_AcSfOhxpT^ex@1o$j&DaSRpdjJ*dt$I+Alkw%? ze=;xxfapSpP%<~q^;5|hAct(eC1l?{I!cIS-8tL00q&3|b>JWa66FBZw|91W;P4rw zIGnPIfFTaVqNuD41GWRq#1&Xd<*QdJP;HPP;h#TifrwxL^B)fGAt%HC=fn;^y(|sD zNcv03-@kwN!kS@dJFz`m1^a =8Mh8&vrFC^W@G|KaM{po76&4(L z`ps9nB?*EuiR4>PnkzDKA{1le<5`G^h+rJR1c$Pa1CLi0?HNo=OmJ3iJMT2* ~5? gAP zBSsKnC^C$m3yK+L#ME~w&*Z>O-B?{!fKal4eU>fsh!B2^=j7tbdA1Dp1eh0^Kn_^o zg?6WFD8QG}_4I6*n)&{M%NUX{Ho8)SbslLFfUTD;Gv*55CKGg-6&(#xU^%k8-rVm& zT1z7%a6;4lb!TTjOh+`7l)~U}4Aa|V4{)-PE~a)CzXI#h3b4N%mxN6?8T6*Uz7Xl& z`#7t?{PEXvR{?nbS|C@U?`wgdG}3bYS1vCH%tn2nqUun=_9NLU6ujoi^OC%Ld=)UW z7|)jppbA_N5D>6+a=HWWPzv>D&zA!}IJD*qU@I(jOVm_U0JCwkvfm-!-=1zyFe4`l z02WYEryDJFNOMwKI{_ALS8S)lLOKCMS_d$@VDkZat8_O1@Pb5e1o%a2b5N7F-QD-e zarCbQBxV~tu#pEXfHV_O zy8V2YsjN&)&%tj7cU^n&&1X1Q^)vY0vvWb8?eWlZoxD3BaJ@{ifIK(BoELJZ7z)wC z{^LzrT5Xv4CS2%}$0#>}a}98qy|^SqL@!%v_bDR B0@AN zAsHWC)Q;ky6S~86y#*C{(DVp3mC%@BixYX5aVTuIu^^=egFgj^kMC+?bLy={C%i z8MR8sBSWr7e|Z0Xck(EwRRN-^^jy1{;>B^vl1bNA6b2_OQ`6H64<2e~CNK8Wr%A~6 zR==%&WDQH6N}kJj{5Xi`A9?=6_z@$5S=Sk)@f=&HVe=9vspz^L#|L*cWA85
eWPTzla{JAzX$y)C_Xn0GKvXf4mziJo%5GLD6| zLu^jjhlW1~auUBBPtIk{?cTpX9f;7=<0ZA-qbE-eo^`y>dwb5VbNBEN+Xpz~BuLH5 z{(NoiCK2fEJ$`iIt$)Kxk(!e;ZRvhJv^nbN>MxfcvXJq7u3Wb+9lm5$)u(Ax?3Yb) zTf$3-QnWn($}N}?wWxCRyWL>*1<--_gI5G4jaSnC5Hx9k*jPGt>?oWys2R7ZPZM(m zEghX5=x#&;@h4-iJH-Mn(w_$N2}Abi@#CgU@o*MjszQCna%(CR1wdh!<|otA(xevT zak9%-B3NB Hf 7-+~-S{84}p$e|?>Vi|E2!wb|WT?L^s4C6mGDooQL0k`sUp;H~ zY@nu!lst+`y;`WMhEI4n`NiX*bFXj1vp2;4W@1i-t~hh`8fx0{yh&P0?%!@T*R+aj zsQ;Dxt*UBANJzKwf2yYYL{|cnvX74LgfFi}n>IT 4NL4y!gB` z<{2G;j=)gj_B7O qy{4o_E`x z8EI)dF$|fo(uKe3+O?|=#8&?GRsAL0LV`s6ObiMM$pfuqlDAA0t4Cgi7OABq?6JJs zh@w-17VOxE(t3!HLI2ZCFKuYM)EYDQBm{~9Fu68KoBlZ%5@LS;lKu6So?@;+1#zib zu8OECG{gP-F*&=!6VJo4f4}jWUC}Xc-gz|6McIc8YHMq)!jiTnWQE?@T>Y&t?3gE! z`z=}yrZ+FH1?)bb@{Oc?obupeT%7AqSEMSNb9M<`n=AE7p|Tpjra1fAmcWPE*~Zj$ z0fB+yPsD!XxM-0f26oJtMd9e`r%=o~dhGAmsnc+eS~qOD;z8l}wb! S%sH>}dcxdd#*crY4E1Kuc z+fR8pvNj+J#Stz{49yrQdU!1VF%l)e%>Z@v1#mwXuU!i{bWCh>^Qox?F F(` zU6; 7;;TDhhy{ z$F3Nl-Tem%VG;ry#=*k(1!JL9p@xk4!qdFa>4=FL85z4tc}B2g%P$T6Nwkt>M)5n< z!Qr^Yyd!)9raEUy)>qP+|JAGi5a%+}lEMxiG+~npv(Bz~Gb}+bDPqcD9Uns6r)TzC z4<3Gpv%Uwmh-t>g#-~ uUaPGAD| zBSi5W@?fYmbabv*zjkAVEx``)IL3CQ*`!H+CCh%KZHP(t3l3HvIePl9FE5O2Y;4|_ zmYN|iy&aacRouf+&gys=qphPVJ`9ia4I7|G$s+V9E;HX)r9TN`y(Dt_D)k!Gr^Am2 zXYa~&o8STP`0-@6BuyF;PO=xMh>rZFt7|i8b>=va+8{z5BJBjX%HqjBqt7FaKf-_H zj9&{7Y;0y`ri1ETivv_++_ wzFqrh)3yh+?A(3zvxjfGy$&TG_C+ zhqGT`pb-%G{kwO0X9_-&td{4@+&=GTUCo+RXG?kX1B%9c{Z+X2GzrrWIqb38A7Io! z|K7P{jQOV1k54&Xkc!ScS=tVU`poTDUU(-x-HOz{gj%=b)-SwIx?)Cb!sUO4XC<0a z_?B7?D2tM?gyV?wj!QRYB=_&=vjms84(?963l0O)F}_uiC6g!U0%N3K8PsTCOlo@2c4y@jUvgPx8 zIhrLBBGGA1!R%QPP@F$KI>CeMf3;m$w-O&xU8JjBktksjTG%H@r6r}M0R$E@V^Yqj zQz5fYEy?t(xql)yHUKh5Lr*VxTHJcR=~`_9(Cz#4v-|)~yi;Jgq`W3313LP{G6{i+ z=b%FeCr8JrHa7WV4ql?z2M-xF_T09v{8gs?_OE@^)xE)jW<2I&kDIjv%G2HR?95B| z;U#HLo?Ojo^5R $vYyV6>5H~i7TQcEV;GC5*ShuI2}ewZ zWf}MD5M!Tw43Vn#>B|-^TlOVH^cdkXCs6h4`a+M10HY`%Rnn8fkMG| ~|H6{nrsK?p_o@&w8KBl2`Lfe|t4pRjw7q=ngDuI~S z8b2@nke5aGgNF`HLVXwefTE%zl~3Q^?bPqDUbCj>xN-hEibo->#8iro zGnc;Uqwxz_ncaKz$fYoN{pl;YE$!D73iU7&&kOGXV>eb9k9Dm? Rn3RwRez> zYYd)Bjktt9o5y(hZfyQ_9%es4&0O-EYvIj;GcPAknW7F&A|a>8@-J=+kDkI?L>PG8 zGud&(&(@bupC0JEbm={p`UOhbPD4K7-izvM jl;k0Z^y*<4=ad*_*@ zlapG^yrjdtx4*`YJ!)ZLAv&ei)%v(|iA^_e+~^M!oe}A+i=`n@hvuyrkLYGlTe^IO zxS^+nb!=E~9=8;k{t%r{P@8s3y=_+dX-p*eWKzqDWs5Jsp8cfAXVnoiclX2%BTiq@ z{QmS1e7y-CXJE?D5C>TM5b8QnHX po|Wa`eCd=Hg_CEUl%5DQeoO3DbDw4FS69eft`?pWo=Rs50x}L&;~;kmKOQ zCR(k^#uJ4Z!eD&%mfc(SHy3=r62M>0ED@a~r?g(PR4J)J<-F0Cs7`1g9c4E$gQcRq_ z{wvY&6Q5qu*)Q4j?CFTPs!)=moYa4|+62icv6?*le&&|L)^z^CXa&-MkaqX3`IAe( z0n{JEx4u3z&M6= %he<4QumSGw?lxCOC#$)} z^2qM}nB28Tk3sW(#|_`rQZyG7C)tqf7jY+3eGZ)F)Ic&ngD-o C>tdPd&d^7Oo&IUDuDKS2>! zt^`rJIcEiHTCI;MdvSRe+W}SnPfUG1Y>~jh-WOhE{{+!V!vFHT?>~3zkUhR O<%wK#d>@cidx7Mv%6&=~-mAyWY6o9faT$bLU;R^?- z7Z|PCxbe;9#DjmFDEHsLd7}@v)LBKPz~whQp&GZwbLdZ}5yimTQv;XO4}?i9I-&42 zceN&fjb+fV=G?QacCDSe5B#;A1w&8|;0c9|T2&NtZMvP^WZ-yT6%~~!YaVA)xa-r7 zEn@JbnN4oP6h*K9`r3_7mj?VY=JO((fX&{$FT&3w|N4P_6f(3S-k5Lv!y 6lv0OM=;{eIIB!2{(cSN6gntAJ=U(HpZ&bRKITF zk|os>qNkggn+vSv2P$pC3op)Zf|b^CQ0{1+l6l=`EK9P4QDh$txVxpc%9$0kxh%B$ zO93%6hjcI909OBW|NNoboAll`ow{@}p%9IL6`bzu9DV2DI89Ao*p8q1g(H1UJ9c`x z#!tf&-bvUGxh+(Y)qkJ478m#P;I%x2RGawKk;V_ST$JELic cmF-%xD)_urS3BkpgS4HG5% zsWkuUS>p%k-F%FTdT(QeEDBS;Q`vP?#(;h&;Vp9TJT-Kjdm}#HXHA!=h=`0Qrq`}s zjU*sZS~bbUZfXj~3CVip0ipZH+~F#%b mnid z69#$Bnp1eQ ZAC$1UlvvMov4=sRkFiPK;&HkB7re~}or$qM9HSy5Y4CqqIKG#{Bk6Of z7=UR4GPw5cChLn1o^zkv&G7HvpuM*ig-hG|DHh=drIA^;tpPt|^-CMeIx7XE}4~)Z?I?e{65&ZheO!MUmq6 z`{(lgjgQ>o#xv5>y(jGNrQv`1oc+Y`sO;*9_!K$hQH{d!3?l@zw6tCApD{%-aSB z1Q?<^9xa{}ygmETqeruE)YaGJ{X288Z27sz-a~2BFAq~zR`v@I51;!a?ONfM!9%yQ zOiSR3R!=M6T54v0%~hpQpEYYLx0cx?(ELJ3`cw93J8Ia?if>mhU8*r(c3LMwW7Dma zls5<8 N7*PC1cIgwR8W9?_@G3!HQE z^L&6DO5;-(yBF+K9jAMpB_~n0XO< 6Z(Z6#mYBpa?Ow^rC8B=f@NAkRyeZUM{ zOVX2W5vJRv|HOK|pAW|LKHJdH(C%+r(-V )p#OQJd z8eR{}3Cvm#LTvSPga%J)uU;xD;_qYoBdGk>gvg$x1qg>*%7tSGg*!$|y 2??#qNOM+Gy|hXWW-e-pi`UTd?gL-xla?GKAlCy)o=Xx-XsTFQ#(-pJWAfW z6$^wuvJCXXg0mhYb#yw*a1$7}HEaIfuyLbl;jT4n)<8#i=H^;aDfZznkjRlzZWF5O zua7(ZQaO~>ah>52GG7AkC|6?$T*nb}=KOg@oL#hq-vSB~V`+)eN7VyUO4k^EjV%dB zW>1^e2#QtuxgiCNDN4Ee-7 iIJLoK8AjGY^cbg;qaf#YLWWoX-;O!XTA)OD9 zq2E$MWPhH_nw7o*Lc{FV=U7gNbrm)JQg3;}R==ZLx_!59r|0%2O@FJXFogBOGbAdN zv$OLzoK^rC+MQEq *fIHb(-W^!^0s`A@+@4V<)#!j>LlP+aF za?l+JLTPj1UA5`1-IOnGk1fjUmOkn;b@li9Kbwh!hSR5a;t?J~B =EO;pTJSh`K+MQ&380B5 za=~@Dn`zTL0liE|@QV+Y=>e^~4%x !CG><7!qthroTR;Mk(`&GttrW z%SV^#vJrOjniDtwQo4QnHlZy=ZhFa*-EjDM6VwlaiHj%{TeN7g4U`C4K5_0`8} 2iyvF~~P%bpMyHKJ!|5NXHo)g%OhFR2}`5T0p*+J>q!NWinQK#L>cW zA4u6U)PlZ>MifKt)!!OXAc?*!;JGaP$fr+B#N7$S6+KW^A x-OCBg$ }J`d0}Z$9dP*)-S%6ngX2{Z)RqK zlDN%rra9nvz2cu~#vNUhRyRdOL!A2%qsn79tlV`T?9_~h#Ikmv0gJ+|DOQG;Wv;VG zWCXD{B_+~UJ;%mo-E)2SAEjN$)^Ezol{`E=XjbXLmioF*`^1m;FHc*6?`3EUi*opi z*NI9i>ahslMPtgz&E1ZuCeIgDv$k{%ds$2?zgOobtY2}?KDjqv^7UIu4{IbuR(4~C zscff=gId#qdRMahOq7wa5)|E+=*z}?-yXw_%bKq-=gzJC`g$BsjCftV>$EjZ^Bd~x zMw1@_EZ$1-n_F&A!O5_)=uS&+P^MuqbfLz%e@Gb3Cdk#zPM$ouW%IaIYuBa`Qf^jE zaL?qT|LX{B-h3e$S{eXJO}aXZ+}+1Qtu@or)1x&P8=Uv*haC*sTdc1Kq9ch~fDs$M zjiHRbc;(6tkS_J1Vv{CbN}o+3Jt!$<)(it3-oONrN9tnsS;VzzBOP>r?(gLVW3J!0 zu>c`JWkfFp2SBEDU5J&6bjqa`!4wsgPN@0)8`RtzkU&Mt2!hS0r}Uv_dy7vNn6EQ( zq!G4e+RqBi)UO _qJ^#1$B!<3JhdG>XA-h0vCbB z@yPG3sAgg&B*y(IF6`b$QRd@F1R*05gqe9zvT|%+6j0f=nDC7!Oei9Hfh=yb%@Xea zZPdOgs6z`IFqyNi!=_mGn$=OB8zC);XC6PglkjjQY!^|)+Ipp%+n0-;Efu&ksh423 zuwS*Ljv;jI%AX$B@V6G10Evn%e1dzI@=6V2^Dd^M5bYT@um=FT-po?wU{Pw%P1@9j zOC<7nQTnWKa*Taqx@g(5!Bp8;C_ND@7BG;>PJ0Tmof6lJqT(&-%0*>ImV=f9E^Xxb zH>`cF;loP;R*4@0J$s1Fl@@@bCiMNiytm_N;01VRne9e0Z;c< _T|$%kIa9hlT^(F;Of*2%fOfpRpLPav tC?BkJ0m=%ScSeXV`lD!o7S^<01MYj?wBI`S7<*i4L z5uT;jZ^N&06(+Pu=RGS+TpkR6kV#vVwKwiuT#x7;8L0*%FGFJDCbg%+kZC8x{dUlE zT1g||jb!^spAx-l`sU_mv(m3!yLK1S6>m&~?SK}SeEsn_wBRzyUANQIqq6L-@%o+v z?y&+9X6g%+|M}N98XmF_gJ6J0td!E+@AR~K(d@v?J|#wYRlA FGFQ99wT>Ss5^1&)3(N$XvSmR~})U z;M{!S!iCa|w>;L_*2ae5`d`D!?VYV 2McAQNue$K_?;ZsFuXzI(Uw6C= zC&ykXp8jq#+@k<7tSk+;c=%K(sXW_+#61Y!<5B%uVn}9R2OMkEFtJA{4_kUXpmJ8h zsI5qMU)v1eC`fWg%T8~Ki_>RCc5ShJ8*5M8Q4sLK2k&C^k CCtJMtCBZ>Cc&SNbOzMZrv7Qmpa6Zp$Fl54F&q^2Th5BQBXp) zdv#;&UZ)BoVJcB>zKcs6%pGys5wvyg2RVs{8DGSZtfpJP7d3 EkX6cM z@OA|y1%LK|J;r{OK1-WK;Yn)|09C?#aGEH73uw(hq`P(y-Ax%IDgbP^**w^Hw_yOq zymizml>V&`a^pDW+JYclJx*p`O)mIo(wDN3X LDe9;!li$wK|dT(d}M|hN&AJFr8Je}NTT&Cz^SL2 zf(-Pc`bP# ;|836YMQxd%b$ix}%Y23GNXn2ohyAee?q>(5zIxS*Oc?QGgqjz~xc}(U-C2=C zG|%SI6DG692nv9FFJQK9h7rUids$L6AGIFT2|mZ-kX9q4dP9O~$c|MPTivtN{`2S0 zd`HI}L^HRVoVs5b+1YofU{^61M@Cjv9O>A*w-Su**iBWtWA6_F#&HL!q<7G_e!K;G zzBDV^SdM>-l~lGr&KhIu2@BvoK@;DwJKx(IOb<_Qyta3MlYb5F+Ph=N?Uc6t)YTQ) z0Vn28+~0fL9{y7i`77wjyUOq1Z&3}kS5 WO8ovwZFCX z+^ZGv!k(LRsp$0QwQIXj`CZ>wsZJZNhUQ7z*|VFIb!C1Kizuk)a8QEGEr@Kk@Z}GF zXGcZz`wt(slR;zV=BH*@g0=e4whfo|XL0uc=Jq}5!qlG)H5F=3u9ZyBV=>&q{Zo;* zp3Jku+nd7iSZ>oBEMY09p{avb >;kH*1_S*h7Z43yW-5MOeByCVGM){l zsrhLRsp1V7&X`ek`GNY3l}tXv54I57N>G+#+MX^_QDZTmTryUS=5(6G?)+`O?*^U0{|XT$E6Iz1hIFpECH6c=loar|Y)k!2_Z$rbRyj z*?lj*-xKg-rF($p1|v($1DZdN0xM5NMJbXxPt`?=g0i|vr|LN&Ay76I8=gS<8d_P! z8kyv0PMAHr8-#5d740LH6JG}W&CD363Q49;6Lah 2%Qg_T40l+-_prfzQ z#w5tPL=MDI#tfB-Br>&TU-I(uhSOA@=w1_`Y1n<+ffG$B5B0f-tbj3kh!E`&*VAZD z*PYod$O0naBHb*B8!NqI+aK6(_` ?v g{O<;pn9NiU97f?ft{!qf|T2_I)JY`(33d96ClYgoibJz-ev9Qt}kOQ%qTU5 z7{M%gD{k`xE+u8@#AO5)3_LHMj)=z%V`FRU+`lpzBY`3t)YkEdhYxNZ{z$wF-v9gC zTO(xrOD1hHLZs1}8i&8SsN^~@xf#s_^|hae#RUq5L$Ahn{&MjC&tJc` 5ot2d2GsG;Mn^5-zymC8y@-YHDi4d^jxMtuFblJYPtCGTy-hT;p@!D zk%vwgTe8oZQ=r7nwE#1LqO#|nv5xFNWAWB4?U ^>km)uW9P)Kgx zPg!sKPsoyqq(bJR1&tj8f#C9F$NT9o--mClpI>t {NZO~bRIH%#_V#`%sDq( zNC)4Qeuad^Z@+#`BrZBv<~@EaO(|JF93j6W?1s@|B0Lz47aGrcvf|V><#zeejRtHu zCgVL8xOS}jwcg&RJ(`!z*IM?tjBh2x0uK9?#m|qNjds i5n<~>LCWjLgu)K- z4lGoh8=esg${Y=U9&4fixgpo@{CRK}ZJ&MnzEmBn9Jd**M}a&*d1rJjcJhrd{}-=b z?W6ex_oZ8{4G#(&a68s1i$`dZ-wU_bx7r`eg44aOEN-(tn1bUL^DSj+AS4d92Gh`R z8p#kith VAp3*TO87Wf58!mfr%aToIZ*>C_3;|0kDCN8QI!ma`Po^! z##* qumEjfC=2Q4VQ(U_=6nk^Q6ya@EdS75fF>LFns#=VF`v^GAK^J!z z5_gf_2Kr|F7C6?Qvlt)w_dBLG_a$#$@w C`t iX%Xa2CcjVLrVRLnO0{NjVxOjy##qm>wG z3wcTrxxiF?0c!-ruDg6Ha^3;!Ci`zWq@<)MKt~MxaDOqI7vRjG!x1n@)+YxxHSh~C z`17;OmUTP)o$`Gq->9k cLW0SB3Oo_5G5XsFTQ=1H$;r>(L)c@e z>7fzY$ F80TZbZC3Om7b8jegjB9s6Hq9u*va*ofZz> znbSJEx>l7J^yF8E X@i0qQhi&;bCGJmAA7*yBDe8gqMaCx);t!qxEPxKSZQcthC_*Q 9EL7K8I{G-fbY+3vyo@TVpxEMlYa9w%lMAuwaX7T^mrb1`u}+W`1>h9N?@oA zZlJA+vZicxsFrdY27EJuB@wG1(PCci$$qdHwDN*HJ*e1K Vz7nKzNkyC-Fgu4keAuw4edDBzf$}bdU zyMi`kLl=0gQ yM3-5y5abT4R(k z>U5*ulHnwOK1^sy)7>_zsmoC#mOF0oLN+$r^PqkZ_hmosv7JUIZJW+ i8wf^t(K&?&`FK?JS!g^q**W|VK zp#G2EnFMS@9yTe>Tq0u2h7H2eAdy^{QgU+utq4$*w;&05GEFIdWu!2Dk&53gU7kkc zCf-U#-XTb= U&~{Z?zT6M% ie`+ fb3Xq*&}OyPG1;%tS3qpLrvvy2JDYA zW)${q6| -(M!TD%i8%)2n&ox;|S2___I$+@4H!#!ibkF`*K5H=*j9$Mz;P%GV%H>Qy zHfJiJdzahaozdFP&R)pmxbU=H_RQ>u>&ey{f}dX|IP-r925KH2nnQ+&G@>!zzHF0W z`=&BDo;_T|N0%&L{^xBXZ)?n#e3p#~{Hw;Akx*4gV;z*0TR`70+Kv!it(yE%LDgu- z%`d4B?%sVi-^l-9oar?kZ867XPIXMPZF@HVUCY+30|VT?Ye>nC3n mgqY< zeOP=NKf+puq6!#6*abmt13S|u6{y~cxk>b&YA<}J+(wc5p$Sl)NS=`TY&ps$+-#g{ zK`U}R^yE9bA~rPCj}z5LS-CoNncJ)DtFkxkhs~=W)a3cSd!?7d!BdQ;X!7P%0&eNx z87d6lNuvnVbvLY1D|`4O jnjVUMBEb=z9nx)SA{EI{2@6ecArWEyP>bq>opU|JvH!>lKgkt$UMM`RWC^89{!2 zB6A)-a%8Krt+5)67c(~&ST|Js+;H^gsL%&RWo2!lVRN-FdmeCo#O@5f7jd@A5!0=Z zAR3!;U%jdewLld1qB-v!N*)W0ky8Wf|NOFNNQ77>yMN6CX4 XD5#wF+xT{z&aRVQa(L57eiS@ zSi1W?ao>(PK>=WhDzrs;dergbDPMvZg!}!8xA9Jk{J^0%bsRERUh3MV%Lx{jULp _G3mUGsHlcIZuIujkE&T{HOZ=-T? >YD9smXJ+K{kU2bhyrVCvm>23kLm z(`}FvT_j4VE!my!(2&3!kv*NqO|i6;nWkGd_5Vr~IlZUs+G357|NOIdP^JrMS&l}5 z>5yri#5#l{2Np;~#{1d#Rx&zh?I3R({wtUWH^$e;8h=hJ&PUaDUR9uXb|8^ni*s%K z{imJ2+jG48C|2TkptRL9H|9Ly7%1A>@LN?w+dm+nw)9TIS!FE;1xiMyay)w5 l-k8wp3V^zoVS`b5h0yq(WFkYgawC-1SivB& 0-;?lA83z!~+A7 z{id{3X4vO0nECGAJ8SiJZx)V~9SwldU8^FRN__l$NK_fKD^ut(Ncu1ElVX2{Itf;& zW#_Ufz!lR?E0)dr+>(#dC#IY9(S4I82|#pk$~`OHXP0c$d7CJ!U%u7Wj@!Hg28Adj za~#2#t@#xOGQ=9aK7*u)D!*MbLC2$=>mbD^RKB1-DE!yapTU}eSEl=0nqmq25b=37 zEtgFF>UWVoY$bamTif4y=ALdrsMJ;oMs<6Rx&7?C?(vyvR468ZE~1?2X8q_#fhgO3 zh7b1->bA?W@7ZA
?+t~|gp2-Jhj KBESFEhCd?##Zr`@re97yp~SH@Lqbd!pBP}` zEUFiN*wZ&W+`6FBa2UhDt5pvlYSF;T#Q(r!3dVv8udn&2l;xz2=8OCpaB?7FnQ8s~ z?r$TdrNFiQ<)4YI!8A*IU?6LRhjM9#I^{I(2L00)`onUw!L8b6)1k;qcB^$dJSbE_ zbzCb-<^K0m+! 09E_fS`1<-PkOg;6Q;6`=RAa2^3a ze!#xit)7!gWI!`q`#c2(%@A#u5lf~$LmPHd)MGco{F1e<@y4o89VBUhB7*myr40 8 z9|1va>|+@+w+p*~+VFPd9~oZz@=1rQ9MglXKg4Zz?XYpySC@8qS<=#=eNc()9tLc_ zn4;cBu?ckjoP>3n=6AcmV {czTp1b}GslPenUzYRlQK)2NmpJ>Dp%7+ z$&dQ+zBMzWJqg2?!Yn{1Y`nkxTY|-AU6^-2c-J`j>dT8JU;Ed;r9!W!CS4~}C{db1 z9A{NrJNQ*j$G{-6Xx-?u*oSW6jFMA^peZlyw1C->j%oC!=~g37BzZhV^&5^YD9#V; zWx0~UJn}KRfTTo44jE3zR-B(H)r2Htg0f$!SzUMNVJ$vHdXSUNG~d5vBBZETj*b`W zKD4Pmq%(X~kuiRY1>jSczQWMT@ECweP~x3y10z{qYyS2p#o5+L{PD#Qfj7AZh$( zCJP)^#Fc!tCZtdqv4RUf$gO$Zx3^8CQJ-Z3)|GNU!tF-smr8f!VdAxa{s~_-?=dr* z{KBzCU(qd|@fej(hX3s-=z7r?tWQj*DiN0p%@cpl9ceaGR6=5-%&~D=8=wE<4g(jT z1~!PLkWM4f;B1d>!dE9F6M^v#@t!T+hum52==eA~Vzjo{cj)buUS6{{7H<~%|CYqa z`8t}898$DTpbUnoAgA Y@U cB8& otLnSLCX$OUG8Z&BCAJ{$E)u8y*&>GNb?Z%8rc(^Bd`YoBM zd*sMolD(O^FU4C|WGXo>1cfG2I}}M89$SPyvyVCF2clo9$DEx$k($E*3JfQJe)KU2 z8?l&RrFza(gGlWcycaAq-@d%~+p3e#_%z&OH1O5ET|8>^=o~ai=1ok$c?@-@h((N! zqZX;t`Rs|u@xu^bA->5;l;}HSH_8lR03sz>(E7ebaQd+MVzR&~IBmoMv?K?{U9H5; z{y3%S`1HP +n6qqzmCZ4`|`r%1BhqSdJKLnV;yg}wS?xk z|M6#$8qiW+9Tfgw7o0|NXqz0z0q8acHaJzvYJ%1gN9Vnfi8PU?WM;}SaY3abE>NmJ zH?$=1t^83s6D;p_ R#`tHg@K%22q7;HNszp2dlzAZY?$H`5U&g<8x@+|Y>i z0S)11-lUVlbvkjA!%KJi5ieyN6R(+*ZtmrN$AW$dP44KZRoj;r^@)s#=!4QLM5>S? zSFiuJ<}Q!N#Q4&Xaq&v={Pm9li3x^uK59DR;uoR!D6TC2z-u^`R8#z>Q^#^LRCYy= ze+$Ki!_IzwZG|e`R@P57BEtA}Ipu(7>qXgR`)N0nGO yD6s5 !*g*1VZ!+MbxZ|6bM7DJMnd3#yz+!v3?m+wqc6Qeh8`dhE!en zrRo~I(%j@NDojUNXg!+q3&t|4O~`)X8P|I+U;P%d$li^W#q&{c*>z v zLL2=zT{|r7{;ZK7Ddhx@iNu5|HdOU1Nk%640|)nmWnv?5TSX4U^eDpte<#ts`3C#W zA?6H>aDBBKW@)JE-yj;obsCia^LuR1;3UrY*~UfT5liW)Lj5Hs6FDI!?r$y61ARw9 ze_`^y%UiVWI8X9kcG#G1bO*RBc4(|>8N={qMWP(W@yjzT>3Pdqr?}|1O%WDbigiPJ zD6fn-s@D(ppOx>;nF1w>#mxBP>;zxXq#Wvl(whPR6E8Rk8Di2COdtn|P)x74HGTQw z#r(IocZxRwhkn9bbp~)qei7b{uRNJx6rWHxy&2P7N08XpmE|`hY(NAA^uCarpWlkG z_58&P@yRms*#N gRkFv6&TJjCwa>_kfvzxxgT=iP>4kH;n3kDPehzAd?>m<^}P_9w2$8=%W;gH zaqTFG0CsH?F?BN2l~UnyjK%mTfkYhYtHu~_?4kye`o#Us1iTl&9{U7#f&<5Uo=(_h zzTo!chWaCJp-?aj(R#)E2=sQI*&c(myjspWd?S?|M|oXZ^KlAk0k_r1%bk{i-->%} zscLu!wgUX!0=cpcx9{D1*1UEX%~mo$h~<16zKSE|JYAohs!OQo|2(E* sBLJcC7sK>3Wj|>!iK0wn_u=hfQ5< zV18YjbOVO*2e~7K=}npoK0mj%d>%$M#S7D?YT*a`{Qdh*ZUAP9#fWuwd9r)K)|`1d zTXEIO!DG(eGaVfI$WTbi7VKDr*h?=zWzYyI2aI8FNPX}?iJ%>JQ{C& ~;0B3$Hm>#2NYDr|6zhFUQ3I#Hh_Z8j4@QvBpR^-QO+M#uq zA1#19CGZOOOS$gA-=(D?x3W9nF*NBjjb@Yb0^yyGj#)2fk%;*n8`!sml;FEF@yQvI zq2R49F_#0HStyXgbMF|*R+0Lgg*^+h(*f>SW?eCNV;|z*g*MG0$q$8wdi)%-y^r|8 z$YeAdcsX6NDC8K{W=KjH;e ^^2p|w5a;mFXb{Sa8blOBC@qO{$+c|JR0W;kksEj!Mq+EOr5-I?ryp>xJ*QA+k zB(Qa7ZZ4tm0RmD)3f`R@Y6u}waBro80!BW7x180;WECig(v>|qK}uKbwn)OnJVA)S zx4f7(77F4fBK!40@PZ1S59hcw@fdjP9quX)HsxF*UHZ3Hvayt6)a1c3xQaY7d~3Zs zTr#I8Mo(8 mi(^#L9ce+RdAk8PmG(AuS8~lr95}3v{i{PcM(8$MrJ?@! zFbZz1%|Bfr28%fQOh!cBT>YIsPB}r7tt2O|aKSl9)-q}m6zyd2bw+7sNMA)DZdh($ zc?#mlDn>5@>pWTM)ZKEJA0 $o5vvbJ>Hxb>LKPT)UBmlOKCU8Jvr4)45<=sGOI+DR{m_fIp zL@#=HtSxo=zFwm{(s)yAHW56;it&Ul69tCU0lO$+54ka`qE&M{1N=ABEm4m$9|tlT zr|!}wS~Iti3~o~sp*vWF)-j3( _3;=o8L-7eQzs6-9&g($N9lqGppPbkHLI*HP|7 z`ZKT?U #7}Y15-DA_ zETB`6$%lUotYZe2{TPp?1%_+6y^n6>z=EClZXnE?gK^}$;A!}QL)v{?G!{ai uSYh!qQ;5(9@$tcEbx|fWHR#!HkRa z6$9HTptGdmz-|w3$A0fOa%4BMu7zZszn@`9>@BC*VijTC$cVhHd!G-tvD{K_tj(+D z@? yh_ z%!-c%hKAOpj+3KxfPdnBW!Gt3h_}ETGxev~<^Lz=r!k9~?bqhb!f&yR?xgKk*S*QG zxz`ogZ&4>k)8vQEdLe`6Ms2AZm9=bkeH#Q@o&r4oa6}{=H+_Z-X+sr`gYn$Uu4~k$ zTW&j0HikMtIw1;kAJun1_4nYxtpV{6CyjW*|C6}%XlQzW&A#fUlLev0Tce$;Yx%?X z-^bkCP`589l)Z(*D~38kqin7iX!w8LAmP`LpRS8+$!Fb277@t^JtG!E9HOVHYqD z2rN}h8XQT(@HIUb&A{T~Ma9R^Ra0NB$^Z3MZ~4QLxCzA}!UIzRho|i&9m!FyfDw;f z=SwK#;77y+T{7VnM;TI}gs$p5qiSgs+3duLngX<)?QlI}5U1Ldt`xM#T~wn<&vGZI z|BwyNYOw#a1&)H|uac=9C( (7k1kzBjD+I(qa*;EMP1$d-%lLy zW?Ad%_7E#6?|c w#J@EyQ4vpf3-3MgK6MTD<-Ws#$ME7hq<-k)6|$GpA9Dc|nIp zEboDvdpiLT*hQ1;?sdBwPSnlv(bGG5^JZ`6DjMKDkh*i|&<6p-rHBLm=yRo1M-e}s z$-b%S-PAw^B})bf3Ni+J0yI*HA}({^78NySzp!lsbCc_46Gi0cJLa3qXmC_9Obi{+ zbthR`?!sSyur1D8Sr0_sDqkm~@tVP}Ur%0!SRkxurO6KO5!wwc2&)`YPpM}?x}$#F zLkj?d9H=0~m&84DPV(Erlgs;}>Hbzeh)uwv+k4g#!_)RqNju zFkrJeH6Tp0oUKgs7W$YHtw+zE(# 3)%!-TVr#av}EXAuWAt3&g>I*@Xx$2foO0R}i3by1izv z9{Cw{U1=$hLY@ME(08liIYFT-NA@g$I8z?8Zpaj@zHo4PJs8Yf*`11!fa*#042#`} zdvD*=le0=64PQ}sJT|r?$08X(q>;Yl{0i92Q~XQdq1&uVOOVlj)ZO*#D3t9HRhaJ` zS@2fpihs>u?_x3PGy7l8qQ-;&VU6@ 7@IoKjernjR?O{s z3!K*0?kJ)cku>G*-HFToYI|SR7#BSSu27$tM-)Wog*;vI)=$Bpy-@qK8fbC40M05} zxbeVu=25;WDyr@O!7w4!`9`Y;dh-;H9;K3&UKB2zbIHsy#{z9SaKb&VBYAH)9H7ur zRqK`XjVfQtvH|ERs1BYc1U9cAJ2_8LedCpcjbKC3o&Z4dOA1=B@Ia%T*8279Powx+ z5AlHB0zIX`*7%2nG>5a#Pl@RJF|_}Z!QM6A30S^Sa{7W2WZJdM(Ene~noq+|)#Q^W zYVPCiN%=pPdeOAiJ(jZZ?*gLe1y%&1NnwKcC>0NiO@nQn>dS(+WPO2`;JzlL`Fxcr zMmN|jC z#Lm uT+DL&Mq&(hz!?oYZybI!2TPE>%@hPIYOjfm{qi2LZ&{jnD3J^ z8-)7pp|vGA5Pb>r9WDx_IM zoUD}jawGwaP_1I_qY3I`Rzb7&(sldqMWD3WX8ZJMA qJ50Kh= ?Ao$y zXhSndZy$6E2bg;{!osZ4_-%^dDE=#I&sjI2`h^Y58F|3l+mW=2<8~)9z`8LPZk=A- z8o^r{8*uz7DUe~j$SPphZ$u>peXPSEJ%Z_k!fK^&&cBXAPRoc5RG|OPjbpG*qv}se zWVr1t@H~~9jN<9swQDX{R^HN}G7Hz07xi#|jJGc~9Rnyy^H@uA`~s%47*pkVR4!Sf zYs&dV05aw%kY;9F{4w`(Z0v5f4ebdB`?T1O6TKgtO-mpXZt9)<8$np2a~82!ni{kh z|Gu1+B)x#fT(Uv?rmN8HMa$&*D^}(c8wb$* AUkha_W@%_2)QL4~oo7;&0wXP`CBzwy(;~7B1{B7a`}%H-!wB zy?dKsW2lzgBoS)|$sfJCVd2;8cS|i8OEakK_px 9=F*?je06XXgLXl{V2ZRj+Abc_qE<9^PHp`@pIj57*j%^ss;C zk^J@7QWI=fE_uTb1-v*KPsss&?~lqfDf=3}L&zFn++I2EfF=8-pSH3+!xWAPBhSk- z93Bo1E^pw8g))Qi6Es)XrQK1qrm`|Sc(nM3nTTp6zVbra@{)hA2!Zx4Q1>t M9;CqO7L;@Da(W@*k%_Rpe|<9Yn>DzR@7Qnsvy*Yt*Ao&LaN1N9 zIcyIUcFBV`^4C?V|D;=%({sfoDdt{4F226tNq>U**xZ}$-Q_%9`qVf~NshTEMam&7 zV|~Lo&=un;B$-51ITr@BN1S>Q<#h2&MX{U!3!j+->1E 7jtk#h68 3yQvc{7txoY z11IY0)6YQk3z@|?+u5O|YJ e#?YmB7L`itM4;ypX&7#C?Wvv72_?3Gfhn@c-uCT zQO|>ArkD(a{EGm$e1Z4WTYD~5B4YFu1`!O*yXqVrzt_iyF12Q~@TWu8%M653i22;J z-JJCG=19~^D!NS-1oAUofaaLIPap5o&vB=VE*L?2!W8D1KR@8;KyxDfaR8UV&pmF! zfgr^kxuY`Ac1RL*j0`W4qmj8t5eHaI$Yt#_=JFciwPlhUixK8mG44e7Y`fRJ!~(_Y zujNoQ VhDF06cPF_C803bq3$Hh%Y+APYfn|F!MZK5tF<=rfy zExGBFXF#@i;Ubo^#3&w^Gp>XX^D$0;p_Z` ~OCPUELg7*nW}K_09lbS! zloxb6ag2cWmQ5%+A2!qG3UonBb8VsKD>(6;zP@cK^W_Ld7Em8bIZ6m>|ErHOqvAe9 z0DlnbF7o>09F(&IYQ_Z;p%KA!I3L7+n0_xBKp+q}fM$@++9uui)mm9wn^O69p7Y{7 z4ZWp>$$FS|T6^>~o90A7;klT=(!6`oQMqf^bj@HO_Y};&{l2ErfvdFk%X5E@dd_ia z{r2xeYLy8Q%;#pm7(ja?r;0P$|Bt4Tcbi*4DJ@>R@JbA}lVdCsGTQhr0J#a41HtzA zF_vVcAU*EP*z5p~+J;>$LBUs_=M9DK1t4gwP+#*=l~G +zEE zLPw5C9Nl^3Z0deKBYo%6C)q4@iO!t6s*T`;TT(j9xhObP>RinZ3fF*UMAv32tBesN ztw=)aZgrph0Eun*{M$`s`UdFJ_ibAY1AU~=9k=JIz+uX_g-!g%q+F5acyf}#5zZcT zyik9DpvsUTQLC!Ut`)Mj@9wxw!Z|~-YKF!vJ;tL(RVQ3phdbvTyo`*fkTQx=k 7?`_(swB;$~G9#hDYBYh$`J=zP=_ris6jUMb11) zFBKaY-E6`3#wl-C$|M~Sk0Pxu(nM=G|68+lBV8I( d4K? zI!oG92pwR!bTcZG1>M5>P8Bjp8l9ou=)ZQKtwqd`18)@cp#Y@kk;!%kH4aU-h#BKf zu;*wUaTf>;#{f!kP{P8BFBVcmn)n5RwQRfX|Euf01A6ZJ_Ww$uGD>Dfipo~@mSi=M zJu79MW+;-BR6;1?R5}|(wq&oCkgOtPmLy3ukV@ p70+@jMO~h!WWt5Ug(YfHORgQvv?4NXgzvfAUjV@MOD7`T-Vq5XblEA5Tr7h~bfp zdZ~ yO_}J3>ks_RH|~8H|syj((!={ zxL4%1fUTiN?;FyV5~?(%1oB1F@Y*We@#-k(+%P&cry|lAB ct%CDrpLR1`onzfVns zifV)>gxIdaRk5QLuuNR0G@#9+7H_jzCmIDqky=RmDOTstnvr-wyzNbEw$jfzY7L;f z70EWnD7_PnJ~uc&Urm*BC&>=PR$6}(cr4eeLWya3?%n2kJ;up{b}xeLzf94{ A+^?O$$AjPkQ|zbPKXFmd@!PG-95$#b~iP;3_E7D zI^ln;VOMNHMl)*QPyhto?6S=$PHjW87EQo>R#Epcx1i!}2j8KxhsRMWN >EH-fgd~i^c?mWH^D^^gkkPhf70~3Yxi*7GFtSg4G@rVA|Hy!)QX-RY)XWM!GzNY zBSpW;7!$U@-8hNL46j~Q%Jk+%NymCKTHX{H*#YpqqMw0plGt{NMw?LNNPP1*H`i#> zs2)HkErAIZ7UGkIk*1LR+3{)qX%1;cJ{|{}_DoR$Joe?NUt3Y(qb(*8*CE=ya~yE? z{CS7X^Bm{>ZK*3fO=6=r`9pR`KoR(GuU@ bo4M0h>p&-x^k8_?3;0#UA5 zQA(ej%=0Rt0FSa$+sfUL5e^nup1d{4!K>(qSFF7f(achTxB6jWcs;Z&Xt>Gd3tAL( zpq`BYb64OT$`|JS1lzTo6Qn ~RDP>B}V7)2G0=-B=cX6$ny<>}cF510-(3r;53q zP_9Rf$Mjruj#3@)TylUn^eHoT@SR<4?|XMu;AF~Xmk6 &4%AW8CqB387v*J6i!ARSlR}f?DxK2R|$Rmk~?9ErN4yaz;9i5f@GMhRA$0HFY z;XoOYZw^i|QWO&0NxL(DCSWuuD%X$cz-OyNFjFvrMI*d3q^b;p7Rs#~NWCEC{l7SJ z#*5zb*lt%9AqwzH)*%{0+CI2Z!B{ymLi9%o`_zcO5ZzN9KIY|#@(maUa(@d;5^N7% zyQa-IzDcoC%yJuV#jzHv(#_21Wim`|Vb0c4Tl?m%TgniYeDLK0mDmM+q`b1S1K59j z)i;aCg}(j!F%Orqw#0YgT&sL*CVH4(zARgjq)9M)-U6<2gLxaTZ1MF40zUWhst$P^ z89IS!g#aXaM*6)E=yF-`ByKJ-71^GWKGSIYfVokF*$MaD;EjjW13XnRY?du q9p_*CYpJ7HA+SacmH) $Ty|rrf<7fEz=_uU}7~){dIBz81PkK0$n0o!WX_Cuu>oVY+G6o!qO{ z%{#>Su~Vm(YTdV7^8rn>rzoyHNlR;%K{l%lIq+agFkG&2W=?CgIU}7YjC|*1XN;If5`gU#we? z94*dEd&ma#90%Ze_gsC>gJEx3ZSeaa%OTOHJb(T-6Rkw=#J!eVj5;46LUTW#eObU| zH6=QVEg$cKQo6$>6SDvqhm#<>t-qwCqO2UiP_*p;$B3EtN(i&_q1`YSy@388%K^tT z%4)whDq`GDv1W}qYJ$7i^;v}t3FeijFz5>#vR-d>MmG2t9fld8$^4M(jo7bfq6xP^ zyX{cdz5KMGiNFqv&7sbYr3A*VEYZ8fqrV)bJ>o;wzyCc5F{YZj9L 2x3`&Erd(;D` V)0Qo3$3P6??5)zd z1m0%Z$#e&^_|$O&8Sq}9np@a8p4XsFaZim8p~dg>z9Cc`t-t;J$%g+cn(;}I*OOY` zBXBGR^kNTXj981(f$hFNo_~J?4e3kS1+vR}*<2>GL-D0o^^uQplVv1Qd}o&TRC78o z`MJw#244*y%&n?s^#@XB@;gg@6ce$!LkqKJ$a9Qy`tt4>N_RXa#{&QNfn+wQ>u1VE zvd+`Pg~eN%py>iiMNMZ$Nz(Lqfw(QuYF!YtqoiQH&i=puj$$j2x?Df-@suwR^!dA= z;4WLX)PeRi4mer@4!?Ez^W1Rn-Bc|Sm0YwVaaZiO>_ytCrVmJ6;s{0AH*wjrFa7;% zFAru9H$Wh!UIPht+ktMzq3Di&Z2L*^*?{9tbX5HMar|||djn4z+}vw9TB{ggq}`lH z`n%rqs$^?=H!BEC^mjAyVH99=u#fJ=5j8ikCV%s#*Ikwp#fl7}eRC!|l?zv!ogVy# z`PDJ-CxJg@Y{!8Uzu4WAhd@>}g@3lNznAN3=CXom1-2!ySS8X)Sn))h;E5RQ=qWR4 zF%sa7^N*XPyy#(#AlG0y-+Z9u#Vu(EBua*zjyUAa;W&Qc#2%2sBS(*VlwOIxnp6;2 zzoYpa%zUULM{(7fAHUax3e+z1XkCCLbFl`gSI>80R;(Xy-2hnuZ_og-_p=1F#fVI- zEs3eb&(syulx`v4GVRoi#PjxaBc%& M6-FoG&1ot!3Yd$S#J)r~Rf^=|;AR}(3MpKY1L);!0&hC1) z2lIp7piX}+T{@YrH15@!;6z*KaoRs(0hve7OlAH52R+AxCB}uXF8X1bbG7ea);IED z11L?mA!m;zTH-aawda R8vb)4w z5IKbf{kPWb6pUCdc53PiyV;o=j0}(m$@963Y@BM&aQYWLApF9S*9NZJ{#Q3P2LGbg zY 7MzDEf`oA FO-=tXQ%FH4<{*KH*c+PJe zD4ANH-bK(dz ?K8$MFtyI=)b zRJUu;#XOYsL{Lfmi}X8o1j~Ky;cT4-dl!P!w#p*e0i@Oc`u6(%t;23@FX>Rx5&970 znZ+n(QkUJXzA=! (Jv-QCn!aUXEI(K+u${499rk-&Rrc zdnqRZIgYco-Ytw!Z|i!J(wG6Zhd?4 m zblTcL$zMZVFW6+!B)-4YG?wyCZ2Fi}M%HGs(yykfdXR#^F;5sfgKkGGT(H0zR+zYB zQ4KIc-O3p77zhZ?l}T^1hsY%b;n$~7*?rs^YhWvKWhBkoIrY08V2B+)bjTD~VPVfj z6s~;?D8o7CqoM0qwsa;)cylG>k$(C5b<_zn^U1xjW$o3k-wMazV@#?tuAjV5@Vtw5 zB1tNwsx026WHXH^C1d4q2kWGpH^t&cjFVWDGo*Nal96FZ>*0!Y= _Iz;3Df}c> ze!J{m|5E>#-R|x%;9A6ZLa;p`+HuNM0izwTGMfwKXwmkCLm?=1_`k{a%#j@>3s`|$ z%(SGmaNvV%N9`%|ul}6p#w&Og fzq)1|BD&9*^ z&n>V}G8tY~Tt|u$q~2x^QEHFj8&h%dW&D8<&+ec#q*kl&VWCIs*4@#Vtoj&`0-S1l z>;q%6+>9aaRY6>xPq<(>v_7o}D?0#0H~7E-Xg(TRcWZ&+$8u(tr5)&k<2rcZMVsdb zWYW#J687ODy^_tW_Kv5{>e#vSIEmJIc^Ri%&SNd(3RXZxJwwuA~~bnMEO59?HD zrgLKoiDN-!03DnAe?sZ`0lJpxC$V_kxO3O8llcvuhYgFHc^?y`eMG)1Geezod4g}W z*Ex%<_3N*^dGljBsLRHQRn_OTgLNpR( bG$G$qlCqF-Ve zGr5P;nwNIh3Ir;W#^CkJ_-Fa$6n+zd9mO==w5u1F4v>N+;{Jn?PJbrd54q-JyV=&( zBLE!UKcAm_F>Od>4Sb5wS(lcL;}*BzlMNjjN>I4HS8rJ1OW0>xkL#%$S`^PWH}LYm z;a+_JjBO+$Nt(f@Eat(sHRRct5o9QxpS?S^#JcJ&T~Nbch2){XXe*tkodHN3N%5s| z&v{lsBL;GYupXqfVMW)PNxD^#ktYCd?fK<)92Uk>xTTy7@-a`~5>Lc;1b*`P53Y8} z*t!B2T;J*@QndoopL-m G&J# zDV#$6yW@4qc3i(JdFve}6*Rhh;lhW7zP{exj)CFW6^SJnF2L4D4}Bv>Q-oKHTco?i zPSPE_T)d!~!~U^nC(oX+mZ$th@7p%|rF3>HuGTJ0H6vh_n?TVP<6opSg7kgHP;%ki z=FitV4pJ$NV$rvC1ir`Y!hUYHgjMd*M1VPEPd%hVkoTBAVfZSG+CF_Rj>?!jXU>&E zN7|~?k7fAbN J?JcicHjE@SDyia*0Wt$VNUbXooU3YH6? zYr^l0Buw>|vNEwN^{TiWlX;q(-`{-<6A9^y-~7EP%OdnTg-PB0Z(0p-d}p|7Th@C@ zPgBj4GYT4^E7+bXt-Ldc((WZMz$zw9oqB`|*#FAm$)sjJi63y>@cem?7Q0b@n~|Cr z`xx&&ux|O+sn(qzc2pBd9cqw<$i3c9=*4Gg%-^}o8V5_;FP6PmYaQ}$<4ew3y>4Be zf$LT^Y8>&=BljL+3bESBsUwtD*PYg{V-EM2mda(!7;F)146)3R3&@ZAb*pWSt?@w$ zkPcjsZ>6QV6;;IU@LR9@PMNphX*lU*_l+AvPR~3)dj7{bs2qZ?80hOCiH=h+cIm*V zlc(5yb_?8GW>A{a_xgC(|YbjTN)qk=hl zw|M3BeIci8tC9;HDVxs>uCj go$hvRfjcqA!vsjc^|&R=jW$eS94lUwN};1b{s&Lfdt!V?2R+$ z-
1DmuXMu*|;-;Y>?}y~M4-(Bdj&*eUdX!AkJ{5d+ zSa$`79A10>W6eGR(+m$(Rp@1GtXW?Al4UO7h)v7eDVD5ybGlP=6CLP3^kT*f&T9_j zcz`(et-N-GtMZikodIyLUg`GwvZG zP5;QL;+vxVIhI}4zn*46k+p!C{WQj5i~tfuToUOL$K(jyzNuDf5A8V~5s`NIqMCo3 zfqIk9%(4DRw Q9F&%xZg*^#%lSHEui z@8rC6wXcUN_Zq@Xc=dQ`R)73h_RTV#JG`4W8@l~XZx=%r1SC*kq I-;4N4J|! zSv;JAu0{6^wd41cuT!G`w2vK>?dJDiM2ANca@`oqhj-r34zlKnUIw&W-9}8<1Ob=D zq#cXpvQB?Q6!alW&CL2f+JNmVL2N#=;ds8w`i`T`l GD6%I{$nr>OU5Tv)6rj6wpI zf&v3iS*rv)p0JB{q7RIgpSNQQOi3~j6BHRI^8ICHkZoq!J!Nw(C2$CNR(SPPe>s#S zFA#@NFyUW_i4D{vpS7`2t7V`myh}KQ75!F#YZD805=jZ2Lj9pzmRXCZ=ZN!fLa6C( z15-Z6e2Sl0M}fAJ
)FR>fH-w;9<1iHKt
Zmd%#b(T%G2_LeLPwh%Z`2j@c}0DsH^OR_RK-0Ln`B0W zISY4Z+`9{+3GBh{`YO}Q R4 zCR@pbnD8`q!@60pC*N{#uE!P4jdKf@j#zTFnE@YOyf~?VlsC~E9EXhXAwPc{!9dg8 zV%pbVlwC{CHoL*s;amO1@ayTtrPEie@5vMevLqf(Lnm2VXJ=XnY$2T(yK_bTRJQ^C zgDNkEXeQ7!Pqc%AbldPggfPWXQQk!8zWeIc0a-aB&NkfDYSG`8ch>#&_#ake7-J%I zCaO-HaHav;6xA{ol;sen0SV8aUwQ;mRWnq4C5Y_@uUu(KJ0#0Gcp9oRo#aKjt#+fd zB>@8F_C{Vr7ByuE!5{Jv6%}L~iRp0M;=Y4df2hyWvT`He? _G%CsP3>-XocRGk^*&z z7;K2)79<@E%6C$p*+GnF%64zjx20VMv}pvA-555QhIMSWB_z@p=N72L5^kVp3I&Hf zVHF+)EDyJZ`pgD}mV$KHm8Bvn!5Y*pjt?R)J-=1