diff --git a/whitepaper/uncommonlisp-whitepaper.pdf b/whitepaper/uncommonlisp-whitepaper.pdf index dfd15ef..590fd46 100644 --- a/whitepaper/uncommonlisp-whitepaper.pdf +++ b/whitepaper/uncommonlisp-whitepaper.pdf @@ -3,7 +3,7 @@ 1 0 obj << /F1 2 0 R /F2 4 0 R /F3 5 0 R /F4 6 0 R /F5 10 0 R /F6 14 0 R - /F7 27 0 R + /F7 27 0 R /F8 30 0 R >> endobj 2 0 obj @@ -62,7 +62,7 @@ endobj endobj 11 0 obj << -/Annots [ 7 0 R 8 0 R 9 0 R ] /Contents 117 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Annots [ 7 0 R 8 0 R 9 0 R ] /Contents 123 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.d3ecd28ca03f587d6940049748681018 3 0 R >> @@ -74,7 +74,7 @@ endobj endobj 12 0 obj << -/Contents 118 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 124 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -97,7 +97,7 @@ endobj endobj 15 0 obj << -/Contents 119 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 125 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.a2c922509fa3b1785bcd08461c0457b3 13 0 R >> @@ -109,7 +109,7 @@ endobj endobj 16 0 obj << -/Contents 120 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 126 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -119,7 +119,7 @@ endobj endobj 17 0 obj << -/Contents 121 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 127 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -129,7 +129,7 @@ endobj endobj 18 0 obj << -/Contents 122 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 128 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -139,7 +139,7 @@ endobj endobj 19 0 obj << -/Contents 123 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 129 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -149,7 +149,7 @@ endobj endobj 20 0 obj << -/Contents 124 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 130 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -191,7 +191,7 @@ Gb"0;!=8`+$j31%en endobj 25 0 obj << -/Contents 125 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 131 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.6378944cfcd9d967b8dea9d1fdf81282 21 0 R /FormXob.914f0cd152b732307eb1a2bfb0d863fa 23 0 R >> @@ -203,7 +203,7 @@ endobj endobj 26 0 obj << -/Contents 126 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 132 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -213,12 +213,12 @@ endobj endobj 27 0 obj << -/BaseFont /ZapfDingbats /Name /F7 /Subtype /Type1 /Type /Font +/BaseFont /Courier-Bold /Encoding /WinAnsiEncoding /Name /F7 /Subtype /Type1 /Type /Font >> endobj 28 0 obj << -/Contents 127 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 133 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -228,7 +228,7 @@ endobj endobj 29 0 obj << -/Contents 128 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 134 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -238,17 +238,12 @@ endobj endobj 30 0 obj << -/Contents 129 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page +/BaseFont /ZapfDingbats /Name /F8 /Subtype /Type1 /Type /Font >> endobj 31 0 obj << -/Contents 130 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 135 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -258,7 +253,7 @@ endobj endobj 32 0 obj << -/Contents 131 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 136 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -268,14 +263,44 @@ endobj endobj 33 0 obj << -/A << -/S /URI /Type /Action /URI (mailto:russell@unturf.com) ->> /Border [ 0 0 0 ] /Rect [ 248.0736 227.4236 334.3536 239.4236 ] /Subtype /Link /Type /Annot +/Contents 137 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page >> endobj 34 0 obj << -/Annots [ 33 0 R ] /Contents 132 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 138 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +35 0 obj +<< +/Contents 139 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +36 0 obj +<< +/A << +/S /URI /Type /Action /URI (mailto:russell@unturf.com) +>> /Border [ 0 0 0 ] /Rect [ 248.0736 434.6236 334.3536 446.6236 ] /Subtype /Link /Type /Annot +>> +endobj +37 0 obj +<< +/Annots [ 36 0 R ] /Contents 140 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -283,15 +308,15 @@ endobj >> /Type /Page >> endobj -35 0 obj +38 0 obj << -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 1117 /Length 134682 /SMask 36 0 R +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 1117 /Length 134682 /SMask 39 0 R /Subtype /Image /Type /XObject /Width 949 >> stream Gb"-V"`tI1gW/hpP5kol.BZ)i3%_L.$P]L(O;>;:ga.3l:cu]GmQlcCQJg+VOWm5G6h0.]mo/B9r26#pZe9/[1Mtqs:YfQJ-DMTKiCGVLPI:R7q])!!'GQnT``mAU;Z(Lt>=uBE/$?9>k=*GJmtk!:0s\(sj;n(]XR55s,>O!!$!:@fQK/5iq%d'+tqPpFP=!5(39ld?(PXcNjLN!79!4P:(SAg6MFrq&j&;Se1r&!2-[Zn*.6&jU1_9[r:r.zTVZQhY$/65Mi5cJ2fJ>WzTLCsI!!!!ug3EPfku77.oaW!'Zt\!dn%SZo&onYoWq@YYF6cC?nioJq3fUtS>LET5NL=),pNJ,ZF-P:BQ^M8uGcQW=lAs"aWT!;*+Ia)BhIfsPTsqtBD'ZIZ!Ra3W(MmFnsHVbWKgRk7jQ(GB)cT-mF+80:taI7fbSeZN2i2/CdeRPcTkSihiB-/-"WZh/P8k`PN5m'G$f/&Ui4]p"b.p$,,lWDf_EEKiZA[r:0sSuemJObhV6/I2=VJ0O!t($!>qQcRmR5m+N+kg6$OZ@;au[A@s-cI1.;9,G"tmbPK]?=%?pVZ$D\^Qk+@2bnJ`hHc,];>#JmLrTJqfT4tKi6]hI]k7q,72:mHc'tW>/76+r=sd%:XL9PIGi-5`g(eDRW[3X?fjgBY;^@S:cj'teQ561=LfO6jia"5FpAKsB[rZ+\VS9+!8%hAZ+aZ\O,F`'G4k-#V'RN<86Y<1YHRYf3,t\"N#=E@q7;%RHK?l!g3DDR="e8JGOA^<=BLCm,mFl$*#JL.BG$:+!3dQ`A%a9DFEW",50-f>XAGTWcC?oVL[suU+*Zqq+oHa$QI!u'm?K/$;V"k-nZ#TiA5U0p"g_a]ip,g_\8gQlc_%8u^Nf:CEokHl/V!ct++J8jMQ@oD?lh@fni!,sh[5!C,5+aVH90ge&-!!!#;\T?rVPUVeN@n)o%0&j-7(@`4A!!a,V*,OVQlA

0&j-7(@`4A!!d!05MX1e)jd>Jr,Hl=[+W+t%$CO(S\0&3pRdQO76CbS^k!&XmAfM;*q)(-]_H-9N1RK:lKVR4o.Q>iI,O'-ddgu&Y9I9.oMW(tCtP?#dkfun4gp+ce,?+YORM=]>:>:CVCO?Q&"]_Sre'#f^J!!'e=LrX[=p)K,`Nr)\n/6o9pNQ84sFGj]m?G(SoO1k]0,YXRh6Up1KnUfkariHV=^;6eHh"Y%WZ>HLWobo_[OsFb1[-=sf=;K$1O$5#VgV.a@/j1[cYN_<3nVFG9U*6I&iHNJ7l^5=lfTDa&G&@HsplV9;J%QD)$l>!7mPUd@0J!5N;N*05T_&1VZG0)j#8\]^T)Z1?t5U*W"ThMi)OC_Mjo.9&\jmI-B[W?#k>I@E>f8i7ZZF7iWefq\Knc3tUGg;Cfq2IuJ&/+FGV!2j7F4PmClEofgXo;fV*WlE#1l011/piW!\$^/!99HMlSU)HJ6`_#`cX+5a4NU=ViScM7dYps/'iF"re.34jH6c%Sp*io;1RWc@=M/sTHF+ttCM0"pCUVK7%U/h(72q;5/I2=VNl$\DfYm*t,Vhs;%6O=AI.Cn6c^P.J%1F4@l1"-XUYSPLY<4mro>1'E9DSgN#RDFIo@DaO7GE8O@e9^Z[IKUDVi<$Hlfm/h)g;]/0m[rg1hG'oa0/Q\fIkpD`e>qoKg'm`*U!9o=0a'VW;hsAZPTgXHN.n>O.6*gA#85tNM#c?hnd3cNLhh>nI"[D/C&t+Mg4&[]m?b2%@T$'o_@u%PIRZ1$!t)@<]kZl`rCMa%q!JaQ*Wo..*'V>Q599=?aXZ@Hf0S!l)jV$OU[$8Qj93,aS-;gnh=65\Z4t]r>g*JF'[hEGY3q!%@X?*U;fs5C[B#p2sdT7J[/4YQ;%T.8jjnB\\f)uBnVG""Rdc&Zl7GDqJnm.IAb$-GC+Y/\sr-5;:XB+-]?$l>C@H,dhVp6YaRS;EkA]ZF>b&WZp1)?FNp83I9i6jN1?AdR$B\\+Ju/99j]C99Rp+*Ec?14LS_@cR!pu>kK$nQ.)L+[2R29'YX>JfR>0c@fQKKLi).Vl.;+J.FchiCYuDSeII4%Nfh]mlte]mF/:B954$4cnP+.$aoNGktB(C?',ZB>.9cnJJ0AGLE66/G\J-T@7moINHf9YlHsg;r._&]N%\&]kVa:4'_*"?!!cu&G\m6LA4d2Ge@_'T;0$TD[-BY47GGDd4a8@o&]maXD4DrrK[C/l>lo>LZ_o:Ak,+XuEG1gcZIY2tX(a9o^%oVdUGF*<`DqZDhj$l/>DB8`TioF5Mq?;f`*'[#AbH[%bGROS&"0kQ_2Z7qWp"j2R5meAVk3D4MeL!tNR65bP%%/jiXg2ERG3+nXm?kiPJ\uuap5tKdB?V(?Xu7.C0i5kD@Z"CHErJ.Q31)6Um'ap;rU`Vjj/[<*,-eB$]H#jV@$$)pAVhnK]/_qs1fj@a]bI83&6dT/>8%q%"C@4ZA>6`jCQB!!"tigVdUNY:$[ChIG#E.eb!nmF4ktE;&#AloB*cpE'@ID3*'Zh%StT.?D>"*KQJ@K@Obi7!f`NHLJ,EFRlL:7^Lorn:^N"B2MZVLrU`?fUET5P"S;jk1_7rgG`hYlsO3,KHn=Z7Fo?LJD-:8DJ^9aJD+>^@h,8<,^$>\74[>QV5nG)E@YMJAAEFkNe18BpZt=&tt)?SfjO%ETXnS#EG:AU[0HODr#V>%Z^R^@6rB*r-nHBlr0`#=?2s55Kk?nldDi;Hrck^i.4_ic*sd364%rdL53';e;*fe<$kH,n3:Q>p/8?0+!ZoepaMp"$CIW3.1G[Q3>%!!#d3id6_r<)HqsNJD'mnbCV+2mmQX<:10e0QgDIpMS9>.*ab+CRV(U)Z0X<%l=b]lpkmO^d%@#nnVJ?VGA;HOmY!'DLRT=]+"%Ct[s,`rH*!%H=XPb9#[5NQ85fS#%oRc.8\eDo_:ZX4Qq48B$JoiN,DF1(9kkgZAgDu7i&Ws4KJpfpt%4AdAPL5[l0koegCF1%IEDo^P]j/Crl=-!@^M!'T72D0?4a"nP0o0\iMWdQSBQG&(/h;)ktW>GG[XAlJ#6\"ec"re#qS:Dts^]HqsYg+=rG+4Ku-n^Hc-_R3rM?B*>XM8oSr+B#Y)a-9acNlOUbf[tWI2ef?kj4fAEDLbb\KKE!,rXj@iLat>Wr(h8TS%D=mNL.?i2ijBV>1]R"+d2,-adopOcGJ?;m=peb\r*kd7mYdq?a(X@,YQ=XB)WopBt4!.b"R%LrsX%?5*On^tim&,.+qYM3sMU:&C$nkNN&Tma#L`>(*K\*MgT>#oS@ht%pjDVUpJP$3^_o$uqUhK?SK,YQZXn4A$+psVQ1r'?^1a"cBinJD6+#@dNogr*\AQT`:Il]5@$:Jo<"-0obLRWn&EVeN1i?^CZ5_o&6:[pH>sa,'81f&@FmOt9c,n!gb!hmI+m8lZ9(6eZY=C-4+M^1-*?8Ld]BlJ'%ZFSMlQ2mQ!FZ[/lXH"WjIK8/4YoT.HK='2mki\:E5%YT(C=(Mp4=R+,\3u+eq1V3*9I>3]D@q397OoB'$Xh"tKgQG\,f:\dRf4_X[3='&IGC"tlGfWra6Nr]6"+N.d%.Q`L-9)Wf.oU$_uq[XSls%3@B53FLU2/Vd@*dn8_Hn!p@/\;&c`t&&Vr0G$OjQk6d2f!=9^3o\>U6Y&"N#F'lITj,Vd[eEJX7&+AlgQVBh`kYh$B1!!!uEn^t"eY2XH6X^<`7b0cEFKs_+1*WlE#5`!I(B>f:-M/E/Aa!)A/kCuZ]\4(T"b!<@'W`+'`&n^o:KGROS&dno$YCl*E'I-![W"ouGAKSG46M[0+OlXqmgL(56(pI,!hi\)Tf6m>crih'6J[Z3LPeXEmgT7[T1GROQP*)>VG_83s]TqQeY_Cj'$29TA]m+J^8mtnsj[r:/!PUMY6F1ir1(Pp*3!8%hMMU\Y(V+Qaf3M&E_WqSoOT>/.U\$u*i(GGEPLg;,E!ru^nLrW]A/Jam=GLh*b:@?fAB;nh-*^4t]h@m.1`+&cIlj*(5aP==I%0j`!.SN?!u&N`o_9ASCY/mc2hpI+?RnJD6+qa!?)eGT.6%0j_Q?+]a#L_D78U-u\@p%4gZ!!#:FLrWAl?+Y9gCtYCBH(t%$SBC9U]B,8=E8Z9''*/(5Ln%*PUAA61_83tXV#T8_GLNE`qoq(WfZAN2UOSCM7I4bQp=:;c!9e<''V]mYDJ3]sr9:t0d3;Xnf7*\pfu\U]^&PWak6qP^c^m;eA3P1h*rl;VcIJmm-Yq;7ggX\,X]r9[SNAcKOTkdcE*RVUhG'=hSY)OHh@jmRGOF8Vo^nY;ICe8K!<<*bX=RM[`7h-09(33"'Mr6`^29+I`R'*/(5J9@qrZc:PGFlUK$H;DKL]RBZ8=0>fqg9oCV+ohTCYbla>l=J2,n\Kh_H;DJq/76-H?ne*8IpVT#!!!#7RZq#->./7HpI$"FkF[61]68&)B)qu4!:/Y\MjW5-DkDrGbPqJ;opuEh!!)"HK*Dc?AB;P<(2!F:gM_ud0[1N7X]hRq7-r*OE!!!#kn`\AqbaC8:pYC%>:W+k*5()#%`F\Mp]m(roVHE]dEj]!.b*3UjD+COk$L6c^Qk3\d`fLg==a(e^rF)Q5d4Rj2R'OQnVs$"qC3rLab,lbZMAoiTACSc^[#eqXnX;:K7ApJ2m2hh7J:E%uqPcW_Js@D;2K.#RHeWEMAHAf9]inR3Y@edA'4dGe<[BB$HcN?=#o`6$c>FP\JUDN?(*hGOODZ>>3(t*G<]iIHATd^!Bp`!!)?^j,ZDM%neC<#kZki^V+sd8sa6SHhK!\NZ@TYZ">Xr^.b._ID:70oU^lL*^"\OHhZr:_hQ8d;mU)\HMI!'hD535!3cq>Ai")Fo_%mJ1hi+9r+4ZD*BRM3?'d0LWqSnt8q$mL'.1A;o;:@XM6Z*]O8&%r[q!I=HhQgRHS,9u!3u4T_1SFKLN`.CrR@fFHI(]&r;?IjVbV[+eh+Q_@O#;i@JTNXDqVFmh@m0@ldr=irqY_8D;$ODZK0iRGC!$i!!'f$2f@F7fsBl"_1V46^T[B:ro;\6g1(F`8#r;JF>Vf`Fc0L1(2(GB)Oh/12m*GsN;iIPnI!5MIe]mI4o]64gl9QqF?I_1qXgcODI^\F#n.4N$Oa;cX8i5#@Umi^8V76YNqNb]-K;9ulfZTda3EuMj2d?-15A8S&qu'pg0f!\k/GW#%3'V?HiO'=hm)'DkK]VSA]eQ"lf[nta7?iBOsEVFp[2n0gU1hKr;?I&*^",*=TJL&=R=%e)ns&#jugX8dWjQK=gNPRp;P_ON%+9VF99)"98F0Z/FQurr)_`o7+FuNQ220'Ni%p[IX.6++I8h7]^I][Wh2sQ!kuWb#aGH8r)TUT21q7Xa^6F'e32Xrql0IbaG6?N).'gUr7`\qGj\'\REC1bEa_Y\(.BPT>H9ib8e1.]j4oLoB+.U5b_L(G[<(_\o13%T,rC`/##IOsPJIk`PcYd'IB2)Du8/Y?lY8^k)&,N!8f0o704i6S7u/-KDROflHZEa[U3e)`))b*.cA(2k)d!il[N:nr)/^bEkqI!rr>Jf73l(mqnNOl0/#1(?at&`fMCVFHO`8V@S's1d1WjN3T88R!%]DOj7\e]6a-bY$AM8VbTB`_?:`]!cW_o#p``hIJ_U>_8U?-r?fudQS)Q?:ll+Fn*_o6M)HE!m+>1TdCpdLoPo\%W\7\kaHS-;KO+u,')oLdmCH`D#"dXCIep%flLa>i0q,#.#:._8C2&04)`MZ)0k5rcp%7l=J,[+7B>o`CEWejl*#\,m,ZA!TAkfYg!!!#ko'G$c?XI.r?U(7&A"tDQABU95NQ6q;acdYP"uX[hIJWU*iPXXC*t9TuLP1>Z4XHjq94EKYDo(DhMk=Lg^.9a*Wg-N9[6GhU:J,c'$GO>eQ.O`o^9:%7_mFp;W,Sj"1p.9&I%PCmi<]PKuW7iG`:g-Q5iu0di8=t]^VaPYIU71BAhgb+Ri?<3JHhZs1>IRY"5'ZQ^d])qc*TkSpbQALB%(2=lReE?3)`MZU4AVJ,Tsj=C\PrA"q>$F<8d\/eOl!\[!!$CS/mPn/nQ5j[3LuqY\O%I5.p&lY7dFBlF@k'.Rl@NJH^Zd*,b_1jl'$7rB?tHPIbM/CeZW^MQHt`$h;$dtc'kI;ro&VSC0/&jl]s@C/mML?0b]3>n])a"5C`\1g("`!UQ*<$J,QeIOk#HF9cSpZVs-%-Fo.CO*JeuMlUBY+9F!9iOr?[n>cD!!g/,E9a,Pj[A>VeqRCoihb#`:V^M;f6kgll*jMll](Fjpk?VBMkTu'kM+Ee>[#YEaOJ[o/*]edg%/Hfgbn=);2WGYB4R:]Xd9EikU*ImFnt+[Mo2HJ6jL<8j##LRm%<*+X)tCHe;UgNdABX-Ug&m$4\U&-O5]m=!!$DR2N,U/?G&gp/=A';r_N@E[r6VY@`XWSdV%CIF_2["BfDK\m$*1X"q;K(^OLjBN990\UKspHp$-9S2J8VDDT/+J&okA&:JEaI2Ti3K'e<>?\ok(-14/_2g%rp\1JJ:S+Eka`Rl5,JETH"0?+S*q1f']*;>\H)QTig2=ur0u$ig:oT)!@p;H(l23RnAH"U"rrm'CBQ,$F!hk*@i<;Ye\MF(_6X5Q14QqXj#NV+OapBMll`=gM]L%M"M@h4mK$SiC^V50-f>PRgER/ld3-*&parADtCZAHW(kl-d\g7ZTV+o[?S\hDQ#ri\:E5Y]JsI'r1Y-[?'9H?+kPagIM/-09nr;1M>#2o#i]LcCNFuMo9;b#7hkUg@CC#7hl?YW$^i<#L)`rr&09?.-G34%=ieIf*;;4+@+;nn.(@]6>cRDVr/Ke\RY\@WG]]I!E!M)kg:XNHL0:h8:P@t+X,PAV-(K]^$PWV*BTuV3*O71!!$EiS11W5mbKsEil(!W0E/K.U.(!$5Q4cSfZbQO2gOuTUIUB*UKPRDbEjkpc^qh"s8HX(GGas@!!"u)B8S2m?bZI%UQ<.cl76p^ODT./hRsj`A4Yh)Q".2P%mTuR1hkB.Nul9fXQ!FRil*9>RUgksB0+oM!.\!gZFFrAfJ*mI&*4"$qtKs[lRZ2ER.EEsVr;1L)ZTkW50asGr;HR--Vf'J_?IV#'#",4k=_2WHM+;p'1?V*McG]P(2ZNj9A=PEX*'\o-_o"iek*o!:o^LhWH;-t)S2aBCUqU2'H!dmOQ4hahu5`-'QI+\om>.Dn[Z-^:]Ktd=nouDZBdQBfKm5H2[S^iPL:APq"(AQnMf1ai4rf$PY"^j-7]O/*HJpqg4KiVbNYXj*Yt-XQLN&!,riO**6\&d\]a>A5OY>]"5K0]6@&Sq;fY]a$mn`_aEQb[VXX)CY.i/-/3M#o*k["3!X)U.jn,ar:o<5Q&EX3M5)S%XO(`TWD]R5M*QpcT7$4OcCI&iR[>ZelhL_b!1\f8`K`B#h?4#eC+gK@0A*^Kf1qZ8]mKM!?nb!-a$MP/k006s?b`be`,*Znc8P_'i+/?/Y(VL_&>K:8IKD%%f.X\j-5m;jUY?Ss,^`!!'h13+#pQ+BkpQ\Yq.2$=0g`Sih9RdVPF/A]cfAcIdS0H?$[j%0-Af)5iED@:RJaKABD;2LTpJ`D0P(`!>!rr>R'do"l]6E^=QS+haLPO7\gLe^!fmY]7(+jQLFk*@20/"u,?W3[,-U-Df!.]-0m^R<3mbRHqb8]8Nn\GGPfR>1-`f3WQ+G#u@'.-C$l.u'^d%,6MDZBdQ#rm?$[a6?;Yhl-jK3JS*/q.J_b,0E_UcgN`&X,G(ED!!'fS`LjY\qt=mgM&*7sY'''][IMfu[bTlPOkk-:CXY^7"onW/O0A)@MHIf,!!%Ogi\C+E&WZqm!5aT5eA"F7"onW/-QZ4d(@`4A!$IeV9`826@fQLZE/0Fn&$PG^p+^.OlVrgXohDK9PRc^U]>n424L/UNCgrL@YO8rfGROQP?p4gTa"Qj$OQQYr92.lV/o.e%-TZgA@K6VIYp$)c^m12OMC7XIpX#_k2G8NCF5)[hDK7Ca&S&<]XW/N]/f,$@-:ej]PHPd+,4nJ)Vt#_YH,(+)-oBH5,c0gb-kLJY3\td0kZDQ:QFku0O=NK&*cYI"onY-3bOGm.i/,G4BW>;WLN-?TYA+Y2eY)isGph-%u\Oei19`7c+WE-o$to6;8`6qHZa%+^>(rP.R04#CkT6Q4P\O,l+=C[9MX#:ik,e_[cA9XcG?>:(=[a,kNS!!!SuV"$Eker9%bDU7d+B`$$KZ+ooKd_DoQ2J^q>.V4KJ\T;=>\ntPQAG(J%IR=@IQ2^>?W^l6lZ:`:ehl<`$le"b?f('!>Uf"h()c]"LoC27Ye]P=8qQ1[lc/576o@e2+!/\_r!!!A(N5mB1-dA1'gSiGYp!]-ub%fX0m^Qr^\umrj8kEWToKH]Wlp@Ltfr$\+32W%!Gl79_Oa=Dc2#aZC]>mDmf])+'?&6N$!!%#].H@\$=-(C^kj$dJ7m8bJ<'u8LEk+%Z7Q]M!<<,$c7.fDnR):qaVDdQ'^48E@EU"TVG37P^4',Lj+pL6O;^3TX/i;e=(R7P\[>5I?9Z%t\_EfKTmZ62fCeUh]NN/;718:F(0T%jGhh/bSu63f)(O(t*a?'Ai\:E5JCQYk4:Zl@LN;NApK21U[)$Wt#"bU_?Bp%H+C@m=gOKZ\P3;2:Pnq3'[mk[NZ-ceI@_,"f0`V3(eN$,^VIEoN@fQLZE8iVFD\8$2!!'lma4.jm49bcc#U^Zlrtb,A!!".3GYJ'?`+&cIJ8jMQ:$Uj="3VL>$67K6OMC6+-W]IqT1Flb$ig8=:-=R6H@0f&LH2]>O"t%NI"LcbMR82[!!!#X`8eA2;+!Do0.#l;UBO_[M8oSr^s3OQj1:\,?VQ^Hh94PqT8DeV*WlBBKKE@"Ie3'u+Fi8pF%4761IkOE32YlP5J4^7L>&jUaJ`(4*a?&hk0/p3$ig8=99'jM`IaLFe]-PCUSR"`\s4O+C+gC8]=ZUs;c,_S&*bM_.TImrhS:7:Zt,"h[IH616'UZf\VYDI):25!jhns-L.+2eRT7O':RQJZpVP,l&s!%n!+NhXj)OKl=ga7'c"fs^lXmPZ%VRr"s$%7FcYmd[2JH'eaI,2TFD070\o\520h8k,L)!#.GT?)niW!4p0(VLD-/>qE>us,GjDfSPq>71ghA%#14HAZ4QoROn0`V2=CcGldY56BZg;[=HbIL#,U8&W'DdM(j?0h-Fjk=r!m3$.F9u=*sI(k.+n6BL!$F1i+e=`F:Y5A;oE/G!.aQ`'9>)T$qfmJWP)lPB]8kY:I:*)76CbS!!nWEnQ>)8p"_,7N?16abIE\jG&<`]p>i1?M:A\cGROQP&0@J'0kIqP`rH)>iP]6kh]a*D!!%[6>!26/[@*i#'DiU#+>2Ag>P>:,i\:E55WJ;d5.5#5gEdmC!!%ZcO6pF]p97i^0`V2=\@ooBa#Eaq>Vu;4@@\d*m2`KB:;lAko)=4%$V$*akW!qSTYIYsME$3h2*Inqn3QH<_j/^:[>VJqSMJ:DpX[`Nt?C[cU9pG^+YGg0qmV+;s@rfo8HOmbRGt[%BLidf0!'GROQP@)NQ8nP>>R,Ys^oqi'Mf4tl^!nI[W>rk*&PhV?f6V5[B>s#">D])&[[Mj-0[W=/tus'Dgdnu!bZlrc+o*P-B0'NI7*Sj+]?QLsH=Bi:k][rn"b@E84YdaGIC';H;#(="T)IsQI6rU2!$(]XQOLqUc;M5*\5.orH2]@M*dqDB[(i`#[Lk2B`+omPbh3`ALdhr_1d:&7L)p%#(;8D5mL1M020Wp.!Fr-^N-SeP0ej*WlBB(pUPpr*dl%P1(b=l_A=P[rn#-((V_aQ29jrkBB:X7Bc\OR-2AgY-+pgDsgV/cMtKPd]'X$\,6ps]'#1SD'^&l"I6A?8SY#1Thk8B\Rk%-YL;g%O$6N5QM=Xq``LSJAp@CRA]Bf0jm0SD!U8Yei';&po?=-'2\S_`Mtmae+Pc*/QcF(Wbj;?!*NU=`^6[dHqmOe5p;C:/WDb*Es.7LZp5sS.!!$EFhVtfie-Z+G&pn?]gAS2b^\?*_VaBSB4tU:&E^UD&"[j=-i],Df0/&[?H"a*WlBB(pUu'/G8N/m\OtpNXY,2A\A&Z?1ZQhojr*rc:[,f5I[UDpTEkM5@]MN^1c*ea#Eb,qWjgJVW(,OM-+N%VmlEB3$SWO0R@N+[TYTbf%o.6oUPFjo^$rIM8oSr!(Q<2*]mD.4gVuR1LZ7mATXP9Cl3HG!!!R*4H<^lR5VR!f4N0`Rl@JYdX=k\kaZ=76CbS!!jqn;u[X'(]XOYS9Ra+>Jt"O!.]%J1%fGsNr]4\_MQ=_^I:6h!!!9P*`N(SnJD6++PaEq3)`:b8][-E(@`4A!$L'OEFnLhYs(pYEokGt$Q%B@(021`&e`fo!V%!,!8'NXr)UA$2Y&*Fl3!3gO_(!@/L/]7Ag!!)@*EQ']OA'8i*!<<*]7pN;-n^oUeDZBdQc4O,/6Thdck8OC$Y]I_tb7K^d_taK:!:1\F`A5AAbAb/r!!#)N>d4_-fJ8t8!!'g[&Q^MN4LP[])ZTlBF2Sg:&Q!'<\UYmg0T17W7_!5Qkl="H^$[LD=d4_-fJ8t8!!'g[&Q^MN4LP[])ZTlBF2Sg:&Q!'<\UYmg0T17W7_!5Qkl="H^$[LD='C6!l:%0-C\3TKntk3,EYto"hS":!mHlLq\4`/@HI'RHE4u>Q!';!6>R:]C=b[3^7lPB"-!!#!cGS6);]!cC9^TUfc#'ZFn4WsCP7boHSHpp.%!!!K\T#BXs^TE@fr%U,hK7EXX]$JXCMKfO0!$#1TMT=DVAlPoSGOO&FbE@RDOM#8XE8@GT9LV&J!!!K\?H(s.b8/\fqKHj1NR]PGepVki<5`8H!8u5`F$/,sZ+Z4d?"gVA+Fi8N46M>]3P':LoJ+7q:(QWf/:.!@_6q,>-]I=F5-XpqjV+6C%5HT/Rtld.XI1W?":j\+C@RZ-pCWmO^HXF>37?-_/Y#M+UhfncE4ZBM>;-HEnFKFt3$"[i0JpF3kd-g]OGc0,qjde$SY)P6e9h:'+=YjeSABs8MNd_FJUIkfY7/coC?5(4;F:jQ7!.[Fp=7Oq!_=7J#Y'>-QQ]N5/:*3V&j2_/:#.B`n4KqUs$+_5?cP`mBa3o"rpaY[8H#mWASLa$T\=-&+IC-Qprs.4T8inf5I28>0=T@9Z/WH:sWXDd^a7`4rcg!\>*iUidl2_T!(\5>iCmd=rnrVVB[BKN#>>PTDlUN9o_Wb%B49ap@776CbS!"LSe`FGZiO4>/q]9O"`)`=SB]5+a(I9K9s:B*VKe>\T]*L%O*H<:uY(#M/<14/;ZEi"[d8=%eA<%5.i?D+kdAVt"1,I^!"UeqTecp^&$!!!LgGUujj:d3"1GQ-Bp[Y-e(.cJr,*fgiu*nC%KPKt7V2.h)7%hEjjfLfY6C`0q!&o$7SVj8͝e5!5?.sc]bNAIW/uNi\@3_G+'K%n*6;MdNTdoX0P]Q]j8PkDdD-:4F`UfS2@\K[^B&@%s_)'m)dX^[`tE=6dH?s43Xl66nZ3c5Oj!<@X;M^S%^Z<7d#!<@X;,9Be7/`JJb!,uViA'2AO49bcc%ZP^,=gs4-!!'g.&W\C,(@`4A!'%@\)3=N1T0:9Qp[[Qk2W!le-"CMuJ)Aq_q[nXr+s$gd!/D=Sj72>A>pRDVg,R!igMPZKRV_`TPo[FX!AeN;k*_CqPpbCU=i=eM!8u5`B0=c2lES7Gj.QS/b(TM+SRqdM`+&cIi6^Ir4P$Qha2DHf!+=uk'p#i+SMJ:DpX[=V2NKLRl@>j4f.:7)b`?u!!(4K+Hf4L2(,\:Q5RaL61DB0ZfqlD4KP9iriU@Dg:6J?h^e)UPOP9nV"pu:msb,^pLeup&J9Ic$bqFkgOH;Hh%c\1"\5PaN\gR#>tCME6#?5l"54qHl5b%QiH)Mo(Q:cB*UNYn&JJoC87gA^JCf8UW.9b2#c02*J$BEqTKh9X9ajis>jm>sA/EqQil?^EA4nm>tB-pg$#!!(RSrT9"ZSJueFCS2rX.c6IgedA!59$(AXMA20E-lkpGpf+uAH$D;j7ucY-+Z4"\4NlD]^"AO?RNYN8ALneSKg*cQjOQN&;?CV/=X/Bj&'BUe5bXUF0.8mEn87DHn'TG*Y+fm1AZF6nF2\#(p@IL?WHrb!i(j1ojBhoWZa2L$>?Km@9G/=6d+fTAL)T3kY=T@%In88cjKiF0F$/]uL*Q+MP*u4C1-s\Ctup_A6k-R6?a%/?'fkgBRsBe<\u%/9Qg'Up7U_%9Xks)E"H+qfo3uY#8&6muoS1n<5sU*q%^fAo-&&qP!Y5*#EOsABqD+p;6IL1M:[gd)f63rZ'Jc2i,KS!$K"\DEQK^X_VSL\\+=pD[tm;O16ei?l\6-?;8qS7Z\M2sfF_ENF1"VI]"&\rSDS/FN^V[$3EM8O1i1+D0R`T;)4Yp[!!!R-gr8=CpG^-i9T`#n>"XK33P'M/UplDFK`?Dnm.?s"g((l6S#tJrTO]kGjk6b#:GE[pdDk49(Ub=_DnN`)C9;TY?`.@4nQ>?pWg(UN:J*+&Cg=YoknreY`)?"denu\k]uR"*NHQsK+2)@NCed)n%b/hJ`Y"74!'iXYVt#$)P-M0mXr\YPhj"/RF1^n:O$l(k$#Ib:MjMZr<"`^2+pH]tf'CiZ5L3Ytd:@A+X0Pd0/kp+\.3jE8"7Oae`o@._k=XdT"`cKr^7'QGk&";OacJ]g[)i#>`FC?".ZLa!Lk.86*Jmn\4Lr?$YgMlml(]'^SBZo2b'bVIEb(JAi5l]6!$FI]ds)l3rhbD!WKM%8I$KLl\RI!6_F[Imi1D:"QaXeu,n$]u=Hd!f>r83uX%;\B2VRTL1E.So])5Xo;MFRHh.\&S9.!Va8ci(lBE!o.#hjUIFnU]MmIJ&c.OmZ_d3tefYm9;Dj6s!M[p*0G5`Rp"8!Als@M7kV+ka<8MdR0ohhYHbmD]Y%ob).DJGMqa@!!%fcX;-dF8h&aS!!$tO`+-s$76CbS!"P!59Nei\`rH+TTb3>7lPB"-!!"u8i\>$#+s$gd!/F$+VQ="?@fQMed-NY3?heJt9*B-M#64,9but"dSd!PlOM@ueRi=)lKCnWZVS;siCgakGq^?CQ$QRUB\sn^k]maoK:$NFu`O'>Wb3+R$k"Z:TRcH]Z7Q)(l?^3'`qpMp.f69_Ia@=[GoU/k#@fQMed-Nk9B@!#DEi)h1:5ut==\&j8Me3EZG4cg;2p5Ao0E*Y&T,%75E5B30)l5dCR3g9FdOn1hO6N?S*04/Q*[@/tQ6h1])tAd0EWfWQ?"HlaHo]rio'+]$Bt`48Z=Z\3]_ga.]`ZF9u_]cH`32:HZE(pZhEL/g1,$GX78jtnJD6+3&KC1j#7JZn(ncW7GUMpZ'%tB'e,f'rSthr"Z(po(u/QJf\T-m0%BSO\p>p&ak$VVk=RMb\RG?%iE`>doi!ruSiTDs4go9kHsS]a:d4b7YAH+gf$.r$Hgpr1d;IYd*m:eYq=Kg2g-/-hfjcOlNm*eHP@\W_6TVAR4@X`TTS^7.Bq)`H>M1\0$+(=\jg4Z7G>a\VQBK?0s!e"0JFkBmJb@SnZ:AOhYrdg:_OsNni7%6s5Za?N#R7rpdFON#n%?Rb_[jWYag3XtQm@Kq5CI[]YR59+-"n.6n=^$.N1jOU4k1C8O[2li$Ca>"8L3=a^!rr=g_tNWqeR&RIeGNK:PXN,sURHMtEKAD)-+9fI*oFQ=GapZd8l*cdhpnjY^K2pCT1e0,2#nnYI(2\gGk;T;6Q!B_rY:`P9bmV13H6)Mm!!",kE>4I(%IKtio.HdVd(<<#'Zj&+TH!-Z.h%14Ir`N7426I8Qui,Fnej[c+#^?oN&.\6lbm,$C,h//*_V90a&a-qB]I5X=gVU+OP6G1>H'q\[H3nKT1b)_/N9Pr2CBOrJUGUbIr1eaUO#Jke-Z-5;&gck6e\/mnp?/>2.t%fXddj=%_1M^O$6ef4J$d+!!!R-*5uFLMPW=,a(+f-naJj3k=uBj4h"9kqVp?4,mkP^RjOtgGT?76@]?ffKZQhM"=a3_SJF7mi0*9[iNVHsh/nEK:()f]D!TD:=gA7#:bdF3*NlH*V4X#SGN[0:MR[IEQ]/%G$QCA8F+EkK&t:b:?Gc^Ig&H(DuBK:nFm'(%hkPOk/h'LC=B>ClrrN!!$EFZ(>3o4L+Du!K34Q2ZFHJd:V7MgWZs0:ejn'p'9X?8@XiD7@Mk4%,VV,pEqO7W]+cY%,t^Tp_,oohS-13sUp!<<+Y37`/3ePb8mQ6TVR0($E?.TW?q]=V:IPVKmu/6TGMd>oL-K^q%4KF&=%r:^M61#;Kn]-6E'8>F,K?!!!!g*:'_PC>HY9;gFn%_Sa9>k+i$@/RoKUDdM'?d;dgSG*-\%on,VG;Q#VajBq_!nYW.7kDtc3XfbRlld(#"e&s.^+9,oWG$%2L:\#@93^fs0!WUpbh4o&O87sOu>a>R(kpW/ONU<8sPIJrD&tUBsbO6mu@fQK/,Bb#es15X3''?jk!E"!$aLZ-VQr-449b6N5our0[p\,)pn%X\DXa/V4P^,b/mek.3RaLYs-jKL"%,CO@![/[FKp;A&!NYpP[rer#8L+J0r@WSCUQIW10h&,D)l[N`6V/rO^j70(ASQ7<>62,(Q=V6\q!.[FpcgdB[M]s2E!!%dD4Jo2a`+&cIi6[K*4XtFt/1`?P%`Dj,7MTc&DUYIWgmlOf!!$&=lI78>a"Lf6N2d!MR#4b/NlV%jmH`9$;r!nd!!!""E:)@:M9!)Ch2837nX,22R?#>Reu]lF?pNM;b5_MBAoS]3(t+STaDSAW,"U!!'f4gUD*fd.628MargLc'pYq>.&)d*ZgoET(51]euD_#;at\tDp)'[Y8UEakWT6PQ\fs7jN%ot5JIF6*n^5r#64a[Oo+nA=05[!l`\(so(#D?0VOYeT0.Cn/0-fqX:P;1U-si+M%\@<;^_9+r[nStbc^F.W^YdA`0/PLbmth#E!;sml[r7OeCSaUd7T+6*;Pb^6Qlr*!:S0glkK_V)G4r(5Rl9BNQ*]%T^]+)1S"&0LKaY"?T\Xqai^M1b4VobXXS5*_!!*#U]6E_.<:'#>mGd,g5C`[J^q^mJDQ"S9+$VC20@KkP%TUK*'q7.#DT)W\[VV?dA&`0-Slp&,HP7/12JLU8*^+g/pML$4!(ZSVn%TAO1am_Elq/ancf`WHO0n*8eZ7H5D0t^+3?-;kJ`P+IHgot0*qAp3l0aiqDPY@#&1Dm/>u'QQT0"O=:ajo,)NE)i*bP2oh`DJlVh]6j#'^#`HLlTe\.\8gQe_1Rr8PM,X55nF/b&<5_pRlANW0DG58#Q87E@hTn)%]WX>/J6p>6\c-\*&qp'eudiDI?V:DW_5rV$=$n+I*K9Ah`a5r0.D(<.e;rZZT3*hN#XkKdA'3JqgoprJfojRn^h,t77BXr.L'm(Bk\G#()@]&pZ';Td[,@Qk08_r-Oq4^4?bqm-RYha"f_U8G4!`.e]lFd=%)"uJV!L[f2mT!hU9j#2Jq.N_^cS-_>e>`K-1GO+G`LKSt8]ogZdqcR%'QYX,'N@&N8$oY1,fQ851*Gg;1GbXfJ"E$p\9ROQ&B7YH:;))Q2VW[(#_F0)UAe\7A];U+J1B.!dk`[3+Q;]%]ic+MHM[8JO?J4#%1:^'.TNM0i8C9b1ojH/kS`l?#m6(aF^NupUC]QnSurr)/O9&7($gU1gp\FNFc3+6K63+U)A`DrT;DVVblkg?0?rq]7sAqhE6Jfk?9A`uFP[C*D6GWQ?1bT[cO<1#gq[R.$^2/AM7M91M`*u%ldJfk>N+G^@J2X'bQO!!'K9@N_4o;B=:rq>a6'j=7RG.+``F8u7<'j:us+:*QA#kt$E5*mj*Q3qR)il);6rBgM(ldr?!F%Jqp;055gG3mT,f"Q@sSt[`%&-P91"Q:]OK0CM2P)tb*+-7*^[hKMje>Q6>D;2LVXp@<)"@3TP;ofOB).AZXX&iM/=t6GQP:'-mX#P=kS8tVs&-P91"C[FZ04->=^:\dblEUSA7bD1gL_9=FePfXoN>a\Fp\.`mFU3RA#_F0kL'me$kOYgXXi!dDoGM(kQ7Z>7mbM)]eYT.?6;omjoVg2Q6kBJe&-Pi3?bUnb:s`iCagespc^d.!R5K_RL/tE[;J)a2Jfk>N+EE.#T[/E,GkgbOO2nk\qmM[RmGG[nMi.rQX:PM#&-Pi^3"kj$;&k?%+6N1jarfl\IJXf"=_lTi;0'>UJfk>N+>T%NT:_L<-ku=LoB4G9qh<+`aN-nB7n6U[*]@h:\T6f;Za3f6*C15>5nKhoW:4tAb*9`8cPjZN!]1Qt6L&-P91"OTnL]m@)6q=5F]C=%Ss1C7u$[r1#])`J-&5ASh$',-Re'e?TelTA&`Y$\pRNT'-NVeeATQ^@I5fe[;40[>8I)u,VeS=Gt6GkgdeQm-_@g(bp%9q+%<3DZ5/$-/W%J,["Z./DuJQg*c!:^^JTL`ctT+:&3tqt=kUK0G3Ya+ZL`6M1B@WMcXApK34Nr:A6u-VmW<;N;_W&fi"+E8eYgA&e0.gUC+Z:/.06WE$!bVl+1\Z=T#SN-GcXdaGFcN.HN\PrSiqE1)`DNpbaBt_Y(Z*@dQ06Cou2h*hnFN&n'sZ7"@3TP,CK=XA_XY1TLOeJqY]U,VfP9l#,.B;.$)oFM%_7_H[EqT@"*S(X&lK4S@*_HM6\3VsNO,"Zi:(cZ!MsXB;`9_hKl1S2=s.W`?*[*'&',g,2^h-2LmO5nF/b&B+[]6?,;`-->1np$-DJZq2lM+KXM^j923DScY?=0ej:4?:71LUIL70mHl>?m-W1%YPeGa2b)OR51"IL)\Lge$EW/Q:$E;?+t^^Z"(fq4aJC.Qf/4%+:*S?!'TPP[^L@C-;>0doN@>>mbPL!ldi1(:#XA4WX+DD5+fT!`JVp02\-uo4=DW!gt\E54DS`uJ:N1LrVJ6S]_M9lj+%((VqgG_M_\tm+AgugW(7N9SbW-YoAnunSND&@Sin$1%6m'A4$,N=qR!T81CPl?$lH3V_1Dao%c"X<$\Pc1#_F1T*2.sJS!f[AiU%bNY.jlKd]H?J>lQ-ad2h;,'0!d3eX#nIPR]68$h;USp%rPaY404)<ET7_cK,9e>ib+CnJrl^W]D#9,5#_F0K#$XBcI=6Nfn(t21=qCl-lIDrKHhWO=29O7kO6lIGBkc85H1Me'=r8.r5(*,:7U'^+pcj)tlK.-h-*IUoS0^*Q(G>U4UIUY'>md#<4r4S7$VE*3DVTKhY[QkLYD8SfQN899JfojpY$\pr-0V\pq"jY6#\/:2I<_22TfPSJ]R9N13]];Q/BkrHJ]o+:?G63n_1T46g\1F4A$UJuaH.Pfbh2X](SI24\1]`uQ>K,oi9f:.naZ-BQ7V:PY@$+sFj8.SLg[[#[r:!-l,\u32f.-.R[VBH[3L8G#_K!$V%!3*HLBY'gSR[agn$hYGk^X^NZC4Xp?h22l3\!?d*T":j2Q0'c:q&/cH=9Bbo[W61iVA9WqfNSbKHr!c^mdq/:i`Qp$5\fh*_eW5nJ<.Jj.ef=VIBQjia!'*qU>t1t'k%GO=,7[;/i!B=2L)WY6aT9MA+oq^o'ThS"7@#D.h6W1U@-&.fBc'#M'n._prY0+Js]0R<6M(+i_Bg=jCKb3/@Z4?U2sl*=^5!r-a)]4D+2&4Ar!$Mk_X('Zf)]?ZY.T"04#V<*3>p1UT:HMUe-ab.oq0iP+eh<-Vo>_ioX8J#7hl/HfLBm5_=A%GbIh,i-KF&!N@oB+m>-)ZmbPMRqtH-m4dt(3gYUf$HhZsoeua;ghuVTh+UEZBC6$r>celHbA(rYiF6)NIT0.D)9:%:-qYEZN7ds2iCoi4H\c)'Y#Df+V>IQ)VE-X0H_?;q^45At"doW@:AL>?fiWSN?tN?(f%C(L^!n?VUX,F`JYPAD;1@mMIL..'bV.bFQl\:/_l2cL`ctTW";qTBcqn(HhZsd_1PHV:%e2P4*Bh1r:k7XIkN`mbSVED+(a"O)p-4DE'mpCG)^?/1nB5MK)><2Y?A19R]D^='mqFVf7ep4D;2MdrVQ>*H\W^LJoD)1hTjs5SPmFf+$XAl.>4IDs8IGmSiqXUJ^@RM<2d$Cku+su*H'N6@GeeI=fK!.G^Ff3n)'aS09H4skKfbS@$s6/I\TAl@!i3=\Or,:,=[VOHM"/1-NtY!Jfn?e^,LCOUs#qUgZJZ::Q/Cpn*_j1BN@b%JY7RfkW8M<$Eb0#U&NupH,XKSf\T?l->eV2E.XBDl-;GqHAG6C2C%=nY1p@n=%T[*m2:7j`+Y$F+c`F[5YSN:oYgUD+Sp?98VJC&hM>e._[,E0^ba=oJ/?+Fu%gQ!DqOHu3@HhZsBIJZ&c3C*b"+]t'`?++S&o'+UN[Tu63"@;+0fV$R#h[q&dn)(lugU>AYf,&Nq:f,NQIJ`*>EO!aSh7FKaH<+&^gQ!t!^jlGl?=#T$eYTRD3'>f5CU8S[l<&JP^luIDS[_G.4L*j8!"@ISXl==QoJNk">U_:g=j,ZkKZq%;)7M$K@1Z(&;3K*Jj.(:0ekC"oGK*DVb`pS6pqk2)oH%j,UaJk;2D&gj2QNDoO6L4P#8,PSaP=GZg@oo.NU]sY\;FY7ZAkQ?(P"XIrr/6:>uH9H#_F0)L"N'E\.BTf_UY\g4*9\ZV5<;9k-ea<$8+7VO;V)"<[p%n2``uN&64AjqJ9VMJjH#kP&gEkl,J]%_h5REmFhdT*8l9JZ):BiWmJ=>MLY[)([b+"fkgh"#Ro:%gpf(K`XFUqhq[#">ISKsp[8"VorCp7ET>'Tp^$H[q>=!Y3e>(Y`F/m8&G66;fs,#laGep0>dbY%0tho+Jd]l4(Pnf1p$,OV<)f>FD4l;lCMT+tq9>BfjBY8G7pZe=]"5&IY'9?kA_1>n5nLF)K0CNVjN!<'gUD+);Pa_ZWnOq#J+`),[QQ)X6\c/R;l:,[?H>H\Hp$2j(j8F:q>9Wq@1_%i;^W4l'0`$qX&c@=K*V!s77TiQ7.R3LS(Mm"5nHGl_4]+F.ETcVgUqgm[+48K`+H57s4^c'UQS2^Om?*@gk2tsplgNK2K5F+hAGl5mcHa_F_3_%XlKTk!NN'+DX&c?[hfU%IJhZ0"K*O_/T.aHZ^p[0tl2aL.-76a]dh@CS=BO4^B@#6(W)R$9Hl;@.Vb`qjm>-_:I>o0gCDs[#hj1'tWN!s.7RdUm*+7N""@3TZo(r#p.d43kK*)=+7V!i15C_FrD&s`>nF5i"\*o4k0A,th%`$n/AS%^dG=7E/2>[(9caFXGnsDUh]%EDc6F/6$n+cG5J,K)X[_E*"+:9A=,9o?7SRLZ)n(po-TAf%\@aO:5SN9@2`XtTO8nah[HLtmuU4j40;B3lG/Mf=EccO:;gCZgtCu7ei_Bs*VIu$/Wkg?.4'e6:eYsNap'(i_/Rl9!Sg)LFq%.^p"\+dU$r]jBagGO2XE[i!\UPEkN^@%EcDJY=)d=K>I)3clK&U3lW34aMWQq!GPirVD(>+#%*qq!kG0*GCmU9'aS2bp52*f#Ypgcf`o_?!D+L/dHe/H/,B=j21-6dEn7"oW(UJ<'aVQ/I;^iMQTLt"9\kC=ID2!_AA5c6!NbBR2q>&L;:Bt=0V5;-E9IHTR&YKb&T2?Z)a^E9U<;5e7Vld)'"q`#F04/U/Aqon-3"*l=1sIkAa+tr7o&WO)`f5g/-Ksa[/mPn?2`I'Eo\&-Z5:S.?Z]B?qa(R5qE]Vb0_hZjB;+&a=."QU2hSIk?kg?/A4+`7njY<39)TlPXmbGBrX*ja6Uo1Z9,([r7m*CJc".(GE5$Yi*T["%3EZa(UoU.$"scn`.ZN#nnZT"c1^KH?slnB?k&Bbn?[/H2KHUFmI8>ot7u?c-7h69l#'#XWB\jn&cB=C^&FnD4Wr)I^Np&`l9nP(2X*TP;dAi?;$+bn(kQ4q3Wq$PGON>m*HnI)rUYFVG1d-agLNjTo^/NiMF<%E\'fe;aRCNOH9HB]RBZXTsZ;.2fIP*[=0KL@hia/(bfhF4r]BFPERR`*,BDcAqtG6ueBujuQDC&WDJj?.HWgIb-]`V]BH_\A>57oETV_40>&GE%/SjY:g81shK6WA\YL\9IDu$EZY:/6K+VqN1XQI't%]KL'mb2V,#sKmb1H7J5opR%fTC=63,"hIa8>StA"p@BQ"/glM/5+'VC4tVK3j8t+OhX\#S2^/AYVbZQQTrNp%>`#Zu56c.74gr3dbD/5+nYM5'n(,Z!9uMSSDJ;T!>P?<)f+AW_bm?*^,+5Q4.U@i>=\Aa(f&O:7Qh^_W[RSL!i%ABjtgf,e_sa9]NWFAj'r;RWR:IDr/WVj1p*S$%^FgGnKPM].SZ4:S4rK\8L/D5L(._+YF-J]GOJjD*?A%]]]AV)Pq.^@5J)AmrG'lA$k1;5gAWgK.!ZV4Ml2c&^7JY"BBPWc$`KhRAjk^XVF&QHPq#q(R[T_5eF`<8129e>`J[FH'qJTlSWY`a4M6i8$e/s(Cttt4m8L&dM)p$0bE`>iC4O3&AnJ_\[tZ%.#Ll3LsRMZpYA*EXSh/o8*%Nc26/oKMsF=tr96i-N0ZWY&C>VehCj>'*`1$dErNM1@#+dE8b^-)Zpj]nsYV3r3C@jETOOGfWepL4?V9i!YGXuZ)A7'$N5UPSK5Da#RLi!\nmf.YO`0(N#c,kUVJ??4,\9+o7maJ(E6Ji\q@+:4TgLN\j?V;$lsA38rD!+J6(iuHKBrd)J<%Zb%&sWc8MKH+S4Y$OCo]CC/h3tHg/tShg^D31OIIkHA53%#sDM$UsIVH;?':?S0eI/66c5#SdsuL$jOIu0g$HJUoBL(gCksU9BPeI/Gg59,^G4""@/&9htukr$_[NBF`bi%9VAske#%Og9S>^MQsRHK:[cl:WJeckC"`nh:<&$C#9tJ.Sj*a\#3b6jL4sK40n[T[6:EID2%![,kQ@DB0Go(Vr:nM*E4GZIH?p[nj67$alIZ\D&=t!\2fFHKOc`f1r3lIAOIjg.BR;A*6Da,_=Km0N7j4I!l17MI;uUeVpIi'WQf\p_2k]fi/nR[HIfpA3DrkXbHlT+@Y4HBQ\r"kKAU6g-G#`5]Yb+*tSq%3(rf2`!?=)c0AMf(8UL\nrDY[uV"=kh)gGU]gJh;M@@NQ/166SdrEpl/]eZ27!@cHh6A^_)Il/\p&on'7.=?CY+.bKZ'8e2Ip39pq%1eTS$N+@01S9I-#>U5abo<_DQ>;[2#.I$3PZ-/M1%NHP"=!S3*("S:#MYH>a<)a:'LCc_-:=KuX+"Q_L5uYtgQ6`E(7EnFj]7r]WMfh(IU,("?c(@\\;DKL?BSoL'N@383&Js+N;smG5D1bEmE*?+TN_-6%FIm$&![>O:V(o^[TXl*Hr.$9>2&:`c['EOI$UL=4.Qk`5#QP_!UZTVj._hT5GWoX0$Rf6?T>$)UgdQV0i0L6k9>FJ7k@h&tqH@V[XjE)>na^'#cRqI6m$9CqA(A1@cIcRGpSjp&^.o"XC73q+;,_Zl4Uh3p4-[B]icI\7!f?:;5)a/q'\!WX@'m[[s%5c9MQpABFGS;7$u'UPj%>JU2Q(pX&g*a3Zah1k\.DhF@F8.h;R!L5.S];N0k3Sg"u7bH;KQVh25Cg/7eH#u:GdL:KF'egp+0e61<\_UeC95\C2%BrXdqH!eB#_U_1BGlpac%WB@=jXkL?XP9.Z\A>c6=E_Ae,d_K,=JnQf`9p*p;VF(`4*g[sDlAXBClB?.eiPq0u3^MjcE_1"hZUpQ,sM\=gHdcE2em+&NquH-@dBR[80e,%t]],n0_k&i`Kf98hLDM)*ks6B\=349bfdLP1G;_Ga6P$@;9_NUX*BXtDgeh]+ijj0+ehECZ"D[]SrE[g1h>F9Q'?r2;YoEH!EFNB$Pl1CNCIJr_&XG%TC2%DXj2V\=*C9Z0&*:'P.8q:?>S68Cc&@Y:#7'jLQ,eI+X-;dq'LEbN/JpAS'$kLK+ET5Hhd[PT+KN2TP<9=jeHues]6A1KL(-G@OD4*HOWiA%_,NcK<`42o]lnZ=b$uU)-BDNP`EARs3gV?e?]Om@l;d&[@,uc[rHaXtjieU(M\VeR60?"Fc+SN#LsDPUS2qrqg>dej4#^k_D/QMWUZ:=s34Ws7C+V4T/*Z#_P/kqS__\$mS"$+c^5[i#^Q/m6A#[EldbbcY('Is\"c',fc^KTrC7QnZ"Y%Q%%a*h:A&io37941ppq2iU'Xf#JrWgSU;,a>S/eiD@ct.bXL5/FfJ:RMO1%amu.e_3+LYE":5rK:oc0Nurp$8K>+LC#E7/qh$(d'#c5El%429jW?*lEbKA7/6963[/aT]##"C&RqX1IMO-g6sDa]pjkD80/RO44SjI!d/;0bgO]Dni*^M7qbt(l+q?HC%=7Li^G8kMT@]1mn]P)dFP01W#f0W*,;abZ@W.k>[9jAmnWn3;FkUscRc8S,^+4I3l-%/'J#+8TdAd\j=FKAM#;1,CE"$)QCa[C8cX,F)R`kZDH9e=Y-+p(NbC!J"U/\mX8uU8Ci!@_B$Kr1cSKBj$488BVV\2[:=\+RHfW81MC=lk\@K.ERl67C09H3bnsJGa.OJ!_#.kCJ-P-=&p)sHMq$k6eH/3%d]Gq.\CfM,!sU>,oW,R2\bTU1:K,rB#KJ:k?\;"jjfGqj@QnKbV]S6)HXrWgSUNZ3%bHumml/M4*gl-lVrGnCX]Md@Deb5,7[d*tN+qtp0(k>$H[3M8_E3;iF&[IcS.kKc(G0d4E[dE\nCE:DS<'.*US:a10iD!fa5H'"f#gUCg$]_Fu[EHX]qu6\WVfMS<_.(G4-1eb>9nW-d`W@$L1U"CtYPdYQ+(+s2r#cY&X7+@H^J8daHck"SiRm`uI&#o!hN#6%Q)M4])n9I]Uc;-MH]AqC-C4e3b:0e:c&*C=f=\5Zg?FY?%cYEdgYRg,<_I^NT!ZH?kVak@LctDsZ7.=se<9bbTF1J8Hhg^]>qTIS:/GYTf?)OWGL?:h2UTBVS&.3]bc\ebojlnn8DkAdo^c0;T'cl(o,a=^DP/2L0]9eubfDRp&rt;:d'H0<\1pO6L_E(G/fY_?s*c(DIQsCMO:aaO-bQ1N=/k0q&NJTMDn![r--maLt[c!^cr)#jg3KK5F,?s$1kRE@[/67Up?$+ce#Fm0f?H58b/?]B3A$S>!Y\?&f70]JZg@IlO[,Za4>X)!:CV8aW;S$Uq2B:.^")8q7Wq*2cV$*hO84E)="(AT5n_Q=aaYec\f2LitRaj0$Xq71LDgB&1&eQS6f.TU/\qApH6Z8b.,]\8cUR/G-5?Pq%tE:&=e`F+/R%87eB#6?8bb*rGd/;:u-a*\@0TZ)ap@Ci$0]NKCL;(lc_9LedX+c_"dkP_%5SI#I);%3%2VrR+k;/tb^,"`_?H-EL9Z/[p/8BpTT2E4I*\=G-t4[$X3+'5X0gqTI_'EsG5E9sUpis0\i:s$\q`kl3Rr;"iHU8:H'/?adR8KKNj]!PeWHIQlR68+n#S`e:h$^1;\oB/i:1ni*&pcg5X.PimPe>ZBd`l@LLW8qO5Q?de&?G(M;4$3>]P:,D2O$@^J$kl]>*i$hbMWe$C?+U;PhS"8;^;Y,YaN-mk)]KV.YjD^Jneb(g9b$0'r9Dg1IVAGU<_^`A+@/T#"JLWTKoG+J_qLO"j'mZ$'T*R2S#9&;$jS"%LN_pVXed=lG!p#=7XDYWks]rZ8`(ji.'pQ)OsG>Nq=EdBTHHTh6R$r4?@qCC=L"U'Y-*P8a+=I&kjl5na,XH;G."W]!XZPPbo4um$OR6lY@$bcm;6BE<2icl7>hqDM&F:,.e4E?H:*+/LAN-P)@;`t?R!WT:FW?AgP"I5K.;O4,>ul;/(>9\WP[;lCtZ,@P3#n!B=WHf2I+/cE'4fA@470WBO;FhPK;%lWdSjU,saq/Yo.A[XBPGsP?$\mi*h/>n+bbQkmr2OHN\[-?eD`b:nSK[,*]F=&_g`?H[#gmpM8B@VP:D<85R[9\T<[WI&MTYmaeHWjFhkM.%RGm89c72+JfQD$EQ=?@1A>\nAL6?.Sm$F-k?!$,rhC`N<;7MBa1^tf?qq=XZ2..GC1X^l&QZ)&2)=^DPOba:-"s8KX)gQ,T9'm].TDr2lq;!,Yg,EGK#2;LkMO6'KIgeABOWh5njZ$4H\1M;T)2k?G-4*BiU>>K*DeA]mEi/"(_H:!d8a1Ocbb]QVa,,7Hj55/s#7[N7qZEP+L>Onf-]'L^62:0:K4NKaQ?+GPTBk.K2#f@Dt^]PuJHfm-($(kqbGUKOmu>)Y!gE7s21?D;N%Lcbk\dChW;//g6pmNDl<#l:[!T?E+sA'$2V;ee!hoOpf<2^i<1/QlDf1Qf_s#0/0Wn9lsXr!XkL]#e1JqXm9Q[X,oMe87`0Xk:jPld@6di=.fs@SKPq(5R^ocegn"5]'nFYtoP.Hd>P6:"@m+J_.*[ht5]68&J]Xc7AQf^sR3]tFQR$(S/040I'[$ABj*"-d[1dg,b.obG:OE:&75ZmR[MK*mMDYIXME\C^MD?ki\Hhm5o?DCCEZ&<'`)TI]G5P/d?Xk:_*oV-e>^%s`DnatPC^P@JU$1o0YJ5f8e@7_5+D4EYPb)gc9U99LdOU$XW0;d/^S3"Wa7;+1L3D-le9J26*H!K]5E,'8#%YjiVe8PCe0i)>L=XHT)S25pK)7[bSU8'N-PI"1cT\*btQhP7FC?_pATL;N)jmfoRP9='tkK[Por>6Ue9aE?rBKXY9LR0RVh7@_D2`FR,OR?)VCmV"nP;dA1;6,ehp1!-'@<','$73c'd++5u\#:+;m/>%iF!DlD=0?@W@KL+AFa")0:'QuXV%oJ&/e,qLcnI.-nC+:28n^PS84uV1Z=V52Y@!44W=ncHY2Gcbl6dqs9P/QTqPrf">TV(t?FcQ\4&rS_>=M):oP@4^EPmM?2o$P>-Kt";`jlNs2#-k9UMN@R!W4c01jAFfSQFqD6$=jqqlUq#1#3qVfu.(!O`R?8"c=3.=Ya_+Gpt!i60Wr%NcoSFri,km5mjDTs'36H74N^^a,Y*]l/LcENi^<3l9n[4+&Ac$K#fC?"#5Bb9(fj19@PHT``Z;onsH+6M2cX2?XD/a!2UQG)j2U;*WnGa3\WrZ1,91E$TiLre;k\9KQQS*9BE>6kbKHqPK*Gl:)l1:L9q+$]3csSd=0G0'GOOBS@X`biH'sbUd'$fk_I)DE84X$a?ajoYa;G^--*NLI_U[1Z3fNo.%`:(+G44;D\T?s-mG"gK[uRP;<6hJB&A41LA'i-f@q+-r"npp6\!G:8FHiVjR_?QmJ3'm+p4)(W:-,NhZPMG,J`hRkk^-`7>F(rAY_Mk[DA"05LY*Xr$N0PhRg.B$Pe3^`bed[qagned*#:1_V3iDo?tX^uI%[&$;"D2F*hl#!A;(^c2p/\/E-(O6n1BMmZKOGfSeK4oocaNM*'fn0LV+#d^g+K0/hY#+ABSN@br(4FQ;/!E(^`)HB6V[k#K$T!Y5p&*::Z_L#>K+IO(6A"PD]qf*%j*Opak/i_pB(Yg^C"_P6pK2NWM%VjiWkC[;1!IaH;lHB0l\Ine`9a6NIE&*o+#1LU4Br(ZM.V0DTS@6$c\_MG;g,Ce!TSGte7Xj(E*VRIrrYaEVS!G"G3g%o_!LE(P()E/#q%)JnipZH2!#i>3-a2dD2$3pZ#XG!J?(AGrV#WJ%*(+`e)ec>2hi9a#dVW7:9G.[=)rSf-.kQnDUfF-)nQ\UN/WDm,eNVLe/tsKKOe1.j1)d#<%+/?/4CVt=<:@2+%m[RA4r#s.p&D4-%-StHnr9G:DqH?C\#!ng9l[CC6<_Z7^#(&/G".\.G76ZlDt?"B[K05D+-rr=80J$`5JI/]=[86$R$a0lLL5moL'P5)]K^D;omB4Kj9e]Bk_;.k)Vi5&g9"cP+3P\p`]9miL0]:cT`Qr+Z4&d*&VIF$mNd=7OX=Oi5n%S=A"V5S(DO((7UZlh"jKdGEP_U[MW:p;\Yb/l'#:)R_0m,6[:5ijT5]VCNFQC$IMqJ#n)[PZ059(Be>cMJB#k0*e8L]LWMpZ1VU1OnQp(?Facg6qbfBL'7EAu4Wej#cI<`ksWVuZZB'=p,0D0!$CV%uDrJm4<-BTpA^RR=%UOB*c<%jBS*?$i#j%%#6P@Eta\TEIJmbEAfY$Sdkp>(ua=4XQ^T6e%YaV#eYf;r-8jlLXQ=,>Y.MoLYk0:J;s/R>q%PTaQC%M#'a@7"DMRQ,'(lMC2>7HO'Ss8K&=%9]f:[4u12Lo*Ccr0X#+2&JH5]OZ8a"OP&a:S3B[!A)4q\psG]";P-6o0iOcEaHuMp<($)O')?qeKFD,n`('oeY96AL.;>CbMF9]oSLV/3Cd-2nWVU-(g2)C3l7Nie34Spb29t0%ZmN4oq_kIPAVe094R$Afbrc-@UH.$JXWUsj@"EI##/8lN(GtR2C)-61qB>K)N7@mYkrQ`"mF^@md@`^aVBM]E'NCpk^acAm$u4aV(XbKe?PdRTcl9$Js>0#=YkB#AAne9a)[\T+]PkJOfaJ>q$CS]_CJj";Al.b,9:]Z-6XnV\2:5Rf'U2%bqASdlC"r(e,gCY,`^p%9Vb5C`[f`lsBhDgtd%PUIe.Yoi'G`?,gZ&CbItU&$^GsOWe06kEP]%ueLO\]oD-lV$JbcOj=b[d2`CsHSg$+:'D7.&GqkB7/+^bu`5oNHc-rSCFJR6U+Ig%2RQD;mU$lG6QZH-?4GN$,h5XHu)mqt1pZB_oS8GTEQ,iu@@lKg"aQKY);$2);'P=V4=ZBk@`f>c-o@]g)<(bWNF^[*Vhln5.5XA'78uf_Kd_(=BC>IOQ'-7Jkp[@S+U^9h-s69Sk?NWGSda&2Y]ZT!_dcV?1^B`1!.Y[:/HA7LNnaM>XJS(i`*:d:%-WG6Rp?chK_8s\6EH0kh?\YRn%3.pBQi(shn)O$'^]Erlk,quh(`KYPo:Q5k$fZj)/M((okMtfP@c^4$03te=YKb7\1osQL#,p_q*BI"Y=2`(s5t[tGPs?,%5?hQ(,(M9a5CE7ak2tgmls-Sl/bl5emFp'6WXBRnJ79Z*h@0o''pZhTDnl5T"3I4/+GF_%!"T.@4cA.f=VN2qHKij(a9G_FHM-QhQBk>`afh45;\]uoNsgkH=O?*AOt@eI=HEbB1!lQjIJ3$aq=?`h*I.u"$R3Q^@aBs@jBSCQTS%i6kKLM[I>bso:hq-[--5+FX&_M1=eA%Rn;#IDNp:@_TY_JTF7SlkQTMZqfT>O@F8mA3k\b,VTVq8Vbe'j"/nE2NSUDn&Zlst*hEXVD*]k>$osY,$*C"RQd+gG':$UD7CH-iY*dj?#+%HCS4%.jDsSg?4I4u`EpeY%Nup_LaiVZQZi0jshq,&=ccjU,91qp35sZ+0StUg!GOFPRj\^kr!O>QUiN4%XDSY5g^OLb*kRi6BaGUVEf55(>U`+(Ys?%aT[Lc7$mtdYa?Y6U:6d<).&$TjR@g7eQKF=Q,3^Y94mMb/h7>X.n3IEkK#gUlqKF/X*%9>'T[I(''p?V5)9:.%oG7jh\)hFBJnrqJ;?CJMOsl1q$URW?TL/hEolP>1JoQT0j[)7LpF1Of1`)`-j`+_Vr`rfu2PhduDVs-r6%?QNCGNJ0fj^qbkt2cIbg>e(J^=Z1TujXj[Te>NCLccXJ5GO*gH6Sh:\AT@r:9LV0'l(q8&^r*j7[;(HmqIM30qmUK>hoL_uF+2#]TGf]GHqAF&&5aPkLdD+;dAV5*TkVEmY>S"X5H'Snk+WfO>Q[TqfLs'6L*VY&"I4_f]eo80<3^27e]U(f[9/XE^#8;F4_2Wqd[-`o$lCZ@+3ZbIA4K-![Ocs=gfu:Nj^iZAo]k.S"QDH"`(Cl5^>,qHA[g)SXVGJqCM\80/XZBnrOqrJEdk"_O*tE";jogOJGo98A@b>P!Ldc&3N9KIb?)QOfN._.Lho5a6ufqK[6"!-*l6+Xiu+%+HOW_*9YV%)SjN2>#+92)P"jj4HgUBC#&AXnN&t7CRHZ[rH[jOr3?+H,aO:\a+J[(nW90YX]3)Q/-_1M;lLCRmnUg2]fR;>!7S&*!>^.\&GBDSuP$dQPu,]DK%mGS'p;u?5$b0r9pj@O/=RB7b*dGd?M1#AmQ<1GiM=di:f#(6)0L57^&hI-55.bPeUsaea=>PpEo%;"'B/"EJL]A5-(D=dk;*HChQ#EZT/Cic333-d2b2Y7CQBl,pP28oiNn+l^G7]@0Qp]Bcr#nGk8"C2:Jk.N&G"'J^lAK,oWjoTj6C*eT`kk&UW=`7&?o)Z*GH:A:7!<$H1h).%>FEUTn.qs-b0W]6A1>oOgR[W2MgZBiB._W?,]g=]H[_GtbZ4"hjcqiPR[B/s1'W.loa"a^_%3mmuFf%a/?*LHuu6#p$ui*g:N'VtKL3qUW7l-fD*;%0m!9Gr(Af>;^9o12u8D:*dKVb6)'g2_BZBgfBEo_44F>U0H61gO?Xq5W@9Wkn:D&YX#CcXkS>Tr>]Oh&Mb4*;0aMp+=*Li\VWfbTPa_(1C:/c(X9Tj>5HlK]7uf8XT9'eZJ/FgBHQ$_Er]UIL6+=#3kZmbYVbQh9FbRqt0\M5Z:ohE63I4Rij`X6bm">K3g%`eK3WQn@f?h,MHq,o^Js9o51uQ*I^O0P/D]'.%H-ri\ud,[D_%F+r8njLB8bk/_%G5A^H(AZg`'eKX7%1obMZa2N)pnmsd#K,W57q=CM\V<.!mX4_Ya'2]']I!5I7qYWorb%#9?Xi>MK#UQL4k*3\^Z)=[P``Zus:9bbM#s%q^nn#RNeO2%l[BZ4nWs%"jcOU69U78l)<;b=[%5$lLh=bKEP=bud,BhRn,p*^/0L65*3&Gs%gJGN,Oamer#$%FL%OGflOV2'iS;Z=1n?HJ[L4#Vn1oY#D1>VJ4MXJ/>i[cE1-@Jt]o-3?+H=TqU^`cdH<8a[I8sPTZ"p"i5?aI!rgck40@Z8Q`;'c2rC%Z*pAbOJmF5[t*UW6RiP6,EM"W7.C$MpErbZ>`0;A>l)<;b=Zh/r:og"f%,$$]Qs'ba_JVm=gM@<>hJa:'2]']9L>bqF&;[4CPZ$@^f0BsW_nVGdV%.5""+ln)^^p",Y;>hf__S%2sURFfJZPAsR%@d(r%e-5uP"H/lp<_83Q\p%>@eXLN<+3"fr:6uLA23pK.=*;E"_iO87I'0Sr[eO$DSl\Uj)#!9S.6^tkVCNFQA'"QZL_h6uR;NakuYDs[kd^1IaiJBsPk*g9jeSnk:K3J%5,XdYu#E/-iD#'GQ0I2#a)b["aX]lUk;*OA2P%'qu8>Uk^o(^Cr1XI;'G"P.3P0J'$YV/r;YLBDkiPit":C.=Ma^tu%86ur!ftDZPWjGVdHGHk[MOU)3/TB4b3HGP(b%%-^`QI54/R-Yae^;s^'HJb>#SPE2VeGW33NAQ>+NRlk>-\'8Q1A8Fd\TT5:lp'oZ$MM"RAlsV',)%s[Nc]G*1q5.YgU^)kcEPZ*9\]!Gbb+2YZ9`(6RO3[bET_hREOWq@:>ljToUdf)a[#S$ERQ>BFZE2@(J[j??Mr$Gq?oJ.Ash-nmp.KjQl&%Q@"gYK5/o/HV93.DAm.f%2\*q/]#.1dP3O9#3A\XdU6%nXut"AEi"AO'.#=bDVbfIS6EPVb`)4S%Ej+QUH5dl09l=2c^%G1,+NQ4IM_nUu-ZW'I_PMd1K+e#,*^0ie[MmSj&]oPcg#VGkg7I.C]D&c^SQYB#^%I4c;'ik'Q(A[r7"UL)W$eOF'W$%t&eREC18u_rJ0f-3auWn2#j.I"o0ojp;0!lLsTfjIXB2P29gHQn]l4PLruS/M43s]mIZsfdSA2%NLiP&HSF5a\_?P]GiqV6@jmfqB3+/`lCG"[r]h7dU+#$Z@nnjU.-/'ceJ?^[VaA%K4AGT8V!ut_l=*`al?hn&Ns^2`>8+#d,@>\\X+p3Ll(BOU^=4QXoqaFrG'k8DqW"M1mjFEB2sp`aCAnL=13"3951KN@s)WZV1Bl^=C4i73j_Zh$'I'^/6L8tG&>cHfD!pSck;/Fd:ioG*aSqs!/XFUHs%m5^4M>=-MAZ`*#e[n)k"S;NPfo!58G2&_W=6X?77M>c^%'MMGN5;C+;[T(6#?e<[K8CPA7ZO4W.&IDJ):C0UhTVe\6?2S+=AM=\\P(DKOGA-IOCn]A5a8U[Ol@sZNO,VhjfrPtPQ>s>VPm38i@spL'k[DoX9s,VMZ"p[XoY`=;Ah]RlK0"1/mZIKN&XBG#(GC@Nr]WMDS=CB-_%YK56aUemb%!;u>VTd1&9i?mJq=%mZt/hP5_`Lhnr9A1tWXH,.m0N^,>!iT/J?bmnIG\HVVL2Mg9d*b&?GbIn[hr4tpc')%JThP#ZoT\=Wk\+bd>$5^655iarj52LsL?^C-g,-00(])QBPfIeFjfrP(L(4$GPf.&YO(X3&CM@Jh:"p40=\8W/3IEf"=6P*m$k+Vt\IIcLiTdjg3\"kTp%+#:dF>WH(1*D\&\Fd".D$4A'-d>@/:1[EW"%LB9o1GdD,K3iG1^OF[eXrl]ai@t@O&IC$#Nn/$sf4)lIt"9[bj*$Oki;(^F<20+F5nlS0^6F<>n[k\=='D\#6LFC_!$$_J48NYHmNul,9-3;*u89$b;o&RRZF6*b`NbAtdBWt2K7cD.a-X([FcseGUm>.Wineb(W%HXi!o'ta1[Tu]=:`cCR@*C]4(o9RE]6E]n\g=BjY?nnoMjBTl`3pnZ!m5"0bqt[*#U0S>a(R4Fo1l]-e#(BY2,eTQ<^1D;D3leV_R:8L!m5"0bqt[*#U0S>a(R4F_bTm@K*Qcfs7l-E8nc=]7]TRl\p*Vg[MPA6b%!9Q1mH#dTqJ%YJ$0OfjY<24`irAN%hGj?T`XZF-3M_p:\XAJ@+u&`!Tc&)AfAg%KTIGb[FV0IQVX5;Z0_p#!-MPmgRIlGLM3]!9Hm$)Vl(IQ)m.G<3+(,-pOkKfd(:n`JpKges?<'`eNg[;9VaCDac(.9t^ktPsem+I\jQC4//b%\t4`lF,^iL$+DM1\@N-8U))Gm/m>),0i8B-j<"KLLba:+BC=HYG$O"jR;GpE*]Y$p4:"QORbI0&0U2GLa1G^i)\H/P#FmIVg3Y0V'[VXW+?so(gT?jqj#bn$Rk2oF,11f7NEGR^g+DO>GSfC/q^U5S.LJrVCXXO8%_W'=JoI&-P91\Zo\e&n>G3['VZu*DpZsn(t1AUB@99[N.XFV37C?Xf\^Ri4oB%*C15>5nNjRPETKpDa.jX(q(G^H1'S)cf=P5hnI@D,7(#[.TE?s.i/a"5nLG4eZ)UR"pXPR^Lu:5Q062K+8Yj1gUD*6gCXQc2PHh<*BSFTgC"-MKNYd%h>-[*g%GJ5.4hlg'Ie,7k;p`f(cM.op38$NrbETqJ%Y`iXVPJ'aiShnFMKgDpDo)5)CMRQqB=$t2JfqqK`5L<^g6O6j/iGVRD-miB"o/)q];quJG^)4&Ni3JH(+k+jLi"dV7+j\Or0YObh7.HWD+>-?&OUkj3]u`e-LKU!oB4GlfldTd36eI'X7Z)XnZ-.[&g&2+r=='8Lo-<,T5SCV\97+<[N.XF6mB[4+*VgK['?l]q!]H]^*!\Oaiqu9Za7OY/*+m/%j+%XT/gtID+>.*fi5.]II,UkCjU^ULbuhoqmKnK!Y"(@+Hi*MD4604`Kr5bfQK[=YdLlE^3hrq?6G'0_27mlJfokAPEqMHC23Uc++LN^L`4^OET;NHqQ]DkJgd,0a@HO@#I_<2&-P91)&YP]Ye@_u<`U!jNi4+r7ZFER]/JDM+Gd<`H1E5Aa29!p&4At_q=>ug/g(Fh4F-Kc=''UpVG1kgU7ObC7iN?bilj#Cds1c`/]ctJUa3Ah5nKj1S2kZ1a2dAs[;0S?Jfq/BWDf]ePq)b-nUk[Ke._%P5U=,^KPa3j7+k[F=fki5L2ART"=Z(pbR+aeeBu[31hfi_:(H%H+Gd>6HM&b[cTcI2#htBs1BFrp)+:'/!"U,',;,Lq;B(#*TB@!/\gDpDo.`&s;rr2n5H_KS$W`3^/o]^1=JKW)^+sJ3R+Fn;^&-S,d%j+!BDr7/4kD+hJB4PPWm1+^rK@ngYB_*Z%.;V)?k&g%H\O2,^CjU^Ub%C%p[H?W6"U,'G4+\SGWS"IcLQ.;<^juU@Fp()F:3LfhX/g$^SitbM7/`N;ICbc3(Y`7=LpBTI:?M(kDr/-8gCXQS8kYTQ[_4p;Kemf49G8)'GOOCnm>1VFCY(1E?/<0+4LQ7r&>esD5QC6Kr8YhYZgA$M+:*Q5c^Qk3N/`f5/mQK+,9"CX)`N"(hW)Y;fldKaPYLuEjftFD&-P9uK$_k@%hF`Vgg%9.d0R%`ZF%!G%NdmY[Nc'PCg+8`)&="-[MK4$.#KBJT#eRYi9f:.!dWDRVD@Nq)3X/cW6R9H^;>op1OZ,4]-bLG%KAdYV\I)*'6:d;$&!Q[C*EFHs'RA4K_PV#/!W&9C(68US"0NP]AN71-cQb*^'58LCYN'7ueSbl-h"P*acX/g"tSW5#+U)#>f)]56'!'6YniYM89&qpY`T'kLaq\6'P*A:7Xr*8?q`qOP.+`;WP*HPLJ'_=0o3*C."9\iiGjk^=_=RNedA)R^8H_>:q"aM/_jk2t0`a=pFmITn(+50B&M[s)GUY[nPU^>#[VaAm#gJAVKe-H:bg+Lol%AH&;7C:jY70[B?m%3k2rP=Vap0'1(dKs4Jq#u`l?#2cCC"r%Wk*u)Dr.JJ.r(=pp].0;p#t&S7BEh$"dd]3<,L;5S)e38jibAGjqAlQI`hNri;]1O*BsC6.2`&B2VWj[^NWgHa+b#U)`CfGlRdAjia"*H1PWkFuI!Lf<-.XQGVYBEC)tn3BSlFNI6((W>mAE*acO&X_QCdK*Mq,:.*L?F6ARdXtG0GaY#8,`ARFH#4hEN;t9pO,`c`mY$J+kp@.R-Mi/h[P;&5!j=u+1N$)BchS"7Y>_NgTneaCg(DiG$c_&*OHIo<*+Bk/Rj'&j*rV>WKT0Ihngpo5o*_Kq`5do\5CE5[C=F[.guH0LrYmnmYct?pmS/J8/jFjbXC&_+4H,Y'#=9-@++O4Im-Ms)(C6aOT]\$f2NEfXQ6_MY6:0U-7I?'cY+X-]fbWJQHJVCl,>`k/2&JPon)B/JNqfelC)MBE&/R,*MVg&1?IC:0DF:K_+$!PFS00l02o"DB9N-L!pkMG'X&_22n6MY"Au34F6W*T%u>DhIP@Q"Aq(*qXeLUZmhs2\T?r>m0eLgXHB'E4^l21D/J[5THFY=L9O3>84\FA'ln>8fQIBHbfe2Ye^`K`CDY`c+Gd=+ZtPT0[5G>ke#-!Jm0eLg/9BpqQ)[ib)B0XagUE5\?P#qBc^m:I4s0OQjURlRShk$)AD7Ip;)WuVJNOulo]X\=4+\R\-i!]>4$3slg*`VB5(IqGYj$'(TjM?HR+HQ!H\\kj##bl.dY?u3_C5SLO+p]BH042GHL5,9pr-nV@OhK!O6nUkr7;6IM?+=j)D+>-ljQ,C;V\:!gbI/W$U23_*;IF>9lI@Dn*C16ilbpc]3B0!_/R)74%Q/jZ^rr&t9he?]pk]7]JQmTNU.&mFJKW)^,9qiek@8ID"@8FEcThG_LPJ6pdABX-GOOCnm1,l-'GM6)@RN@Li"dVKE[m9SEA.icaFVqJuB+JnaS4a0(//qq>'i&qgtar.oraudF#LRrAr\n+O]K.[r9`m:"f4A6!0e&lde4FoO-D]"@6"Dbfn;SQS5]4"er$P]6DT:^gP`p=_p0O'Z7S/oA&-Vf_,A4=CC.,M:JV+UL**Dj?.b\Ldce)"@3SV-9!m8a2c6Xh]I>ri')M^ma]_4aihk;gCXQc.aU7/?G-(5fK0VB.$>p;,8jGlj-_XbSF`.i4AS,h)9rM^!bMTM;*[rC7E#ZBLk;@OJkD79&f!+`G\7MaT$CD3ml/J9cL)1cb-97crm*N%?.3*8Mu)2*Vn6QcRTZ=JfcU#Fh>GD/eFR!_P%:0(:l]63G*d"r;Yp=&EPQS4AZN\b=nCt#8@[^J*ljHhAu:.IfE6ULsYiQoK$(CQcY0k/(#dU'\;9dZi6%/r]u(kdWu$CqGW@`;b#7ugQ4@Tlr=]6E]Z3^I5nLoI1ER51UUgU>5Ga[.@AXeMS"#?!ME-Y9Hr#\<0u`M)SNDH.%FWbU1c$p4kF`Dsg5d=?7ZSVHTL"4>Dr1nm$aE$#kK]VM/1cJ"Jf(b%Z:0ZeBk_:$i\>hs(HOWe`/(Cm!/4=V)fY9Eko1^3k2t2E!BK'KS*\`/(D*4am/@T0kbO`f,EHq+'XjL^@nLY$KN*e$HKk(-3%:KsoO4=1<,*?K`qr&M$&O\$q]/@aVMp:SIA(7Z:Fu0cqL0)Du8_LPH8.#VdLij2[4_>IT@e>eYX`-?LlY$>o5!mRBZ86>&TC=Rk(2044"pX/E,'c?q:+Cg02a(bm"*aTbAS=XSD/&NuqZ=FOAUfU^1mdEgB`6b3BM$]:eqQb)!RsFT.:P22H_-\:9a2EcG'@9ui?%JcrT0FuN,/f^[8P)MCT?F?@[tIMPN#KNB,,1ffi%Zrq`!!HW\2\>BD*'g@TbATHA:+=R3B7j@5U1MI6rXj44=3OVQr*MCfsBD?CQBN"qT"X=6K^[/aTeB:^:sU*_hWq@Ul65.@j7YALu:"mdUtHr2W!&SXbeAQ)\pO0hVWZ^CDuKP*CYZGildr=ob)4hI[AHZfR[]eea2\Df"Lu"QX^8^;b*=JD-WO3+i%Yg@;+0o@==LQu5CP.i]XV4WEhc-cIe`E+d-2)Tfsu1ei1HI;;l>*Dr#'jI041l[Vg%h!usB\"9(tg9bf_0Z=3rt'pkaCFo!q[PXK(q;c-EASitk;.p#XJrY58kE-+hLLJ/MBo"-SA.nO#3]2$U=D47Ked/PtHskM.thZ\Uf<_Mi.u+3RluGJq*NN'phXb3"Z-^;cC"iLCT@e57Rr)!-UDDjG;0.&Q>Q4\T1,5]'8PHs7bE#6K_HON8UsmEd"!Sp#1O*%/`W%FXu?Mpcf8U5']KRj_*",S_!,YW#fZE7uua/d(F]Qr:lTq&NhC@>4(qEcdp[u>$>+CHhYh-a^LJ&hS!,h:G3q;6]g*GR_=.H.*XY,tip:MjX(;HhZt'6sZ+p\"S?T#7@#-))?fa$L6;#1jlcM;=N[qpMMH7OS\SUH2RRI@]Z[\Hu*S9/p6e7[;-S$ng*nf"grb?Y9jVLppkGo!W6`",3#k["2](^n)'m$R3)-<+Sb_u(_JkWEahI=6P=s4Z,Xps#9e!iB$gD#aM5pil&VeCE*#TFMr$+EUr.P]+CS_44HEnGUGZelM#$b)d2t<^^`TU9T@N'UC=$E8oJBe'\RcE)!$CGJp),n,(:po4j!Zj#/gFf<<]oj&ADLHDH@A//\jCpm@CI&NhC@lL!ohY?kOAbe4TXNZ>$pV1iP;7uS9N[S?PMf!B!b5[m;qRQ#0A[r:/WcAn9TX\G9Cb\okU77K`RSQZmdK#\l%o0Y$EiJT_F)&S1"]6C#c91q*bp[="D3&i$n@\W'%@K8B=>2_f!*")@`?6786e2-]81S1Y61lZm(F`eE[7q0WJs8MoAf[uSa\#`N+:.",D[Z'-![fD?fNrbEgbn55MqF(;\2mm*`6,;3^eEu"("CJg7mbL52^o6GA'a/c,U!f;Fd4/_]*^<,`;92I^kMrUDTf3,#S.XQi4>(dh4=4++m.]CeQUE^Hj3!W;5EbnE0/80^@DdhiC^g*gY$JZ8Ua2WI,c5t\nF0g5[SkbZ-m4,W3^-U2Qm*aG&o/>nF8e>?u3X%P:+bX$pQuAeLT^V(LY;qcc;65WJ;#3Jn07%n@7+>n2Z(Ra4:/4a2?\I4FF6>4OD.6tsZ\3u7cI&dsZ(eTgpP>(9qtJutX&lLMr$iBt(asK(A]k?#b7_JsrqLIf^Sr[9ZN;[8Pra.d`3(b"TRG@N*"g0Jm3prNY"bAm*ji4>U^^f#s!B0YO71eV!gqbn6PC"$D(s#@qh[5g6-d4a\a*g9C4R#U%//7#i?`X&6([?m>o47XaHM`FkBVS7JRrqT'+$]fg$IEJ_ahEBq,^Ks[aHlg%LQhpV_m(a*iZB$*&CBk*DPnQ8\Sd6AN.jMKGm95H]S=?h4s,$XLq?id-l*7F!^D\"/d_cIM9j4o;6&l[4,PL*6#Punfd\M`Hl'+1QGUui9*b^(EEmVWBDr)W5V2P9L:f1%#q[rc&0OF$PDN8E+rVM2Uq+U@WSacafjt^ODnTk&S'3QD/F/9+7"HSfqK#bgPN]hjhf[%l^rquSO)`Pbjbad>(*nChC`/8#:cCD`>B5)'ol0.>5>?ds_JpQpP(LU'cmiI2_^OSi0h0Gij^uJtmENtG[0ens%\@B&*7CLU=8,)5pUIgXr"pP9V[^/`"3^p6\N8'^SA(9&Zp%A"To][TB/on%Hr#D"pK>1IV(M`a7iBeod1?Rri>kB+/MVp4e&e`R<*'73Z0f;B]%g/9gh(/&t>=YNf;p;_*!FM72N9/uJG*\fgn%[6cb5=%Em,L4u(fCP4B6jh).k6.k`)PGcS2^O6^dH*M;jIUr+4QugVZr,"G3ROWM:InX[;+S'L2kS=+bF>N6gZqD=3pVrs8K/1_@K6L^jH@Z,nBZF6&@,=DAN\$84jb2-3FfePt4bXEWs-R\O/B=s0I,(dkR<890nAH-_'W2/\CPAJ'VO=R5]/kX(BPfFK#Uiq$=$D)mM#RHjV0p.()CS\;BK[6GnLu:!BPr=676q%^(A"jS^K#a]R!3"+)fpMV-m!AI_7;n\e++?p`1_DhsVU@s'R&DDWGYD)27.@]C#etQ'Bi+FX>0P5[Q2gS#HIG^[m["\$4=6rR7dueD-mEn0<2)eM\27mrG4r@\Zrj5f-qddQTY9:-c%YV5.2'I,@Oc3tO,8`5JHMY$4aY+J'PD'RNRsOR_lSB(f;PVrF:*l3qX*[thTHcSeFi-,Hp$NTM70+N9;,s3Mj\;,)q/eaPn-g*GDfq5>X>jkGpob,:S07-H)$&cD7^'#A'e.W'dtEVu@ABh).O2Ji;IT:JIqhpu7Q3nEjPs")tlpDQSEkY$@q_*hSJ+anbO/^7p16Ih_p/HnT+6$>snW/EZjVA\I+XjR;#HZ7(c0T!O*VFOFu(.,F*5PWYH9;jIK6Hb)aP4@r0j4o7s@BotJ'%f&p>q4QfR:WR.ToIZCbeAMr5Are])>QqK#L(@a']\P=p4'et7r4O&r.[0dIoHGMWKp)/lN@8DV#..]?E_kq_+bIbQ<8%Jqj,E.]LX1:oZJXsNq(umCSEUH@$Rpg(R^?l<9ul<@clSg;VngceD(BHDmF3Ld[,9\`5P,-.Em%]gN;4p.K\[[iY!AOql[WKfq:nErq.6j*%q3bq+I`DGT:erK7b#Irnc&K#aqrg@D;5.h;'K%_FVUr>,6Ks"IL(J.?+VLL574#;qW/)rB89rH;4.fZ!Q(g`dUkOSI,u%m+/[Vj.0p$KV8U[b`.qJ;4BUgI;H$F0cu2epFn@)iF!mt5+9:fb_*#41`XUS47';t*GYCf-9lN4,.4""!jO:Y@fA^^pg:S&@E.WeHQ^cTGNX%Db#Q8"If1#-H:eVfK>pTV%5hr`&A[iume6tdQmm*D6e?8?fNnYLe>QA+l/?hIEk](A0_8J']`aCQ6ja8f");=Ei5(4om[RB]@UanP1BSND:2K.7MnFRdSGM;t_r_[<2[E/kc$G[LI#"YUSn6hHG9iE-HC2.HpPCY8pM9Sf+Ad.1.8%^X[F<9.sR(A@NGB\stC(9Z:(QMuj930;>4dl-)PB*V^[L+.i85Ufc,*s\&+geVqV[Ot7mCb>WS_d4n/Y$F&Np%A!YDq_"/4l.X].t&>*KsD8Qf2Q8j,;`$J"IoWUo9\<\c*$PY(i\d=HkI1a`N&[fZ$G$X[&e?F_7`pFEeb`2cthrVL%F:.3#7*>TtZ!,fUq8_S7O(@q7sEXWYDlFV8='Mh4l[f/)PfHd(jJ,DRLZ@4srgUD+S8+lDO$MTGhoU;5C-9/aD#VCYK`)PG_4s"40S7OajqCgChK#SRC>CtbTBqpE[#'7nb\qYt,cE6_kEW]F$\WL!s>e-`6Rc3#FQamh?%K;_V%J+PJ52EJ.q-aKSEZO2Og%d.an`")V6(Xca&Ua(-/3O(()es?dn_fV;[%SUeX@,0oo*U%'Dr.?9^.iqC?]A63J#Q]a/sp(b`_TT9=$I@BCXGaY2$q/TC[Ce/BPOh:9d"2^P*L4&,Qj&0-/d3co?CFg)AjA5$B1f'+$FSRejqfhpjJ_tpK+2R!0-(mc4e#1Tsh.Zs$"HJIt&F7-&4%4R4pMP)o1Q.X]IY"jqDW'6N949n_iRS6/-'_c\=-m.Y;u^[jaX.F;K:.X!3pu`dnI/T/\ImPI#L=aPK`DB/QZ'[*Rp8*"@-ND_`f6J"qd+s(D$SE`%UeSo"W#HA"Ea(b+$A(ge;Cm0)$78773e\1Va#CiH=0SmhI`lO5Wf^@jlX@XKe#&I,o.G*BTK^K%Q3e,,;^IZocJZ8e^i-eCJg`XGj.!"j.@VkUqfaIallgqqtH#/[((T-rD*C0"iOnW?IV4>+Qo=Z7=+7G+`s%*fs@D1]b#/M)@E.p+JZ!^bbP^j7^LH,L4F#hX?a`u)YE[_5fCG;(@BcDpp#Xm!@]TO3!(-a&eR*r+T:;h[5ILT1J8Z;Df6=$'ufksN5p$(9X3a76-t>;Y>K[p]HU@tm2&F2rtH9)$S?tN`)PGi"ci[/;]]Msc66\PJJ39kqk_##57JF0ZUhoCrL]ohW#>H_I6-6C@TJQ'p>JEj#6g=)Xj/_bh(3;ES&*rB3bJErJD]7?!N[<8@j2$55Bj.@VkUbOS-*clDfhg^cPhDWV(J)Zf(X@#hN.A/OK/%"F>TJS;4n_9Tr-m1-;XP3;gYm^Xp_*ULX[ilpYG3;W*(s^qVTEuB5ZOGKX\LE36/TLnQ9,fCooN.2Q'uj`YA$,sSJjI:aS!0U<TmM;,1P2Z&VH#]).S0oSJ8jAbc&%7M]%XrI46tPG.lUmLh0Q)8-U+oD:P^m\T3)8%L']/,2t>jEs9X)^]07HQ'5D']Cm9O!j(eEZTe_6M_S]#$j`g295SMd?.PGR>#hWTeCE"Q,\B*Hm.#eMkErBj!JX'D=ALNQgrRED\N*1o`'XrP03ij29S_qOI0WCT*QDS#N+%XQSQ9VtX7sV2j*jdjTb'/<3`@!dMr"h#qNJ@/tQI*qA7qFo+(C"KrOh<)ou#UO[RWpu]#/08aDVYuibLn2!/fldrtun^GkO*2)XF=$+Lp:n["1ZX.d5ld?Mgic1HJD1T*FHWd8(aR']):_5`A+s'CkRYN8GkF5])SeIHs^b]iA3F$Je*!k0?""uY(fYGj)g8?r=jDQH>&hnQ)Bt;(?^s=PZ?J17cW+]#,:AmY`!">e_*m;eoRV[0hK:&Y0QG`CFH->,lo<.,:6V$2,9"SAJ$f,OJ\c_X;4T8L#7(RNAR.L<*lGEi]c`0tn/1IPh:B?RZjoNOD5)c@gJ_r/;)X",-MTe?oQS2I]2S%!*_(N8g0?sC?pCinWWG,ObiRo[U.i.%laYPfY)E)@7hkkQ.o\>.I"r+)'<^:\"s2f9(#W5'lULC=kGm2(Gi_P>SWP'2i9#ca/3H+A;Ci##Rb9Nh_VM[s/4KY&2YfR_L5-RinC2P\QIqo>3XoJD^hLo7ep\Y]gY/Ctp1M]>BD1EQ%p)hLae.V2HY-Hl'1?&_7!,7$Ti5&_%qS8_3klia1iH5shDn"I%4$33'!gH@H]bYZ6EPV'0birdYYNECmmK\iVf:Y>+WhA.;#p'lb*f","VaIpWoHZ"?kM+Jt[i#RAq^4nr^&`aH*dSR(k:O/pJk[gk?<"D1]Uj'[n/e44cNKRW_(/_YCEV05!ZFPLC3-6C@T6&#l?NMD!]&"ecHMoR@\4T8J5cG^N$=m5S&(IW\eaZk6I7jn[+IeXHh5leU5"F0,F\`W%1(g42lMW(fHf5b>EGL6J+BE]$YEsLYb2TV)mZC4e(Z?ECDG?r5c2DYjK`'Xn-!:/)*cDN.Ur;Dg6q1HA.M,lArI4BR'%slB7ipL)O^Z>='cm!^.9VkHPnJIL0n*8so;g%d*kl8R1N=;^j<&NQ9!t[\R!71S\N(0e.D1$I%f/p*]t"F4Qh,-N@El9FmTIWbB4^_e0"@AK&ARM%^%I5i"]KZ*D1GA4h[90ens%P(q"FW[3qMj4N+YR*0J4:.6318s$lKbH7>c(amA/'Rf#TB1OdWK(hF*'n>\1c_V'.mGR%1beocM%iu7p9!:or.Q$NA4:BN#;&r:L.'Y^*RRLe6FN-OBb/\tok`8'[@8oQTQMZW-Y$jn=J/>1#Pp8Bfp0_iPC/$^Gk&\kNT_:AP,)KUl&@.Q#fQtTsp0E#H1oQ(.[VXVKGWnMN7.@]g`=n;,rkIOuCZFN>UB:`\S0(F+t=`[GYCf-NSlNg;,e>#Qq2p!nWVWEH7C[HfG5.gVY9emQh)A%Hu%iNZ2_%ZBhto=5!DU,42Ks)q+'Ukm*X.*a'm7tU1+ePj$Mt`20>RGi+XT@AnG_a0Pg:=;Ub@tCJaJ%`tXh=&NhD;dT656(a%:JpoKgd/^?,B>LCe?r_KI'>?kNEqNC@SHP"aQ']NTC(9gs$Xt^(F&T6-/OLU$lP't'WG(1kXAJA[U4gjGLBnq7;e[J$r%hLb^NN%M7shuG,%fK;5:.4H1/*"U0),u,;$;rbU@[7/3u)`ni@_hjGg&Y_:<1-u/Qukh`&\2GF6i^IFBSpm\UAf24GgSHieb]*g38.h`/#.p&Np%1/Xib!"&ElV(c1MTTI2^9G&.qALm0<>a.+>ubXVesMbfjf>Um]+O&]-^O,4H!/h8/kI.3*Xj>g.c&+'2ZYQ;PB;7U]!Drn@2F0D`qi;p#P2S.Ols28K2s)M04dL?s:IN-htf3Vr6O5%7d1#mP>N#$3[WR\:[CK@!/J*0h6?EHrB[Xo$P&g[f)T8pV\fi=G90D+oRi04/N2b0j+*LZGT:blfmhY=\Rs\7dhO+Co2d#$^N^fK-`p6jI,*5d3qqtO!H`:trNF*d9^CDF:iPt-SiKI@/6k;i?pNYV?j:*g*q2n,SkWFsLJb'Of,1#[73ASYL<&pYg*KB?+!5TJF*9H&C>$Hj/.>/Fm\M*Pd?<5-9I_k5*TDg3m-IOX@%TUtCugL%:?hG\bEjGuLhJJfc4eC@#5'T!$fuI*1<0mENfMVS/*PZr373;-PQW$XOB&QAi%ZsO[Si1,R4iU^B[t&';WUN"&Z;<:!#TU'S+/S@P'RT&=0>^QrRl>'hWoAN>sj6E6^M-8E2dB+6&D:S4)OsjakR)[)H*_C\_(-.Jrc)#<;_!RdVbD+VC(o@J5>?!:]`8?2W(%t8Jr?`*=@bEV/F?!K4j>@("If5c$UN/pA=cTe\Y78d*/Db0N?fZ#^[)5"nED>W9-^/H`W_+pn\Vr;sL8m=.Z/,EA52E]!`#D`Wg`O#j\6mi[Yh7h.ZrnB@D->hYcd5MjX<5`$k$haPp_*/M.a:T+[^Bb$gpAR4e._msqa[==ghFn"_h6`#bpTD:6:%-r`X#jG/c5`5P,4Zg1B&@kt;V:E\cI4'=/<^&4'.\ZSnFJ/Tgrg(NB`%e"3dhoP0_&7rXGTXRO,9jCQ$PQ![_W#_lPS4W^UoP^bL'UZAkc-(=#Y$P!6?#ZR^[!.^-_YVLDb1C8'W0.7qS17`OFUqn#5-jfPKC7*Ck:!S3"$&Q[PJlI3ASC3*Y2%@L'AHg`7\^>Ae!Y76?S!&U]h-V..I)IA\:3jkGm%;`;14\p+D[b8E6Vmd>E69",g+?Zn7`[/adI*tEsSc9;&WVco'`EHaUqTF1e&g39rE3cOJ#1-RBlp-9;90D3%bK'O\F)S/4O;&ZIhm(ppfugl't/"!4(cVTW!]Th@oYS[(a'/n'%"_USauKOrqQdZJR.NEa,d3q,ZM-d(U\0''bj&ar.r4_aO1^;0MiP#*aE*(PD+h^'GrsRC`Q-!9382[f+o,M#H0")OZIRi20@g\p&$grlL84BahN+R:=]CFL+`E$0ChBFGOD,lA:WO((_h/n5-OCAjA2)Y/_Jmk-jH^EnNdhdkKarR`$FkTp*0od?Zr%,ekoehU=-D*<8miT<,=+c+,&hNiN!:o5$1,Q.Qr$<\p@A0dki*rO;5TA@`8%El,Mbb^[mDa>23u"$/<4\/V'3ukC)<8Xb.?ng[emfTG>gl4L7>>K3b[$)DLK*?ma\^NQOXQ\@J]GU/V4aAR_\<>s21#1g$Ns5U,DW`"B!Ka;ktHEm?hB?PE7)#l0IUN#KTQ,q8!dNa^q"UV#o[n)2fB@ZmgC/bYt%#t:7>`\HQmK:C[:2mn(O7fa#.V^NOek9NnJb7*1Uk,G3=Lu^hds_:L[i$4FR=$Mc\SOp9a:M1%^V2:>nRC]D!6g!u1Pf3aql4[JUnb!<0RLNMCOOnpF^9B-A(P;l$KXq&X1.CfoIQ.IG&n;3J0q,e%G0=J8Q(T!b:UV!iSdIn5t7CMGXM;M5dkIDEPXpH5Wl:OLt8S!jpIS57$`tc.l'a_:]VlUFMEkEg!;rV(HPcGW$IapYV;(3eL@$=3p&-#62_TIhiCOYl\E8qXO@3/MX/W"`i&L$=jM]a_@5'Mdkc,Z-!#ALo)!/L5)F,H<"on,.[rY`)PG_2]`2lT9FgACE9MG,GT]0U\=`PiXOXYe//Q@5]n$q.p&n/K^$65luV%PIi)q?PWO-^:rsJ=ZV9MsmEm%pakWEX@uDg3-@q=6G4VOI3Bs_>tm2j6Xt*1KWcd#ElCMk6F?T5eHX_"W=)OVpU1p?e]blWKt:%j\jZ&rf>8%/3*0EXi"JUGc\\_Q$ti-mDFIFBka;`-s3&:b0q1.AqPXfb2Rcun\#s'*P.=^UD,_0UaJ%lKAistbZ5nT%`nfc."f@!74!aJ2e%']<=pi!fb,L2A9J=Q-MU$RH?bSl"RW\D`EK_/TFnPC_:L'%c?,,lF\\2T(.-Z3Z7a:QU<:o[@OqG^?;*9+fAB\R$\o)p$di2c;I9cJY!FQ>4X1,YrSWdZR0_$!o!l43?'q5n.S)A8e\OAu^>LkF@[r*?:'9DbUfTf)NNBo3U`Xp=`j,Jj[*adfV"jF>a:ZN9,O6(NiB6*@+iZi&5GW]$"qm,h3?"U2ML8q3MQPo%<]mI^"]Y'>i`a]1X.Rk"4-Do3l]($WeV,oSb9b$FU[`eiE6a)7E[;5lWo`V4B6fZ%UtnHM]+d]8_\`!./>17!L3qbA2#4LW'm1:LuhB0oI8*dIXitKTLX=c[["-VAF>p%[Vj,QY8.n7=5*$s1ofOQS0U1T:SV.gStK_-kErB*lbAa&i;'nLcN7RKZpi_En-CZ&IcRSrQ8TD;]e?8#mASqB/8X#CO-,VQ[u_/C$]KaWc-/TAHRT.?J,2RHHs&-ZC^krL"%MQRi`^29%k+\Tf[74*Xcpa,fFY1qEl=-a[]BkD5N?*fh'"^?dt5Hbj%%.enr\Cd:Y!oD^[9\+jOVkKaNJR($n*?GAs))NPWSWYe1oR$^KMWQ4&J=+Vn=TM5X5=")t-Fn<&4g/Y+Q(&tEpogoqt'].aL0Gsf]\Tj!7@G`6CJl>HPY>*'G`f1q9X/i^Ehc^4*-Tt!*U1R+Z@mTDbPmm2C)5T^>N5nf+DsK>s#*JC(e>_=2fF64^hCTm-m:kZs2:V2`d5Gdr!iqm/hBoV6]$Nc83rU1(+r?#/#j&(dpFFCX#e4r2HM1%>pHhta+d/1Ma*bI^Os8'0bo7Agp+ZH%MJCaerBWKq^sSI6;q8+u);<2g/+BX5Xc.@q$p)V&k](o/@l]41HC1-Vc=(XP_CWgj0,;;^6?mJSCgV8^"!4$H'2[3qqu-5MLNm?i7p91d'(/-gD$R.kpK4'V-$N9h=]WXO8TtI?-$n^)/bW._RJfJCB>3VLoPK#/oT]SLC]CIEaNQ:%&Tt'Kh,Jr`Z`r>?_?a$rhN9C`FHKGMcn\ab_ei@2d'r:oX"-Ik;,QGch#fo9>2'@r?aG5/R%"hohG3Z)q?=NhK=8TVVI4EgHZ,pftt?CYTaCC$Xt8?F?3oC0jO3C1J`elS&*:Psme>q>);l_Zi6fkt,0lKW]$\gpTqqB%SC'4f3p)'l-Q:TGJPp$V4&`Ds,N/Y?WNb(%_+akZLLtNtoa9\4#hRQqCTI_rFCX;*_/OG>_QBKY+44i;pZZr+#:13$3etG`[%\1pborTmktPY/#2BM]@O8',rL)`SKDJ?rW[-\hIo%]k&3D,u<`'BaJp\FS(ReJ=sqMYMsE;=:.cL$LE**67Uj[Qra!iJ+fFj#YB<_FIn?$"]"3WD2<+_PA'f(6?P]Al_D:QIc8t]r@t&4M@$!&R$e_9!44*d^t1EAe0&M,s4;>[mr09>$$8LS&283Qq1K@$KSra-!"t]Yrerg(UETq#V];\AtR>]^KhPa/ZN*0u+_m+>1>n+$,=*"]MmQ"]\;F5o,YlbKdNcKJ&<0f"msj9$dqNAIL?S9WVLB6WP\!Vo+.KcMm[ht[e'Tt2m=:Kdb?%M#EOmk67A(b6s]d>9G/7$&/LKg*J]qY;=[9MD:bo\jd];!,sVB!%PHmb*3"*YT-bX9]j\;e[J$r0+KPi!9bX_)%\Xepafd]"32QoJs`$;m$BI'9ssX4=27%+X2/)9Vma,n^#[ho=c@s(\.0df\dF09@^m,,,\oK#bf/g>q75dY%2;]t2@Pa_EUO*.'3hb%]o"8`P++kVHo%OD41!/i3/A_4aoRUICM.7ib#TaXXBp4IqnTRm\j;B'm6uI+OX&-'QA>tTlY(+r(]#%HjCNX`@=>>-uHedk6l]0"hH_Rr;VLq/\HloM-i4V%A\j]+`rOTQ?`>gU!fN#Tq")4JT$GAS$Q.@.)/fR2G+!b;'2#I/,OAOl612$4^-0fD^;6n$"VpM713*\[%mlaqa4!Itc\O+?GBcI#f)ST1MSmECS'-pDn"'#A)25DOj.PkdV4pV0EJq\WnIRl1%S7BN1.q!>iSed09=lfB!("g[*QT@J]FUqtD-eAsh\WeT&'^V58CtAeI390sp-5=YK7u'2H&][7d]@9/fs`1[mBt<\j/Zhnf6qN>c9Z4arC(r@(0_R4]MGo\dKl%X\'`+5^kL#Y7-/pFW!Yq-M@bk@I^OW!!o=hI1-H>3F@_\n_i]^$>.R:hXjX:RI+';Rk:!T8pTFbB,TM*TT>*hK&(Cl&p[o=K`#P(G%i-^)b&IVt%@U_WjK*1[kH5:a+X?`gj;cD(P`6ltG[[C:#N=D>4cH8KH?bVKEVk]0obY[C;/th7]I!j:4a4].q\T8`amc]J(E2!9@34'$]PPSC<8Ko8;)%_<`2^\hNZ:lnfZ*Qf[@%TWV$S6TJSQRPjKVrm9127e\]oO2`LFi8F&U9#"hc^*%R_4F9s!%;e]/;*d?u-$(UkpNlZ[X6ar'ek&KYtB;s)%>u1laaBgl5].L$s&uk(G5XJG-K$=e1b/mA<_aSk1c:Y]X(uAKA+Rb$58VXXp!KFqiN`!g49KOUAsplBg'"77.KXB>+F<>VobS?m&eQC?Sh69UWF"%`;O6u];Bk_9;_pm5eB`]qsY6c6d0[d[`lkH'T.gQLhTmlnf34@JmRcn3Ce9K9mC#MRN!2WRIcm"cN4ZM6W-Q=A^hL?q?LZY60sMikePEc\-5oB%QbD>6/0l8t^po>d5+Gk"V>DGONJiCA2UP>q"2fanY'7)_7V3F9s!%;e]/;*rf-M-91,T4s)`;C^mIBEKre,eHkDn#_jG+WLjn2icDp=-!OZB\$7YUnlp3X78pHS"lct1ATC%*5=fI>jW2)/gr'WBu"7O5]*DIhP5B,C'qfkJftHsjt$N58Cj9=&o5((d_5_u[2ebB7oLbEXSJf,u#nJPdS_$5G)80q/F*%buIp9NIW_1c3S-ern&BX;Y>,GN0[9Rlc]"ft,5/C[^\+q;26OT4IHuTR5(rGn]BFjC#Q2.K3MeB.:?pGW^8s&pUG.J.Z#@IR[\mtJ_j9hd3l8sRZP3Oj;`qG4UmOUWD4L:bDU\!*I)A<^b5KBs%!kIe^=#T]=sEh4Ydp"j]O0]Cd1,GNjEfc*9;EP57^>Aja,d3q,ZFmU_0:m3+>c\%`iA+E)sYp%1h]_9^],Jg4F$$!RRm^LNep&1p[@_=6D4TU`^d5b=:+r$9CS=98t/`JfVg:r+'-Cm"[6@]18CMLG5XJM*^:;W$isibO/"kHDHjndjg:-`*RgWd#=;bcBK^CqkT9\Ki]ZK*?gBVK-`m\;K8j:V&/VKdGA_9GU?U%0_f7rT#5.3uC^cWFo9_>=(9K7o-_NF@4/)Q%`nK.Y?RXeF:NVp./UVh"<):5j.G_II]t%EripQa0p!C')fA,o/#ucqfA;l7L5++@a+n"X$BK--Sd]=H[n;0GtFc7gJBD)%OrK1DfTG;$toa?tlb7l+X^Q%_1mjHoror?t3oqYr]:'Xh>W_+rtHMj[Qg[9'J4Lj+?$E%$Va9*&@eT([T?`d4N]c=F*$?.a41i7YsoZJq+TPU8&)]&J1DAp;#4d+93)mLi-Am,QIjCimc"@N7ApK4><^k=UBH`!%8#ftRMGpq.K]l+Dm+D]Tc89guRkXjeo1M#$4X[Y/b!S/_+VZR3-k:L&^-\,N._.j7iVndp2*05Z\.TNY*[WBbPp3SoSPCURYbD-qk>.!\8Wd2g!Zm#\=K^03`BAiSc!6$S(#(Sc/m,+e_YCOYNC=T.2C#5_^A;67lgn@poAjB>`>At&n4c)sqADj_'l[69.Hij.]aJ$COBd5/FO,&bm")9e6SB)*E97I.@k_6Cs"kj*XbKCP*8ce`o]b8;'+s3jh4p`lFJuG'c2K(4HjQ91A8j#4t'>?O^SQDs:kCsGY]"hsOio:C^%"kX_PW;d]M;U*CPr>JsnVH)LWku.R<5%,^iXkp@DZZPGXoDAok8MY&5k[I%X(B]Z7205Ss$Q[8`S#DXfdG-'M4+P+6JY%YCHIXaQ>H)Wh),7L(g`FB&O>4ZB8e2>l5jqb!S)D06bFOL1XIUlGP9((aG\g3u:m0\?%3@Zs%j"(IeSE`D`U*=`$o($?Hie9(9@b_*`O'I5>$YFIK]@&ErbH'q2t%_?o!`oSRV6L&oGp'J0B/E/54jo]Q,I0(!h@!?!rO,=;/k?@pipKpPG(hg\rscp`pgh)IRD.J_CaipVaiN3=L*'5h&e=[!o,QoFUO,JG]9<-AjH:-0BL?A_o/^B?5#FR\E1ZhCY,MO0+2[HdSL?n.[@"*FB!!b,N^g='E)\&jStkY%5@shPMR_iVh+#:B`S?7icr[>N7Ar=$)`4H+H#,G5$#(=&jCUUh7e,bVUkM.6$(4%/u!p6m)iH;7"WgeZE^'ToDm&$!hY$injMh1R\c9)O8TX]_KWLX/JU>E=XSa5ru^3Ga?Gk1i3ug/I`_iZtP=_Qhe.OY-)S'`iC>E?T8)4c<*%V4+Ca$D&mK"FisegJJRI[l_ZqBY>`hL+$KJCM*e?.)27rK!+Ba>-l[68S([1ano0I(X.bPfB;h3b%KACE`B#(+U=LJ(9"dRVRK#\&(P'FWe3Ek5W*a[c]Ld3]8NcA-VkmjnUV<.'&S69"YRLa8p9(qZfMt-@):7D#)'4Z.ikNV;:Y[!J04nT9*Q^9(#K4MB;&rqo=\',kg6+:_TB2S/#DAW'VPbY#+K?unqNKp.\GYCf-9dt=Wolj`ScL&I*Uh*K.&@%M-QSP<9`peS;bSN8kgU1'L^Be^s.Pd*GnI#j-MNb--;g>>MTL?S0j$mJs=g68XF3cJ->+5(IBe_OZ#7M[W!OD7J1Y=)TIri!?*2"O"G441\6ar'[PmlDkmDpL1U>YS$(#+k!"5Aaj9a(($e/pgBKe$jk;?$d*8H@.AY@ScfW#5[F3S;b+@DrCc4G/qI0Yhs%DN4\s?G`j0I0Xo^FSiZN`i>@VSO_X\b"Y_N<-/S[ak](@\*ae$gZ.pC#1oLO_8:(&:/fsWK5$e>-:oX"5Dl![kN%:?:&]XpgoFK[Z]lCeT]NTWIh/B-,)\AL2B'o6(X,3afgJs0do.GVI@qCQo(gBWsZ3B$k+894nP_!Ti].rotY\he-"F+@pBi-2JCN8mbSc5q&:I:@//4+HA)cL[+r/`/Urg1a98<6X(t\RW)ha.ZLKp7Gn-]AD&r#.8#!KCTHTgNF%dAU4.G$R/Ei2CF)0ZdQX*_5A2_J$"3TA87sD+b^D!*pr)apl,m6P5pBDq2QZm_4-qrUVJ)8iRmdp_Ec!X'_PEn5uab>q8l2bl@N<2KA'^.XaV^YmFaleW:s6Y!";_+nCW[[h^]2f>e#UC4P\R]KC>*m!B;"@!:]Co&,KJSj#TN@E)n3WKg/9eXa30;4bRG:a+nPGLZs,'*[;n!TroQcWdl!<6HXt7n:tpC=!M##^gj3Mb0kAiN_/jn/3XG++7S<9'@@&K#bf/g6@<3g%e-MbZhfcC3?dE<,:*h1Z*QlF*9D&7cKZCdkHD_X(Z0#A)XNa4"3:5B[QtLWMQ;f_)hUJKoQ/E'5((W1oQ.PZ>BRB/_d\!NQ7^k_pHV-pV&e(ccLu!\.[rZGgZ$u&)-));g%d*kg;(@17Z):cfi#d5'WTgJ#Wd%*;&8feR-K85i6hkd(NOpBnDC0"KUG,q"TOVHp.pHn_!6]q6#,Md2t)FV]NSo]9#Vi7-)#KhJWZPK!6D.-@9)nQc*Ba2s3P@kad\6cdm$hcYP#oiV2Hbc;gpsU`0@@*'AN[`^M35Z.pB@#tgik?B)5Y0k]fm]:Y6N%6e^@'dcgpmCW(h>EiqV7:P07ke)+L-I:8ieAO*2Ks^mLnR3<]Q.Tl(`s&q'49jAbpTEEX1g3.U+X%+9B`hnO[hk<5=pc=;I&Ct^_fh["hEcg^VnW.+%3e0ch&@I%]ol9-QZX1kP&X'_eH5YWj+SqVh)Ilt8c`RMmKcE2CHT(jcPNDQf3&qCfn@do/ngE9i"$^SA@*$1Ii[I,\I-VRi^fp^\WR.^):_.pcTKQG-k8cR0%%PO@TkTTI0.S?o$peT'YJG1oTO#^!@P3t4PdD>QF(4*J^PL@_?0:nb0HhOPTtjd$M%/TmA=h_(/Ae_4mf?@JLL+O5jMB@!KY*!@A'\M1%+hbn569flYECX!/cOTCW5S"L$=79eWT6Q6!j:=/Wo-\8>%N4sW:Rsh/BLEU#=N'TQ554GIc8uXHNZV"HTBQm572I?uh.P7E0RPVHL$[r(SROpkB1Of-^tPDT=hQH"GeAI:fSWg>3>\$6?_BJ@Tj1_.M.lu96Te0YI4>J#!6G]\W-#uc0gAVI9s?N[^eVPa"&nO:TcDXe8(U"n&;.Mj>%4T$d$;LIcHbWLend.uM]FlUjh#_X<6IMbji^Ne>IK>kZ*l8elcWE;O=`Fp0@iFPi+0MA.D#sC#)`FN?eDV]qN#)/7IZ\38m>`oR&H7+Et4_T8cg%M75C`HM,[?K&Qg)o*g\2c4=27%+X2/)9Vma,0i:fDl?Fk(i@^7-M;U*#;$diN@q$p)"HSCs,#uZnU/E=ia$`67gW%!fk)qsGOjosa@;HU)Q8j%R;$=`fp24SC`L3I/o5Sca`A*B\YrCt$Y@NaK?iOY.)7IFPMl5>IWLfuf8A2W(%2IVCZuShs)0ac,K8Y*A7GI0#p,EJ4a;Je[SZ>DKEUr;E,J[RoX9R5+G.YP<8%U!F%Y0[_E9p$WHMQ.BPM7!fOf3oN$hSrq4_i?4dSj-5WlL/IRl'jfT&P09Xa@PiT:l\HE6qaM)4hsbL:6c0r-[FdrF9E#aS4Sjm^;QaVm9oP@Wa?GlJ^=fQQF4W2+.NG"ef@`&/OIC.OnJHud_f1rK"5qo#fQjBIVcVN^NL;O,R/+P^(hR_q'-h`q,c5_Mcp8q.JI4SI-p0+k>=:mk_.-q(D$5oL7L(qR[=Q[`3[:CK9h[MOpDJ%;%ch(\B,;u@hk)d%iSg+!?D#;-p0+k>=:mk_.-q(D9B`UU^--B4#Tm%rd2uj]n_OaB";V5o,q`Nn2MQegn0L;%id<;_!jXr9]l+=S>M3l/tV@`X6]JsD@tK1k:KobB2IKZ@u&h-FcnlQ/LW%V!rNMkcmW7p4C!D;fWLo@O.8?kC%`X^#5%.ECnU$]V9G./l(1B-`@kD'$;(6rk@E9aR=i*.GAt;oPK%nQqqstPTHFGRRl"nQE,lfA+Y?E5r9LS,:t>*_X)bbX,ic.:`&2k7`Sf.-i0p6;QBm'<.K-Yj"$APbg`Loq'hD$_j!I+rO-M.1(Fh2'b0Hle?:>O3belEkX[A]@A1Ar3n`nMske&gbeCtoo&%8`/>RE>n^Q&eGVG"8$W5&ApgX*6;kTo969Vg.8d1Tn(*\4KIke`H,<)O@o<,*n_R<^V1h2n`j3Y*,IJkTET`@1PP$K2.kUm0AJH(^1-Ba:=0/'m2_aOhs#f3cY^dZTR01DX.\d>k!bi-P9_ZZ&'Kd0eP5.%F34Y.`d[GMe=+Je^gMl/O*X"HSfm!(EPKQ@8``@c6(SdF!(f"*C?b3"?<`*e;RThaF<-08k^IW7]Nuq<$=,SqXl4ipQ90p@S+4PiD"lg@?c`R;SZF1PJ!u4-*O,9jC.0Yc`_$l;3JQM75CtnE.f_M2`Pe#8me^_]8)6Xku2egqZ=Dlj*)/dLMh0o%$hQj;,LGiogXI.A5WMS:XH'=4?G4%O8VJDK,I,3juLLYig+b9t8/'K`;kAkY\`0dVaX(Z1>V6,H>p@)4gEqqV@_T8j+*$N+:NbnfC+nM[_9a=JmL;jr:.ZTrS(*FL+gne(2N7NB2Zo$`]gtdJ7F@=$FWN"FJIFj<3(Kp2d*1$,"'%/6J<0H#r_W+T@J'=+X_=qsss&>iRERKL>W`9"p;WXnbpV4Qsr!D!5!P]&g<1#d`e>`le?:]De2c?p!,eHb>\>1W7(_$Lbi2''Ps7YoZ/mP&5IM@q*TgR=f(Y%-EaM2L,jlJp:]8#>(!^D]:o"Y4OPja_ZBYp')`-qMZOdd;nL8(G?l)RmMT-'Mep%PB@]gL=J&pR[R[NZnll213S5QGQb`!J9f%$mL1DC@)r3dd=K]9eD77@oi!70+o?,$P!<$-dKX%8_ON&G>mBR9eN4ndB=p(5G4dP>IQm]`ULBKgK&iG/8)iU<$i[d;S-Q3_[O-K:nT0qgN@CpDhj8h#.O4]/CqP!#Jmrm]fB=.(d85.JJ+@OR4iUML(^Qr$emsB!P>f-e;ieX4g6S%"]S0BZMr/8ed%lh&3/LpRWWAA4=]PDG/F$M4hX+4q?-3"Fac+B#93c&'_C8)#X5iq5RVYicQF*qWA&T9p&e.8b=APcRc[OT[nVm7D\<@'bkN=`/Vf0C$Y(dC?*&`(bl'hLX3rgSjR/N^b]BZD_a:N@Ic6mg`.@t)0oM*Ugf0PG+%9.M3a,1l@2Qhe::i:&4oJ4c)@!Tp[2TW#`SWRD*aQUL4E7>JA><:!-1[5O-S/E[;0T.9FUL\gf_u8CU*EkbK+C5/%U^r&C!u=fgDlK0Dng0!n"_Z5E66gFX@HI&CTXbBNj%CRC"%]e7h::R6R+ss=^(-m$k(fUSp1Z8!i<6?pA5r/OVmh7jlSGE!:3s%\!H930+6]#I3j^6CtuZ0Z[NcZ>)Mhe.kpBLe6fCf;uVk*eCrs+fmddOBk'A+CAGKl6)h3o'M`B+\3KP6b]_,=;`HM.O.-Oi4B@(#lqm_GPGJJrI#6ubj5SE("$f?m(IY/8"(a2YDV`HaE8*;35C/Pq6X.!l;V#Y9#[3oIn5q,V,pfhp(G6gpAoGtLY`lVF@`Js.4<,q_rqmWccNjeATJ$"P.YJ'K'2rUD$6D-?d1g8X3?ag_+C.K=[jZLFP[AY8YiWZ_K:.*XhdRng:X^u#?_c1*ppOn;B"E;7#>QA[COMU3',q>\c!$k[ZOECTJPSW5^gIZpME."S61GX"4BA,WB@#3YS!/L&%LuAUP/LjBWa9#1o]/U&5>r^nn+5)lBe_OZn]G0lnT^)I4F3'rm//g&N2fn_5\9L0J0ho!>4TRii=e\4F8WD%fX#hQ'"FJhq[_i_CC,2`f@Y"$)0#k`(TfBFJ6)&A#:5,a;P7BPIEhl@k9Mi7C^57F1#B@58&(Wl+ncm9GJ$8]$8grr&W^K6BkbFoMiB?4]=jV:og\)X))DGU%t16Z8]KefXkMgG>h61iHl,A[efCP4TQ!NFO+-#R)&kMQF7@BgAl3OjnXnCDF`-`6NUP9GOub0eJ'BF#4`$MHV=2b3>r!BgKj!d4W:dRBWa;pV)2Ge&(skRj7ajk12Mj)$;)`#%:M@E2r'>\0f.W%eoA'9k4TFuBip#^*pJ95mUNN*iGW`r\94P&(L^V^5(CX]O?m"qi#*1!.^3A,;E9M"4!\RNGJq/Tt'\U+6#4SHLV%\C8ON<*0.+guipAl.c6.74:\91rB1-6]@L)Dl/Z8#^O:)F2IG_hLW\YiigdR)10sHe]<.P2L?M#p9dt?hX.Cp#HEG:&I9?'R14T3=H">s?!c>KYM;!P^TIjgh)ne@$/fm)7TkgUfeLU9p,)cpg1S3c'S2lG_JVIXkE4P-^^/!!)K1B+W')U'p?(Ol<_@2"hfD@.a_n@87(Dbo3'>qd7j5?$akM^DWZXV8st@_6dmmA3:o_dbnqjP7,A&.O1#+/V5L&/BWiKXPc.*=JU[[XcA)]I51Vo*.'B5:[P2/M5B21X4HLr\ea>+^t\RPU-o(-Do4g`'^A2D^G9c4GA"Oc-B\Pl4kMs="Wrkg>TAEoH>-S>A4.`K*orC#33tZ3;G9-:(!#D4>IEtmHM$/k]9#7QSPQQ9oV`U"/-%FKI#&-G.Rd_.El/DAue45;?`?,Oa$ql)i.ZM.?8TN,a/?eXoEb!B@hSZ2H(Xn;*Uo9H\1ti&6K.#gD#L<)p[m!.CYm[N7cS?,pSM:)F!on/?3ZI7'.3ncE57/bbHeaLM,f/MMdd#@r;Uj9`A'+08or&.g$3p^tidt36i$+h*\2?2]Mna]]_5@>DJHrF1_*PFq)F,rT:5::-/X-)q/tAJ0.;KqZB1(=^I!L8JT#)]Sol/JhAjl-UQqEh\n[R5i3IOLFLe93>'9u9(4>*>5YWs]Vkk".59j:$67IZ\38fPTVU8!J%Z(t.8hNV8I95BR@\h]l':DL_+&h6.I(RK^URS-@Z7++NnR$^Jb_.046Lu>P6]Yi0n/[#?D2frjRcf_3`i%Yg@#nb!`@Oc5pLrZ$DDi"T/_.02P-%a0*6mY5(O,9jCW?NAsPoLAu-7Vk:GYCM)6:C=1QqA=6A"o]Ri%\)cOt_-nFtMhCN=M,`E[O>-h>$2RU^WanuneWnaSATm[kX3S:6@oSpJ$_3W*H:\OkYhTFk+Wr\P:+a9E@TgbK#bf/g'A`5'h&7dM+X!8^uNV)7E7u-$Oc!N=geaD$Ic_=00!l:RN*?q!>[6`nqGf,:FZr>Gp5jmc^pljNK"D?m9;lg7B[8eQhPP[P`Vsg7\5c&!kUG"D&`0Bh]+jen1jb6Lgj]*jp65'L>'.7Kf`'!R$`aM_.046Lu:!bM37j`S=5=+k/nDg+p'pIM8u<`W!FfmgRHp1Ru3.mF9M(^HRd[m%@p]8+&D_/U(]%>4jdt]<;p;AS5Y@/cCokH+PO1m8JN=H@X*bZp"9Uho*V?o'DF6Cbii5l!_#%e>:(m1,7*[=?.AC0@f"2?r_@eOWgB'O]tX-^t48RP#IqQH!k1b#AhQM^@PnfS?i;s]XhlLm;e\B;`*0E0C?g@b79EE,)bK-$:,?0O'a($s+)E^]!a+S7,Wi'5Y"b+/J\HOA_e&&Li#R)QkU#4rb"2,$XC8..BeJa"<3Xa-B-Gg[j;H!Hkqs4k8TC?sNc>IEG6RDSNQ(KL&caJRJ[GklC18!G(0rjm6P_WfN<\sPT_oauP8o9Ci+f-GV-URjVK?16UM]!*%kX3u@2"9A;'Y[N1L$8to:^L&i/KF-N!d9ic;cn>Q?Sh2l%]79k,X&l?n8U^TNl=r=DH#=*D]i_^:Q6Y/gha.[LG^GS;C6#pUHl5Vj,..%9#B0GPMOsR.!c'sFKjIbntV4rARjK#YQ@&cS)UoKM=VgEV"4XQT-G>C)1RCdi@ek2#9M-c]_TCS]#fgf,I$9rk:rkH0#oarX^3`DrV5+4J$oCM.^O6B5ID)0A2<6>/#eFcL6qeU=/?>>$e6Gb\4WdS+b)\L#S/ZLj0DN5Co0mtM:f;l?VEdE*!Qtkmiqf2iFeY5KH*B5(HbelH>0D[hsQ@VDa!<=IaX]r8,QS.[fk-gkP=+MZl&iP19(]dO]Ri\b;V^eSt:/K78jh4H^<-5sPM#JLZ(Bt+oIeiR+g9k;EMGC;s0d]%1bO+%c-!IKYWFiX5mkS7tf"HA3V7>cCbYRA4QgSl"/lIDn1l/r-l\F].N:"=.h8h;Or+#N3)eEE)DKqJ%O$9!Y*h(GU-^1O\E&#'R&VU\(cBQ$-;XN//4-g`WMCpf,_bY]T2sJY9OmkXO"V+\(\^A]SifkMA':+!_@Zk8jpt::MC^i\aaCcUa6ZN(9l5'p(98ZHqfs2p+"/db8o.JP!TUuEn*Sgr!25%ti!7N)R4P\N=[TTqK042GX3u=Q&TZ>&?DgK'2Q)^?[$04TcU8j_tmGYt_9cTuH3`K4,mTc"rT/n:r8*t$><,0?q>qNPJZ)bLTil*>W7pV0)Wr1kq00sr8o_?h/rsUJ&6./i-aV(d^q51B'5?6[!'2ljsV%NBVMGdGV[OgOIq(#N?SufNQ0=X-iIbI1ZIX-;4W9Rb-3&%H:V]SqBpJ1lB"q4(.e]af1C,N77mM\lC2)RUgO/!.8k""U/m-&tVj,O3*W_J#paL&.osJtVT2aceBm&V>X84-n)Km/pu_?SJOKqI3A\F<:5/J0"dm9T=^YKT[WSH?jf'A:G/A70#J/-@4/$_1PbLNui^j8W_d-`ehb2nc)<'V;P-?Aofb'S.M*-gKi()"oS>nIl1l`;O*b:YL60dXT8N%(ll0KZ]!.]kP\\sU+-lP4H"am+`[->cZ@N)ddL$I):=.^sI\FACR'X(iBEo>97VBeARs&8p$@K.'?@M'3EkKM=eBUV9$I49c7ija*=`#Up=F^Dd]h8mUng\puJAkI$kP,7@srL>%aVB[658bGj`H5ZM%RB!ag_i=PFL(*l5-(`pa$9\Rn=H9Nl>]qYQWXcAn#A8jfjJa?'tHAh-@K#\MaWBVL+O3\j[ojjI:0B:87gK6_u.m@e`q4:a_08nGh`I#VLR;A8trK/UuLa4?S\nPf2^DBrY>G(=,g`HGfdipZ.RlC`:N0l>mtA(ZdCC7,@^If$h7*#naWX@2;%n:5;Z97a6N%b&\JguV6_J2'!kpq`1&]XDqn0scXn(/r28\RW5fV"d9i>??O]B3J^`Su2Pf2D\'mX[Nm^"5^3oCr@fV&@Z?c%R%hF^6,tcscP;=n*TZ>&?WZEg"/AAgU;%>BoW9f5S-5()t=,i.6o/.l(Eb-`mQt[:Z@i+a2F6?M:W'=TVM]R(]f#lIWNBoMKH_B$;&_)`CAL=h8NY<87clPlA2f@.:^q1se1*oDM/bmGR[Xgf,!e"b3qsV;onaSWV*a&Zj"R**FJK?%0,.Le8l?DH9J`s>(:!dY7T0OL+u?0^M3<4R&2qtKR&SI7shkcljn*[;51$0X)D^oTPAnmnn.\T6cPEW#TO\T7f*J0#XCkV3.$Q@L"Y!6h"P`5LrkX1PmOXB;_omTb93TZ>%THAk+b-(r9Y!"7``qtIqC_$YmJrqhh)`[EMeTZ>'j$360"jSo/r!!)Z,U.'t[*?FIqWUooTA%?X]6EHj#7c[oa@)e3I98E/<;5<2I";h]\s$$\f!<$m7q!jk7F+3l>GN[8BP<0TM%FATm8bDB&PKktV5(/SU&HDe2+D#HJ^0S0`=]\\V2/CdaSI>3'kV9:YhS+E-0k85NUIWLu#QOi)+I+m(hK7u.!E5+T$Ks4K(fmbBASl:4j2MP='*/(5!)c=3GdslXD7t8gSj%QPG:ilA$nR21p$:52=]=`>z?&4Aqb+(J5JH?!->dto#0'OD?0sD)ShnMt%]-AOFj\>pY!!(B.Rl>6i"9`sqH>_WS?1(tG2:,i@),-Vag!.e/jia!2-NX8J!9h_of<QZN't*!;&O$GdpYNCu2fb0)N]koGC[1Z*CQU,Y(9ladi\;!!&Z6p?pc&mHn2\=KuYnY0!5-\c[6e/:aCdT\R)!A%?(L!!&>'Pq,oC(G;44A&_fdG0-:Jq>tsObanLshe1&oA`UppE[Lng!!)5NkKfbZC=GeR<+7>_0nCAJF(a=?FUEgH5!E<@6i[2e!<)NRdjK0GCMW7eX]rPdoh+XodKS!-@.#jffW]\pl>gMIMG)&'LN%K`aIBB$K4_s6]1>r;?A3\J"uD!!!GQZY.T&1h^98Da/UBCq4VlA>$uYX=7;XAGc)fjj!o-!!"\cgf3?0SN=H2pJ1-u//.5%0ON+q3C=&@SiqG]:':Os!&,nGQS3Q+G-4rPik9^5jNb^GJK=pbV0DCbH1U1;ElS.[!7E$g:S5pr-VsI&foI1;.X*M2#4rb".Bd'ko(;Rm3fj=A!7EGj8P(dTeoYkMQp6)7gppN$cspI\/6K-lf%(W&gAh3R8C)\Yn0'bNQuoK0VbZ^<^R%#&$NYP^b`iGL.Ptkf7.)T+!!!#p=gDRpPESqI>.#D7H6d\eQ2pOoQm6TjE=.D/a,V0\-NX8J!13mD0epDV^3T>44`fbEgpre8cspIDo^:Ns:S'Zj5CShY&HDe2^f3iu9WV9sRZ!*Ib*=L=cGdGI*Wr_N2rt&?!!&b+J,_\l3*;kNd!p$I8S=^:_!Jj2GlRgEJ/6#>_sQgW!WrNH5CP/-/nPF^(mlSW!:E4U1$P].%[qp?clJ!WW3#Qo)9jh_%j)N2s#Fg9k_XcGe"X*Wu!82rt&?!!!XWoB+<$^])BQ,3'iQdX`GA1P4GI2g4Oi\J"uD!!(5tnF1C$>MCK!R_3n86LJ+&"6_Hn,8Mh4TN!C\;]Yo=!0A](n)'`tF692cMdF)C8O.TOX?dh<8B8eL8A0Ge\,*WQ0?O;;0;IbhGL>8nM#4?GeicspH9o^:NsGOF7r.1ZCY!([JrVbSO*DUG2tbEjmDcG`2&*Wr_K2rt&?!!)k)ldi0U11Ve>]_M0cfB(;s'S.;-ZN)rG!<<*R-BB32g9YGa\8c2rM1aIG83Sih;^"@]4;3a'iZMb[MtT0!&R!*C@&Dr.!JI:l]t02_:!]Cojj(iP+?^c-G-'J%!2,=jM\jin3c!:t3^M/-MG@2ob+]Oc]qCRVguhN7!!!eOM\e%4/6P;h?cJ$B6[sO@^OIn\7L&&)Vb\HZ+kG5qSN:n>qt@/Il'MgF>QINjG4"#Zq>'P&pHti03cWR3Mb[`'.`4=1!!!#IaOR=mJ,fKArr)^93cld`4^`0f`f9ESmcDWYa!=+YoGErTM2@'!%M%IViT_N4l&/;GF=O%!)V-nR!!&ZJ7un_YhS&fnC"$D'IP#arno4-Y`I\7$B$6Jl3]^I4>iZ-9$r!0GA&`bJ!J%f^MY3X]CQTGeCi7"T"_hJV!-kr45FaEfMS_WJN#4rb"194HXUAme=s?G3*3]QNO@]sMASTZ?VDm+=&\n@j;GZI/Msr:i"un!5P01f[bmGVT/SPk!>\C=T?7X]nk9ANIBL.?=B4Uskl#ZN:+,?l=WPL5m00b*4QCOrei9hOT#*FQl^"_]9^:ba!j8L$;m(M:8@ukK]V[HhQeO.VW_aace(u8sF#BZDAG@"9L_E"k[`\^)f4KegtIZS4Q:D#46WWPUY>ZpuT\c[;4Bks6ngWH"52p6ofJZS3io?eW3Ec`R0O&:3VH9$31'VAT6qaWQq%r?b1>NmR4E*QQ?eN+$Qc'UP=DR_h&%"daCnhqXk42.eM];#Hm-cT73M3R'J;2O%fXt4`8]D8WFcNkf>So^FAIfpMMd:+eZ)WhN#D$Llj=O]4Ep3uIT*&D'.-C$;P],$K7f)?$T551j[q"`M2Ccqp!&gVhrrI_!s/Nd4?Q0%bEa_AA&aI?c^niBQtdBdnEc\.pR&Ve(UJ,]?[LVVO%%j*u/SN=/\Z!p\ie'jMhV4DT"mbO,A.i"9uQT"_$nG;fnY2mfp1S;Fq*Gk]No`GC,aI4ueZa4_P;PeR'fYMK#HRAYdSXc56doj"hZ%%?AFReOdIqHurRC]=tXW#=0X&lKNp?_&2mHs?0?E7*YDRtsJ>GX4q/`YsYZ)4#Q1jtkA%iBGV*c')]OXX5+JcuNS3"Y`"]6E^ajN-lgn%\2D_PBbekgZNNPQ1[`=:Fh73[cCikK]W=-^&4$>s05jFtAmdrpJ5WpPp7UEc7@^csQD+bEkG=o&T)dX3I(jUQR?A`iofG1j/*5Z*CS0qsV:`P*0_=]%*QG&#qn'5bC5bn:7sD\%hq=/%H!Y87Z6Vq8TXI__bqOoB&cI:[TJV(VP-2KHUnk1VF5,%FmWF:62Bj\om>mg=h_Vh7nH33[NI&F)u-DTRit;X.ql8If9+_HH]bh7]*Y2feQ1dr;#sVZ\%h@>drS$a/fmphcmQ^ka2UmD=Pbo^be=)l%ZJicMD=BhH,k?G)Z:MiWqN\HS.D3q\p-69P;K!+^c^A9[=g.4p$\j?f%OZPeUKIXYN.H&JSukIGZs\.YYGS1#"ghnI@$/K5Q2qn#(2hE7gRf2;B#8cmr/i';XJhNAI"P+`$2$q@7u7?'NCm6Q=M`j/c\-`#\T;E_Vi;TP@TPkk?1dUCT<$>PHZpqW0k(8e6MlO1pt*N.fLgHF>/pGBJf^ibD5MQnLn^KqXBDk4\M:*bX\.]DgdS/V]jA-`)86%KqsTeB,rP\_aV4'pmbbdOl;JLNE_UV9NAcH)eZ)Ie_2N%kS0#!@e+hE0l$?%fE@'r%X^d\efj!j3LjhBtc5\;ZLZEZqT2Rn!oOo`-ZtU1T13i:r.QMM.KHRO!D'_=_/`Zd\6'"tB2H)_G6rD9i"tRcS;6sk/UZq<"!sbd.K*MpaV%GcQdA[Y;#QXo*TMA0S%/l/>a#gf=kV64n[C(/MlIA*Hs6I+sYOD2Pg\DRPDfc%&3(hD%7WiXCDrr^V!Bab<\;#I?hr3CMG.3d'_$l@M`DM2I2M8qmco-LaSI[aH`F_0A1;d,WG$I@DZ,0VV+[NFC&3a7TC/ac[t!fEe&?kgW*M5eWrr!!'ftTYKOZ2aZp`F@#fH($qq@rU!gpA4_n-70K5<`9X\ipRQ5G$X5k^uRd+RTHX+$t>u9koR$7ug8@F8QT%!Jk`At2f%8G^,NuCMaloVB*2;>&M?f(gde27+F-!M3^TLNc[H&kZ3q]?J=[)ld!%\XRe`2)Tp/r\;AggffV#'KS9GPR,)on5JH'n=!p1tf4_M&As_XQO%q--9X7k58\p91`s4^hc-gdc;>]^b^hAf#&JDt]kk_9*LOVG3P#\k$0rM\[o*)T([uq4&]OK)DabSU9.g9,IT*5s[fUMA9&3Y9mqAeB#Ue(V(/6s4$>=p.RlPq_i9Ccq8/dY7^D/[q'U-itT8Q'Fu$XV!G;58+I*:-`<@gB9GBiGk#7t[V`am^--f7?kqm(qA[+Xa,]?)XB`h#=W6`.MpDUil-lQumdAe1gQ2p;(]XPd.-@JKfKN$SahbK&ET@5O1)5+[Gdt8nO;JKG1?@,pBD_DibEOGSd@s([(B`@)ICkcu;tJ(@>.&,,l07Hoj[EO0i0p#a6f9j=kV6k7]ZB!fT,Pq8+[ae[Au5_/up(+j!:O0+Q]9VYC_SGQJ?<2`&.6nq1pQ3[dH[tpFPK0Fo=+X)CfKlgCE2?d"L:CWZm#!--u^3j(]:7^\#X7MZ_2A#KCcaUCj9*CeYfDlr4F'hcD*j9a!!%ga@A_<:;D+Nr]4\L]T^t1)DQJ-r?ReO,o@[nJMiZ50T9BQhEqp)2HbC=)2hdV,H!ZH#pM0"R-:T6064P8)d^.WGNN!$ig8m*U'cuH2@/I]mBA?=m-9np<#j$n=C"6k]TGOIRP3/!'B)kq?90`V1R;4tt8nDV9?i8A#6@J1i.TV*G$4CVN!gNMuQBB.E(HXZ=qYBsW'pP4kms!un(3W3>!)e"\._qE6I/)(-`F[Jn8HroOH40cR5SWFe]I[3kKO$P!TXVIQkC3$bNJq"gr:i!V`f02;]Q`gN)7'D/N?LZDG^4QtJ,\4gm6cp8!!%fV4dM4Wp[2V7P!u?L$7qDMH1^=Jo&eN8GAk=q$?'j$dUmd2!pPJQc^n^hOC@4kObW0'H40cR5SWFe>eGFXY!RgL[^NW=GJK?0?Fb)F`q6"#UBUJkrql.>joa$N+X&"HDJkLV4Yg7Ycsm%U!2;`>je?hZcD"dl:b%_pr:#?O)>a4+nl%Shie4u?JFpbFf<;MmbrT7J!/'tH4U(ld+:@aC(1+Xu&JPr?mHr/9GnW&GKgK4(7j1E9nDM,fDPYE1AcgC"s8;JLK7h(44*M+e$hP89!.ZKE@i>+;nRGNt<6(">SXl8;2LX+fAjo4j\#">q=ECcMW)I.bEW9&DnLMq2J:=*4aQ`SF@X\f!!!"n5`\Wjf<8Pb?ba<`_hLd[OsJ`7g7"L?dC!ak)&"N"W"@/5_M&@QV?,*[@:o,LOL;ugY:VuH.*%I6&u$H!/P),4f1H^=Yj[uXOR<5`i*"BC@5@&MAIijSj%S60eXPsL)pEs!71`<(kG3g@H)UW/fj]Qg!c=Z6B;-I!/L\>7Ng,HR(+25T0D)I_;WtI>K6"DH40cR5SWFe/3u@qCd:G^W)omjIQOQ5Z,Wta]#m3CK^<-iHMm'Y.j#iT,@?bEOI)^juTIh_k$C!!%Ntcsp41oU)FLp,"-Ape/e*JdjB(\6#YW[<=,_ZFBbBa'>,(V]Up?1-)RNrGhoRWBPa;J'5rO^\.Dr9'pAYCAuemqps:&V.[ZK6SF0)#cUi&-`T(M9Gm[!fU`K,48,MQl3B4N14,Q7iA67-%.=-3,suB*q-U1J1]EZrp%C7uVug+oS#\V0J(rtdQKo<`WQ0jPM/I3KA&aIiV0D,X!!!!rTZ=?+ML'Y1k!$m\NN.+l=o"8F$Q&@]Bk2@d=8C7tgA:TOb4uOc\-)E@_&N:3^#OsgU$EP7^#KjM*dn<(qtmNG0T"eSf,0D'0DB\WTXLm+T:lOidcAet4j/DKoi*MoP-T@`a_bj.rM^_UZbu.I44rZ.(PZFEV[OlRn:VYCqD@PVFuWcWK&(BmZj\e?:jdMTjl!e!p2K=MHk=]kH!^^BRKVP:Ia*q0W$U.:&R(^.C\b<(WIfq:fPW'4h,l9e]7;O)NpimHEd/pYUJDPlUFn!!%Ntcsp3Fe&iE\U^1Re,d)JQS`$q[2K'fT[V=TL]oA(Io$3U_]2-]kB:lDkW3)u=2YjDkWU$gKN=CC*`1MHJn1WG"+Q_`HP*-,QkJ4OT>b+(7##M"#JKjW^+**(SMj>QVAL4)U:S\?66,WJ'T/mNZ?DraLjH40cR5SWFe/>6e>MLCt(=9W;kV+[-;D\[KW()>E&rA.O'[6kLj/<3iUhKJA?Qeq;rpT!P!iBmPA2B)cWVS`#LG4Q)Op0X]6P/YR7b_4Lq;lTo6cE,A`.dYc.&APG\P@(9Xn;ajI\mbR"oU:H$jL0H(b,QjqWE_\Wdc5.HI&-36kcp@+2*JZql&r0NmC[`9ABY(#$ig8m'^2eQ+`ZpiXm/-M(C&Hlc^!kSEg"%>HnG%hk"JqR(R#NNoXJM@5^o31CXf+GC56/@oi*+mb=#N+-DGYFc1mV4\N.kbg9p.cFiV'/-%guNoUPtFQ4g'la3C)403GI:LCYJ;bQ3"u!!#7ukcl\400Q0\qfT2!do!s3>'2tD[)m^gT*]T6KkhHB[n=Bb:1>Q]l#HUO?0LtF+d:H[U9BU4-@I6iD3X/*<0mJE2=W@L4[+2a./j-K[;(u>Bg@^[!!%fV4dIDdW5i_RM@k>uqsfHQf%/DBG+[rIR\CkLS\C$iIBmJB^?,tW3P=CR?\'D#3,7qNM4*S)a33Xa@T,7\[[uJ.`5a4LS@WD1`-KdTJt&ffcKr*ET6W!bf4rH:;L2T]HM)=?b'j-Y8_u:s`rH)>7"HE&&t2k(./S-1@d/24L$ih"^,^3aD3WR#eJ*+iU)r2OqkSW(9'hkW]XdVMbjWRfH-;h`T_(p"dpn8I%GS,?']c_LMj:.Bm-PhWD:]7`dWYc9T+&JVamrR.=AtTI*j8k]04Es]j7%hR#!!'rg*m51bM$#Tmpso_/R.I4O0>1$4QMRNRCokF_^@IJ>Pi'1\.X#&\u!$O1M5cQ^q.R\@3U$qrr)^\KaK\QekGL"<'ZKF!!%fV4dIDF/Dd'aiKhHjfLH7ihFOhoX?FebMA>Pa(G0=fACOVf/Un'a(+U2=iNB&8[`J\Eo#Bd<8N"%9PI53Qa@*D\l%@TdnE@?F4n``QTgEp.RYr+tT2>?P`S9XlgnR>:[1hP0PI@YTZspj`XF%#t9LOr>:S2N;B6X1BA[rIO!BgVe!$DX@(kG3g@1%>Yr;#q8=gI\admr7O32":l!!#E<*[;6\+\Y1_#7VU4iSj=riBqn>i.)jN!!!Q6HAk+bLQGf&Dr&"djQ&.+_?:`t&-+it!!",KoGE-M%jAP+s74>d\T6epnIa475`YpG!/L\>7Ng,HaK*?90eq81er(=tQ7Du5TZ7$4!(;AZCPn54Tk+f]'V5CN!.#%R!'h7^Z)6a=+c(6WT^$*A/kfeG%JkL;?2$NVSO/%Nf'rRB5M$84,Y@c6NaJHq\?G5q&p&4R8?]ErcMA.[J\3Y`OZ?4p7GOH"^3lo`,!!%N`JKAS6kckGS6D2@)kolB7%iI.@e^a?;^8)[:5-hXZ@QXIYN83.lqNc.&'tK)]P:-c%[Bm2(YjJgi0!s^5BAX<0[W^G\)8.efrO-Y#L#61X@\oo6bF0`,ju5ql*&JhXA@-8$Qm=4oi$>@P"cDdg/F$^%lZ#m''^a#%)`J\;a&]E>F+W??ME^5LKYoQAfkmG]!Z(jP,tho'e0nG:nVppdZZ"PHM6].P9s#&dsurKC23\AnZ4pTVO+Fd!!)4'kcq!mY1:0^>CL#6J;RH=Xg\WZR)mPm9g;rPqL$b=-.iN&oQ=-rnaZK7OW?)&IUYK]ic^Q-UG*92TOJ'flPE8poTru(g2naI/#sY=//4oU\4CbWudIt?FtCJF7P#i(DiEdqt>G5emhoggQO!\ISTUbm+J_#Kn[q?eu`.XX&eW\ldtcTeZ)XCp@`<,1/bD_ZI?3sf4N*cJUaN-HhZsGLC\$G3BKU:V/XYFVm#aN!q"W^(<3=:B>"Qr(2+sq>S#*KkY^5D7g38eTX[GAa?7e@5B!nM5ASg0k09B:jX!QcS2YBCk@?_.?bSX(ro]o'ZDkoO?=%09>^=&2q.@sEc!HU8P+@bDZ^*V!I=7.u5L0-%q<+B\ngmqLN#FQgcW;StXrJ&e_Q).c;b&KH!rr>J44%J3+hAcu/*-]#h)@iAKgO2";;8k+cX%TrQ99$PoOS()>HqRWLUQ"?8sFC:ER!p8PDnqLfd@EEQoSa:2]hk(=j[\:p_D!1iQ3_rhkOpNf52ul>Lon6Y.F5FmSG'PWV.@/I4J0UeM?WrWt24;#H".n;q0j72llm]1Xe%T*oFSRO$p-X^OF2eN^KJ[H1L%ToU(+M>a[?Y+sJ3p-gU;`5Q8`hNuL$\8sLlu5(+W[B:"r&!RHOcLf!"c]=P@r:oel(Ddm*"uVt)lIDp_R/K*moP!YD.d2fGGl%'sgfkEL(GB+!CAIJa:OC[n!!!E.oN5%fkZV%`,qEJiFic$FYIgph_b.lk9&Ck;M5<&f#:\FsI?Dj=LeV-qJIr8)KKkpsH,5Q.fr],p;g]$>Uq_3V2/%N>&;g"<*<^\-PES)UnhVI;;EhR@Eq6D7MpHF4@]&jW#!]=ZC[4.!%Y7ZA0tmpmFsF-aRIegIr4&T3BTF:>e+k[%NJm,W4TE\%0-CD&3u:6KbW.=?KF\'lf@8/X@UIG\\GJZ[P$iHS.j2U96Sa!.eLiO]k"Cr<.Sc9T7'4#mm;><.8I%mSh8Qq?brK/&QN5&R8kO:MND+Z:Ib4^3dC#hYSC\Oal;^T?atcEHNkE.)eRo?d:5),KPT-pK,<,jqr*Xr[q;LG*'JcJp2.Wt"o5K>NQgbBZg65Hhl^6HZLjG7>=M%M;;jb>r52g'-+\9eatCe:W)00hY?kXG@1=/6UeOUS35O.u[VZtKe>lYh`/##lHLJOopM/6Y`B>.:`f1p%r:!'iD!ZcZ&"K2]?bLd)ap!2*B@!1:fs>=!?so2$N!4>5^)$T:H5G"N92UbXB?N0EEoE><2)9%0#')d=5;LU45#8:8>>mCKG0Lj_01(d3NB<5b=V+&*3&/_\lQs+6R`.@aXP:Nd7akDf.FfU59^TW0#b+o^VkLA7%rZTp0i4F6Y`'e<>K,p**e!%%d>(r:pieQ9qPTtt6uNo"BOj,Vo0=Ke.C[u3d]A/IUnldi3(kNBl,?""N47?7HL!*C;h@g!V47$!lYSSW01^<9`Rd.`7Ij/8H=S.BLqPs$jSL8"9b`s)*/2+a3U>?oC;?bhnHdTg,BSi@fQK/U-ObO>_p\][E+/b:"mADUhZ@jNjH#=A"56O*d@)04_)KjM2@&nC>V9ANr]4\L]T_/+OWUo:6,o+3b3)E]k#4t6Sr[WTZ7$4!(;AZ)`gbS+2H<].5C1Gf`5=idr8u7nJcuMd"pXA+AKq1<"onWG$M7Fn9H>'If!KkMTsQYNQO1?W"b'0+;Oa[8llUjT]%5&%PkJ\uUrWH2pNL\"91VV#HcnkYH40cR5SWFeQMA/V?o!U>MmfLZ&\Y-0@"D[u`;*neaKMs5/R#W6*Xb:f7oA!022!$k`5L<^gA^i%HoMH!!#lha+b?KP?eZMA=F4,1$Z5Nkcl6]`/e]fu>)E/l42q*D%-D?uBh=a\)rro_?jkHUIcL?*d]WmF$Ra7UA2sDa9rRPg$]%S#h4QWEtL2'KRk@@D-80[!Hj5;Y$/amW5"@q^3u95`0l8j6W!*@4PM>DF\%FjZj%QHZ!5k^*E"I&NpW3+%;WYRJsmSn96=rOKC$rg4M2t!.$bTpi%T.VotD[l`j//"$Hhg!$I03HH`aL`5'sTcAKZ`5ngah$c?'!f[s;S9=]S1gnT=$,:$uHG4t:OhqE7gIc`@&NaSmr*hJj&m,r:E/9i^m0Eab::kVPL^a`;3>=GbV8VlRYaI:bFfD)kc\5Kl%NhhV2TRTkn1kZp6YSI#K0L&//_BnIP2PM"c%`F:&HK"YTJ.grH6S"8Umpso_4WX\Sl7j`s?unA4%W"3YI=Fj/Lu:8BF;/FRAq$o;PeTjoYX17a7f'r8+?baCMmKn%T0.D)^)E4>kV3&;!)ZEUO-N>l)HH,$1L\S1d)_MIIN^:?g*l]34O34cRkQe1Dr1K,LNa90*LS^m'e*:V)YL&p\^QnQB\\V?Hun@\c#-g8YZ\k%<&.q@G\WF/dm(S@l2E&1,I?[j^)%(jp!og957dJsm.+bG*D%-DW#f_mdh$i\VKiF#,[2$+EnC+q.u"7halo"Hp:QZ&4`9/g$bc6(bW*-4?aRp^K.#d%mRnk6CXghn0q_g5:ER5=%D'*]s4MT!jZm0Lh];m+B$Rhpm:#8V;u/cSa.]B*8Gb-*U)lrl3";S%+$P'#?+P-G11f['?5f%9kV3&;!)ZEUO#b&O@[l0X:gpijqBUI%@X2osCqlQo86sB)WE_?S@``)UWC$2GD>B1\]=W(V$#,?B`lr'*hr(t;D,SV9Mmmb3EK.2q`i5'3*[kTG-cn8L%8"s%J+rHUj,VpSVl.5''ZVW%a4f9IO6p]mZ%%RB;6"kDWh8)p-bkbU;:FZGG"%*pMGq!(J@3iQo8r-EjiH$fXpAN?WK30Tgq6e1M2TZ^&?WjBD']AN'NF)!!%ga$@4gQ`kVGg_`Q1A@J.dNf\=K'2%I9Ko&elaB8t-+^5Qjd^p__Y6=5GP<@CD:b*T8!nbmZcW-lI\C"ub4k&0+$rEJ%E<4I:m;<\:jJ'1E`;lP.%m:4Z&;2SiteRRu`WWru$]aFl6l87"t3LQQjV4.&\jg9@lkqUqg>,@[>9j0LQQ-'n5XOYoWOQ,>Yp8trggNWLj-Zqh:VtN384qR^5W9G^&nX)%B4cYAm+%18c-Vd?^;mHKg"onWGMCIboi(s:H@s=l5CmMd-c&l5(:c*+?p@%OXa[8UMa?]Nlp>s#gPu1cogX[@m@Xr8mX6=!rXH<<1.OM]f2:Cso(W5L(PIEXYKA\RNO0boPM]$Relt`Pj^H:JTX)`n;^PpS[Y7n;fq27o>/aN2Rf(3Ss>lnXDIUMA.L;WDY$`T2rdY*WlBB&B,@UGf667pk9tR<7nE]Z\7Ch^S]VjWrL#@Y]S0:&O#9e%@_-:X@Ppspi4.4#"UJmrk4'5gQ`/UBGj/'U$L2Eq&=OIR-5BpF^Mk?GIc9rUO)sF,UIgO"-@'[qBCigIW)UJLQ#Bj?:LD.-WYTci(AhdnkSa:n;r""n#GOBe=T'X?nX+%BU8+"-56S3?qr%*Kb/)11^$'H4:lr<$qt9:,ol?@[*U#3X!!#ki6'&]A1N$I3Q^&QIEOJ,]5:U3)X13I*;/)dN/`C:Rmp$["-W`M!H;%0gTH\4i1-Ce)i!L!4Ms^4B+6FhH%!22o&1cW9?^d]_W_Hc8bh'%.(hZKgR,:R+Z"[/_jb>n`N%:_b`O%j*4\M`V+"mIkWmIG%2[bG_jI6ph(-/KLqo5@o.j"[34O8!HQ5-Wp8;I$A8g"[$9^Ws<4eS3p5&dP/6a.c(dp1%]Jn/2#/AWpK2rS5$.+)F/_H7\UEjZ`%7$'_Rip`mrV!b$CNC8Eu'K/X=^6',(e_-VJAA*1_D95LbRk"Jola;I*&mHj2mD\Gm,,p&TQdc2]NT&e+`o7-f;T,u;kZ3*5o!!".!.Hp$9"*cQ7^mQSrL[5"[^XMO>;e#p^tak$s%=0BN,L6:4L0,]njMn05:'BLprG3V_L5Ut*Y:fe,e5e"=V)UpXd:8%_@qLlGZ97BjZjCe&>F!fS?@mENfEsM;K0dX=2.W#%NreWo9I$B?32%Whm";kRZUKVFmnYA7;*POJ*CX.l)2`njb[J9T#g/[K(>P?+rSUArLE`ZNjBAaF)gkP,,lU%jd>o]:Y[1?bO1RX572k>>jU?gEcpG$g,YZ(WfKU3@mEtjr1JMuT?/>X:^+[]BcT4-J+5@V^HX[9JTpm*Qq!atLPq([@s8@il0D'^ZO<*O>!!!!rTZ;jf7A"H"\2gf^_>JcJQL9o!.n#8gRiW(X1;q#F+XSO*n#$Fi!.#%R!'h6DoiV*59n[4MHu.71/LOP^KMt*R)'N)FTZ;EQm'3h##n%-iqt\&rJ0"dm!"_S*4[pP*`ei41nbr@ZZY%HSs!-k.jBt#6Nr]4\L]T_/+OWWQ8rl2cr)g"#XZUn"4F-KcmjA@h!I>.S!'h7^0`mIY,#rsef3a$\g=dT3Hs#iM#*T+7$ig8m'^.7QOWHj#*g7>&)c)kW7IR,X;Zh=S!!#7ukV3.$*^ZSB5C2tCf@TbpT76Y/l''t"$`4.#(]XPd.#-2\.fb*VU&BJqNupRj"pX56R569@8akgF'*NUi!!#7u"6o?L6\kXEl%sE?`fYZY)`CCX7"@2&s)0u4cld[^qrm6W]q5j0'Bh.N!!#k)UrOSu&eGW$W`:R[ZN*%lG3rIe64jeA+a5-M"*t@U!'h7^1!g`CB$IWj[t!o*J_Z*4<-/':GrI[kDV_nGSVU-o*WlBB&-[@goYpFbcUkCi_hn[7`m^h]$Pk9q^3oacDr8^.Mc#$H!rr<4"aUUL#TZPA$5?#AM]Pt/+$P&X$k2dun[X#@Y2$Q))sB!V!!#lha$>^4iFHM2'bqH0G9T:%5s[dH%M%adG!%t8@fQK/U-OcjIOS-g7,,.ejj!ou+sJ3tThn-H7`q9X4@"r.!!%fV4U1a//1f#md4q1CS86\lh7?Uc<;uRB?ZIM<)pi'p!!&`YO+Db*rqs=-X(uB^W8*40D4E\3cJ@a<2n<82fId&78BMr!!!!eJK=p,'-/*1AS$#Jcloq5!?sXSqQtM;iq`3/`rm7C0`V1R;4ttF&JK^C=D475pj.f,*jA#jUa2a5_Rl"j=k2mEm'-h]R-3<`U!!%NtcspGhSih;Xm-IE//9`;r5C3(lD.dLjA&f(i'/:5p`rH)>7"HB]"4=i2qk?N;b+/_2_XQO%D/=#hXB6Wi+smHb(]XPd.*uI3+:]DQA7]>;4s.gWC.t6`?(k*=S2jO96qe!P0`V1R;4ttFE;9>-GNdC>mOZdJoB+<([^I55ArPN%QlOI_!!!"n5`^KT#Rq5cG'8?2oVpW&UgI0)>,>1J#7VRsG9WmioG@Q.J1/cS?oT2lIdH.V'G_H2G9Z:9/R,[9gY;Jhfi.<,9GH\F!!!!rTZ=j@Zu+RKhqqf//CGb)G3j0eE+n.CrMNG`jNb_4JK=mn!"]<[$k,a-<0WZ5'dU`=m+J_caiUM^X&^<,IZuo1dfk%+!!#7ukV4bJIXZ`*`f/$B?+\1;Rl5-[rr%2SF"qC%`rH)>7"HB]6Si;r'GhQ%gn8:"p?gU)Hb2k5-?.uZJK=mn!"]<[$k1D@a,_5]*Gu2e#(BF%j0lX`GC&G!rr<4"aUT96_Qi#\p!HjG8?LdMA7Z.m-HcTk^[e*;?c\0!!%NtcspH'-;L)plK\64fe^/PYr!XL,F(l4[r1$[`i0,f$ig8m'^.8*%M'XFFDu2d4aXWmM-(I#@:@a#"GA5oB'W,P`\$8b98,V`6-5;`/#"G-Xs5DNr]4\L]T^D7Ut&Q?)2Nh:S*e4&[UZLVb_g?nV9H)Qo8fMgpre,csm%U!2;`>J^GU>bF_"KNugIF:;jejqt=mmeue?+lkV0V,^1m'%J1J;!.ZKE@pi!MN>q'Kmf)e=9=Y]j=.VX+?FtAt(DiF_RlAN]MqJ1q"onWG$M5/PPJkC-H[GX8oB($=+$Y3:F68F/)4;.^n(oWnU-t:u=g3Lb?@X(!!!!Q6H45a+e##j_QS2,fDVr/kC=FXR+!3UA:C:1+>fi]d+fs>>A$]c8fipH,=\od0A%iuQP,teDf$ig8m'^.8*)RjYB%LEH`Sio.aYu7R.q?iM/SXQNsrqq$H#7&)Xiq;Wh4#o=OX&fgQ[e1%#(]XPd.*uI3":cJ8(`4*'D/F-&B4n&qVl-HJ$(;3$X&`4K'[G"LEH-!"AFA6`oMab9?[d;#rk5tT=WYq"!!!"n5`^I.\9dft3AB^&\f2K#^>"'^.7O!!#lha2#dgm+Ger<%P%Q+IeTQKGH,_lC$!HKPsCtQP*XfZ[*aAJp7V+-F_adl;/Oo,0qZiWAp!!",KoN4'OrV'Z>S%r2:&8@4'q$IfgkV%9$`f+*OJ'+3?>7nVZ[AjJSSr=.V_EWR2J%>S49InJ"!!!"n5`^&?l#FSNV[0uSr[fL/cbYugj6RH4F%AsJQo#n2$ig:C;LonT#4rapSca9I!!'fdJKF+]oGE^^"*t@U!5O2;*pX%&(m1BlH40cR^k.+YlNZtuOe)Z$$ig:CJq5!/7XEGAq(n>'%B)hfn,,n3O1P8CS'#4O>rP)KgpSa`Q*8c5EOuOPVT#0VW8I,?T/_nchm2Ntm!IU]"*t@U!5O2;*pZ:Ad,T*jranrIo.O?8n55GX5>_04I@#o>'Xt2p]XdXSm(]XBnIGDD'K)pDn-J];*WlBBY[F-E\rhI6fYtgpr];VeP5gY^HE:=LCtiP2gQ8pC/=Ntm`5(n,flBntS)ta`38Wk)ERb!@kQKT5]]f[n(]XPd"Tpp=NV'!d>rr0L3]Q9J=7H'Sa4s1rl*5,#Z#,!Z3LF0`EVWoj/=>72p;l[n_*PsW"?*D^^0799/Z+O;O,m#`XXVXS"F>Ili&12,)V8F?KoV()=K`V(:p3X3OPun"A+$[a:.ANcNWO"I^NAHV=$M"4>fC_`J$.OjV(.jZ9UjMcrEE%bhJfi-MiP/)NGI4[NIpf$_'+;eY$!?\7b'O%qi/75inf2L_eI#0d5PY:"q;Bq@fQK/((Bh;2q!s4T/h;:e^Z6AG$jZT3.]O2$t!RU@j@?[>V;Zn='p8PRaU-[nb"]!H[#:<$9P]^_%g99IQ*of3C+,Yo)"u:]##qM,e)7pkLT"eePh=DMj@6jD:^>qc:S4\O."*gcAiBp>_@iHE1`$QZ)t-6SJq2#R4r:AoOTTm\"aSn*4`USg,/7`-/#U!N#X[*3ZT,$L2nO#L)uffcsm%U!2;`>FX+TanbH[=]KEk`H"UQL'*M'W0)F_HD6a%c%O.)f?`#TB=K9`\;;9SYV'uiS)*C$.Fm75sSVW>$EcuK3[s-K:kleKSl%@SM1O(>_$>tD&lHue#&ZXEW;a5#mDXF(l*Js&92ZsmQ1b*$;Uo@9?7jf*cQ_V1=Eu"CcNj5psLE;ogcsm%U!2;`>FX+Ta0a57`[t")lOeCjDOV)@KGV]mj!c'YapAj(%^Zos\8*B'1"a=[biQ]+T4WmI6$mpg:>SkAW.>XGEsX](u9Q1sT)LgN0MHH\E%>f`OEJJ-%h1Cs-1/:\cD!!!Q6HE8(M;ie-$50B'>T;UE!u"n6_MKLKpS\rs2m$2Vou9WfpWa:c9<-9k;Xs]cBt#(@ZK892fd7JlFh"!7;H])-*u3CD5L?p.G1p@_*Pu+Q;^<0Id=m(I7'&i+6YEZ!!#lha1@Bsof++?EF<\T"6[&AX8GM,SK+2X'e,P0pNNF(7K&*Zf4.NLBhF"^\Y=2fo$i@[TjX4FYFL!UW\'dJT),9M&,-M3KhJZ#/VpB9_c_]?E=qiO?Cci;/bPLQ4,]G<`Zni/XOBIrfc1VTeVY7$e>['b0,kk"!r;enKYOOAjTY8n!!%NQ"$P4pFK&o&sA!CR=Bub'GZ5&N=u;LSiSMi*sZWc'qf$(G%V`O8W9XY)_;GHc&_[STfE>SY0g'3h;@[HQABX/%q03]fmC+^cis[Vmh8<=Q+toGPQrW4JbGc3Tg=['DF8.A]jG);tdE@TE.1[!!$EC5`^%44m4Ue8dl.M'6j(,HQ@=kG0@;L"YLaSXl8]DMscC0nT]&(]XPd"Tpp=%HoNu7A"H">[?0q$-reHqlO)69D5Fq*RJ9r!!!cCoN4&F`s=DAOSHljK%Q=*"-69o"A##:U^AkmIiDm82[s@GGH]Z:oPo2.\#/=@0l*LTZ7$4!%\uNZ#5r@*`&7ZQh%VjZ"`'nmB"[U"Z'6RkgWCl*`jmo[=j#0HPi8ZoJl:&m=4;;3jehoHb4%?<\(Su7S=0RYq,o="onX2_*F'(_lWMjrq&SHN0u-p.:Zu\bKiW7<3JulDO8fS.(VtTU*Im):e?S!!dF-]rEjFrS'O'3<'j2W8,euJ]_-,4`EIbBbbSHF0H!!'fdJKF-3=mL'g:AlU:Jc/(+gDn\>H&'Q(X#Ki]X4dM(;6SZWIe3%!(19pc:6clarakZG_OoISL<8[+h^s?H3S6q59oW)Cr+[*34@r$HH;"YqB[,AXA'O$#m*fr!r`7WbHd)`;:panP*]aMlhdDehShD9BUY\oc5DCMR]\/5rCc8u6D(Hj*)'kKd8UFYnR.5HG@P/J%;04(@,mHJ>N0Rt'U>@\H64*$$#GFm2,/`kQ&UIKbY8]*gXTSJ<'bH7-7o1MuC+Z/Oe;=/(l%RBg.Z\Y"s%4dJ87$JJ.[Y?Y=;]64Ge%umAZqXtcik3?i"CWE;S(Wc&8HJH57BDNK$5A\=.!?qGr98jiI62#ps[t#M%!!'62TZ=WPep:T):.%Y1ajI(iOciY_bTrN"iMH-P*@%bQO@FfbKVYdf9hLT$Yn\dR?baCUq6Lr!/jDq&DHi[iGQV%#:osNFBV[gZ:-Y@>Wb1onNFc6#0ZaR;SYBA<(2ck4\*4Z6,,6ps$l`Rjh8!_BP"EbJMXJIrug\"+aTZ:Pt9i]g*<"4ET[F._XY82!ukAhhgEI:"E(bmog*msU8pHE%W/gT[9D+1iZIOqe?_]=>@KiJt=$l0Xe%;=qGU?SQHTn(d0NCi/Rhof,r=kgTK+HJ?$aY@e@&i"Dn>7LU844jrZ!*J4!$4N;ek@c&Ibc\rq5).YrKF:7:e!!!!,#(!?iB!')[a^WAp"6[bn>L]i9>F*)]K@c6(YIj?M,)FJG4tQsPaFN).o:mN\5BA+:"bR1h#_m2!!'fdJKF-3\a(t=kdUollo[bZ@V'_b5GG!'C**i3]?;;?$*BA/"'i0W#?OEDdGV:IVV9cdE62d.I.N6oq=>>3FiZ7dCYO9SW+f;ic6_>Zkl_;Nf+a'c\)7&#a!Pd@[]MQS.q]ps.6o27Z'\0M#lml\Cc\CS)_'i9d<*Q:@L@5f)n<3QQhC2C0LL5N[a(0ca&,\$3o(@$@euW$GcE--apMADeo2XZhK8&IrML'OYl8p3OncN^!4+/jE?eU0F41F[MEquEs_a%F&NsQt_fJ(fbD:j@[,9Ebs4EL;OTj=99RJtQ8$4,VID9&o>q.cl8?_X"a'`)]V`mL1FB9+;f-=`htI>p9s6!u,ahDdp)l#i&`Ll]/fAC!7j#s%h@IFL4J9U*G,U!rS_3M\o(3,pc!VHDWdn2VDLk$r'g"iS=5ha5(tkeqOVLdl(K'M,3aKd==!^uWUD>qX]W4BjY9u"jaC(YI)RYVNqEWrPZUR/LLa5B#pFuS1t6#PW79j'%OJnLQG:1@?b*JNA.07`ee"0CVMI*_$bI,hCCYBMl9LdG+h5Tf?W6:2JLY#*,-mhJpNq+:lbo+KG]DhX:7%5]_qa$5uh]p>$4(>0sqa9Ci;H8>r6bZU@Q^!o-dtW@(#V_/EQ#JcUSG8&D"42]=)WHJ$;f?i3nTg#:Q?6bN<_tL9qlO-h>d'X'&%aCeDJ4%/KPZd]ZemMhj83B22e&l*Vmn3n-@+1QF5,^hDAqi?Zt&LD#@8O)!G?+)P2g6_+nf/t'7*MOCj"q5,Kd#m5"kXA*r?p:(fkk:7)%ZoFS##5$Z@qFI(aS_!^!AuR5S*G;X`bTrin8/Tle>lR"D#;pGJ&n4(FoSd"@^/0)C.?J_.Lb;T7;ND,-KTQ43O0t]OO!fpYBkP6Ae$:.X*?\s>OB!^3&k/,FZUi>)cEU@@jt9fP^Hh_QX%*;cMko,d7IZ\dEthDPfdMl1*<1U?Gp,H?Eut5q94V3DtTE7oe,MC2/K#BUHVqmfid0LH6e@-/Qs.2U.kV7O(=?dYc%dQ%=+7:*#BNs_>8')^S';D@NH?c,(UN:`U-'N`HIShb:f\Q*e)g6'\%.3<2EsPt;g9HuLK\Thg`^W_V\n:E:pX[h&We9*f*`]Ug&G13Tn)9a:mbYBqhjeD=C=fCCDoRqkkqUm#W`g)!]7&N7a^\qn]"4S0q)emb?efsiV/@:e3>pY1];hN=[1qFh4XPgn;D=dcCEko^O&H_+K_mV7DBY9=)*8efp1uoB2m+p4r'%agNDq9;CE*]IeSZLYNG-cQ^Ik+6MYMG65np%NouT>-o,UeF_9?J/[HeUV3)iS_5^MP8<>610-hc9"3_%ibiU(Oc.TVj^Dh+N-a,s;_HW%-:l`4-CX;$[V0UW81pVQHQ@-hgt+FBXUcW4j]ZH>L=%/1+bE81:WCBLjZO.URkiak\%khe4?B0oJPW>Fh:S4%=0O$oB[W$HJ'&J>tqXtbR2_cOMHE;?:LF=u86UTh>Lj!Xm64$CciNsBH;12B?o[nP(=\QWjOAK1:>iAR,b:&C\CZAj&Kq.F/l7jH8O9,^\=;ra_pu'HHW&AYf%)Ye9(J)jMjQFd>>86c$r]L"e_RSH=eQuQH/a;RFKo;2p98]`L%WZW5gU$^S1m(mtZUYYY-W;=q3fYim]Jof/1KRX:aeJn>W]E.$V'^R=hs9Z)IEZrcn^ra@*hJ8ejcN2^*$9CRdF#4-rEt?.>!,=J9c8\ScE`gf`?Cqb@[1<$AoDU[F?X!E]9nX6F7KD*h0S8L@sJGf48,Bi'1)sJe73?oeDjI4YG.KXI40AW>.GTA7LbmgcP\H^S=sqr>[%!jZ^]ioM!/<7q8GBl14I_7ppEol61WR;mNk&f4+4B$1oiC"2dUF^jQ%ko#^?0g,?U[GjuN^@A5M.qpbf]aHRPL7fskLX=><26.-)HlG=-+$q;Qg0T46/';jSesoJkm7:JGh,Ei6P*ZO7i;%fm=n\\^O_E8+fTEdUVm>AMF4D6UGe3E!'"^[ff=M'FnE_>Xbp%Sg,'l9^_'[-;8R\=eai,H"(e2N_$_Y5^bDK;SO#T$54]d'a%lRn0PWU*SVMdQDtKS*][p#e8as:kM;VfL^J4$08=L?bp)>rmCT9$I[KkUN#:1p;W4tucV]*hVY&MgB;rG_k(eWK]#PVI-fYD$]&jh6,DV5uJ^be3`4em0?`PMrl]?RjQHW])4XPgn6E%rY:p7nWR@j+<:1F6,C06?r;r0kdqfePeAR,$+DIUW5R.FsO,as%4gr%n(Sj&A=),!)YAoYou;otg^I#4W6\AYSk@kSnYH!7K5q-uudp7)e[OB[En,K";0m`I&qLIJ4&K_ZV9P.nr`V=g8(-@WZ-pR/C_:bfXa*qtkjUOnk++HLl+:W4;i`GL3pF3JAtg,_mO75d"K'N[tcjGWc[oakF)RWqsr@XQr?FK:d^N7Ka[f&V7='\$VZ#U))7oiN/9dUT%lld?T`5/f$PGg3m@=[O`eDiOC6%N+u2BoBn7P.E#Q%?Z:6AS+J8>>U@e+b\K%e73?+7uq)J%I,ed'7(J=>aDG1Pp=\NH!>WBqm(\M[;48BlK'Vs*5D3bmCFZW%?Vm+AT:7C>>U@e+b\K%e73?+7ut]OS0eZN9oF2CAC2AUXrNDnd6#O:/MBh>/`p8(>,?e4,FrCc86B(mNsQt_fJ(fbD.H.t'0c4KG2)PF-Z5?P@!"$(^@C:PO%JN`&+;]_k+R#'.WV>k/.Mu%$gKGiKFf)WHE<+mcTPkono%?c#pFuS0[sTL:leUGI,)t9%76l4(lD[;/<7`?a4[Fp(bNK-op?:WL^c^7ecteLALJ>\2-doJQGV?&NTXVENsQt_fJ(fbD,?9n#5-UqK6g2s+iK,/*c$CSX>6`p2At"S63n_m%/!^A3pL]u8?52h64?5-E^rU]'8K'eS^=\r7I7W&&sTrME8G^%1o"<[iOqdI8KM^/R+!!9H64Uetk%LjHG&QfqQ#-H?AE'/@\,:RuT9P0DP1n'5=Kc4goUj9.*ZX7S[[HU)gN[5&a2Cg^R3(88"9Xn0O+CU03uT$kL_;dC$TqZhhqD@UZ"T4Zusa[6O?-W8%!40%pY!#"%FLE>t/3+op?:WLeU6"eqT32>hH0_SH2J\cI1EU$YOtMjQIlHlKIF;7?f;B,dV$L[/@a.5G9WT!(]flPGP52tou%N-p,W#>6r3E3$M_;#bR;1*pi'Q.0\9AWG)TWt=cQB<7*j_I*90$adU6Dnd`-[O,$UW6jtDM[-u$DDX4=7'/irqbQ-9nhe[EU/=HA71-\]tCW%njOL@D*/5BlIU(_''S&SQPr#qG[-c3I3osY\mR$`B?$bC!>R-RhK6\p*i$QEW\n4tgXkhb4D'n[WuG6(5$_6na(VAGc2-p-*-XZO@48*W5/>(RZZH$3OCVVQ`XP7fat!,%[7,`#CZ=Oqiq?gN]Tq17+I#s0*/(X8fR*CjQ+ON-h)B!#U=qKic'ttkHE8"L0d22]UJR#Z@3ouUYFeUoi*U3[P0Hlr7%93-9_#+N`u>M_E6?hdP(!.k0)KqbF/_K>81PCk5GaMjGCL$MUDXC^6=pjTFQY_&nq*:QhJ1XoUiE?#joHJS?`mjm$9bhBgbpb,r_"?\KM@8d=,%G>pmcpP+BU&CbIH^-!cb0AI20h$9Yd]KGc2/K#60_mioemT/b:?&gkZ@;dr#5EH?AuO'dMoRDLZ4-XE5-4=DLpJ$>3CR8aH.^=TRiUD6ps.pF'mR@Og#Qc7(g\RS$/g^WNIlpBtl+bUCGL3fp1h=Wbho#&VRdU(RP]>f,-..uFW;A@ZI;)`/f[ZY&2h.HPEr^*BW#d0_06PKF;]PW@mUGE2@T7\)uAjiVq7M>Y>Slu4!,;WW`D.$c.-[Wk+hMCaWf"O8Mh`BE'/JoqkV!@ga?RRf\*2`F7OpAbXiN>V@N#V/a?:AX:BlJJ!-4Kj-csKRn>iPG[-acI_Kk!NlilI7ZS_4ndgpQo^=dsVtBc/VU(4k8PLe;cJ:)Y?8I%oUuD_q5D\N>R1111T6cX61$'_4HTPCmWQ`DOc&N*.k3A6st3\DdU77j](NM`T*h$s!j[NTK!(__NT[9RpW_C]H0;JqdYWN[8GrBiE<'jI:S8.ldgAFVt:fRJq$WGAQtsLOisY?M`TQQ#Z7O^$d,0]a;L<_]AqMIVQKH=&8"b"#pFuS1t6#PkbZ#1C15^aH+&qIS[D0'i02r\g>Vi==8j-3rgm#tmheLb;=st47fsuNT'H54dN?2_C5$t(:IjNL8Mi6o^0scgf2,B\_A$*J(`>7DJ%0h'Im]S5IpY97/+coF(1$GbmU/=N\neoBKMPVh+")cd5JqJ^%%9ab4iK:R"9$np.1q:,P/4i61A=1XSM1DgHdtLKFhV1:li#XqoTW^L5nP_-A2q>_bcE%5s8fojIdP-63si)W5mVb*]".D:lbo+K\/!.@r5&')$N%!a+P!jC`)HB2Q4ZTJfN9M63n_m%/!^Ae71s6%dGblKFf)WHE7S@0r#irop?:WL^c^7ectf7;36EV9F)f[L7oZ(K6k`ia?_s9KFhV1:li"-oU(_lN8FRBZO?Gn&421MW5mV:qXj%/!l1BjHePi@j5AiL@`/PcF3.?),9uUCm:X\4V0=+aNSa[CZO?Gn&421MW5lgj^]+)qgMajoio4DL,,BeXh7NR[q0i"nGBtW'EXV.e+bUE%:lgH1Ie_lWB$HbZ/R%f+`J]'*U(=a8rr2nf3d&k4&X$?pNsQt_(km90%!hR5=maqN9:%8Zqt=m?F4$1EQS(9Z3c,sKFhT,l7l.tQBp\%mpEbSodTK]FE.@mUGE7\Lk:Y\;E.4$1'R;lAoOM"T2k7urfZ90Rk)>jk'ON^5fTKFhT,l>Zjf5QCOTA7VL2UZ8q.lh&KAWqkV/+3Kp'*t]+T`uffpSIOqhVXqfBSn4aVh%tKFgJ/69Qs*]R9N1,UC=_gDe_AG:r]G))Gm7]"4c9VWs]XaT8?\KFgJ/69QrgI/W`i[;+5A;l0st02&s(or<#l`\hM\puRiLoZi/$([<^uKFjnTNsd(Sn(oWtY$=e":e!p/hRV]3*^4u8l013:_?@Oc+k_Qq9F)f[.+I:/7RBFnYHMkXB]tLArht#nq3C@%\(fZla2Q$^SI!=Qe71fN+\&.H(FTb63ooGceu;Rq556@lo]ju-7#;O]k:L%.4XPgn@MJ*I_-tlo<=TKK;,L3*s8KXe\`A*dr:.f7'e4llLNB#qr!W1b&421MW5f&B.,;H'^2%Y*O+6iJ`HJb3jbfh.j6G0qohL0RKR-;t+iGeYA"2XGs7t!fTgKuD)`DNZ3u;+2p?^J8Y-*!:gsJ1qU'9g:+bUE%:lfI_T7?jN?+Y8KMA5%DaDuo7Y?hA;#6tD9E@uHaKR-;t+iGeY@iOS-n%XXjq=s_i]m<]I>\o]rNuiRmHB'"-KSHr(#op?:WLf(+k[R>4Z["F"KQn`+Gi"'+\1M;`+Mp(MB\+NLLW.K=h#U.,7e776`&,rd;E*!Yj)Hsh#Fft>%0;'@"63o:Qp"0Inp$1)c_1S;KS2P*CW$o=m+dSfC'1)sZ$M?BnoCL9mLPLYs]=X[pEC0,!aIhhR\'Npfrohb)H7)$15WpHI&7Q@=EPCSIn%NSm\8fWR-#_YQWHTuUs3n/Y^Z*4j5C<)tmmMslW5jQ&6B"5ocG)JfoVcflb*=GV\psaohRS`_n^C8uTkiAhBu>)MX;U:X+bUE%:lk2skdV6O9"b0"lRuSWcoW%Q"E]a3Zh$[/IAD'2`$EiB63n`(TcWAecCR2bl06m,A]oT&o:L?l6;0.ard5LuQ^!^K]b;R/TcOk6#Vc\Z38a8r`udB)488!gkMQ==\)+Y,F8Z%7mpTX5eZ2dOhuEX^]lP>dTH4b5#Vc\Z3.J2\q/S[o,9QIJku/ZGT91?gapV-H;`ARIUfU/VJpL)r+iGeY@k6WjX&lR2Z&6C_rqL!ojN7,hp59_?eg2i@NW&bKUXott55a<^:0b&5KsS+,eZ)XBcAPM[#pFs=LO*cjXBW0Z_8/ETaM7]I>L/m($Pb.uB?qV>'-l3J0OR/N@`@cj\^S!(>P,"&-;U3qd6"O`%eZ2#6ASL;a4A7+5Q0[/lO/,]EcO3jrk'Y1K5tpMJ5De"Ha[hJ\tr#a\om>)hPh)=r;,`_;lXC0d22]UJR#RMAIpP\@K.A''838jR2GBWD]S5O!!\Y)UUlT>$?n(2:.D-"r&Odk[4AdQei#aBW/t)&42=B4glhp$lL8frEXq\rVc]jm#V(cdA'3;>[6>3)Cmdeie6/K(20YeKFgJ/69VaudaQ[)WY>lPDV_lgs894[$'MC[gMai``C@d^)8f72US=LTcETW%4XPgn@MJ+4oai/cY5%3_50F"3?bLc^GE*rl>ePHk>e+lEk?%HSq<=GUJVJJE#U.,7e71!P5!IiQTAYDEj52_0f'&YOdDA-Jq9Rp2H_Ui5mHkWOS!KA;GBO-+l7jH8&>N'_Xar_9pnLTT3ee_1MSI?H\[`.i3qU^g4*merZ:/SGXJ_tor!rr*H-)3qHKS:ITcOk6#Vc\ZfG`DMCR=%%7A7j=.ooo^B[P"i0D/)%j:"hU4:)<#O_0uUe!i1.U3BK=([<^uKFjnTO*0WphgY1kpQq*N@LR#Z%hCmGk0+osr1S=X,_n[X/ml?Jg"BN`!BE2%rp[f9H7)]XTcOk6#Vc\Z=Eg&_>:)O)"MVUaZY.V`lDq,\:5\*b[r1"/$k*i"1>'3_YMSLX:oMEf&42=b;3)l=>tM3HTgK&>)&6W9W)9>8SNH/.OVVtJ-l01Peu;TGJ:IWAIJNHqp!1OB8OuB+2<:^VKFgJ/@Sr3Vr_g=LCO6"'8/rfX<+B'pcVL?MA[Am$pM)7fh-"$ceI/NdLLBDg#k6*7cj=/&qCFo`lP9^=5h2A((9>hat9t2c\gh\LUKbdcd*%C)/i>_>*(f6Jfe6`O!YU-r>6fkg"ASH4?(0D^_MoM:+;DRpudsI^"%,FZ%I?5?iKI&+bmi&^4%==/hPB8#aN=/hT1U\+HAk=>FW5iD7f-LmieYdMIWiIrZrG5d+V@Jm5lHlU-Scb:o;7Wb*'crT*.JVS(MA/-;55T/c<2jQG"3cbYY4MejjMNZL-\+,i"p-+-k(r('c8.8TC2\8CWI?=!H;B\!A>@!LI_s"$Z\1I(BQlZ#t3ZA,"n'1)uP5YgPuhJMdXK_NqcGJ5k:+[5=k]tJilJ%Vlp$,=o"bEXY4^;20bpRMV3SXg-[1FJ+VQFMB-I:/[;20C?;+Qb7BQ#J70;[YrM0`;r;e?Fd(Ot3Ni="];X)P;00\giC,08abmVWEkI>,SCi$WhD-(Y:a$X[F\'8E((Y&&(2A#D"';[(6_6m:)YH-ZFMSKsY<9,Cmfc+?ETq!"cS*bVse.P2i@da]H1]7.k:ofl7jH8OK=XEH@4[r1-?=j7d`_#6Q1_L%N;rnjmN"qJ%omXUa=knjaZPa*UGOsb'S/MJE:s5kR(Nr+2&=^Tqk^c?+<;PY_cRba"1N#g9411'Q.+g/)L_\cmgl"jc[k-U3H=r2?:JMjQH^o(NkC:qt_"r3I/HL[JL``>QuQGad]Ed)`7Z60Vuh22S<%:*#H0Ym+NO-ji^X<'i#d^g:_Q7Pg#]4(bHuNkIU.h'`+/uJ:li4E14Jt*pDP?&5Y)XI[bjDC)n'%rP:tiGkoj+Mha)N$T5Qgm4fG(AP2dWD?L[379@$b+5So0mYuG]PsL!(,.it6qo=?ZHS`SfHr]87D%K#S6dMA.ZeI4usS$#TRNrH=SNo1C<'K>S&.'peiT0?aH8fi!Or)p^oflTX#G(%,1R!$u,!-d27IoL$RlOjd,dEle$7bSBMT`0bE(9NQbV$C\\Gj"58NNIr5k_@1J0?R!@M4FtNpfO@jCsp`.hq^"$?$f@Dg+ja18pHOkf^R^L8Yr+$a2LG`qNaKn\:5q(WunZ\]((ksJ&NnJGH?>W6J;(0BIMdHqd=FA[);/+IW3?n6XB#+qG,,tcH8,8>DX/)&jXH&FPXQFIkp"7J@ilXZrm[uOBA48YI#L#*4f.8JjU1U4#l,S@',&u?mCqs_CC5h3na\C$q1I&Do93GCh:lbo+KP2K0T:1Q0>eE5ml8CmWR5\W4,^rPkkcluE+iD5:'K(O.GSg%8QU';%9q''Qp/68S0E&mH']Rpj5G(-(+KmFee?Fd-17IlD0eF`Gdc2ML7d]&S7/lu8X/An8F7ePB-P1q-NPsTDW1am/Bug&PL6A3(O*uG6`Pl-p-.gGtX]d^jL!n1X(a+9e*&L\IXRYB>O*Fl!8b$79`O(V0dc3@:(?&>NKY1(?"sHa%:5e7&5J6rsr,Rc:11$cCB6oLJb>q:WpT?22>R`D*Q$TM;#\6dcDnF6(.#R+)i4U!-.S#rH:5P%D3ITmLq);Dc[N*39nA!;Pf8uK@JS.H52.U8-5s6QJ&>F`GdUNdu:V4i)T$!D#=MIVK8ekZb"/DY_i?IjW',d3Z+N:*o""FL)r\Br`4V"Jm97-tObZ2*p>]!TkJ3BB_MM&biC=fC3(>4fHF"Z_I^?m<717'H*6)A^bYuP$]pEK%0e%2qnQgt^rjQ<9[Dcn)*%diR\*(g!Oq`6c!MOP!mGIWT$_9la\bgnatG7S](1<920Y>qSH^,h.0VK/J8m$,E"cf/Roi`E]Br[VDJM\b0;0K5K3=WDZuoN5OqpQVb"fcZ(rh>TT1(hVmSgEUS#Lt:(dEcT.5Y\6=&=qa+bXMO=212:1h*o5g"Y9)Qa:)`)mcFpPjW,2Y(,!4IBfJe/,FmXk#W^11aa3D>rnCJqc-W6pCa)V%1ZV>iHF$5a_"3c56k72VdmHp_V$$=%Z<$ih1e3Y-A2r)JUF0344YLhgYBD>hm^$]Hu^V9DsPgb+*-jQENpgAN&`m2K>n33.VHJ0BJpOTu\PpqSVU*aWGZ,KqflRhn.$:MIIbk,so3o;jD0WGe2N9F)e0"4ZAt*9+cSVsOE^XH8r5(A6.olrNo:dHg@Do7+L#?[=gXC,uiHn\hOlmd[oG)&gN-q,"980jE[7F4&bX.U/bk'1)uP5lT3le:]J`N%LL+$#e@Cl%7HCkE2UuG_Yt;*aSV"$Z:NcB22bUH'F-6LD#@8O)!G?+)P2g)`D*rM1(_rH3edIIt)lCeXG-kXIk!;"sG2?A0N&[k(V,O%@n']Zus!hDaf/[;1:'kH@4[r1?u>braoh7X+>[CNBXR.O$hg.k*aY-F=t^+%N1n8eg*CB\c6]RD?H=dC&)qM5'#%>T;%7)m>Y36-mgNU08qLl"uLp_+i_Em^*BFg0jB\2m4fH+f.&TsEdR-#(XaXPrO0-2H?JV9J_*)u1Uc.rs3,l!I\k6=%'!f>*kUh7^tuuV%PHnnEUR@!9:N)V:Ie!sLosI)_n'sVM#mN&om=Y\>WS:)Ru7<\L10;[2sWiKp/UC_R5Al81OJE(emT0#%aufNq`O\b6BBB%JdYSk=NNT]l`9ANl7jH8&.R\F4bi?g.pH=DQ*c%eTi)oDs10"d=3NNR=e^#T-_H8'+"gf6Df;hX!%Cot#XsQq#o0D\6lZRA=/'pgGo]G]AB9LO]Q!R7:6&*?qMpSr&9rW8`]Ee&I[rDo%ZfGPq'^(Kcb#%j_kF9r>8);kQZI=&,eqXrAh4N/io=oc#^-!ag[`$!VnRh`@b?)(kmpK,2-9F^\7TIH"q;WVfNP58bE^P#9VmV?:^=I#MG1r%&*:=5H\a=#@ani%.(2$O&0a7V>+GT!nT/Y_Z#rUP;20k7W5n&L\4*,W6oYoI`Hfr+i[iH9Y-55WGYWEh?gR?cOULsk-?9E/&W2%`"6b>NJ$ZHNA_trSffO[D!FAEE#Ln\qG4k0mj_tZ_oF?h[n`JiYKF*CVn6@0+TOK%fq9IO23!t!'SI'?l19hRb>In>_1Ja=TYX*m`/R0YV*'`^/'Y:id%3IQAm>'HD:=QM)(lI;ti`/X[<%K,A;8$lCa#c4$>5$gAYbnO"?WnI=3rRW<&\)[GnsOM)U1J$oWgZ9lL=*QP(,HQCJg#Mbo,DBs0r_Hbm0;QOKcZusn1,beI\;`\*(8bMZ*ST>)XGo5@_O-.*?F+Dk^mq!m=:me5Mr7*_XV/8XU-M)ZW2?t+hGHa2GXGL9m2qs0M<.L#)al$U(L$+Cu8j*HD#Ri2\W/mKoE5h(`(l7jH8&.R\F4baTj$TG9CK0j9M@cFpT1$qnjO12G;LBl\p%[;oj%]=GM0T+uY\QZdCkC=9%@!cA\,YUQ;4]uI#"\O-lJ]>co)(j@0Y=%99&@HM&q@:`Zpm$/An4*qKl/Xj'Z^VY*q.L,a7.4<-]`=o`ImHs!kE")F7b3:u9JKZPTY=`2FPV8H>$?ZRHM1fAK8Dr^/r`UJ+IQ`J=A^2?Z8hQZ.5m^fPe1NgA*l:(/iNSQL\N'O>X()i*MEu-Op>MRmUk*lV5EFI.K;'>e_bcC'1D,1YCrNNWRLqkL-A2r)JUF96MPV@^Tenhtr)"F$Z$>+tCl6ma[s-SHs0E.XB=`]DgGn9)gN=PWQ/HXYi90mD/8n!A^5r`eXE]t`M+%12kL!$RgkiZ,o@/U]FF*a$@46t]uVn)a/:_[d4g82](Tu*0t?+3h"%teHf4U4`h`EB^(r34HanRG8Z>*/eq(Ft;nLtR!NGeVdVm+a9tN;)`g@I3.?0u"qduS=%./Cu:SkTh#RJ*!h^9*]U_Q5?VfD"[bCg#OB?fEJQ@-O_8nj!\`hkih(Gp.p+&O!S0Y+>C!a6(iA\bm$9#$%_#3+(H')UW%.R4Om,&[n_;;C_@,&420WCdsKCGeJrtPI%XI);]*O"*U*u"%_mknSpL`h30MKp[os>O&^Z8_[rGp8`.'WR>GSm(*S)VlEcu;LbJ3iT5?(M=FAr(:\R0Gq5a6&T?a"Af]%Jk\Jj%ua1,]rjXjK@PUqqWOKI=qaqk;1XWY9!4_q>IAJ_$5H@Q(u0$Tg)i1o!]H`2jdYC+>@],Y^70qu%76R)SJKJ,Q9PrVlKQf\6cMJ`MSC)CVcPmeV(_:s:qdLTiQ+Mc`oP>3-msPqdBT>\c,NV\>g82PHRK$H0[G-W#gDCY,L4Xa>HXn21^e:R&I-ECW7EXn?uph\*d4iV&%NT+qIJYB3q>/D:f-bfh0EGeg:-4q5MkP.2Ve0!;^(ORa2\7^Qjceh6Pk.2`(E":g3^i>UfBAsL\>QPeLA\;lkQP(SFLg=;k\`7Rc.g"njI<:*95QS$e3*QdIDa40_]l=-rlh3rEnGEA[sC]\00La2543$@Ao33#90EacL?:c]EG.q2m4uGq3Guc7Yu%[(JF;F"9(C%!M1(`/aq=bT(_\o4#^k(rFRcoE+>fmZps*9-l`p7B&1\N7_Z'eEaj\-XqLacba+B]#"J["3"[0Kk=#iIDa+P!j1lsB_3&T[<^"\QSs8+?A;4(ljGVnQq[!:3mfS]uYT)SWAlU+W2HR(?E`\VIe0FTcARuRA^h.)A2aH$MX&G[_/VVk]@f`bT[\%6GkrK4;FV^2U!4u,Sc>p1m$%g^%(Zm'I#42E4EftcX&Z#@W^V4,/dRDN353dld?S_kPVS1_fd_MYXps?&,IlM].Q9Y/LgoUk'.,1bOJa]IlD9L:mE-A0U0=?q6LBPBon.+[cG.6B<4tn`2dUEsqpid2;\#a.g!&GuL-[sLKFjjYl7jMF;:+r[:u;k-CVB/sjQtg_@-4G3Gn[eK*Po^UflBd\bE=drrP:s.p="d0eF,^e-A2r)!U;Ba4&OAs\5@ki0p>c>i&i%?d&p.sSP7EoNP(+S7hVXe78sKaQk2T?#,oS$lpO.gj-'_Nm,)g2ka1rZFf3o2*1rqU2*'dtXB1I409=EBkWA%_$aV%5503APme+b\J\hgYGShBO(*Ht]M]V1i>)W5f<^%PrG/i5#N.oR6JiG<%F)#pFuS&qBiLa1--LcC?n)WWK#N@4%qn$u6>/HAiY']_(.d0LnSc+bUCGA)kRgbEa_9[?]1W0GDrGL,F`(4^P^A.:2jkAEXXm#dHO1hnD7$q!](Q?5VK*BefGa?U?#YA/oWcOkdaN*ol>l07%j1grY\P9*c]ZpA"U\he16)\S9M>UK\BE'(urIQ5gct*,-ZWGl%'3iF'RH*FAB^XOolG+bYX^ORM)AYBM1D&:aF;+#GIo_eOVs8DD9l^\;)K]EnnM8K]A?LIG\KFgI@52aD<(ZWMpgUM5J^WK7VYt=HEL6jm4d$aa1"X/O1U*)T^IDgpR7un_A3tXdbaa*C8L6jk`$A8sW8=$c-l-f([_dd1dq5"fmLs:Gd1q]pK`=4J?HKRU#+XI)MPa"">e>QBJ$QSQ4Hl(&D0KFf*]l-lQ2=0KX@bEt"onADM@a0&[XEg%&$X:i02iFN?Lendstream endobj -36 0 obj +39 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceGray /Decode [ 0 1 ] /Filter [ /ASCII85Decode /FlateDecode ] /Height 1117 /Length 4054 /Subtype /Image /Type /XObject /Width 949 @@ -299,7 +324,7 @@ endobj stream Gb"0M0b"+:%)=Rr<(aI6cteML,KQ'STO`KV!&pd/(t1g1Bd(L'&7\n"0eL>2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_2(1KrF0rBXAdmB"-+i^l#@p4[C/]="l@S@.aVM,l96B#V%`j?:e>)4mb`0_endstream endobj -37 0 obj +40 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 668 /Length 209613 /Subtype /Image /Type /XObject /Width 2079 @@ -307,60 +332,32 @@ endobj stream Gb"-V$!9sU*s_;lp9][6,"qV\+gPXF'PT&&9L;:Y'HnW&7hN%"=j#B+/=!W:PR*t=KT(?2Ql0DsrVq!=F6Ci\og\V3n)l],chj;\m^_MPHgckZ],/z!!!"HV@Ob4Uo1,GL5(#$H]K(&C=]Ih9:%82o\^A_!.:9eXBDlCd@u/AJ.X"qq"XWc?bcU&c'sU)'*8.6z!'nrmk2ssX2/C^?;%XBP=]nmGhRl^-MZUFmttupzz'^kY[f9)2X,=[VoZ!t\I7unA?)up!6:7XIjDX,`N5!D0NNZD&?>6"X'z!'lkJr;8Qrk4niN?bCV\d;8maJFD=K[r;$/hINnS]6B-M$NL/,z!;sm0J,U<&(q*);W,]_/!D;SEclMIG'9aG(G8sSYu*Q3fSS+U:EMT@l>)TMQUh"o>o,G;glPS-eZ2c@2fB`l@RSND?=$t0k05u5o&T]Bmob5)c_#8[QCjeAaQi]"K^,8Vn+^7hWMs.uW2M-DU0G*EQ,N),48Sm^$O_=OiWVQQd&n&Po]ah"SN>0_-Z(Beg"Cq-JTRpHg=d#R0H`2/Zq)j"P?@jh@Db,AL4:r+%kR)sD7s#S?IY@dbY3lJ.VcBKL(,([>eb_nFr<>s,=dbVE8X"G1^O-^z!!!A6CY(1'5JIF6*_9P)P*-Fq)6'F-A7K,5Pa$:ep?baq*m!TqWDb8r.WhKKbaDCCiK0-4JO%S[:S41>GHP;f^2`2Q'e<JL^"p;E03GHO?G1Z,J.)hpEcQ2R"lnmt)f+$+;(AerokJpbD!B*-/+rQ,kX.g/`p;6[ksJ9D&/?6??iYV(o&L*Yrl0p:PXAZF3,p-jq"sNp9=-4,`Ns4'>.8D*[r5XQlh'<'3Y>#O/u>DEWi?\AAF(l7dA+aZ9q)V43'[_O?+Y8Z^.FM8EjenUrRA]P1M8'5UK=X*<$jFYPfr=H\MJF]d$\BYC2.X(:6upei5h$*WUQ-$;oH.FUh[X^e0d^T7eBc*Yp2c!G^Fep]Qpi*=p4m+z!!"c:If+H_kg;sn8M\GY5C[!28a2!PIOJsmp@e2ia,^,r`[O5WCpUA(5J8!mBOG[o/Pg>:%Q>,DFEHSarqPN7MA7YmY@%=sgUCGMo&\%p<)cV`3lU4Yp=jKeJUe\7J+DZW]"33qC=QY*Ia)msI/)'uEFWQkAUXVGS>E&.5I`s+TphERmFnu0hHbi'3cuop*B1],Q\NSrgbV$9m\EVIo^iicJsO""_81\;3-43jQV!fL$>=*d:k^)nSNM1\%LkX8ldi1;6U3ne`"mO_fJ,-:nhYHkoMOeYDr89%QS/2B.T4l^SWiA\C2*^]ma,f&fFVF"A)'md/Vt#cf41MKNhVM4^s*s_?qXrl$7UKM0>"V;K>O(SA4D`Y(nSK#?g_*Z'q,MkK]W^?&T7Z84X",_3/I6zzaD]%T'f0LJ'H+q)n_(_^D/F,/)k/KoSH>%p2Nrt2-amsN4ut`.T&>3ULBeRK]mD\&F3L"+PdtGQ*qo9gbEr)%qRq7M(0NRJ/WC]EB0hE(rVDB&ZZG;))%@,`/dMjA2'hS&9OF(!IJ_IL8IR"dSj%S&X/g#JAgVL%'A?B95Tg\ETWSb2$)*f'f<5(m++Ne'J&B)+p./.P7L#2Xe?3V@DdgD94MF?,R,:_mbKC+E'[\+e.Vab_Si2LQS)S'rl:T_'3\!ggsTE9DI'en7=9/FWj_PbkV$K4eu`/aC*gL9mG#*?NZ=IYSmFa#zz!.!A3GAkEU&V[rG*5R?4gkc[lFEM`0?ba?cPgs8Mscr^0n[G]9@XTW(0I1N(u-Df>+=n)'V'RaUL!B5N;*O$Z\*nDV8Rf)#:4^Q0I$/l+Q?f?Y%i!q7dG[S6VWb!U?[V6<::+]kdLC6b2m;GgQS2FB>"+?S?!S7!>faT"LX"SSXK8M$VoMDQl-b9dOLFr-0>@o:4LeV)DLMBR=h8_>?[r##?MTKq0355\8Mt_We;:n/6q"8,>35M9J"JlN[\KUmK7h(cR5:HuHWK@qc_!Fg^$1\n1YZT"U-hbdDVaEtQd]S-K*ttsG,8ZgNZI.mdTZQ>J\SraI6DoKBO"ft^juT%Y6PLT6p2Z5[L=!,J9pS?_1V+?M%_6n1c4Rclsr&*+'dauhO?HBK^t[AN/WD+YW&r<8`Jah&f)604r^m8Wc7F`]gIPbV$`caSO5_1\4I-3X"%/O8DV_.I=(fQC=FYgQ-^^)6Of6m/Ii.@cj)V4c-=LIh%_G@E(`hJ\8^WVS[ih)p?U>6HhZrRl-V^$D+!87,`JVg'/(^q0qqf#5,*hodd3CV1Gi-5`m#1!dDn74Jbb&g_KT%!;^/Lq)Cs683huXoM2FT/]PKb%>*Qu1jl-kEIU,Qc4@,8D:]6E`;o^nq!2`E\p9=3pSg9k_@bfhUh//gHb>cCVt,tjQ:HhU9Y"8K\9IdaNh!ouAXKS:E\@DT8e.OloHVbZ'_J,crogLssDe^aIKi=YVRm9;WnBbc,Is1NdR7RTY3S!t?8)RBBBkI9a'TgSHTHq^-*hOlVO:7RF%#okS-5j0Jk1JgG+K<)Z;K*s+W.F`'RU@-aCCWDGU]mKLN?/E5>1KQh2^[XBoaH.QR@:=7kL(>BO#))mIm7TsANWjdu(-b22Ndc8PbcFsRpmFS<3aoiL2KXh^cW@8SU"-+u?bUp001.="F.I)^CX\,7rH%`$h.!IXOV%bih\NdgW.4*`XXeFG;SV`,q284S#\aO(Y"(Nf%3%3)<`Z(*RCuLTIPE77Y'9^Caj/32_I%H=-P`3&iSia3#49U#02kVXAnJ)EXk7_[r1AnF:S1OimbPJk]!Hs=J_W?BzzTTm-7nRBFm&_YjjKpItu=sWfjQo/[1E&m:biVB[PQhUWA))Gl\%'Q3`G>97l\@B&iW&uppQ-D1&Bkb\])Ls(Y,Z%7^SimHe?(OcW7%6gZD*h#on&C>+m&QYmL&:W5)]BV5)&[!tB!RrZfN<9=F]u7KRl2gqHhZt#Pq(,+cf\=K2Jec%]97XBq<*VM.lo[ND;2L9a,V/B"q7/)kVi.lHri5(&F9O(hmN318F>``rW'm`]fGOM]2V6tU?B(iYZ@DSAU*A;E6_M8XDnh\r4*4pC]P1EBJ%2q'r1;EhbX%<5X1M;l6P1H^;,B>Yu";f.@+[`1:D-A>:\?Ki)2Hi.enmmS]n'Iaq<)f*@jun.h1aaZ+T>P8%i9&rG[,4t5gqJ3+bN[fm1Ze+U9\Qjf@pi[eUD`DU>U#AX'Xd8phnQ@gU%.'W""n6Rg9jnWCY,^%2bLh(l07Fu5sa&$.&+=4.DV)..%WIz!!!"LP*VN(3F]p_6Jl/qPSm`aO0Z'@9VoU2Nqbo&V(O`r:HL,pe8r%1EYUMqF,gaNMouhnRM:WLeNL%l.tU[Z+W@0eneGq9O/=PU4cC?=?\FB(N9D4%aZ=V4tK*u[=EO88I=I@RMH1S.B\&rBUYi*e([(LD1A&f'f5p.g3/504dj:'^B%W?LX]i,qZ)oYi0$&<7KE_C[IJik[lC#e[/!hbf:>-gB0Wg8qd*T%/:-IB.C0mY7[>%qLe\0k(DYSe+-"](/7r1j_8+LiQW8Tj@M/c)TH;q0UXS:?ZAB[a=hM\[lOh+d_6?N:'+z!)W#S+h1of@*lK-C\E&Ci5+d91@/TO\[f9Kg@jsjlfdQR4[pSV\01A%Ne\,eWi;tcR$b*LNFf1Dc_a@0c)!nTf-3A-rk*=8c@>fc(RIKpf)BAELlFXjs&km;B5g03c]lJ=R[PG:"ZE-,[^J*g*\bmEA&i\6FoVI+ppKLI;(e>U2Yk1%m[,t[PU@ri3;S@s;jf$BHo"^oBu`l:L/AT%D>n#%6[=qi#!0!,Rbfl#1:TNj?Ju5DW^OH.6^ZE4Uo;7$;rZ^f4Og_h`RkBOUQPsSSKqEhjWFNu/gcJE*4F+eMH,N0BW=R%0*F$7*H1&@D9PA)fJ+WF1p$4JNehf-;il5]9?G3A@X_h`baLt_>-RYfq[;,!ll5:HW1>5k^_1b2dMS?g=YHKToTu]I-bB]>%s8@-\)]N'gh3aQHrWm7B>+2"Q*Rui_i'@9b,mG0A^V;uJ('uUTYcogXJdF1R4aP%XAnPc.X]m_4-qJO9C=fVjWiDMZT$G(Ln])a$<;njrU&A"C_$+#5%\NOf(\2e+nDV849UHr/1S*(HX&l3^7ueQ$rY&P0p@)F"7"%gC@"eq&pnR@'jK+su/IFc)fsJigmdAlFlb@oIHGtaV[%#4\b'JA[r4*,%a<+ZKkCfaK6m*&f(9O[>`,#/7?hH`].cTUQ(*"=<4tg3QPTQd`,U=X3^?eEY(^(WTz!!!!58C#$hH[C)i.kIUI??+Y:Ace6HD\8\.U^:pSG.SM0W[dr^)0Fu8"36.eWAaT<-VnJl._k`?cCHKc#q#O_Y$AN#3lK+\M"Zt"VkKgCmd;];6>'`C#W>\ZV56W2dU)8)l37Iu^OQ8i=>32rEg.mD)!B/52fqm?c-=Fu02GkaD/E#G9Pq#A[H3.fT0Ig#p!C.G"6kI5ogm'U[;.-2>Th4U/ZW'_.Wm`<30g0n[SiqooB4F9q=f,RFQ$/:#R#a6%3&3GRP\afcCpVDIe[)gnPQsBtM/hZtqq/fN^DhXXK)YFa1'`E,Mg[+:nU`I8qePDS<%NM-8qSf+$3ZRcpA>eYW`/,0#o^lfMW$SfLZtm@$oub@s=LDn/;Sgl2Ceb4YZ8%&6.mhMphSI$Z.\n<.chtXeFkJ-BG^)4824G`N`f1r(ZtE0OZu+Q`N[`Qg?XI1:ET#.O/e*C?zz$7+fm9M.nas*`q:Dr:QSO$ED"2f@ED@f.5F5JU3+g(61^!ZtF-QBl^YdO"lWb)0.n7+UAsl2C;@f4WF$4a$$(s!9@QXtF55-.h9WOIM^idY=j)/@Od@qtGi"L-9kT&6\,N]6@>Z>bMYgr_[#HlK@d%c_!1:io.e1d`Tq2P:'.()&Y4W1Xpt"-dRu(:\Zr:04-?[#pq4iBKgb7kk+,g[*#"jr[GHrS6NI?;2)C/Dr/.c1.BngW1EM/7X[Uo9V"Pa/b0sM[r:0p/!Th=a4$q^A^$ieoB&cuo@L0Q(O8Z7$riBbDq`7%S/hB!/JN,R`-r@a1piL>6XBHaq/_#1Dnl5tXVl6/C2.L3c)Zh-33]^GO?_;\9%[7#r='$7q9dn/b=0ES`*4g7V_N3p&:e'n\zzhhEmI3.p-UOkd^$?XI/Ij:s'C?]R?sp=-*B9?&7,nDt8q&f*'&6m'^F4'/[r7G0=!;i!/<`cuiWbUi6(Sm["";NS(GFipi=C=EaN-me'br5L.lL>7U73CDoB4GX<5-T4^An66z!59`rS,iV?Z3^1Xzz"iB1+!!&6P\:4MZz!!"DY#%mo9TIdtY$NL/,z5_1UK!rr=4&aj!+z!!!!+KY\N+!%nz!!!!aJM9%c!!$RBmU#qoz!!!@Z_&34Q.#W'E!WW3#z:`p1l!!#8eK_lPcz!!%NN@;lDN!6QM@^An66z!#,]k1B7DO(?,5rz!!!"l5T$!l\9$iYG(?dHM%_6NI>N?JE;ot>z!!#h<%*eihhnEA&i+pl@:EN#4,$ueS^An66z!#,]k1B8u9OT"Mq'%5Btm%!DS>`]0a0)ttPz!!U6t$ikke87-4#E'X]`^An66z!#,]k1B7\5+FUX(_$(]qrrN0#z!)OdHc2\usJFqA=";bUar&6t:tpFcLHz!!!2>i!dC[(0jDBIV/4_+,O^rVH(UCQ(s\+;hZ1M2CX$'^[6^4Jdf/=!<<*"z-kHSq!5>_r_Z#K^,q4<,mo!Cpfm[HJT3m=a`hsp>B1f4GA,Kr*++$qWf'QX^O'6KqdsjFu()?6Rj?Ip-@!'7$Oo;,>Rh*JEI%%ZrDp6/Q;h>h3;>=!:Y(Y_b%(Lcfz!!!!I&-cbI^:3%;nS>&Q2:Sb^Zk1@Rp)d!ZY)3)k>W@-ne%/h#OXV7'FmY912iACd#qjF/T1<6)Dck#_OC`J$@Zk#pcW!.!8KufE9/\ESdF74?>IJ@6F?,=4V$9kY?]]c,:,Zpf7?`H5575Ap&6t:tpFcLHz!!!2>i!dC[)-i7_k5tBg6$MK5<$pSr@;`1T:TdYPX_^ncPWmIGjIESQU\'k3>R.icN??hlk`<.;f:a0;5AsU%1P-"?l]h,(_Tq5UWbSPuhlpgi6)-PJh"qpf1goj-MbeE#rs::p(fo#1eEkT;dG'0CN((&fIM@Yi+h/WsmU#qoz!!!@Z_&7cA1:SG=2u"Kjb6If(FIX/VeuESLr*[@/4'A$`DVoeMs3)d1a%[LKq4f9reLIIsVa4Thi%ormL"7\mc36]s-d)&u3J<)!.&C65^Vu5"UpBMZ6&,3**YopAS'u@R7Zc2g%uStp$+.NShMk"^^>HYE1tW>,mG0aSLUWhBCB-aB?ja;QV*8IoZd@_\DT9TT>Grh,SG\:1>r-8z!!!"l5T$!lpa1V$1?MhLBl'Fq'jLD'Vih#/giQORe[D%'ED&es*5dO0*W,gib]h"(8Rk7dp+`RX<5(\Ecc$\d.\0t5841M$M!>aRK$5iFk5&dcAX)0#TWz!!!!q+:QNqI%S6/UY2Wh.Oq"U]?o_tZ_u/"Mq3T'9._\6BkV7YjIYFQ/j@P1/$CTX\.BR`Lq_/?&]3E.M^EDZKgP,'Os_%Ik"Sj#c^.$dE'X]`^An66z!#,]k1B?&'eZ:AYk5p5Ch]^dizz'F9=I!8h=+6/nCB_2ILG9.l3,8L6IQG824JGPC[$bc3PE4@TgSe>QM['ibus"0#'KS@s-_W7%S?644auU#We7kjP7JUFd*`.(%:,lXuHIQ$%1kIN1P524-.C,jeH/;l(3J2fD$BF<0RW?s%uo>./+eVKbRLiOag@(B=F8zJ-'.u#2ksZ/kBM]fn`ujlVS-2s!N0Ap@/q>^NR23rAr_kWbSQ?_WT>3dXhjk(9LrDU8l)4d^F5/WM)-C_1b5AUu_)VDgm=Ak2HinFS'\Nq3EV%-!a8U9+bG(DW1Quz!!!"l5T$!lpr7mnC"L[e5I2L&aTY:02m&g%M'MV[%kfSq=ZIXM'!7FdPtX41J\JFd7kYm\'fX'JiidClm#e9@1WIb.\9@'3MbeD(PBKlmq"02ZesTet$U`G3k_ZVI7L/_X,8V_GA1W[EiZ$rCBhmU+ps&_rma"G"P+*!$._Oq;+sFH="7BLrz!!!!+KY\OVD_/DKoIV?l(M(>[$NL/,z5_1UK"+];2dT;nL>`]!\0)ttPz!!U6t$ikke87-4#E'X]`^An66z!#,]k1B7\5+FUX(_$(]qrrN0#z!)OdHc2\usJFqA=";bUar&6t:tpFcLHz!!!2>i!_lE_1e(316`,Un'Zh\rc0Qm=f^[/MZa)Io@?rtc6mTHDE\b=[p_F^@MY8h@ZttbiE5aG,J0nSd?Atm=@:b6o'^L+<\bEE(r*UPf.ComH#BC9:JE\'Bo5Z>'?IUY2X=iUlM26fUt]S-QQq]m##XOE!4[B:iK]Ao[6f[_dgT^Rp2;6J7(i(B=F8zJ-'.u#,#(M$e#jo;e?[nb6sAPA?7jMF9WIqe?#p"Z-7uilWDZ5V/o^k86g@7g:ksuICLXI\9-e@$K\JJ*gJ>=\V#RaLI5)qoF:Ah7`HM*-%#)KC7q,oYF?'A??gL%mEYD(1FLLT3\UH@ZYX?qh5gcq(]+C308s.VrkTn0(\-+G&3O\'K&B#ZNdfgbHe+r3Wat,U.H>&7>T0s>m/;k5G=\Dj+D5Y%A,Kr*++$pXlZTD@a&TXGe0/6tiRAC%k6=C'C_8[3^8*7j>`]!\0)ttPz!!U6t$p_'#(HQ[(8=5O\/90pUn9MCJ]5nL>993FAXfe@8eY\$k^:4,U>&-iKPk\)Nl._WWm95EAma/+PLQ&iJdTS%s"'&!$a3U.*VNVHj6U`6;K[Y^#+&AhG>5@&9,FUIMLAfe/^-Vb#gAed-,_dmSZ>mF8Sh<7bZ=UA\8lWFT2cUoGkl&0EAtc:LqaQn$g4TUXR.Oo:%6=M'#&b45&o/lHY^Jmh)b*Gss?Y!^2=X5CDfjg=I&VRh$^Z^TG@%s)shnt6&K)*!+,Ik:c?$6#A%Nc%V!()pEn#R!Sbc%5^i='q"hCtuZ0D2%7`OTIm[U\(&=jQVamHf,:(>hGIW=&ht[nf'K(1h`,OMgHOuM?YWGE:IZ1QZn.SPC6>g)F?MIiIhNSFmF^Y:CCOB;"PLo[D;_Kz!!!!aJM9%c:b9Ed2Pb`k7Y^8PAJ[FK0nkooWE)IAlB/htTE7L$H#YjF[RKc-`^PX)ceQXrHuSu>'DlDpR6,qXZ?pV(+Hb$?s)C>$cc@Eet\b(Fj+!9JX[])iUgPiA`Yfjg[`tEeC'49H%;r@d[WSFm+B"Xr*A-.QohD_Zu@?VF37;-.!%l1/9s:PclVu!3>W[kS1)irj:E)!TTjcq'T4fMgCs2??")o,IpY]9W20'(;Ge$0=:"/84$$Q4Q`'&J8!.cj!WW3#z:`p1l!0j0)(G7nrV&Bc%NNsW(J'%t"7lt9nAT#+(6fhtL?gQ@E]D28N$k+X#.C_'BbYWbV^7GG:pC@/6CXoFa2m:&)X3[HQquR\+>cD+5;6RXHr*fB+,jLRK/lu@b5mu%.k\a]U3nB)L)cCMh?1PNMg#qK&@&7qNYTgM&X2sIr*q\K54z!.Y,ZE!Dt;Jd^$C"LC&SZWI)u97c]4ZP`lu4O+OAPkjfhh1kT9l.d!s128e;SZ8ccd`K32I@`EFMF^-&A>n;#ZB9m=AkMJ_Y/&#S\U*B19..4lo'cF^l(UAP:pl%GVNquV`rSDEHS)is$LIkJ4LlSa=%Jq0q;Y!(jibN>.,j+#6=XNQ-pu1D_MoLgDr)o%@ObBfIfTNLz!%8B_B)mf8\8^S*Q;JqQb'3.6I/8#`a=9CrfQK)5Ps1_LFe6j+lo`(K59cY<2lgS`?BfAC4lVL<&?T7i0(Io5f9IYFEDZXgrCt*Rl6iFPYQ2VbNE-o1T2t/'!`iX,_&lf4T>ji1-25X*frUr^e,(TjiPhZF"Zrh)g2)4l"W)V(ZV"n&qUL=+$Ksk*u@\D/?De559YcmFbT_dQ.@gg(q>%rz!!!!I&-cbIMC#co?1=KR>33,)O^<<]H^>ekrOb9_%dDQF]33BnPY"MNZ,g2ieMYi*a/G/`lTdD4nKV>pqc#C-U`@a\fh91GbE.RWNU[Z>:@IN&>uT?O=&r2WkNkan_qtWpIcCY&km->7O@":Zrnmi(QQLSGS&$irDcim3Vp!DqCtUB(EnV=Q7?N31S3(pY9tm:%r;ZOYV+ST<-VEOLOfVQ`#sZujbHC4jTp5Gb-AN`/.A?fEj`?="PVE^K8ki5KaMZ]Zbm51!AF2/bYmX7X_c!SIX='WP!jH&B!kf2F#G+p1HE09bN$njh3/Go*&W=hQtU2E,J=n=ann$f*Iu-Ps;,g9c>KFXD7qr7)1(3>NulLD8GEi]SV5;+mX,7o,Wi0KR")+-/C,,@b0C&o&K\^rH/or)Gqm/$_B$\A4UurFtg+(15G=I?g8$,`.D9$C*bslBIKr;oOV/[C!:Z2f9TJ'(YVT930=-j2^QRlu[Am2)R7\2fB`N'2sjVhA='-$NL/,z5_1UK"&RM*_RH(&,8O-p9Nr)+-'_#KhVn?*?e?*c+']q,h[7'0rZ>K$1DAp6Zg?P^HOh&RN%9&/^]=lR%=`m-gt^]"s8MoT`J]:uJTOc9U4)q4dA#RWi*3[.4am/`3]^GO?[pY.=^QR$'bB*7zz'F9=I!!k3][/5*bi6e._rBa^%G:IQ">p1XW-]QBH+>GI,>b[=_pnH\uY[AZ06%f.Y?^N[,jmds2+$Y4U;5;.0;55D=qJ"?E0k:!HRl5+].):MjM)JPdaE16q!mb*[F<^XDU>%BH?sm>=BLh<@_0.^c'gLOIf-]<4,<\Lz!!!"L!b$$P!5Si)(.KobYKCj(mJ2H9Q,V[ucK)YO?Q@"+ENiG6=3)Igq"XC>qtKP*/GT*\@?i=7Jd^\`IsRF>^VPUsQS)/,:7aQs^)gLCSt=6RUeRegX0^H0SABmt2/6Z4AGl,P?_3j\]"5IZ?=(sL4hH%5C?qM#sGigKj@PhE8e]i%k/qVIXZ`XAnKYu?^G#2lI>hu]Q!_Sn@uenjQ'i4q/>0)/\Vj%FQ^piOo/tEWm."l:I^O9Jd[JQ04pi?P*,qL_2B*_fN39@pF0%;AdSG$]p5KtJlI2YlS"&0*6%an$)qM&k0.SP'9he>CBiS,3q!W*XN/W^VO&&GC4EBLR7Y*'kY2n^+h$FG2=&Pdb0eH*JC!HmEM&!NheZ2afT6#QAb2urjk4=04;laOY#VNgK7h(WJHO``gfh1)mGd+<&eZsIpi'55+7f!ncCI%`0k84C-)F!UV8M]S`>3.7U4nSdc([Xb6:+#99UXo/n*fW0>d\jclLl@9t]65e)NJ`Ts]mB@/'e:%7#Rq662fBb>11eUm#nnX&)B)d`>PIL;ZW!bs[%Z3]CR^]Ykiq>'Nf45H"pP9HC20WCVCbuYT_:?,41i,:;bO&,F6:\L]Qc.g+>u-$hnFN\aiPD<)0pLQc^m;snDOK;?N:'+z!"+Cq)$!)/(K,>'QY]nj+aDG23ItsiY0VEY_dE6X_1e8)>A&W6U'_^=$W#&>j7923d?Ato7P:C\4-TCCbaUY5p67.aG=\e\p?8ZYTeh(o:RJUH1aVmlG_'4^`<@i`kniDV><.0"1m]lpj?euPOItO]%oS$qe?2B`A]07!oU2/dhjoQDlY%*5k2i(6T=o_Oih"/\4@!\A%e.TMF+MN1`ma>\cC_g8,E]*KnS'V`c%"m:)2i*b#;W)tBrNC?-[R3gVhg.b`f1ofrA/FLUT(%Gqk)MlYi%=,BAppo,Dh86qr6V@h:t1D/$l(oY-'&\G"G^+ITFECbm>\\"gG'D+h.8k-DppJS1RPj6ZVP0\,b3@nnlfIISM3jlKdYEeVIfP*1t@',1-/h]EdV4+$[;lD:q+gFcjISAd5b!s>OI5!D/PUDZ1=Ya_,OMi.s-OAW&Z/TYuS$<7"-C$&\U;'/$o_%m"FEAd/7;\gV1G^h&fW_'W[<;63h5NQohVQc!KaS]7fWZMO0(.5g;n9HLNugH1qtBEDG8^G]z!5LN%_$'gm";bh&Y$%T)PodUZ^&5N+7Ll\@pM!UaZ=UAg$SJYlF(:D+I>@Hm$E75*goXY%rfFaC@0QM^hR:=`Z,>p6HDmilqB,Je;oZ't(EV`rCta\cW)Zg=E'NgZ5<,U@X!oPLDa"k."Yq0+Y1KU9$RejM6cXIL-06YA+#.2g`"j,2#PgsFP7&7PZV8WD:o6fa;ei,?Q\TkB>4bgu]RJ;j1i?)>(fmHI2I5$8,AH!+hp/N$g6XE%[ZoI=>=[6fG#%`l\iMH.p81$QgTV`1G4!sWSh=#6E.N:Us8MDg>sJ.Apgd)P5*I!pEOCojA6XO$V2jidT"r-S2+jlPT8B4nP!7VZ[Q@U`eO>[2)]Cijc@6pu^C^V@1aF`;:RpFM&SLBi/A_pQlZf%.9(Rl4!01oXKUQDpj_JUrB\[PjTe>>>6NJ5(KpVl+0@BNVB?2%'eMQ7Z(*<]%Y-$\V53@W?osM6>WaMfN9O;=nmJ%1A]>K^3t^ED_(7m.WM))s*F_EI=?YEZY.VT$@J<63[5k03B8fKEQaY".p&mD2/AMm^]36.K7!@\h5O=#CMW6^p$,P\?JWuT:fg_b9s-&\K.&QO6#1Jh?8lcWfZM?oC::OXV1[O3DdV4V;56Sa"9_Dj5!:/:KLID#@Udt`'@a8YoQ4j/[;4Bm_:88Cc_$OlIf]TMz!#,`k$NLM?0)/26^n)PXZ1l1cM.?"[LZ0P.fg+j5))F*5r?*$uk9i1!?JW8KpqScKmn/G7cYeC4dH<]GqYEnY)]S!6C!;f]UB>lP.N4])X@<@u#C[SN?aVI`=rTk5=O\?*:ZB1oQQLQQ:?8R;r*oQK*2^q\m9=XY>,0Yup69,l=>o/OL.-epjtP[)r(Q8SY+Gb&Q];m9V59LW%5-`'$17)TL)'JT+:pRp$IdE;I:8C#"l@"Cs8D\m=0JL!VsiBL0.¬[t!Vb\BqFJuOPF.5()lIW4XCi$2HTck&$d*^5q1,>k5[;,*_[HlADf;)!%`f1orDr09td^!#^ArR]dZEUPe2`EZM0ek@9..ef_WiE'uXAYleZjNpNAS'E"CKC`G#<+S#:JXd[\u-E%AqYhjXB`:k.Olo+2E!`_4u"e^o]ahmR@/>GGn1rYaNr168-]1rz!5LMn_$,A;%kas@)tW1%E&1"0o,95QCY&6psFfG^)bMaRn`G-Vp>X9l+6VDr8*HB.GJ_(9ON;Z(eD(Y)G=DHa(B2b`"GSCU"2O?!Ub5p[:n#;M,&Q!p7h$^M)"=g*1C#[SG(<8P.%FaN2WNrU%)Oo(2H[^3lpDrWW?&zJ5Z(5&'b0>[*fI;$lLjc[^^?N"@&*0S:>^$JP/Kd*FBYo`7Uk`;sWQ^Sm9C'n&Y_LpHJ5[s"O2pPC5jIK]#GT7=9.71NlSWIJ/j4,&r:^%PGiddS`_em98Dqe!'*K"\R=F.JdL'Xh0eeare=HYFFFn_uudIXYU0?;=6*HPt>,6\f,\@q/tW+sJ3H/mLAShE5ZWm_4,H3]fF0W@ODrDf0H1?DU7/!s8X*<=)GHEV/nqN/W]Zj'dfQ(G8P%SiqGolIDr`m!Jd5z!;LBfbhroFB2_'7@I,]9OTCd!mu:1A!j-q:ep2^>YJ/:]>C?:`D#*3u#`VqS"l'=V',`o.c:QdalRuLo3YlkK8JAD+caiN_4"-\rc+236[2&E=!B%U'Et>,IcFHb&_$/Lt=pc_A7`I71!?VIHGp<\Jh7]lQl`'N(5PM@*n(um8Im5_Fo>#nZdF$?M@:B07rZ3+%p@e2SRPZ`R1#WZ#W;cAkqUsRW@U]N*+_OdQreYsUiNU!=.WIEP.MlMS,U5^%t!<<*"!!!!ka7hAL"!C>b7P=3q_*oQ4@D\d]\Ce\SDPZEeL>,K%h;0%b8[?V\4H4FWETa_`H',+n?]NhpS]hco(e`kbb(N%.-[:f:Bj[Vu]-/QMbfKje7$Q4/pW-PJ,e3*I;K@hHsHKFg`/uKG&E'\Z6Q?9]X@,"mAe"VO2=Gi)1"kd0b3pB73g=QmP(:7p/>e3loEMB[eJ"_kHVfs5^W_*^Qq"cK:H7D(fIhg)o^]0mhPEV/mZ>J@),tjOtS2bNH^k&%<4c)N>aZheuW"O;,IW+$0TX,J,&N,U3Ap*g95ktmTmSV4X233fWeq&6AfpOeh(7C4E9gg3d'^uAS"l>:*'%c-\4N*0fG`!Tg;>rc-71cCe.i?CMW8&m/5n)5LT?cC!n:#AuCH@LeX?srUS,bM2@)Rl02>R=a>:<:S0hig_0YfznGU/\%"LZr$eY^T"](^/39@&PgQ1]qYA8?b+$J;4qo@;u5r7^$.3\p*UL7RdUVhuiX(S+OP4^jmAH='&H^0eo@q2`E[5\qe5B`6s.rTbtIjq3(HBFs/q/Rm$T[)]QsI^CY\$PPCW;TL]Qs*W84H`*(8[<7*+%BX8.#;iu\?h\4e[^'8N4]O?j``5]fOLPH*;"F,09f\5&JS"'#IR5Q`QYd1QTFEFboW50:P?tU.tIpOz!!(sCJ\`3(";d06g4\C9%(Le8jkdb%J+rBeP:'/ofWerVil/XG^+M#j/R#M82E'\e`O3([)Dl,8B4j/Nq!_FmAjo3[+$FrBg9k_"?b]W`o=n1AhRn.1oP%WUd[lV`p5$YB%j)M!lMpnb!!!!q;D:'4nBD1SONMH-E'X]`^V3:#*^-5B]5-$$nF5r;j2\dC\i+K`SGtVm',-QfD;#C80H`&'0Hq_#d%Nh;\[ct5TnH7_dLj$9odUuH`5KS74*F"\7>6GL"U,'h)`M[(i5*^acCI%@DUtnW\[a^@-=pb"O^NjBWbTM1'ksY4PuX/'?!LW>4?Yk+r;;/!K,61I]PcQ:SND&pqWk=tc^rD)bKJ5X=7dO9z!'h-(E!?tIUZkKfd8H1NAC3rf6\!!#9h_r(rR_Li5/mp@%tfk4gmAq^b,o2FH1E4D4akM>/T^'unauJ?d%NhWW`?SI"H8>">ISM;md;,1'XVl?`fu^P]6E]n]#c'2p1/i8R3VLU7YngV8c5iLJ:IXiB-Q3HIB2QP"TSN&!!"DL0K90-nDM1*)]@-*T;d8H+3N`DZ5[&1]d"/B$X[a;E'X]`^S%N3]m=hso&YOXKV_>.qYL%L3]^GH=E(T;dg,a'X&gr=5JNI6<=,RgBMY@"VJ9e.`pDV_nsldp()W);$@9k+]%m+J]m,paj!48]$Uqfjt3z!.<*H3!3!#K+#'GU35GTB2"gP-]nAd_lBhS7o/h=E\U"YI*B=,PTP,?!11%fi:c*JF*sl]R'V2>iQV?"hnGVs"W90o3e$IU^gh!>R7mUn30Y`)aPH^ApS9^//g#VO2Kq\Ks)NupUC]mKM+Z""_2C^:@TqXMTJXf\]U<2dT%Qo-]W)Dl-s_[et*S2bN5RPdTq*4^Lp2Q`_;<^ZD(n_s]mgs"!dUIUC5gpo3r1,:[CFRnM7_hSbHF`m*,\[/-/V4!a>[^NV8(nt9GE`K/@D:54OVbWdf>[44T?smAE=;[T+EH,u4Bk^YO>^>o$#u2E>zq"A*7#,$nZ(Zm:G8Olj;5JCRVVFBe#;m^5Wju)dRjMWbsX#+a3V4jU!L?i?5G1WZuPJ=]7ZEgt>BWcYkCBHo8\eAB4/Hkk4qjdT?'XCKP@/75+K0?<'Eq:n5S5mH,ZTL@o)k@\=9`5]fOKS7^?An,>g:$&%NY0Nnb(cQ>;6psFP@U`YMhM2U`']!:J-*L[jIdl:3V+[.Q;cEGYh7I+5L;f&e:S0h!o]X^$qtIS+ZYS-n=g`"p7)BK:J\]XZY[5"hF=oR63I,ps:7O;+cE=+EW85(0Vkg+bKb#7h`%9sLz:ki@s#,!LO(RG$4MH3SO:&8#@4L4!k/=tdN*N*YU=,oKgE21]o^_VQTtcMZYn7^Q]5t[(+aWZ(]7r+cZ8=Bpk\GP"%\>l%WJ/pj=pkIbh8^2)$A1$GB#VZTB=igg/1$'km-IRfD(L#H1gkZY(3FrE;oY.^,(NTSim^WYU(tKBPa=pD6a*pG:N+Bn:>Ta(M)-:m)fY2gtT`+^WQ!)#pO?in_caiL@ru5Smsc`O)ilJ9q4A#+%Q+mi'Ol:3>WqF(RhaHIeMV%Q?3&AV&HaW$3UF5D5EF->`]!\0DJ/p]mD[e.;A2'[?Dq3EcuW/=0J3aRMm+kY#_ZnXf^uX0k47c=HSuc)<`W7;AniehX$f?DE&1Gmrql/AhCS^-!!!#o`aNfjT_*jE1&JC/'uo+,LU>Tq/uMPIZ^TElVYX..)sB@qauE"::A0noZ?d[Z3I(7R5To:AX#i74?dZrVL8cWd2"@eQ6XFOE3[Y%I&X;/E1=18_Zb'?$gb<0(n/>MTor3AHij%:(g;B.a:lq_$(]qs+7H*]6E`7o(!D,'>q`*kq'6M[B3]E1AcdTd*T#$Y]+Z)$O@#oNfME+aE[77Kqd<0A]'96+!*XqSkhQ:?!!!"L1(8dk!+kT?Kj?.t185E1('LsQXkL6b)./D0nM.+lM!?0p4_7,o.h0ZJoSm"e(0=@'$=%0aQLMA.N>c^4H=J,?o@Nhu.En(2UkceU:a41hs`4$0(H)1:B_$6h2Zn_(6]_83terr0NRmp7Z?QaZ_tLMIC3h?jk+hJM#UX])-Xge896L5**NeY7QdmFuj%KF(sk?*^caDXtU<-WA5^"g8M4+Gcd/sJc6IR0qI*?ECaVrZdo:qh=&f"5^,@R;^sOo@cehS+CgG"JBl91_^KUG4;NN/fhT%>:XWVi-IkPEV34Xf\Fr-2Zp9p[\V^C!`N(USB''!5dLFS)38qmiN/T6H_qr:D\A1z!2/hTEsA9_"rB2s^.ff6BPD6BFD3sUr.m(ks/14YT%;H+UZL9W'?Xl*qEMkHV/uD"'t_q12u(^@$-hg@N:n)IE9,>G,.Am?ThKopBMWU4i.6lpq,2i;$A]43'cVL/s]k5NX0k851C=S4=8pTO@Q+M/&12514mG#*W\T.kgDLc3imG#,6kifX&n")R_8g]bL+ZaJo1`$spDV_l]C!oC%qOj[]AS#H'Zt\"Wh7F1>5((A/)=,nXhm[O]jia"._o)$!#64`(!.Y[hSML6l0t7d\4mGmuMA>o](.b:Mp5U0gitNNIG(T\9be+QQSK@Z'+#5`/k2'=ib]NTa]m0r;W*Vg+]uuC>1su):G&:H(@04CQlb-Z7bK%KRP'`+DWJTCA7`36,i%K/gN/;hKF5b]>d$f)mrEk[,lkT+7\54C-q?:H]LCYI.!s!@Ua"J@W)\Uz."TY]!7?E,\))eLc#V]_I".aF(k$o"!T+bfAkubjCYeEk+_Y5-cd47d_WCE[=fBOHA)gBQqkp\R-u1jl&h+=M1\qK8]?R5]B!m>e^7uY?nn'IJWT9gUDY1qWZJ,%i[F.9:%8Q8=Q!6n3[`Kk2qXA2B@!0_ET>%`7ud]W#JY`dRSF*m[fZU1!!&\A6K\aWJdZh%m/t0.'la*Q&2#+L+XeaPa,V0XDJgIUFPo2lX&Q(HUIUBuZY.a`nF>PZ)&X<$QP;]`jQ,C#W$j^2NuU0cH1U1ooB2/Q26(<8T$<]]Z`p[liXVEGRT/VG@.n$jkd[t03u0]kg?0$Ua33(!WW3#!2*jik6q?B$[AW;"2P-UE;]hdLmKc%SiV#:gY7)=d%QF;2.E?ei^D*saKtJEn":+\GC#$O[?+a^cG6*Y&YiXS5^n;q&b+`lZ?EbKJ)dh`iG77dORc'TTY@hql(qRuZcNgU8\9Y[GD*&O63_6\>RPN/W_*\:^re/fjuZg9hk^Gjt@idl2*qi908>'GU39okVJdz!#Th'!$Je%LY=p'>YkIQ07Y5]*?EC:D/aN9ZF$uLh6$=fdF$@Z_a>c7KnY5SM\SjVjQ,BXL^_:I2's*KN_OH>MF5Di`ozJ7=5X)#sdUn5.jEJdX'dq?9]chS+DbqXj$;.p!3#33Z/K3c'Oa@q4OoSN9K;55i9J"-4NgcHOKH]9iRe-nR%<`JYO`JV!^lmA"a=c-=MTaf0:?`cNDD^NZVQT`V&eqS\4(]tM,Rn)&W^g9m8#?`'a!Md:]1!!!"L_M?DS!!F,-:tl5,$S(*2"X'PcT0EPa"`<),Fj-4-9q+%P;`5I3)gC`*H,bd\LCP>NqXc4G%8_5Ph`CrD"NY+/Df9R*4?5G`g=Y%kCMS!2#87aap1"=<%hHh#Id@Ud*A)Hf!<<*"!:gYk1B7\5i1[Ri";b%Qoa=$5aA(?\X/el0<[/h6HHqMDKNJ>@60[XuY@#&YG4"#"K*PJ]?L@1KhQ'_]B$HcEXB:Sm3ma;CW)4d3Vit]0L(/Y4rV+!PpC\,Q`@a4P!!!!ama*rrJD^JMCAU885m:N.!7[<>X?f?H#I+I53FBLJH19b.l-lPSmbBgPrqrHWLUM'SQCHcbR$jAqgY35W1hcULftP27kK]WFqXeK:C9#ni#64`(!;JeBS,m$6Ks&,$Q`N]4+$,6b#!<7knO'KtNE\5ZFR%"TZI8P)K>5s^tuD&PTcGf,7FfrV]\VP`1\F^)(X_=?R+hn=@aFr:>17;?Qe)e$k?f9]2ZD/3okTgAq%iK`WAP_X9WIa%$VzU-RlM_"I$F#F%%S)DogjeEkkpVq;0pNt*0k(`F=dn)%L=JuGFs?+NS';E[1VL(,*qlICejeu`.(p*l`5E;]hdTtYpMEp_R<+!7+`_hQ^@;b&$oBP;)3f[pTR4F"bu%bZpN?:Ak;c@c'eu`DJ-(gblHU`4q=0GpF]-(i<-76aUbKJ,R9NP"].6*,U#64`(!%:8!S,k$(&ebq*o]T^sBR'IMEO!\b+P!Mo?aOL/fVMD[.4H]$RB0i7L)LsK%Ls!Jrr*b,>RmoD!2WS8F>VNmSt;NQp$(f.;]SuSI!IVQK:ecCCi$3*"U$4S;H$L95CS"NjN.iM2Rp<.Fm[nj7ZA=6?5QCYfC"&rQ6\eP[aSJ>@euUlVn6i7,l!J.=Bk!D@TZ!MpKg2%/[4W/Cj5AqVipH.#kN>@;bqEG3XQWK4h4XsL6W1fnN[:4n$*TkS6F8YfQqQJNT"=SPYPEWo$_N#[#\pF&7ET>&]mbIWMn%N;j#,tR*X]i.$^]/c"KF)GGY!$da6psEGL+*3)!!!!_FNslb^N8S`)&X=>c/$F$+2oj*iJ<>IO[paq:S/E7+=57DGON2X]reE=F`__qSXkCcK>fI*QuN!*.,uKq,%NHsLPLYeXfYPPA[=_8\@D>/pk4;cdLZ*^l[FEI0En=VQl+Q0&qBr[[o=i:Mi/7\+=5mnVbcR>h9aNqaN01/P`Am,KY[6g!/-/cMV>OXho(?bRl,!$^1^fcH?C#?QX>4;jjBhn@[@Rt<(T_UHhd*hT7?jNCtURYa#7kmS-q8X>?a0M3kDr8Dr88l0JG1(+[PJ3!WW3#5TrDU%"K7Bs8IG%%NW]Y040TL-2@,sPGY5>iPUGi/k@EWqpWU+Vb34(;Q80fam%NeCLWX/aPlt!!-sisQl$AGY^#\I7n6':6UM:l%1%e[)]m^2rItfOZL8p@e3_Y-)6#U/X]W9CqcHCYcQZh6Ykig="gR[r:0B/lY]aoa:a,,!A(P,UC=Ka2cld\RNO8<,IpS?f'2XdG*D;0JG1<2-&uE!gHkn\A?/'Kq#\?7n8?+ZT6_'^[^ja@M][X!!!">LX$b;[;tM-ZjmL[,`V'UJC`F>cjGZa4_L8sM4i1^jg&\bVn^PEWs<+@'Y\k&-:&A0)d5FP`FRRGk%Qz,m?>B!7]%rJ,Nqd@*l;sf.o)kmJ6A:l-?R#bRm\LSiqEYC!n7o6UMM#Pe^93LdXX!aCI'+@B*>.7b9)+D/EK]>>J$jIt.Jr)63p;2j'5b7un]s]QisB5Q+QfAke+M6>*$TOcb9KK<)&RYHMk`E,\]QP1[_VzFNslb$QgH4WDkp%m+>2uNfBRijCCD:]fg`9Lg?*?N_RQ%D/HDMUZ:@n&f)60G)6P2Y$V0*%%]Y2\pO2>&L0cpW)80N)B9_:k0KZLn`!"8U&gp3I/a%(,UA'?BnNCa.@lEdR[W"c8qDPELc#/4!!%fVSML8?92A?-GB]BE,[Oe`@[Eq$Fme%QmL$oc7@B7+RS%ecF;mtF)VpeXqtl:WU4U8T$NQ(;X&lLumFsRClrY2G)\!5cI=;(_^]/cYo&[^(_.Def!o"#'>IMbub"D"uPT^n^)?0X7NfK-A)rA5Qo+F4H1Tk'b+JLf5hY?pB;(YbTC/o/3#&eGKOH:$4$kH1)1,C_Y4F(u:i5+[,Vg%FUaiMPZrQ(pKbEe>=:&=h_hs%mbQOs2t!2.h.k6ulsioB&>*#pG/XEaF'0P47S=H*OTHQ*I;s_p5PV!aj)35h%g:)!mLPJC#r!'oe"c5?Ve4FR(5G4"!A2E#X^,^*ITJqO>8:@16QOg%1EZ(N/ZuBldr>Z/l<\Jq?6k6L^Q&DTiruu/Ef*j6q'P$>r7);-m^2$qXs/<5!FT(%q[Vq80j@Ep$.MV3V(d/Iglo!7g'A'!!&Z7coD1NMP-Ub1Gc@4Y@#%n?b_%)].Dt5naWSTTgF'O]%@08lV^VYA27/g(,o!'gj@c5D.Ak2YJHPtF2%4>>_=F8u5f\sj'6#nacln/qQGT3J[9U!>GXj8&oZ,uK&;4F\\k;c?UQDUS.>cc%LT5ah?@n`/H;GE3e.\o-?8FDbi-Bshg4G4+.rkK]Vk8kK`.F8u:@!,;k31B>B@4["51KF+*9R[Z6S(:u,4,Vq7*_STd4W`ulq'@@7MHr&h1+bCBQHhl/%hDlK>DYbBV56UV4?Yh0!Wql'@fQK/!'YMM!#1L?T0NANj,\qLL?_"W9_&#UkF]A0m4*9.5`(;Q#WC_LZ*?#HM2mT3]0uZ(f.R+P23O/e!s/Nd4[$?I9Ete-Df>*+O:]Vo$QuU>Ql,O4UBV/GY[96FoE5-o!8sMk#+uf$7n5LVhV>ubK$H?\bG(#Gq;iCp"+ui&PX8Ve7RkCo9:,/8Z9n*Lh7J@K(Rgb[l07HC]"1@!7#5-Cs1n:8!(nPP1]6t$DhA9*Y#MB`L5(GZV<*LF,PLT`*u>_@G0p<4\sG'Wb+5-ALC^<31H%-lm%OL\!!%fWSML77/Mo;kC=T1joYhTPkKfdL%GKpeQO@f$aiVZ3bbn7/(?.*m\>5prX]r9cW)5oT95DV1+ntH_(UlM\Hi6k*;i+j>FY5$A'Y:NQ0Q1lJ7n6'T?!XF/ap)Ga$k+]Lmn;j@HM[0l7saX)=0DtE8Beo ,R;W&i8,>IVi#bhBLBlf7$so&\&Ap[/bn@A$<9aN1#taGL]_3d0kgXfX1;86WB60k\e%i8A"eWWiG'!+cLh$NNUF+<\JPfXQ"cc?+PA'[,\61kp[:]RB[c.+V9)C=K2eE8eZ#>TeV+7>/q\ChmfZ]@YHXn_1Bd@[/2\f<;f1n%O/C:?fOC\^MV9"TV(e9K[@VaI"\l/1iHQqR*c?*]IuldA'3iB0mRq#qfJsHoWc1NLqC?\DZB+Z=qW0pAE:26SiB#/)b7C8e`2KnFh#7$#N>TeV+74fW)TP`Gl[$0a,UO2:c+*KWIf<:-l$o9]Ga,_;mrNA8+g*=*-!.8Eu[-b6dBEPfe'QQh/#8_'/^OH-M>L]QHT.XKbN&gY?7:9MrPEV1u,&,K$M+f7+LLicukY^_:+5toq4DSkZ87<`&OkkR:2?!XZrah.V+]+ug_>4OF7.r#:N+!gjU/,DT<9BJOAe0)mR@1)A`D_/r;?Jk-8[G3ThCu:N=E;\rVc[&G7LB!L#Bh7041[;IIZW0QC\_t?2B@!_d]1,k:Wp@0q0NFBS7]Mt2kfiVZbIMtcp[@!<#-*RBJdZ:,BjkFYNupUK`hf@E7J5rr(G&[-l!J7/,]6oXnaWu0C)HHlV77Lq]V7cOSY!j@`cMtQB[D9I%A#\-,'LKs!!!!+)1i4rKe>5?FkEp,>$>)kG3n.b2f79U?b_'IIJ7$ZG3pne\.B]&:+=_nqmFoP9CMdo/&.lXKdnMmZUp+j)\=U^ZM\h^1=0?Gs\fEkUFEM^XedX5?Z*CPHM<*a>POuM7p[5C'X]r93/XeP4(M'LO,m)NkL"bJi'F\]bq(Ful-sD%\8c%i,UEX"#LeH4]6+l05f^X*.,@,g.)i-:$4.%/o(')o[AAe\JUrB9PEW2RY?^!ChtY"kWe/B[02Ij,V+R!m*?F%PJ$1&e+'^dOoI*_2<;Y(;.$4morr2f`<*QD9@"(L/qClki`o<9_r5/tG;2E'C&FlV%A="[*Zd\I27S187gb5o\nP`ukshi8U4MOG)uH;^Ml=tC6t&Rq(7!!!"lE$2Xj:q/]:ps?!=VfLnASN:mcmU('og7h#o`5KTqlk*FbAp3%DH0h#IFN7[tEoj*mUcWeg(`F_+1G1c($e8=<;[1p\ORKZd64+mFi(NQnY4+Pq#`b<3'&ZlK!j>0BQdB3pq=*H1U01c'iY:qtBFSm^qpeUpFk/^juTe9&tFjTfT]VGX9ZuT#?M/nl$jiVG/"I7I/O,A&3j>4*K,T=d,mr.DNU25)\U(#VJs8bgL2qdJd"V*.Ymm#QM>UkJiK#7kGBK:!N+^]C4Xl+&,Z6!!"F@&6o2`/2qM(XB`;Vj2R("R^J.CS`pWQ4hl1-)Vm/mr,7geQ/+[8Eofp)M/LhAOj]q)B_eJ[\DZiE:]'5+ZY,giFYYg3[Ca25\[='(`k15\G?/#)'rDR&ISK%=#M5`b\7.[TI^HY$Y+f9;+4o&@cHb@/2rX2(L5V)G:u1jTQic#-iNr:p\"2j/#)>hQ[u/G(0jtMC`.)V>W'\/QW"K$i.AqG:S4N,>kN+;$=-7r$FP?II+6`u2DR%.EH.Zf"bKkW!!#j$+LhDJ./s5CDn6,OiJ/N-W$t@/3ud(lJ$5iNq;B'km_A!j8YD<[2/M4(T=0?Kk8P)LYZ*Eq`h7S#sV49c"T(9+hlRNDsjE(UR\U!,KJXk;S`B0?*>%:mb9d/[]J+KZ/ZsN0U*qSR@V]rD/8qRL3Pr#I$sCRIei)l1M>"[/[L.b"^@jZLI\+/NK,&C\nB>1\kQ3D>SoYPpl@Z=(_@6tldi24gtX+'\om<[4aIq_)=?.clbnVnj2R)-e'm=^(TLQ?rp-c&qYBs7:)G]pKSjl^i'LKcF>E)&FVbaDsTBt8*8[_MkAHcV9lrr2n]8/J8Z[;-jDE+&.k]iD+6jX0+d)I-*b"skTC)Aj<=q!^Sg>55"YdP^1[g_=eCo=$k8/l#b\J)S7u[/:XhEokG@j_S^J9@X_89TU7^H:miOZVWrl819+OBM2HDX%mMj+F2ES:N>jg:M2@qu-;Bs,o[?T8+0JeTb08(g+'_XTTMqs``FC3f("KEj[pQn!<3n/ZZGbDJQj"9]1,A'Nd%sC%6\c0!Wb9VIac.j,P:7=!g,UB0qa,ZcVJ#7.&,DqWk>uHM)cthl9[,q@jnh*-1?7p@IlsEH17#^H^+$(Y!F8j4^GQo0PI$jo6H7f%n.Ao&cl.ctt^@PXDH?IT-6!_*GSNVkAFp59_?`fD3;R27GYFR7X7W\Cc"^7\8l30E+@MMmC^11^g+QeDl??b5QBNB?b^aLeo[Ykg*BH#uk"NaGh7.HWl;H0U!@TjJHrB:>=gM^VhWJ1VG,;"1Lg;D/!!!#\&6o4V2eqLd)Djud=-rdj584[brj2,.'`TKR-,X!:'cfAZXF0j7XQ(*bFRIqp/mZ'8Ve0jcs4:V-EO,l1Q14+kL_1l_Y$IO3[/^2k&`:Xdoj"h'kVHZ!,g].mGd-"WN"RT@7-GVQB0Q7)iPUF[Q_h(brql/>%NVR:/iSAJY3CS22f<;BBKUP/5jX(fEJod7A0H]meZ8TDqW?LEL$KNT5k3l))(J[gLaW?jnY=hMDf9Q(@q.;N1O=Z;ScJfk5Xah+!>(:ZVPR1iLPJC6VkA`KV5L5\R$_^H]NOTQJ2j9tU?EA/>Z^G5(3;$m43?/5YTLr5PO[:d*pIE>.(AkO&'e:Z=4k[^An8`!S,hY1'!+V1,?.Jc^o7PN?:Cae#,uN(C'p?!6Q:'c2cqjoB4Fp:/6+]H@Pk_LY-/e'/j^]<1uX44O*7$V:(8<03F%(8sLki5!F#YET?m!!2*BRU't!i#6kBA&g`';E:Df%b*=J]=]lb*E^]9"!!!!afn.Ke!7fr=H"1W*CMIU1mFjG&b>MAoKnX5SB\^7G;s]*d>)8#lnauJ'f@Mr?2u!%>k!BKdIK9GIVhg.bA]pAsB[D:4ju$r*>d.VP_hScA/egQ"p[R96C)9Ge&f2?#bRFdW!!'tBSML6qKS>+[X]i,5X]eMl4;#1VAOpEFVPU-Nb*=Kr/dSD@=]4P<_!!(Lg[A1CI]P>rpTqS1-TKr[+*Z5hEG+en.1Ojn(',-Slc'pqEp.XhY!!!!aR=NR#J=N,oJ)8i1\8C!/EH,u-Q_hnD11Z39USHJ>[3ecQWL_M6N/S1MMc3*YGk"*f6fZUk94A\?eCXNfkA>'Q.o`HTC2-B(m)P//`@_`&!!r/[djLPWk2bU!V57a>D!^0@ipZ@9mFsS)b6:_BG^Fed*R1HUS&?ob!!!"`AdC!hn>3"ZdN,KfVWP=(gVb^;=]_qAc2$toMd6Zd?gRX^rr)]t$PjQu)k34^/7,tKJ%oIfo&\&Y-Vs0e]c."Q!!O#O(A@=\97`4Wkih7'ldsnEfkG,5=BSd$Rl9ZZSNHYG`bBQK?G)q2MnSc`7=psVe52k$8mY;Q'e<B[J";'9e:g/$<-f;W-ATFEFm^TAP5($iUA2!".80#ntmm?$lSKH%D_34aQa6iPL;VC=UbZd'0pch6q0iOPch\_J'al,$LPi>7==JW6oY\n6p(I#W]#S2/Cc6,a*cb%gmdo!!!"LE!S&r0X"iuDVDIsV5<:U>IVO'$iJ&=6\i%UZkXNK)c*FXt.RrquR^NZ8?5$iB_h,=^_o!%>A>,^[Pk6NqTW%fOdm8KlUdF6PP%Lt,>637,e5hUhK!W]cTn(r9GIFkDpUDGRiLg:ek?ZC(*;Q9<`n`+'p"OpCGf<=uEGY_+2I=6N)WI9/A;GpEfs%Q-Zqs1H#gt^[#/Qri,)QL0j$31&57<3G>fs>.&+Z^:n\nSb;GI)sEs+GjuuTCBjhf*XN,ZHhQeD5CWOXUIXnodL?]tVomf=bY0LO3]T3k4*Q]#6AqQAijXnDQ;KGm)Dfm=TnX"6DfX)uk=`L7p"HfhLYleI!!#:C6>utJ\6j^\78$9hjN*HM^@hZJD!KNLN>jel]+gp8KNu8u]Qc_fkT$d5^])64)e[Kg4b*J/[r:.>:C.%%J91\cFZ27g*BSH*UW&LgS@j(7?<^W<%1NbfF7Y(n(CD6s$(r!--4MhKk005;.="/[^Pn'6\j;e\pHJdqD;g>#"JC\.lB2,`JPCJDJoFMpQnDrX]r:.p\-?+iW0%0U8LeZ;JggRkg@&WOl#*_lMB_l,C9@cp$9/0kF.g,;+#6RY[MgGblOL08PW#e]QitpV+]q4R8Re8J,rZN9m+Sit*CsJIF9r9].cN48BHBBem,d?ZX]m`DCr*s(9!cLU`>KR4;MJMkHHFDK>G;kqjrZg:SG`kX<[[AgqtKRRo^nsP%NRSe+)?OmmeZVBj2[5,;ac-kdp)$qr5@[WjB]B@2/1KlNhu1"]3i:"\Ze_19U7>=:0U4m;7CFK0*Squ\obV9gbnNS\*q1f$\c2d&/R3EW2W,nSm6>7c#7K;:5<(/PR7Bj!6P?G(SIjdLkq^N\*DMELPLYC>o$6h,9u6oSNCW=Y3jfBS"?2mh/;QBkXZs3ek:2KbSdYn#\lZ`p$;/.a-8/41mFUL'GT'-F([P(*$$'ghS!-(AH\-4fW[YG>FRh?SiqEMbqNeU*3*J!eY5J?R7rph\6i5(&qY"!pJTPu2&,i$+^qoY0S!<<*G5u:D)UIU@PAKio5(SFG.%LtBU2fIBT-&1qk>>LhQ0f:hbgKn`6D5gL7T`DtS!@-\%Q'%36ABBud>IGsYn#96`RPo#_WMqmme>S]e?PYpF6"ComD!9T\CXoFbPu\nI5CT\9Yp+VmV)Yt]Cn$LD!oup^@cHIjP6HtC8(g!e4?e2iUcKG8j=W&;e8f6TYb=`;bK%!;,#T"X=LiIKOL]]/AFJBgkKfbRgh!K;6UO3G#7%M,;,!q)ZY7`1CAd.]ZZklpFmIVt`971)(D.7aIf9+lrVG1K!0fbBp@dOdNB;+;5XC,u6uW1LN[%&Skj.PYldh&5BuM\4W%rP_=A;La`NTDBC;qiV!YTPPqWFK#>[:WF@q0T&OI;O$kN>pQAka9d*EnnhS59i8fWa>T++N(WFXpH4FOMW3haNG=%3Ic]l-cE)34Me$RucJ/jOMqiB.$EBPa%E.3ZDY'Cm8)\@RELMLCG3"V572*H?D:DKa^8N%[7/6G4"!Pl!bC,e0n83"_u%RZ\KG`\`T^M["3eElIDqnTi;#ge]X:4VbWdtCMV\6Dr6Nn2[0Ehd5d#M*<;<M,J\Lo?`/WI&==BLe<=3f:D'Cj+@KCuCFUnh*q=\0m%qtKQ#s.WP:,V1gUh[5dP"cgI/%[Xp?f6>SND$ZHhL.t@P]erc_!G:B$D6?l0dub++9\K=!Jn5\Y322NnJA)c!lj@:c-X?^Z.B,+t6gsg9k]F%l\f184X#_d)VqaeRW5%i^>kZ<_\hcIi(NrWt#IDUAntDCXZ_-E\:\23.E#H#t""sJKY-L+m$n60D+/@!0dY/=kUH5F.5()"qDVD<=Q@k`%DW%5_2b4:F;9Jkg4nK+"ps5R+Jel\,`@3H@#F`8WtD4#rSEq/dhr-iPGb9Op+$tI=8AY#3mDalW6D>_YEZ]n(kT'E.MB1I.?q(2DR%f<2l%ANt2;SV#]geV^Lf^YGV_<:@^U";`38mbPM,Y$J(h%qVDMq--%RJ92jsl023M>*WiFFoE*X$SKLpkY,X&@W6nh:sLq6f(A1RA&aHFmG#+JQ`F/hb5+',?uBjWVrt^bTk[1EWW*d;'X[R-3-E8o$l=e_J'kJ49?iY&qcThHR5"?cs/t9\2]6E^Aj%%23#%,,oX^8\%?-%ns;uia$22%q(7l;GiW[2YN*rph];#NkC,s+3#/R,[E.;Xn"!gIS0^3o1qWu'Rs*B\RCm'8n5\@T7dBkbZm(Taa@`@_t*Md3Gm2fIQKUF<ang'Q2ChudjZMklT:.6Ee/M2r;W/.)Q60FAcLBlApeZ)WE"'[nja$P@c9V4Ls.-HO,1Y>@382Y;?=C5F-]@\]^pqI&B.?c,Tjq^UT"4\+k%NJlS.Q<<9?soWq,&,f?/U)We[7FPofs>=tQde3s$Bo3e.P4;e3l01iY[b_6gfsL@hbS/.4ErQh,*k!*k"O`\,HHb4Mj0M*Kk`Ya"AT"na,-[j-Mmf^!!kl5Bs1jVqY':q'br$<=TAGZ`:;m.>ISKE/M?#>bX$1K9!PjDhqHc:R@9SmI?<)mJNT\HcYD"1ai,'b2fC$/n]Y2"X%N.HX3'CWXDB1Y@JR%Yi>[3erVInr4Q2,ErVb`p_*_/^j0#cJqf[A32Hhm'`2i0q#X&^f)jn%Z]r#Z\\]$$-U&+Z`e'b*eRDPfmm+IT2Y)"uC760VL8mD/JGMhrbcf<',q8!4Xq[gRIaN>RoL2'o&+g^rM^3iKi-sOO>'bqH@HLtlc<7J$SGQ7[@6>!k^:-s\(@T[jN_hSc5'G_7U;iJDKO,l4R0]9F,.&*&CY%RdFG1@jg9k^:K-PO-hHfJ7J\&qqqR't^SkY\4'kA&QTqTcWcE'P.eu`-[=VQ[Dhn,JIQrpV&74g*nYcofS92"[TQ0V_jGjuukXBrS$s80\A(+c,sEokG`9/\[d[^3=#YDWi)_G?l7E,0*EV&#M)#oba:7-W3GitcEKDm-YoR@0Icldhm6I/Nao/,KBLTgFH<-O7cfk,TonKaS\21U,L=(L.NW%hW&sXR*G3RC2,0>iALPLUN1N4]3dg^A9hilEc'k1`F/H/W>B%G,FCs@n?bUpH;ER**.>=DCc-;5GfFUDaBkc/LeoESEjqM(Y!hE#2H9.VN<,]k6=&,2@M))8A^Ku/I'_>.\+dG[q+ioZa3uT"UnlJO'(+rk5Y=Y`pX\-bC#mh3Xl7s2]fXPpr9I:F?q;fY][&\o)!=_lF;4Zt2i\FoW!6i^m!+c2=VV8Ck_gY+J.g-Z]<4[>E@YG.(>.8DJmbKt0b5qk,mdAC!GX58,'*H,R-eI\9cCI%@m+>2)'qIR=hTjDA.[:J_2N0jQ%B)L?mlFUaGVL.CX_5tO>b]['oiebe:6qSHQS/49An5H!#pL0j:q[AO>_&pBW#8Uq>Xu%CqA3]ko\o$U5()S\ln"8ikaYYXp>Vl)\=f'q>X5PUrRnMiF@rk-A&r2dG4"#F\e)iFXPAC8glJ@d'M1"ieJQf=j"FFc\3QNKX&`D`E)St/=`kSj/l:S`RR"a]e,J<5(B?_"\T?s5nA>bsc%5KrZA0_B_(SLErj,ZFso^mV/kpO%1?U77Om>;f>C9[JbY-'C,TNru+EkQq,2J8_bMjhR`Z.,dRMs?U2ZY$I\O+[:mlWpD!N_O7"*$!0Kb4VpXa2_t1C,Tn\:i9.[ZJs1[S(HR">HF*T[AH&K4=G4BlIB/!R58J(A_t(F79J=h5kXO(`J_9nl07I#md@G*r(E!14A%'j\s/GDl-lPk*BR;>H?t-(3NlQGio\LT_V_)*T4?'1/PAJrI%HS(N@OqU(=,9;-T0^W.Q.n#+LhEJN/s#1h'^YD7GUG^Km^L]rOPrXV7Rch*M%eh)5*3CcJSbfQBjuJ1cI@s=L"U0[s'!Ue,`!+Y'6G,3d$<%,KNb@UTpl#/#=4IG)T(NMMeE5WR@(a>I]p1"rFS09pE;,feO"j$(Z,E/nAOCAWH=?CtOi=b!EH5D18YL*&qm[^#Y6b_7mq5T?oUMI>He_0Hp];R"0^;`f1pQCMVCV@U`f(FBpAp#VOJ@j2$?Q\X*AM$c0ZqXLb?/ViG5M=EndNpk6qH*aJL#O$Dh[e##k";X!N8g9ote+!G1FFgGXj&)]pDn"WC6AsIQ8B`HFfk3VG>7-+Ftl)4[]q<+BJ:7\CGRps-Vb4GE@9r"K*Mp##m,m3@FX[c/6Vr@!gTjH.fRj3cU%@*rHi:Qjk?k&DuiQ?\n)^CIQZGanG@^.FJ)i2/M/QR<%?KO#%^s-#8`cRT0I[JH0OSXTCmbCr46_d_d?M$?<2O;eU7V9Sp&Tfnph7GW%f?i?5M2;Pp(9u2S(.C6+F`jggXm&DF6j2=)d1aZ0UIG]=o'4c+.p&n#'3Zqk409n]q^YddL(0>;,da]l1M1arg6Lq[2`EZR9T\%='k_O2b+AQ47n8=MS*T"b"ke:RjWkp3HuO%DTZ!IOqM?tLkg3c/jN4e)2/Cd=L"s:a0@tVCc!]*'fXPp2[LWOkYYa&0*aHe/DEr*s^>6ZC_T9f3eZ)Wg+#mT@Ho\TBl&;QF\$"^%5aI_%/@[rf$b`>uP]P]oH0cpDPX=OXV9fk93a:=HD+j,6_ZN)MplN7P,=dd8/XE!O'lVp>F]:6G/Mf9("qMbKcflL7<>RuZUmQp;:fLq$4i8`t\hBp.FB-lBetsg]/mVqehRIPM?#dhn@c)Ij[r,_4aM4rSiuDhWDaSH(m'gPcf)csWE,A_M$a5:-Vp>0MC@'t4;IhOe.=+P!fH%;rVNs9WadYJnmq^nY+oc#s8MuKY$J+#bG%G4POfAk:cB]$+'tV'[8A6N[!F^_rp&%77C3iO2qE8n;:3#$a1BH]7un^.gU:tpo&[K,mGc.[cMBI,^u9kQ*%nb:@DN*o4?T,L]560+*BSGC=KKs/!Z7pPEV3o6Zth"d'RLcC0QR$$@kI<5/@Ebp$:3\E87EkVn70A(?_[u$;:BP5<_7p"pP;#hnLh%+p!p5naZ-$>IM1bj[u[9=hhH$>f21!&#L9f/eGhp"5C1s1Le9.\Wl'jLG-`WIf9,WIJ^Hig\04#>MR*ASNHTEpYQK#2JhEnNJeQ(C=fWEW)9bEAo?+Q7((T;T!NZC3.p8mc>P+8%9Kq'i*Jr7CCL#h4]\nTWj[;Xr/FX0;p:0),]Y$J/5[@/sgf&k5HkK]VkqeG]_amISM6d%U(DE##[?4B^?7,V#LYS_`r&dl2*q0P8Oreu`0Ja!4;L8>&bNhDKB:9U9,5Siq?./j+U\\6HF[r3-5SLW[&EiBe^,:pG)oHg+(upJ.8?Q/:ihk!m=b%njm(+Cq6H(TC5SYJBb7i2%0u,.8k5agc*LT\'V/8io1X__H^02V=I#NNJ]H.gc-#d&6saKmf*1^#tc3;sI17JCKCXLHB79qiF+NrhL;;fI96c(.f`F`DC5E?YU;r5i=C-S[@'aN/&^g9j@H,_2'Dm+J_I>.)Lq1=Ie.Id`782mVBg(G/f9(UiY^Yp7"JOJVG6)"I.dZr0t,="_CF%3+LWf73edfs](]a!:Im7FT#ZU,H!&k]tHT//';sZmFA6Rf@(ZW)JYa9i7F@\NH=:.F`qs-nDQ`#no36aUHQCZ%,\dI;k6k.:?MHOq(jUMh7@`6b(U3>BK=j@'uM6WZraRJ5"DVA.Ar`-*B3Etm=_H;Vt/^t,S,fTn@q]9;RlP@B?ckkpNr!u9:)s?P1(IKo_@t:@Ddh>0>k]F*?6%gN>fd\F-15m<9tSc1+Ac3@CVi>G3r0jnqVAc-.>9rLD@-5n;"[G%4V:XQFm9[+9lV'c%Y>'bU7FAiNgddi\o_B@YDR#/J,q6=#OMC8'9Al7m,"=-&(-;d7fa^.0=[+/h/8@sA/5prjiWk[o(!E6!s0Uld%Ngr2fCm*o&RrY/+_M]!2Y3l"rFSN^W*g.mp9dFCL^l7[;4BkV59#H%"N`HGPfG:h7Z:;)S(=;(naRUZ=V4pJHLVe<&u$bBP=?X]m]A+^%ljW8qRLW]6<;6o]t,47un_HbM_=:#7hmF1Q32-k(b%-OBW"j/Y"=mY#)t04c1:%*c`J5;%*!>R54oQnirQ,AnTJ`5q4qeL#h3&]5HrcXj55;oOPt#)**,37efa@qtT\kbEaa9gt]VmrQ8$PIJ_$f-WLBfPj[)'*.ePC7ulZn\UF?5,u0g]6!ta7<;L/$5K%gBng.jTIEqBQnTK)!<$ZpI(GB+U27PopiB%!K@q3,pn(t*H0.mm%CGE=^TX]'qHRYM82+^M:D;W'UgU:sac?pmJUP'>\i4G?1/f!PZ@?ib&'e.t&=kREgQ%<-@G7`oJdTfQN'd=kIq*>HY#VJBa[;4AHD/F,NPuNF_M@G.FGi0b7;(@2+ba0ti]Y2#%QS2^B8ekMeDU5"Q:s5JKd-/j9%s8@Y3iHn7JY?7qrquTgqYKmNf4UlT"/rt^[soG_Hq95RJK9[LA]1<3Mqm.EL#c4emnG-(S4MoDrr-/[dbo_8M[Mb'1/K/Z,rR[TjN3T@R>d]srVQ>uZa8]LDG^>k_hT`X/2K)G1:M2Z4u"dS?:I=NFR%@).4Ij07Od'$E?d&0FjrZI*^4Jnd9?e`(dQD[cCCjj^*%eNb;jb4=N>7Lk09Z*;7S+U46HDFXI+WD`'8-RnagifYV*t,-V\ZR?Y4it`/#_f?Zonf=CeJPZ`TV.sJ15Oe##KR,c$C=:/oN1_IIKlOY-V60PVY6@-GmoDZ/5[3\OgP&A'n%\L:#GVd6oXCrC,i?tR`V4_rV"+ZXW/pKkLW0r8gC[Z*pW)I/@sOUEeC>e-$c/;=ZW^4-$,0"=0)jnHP@/qe<@n6sJPB?qW"SdcVs#h^CjF;%026>jTS042HkqWk?\af^W_.Le#Oc2Gn5[^k:_jI1ks&,5JGf2nB!N"":Dc2A?.U%H"C\\PmulI;g,p@eOao++&Kf4(]23D02*Zi1Cd./iGCOGslNUk8'lS@2'F\5;\C$=$G7K+#5m<5j]e6=sgVAI\tOa=2b11tht`91_\m11Z3,QBirTL,hP=!=q9q5"^6BJ[p!n*joEiA*G>2s#gnn!8s)thu_s-mr)]G@q]Q>jlNnFQa:&P1SUnlhVY]DB/\'Q.)U)'-:CL8P/0pV+^RNh;>kjj5Ak2Ap2J#M\e%p&mi;"ae_g>dABX-]]N':\*N&5i`N\QS2kX)#D<]!PPO4uj8$0VZl?!-V#4KWUIUBThu`9rqQJ=UBB1HM0(:5DaSL*S*k?9;<93lIku5ck/JWoN=0GpnG3i=3G#u66QordDd3OonmkoO6bHg*3q4tMkYN=o-bK(%Qd[YoW!(05-j>nL:sgos>VdbVNZF+^:YQ]UN*F$1+7UR^MmS]g94C=Qu&aOQ%V+6`>G?bZI&e#1/;bC;fs!=q9q50?E8JI)SfB[ismh5>UEGgPPYgqj$kW1+D6>fb&/3l&q^92A?eDV_lRDQa&Y:I=nZa8G[0j31XN5pr!4+$\&MQOL7miH>bbaC9_hh>CGDB1r\+=*"GMS&<4]6A]#p8,^.*Aip@-S2;m`%s#7du)naZ/AP"h&:kg:V:41g0!"ST%3"rF3`+X&![-)V'?m;5'4TaGLZZF?Y-L1`aeFHr+\eW`PYTM4bc=$W%Jl\ohfBZtXQ;Ocbe!lIE5L[cSod=!-]@>hH^_9p^kR.TWXFWMs`4_7F^.nQXVcb2ld3+J`@_YNjYS26uW'p,1I@NZPo5K814Kft3P>fcbcR\WQ@.[c`oqY9j49hq8=<;u*9jhpk::a#\-F)DrFq/EF\8fNI)>;ps)n329s:s/M!gOk-2jVFS4l@HIT\CRcddp#.+6fn;9.CRpd]Qo^i#'TIlh,YDBi'9gS3Ubh$@A]QPUrCSN<#oONQ@hF6D)S=**8_:In"n4aJqrQoT47*=oNU[;4CB9A3[YS0q+(Y\`s7+[_"FZqkSq\jcLuIJ`_[#k(J3`mn$[gXcAE>('dfb&?9'9O:sn`";d`LTd.-W*HlRP9s"WcT+mne0MQ.EQp"t$J$-qXcchH/aHoV4KFd&b@SabE.OdZXhSEGs3"=a<&M>JqRo/\&TDq!`iP9QYE"ld`%[o&N@W3JGe-"oqKJQ,MS^F7e\DW`?*#XB9JoY$FZ_s#P/Z`;0#fMn`X""`42A"9_P"NU*/;.-#sc(ZbMjl`Z'R*P-OfAm/@VQ]:YCEk($/L[/I2YWg(.lm^Qbr;>cQ6am\bM2>lkSn/eLhuY:(H&_"3Rl>*3.)kh;N"!:rWLh>)euQ7UXIQMT289fBhgjd(eqaS1s-Bh`FE.R\5X4XJ1T4?He4koSkc_j3;\T29-Sim;h*fPu6iibdA*p3:ikD'QiVHnN7fJ1>d0PYi;^ODa1^4603[OjRbmUV#[[E5NQQCi'R]W^59C88>2_!kp>kYt]BS,NnDOIB<-f,<\r3k73tYFWDuiQN\j/e3&o,uiV,FnKAS'c8)&O34mFmj&H()h.SFeWhg6,>MuDH^7%aA[':VnPgVbMCp:QS5r%\7%UZ2aZA#c%e\d/Y(B&;bNsTVOM`f$r4+]&=ZrZ>82r@q,m`D7uL0',:%B>;aW3E.L0""Cs%X?OISc5jsShV5I^:@ujeV[%WJ>$AN0C!*9qG%T7,jj9sB%m)[u:`urtQDI6@C2.MS`qJ$6f@O+($bAA%(Ns^mVEJO'>$WboIbdb`mQ'[)i`ca9\59YXHS2.3X.bcpO)Aon4#VOq03&F=e?JrHEh`WbX4'r9/Pb+bl/f4)\,U*jDmTgS>.URGX7klH-/4j5Xd$uTZeJ.]o@c5d#0',tldtIhmWr!D1F&e,r67/p?f.ejI7Gp/_t?f/bPu5D4M[CX^,@$'LX:rW`.BBCLbo:2-n&(\";Pa'M?VVg"VD:\.j@NjJo,^KCKnEOC[[.oU989;gKN/[l?D7d]`2ac+f#^rqn/!Pc96C6bTqiq^YB^lrX40=8PmjhUFTJ&W;d2Q8KG&3oD$'BS?g;Z1"ajgJkfrF9)cPQ@>JGh8OS^fJ&AZjZTre6Y9GBe46)Vd\,`t9Df97A=SXUC@3]%Po_Iq8o()AJp$3P7)kmr:/VX#lkOWp\4$1'&qt=m][Z1,D(!rT>8I)8iMa7]Ri.:n"Dq%N!RBdsL`N0k\e%NZC4LhnNOKl"I0,Dr89:_#eh)p[6kL'l#oEMfq[*IMNm&UbD:6Lh-D]moQ/XhaA^XE]Ll+_J91fu4d+5)'n`WH.(`?LkBkcnu)NtlQf=R*0Q56`,EpA2*_CZZD>*>XXe!-g14Q%#!)7ZJHljW0Y"`o.Ei>Nt`S^#J`4Bs#MaLp<_.Y!^->Ti_%c'p.\VJnL74$,M@'5qf-#(o4Umf`q$j7chV.$S=:1Z/>.WiE)'YV9p2D,XA3lM"iIF2C^;rM8`F:u@@Ls7tiqLC]]:QJ'sEnk'4BWk5:sE+/4l^$pc\I/3>OE4/o;g:i!I^_6LL`Lp`W%^2U\Duiso7,13`495hDhVR,Mc/rah21Z-s"&3IT"ld/@?"9`iapVYq5aLWe&K>$:-_^41Lr./&(eCGT88>(VR=VjW'!S%e`7Y[35WhUmd8Zj/-tYbRk%]8KTg]sOTTK/:qoN0\UmVg>AW=h*m74VXcNf)HH,-aWPL$a<;n@9\0.I![r6KXg6K_=&O3:kk]D,C8rBXT6_R=)"\P!:!hlj&0G5$4dam"#e'eu@T-+K;#g)3"cZe8pkN(\LQ[DW.3j#t'(JlLo8hNH?J>t+\Fm>4,gmZ$NB(>E]+$Y3RFdf&$-?*De[-P<7`a@%f1;,g1Ktm%N\<_)b!#a-3)5^*;+Fm)jY`^s::;uB2U0(*lT21XB6eH`;^i,;]*C+mh6Oma5mSQBq7B=n`aA2K8uB[*8,\2Bm5_)?8O.+'R;%_G^Gsj:M-3oo^mQ_Gn$1f4MP(7-;h0:S&U&h'OPoaZ)p58q7;%qlbZO4hAm8jpP(_&M=@Th7In(ldmNXR\:)F''IT5YNkIN-ko9NdP/28HhVE?+(^j6VOO(0hgb[.l3'uAK]M_"kLX'jKpV5HM\kK<&dhW_Kl@'H6D6Rd>X6g[;3qCtrhBo$F`MM#gVlD-">55f9Y]iPe]U4m*eV:HgrO!BkWKs?&#"EbG5u?FQUP(aqJX3?#CUn4d-456is(F"h@eqmKF8Y2%T?j]6H;CNN3!C%?foeI>l@,$h8=h7&*UWQ?>c%h%L*+GK$1LK:/D-P=D,YT@[sqhTW`dNuR6..%=?N8IEYi/QTBjC_Zq\BX3Ad]\YOmFeQj>'5bV#Q:C%b5F[SIln:Seb2>A,Ma^iE1`U2Nq>Lb`+P5;rt@FmHIU[bfX4tD#\Q5_l;ICsklq1p15M8QdY^#?27hBQcoLKbQ`^kJ;;1Xm89OLg-3=huUZ/34ug@.00NfG7c&*d5Y5PtGcP/!]p@*Sj(>c;@/+q:s-^9#LGCcO(BG"p^h0-p7_(1(!4q*qk:T\k4qNPj_2HQM-_OMtZL4*Fki\J6?98=i\2p.1`T8YFHd29]^UoCTp>7h+YG*sH71O<9"7,DZ%Pu!aB3F&,kbI[1@TXAEjo)sF?4K]OH"3;D;5.?JTg#Bcp9n%Qs;#Z?m9Dqh@h;Rj4TuLD+a@s!Ott$PXN)_b>,Dt[nAsrd_c5tc\9jLWtkAFq?Os@$5Q:GQp/Re_F]Shb:ad%C'>aoP?-r6.dttiVlHlX?!`B]A0Iu=dGO'p@M+8O^#o=I41L)=]q[_sflraTi(QEI163!`,`3f6^WL"D;]q%4[['O6JnMdk?E.QYNTMsKr`=(RbXk+7>A>UAkE=O'KGhq-m\!@fELK(lRAP/?Q#>^b0'EY4+$k\4X6FjLh'8N>Q/4NTFp-E'3*(lkD')OF,+4tC8*m\BPL`Oi^BG!9,Q]R3LOHPrCI'<>@1U8XKZWU>uC>+nn_*Pt&UGiZCQi`SX/:nJ:OT[[9Y+$S3%d38MOEcQ1M.4P)acTbF#+f.X;h*kYu[nj!59-h:VMu*.E-B2"('!4F/+C:*N5MiqlB5VU)p[6jSD/G-!\JP_ZE@2PN0JN"RJ,`MkROAjW,r]NZ>bLB1V+ZMrKjD930f1__I3o??)uIF%"'(m18s:RAcTc:$[S9LlQ:k4+<#l^j"V_;tqXgo,"`^lA.$Usqio4_QP#E%(:gWkS]7E1'\+AX!oQ50`SK*8P&)/QRi1i;7&4(/0[I=BU#Z7bW*,@KbT\bb`s0mPSDe7_54MU/ar=BW(?0N^/7iBhhCIq+4OC[KO"bd9*W_1qs#\O6bjV]b>LIOTAU`km"^"j3MOW4>]b!jZ?%nhMW@f/&0_-OZ7VrtX@(ZFO*OBX,:^?+8H(V$gVX^;'mi;OWr!4$"S!Oc:<=,[=endKi;tA)\(,Q\^8%\_3=B]Q7Vfb49[]m"2q!k+aC."][U(ArM:ajhkD\t*O%iWr?nRAko]CUUX*f5_.KnZO!^tQ[nPMcMR2P)u*1q[u'MP%*C9]YW_n;5lQo_Gi]WB?@Oon*W://hhB]V]f'goT@"qhGsLp/QAnBMGn$],e`lPVT(K\55#+\[o=jpWZSrqHSTQL#Aa;$[ubUto<+foR#iR\"e,$RfRYd;\($V,q?;$=,K4H(BZt+$P'+1GbL`Ha[0o6_We>&2'VP.+BVt$YZn8,@!K44_rb/3h=qWEKSC"Oe^qt:ZZWiKpR-aPn>XAd;!HM$Rd;/i-k=3E+.G*ASa:%c'pZ_WXsla>=,iM6D75J&2'X'&rgi2NE3=s/tgU,CP3'D,n&Z5>-k=3E8gfpqp:&Q]6DH!656G;$/kpmKgL2S\:@%A1r9DQ>007DJ4?TA&MB`@/;+CEc*dhl"]3*k%C<@GjB*Q4H\$hB=IlM+3om?SKN?7'rC6TOt#F(a>(fIdu'gDP.V-uoqLkX1Z1T\*^)hV6KD5l$<;k7DukYZTfsW)W.Pk9$`%l=9dTB7);mirX]sbI^ki_)hJ6+oj5E=@kA3+O+9*iK#2t.HX:i#co''16,@$=g"lKH]DUDc?c`LB#I([$f"#D.[AIA\K#H/Cjd-97MISM@7-']>+!_UR$\0,14$NaYL@L!$s)4I`!Va`R[#$`Q-/C`;'s6m`&jB*c:bKQRaht#XbEa^s`+C`t8!OchRbrlnf6"(#SQk*(-rB@/uZnu(Jm^>_?Bs5SsG_ZC'YVjA:t=G8FCHUbaC9b:D]:]Ei]q.W[gEGJ3p6;7"3_t-*nkX2St//B*#M-\C^K46_R5D2Y(\mi<$k"["=6U6(DWp(Z]!*\3RQBO*8mF[7`uf4?^gSh:7S[)1oe[HYR8/h)^rW&:e^c5WhgasndZ?pb#(3h9toCub!=GQ,guA,loAP'`Nt><+DTXK^X1!`RR.%RC0BYC3_WlEp_WQW[HP1)Oi+5:1,;H.d\1ZRRL''>bYi3O;gKH9>+sDu?P>jB5$WSR6kV,ATj&5ein7l\([)0+0-YU!\R>:VoK=ei1'jqOn)uqtYpl>nq20$`Ep-ib'ZDbKZ,8.pYJgs`BC7^sQW97RCsf;B:;2id(;iK1die/4p!pjb'Xn?:_!i%R4Aj3F'Ec=%auqDuVc]VP=Q5Ar3/Zb+d`o(K<:iNhd=)lA[Rq=&(*^f@j>jV(_cF?-%G0'@]*XYt7!)(KIU_?M'b?T&P^R68'=5YSS)TjhH1Qb+7pb2oj4SJs/JSj_^1pt*bh+>Iq9I5[#Jd*-7QLsF>M0.'G"5F+6K:q2^;"1VBma+Y!U0,RBQ3k-J7pt+LY)^e_A.!6B=7=1F>n_d7)FqSP-KF91S$fQ\fCUB`G#nDDf]uS=FQcn>+)ApF_-WD.t6XCrF(NsXX@V&tbC1=nkc!EBBHh$4aWJ0cB>3kJ;ZIp4QAr]g=kuafs0)5U*&I./5fL0o;kNiS6EGdlP\pNksH,Ja%a0hq@T591GiD44^$mm;2qXpDunI^6\djRqT--@'WOn6i;s@_[c5Vq2JMICd2H:`__<9>&1L>*$YfA'-#_LJg6DVB'?_R3F8M!FdFo!5nM/e8ff;\6>\Fuob@%TRT?/$uHY5p'$^je_[Z$+X53:Y52mm8V"R;`3(+uBm==sFb(`?Ka9NHML:*@l;FrXX^'=cuhgK3$MH5B(f6N*H.)joVG?*5/G\'@_[]2qk'iVf;U`1Fm$08`hb/BgX\S?ImLYUmCUs-;H-RdY-P11i5g=$PJ1"iIZTo.Cem6g7f`U]$#n6OU+;/@VS4pqnRtR%+oiFF(U)rbns\=@34f"H^!C44VGfG42n'iJM+%9$1QNRDSZ/OFh)-sh$Vc(h@8Pk?_?jbNc+\sP5uoE9/nAL'1i:rG^3-/HF[??M:ai^d%H.B*"U0fbpYg_.a:4\s\UBQDc^r%7+.r-!0l`mX\,c(n8qK+Qn)*TCD4?*a23\M5E.E`V\L^XF,6%>!lEtO":26=Ko]gEe+A(Tk,b@i=DO&n!EWe$H,W1dE2c?ieYs,V.EG<.bf/MI&=cFUST_V+(rr3OjJ/meU6S/7N'H2Kn5I;>#e5&"*i',apK]%,L)rWudjB40S(3Fq+XYucES^[Tp%SD"05iI'YURJp\[B-mpYQ3+M#cLGOfE8_*"[$!];+,eTi%)i6=_mh"dG1(E1o2=ncUoPp$1BM0"cZ0d>!oJXXs5holk439T:4R6Is)CF?7+K?cU>;IOEFdT2A5@Ihff)]OY=0OZQW?4^;4jF,T0U:q1MqD?uUdRfBq8[^"YW-(D*.HuO=CAY4YT7&0=)$]Q+Zl>Ul,!t:(^osE5Au2HYQ6mbaD9EZZ%(--k\-hp@Zt5e&P_)6nS?)n6uIX\4DVu$WliVBQNO?.mpZ5g*Y?o`#CA:m$e?f@gco#DR[1Mna_Ru:\6mf7MkUhG'L1CYR4qp2mW:2ZMS"[#u?Fo&@=h(R*+"KuJPF@bXc>(_iFe6u=R?YC>bL@$KF:8(\hhdpaVa:$JshHZFUasp)+dXA)<+-!0VYq-GQp@VqnecYjjacZaq1AEY8EPBpV$#j=iY\8ijFq_O"A16igI0>a(o:MW0USUP>R2/3SI2]mgr_>Qj=A(R"f>$>*V2BAOs5^II($]ma9L:4QAT8f(UH3Gse%3%4H[osJX5flBP@HO&D2&TC1;'F@.\,`Efk=76[CdNL=j*]@cgAD:aB;m2)U(SmE]/s!s)H\%V)l-PHcTR?C9X\q&<\Go/R=2.U"pTWT'"8XXBQWkbELa8ltRk_!A6dmhABbXr@\lHoZRLi`&[OpHN:uG1@&0Y;O9&nk3F]kNl=IMI9/G]'cF[KqC/r)l$6q@AaLl6'O2,J5_?Bt`!#NY9QpQc]03JO6;q'o+@sC+!ri^s=;$%K$(n3fOrNilGrlcH)*X;^8L;k#%/-W1K)`(KSE+-eA_[RPA[^'_rUMEb&qV:K(%T7ok0$#/(^]fgpUZ9:L'BNOP$DllO\:?oFXUm*->YqfA"h5,4P9WmVDF8'qCVt47M*mDE6,uCc`!`M4A>Fk]lCufB/hA[S=%C;mbLI]aY9JJirFI:)6Xdg$#Jq/73>lHT:JFK4$NeomL#P!MpbKZ,,Ne?*\0*U0_Jl4&7`u-FN>SrU3[27;b6SkV#QCRV%3^-l[2Hk#2,kg1:i0FRc_/(Ij<6k"5h.ds(C8n\0ct_kb,HP(GjAm(*"Ga/8<'T20M<687#-(bA%&K"_hE[[8^p'.*8ENFpSg3`E-PTQaIGIW>&A+*ie@h-ATLekaD0\N`IkLr2%.`d=2aC20.7_!tHZ4JVo=LJ[0WA-daZ"Lm9b.\:=#"GI:k2^PSKT1u0Ic_10(j/V'Duk?uo%DafT-oTAN!bV'0fHAE[GSC^#]U41JdbNg>j0kIB6\[2goEl;e6E7q:ai^d%H.B*"U0g=E'ZOpd/W:$WL"1)na^.0\J&o=Y%[r[dHV#S(?Rc2&T6X^SQ_DD]Mo*F&/UNT0JtHM>01`7=;m"91F\jg8GFa@/?M^k5'n=nClEWr''HT5Jd-_?IJP,[;J[8uQZG80#@S_k5B`%Z$&@6#uZ$POJH@#GR=6q&^4l*c]*:BY5^PU-($-OM!ptFt&(A04aSD8qU.;^#BW(FB+uL)rJbLQ291`a?JU`cNg]J3qF[Xa7-V4mq%3N!Bk_SithLbo2@4SJ!ktOH;_5[!KTCo!/dB[P!VR12b$j`C4\Qjuc3"12DqpWi%ep>[Y9!&MY!HghUK%;F[KdHqtA^,:I/3qfp>lhFJT:\kU`FTbd?C_cJcYFYF@W6f$`RPd-E;]R5@dA/P2.(D8rfWI@#CMk?>`VC55@@e#dLW\0)Rq^kF^kQBTK9;876l@r86BV6r:$^oL[4+($WPS^UqILFk0h5l7j\o@pnT%@r?ZpIeU,-pGWU!Z"I*&h*eS_+MoI7W@YHd8:uTY4o05?@/S1[_(JlO5KQ'5mMLu<+prKTGNGP&&38EW7CPfB=Vsuu0ZugCq`hH[9f.`T9NQL38;WZXiYjb(e4!0AW@q%@uT1(q\r6HIf;YdXDK/Erfm+TD`4c^[LQ@$k)PWB32!Xbd46F_Pb6.&$/+>-=f/kgQg=PpuIqV>!sb^B9:2'IMt8oV=o"R;`3'/"f&3fFUeHsc>+1;JV!lq?F1\KLc]!TL8a(+q/^HW%Ub1Z;ESZI46\m%!c;h%6pBGD-L,Sm#c^aY]M(]&+:jCccl'd`Y`kQhC\Jj;(-Q&_?CWGD+-h%J8dfjU*3d'%PE91G3lI'nm^kI&>.UsEYuS=!0rMFb(PD\$"8l^>5($Dm/e4FcML!8i5pL/rD5#+YAWN1W-'Z9\@$)D*W>Dp7]fXZa7aR5TfrTcQ.ZW!T6n800/c.EO],1A!^gqi\!Q,_r/8@Ip!06Y9k7o^teOaVuj'1IT)U\$-Gs&CMi6^gtl1XA+%cob5soi8`kJe'm:q>+7iD1L#dsg&4m^E#Z9`:sNK*>oXgG:J2u%1*F5RIC[LNlmr.9acUDoAqg,_-co5Jj=Z4ij6@q6M>-R:8jYPo_`FJZ=,kO#Q0k[gQNXdWW(T\tOGEsCXZ_HW2)[5[E:oZb?#\uD$aR456Ykmlnj4U$BoDiD]Q+$`S+(eI?KYJ1cK3=;US6F_P4WNB,$(D`>+J&@"/7YqKaM$)IeKWY+MLV*;0qtoisWEfeugkCChDr8;#mhd6CD$UrB-A2b?.?/9INE3=s/nfbI/nh6s/teF[KF;J<[YDVP.p&l=G>=boXbb+s..n:k"VaRGV%U;r*ROf\M3G.#]\1#7fA-9-r!Nk&+0Y$W0J,ecskU^#N<"YCj;!KK_$Rh7n8lZfkK4DJ?9V41hh8YG`X/]L=GVOANRKOTa4)[;n]B>Mf](Y@<`]p,mB,`8sEW(Vf?c.SGq[XfS:cBP&5YGgE$YZo1NGnoX,%]kF]266,_`ss8IB9oP&'URNL-J[S_&#a:`\=h`H&NIZaab#hOfM6(*lD>[Zg[2"L06qp^rlQAtMConb#J,+aXZ7tFFRA#0aGL$s/S;e$On8u):n7]4o[GX,5$a[-T^gsapc0BK[NS2&6TS,sIUD&H-`@E;X8-l7E>n8Yg`m7KWr3j1>RZZ;"j*le%R6%%-D9\VP"SJ#?hKqkA4fpIJg;62VR^rX@XX4EbZELJq1QI\?KQ+=D_oWF\>4g\l@\PAaeku90Knd@LSg1I:hpVkpriJAjAch#T)R`K3L)Ss/?[CWB?Bu(uYNga\k-((clVpnCnt9_5o%j0/A"$P0I06>$MP=3H/F*MB,O8R%`b:Rg`AM&M>J8$AAlPl01r<:("!@Ki18]>X5"4<[rY.LQ7eKS+35H/-K<8R-@u(prQGGs6$#(*]SDCF1:r+.oq+^!\T;1%H2oeKQ'3td]O7?+^C,^#T"2GfX**jTW3gpE=u^l/k?8p%(K\^C&D8O&E<6/X(@C^ik,<1iL&+iE;%W494b/L8Ddg.$Z\)@"VaQ5W>mMrqqC:)#5X'nmJ4Y"!iJrnO#/RLX#tD-iBhC?E'_lL-sS`XoI0@1WiAZWoqP@K-A2aTPhJ_UE'Y_.E'^#T].?jpX]pMJQqlMFM$WEF<+PCT_:$kFE]=i[cJ^QkA3P9*<\j$[$1G]_boIe^/=X[qi9;+X==A5;+qK%'=jt=HT4_a?9pdeRju%,9kR/3,9j<4umbNLplT%!5P`NG&Q-Npo[Vns-,]DPp/3$bPfGMa?D/=St;^YRF;(q1GFfTq8\?;e[K>iGtr'ud;E:]sNj#Qr0h]^E3/8XD#ZVI&Q6b@<)G5!W+Kk`!*kKgfqcEG!fOYr]T1siGhh)]!,eB?q+V8_m.VlXoZ$oTrHJ,g6m)h6bZE!`qth!@[O/l>lV5)5oriZ&G`e\[#8U#R:=-f[mm*X26&2.J>mAu:Pt4(g2srJ):<3B+7,jPD36<_a&-.kGqPUI1-Ylc6_B!!GYEi?;^sS(k2M3`))oIJ]^jf9VbO&=MCZ_<^$rreZQT&jN!6-u&(rPq3g&Ig)(4%Tk;8'7nOHQPd66i)Olsad*\P9R(,ioH:V_,Blb)&oAPs#lg8'P.W>D9cI!EBa>Mi@OhgP\?KNC5^7[*s%EWL^4+a+O]RYYp%s6]nFq+al#PQb)@OK^/R19H4ZgI"6&3WA2WFDok5Xf%,&5cNa/`VO]KPVS;]I^%AIG!EgghfY!tK.ikRlS#[S]1'Md^A%f.#@3][qeib+A9?:^NK+1,I>HhlH^>/#C\T-LRn5'=nMMW(QkRW0IrITTgubKF?]Rc(,\n`f2d8WJ.rB*apai$g0&c!bbKLKf)L]]=2P"iG_MM9bZM!cQ9_f"Dh>N)ZgWc;FF8MVi@**An\dF)[d7!pYsBL;[]:&>od3/S)_l>EGG=i-m[)=^[a5u(0GdN/ABNO?Y"P,4M0DT>T*\U;r/r+4U?kaQN:jM+3[H%p=?^W+O:DQ%"o#*'@(Z3gsXe1(Dp-^7kZC[";-_V@(#L.)];hBi*b]sb;q\=e?_9/M,T=m1b%@7QY3rrbs#IIaI$^`,:`5$SNrbUm5S#!*'SM#!`IK'.n-=:ZJ^GF2SG)?2mUBCcq6r(>?BFd]^.kW`7MU3]S76JHRpe5$L-J8EW.aE91OP3;"L@Z/&[F=CiD[pL6QTp_M+F4+hD1B&nXu:2W1"Sj5GFT"[6jSVtPVM1Z1[0>>ASt6g"m?rRQ,WT79;"0aD96O2S9aI7mn>kPT78'&]$RI0$am23Rt;"j;cD.sJc`pAO$]h2&2'VPC+G`^i54g3YJmmTVc4--&2#A01o5$P4Do,K-!VZ>-qmaJJr"E&LkqWeJ(X;O)%Rc^]R@E\Q7_7mp1un*.?>Ol"YL?#+DB1K8-#*/L*C6ToH#h[6JBjIA`lgeeh\b3>%hY`VdjNOXh`s/Vbbd09Wk'tFFHD14o)pHmg^F_N/jc`5pqa#1_'.!3YWX5hnMDJkg?'1[#jWjRE(MA$_R]qSgcaE5b5<1MSBb5i9Cp]LWu=aB;_A,]^X1)XG\-;r4e)))RL[iL8V3Kp[(%fr5#,?Vb;s*cca!B)k@-5h.(M_!#Og;3,I,#@X;W4e;uihP^Tkrt+9^PAkCCR,AF"K%6I9X/e5OHp8Z!"DQeE8u3"]6iXp[V"5qRmP6-?ZM!jMM8$Kkj6[Sk;D:l?!Hs`cLM(,10be<6K+'!ZQ\8SV36i>c0rU&CWIst`2KD+?biR"."TN2,r,fL!R.o=-eS#8N*r#aZj1"GD5i@9u5,"_AoW0IrITTh!MK*taV4`kGt@\@XaACh!"H$7nXShBL,^+2'p$iE4\3qrPpqcTkC?,_!aB)F:^$l_$hLmamY^E7=HjE]fdHT*%%P2>a-LdRpU:E-4eE='dr]gU5LkG&0-#0R;=+BgoF%[CSiL9"K62]mnf$WljM4BhfoW!;5X6(G<7IqU(%_40:'8T`f[3`(V)orr?ZcfP\rsc1'4&hHAMZTg*O^A@Nan[GNXn!nG-q,Iuu&JSMqW\DZcA4`&b)`RU#9WKe#ITMTAR)SuZ2$ORYD.<*+A3<+=k*@=RZ(<2X0s%FQMCd7XajYeP:`f1on==i_WbOAH.j8p.OO69;`N]_YhgpJnUD,@E)$]_qb3J$(+gGW`$`"kbQh3KUc?8CX4A"L6A[C\L_%N%!VpA$lUknC+@4:/O5da]@^m98n^_D_N4()=Q\CGYVUbY&bb,Qj?tr^2(JI9+WnU?&q;5I@X*eC?G-de_kn+E<<*=lH",g2n!\^\\sG@j;T37Zm;dF6Y>_1gmNX2Zk2oJNI4WH6d"mWR+QJcmV*/jtE)Dco*oiPje@D_F8Y1FFf\%?5irPHN.,4%Nj*kMUM8WJ-&:a\Z)G31)[YrmL&bcsLP3V1Z)tB)L"(ipbIcl!:'s@)U-U"[LY)`me$m]@g(Pk17Y%-Bi=cB.5i"a]D&a$^.+f[5,T&P`hkDE8g)]LMa^+\/aqjnt2oC-h^j)napkMkE7.>_hD.:mc;5Ni'TTP1Dig?`m'=W>N_THRFZ.kf7FE%9Ls`8p2)f5!A=/Sp7p+$VtOJm((sSUE5)uQ5i[U-[k"(Bfl:_(XgV*$&iUV&C*bVo-^"Q+qZKg_R@6;E$M1-]&;RD?4g_T'p1ucZNI`Ia>.>]c>0'XP>%6+PD\arN-74J%L+9?T'M>K\DukYj>:Bh1I"Onu+AU(1$SA*ITV3M6%oNc_h73WA?8M*X!$u0ap6b5^Kq:m?chEp2eqOt(-Hn.hrXHMX!A5*jREJK&csAdF:)g3aKsmtdRMKNq,d'*_jo%Imul%g$7Xn"DY>C1kF:\C[HV)o?gG%S5u-iR13Cm(_S]\WF1>%`6RmRs&uHgWW1A:Tq)[1fq"MVI$bu8)rQQk4''5[9h7VP1W,pZ*^5Dq^,$Y]Ka2b78qsom,VM[*clPG]ToX&jXiQl<75Bhglai'm`WBQ;k58=-aO7rUg_#OELT$YF]!Y0.l@^-cemq*n94NSi.f\Dq;UeB!-nl6=\K&e:GXc.3"V.?P9>e"bFY'[5#3aA3tQZ!Ns'b]$<_psZ+'.uFQ+MWe0\lhr:#(oJgNZ9ed_?cY4(%QTqe@BIZE5BKFm.3:^?fYE7nQm"P*X;^-2B6VeTWsbnK-"<^Emj,g?[#>8fm_&B!,]S+%Ff$s=P`1`N^C>f6A9l]HhYWuN6U"Y6#rlQK[6b#r#moc9[V588B>-[r`nVJ+LU+imdas;2,99e2cp/WI6$k,s>K5:EIbfYH2h@IgIiM=VaROB;2V<7M9]SC9/eco%6^>+WrPY%3A:_)[jRSf5DDBr;t65>,i>j8:Dc4ap8e[8sYp]Ki@lPff+!%e^7Z(Z!H9ejcMWfhq>s(+H2=nh6Ot8GkfCL:#7rMdVe?Ef$Zm^o?qR%n`i%j].Fc5;M\a^S/E>3j?U&cto]T0Cm,SB^9PeQ[nqINO4*9aUB<`f=]I>IMl0TH(_uK4Ui^?aP*^"t&a\r587mfl-qXrjN-'guO0Q@+KN$lIG.4r1`P(A'Fl5]]ldXSC$pg:V%Q#i5#Q(X+LGA7R9a\->TB"8Yi/-Ia2R,d-r]sd9rr+UOFVl;>"-p)bRm3#6=ef[!u51?oS3qQOi?BB3I3*/2(M%DSaeg4dOO`gg=#@7k+?(r[]4;'3CUdb_W%7h:[bU=V:]ankD:;aFbC4_XM7?.tRp-9-!op&XXX*r`'X94;iGJLpC8QrLXgV0nCkN0E,tf9:_SI8U)H\rZnan`Bg*M.?gnEJchq99m"j)]&&FL/G%u$nl>dnY6fXRV,2',Yi:50GUFS"X8\[n`/b+`AN35WK.TCTMTARKF8&%'J2bh"eM-MNetmI;l;CC4<[>rIfj.42e(@>Yue)%\9Tm5X:/R20VP3B!]j)E!fpW6oGCk:R=>28^cd%5"pGTgM9$&W\Fo.;DX?#,HhU:JI2eVGft#S=BiAdF_J)[3`!mZY._jr[Xkhg,dBpN0a]$)PSBtk%FA5K)oCGJC5G.K(!K9:YX]sQPmk:o=ZepQN&Bs%Yq:ID]7;h=3FEXm,T0<#"ie;;kZS/`[kXt`XBl\LP#<#eQa"nSl@`RK&[fpgo,kWYHE:dh.YL(mM6YE>u_M6@qEiTa9V%6/g-f2`f^f5TFFlk5RT'=I0>e\ln>elGPmj^k:g&-JZ1B2/F:(eK;H.JoehtSX+q=0e?JSNSSdU_?_Qj>ti6\6!P:\<*5.OSfp\bhNc4k)#26KS?lTOR_+D!I5l_JQCRmI+2qRf-8[)?2Rq*j0Mj_0$YO*m`a330dPMQ\_kY-,$.$iXMLe\["uT%sQ"pM&*?N2\]oEDu_EfpAY@0)K5])&&&:^N^l5f\glb`bO)3CIFtf9,(Omh51ESR$2MjTKC]@"l[CmYW2ZN9nQK`l%,f-K*YQ`\0,!C8i@.;JkWn-/2?NVUf\9QCY$*/42p#/"pMcC_Ke`8%jpP$`5hQ`q3JmI=':$Op2D0;31Bj>Ve+W&c%I`lDq,%enT]AH:]*s>YGutV^RcbEE[\SInR^=t4[nKANC!W'`>1Y&ghT`';Q[CTR_f6Mc,i3ODOc"=B^\Ws&3c.DL@NmfWsr=DIejWW5,d"$K^e`->?nE/gOoqV5CV[6\]^2=.Z/"P7*HV`PMtGeKaW_jp+t@fqMpSEe#-.5&K&#j:Lda=[[nP\^n=iNN^F9s,3I3C\DT;t5Hc#tRk#F_(j#4Vd%j66Y-&amI;$UT_4gh;E>*9JQCPB?N=l^n9-ZVkpYW\jq!F^/DV$I`7d5Mk['.79T::8NeKpBrdGqHVcAj&(Z7ZbsP-5WRjCFeF'gEe?AM@4uVN#(IB+m308=>sW.=H18Ua9'-/YH;$k;iJ2ZN%oQhq$MV/$o?uJI:4//mB]hq?(IQc3DjBkZ?`b[Y/Yk^O\U,gNPBriTf?)_QnW;9s2h@aO`4MqqYW$bupZA_5X-Xkde:%(b,qBDX&X8u9X(nl82hBD],OY,h0ods@1L#k^$k"dG1HnShpZp_g+JrRB!CS\sD))jrs4B+Ni3%\>n['S?5T8JOG^e*9)fDVdEZ*?m$!XL56U3s0mu-Bi"Nh'aPIe"R#HLc(WECcIrPOCDj<:Gh@ql8:*(i6I#m[80dhUG[`5P+.Yd!e;pF]@SF(^T!&MS'>qpBXtW\20$N&D;`:EchhVPm$;HsC^/EN418eN1.p)KFM?IH^pOinr&7WmSbbPp+s?UM5VNZ8XK1biPA"?_&)r9qE#^3.&&dF)TC"+q.;-sCYB$d*J\O:XI22>Y/nNGhcZXc[Qg9e:i'TYG%_>X5@:ZH`*p3CY-t&MB`@/="*V20$ApWENJ/#Bu\:8aFfG!AsSsKboaZ/`HN"Y#QdnRL0j_Jq?lu;A@gf$Df(9\:?oFXV:dP:7aZJg\q$!j2[2^NKu/!MJtl/W[i$3oBB0o@q2uS]emH#[5Gf)`>RV9>,2`_TN,ZY$^-Kg!Msc=ZM^7oEGMoGD\oMnm$#T"aJ-1SVC\Re9T?bCRYdJ!6g_E7<)&+jT'-dB&f$5\kgP!VN'("rctV'\O=J3p6;'EK"6IHCnDI?H^@r?Gc\O.A62-+S*Z&i&3gonLBYn)$p527n9-Qu?Af$0`<\?bM'.@ACla$l;1l.k`.n-F`[VLl1N,HS9kMUGHQ/&M]if`-qE^V<&H]fV>Pj`8iR&R[lAZiI[e(=5^r>LC\07CC`LU>iQc'>9dBLS.RBH72k+d>(oGU+P@#::eK:t%MsrOFU48!XA`+;#T"aJ0H`bkaXg^<>m[QD;6?g:+X85,7>hogD$#Dh'-UUGU"!,#J."#:]^QDE:DS-A((Z*<2fBiL(GFh;2`/9g+n`]lC$D68hRlZ:>^6/>>sN?7);sfAF1\FZb1d)T_I:Q\`Ll4;T)uk5kuCgC!a=\T\=bf+>X43(_?I:RNGq1h&MB`@/;+CmA3G!lN:G@sQj1D2aZf4cRBE*-2R7&6@^/Xd9uDUYGQ2bab%ijL/hC25Lr\O)Zj@F=9n[HdKi2,(!\PHVHL.]L[XM&_CX6>H&0AVq9_S[)N0f#U.(jN`P0@lr]Ld\HRNL-JH(TO7n9F-a4n)Qu(C#O#8eAiC[$4%iJ4;'B#T(j$[5Gf)P`k^!_ZdEe>>sLtcCI%j?dG?/=(j*4PWB*/!Xbd4;UC0D_M,Vrm\@XQcJ@KF!uH:Xm8(TQfRt:O(R-S+$YUuKDukr!Z4S^^d;!HM$Rd;/iG:;^'!]V4#TZ[;QhRnhd04_Kh3M['XO6'(SdFkX5A#NO3L[FNX3.G,k^CO?p[$uRDRn+JSQ2_5?q)6d#+g\(ZjH7dHi-lmbe;C-?Ksu!X6GGEshQ5():agGt_?CWGD5DWi5]#Z^f3a$hjN_KV*83;)BO"a;M\e%>E;5g*1;efA?T*$"o_"9&lUKYO+hXN?U1MLm@U_LSqF/DIbqE=X)`fK8C'#3Yl1?>%r[L]2D7`Wnb*.;NM7T)n_?EqB>FY'E&6.,Zl4@2k8R;`WU$VE8.aLL-NGq1R+'gADiNgLP(]!FOU/?OfFEQ5s0:.i7n"3sca5\e>Sg8`[b'PUSKF91S$fQ\hN,X@50gjD5eb(G9:^[jfe5Ab*7`E?cMJ`TO;Rm>kTMTARjhh8kneE[/1YKK`Q\:g.KaXg)S:0th.CI%%Dr4DN=id-ipZ';T!fb?BMe@\Nie29E:3<2,Q$Wr[83F3r%j+CL6b&e&CHPkkE9gtDBN\[8604MJU_,58F3_^A\iT2%pWDIbRlef9\83Q:cZY.YmI&Et_kYc1=#_V56[Xj=WoEKik,*re$_`,(q9ou&n"0n<5/(:51k-Y/!5UaHS>`rheh+D)#UTa91k\8_;[Fd::CM_r9SW^Xc._VQ@QgP$*(hik'F'hZ*QKea(h.kKJ'_m8Y+8!0)_Wm]ulE?XLQnoChR`_af`1mEnS"P(&$^%id_(o$o7(o]GPqV2L\I%1GS5TP,KRW"WI8C#poj,N5%b^OKU2(r?GF>I3;*dc/#$CgMJg!@lD`;iP`^S9r6N3nZG7%iq-D6OE:-l`+sYg0,kJ9p;^A[7`uFK+#Pf1,]o"F!i=`Y,;OA&2'VPKFfaaa9WT\7_#)sq>:%"))=V-Xe8K?(W$=i8o5k]\F;'hiIX$\%i>([h.e#QY%qdp@'RqE2=hnMEl-(j:d4g<8`9tjU_)Bo>IOqm1m,Fb'6.$=U*=@`&!j@N>\2m\*'Rk%k*%12WQDpT%[$Hn@3a*iKu>tIqHP6if7\fKGOE9"53pcWnFU73\NFs)JC1.6X2J.-6e-?V>SkHi8";b;A-hie%14#$i.+'U1/om/,7,)"!l:a.RhDWl8&8>2-;BrU=Y->&%>-Gm+gGr*/hAGt#:&0X.XLNA>OJYbFgqVq2QrrUBMQQMJ]NCjbF:E[K!R!T\"SdsmtCW0ZMt%WR?q..`hOK6B**kK7d^t>i[0]=#P#-t>mp$Zdb;hMWoA!iRbE&u87"c&9,b;oC?QF'LEH]tH;KHpKgSDXnGLtSO_5ssZ)I.LPVfU^.8XI3]LR')e&a>3/=A?gQW>\"6$K!We>,rDnEA:(0<(:s)?)F6$8N2P#\A^>YU(G1p#G65FF`i]BI$2VZ?GTch(81+IQB$M^rTK&ZngTd.K.8gs"``rZ";cB.on*Kfmk/P.^hd]a&`W/j%/#l.dr&!g3A0b30Q+#+]3YkqEC<;^5W)>"YC"IOoEuTPt`)/r-:Dj*H()/M@qlgrf"_q45Dc%.n[e\t%,4(ZABt/7D[,l=^iR)B840iWK1mc-L.Vg.@A.oVK:4@JZo>l>7kY,mUni$GVK+n#rE7,@!J_=W.J\c5jJZW:05q%;iWqY,R8g:M[_.q((l>HjQ^jO-g"=-$^4,p%4:5#N]0>g^fGNpZ'"iDdS!-g>mOfNU>A7NdW_(V$k%n;ccaX9^XdZgoN\t`V+EFhQc%DjRa_DlAlo?OoK\RJ#,DUE_lZt_AcSDL<$dK4Y<&7`8;pR)J(UiBlQ_uLRL"Zo`=`j&bse!*2cNG[d*Ts/hnjtkMP[@Hnc`UA"cpSi_*5lW#e0dB_M.,qIR]'!]o"dc*gJC3LPugo(;*j!HrW`oIqg9>8*gf$KRaFGopZ>]l5DIOi7@`\Vl9sjNX%u4;%-`D1-a3B:S+ToJ,%[25S$ie<&1ha:Ai>_?NTQ[:cQHnKa\)IUcFMUVlognM,oPaib2)]>;Xi/I1C=LVTg=foI&+kaO:Y$ab#?>X[_?DZc3oPS3,/(\e^L`PI%umlrDa^-qVja"@p@ia'm[bO4/1"PGG&>V;MhW27ldR^HG^4@eKZG9#-fGlPJ?Bl`/+.F%k5ZTZ-4S5!Q^AW[SmEun_b+P8(OeNVEbYl46Nf5aC+7s+oX&jX.t1gu!rGUZF?,N[6FCb57_=5:$+8'W;"lOla3s5+eAD,tM8GN#>X5!]dP/2hioDHa"2=Z1UN#Mri@5=mlV3eu-K`Nt\if^fD5]8X0qGmQ05&WL)cuG#E:oq@ehaeFETXOMZhh`9?Im]Y%L`W:(>_1N`6c<@cISRH/=aCQ\1c4s\O3jf%Mu^#kq19/Lr&,nQjZFQ2J_S#&-0Hcnn0R!!e+=dLV[B,Ed#3?mO9-Ig4.Ak[%=7Rq8m!H_BHc""Xu;d2'=#,dB0'<.Mor*'M<426b%Yc6,B9e!>gJ25H[_YK7/LbKu`HPmghR-1ajq-,Wf4&\DZ55s%,1`d\O.705!Cl!0osrSEW1M&/d.6m*D>Qqqr)6LD-8K$Wg'4E?hofKPP*$KaB81ODk6M,TpLarr%r/JDIhs)E*6]Y+_ObC?ha=kL/eTNE`aq.Q=T?(>$05)j9dC%,ih#)-VB3%+qs$XabtB!S"K5=6?;gM[Eh;S9il;NPEt7Z_kH)9_ROGE6)L/HRC?mR.HtqrZ?dhYL(h]:Vi#-ZLOtfCqVVO*[)lb$&`%(ak\hO?fIe_3EMO_^FraZ,&Q[q.n`Ab=+=B;58DV_Km%qCA`;Z1:PF1h&u_g+O+NH',G]-bb+teOH!nE1C7Q.5m0uS;]8NDJ%UB1Xj??!pt^GO3X5?Vl]C6e,cW/\U]?iX/,*Tb"Y75+N=pF(3;L;nO'(C?XGoB[?D)erTI/$KjSIIRImm[7f;lTb2EH>N/`(.4DnVPs#5.f;l@5nhB$i1[q?@j6GV-gKmI>8jK)!B8([(Ing(+_(Uua-bSO%@b^"PZ3OD?,3BsDP&Td8K5'5T$:j:%ZJM8kJmoNaT34ir?IsR*m#;P2/Mt7-X4$)j!q^Z"0>]O4NL1>:?I6I#5%ouS4nT)*#^*5Tl:-Ya@EbB7bcf)^fHT*%E?F"Lm$1a7LoXRdr1j:s&VObohk%$)qd&N[HOO3-[n:mZ]^\-T9HUc2RE8IHoo^>FCP*;8eWP4RmnB`jfe%-V>#_043o"O\omH*O^/bm%o%\,M5.B;%N!c6:=c4DVtOJM%d))B`1Smp%?-*)5/7;I#jW&4ouI#4:HaA>JQ-&O^i2i_^uZ-V-_^S-b%GQRg-XE*?ac59"d_YUKJG>>*?6%5h$OLcEZn[QU"!+"KF8&%'J,[eE$8Tts(gB-I1!iWApV,gq!i;_o'BM!9aFOdq[FXmT9P^*R9CG/<^ut,:B<1mYA7U1G5!U,&>#@!L!;tOW)kkBfF\J>mbJQ0FL;S.&h^D1FiRe$8eu#$Ht[8-#N]I!>YuhQn/XEG58?(l(,[X^i^DbV^HoBF@Ijih4X(9#Q2GJrh]BoJk!"I9:14goEORRLW>?%>=[i4.o)`(:_Kh1Gl5'aC$KaJ7(c\moGuFp"9q>[^1]9dsFE!pH<$oQ0bH2Bn:i-jTXIOFC"saGA4T6In-"ln-qS+!E"1?G9V>hGNe@0;ML,dE!i,@8q[niF-85]\dg3P#g7!cA9Ve8IM_*keW_?)--Fbuo#fW&Kc'J:k_/S,1;_)-fQik9-p,ff&u9IAT;^;6E6BceG#DVMaJ=AUM-Pr12>fSF`lfu*LDPl(p((lk\3?D$UqS534>EHh164*gDe/kCIAOUts*f_nQV,2m="RZ21XW*Q4B4'[#mqnEgo-K+FEE4'OoZ_25bUSnE73oP(d+ig^b\5PD@\#TGcA4^l&s0kH:O1+QHKTV\P@"\oF:f1)PM2@(`>="r^/qaT\PhHK'!l>+09,b=u(sW*=9&1qhVJosAW6J8;7L(U8"<8+U8NU$Rac@",0dYY2n)\e%e4`5`\qC.Gs'b/8AVZ^3u\o`9Gb1k0,,1<(j_dhPBYUI/&ZH/QcB9k:6i%!Sq4XpYimOkC/qgV3.eCn8`^8YNbb!>$e7AOp!,e@O(Ki-&"VciU-G]lTJm""W4?[>tk"RKh])/5;L'L54!$:D\-jKMQ$]kXI$]<jrI=gW2O,LlOGg/j$PO"MI";[d`-[1T\DYpf>.B#i\Bq#**!g_3NQK:%;c`[+H.`ENC`b?m>H`M1)[*m\rLJ2Pb6;*=jh#(oXW!e#V8Rl9d\CF6VD;EUNW&HdH"d^Z^#8.#cW2"aE'aIMKR+Yp"P?tu7]1=+E;DEVB'AD\h/p,,gZA1t=2RO.]KmB5h[YMHVT4%4gl2&+4543m;ds1'r1RF??)bk-=u^+X)io.6Ns3Rc3?k;2:Hcs0roYOA9S)!_i.!<$t_"\;q0GVF,NhlkHiO,/bta=W-\W[cGOcI`)Z/hTHF/tj[cAQ^8rbsZ#[HWP6R>>`YB`qkd*@8'IA*7W9qnr_RcO4P)YPjY,*Ue`K^1NVO)+#/Z61"jpARXb&9WO]6T:1*ftm[m]gBUrfh+:*OQR0sls[o$8<1bBnfHqSBb*GlhlpXZlfjO"]8Uq[_74af%IDVm?C92#0IWQ-cXlMJ#]UfQ^Cd*UFdKUQrCj.((OqYfsm:X34V-bf%N]F&:\YT\*oD/=B^_nmP.5M6%l_3dgMIdm'Gl;r*W>UM=/kTe0'LN]b_*`9p=nM.Aki@uA8^[I8!A]3F(+@$+R.t8mo'p#6Hn:b>KM<%cISjJn%\!O=Y,J1EcXMt(/gd):8#.JY`._4$e-`HhT.7mIKA^A_doLE!r*B#bnVt\NiXImQL15o-:#?aHZIQ`8&#<2XNT!\PNp+Qj_u0cHSh!_%dFG'gO#Q@WZhaCd6Ok30r9+_,+*?Fk=Y8kU+VuBOY?4ZRe9'c*$dl.a&Lmb7B3@aFJ)7j.[r5&gn/ru&"nFof[rq"/d9KN%&g'*lRSYnZ".c&JIkD^,(gDPlMGu;fiR15^\+l(FiS_StF.hcs!)`n#s=hF$Tc4\qs4dI[*p`_.N4+,CE"+BFF^*ADN;`)6`6j:J#OE88)ql)%%M3P0ZdVV:_ReDZ/Qa&=9;bZ9JqXrPT)OR!%hOXfN"/aD3qKMLn[noZGPV\RVm)U*41]]=NN:\FDhJ\QON@*!rFjGYb^YBP27"tp."8f0YS"%,Q.2P$/FlHal/Vb#:*>dI?d#_WQm-^CU=l[UfR#4b7?#nG_7jq,=kH6YGD5L_=Uh>]OnZ;T/uT-3b"+a5ps1EW0FB#+>o*b@m'LYkto)/\TjhO5FpA^pSr!?GiHk_l$=Dj,'-aIMO3;BI7"FmGR]e8nZl$cL6V?&=#[/c%Y/rO^lF=s79"g=#VnR]m7fV]Y*-NhhpP_8RQ![8:O8sHT&EJ-OI?&F1XGRA.CK^d=XJC?E7X1SfF"9*Qb:$a.OR?Tmf(I6DDNIU%5$&-["^gjQ;'BL7!(ecn5k:X1>bY=BJB18bDYR)d!fXntMQ\&<6SZOmaM*blo07Y')U2,>7=CBPZj2B?pJ0N0SmH\@I:@b\n.\g`8X8H/+Ol\`qi%#1Q$]*CFJ;5[I=3"\/f)Gs0]ZSHoUU8J;Z7.J`*@CVh5cp[[Z(dmX5m.0>&s^6SD/-c/`Y"p(SJf((%757$oSd!'#kFDL#`RA1mi=(65:WA#%n*h!JZ,4F4]3jgR:GAg5NPhFDD]WVjjF>jd^((HRZ0`],f\"V*)bMuu3jmE"HA_03pjoV5`-ksbG,@$CjbKC=dFf=PZ#!.amI9BeND+@F=EeW62ok:`p=jljtnE\*WjFi/ZW<>aPoNc_NYPE@gb2lMdWHOC<+c&Nn3*fT337e#7hU815\65ru=K4S9YcRu8ZI(7GUW5tajdrVH1<1kZtkK'!,dW%:%f(Oeh(5QCZZr6u/pA^V+eGpqk)V^>a,BJ'u<*]%j8<26HnKjqbH"k8I#Xj!i^/"KaW(<^".BUW)Ko@>qn?!]!$*(ID(U0+#N&\50?N8pgj^pG$\,E`gU_-PStU/b"?;COY]R^&kcCAI$$"rOO#mE"0p1Ydla22NFENQ]f(YdMF.G!cE(1)79?Age5O>d?;QEUj<\`d$qd!3+s^h;n`=ceUf6id6qtdj&;sP'8Di5=m-31A`WO%"b4"QujT2-,4NJ04q*3TWCR.gV,fa$f01?)!1n50GOm8RL@8I`l-/7-3jM*>sV3_R^jSN:g7ES4afK\5$bjBSuecVmf)bFjF!Z-0r2ALmJ2M(WFMW<[45c4OjL%YY']3_o:igG8mbf"*Frh95b(%m.l>>bd_]*;(;diC*qkH^qS.NiRQ10<_-^Aj3Z&e!J9$,]V].#GNudN3qldO1XZSQb(Z=$RZGFo`[]"]O#bAI4%#7eIts5D.f05&V'&*_Y4-KgWX;-0r,s7GPsDJnn04*Ti2?U2::5Z+r'!?DXl4neF+a*7"0n(>>.c)WiE*B\05Q##!EU"B>BZ[CjaC-DP^_06U4$*mF[133<]Z:GDC03YXqZLo7m84M\8acVYprBbS!fJ#6#0T$d&g)oT!RVaZrY!e8$R(=A(C*2V21d98k^gJOW//X'a'50!@/>Gf!!lIRDn]ntb^6N80EeB"M#_qJ.=bhmUTF!Fk8qOaiI<9Qf$On6bLS22.+=[b?F5cSG(SXPY.-s5*\Zkc;C9l-bKk/8CfHl0mNE2f@>C7\jrf#KXQ!pDu.-M@H!^AJ]#4'FL9:l5hOi#&A#=Y>4r2\Isl41`%ju#rEHU&SNd>/>MXq!l9a?)]=sQJ*H(iLhXO%DK&DfTd$i>.O(Y7+?![O5]`WD\@]A6*^,sGL(K#*cs/gIQ%ccZnDi[GICJ']>s,guK7_F@5Q??kkMN+K06iqTRlbuRr"d"qSh4/BRQCE'qtH0h0m4Ob[:ddUleK0dj/1(onn4AYORiDLLUHG,Zt\EkM3mu3.?XH%q9NE\+:B5OH8KC!XS/2O)S%eLDr.egTHOge55^e3e$+\@,'/gPAc/9D%+!"P8kGL0U1^gK1L>ej_pcs.tgTXfTW9Xunpgfusur;(a9QVT^le!Y7lRFP@N)2/9`$RNj>c`_iur[]mZ+<6!q!eR@%bftjNDr8-Q[ic=d]7`N1p0G:eV^pB#Kr8pTgBSiJ6r*]SpuVaSg,Es,:j4a`4`\coY`g8PJR6"\^\:P=W\Zd_,NmN'1`)#YRL<[CBJ'u+RL9rL$j4`X%!D]sKjk1R$OFqSYIRJgE-(O`#R%PPlD1Q;=k7GhaK3+5aP\a/gKY!n%IMZE'+56m#`#(`J063X3F\VCc#o/>GU"[OuJNd#2i!VCannIc=n33cEld%7b+jO$Ic;*]+Ze(ktMK$Q'_\*,$s4@&Rn7\U^nX\M=uR$l,2\IJ(9+U$a81`$]kARTI/*'&1I54Qt:8#YQ:@$f67RL:n$%Ndh<&nfO[:JKWO=_]Sa#>&i-R(kTj*ZmFhZubu59t\.)]/5)Wc!.[UTJ[PL`=mGJ>eG/]_4:s05N_%bSIo*bFlCrU"Q-mk/*ocPFS27=_J(,3!@J0"Ar;ob?Q0U79['/.5fHHacSfP/W3S-F+JSk+f#KkeChb28UC5o&ss&e5;uVfpul^k3^8#enG(*=1`)#YRL9r@6\EX;d#`PBLG4#/O[>[\*^2029>ikA'66'6U@'&lo]QBi2IZ,+<>25XeBV=OpZj*G[WlD&c6n&q<&P(iVQG^pinh2RTn/5lM*_"sNW.WHV'pER/mcJRIifc9TrIY_\c8c:?Dk6.r6^3Q4c,pI7s'j7:EU5-de@cg;?K[qjm2BsZ/mI86@t:%Y8-joSMFT:bT3kp7S&2kU96gpqbBRL@)(j3<:DP:&^>#OL-]\Is#qQHb-A^_q+NVG@&IKdkf?QjYJ/1c)8jY^Ur%k-p6_oV96J7hh@!S-r70BJ*\+=FABK&Eq_JAud&J:f(if6X(f2I(lbD(.3.///H+;VuDL73EiU]g07B0Cf\_uKiORq]M[>Br)3JWY:qb]+i@I_cWOOA&dR#FSqk)1Zcd:b-H)`/?b(e4IY"p&2k2+8,)6!kM9PN%YSp\g::Y4-s@F;!RWZR'RH>/nAY,\WE,C-5).B$49mK$UM9(bln5I=\@(HJ=$raII6ljc_!Gbk2kF0G;"-U6CN=aMe=Y-K_F\PmdCN*F)jHlpi-/LahTO&KWe5cF2>m]+?r)?_kpdP6lu-pd&0[3h7T2O\PR+h>ej_aBJ+7u1F-odT?iRjs,?oEmF!!a9Xag/fpI`2"RN!Nojr.flpLO2]"N`D*4I]$NkgJ:[)Z:6\B`pdaut)[!W"9\NiX/C?CWWqG%B]m\%+@YRHs.S4o_2#=JuC4ob_:'M8!!\8Sc,Eo'6c4N]m7fV]Y)Kn[kT=lk(4dV_-HJgL]A=Oa,]uASSMtM,EbTVX&WpqH#ckb(,aj6X&kj=oeNn]'T0m+'e;=gl87ME)>Ql+(+h;N[hhX^*^b_6o^\/JnY!IKLE[VbT0EiX8[3!W_OsdQBVIhY.ZJcHJ4>BjTkgK+]H-%mao"oi\j;3@a,X\&E,m_0KWJ:LZo1@)+aqLs-f3n'n&4V;C$p>#_dBM6nb$eHcYTZ"Ef5qW@".77p\[Wh&U'$hN*!@KjYAp2sPt#iCf6P-7::de=d::U@-=0,A>=CE#O<$)8#m/Ws!:pKM-=kl=UU9rt$qW@?_9[+WrB;PSPJipl<0h!dTKU!#n?.LUr>.,s@A5Ak@"2*]@\-pPjJZ_HET)%E!ocjXV;NaD(2RuJ>.d*XS$)B(TDK;XEl$WLPFc2Dr7=0\bQ&kW#TN)cm5Amcbo.NCHjX3>;NBdoVHi9_WS:#G$qcdQ_B?7ZS(Z;qk2C+uV:)C"^^=s)4*X,6-G(+V=-iF`'[WZ?BqAnLK$nCX9.15g#0PXlr:DaL8(p0,VAPQ6p[ML(["CbjK7^;]4;sX(AhejiA(#.[<=!raI,%hl(u5UC-LGX:%D&0W$4?@UCJ5-OtbiKA*ja4[I\[cP)4j^SXE7j!'m!cinZU\h'@B#;L1dqK6Q`VjO0g!%7;Pjp!XY&/@T%b_>XYDS%rVm+HcfGSA/&;YLClGHOuSL0,u]0fEn1h0.P-"6<=Uk/+fi=egaH[]*[cOh`i[JO^BWodSXoor$\l\+#_P:hX6EW2H[thn^a"B$$f`fh,Hj2e"74NacZE-eNX=*HH5keBui%WaHh%Z.l\8:M>K:@4@YB($VW1CX]:hc4+'e[<5/;bdrN#\Uc>Z_LsFQbrSFQu78FUo!9P.;.0@YO`VZ@R_K`4L6Pki>6p"@?P1^d'Zi@HGXZJO%9.3;V/U,,J`"Y'`E__U&/P[4)_Nl+mJn3d"t*6(Pj6a_3:lHK*r9QBgk!#F:b7->&"g>XE"^HFWW!M7HHh\r1roZ_O_OkY-l[[^(":5EB4Tf2F'%]fc28j9Z6^:)13ZiGpUI"QK2jBrV4_]AZ2#/G\PA*R?#W&Bk`R`gmPWnFcE=ip%;&Feb.o"f3FCL7b$emg5RZ6en;?f4Z!6[2`I;R(Gr5^:Hbh\PJ68FR93VCV12XJYIW"C\>bc^9H=HnGC-?rcm-J-I^fUTC.Vr\E?e'SW(80r^2l?CQ-LE*KL,\s:S$4*oMa+)I!N<+@D-D2B@LbVDfjF^0c+`_\,j:TFmBeND'90dTXfRq.LQd3"\S.:^#rO1-?8X/Rof3*n)(=4EeHQn?eXrqiJ^NV`oMir7!1mp?a$BU0bP5<$IGi-"F,c-S&iD/5g.rC82h5#5n#3`-_6U5CYlnd\W7nUpDR8;,K`9W\,p8-74D20^Rjl3!B'9hn]O.&fD*//1N_B19@TS_*j"([3:;87:p((\plqT`/KU^b/:ATuE4o'j!k$N"n.4ll'!fcPG*.#1Ep-Q&H.p1MM2P`E:ArLo0%F3g).B7OO[oP%N1^-7TcX&]X^A965TljT]0r#Sd"J9b$U@gdf([KBrg]*sE_j&b'r`j6jll`A[FZ]5Kr9t)9M4OAG>9!?&1\-Mr$LmbTYsl'6q*R2]Jh>/#:D83L61^K(eT>3R!k%BVl)J*i,F$Djr>0gSE#cAUrt3ULQa*o8sNj5W"X0.n+sd$L\-``rN?GAhs)bbFPZ2F?E?)!Qm3mXVb?%p*CK?5>[f6m1E'CPcER8:h867s6/)>4=;lgs!!(k@S2.E:3Ad7(&^S*g$EH]p85b2en0+P=nQB?b`cc%E0h7l5JmPXB[m_ea;HP@`6gt]t8NSUf=<%Ep];2:h8m\dI/-XqNS]03^.Fpq__$`'TG4`.eW,Y>\6UN_61q98#saJ9BYpNjWLXLk/*XfTmT'(iSX1pf\=:b7)FRCblntQ+sEIokR3geLhaf;\Su*Rq+Be7bpus;gjZgOc2tq\^[=&PBX&oS[rY&W5J$^;jV&/f(8^<]kdG0e_o,fI2W5HsC/qeOe8Xa/Za5F*N?0u\+:r4#BjWuO%l2@uZ'6X7d=o]4W&Qb_kJ@V*Tj('[c"m>edQ3R$SX!q4-J3m@?2OZ0n++/M=kbhSJGbM7J(lDuF+M&id\[m7MaY#(3Nraq"f(_e\p\^;V*C]1#TM+Z9[PDL<7JXK'6E-k_hZUNM\e%Pck_4P"e#f)U9a:8>UZF6F$UC#Pqa)D%NeG?m$&do?):3O^@4*;,=!hlTMor>sVA;91?2us*8i81_*J?bqoBSut4?$'[Vp>6IpiCWA%W7RJ`meAU=0XTU[c6#^L:WPr_nY6N@UYh]Q:aS45sCojj2?=[U5uc.:X33aF085S!hMa6_*E6mA=N53SF`JNJ1i#a+<'eHA5ASV4QPa\kPb(Z;+n0J<+G:pN^23GS)\57!Wg!eIBa6)F]^4DQn.uT')Z:O(LQ;#MV7Lc0&4mkj&7'3\?kJ!#p)]]HM?(Ig11;nSJ`Ftg!\Y)n(0u<;>d?9r,k0sR_99e,OoFq5rV3ElD,]fZQUN?9kG@]^T"'7o8YtY\^P)NE2qHcq@L$-dS6gmdA4NToo#f7f&$4_5Z`+#EB^&e/1?O0^'4rQqU]rStXd@=:Nuo,;O7SsFf@/7oXG".5]8K(opCC?OSCBu#,6"*pHL]?ua;I!AiOosoUZ?S)7#VG=^1dO1p^8saY$I.Ud5p98D]WO*k'%eki8W'0Bsgl+PM(%FT;(oP<73eW/p.'\-H=nFppSSkb1,#d:MWCPb7iQj_D,(UEM4fX#Q!]J-#"eRNZc^5@B4\U^mokN7AQZ"]mJ+YqE3$emT]'T4:.7?!4"R$\7(JBUU)l@`Lf:K[XZnCZ7/XFd-CZ!1jM/h#789X%;4'h-B/Rf#5mcCDIrI_q_kPgZFeA1is&.?FQX:*^I=A?:[?pMs^q]RBYmH:KdAJ05cGZt[uYNulQR$3WX%JVW@h>NS7iDQ^=PoC:k]'kKXOJSfJeSohA9S*%uqhd#Bl6)hC+IdC2,b_IShk4!6"'$Sk\&F.<1,\QDABHgFj*oSJGSs3uerr?W(^pilOsGD^NLV`BgO\h.&Tff3)?5IpI&fSD]=05`$7+J,`Ar_6JG84U]SCr!XWq9RV;k<\+U"j_J"k!J%eU[0C-br!>=aBXhk#lTjNb31Q:(Z^:lf;qr4d[)7J45Y&=.k35\3]nHJC7b^"$]AZkQ;8cmi\rYJ:c+c[m9Ll&J8ZZW*&TqT_>1So:Y-3Mb]^BF9@6uekLdnD+"^c]:4>QCC*$1]+]FJ;/jT3>C.MG5Xd[cbB$nrlT*6,+s#,/J<9\iXjJE+i7upctkk\ZXA9qujfq]mi8o'O'4l66&K!'e3H'k'=f!VQ!mJ+=9$9G\17PC]]p]+Z9,.%i:26>&Z)1J#=2aGbr&i/Udn#Jsr;i*n1Y4BMM6g'_m#P3Bs0W"DAoE3>AKQU7)=X8efGFVO!\^5$G>e9IJkb428m([T@dS&Sdo/8I@1H-*mMJXsoD4RB25d,aoe6%1NI7E:Fq?_ZJ;G*E27<>/I@o^1UQP4E`0/!i^[r^_-(>;(dY#qo96,.mI\5n/'80RKL>[Y`[Gkpp,Za98RX&g$I5]`X#blsre,3`11pn),[?G88*QYrNi>o$#g>\Fii$0hD3m\JH"gaH#Q.#=,MLoD\+XC_:n%U[V`;2:dqPMFOA^QkQV7S:AI/FV*Q.ehR3YQO!BC/ksBj,%V/q@Oc/Nn,_+6">m-8&T'70`FK3bp+"_u24o5Og4?Y80,KZbRqr9pp^D49'XC+^(@,+[IQMjd37)P:+I#m-""dqrm@BM$,u-?fCYF0f6fA,S.@r[g5QoQ7LTAh%%RLeVra/-boKqV!Eb-8&%#f6nj/MCS8D"W1Hgr;'/\WL+&IaFo=;Skt1(_MUc[F!3B]6g:Z8#FZ#+lYp_oA<_=+BA6V`Au=_?PS$9>ISp(Gnh#-E%M2Y&6[@b@*Mq9Fm>3tZh+(gmhKD!F.qrP\tS`j>IS9(FKXTe)0Y(sF@56?V]@fj\'C5kcro41BYQgDe7Z+M,G>g2L?R6m-+^\!-76F8Cmk.d)9@>[>5J(NjoVgdJ[rHW*/_n]+q!V'R1V>IS!Y&T[1t1$@ArgrXcAr5%GJRHo#$731,DFj3>8oEBpH\tV`fN9Y0;U64VM6PgA=TJR?0c_&j,8[=)BX/j<"\d?R<[(s4fWD[JYd)9,B]DPms:Z,L85dC_m]_qnb?(="!)r[@K?Ho-efG'WTX2UCSW]]69Z-q/gZTRoP<;kK^^tW8HlD2;M:\I:4lo%UigOKt>o3C.c4+QCbh)l%Dq2=!i@t-.'$-[K0A:rV4_]AZ2#GGRGN$R>r[9dS^rG-6#"h#ZF^/;EaXS98%.6:U+#kfZH3&+Gu#^TW.(jRO)D3ZuO!P]/P[uFaJDjZh7*H/`!aQ677976X(dbr;?(LT?i;jmiJQ^p`jXMX\EAugkn8-T3DC2HOZV"*F6F_236FFc?#mV2fuL;[5tmI)O,s,7h+u5.\o!>L^foU=02akhEP9DoLcuZM4FeO^6[i0)`n#oGOpW:FefruTA;_qS;"+OdfQiNq`#=5oZG6[.$[)ADd5AC+d00[h<##0KtR^F&Ef2(D%E=rHc-otp1MLl5Spl(NO##3Y5J6Q^+l:7*ei0LN@"_q1'4d127IA`gZn!h'CK!c#/)[4UX@TS`H6O\/<1;dY!E41N*/BUYeCH-b&g\.itXPNECKAg8Y$NK*T$Zi9]gs-/4iLn&IkHIE.0dp+;d6.V3Tj[UP):g9AP?9&p>TW]S=UiF;@T@2>sD_;`]:%_+sm]Alu!Du-^`*=]^XB_2@o,$Rt?f/#0?&%LY_^hp])`EiYZ^j7-0p1G:osa>BFHk*:D"4U6ouG\@=B)T%AgiCgZ83;]2I3817;]k+$&(]\At'^I\,Up&n4XSN(7GX'<302Afs52U["TWm:f(!Hn*e#%aV(b1+:'/!I);=PZEUK7$_r@U_anjZP+SB(Z"(hnM\jj4$T&[Bg0=nJG0FmuCt"h1KbB5^[;%9@:F9rg+CiXGX,VH!1osqb+;3q,R5kHTNAtuK^(U8<".(R.+i;5Z77?f?A#/,^/%aN>9@6m=3M"7uB^g6+[i-YJ0\L;mA`f7nklc"[@dcCiJQ(=cY\:&-tjj<(Oa4%!#pU9Th\UBV_cNBO(:kGlJHTcnKX=*)sDd[*LH+[bj5K;,96V4#9!:6,X&LuS"01+Van:AWDDrA=,'2*hOjYY4JUj\+J#.-:U0paA;J:c&(>b)D(&8!j^!#tL%u3h.)kBPSPP-&rJLF(0"upE1%06D5W/B['0B-lpr_5?CW)b`6uZD&>;ARVFGdn_8q`Xh>^6NV"J/;9`k^"Jc0]RF.%*GnC08k)2E[!He3V/q8-1@sALb/#Z.>T;?]2DZ#!!BjW!]"OWUSFDT3C\pK,k%9A%>%4FUpP/38j/!eO\KO;5*Vo6SR"1]M[4FVPJ\Fke:C"`JTa"qrKEO+T;k@5t9$FuiXMr+goZG6[.$[*4E\qrAs#,#eWXq[i]%X8k4IEKT'ZHWl$TiQOK8.K=CN7?9)"Y+J:0FD/bB>_'>.0ajT,e>Or79D%oL4^=JY>J?A+J,5.KYq\li2/psndFHi-B^"YBDoU3qfiZiZ[nL.+1tkHiVQJoCnk62CeCEWt8r!+9@W[JeKP:'-e4$,ZSplOWCTXhji\\S%=3cX_@k;#Xn]IMPG'c0=KT":eo8[$FKk5+Z/%\W)KTh9M>jVD'90dA7oP%H[@+d-#kL>5nN^ao1qul>2jE$,9rsVQS+PLj]&sDs5'SFQdMQudq;$hU$Mj*"gnUm(KcUjq9Sh`IRqg:cBXW5GZD'pW[pgjcs.tU8j;],-JX*!iijesQ@;G5Hhg3KE-kZbY_AtWk?V#W5]]5*TXfTW%%7P@V%RGo:gqgXE,ouf1hdRaD'91?CtPu.h;(4M1QuSt#_JumARmCnH$O[aIXYm@AnAP&bcee\lK75pSt8]L%F'U4$T&[L,1'RCkCLOoI\=5JB[G(P?To)qEs!YlEfRnqP>&R%Si.;D]PFM\BJ(\B1`$^h6$!(%(0NKTb=pWbDZ)sU_0L4tp]>g_%T,bU"IPY1BFm7B+UGP>I/)(3b6uo&6P-%aPc;1n]RTsqET>'if%*H3/gs365s[fMHM(aQis_@a)!*kZhd!t4d',cV!KFXPq,pV/He?N[@s\H"lT(>f+&9#[^NVI=]qS$B224IJ,o`R!Wo[6Z^KlEEri&+#FZ#;(b>o\$Q'^1)e^iH/;*'dL1Z4\RgT5t!PNgP@](d\;$FCEg#D#N12GGl>TX8<&14Vh/c]$W=a"t3p$:4BkQT=sR@2a)9,CrB?fnC@Tt,\Nc3);pL>hCE#QCe;(;HTi(,n2.[;k@:'eCJKokMdBb:_TV%@IJ"RQU!Dk=X7805)tG@&Rn7\U^mmRL9t$*?&iK"9esOldh&d[Lbhq3.CdMZY%J!_SU8AB*:Mb_N)/,A7T4MX&dKic0aQ3O!UdgjN3TL5!JJp?DRH@cs4@7kCMas_dI.1f\(S5lbKQT\I]`?"/J\_p_T.Q;P:Si"3guX%(SWE!FZj&(GI[-1u;L$eu`.Q:_5^*+c&b\mG#)Z)`DqfHadnK3^,b,k09A!"U/.h64cQH@+g7KG3t`TM2AF>Df0GF_]iI%HoZZRpk/qeRP\a,[;4A%(G6Ds>n&\.gr$uiY?Zp85p')F2b%k>8MDk8Ak-3\4T91FE3>LPTXhjee#I"4r3g&["pP8DDU,Z;>X6r;XNcI;KkiCs3/dmOLMF9.d&U6OJ:IWCg-Q>c,We(,rnRGMrLKLM]tD#Sp$4P_o]V,;Jft(kk9k)S#Tq;(M8\9-If0!2oJq[;+5XPLk9`ol\@B$W(bf@dhS%g]IkTZJTa$to#f7/G2&FuUSI#()9u#2]=)o%VH6SKiYK^0?:KdP.A,Bu+Q0lP"D/F+lq`6;UN'9Lm>+Lls5%nFhLGhU:.LUr>;\Nq"ci.p*e#>4FcFDQ+5mJDN6R^g,YoPr,C+`UiD'1X=6O0O:LkHP52]HF>>Qlr`0Wa@'g269%>Ol(cdj(QlKcP92Wg2W.iB-#FMIdma[#+kR,*A1./^ISK0@PspBPuuphSQq67%t%u_.\c5hiaFk%u2.k>KLQ]A*Zja=_:!lbVlug)CnGcci\nISL@5C`[>C"(_&5=?&N/R[I@!4m==-5MN)q?o#41!>k74)j+CagZiP<-&(;"FS`4#R#Cq?E(i9\_uo0NVr@qen9)&I(#<:K?TZ#5+`oTE'7'5khn;nD`u*0QK2QRf(Z'X=e51R:X?u%Z7a&$N912Y+n15cG"XY>-RZeH)CWqRal-D2JnPX*B.b='7=K\LI!=5KAII*V&>l[WrA/-6T[p5LZdT\A+:*Rt*F*GVFQ14F!s8Z#pA4IJ0>8CG2pK)#.;M*tgU]5aT@0p1X#/GkeKpWq4&BmRA1&F^AhN#]DDnk>Nt,'!/=eOd<0@NPbtN.E0YK4B`V)E>0XV[_thc]5`J1*L;MZjV"m]ntEVqB+JSJhVrU7JFIFA""?n#0:_WqE!HU@?):(ir;:2h_6U@poTZ]/&C_@RrYV.SBT^A4kd!a5C6kKR-aJTJg:b):03OACP/7F+(CEQVH7$S$&b:Q7F4s([3\?R+VUCZ1^Kt,q5R>%JM\'b-#UZ,m4j.Lk+<8h>ET?TLa)eAWaIGAo?J[Yblkkf(HhHY=f0V;'%a>1BAH(ki0+tOMQ)+RC\P5Ja*m5\h\<2,pVo+;f&p&Vm\74,]Tg3.%@(q$14#1g#nuouMp#jT26^Ap/_BDfU^)IngKZ"bW/s(oEOlmmaSaSO,P)'-Qk0[7-"r_PKVBbC@Qj]I;I\GnTQN8?aT)1q7?nQ_?TPm:UQqU97M"!"c3$`/QH.9[E[7DQ7=S.bMTfLX1tW9p[G9`jL]`OHG[QW)4cq1UEiHO)h?+5r8U!(XrLZ9?XiT33H7(9O[Ph-R'bOe'jMO[L`R-&4GpDcs6A9o@Isd"pUVZFXh0V!AE0M)fWfB4Pli'O15t"BlI`<9H2!+j>F.j9!H!3^r:HhMD1UmQQ-p^o.)6m@b^qBH9?;P:Rn(>.(d4l%KYV(D(ZSfjM:ho6Hk@JK_aGZ9)/pVMh=ph!M2.q>c;ec['iVhQ#JO\2$T:7'd)Rd>Ss&A397%t(hOuH+^QjY[Ob>61qRZ0i`p2hD]POLaM%AnM$4c)S8G/!!-0nBASiUQ\?qhRU3ca%q*fF0SQauS(V8cLD\hRpttn8X3#)=10PHM.[!mLWIeP)lEWrrQ[c&FNF%u2s]boH?jep8qRCICsZE`$X0uT)'0jE[0hR9CgR-8RP`..abcRs&-P917.!eSF5b0Sr^+5?mE3LW^l.pW7Wrr5O2j>(kRc?41^t0S(Ebh'qEUdeCU`Pl:FF2t=dAc-m`\mfqQ6o#dqs6UQdh7I/M0,6IFALtp9.0fZuj.U^-*.;[10(`c=O8SZ]%Fa6YH9W/YI,t,'Lt#f>aA,EZ7'+gg#Yq49s]!#lf>3S;4//EhU7=3^cn.$f..ap6u1?kV^OZa=B+aek('lp4K9&)K_>[Eug^:2>sh5I;>[38UhApCpp`6`F<[n/*ERU-o.@8=[mH5iJJpSQC+/2F020Y\8p\'[;+6.Ci""E\A>Qg"Aqh=>YkehG3mkfB2>[1+A?5>c37inB6Muq&-P91[6mC,"lT%;dtWU3IXZ`Q^3hC&b424>]TJPIa5c]5mbGpl&5>N7b_;kfD!S)1$XHVbq#.jDlVTG%T'j:ke'<#IhU9rR5g>t"B2Yq9:FV_?$YDUW1bb8YTrk.5'7$1H<&)UNl'"odNru$#NsPcVa:LGn-FoZJ:rh-k;=!cdnk@72W*`'8OP2a;_83i#4@ifL[bc^mj)9]TAGWU]iXCN"-0!s=/r4*GSF"[UWK1`+YnSiqFDkg4lr'aRaj]`&d5IQT6@KHLPP+Gru9EridiiI\>>EEW&EGgTh-&W=VBBk^hQcnn_B>_#qApc10ADY7big04=cM6<+Th<)rd78Gp:**o--V.9C:jqVZh6s:Ag[CZRf=h`r;n%Y>+`6PmWe0%"\gAku-FRYh7F+a6>I;,)W&92d?]fcT;)d*IN,!uHR2j_n%1N1[-.YbKqRdtm^a?NoKGHPU["8WDM2/:KHdb$q:49PJ`Jftb`,\:C:XS]R"6GrZeV1Yaa:qrSDF;%i/?B_E,'cQ]lObf9ZT*QC7SjOHbi_%NPRL9C!>3+f,p$^e1cf[ee726LNE%M;\e-RrJe:R2Zn.mTZE301M$CfX3j2R("F`h8n/He?N"Aq6[b$=`3o9Xn@.T@hhr>4st]c:KlA<`7?_R0_FK+i;,6QICh?A:kB>LglYF!Y&pRL=p@!\ZI:=<&4tqWZHVY-fC.g48=;>(E+9WY]JXs,7gOVFcsum'MHh#_F16LT6aM^q"OLN/W^CI!eP+)aq>P08EY4=Y3smQtmG*#+>o:MSe$qBYp_H$&`+:a1n$%k+HkI#!BJ':O/mU4k2g97]q<+B"8u4keBJ5.ng=ji@22c5bRKf2g(lCXQ92B0sK?=sP;O2ah>SpOnjoV9ngqS?RDV_miQBl10T&j,`JuA]`/uSsDnaVkp=6CG#T_SiiuX]=+9$>t.:Q$*1q$p2W^1B$Ef((r4R^e!$?2&-P917.!f^ErjA)b,Sg`^9tBA]mKKG;U:UY=5]hOgUD*t,n*Y!g9tkQ^OLa9q8pTFReA0@TW-Y_#q2\a032ZY.Uo(4n5lc0M!q6\fu7HaD0:Jfk>NW#_mV/c[ml3IZF+qYL'cp?aAR%<0^Dj2R),'o&YBIJWU+p\3iSKr0F`!X8kH-nTLKmFnt+(GDZ-JEDFjd]$0Co&ah&AnJWc\sf"Rr;#NJ>\cV:Plo87[G^oSlgWSe-E4Slk4MMpG^/iBc.Qe=5nF/be./l?(P'02]^FUf9-f\-['\iC0Q#ONX]r9#Xsui))*2jf?3HQTBJ*\#0T=F8(FDqL]OStlRLEj^W$%'<24?LE,1etZXM\?@!!s]=[bKJpL$\G;aBJ-4eg"G'JfmWYb@BP;,N*u8R#6og'#blL@Oh!_BHteRrLa]8tOI;LCfBq1n?SM3.2.^^4(`&8ASl:4o&NBF[;ZYF$_#4i"UedLA!PoJLZX2gZ"(fa5+hl>djM;PE(kFuG,nZG['d;#CtQP2('NS51`+YqMA7Wg,U@?2!au5$f0>feFUAQeAZ%*_5nF/r44Mbb!,gT%;8%9u)]P8.GO@.<[;F[,;56UoGk%NpKHVh^qXs0^['[>DJWqqcq>%;#YsP-<0JG1B4.C"G.KPtG)TgsULPH9Uo&Rn+V)cq.:c77li[cW3\5o:9I/EVSil$\$4s0dCqaQ_=%%7Rh6HtrVED(V#J^*MQp?gW/mbOA'[L`R-&4Gn^?ZQ6mn`#7\Mi3FKag#?r(`)rDoda9%:73m!_hSb6WX[pWD;2MhGe@tP^2Y_-.5bGGI+bAk)_EYD\@=NRS=Kf-"jQ)IN>l;7@JfccA!._S"]aU.SNAoWmc7Q*$B^L7,*>FM[r;%j*,oSigrJ]J!X+Pc6Qo>7MW4^uOtA]mIf-&>XD-FQeg?KnZY2mA3IB\CRBXTXg_(4F[2f+sLL`g9h@\UUboR4ss-tXAl/srVH1/4aP&S('NRr1`+YqB$Hd\7kiOE&4WmLrT!;44`omaG1o7o"@3U,6f$"@+$Z)`))Gk5T?iRWN+@1^I:d*Rq!mC>USEaSAHSZ5S32([a5b"Hk#r$g;SISV()7Q1&-tTh6I7fc2>6og'#blKUJ@RqL@D`9i*?@@/^UJ.=1mB'U%R,lTINn[bElcl%q1n'p[@]u4Bt3CXkBshLP^kE]tOBPCY-)IU:R#.TE2hieW_L]7Z81(r:ofVQ:5iq;'QDT$=[LT"Te^0I=;(jQ"rAc_@gN7W!`\4%W'Uk%G*'@7^.1:j65\dFm;qLg-Q>R5nLFkPK\_&5M%u;F`fPu1u,KS(W.G@n(s%\M$X\':JO[!Eofo"?='$L6s/LFoB/4Wn&1%r>RNiT6Z-dZ6pq0McgTDb=&)L#f5ah/1`+Z.2fIOm4aM54baChQ$sBuQ'uN-%A3b2:;*24&fqPCBf;r,]=0GqMXT_#C!6k[i@Eb)nmdBLJX$@N/mX/g#QD*;t&9Wke%#A>`g*@WEd)`DNb^OQ9c>IR5=1(7#m#qJ:Qp3HW5Fn=b?p%A":\r1>U#ZA+(\Y(Q+=KhcX6+L$I0S7R8+"JkB7>hqddh[NX#_JuqRVFGTVbWe_>.#hb+.bK6L2/@H2sBJhUo(#0XTDqRQS2\i+sM7o*dkrPc->?RNnT$,,*d5r>Yljb/QsuVnmnn'W""#tGln6Zi:HbA;,Ibj2FS1""O.*m!Bs;=NK(JLJM;]#lQ:@O,UXtGdh[NX#_Juq)Jh&(q"^\pG4""?7&%cD8DHn4*+EMlQB73D[0hR![r1#BFEFT\Tu,s:S%7+EAtZ\2c9ZM;V$IJ?_)FleOT@J&!se%+%]+JfU;$gPU#4aZ+UlLX2b>RNi^_qOe0[r:0^a\Ho^nlPU@8sJjT/Faf5]ijENK:>aMj&RCXoFbZ!t\cHhVQ_7?'TSTq$btK'GVF5O@:BT5,V8b(gKL3d0kgV5:S3bo3am+@p3uk(:0`l-^l&)h7A8!S9XLjfiq,PF7gFYDSMk:U8=_Jfk>NW$CEH>Q?s;r]FuI/:DsFC=T>d?bcU;p[;?;6HYB*/R!g]KlO3r.3/+DTV\Igk6S6C\^mM3TXdnE6$#>7\:"*-r%['=F,+NSC.poZ5u^et$tD[n"C@lI)?ZE9lGEMspYl&UhTWMGJgcD^l^rOumbt2J5nF/bBIIf]!l=KkchmJ*0,+cZe>\XtQBn/8ca=sm9F(n0kgc^Mf.%>7hS"7@D`dFn(_md>F%7M]c%U0JRL?.5p?gW1Hp6C*=`QE;g8(L=j6Q%.p?c(e[3/!hJEDHpOHl(7f2TeO+6Qf5U)_aeIu%GAgq.ckKshNq5nHF).A,`(_4sM]i(@<$'%u$oVl$?N,cBc:)B.>/;^\_J+TLEU\T9WCe>Q9A$@ZtF/^R`NkFfAY3\4UM\8p]R>cZ3_/mZ&!D/ERjG4"%nDf`#a5tVKQ$gPUlc_'0bCRNi^_qOe0ace+2.\qC-4gG&*?FnAgW-]AUbirC?pL2>D7EVtr/ZG]K"/rH$o4!P$R,s8G.hD'91:+G`(1joWBDRlX1-5gt^[KIJO5'_V!LCY-fBCnNh4^NA*+C8kDV5=p:W?eujM2D;,7rg>BVmA"bIW5nF/r8'kM6EotT6VG3Ne"9KF(a,_<`/I*^R;l36&fWZON.Zb`BNuk^9['[9M5'?-)f31!B1`+:pBJ(DG:L%.p:ak\XUW8]S?b"[=+N4B+"Z6@anVU1e?9q!nAZ!rFbA$0LlTY^KtlWImL2`GrsJd'06`g2pV)`MXc-n&Js;0k-;g'$$=>cU[Wio8s:DbU_`b0$_eZ_g8=JeR\9b824\GQ7[@P#k3.-I86J9j_mKh>3NQNd/6o[r^2^C(&:u#1JuC,30$o]NSK/:S+VY9s]Y(CQ]>e$dKi4k[TJ$B[iD^V/@HhP\!^`Y9`%j%o\^"UTM8R#ERd*U.kfD!LW1X)mO+b[B[G3mjFIJT1;[=e^9W'4lI+N6V.ZX/VTqS.O[5&oRM5+`Ack3(oK/I+QYJ`_P&dA^'Bd*PUlS9Z\>e#4ZG*ageZEgc`I=5J8GgWp7=%Fcc[7Ju%joSEheCRqJJ1FNS7,m\(s8MtDY-fC.EmS&f,Pq-$$h#ZPX$Doeg@Yt]@,jl]5nF/bBHYM&ppbu1Q$bd1HM-PZB?hd3(f4`q]R9O\>ISJb.onJc2t,S7GBS-fOUbag+sJ5(&gJVG\4FoeaaqAs/+;3"/+6iZANZtNlU?smbcHf2[?,$e&K7K%ga-;U6"l0/NI3&s!i4F*+3=M9"OL0,bD`Ppro\T:H%5jQUZ/TZ#U'T9p`?G(OXn6s@t*R2gP.T`c8I/*2,T0ZAWbi`I1))L',.&PW3BF2B$_Nc*ZlJBDf6.d[;4C^fs>=Q%](7Go\8L-6f<8Q]nT-0$?Gj])R@3u2(GC)]Hc$5s7ZA>U\,$""G9X^;Ig_sDTqb):U/=A/8YsdFOVIb>;NW[Mi#QFsg9hG44:hc$>IJ@Ajr?'_5jd:5R1+455E/"8,I_UK<[=%9:7XELZ9\fere;Pq%%7Q=`/#!Mi8'?-'o6m4]Dd@W_]CseYg*(8,FQh)fe'mpNc("4q'0b`+n(pbs,[\++SI7_L6%493n."pdqtFU@NcfA_P.s;U6%]Bmf%0$0SV&T+ZY%H;2`E,^!rB4n9g_(``l:N0*ejNsZ*B%1R<*FjiEO'JJH>;i_12I[a2l=-jFPB^a,ZRTQnU62I!g=54F-M[c's66!9238l&?T=Jo!)I^'kJ]p@.SHU"EUH]:Ub)!&#)N9;+fi;S'ZE(LGEAg@0;P:n(ta1F&\u.Q$Mu`aje?.DZSSZd\R>b4NL=T\PVL]$VLF]$)m"'kKfdno^q(D,9\3r7n6']g\2@/:9_1#6_S]V/6]F%daI^UiPY.$IIQ12\T?s5ph;>l1P$W3I+Z&T0Bac8=t6>Y!,nu@Y?ke6$V3iSF$W7YfWer\mbN`?12gX?#I2_C!C`X@,VmnJ;=n"pW%@n<$hOeJN[PWIepoZgQo$ZX,rYK`&=!FD"Z9c3PUR%\2WS$FU)_aeJ!r<75'6!b()fLN"@3SV7=JC8q"XWe?+U`1$T/aY)^Y.rkk48niT]sscdU@lPtn2R/#SgDnF[@8AnGWf:\42L%1Nd.pJ>bSTY\L!$]2pn2&;'3HhND,=_cF(SI=L%H[GW6?'u8),ZUjDai)+C/hW/rPp?o1hA3AFrH_[P>Oi>QO+?6\7=p,CLn>?a>e(K#Om*;C>e#%K,&q;N[V`EeeKWJa.E&S;iY\ViCGB\7U&02d.@q-aIo?j=';#.(hVs&i"$AFoV0Z*Agfo6t3P0cl6()GK'>;qs4`3Moe?G%DH7=rRi/FDdpWiZ-qq=7A&TqOO[6+oNAAr/A8SZYE8)V6c!>+:/4Q'E3MkY>-_ZFb=s2eF3n/g,Nd4<,Ca!SW$&0Is1m5+REp'[5nF/bW"A+.k09BdS=I[>6^foM8fTG4>W?on(jq/bCEOtfrf=ba!/hb@s#>/c]a>%t6&LJ+Tbih<(T&?FOfX(5kT_VbENLZb4>A5.Vu'Pp#)'ZY.V*VS'Q(91qo-S1aY'J`Q"WbCd=oq!hil3LP%YQH@4hd+6d&X+4DVj>AJ$eEt&e5Um]%<=KCsTB3@a26MX*LIM%gJ@ND\o&MtY8mI13NL`4Z2CqDWQOD^[gl::La:WL3L_9:*\tLOb]tK7d9:uglKG-C>$RdVu#^UfCX&lL-n0UX(Lb!qJqa6SFZrGmHa;,NIb[l50NM0j%bqEoIQHFgGh1Ns0fG3lH=Z77CVr:K7&cgl&jaDf2cf<9,J\1n_8g9bQO&JpHI3C:Si^OE:]r\e7h=W+pMFQ()j6sTNan%WF'>kn9lhr.[t+$\&X,I.X*f_G5d77BZ?rVH1;G6C];cO)%A:.n6\>IQ6ZQOD?U(1:M;adP5g<*\@(H#c0,$fJ[OKa!lJ!`G,53>]\p)^i^n$hTQZL("s:rT+))FeH5e$2j>6+)i)mSN=0qRi'0f1p7i.YQ&TKpI=S!\c:u@mE>$,c`nsmLCtd`&GGMGVlQj+9en\OVL1W??D+eN7DK@o]_$eH3+?\'(`4*k?G0MN)'K9;+Gc91V+[/ZYV8L7`T,""J,/ZsgpqLWf%0c<"i/1!Vet1s04):6F"W-#L6?K]KZC[`io33&r,_8Z[IBgo&$!8TDqD/JW)9=g2s38EkQ&64K.oFH?Fk4bY7_hW2uE5l+jD#(Dbr$YKBe!-(2.("mK07n+1>QE^PI/!'bg`N4\*M5ND;Q/dm(o6<0Aa\X?"P&Z![0d-H(+auoOXtRt\H!Gho]ai`6@]Hpb0#US%TJF'!A8Ff9he06X9Jn7%i@!NgQP7K"^[NC#F)`;q=8)9)]L8Sr:of$9*([bpu@D_:S'g4&@97<$q(+.(D\T+"ID"\*=7D9Vrh5DHLrV6c38G(K>9j0%V]Wk_68*R6pq9;$^/K"oeBDdj]9d(F6U]`,rsh&GVJqQK(g0?8Q*I8rNC,t_DBY$\pR#@"ZT?)%6@Lua*GJeS5;4h.iWB2FbPGhPCO\#?$qZ?>J6;.kP)#_F2I$Q0^orquS(AnES0$Q_`,NZ;3$\FB(NbO42u)]K`cR$^9178`Xp_\;7\TgNVIY&.ic3,$Y]d`o`]nUc>o4$,P!ZR-h;5("2/Ft>`gC2%BJaIYPA\@puM0(@S]=4WJY`/,-j4[$3\[9[$B\-EPD#&pf'M2@=\X/da.'Far6qe,^p+&L\Rk2ljP"q_FZA7C?J?bScClKIG^1Qdf^mFntC*rM^f^c_r.=5b%3-K7@,C9"t\4ld4g&jjPtI/%ZU7ZAO=5\W2RenI3DmX_-ngAXW=Ajl07H$R[S1]4aQaV:GfR;^o`,8GP&KCZhui;gY3\4Suo-^o]ah]aB4F;@HPe%F>X):.Gu/S-^BPs5C$M**)PVr>jT@`&#X>tgEUqK&]"F>THNdK[Qktp!gL$PO,o$M"t[ZcIK0:pn`%Ma+Ac`gg9`#9C;bo?SND&`eu]m](E4<_'e<=@bt1;#Z:ugC&`SUn,_eVr5"4N,6U:D"Hd$#-ZkXZkTY_"\U4'gRl5-Aft;Oth@fBf5'NWR>bRpfZ[Vk!VS/'3hS4QtUIPhM'TsU-FA85_9lq#uhgbZ3]68%+oP[iNE,a_k_7C1tF`eGRLC'54`!&G9NYjLF_Cmt^W\e+jI=6O(;3Db^c9!#ic->2u0^XRQE956-qXs0DR$btjgH3`R5M+<1WGn:47R1rZc9ZG9&qCof=]lVp%`nHq4Z@=WW2ck@mFq7%^].p"(Bd$D6(02S/r&+0Nij`)Lo:2=k*La)+mP!t"@3SeH9lO:7)6]V@Uc(#R[T.m90kjp8Fti%S9HsBY?ue1XBA5D+nbd.nKTnKQ,R5.qtn-QnUbJ!OC(7m6-_c9!Vn2=s7I+IlI76r',,&64b!I*3T957u.Olp)M2C40F9niYJr:"m9S27*K(.dY_hS^3%ONMLVbWdlg)!/[6#f2JGlRb+1ohm7oLjiRibAFS$,40%q',*_&-P917!_.=5n)i:k1\PClKRQ0UngQ,:b$L;LPNp+&L3\:6AiMYR2L]:u%ZcCI%bFp+cIn[*esX]q^(X"3I?&-P917&iOm5s16+P18%4mHj2"*'(mC4*!`Y2JmCQR-Htl6;gf`NJNC8oB$M2mN=VXEC%l9E"@3S%O_R]t&17u049u<&;c$;(gU?LuVb`_(7kX#XZ"*Orh3mt'qY9Heha0XrE%!!2!6#+%#K6iL&VR8j[q]Ym"pYCJHhWP7?P'aM`N82VeJLnEJXgcBTCBPD0,-77_#8YRO].OlVdJnZm6N8qs>_c)h[N=AWp-P`;a+QoE-J04nk=BK6RD;CjNKAtm"VL:bk$PXDQMhVZ[-7:/sm0-AoibAGbl-h"2/54R(+:*QALfB#d![E*hoSJNi"DuaXLCQ'+N[uu2n6g`qJ#9o@)ZK^0?`9C8b0$89FaErY/^s,1!eK?_S:ff&j5B*+;T+J003Y_rTrY5`S"%U.08LU!idu:"XBDk9'.,F#"]>ZdC&`jALIXj)M`MXW5nF0]C/A/COHPb>."!dBdc8B/R("BePRJOd_`=XK:3`B?sAG4u)F4,5\%C+C2?if<0>dhFr9I<.]AK5P=1@:)q0mE%j)]K`n]oZpAIJ]=tR&HgV"HQD%5CR.s*MgiN\00t-\A1(!:/4`c:1`,eUrqc[jlu*s[qaIYji`uaqgumK-n\%,]mB?dhnD8&?6GLUT(\5:T&/2/CIOd%Jfk>N82VeJ8.Nt;4mUq92]3p@['Z'3G@Z@A.omK+)`-l8jRW*9j&W9cBkqL&hRo7j?]]#Sie!\QiWA0(kif*P[uP/UOQpfbrd?ji4%i5i9:%7cm0b,]TXZ+M$m%Mj+06[n(R+&-P91Ba;T\8L$Ga^N&;R)B'NNM2@ihIqICTWFs\W9i.3NHQf(J;q\t%!:&=@>IU!n"fX[60$$%$/hkK;^]+c[i6e;iRN44@LYPothTc\iSmi%P*%l-gj$"[N\&6)5M8(F5)lrqRp!2-!.:Vd@&_qtKPlg)]Eia,V1e-N*VqJ!kIJZM=@nF*r?tPYCQ&^&S*/Dl2>VC'9D%EXms7b]`^QR04&I/C!!^u80s(crH%o3EG/k^p=jL0blpBE"@8h('Gi$b'.6O73&ohE8_)tql-n!+I.?2"duHs+l07Hdg=gF^D@[gQAD.hf32!c(kFf?#/1Xf)['mDTg'^;.S3;5Mgt^],abb>Cj26W_G'8%JO,]*WAC`\-W^1Vj\k#Iee'ZQOg'a\h`6eM*b0!U^`a?S-qV"]\lMj4l07G+]-Cll]m:CuX<;oeoI2[V<`)^K5!Ju3f<7l[K*Vo#(ZZPM(DmBIhNK8.b0&Mpgl.2No(2IfJ,^Q2*j2NCW_h!WK*Rh<%Zsdg>`^SHDr7^nUkE$r&rmg_5785XJ-U%UAq;'1JflfKM@7kLM\e$mp[5/^W#-?gL]]jKcFnT!'GM7=MMddEKOJcU^?t.JBP_LDZZsP4-n`S$-nZWuE;Ah'^S#GFWi?sM&u)1t7$IjdAS#(M>Ps3iW?*H?8/Gf9eW1e:1@5@a%l(G@`f1r#k2n#=/._qM&4?^fEC%/qFm>3TP7p(J`lH,0McUJ4b0&Z,TV.s.Bh+O94[!(L;q&e-#>0V_?P)1Kie!\QiW=];SKC(FFR.LPiE)8/Q"SC4ag>i><.a+]F9)m^33'">,DPnf<)ciO[V\I%"bIj&K#dp?/k@#?^3rXK:"@_AZa@*X;3EEjh7In#FE%$E@AY&RLA1/oGOOCZ%#+?"5Q`a#'>X/jo;cm/#VPXRtSfIS.Mo@.p.:Lpl7/B/g6+XRGis&cWGOOC"g(Au[@VGeKDV[?32HHVV+:*QAL^\gnJs>isj\'h,;,U:!#RIqgq_lpk81rf6I=nGM?+Y87m0Eg0ZYI1"oh8(S%im^LZnI4@6#f396#cokKZgDtYKY89DXGi)HVS*Nk5CWN$9hg&"J`$?]XDr/.;TV.sZX:5,VAHoYu[V4&T;,L1j$QRWrAW2s,16UO$^/gXJ,E/A;KD0Y[52I@m+]!F=]maK5(:nR75JQ"(dEI3S=l3%?S_!nndD10s*XeA(&eU%oD<_75nF0u&h#BR#1+EG"u&1/qYBsC]Qo]TG8MYR-AJ9G5Xe+q`F>gGWPOc"/BIids/cn`,CbNXk;^<`N.R?YZqfCMR_\$_B:q*n*:s6K#tL-RgJn2E!I(Sd"OO`M?(hR._,S-;[s/HpU.d\;*AF*Zke"%IoDu8OM"pT;PJW68^`Lp8mJ`5S+&a&D7'&"^-GiD?nM#naZ/e5$6=/W*^P*-64QFqJ4ik9^5EWhQ!OPi-t?+Y90r:(":NZhj6c8)S#3trDEZa-m(Fq>6--n^=D^q`5'H%%3NCtZ\4K8;44Q;q0pS=Z;nS94U5(YW'3`PkMtLI_k&/kA0Qp?^a\@u&WXFEB@g%O.F!])>!f-qd0)7$e(/+:*S?"t2+F(hAjV',-R5[;,4M-)k1^Ftu9eY`k7aog1+JgP.4[Y%67u)KGN>>o&?pYHM;6<^m8,If2;e3#J68;GpD3F:NS(qtBEi\i80ieReO1*/#7F(W9!66:-Bu%`+c4rVH3WeQ/+!oB4F]G3fJF%p)e4L5#i$CUaInH[Fcp/g;Dd/kA2+rqe?24n3i8"7?._4,@i"lLn"kDD%H-*!?d<&-P9K"iUY5jR(^2naZ/=#jgU3__M!KBdTg[X3:48m&O0hiq6XPj2[4Kp9+8-K28gcbuDmVnF1s.#gCW@LSl;">MJc4cSOr2+soL'riDrm"@3S%OVpu#OC>:u^"TJd.l'`FT7?hH+eLrHWa36FP*-F\>$+n>If5^L+%=/hNup591q9.f*#orcG-+4Z-RVi"AAFDSe>Z@[',)ObF6CjDe0Am"77D4B2l`gT\8U7gVHlR-$Ao4#k09ASgtrRWIG!-%Q3b3\G_h<;['DBEN+g%`[IJILCLCSLYMDC\N@>sr,fEkECB-9orm_b&"f^G!M\k1;-G^/KbKGfXf8p=NFo*O0+i3$l??GEV#_F1Tb^e])D"H]-O7`'d;c?U>,GWc<<+mLR0BB(3Wk,gSbOGE;!sT1lk^$gF=AT&mqc/&^h7CRF7.@jaTqS`/h)_E=6Q"b>_1UP6R?!7=Wc!-[r(G#TXZ+#FR7YBUTk9/$Pk:$g+T6'7,@k,f<8PN2JkjK5(Xm_K#e?K0$"-Er:.hSTgQpe_=Z;6X@>WI1$tO1W,PpQ5#6>7c9M@,j6Z-VE<_\mPRIs/?G:g/[!)cXI/EW^d*Rm7q%nB*j:E"A`(uF84m6gnP0Xp%P%<9"q*G_4"Z3TY-n`RVa,V2#IXJYHk75si+Vc-bp.nL]d!u-!7$g)h+:*S?$n*aL%piRKgk2OR.4NN22ih\)6j:WVO^%'7b$fI4$1(=e#/*VI0;hI"HaQu>`]Wio('S'+9/mP(LLYCD5i+EGW#K6j'#r*,1A;l3M(Xbg9NJi^)g*n%+:ikqo#922QMq@YLUa"[Y($?GFf*t/54iQ[i@o=oF.)a#3dgerWIFgB*!7C)L^VAJb%K%lA_L'Nh#-s;_ns9B_;DBA4s1EdW(=)oA,=b.d5(Xm_K#eQQ0$".DVbcL+0258?;6dL8I/Wn!e"-o=R$\`="iOlTrr2e5VVS3]UIUBJ:g"p]V6-lUUIUC4gUD\-n:>:L&I+UV@05!$H1gH&VVONT!6#+2E,fk@ZF.*J21E!L#bhtK#5%K\os!Uh*Q-Z$O`*cUP7[maCRu"M97XJRK:VDe?Y(>40mWDQn9,u"_Ln;;)&dtkG`!V];^Lenfsl+Xk2V4egc;uC7&;.s6ZGEcLlRKBN@T-op!96p1[PZM0d:K7>eb_n!N4[;&-P91_*E!+*_8mqo(Vn1f%)2:=@,*[_Og$./R!PtnqCdjKa^)IOoCu7O:\:;W=B(8"WX/)OG=i41Ga7cc-=N3qXlAf4sEZu<)c78L97R0e%QsKJDpVT`5T\E.kAO9H./Wb9`$$3Le_2giaB\(PmfG^4]1:@V5`VC@:/VJ/8H+ih.3ar]r@2I7u8ZD.Aff);5r=*71BL-0I_lT.0XrXN#iVWi5,C\EBt@#J,VQUHjC)fA(h`P-R*F-m,,Q"lG1H$+%;DXJfk>Na:]mRa:CLar4%7VITBM#W)9cKf[e^*Q-[!bj)N!C](V`,GMgHOFGpL-g1&E>=hDK.c_Ua,PuRmn#2tT>]tN!Y>Trs%J4gSn6ga?\0.P;n)K&u+O]u0W`?+lp%:b<3.`7YK#ecW0$"?]>]fDh3@H;sc-<@s]m>!NHLT9OoEAl?BC!<(W[Qgb][>peR<(/Kg5"-is:KunqT!]p]a"q\&3ie_N)5eNTRX8r.k_S?aXnZH$fl*$Y.m&\`V\XF*oSIObsNFVG(uMEY;7/#_F0),%I:U+=BGG\7r9]Tku$!=`@KQLR5K&UJl#FCMuFe4u&nZg4Y+t)&Y6u7THReLSoF">0\`p>6foh.o#V=(6LrKeYu"Y6PGUX"pF/Skqha^I%!U0.06F?i>SlDQH^=97^PDoXr6M?GAc0*EAs]:TIO!r%4`RfN[H0lKn!HAmEHJ0HpDXaTM%\Wl_G-[n"!h(Z-.hg1Lkb:[./5*hp_%AhMdf1ou`!+6![>B64S+^OTZ/EE:6N\RQh2l9%3koOd2Ehq28B$;Hk\(qM$UG=,5m.>0"ZZUPB?OA[/Ud.m54-;Ao8NPh#o;5Q6DWUm4P)<"DE`dNqE'BqA#+G,CWgX_>q?,rDhgAMD;)>?G^9TX-o!F\T*n8-s;@pT-mQKl3.EE%Uue3VU9TOcW(H&4[m@9EOfr%k(n-Lgh6#4)s7m+Sn-.m5Oek;ltn2HT/t+)t`dq@P9E$HIf*<4@AWSph7Ao%&:g_N)!c,gN8u6V,9?pXVY.St/"J0>OmZ.iL@P;H6_GGU^$mDEk_<"9R-(<.DNdL:`\qm$l9`8&L1RBfAi6e()k(#`ji5(L7I^S%,\CiMNN^hkQ%Q:*-pf\.A.Hb_cf-rr.NS%2)Ot#_F0),%I:U+=CR;03Tf^$YX4j2A?tSd&LV3+>,Y,f8ba\>-f@6nFfG#1<(T!O#558ZEZ/3>FuT^;e)dnr'&qaG&A/)F_uN8%]r]1Q)c8b^lE"RHLhbr*lsqWG$ur_!eHhB%]e)f?K+<)obAD1m$Y:C[r&ij:#)n2ULKtq'bqIKPS=Msk#:BN6f*&/X3Y>=\PNKDh@_O?p:uoHD)X,5.hMZ_qo#jj?H4kp__?!NI:qBW/9$@kJeZ4V\$RoF7hM@:%q[b-W4O!r,+n9H#!E-2[Sq[>Kj!Pa#"bg,-CAcgUtOVT-2XA0E^T!e#f7?=mfD7t!ADV-QanZT1tGbX$"dVpi25]LqF$7<:(HiPUZqo00g6O=%OWK&QhMROF+\ET-fhmjo5).k=7,M'E:X+GfB8ie!\N*PZ9a-n_0d$/89]5XVT88\;M%m6tWk^GC'U3,n3-I#-.EP6WYr4?\as_WfiD]"$+r].`i+51lV\91V%O\DZ2kNh4PnOpqsnc$-rR*BrHaEUVn\A:!17gT)LE_n@3rF`jiSUkJU](.3?/b$hiMa2%hFcG7HB\8``DrXKK$HQ_SJm\r:r7ZJE'Tqe``Y,6O,k\NFEK%imiMUXQjq_H4:9C-A$DP3_uHu.CK.bRG5KmVu!)&qkViN/J4i6pRp-qR"/eL3&CTiKV['Gm?'GlkPJT2$:j&-P;[R?K!oVU0!W%Qsq=0^U)/I'DWIXVA_X1c/V[M@4*2k3.-U;`\7FS51q%h9$f5%`fO*!2D'>L-X)P@n/N\ga`!mlr7RWrjgsj+f(UL>kOr[UqgaYD582B-s)&QD([D$c<2P;t'3Sk1-1^hkBaQb\V5Rl0-1@teg8]X8)i1cNs_69)me'c#g1D[/J(n&LA_XSdZ9'//_dA+U#shH?<9W!l5g8%3O,WrRVHU[-WO/X4sC'\Q(t\;/r]c$1n=u!H#$ElOCjSC^E.iOG3!fc4;g.-'R$:dWqa[^0'MV8f!R72r[OBE8PP4/^3_=mO[*hT"kp$q68oSpWamR-Q`-i^cn8K[5>@sL4t(df)79bVY@0J\)O`86]dhge\7r3d^O_G9\j-.+AR0%Hh6:+"*j2R'IOYVM2#_L,+_hSb8Yuocj*XI^_MdtI&6mP<#a03%!/L;^>/N\#5m(nmkm5]M(*6kBjMG@F?hCD2s9C%&;E3SN@+nAKkK;2AnX?#Ou>?@t5hm7M`$1-#!P49.uge_5eZ^j(&?;"njmlb"hZ<)`P'#;,M5rA.'RNYp'$$&u)n/:d1*TLQ*>fro8.0^R%<5?`oPt!t4;3egqU6:WfAn'jV:T%)hMCYu:l8!;cX3*/R>$C)--H`92Io%qGO>+nfaE,54U2IJ"0cLWjt+L[9gD'c6-PWSPMI/kdCo]Q37Od?`V5%K"c<]3)N"of)N"n8;MHSP<86Wr!nbY@rO"K48@.!r5^Utc+_-7]/'qlJq!H@qOFSZWdlOS<9A\6VYV9Wf8,aA4='X[!*5r)?X[8YD60@`L1sf>VOh.4gq8)`DDFW-p,lD`6\FYHm+p+Y\1>=8obF]"NF.^ebZ3!-pjRnm5('jg;PlEtmT_#h#b-MU(Q,TV+p`eIq=3L#Q.7NDW=^[4/9#8g=[e3/Ieed-*0VpmM[MstmS-HD*ZEndbJuQI>PGMsb\H4(Rs,^,CI.5`=O,^9PC7.I>2FW(N-fci$atXgN#.q5L>mfP/R\if>aRR#7\qh8T"?[eG^MbQOC(92J:W?_BCp_c%B5&jC[^jbkR$3gU.99+M0KM2F4X-Q_ss)M@5[feM1B8Y[CT52SoC!]mKDli"pQG<#KpPlp,!g_f[0=*E8%Z?5:!]M56aS5;4s*BDi%gf_ID$#R(380JG_PoP@`GEsN/t>!_j$_0LHH=u>2Sn&t3g'!@Cbr.V]TgQ%irIR9f^VPl10@kM'W(.Qf-t!g"?I!O01$b97p"h&VJ9o`i46]p*RR]miJ9e^lP<2+WC,,TYiWA'Ggn]kn@"R5S>EfjqZk3eQ:TKrm":-4]o'b@I,aRuf[0^`D;'\dcZ<*];aJ@3TG:pYgaQms)[@o=M@&q%d:e^Mc6bC[m[oQ^<.)#./D>BL34U4W'OlE'ZC7G>0d+0.$fU2G/k!9nVO\`brUk(1=SSc\4JdUmP?[Tii(UqV^7XLM$pQA[U"6YQ6XG/,9_H;M]I.b\Q.cD4*(lR5GbKW_\(b-B.q9J;Z][hf9CeVKt+@3B!eFi)HE?$MJcf$s"8_LPo\]2LSN!0)/)r%)s;(/W3!)=&])f"nNY>Ul+,$0d[c?e6Et?%?iKKdlf#mHX;Xa>jRNr"SJR0%20\)aa.(/W_K;=7CQg^*adD[A.NRQ'"FB-ju7Lt5#)1BT'C5WI;9j;YnLKQ/c8dc3W4c\<=ZAt*aQfrPWe=5tA/JM,k86krfq(nQ5h7Ik=4_6ZB>[Y2bM^D(D#u;iQK#en?Dr4URio\LT9`'O"$3f\Ypa$S7;t!Qs>I8Kt.:7)Rk.QO>`l@KZd4qrMdT()2Za\5ISPlA'4\.&F`@=&sEJk3a*?/-b8cX'G3iONS#O^es]>4Fb(IJ0$=0!;@`k:P>RR@Tj'cca@QprH=/^PWDcYMXpkC2.LF%S<2jF`HI0K.T0++qu^0@/f@m%6)IJ"_BR\g?C2@=P0f/S$?:X9;X"nP4F;3UmcJLD;>ppa6e51Uk"P.P+a%Wqk>1QS5AU2"NM?^N#ujf#CfK;DbgX.79jE=^k/igumbBM]nFfEmQOY?P_SZF<(KFJsLgX<*AbW(L"/>slk,YF/h`]#$R.iQ6ej1:(4jCMD4V)(!J:*R#7p9%4;QkudidB"!'8db!YosZf@\gVDH5%X1@W)3,f'FHdNa_@[[HL"Ns.8R`\>?P/P1RR=)Q67L`!**ZE/^[6]$4OH_0I;U!L:smN$c5mi^/n]-@-NZD;M6tpZW>iNpjSJO0C#/(i4n>oKWY.B-Te(#DK@Rri[DM77GbNZrZ1>3U*Sg:*)2Y92eJ`Q"ARo_6o-sin:@kXk_d6CHmX;m*Lum5jbDOB/"%A&k&+XYh7[P('6QdF4bDZj(^ca)8n94EWh8rS3f!T)8q6G,!HH&a&c&F/liU5O6OS-"sf7]_N*>B=:KPltB<.Z6K*7Ce505nA:.aoF^,".;LIYkSM_3ja+9DOGQ8[IPEZuM9Vduu8oF[oA'bKIqm:L5%#_YL7a+Irg;VNTK6#^2Q[lElP`;R!U7JI#mA(G]<7Jf'@QN7bSpHb+=b@:O(G%07Kr3f"EETX$"cI:>!Im!&eplI-Q8V^9T@jl"K>Nb!(`I8ENL(CoQ!['6no1,e"&miW?8OR%LFc@qWOK@s%#^Wm1+rU,*R92Ygc&t8>g+YF2ej\HEZors3:nl#FIf@_K?]&omdDssm-a-de%SpbfGO9EaV5"prmZu&+Famh-7EITI3BQ+W]g3-'%:"JWL?phqj]9J-^-L_=YMrAJs"A[Zrm,']3Zn`jZbPg03e,C9%$R0;9Z'\[Tl::^:l"A:Q,!F$XVcoCP/kk5X>YL@[0H82u$n/2S5#'Gmca444X_m20D5]?^GcMgU/\SLL6V\2Z@pe^;!QobCWSaZ9KCiWkMhX/$hD?!X5`n9&K4;+'"mRlK%\4hCWI$>f"oVPL"U6HEK[k+Q;eYbH_>#5X'(.]R%OTh2#C'Y*#t+$G!,"SV7IJ?2dU>e#6kPc,>2Sq4$!]c[nc'Dk\7'Fo<)//$I^9[K!gStQF:shL(27i6CAtJ"h2!\]\o<2TcrKgS2,$O_8D?b2W^;^e85(R@kb8K`'`&5*kpRDarC%FNU')`';jp*IW:=35`]pf;Gpm[[\fbFsJ>*'4Yue!g5r[U\l('Go-C6tRi"<839`Q>Kg5_kRB^=M+X+2H9J"H0ZVahMc#V[:@so.OqHb:Y[7sU`[=)RjU@u[7`7uE(o%$H=5&OI3J+Xd9G+,:(Alr5'625Se>Vl[M)H[7q@55go\W]&IM;u?oQ24>*.;"M$oA^r8HrZaSem8*8>g+5kd6Yn'mBrd9fgb2p[f(:kie%mbQ%A91r4,_VC=EP?W*<8mGK'@YLMLU!T"b!6#*uTpm;iPop>VLHL%`R!N$@(*5Vb`3`$j#a(jAhs/Is&0)Th@>c-[0JF,_ZCE"4-Fk5@DO@#FucjG!SRCaQLg=E7HGbGFW-n\&B4a9jo5'XV_m7-@?Wp[uM([,l,5:M6>ZD3U>/;Jn46Ng`%2@sl%DS>nX\pC5cAquG>U2Le-]&4>?9$?CJ:7=%%1qYD>D\e6G(t=:S.'aq.HfJIUpL['04N^2iiTnS_H'#-cj\VripPi"T!I*_"*MmOn<1`*PkM<9c,l=e>l"_>oaC/g*ZEhpS-f3XjhWipf;Gp8/_,Yo\q:saWil43;E(Y`Vk?XkVnndR6Oo)r.E=fi/r?*YH[#Ug=;cZfg41e'bm`a/FM@6D)f!$56XQq3.QijL/h7.shV?gMm\7Z8-:K!lai)\.:J[ThI_rm;P0f/SG&`)W37-Hg*gmCd_of-cJ-Z^sI>Ah*Kk%`lE-L4nRFR'6#Bkm-[Y1'Hu<$cI@7K_l!SfuJiI+YheMQ`*$$Tb2>D*I$HdsJS_3m`8(mKC-Vn30$`A%ZRApQX"n%*[O=H(p`O^hVB(TPk*=Xe*&L\*$"YcJ)>aO5TH[MF1Y,miG!erM%sE'XOYgg:$5GL[EALbkO3#\M5B_KS>-QmbM+2a`8MZikkN.+u5KoO/Upj>LP>_ak#/:(6FXU1M:-=ro,5_HS-ls#u;iQK#f<4QS)8e#8W^#"VE=aeF?a+EFJ19*/3rlA58`.84@duo_HXPC!1`C3(I;Ue(CjeAo6EoO4-=ZrA^IRY7FhZ4b#m%04)7VhBt6=1:hMd2WKKe8YA_%?a4B$GnWllE]0%F!J1NCmj8^&qmq&Gh(*;#+m2>JkSL`>%CEd+-[Q[]q81HV$X+T-7-Jp&:.1:G6WWL[l"91.c0!9=q\6k3(E"77DLHJf&eulD#k&-H\"8BBi.APVscJX%uk%-?U*h/`te-2.9(c5J/XIi!GAPYU2^"a"'!^=D!J0N[EuYW?Z("I.QbnsM%pbj#9Rk,.uc[/\Wdp*bF?1t,,9,N;$bqA;)U.fHb]2j_)t*c7kL;335r:ZP1_Hl"co^)lu,:Ul@WJCpX_Dj%"N,jh=AB-'t0YfpRUF_og_d\:n`B/b,\2%^YWWc#p'2p.Yc+b/\:lUkbl0j"IN0h7R457`Nbsc&F/lTmlt:1M4iBHEnO3Tt#(4g]^Tt'bqHZS\N+Je^N9.C`PVhNeHKU*JW)VA&^:l\[7_L4I%#p,+lMsboRDug2aB']jf\37'oK^a)CXh"gG/cH]g:D[>g/]1Uh]')lTa8d@2PLk1-;4%ins3#>`M+EUGu=k3_J);Dp9gL6NY1gV["nX'462gNN$o]Yjq3'Gn](A1hI<69.(eKB_XbPE>4GU.CeEcX4*NoMd62`=FH#SUG!')c":?NUAoT6K1D?mm-S%1G`st[&Jn].4buO0s^FQEM9aEp4E,I.8]3%dd)MGDII8DhP)<$:^<$CqtTuNlJ:+/&[I%I!`fa=%<"H^A\:P[bp8u#0*C28/El>56AUZ17M?#r(9[>T9_@O3X5Q?=fl^1kXgr5\7eJ?tPSDqYl7-aqi&>eaKhW,p\Zn#MV#hemN])8kr'$`3"6.*KelKemg`!tg,h':14U$&Dk.V/@NFTSt5RQkiNIeNbds=so;VK9m]a:nM=i49I&,Qq@6RB/[<^6d%(Oj-2<`_cn1@pXJVl?^:t*oanWEL\M59\I/WnA77CeReuce`Q5d@L(Ze18D6o-cGq@h#Rq^#Hik+&u,KlPG8`?aEA"@4<$848]0QG^'G1(Mdb&0!(`poV!7:f@"-8n*s_fmc_9L%:YS_qVR`E&:p`]O5q.A)k#bg2fc2q"4CCK^%X,/EeMfLPFo_3QlYeYA&_;lq!8/!%3!Pu](Jm#;'?P0nIoXRrJMMkJaoMUOA:7V>OrX-%Nd:a&f40`Vb:uGjp$[(c\a6d/op[K&[d2jc1k"9>H@Pop?k6#pu)fa5?^_/n;J6E(9p?_-;KfgkhTrF`_`_q4l;Z2XmWbMTm$_O#f;d[@#1pU#@(ic8'p:>JX7nE>gp)*AFRabd$2dmS]$\I-t]P@VDLK`97qP@J.Cc41hC?^_e*0Ki9Sq4#@-K^Al^S-G76sP8Ueh>3)1b^+VlfdQX9j10HV>/L1XrX9:PlJKi(=G6qr^fQO`!*AJdh]d6,[#OYK13+JOnf^Ti^0L0ETI,ok.>?fB0d,,KrM)pC)bT`A,IW%2$G>FKfaMH5e_r+Ku-QM)n?\"i0hPKY]VN*$i3BB,K>[r7rgB:+eR?fdJ01V4I%%F,Qi7XVTkRGQ%C=iF)L!sm,Gml)mX3TFbTK">sf=%VrN!Q^&qS`j]&a(Hd5s/;S]P0m*YE+-dJ=@RCaPin,N4n!roo@)+l?#`@=(A:S#6'd3-om%j!H3:t;dH'GhUl_HV6X*Bjh\o(7XZeDOLMG3aTKDVj?BrH["Pmo:4`iR?tFnkVT*X#Gs95\QR(fpT`4O)o<_@gIb!%D.]5rmqO!L9,K`J)l,llf)r@-N6U],nDHkj`U&8sHLah8K,Jk'0./+)?k7!:Z"S_ccnDffpSe\Ap4f*Ld:*)^8:>gWAMP4QG/cLNQj4(a#"+o;&3Nnt)?U0,!105n(QD`G,"EjT,p4V)T!F`*9\oh\O1d7(-H=1M)`e%]>&#lcETEOK(_r2$h',VA/,VCFRo]fOl^&Hd&a/B1AJC?2$?^7j1BKaM"XX+Q#Puc]X,"c5\pEJbM(+KNjU>3&rJY52k_V45g2poSe\A`Nt%d1gWHXLY\H%Q$WXU_)fIlCpa@R?ETdR>nmdW7$hNQ-\$3(JDOM:acf2h?-Y3L:L(Wf7ORUM![mTqJ2=!6?"cbSZ(8NRZIoT3F]R2#jIaY;Xe7[\BGdPfMT?$_XMp3O+W<>L4)=4RoP?pUr6&LW6'@+*,+uL&Nd*RG]P0f.XET*g+GMl-"DrN_GM[O8N<>-T_Nkh2)7a_+Bcg7.(:`8(M[%_`IYc"&2;X"nP4F;3UmcJLD;=']dlIhVg#Xp+=qY+OpLG,4S(\SL2b7S(?6<1]Fm]!397g-GUHb24r*Z,orW2QYhU3u^j65!qSR^`QEc''MtKp"I/IF?-3K0o`H'PK:Q=*VfJB"O.:R4F%Ypqob(JlI9p,oc1i>+1rGs*f0/ooA7\]li8G^7OKBKUrFS-g]PH.VX:+Q%^A=6s-\.1RrR`f2$`K`]sk=PG1%^=-$)tgXhL:'ZfGhDD$&h2:Nt6li:[;_id;rcAVX(j+UC3;-X[fnobbTFSE'pB+HF/*o)!gErM&MXK5CE9V3PkoJVaMo\\:hIm-ONIK"W\pA`.CqT5M1I6]H8H5=49m$Ti3)$^;7F+J5A`.b4;9AJhMk"\\tEEm,^S/C.T9(UGq,r6liknMu:^tSm[DroQ#IS^b#Z687)\%ePOK#G&Re]o4,WqI%<0A->.a2J21;ts7Vn`aaK=['?,JjT:")V!=\?RNpZ)WQW55H%@#(#`Ze7VsaN1q5Wq7T+e_>:2bYeBo:j;QEZ"&DX^23^=CUH?C-2a=h/\+#KjR&TPY5c`bcT;(0Mr\<*&,!g]$^bpg5FO2YT$*=rU0r5Ah0-g*tmp)IdE6Z>;r&34/g14AK+B.p'&.-'T\,Wq>7La7TnuU!-7L]i[^uBqLA6"HF6<0#T[kDeB4n)&%1'e;(m6XhaDkEi!cJnh0J1BLb%lnk*35OGGo3n(hMagm=C+&a$eF8:R@m_B00gik;TX\Vgq=-MX;1/fk.q:=?desQ3'bqI=ol%`F+S85[^ml?JZWJ^LBdR0A>QrOOG5&,g*u#O7La7TnQ5e#m/^1)G!n_1?S_Za!i9q)QQAai^3>#>i<^"A*HGgo_3AKX7^;R'GV>fo^^=32>kOUa`(q(S&[gJc>B'B3Fjm0Z68l+p1bC6)f72"e%(=j>H<'<@&N]FN#WPseY82/NeVCf'6'!rK/o>uK4l@%#)C$g;$0)R3a^.#e1i`*VMG(uQedDZR(f9J[2R!f1pj9Opr.s%rq["?(OPoE'k3WE5]Ir]ef7dL2)B;mFe=;VM0JD'2(X2EKpu]"R7hGLG9/p+fQ?o`WH"+KHi*ZU$C9t3uYr.k_^:YfsRmPTE%$5MR`e[g8!+_8-Zk]bYt2eXcB7#EX`/Xj@&W`su*2`S&/R(+T1%Tjuaau(p4Ao[Xbh3@.si92:X=K!oKl&E1DB.e*Ada?Z&YYU>4]Nk[u/?#)?UQ?K5/21:q@`q2Z'>M%rp$,PuoZj!h6;3RZ-n^S^OW\1\ngkDOWOP4&gd=SRFEN4'_oSj+@g@g;lMMsJ&!K;CKVoFcO^o`J_b*tD!hjRJic=@6#o0/ldT%#^eL?>H@dn[6Zp\k@bK_*5\nL@!(9K\/je&VD;B/2Qp2ZjuSj**,n!60!fVR:l._"ESVQ;B-hR')He_;+i/=^',bM8T81,A)OJSlj]>uXm,LYFdVi98s>FE47N@W7B>\m>J,eKP=Zl;9.MOf@hhH&8jY=?Wl9\_N>k&+\)o]K*N2/PE:'H4X$V@,:b7(;!)$@0.s%I7k;sK7i'$r46M3POm_r\pJ<><]rTo1!JEpm`ID#$W2esR.9NGs*!bNX_KoP7gc@F\F>usCc-KAU8=,TL#PG,NtfQelKo'o(3YJ>be:!<]tKn^o*Y6_o_*"QX;OFa()KY<9cH!*1h:jDIphRL`3iPleW>)0^]F'>M$W(*:s>10%=SG&LQfNjU;e.k)ngg,>qa7o9_8iRH]e=Cna:^^"3Wq[iotGpNq*70WhAe51d']Na*P.0i*6s?$oc!BX$*/NkA;HG:+Jtj>j`NZd+jr!4dEie-VSBmZjc6/q9b,k\h9=f**-M4*(/%N:qi]oIkTT>JYbB^W2(NsEO;6Sa_d\!&CI]p2g:6uI(AkcL:C"854ZWF[s21rRbnCE;k%/,Ga0oLk7:1gB2H:IVmhg5V^EFDu9B\6;-bT\?IBuZTIrH\p)VfEPGmJO6DeLRT'EDq"&o\,%APSnHA*aq08q?kCfnV[bg-Vec*F;/29HpD\&g\?[7j<[/\,GQS[Rl5G/<)HYLqRk%PkN\@/RgZAs2X_Jfp58,^3@IaJ^&]IphSG()HPqC>eLes4XgAc:;k?.La9"6&]#Q(c?J!q\f+oGq*@a<;-(`m5oKc6I&rOVP0[abm\8Y:k@:]G!iVso,!;[&?7<7E$+>87o,$1g`suO)`?V$/l_:1;-^'Vm_!k\\*`#Si@,-MEUU2PaYHjre\`b0PHT'g`.\TNY*4S'If4PK$b%4DC2.M3lb'hR<]L41-69SPZ$4fX&=0m4.oBnoupu)fs-@/Wh`eHM\@ls_f15dAh]+B/#mdcTk'c)TfM[NPP:G0BR*2:hJ8rA),CZrRK93f'HKe"P>4h:55/?E0J;5(MhkkZ6(*BeWU5JHS!("b0s4XAY+Qr2B^W)Ep/e^W+3-7pNa#)WfD-@Ts.?+Y:9\oeZqJp]h'J_TsX$e(;P270]bmeeUOX$c'kX#Gs9h-h0>p<"j7,QcIbNX.CYP42G&+Hh[/G?B^CW#P3JF_S(AZ"4j\J+WZ(V3RRLQD.blL!Wphm7M`]p"Z4em1;LUAMaWenp"/O.1+aqCV,GYM?W.5C*`K%I*4BGSgLmq`II2H>=04&XeoSO$_k:M5U"]b(hrlOAQ"2''\B$Qf;2J$a_("K38<3sB52P\9PVcS`'nim(nP:!d)d*^%W[o8WrMj>uFq"-R0_OX1mVG<`aeHpDk1c:u:j>"-R?t!d6jP5F&(E!ZupV):P^lFO_+E6/6$n;C_&JJ*l-;C!#3j-]o45m^-QO9.H1_W3kB.@G=c<^e0R$l3s*9_Gr`!dQ#C8$PF9;BO5*M[R#^QU(NAo^\k/'sCgie6t>CYWJ@dEdkjG-:e.UY4TQBLd>T10Jk&7i*(Sln]C3u]4+';4BV8!dYj8(smI-TQ6uAc4G5+t$Od[7!fsP\WRPM"ca3otFh4o/kkBZ44H2Sn15L7?ASu,TSc\n9ni$c0ZBEeADko5kN5)-^39d[#s6e9lWaaT4no5.N>`d+bm7,Z:F+1%&Jp8:\[V"DTp]j,\9jpMC/;#b5ERbhh1P_k,q-=:"BIO_'++U&nKrS?lf'eb%aKTD52GcT!k6"FYF`5q^@\_s.j4dbOHO=*Q])RbO:ci.?QU!,phriDhXP/'ubqjE@gqkH>kr?*O>FQQTFefb`I]Otas+-1qiSU0bH5/o0,d-"Z,qNE"-qec2J'NbY5%@K%6l-AB,r,W_e4VW'5>J?r^T'F`CDs&CCL9usHn7a[:DJJ^\13te0$AnEB3RHYFW3p!rYh7>N%pYr$\8q-]lkL,d#pT$05%*3p/><1OSjep'Qaj7]PMORLlPW5(/3&"t!ZgWuX&2\7c+R>lHblsd8R11pRP#Vq__J\+'f]^GI!X_qo1pJIR5k>+1i(ngNa/NMi80j2.?MF%UnuST;o^2>"h!sqnF+f!(Zk@QS9&5b-s[iV15c8Pq*9\\)<>_q(DlAeX-]'8,fBi]+G\snSOZJam*%J;r"Q=?Kt$M;"DUnTGZ]UK1Dd7Aj'99#%*p8U:RpRtpkS@o]YjW-*#$4d#*NS]n5Ou^P)MM]$hp9X)&O8][-p8s2fIL^i@EK\it`Go;s$q,/Z$uq4o(m`D;`cLA98),!e`pUoH!VsoIgs8Ulp]T1mml',<^Hi*!qdEm#[oQB'*X)K;6o5B.n"&=BJ[/_?0\/g3;nZUni,'gdT5@=.CVNiW@U^fOb!A.F^0Z!sT5b.=9aI937-'@:3J.FTOpqJ9o0HTr!ObKE"Y/I,jVsd`Y/>eAMN*3*fe15B@T@q[SFYqZCsL;L\-$'ZN_NAjacK;l7tF6c-\T'c!nehlH7Vc<[sb]C_!K6\UU3r7]`Q<(Ock=G?d'9i,7YPl<`,Ju=qoa!$Z'd7T=t_BYlr+*""&,H]<<=^5'j\s.Q?r5Hi\;A&]]Nlp\**:DQhcMkIS/odTCda^h\p0-2(Bc37La8`od5,%\4hGXB>ci[e0&c-l37^ZE)G4P.b<0%p?@jA'r`dXZS`i`6?GqoQF-S2JglVp:LQsgNVd$3We:#-VmV7omQB]2f=7(E\]X(h5"=]JSS;/h=um9Po_B`8[>kQaIYPk?(_*NCH&+Xh+3oqm-N^5on7.`oQCAVY#l1h-XeM>3#$_Qq@1M:RriWnB7HMXM2?q_,rNRVs''0QV5pC.)U:)u^Z<%k)g.Kb4ZEoSmY$Z?eU_'@E<07%W.]B@W$ZNgMGH@i?XGIII3t(Y;H\s%W@uH-Y#iupdbL8/P(XA(IJ;l\HtFnB8p7UIm@9Yp=T7>I)e@CFu1u$ShmeO_(?oJPD#hH"Hd6U>[5@n568t-a52#j7?ODE%ln8*6kg1uJgd97&gSk06kC%E`#QTE.L++q(fi=7.Rq?--57+1&J`89+>W)%^V.=o]C3B/hsK:'s0noWg9Q(&VjSE1^olkpnBf]#hl]6)#lLG,Ya2)WcSc89PBQ4X/81$.9i6P)7n/nOAQBntES\5X+pINsOrq=a'Jb%`L[XY)eCd:H-F-mVp0EAL?dqr*`G5QDi;<315CfKLA"X^$P-d[LNM*87$S]!0d5Np=CLLY&4TZ`O9qI6?hrDkGf?374p]S*2oCdg>St;Ofrp9q$EV:nADJ=Jm/kh[!\P(\,kQk=LR[T\!V'W7+gNW+_2U(4$PEEp^l]UlTP.EP\oN4d5TYr2cMdWTuCh3gh5hdDnaO!=HE^1bh"edoJ$XCUr[\kD'aT\Y,AO;g,Kb!Mk@?%!M@QQJGQQoTdiVu?id`Li5mlhr'1FUN$:/9jiRlW?Z*(hhtU^E3sSb4@:iKkpP<]*D;Ee,u^j-p([TVJV\=tqKj5r#9/,K%mik)W^p!J9/&0Lf?d?(1$sQKOqrqN[V'2M5=k9BeIF>8[O:ZLSBlnJL%,5a(C*Ur%)R%HXX-RFSm5rRHu%dEZ9/=%$gl??5:@&QJ/$pOLJK*=#=Tq0,o9sYIK%k.SD`AN=qbCEF`e.u`fYF]3pZNs0V.7o)qBGo6nI)igDT$)\s)I:=Z=N;AR:?s=+W"`bTmi@aQ>E55]/dK%qiJ+-g]]R.?S(9WVV6*qTR$kBBR=?*P=e<&3m\W`d9P/r9kiq@9qLtS8VU#G>&S+B6P7.9^mtW^`0>IFZVukWS:G2-530`B$_?W7QF83bs"eeKMk2*?VZ2fO6Lo-:B/Zl/*eCFL"!Wd`N!T!\P!F:)a6CR+(Z,/0JTrBhHaBD&nTkqI`.6'acg:)4?mqc31>3b>8cjX].&o#OO_?Uf;G/?XZ(PW>m<)HLYqV,*?^Md[nj4(ekUC4NhdF?9lSU:+kQts2"6B%n3)/Z5ocUt7iB0r&8#7kTcCC:s[.HcV-Q;[bWMkJUShPS.Np9&`n&FA.!j%_'=T;E9->uR-:n[Q;TT(piY(!E'("\2e=JFhbiAi,/a=5mOTV=:Cu':)l4)1(]o^-PA7a:h91t1TN=>tA#YV*a#Hr9cq]IS+2's%:f8HP%GdM@t-8X$&=Br%n9*cg4RoddQX'Le%%\\GkJ<0c?@"27+4mgh&bTOa*+7jf6FCbCC5X6+F;(\>#g!a[X'd!kSG;#c0s!*:%@4)>2g@>\4UK>L>1.lCZea<%lV?VM+:>'F'5iGNFX^3?b&0F9Qmr>6RSW*L=C`>c/3AS'3$,Mf5%1hn+&XiqSMDME-?;.r2Y&>^!\I]KN0p7kuhBjJ.mQDq_>]=oYTG9=D3YCAt*%mr(DdL%K?!X4$ci1>5rkdM/<3f;45;Mg*SbE[5d3fi^gS(F?$#=Xn)2=TZ.%u!@g:*k;GK/*Zl'in$@1id$h$L/W6$VO.%%dka"7P5Mq)2m=9$,.g.REeJ,j!IYc)4F2=VtTM[XBOUmnc'HImfOaJ:pF_-Q8,uO`StE!%CL6$\jdKP_kX2p$YM,!`\H[%)G'stYHbLA;c-DKMbhFJOpt@Oi3)-b9:;nq`X'`]mC2%OE*>8NsF`eiFVu8HF88OBF9,ac2A8c+/L_lXojR?IA0,-qHEe,u^j-p([&CmZd1NHlV&%[]0pQdYPbY7XP_7hLc]?GHlAVV+CfO-SVKp(ag=igjB+&95>"WQD:"%Vr!/Wj!`L0m2rOcf0lg,FRK_8aL71t,%R#b!fbJA.76GjqdIk!LLl:ZaJ9^c[/NjLdp3BdrhO@(cO#\No6KRnQZMmUI2?>6.#BbY;:i@!GgC:(:l!!qHeKmW($"R@^Yf,"YS99_eC+e'lo5Fm]=,gqJ-=n;@aA,6au=c-4s)rTX*B.0fu:\WAjJn23o_W0.m)oueKDjNk]4+FNMcJ>oCude:3mH`q!b_dsr,U^E3sSI-/dr9f5mKaFOm%?i8J/l7:>I'Y1:VN.FqC2I64)ETC`\9W6(,a^]Kno6q$q@_/?>!GT=^p8Y+kp6,s(\9(5GI-6-],/o;P5k"D*_FV?g)_.r50XVsW!EU[3NSRPd1Zk5M$.urDq.3Ba\pP9qjZ4"gSSIqe;5Hhn$6^4ggpknBRicfk-mrEk%Adpt^/H2OeLM?gEN'd11m,/p>$>7;@.DZrKB!#cJg1Lg042,Uq$f3J1d[>]05:",^AT7%p$"PU@T(U=X5r(MB?ie%iP<=8S]Yn$i<(0d3=*?EE^;,%ZQ2//J6+!7\M-0X2I$_45(^00rj_O\P4TLQNGI4gKs;;i/VJU]GHCI#I,^s9JH='8:+dZ9prQI3WMlcRVLE;o:?2Jlf?[5e?%(h'FenVhlXfhK2t?"!pCIXT*SNO5H$H%D\p[cf!FZ%+n`o?nB\7&JmV/OtOlQui<7oV"Qa=;WmiC%X!4J]@$>kTGR)\U!+(/hC1l/g1'mEtOb7Ss!J/(V'+%#%]+t-6uA6pJ,oS4u"oN1H%-\QVs.pj9)2.$VEE[;--:4(BC!h\tWCO&@fAWr5.!tKNpKbSpF=Q>08BVb@0)q2^F9`>j^7iO7X28.8mDkB1MC(4S%":G^2@H2'bO>)]PlRi0X]K#:2@rI(^\#SM=mi:&r<\LN\\@_Kp3RGHkl<)L`b3?Z]>SOUH@T4u%!'69t@gdWXs7N\'&&jkq;3R'gB&!J89%]o`dV.4q`:FK%/*RMiX9Zc0`,&EC]=DlMp0Di4*l,g)]Q]e5UMPrrY+EMr6@(\5:RX"3Fls^V@ED#h4&nMQ4-r.A7SB?fM;Tq.2me^='lpb*;YH<=1ig?,R5KF>W@,j,[>)?g'7EroX_G0ECoFEC^cEI(EFM:e4=[Q1ZlTOVp((mRgcFSlF7UPXDbYm_Zn0>4fJF7tlo@lKH@=0Jo)]DlZ/;Puq"h)e'iWiFS(G-J=FnT$<mD/@DuI@Z#g>UkUeIfCQ57B3>d6>7HGgLt>"k=rGZ2ZJ*8=6>es+W?nVY]""`*U^UL`JCi*k!3F2&+0qpJI1r3lKW]\E\egSQHpQ[&'j)]?\-Xe$eJ0--9jMa$(5LQN1!+c:`aXCq"V%`4Xc5-lKT;T*F7F-D%FD#DD'Fr`(hpM8ki#36Na)Y*P>RC>G>+$=19bs5C-"N3r>'5HiVnVpW5cTS3Bm\)ZtX^6gipifuVMWC?a[18aqF=5TUg8p%7(1h'%?#!O]*h2)2-_s.2<_Y\)Q8p8.obCd!ArjQJih8$fX=KeA_9boi8?(I>9E\##q/B?)W.>*PL:Dm+&7CQM[qgjLfZ%hi?pn79pl6k]bFNBX^J5`cA(aRFa/USUCP&1K)Ab(NnkH'Vg>EcuJUdVoq@0uHiE2E#_4di@_FO:X)^j6&dT!c$96#"dbNnXJkiW''--Gr]G#Wj8p.+f0/b4Lr7\=@9&s,G/#OJn$ch:TRk'a0[JU5590h[-?/D>)f#=ZmISEG@!IhbK?i]i+oFrQSbQ#'o6!0'K9Q,md;*Bp;%>1723i3(Y3/7KJ^_ETB4L#AN5tEJIfmCjA]5=7F[T-&;jFGM'GJ6r`$=Ib(sq-lLL!=?TNJ"pK[@TQK%VB9nF/4SQS=Z;GL0N<5\M)O1gOOQP91]^,St2[I"I=YIRO9Q8(kj-WMaG,_$m,q3;/R@AL84ZUp!&?Y#3Qqe/U/]d/>?jq81:dU'bqaAhZ/5,JkKK(=tM^V30<`=IbDMTqFot'&_*WtU8+!HVn\OMUJ,IpU#ln5eVA!8<&t1H%!k^G6c(&O>Eo^7=3ah1Ec1[$u7>p4gerMCB3NYr"'QRL=a2fgf8S[/%""X7kr6s)I:=3[SX#^sfTuh>K[f>nC3>^+i&(D@+$((MY&l1d*9&.JZj1p?IB#b*;(QgM]-"pcqV2Q>D)pf2$j%3+mq6$S.`K6UNZ(:GatGFm@m"b^)N6]Vgj>"I4aIfWeqASt=eW^\t$kd^TFO>[W.F\^4_L0+a;4RGg8'4$-\#]8'-9a;tE'1`Nl@UE6m.IE?$iM%kG0RWX$Z,Lk8oKejF0egeS:KF`H,jrjHmaFtGGIWCBEJSiV(HWQD^Jn-MLS\T!D&!YnojM$8edF29F,C7@AT0"CtgMmUDk_rJn+Vi*1ECa!r9(bkn`S2jYOnOP'KWIXB=A%[3\*i9U8!)m/OZ@!-r?4n`97%]\3cO'n.l5"=6_.i7X$TTi+cos6p1LT4*r'71R[7Lr\q<&]u1[K-pi^Bf\p'EJa'3.YJ++7,3,]6CGq!";&u&_BP@$P3/@3jTkrD_B?_jOsPoiXC-q67U4@S8sXkgGQB.V?oDb7C*nrXajMET!pOFJp!U7;@Y^>@+imasEfM7W@XB\,BO\sO8)tI^%:%>#'Hh`a'd_]e2f=J;/aYj,PB^6'%,:P(9eQA;.DMZd+eesMO\Z8oa9]Q\OC):ZH)km5r2"[7!;uH5Sd/=t4Y4]?[qb>CM05?hG9L,bV3T+cOpoUqfUi*Xm]It`J@^32gs4.@lc6ZYf@F1g[0XqTq.21=s$uIZHP]bJ'eQ?J^u]9e;PDL["XZ!k%u2KK=uB3L6N10%1FmnKi$dL>+WZb9L0Zo&+5^Oj$SUsZcCGjgdEAS/&!%SA_dUuVG<\:5?9WRPgjj9](Q']pRf_W.DS:P,"c@nhaRgkn[ibK)puOm"ehs3-7ed,`];"b$TTSQ+,XP1,OSd*B5oaTjO8q3f!SX23EWMaqkQUkd6HE7G%hB&M47%Cnb]'5*Kaa"Wntff3Ul1a2TT=_==g4.iqu)(_CWAo"H\_@f!3uS&eZO4eeI=u#+P\Pt;/kIAmES(7c-sG,X/Q@#KqQW@:O\&18KEMRNM;2iL4$?+`P%>qO5GUI%r^%A:dn'-l7F>S^60)NY?$MI+I3rN#k6"$4"'VQK32frA/!Jco+dAFd4HM7o=,2B7d7l>"U?[:/#e4%X7(OiN)0[0:$pu5/f'\C3d@L\`[c4X3YO86.:P!.3t(_aeeZ%dDZIpWVcQ7]BnOHV9)Z56.M'5jHsr>H/e[[S!!Y[S(=_38&o'`KaaR]fNSIuH(aYg*^'`:*-Ci6Blk.d5k0]K5TgBNL6p],9l%)2p)lWpe^W)^7t)d],ABUOf[CrViZN_+%=59op%h?;Zrdj5eK(U)\Fn)EWpj4g]=\K'<`#':Ajo_'eP:R.PWBQ=qRC5d_;+d`.6>qol'U5>iuq_kk86i"^%%,:P(9eJ72lL0.8*d*1BOULV"D/jE2US4ANqQ6-Qe.:lA-/m+$9fW*rZV+JhrV7?c$>Yt:7<`J,_NCDhjZ_KD?i4/EA.91b@j3/,:,G:*Ma=O89rHilWA&sm@*URF2kEM'5?ig+c+XV5cr'`IXfX,CGaV5dj#Rs?X"9\iQ,pb"9.#rj?\Zg1p.[jpt2)R8`jY`6,^toK>0JYC1NU!a47O&^ehS%h'`C3R05BgHUQZ`jr)aYr43H@$PB4LlRjndZaq2BOo!S9pRGc!+1J94LSi/AC,p7?amiQDodA@ll%?0d:Qo!k!mMTLJ6W@#a<)lp>>Zh4:VMq>[g4]4mJ@cVXb_#tjO0Oh]-p)Wn5sn#abX?q\g(7pn8\r9YL&C=ZtK\JPs?)aIXqS9)nK,#J,Z'?&L!Fl6In82CNbAU4fiXk('Peg0-aPih-;>IJbXa>khMt0(]t@l.+0&r]rdk#;O=(BSg:.UG[rC$M.3*IlG[(`Z-2sDk0iLZW\6fKu^$n4+$`F)as!nAiIDJ3^nD;-uEMrGd;Op_MU'd,U9rM'Ruhmb[j?f(^7M]LM3,.D,?*W*;#h#`]DZuHbCG3mlel+?cg6]@k<(&E0C]ekmW-ocS1]L<4o6f@H9hg^0PKJH]J7a`X5G:Z=9)-1,AIdUp_Q$00ep2A+#j^<%[#"\jJgVAq!W:s+*3ca/6HOA=;5:"?#4!^60%:+Y?G3'%M0Jj56d"-/\%R5K$1TL_2P)94Uk0s1PQsfI/m,P9_Q*(W87.fEkD(?$=>)64s*XEnHZ!@o.6?7R_`Xc&6P)7nmX/GKHnL4$(YZL2OId,Jf=Bk87cTk+Q.=6b/j7a6Sm:3I<8bk%*]t,EA_>#ojFU@84"T=;OAHR1iE"pciY-#rF/R?UeDEMu7pAW]r6e3jMAeO3db@$R><]W?[LZS@pbTU3Cd#89pZ#+D4Zmr.U%TM1m8#m0=.rc-3Q&[3m4qcIoUl:Kb]ZG$_CV]TiBsl"Wfc?$Y@u1oAft6-3PV<(J#8&Vp\PeFn-age'A9)P:s`#5jG_O_n@5`b<),&K)`L@YG.bCl%$NLn(b9bjM2$Ca0o#PRMu-OHTh8cgg$r?]s@8l-Fj]@V_a_FeLNPFRHTQGG#tkj#5UAkQWpjSL%HCU>JpK.Mikj=!`SKYP"^;-EUD7"Nd^i,+EE&,2%tiMak+S7i[Q9:4XY#?u0Xq@;.1T/ksBHD"uK-lp#RpdYs_N;/0f97Gl59'7Q+UpiNX%@kpD=,?m5k>3+*H.nOa^RO@?dW,KEVU"n]1l&$B5DIO5H?7%4h5q2i;]4O;jmTdH2Ab2:b:Br>I$qc9\@gQ:S%]u$agT"TH6`Yi[L.A&G>>%l595k:.RaP\#We*:!8h1IUtk;7M.PoNK6Q;p&!e[nnT^0SAHd?\d4Bk.c=:G+&=*1p3\XNT2o["(DJO[&:U(`Nf:ILGE]+^KGU9q9=&G7ec0]g*t+hV=`QK7W/eJ/l4lTiRPUNcm7MoN]Yon).=O!9AQ_EnkWlnErdA8lc<4"n[7X?VKL$h0O&$p//tKYG3dl!l^JJ;+JCB:2C$AFU?\\?=ZhN,,:i`uaP'sfKCSOP_gOu5naG#G+M"paiq9,a9i(,K1\@Ou3CU`bi]h?hZ410"1U7stq#C[Q%9L"KpDuKZ\0#m9E`,h;YBXAB7`NGFQ2iYMi9]I'USF#sj;@T^J8q:D3[?\2l3pUZ0/c]OjFYnTS1H4C&st]\3.cj=Ku'l;kpn"c6u&1)r?;B'%kFg<\-8"#]R@lBbL^Z!A5)@J-?1No"!ilDS>Y-'CYG\!s#6PD%&/YCQ!)nl2B$`7=PN1U)7[90FB-V\%3if^1A_WT#E"cai*^2%Fsd8$e4]PQK==.V,Z$[D*NG4TLfc2uc^\C3L>WiDN!+AJHQo&N,i@K"3j0SPCe>\2b1Q]u<"B_87/RX$E)o2`4*\TdC.`b4bqV5C+ZRh'?Vg>0LC-b4ElmX7&#/6KQL]j\.N6!e`o@/e$^O9Tu(P6V0pa$D]rT"^;mqc0iW"`t9LFWYen0*s+ZA+p]JA_>"PS)hH04.09@)L+HeA#b6<49uCJ%aZrA%mG]*SI>HV*0Y7dgnd9r!4E4rMCq<(QQ_W-'Y!*G%/ckoKT>(5.uG(,]7+%rqP1h7_2njf]:GrQMLX,(^67/l,02[>g@iUmml)YSDMUX7pf'hq9='G')k0,OkIj1X!\\i7$a1$![$CQO*SchbrE(YW`WE[]oZ"To"YOr)i^*jL*.#S1<9g1NS7m'kkX]A'OC;,&,GOX%>,K&4%ihde38>I7P5MsksC]n537tkilQm$KZ0pk['[2S^\bT'\uQTZ0ba$/9"gU?GY]KCl/:9Pbd]=h3%`>>-U0]F47s$MbMJ2a8$52P)9Hs1\,9]$WNUM2euG60QXM\#TV9F1)]P9*N"#O*WDh_G/khh(6>_ZCH!In"$cTc)s*`IaCuf5sVIL]0@3StQ#Bn.7n&$MJl5LQG^?F5&9-[I/]Cm>nf%.:;Z_tM$.LDli;T=4_K_KgsrHs'#e;(c4`J>o/p%U6+\R&X1`=7BjC"VpVbM(UjdhDQ]Oee^L+V.,]P7,T+gU^+KhL39X02KpMQNq":'0@$l$XH-S5M8*@P7%hSPWOEo@D`Cq67Q>C#)t^jeH)iGWLeBN0.$s8`2ofPa5Aj4B!%)3DI"7:\$K+8V$KctI3&6/]aP_jm>#eNelF+]?4L!OPbj';1SW9&;Q'Kj&,@@Le;L(E2ePYHNim4U2(@@>>C.;WH1VU2Lt^n:_%qn`1=W.$5?!47Hi8_KIej346OCiql#,\De-a@_lIAWZ\H!J;&<%O\f%'p!%^g(f;=n,YPXphj<0Y]4BXX5(L9ZlD\*"j=U9.9jqtO;4\U]@g`l:-ff,3P.;HD=(?UoXm9Ggpc3Wgo9.[UR=MHU1DA=/$aO677G<[)(;cnA9$2;F]hbUrN4DRPmUPlApTOGoq^\m1H:f1(eOdtO_2/jfWSlF7IFeBL8U2pZf;f5h-DNk@6kigJ%FU\dM-RZ+C>p(#2HO?bgMVe%sn(B`^42XW0*QH&f.YM&gg)bd"QPUVoaNp^Ab`;<+W%fReLZ)Ld>e+h^L'a#WBkb,0UcN\IeYR`be^W+WcCQEIX'c6l^/;;chrLjFRHRnS.Zs9&Wu0:%b"Mm9QYdl#ZU]aZN%%dD4gpfL\a5YS7Y80U1!eI/Rr+SN=rX$Om;3jMHjYF!+ej^\cZnG[!7V=GW?uogb:t1b1hfjV;_eJ8%A?jrZ_eGuq-HNhp1>2lQ;"8M8*8IB/[bE&]n&\JWBBIddmY0.*QnjNQf8I>($+[di6%\U`2?s/=c(kUlVMdBpuK:X?ID)rK8s6soF0W2ltQp[jQrg%VZlo+oRhLkl$F!kPh\Y)m@DDj[o,ie*q2PYtL],s'iYLZ^\]meK4kHZjT\5GSb^G9spPs84X]=)^ZO$^/IGqbkX4%8\iGDEHF1-^.-h,?(VLbHdl(R'rZ:F:&e4k/i<(K!HoQ2)I//OpK7[ej6s/[SFf$=#fd7hK'7=HKdmSjh6gLoZr?gEK\Csb4>"DF`[l\McFTjH#c3%BGbdKil-gPdAKd4j=I43JKq]*\GtW8<-/QF$@l#g7O@FSfE_U/3i+o1QUoDkpFS5K(1>.4'`s&1JVT?j?X&_UKm_!qd$KUo5LQIE`A>%#?.ot(j"sLcC&&gjq.8W&Kj!Toq4cVl0Gke"Jrh:]eqaCX0%iQ-@KH(IS;b615@Nb@RVMu!o"HA(@oS\Z[k6ptujA.e">[S/%:rH$n(Et&ui%>_/ZYL(g"2H)lm[]%`'-tI+UC7gA3KX]YmoR;j20(r=LbpH%nG8-6adk6)U#Q;$7ZW60"s&K;1qn_C0!)`?PX-IdYSPKN22="LMVT&<]m)P$E>ZolfXQ0h7i4eZAq"9a.$PZu4EOVE%.+GcX/!74%utM+=Lk+sYUrouA)>`bZV0AjEtR$Q=SZn1'>I3JU.R<*N9^;?QPgNZ/L$ig2)^o;ag-BIEI[tdKRhHofN7?KcKs7:\hOIs^J):?3HaP4:Q9V`b"Y9a^;%E*HthT;9L2(G>e(DJ`:@edj($nbhY!N5kiqgDW3_k['MJH@VC`rE5]2_?>B^9^lgRpZir'W$j0(>::Kj620SgZOoOs"k[PJd/!^miQBi0?M:0X%%-r`Fk=dIi,K$!Sp#:8L)+[p87ce"(c?3n[16q<5,W"/p?'O&2c#Z+LBCJh`g-0mr,jaFpUhQCp?KZr;&,YA5ZI8r-r&6OR^pu04l^'s&$DohSg4kpa:&'h7u^:/.\nbqQY(QfXdaS[gJINGe=djLY5R'YRimQL>KbC,e=,uY.?.to"nb&irc92.cgM"Lhn$[%NR+8ZkD%^W`("-;Ip1Q%EGkTM]h'+06:iA`(C>)55jJ)Rlbk86%PCaOnu^=U///K]BK-GGr(fHR"8-)C2.KZbMJ+NcU'5aTGC6r/P16F141^E5#_rWgG8Ld/q#l-H#@mLr(3@]#Xd>;*&(,!/W7a:S$<(N2a4&Tg9boVH@+W&SUdqrr=jX`fS^n"^qJE-@fo+tg/:7f(i$+s7n`p)I@bV+-1t"W>/X"\)Yq<^oH3YX.eq6bh]0J+T;VUg$=f&!m-6*>3b`s-VQp)E"YVh/Jk(<[h"IMKJ`ub#'$o^IXYfGLN\]RNhq6T!/MoN=m/T33V+&K?/)T+)cNqXm:u8qp[[jIld5%dk@B-V\.c/.)-o"f]?ddH&B&/NGmL1c.bnWiE(.D)TEXJ0.8p;cDCHipSV49HgCqpue1;l)LSV"i'qW*M]C-cBt&gd2G#piF6nq7P:p'j[/JpoLUJLiY$ud'F;b)hL=t@dE+sc6N_L(1/Gu'6S?0c_=U"ndh3VYYBfk^^q`7C">EO57YM\$BFbksRV?@]U!F!!XGrfdX+nQ*0#Oa!fc+iEIEb-H!NEq70jW.f?9r4)rXU6eqpTGpYqpK+t!cRm%Q+QG.:+dgL(^UG"i,SPEFZmQTXlrDM2YW%9%\:$GSFR.#nBun@(%]ZNY=HP58$d:)>b$]^#Z8?2aCJrj/V=.<_P>/93>oP+5PE<1$#ZsjUj1u6I`4ZK;'>HoACc>G]H*$ki,1I3KU_F5j[rS+1;QFU,&2X['&/>op)]L;?+Yn_^OpfEn[@%tOh0X\OLSN"dA^jSRX[B]iDj[%35&-%-TqVD8@V*H=Tnt+nVPNe5<,?N.UE7Cmek)B'O]?!KKRGQ)KtVVHTF$,_K*6lHS]EX>1,-4LeOB]Y\*q[O\(^3f=-=`]O\N*Fufd#'\=2P-DH&5#L>=OY9Ug(f^p=fe].[VjQKlp]cnA!"^[bRE6*^N$.kRDmY&d32H*EXaa@*S_A[&FST\P\f3N"dHQ5s++0c^Os6fAEKa@asgF*nrjGZKhnFWOUJW?4@H(HqY#j"R%9GSF&uV`:_a][81H1(od=Yo%OM1IFQEA@rC;?o&fc6oOe8[m,MunaiFY70'n[o4?!-p`?]O8Gs/+*GoK-jBdJJ+(*JlK"6(d/Z&L@j[9G@Bc'Jagi(hER0u5hJ0Q]5K[9"?Cu(4(c\-*mj8qm#cFtk=4U;1$%_LEPclUO6p]i*10"O;'j-#S7jQqCoRl#7+$p%9_Zeq<0If\>YM*6@I@[Q4q(D\M\]qh4]r/3EUo7i&[PmHeesM'GIs6p17m'eA7:?EeZ'9RCmoIt>]FRCh@qVlT$jBac2HC-R)4h1PcD8=d>qE%&U^?;]d8]1_J.5lj"3`a1V[n)V3IV/lj/)!fl/R%q8a#HjboAnIdP.W*8;K;lqkX+e)-bb&=KJHp7n'HNdSAbB^a#>-pq+F>l3bHciLR`,Seq5N,`)[Bq@jSl9F3*&bkO-SInC;`V-HMIM8;>OqQ48CqkPVJ/K&O+R/j1Ar_9ahW9eLD*4XHM(es*fHJ=TqQ7C8/Ih;8UugF0aDX5qZ`BSLDb??gZk*GP:<4'C;1nRufl#&TQWh:YnD9]0[Zm3g'kKHSK)JDtlQ0V[(u\Bu:cR7BquhE9hF"\^4:eY?+5@m(-7AC06LI-Pq"U$$^JVJZuRt"[+HP=s`n1[;ul:Y+pV*]"EL+!\O^J-V>kJSQn-sn-[qk4+*3else'?F`e-PBD9qL2t#LFD"cA4g=eTlK\jH@$kh@0oFqlQEA>?@mjUYTpjrSa@2l2LDicefHHq8X4^3ukS35]U^dpg['010M,s/MUa]Pk-@.*9r,M/_lfBgm=jFXeIopRaRj=E]Rd'UlJX/0B$pAl,PR9F:M0US@gX]p#An3@4q#iqIG9b_Q.0f1_U11Oq6=+0+(3?4o^Y#rXt]eZ*MpqR,G%c#/0D/JZU\*r=tBdp@k,-)D2M:\Fa]Y*1C*Q?*c9.9X!$7Qh(#D`*N;(JZ#V'Y1hT/**Le^W*1iXmh9-71(D31qpuC>OAl[C:2nDmC1e+$TMqG!gNqSX`qih)$rFg,cSs1,=TCZnB8-%?%Z("i?g8J!U8]Zmm86s5lOmQhhjOOS7Qm+f3[?)6juISD86N0&H2RXZ!Ekj<0X%nSBE(!G59'*X?`%e/cn;?aqo=n54XnG\QG2eO!TA@!Eq@&0rlh4$Dd'deH<5QF]m;l;Y'g[?gB5ThaD:7_:I)d]=tB>4i?Yc4$n$O_lJ0>8@OUrcQ/r*uYN$GS"DC%DQ]EKCT7MY4L[qbg%aqR%p"McXi4;NGN:(31Q]@h#"<<`Udg/7-Kk[BV?",9eujM2k6h`KCU"[M[)Y.l'\"oC`:1B0C\AgCG@b"BTKrdeK89OLb76LQB;*Kg>;/81.2/oXj&7\MO/[Gr(f@I>($+[df5!(]I=?""E;XLNEsuG7F+a60?kX4l#W(M[iud9pIOlZoMV17'9cKKIl<,b3f%Og0m;831#Z6->DV@p]S"'-B/Go=LD7!oq\$_2I\id@c$sZOKT-C6kG&lR8V5J:ADpSEGZAU"F*$(PV555/VR@]X8%ZOS_$fSdn":XJ@qmTL:T/k@9iK@EQ[&LY:#q+Y/?1UMfO:1O6]n9K\8kS.n7(1ILaG%K(#:hco0b+.TJhiigpqR,G%U9]K86tK?gPq0IQFe([B?j6u,NBGm$,0MjP:[S5h;*]N`3--W9!72`RAut539o.Se62O<:g9]V*^+4O*`Z627E6N&$3XuXfCN'9i6oj)Sk%1H9;Zu4<c*V4ESQqPUTU<<]5K[NG/@`a=4,=g]?"ekY-V_6gi^&%B?0eDAeZ?j)@s3SnGl];]=r.,9rcFs)uId5,k8YY7nGd6>HJKr4W/7Z[qJB1C8DPBWd+SrI#rtXBW)!UTCGo#sT_lmTI8=Fe-+IE%&U^?6SCHY93@^LNF7-'9"K(,9=9q7sd#CYZT$L=BD\L4T[]u#.ah%!o/D+?1mlt>IQB*\H72Ma]s=F[0n/`8,72,=tH'%6@921GbM;X0KqXpCeOVM4%\^h=J1nL44-ueM@YI:],/o+pRSC'jH(MNRfH8h^-QAIU<_1<`a:g885Mfs6#&hg\(@+=)Lqgof8bEBP6+84aTW_JG]H*$E3Q5[_Ho6N8*o'\LFDcS*Sij*AbPu6E&g-oRAA9`abAo%5>V_q(Oo$0`KCVX-I*d`jDLhWaf\aU*aOXL(Ta`BWN3#qqZ[*!\p!i>#m>L";6L\R6k7$ZNuKgAbf-EijpaWTP7&a5S5<3crVPLP/l*XrKr.9k4F:3]ab]ut4&(HhrTsh#:RjFhn`gQ9-W;(DKef/jpqR,G%U9]K86q'3;iKMFPZ:2Ao@)Zn7RQ7edP@53Xl$Wk5ad8/?at2<,gJW#!`mf7iRF?&BO+'Gq?I/O)MoHb+$O[B-sE7Bdr%F$f^:l%X=cJZ*_M(XH2jQ_@T0^VFO\ae;QN.%Opf?'2N:t7Q&HolAk?\?.o[(j^b1!I9oE9?h)?;a#=eBUpF7XB*S`_s*!0)qfRTL>7i:*au`i:ISl.&W"q.Mm7't!&7O=]B?A^8/a.oJg"\eNAs2`fZi:q?&BpEd$&LGi"V4)F+?:s[Wc`-?PXm;5Z^_lrZ===N$J_Z]_dLKej/MK%(,/m/kD1jO\=`ROpfpW1Du#bBB3iep1XUdhtfbI#]`5Vm_]Rpjm+ka^k095lJ0@J84%&_t^=Y_p'm+j\N-jhh?cj4a(HRkqa9pr:P;JGLY6H'E!eL&^s!tA_]KuL$la>>;cfn-Wq;Co@dA8!N.V%!rn`.]a7?-+Xc]t3>862cuToB+;=F`itI"IVX++r>J\#q3]jKF`H,jrdJUEaeaA0`m)u"^-L*Fl;C6>#^!Rq*[[tYVTA54f0U&(@M[LaX(G4!+#BXNs:\p4+Va8p]'ZT%mq)2V$7Xi\eMP`&2plUie&YA\*75AK&'6k3?R\Y-b+T.[]'&CGQ!YM[m0q[/*6CuZ6s/kdlKW,XJSp?F_f?0+Opc\)4-:VJ+OEO1Zqsp%*HV=ZJ\omN\Fn[jBi1"@3eP6"/P-ZB#$q'%>CYSQ"U/@>-FG+&=^"$BI8.=REMLOtPVO#3h*%MD)+G-0P#N>]\PR>?*qa"W'e_#J%-59^]F+cFhr3SUVPC870_[DI`.2k'<#L&)4Lr8u:rlEbo]X\4jN*JSPTY&*aT\C%/QOiNF0qMqA8'tuWRGOCQ`o:?ShdE\YMQK,T>,%Gdi0k/dd:t),;K*i.Eci/deY6,Ssic&eLoW?G:]GI"Md?eq$1*3d_(YHdmN>PdY+ji+r(RSt.t/kigAEB#E&S?"u]4UqJK?1S\+QL..9YEqok?co3Z*e^MF>_SSN.44F8k6G3^A6[j&AWpiS:/TLm*qeb/hc8fD&s@t\)L(`OF_4*VT4*^!Q-Gq.eunB-^7Do.`Pmm:_/f5KH'@UN4B#RAfaHh.b6jIH#RE6S8.cY<:\=t64-n3;)61,!JVl#$UW$$-hnWSi\;3=J;fd>.c8>T-sNEWL]^Lm0o@OUONPa;9\`+;\SVrpBRt0H?HUKU18tDClF_b["uX'b4g-`[c^I=>Xe9;DP#j?U!O&R6:h8+:G`!od'2CWLpX5d^LJ!qCrMk(m^DE7P766=tH'%_Wh$KStV.'q;Z7?jEgc4P=Gjm&$n9+PbcI?:&I/U$rTn/6#TMr]MNl`_J.&h`u$=B\IeG16;l4-`Bi?#=Tr#BkC&5?8tN8)bp0lGZONUl23F%O541sR3reQ*XXpLL#7C[*=d^+[VV):"F1&E/caf`6L@?BAt_jW42V(=T1;H5m`Qj$-4"g\#$Ji\m2Tn]hW:O#bON6+r=uYHpTa>@GKgcf%J"Wq."P^h]?LB3=`m`+UKR&NNKBf-p%*T(IY.iPE$GtB]46npsrM'Ri7`(Gnjrc@!()$1DsbCqJ\[CegcKeC;sg2V;'!18g,I,ZDT9AqUV\V-9qB.n&NeCE6?+L+ZHi"Aa6kU*BgYVAW7))=%2Q5s-:M^OFN;_F&rJR$j8rr>0N&7]&.nN1FdN>Unh6PE^=Hj@_j<+IfCQU,f!-]XH[D63^"pl["X[&<(T1;;RMs18]&'"gPP7,heoG(2?9%;f89%2=KH@di]+LNES%`:P=a.n8=N/j#D`G(d1)PGD/!(c6hCs3!0SV-iF'V^?D)!!%\5]jC%2*O.ZWXs#gUYm6%]:]PKq\qPmkG"J2Qnnn/;e(Q:SCfXhgqhM9dg+AE\T$TQ&u]^Dgqi[2htdFN/gqLE/j-RVonQaRgXc(h4hA),YsXifp.j^NX2r5N*P3.+)S^Ro2_oFIe:kWn!<>cNQB9;CaUMMsfi(Eg9,^0Ga[K)E1rqp7<8[_OUJ:,0gH3!@8g3cE]oT>`.9]bX?,P(+\[.&%F:blPJhP%I:G.HWTUs8Z(G@23%qn5\.)W$;%t%49^dV\^OQ;!iAF^bS1+EjKr!Y(g1*oZ[^nKEJ]D'2=L6OlCrS&-6ZF%^3)puZ4VkEJk7R;A`K`a@!-V"05IsfFL_&UcZ@0R\W[D_o&RM!F&N0?RZX<3NqMGoloRjGFV67`03(+1KmD[i]gFj;^V!J627`5JbM6F?IlPWKr6u/=p95f0n27bl?IAR9F*i(S-\('+rEZ*@S@u";3G)S?-q"Nf1!!-Cq"qFb3I>Itn'=jbui5l.Vj5J8:iULFNoaUEE@VB.+ApEmqZF@3*$YCuG]*/ElOce$'K*C8O[`j/111qsnHWp^n0gS,1EWNCZEL)oV2Qd`_5/6]U>BP_C5Qsr__&tNS]*ZTa[h354Ck+K7JTklIGe#8O)kR&"Zd1'A43K[r+PY>%(sbL%,#jla%B\T=\?e?M1s7H3Y(U(R7SJ.GTVfVi*1Ulp;r,GO3i)d?,;rle[7-B?noYJ,u^FWL9/VA++FF"QRLmnmeTDQ;p&!s5=_=_"rPc-3"Q[EaA[ulUe=).NXMUTFMF0;]7:*-dh"r"b`f(Y>1_):iQ+j2B%4`I0bKMjXQ&r-5-5&c-('o6=S"*hP6uX#DegMpFBbn,=l']jXToprfcMUr/lS09ZnoK`.ILFAM%EnR?4FJ/cq.lBouNU@6Al$$p5-kBS^MTSL.mR+Vt\^b:?u"6n;9^]8t/bKVf3S\TI59=:Yf+G@?+21]5b5$af.a.beB+4+=&''"Ls?p_hk@L>hBMBN>m7_3dQ8W0_eq8Q?3n0PE/b'G:VU`?[>p`jOQFWC?Jk/PG+iY`S!EAMl7O]ppaJk9,9lcWms_%7$ujjm+iK%4PM,\dr@=iUABh>'%2q?f=h9D7lUa"i*@[m!3P]e\dOYjD1FNDAIC)nCsjgpg92ms7[W+X338:'eY3TUn7^n\PV?c_C70ceRAPj63=FCGlCRPle]SqAOXdlWnP:jQ\DZZ+;On&*b\[OV3T+cP+6r568lYh]RR;bo\?`2%lV9(_YY8U$kLW3*_J]djT"Q5?DrnHp0)3"s!ul1;4IZ-pp"j$ZOOZub^4_Sc*^K.TOb%-D;O?jUT:G.-M8>)[gPm$PiR9=$Zi3o4ikt2B^YMR:U9.XMsB'7,>oP+E,n,tkDEp,l0@UKXcM9hK+lh+:Me)5f:G1-1C*3E9b3:tk#;-da\Qet+-a@A,h%FI;C(2+;L5^fX9^`19MAra<)J$T2D0@s5".nEK!4b]T5!bNr94,TuS`1Gr)AIJklc9n:5+XoXon]PE1B,hA+"n=m(*'h`G3/Pc-U6&e&R.#WlC'6gRp8KZ:@?iDX3B8Y%*aN3.)&iQ4CoG$7Y=#o7ueGl)g)i*a4RnTU##YF+TY=HLOoO]"8r>6_c]A%[EjR")`JudX#@(aA*X7G=%qsg2)R7=0G/ao:bWn%P!K$889:k_ea#"7Em4:bA7WHr-r!E1ZMZ$VAN5tEJIfmC)I?hu-cE`d/JcFO$Yc`6$aR3O6S>WN1c0.#[p\Mhpe?uXOFINMJoBoTBpd1(1NK1o+SJNYNe!\/MlW>.D`]>V[Q,!=e&;oQC0QbXB0A]O[F^qmRsN,.4q/Bk&#/j\lm,ed!-8hl#+OX5>!hXC6X,c$aKoh'*2A]n!][.UM_-tSR/M+RO8p:%jMb-)]0DI5AFRr_OqL<->(THhDKWVGtd'Uc;N)4Cf@OIi]]J(jqa-V8/LAeqt)r^r$U[^MC+1O_h(RGa[OE&"pLI4h>>REPL75fkQ./Y-0Paa,=/V,lDtBo>T$h+eqE1,(,$:u%0"]D%J&U7u-?c%.+[aiFk/f*%gdhT0P2]BB!btPA7,^c1gO;$O$"4@1?jiI[[5TXqHOE^IJF0@)Y1,j,ObEN#Ci.D$o4nId2,sZmY\[a$'>(l`<`)_^1:Hr!I49mGWEJK']fdAoXW!&a,1X/WL72=nRiUh8T04l@=_]KcrpS)/_q`hF_PO94.Y\-gF!gWG^3^'[=ZU2WZ&u2dVE//h8dZ?6Lr,6e^O9=L+i2kY6_,7"0--P^RA"Hsrb8g?M1/';^\q@a>s(.i,bI1K%*BY(f,Z0!8hLMog`7$cG2b2t:]O(C-q[+8+)KZ@E[7G&SIgan@*h<.ZYo-kisX!_X^nj^-hHP0$PGXI0K":8?la)YW"+70K;Y?ENn2(3Qns#oGAj#(\W]0s=3Zp:9c"=Yef#GD9q++tH^<*<:XmoPQD^j#oZ$K1JY53KKqEko)>9%;:7RCt]DS??O:0*(T*6+t)]27>St*K8=73f8)7/HB)B*='BOEb+heh!Kh&J+f&H'9hB*\@l]5KY]JKu%LhS"u7r.BbM@-[q^b)f%07)m6cP?#ZA;IoFDfr9;oqW,uIJ=(o?a=ZteE:N3&1?4""Pld*8EAFiXm!/WlF,$OtAN5tEJIfmCR[h6p:(#XZMFXme+toZqn>o(bkp>"gC#5di_:Fh>H#c2GHrCPH"*BhV(DHp2aT\AO2i_b".1-k`Y/;$gd=q1oF^H#pnN=@TE:DpTrBY_M"^;r;PiR8uF/GJa5C:Z7KXS>=lgE&Yf"Z[X_eH9F>X\2Y9Z+!LV)Y_]7sfHHf!JVbHNL#>DV`Ho2"jps,#(>T*J3^p-!;RfkV-T#@E&/ScX0q:A>Kea'E%V%"6c3^R^2mY%sd%sc/,aPFM^\NE4Er+)7,?MFR^K^Wqn=Dsc(niXW\_)=)iTd^HP%h_"8TFcqP6,;O8KJIB(H#eI+'8#e:$id0]7:,tq-F\Cb9$,;rF+dX8g-/M(6S1LA07V`@B/eDi*.hS)8@2XqD(KdO[*\iT>FDIkX7Zbb!!j$U$ONI;d'Z#I*#9J!$!O_ne^i1Dn+R(*2LqZ@Ip922Y&t-7G6I'*#%H%;0kMj,g8AFb.oKZ&0ScCSTnW._,o1N0AeJBk@`a=X.5>A%;u:0(3r(Y.d:GsD@l"dH=ujc(@sN*G#7i+K]oicpkKe?mEfr#X6:*IN(Kt!HX/W/s#6Y,+!Wot/qZFG):b6naTNI_clLd75:*'tGXfY=p`0^qCJA-5pQaV^/N/LJ^83?^WQ,:!iEas8&6pbD1A^=\r"UnaS\*mB`,W([CHs6IU,4!-]CBHpA:*k;GK//4#7q'B3q4X4=$Tsk=G]J??&&gjQ[dcJj^nV3%H,p.9k"VW-K\Wh]4H?D)2hB:!?d)1+%-ek]Z)+;%M6UC8aKV:DIeDe(9l1C(grWl&<<`=3=dWFo$3MN#+G$MK5*RUtrA8*_k_*?RKJ)W8*"TFnT1CI]=P23U!c-DaOpf>;!q_)'r9'P4&..IJLQko^L%WWDZ1f%\b?R6$R26g?1,dS"+)YK%?(P7%JV;CZ?Na-to$.'W?+_?/daF$H`B>#X!VpW)3BNLb6k1+J7uS],[]O_noOdH-23A)VHCuZ7'0(]J;1i7VI7;6Q''jF_"NpP5_1h)(oT=J)E>Gh)+um7DVZaj0gB5P7%`[.^QAGC@i!?m;1>oF;N8e.B0[X0Q[&rt!78tPTLVhNR)gHBAhL3LAYdACY@gX:(`!_ofr$3ohS3)sIq^O+]U_*3EHf/oB^k7R`>i*lA)dURQ_.%rjJoro$02Em>X)RmJ"sY0k;ZF\A5=A[4IL[:/kaLHX1oS+;1IZD0>IFZX/h_ZRk$j47>5>=/i^JQlKIHm*BAj[,[ak*\W2l5*&A(N)A*j`U7q_DlrWYja1(9n_Po=b*WZc>&4nr8mQYfH7UZQkT9_hiG5](&j(9X!J36FW>*_oQ_YG2r@q#[%\k(q917Uu3^^"E\8uiZf_*]\sE^;0gRu7'^Sc]4k\qNeDZR8RJ0gY"g%(&0pO#g2^WTG$K"2IaTO:n?oL`U))=%r_UA!XNNc^o[pFd+7)O7WOjki5"q0JQS+f\FgVXm6dcBi@P@q+a@2lCPE^,MqKgjP]kHqm[$I$MpZQ"X-]I9ZbD/3Z--V_nNb/G%WDb"/oo9t,$<<1"o=nkX+:TV?(SDXYnn)C8`%X>4B8f_gJ/r+3:&Okj%HZ$tXe[DCuhGC7&9'Z#VpHfta.`q"8-g[?V'>jM[XX\1ur*.I.aJ`qHPG.7%aCE9qV6'V.S3Kk]TE;Au?[51h8a_;5lKFl&gu'^XLFl1#75d5bPu?\);1Rhm-n&dNLd7X('99IJj:VlnIrd\a.m\iRF'r]bc(!>`Z%`W?#$.QG@)jmClk1gl!J=htCTsI@7q4n#5nP?hT\)\!"[NjANX`7[`)mYI;2X7X9\aQ-#KMB#Hbf[U]T:Cph!FComN(0PHTU9J0>5A@#nJmN`Nsp<,1k.(P'E8XJ2I0"ND;qik.*pc7k^2^=-:7jZ&qW-^4aA%;oc=1^V]\p^%1N2^\M[@9;Pm<7f/Aj*8)94GR&QVU(+Je9rkb0V[orDZ)V^/e>A-Hn%)#CR9W9R8>*t@hnEBHAJM$E,Sqe&R7RbZ0t=%WM221d17'I=M6"kW:eq>IA4pQ="n*dF7[J/#]GHD;)R\>Ar9i:?):>7ZM(,e13T)UcO(CgK@*m`-s9i/I`/KKT!tMeu01C*7kF[5Et-."@/B3PkCb!!g.+<\WCGPB6']3ND7;[NObtW8]`Nid'*HLqYEKb;21)JV36gfs2#+mnVMe7ZrTd68sikVYBf]bN(i+>\UcRP*ct(uFEH`I.9FBh=%iH6kP2#Yr_bt>(Oo5`:pJH3jX]TO7:0`m?(n6sH1o*$Y0NGV(Tkfokq`_V%(g(H"t,ONjtF=euJF@pIcn/!)b<([`ZQTm$d3>o-@g]qH^n"Zj/fm&>m.e@'=p?ere"QX.GNnY"&C>+-AZ6`qEFBl;Z<\&7;a2d_5a/Q!NLK2^eQ>?I>QW"&"8%3qQN]:]'!oIoba9Zu,0d"BsBbif"I?D+n^3ndFL@AMa.G$P_Q(-EoX3]h1:g>oA(\lDU8oQe*%n?Ma.>KKbZ#6H=chWUrWQaT^rf44^dnBlhps'^VK3$'YKZM,,bR[^KuH>uU/?]=-UiXonVEmH$'^?S`kj3rMclBHS@?g\SO7%oM]Gr%#05Cu?-T6XqT)-t=*80M1sRYo_=_D-FV9E:(s%NpZ(FXdZ[/Y.[\WS[)khX_ZSe0R?X/lTgj9!<#`>bd%@cq_shKXa@>Ze^f\XAjg<`W6%Q;s.^OBf;8pV)Wh*GpMAL.4mQCO:hkPq=QNcN9BY3DiuR*`1fkh](I$+l0F86HR:*;`50YX5I*?$[;+CKeR:ZbOhU5:_c&[aOSgK%8fPol:U(@$Td:8u9$i)qfb4%:&'IFXQ56rm:Y;;Q40?AGWAm;=A./PsL'%>Y`*qc@h&t_(:H-9lPin:`!m&03bCn3!73ch?62AYGP\P9).g*4:Y6V3FKajGRE/A&4dn'q_ce$Y*hF8%F(+DC:+[4Slm[59aqoP#)sY[JR)Yr9T8Wl\93(BoA=_i_*NJifoPNWR[P_8(5[t:l-D]:\@1F8`i2t5&linL?Thc<"cCY9Se]EHs+[3/NN@&/O3poDH\l4\o$Q/p)I.tL$;E-LS3Q.?]4NA?35#?iH$3OWH[t"K;aWo.a!AO=3@h%57p@?$2O.WU^Q-"9[a+^4'`,:)>mH4_=9fh8[[&>V)ZQIEUD>l(`/i!3`P7G9C/OrT`>>W:rma6cr<58@s/O^4'Gk4rYm8/NNfcQ:?t*qE9bm3'Q;0'f8p[Y@UYDi=9+goO7H#O/HM?j`ZY.Sc/>tf[+LsaWmIn4:_hPLV!+TPM6sm0^Y25hTldiIYBkqMUIu/C>g.iB9FZX7-4?O']?F?+bBk?;ALZf_,2A,\`j/68t/:psUhY-LF47aaLORQbLFb<(NcB9`,^R_U#3M+'!8RqgJ*-'B(`0pLXu"@/B3!/`e15=8nSifdV,E\_76]19oe>rm)m4N:mtJR_OiMaYV)s"Jmg]+,ib[r"'Oe>8b/7#ZP?eDJN:JFPXrj#-28sikFQuaE*q/2fk^+`tIE94>O;h&hqhWCtjOm@@o*lmFVp/6a\i&XKrPSEKQ[2DhANNOirA:V/Z1q1T3C/>^4#Tj]_M9Q&V17;eSDA*;q+-C[S[4tKZAPaf;WVhnINirWRGUBJ!/j6(A^/tH7?Q7#K"VH%\o3>mfta6!#Ia4*;\6e/h^cae&iI\%KYY_0n`1IoK_c'qXMF%\.,F0LPa1F8s9:+kWp!*VfPB*0'sTOo&qPdKn50iT:YDBen._CrQg\prk:aHG&Bk$r8nLe.r?6?KkK!q/tDH[s'EsKKsANW7"e6rI>p1!NB;",J^A+9abd^;WME-t1Koo_r>"pYd&W_leX+Yb5@c,X2Coe=Y9)Q^S`?dKXel>>X*]&-'`?E^p?L,-)eMk/g"!(mVeoc`YB[-#)[koV]1&Cf)PW"M%h8[k9ea5We^^hYN8@8!__dKBCFhPe:Q@Efei%hC(^4":\O,pbWO'R5.d/u)%a(&89B-O9Ga,k$5A:08eG+aXM_:Q*_I(KYpOcp!k,)EhbHL`^m6Fk,m=\L+Bic4SQtC5F!,l]k)W6T,o8K8n"9oZJJ#!]iUs\BPq:Xtm'(>Zpo5d0>k%:qO.G:c\Ta)$ZhkPN:7fdsS;^.;P3uWPcsp7:*_VH6PZr0Z,!#@gNje^DVt>4.>YOaX9,2&4R`@'d^/-pSqrj`FMQOc,3KjgYAhS)VW!2R0I6E!rC'cNFS-ok1]c#I@=S'Na:E@$f/U7<F8ih$1$rYMV*l\I[oipTi?KE`S8m0$r4>=uJ9bqYFF*s8N.1\anjmWM!?u\TPs>d&99bMPoGI=UBM-Z*^O)XfX2F9kL!#pigf\6,A0AfV8Dg;6]*_s!`@Ve1X`iiop+Y1mhVGARD6Tg5^UEUp%)D-70?YI6V*NCQi$+Dr76u]+4iYPJ9lKHLsq!lULW?]r3X\k&#QKg%FW-DXOX\[-cA>l]gWikW:T8_NO$?g\1GQLU&Tl2Q$3Q^Z=V#;^/3_aS6oggKDVMbhRA:So(V@#h75Ji4l:lW]GXW@]mR$q[]']RS'q@CT^I%<-!P]ZC0Dn:73G)j(r]r-r$32B>t:Z)Ds0R:Q^(D$[/aV/7#Ye91petC]ZcF/\-u+_()b:Pai(<\IcJd!ZP0rG8sWX56I3WiT&tc<8u]\^5\m>^J=0bQ%$KURFSikAf2QAKl?UF[PBnc7]PXtauXm4p]Ash#sE@2s6=bM]fBfU\0'?r\%iO-ab?dnQdMihVS2-#g8S*.s*Su:p.@?WZ@#eBY(V,?L:^k+Is?O4M<&<8)j%hMc,tO1hKCE=Yj7@:jY:f6q'*T,:Wa\FIQ.pKj0g5]OW,o9H4s)):^g7rFj2d)b>EMR^_>IAoND)IT9GU2G(Zs$Vs,dgs]>5mD;5c2FaN>JWRD:b$oKjufP_i%XM@Ua6l\l"tqk\#.YI]BBEY&7`bB32"6VPY[lb>1^6TJf6l=#^B@Ysn\X6dGFnN8t$\GAYAC4jpWKl.WNmJdu[h](NQFp$!FX[G1FLc-5B7e%;4[/JSolo7Fr1eLdoAkEY?lVL?.6Xfe?`a(sh-+6cM-AGJjhb2VAY3rXsE\^F';W(Fp.#D1EDkM?P7&20>c0Vd>$BF9S;hU1KiTpoWiaC?l,t'1t53Xop>Y;khsbN)jcVkX=Cr>SXTajr9-oJ[&[+-C>i:ib^^G'qfQi:d\Ee#:7>6@WEuD@^VnYk4>_97VX_2K;Q57m/8f@t($QM/+Zm5rq'&L68*ddueT+lagM0pVl@hS9n+'fI1ItkK>>nJ6Y)PkKLRKCP`mV#/+!r&"]3te7[a_q=TQ4WK[.e6g?Pu@#.03aH_US-@HE1'!ho\BXi#ATri]p2[aB;"oQQ/jIhBC`hS5.47L;gBYflh!pDtMafWe^@FsUBd9D_o06[IO_CL:QrPLRdj9-b<'K8Z-Ih\;Jaj`E.A$>1I4\e#pD;CKB<1f_#0.=-'Y:NDGV7KZYT%OBZa6SD+b*IrC%&#W=Jj`8(u+cDFHIrAsY0XhtZ0P7+a?]7UXYlKHg'XMlNO@*u;r5LFs.FC)X_4DJZ(meuD?``;#fX?/LdB.l^?4>&f@dP!sX+^e#Xn:pGSj(90nTbAWppuBu)!kjpgf`P,tGtb!n[DI.$SP;7iFUdTr_Z!gg7Ch33;:n`:ab:H[EAnGZ;G@0C%>hb?fVo7Ef7aCH'(RClY4MabA.1*[7RjV"9)2,!>ulI2etNVTo%boXjbo;ccbu7B>!R?S>l(CMWMPpH9ga)b0SAsfHo;ofnl/IUioTI.E[WZel>iI[rPq=PGN/Vf3/[DiKccs[RkK%PiHhJEkmhQELPGV+:S+RsDJj3$`XOIG:ZH82l8-U@E*HjhCeS4,\_EFH2laXuMkXkQ5'1JJTp'Li0'%;^pn8+'isRNNi&>kQM"f)<(A"G^YA]@?hEd_?m)$0!ROYq0c/SJ%Rn\n82)Nh8La\J-Fq[I'7.B@,f%bS=nU)^t#F[TWjqkW$&H=Ld`g!PUUVVDaS7;s)OI]XLW+JoXjQjVSd_W@q7p@eB_Z'kqnX7s0S>rVgp%-X/Y-"c0kH-<78?s"V+.QSmR,f&I_(/A]G^T7b)"5E9fS,'!:F9.h3BLo89$kH)1Zn5*%^CW$bp.[3IVR$sDi;jMrqNcQRdd]4.KX0SX>fjP!'E#"*;'`V&TGXJu/#BEHi9GoM_iUWOji4F:Eq'EC4-'AWMK3X.hZL@/,f@-p(`U[X#'3Cn/Ya*?TGh`\I]btDernBd'/Y9hm339O53ET,dFHCV.MciU?nN'ZQma*HIM$$FnPCjc&hYl,'K_.:&.Ff]7#_I]CkC0SmK&V5-\tZhFV1!F>P:9fRQ*>gNCe(nLo6c8*R*YXdVdqr;Sg#ld<=>H4hrX[QVs]b]2geDNd7qeE4J48,7iTY)#jsfqnRPIJQR6lF:4`[S#)MHM[IqXf^X/?d)U3D"5+0l:Wu"dU.AFP^8hR7MY]+D;Vajr]'E1E068fOF=A.TaY;g$ST%EY`F%qTZ!V>r!G)pLjpnrY0?'3JR,d/W*`h>/L(J.U%7fq`!bEs=Cl)BL?`\^5)Mu-^P^>lIS0tYA`)af04[Z=ea,M!=8Wsf*c>G<[gTstD5au!Cp8,,o0j>i)XUb[C"LdnU2::M2NG5qEsm'O^O0'E+4G*LqG!rG.YX=4PPL&C!5731.ZFmU(uR(]$%oIZ21Yc;#.,kVOp0%dPPp$BD&:V/TCIjVNUli^B5@V:r#06W*l&fo%F\\O@?e=R]C*qO"pkg6agX$@2o_P-JJr1t%$;oE#Zm@,Q5%R1:F\Ss4t2qiBunZQVJN^^m-jcq<_X/i5K/u!%9UfI$+/LdW"<3oA]!KXNV].u9"O]^l/EO2I)$THBr('!1@d'8DaH]JL]\WEDSDI?kV@DdhI/QEXL>X0]"Pi8\H!!#X"if[P;bJ#/]C$P=kD;(:+?f'/VBZRF:gi'=ZW@/Qg\iIr4JL),tIj_rZ^1$%Kdc2iq%1s-L3dI/Q^X2?Q:Qa-;eCcD!ID>6s02/s'K*khlD(#+=/c)Xjhk"(DbFUnBrh@ARYc:^4eC;uahk;9E+u&7Sc(2Ffc0^<+)]P^:2"*,"aPIPDfb9-tYHtWMO_(WH^^$ok]tL#O4uYDW"W\hf?sUB&4cVXN4C8>O$YB)O?[0\HhH_)JZ?Hu^1[=t;-TgNOZ>7j5\ZUO+Bc)mRS-leu2bgM#8`/a`=eS!Ju9-M?ZP0ZQW7:[Y3%)(k>&cfB\;[CN`37W,E8XmXm<5FjeG.\>(Q5@"GHkK&\=%V.XW8#Fu6"aitLGoi_%SK4LbjR^jIMWKh"[GOj`kg0b)dlbBlUB$Whj]&mU$]#E8,riHNdKC2,!D"IP(=$&K:Wo$*?tWE!^D*#>kgD7>Yr,Q&]oEda>^In/A,&5Q,r!qeR>c;?_*h)Z_D$M`7h>bgqV6AM!7gsPWIq;n,`*\DXUX@ilHc=Rp7q!YZmU(8$cp7LJWq,7$de7_CL'G2[&@"'O5oIS?(=a^3atc?tabAeXnIKY\S400V6W=?5KsPF<;RIK`T:!KYg(oc:S':TO\]NTB*k=?9NVIN.D!g0M?7%>9+`Td-s3R)!kKIM`E"X"`@Efs7I>]2)K.:l

  • S\N0mLQ77fk&Tk;9ft@>Gf5&[iQ53l\'p(k)Y4>4S;F#X4tb_#^13*#.u0Y`1"jYPIO$7IXk043q=591TA6KHX%Q\t*^32DVRCHc;X#G*bPhTXng,)#['d;YD!gf[]\gl^[,A_CY3]kMP5+[XP.CD%a3V7V/F1fjEu0[Ef`WC;*[uq_cZ:m`gc;[p*'.OS[CKne-@VLKOU">.o.6efrF,`S:5*^C7]*F5&i]cdtY/k?3f.JcHn(t1UZ$f4$7Sl(*'$gbk\o[D\r@>)HEu+ZlHL0NM9>icm8R2:.ZQXB-&4P..7q!YZ7LTk>JD%V/*u,NUQHe/J\FtZBgK<4pB^>$=)Tgk=/5GOrpF&*,UTUK>j_IujlT%Ks\I`iO!YtFr3O"=sH]JL]\ZfJXJkD:Xj_KuFK&cu"iLpZm,ldpAZ5&_eK)6)=p]Ctr^O4;EeI`ic4+DYX'D\*nJ*+Wepn9g6b>VQJU_p6@=r4LstA!oL4hIcXnIoC.TH$h62"7o,^c,mFR.VgBSq.tSo+hhqGVQMj@h1RkMW#.UVkCicl:!VD]+%&k0WT\`[3#Ff?@sZ<8ujsrr1@_C"X_E[k`OY:Q\QTgQrPbd2;t3;^)>Idi^sBEthOVQ*[t`iW!^UC)CQp)cIFOdBKJ_eCo>d:s5l[PruSK;hI-jH+2E$NKC%>]5TA$N!se(kD;0$OS(AFeH/f%Z)Uir/`Q4\2#>fa>R*GUg!RNFp8fQIgQ[_q%Q/BOZne6Aj;1R5mm9[8)!h2?4IOd;$D1VYfV_q`.PGRPnFC1Alk[*mSQtsMG+aepnQuWl"ZWncr:Ab,NNDq9Qh4paH\*UC]\0@$c,t1p!6I>nPuEN2/gNsaj`WM(aq*;2mp9nZY,0t8Z-(h7U5T_T>e$'k>[:(;[:=Q4TgWpPi_]F7h8+kE/j*W>-'AXM='sReCEUckM1C(mShH\YHr%54pQ?_Lml`.jj?hV0D2/TAR]f-e$'GZ%KnhFRPlLeLa];Z0$_!ODP6)Cre,%sMB5:R=>sj79[V=?b]mA`,I2cD\%oB71<8],?."9hc=iS7MI/+-9^'5>^m-P5kNS(XJ(+3VZ9B_/3WZK9#g@#g^1;0p80-=VE*_bY[N7R`UT`.>:=[AX`j\No[j]nV7G7Lu];j[u>4$PFVF>bF''ltU,'.dSf[`CnSWc"ALl8I0QqQ'COi+c7CqZ?6Tq]@qD\ZK'c=(.Oj/??976bEikQ``V!LN]dg^4sZnYGpX>:%URN2eZ3$,MId#6>^Oqo=W?W+94"E!G\1/QS>K@hf;NC`gS$oCgAgMmLfHDVS\g+VU.4G%2))3^ra4!s7f7b76ujHk4!oh37#F_lI/Nc%:?]-'gEuqEKa5^'KYg(oc:S':TO\]NPN9SChaQ,(CQ#pTeC=r.&Ba-Nj;dmMQjH#rrn]QB+B9@.5$Sd6f>II_cochqhFbB)b`)B.FXoOJc1j\.9p*^)-urXh4n6>r7MUW2e9n^,b:V\86NK7e@6XCQ4olDU__G4+(D]>K>\Td*%S94on_b&+WK\a?[]1WQ&MB:H7[0)Z$TWN1*2n'n0apJFQ+^,^ei?-]k)Y]1?-K(P):S9!B@Tcl;1Ag`_s34J\FD'A6]"%"O/>Hs(#>B2jchf>srO]uiLc\#5.T.)c8??1VVchg!Q#.@B1=8R:`=rNCfXT\*LN'ME7MisW9Qp#R8XZBp('N\1_j9!<^\GJVuNn2f8_u5!>-t>5OkRZ:k4^o-q\r%k@b3^#9Cr@U!cZML)Y)[D3OeFMsjQ+s?XT%0ccEKB#7+jSVd6g'`03fm\Z.dcPeZ2m8RBJ&u&1KZN&/?L_*;nd5L[m)rG`Z/q-p3aQX98M'8iDg;-5WiB8_pd%Jj1q$`PlUOpDl;@/EY09]D$AOlH[9p7o%(j4`Df5.9U-$'\O4aDr.AA-!X.+=$DsuKaK&c*+Mbth70;\WB"MAE9Uu\?bZ7"J]$!=6jkOUT+I&W46sq4K(%7F65bpoi=Yt_^H%X*R[/C!$'cJmIcAfK'^7MDbVrH$"S+LtZfYL01r6LUt'Ur>e'Bpb3Hi>\O=/R\k?Zb`"_EVoCk."B.(&/TJ5<[\>l/\#'W5WS#,`2:HD&]UD.f=a2ZTS2.W*eB#g,uiG;_P5/5J2LbUh8_,iRtVudQ\kP\9%*\(MVU[kaHk0q*C\LP=ug"_TbNm7-I,o7>A]1B[^cea`h,T#MJJ)?s,QSpH<%qpA6FIL,l<.R+%IF"d]g=@3)]Yj8HAl7O;e'$CN.7T''h"205hi57)X(Q\MUj#7op'i?oFM/[cs1]rRI\rR?-h[K:1j$X@OgNt'Nj]R=eD_;k41T=lCmq5uQKs&u>fiOp06RRBMV=C>@hG^PGO14Z9D>X&3Z4>&Z1E54Jb/W>rkX)@NNI:Ql$8;+hTfHliEslL*FKI#I-AB6R+S1#V(_`/):T-RGVK%02kX)Xe=eIZT(mg[3Asl,htHItau5Ong7R0Q;ou<=kV;HrM5:iZY#G/L@op4(eB>TKMhmGH)0PB.boCq)beX\aGF`9.03gVf8"sM[G*4l7Hjf2p,s)g4>aRX!ZE:72r:LF49.g2mQJcC%!!#j$M3Km.TU[`Y`2GEq#5i8go#-'p6]=`5Y26`?GlMgmAOnF%D/9L58t3VgUd.f9^O@E8bg!eZ8B^+T')=n?%T^\E/grXKr)J,q@o(GsC7.:h6d`9FF5o5`MTrA1)C"5;c?:f,<)lpDneVJd)b;U&'6S.CFL3p_hV61+S345aDY$&5_;.H+Xi#A2GEhIHi(6#&)s/[Mn,i$,,0n7qD7KFaABUD[85r\TDfG&oH.!Kc@Nss_,2l`QY]7-3e.(ik)YOEP\YDP5>.&*>SN9dMqM"5)j2\b4'J2L4?KejV!!&6o`VmYl&]^a6.0^!2j!RQeJ!&C%,]sP*2Hd01#*KA"ULE10NLD\(Cn%D"Sm,CKTKOt'egXUH@r`_eBatoA$aQPsOp_sURac**[!#DJirmDG!FGV+4HQm0t+-Ares1HY606$Hj(K\s=[gm@B$R7rRYK=s+HY7\!Jo\j*4)jcWNd(8Y8ah?TggDU_[=&i8>^0YsM#+mhu[m%@.?:S3^F&lZ2`mj/-D3IF"BhPM"R[6c%q==1hJqf#KWNlGc3go6^%;4Q.OtCD2.KG6q2GqW9fk[3;dW>46gM>UGkFDncqM-b2Nm8.G<^fRS-sde#>3eK5V[b75:RX7]Yg)>Ih69Zr`D`<+A.$%J`:3Nikb+_Jm[q8'P3eq:>$Y887M4kU(#!f(Y5`pCLCQ>l-h"?lN7+e!.]_8E8_W'm=F="6:iBA.3".S+LrUVnf5stTsX@PY5$W5ajGPtcJr0f5]T/6r-:Lt?Vd/`'I[pFO7,BHRa%!\0loZWH5a3Shl!V0/_OD9m9A.Uf@#\RD%!s6Njc<<$Zf7H0XtHtWc7[Yr7p"m:+ctAe!q1F4R1*CHuWX0'fKu@rT.g8_7j5u_=t9FUGO54&;[%k`?lB^GO@$W(H)6n!.\Mf(Ocs181l"rM@LmJ&;Y];OpeQ?@)Zg55P(cFPC=rfF"Vj^SlhDmoVl`[Z[Vp5#pgqXYDuQSZjTQY"C&X=IZ[(Ic71P4/a)LTtlg!4ZYY1^7Q,Zhk")_FQjEF,%6t\o*`kcRP2gT`;*%LO-:nuI!]lW,pe6p]RTrf7LMa>+A,l!R9Wk%C/nq\W9fQdF5Xh7qU><5ku2jW!rr<$5`TgB(QjI5!Wo(Z5]QmVaB'Lp+XqsHJgaA$^(n.-Pq73rHG9'R[P_$"XFlqV(M73/khm$rReAbZ9NZZfWep*2Jad;9`P.n!6>U%r$'RN>X0DG*Cqe*&GZYY(M![GjodK/BCY,Y`Xeef](=OHl(gET4p8W$iN8+M!"ND';!OnG;fnqH2RdGr*eH/El\*V+R!pJ,D%IRK*X0DG*Cqe*&GZYY(NPEEO$\d6FU\e%fl_O."\VsZ^"Xl*]Ti49CutR<(!@P9UFKtmWdip4Bl^R&X-!<3oZ*qZWCpKM(/8OL4L(9eHLBu`Q>U)>,3F?rSre9:^c(KCC9163P.F4F_!!!!A6_[:Vm1c3G$c+Ug(^SRLrpisHl!#2C$5#ZLE1V"Y#*WhG!OEZ-[9.h?ED^ZmAOI;LsB?m#!>INTn60M)rJ,gWTI[oH=iR4PqmdBLWBk_Vc?h)+Xb)4K9jJ`Fc!!!!qZ98eR"R/s%r+egt(9nFPhh$MotePX,->m2J9=r0oW`jJb7gp1t*EMla"]_X8-=!!!!a0gacZ_o'Bm=0Jd)Vs!I7rRYD+$/Hg+&.F^0:c]c1J5DD*?uk5fbEiki:(.O>`3iEl**p4%dGj>Z$aiV-z`RKYR*u6G3<2N>,$O_k54*KOE'VKOT$k1q$EMLmo!%;SQ/g-B(nk:ZHAnJWb\Qudg8Y.ka8kR7YZ"#"',8Ki:!@TtVdaH-p)n0V7/ii6)]m>r-RqL'=/_")-z'PkJ`rk"M`Q^X@HSN:o1_o%UG!%;\N6UOqW=s\8D!/_\X$OA&84Hg0AhnOAVF%](rOn687k0+]eGB`m]Q^O8@LsHDn8T=(N2*0i%]6:=ST*l__+*2LEI#\1,!!!#i7,PJ#p[5/XU=-D_e#92nTt:C,7H`m^UYaka6MCPSW$/^%:m/mU\T%#o4Z>=/=0GrPs7SX+rk,/,kIPg%5(`$i[lZ2lf?0O*ZcB=_85C#l1-K-ZY%I='.4Q1hZ*WV!!#WSX&lL9\@Bm'Y+qb%FEFn:h#W&#E:`3d2`J4tY?q[n&V)'Zj8qY>,1#=:<)hAcM%fK-DeWs$lI;e3VbNWr+!6R@;PDTdo]X]njicK9h2`O9P-5&Lio90SR@KdP80%d4!!!!IWTYV7IJ`a1FkXsZl2:AK6?`Y7$J4IeT?!!7J*PN4TfWZe7?7:9M2!T)o+hnK[0$hNlW=M/nKKaS^Xs33Ge$1QlhKAbZqHN,X(\s+9!GO[Ct`mgtdV_C.9z:`@9l`jTX4MPV0NS3mhfMQ*8A+CAJ_TmHf:V#'cM-N[*_\\1jI^3o25mXF9?Ple_N+$Y4eIf4R'%hCJ5@U^4#nB]1mi@04A9tlK[Z\T0N@qcQ)uc!!!"0AS'7LDr&!I5QPuleB-Cs=m0/lzPUNfAZ1KnX,SJebgP:H8A7T3Vh'2nrQoAs?N#t95hnFM*G6@mG`'/\M]PuiH2/CbKh%>1cjlt6lC2.Lur:5cm*.f=_g=Orc;Pd!#C21G/pHETV6rm?Sd%(5g!_Q6a%h9*CnF/D_ng$EB!!#IPj2[5HeueQ9oK7X&][2'-.#hE=CtZ.-:SE+9z;!NH-r-A&)h=QD+,SJeagr#Ld1V])r%018UnH?at&`n`%O[pGOQRm/?hU6MCbYPSuQ&UlC?CDVG9o!!!!1gtT;V2f.,SDf79AM/(YF]jes<(GB)#h'i?F+$./#GOF8!H1ThHgh+j%)&sV9'c!!qOH9SF!8f+U0(-N+"7+RBp[[nGnF3(UNupS%qQE(Jl1OoGCL(4O3e%aQ,6.]D!!)M<(GB)74*I^!TqT'/HFIeJG4"#ViPPno3s>W[PEqNCDr8:ZX&i)d2U0_"dgZ9W^5\JGf:4jB2Jq.^',1!"boG-AMhZt@JUrBQX(t[6'Q,r9z!+EQhqpsEPGent86?`P4zAGP8H56:lf*$$%g,#RIEQ+alEDr88\FJf*=!!!"lPaX[XY*"hYmNDW3!!!!I/oKISiT&rsX]dTE8EA^ei:$.7o&WN<3s>Ta!!!"qaI>,,N/W^CI=6h;#QOi)!!)(U7RkD&A&j<4)5=%,Vl?ZK]mKLXYd!ljh[A6nz!%@YTc^nugCARAS4/"_;z!!W#H?[mc_KQQJ,79s2):JYoe^k%W1Oe4gc'"VEMz:bo_3q9m'o@*t];6?`P4z']>$:rWif:EH6(t*WY:B$?Wn/->kP!!!#[=(l9GWiG@[oB1hq#QOi)!!!_4ldr?;q"W@?=]6RY91qp?86!9KokDmPSNVg=k7U:/:ffr]$SOz-rm":UK(;oGO3s*F@Q<2!!!"lR/--YhmR@Sip?$5Xf\_&VUi1mgJt:Th7\/:k^EO4!!!!aiVNNIhp'EjHhZq[F@Q<2!!!"l)#NpN5BlSQ4_W1b@q0#287Z4?1O],lf\"i8N!uDl"onW'!!!@lQ'Kmp7h5t8Mc[)g$/HBtz-j_Xa11Fa']tM*rD/D]cObnpOMi15!8BBPpDh[Ttz!%>k0Pq1D8e`5ZKK^K*GzPX'$dBI>/T%1Nb(2)Rlo7mB5Q>ISJVh(Ja.!!!!I\>5oG9himOM\ccW&HDe2!!"G+?G1ZmIJ\1((Dd/U"-H,bB4j/?g9g)-kg,kc$f*Z?zaG8BN?X$Z9Fm.0q1G_tn^&S-5!!#8un`eN#W2QXdP:"h[hH>n96GB"Dl:Ce*qz!.6"e:JYhEm5&D##i-'mzJ3nJOk09NIqPdQ"?:ICR,*Ag5`JR$;$jd7J\p*V7cs6_R!!!!I2J11#Tr+]qGOJk33s#B^!!!!qUbX\\&ebop04*GJI=#7*?'.ZgDJhXOd%Go>J[5LsbiglU?XM^4aiVTD-RpV2e#,u.G7X`S!!&\UCtuNt6MCri!!!"l&?T'>6:F=SrquRYG6@mG!!!"l(qY(bk,(kB"q;J]DJh'>M0*l_gU1feVckf00n96%\'Vejz:aA7i58=ou,uGj@e=5p:g?!WW3#!!#7rGl@J]FEI/T\\No@EZsK1"YD<#"2TTjVMA>BTO,m(IA0cn,K#/l68U<$;_(SM*PWZl5"saub'FMqc/gQSf=aqd#>Wdl:O*uZ7>[dQPD.]Y7'([l;FR@1ME,8]bi`.Q^9n$h"BVQ(WYEGS:/m[ZeO^+!]QB/d.cr9,Q/_d[N`4c$8fbqVMTWj".!WW3#!!%O)Gl%&HA7VKsO,o3W$\hN1U4MA,6CpG_!C5V*>i:3.khNb'"%Df.oda&Ss4fqJ:H'mULfJ]olqFsq-M5!mF^V[agD1lj=LWb0%-nhkGo:dC?,Z$X[Au#m5hCOoZ]FKX^[L?No4NCe)];VW;N\ZhnE(lG/PW60Cp"i5DUY^tj:z!.Y].p$,OV<7LL#bD-KD;Q!81F`m4'YeIi#ZY%J%NZG`Ge#'Xb\2S?_#i/3'hN1u-a:h)s!%8hM$XBps!h[2uDUOqLY/7c8hGh"0hDkL4^HX\LeN1'Q_OeJf(qk.Vo$P@$F`M6JVPQ7J_3,LnD]P]VQcpOIO!fo+b\pqB?tXq/+j[R#jFWhhlK.eHK'tPX#p^;ez!0lB]Nup#[\?L8MAku2u7n6&O!s<]JDIHu$WDf^o;l=Nf[OipW$*uNT^*'t:O=-,p!)PX#(Uu0&<)-Fn2^TBG"rK>Ma*iSZ3m`:]2;.`L3;4ZC##k6,Drq3)RaAETWb8/;7Seh8:P]pP>a87:9L3"V[1UdYA>TK^L9;0-h>FncY*`!"+MB!Z08u3_u=)9)E8lp`]!%d4%WCdaUE,[tkiLTS]8M4JHAS8!aE&pa\^7*eCVfb4;?`3kz!!";IS$g)Ycd1.le\T'f>?dRlpXIaD/M/R-,gkT0iL%+UplmJC&:8dT)gPXWm,,K+\&AI#cDCqmYO!dP*r[.lKN=4_2GEUge(I_(,g6rbT8on=B\n.WiFJRTWYH#K7h(G@DeB_>B]Z&d>&5S$JeVlN"RHR,'L*4mC/j\NW(_T>MOSRE9U"hMN-`3'5819LGoUTYDOlm>Q@S[,T!tP:+fAE>WdkTH/[88c1JMkPPY$VmcQ'q^H'W;Augi:=P'KtkAg^+F!]dX2V/%t>f^t<81rs?81jlBzPS0TPICan+H?a\EO,o@.Za6L)V2C-;SJ#[OC"_4o]"#7pH[E*8PV@;K.A;F:L#3uBjSrPN%?u5[m,o$_eLNS%YVS0mTW^H#ghJ,CI3B0l'P0Y&;S%F5G'j[\1)0UmSCi&Iri8Enc8hXWLL6A5i-5SGo?3oBH4(LV.%df_Wn(TR)mHfnK-ZH7]-PpZ+qR(C"k'_Q_H]]5c8kpG_1j3t*.dZ#gebn)A>ko2mPRTR8p3=/shoVkNcp>t)LB@6Vim5/#NTW8O7.9P\q2<>#`iJ9GO)sdIZ$fPgA.Rc.,SpFp%`nl,i_OGRFX2`nk2*k3M`JF1n^M`b,jWdP4-q2;Sd;'?5Q,RsUAj%'cX)J:],\SD]l``.ITi6[iR`?qqZs=liQX_sZBGGkJK$!dca@;t]0Q&"C^#CoOp_6iz+@B11eq42PYM[*EIifc)?+Y8c]Qiu&]6?U9(\49P,o>FQN+6pNo$t.Knac[oQg5r\$RZF#1bpUl?)&m=i]6VdKqX-h,o/Es0t\@8PJ?m-^F?b*g0=dr'p\:U9=Z\Fk?PN9HA+4g.8`L!_^=sq8aTVZu6ZN3)1'5Q$z!!(*D[r:.N,pfh\)dHWQ*#os*[C,fh3:LR"5fQ*('t`OYf@U,r[&f\cMFE^=m9.&MeVrcnc)HB.;h1KFf_j28Eqb]E58mK0l-VPZhT*ppgr(.Et]*^-Tk.!lqPY"S]R_Oo.aq3+*@9V4;G6@%&7ahQtRN>``#4hA'3h;V'ZnE1EaP!F$g5iIf05a73mEWH.?z^>5\_T5NJrFn">*bW3cq<,]fMY!JQ/^QYuRi*UIL5HZ=M(K4aSeg^5P(IPsOq4/u66BYHOk)Xf]]N])RpVN4,.ROc##')f(78X1oL`PE!"6C1sfsY7k'`X?VokRMf0TDp%/[=Nm-`?KCI0+Du1&MI3'"$O80BDNX4O45]Ql*z!"'%%_'(9X.NfkLgY:K9g"Fg%P05h(pGhsCpk4EX-RC);p"*P;GI_fE?HIoUahQ9a/fbrYl?J9Q8*.ecDtrnr>(-@\f(ADdh[03qWRi?I>n?>W1o=s<\l%3_%4USp>#G+H%6nlkT00W?^Yko-K;n?PdN8*=\)bDo@p:FPQfh0=+TE?)_cI5[X(;Es$NLNhj8u&d"Hj,mz!)SpZq<+@h2fA!:[r96C(%1MXmG#+R;Pf8.M@(kh3:TT0IfXFI,Y%ig!cYP417j*o+Mg7%IIZ7rm5EfsU[RNU"s,?=O4NrL(T(@uKO4V\R[qj>7r8=3++qR:C9r>YI\"oCD'i'9D9kNL/YAUpjWT!m(TGKgTk];)/3p"TSN&!!!!1grGHtY?eaU&J;9afeO'KO,b5BeuW"Q;tJlqDKU&Cm-O)/SXmI,]_qa,p[@!8Q/B?+06FCU^#G;^patk94g&X-NQkM>7>H%\W''<0m72@oC?^b,CU>ONQN#-/c[:>OpcP)k75`ar%P@2=8MjOn^]93r0L.nI.N7h+LqIPz!(uSMldot8BKn^G2`EZC-RVP[93"tlM1Lr)]tFLL!huE`;H$NCe'j$=Fg4fVOp_ut%;OA@BbQ6,R1ut+9Nnc=)O48MDp"4Kr+ku4'KpX-h"'Lo$#K,i/KN?keH4=Irq+5kDADoL8'[JaS2FE!jMKGg].9A;5BS6,.2WE)7V)rQ(B>-Zab;iE:KOH:$\op4C"eOKFD*em^))1gjc=Se)bhA<7&[L<\GuU0z`QO#I+0JtcIc/"m2/Cc:S2dcDNuiH0f%&6u@i5L\%1Og<.jl^B;56V*T0GOc,U=]`-8d[Re#,u.G?jAH]B$hc!ukBXai)i)Ob6s8E[L.GDr83X8bAQ+g9pYH"Y(I9427DeUT5A>]O@G&lY]IN^SNW[qH>`J.R=DfT9ohio,D;^c"uKNl(hCK.`-EWJGaOBbW-5]S$_J`Hk4z!0h;9Co,4oaFJd@Df9P1(DfS37nZKJ2N'E>f%-^r:/4Q%DJhX%526E:)&X;YpUtMpIrYR`%"[I@JAN%LEoGIhk?>?6Qp#<9kLYP0*[)5.c/XiS:^:qf_>Sd?0lWfX3L#cQoY6DU*t10B:cqBfs\S^I59(&aD&7&Wl1184V[=m:1nFmb#8<8CsF>dD7gi(M#HTHRiXn]f[7sG$W,B$_,_klJ9-jf1q@5/p8o)QgA_fVuh+oaKQ(slWb$7X-$Wez!.`M^j2[4[WMr`l;'@)+r&GeIe^_2BQ7>q:khtCWm-IEL;B;dZnd_9VIhoWm$@q1=6CpG_!C5V$5.U1QpB3A`9tSu9\/VF(4Za=,EgrJrOi6Wg,@,Y:$cYU=Pr1@`W3G'$,/&*mb!,&_nZ7hAM`J9>?:t\c.&/0;m-%lk\9@Xg/p-F/6<.%YiQXaf($u938;hGdNBB-f3eB9dn8BgU;c?u5cq@i+A2g"@5]QljiC!_n(Gmtu9hc%_bTD=Zn(O/HRpSBD4-=s(h'eTVAsI3.UHM*U042'sW@"!DsC3Be#idY5r-i?0h`O'jJT\G/]K!*CU.51_D1&La^DtR5`f)Q2rn%_Z+hoj4Utan!uPXAiAh$]5uf!['VZ(K_5-6UK#2[+rg8o`)1TU0Hd%;JXq_nD#8qk5i^pt;3BZa4q#>2YK5#"94qSMAF]S;ET=c[5ESV5:$Ufs>>eo&\oPO71W"=3Hm]X&lLMrSE*mS!uK#3r8aNNu0Sq1c0=7`f3KL*kcggihK#)<:Hi_]Y$?FK30\uo(#CD8GM]56X_j7>X/Q$,SpHFY,mcoC2/oMds#keX-WugiPIT@r0kt"T$aU7gXb+*s6l4a\4,\naEs;;?_$2/e8ZoaNX;M%Q5\\55;CGZ0"cUtARTIk@r91JETg.m/:Gb8l-W8aM9*[qTjt%CKV/K(6Kq!&UI3P0Ao3a0!Fa)Db+j#0`ma<<^W'!/VDz!!)N!HiO*D_hSaY1G`NM@TKR40m2d2J:IV1%hC``4$>_i0(5I1VIjOVfsGJB:7XET*BJ<9m+L^UXc&0uV1uOk\Oq/$dd>eu\RX%%FmIVR>Y?m?^ZV0KLJK6)*Tq)+:>5R7ZA(BB]&XHEs^4*^6&]D6fq5.$q:2)1m6h)fu4C]69Uq&q]-E:ZtdCiVi,\1CrM86WECC6'u2F_b2sBkdG@[D&6GTA(l]>bGSH5?2rpQYg;:RK#X/,#:Tb\p!Y?]ao##o*_a6mc0q%ODYf'L#T.7AEW=-Fm8*=qfejRE@"..z!!!!uAAA*:gCHOHOHu3@J,fK_.oq=VKFA\O^t72IET>')QBpkB#`OLmL6\$hK7efKTAPuBIQ:u^Pi^)Tn(=o*jN3TG3B<-B5CWY3I;E`$grTn^\TSbi,0qf/D-;2*81B?BQ4g"eHYIt!kl(kQF7,!L_G1',G.MI6/^8AB6UFQiODJd,SpHFmLr/E,UYuX@7uq6GB.0'_RH_SfE0+hIm;oL`7X"diAFkooJ9]]U6i1;#5XVW.d>g"E.DfRMcr#=Kd7HY_Br4Egu]\31423TWFeoF?>hH<$*`Z=IGY6R_T(HI3s3X,p-R'LbpO$3k\mCpGhg^!/Q!?>aVlE`3IWD.'DAAdtii?-kk5phT7Y^b]c/6:]bYL1=,o2F'?TgP8-cc(h:V'SH+M$uu#EfGp9)"/f(FTL^n%q7)C=uR/F`)"scUM.9j!RCeKRp3khk%Q`JsBnYB.&$6F&RD0r=3W@kV$UJ;cCT=M/@[qRVHRMQY$\\,Stj_\5KlOSutFj>O'edi8`fbAu8&45##N%A[VTgX*$3JZ*&!'hU7Ohf]@2%WdJ.s\GuU0z:nC@L1eBuR6*7rCM%2$d)]KaZAdtBg4ep/V#iS]gTDPlWL#XX/OB_bsLcq5&8BjpX\a]T@p9KAc/1o)UNsSNTNS`LGEc]`K?Y.KN2O$q*1N'?*(XMMYHXGk]\+==MV60XeB_QB?DB[,UKU>bV]NeR9S+1TEik!C$QX$1#4fgTCHuR]#igtsB4MR68dFXAYn(YjI"sB19:u#oMB;,+c.ILGKEZlZA43Lb\8b%qCHs\&-z!!!!qT(ML/?g=me@^0$@?(G:=)B/>5d::(K%G.agb?+M.$SNSI7>+D'h7]q/)qU3>HCg($.lI"l/h_SMMQaYfHZegp2/hWuf8ii*c"V+_hW7&@qtRR7jmUe^AC;V".[f(d#(OA2>T4a4UPk22]@1[_Vb<##44\nRT;TNPMb`Zq(X3ulbEK96_LJ/KC[:@CC1o9"L/d$Lb@U%]^7X+>Wo+DCj8sis_83rfW`5B?@7"!qQK"@5:G0;0SXgH:Gr9Z8gq=fd>knm,"A;+/QCV^HYJsl,H@$\p`\EOQ4d&p[YlY952eZC$sIaRq2*lFEFr@!SmrQFs=5SHRg9GARrneCXrdLt2[n;fYNG*;`:(jOSddV-e?;r#\p@8<99H8e:phn@Aq+RYW.Mc)Op_6k"U>9*,SG:h[C3N83HO>B)`Qj/<./cfJbV/*aTVYEzJF^Y+d8<7uUNPnRoB4Fq:JZK;p2+4qUPNtlNHqK5g<(E??:A;ZI%h\N/\7E)V`GX@VTBI:$jdYa)=#_N1OJi^4*U,^CEg<>-m+$$!WW3#!!!!aH'4GXp"OE"$)so0j?iX98Ks:qS%k:hH/?H'r4hF=F`b"cNrVe2gH^H;L\0Y"T&31'\803J!F:-.\9b_JH+5l>k>X[U):*H"VC)*sICFfjE7HS;rVpRNcgIAZ2)3V-;!/m[jQpDqA>oO#Vru^p\^Oc]'h]3fqWFgL5]Qlj+K=E'_u5Us8WtJ5&J7g14NU*6!E!/)aTVYEzJ;Qp0ab>7/INjpW!nLqGLf?'\JhrZ]_*9k,ur:BQMXkRG@Qp1t:4=`!bnA9[6Km6#RB;=4_j#:m?M5#KeA0pfRg/!pnlggGX_bpqLAC6Ks'^!WW3#!!!!a`MBg#6MJd^,*@]]V1!f3M]KtVp?:MR2PVJZIXJ^tXm4l'-6:naOVkPN.6`o;b8.^#ofIBei-MW2?^j9^a04Xckq"]H8Rhk%4QZ?-[e]+09M5aL2N@b.:T(V-2#Hr\YINaN3ChU&]h,#c#R:@?RPo#_+M#:D`FAPX]qo4Ili/.?T1^<;z!!!!q0rZ_70Q'iSO[uj)m4>epKhT,a%IZZRQd8+llaXJdM#KF)cL3#/3@ZIAP)E\>VK(/1X-iCC;5Wi%qmaB3SX`fbAF>D=<,t0BgVPs:oHGMo]AfF*j;_/5GUsJX5]Rs)`8q]_eC<^>(+i]X6puk#=fJ0?k:knNLaB:tf.n*l9i8I$m"Xleu[&Y#lA+X;VuHI8(kj2[3`btg7.OHZs$_p'V[Ec.;+7!NNR5DQE)rZ,EY4qa,LG01:Ujk1fpjDLtQOB_bcz!2u8aQ<^*HgXDM6ZWUF3G':1#0K5i[e#.SY05TW21HA&OOg#N"2)dEK&<"M%*UHCa>c;RF;bKd4aABYIh]n7Fd5N2@'AF88A\i#$N_0g-(B=Tt-PnTs28(M!D+#9a1@m:_8#6HR$NL53#7(9o@C3V"dJ=IkF`G/aFL4s*8qY;Hi_%l+>W+$$UE!\KqdIFs7n'C=ER_Fs1uUHTmU/YiN[V)9&(U/+[g]H6B`u+OJQ597qhJcCI&kiPPo>2-$8RGkh5W\sq)a6p[BBaLMe?D/!fEelEi0:+Y&#?_3dI>W(QB0>"[aBgMKHV$eW_I#oW(SBe'/O*9pF[[]04nD9-a\P"(OWH7BG9ZX"qS_C\S[BUtRdf!#-5l5bYp$M"eFWrNME;Rf:RDD8%FS)B#-]dTnh8P$E]ekHU?hO&.j4_%r#@48U5Fg_VAL9pp+K>AWpQK3E%-uj+WdACI/aI"uG]SGn_j0h?-B8E!g<#Ng5m(VbjjFQ/_0%.]\PRmoPUqo$z!!!"tQrK\_pl+3*lHG_X;C$n;?eeH*f@-!7\$E+5e+KJ@gOTD)r4SsSL0m^t/2cTDUs?Q-&9W+QIPiu?ad.(U'm('DBi'r6L"4@uA\62Xg#r(HP9jh;9?2%")HJdb-*UI=DtABDGf\;2&R3l5EH8.aTqTc(o+t>nnDJ'DVrIWKls5eUK+p<2-,8hUfL"ZKl]ufG`cE9c\=[I0;K*6D.o.1aT.7ZLK7@4K%Zp`[;R!cH6'VA3Oeatcd14D;aYPFTh@mOWXob#R:#_A0Dh(`BB_k^[Ol33<9.;%f7u:$]KM^)Ij:7aBOFo"jVh7FRPpE17r7Huf>t[de8b($VNbmf7:$5Mh#B"``nF%n+#?h?W`9dND9[9Mo%0A(5';"UV%un[ZgA^soBXMNoD_Q
    Q0Y7SJ\+&)lehBW1[keNS<&K'V+e'sDIOjH,83%Z6GX`>qWd!m(TGz!.]q5aT[?Z5]Qljl2IO?6JACjguF?(@p`3&M6VVlNn3_fWse5ZDK90)s"7:7mEp=1R[FI:WtOGN:iEaXWcI_/7Y^cpY8FcO[<*mJcZ\E@'NX;7?_RGLT*K0b63Mbi=guK(Y8b$pOE^Akt%Akt5j8o;]z5fFuo\_uH/Uj/.u+n>(!j!F,k`,-5J]Q)oGKV3khD-Q_tij3r6E+)Nb8)to*!:VZ:Q]_^`infYSgU]97olO,mDcBObmF2migY<\H81l`8:trq@JH#fJ?_3eph>FrY2P_P#6]oKE@L]1kJ`Hk4z!'nLK,e7;mD:R%cXn;2qVQ@S]eL)/60+0Zq1!E7M;I&VDo\D>^DP^q\X]m[5cqpWGD"H?91Mk/50"EZR<'T+'hV"C1Oj\)I?!WFSk:`XVS?I^sk(p3e^3oGM*(8Z$Pa+n=>Y9pOfAfAN5o&VIY90UH^&+P@eC5b$P7)2T"M2q:]G/7UhS7@m[<]TRo6]]o`%chM[uH^^SJU%MEdXX5IO-JVRe^qM?V#3GlM(D;>s-3qI=13gAM[g0@tTpRWQ=Cu34Vl@_3?:.>Q=a(zW0i5`(WMEtX0&N"T;UjE3WDpEIcRr.2tQ'n]$Hu'>hk([m[djn7KWbjisr0G^*/^m#!-cqc[THaV&TW$$NNesqW%\]J#9f]q!I6d?!V:c?GcuTftu!5\7GS`.Zm7I%ZPB7i>#<1\r;UKfUFIP.)^_UU&Cgp';`^DHp?K[Y&BA$A_2)Nf%f[Y"bDG8S_mNgQ,"FY7%H:tf!hf"_0)Ip\a]GmWbpQ1lkF3dX@>]mT)tpNXN`DcHT/-;6CW('e.kspMoE%`\:5=G>Y&md-*/Vd)*9q5dj:aYe#$Ka<[A\_Ok2m=EhU!q.8:qqz!!!!q0aUE(Yied%mTj/Aq1mDj,Iae:jFZ0A@IqK:i>92^F!V?7`p;o)CM@L'?\Lr<"3C]HV(7bjK"tL'ibNDus8TNc9&@;))EP)ARrTmbF_bNclu7!HcX0m:.lkbTSdh`nTqOY]gm8E3"ECd0_X#QsGiXsX/A]/i(`SDQeaMa`Vc\Y2B6W%\YK_2F+Xgaig0';s$PYi*FII+Em"Z3A9hc8Q[f[AN]sfW7GdobR8#2nURlHMTRdCiQ>ZeOI9#Ck@\K9r:L#7@dL8=T*-r)CZ?n`l:,SpF\z!%K<=ab;rcAE`@D%N3WY?asP+F:U=.gK+mB\8YjJYhm*2>eg32;e"O:').TRYr??@T6),ipn`5I(go_0+0#Sc43HSZ<%_f(AoOpaA++A]EWd/VOjHpO-W<-B!Kl_k@cQ7RT1S.58okNC8gP%7l<9.;%?Aj<,/u:uI)q:E2pn5FJEYBt"*22.QEWJGi53:ilI_du+ZVu%o/Lr86Ot3>4lc2UoL[O##cL4=hZh=RUP8C4:$H]rF\l!M_i&/OYmP;M;Ed,jDR%K2H.das4%N@*d'#k!q$#Z+A^A!Ho5o39#0ALI_DsoNRMu)br3\pc3C:]73$]:?Pj8uY/sIKeY+Ke(7N?V6M?o\&.enujEU+`2Y<[+/z!!&[$&sup[MOZ10M)'A"J?l_'9hgW8S\:f-/3'pgI)pi@<)U>?[1`,,TqU>RK?)83o98/Yn)VCoC&;cDm_Sk6:s$j+;lCGMj`AfN&#uJ&=kV#$WnN#pMlGEpEF0J>phrL>:k`(2`RqXf+FsOLe9fI]_jda$_R$2Q/\X;-dIe>7@m',?,4F/c[;*q+E>^oQ?puN/b5FF!l=G\ZlR?<5r'3*Q7+U81jlBz!)uVnP7,_*-*!q9AkX5^Q*@geYJ0qTj+c1gX1?8[$h(!(@h>s.K%u*fBk_!&bY=q"6_-.*j7prkhX^M?._QZTU+_#bJ"NA5mH=->JhQ>V(`R.%W+YX@*;Kc!e7LB)*iAj[mE"'#,J/0np@`/p=45X01&hTe$e0pI-?M?Cs(!2V2qab>AZQIN!5Q2>!SGnguF4^+pJLsIT5>Q=a(zW0d]7(F\'D*L\gba)/,mmPDo7oBT'U$D>6T(Ch.gT-O6M9/$R$aT^@P#5XVW.d9RUfs,N=hn/db)@1q]iW6I^$>1jY0\Mlg7U&#YuFHUSFS1P/7*>fS-&kq5rj/<7o$rf\S>Eou4N31m_JHM2fu$RH([KD:B,aTVYEzJ;QpCEZo8U=HQ.mbt,1ODQ+uqYsQEjfob%8V)8!D1fE+0G]H*M@3bY1[/'LB8Ud4u_*b/?j6E%QHan*FO6k(TLKjNrjnQjcUVCbhFYM1GA7KJaAH$h^ejE3P?E2S[=8Tj(=M&0&YupqSQX+fP?>qZCD,PcBOaZ3@V*_B:bt:2e`I[(OJC9_+j8u%W#*K>oz!!!atnDqH1(CuBkU=IG=fk-))$UX\%fQR7q;7)a;@T.7cZGd`Xnd#_bD5m$Zo\FP7?jd`045$t5*ManR1YU*I$g:(oZDH&iOD+bY*n!s#hF,C6mbVn?@524ZCAbXc0s6;n84(\Y9j2-Ap_g9dCV#'=g[[-a1PoD2tHgh-Z"TSN&!!!"LMFi&5JYGoAlFq+?g$97u(PME*Y\ce\A.`b%A)Rkm`ic.m&(=+'m,n93U.HnUsh+:mXD8XN\J%Wk\$@f^3AD4tQJ%j.>Gq"J/q>$r;go`HRel/3s4+"s0-E\V+a$qs)_2+e)`8ChB3.Z@eFt]mbq="=#C:Y#7`f+HTh.:cdRWKdT*Td]90*4(K10;Fss1_p(d2D6mdCe+KIm_U68IF!X0YG-eP0qt4[W^Ns/HN`g8HSR5#_PP\dTeDo[Tc1(F?5&j8h^re-OHgh-Z"TSN&!!!"LMQ'_"KaC$GR[P/04?8m<]&Z2?rV9S-tp)\*HMSH+3Db/:'f8\L!BW+j6[^rD*+ut*c[=TI`]F58AW2@;#DNdQ_>adN,Y@>B2VLF#*iUOU%=C2+C4f#$3Aa=Q5n9/.H7>=g(QmOPJ`CKlS=)uKVWp8d!0WT+5&PPN/@e7dF?U$qRO^Kg$BZb'DKBYmb'd'#99l4CDb611iXpFsrC-J67;Cb8%EeK,MOp_7^-SW+#ldI\=4l(WPIf.&<8M9'?quWpF200p"NA:fkab@GlIAn-5$C(@:Kh&D2$RuW3(B=F8z.]-Z$(Z)mK1,@?$&C?8?s)@X%;LBba6N@n'YfMT3'\SP_[Oe$LGUi[9L^cbec"8t],Feu)RF#\=+["TYA4QsA:LDRSo,HXrn)C-kaIeFG>95De4.4D8s]g?\4Z3b6[3>F/iq%[I:8_AN+!`FD0S)jMHFjRon$WnO^z!!!!q0bl4L5gcc:HS\TqpTI6e[FN^t;rY7.)LRr@EIZuAgd#l\5j8Cu(YI@+\[>UC80o)G7>8#0Ui@Xmaf;19\I/8l9JK^SRf(;*/aI$?J+9>3-4-/#"mPNpW*D@Hc%<.&,b[-=u'VR=0YjYO[q+$rH6.oA7$^gDhecPVk5r]k4"sRU!lLK)]@/0[UaaRh2#PK*"N>=FC=:k4km]Es5Z$oe7Ig/hnRIfe^\hZ@OqBE_'ZXj2cCC-DaML_+'_D3iKk(^EiX!.;)?6rlO9ar"gMrp#-D[8LL@)_WO4fDPjV@=5EV(j4k;On<3Xlr#,0KNu1SR1,9IQHXT9VK;L6(9pfd0g_nEg,UFRJdIg2Ru*'bc@,XnDXqZN*J5m/gD,!fJp(=MqP!u]-8mT(J$.Yz!!#tl`D%s-asrKX!%;K5,T#>!AW+OeQ7bn-b5&BaMrp$3rUW,N'VWuG:uTJ=4k\uhH\lQVgp`9DVu+Ntl<%5W;2#66j([s@Tc\WK&/;qK@6d(*\T>qPelF-;#/]gMCiW`S9u;CQd->2Y<4HmB&ARA6]4^acl*g8.;>QZVU.\!P;8G$^M?d;FKk7B.FL6M,HA&=Q4(K0C3]+;,5BkDL=[S$6U>SUb'?:65A:C0A.Q74!2U?l>kn,me*IJ0;W[i0j*n\q;]YQ@HnM#gE/G!*mgsj/8//AVC^)WWtVH3W3rr"lUThD_H5+^'V*mH.H=uZ%pGLEOf>J6K9ZGo!\^n4i,JE"UbJ#*,P9.iaEZH*Es>.&7uP[>R\H79TSSM?:73,DE8._L-,=CIu9FZIIce;1\A(D2gq*5s!=Mo(Vb;Ic#@Ha%8Q/KOX%?9_&Y_VX,'o$:;#@]#aLK]E17z!!"Etj8qY=+LqKFF@),u^H=MLe\"&699o*]O1Y47;4ZHC%eD4KnKL=O(:0FlW5uMKTh_`TiJT$'h&har[im1aZ?p5&DEbUH-Vs.H!F3u(\T>seD/3m%CC7h'YfZ:X*Ba+NCs6pfRM[MibkC^Fo6]UHcO3Aua;q(.$d2^NDu9r!=t8SdGX4V_ijpUU<%f==;6(aDI-T:kf$`"=pM51?HU$+L@EA\P1!@9oj:7=fd]qG:Z/,JdJ`Hk4z!'nMVj8qY=+LqKFF@),u'KS9Y9cDQG.censZ\e#3/IV=gcCNf9.Tl))?3^r.,Ed>NR[^>[2mYY^BJ4ZP]6?9M_UeC$jN]?H=#$t_DB\rG+a7sRm)Y5\%'0mKi>*$`,43kqAW8]#3Ju_cY>RP$DB2o>nXbI\#jF6BPLQz!!!!&OBb$V#p^;ePYPV,TgeQB]"6U3TjBAHZc>T0Ki;((eLbesp9Kjnf8hpK[\^jkbCXGLf!M,e-D0](o4@'SYD;_a2Lftt14!60:6"_W4iHVj3PVJl<>F2tjVRZT$CfBp/EBQD-RV,e?bmHWADIu`jJqru%]>Q=a(z!!SHh5R7ZA(BB[p?ueR$@da0Iit$&\GdVE9.TkHWY+AAJL35@22/(IQIdQ$A:8\Gea\`\-KM$"2XQJk[Dert"*pgd=eA'2MG'.[rRi341%3*g"Dd/F:Ebo2841C^kZ\f+-(JWm]2Q`B=,MBgVXK_422@%OY$RW8tWm]:/jP&=VZq9G]gbI!,^uRhE(KQC7"h)4"^7MJp@p;!$6N]L*1c%#KIb2A)@U7g,]qlrZE-a_s0tBOce"p27Ftjrhf4eVo93kh_?-KPuq\JuC7D,$`Q4ek/',Er'LDL0u]X&B*ST`<``@4e+F?1Umo-NdiVA*("S+p:_U:h`7SJPqTqfD"8NK*Iss&UUTYWG&:e[f2)R7;GAk[$;3WqMfasNU..Y5)0tEAWZ`9"OMc_Om:<1i>M,&i,OHHp+_VCC1RhQsD`8j76_:%<0gU?2>n)2rX-'IK\>NB!&aTVYEzJ;U==c^l<\!K^Od:bIm7j8t%!A,Z842>JPt-T4QpQ@[;6B;b+;8D=(&IZeLps*8qY;Hi_%l+?t?O[5I\EaiT%pn)m`+oTVcQ94m?fm0U54`i*ei3>_9c&C=r"'c!&m6E%>+a%F+K7En^S,2)!!`JRIblp/H\^OdH?T'V"N`g8H@&P"D&OVE\=kJFngZnUJ6n5!0nI'&%<60OWTHJ]/EgH^+FNVqtSrqi%f0:WmDp%U0eCCVTA-HK*^HLXY@tiO?Ut\)C):)U4AIBm4?Zt3#:rQqi7reV1z!2-&Y:J]jU+99)Tb50p$:p(("/f`NSQn%^"a^6C"C\%TG#$Z&7$QEl^[b`WJ4"s(ej7o=uk7b=ES#;=M1G[IH80h)9'"NSS!WW3#z!!%Pl#Z!'L\@FZ1[ra1=aliE%ZYf$ZOEulB_s`Z8=e%L\^f=PZ:\[AB.*RkMl7+T]~>endstream endobj -38 0 obj -<< -/Contents 133 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.5ed95e45a8a19eeaae0de69cc5ab3dfe 37 0 R /FormXob.baaa2211732baa0f94f6912a5b035550 35 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -39 0 obj -<< -/Contents 134 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -40 0 obj -<< -/Contents 135 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj 41 0 obj << -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 101 /Length 24327 /SMask 42 0 R - /Subtype /Image /Type /XObject /Width 3083 +/Contents 141 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.5ed95e45a8a19eeaae0de69cc5ab3dfe 40 0 R /FormXob.baaa2211732baa0f94f6912a5b035550 38 0 R +>> +>> /Rotate 0 /Trans << + +>> + /Type /Page >> -stream -Gb"/l#C)J%ieIh?/?"AYZZeROH7JhU:J^C@%t!>5l-^^trQPP.nQ]P&.G;j?K+E5*g%7,hWacpN`BX^2IVtq.:rm=lji`\[_\?zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!#\KTq^c0JB:sR1^5Lj`EQFAhc"p;O(Rl&)q71:5KH?1G_u%*"`c[lojNia1R:XRQ&Z'=oOL.-RXh'/RQ4SfE2-Szzz!!"Eap?gU9_%1Isn]'\6Q_e;&@:<&B8kM]p#@'MdFMM1nF:gZ3SijR9Hd3FgGnp35Dkt:Vr#p&>*7$hGCpe$.&eYh/4Ve"tzzz!.[s9%LCm3cTNrBn^LK5KnP+ML%X`]PF@2\LJ,#^Kd+#//g)H!i"IJ5<3BL%Tna[ER7tTSF$V5=JC':W>?MFA$"hGN--#ZCVk40?+92BAzzz!2YPm&F.cEP?aK@QM/HOY=RcA/mSh@kfP+,J,d2aQE[TtTY.t6"%'sd[^(Y,@]J5Y1D1YJ3]k7ueQ$[kTTl@f;gj]+i5($X&J:d-NEWVuM0g39!K4F?q-r'bBl\PTN2916NZL?0`JPC"UX@t>V50ndY$e.^OHM-PLoq9dulIN(A_2X_;lZ*)5CE7q*I$9^0$]tIZ[;FaWN^gJp@:a=fk_cOW0;""q;K\^S4o>C@]A.mK5A:bnYWrg2!mKQ=>Gu#7mt:WKLL=B"_Wj#+s'r@DW/pi2sKF.c8[;pqdmnC4F9U-Z+tc(pO!p$7,!br:.Jb?q&LnN-Eb?[1N5ksEO28Gt[KnAA#!1H4br-n4!2*Z:.*dA)Kp$Lt]?SpB;aA*2T\0hg]"?$kEl8DVop?mB0a,55k-&ijs0lb"%L6omZ.e9.=K+TY5(05iq=Ed-gU_On54cuSc'gMRC*OrJV:m@sVRSiCR`34`LppJ;Q<^n?c(r7Q[VjnNh?YJ0kUqk]?:p6_e9LkmJ;0][c2e>ZBcX]DL9rV#"%-["q:60YgpgU:"8JX7uS5UbO#pfhoc4SfRN])^1>4.$(u6@=6tDIfWj4nkHp%hB3F*^9W)zzz!'n(_%LBcHp=j#$$lh726\c./CY"`5+Y&a,f7-%6.k=9XBE.u0;TXRu';Q7r_f=neU"Qbbp[6jAhK_SjPol'JO*;\iq=EdGo)AUbMq`.*\r#an++IPL:rn9m^A:H:>bacJ0>@3jd\KJ&^%i'BM/+i@$@1fF8bj@rLt(e70>@q-MUY+sJG2^;=0F6VY]KmI6M\pGhm0lSd=:*-"aIHu$X8]gLsHUaNQb?_f1^S5rQPBDzzz!!&[^+UdqASGg6]f".DPDq/$FbEl$TGd]mKVrH"q)/UIL7(%='4*HKca?O=BXK:j.#j'[@!k$!FocYuJ5Nh78?%?SZ*D?Ju+[/+u2_rkVhKr%_s74>dr`0"!zzz!!&[^i@c=Le*3\!++O2C[u^V6]j>'@7Z@b#)n\]JN?^rR"HIuQ9V+@LWeugsQ7bq&3"]QrUArK-2g=ZCiZd1i,*jFIiICZ1j84fWI4L1iOOXN#TZ*V=M!qLViOfHn,>!rC:1WFPq!O>[]'l=>Gk4:T>OE":]EBbGqU;7#+6Ou=*(#F)b>o,+ua=Upf8?:9AW`2Pp=0#B(6%]BiThZ5q7ZI!7\3"&FnV,bI`/#$)7fN2CO,F4mX&j5hW)8<[*U;7[*tf218ih.^kV;![s85g,Y#qrJ:LJ1F"+s96@ibcpt5Y".DdINis`Poc1LYmdhVH!R*3Rln@&H!zzz!!!#\$ooHkc%?Nj\9@7CWEGnr6K31@Y[MQ:GM[VC.$UmlI.PU1cam;jEhu_S&e]6\nn!:q5BcDGdn`3q1$8N6khR>r@R?51-Fc9)$&%fcS0zzz;#X!W8I=util$[heu[!8acW(3`5G2HHG*Y?DVVa!]!^;[;?N1V-'diO[neJ6E8\P,n`(E<>aUhCk&`XSN#3^&ir-AK(5q;B]C2n!Tu)0F]bbq_U0B@VLkpjq_hQF+3V21FK0BNfr:k:#3=5s$*\=cbF6:[gJ,D$Io]R#?np&QhC"#J,pg:R"e;=mDi,VD>V=XIJGh`Lp9AjCU?FP;pQg_6]"qu6M"o3Z`@AZp`9>&[0'EA+5zzz!2(%IaN1;XV+QFK'rF`s)XOa(@,\tV@VkMIqeiVC!ek.arr(g]p\HQIaNs,L`zzz!8nV=,9u6XhgTqFeQ48#W)0U"276U.lk0'/l#bLW=&4coa,V1V*X`[60>@3Jr7"cM>T)mZzzzzgq'"9F/HfSglLPHCE,BWka?(TC"&qRYQk45jmqNVcT_5B_hJVQ4V.Snzzz!.\8lX]@N"fWa&8B-0-S,hQT-zzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!"Li37=fdL$!9MdZQc!<<*"zzzPTciQd)YTL7h@Bo9*CqriH5%zzz!!"E7&.nC[!MPu[!^Zkezzz!!"&O&Fq1LTpnm\63$uczzz!$2[_ng=I3S'eMW&DFI'caNmNOp(Zkr#5LI!rr<$!#1`,IuD&Ghrb"?z!2+]Ni'2`'&G#"D#D@E2;i^iWh7p:r:fZq#-4\RJDl&Og6CXcH(nql]VNu!D`spVtqK&=4DT"^Z>V?_n/tHPq5?QAf<*A;&b?@/%qYdG`hWn8Z'tj$(n:uQ`#oq+N<`:Dm)&)8TBqCiHmbH#dO4B)O"cSp+B&O]#T`$-_G::sp1^7Yu=&J5Un=iFI)_#M*%J<3!6,Tnoj9RZ'!`F:cIUU5X\#Y>?:8oKRcnH]TI`kNie%GLWmHd]6;'UhF_cGhP/,r9,X3!#U(C$8P25R&[=_M+G>Q,LuhD66AUGR(gI@Q("jN4#lQsb\hgm/N,s\u7eBUaY4>DL!(f2FCq[a"R7BM5\9UfWh<+?R(0Ka3ksKc.N9mb9f(-tOAUQTf,M2(6:8DsRUsAj\;GJ(gg/FqWW,g[$:&e%Tq[m=YXm:eMJSJ%4pE-&#Z:f7mGfAlReNYuoGZ9NDN?+f9d)GY`!?j!W#mfAR&eIAt`0-@8&0bS?8jEXo&J<3Y"G@&Ek*[q(fn1#jgo_WUP`Ud-$`r92G%.@BoJC*-iUH[/cEr]\TWC7>d%/],oeni$0m1OiF]WH`!WA`/Gq9p,6:=5[ng=G]6psEOXosE8CiKW3]!YKcdqpOj[R*u:\f(UtB0!>6ql`52-A\JO`Nult%b65ne?3/MD7)>>c12mW\T$-*-cRQ?s4gkaD!mR#hFEMVRcuDVe$(8R\$u]d],`^WPdihZ]#*$YBI'9en0^'m.T4SK3_[lF_R.jAA:^C,Tqc:,QXU.>lm?KLfffQ&4/c9;$dLO+sLLlPCO2g+sI4m!^]>a=9:g_:"#*@RB.1%pEbD$IVs3G#S+:fWZV"DI^@c05lWMqKm2jDi+?BTr'_X0\p/kJ45a:+I7sVH0SI%,$YN#>ND)BD$(^-3*!]+Cqrg=5jf'E]S8'2n`8(@:clhY$$:T9Wd@9&bEr7)VN:MXKg0U'?r?Op5Q,Yj[[6?`0q5K_GZPId*40D+[e^L8I5YG,*o/1KFe_-Z2@0Y#S@X\K.?tr,(&>NTrih,3:+0f'6Jr.P*I7W?!Af(S@"YXcLHNEhR.CG^ojj-GF$MFS$!Xa,@b.Mk/HrC/=kgf]G&#,#)$eNVgF9p%RN<^/*,E_%69;F>Mpur_QHnnc_%YU]6TAd(R1(rMr'[C5LQrn_WbS9+Y54gE'UAa[[D($?1ph5>jn]8O],TDZh05?9<1HUOUH*^1A-:uX5/2,6)'b?1BmIk_kbp3fQqB9WEqk,SGhDu8\6:=5[ng=G]`*;$X^+IdRp.cX^3O)e`Hs6Nt1jsc/Zsc0(BTr9s-Y7O)g;r\'jlp9$M=T.^*Sd,UVN:&,h#F:FY6,sQ;$''Qp'(Ucl^)6GS[igYI7/Se<4V<9!UAB:EAl[=&K3`%m9M5&I]u;+bamaggR`8bj`^KU\oL3t,@*AI78.ZSJ%@JOD)3ThD0"1nhd,[p+G?S%R1'AOh7%d43ltd=*QV,nXJWZlKmV>4h0geP9KD8E\hc@XFL0qYrMudc-[*]IT=;^@WYeI1jIh2)55YBTi&]9VDgRdA[oFWM/58@$A%2I'^fn;B:gQA5FQo2OM\sGi49#T_ZM9`9&0`WIR1n`CR[I1$noHSRpr:GD]<3J'UD-_XN@qR_7+3WBGmKa,un8%?6!d+=bb7BGJ-D/$HUjM(O.:6)r@n4JHEjM2lDL;DCLP7BF=nD@A.M(c?0Bd2'[tk0?&.oMZr(0-Zn^b,&s0DAg3GheinjU/cD:<)FV[W:N=L1-,Bed5'l?/DgKTq%)I5]9+=sO#H`K?oklMeJ%R/BTUnZ4.bgplEK1T/]l&21C9>nCL"*8-P*j+lQr#pKR@!^]?L7KPnS>%V]3dJ[<%C"&XRhEbaCI_2f5YiE1A@-o?%P0@GOlm8+)+sfb9-T7eBW'.R68?l-.[j3`c0@2.O;ep`Zuckkt*d02ld3e0md,0Imb@QXdHY`p]&!MT#$j(jkqCIQP`f6;,'^.jf=af)D5[oq)6;)9sY-IG(n3Tea%S]tD\S#`A"&<_2;$ESS>kdE'Af;gN\:B#1h$L_/,NMm^BZ8F_OWBjl,h\$Je7)Y7QJ.S$,b,qd]gei4IL^);p\oF?BX;DSt^V8%6U0P&^mHI`TC8H:[6I.iA:ZY1`'jFkbKoI%a+::7564NqnK\TtdYQ#6C;,b1=qQf%]+9SEnkL[5e?#W8srrj0XU8RR@ZJ[MZsMe1o\+-S4]3:)]uAYNXckFY1RfL@iV"NT6(fA%*D,lZHc`!NKBLs%0JCIb)mKVYHqKkY4'8(eJaE&(U)]_jQ^SI63EUHY8j2@\,bY>NDCp!?j"IAMPB-s1k(\Od"n]0+Mn3+/ILtQ\arc-au1-cMR/F5o&t]6<:!/o[M.n71';lkp)J4.!=rT/!g[TE5:J;LBMs,HqQ^1&J7Z6!^^!Ml=/K7RFBNrjL+1=s8;hn!^B\HJ5F.55PNT)pPnY@&#ht3Zi(opWsilI00heD[&7D)8;5sTZ\]6ZL'3/@&J;;G8O*ROQITqrY9iFbI&dYd'E=A\5-Bs-QA9Wf;D65&Wp.Dh9CHr?'(_8NG($6:f4O(5rGnSl+[0\b8uKr!0-K=jF7G4Rm.$aP#pKRB!^]?L#*0TOQ[8*R<04-.P^j;\_D2u?o'iQ@dGffN=NimI4ZE'+W>r$em1Fcdijq3-=?i[q2pk"g?$-F$c"kuPJO4P/gk$#A_[d\^#UmuEWNPC#5%s$!/[2T*/''G*kYf>hU7-hhC*8l>n:&Da2nm2RMse?tu%,Md;u2X"q.Ld@/R:m!%Hj=LD+_EpMd9O$W]6FUm(FuDj7<1b>i7]DTH2(@r&2J".+kC6&(+f3/&0M@[J[iW[i]sW'PcT\02OD(%qdYk#Nf!^Rqrk\Ta+!"J$5Xnq_WXaC\G,LC(rSF8!X6$p!Q^IgPt?+C\.m+B2kX#^P`a!*MUf8lGdX=:!)n5cA/QjQ27%UYYY?Su#=VN$`\*3m#([HI\k*3eb(g+F;Vj7lEtnpI%Gdc:H0d=[\s-[o*@mS3^elgYUi&b%L+8/4H:G*$8"G@IC/@p;#K('7s;sf2J#=Zp22DdKQQMrMJgCe/L+Q-HtK*S5Ub7K1ag5R]R8"5aNcfQ.qLuHTW\YG#"8S[7@&JNbpWT9/;.Rr+>bt?KZ.C"n%n[;a]ddp.1RUBUIj:3Om)c1F1W3DO'aDE49%h`TYJOLgnIQdZ!75?\&u<`5%6'RF84[H""&g%aW9u*^*#Tb+G>Q,,q/j'IXRqHpOPFXTfXJd6sLG'Bm)8(H@4X$!Z-qi:RU6Gb(A]Qi>i[fq1Gn5bX$&0e]Tgp_uZ/qu'.FO-aiRM;lrP[E/nIfHei`[Tc-3[?Pthn,`WD^ChuG&8)g[7/$^P^j>)/ZZdVUQ>4L^.mn_K.HZ%DLm")bN3f"j)OX,lHmi9ha^X%7sVS."%#?'g#Ghcfl1c"F;l>F,ZHFc,5OtPkp)dQLumLQ%1%)lWA'g3ii.c%2*m:T*/HJD3c=Xo[+PH)?>g,=p@,P6K_CsR?4sV8(jk:UNl;t#iW>rQ!5lYP\XeM_A*OqnAhL0%e.D>aaC-NpopC\%S;DW;[b9q&VW*AGYbT6(5W_P0^]PH)BhN&@5+=%A2>PJ(T+&Qomm3k4bkejkNIJ2'8K"`RV.nDo2&`$G^)_-:M/]egR$1ZU=,cBIa[;Bcpl'dh;Gp+0:'$ZSR:7JZP`gK#nc^")`/tBB9FZ,4O3H^/(Q5T9@L`%L^CK/q8+Q?*I!?oBc2g8ZSB!dF6PT(it?@t1EGj(&5pam.DC?]V[Sl/!saKIQ$BpRSIm(&;AO19B`>A4X4]`V1!a8AYVHYK2j+nI'A+nm9?IlDWW_tjPE.10n^nq&,J=lB:0/6[5o0Wl[k1?:Qg[^B."8JV2()=k*nt`LlDk*?/!7L5TiJ1<$+_9E(c%@c$hm;3a'+B;oIj024j:3T62P@YApT*:_QJ]4.Y`52?<-*dS$DCt:,+0hra`>IQkF5KPpq1[&V+LdA:j"%)0G=UrK?QHma\=Ie2O.GUuBm>-5V+h]Wl2bPep\Zf]cjd:VaTtN6KRp7HX/Vj)B&/Y:4GY#r<[IM<=TjN:MN>m9$Ak/D]VGA23l.](g.DNt/4Wl"N5Rc3!#t(kbMjX:l6#&,EpVO1Dl2b0i?(.UJAJ_apq/du$<>O`L)2KOZ>'rd[,"dk)m\o$7#7Yr(eoUd2X\ke6n`,CY-\'bKtI.(A#E''c;hscdfrj6IlG@F8d"GF"h,p7l;U\H4hqenU`@I(+'Q>1nb?gl/KSsC>!+9/lA9D;V6gO39RXDM83ne91bMl2Rfr_[P[GP0j;T4n8l/%]Hk:)kDm]**cud9Vf`OO1./)ij8VmbQ+cs)B][55(>M@6^[^Dj@_QQ$DTZ_.:4lh#]pbI@?)N;Sq.5]L[.C(uI9#<"J`:IH6%&r&s/foJ+%t!*%F&GuqNu1$5ZhT2UhFlMeK,9cqtKWQ,P+j%L?C7PV/tb.tI;HLBN3I9[jk'(d7li[lb`+iISfnY^GOlk\W\_rOC'ck;f%2)LF=D@SHEnQ1bnZs(^4if?$!^clkXh8U%^Wh@X8jE[*XosE^>W\]fr@4'_2Z*-c#AR:hp"rDgY(J.\aVdfJW!,7io23M:siDqWidAm\rC_e%;>N^U*mpG?19]rI)5i@S?$e<@Z67q!Z!O')$&0ennD;^&7MN&)VkLm94^MRe2;55.'AMM3jgDRM#D]T2.]KkWQKoc]`A0r`amFnmCh"j)6S7:p"K/Q=%9Mb+kh]rPB6BMVf?:Dl#NRI+>hShr08IH<$3BnnbE5CYo'.a3TYe&J2fgP^j;h@Ym]B#SGnc%L?4d&l!#"-hV6@0H%6uB$9;XrI8kAD`>VUgopi3ZXnpMQ1ec.]a$PZZCtm$Sc=Q<$$5b3<;bT*h5@@YAOLUO%/d\K#Kh3%LSc%_$#-NPAY6pqHd`>B0?\10REmuV^R3HiapTAe>.V8?ZeSNld>32^[bjkM;r!9M)]9fZ7T;qg!(F0kMVEMeDi]cDndMGZf9\C0s+?B_nT'4^Cae9*i7>j$4k8itcu/QXU>EqIn^KmL?o+OB&sEHD%4hZo?j)"`??]48b.@`>-^<+qKfUl/8BWi^cLCU1Y..m:a3As7;geP)30\!//mR?NqSH(glS^LS1%*-,O"!sF:qg.M5SM%@Car?c*e:&Npu+0KTCEoem37Li7Alu?#$&eOWs3J24_l;A38,TqbO*&[AEYXcktO-pKeq4f:V8njn>F(HYZU(g"dh@Mj=kQDoISW;CKW#^N8.JlA2>P>?X\/T=jookYo7&rKs57X'Vq!iC,s6Qq1nc=06J9icb(_mm9>j6r!L2;6V:b!Xs#;Y`GhaY./PMCSqR3hG.F-pl&lX5R<9F!^_^!,q8p=7!.$*+I(ZbV:01A!]0Zn)m"o2\YX3B6AH^3WTT>!IZ>8gbra`KqL?a?-M5K(3gGm6MVTm39^,rk55&RQ491kgmtEDRHNW4%tCi^+JDpZM-f2gE0!5`oHr[\ps26H$it#H>6l5d!q^E\#]^c&.oL/\/&.2.'uRW-H!Q-bE\kt_uuWUG&Rsn$Di)"[b$"@j8+1G/Chi6uO=I]CI,c)!c63@HU_2n!Ft(o"*Y;L3bI*7jFlm@l9JU1_:a?aZna0PYIB\4/j;3S1Ll!rO^/Zer4)0NE,6WZR#SI]cEig%73T5.?=/5dXp[5)i*V*/0(d9#eG/ipfCOFIgPQXZOOGIEtcXJ<8+9rU[-]^AZZiEr!8rbm4S`nOc%P&[=_M+G>R=8c^*[Z5LgSY`(SPbSSSbbf8/K*CNomd*AdR9mE&+A_2Yp[8J+]='V-<*]M(\P09&92g*jAg(cCG5NU@qD/7B4:>9o+X"qZOYoqm(+eS^[:Vh/@KJiGn[1Y3*X\-3;T%m,a^c!8*9cMJ[/hn@"/QOOg5>]:&4,n;.lT-st%o>HgLFWkAGtk`sQ)*6-/+#!3+P(f&ppD,kAkm@mOh/!2E[6t76/9`l^XD]NBoDj2cc')um<.Mmg]Kn!=t5I8a3luNS5Rk/3Eigrc4gGjN!+f[[o]RDp+n'J?0#"VPpI23XGjf<9BWlYqLpC\jb8!2/^qn(s"W>pYj1@oVV(f\Y*,AnI%2r-+is6_n"3,fA?eIB_l$Ndq/(f\$_+J,J/l2/`04J=kst._god6D^]C,/_]-tfD7SH9^N7pTPm@Y(0hO\:&[=_M+G>R=8c^).njRUd]^`pkXJe!*"5Cu+VDC^O8+q`Heb!:\:1rk=c;M4!J<85lFYC"2-o*_6EF!6X=khM6=*6B9']>t+C6hAG!VkGcaRb3B5Q,q)_4IV``ZJ*5LWN^4'=.@#-!i`Db[\@r6)9Ks,VqA2[HfW$rW>U%AL/IPLkpl'[C?9)#@^F(9ZQtX(>8=ZRne;^Ca1Q%s/KD==Kb`Z:V.p#]Z^2-\cP2I8N->"KJOtk3[!Ltf8q]VU/a6KbWR)u.IT[2e0Nepbn\oXa84o3:Y50G/-LX;[T$KmD\[ondJ@%3J9T*`[aa6g4psu2DH-r\=enXgLbO2.:n*\p7[WtBS2T0cdrV?=4IIOCS<@]*bUJZPuggEAq_!pE5OJME"KWp(?(8h:gY\^mpmf*pN2D88$NP)<:HU`)g&44>$of-F)6e0DC::iZ#5V(m:K;Puqjmk_AKIj*hZX^JS=#kqABRNQBf!s>na:!YY41,jQ+`$#2jI%AU=WP5.K2epLa=VR+[e^d%'IP^&F.rgFXYnJlOOAe2?K=&>2-H]U5N70AF>[UV_e)1jpHV"i]8[1k.W("P_A:a=&l2LOMcP7oW\F&<-EWVr+VRi]E1EP]":]QgU59K)Rr:K!ZUc^:hZ'b@g>^hXhB3sQ$[ek:o3"1S2g/Pm<[h6JNO!#i`XZRna($U]/(fd(XH64^+hl<8==@ZN\D-(oliB9_n)g0[NUOaDS15NGL**4!?lqV&i2JiAr0'=G;$UMlgt?pB*1@h5c>B5F=^=k=QRUQ*nRMh7[kFli/X^/90`d+[8J\jrnrj5>?b@rMbho?rn1Ytot3R4hib.]*s!2/2>:0V]^I?,Se2tGKFm["!saKaa)#HhfmC0i3h7.0`lR6ZZUTkNP.H,rQNW-(AFGPcBetp`2j2;u'Dm]#PuE/?r03!);&j#e^p[]C\oiLI[k(oPaEn9j?(4RO:PpU5:LAFO^OVDl_'HRf*GCc3uhlOg`o1SDHjSL5BVp.G.91#ZM!hr=#e6-\SuAPg5t@IZ,I8/5rW;DG/MJh%&LX]HWU6$$4'cc:.;1"mM)3G4k1lc+mit(&J,Sp+#Af[`FoW#2$nRoB\bGW=SCkJZfIn"j>4H7c-+8\4%'1U[UM,48g^(=11-)mODs6[Cp?fP(@.lZe&Lc1g2,%h@;;EQ$kNuUR%5T7RqI]3M=DDlcBq/S:/-43cP5]XFDf[jO]q8uaiS_9T5GDY#m^^=rdcpfRsCJM\`rXd+!"H&H>7)E+nJZn2XjWJKM"Q)5gG/^f>M?#.n*495X6`)#matMG"07C+X%RAXEj^'?h(J.=,TP\*?1BAG?0`!D^.niW;-IM2#AR<>n?#3IO)-M`hhRpb;(FdeJ+,sn.Ybmcpf:X4mV)@]U\B0+_:/B1i\)ErDKRb_8Qa`YgSTFJE5D949*,MTBk,>5CK,*=pErB)`#eB*2W@j@6jF/\_MA0Ru+nbbiWp.F.X(GS!/uTs`q!:L3@a)"$e?578RPd^]aC-j$%djo#+"6,#.fgg3ZDmSaIDt;B'G+/;*b8$%G<_K0&^.#i&eNd*0kY^ed9ReGSs=H`\@G7R`IKS@aL+#UO-gHuR9'6Jea97bGohIs;UsnefdDiLNuful=ICaZm'D.dG1B^OXn=/IBd>u&^(=#sKl:qpM`FT\3kfbH?43)&@RJj'Wi5\Th"]uM:*BB-1lSjj5imu0#l5&NOqCKrnZ9?p?SM)3DIU@[S`p@#R[HVLD6=E\O;%.BD=mu;>!N=-sd]rskso;6+PS!t]b&O0"[3dEZX0k'>f>7L,CbbG'[8Y5B&I0g/_[T<%E*bSq`-k\FN,gJr@Dgil[h]p//Ng^QT8UW.%?JoF&*8Vh#qeGI1EW,Ufjl2EcG:dcPYY&o/bNW:u?\.MoP5uj$j1XN(:sEi5`Mu*A1WSOl.ZmZJR_KKI3,k6Tr"/2^>:s*j2j;Q@]-f)fDgRd5&i8-d4Q8X]Qoh`OGOOqD4\PAUN0TP/KWn^nIf/C/HKVPsb8PS@q!*@o4oWos0?#S_,1h_CKOA6TBG3:kunS^Le%GbruFfuI5-'%f0]/=[Z1D/"I?^jVqBZ3'jFkb-&37b0D0:/d1?)EmG/]p&Af'FJ.Np9Rm+!93?^S'=;QGr;LWI-IT80_0D?krboC:S*,@Tb;SR::lZU9ee!X_6%<;sG;D7hD8ga_qAo1a^3doM&@_[**9R5Ne^e]6i0k*QEhC-k;,<9bueVg:Mp%Z@91\\Y:$f&M;'SK&k)J`F!2B:Ia4EXaJo4Rp`T)Q_Yr?Yk*n=R\+@Rss9Bu>B0qG.dp1a"*GSbq8li`h2tpKsaTl!o(PC9N+Ub.oomM>^?X[81lP#R0G=4!9dC]:!,Uht0c/g^E_%YP@B,#+n)^\%f*gM/E?fjM!4apFGdqk?@oao)YuE)<,s7dYX'd:UQ7Ed9=ddVX.f=o`\ikPkOWjk_4X9L]'WL-H245AiBSMi&[iBl?mpKa]*?,JLmYN@@qi<"?Lf:GANhABsVnF]i4@drodK#LV"nLP>Wg2f]%[nVD\oJ,%TieZ2]!rV?=4XEf/Nci5J3.+c#WCJkZr5CMGV[oFI]qQB`%!?j!k#m_\`TiB@1kd9*Xs/,,u2o%$HL_pg4#U'CR`Phb!S_Br<=V;Af3I9NX"c7N(?)o_LI-3F9`!`D0DYiRgd]N?)):?lqP`Rr%PLPHTO&rqVHd>`>VH/q>5AIP!DNeG$hm$&.>#R*/opIfFG<.k:dOM.(.EHkT>9(X&0f:[%dD'G9E1\X'FcmEIh4C0O8\OKUE-J)lo'tMld*K>p?^Z>iG.l1KiKSZ),_sL7>r>i8HZK.YS9CBJdH$sM&eJtm#mcM/TO'H2dr*L&^pg*PGi59@[klbUG6i)3jR/FkO4FKFuZ$j-n&VIpsc)Q>-%JukZMrh'/(GkN\d`FDhTu+pVZrF4N9)6nko.&k^&lW,C6<&F^!-.bpp:c8=N)FhmGK.K.1RK&4.p`&eIApjmZk3@/,P]d+-9^%i/F=JXK8p"W\`]NR2`PhbYVn+fB*8MuGH64m(d@knB-Y)R(=)UtbW,'<;fI[S#:3-B,!l%fa(D9`Z2=mXS[B!n$9SVWB/\L6jF^dJI?eQr+0tshAZ*Q,Hd46@#mp5al9_Q263UER!Z,*G2Ok]3Q0,2l,lM4r:57*.TZ35jS`#.NqR?u4@.dVcjKPj6c#aN,@:2XF8\F@\p4o([M*QWlssMNMm^qVk`:O*HL?;6q,2)BkB`a]OTmTa7.le"jYoY&,*1Bf+fMX?SlAS]6lI!.s=>_6APeg;U>)%I-]2JNScG.Fq"4T$DmJ'AVd00!?j";+27d#0&ODjhmW=XYAtgX\9?Y?ik'kcd+F<_KG)ioQOXK=->mM-DMgu?S]**cuZ%-Rjc8(qRSe\pk^hF^rXPS_m+_#C:+G:S:c'Qc<*86\-]obgq^OT/'^c(H;qC'8!F;l"-1:MNjm78t!j?CiMB(ddXG4f*[@6/VLE+G#7SiWZGme$T(T,kKjF2YO+A,IL\I<+eR::jd=1'N-12>-OJO`tYUe#Kcjk'>9Dl6L47=1Q7gBXdfsR7(B_+eS5GG@a1m[1sP4fp+)q&%aSH[8J+F71]5K]BZBj6f"05#Jp]]fNPiiu3,@mF^o.mro?T_IAj^&0`;BQ9PZ]+U2#epqBd?Wl'p84MG17C:5+4nI>i$$uB^nGfFGP>>d)A'2D\/08g%VrE:QEg7ZcXTuc$!`-%bRASth'Xf?/(Vqi['KE?8ZT$.d0A8POt?0>9V2$)QLcdWln%k5E6A1`WEfmBI+=2:*[EB9qEJL!$1/[an#'>9GDoCK,4uRQaEX3d#-!TRR@]DfH'h("knWKLYZ::E6D)lO6SNu-(T-2;-Q`scc9$69L.h5_],[Pa+MdGf;gMmWKVtK>h:5DKSYF1.01SCFpf?&Wa;guXC(uRO^Bs7-@,\>C)O+>h3#AY8mLt>k6JoCWbg;&eMnmQ%0Di+sN=;#m_]?"]L2"eh!5(^3%qtV3R2qh>ne;iE4JMWE3ToeogOb!C@^k7rTr/sG]76ljjf8@1He`7!k`odroksafpK.-JnK`&NWCl90UUpA//ht:f[)Rh!3T5&L;XO1$;W5`/N@S!;+WuH7,68rU6prSU&eIAOY'*hW-un,KT=!=NZKn9(-WitBpe&\BhRWd_-`(_Q@KMNa."4pjNPkK=:AJ1n+uVE`jNsI=Z4G:46DC"#GPk%2e3uYX';+H-E(*K;tmC9s*=7DYLVC]3Wd?f^\ESD9O4=rT+YC#oX]5FZQM1?/'NWb"H&J;;G8O*P9\6@>op"S)2bSdI=(h#D0a0+#cad1F"ST5a2bY:`qiF1uGH\mp0a;#2K6*kB^BUQOeg1dtU(*F`a19dmuOCO56Uma/5]5k>cT..@:!^ZoKFAM%p$ts4uc8;(TShXl:B'D-,6K,&O+/W=$gQHYE]Z>F'Ua*mt^pL0)Ld?pD*@>:]i!tSI%L("DODu>9:`](>aT]C8`">RmUM?[]m[?a4:h"J5mjIlKFea#,UFRd`NJu(/bn]to'Q5?s(M.D*VjmYr'p.inSlLV2WEF/(HShAqk(Y'eGh^YDHbp.(Cp7Cr\QNNn3TPCqU2c\9C)#*htZZP:P]7piuYVb7Siomq.G3UW8?PT)npW1a'VNU0Tq6E-/;R`.>"lX&?gga]5@/UC;of:$5=;GA_GdFDI[X3D21bSiWAZ\O&>0Kb+?0dgA`V#="Y2jkg*\aSAm6+YM8D9"CUt08HU7]UFXP%p?g*M&Bf^1&?dGS7n5>,l@-=XGEs-TDBmh*[jM5-]4/!eGn&dm@,fcV>[T;EdPd5>hu++K?qSELmbJf.W:4.qK]@Y2ncFe\i^"/]#;c/(7!^\7DZ!"oj[6:aA?!'[a\O3\>T\7F*E-QWfp?p#_XKSYF1.01S[`"J>c&0`;BQ9PZ]+lY(blB"imb`OfC9##._cj,2ZOp$GqljX/PQHd[seiS2eGFdns>QLOiD6BE>QDJZ(>bLO"0H_Y-eQ+,6c^h@$m(!KJHk/Jel+H[SXJniKcgnn817ZYFM*kQ?UsLIQC6^r.;bl7@cC_P85%4!UU4/fYd0%pn_tD3ZX]D?Ad$VRuOM=j"OFRlX639IWYg]Ql;SO:WNq\B&s<>Wta`Ngar[[o^#8P-4E;>nplm?KLfffQ&4/c9;$dLO+sLLlPCO2g+sI4m!^]?L7KPoIS%:N+OhH"b.Vb75[eO>r;E?`R&6cDBY>np;#_b0.\(e%hKY"Tg,[\!;#3,08rB4NHiSYap$R7D[T!r=r*)^lK3.7=JDU7_!;0h0*q92FVXb",,;5N#W[i<"B5IB#fRWZe8SkM+ZPh%SQd&630R;:BEjb#RLdmlk0jr7)Y7QJ.No6M+U#=&J5VuT*0fY&J6b-&eHOu2gE9.]>\g/R(n0ur2Hj!Y#g67@g8shh\@)IaOE9IFAO$=1PnX"D8Oc.NC(AI+0#r:KTFVT\"QOE2&Z,Dd0?L)GNM;!^5qX5C<4P>FDl<(lm?KLfffQ&4/c9;$dLO+sLLlPCO2g+sI4m!^]>aJ,u@K@Hr\:26kO5Z'`sj@f8VV6T>5U#VDX=,sV)7??t/8WL45dY&pgLpJqW$])C8IPKttZ-J>hEbaCI_2f5YiE1A@-o=DV]eh1s]T<`PKpPjV!4jp6\;PgUq,hWsWaIFtk[sOTQj!rY?2m(@`)Ot9*UA`pcUXeAJbqC1RGZ6jQ+G>H1JC)On!?jj!/4g-R+X35N"G@/0mWbo;Z)7=qY9]-_oZDuL2OlmEhS.YsW.ul%Qs$fbfg^8XLj@[d/GYFeI59*=ZMZmkj#r.bXV<9%kf$ee+#6?hbo+ksj^-]NP:PQ:ja7F+Lm[YbV>:j\bt%Js(7Pkn@gpB+(I&'fe:>-r6IAZGaJOeg#!^]up#mfAR&eIAt`0-@8&0bS?8jEXo&J<3Y"G@3b#1<4*QS-DU7_-3WFJ%cm9ffKogi3bq9#?6prRt#m_[uQDaq>&.oMZr(0-Z&J5V-.fl=f90c$-W4Qg@33=OF^142ek^t=?"GEuj&eMY-,p7ksLa=JN+[j6]Q%0Di+sN=;#m_[u,%>L;+B2kX#RQjBb;s^m'"&m\CCizzz!5J[<6N/5QF>HNS#QOi)zzz^]Q#.o^R:Wd6k/iYJ&:Dkek2&qa[M!WW3#zzzzzzzzzzzzzzzzzzzzzzzzz!.^Q.rs.1oL#;~>endstream endobj 42 0 obj << -/BitsPerComponent 8 /ColorSpace /DeviceGray /Decode [ 0 1 ] /Filter [ /ASCII85Decode /FlateDecode ] /Height 101 /Length 682 - /Subtype /Image /Type /XObject /Width 3083 +/Contents 142 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page >> -stream -Gb"0Q0`_7S#_9/Y<@k+(4P1;9Z3pX4oZVLZ!!)N)$31&kOqdrsJ0ZWF!!#Sk!!!"^X8i5#,Zt-J!(aBs!!&*k"TSNFaU/"J5`ui^!.Z=F!!!!jendstream endobj 43 0 obj << -/Contents 136 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.bb628729698bfa2787467d6784c61ce9 41 0 R ->> +/Contents 143 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> @@ -369,41 +366,35 @@ endobj endobj 44 0 obj << -/Contents 137 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 101 /Length 24327 /SMask 45 0 R + /Subtype /Image /Type /XObject /Width 3083 +>> +stream +Gb"/l#C)J%ieIh?/?"AYZZeROH7JhU:J^C@%t!>5l-^^trQPP.nQ]P&.G;j?K+E5*g%7,hWacpN`BX^2IVtq.:rm=lji`\[_\?zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!#\KTq^c0JB:sR1^5Lj`EQFAhc"p;O(Rl&)q71:5KH?1G_u%*"`c[lojNia1R:XRQ&Z'=oOL.-RXh'/RQ4SfE2-Szzz!!"Eap?gU9_%1Isn]'\6Q_e;&@:<&B8kM]p#@'MdFMM1nF:gZ3SijR9Hd3FgGnp35Dkt:Vr#p&>*7$hGCpe$.&eYh/4Ve"tzzz!.[s9%LCm3cTNrBn^LK5KnP+ML%X`]PF@2\LJ,#^Kd+#//g)H!i"IJ5<3BL%Tna[ER7tTSF$V5=JC':W>?MFA$"hGN--#ZCVk40?+92BAzzz!2YPm&F.cEP?aK@QM/HOY=RcA/mSh@kfP+,J,d2aQE[TtTY.t6"%'sd[^(Y,@]J5Y1D1YJ3]k7ueQ$[kTTl@f;gj]+i5($X&J:d-NEWVuM0g39!K4F?q-r'bBl\PTN2916NZL?0`JPC"UX@t>V50ndY$e.^OHM-PLoq9dulIN(A_2X_;lZ*)5CE7q*I$9^0$]tIZ[;FaWN^gJp@:a=fk_cOW0;""q;K\^S4o>C@]A.mK5A:bnYWrg2!mKQ=>Gu#7mt:WKLL=B"_Wj#+s'r@DW/pi2sKF.c8[;pqdmnC4F9U-Z+tc(pO!p$7,!br:.Jb?q&LnN-Eb?[1N5ksEO28Gt[KnAA#!1H4br-n4!2*Z:.*dA)Kp$Lt]?SpB;aA*2T\0hg]"?$kEl8DVop?mB0a,55k-&ijs0lb"%L6omZ.e9.=K+TY5(05iq=Ed-gU_On54cuSc'gMRC*OrJV:m@sVRSiCR`34`LppJ;Q<^n?c(r7Q[VjnNh?YJ0kUqk]?:p6_e9LkmJ;0][c2e>ZBcX]DL9rV#"%-["q:60YgpgU:"8JX7uS5UbO#pfhoc4SfRN])^1>4.$(u6@=6tDIfWj4nkHp%hB3F*^9W)zzz!'n(_%LBcHp=j#$$lh726\c./CY"`5+Y&a,f7-%6.k=9XBE.u0;TXRu';Q7r_f=neU"Qbbp[6jAhK_SjPol'JO*;\iq=EdGo)AUbMq`.*\r#an++IPL:rn9m^A:H:>bacJ0>@3jd\KJ&^%i'BM/+i@$@1fF8bj@rLt(e70>@q-MUY+sJG2^;=0F6VY]KmI6M\pGhm0lSd=:*-"aIHu$X8]gLsHUaNQb?_f1^S5rQPBDzzz!!&[^+UdqASGg6]f".DPDq/$FbEl$TGd]mKVrH"q)/UIL7(%='4*HKca?O=BXK:j.#j'[@!k$!FocYuJ5Nh78?%?SZ*D?Ju+[/+u2_rkVhKr%_s74>dr`0"!zzz!!&[^i@c=Le*3\!++O2C[u^V6]j>'@7Z@b#)n\]JN?^rR"HIuQ9V+@LWeugsQ7bq&3"]QrUArK-2g=ZCiZd1i,*jFIiICZ1j84fWI4L1iOOXN#TZ*V=M!qLViOfHn,>!rC:1WFPq!O>[]'l=>Gk4:T>OE":]EBbGqU;7#+6Ou=*(#F)b>o,+ua=Upf8?:9AW`2Pp=0#B(6%]BiThZ5q7ZI!7\3"&FnV,bI`/#$)7fN2CO,F4mX&j5hW)8<[*U;7[*tf218ih.^kV;![s85g,Y#qrJ:LJ1F"+s96@ibcpt5Y".DdINis`Poc1LYmdhVH!R*3Rln@&H!zzz!!!#\$ooHkc%?Nj\9@7CWEGnr6K31@Y[MQ:GM[VC.$UmlI.PU1cam;jEhu_S&e]6\nn!:q5BcDGdn`3q1$8N6khR>r@R?51-Fc9)$&%fcS0zzz;#X!W8I=util$[heu[!8acW(3`5G2HHG*Y?DVVa!]!^;[;?N1V-'diO[neJ6E8\P,n`(E<>aUhCk&`XSN#3^&ir-AK(5q;B]C2n!Tu)0F]bbq_U0B@VLkpjq_hQF+3V21FK0BNfr:k:#3=5s$*\=cbF6:[gJ,D$Io]R#?np&QhC"#J,pg:R"e;=mDi,VD>V=XIJGh`Lp9AjCU?FP;pQg_6]"qu6M"o3Z`@AZp`9>&[0'EA+5zzz!2(%IaN1;XV+QFK'rF`s)XOa(@,\tV@VkMIqeiVC!ek.arr(g]p\HQIaNs,L`zzz!8nV=,9u6XhgTqFeQ48#W)0U"276U.lk0'/l#bLW=&4coa,V1V*X`[60>@3Jr7"cM>T)mZzzzzgq'"9F/HfSglLPHCE,BWka?(TC"&qRYQk45jmqNVcT_5B_hJVQ4V.Snzzz!.\8lX]@N"fWa&8B-0-S,hQT-zzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!"Li37=fdL$!9MdZQc!<<*"zzzPTciQd)YTL7h@Bo9*CqriH5%zzz!!"E7&.nC[!MPu[!^Zkezzz!!"&O&Fq1LTpnm\63$uczzz!$2[_ng=I3S'eMW&DFI'caNmNOp(Zkr#5LI!rr<$!#1`,IuD&Ghrb"?z!2+]Ni'2`'&G#"D#D@E2;i^iWh7p:r:fZq#-4\RJDl&Og6CXcH(nql]VNu!D`spVtqK&=4DT"^Z>V?_n/tHPq5?QAf<*A;&b?@/%qYdG`hWn8Z'tj$(n:uQ`#oq+N<`:Dm)&)8TBqCiHmbH#dO4B)O"cSp+B&O]#T`$-_G::sp1^7Yu=&J5Un=iFI)_#M*%J<3!6,Tnoj9RZ'!`F:cIUU5X\#Y>?:8oKRcnH]TI`kNie%GLWmHd]6;'UhF_cGhP/,r9,X3!#U(C$8P25R&[=_M+G>Q,LuhD66AUGR(gI@Q("jN4#lQsb\hgm/N,s\u7eBUaY4>DL!(f2FCq[a"R7BM5\9UfWh<+?R(0Ka3ksKc.N9mb9f(-tOAUQTf,M2(6:8DsRUsAj\;GJ(gg/FqWW,g[$:&e%Tq[m=YXm:eMJSJ%4pE-&#Z:f7mGfAlReNYuoGZ9NDN?+f9d)GY`!?j!W#mfAR&eIAt`0-@8&0bS?8jEXo&J<3Y"G@&Ek*[q(fn1#jgo_WUP`Ud-$`r92G%.@BoJC*-iUH[/cEr]\TWC7>d%/],oeni$0m1OiF]WH`!WA`/Gq9p,6:=5[ng=G]6psEOXosE8CiKW3]!YKcdqpOj[R*u:\f(UtB0!>6ql`52-A\JO`Nult%b65ne?3/MD7)>>c12mW\T$-*-cRQ?s4gkaD!mR#hFEMVRcuDVe$(8R\$u]d],`^WPdihZ]#*$YBI'9en0^'m.T4SK3_[lF_R.jAA:^C,Tqc:,QXU.>lm?KLfffQ&4/c9;$dLO+sLLlPCO2g+sI4m!^]>a=9:g_:"#*@RB.1%pEbD$IVs3G#S+:fWZV"DI^@c05lWMqKm2jDi+?BTr'_X0\p/kJ45a:+I7sVH0SI%,$YN#>ND)BD$(^-3*!]+Cqrg=5jf'E]S8'2n`8(@:clhY$$:T9Wd@9&bEr7)VN:MXKg0U'?r?Op5Q,Yj[[6?`0q5K_GZPId*40D+[e^L8I5YG,*o/1KFe_-Z2@0Y#S@X\K.?tr,(&>NTrih,3:+0f'6Jr.P*I7W?!Af(S@"YXcLHNEhR.CG^ojj-GF$MFS$!Xa,@b.Mk/HrC/=kgf]G&#,#)$eNVgF9p%RN<^/*,E_%69;F>Mpur_QHnnc_%YU]6TAd(R1(rMr'[C5LQrn_WbS9+Y54gE'UAa[[D($?1ph5>jn]8O],TDZh05?9<1HUOUH*^1A-:uX5/2,6)'b?1BmIk_kbp3fQqB9WEqk,SGhDu8\6:=5[ng=G]`*;$X^+IdRp.cX^3O)e`Hs6Nt1jsc/Zsc0(BTr9s-Y7O)g;r\'jlp9$M=T.^*Sd,UVN:&,h#F:FY6,sQ;$''Qp'(Ucl^)6GS[igYI7/Se<4V<9!UAB:EAl[=&K3`%m9M5&I]u;+bamaggR`8bj`^KU\oL3t,@*AI78.ZSJ%@JOD)3ThD0"1nhd,[p+G?S%R1'AOh7%d43ltd=*QV,nXJWZlKmV>4h0geP9KD8E\hc@XFL0qYrMudc-[*]IT=;^@WYeI1jIh2)55YBTi&]9VDgRdA[oFWM/58@$A%2I'^fn;B:gQA5FQo2OM\sGi49#T_ZM9`9&0`WIR1n`CR[I1$noHSRpr:GD]<3J'UD-_XN@qR_7+3WBGmKa,un8%?6!d+=bb7BGJ-D/$HUjM(O.:6)r@n4JHEjM2lDL;DCLP7BF=nD@A.M(c?0Bd2'[tk0?&.oMZr(0-Zn^b,&s0DAg3GheinjU/cD:<)FV[W:N=L1-,Bed5'l?/DgKTq%)I5]9+=sO#H`K?oklMeJ%R/BTUnZ4.bgplEK1T/]l&21C9>nCL"*8-P*j+lQr#pKR@!^]?L7KPnS>%V]3dJ[<%C"&XRhEbaCI_2f5YiE1A@-o?%P0@GOlm8+)+sfb9-T7eBW'.R68?l-.[j3`c0@2.O;ep`Zuckkt*d02ld3e0md,0Imb@QXdHY`p]&!MT#$j(jkqCIQP`f6;,'^.jf=af)D5[oq)6;)9sY-IG(n3Tea%S]tD\S#`A"&<_2;$ESS>kdE'Af;gN\:B#1h$L_/,NMm^BZ8F_OWBjl,h\$Je7)Y7QJ.S$,b,qd]gei4IL^);p\oF?BX;DSt^V8%6U0P&^mHI`TC8H:[6I.iA:ZY1`'jFkbKoI%a+::7564NqnK\TtdYQ#6C;,b1=qQf%]+9SEnkL[5e?#W8srrj0XU8RR@ZJ[MZsMe1o\+-S4]3:)]uAYNXckFY1RfL@iV"NT6(fA%*D,lZHc`!NKBLs%0JCIb)mKVYHqKkY4'8(eJaE&(U)]_jQ^SI63EUHY8j2@\,bY>NDCp!?j"IAMPB-s1k(\Od"n]0+Mn3+/ILtQ\arc-au1-cMR/F5o&t]6<:!/o[M.n71';lkp)J4.!=rT/!g[TE5:J;LBMs,HqQ^1&J7Z6!^^!Ml=/K7RFBNrjL+1=s8;hn!^B\HJ5F.55PNT)pPnY@&#ht3Zi(opWsilI00heD[&7D)8;5sTZ\]6ZL'3/@&J;;G8O*ROQITqrY9iFbI&dYd'E=A\5-Bs-QA9Wf;D65&Wp.Dh9CHr?'(_8NG($6:f4O(5rGnSl+[0\b8uKr!0-K=jF7G4Rm.$aP#pKRB!^]?L#*0TOQ[8*R<04-.P^j;\_D2u?o'iQ@dGffN=NimI4ZE'+W>r$em1Fcdijq3-=?i[q2pk"g?$-F$c"kuPJO4P/gk$#A_[d\^#UmuEWNPC#5%s$!/[2T*/''G*kYf>hU7-hhC*8l>n:&Da2nm2RMse?tu%,Md;u2X"q.Ld@/R:m!%Hj=LD+_EpMd9O$W]6FUm(FuDj7<1b>i7]DTH2(@r&2J".+kC6&(+f3/&0M@[J[iW[i]sW'PcT\02OD(%qdYk#Nf!^Rqrk\Ta+!"J$5Xnq_WXaC\G,LC(rSF8!X6$p!Q^IgPt?+C\.m+B2kX#^P`a!*MUf8lGdX=:!)n5cA/QjQ27%UYYY?Su#=VN$`\*3m#([HI\k*3eb(g+F;Vj7lEtnpI%Gdc:H0d=[\s-[o*@mS3^elgYUi&b%L+8/4H:G*$8"G@IC/@p;#K('7s;sf2J#=Zp22DdKQQMrMJgCe/L+Q-HtK*S5Ub7K1ag5R]R8"5aNcfQ.qLuHTW\YG#"8S[7@&JNbpWT9/;.Rr+>bt?KZ.C"n%n[;a]ddp.1RUBUIj:3Om)c1F1W3DO'aDE49%h`TYJOLgnIQdZ!75?\&u<`5%6'RF84[H""&g%aW9u*^*#Tb+G>Q,,q/j'IXRqHpOPFXTfXJd6sLG'Bm)8(H@4X$!Z-qi:RU6Gb(A]Qi>i[fq1Gn5bX$&0e]Tgp_uZ/qu'.FO-aiRM;lrP[E/nIfHei`[Tc-3[?Pthn,`WD^ChuG&8)g[7/$^P^j>)/ZZdVUQ>4L^.mn_K.HZ%DLm")bN3f"j)OX,lHmi9ha^X%7sVS."%#?'g#Ghcfl1c"F;l>F,ZHFc,5OtPkp)dQLumLQ%1%)lWA'g3ii.c%2*m:T*/HJD3c=Xo[+PH)?>g,=p@,P6K_CsR?4sV8(jk:UNl;t#iW>rQ!5lYP\XeM_A*OqnAhL0%e.D>aaC-NpopC\%S;DW;[b9q&VW*AGYbT6(5W_P0^]PH)BhN&@5+=%A2>PJ(T+&Qomm3k4bkejkNIJ2'8K"`RV.nDo2&`$G^)_-:M/]egR$1ZU=,cBIa[;Bcpl'dh;Gp+0:'$ZSR:7JZP`gK#nc^")`/tBB9FZ,4O3H^/(Q5T9@L`%L^CK/q8+Q?*I!?oBc2g8ZSB!dF6PT(it?@t1EGj(&5pam.DC?]V[Sl/!saKIQ$BpRSIm(&;AO19B`>A4X4]`V1!a8AYVHYK2j+nI'A+nm9?IlDWW_tjPE.10n^nq&,J=lB:0/6[5o0Wl[k1?:Qg[^B."8JV2()=k*nt`LlDk*?/!7L5TiJ1<$+_9E(c%@c$hm;3a'+B;oIj024j:3T62P@YApT*:_QJ]4.Y`52?<-*dS$DCt:,+0hra`>IQkF5KPpq1[&V+LdA:j"%)0G=UrK?QHma\=Ie2O.GUuBm>-5V+h]Wl2bPep\Zf]cjd:VaTtN6KRp7HX/Vj)B&/Y:4GY#r<[IM<=TjN:MN>m9$Ak/D]VGA23l.](g.DNt/4Wl"N5Rc3!#t(kbMjX:l6#&,EpVO1Dl2b0i?(.UJAJ_apq/du$<>O`L)2KOZ>'rd[,"dk)m\o$7#7Yr(eoUd2X\ke6n`,CY-\'bKtI.(A#E''c;hscdfrj6IlG@F8d"GF"h,p7l;U\H4hqenU`@I(+'Q>1nb?gl/KSsC>!+9/lA9D;V6gO39RXDM83ne91bMl2Rfr_[P[GP0j;T4n8l/%]Hk:)kDm]**cud9Vf`OO1./)ij8VmbQ+cs)B][55(>M@6^[^Dj@_QQ$DTZ_.:4lh#]pbI@?)N;Sq.5]L[.C(uI9#<"J`:IH6%&r&s/foJ+%t!*%F&GuqNu1$5ZhT2UhFlMeK,9cqtKWQ,P+j%L?C7PV/tb.tI;HLBN3I9[jk'(d7li[lb`+iISfnY^GOlk\W\_rOC'ck;f%2)LF=D@SHEnQ1bnZs(^4if?$!^clkXh8U%^Wh@X8jE[*XosE^>W\]fr@4'_2Z*-c#AR:hp"rDgY(J.\aVdfJW!,7io23M:siDqWidAm\rC_e%;>N^U*mpG?19]rI)5i@S?$e<@Z67q!Z!O')$&0ennD;^&7MN&)VkLm94^MRe2;55.'AMM3jgDRM#D]T2.]KkWQKoc]`A0r`amFnmCh"j)6S7:p"K/Q=%9Mb+kh]rPB6BMVf?:Dl#NRI+>hShr08IH<$3BnnbE5CYo'.a3TYe&J2fgP^j;h@Ym]B#SGnc%L?4d&l!#"-hV6@0H%6uB$9;XrI8kAD`>VUgopi3ZXnpMQ1ec.]a$PZZCtm$Sc=Q<$$5b3<;bT*h5@@YAOLUO%/d\K#Kh3%LSc%_$#-NPAY6pqHd`>B0?\10REmuV^R3HiapTAe>.V8?ZeSNld>32^[bjkM;r!9M)]9fZ7T;qg!(F0kMVEMeDi]cDndMGZf9\C0s+?B_nT'4^Cae9*i7>j$4k8itcu/QXU>EqIn^KmL?o+OB&sEHD%4hZo?j)"`??]48b.@`>-^<+qKfUl/8BWi^cLCU1Y..m:a3As7;geP)30\!//mR?NqSH(glS^LS1%*-,O"!sF:qg.M5SM%@Car?c*e:&Npu+0KTCEoem37Li7Alu?#$&eOWs3J24_l;A38,TqbO*&[AEYXcktO-pKeq4f:V8njn>F(HYZU(g"dh@Mj=kQDoISW;CKW#^N8.JlA2>P>?X\/T=jookYo7&rKs57X'Vq!iC,s6Qq1nc=06J9icb(_mm9>j6r!L2;6V:b!Xs#;Y`GhaY./PMCSqR3hG.F-pl&lX5R<9F!^_^!,q8p=7!.$*+I(ZbV:01A!]0Zn)m"o2\YX3B6AH^3WTT>!IZ>8gbra`KqL?a?-M5K(3gGm6MVTm39^,rk55&RQ491kgmtEDRHNW4%tCi^+JDpZM-f2gE0!5`oHr[\ps26H$it#H>6l5d!q^E\#]^c&.oL/\/&.2.'uRW-H!Q-bE\kt_uuWUG&Rsn$Di)"[b$"@j8+1G/Chi6uO=I]CI,c)!c63@HU_2n!Ft(o"*Y;L3bI*7jFlm@l9JU1_:a?aZna0PYIB\4/j;3S1Ll!rO^/Zer4)0NE,6WZR#SI]cEig%73T5.?=/5dXp[5)i*V*/0(d9#eG/ipfCOFIgPQXZOOGIEtcXJ<8+9rU[-]^AZZiEr!8rbm4S`nOc%P&[=_M+G>R=8c^*[Z5LgSY`(SPbSSSbbf8/K*CNomd*AdR9mE&+A_2Yp[8J+]='V-<*]M(\P09&92g*jAg(cCG5NU@qD/7B4:>9o+X"qZOYoqm(+eS^[:Vh/@KJiGn[1Y3*X\-3;T%m,a^c!8*9cMJ[/hn@"/QOOg5>]:&4,n;.lT-st%o>HgLFWkAGtk`sQ)*6-/+#!3+P(f&ppD,kAkm@mOh/!2E[6t76/9`l^XD]NBoDj2cc')um<.Mmg]Kn!=t5I8a3luNS5Rk/3Eigrc4gGjN!+f[[o]RDp+n'J?0#"VPpI23XGjf<9BWlYqLpC\jb8!2/^qn(s"W>pYj1@oVV(f\Y*,AnI%2r-+is6_n"3,fA?eIB_l$Ndq/(f\$_+J,J/l2/`04J=kst._god6D^]C,/_]-tfD7SH9^N7pTPm@Y(0hO\:&[=_M+G>R=8c^).njRUd]^`pkXJe!*"5Cu+VDC^O8+q`Heb!:\:1rk=c;M4!J<85lFYC"2-o*_6EF!6X=khM6=*6B9']>t+C6hAG!VkGcaRb3B5Q,q)_4IV``ZJ*5LWN^4'=.@#-!i`Db[\@r6)9Ks,VqA2[HfW$rW>U%AL/IPLkpl'[C?9)#@^F(9ZQtX(>8=ZRne;^Ca1Q%s/KD==Kb`Z:V.p#]Z^2-\cP2I8N->"KJOtk3[!Ltf8q]VU/a6KbWR)u.IT[2e0Nepbn\oXa84o3:Y50G/-LX;[T$KmD\[ondJ@%3J9T*`[aa6g4psu2DH-r\=enXgLbO2.:n*\p7[WtBS2T0cdrV?=4IIOCS<@]*bUJZPuggEAq_!pE5OJME"KWp(?(8h:gY\^mpmf*pN2D88$NP)<:HU`)g&44>$of-F)6e0DC::iZ#5V(m:K;Puqjmk_AKIj*hZX^JS=#kqABRNQBf!s>na:!YY41,jQ+`$#2jI%AU=WP5.K2epLa=VR+[e^d%'IP^&F.rgFXYnJlOOAe2?K=&>2-H]U5N70AF>[UV_e)1jpHV"i]8[1k.W("P_A:a=&l2LOMcP7oW\F&<-EWVr+VRi]E1EP]":]QgU59K)Rr:K!ZUc^:hZ'b@g>^hXhB3sQ$[ek:o3"1S2g/Pm<[h6JNO!#i`XZRna($U]/(fd(XH64^+hl<8==@ZN\D-(oliB9_n)g0[NUOaDS15NGL**4!?lqV&i2JiAr0'=G;$UMlgt?pB*1@h5c>B5F=^=k=QRUQ*nRMh7[kFli/X^/90`d+[8J\jrnrj5>?b@rMbho?rn1Ytot3R4hib.]*s!2/2>:0V]^I?,Se2tGKFm["!saKaa)#HhfmC0i3h7.0`lR6ZZUTkNP.H,rQNW-(AFGPcBetp`2j2;u'Dm]#PuE/?r03!);&j#e^p[]C\oiLI[k(oPaEn9j?(4RO:PpU5:LAFO^OVDl_'HRf*GCc3uhlOg`o1SDHjSL5BVp.G.91#ZM!hr=#e6-\SuAPg5t@IZ,I8/5rW;DG/MJh%&LX]HWU6$$4'cc:.;1"mM)3G4k1lc+mit(&J,Sp+#Af[`FoW#2$nRoB\bGW=SCkJZfIn"j>4H7c-+8\4%'1U[UM,48g^(=11-)mODs6[Cp?fP(@.lZe&Lc1g2,%h@;;EQ$kNuUR%5T7RqI]3M=DDlcBq/S:/-43cP5]XFDf[jO]q8uaiS_9T5GDY#m^^=rdcpfRsCJM\`rXd+!"H&H>7)E+nJZn2XjWJKM"Q)5gG/^f>M?#.n*495X6`)#matMG"07C+X%RAXEj^'?h(J.=,TP\*?1BAG?0`!D^.niW;-IM2#AR<>n?#3IO)-M`hhRpb;(FdeJ+,sn.Ybmcpf:X4mV)@]U\B0+_:/B1i\)ErDKRb_8Qa`YgSTFJE5D949*,MTBk,>5CK,*=pErB)`#eB*2W@j@6jF/\_MA0Ru+nbbiWp.F.X(GS!/uTs`q!:L3@a)"$e?578RPd^]aC-j$%djo#+"6,#.fgg3ZDmSaIDt;B'G+/;*b8$%G<_K0&^.#i&eNd*0kY^ed9ReGSs=H`\@G7R`IKS@aL+#UO-gHuR9'6Jea97bGohIs;UsnefdDiLNuful=ICaZm'D.dG1B^OXn=/IBd>u&^(=#sKl:qpM`FT\3kfbH?43)&@RJj'Wi5\Th"]uM:*BB-1lSjj5imu0#l5&NOqCKrnZ9?p?SM)3DIU@[S`p@#R[HVLD6=E\O;%.BD=mu;>!N=-sd]rskso;6+PS!t]b&O0"[3dEZX0k'>f>7L,CbbG'[8Y5B&I0g/_[T<%E*bSq`-k\FN,gJr@Dgil[h]p//Ng^QT8UW.%?JoF&*8Vh#qeGI1EW,Ufjl2EcG:dcPYY&o/bNW:u?\.MoP5uj$j1XN(:sEi5`Mu*A1WSOl.ZmZJR_KKI3,k6Tr"/2^>:s*j2j;Q@]-f)fDgRd5&i8-d4Q8X]Qoh`OGOOqD4\PAUN0TP/KWn^nIf/C/HKVPsb8PS@q!*@o4oWos0?#S_,1h_CKOA6TBG3:kunS^Le%GbruFfuI5-'%f0]/=[Z1D/"I?^jVqBZ3'jFkb-&37b0D0:/d1?)EmG/]p&Af'FJ.Np9Rm+!93?^S'=;QGr;LWI-IT80_0D?krboC:S*,@Tb;SR::lZU9ee!X_6%<;sG;D7hD8ga_qAo1a^3doM&@_[**9R5Ne^e]6i0k*QEhC-k;,<9bueVg:Mp%Z@91\\Y:$f&M;'SK&k)J`F!2B:Ia4EXaJo4Rp`T)Q_Yr?Yk*n=R\+@Rss9Bu>B0qG.dp1a"*GSbq8li`h2tpKsaTl!o(PC9N+Ub.oomM>^?X[81lP#R0G=4!9dC]:!,Uht0c/g^E_%YP@B,#+n)^\%f*gM/E?fjM!4apFGdqk?@oao)YuE)<,s7dYX'd:UQ7Ed9=ddVX.f=o`\ikPkOWjk_4X9L]'WL-H245AiBSMi&[iBl?mpKa]*?,JLmYN@@qi<"?Lf:GANhABsVnF]i4@drodK#LV"nLP>Wg2f]%[nVD\oJ,%TieZ2]!rV?=4XEf/Nci5J3.+c#WCJkZr5CMGV[oFI]qQB`%!?j!k#m_\`TiB@1kd9*Xs/,,u2o%$HL_pg4#U'CR`Phb!S_Br<=V;Af3I9NX"c7N(?)o_LI-3F9`!`D0DYiRgd]N?)):?lqP`Rr%PLPHTO&rqVHd>`>VH/q>5AIP!DNeG$hm$&.>#R*/opIfFG<.k:dOM.(.EHkT>9(X&0f:[%dD'G9E1\X'FcmEIh4C0O8\OKUE-J)lo'tMld*K>p?^Z>iG.l1KiKSZ),_sL7>r>i8HZK.YS9CBJdH$sM&eJtm#mcM/TO'H2dr*L&^pg*PGi59@[klbUG6i)3jR/FkO4FKFuZ$j-n&VIpsc)Q>-%JukZMrh'/(GkN\d`FDhTu+pVZrF4N9)6nko.&k^&lW,C6<&F^!-.bpp:c8=N)FhmGK.K.1RK&4.p`&eIApjmZk3@/,P]d+-9^%i/F=JXK8p"W\`]NR2`PhbYVn+fB*8MuGH64m(d@knB-Y)R(=)UtbW,'<;fI[S#:3-B,!l%fa(D9`Z2=mXS[B!n$9SVWB/\L6jF^dJI?eQr+0tshAZ*Q,Hd46@#mp5al9_Q263UER!Z,*G2Ok]3Q0,2l,lM4r:57*.TZ35jS`#.NqR?u4@.dVcjKPj6c#aN,@:2XF8\F@\p4o([M*QWlssMNMm^qVk`:O*HL?;6q,2)BkB`a]OTmTa7.le"jYoY&,*1Bf+fMX?SlAS]6lI!.s=>_6APeg;U>)%I-]2JNScG.Fq"4T$DmJ'AVd00!?j";+27d#0&ODjhmW=XYAtgX\9?Y?ik'kcd+F<_KG)ioQOXK=->mM-DMgu?S]**cuZ%-Rjc8(qRSe\pk^hF^rXPS_m+_#C:+G:S:c'Qc<*86\-]obgq^OT/'^c(H;qC'8!F;l"-1:MNjm78t!j?CiMB(ddXG4f*[@6/VLE+G#7SiWZGme$T(T,kKjF2YO+A,IL\I<+eR::jd=1'N-12>-OJO`tYUe#Kcjk'>9Dl6L47=1Q7gBXdfsR7(B_+eS5GG@a1m[1sP4fp+)q&%aSH[8J+F71]5K]BZBj6f"05#Jp]]fNPiiu3,@mF^o.mro?T_IAj^&0`;BQ9PZ]+U2#epqBd?Wl'p84MG17C:5+4nI>i$$uB^nGfFGP>>d)A'2D\/08g%VrE:QEg7ZcXTuc$!`-%bRASth'Xf?/(Vqi['KE?8ZT$.d0A8POt?0>9V2$)QLcdWln%k5E6A1`WEfmBI+=2:*[EB9qEJL!$1/[an#'>9GDoCK,4uRQaEX3d#-!TRR@]DfH'h("knWKLYZ::E6D)lO6SNu-(T-2;-Q`scc9$69L.h5_],[Pa+MdGf;gMmWKVtK>h:5DKSYF1.01SCFpf?&Wa;guXC(uRO^Bs7-@,\>C)O+>h3#AY8mLt>k6JoCWbg;&eMnmQ%0Di+sN=;#m_]?"]L2"eh!5(^3%qtV3R2qh>ne;iE4JMWE3ToeogOb!C@^k7rTr/sG]76ljjf8@1He`7!k`odroksafpK.-JnK`&NWCl90UUpA//ht:f[)Rh!3T5&L;XO1$;W5`/N@S!;+WuH7,68rU6prSU&eIAOY'*hW-un,KT=!=NZKn9(-WitBpe&\BhRWd_-`(_Q@KMNa."4pjNPkK=:AJ1n+uVE`jNsI=Z4G:46DC"#GPk%2e3uYX';+H-E(*K;tmC9s*=7DYLVC]3Wd?f^\ESD9O4=rT+YC#oX]5FZQM1?/'NWb"H&J;;G8O*P9\6@>op"S)2bSdI=(h#D0a0+#cad1F"ST5a2bY:`qiF1uGH\mp0a;#2K6*kB^BUQOeg1dtU(*F`a19dmuOCO56Uma/5]5k>cT..@:!^ZoKFAM%p$ts4uc8;(TShXl:B'D-,6K,&O+/W=$gQHYE]Z>F'Ua*mt^pL0)Ld?pD*@>:]i!tSI%L("DODu>9:`](>aT]C8`">RmUM?[]m[?a4:h"J5mjIlKFea#,UFRd`NJu(/bn]to'Q5?s(M.D*VjmYr'p.inSlLV2WEF/(HShAqk(Y'eGh^YDHbp.(Cp7Cr\QNNn3TPCqU2c\9C)#*htZZP:P]7piuYVb7Siomq.G3UW8?PT)npW1a'VNU0Tq6E-/;R`.>"lX&?gga]5@/UC;of:$5=;GA_GdFDI[X3D21bSiWAZ\O&>0Kb+?0dgA`V#="Y2jkg*\aSAm6+YM8D9"CUt08HU7]UFXP%p?g*M&Bf^1&?dGS7n5>,l@-=XGEs-TDBmh*[jM5-]4/!eGn&dm@,fcV>[T;EdPd5>hu++K?qSELmbJf.W:4.qK]@Y2ncFe\i^"/]#;c/(7!^\7DZ!"oj[6:aA?!'[a\O3\>T\7F*E-QWfp?p#_XKSYF1.01S[`"J>c&0`;BQ9PZ]+lY(blB"imb`OfC9##._cj,2ZOp$GqljX/PQHd[seiS2eGFdns>QLOiD6BE>QDJZ(>bLO"0H_Y-eQ+,6c^h@$m(!KJHk/Jel+H[SXJniKcgnn817ZYFM*kQ?UsLIQC6^r.;bl7@cC_P85%4!UU4/fYd0%pn_tD3ZX]D?Ad$VRuOM=j"OFRlX639IWYg]Ql;SO:WNq\B&s<>Wta`Ngar[[o^#8P-4E;>nplm?KLfffQ&4/c9;$dLO+sLLlPCO2g+sI4m!^]?L7KPoIS%:N+OhH"b.Vb75[eO>r;E?`R&6cDBY>np;#_b0.\(e%hKY"Tg,[\!;#3,08rB4NHiSYap$R7D[T!r=r*)^lK3.7=JDU7_!;0h0*q92FVXb",,;5N#W[i<"B5IB#fRWZe8SkM+ZPh%SQd&630R;:BEjb#RLdmlk0jr7)Y7QJ.No6M+U#=&J5VuT*0fY&J6b-&eHOu2gE9.]>\g/R(n0ur2Hj!Y#g67@g8shh\@)IaOE9IFAO$=1PnX"D8Oc.NC(AI+0#r:KTFVT\"QOE2&Z,Dd0?L)GNM;!^5qX5C<4P>FDl<(lm?KLfffQ&4/c9;$dLO+sLLlPCO2g+sI4m!^]>aJ,u@K@Hr\:26kO5Z'`sj@f8VV6T>5U#VDX=,sV)7??t/8WL45dY&pgLpJqW$])C8IPKttZ-J>hEbaCI_2f5YiE1A@-o=DV]eh1s]T<`PKpPjV!4jp6\;PgUq,hWsWaIFtk[sOTQj!rY?2m(@`)Ot9*UA`pcUXeAJbqC1RGZ6jQ+G>H1JC)On!?jj!/4g-R+X35N"G@/0mWbo;Z)7=qY9]-_oZDuL2OlmEhS.YsW.ul%Qs$fbfg^8XLj@[d/GYFeI59*=ZMZmkj#r.bXV<9%kf$ee+#6?hbo+ksj^-]NP:PQ:ja7F+Lm[YbV>:j\bt%Js(7Pkn@gpB+(I&'fe:>-r6IAZGaJOeg#!^]up#mfAR&eIAt`0-@8&0bS?8jEXo&J<3Y"G@3b#1<4*QS-DU7_-3WFJ%cm9ffKogi3bq9#?6prRt#m_[uQDaq>&.oMZr(0-Z&J5V-.fl=f90c$-W4Qg@33=OF^142ek^t=?"GEuj&eMY-,p7ksLa=JN+[j6]Q%0Di+sN=;#m_[u,%>L;+B2kX#RQjBb;s^m'"&m\CCizzz!5J[<6N/5QF>HNS#QOi)zzz^]Q#.o^R:Wd6k/iYJ&:Dkek2&qa[M!WW3#zzzzzzzzzzzzzzzzzzzzzzzzz!.^Q.rs.1oL#;~>endstream +endobj +45 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceGray /Decode [ 0 1 ] /Filter [ /ASCII85Decode /FlateDecode ] /Height 101 /Length 682 + /Subtype /Image /Type /XObject /Width 3083 +>> +stream +Gb"0Q0`_7S#_9/Y<@k+(4P1;9Z3pX4oZVLZ!!)N)$31&kOqdrsJ0ZWF!!#Sk!!!"^X8i5#,Zt-J!(aBs!!&*k"TSNFaU/"J5`ui^!.Z=F!!!!jendstream +endobj +46 0 obj +<< +/Contents 144 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.bb628729698bfa2787467d6784c61ce9 44 0 R +>> >> /Rotate 0 /Trans << >> /Type /Page >> endobj -45 0 obj -<< -/A << -/S /URI /Type /Action /URI (https://undefect.com/moad-cheat-sheet/) ->> /Border [ 0 0 0 ] /Rect [ 505.5536 464.2236 538.0932 476.2236 ] /Subtype /Link /Type /Annot ->> -endobj -46 0 obj -<< -/A << -/S /URI /Type /Action /URI (https://undefect.com/moad-cheat-sheet/) ->> /Border [ 0 0 0 ] /Rect [ 57.02362 452.2236 115.9985 464.2236 ] /Subtype /Link /Type /Annot ->> -endobj 47 0 obj << -/Annots [ 45 0 R 46 0 R ] /Contents 138 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 - /Trans << - ->> /Type /Page ->> -endobj -48 0 obj -<< -/Contents 139 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 145 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -411,23 +402,23 @@ endobj /Type /Page >> endobj +48 0 obj +<< +/A << +/S /URI /Type /Action /URI (https://undefect.com/moad-cheat-sheet/) +>> /Border [ 0 0 0 ] /Rect [ 505.5536 384.2236 538.0932 396.2236 ] /Subtype /Link /Type /Annot +>> +endobj 49 0 obj << /A << -/S /URI /Type /Action /URI (mailto:russell@unturf) ->> /Border [ 0 0 0 ] /Rect [ 134.8436 216.6236 202.0657 228.6236 ] /Subtype /Link /Type /Annot +/S /URI /Type /Action /URI (https://undefect.com/moad-cheat-sheet/) +>> /Border [ 0 0 0 ] /Rect [ 57.02362 372.2236 115.9985 384.2236 ] /Subtype /Link /Type /Annot >> endobj 50 0 obj << -/A << -/S /URI /Type /Action /URI (https://undefect.com/public/stress-on-our-shared-heart/) ->> /Border [ 0 0 0 ] /Rect [ 247.8136 216.6236 385.3838 228.6236 ] /Subtype /Link /Type /Annot ->> -endobj -51 0 obj -<< -/Annots [ 49 0 R 50 0 R ] /Contents 140 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Annots [ 48 0 R 49 0 R ] /Contents 146 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -435,23 +426,33 @@ endobj >> /Type /Page >> endobj +51 0 obj +<< +/Contents 147 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj 52 0 obj << /A << -/S /URI /Type /Action /URI (https://undefect.com/public/stress-on-our-shared-heart/) ->> /Border [ 0 0 0 ] /Rect [ 293.562 363.0236 417.502 375.0236 ] /Subtype /Link /Type /Annot +/S /URI /Type /Action /URI (mailto:russell@unturf) +>> /Border [ 0 0 0 ] /Rect [ 134.8436 156.6236 202.0657 168.6236 ] /Subtype /Link /Type /Annot >> endobj 53 0 obj << /A << -/S /URI /Type /Action /URI (mailto:russell@unturf) ->> /Border [ 0 0 0 ] /Rect [ 423.062 363.0236 487.672 375.0236 ] /Subtype /Link /Type /Annot +/S /URI /Type /Action /URI (https://undefect.com/public/stress-on-our-shared-heart/) +>> /Border [ 0 0 0 ] /Rect [ 247.8136 156.6236 385.3838 168.6236 ] /Subtype /Link /Type /Annot >> endobj 54 0 obj << -/Annots [ 52 0 R 53 0 R ] /Contents 141 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Annots [ 52 0 R 53 0 R ] /Contents 148 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -461,13 +462,37 @@ endobj endobj 55 0 obj << -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 523 /Length 58769 /SMask 56 0 R +/A << +/S /URI /Type /Action /URI (https://undefect.com/public/stress-on-our-shared-heart/) +>> /Border [ 0 0 0 ] /Rect [ 293.562 297.0236 417.502 309.0236 ] /Subtype /Link /Type /Annot +>> +endobj +56 0 obj +<< +/A << +/S /URI /Type /Action /URI (mailto:russell@unturf) +>> /Border [ 0 0 0 ] /Rect [ 423.062 297.0236 487.672 309.0236 ] /Subtype /Link /Type /Annot +>> +endobj +57 0 obj +<< +/Annots [ 55 0 R 56 0 R ] /Contents 149 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 + /Trans << + +>> /Type /Page +>> +endobj +58 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 523 /Length 58769 /SMask 59 0 R /Subtype /Image /Type /XObject /Width 535 >> stream Gb"-6G?bhRd.iTHHKKV;S9*7;?q-4+'=2>sQuc%9W4VOEt5+"MMd4I@K6]a#T+0$[iX^XpGYnBb\U(!cg3:0pQ,3AlqHU,Y3N0mqXMIRQ%XgD\@B&qcqo4As7>F"n(kU"eZ)VJVG-7+Y@$VHXm=Q?>IJA$]Qs*\aH.Qjo&Os2nAfY8dcJQ4UN#2/jiWjh?+]f;J,Rok6O.7:kHSO;cCI%@h7@_M*Zc\(S@F%HH=1.=X&lK6@q4QZj"4PT!s8W-"*K"fo]c2Ck8,dXgot5)^juTga]Q&l@?W$4/A#5MP9NGQp?gVH]"6b3HhYF5&!h*%!s8XX?O3$ADr8:BCtZ,J[;/um2;gj1CtW&u>cqGK%Vh6)>M$YU'>Aqo)B0V7*Zc@:']eH?GPUgk'.6P"H[C*aGdtAtDr/-Pe##k/?T0pQSND%AH$LDjEoc#dF7<'%qtiU+q@m7pM2;6b*ood`=2hs%q>C'[c'pY)cCC:M:EE/)q:a8i5m-nfi,c5HP8b@cnEnu>[r:0\\T>g?drX6MBhhDu>(!X[$Pmi+FRKQ.?5JFi'VX)6V"eZ;o;q]N7pRPejbdMdLrQL4kX"!t[2rsie\ace)":7PFtFD8pI2(;J$CtlDc\om=(joirJdVWK%0qLLQZ=(M#e>ZBQ&#u^6ZT:'*$lqBNfs519p[5_6iPOE_GCtO#6#LuBmbNX/+$`+e84W_$q>3t+`=W"M5J^#'c[_Mf$IQnT+62A?U8+J.,9oQB6D19MDM-AcqXeJ5^"0Ao5CND#^4#l:CtLFCY$C>T#9_:cn)%?L0+877H2[U4JHH/VrV'YOK3ULLGON7qs8LBl:upq#8;,IiG4p4`"ac[qm-Da>"MP>98k0,RR\-sq6oB4Gd/mXnl9,?g]e:R>Zfb6P:O<-"0M?]T%\T-fXSU'hhj4i$Q!^-TL#JNSV@Oj12514))GmKRl>9%Jd!8X_LLaoSNCoT9G\M3OX!BildlYhS0gt!<2rnHB?m"uRECe*c'gMo+Bl?^%9U/^k>(3cSQ5?3ZY%I*m+Ck#l-lhC^KS5Dgk^cB!0%qt7bA!E:7\\4OUZaS*^+i![;/iD+)1<,aZFV.!!:KcM\i!KHPRD6a*tDirVLg6j<:M,YcrY.J90o!\[f8e9%:M!F%3PC(,)%N\?qNPDL`_@B@!0.))Dp!El!>2=0,L)KA!]_%18b>5d>([]!^3LWDf]iE,`%XbA33(J[r@3j2Q`oC"94`=05Y;WI%EtM2ZA^eZ)&?C_J6rVHgZP-*0r>(Z%ClDr/-p4aT(q\&(8%0j7]'7oujl].eLCQR$O%1NJ@K&e-s1M2TLYHJZN6I8u3USE6bI$QEm?FOfX_Dqk":n[rl6rmD7K9n5u%NIHiU_Cq9.HB[WBpe)^q"Z(<]m@(aV+Sl^G5hDb9:+-NM#`b&S2kZ7I\bGi9mcNrOYmuY&G#5C[hg](m,#FfA]pB-CPeV=EH`H]#c[YWQQ)2Ys"+3fshU\l;n*f_K`NA`9[r,3K>Zmcbg9bQ-)&^OZ?\;^C1M=u]J"aQ&pV(_3Nih1VLBRi^^nj\jOr3.ZXB>#ZfsA+nA_SLV,_X,4W-\.%+A:JKXh$/m^4)7.d+HsDD-,!C5Kp?dYJ,L#k>Za97e-Vs@`'$)+')Dl-a]_U-\>N,Tb$t\>0H[#8Si>+"KR'!%;:J6t(!s]l1H8I`HS:--I'YM,m's]>jXOtFG%iKFCpncWWICm@Pg:MQI;R1t?"-ued.*Z(;?F"*5P$C\_MN8iD/m,?nm*n(Anmmg_oI1EshE?5Z`61ukI!I-?YHKVFkJF>`pmq6P)d:RNuW3#OP,95nih`JPDl7M3_u^V]Pm&.fE"Vb\DrY8Fu;_hj$^,UOjaG^,UH7AiqR*ZZ9':Q]*rA#E(mC:6YuL("qhNZEkp>^gHU&YN'.PNUk42M>[:VY6-5'NUYiY*CICPn9.hoRqtp8+V\DBJ]Y2!WUe%3KM&ed-=JOZ$*C<+\c(5EPDVb0.M\l5Sa6]dV/TUOLT(Jr#h=2%j%fU[Alia.],VH]Y%?=Y"W;6,-2IcJ.p'H0nH'E]9q+&kX&kA[?!%OnFj^Y)!ORA^m\s*\\o[%pG.At&J5V(IX[s&bCppf5%0qc2k=):4+jA%0)'DJar.o5ESeH[06u;=%-,1Z&$fIrCI?_`q"!OigpqJT?;I%K/^3;5IWG>ZmJd(]PJ";@h)^_mr9qE#Z=hKY;(?-(9q'#Qd0:k$\8\-\iPH:,)//4@Y3K&k?>XjYoA.$&,kngNSBdZeC[)B87('=3bKApqmbBhiZF2cr?b`c!=YO=<062Zk72PXC;@FEu"PL20p?\3ajtf?Pc3r`*QA^`VS9dY>R$$)X]i-\1jqhODr+18;t)fj-.nq\$bci=[`.RaYJnN633[StE_7)_(8ep(d"IuRH^[sH5(*-U*(C=cX&mWncVJE<`5KT=H@!HV,?Z(N,8(%(8oEFo5n`f^%*W"u4d9;0aG^$_InB>>N!.LZkPYP_VeFJPauq_6rd7$k3$_,^OsNcZCP@VmXG&m!E&I+8X]oOIe.Y0F%fp:cEokG8-C?5\-:2,oM.(Q8lb\>`*4&Re,0GVfV+Z%#gpqn4qLo:n:6mH!g#o\ScOO+YI&+rP0*a3QVVg=i?r]Bp*^"[DU-o;225jnj?m&r0_*A/q.>pC(i*PF%RlIC1!\(ijG*fZ>63QkFb@dXfmO%o7Uc$b9\[!m`Nf_Be5iW5\@B&qF]Lgq!_aDNao6&+^G&S82"Em2r57,')^[BN`WF;P2fHX&_WLoi%[n*]jjgD5NugHqH1Ro;9Z4uloCAjjl0R-3MgHl,OH:%#%`Ahpi#?>!jR`!U]4)snb$OZP6g9MC[l]+&M8Q^=&ECD$?In:1dRNZL>5q;R\l>Nfh"2'aP>EbsC45q^j>Vb^5=CI4]:GkE(u4onmZ'"q(/#po#4u0V>D7"$qrfFEGIMR5&3+.W7`uM;eGP4*9\ZXLnc@"K8Gq%Y3D(??$s=Wt6COZD;=8I/*3)If9*MD6(WT]Pugr%7\26_;!_6Ha0[[O^aRJCXf96Ea_/'M`/EB$FMeC=P4Zg;&625C^E$fmjWkZV*#smbEptH-Md8/1FdZ0UrjF'Js^_R-qUYR?oR6C,6"l+!=C"0=KC4h]o`GO>mW)s1mGX-Si;Nuj^PKpgWMh4<.UF^ST"Q_\"Ca2Q#OKn[>moB".3ad_5#GOO*lhC)6q"CpC*/>ZeB@nbYbH2d`P6@6R7eL9i8XA/W)?UV54c&@I`'M*P;03,$:V9AN^K&"/D=0E[3A5->lB$;)rG=(&rGAf'F%miu_J]Po'3Nr>/VG6)JF__#4O?uV.gUE5F7UNoZNK0#/%M"6^!i.9.(l0_.pO2i+JQLf[&YP1sc^l`AT";lr2F,?O1T.`-G4+/-Qlpd/p$:3oF660EE'4$no4PVERM#8GNhDLX)ho]:9UWboqA/8Q_hSS9W7LtWM#Er0I>Wi:#RC]d+hDsjk(sa![VXX&@)7FuFKmS>"Yg%c3]oP&eu`0Rp[;IpABBoV6iQoET8F@6k0BMZD;)@KnSkL-WNp*Y#,6I>7ZD`floBLjFE_s'$PtDu"U0HdDRKJscCR0Lf9dU#*gSG7Y7#fGc/7F9dY4tZ,^3VK0cP^qKXeNOPGpbJbREk&>8CcjKHeE=p[6kFkXl1I>NaF&+KE7eFR%@)OO"Z%2:YU#8p3cVk6CII(PBnDT"iQS"[j+&P!&!VMj)PjQ_b2mqj;$=$kBWLF'UWN`T\QrHS8)C;;:C;I[brp/_/#&B*6:(e0P&jW*14*I]G_.Lu_WD@dJ'L9mL";i_HoE;O>_0]0uD!\cXn"QSPiP4m^n/(j]YCk#IrVC6uD.^kNTi%RS,=ddL\8gQne#+9MGjsk?)n";'TVcbqLlL,(77Kbh[937qjXF_M(aN7jB%[/8-gI$`+c'pX&7&,nk99P7@N#=E0DVTL7q!k"RgqS?2:-FBk%I'hgf[qTSYTQUXe#,th3BMt6=`.Tik3e9q#A)2N=gBZfC=OMMZ\+q,j\tQ:3QK1\qtTrF*^*]%P&nRX_#Y>#!s]=k\T8#,46St%q$m=4')=eZI.lopYHP.=[l8][X]r88Fnf(35_4\$+)9+:T*Jh`OZpK_.M7Ip'k,MF^rqbq6IRF*aE-?CgHM"-c"(mb_A,RRUC5+AX^+@CX:S'\jcj@8bE_DraFX1a2Df8G73WnLpNV]JmkK_je!9sjDMR(E(30*Bp_3$Pj<-#D,hR'6UH_\[#ei"ttR7T0.C>*==f=bSZN&_4$i>9,>V`TN0Z+7jeKM)C/Jb)Du8+4(#j#rHQ0+aTdQ9[r:/91b$bB4aZ)#IGN`8Tt=[HI][E0.G1YSLPJ72*Zc@I7uf-+\hpUVd>72E\$Pkf1=1Rk2f:&9@-u[Up[$Q8UQ/(XJ3aR3/-sI^Oc_pq6(n)p4Eti4g9iV%rr)TKE]Y,LOWm4$:jKS;:'gjYW`H7EZ$:p;Ts+mIq1.#:VN`;J4@kdN7#;Q+:>K?5jOaiLb*FX&V:JL@;/=aaTe"$!^\u`e?bcR:pBLp.F.$<"OFp?ed\TTXkKX7%Kl;lH1O/Cs5H?Oe<"il$ZU"q51sXrX<-khV[;=PD[pJfLHaHhZqkE8U_D;`f0h=M/luT0@Z/cV;>7D;%qp.a#ise#,3,ZZYTbK_`J70:.J1^-Que(HEdiqXi:V#&+=Q$,mMMpl^2ZJR,m2cqDHb/Lqf)-BgD]m=hlj@T-:jUU*'U/%7?YdQ`Cps@_iAdo#+ET2Xpdln-n_o!Z%?P#nrK_P.I-3;Zril-h>-;BZXmD6o31#nrpLKFa7'T[1ga^)W5dNP#Fc'gMlo93--`r`5p3a%/Mp$Ao!b?ql)9s(/DWDf_Ta,fPjX/nQQ6:+dVfS'\LQ7cIsW`?+,C")WfbVEbPo^:NS6r;jk[a%`bTGI;lcC[&W<4jeC)8HhS!q/,1@r$NPJ^olOV#GcN=P6R0o\m]Q./8#k09AY4[%ci"&0lE0[Of)a(0DM?srq$77G$\g9P9_m64)Tfs51)hnK&H'e?Fl\H3tRVD]8FH@:0g@%<]i*2(f6tsNRXq+PCIeeEoj<(ZY"t&*Cc)2%I10QLW>f=BDh]*JqJ\!foI4>>3_<.O,q%tkn<")(^CBi'GR?$nV.JlOuEsZW\f,qJ#@J@A?:K0!B%\1?:r%B5!+rU:KCI4&;LNKhaWSDJbj9jk6A[866+=tT0L)?s'E2k%`H<(`5T]DqXb*VB:/=-`N0,5%N;f9X="MAk,P4R\S7QP[gSqAHNNu-!;('R^rV&"d?/90_e_Q?;6UF]Qs*N:4EZ\%'0]$Jp_ups8Mn6Khn:&r!c=ES>NIhLYBEU8`*m_C=TWbingG#&%l;($5I"a`HU\$_7e)fZt\!DYSd-&h(rif!P83CIJ]1^bA.1^",)btOQ"*4.nh9e;,JV'/76,]mlWL@c5a67fsGH,T$H-%F4I`,2rmZ*?bLbSSYhI/:PB,jppN'^M48;-c"G:iV48%Z9'=KjZhQS!?soWbDr/-(E$\,NP!BAeB/1Bl:#3C'_pc/:jU,"gYS%`g-Wr*&Q31S]H'C,TiX!YCS`&F6jit06=gQPe@5KYlY['R_6X^%YS.c)8(gtoFTTbQQhq>)LhnEiD.*EVr=QJauUjJ:3'.-O$Fn=`iEiUQKm-X2$*'$?kMn"9:Ic[@8*&q>>*sMqa/97ZLC!reS2Vdlnn^1`^qk)fNWb*Nu>N*hr2eR"FF\%8\aIYQ,g7sa6[r1a//V?m4Gk#(OFqH@4hnFM;p:._RiBfRA`!-DM8I:ah7Z80-3D1>UHs#egR-NkZS#=4nQR,9?gB'@^A&"YF_0GcI--;ELP@e]Fm9Z)P@Vq,Q$aSa\97*Qqil?lfJ/Q%!WrPpG<9p15h,j&i'EB$VG'SET9d0U`)$U!OR&moV+[kH\SPY]?m$T&Z]QJ&NjuSYnjJ(^KA!0@,tjO8Agb-gp"t9!;)NkA,_Ib&0MdfF-uSCR,Y"of&NMfI?+Y8;Hm]gL(f2H&``fBA.Iu3o>jf&<<(<5qBE@AHVak&hP9pb5O?eYZM&A*]6o+&_\MIN+&J5WAXX$BdOh.'0s!^mDcrJ-%^qdb(K*MqVl,D&tOjM;Ma,_=qVo0cJMNAWVdT4rTh4:tTUcEDP!1jS+jV!nS58+niA0B2:3[edpXEYr4Q7\l4Mh-G1!J7*Jm>)?!8D`IinlM)i4`oma49^V896,QsK;ZJ3q/Ya'4Zkj:[$!]!RPi3nQ4,fa(h+@")"9uBaiTi#>=dW41,4Br9O:mo?\f[Br(>91/C)S^Nuu]EPm"[BmnT8=U.("0f*rb=^q`2C:7aS):H5SgR!hi[nl@>WD,re_4n1qM3+i*bodcX)TgOT;d]?Z^/pe8"Qp,pZ8Z%Ygdu8>Z!s8YmOM!ee2?ZVMqXrMh7^Z8mhnOXo>duJNaOI1f)/B2dm,#Dp8N'A94H+/og"T$@eu`0$jp8YT^Y#AU(RA5AY`k01&/uPr,1F5PpF]^\i9fq!k2s*eeZ&c\(qi9c2"=m3;gW7^JNB@4mHS05an`l3qc_E,bjb/'#r+45&@YN3`CILCP>dkNC*Za'K,U8RTYH^OAh<&6]BIK$=g9bSYWa)Gs*@.Ug[r0S>,mHSG@RMB^0HLM*5_0!lYO`]`R!SGjR5/=Z$WEil&L[sZ1C?eFk09B(_hKUAUh%T1M\[o8p%=#1K<@9)Z,FW#JYE/S14B"@aZrK),=[W:rqneNqBg'P`K4\r$uXA0I25(".H+#E4*Bha2N^k37NmUn\o`e34=8@F4j0[5"9oAXXDD5)k2qE212"lP`[VgmJ9dXFpb,RC9V>O=9#tZoW/Aon5Ms,!'1?iWZ*]#\IOeYqTS418?E?uig9k]<5(#=J2HGakiSt7P$JN"0A#2e_'[#q>hgbP#qeK&ZUrp8kl]=#h4JIgoN!,-'Due)O`ufeu]osX1UIL6)e5TR5iZ>m5VbYJb0nL%_fH=XHmFnD,S`DAOKoI_fEaZW;]6CH!#?@p3H2$a_(3cbhKD*-6#GXeM2ERX@KV(JYhQismF8GNCL!kRY&0;mq>@HH*3dUF3_hJW^b#>35*U:FZ^DcV;++DV$[D.0XN)g=IN@"C6bZYdHHCIO$@p\,V3fT6`Y\7qA.t_M26t$euY9E#sgLqs8K^.aqc!<]kPrmABC!+QE>H(k/"mMQ7A@5J`#]REo`&;PH_R,\@@cjI=($\A)!<3rVQ?4oh1Q"e(n=HDG29_SX0)f<-].QooZbgqS>Gcb^5+(`3P4LLcgd]Y#e$3i`IGWMCN\p>X&L$H&,?[F66hlpqJ:?AN$m7UDmK@/f`Y99+HQ8:6m4i1BkGK4c)"ppl##ks$7\QS.+UbEjed5^GVBqW-r,W\E_&I8b(fh`s*)@`8[)fC**uX&5Vr??/kB6:4*l>rq9TR;'!>c)U\(W"KGIPn4QM_I='"TgX_MAm^,JMI]?BkCf1Y)NZ[``b3VhO_7t5H?CJ:8P&)CZZ_q>0r&OXY/J@q+)p@4WRK/-6N1cC?n>?!rpS/gj8sI/.f&6\30bp(dM@="Qdp%OEbOmP!1.*"Y5;'WCrj3JqfuFC_JS$1]SNKaJP]hDLhE;#h%XGAN_TpUY?G5:6/CD8@-mE!M%N?B8Xum4!DUm!,@cHbMJD[N_iLE-kag`eN9Q+[iG=JCjk/C=Pr8@2RWfG!10D:mIRgr2q,!K_HI+c"lRlV:=W,AU4(?Tk#g,*rRU*EJ*I$G=rNI'eW?V5(%ABC"rji`uA.7Zis8daiKa,V1>'n7`%nrs8f91tVp]"l"t/)*r!rql.rVFu!/[F9X\M56g&9a,_raV)#g5'FrgR`LdHS([/t,@EMBR0I\VH[ADos1s'*MA5o`h.b[ftDb,\T?q[H$S5WFXnX[K%Ejd<)ci!>.#XIV7t]EgWu?k[;$GC@LI_+o^(6e.&X,Hl\#QX3d:#Yi8@Ga[K-m@ROAbG?=E_ki>P=PNrb?gKb]tHR=PtdWggJYCl;<4"<,h2(/S6m2:YLpX\*tSt`.m?XE]LGQ*FQm1Efs,$W:f%]rW'6#K`fDY?k7Ys$]_FL^%n2+aZ&6]6E^A'Ft^E/#i!04*M0[N85uP_1MuOV3S(2Xm''t&JeG$Jn6LK:N\?,(iZi]KXq!X(C'm->!5L-R*#G3p4(i>i2QRl>7\Pq&%WX_$\^ljTL?7DU7;0OY$GIf&j+PK$TIFq,KO+Dr&WRCQqSRZ)YeI8#Tq,ACqK`%5;WV>`j)`gE3H"UiK7K"Jah0k1E7iI;G?Y?m3t[Y'27hb+;!F'cCtjfcGui\_cZJ6CLYgKX(;V/Vs0FmE(^(R=shR]'2b''Ot$mN4afkh39iY6IiNJ,]AdNZI.8gWu?J%nRb,F^lHfJN6I1]b5gLrKK<8Q7UN3*'AJM3%9&qGPi=TX2WESZAL#dDF968)N$'9jNK%5YIQakh^m@ut:8t6$W)3^*'Tc#Rn%\mg%,A'ub8,te/R#MPd[E3L/oKjtS_:;[A#hO7]6bEa`*IF7$4iT+F@/4IgP2,tYgJ0Z@`%FabF3qNV6*3m(P97mEX`.g;m:H_h4ZY'g/#[+]Y-'Dl\NZF,N&Q%#sD1[PL=)`a`aGCQXW/LEDm9:hnj8n'7!\[^KcCI%U'fQ0Q)4j"tB#nK5l0m-U!3$TLiTACSF6WF\O:Z&;B3tP>"/(d=+-_:4%Utf1;LeZ<(FTkLm+Le%"c='I.U9E9I)h0`_^/#H;PZk"G\n#D7heX[IM%[dIs`mT2bm0W@j!QQ28g@Og[T;9V*"8D537SbSD-NK%N9WMWCZ1):B\i,a$`2>r3?bYkr+8\scHZPfes:p41g,ion"Ag#D:+k;g>P[fUe/^!&p#4r^l(P42u.QIWUnj#aD:7[+L*L\0@$As$n$&Xb'^4603hRn-uEp!q?:P1rc"sHPeS%9n_O@WB-G7d]d=hrE^3T=ie'kX,[;'I6KuGZ!0i@M-W'p\(O!8ljI)TsVZpBjQNq&Hh60:#BN0ZUt'4XE4,g]uro]](7iHK!=1(s3So4MCH'!CEW%NZ'$TaJm:_k]2G%LilTP'\9Sd'$e@ndT,$.g9sHE>or?NaJPXVK1e@+B_!#aMl][+'2NF[WIgq`G;I0lB\0DXW=f..pKuu_G%4VEK0L>\DDuFBJKQ6;H\2M3kaUN1jp7sfA!QT4RR#lCfGQl"jTu;&PAJbc04%JN#.(A\?N&fLS%a2Q#o9q)niL[a/3&d*GYg^)!)+I4hW:AOJB=Y-qB\;I0I-cdI%.U??]4MDOfP4%Rro6Pb1HS394HGJkm\bAkYY63tPe#10B($!iN<_hJ^FU8/+JB66IBiE%<9EFHfR6Gf\=LrV=#[_[mE/9C/$47-WVd`;m2Ce-q=0M*]I_d7(ABu,0N9+;]P;@OWB^4S#7Z#a">nd2IWe^B-u)oa!61QhnGYpfL_-"T0SqBZ_-U(mY-+q?]%'i[>e)V`L'qKh_.u1W.or`*,mXn-n`.[3&)XQt^CEmXI`,VC3d:"nC3/=i]mE9W2/:Y9eLn0Q-e*Bo1)La^]6+HC4[&%eLWfa&[VQQTSh+#"n_Y&_NY"P@/;OkZG`fIQh*N0XgR1Xe,U=WX&qYZ/@PofIN\3^8Lu-/mFi:n;NpT8%cWT/(Bh**6;R/jhRk!l=ap)2RA6OP>^"E`)Rc@EK4,4=g-6I'naWn"\NG`\5Lpr<(!dr1F=&oKY=XIUM,P^NBn$'#U^-M%T)+g)CQ!@`92f:0q'#-bBJ:$,WB$['N2BCR?`NMki]QlN+^'f12H-'VVD;$iEH-j]<[;'9]W:4N=GCB,I;6CADKW870\:5%_fL@beNugGX'c5cH&-G6)H`&]6cp4]^*Fe,Gp[dSjpC'W!pJ7DFjiER:]kSlfV`$NUPD^51VCm%T"SZnK-RIY""!-+,F_d!XC?oETRT7d90+.d]!HQj63cmp`Q1O1bRk8C?e>^@'_r2!_g&Og^gdiidIf9,NABC"UlbC_o[FgMK8`9t-)d2"EXTQXUIM8,r'Eb<1M+_IYsX]Z^]4:[A7VKHMlg0j.QTVZU;($KHmtDQ>[AL:IRN0W8Fl]SF1I*a(85p=g4Vu`Y@#%6hM'?JBIRT[*'AIB>]Ie3&$IW3VUQ6jj)"r+brHOX'61[Y!Tb?F=Lr7c>p3G6'uq5mjmQod>7gr.LuNp`SqUYp3QGg(qE:^>`sf2]46[n)p^H9rnjKp'gW$99P<=FE,!S:ViLeWWNXX=U`KIR3V2qJ(+I(5PnV3cuomQ/KfM/(A_)'uY(L^k'WG+m1MOc;U&iC%1riB1Z/MqtKP,:Lr%X=^8Q,Q\EUWV1aMTI/3=V.5+r9OQ>4*(G7*MY>V2h:r9bakA&WP.S5gN%>cM8mLc9fPq#?bS8N_%]XY6SF)k)R&52o$29cb!:-^j_l@bO(h7\0%U%[9s@OR#Fma@qipu1r6gU!-teq($(=gM^b)lecHL5-!h:dq-KNHfRoIX[D7AP0g`I=-DV$9;\?PjdMEQRuEBbEbs0XI(7[+1Sl&o]aiXRb<"<03VUZ"of3+W'OGEaH;,#%KtHMK*<8%AAG@2F1GERM'unc/:;1CL6#bD9MQeiA]FIFG>eBq0kF^`]-V^&J=D$DU]-0DV[A=ZJda'rqPLanNR=S-BsXOTViQZPE'\Fb))bOjh'C3O??0i%OJk&Jt.r@:r@K8_k[75=gLRt$4=)Tn`.[ObV1Thb*=L%HMAIouIS?#2Sg8sD.;D7="CVX/.58?Pi>rQ48WtL\oZ*"7YNg7t=sZN9f_tiA1qIo"Y"Q[2i:Q9_B'Y.hf$Rc?ZZod)EpJ$p@1M;ToV_^g-f<:fWBfBn_`#`Sl$Wu0H<9bJg$-hak)No(ESK-h-RkCl8KP.7NA(NO]=FFgi-oMD0tJ,%WN/I*k?RN'JpYYJ#26J#B=;-VHcDiq$j&F$6fp=nE#Y\Lb:MTND\;as,/BKr>H"SRi8NXGUfjs37I^Hn-;^D.>,g=WNgs,4b[-o;l*$Z;aubbEjmAA.alDWpW:-1n?^P`Z(gmgU;dD(05+4P@WU#-K*314C[Z#=I.W0-jVCA7D0KqspG@`=3J/$'`;p"$[%OYl"a8%Ls:!oijOXhUU)U*L*d&e]6YlrdWJL(^g^4p_N%Lg+m]%F!o*-TjLr>U-L`:U=7sKJ[W(S9i-5&_3!QFtV?KYfn92K'\:>4iHMcM\[nsbA?:]R7tADqj&pi%NRV"m1BFT*6fB*ORu[D8'(i0qtho@8?k-KRPZa'2>m/rNugH_)p1c^*/=U=u5tS2+^KH(&3As3;;n!?i6rk(ucfkS1tbhTnRJ46jJtTF]0DX]OJj;/4nfl\EnYK6b.='P$ZC#cgBJrbuV&MY?o:S2BD()d@s(h]&<1mLPH,T(02CR"(+G-Q_#`0e^gj,3EFDCWDf^VN5geo,CUb0RP`N*[W:GfWHR[_7@4,^S6C#l!:?^>SuBceZ)X>lu9^)'P4_%jGlXMUB%MXfJ-3VX/dc.hFI!j:e,F/*$$'i!e:"7@FCrCH8Q3Hb!*KBn1/4]lV]BWk02hB8?SZQ!=d!rGe:r2(D.o,KrWW*ioB(0f^VQH(`8(lLqBfaH4amUJ,YCOG7j&o\MIY$n)(mH]U!6("iH*+k;rYT0;^os51E0_V(GcO*;mK6+'VC<<8YH?c^m9]Hc)^OO[?0#/\Ha-J1%q5WZ8m+)S$E7Rl>7TT&acsBj"hj`UKJ/h6@,M&RH0sPGjutfPEmk/St^Xp]9%2#DsE2Z8a_'7+XA<9dDFOuF"*(&@kcU==;rC68i?rH/5ZGK]o8J7iB@Zh#8[_5mc;/0/g*>AhGt+S9Rt?'<`[.e"1E%!P.(0<"6(.r3G^3=ONKIug;#D8-m=&mE9brPidW"/E.GCj5G3q.@+:H.:iLi54!=4fo:mqH[BXi<;TT+L%LsgZ!==?oTFY42F,Q!96r#=(NZ:X)Gq4.A$SiQpJAcuB$2X;YA%'O)L]mJmfK)<"2Jh"g0"eKP1US=;0k84"h`QL9*_C5Eo&\k\P5Fd5K3+QfKmao-:6C=bMesd,h7Hao26L<$:7/n`.p'6f^O]S@6VGUBoB&be8E^6e)LV>LJ`K8TYmJ&NJ)@M@LV@WC%8TbqZaE8=''pH%_,IbdO>Zk&,?X=0uij[foX&>dOpb,h.EP$;TN[^hQaaf`MZNPcb[M\=F0cP0:GDD>)6O#mG5Sb_O[VXrd/+6l`ig;#b(0.KGDr3au'#&_e%S?9=TgRghNZC3I0ae"E82N=P`*AajPiib>-s)>"g`[W%Htm"0Ai^*UL5OcGOJjKAE;q"T7m`NOH:%D@floDcuO[7&"oM`gt.45Kdf6F>?:OqqL8;5$&OITF(EFXam=n8)n4RTRo\>68`=*8kcn3l>[]92DQ87Y^KnEm@F%@B(+dD[/g5Z?p,2.@&iX.&l*L'0cqqi]kh!![@1"^dn45\H/;tH&`lH+iiM6RA'(PRm;PiA0*0c8;M\ED.FmG@1A%3ESJHH.kIJY@:B>irrhnQqZL;Ma_;j\lp$t;ifm-H;!(oWXS'3Z#>bhGZRA1,!]G(\e(nr<#VQ%nPP"2#&Y8(&MDffCimI/M,_XBbmeD5)+q\6fs>=PfnR?k+7:c,pi?6'BlRi5k,INjf>mer5/`@/5V;N25[R-Vp=idii_X_9RfH+68.]0!K3GZ3@+"\RB+9R!#G5h28j#HLtk[qLerA<*[AF/G/^U^\u1#<[>6q$+TqpBoCMp(+r!_fU"6uT"=bmRl86H4F6biNBCfoL;&K%@=m;1%";d-5SXA+%O>DbEH#?@@otZiJ=$[d5meiiQA._4\T.iV8.aTCKn&skBlJ#Fr:eU67m^/e:i5pngUD@ng'JE>^cI9AHEp]o*$!2ZGIVYQ#4`PQD)gp5mLU1TrVH3H?Wf^rRlGZ^+F?,BooN_Sl\F8$Lr@6M+:dT!!%CR2/3\Q\:7[h"G)sqmR57@=RcI3Gn3&o:EeY&EqWcT]p3uAZXd_:Q,RUG5"9o(-8Ws@Xi/&*pW"XjQki9^Ec_!GRY@a+SenG.XWhs3A!Y<)0-f`Im&ru9eD7fbpUDK/CH#9"a[Qa-9$$@"R%>G;I,;M]OTuFr5SbtY]Zi$b;3gPq(=f?b`^I\)+iI)\sQu2`Yk`!/d[gNkg/ErJ+I%o&Ro?-UqFS-p$kafe_a$`5]eD99r9Lb4tMe3OTY13HF0l(JI_pANUD=R,(]hY+Z8Nm?.kM'5B!9X+(rok/cNql;59L^jQA6>hoZ9?/R"Am01i3PM^.BlVGNsQjMhTkHM#RYD7S,k8J?Uber4-1*A3rIE9>E7LZe@*nRF0AqB9u2/Z).*.cU%9;#9%]H#r5u-(%[DhdSVH3L[VcEqAEfj=M,T"EpHWo&e1I/ruNB-GFiQ%`PY<;TOqC"8iaf/7D>(-oB+&ib,[N[0K"uZ(0A)$>Mcll/9QU'-J9B,11c>RVNS)t8OPKa[kVpZF[:u,ol(,68G+dAC+aBWhY)2E#D4X?'a#=9h<8O'ens__$$qi/K@?S55gWj9?d7oef'G_!+Em+)3W7pY$F,4+/-ci8#8hCo^Qm\btbQTaTr95n&[4i^ANacO:d@3]VeMqd\qaEcC[e-$pTX?QlP=PZa?fgbFc_Xqni-M6jY+!4^"s'*fB83rceTM_rr_YB4^ot"J]m<[YCE,H]ODjM3JOND/$n"iB`*WPec%<5.n_=&_*b/-s1]6>(k]j86nW_s%h&3:3K;D(/=j=i[Ia_be'\@>?n)(e-?6#s@UGAO"EKD1flCP!OAOXh0Z&Gq0ik!]h?"N!`s0&)0-M%L<'amC:`G3sV;aq`%k*DoHiqDL'$9M>jmcHDP-CRX:gA&h]k\X4'[;NR82j7`*3gUGeoL+L&Y=05X`_QDirV+R_eHcq^,3L1XLp^f'7#iJd\fNSm9mG#*g,N]6\AC$j<0OHId0?Fpjc_&Nc,I>1-0k/',\LN]Q_AG4L*1',."7qo)`ESH-2_qc27787V2HH)X$$qA@UHmc6p$:TBVG<\^BDI\LN?()]lPuVpFmIVT)smnkEo\@R3$s<;7(@=$%`_1YhnC,WK%t1'_C'jF%Y+qk(*e\9qsV:s?ZAkuF>r4@#RLgj]QnRP$5M(!J;GUIRZM/0-cV2c2+frsCW`>6[VXV`P/t+Nhg5"_8_m"%J7>[Db7X\=Jj9WUYs5E(T_i*/Gd18L<2^@bgYOf'f&6#BS2leV$'aLn<1#Vc;fH_rTr@jH(GFDK%tIQ.UqCm<>19[b-W8=%\E&PZ*?@l%#^5M#ddb41JYl/2Ed%Q_ji\GObS1C[(fLhgC>??;$h+1[a4Re?@#2rCn6"ki\h^MZ?+FuE/h.`jVl-H^(4M[6`/p5l\./J36\kuRMM_J;,Zh-RaA:j9NRP_(?.,:IDU*t*.i!0ecCLHcLfl@#GD-A=.%Gr8qiE-qHp>L5",-aZ":<_SQ3@X3W%Bn;^6s]q2N8V4$@.1!21bSpk>O=Vn`.[?Ad;6G@Wa#0n`%NHqDe-9Ue-aab+(J5jsNrrOa_J-DdLf-82a[Wq?#f!Qkqt@;%N/?W;P@(nCM5!%3`JPB\<7SQf_1Gi,8SjWsEofpT2+#sh@GF#%N/X"50lcR40bAdZGgP(VX6JInD%KG3jJEj@R]r`O[a:L!Q>R"4\%S;'Q8l6cg>:h7JFFk26WjkokMU%dPA19Lq\[ndGdme2\^l$#p6ge]lA+l-lPF[kH=7>GmR!Pq#d!h^&-r@"c>dOY^WFK`j]k+ggH`MXWC>>.&+1%L8P.,BqU,!O7'/Fs*2*=Kk']d[$'u4[TE.Uo?,:_;.(R#=.,T^]h,]VhZ?qtBF%-K=%E67A4P^0J6kBeE+GkJ=sfJC^T:G-1#*0GAIX$l4aTGo!>u4)&FnR)njpf5JVCL=^OA`)K(1,M4897a1q*906tB0I3WjTHO.er7%3oG-&Zb#;OJm2i$78rqs=t*^XCJ,k\E+#p>"bmlL$N94^#SK2hs>1OJh3=S7Of0+Q,gXJ,@]p+9LWm*_^+*m>;tDR@iYjFdg9`3G'3Sec0=2q=lEbstVEDnu@p0FIl:tFq7T_b)CQ5*'4=1^U%TKu#3^s5_P6X#,p>pf*"4X2qqXeJ*1PW&<]Ahffm`cKfT0L).-KTV\3aB49KeVE"^d)oNp7T3-\8[";5G`;,.9[MC.4TK!EHE;fX8$ec;I>Keg6i6LYgc%\Yg,K5W9OY[cP1jngKe?j2[54XWimiOfHQi04-p2AO,#aRJni<,KsYNWMqXr!XTiB+XSP57ZA>-PC3ErZ=M(/]WSI@JF>Kp#JSS\Zds!SC$&A_SjC]BQr]lBE\oK"Q?pTaVNp]`R06&ofirBPE";1K?oiYQo3hDtT7rW9$?25_,k<&@-303rL))3BK<<;&=eX7>hWn1;q)J"8!V$dT%<2j$Q6Y&3Sn8l%qMuBBT`PSTYI:^l0-e-qaBsVc7a'eh))ipSh)hNZ:'"m+AQq/hV5.c<\26]pG);Pq,p$l(G7F!F`0HeZ/!/8t.`@Ub.6W6aFb%4aV@?oIO,l9LRl>8S9a?@=ABC"6C?cBU7`_ElR$`\6YN]Qdn3\[/3\TF_f@0*h7u%h&5Bl9uq"ad_,1fpF5[k;W.GgTCK:,J7a>VIn`&UE4Z,HW/u8F(n$1`/P]p2K.F\X#V469-_^Fa&$O0OR/4/mVkA>dS1l_1N!3-Osm0m)&?JC!/O)'C%3\;n@#29!a@Q9X\`fXEleIH,*Fci]m<-(aD',#V(bEXHW*_T$M_STmF\g^QeCq3d)=!.[8j-#2cT?h(RTsSNElETkrDf8.*!<^Vq:]7OXn2_^bBEe#1:.a9N4s:k[?orr%2I?G/0F\Sfei[/aB1Y$QPQoT=JnX`5SZ#B,MFpA[Ap+'B(eU;r<:_g:;+km9qP4*N;:31.Rp#^IZ$3;,afq[dL6*#Uk`Yc8;SK&#a*=P9`TX/9)UPbAB&KR5AWPOVhL^qkX.OVA]lCoFcf3*LPV^k'f@^,qDZi*-:d%YjN5`J^:XSSQi[NC93$d\Vl%o"tO)&9X>";GLZW[Wb3P/C:[NZC4H=X-C0pY\=0[WGYO33mUIFC`K!\SF*Mp2"&8+9]E,4WQ-uEQ/1O5d;*#HM-Q@Fl19cN`E,fmFV:eg%Fm;rC_Lls(h6eTL,;q/lnq&$4h%UkaG3i+5./e3e;/e?c'oBtRL:g8e@KtW'>jMVP%k9GjZ>R=+LS=)a.S_:+h-D1*t`W`1D7-7hbMun('iu1Zb]e/N=8D?kY"^:Niku3cA.PPAP%.ZikIf9-&G;ZLk!`;flN3u[oKf9"fq#0sE8M"]Jdu\D!ZE](m]lE':?5O$!qb['H))LR+<(u4^W)-VKDM"7[paudZEH,tDf=O:1;b.&0?00[6SN=_faL?*Fmb+r0YJ:(2m\;!sNj'3_]Lm2TG=W"C!2F&DN$2%l&Drs<<)=(=DMYA3d%KRISNCoTbUHJf9UIMBo]X]?L(+4cYA`=4h7In"e>ZC$[Va8M_3!Ff@.s\R46KkXDOoKL5hOYa+ZU\=p&ecIKaJPObt_&AdsQ_d.9a*Wfa>0&eOhim9:%7[]WThccihR8TQF/4;M@b&a^&p1ADtCZ69;f+ojULJ)UK_=ZicC@=Yd>X#8-'^7?1rW;56Unl>Fj?SiiFSXmf'Lr;#rj-[Xjk$,"'RPS)_\#BQS\l-b05eG&FhX,9/1!V_"k4WuO9Yd_)#lN188!D`+?]d[hms7kj-'r3V%0$'/"8+l/t5u2K@Ee9JPq<+B[cQAfZWDY:6D8lLm/.rbRgriO'DV_a=h-u:#D^9V(S<^/k/if7$EilIr7o3.[m:iU9UY%nHM-R.UdIYD4F'K;UfkI9GOF5uAcpD^'HR@U=IcI((D1'/ZtUf9[riNN5#%S/'hPW!N>fI@5]T5Wcm91i'A+W3!EJG:PYVXfSD(AdbLHtgfiP@`OX'uH?`mYEOOn-jS4OOX)F"e?qq7#QnA)%ii@2alcOWU,`AB;#/Bj@(W`?*ue"MD59O>G\fkaQY5C[S.^-+ReWk-tAaE1t_77;o],?=lRIfN&[mf*1^]Xe*_!$5[.E!n9Z3r8R;gE=:^K)FQCK80sZJi`r(ku1\h5g=tF_h8[E*Y(!+gb".(M49tRYMRYK"db),5"T,c5pC<-))I""-oku2V+[.E9!W!L')#7?`4PfG=gM4.CY?"i.B3"+f/&_P*(co"8]Xt)BGlM3m`=OCA^EC\Y!0Oh4@W0"6@5@_+BqVbWe8#7o7n."pj4FCm,O\ohdq?XI-aqsN9%UlI!M6:%%Q-e5kTF1O^\[1M35;"0IR[&Gb>>%)`JO6PJu;nO5\1D!eLsea-^_f;OB7QNYYnC.=_3hpopYYJ,Xh$Rars-G'7J91!>_(71,hg=0>fUZN)ZuY?SJ2aLXp),0,]aU[Z8s#SL^J;56T3WSmmEFGO9qEh1[>X4mbZ3-_hJ7fibpjh9.F=VYP0g(#)^MU\R5-K$GBiW8JM->)/_KL1&:r#k0-`>8GjqAt"UGVLs7=Q$+lBG.]*8B@BUp/-4t59;R(t#QiPUFl/?L0CM[7@"DP.Mt;[0@f=3Bm.r`lQ9d"Q]3gc8rg'IP7Ur">V.&:R.g7++lSTgOUBlN519N\cN9V$J)9Ukci!"jBROp>pX32F0"_5PZp/a]g!8U@f*g:!A99fHQT9-LW;C&+O!-lFLhe9GJ-u_moCMQ8E8\OKKaYM8lR(8POIY4e+j[/fWM3Pes"BOYps]o.aY/>o%>8MU2TiXUmuY4](pl>j6+HokB9%h*M+B"3h7Ak429Fc*>Wb/!TR=!Cf3a"^hT$FbRj([!Fju"u%j+\t\5i`[K=kCJbaC83qDql9PoPl>%OmQ5!Ze9J9pJ,K#mgnM?fb%K//^qsE[qCZ8&bNHpsn4!qtK\3W[%ou^>-\XhS"8oe"8gP3oBQI_*nE0KSr^"j`$>omKH.o_OjVs_J,fMhfRUa+.]Oc(^Vl]'*rU7N$iWW/$A@ua31?F6?:nU(Shn/kqt99qVtDWscLsoDJGEj>b*Ai-<2icLg*/k/K'r9d\TTA>*ojm8,Z1X:5#g?I%_6(<2`N\2H-JHfsY`:-od805DGF/5<.#u9=0JLl&2-$6pq<(:j,&jS*<&TXG-Vp?'.]jsjRl86@jm1O%H)6Sg&ZKftW]sXmB'&c,CB]*0T^_[BgK3rI(3a9k"q89\UiVj=::"QWnA9j3K^d5TYj/T$//;Z`)A(F%7lh+i%^m5*S1bsJHs"+13RXhGNur"+'+\,:m5L(;aUN4N!t,\3JqATe]tI]V>T=b)`I<>9VG(-c5QM_S*BJ9Z0k(8p2nN\H)GTP7%Y!Ng$5kd?S5@qMF6DPt;B*QG3ctd*c%9Q[aK6We`lJNIA&jVkha9H!arcGY3ICJ$h9VkQB@!/P\h'BIrr%1SAE8^h2\$feY\ViC0/'LbB?p;Jq)s6,*7iA1T0@]%qA!VfGOOAl#6u>7I!F/>;401NP3c+Y8*D4Kc7Vk2i4snKl6qE:7'@G!,9IHu?!U_B_[#5;]:)cR$[;'rV5p/Y*'JVt<8\cYFs+Pk3,sPEifZ*@NugHo[4E%h;nQ(gc;"s,B?mSM-g2Udg%NCYr9V-q,k)YGZYV@=0A7+6&lZn8otY@#'Dp?gUg$Pt)O(.NChAY9ea$G7+*T,RV(qjW&2YVR)b=dn7]\<%`AkRq-P0&cMc-NZsB*bKH4puDB(g5&NMmYF$ll:1dNq5qg,M2BQN5O72F@VXGn"k05\76j\*;]H_q>Iecc4#PuD,Rn#Mk09q<+ke-->]Yf@1M.&*Z:0Ze`KNH+k)AO*8TQb)5])=L,f@fl0C>->a\,Kh3lSHVC:P_&)FJF6=fu%EpV>RpF2c*`K)H,s1l/h[\3EXflDs>6,;rd`!M`2N`K!O/0^CW?k0066SWu9\DAX`^?Vk;m-a7<<7Q>bgX@=Z)N3ZNcqtKR6ES@u\frJn4@0Cf)/q=pLREfL@U/@a(3Hja+?$0PTQi!b!gU9=qqMgWlJG&U.7>`gFnmp4Qlron>c#`r-'?68Z"263-4sP[$)[m%6+$Zo.WtpQ(e4Z,\an;NM*$]/CY8pdOWj?;2[LeDSV/R+m.r!.uJ,ZED.ZfR;qs?=KslHH(_mbhdo>/7FX8-VcQGe\f<&8t[k8#<(8!O(?;6,C\_UQMM>-;c9Dn+/#nnT-+DfuBKM[FFXAGSl?ChWI3`)_gETHh$`==B.d(FXF,`?No[YZ)Nr:mPM+TVY$fm&GKp@cW>nF^1*F-rJ6Rj;3Ei0T2:-q$1+GO?WEPNi?'Kj#"_N>jh9eJ*E-Yr%\)$cFigSTQS0Ek<43#S+Fc1Kl(#!t=#Haci3C<>_dWO!!iF[kD#%@Uio+'e>"TZ>.pieo-SFb_d,c,hns[_(5(RjN3Sjq$'.#;]ZI]G3sn%)""guhr.Zd>K#T[K_l@QS1Ss4U.(>[-h3Q6]1NKY0"=+'_Mm:uA?[WLS.rl'3C*HB@1e<8nm+KjhPbm05,XB*!lXFiZY6Ln!S!KnEn6GD=^[L1A,0[;qLB(oh7W58(V,Yuhr:og!].[L'&HBFkq=8e,+;i2-&gMGJ]W"i-:,4U<-j>cC%rgsl3A+Hjh>-d1f2(t*SND$fQ3#JuP6@1NDDBab[_Zg9k_:V(T4"gUD)qXeCH*)KZ#.jrbM.I>drtfL4iDPnh^h3HCpTI]A?Q#D07qVPupX?H=!_aWZZ[,i1C1=gFi6qX*%Hk8o%FdQOeicfgQa/20nJI(Z85(d!1Y4=24DmYaQ1"VYAD&YGp'11\H+&o[6q]bO#dc'pZ&<5`qlCMI&>>t?#QD;W'5q(51I&ut0P]t7P/+<]??Z14hsfI]Zg\@K.Q\i(O).rq"`"@4kWcCD`n$Pb-:RJ?[Rn&\l(P-Al^506]6cC>at3fY(\$.+4^:i9aP`30c#:af!d_Y9(@Git/F9a$+YC?=Db'=*q$bb%,We/B7MX,)B6!E`S@?==@SVdLbmXD9`MohCl3@;I"d>Ib*C%*T?<$Pt.n[J7[+\9Vi`o8^0.jb+d9Fm;rJ,(W@"SY"!6!'11qXY%>;_91Ne4)`ugb+CIF"i36[47c,Sm"r@\PPf@6rME#G5YRV%AVs_aP/`n(3H*fh`@nTeGkgd%G$,2U`5KSbrn=2A(NE#/4ZuM(PpoX$Y/&i]:>-n$1ODi%d0`FI,8D_0<&dZ1\Q^GWDr8:O_R&`#gQ5>q"[LnH>.(B1p&XI.WUo,g$ZS4GhRntmLt\t82sZE@-jR:5A,P/R4*P]uc^d.AjN[f,+!2Tm3EeX$ND##?'bJ^JHl4bSOMW3lY$F+f)8t8D+Q=l0U/.CFBiJ7TU2f55V?RWMDJG.B64l`HrXl\"JrM5WR7J2=/o4kr5\0WZblj%7-".7jbr'l$`A4;hR7*EE;]M$s0'--NiV1'r]__VC=H>u2%bfo)Ja/o5LESBMdhO;@Q+llX;F3t@Z)FfU=`*i#e$Z;=:j_!:f0Li6pRRBhKs\bn*dgEqeWlkp[7J9hL"+/4KglQGP3i!1[!!KcCDeLWsHD&[\0:D+gj&qj#X^_M^?I<%N@r)Zi'bLE@dK6"5o9WE]91)c=?hea+uLFGO86B3*T!COMD--Y&&ZiR;b.+9t$3I(%dI+sr?:b+8uP'm9,\X7]_N#AD#04@p0R[;GOeB`go!Q#WX0m@sgHVV%)Hi*O(FRLg]H1+JS'J;!j/iGUG5!C$UI?l%2O?Y36]68#q"(`V!(I7%"coQt+@9/R=9nX"8,;8cYh95;H2Jq.ng86aHb(uR?pue9!VNWC&4X\*4LcNKEJQj8bhnMt]J?5iRGhbB9eiq54A_XY1,@BBhj(%T9Lq%I.4Zi6/b*=JYWa:>SI!0ZkRc#ngGVFCB1-sJ46iic/)*Gp:68KJq(RM^UlS@8@f%(V\%N2[rNffS<6&+AN#N8nf?)W%$rrtXjRPelXCm-o&l;+ZJ>>*BU,mRmn8CQ4C:?_d+"+:n(!B)2V301,C`Rm-L*X1jJLtSS;(IT^97i9V+@,3B:5=%=S*FH27"Wi?'j21?^!_4di#T&DBX:)\a*%d6X1k=ipEqIt.+Sd:^dsZ$_%T4@NL[*$Ig;mFnu4Ec*?ZOEduq[:jhJ;ZS&*\?%D?11I2]2@$!R=7PkP;Vd[+a1ZioGc[%1;H-UPA&\r>QJB&oX)LY/.5tFTH[F4ud=KiZp(6dDBU$/-+L8>[Nu^)K:SPR_otF"F`lW-27G\BKQ*90T(s!:Aa3o#g9bRh[KL-H6:+"TD/J%:DpP^PdB#gOhq.@LSekt8?ip6!m:4dt_\^H+W?WpVO)]S,*k-emH)V+;2Cd>$3=asS,bXlS)@J&NuH%qo[PCkP`b:>qMV-P%7\+?X5tW'mY"7Le4h-kK+QBJ>+feWc\Tq?a:aFC6JNoKhfTe#,uWoQ2W8/:rM,[G9:dI/%['_I9dh5GU)iLbi\hi"h"I1gO0GTLXf0Vur,k2_fe'lI2YllGYg[Ep!)_gDZJ)!bf.0mdAB\.7Jb5BTf.a4:[c.;l7(7\>6%#CO3UmW[c-m.3g2()jH>WLI#J_+UfeO'\'-_CY?")GOOB'3nQ+$Jb&C&)`MXkDr+`YgRtHos8LU#f"Sl4aiVYhYG^12gaIY#hsbqS6CG5OIpVN:aZ2BPH!k#&DI!<1%V\R[m$A\@867kWAbb9D_h[^<^E)W(MTnUY[5;dVGim5[:W8hbFQtM%_7Uf+gNN=0Es[beSc3EU+5W2"sHq%>4DY.E7Dj^N]/'#7hm>c^A6__N@?L*`668f[GNm9jX4sflQrX@7$I)4`VI&SXk2jb*;u0#4Un=rXW:_l-5gTgg&!fqIJ@A]TP$aH]K42FR4r$H0a1J-Vn]>!dFp;rIfiW9:%8*Sig.K&#-Ogl'0O8@7E4<46'?HLr%2s-OGk5p$:5jbKcV<6e>?7o]`,DY(TV5-RU:sM?!ZC%OEtip$UYJk2tg.>.)f.M8891IJ``c23+KlpB&3/0d5!t`A?'gRAYpV[tSW*k/J<,Q`$99cWcCI$s0A+!e]BWbFTuPmDh+.'4iANXK8MNUIWdUX^fD3nWiTI+QsHjg"=r=08@hFq>b)nd)4I5;5dH4_AH,J%n4?C\H?fi$hMgTOnp7]F%'ZY"^erV)3d0CIW+K,R>o3kg%>p(o>d^b$E8&Aj?1"j1b8H9t(j#2P))InE:(+oJ++SK2Ui!$3Q#MJ=hL_O5:rr30kfd\9/<\rLE4@Nso0DZ^4SUf1%1e>ZAH^E3Kf"Jle%p%?;+92nB>(dZjHQ.p5'o]W"Fn)UfeJGq6@hE4+h=h&FEnup?acDl@$%M!)!Wj8pNoB+:+[WglXR?9'[PZ8?E6qp$8NgL2]u@d*N?!?iViuhRk$+(1m'-=0Gr0rqi9MHdii+q!hj+o@p0=T7DFlWI6:BrVEo?[m<@'CFaokPe48>hnG(SQUh[B4C*_4.riF5iII1We%9gB6@U[D0i@k*&2RtonDS0j7)P+VfU^7Vj2WHg3&)R"TgOSFC1SoH'.#[GAJFI"2fI^,,mFbq6cc6X$*d;LVjfm1n*a'?1PuXQjS7'fMgb6]&K=Y2Eo]c%N=-(#"KS.!T_4GBUE^`2LeF'eiRSD+c`LE\aNn$c<[*_S9qq">?+P,$DbVL1"@qj675H%i#eR;T9V"6;+0+s_)P&''0/'6HVb*ai[r1p5p7\1Rj9$hTKBi6ufeZi:gPHRk,$!I2GFpm:-M^c&d_tnod#O'/SAYaOe%Ko^/;t2^Idc'3)Mr^HC'bs/$Gf:h%I<'?`1;YSJM1W<]lRlJSeD&^sGqgK-X!s8p498O/:jlJoi(f-\`7JEi'4*IQ/#m[I%)9O?U7Rfi^'buCObg4VuG)OG_aRS<2X7m\]Q7lUJr6UK4_Cd\L$lbc=R=a#,PatX[o4:<[8(3I3JHH-4r%L;u?M3(N*qRJXg65cCO3S)k4$[QS)QA?N8\kT8B4DQ`.'iY,J9I.krQZV3-+(N(2i2?[VacbQ^>af$p#g2XWd]8TDs^dG0r*fs1e7&-`g"TL"50rVQWcb:e$^G4+ed;,L22$'@NA8V)E=gJj8YnF5pT#jSALO$EV79M?-k7T`dFW)9>RDOllN+OGN;/;/b41A!EigB@aijiWj1jcebtU&hXp!FiG;"#+G4"!0NfqoA<7T8c8"2DRp@$l\'GQ3A;b9Q;2N'l.U5Y%i4ETd`_hJU+o#H_M3=m=.N]`S9geNW_9gQugpqLc]TCMTo"bk=6\c-d;\'f)$Pk;Od),"_9q!mF3GpW/1Fjt+CMW6aqtA^tgE1afJHH/Nm+J^^gU?!hs*a=j\O2)[q;?l9fTZf:%X!a.r;9>TrKQ_i:RNsA[m35%a)Y8CdA'4#(5PGDo&kN&rO3?,jTY4NkKfc5DmD@/G3rHiJ&Yc",*[AA<"V>c:0:V#p[6j+GTt?k4$/@*EBm@I8FP'-'A_[i4F")*DTX/9UJlkNV?>A$<4-Mnf&m,[a?2LC3:LX+=Kll0:8ofFRD3a^`5H%\jlu%*aX<^:p0:S]h7GW-Tj9q7TS3U+'48=mWE`=`CW,2LLDfqKAM,m,W.m=\X.[M5q"aaUBQc4d_\,j,Quac6S7!'M1rJkVoc5_oJ8!9*F6Cj*hVPd-$OFd[J,Mh1d'moKMHcVom+]"1TrYA&]2m,G=0Gr4.&qapqJtJnW[VU5[VXVPQ<"0kJ'H6_'fk`GPEQ@]$7[MT#g506U-\f#(Ddl!&9.-s_6ILjZ74JTdZXQh#baPMP>:;%5Q6ICh*9TGg$\:rW7quKj7(%G_1POR3!$XqF;9PSI5>KZ^o^?CQui3W=gCHm>Gqb?E-6ruY^JfH:]ifT@cS;fZ%15UjE%LrtS]67bq;6slZV"<;n+a0U0XD:sA=]SQ=C-(G/Oo'3CG!:9H/99Y!f%*l&#-o4jQ5LRX]q-cH0X9VD`ALSABjEfWdf"qbEY@;,P'W[LD]OVG3QDg=G-;?3C;-a""b\-)e;2+G1Q=ib6oE)5TGRX'i<19h@peFmBed&"8Yka,WaS9+[a,d-Yh1gpdrC:6"&ag_MJF:s/\)_[fUcV5:"'(De"l3tgmbK)B975r0MXK0(#GWab(DhhhNbg]DTD1:<]Y#49/m.uR/khm$STE40!+6,pZ5Pn#=Pl9IT?.OlphSSd8uICOE>"Si3k7n9t^%r_FK?XM^JIesSL!8aE>k:9o5"9\k32iL@`%NW^(+$g(1?(]j'fO-fWR[fnlHkLVPW)8<[*=<;fV\=pdSM$[Bf;Rh56[40q@'\\60iMn+1=V]Xri/kO\i$kIJ`$T"m?l2B$DM1+5ESI!%m'X^7\:+o%!:@Rb1Os2>Ydr7>i"S`R:SU,9nGTL,q1L4TPI6AAmnaQ04rV[I]mTg?(2="5^N$b%`RGR_;]co$[NO#NH4[&&$_Os2IeF'DuMi1NH-1gm*(V0tLq=tFrSHArrKbbdN2f@CnYJ66UN:c-5U3/M;+15n9B&trM(L>8tO-,fs(l]TQS2kXm/hYM'?GCsfaH7^$Y(D9#pisCJK+8A$ib76jo$3XpP:#6("m?6$Dr7E305o^[_(CY4P*-G0;g%D+?4V%3NfM]S&JPurC/ho,nH>*'N=5Qr#ZVja<<][T!8@&2fe^2o0$Qqn8P)J^&RsF7n(p4_'jFY*6#NPEWo`d@c1=DS9ksG3p2Ns3RH,AJ^_ur94kiY63LoS8I6?\T>7arX2nILP1=77q&74b/t(e*P/c!#-^m0!33'!fKUM;[d4>e9MEZ#++6PU6DmSLj;$)SN@$t,bg"CPMZRE\7RdU0E\,9e@2JcLmp?e>-D;)L>@m`W$?G1YZSN:oZeucE!h+C4/&E+Q_&jmPe8k*/'VG3OL&C5\o)*ir`$O^b#Wg2;cNOkN;kAsMh9he>N`dIC?c'70B1h+q2:#t+oF=.k5,`mmS-W-br;N'8*0'XKoU7\E:*/t5.$EmdL9"q]G>`g"6'Dh);RZYeGT[1@0+XB>rXTP7*OY$JI%)lHH%'(c?/DJnlq#nmS'h6h$b`(s]E\8["lg!.bN[jXMiPa@^I*BKF1\0:Gr7%hN)Z8)q$O0N38C2",*6#.@(OaeeRq'/qA=M]?LJUcOs0IO@'J,oaOs"F!CC?AL(lnL=R'KRfOq:4%Thg?(M&gHO6[=R,A0Ui+\5Vou#;l25Z[&6]lnp]K'['Yf32tCD_#RhY1bhLlVUYMhj.7]M=jh9Z(JuM\H&mG20n%XACjGEGk*:l2AiPUHBfOok$OFl'PVP^6Oq^u6i*4_H@YVeYke&de$)1JX6@2"sng9jT;.RurtNYjL&6%cGIECNEPcna,1iSd'6L0QWS;1M&CLhD"YS.f0qW#[VV@H;\'a$K]N`l]UdqdUqk^<>1!*qLl$sk[r*30'?Zt6K+8k\nG;fn&Ho&ombPL.Q>,*^/T+F9'LC2.[*YHb:nN10)-SfbGWW997q5'dOoG%*?Z4`0dF[!:a%Qa"jlLTnHhZqK?ZuMV&/&*!"mCH4o--iDX]r7?bu2#g?/2.S.H9FL6oU?lU#ssZ+G[pJpD4iS[VS79UP+:'NP9LJ"J%cjIf6iCG6AIC5s_NQbqd]]=rqG.IlohUcsedb0G(?jeR"3s-N[@Ql;5J$_^u4W*0leSFG"8VW)[#f[uS^eg;^j6Ji[hQ1'jP?;oBnrTjWse*Y;T6hsok\@D=PM%e)LbNO&Y&3)X/OP9oI-pVh"jZtRX29s85B^nW'FJ+$=e0md<+Lo:`%Y`l5o.aH.Qu$FXWq@dMaPQBmhLc^kRO#`+=oaiVX:o4-.-*BOs-fZ3jCZY,=g?&5_](+lm2<[I.e[F:P!c2l(mJ6N^13I:Gf:$sBe(+nP?0'VWbc'gN=BWtFPY:<-],2S*1LPm9?BTQ6DBK_.mS=&2dP^tYoc=+#bZSh#7NupS5(IHE*=TPpV((RL:BYQdXj5YHJQ/Tq>K=Bo&WM&UDpbMIJ`^mf^Sb1lgq'4NhiHr3W\!ED\k]id-TZ)?gY1u=0EZKO5.L"+%u6H1G^h_!Hf?If/)S=+:o>*7p/AtC204rD('lXjfG#)@U`e5BSoQU3oLhX8.3T(E;\j9+@f0L@r6(bggO2];aYaH)WNpeUP%N0D2T/]6kCIh%*a]4\T4OU[lb7b8^EtkH)d1Spu\&a#Yd$^_?AYg!,4`ZkCZU#aqKcBaN2Gl2fBa$I!G,:]rnN@PiiSk&e`\@,!c89LT22OO+$cYGC3G_T%^SfdqL3`0,I-25bOAGTgg7rN,WubQXHBmNPb-c=')/n'6@eRr;HBIbiPMC5CWNTndf:D09KTik8Wa5B?d:^\&Ml#9H!P5jfm604%Ua:f1)@r\'g&eHUa^DL$MQFMI\>\)0SfR"#tD3=6ej#7]8%1!4F%1R1/[Om+>ck>Km!f;bjF?d.?[2#TNaMCN7#b;,p"R=L9USs*KV^H@6;J4+7-)saJSA:(]^tID/h"`+o%R=FabaIO@Z?GV=[a'C:CY#Rq?s+jPr:.4?SeF9(*R`.0HSd\B^8>f4RPTA]9[;3;6#g;PcY:4h4R@+q1Bn58PM!mX,ET>&/Nuj:@N^b7!\R?QX#Pu4(hS!uRFs]^M:bm+S9_KDVI=6P.b456#(T]@j#BC^d"hf6T&k@I?5g(cA41fRsc8djDS32'09i,\CD"d8NL]/SB+FqKP!C]FGM\e$1Gjlh_"nIT:`+IuFKt-4M#^R%(I../JkEl([6pMm9l)i)"kg>%Ek4$O9b#bcQ+`"E,lddXl[\3YFrqq%-6%MLgkR9H1fs>=]C8ir>Y@"1A^jB$V9_c-!b4tMe2*-4Q8SDe9_>B$=]Ef:/mbPK*Wr2+ZTAnEG'\1aaF5^juUI#`otG]Yqb,*'Sc&d*Rm0/8*;#j]o+.?R$5d2V8LGI!g=+op*$dc7mHX,a,;HO="[UBmomP-$PitM\fk`=EOE3BtBleg)5lKVbU(rE,fk07t?h\Mi/f-i1Pum^l1&FY4OYJX);%^cHaE]LOV3ufK_C`eui;:>9+ggcm8Y0M%c2@Q00FlnpQ'QGtVje[:mi.3ihUlXLUPU_]RNZ+15Y#kNt[/CV@o#Di%-j8jBAGC#r[a>Pq\om=2G/FC^:nl0N7n0lDLUOY"PQDtHO=HZdR11&k:i2i&:S4rjXn#DuN'`GXLPIB:hnOX_[h_0\^3r*!LbjSMl$s1F[r*3lIhqFET8eg>V19phSqnUV/s'RfZ?ZV2B"#kJPEM(sd)c[8='&IXMpYEkH)1X"@54O5N\3EN8'-;a#8fSEX]r8R$NpHi0H=@1D/1Fb!;qq?&90PJLsj^L67Xd\6TfDMLuK=0>7aXV5:Aj4a\b&!\ehd^jKd;:!%8^HFt?qV(+j,@ANCkYKnY6?aH.!e,GM'4VK>lhY6bXI'iQ8_FR7YB+oA205r17XXJ6?])3?pILCU0HhP0*ZNK&p/(hLs]2b-e(cIn5"Pn"fqW4#TCE%q*V[r:/]s"sPjhVPtfkK^S;E$RG(qMp=W,+B;rZm!"E@/$]Qis5[;fBZDG>9fLCP>&r,qu7oiOUs:K1:m]mB?jX5F%HW\jr8>oNhF!G.?:N(sLA(IX'QBkaQ6_PGD?.8s2ML)f^VRr?#IJ@);5*uNQBjFHgc4H!4+6sIGU3a](p-uLU?q7V)Di"4%%8l*KnZ'WEIqWFR"5a<51?+IbY1@`TJ`;":KCLsMLVn8YeVbekGbG[EH#l)FrpqbPVO<,/&(rP9?Ib%W)4eP_MjG4kQ[feYq]R%P!U%b:r1SV9,7K`\8c#t^VE,n5m[u0D:>AA=qBWTk([(h!!iXs'5>mj$!q%cH$OMlYtLE9GdU*MnmWk*3]\W98,7Yl]mGN=UMbZermtM,`.Jk2r]21Mk\t%hB34s+UDf]Mi'?9Gd2X^m$9Hi3Y&.gO/\E=-T8j@Ddi0V>V&A'L\qfK+C/]/PTEEV54cmB[3,.crNJ0<`\qG?[o>#*scs7DS6#m3.uq19'Xp*K3R(0":lc.>FOWGbI*4>_RQH,#\`mNo&NB.mK:_M+N5q*-V3=&+XK!'23buCeuaj7RcGT`),Xd[Di\+klp2"BL0TCBXK8KQ.OoD<"oseLf<:fWSHtrgVbUc2T7?i#DI$.Nk007S[Xo42S3`1Ncd-OZW);p;8)qUK+mq1[D[[^O>fofP_1Di$@;Xc-`N;dj6q9b2gF>'<'t5f`;,pVM*5Td_/(se0-!e*(O_LI]!8u)>M%f,CKG90Y^4#n"_Ras[Na%i<))Gk5TrfqS^5Q9\4K,?_I.?48RPek?p^U<,?b_W5.KCS@F6CiF)\/SgV.+s1&lHDmrG_(c-t-OmjQ9oB=TtHn*Y]m:f\9PCRD.otRD,t6\'H"18k_;8a*=]sRjE?cYOU7e/E;*oST3p"?'TE,%c%rBq)Kl5g>@7!DNYGtBj5.G`,(IF]*"g;7G_Q?HtT]PQRT7'1BUAFQKp[6jaqXj"k2f:a+qQuTUfB_%lZa-m(pK>&;\P\A--RU:hWWN6GZ+%3?F!@$?RCLfGPF\7=(=p3JHec1X%@K+u%=8VGmS>dT=.aiQit,dc@X125mH8WtQXc^d.Ap_!u8;?fj`kaY1kHou:hs-/h8P(e>ZiJ4pc8Xa;dZ#IS=rZH:#QR3]k04jVShH3B+PjVO,AVoJc>'%H>7]nrKu;3]NkpcA-8e%i+UM[%fRl68-%5qn!KlVLd]Qs,6l>#,&FI":MShTr%))GkiDHoI$-n6^@lgp#N0?1-^?T)`Q5Ul0GR5;@L8Y&;.(6RA=fWeqrFm1Z8KnZ!SD5%tJ6\c/*fSk?@;,pUbfAQrF*fO=Z^E@/TVpNZ3/35i'XK8Mc4_Tib)d-1_aN1#j\&?3QgsU;7q"T+)WD<[1R@=3WO3jA0g"De!MdF&@&[sRsi00`qHdWdB.I6qFpo0N5!G501H.6/[kn*CNJ.`Vd[=Pn`9o-,/EG_W%,M5pJ1^VR=0Gq-[SKe!&oME0!G,)`,=ddPecc&dZ%)e&3]e<%*K=:Z^Mn6<#4UL3^JKCErU.;di2*%O:sO[XeZ4I0(BEq/_kHaMp[7!@pFj^V0B_[l*#or;bK!C]=W(f2^u5H:(clae\acNcXr%.`iUuNgF;ENSc47=pJ"_h_bF[eUADB&X:LIQQA`LSr6P7tWB+MQ791hfqlN.'8aN_u+1VZkd:;s@'s$O8(Oq$HlO2ihZ'%!KBK:#h/Z[).SEjM*uQK$I!!;o(ujNp/$Df212I@?^tSX#K5il)9q8&q/^G:m+.N$1^(.Rccp\E2b+1*eVao]X]lEC.""eGH`84^OuN\*.I2KZ?_M2B'N:+FoMg/9iV[;4B59@HU1SifS^m3+iOi78&3Huf&RANKGKl04%/*F$mbM67Uk;,OjR8VNV%RXY53;7=ojLC\C*dl"eN]I96f,+&Bl7RTWISb_*QFXq?P)DG[@%*Da9J,UFs1^T;4R7[._6UO4\X4%Y1.kCA^h+QAFWMul,"Te[r0Ze>1(_o!]Q0G#hYhS"9&St:sS+K,kBC^P<\['VYS5<^I?Tgghd,n64k"M8([?6X]gE_*Eu-.8iRcF`JYPuiVB\Jo()7`qi7gR"q2=kQXISLEBJL8!%ffA2JgIF%gWM1mKI\OL(oF9lds1Z:'4\-C;kIc:Ra6O[sSSu(Dh;`gmOj=%NRT0<`XrZ-3Zqc:f,NID;/7$BYjMYW@(apj`lIDpOF3>OfIU!6UAP,Tg6UF+UD/I&`jr8.Y[$X+C90c94GO?I,-jU4i`3#%OBM%mWO$@Y+n$?ZQ`a&[/TXDf7n`/0.cg]o2Y@#&9QBikp2Dg1T.h3L;)s.m!"Bi3O*CT2soEU,,lW^f6_6$H7ct&Co@]`gKeZ+=-4uTFAX">kRfXKCi))E6Q*Q,e4H!dME-i!E&>NDoP/6Ti1f9=]<1,;0ri3uhh5iOJNo53?s3GrsXPFeA+X:XqL6\c0=hS":%eubDuBu4KWbB-Ai?X1-^Kq$a84F$Alp$:#O?bCWGR[T*R!LoCVXK9XhbDV46naZ.S\$qtnIX!+!%4A0Sob'&QOZU77H[.5"Uf3jOoR'XcC['Lb9[8'JM@#>d7bWji`ut^3l?:RAj'O)eAOj.Okc4$;sc"_Sa9>I=3+V*OfqB3dpksNZC3e'OY]l$Sb\YOa"-RZLqWuD8/+b6\:Elq%=jQ,C^a,d]Ff8^r&^m\iXQFXW>Vl-G&Ht@tK9bqp4`XQ1!!'mi#A7X&HAHrGFh!28@]"4?hj\2F=NF5CD96,)pdJSCBW`9,fUh\_sou;t1!s/NLoptrWT7/!J['I!S/IDKR#[PUGrr)`SQH#KDdaIU!s.7&GaX@b*UaRcF$k!G1$WscBi-^F[M_DeH]Qiu.bEq,!H%V\&mQ+3dm+=%Els[edi>)Rs;M8I_:/Ok#DKQqe0OY$8&IT'Y`[t"WW2ZaF/hTmj8O8rea2dAcPq,@b*3lr\hQUF@\[f8)KuKo`RquqY;'5E#nqr6ZaNDYg9AI_Rc_$DJ%W5,D+@XYeVDGZp^:q,-E?R(mP/2bnK8*SQ+9QY)ElaeAkjSBK+B&IT*_^9dkKK?H>8e=)eLfg,OA(_md>>8.'.Oj_ZU3iadO@-Odt\#-3dN&&HVfU4gF/tr;-HLqKP-if>WX&c?s[(;/30?,S<@m9_L'?[m[QnSQM1dFh&gprWqKl5e^NE[(s8!!@t1L6T,*+8.'.(P^9%;Fn:A*X;oT\r($2BB*"taG,Th0,"*lE\"Xg!J%!!ZtU2Mm?Q9+m+&.P)$acs6CC"&rhV.i1`70T4q5pRd(iYDg@K>i`b'06XlK*MCa(`=2gg>;>gE88ku^t@;,cAAoGh-.NI_#Q3(hnD7Io0?2'!)Q=%BIK_ESNhTfDJ:$In*eT,(hqBl77p/ZDN01BTj5pd-$gg:i2(MXcBPb=;X#6i@=FuJi510Ue^`3[Pl_R%/\MH2VJY(r\4$FK4J81`+#n3>[knQH]6CG^5>n[k]j%s`5qE_#bdMBC#eagJqXq?e!J!;2WMsUe\1si1Pu0Z`U7rj>:.34OUISn&c2rZR15)i)1Eul"(@L%m95/4G?b_V*RKeiaM_R"uaH.&_:-E7V67E:/2:F?>R(/AS#HOpu@Fr-SDU3\,[Wl\p*U<*`,S"1m.$i.PEH9Mi0qtnEA8p99q.)p=jLGqiMXG=s*p$]0c?\AS#G%IXYa8ildZA]tD"JS=K<>fs>GD.PrmDf<='J?[T]h_0,2$fu1g>qtBEU&C_A"]Qf!.)53atkeFTCfg>LuP:'/cD?'Zu.j6&ZPf)e;X]r<3nH55l^4-$,euW!or(*qn[D7jm$hEke8WcSgF*"[q[@K6p?FOh.3'8+.JN,XiTFKAI9qr\23YhbuR4Jj1V.%8r"U,(>[EB2iQplo@jM>,-?-s9mjN*J;=aHc$HhK#YV?-aC6PnHX`s,UbEA9Bse$j7&3:j;=MMd:u['ZL!T_%?mY?8&]]_tEjo]js7NXGl5G2_gQ<%\onDUl-+Y:17\bGOJ1Gq&?ZCs[`7un^WQBp.+?OmVV:.Ro@m]W:VTX_KK4n4De$FGbTl$daTO<$na8X+j,2n&T]#&_s*SIG.JXR+2WqX]j\d"J:@%L=2nkQ68,(gj&S]SW'ih!.Z,Bk&p(F[3L`>S_9TVm+=$E9j(.`%.6aW5[%?[]KVH>4$2J?1B7DW&KMld3JsFmI>V5I59NIaS=KNBeZ5pYY_\*kW:rE%ps@gOS;fBnDFf*`c^m;K^(AS_"UM:9?>t!u%Kc]W_P'>P.*&X=Di$"o.62nW4L7>C3d%HgGI`5'^&cf@IoTKKnaZ-FSih"6F$"jKpr8:49h\6lFQpZWp#grcD;)cU/-(bJBWb)Jd:h@IFh"9)6"+1F10eoZX`N[Ng(^^6W@,qB6`BEdJYrCd,6_b#kMbA3&e]dsHt`%miPL;&$Q!P]LgKJM"ot2;+X)DW6pH.u(q2=VTM.A>^sLGiF0W9d\]Sq<^9%\:34bkPCAIMN:XO(u@]q((-(R2G[U6duC5_ZRne/:[!!)N0eZ2b#a0e*a4O)!iTegIi]6<::AlVj]^juTQjiAVe(L!3MR57>X&)um>b'oIQ>$?76aq_L^/1iFWXW7BA6:5HPk0KZ\>F47r?TO>.r(Z7=?[bj(7n2tC042H;`dJgjI(6i%>gpR9S2ir!s"mI0(Q-in$efGD]YH\Za7!u:uK?Q)eEk0',)$LN#4k4-9HD;i#KjXp$1(lAa8?e:&rX._Sa8?a*;uZ4Dnk"iT9/iB.X^am`qr9X"<]![K'aKR$=-AK?h+>gBl#mgo$HhO6d7p[\X!dni:X/`1oCn)_?Npoq1!!!X?n`%OKOhQ#+>26]6L1+#HJoThjYq.@L,@eWG%1G\Iikr@SUo1+h2NA9NEreNj.5*?P4?DHdlAAdaDe*Hl14'RcO,o@UEaiNgJ,T%Ak&P4eW[0ukUebrK0P1,lB4p7j"onYLUo("eNq_c$B\_$\+?)6g?G1Z"SHs;nq4sg^.9!+B/Hde:_?A8d-=sj']d_\@3F^dl!!(rLTV*FuGXms4\Xsij.4Jue]!Y_bJ*PN4L-gn?3Prda.+l4[[qN1512(5hffhI3r=8o#(Wp8kaQ4"6M[r:.>\W5*k/hk/`OX"j=!rtS7[Vabg*qe+8f!ojBK]0/).bCh/UFTd7b*&eL*5s[eG<`@ud)`EY\Q/m02'*&#ujQG]Ur:.hgJY/O*Na!E+.P!%&)#Q*u`mC!4S=Ig>K,A:mp+IX8A,lQ,hVR*OZJ7huIY/!!!91jjC`,/R-A/!r:cj"#^@U_19/0]5r$;"t\VE]mfq6`5G&`0o*Q!o&@ZK)jIH-#=\\Y[u$!"+qOVAj2XeKit?p<7uss\p1U$k=2Me+#<=jXKThT5g#86]PT\kZ)Gs+>&ed&g))<*CirXbVoA[^so%=!@pYTuV;@aD^`meX3AC-UGF6?4t_Q=1G!5Z3ek72e4UU_[g?*p7r5"fB,'bs/?_Xls:[;ln=>eG;Yj9C_JPT/JfD;0eL(B=GEE:`3dZ3:LA$cB*)Q?267Z*EID>IL>$s,iG+Tr"Z[j0R&qPJuYe17k)/>*^j^i^@g>n=g?l!9rP+k!lcZEH-!.F\u(D?I%!!)]9NU5>SLjb@lc\K5:/Hfi-(1+[,ff?>@\toYf@&'^:q<4%D/mM0f]qqn(tacneO('jfAoZk09CMgY6LB!bJ5Y.DHZ&!.]:7PK?:R)G)i_hX]dO=k`R(A&])(qpqlR[Ib8G^A-[q>YUnT++O3.bEa`f.=lMfGO3s:^(^VK+:J,Fr!7J=;l
    A5L$GP7HhZrBkq^=RR5+qUCM8R!$G!^Xg(ZkKUC!h.!C./=8%9QpA4T-X"`@T[W6MJ?i;3-4M@\TaEH,63"YILfp)EGni/XN=rr2oN'Jb.8GX@l:)]SCF&-)\J&Jc-OYQg:<9p4W>\ql.JND+c,B$Ho2I>ZTVS=Kg(X&lLEh&%+tN`Ap[/N;dSEt(g530>kV!!()uf[s;X6'sTLSi$2FE]Ef%Df(["g<,KL0'e=6]U*_-26rTT4Y[KoErdp;a!sdh'#*'B6(Fs9p9f_8mZ*^n!9-aK;EhoA$TP)TBWb,\q\okMO;=jMK>CN+E#B7-Q7oV9sE"65NH%aYgabaB(!!((MA6#L%SZ6EB,TG#Q-RYffT0@k=$@7d6ghji\Vb`p7X2$_1Lm=5?\NsQ8HH!'e!!)(N9hc(#J>aBAh7Imk(.CqtCOceZ2^Ca2Z,^YG"$%K[q9@7ZF-XMQ3[+J[GR[+A:/2dL6QoQ+"QG_#_"h-:1'e3@lQi5Q(#'U4a1-:2':;TV*F/2:_cuOoM/M,/Q4hY$Ieb!gB7Khn=A\\jgXYE=o#O!!(*'daD$'@q2@S\8^C.DFI6`Q^:Y=*E()PkKakh:rYM.5dF6;$(.*IW628K]/JULAQZpQX=VnO:JOZf=0EZNo`kmB+CZVs!0A]h2E"1>EV]0:giCp6il-fd557Af?dPoZ2s&?f!Wq$SE9,*&jS8=E_oKfQ+FDY=D&3:_7t\?ta5PqHJphTo9pLN\WgPG)D07RQ#.[(/-^=Tc+=)dA'2h2)T.?YfNO@!!"-!o()@#pu)I3)3MlSeWQ(.p,T7&I!h/C6tVbHY7uBWeQ6G0O0PQmMMmD)G3qnf3cjFWe]W.)hQ?Y+Rl>7\SiiFOZ=oAPX&8ota;rfF.P`unjfj?ukAio36HVF-bQJ%Oi2S#Qm-O(>X]eSZI/NcEo!5;tY7ggq@))d)3i`0!!!%Ng[r:/)Qk]07\@&OB/JBP1jTHVgI&QrLEgIai!,p`,)1,hrW2M*KKuu&.QS)RlW+seZ:R>eB0E;(uaP41B5Pa@R"8N(_WiE'C6j=n-h07bUr^?!$254g6VW$Lm\>mZPH2mmBMT[h>T'>@uKr[ZC!9bmY,pdWpbX!#a_nuSc(:L/9;h^a:nm^[(1pXKgm+Sj?jP@RrH$Kc6/nA"JR@0J6SZVUdLFPB0mY(@m!!!;Ffs><#A2R;n['XAJR=tK1QS2]XDf5q=C=Geb@ocEfZVqq;?sr9LW>b/1*]@h:I!iR4q>gTCF$`5]%K:QqPE`&FW*hNTWkk?m.:kLqHhM:79Qb_cLgaN/bOI;HY^!i@#pS<'h%-e!!$D=hnFN_G+NY93=;pTE)nU.p#/$5qU[D/J?G\ULa!!$K5Ni()@[k.JE#TVjo@4XBDls$\.m:)<\lIn`J(84rP@?!'k`6$k++8E1f\/<23,)dF$@s/GAAZWu6eSM2C1lX>[.b\Phbe"onYM&]2H']6E_HW?E9:@YCU;8ki%11nQj=e##i]"VqmjCK_W`BR^-t!!#7h?k\EZba2[c=]AA=iHE8%*RjXegUD+!.rE+S"WYJP!kPcTXUY=2TF:Pipi*I0A&aJdG1>s)Rl;=)8%0*;$Obuk)NR",oLQUV#64ac0cVD*euD`nc-;7&m0X4/\_67TIee]'5U.KuD?]S:bC'No!!'TcVE8^7gpj'&f%+j$`c3farVH13Q^3u)a/q1Iq>'3G[+TV4l2ZbpAUbGOJiibN'8B7ao):!!!#["f4B[rV,4Fc#m>l<2@3mp@\))'W];U0-*/<4aCj#!!!#`6YQu#oCMdkbM'@>[5ZLoDsO/gO4M$II^sh"0#(*c!!"-QaN=F+5D]:/j\*<]1uZF-q!mD?.[`dZ?G+?t!s/H&8MbJ+:JoI+`.!'&F':2Xj^%^K=WA6$Pj!!;$:KD'g+8=0Gs#=MBu_'9C0/j,ZE*29t(8hE2S!00OXR84lM6YpBDN!$k*==rP6R"U52%3s!5(Ynl@%[1$,0$?Za1=^11t64.rV\7ku&[B_(WEDm>?dY,'Xd^3)W[R4ZkikZ+l\#1E8W.**lKA;o@59!<<,X"nI&4(J@b3=t5V.*^+hV;IOs#]KgZQLo*n9IeMH-P^d.Up>*?)UC0hh5-=d)!<<,XSVW(-RkhN/7^OO4-@\.b-\XnBFRsE=ihgkU3%e3-r=coUnje`UIM4h&/H%Ym@sgb!"^2^N<]t8XL)90V5;ti@9=GH^ANKZqDBoqf\"iD>A>`=nGN*'AV1[5([p(cMf?MXSNF6-XoJG%@Sp!"0lc2@L&'H4E?hqZrqPLa8qYg3It-##1AlTKDqD-4O/7[8C&pb%Pa%E&3d$=-6)RJKWiE(DGch#H!+LNGr8P\R'h0`:4IebFldi25[$dnmWN)<@\ogY2""ed47rm&,e#faSl)mTQ:?L`5!WW4VMh?Wa11GumL)`DAg=tAGmGX[er^jUN-722I)_GoMn)!Hlj$WV85p.9mJ>\//!!%P#=0GrO9V+@Lm58P%SDi]e!WW4.""cllJq>iX4u'$=n2%S!!!#[b3,CH:,%Wk_#pa14b!q&>LL[U>dU_LaR;f;?!!&\%\``^Cu2g-bXVa8!$DXTR1if5CrnBa:.\$nA]+$>]6ODW!9bO.aDuHIB"0fW1_c9&`s'BG$ig8-pkRp#R$3A**`NiBp?gTj+!)5M"q;Kha2a,3'EA+5j@aN61:!;Tj(W+;`dG%a=V9mH.Okc2#S?BHZY%H3/hRp;nGrUiF9#i-J,8CWKaB&\5Tt+7gc6q"@nc*T$`P"qQ/]mKKKfHpe&!75H8h;+2R4`]V>g+1:chAHS-%+N_BVl-FCDd?LK8^7jC-.f;*'=(mE!!)YFkic[^RV5k->[:W[1ULI$p.\Jng8PXKJ_/q(G9[H$O[aIXZ*K'cr!3H_2!2,B@77FJdfZ7)DXq(sNrUeQ7\X@lb(O!*7?G1Z).o90A9q)n;)_5e.!rr>b34ZT1CgL*jh\r1+^.+aWNYa?Tbg4TOX!%KD!;%(':JYSlChmfZp^(,hq"srL*^*\*o=eh]Rafhd8f;;RKTrQD]=)G&VVHQSZ*CR?ZZB_jVXSF,!!!#s+'D`Lbb=(op$5-D@2dDaDr/,eA]b^HXSr(moBA#F.4?c"IJ``?]=[ss]mCPH=>5!hi30lkWaWf"FmIUqd\KHi%NU#ni[(nCQ1_d)FJ3NT)!69N]'E~>endstream endobj -56 0 obj +59 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceGray /Decode [ 0 1 ] /Filter [ /ASCII85Decode /FlateDecode ] /Height 523 /Length 102 /Subtype /Image /Type /XObject /Width 535 @@ -475,11 +500,11 @@ endobj stream Gb"0;0`_7S!5bE.WFlYNTE"rlzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz%La%hpV[~>endstream endobj -57 0 obj +60 0 obj << -/Contents 142 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 150 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.d3ecd28ca03f587d6940049748681018 3 0 R /FormXob.fc331aff86ff817ecac4c4ce4b2ecd3a 55 0 R +/FormXob.d3ecd28ca03f587d6940049748681018 3 0 R /FormXob.fc331aff86ff817ecac4c4ce4b2ecd3a 58 0 R >> >> /Rotate 0 /Trans << @@ -487,9 +512,9 @@ endobj /Type /Page >> endobj -58 0 obj +61 0 obj << -/Contents 143 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 116 0 R /Resources << +/Contents 151 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 122 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << @@ -497,309 +522,325 @@ endobj /Type /Page >> endobj -59 0 obj -<< -/Outlines 61 0 R /PageLabels 144 0 R /PageMode /UseNone /Pages 116 0 R /Type /Catalog ->> -endobj -60 0 obj -<< -/Author () /CreationDate (D:20260418063437-04'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260418063437-04'00') /Producer (ReportLab PDF Library - \(opensource\)) - /Subject (\(unspecified\)) /Title () /Trapped /False ->> -endobj -61 0 obj -<< -/Count 63 /First 62 0 R /Last 62 0 R /Type /Outlines ->> -endobj 62 0 obj << -/Count 53 /Dest [ 11 0 R /XYZ 57.02362 525.9477 0 ] /First 63 0 R /Last 115 0 R /Parent 61 0 R /Title (Lumbda) +/Outlines 64 0 R /PageLabels 152 0 R /PageMode /UseNone /Pages 122 0 R /Type /Catalog >> endobj 63 0 obj << -/Dest [ 11 0 R /XYZ 57.02362 346.4013 0 ] /Next 64 0 R /Parent 62 0 R /Title (Abstract) +/Author () /CreationDate (D:20260418100555-04'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260418100555-04'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (\(unspecified\)) /Title () /Trapped /False >> endobj 64 0 obj << -/Dest [ 12 0 R /XYZ 57.02362 303.0236 0 ] /Next 65 0 R /Parent 62 0 R /Prev 63 0 R /Title (1. The Problem: Interpreters That Cannot Feed Back) +/Count 67 /First 65 0 R /Last 65 0 R /Type /Outlines >> endobj 65 0 obj << -/Count 2 /Dest [ 12 0 R /XYZ 57.02362 95.82362 0 ] /First 66 0 R /Last 67 0 R /Next 68 0 R /Parent 62 0 R - /Prev 64 0 R /Title (2. Architecture: One File, Two Evaluators) +/Count 56 /Dest [ 11 0 R /XYZ 57.02362 525.9477 0 ] /First 66 0 R /Last 121 0 R /Parent 64 0 R /Title (Lumbda) >> endobj 66 0 obj << -/Dest [ 15 0 R /XYZ 57.02362 189.445 0 ] /Next 67 0 R /Parent 65 0 R /Title (2.1 Type System) +/Dest [ 11 0 R /XYZ 57.02362 346.4013 0 ] /Next 67 0 R /Parent 65 0 R /Title (Abstract) >> endobj 67 0 obj << -/Dest [ 16 0 R /XYZ 57.02362 655.0236 0 ] /Parent 65 0 R /Prev 66 0 R /Title (2.2 The Bytecode) +/Dest [ 12 0 R /XYZ 57.02362 267.0236 0 ] /Next 68 0 R /Parent 65 0 R /Prev 66 0 R /Title (1. The Problem: Interpreters That Cannot Feed Back) >> endobj 68 0 obj << -/Dest [ 16 0 R /XYZ 57.02362 245.0236 0 ] /Next 69 0 R /Parent 62 0 R /Prev 65 0 R /Title (3. The Explicit Frame Stack) +/Count 2 /Dest [ 15 0 R /XYZ 57.02362 765.0236 0 ] /First 69 0 R /Last 70 0 R /Next 71 0 R /Parent 65 0 R + /Prev 67 0 R /Title (2. Architecture: One File, Two Evaluators) >> endobj 69 0 obj << -/Count 3 /Dest [ 17 0 R /XYZ 57.02362 566.6236 0 ] /First 70 0 R /Last 72 0 R /Next 73 0 R /Parent 62 0 R - /Prev 68 0 R /Title (4. Continuations: Feedback as a Data Structure) +/Dest [ 15 0 R /XYZ 57.02362 160.245 0 ] /Next 70 0 R /Parent 68 0 R /Title (2.1 Type System) >> endobj 70 0 obj << -/Dest [ 17 0 R /XYZ 57.02362 159.0236 0 ] /Next 71 0 R /Parent 69 0 R /Title (4.1 Generators from Continuations) +/Dest [ 16 0 R /XYZ 57.02362 619.0236 0 ] /Parent 68 0 R /Prev 69 0 R /Title (2.2 The Bytecode) >> endobj 71 0 obj << -/Dest [ 18 0 R /XYZ 57.02362 581.0236 0 ] /Next 72 0 R /Parent 69 0 R /Prev 70 0 R /Title (4.2 Why "Feedback Is All You Need") +/Dest [ 16 0 R /XYZ 57.02362 209.0236 0 ] /Next 72 0 R /Parent 65 0 R /Prev 68 0 R /Title (3. The Explicit Frame Stack) >> endobj 72 0 obj << -/Dest [ 18 0 R /XYZ 57.02362 363.0236 0 ] /Parent 69 0 R /Prev 71 0 R /Title (4.3 Four Scopes of Feedback) +/Count 3 /Dest [ 17 0 R /XYZ 57.02362 530.6236 0 ] /First 73 0 R /Last 75 0 R /Next 76 0 R /Parent 65 0 R + /Prev 71 0 R /Title (4. Continuations: Feedback as a Data Structure) >> endobj 73 0 obj << -/Count 3 /Dest [ 19 0 R /XYZ 57.02362 765.0236 0 ] /First 74 0 R /Last 76 0 R /Next 77 0 R /Parent 62 0 R - /Prev 69 0 R /Title (5. Optimizations) +/Dest [ 17 0 R /XYZ 57.02362 123.0236 0 ] /Next 74 0 R /Parent 72 0 R /Title (4.1 Generators from Continuations) >> endobj 74 0 obj << -/Dest [ 19 0 R /XYZ 57.02362 737.8236 0 ] /Next 75 0 R /Parent 73 0 R /Title (5.1 Peephole Optimizer) +/Dest [ 18 0 R /XYZ 57.02362 542.6236 0 ] /Next 75 0 R /Parent 72 0 R /Prev 73 0 R /Title (4.2 Why "Feedback Is All You Need") >> endobj 75 0 obj << -/Dest [ 19 0 R /XYZ 57.02362 591.8236 0 ] /Next 76 0 R /Parent 73 0 R /Prev 74 0 R /Title (5.2 Inline Cache) +/Dest [ 18 0 R /XYZ 57.02362 324.6236 0 ] /Parent 72 0 R /Prev 74 0 R /Title (4.3 Four Scopes of Feedback) >> endobj 76 0 obj << -/Dest [ 19 0 R /XYZ 57.02362 391.8236 0 ] /Parent 73 0 R /Prev 75 0 R /Title (5.3 Constant Folding) +/Count 3 /Dest [ 19 0 R /XYZ 57.02362 765.0236 0 ] /First 77 0 R /Last 79 0 R /Next 80 0 R /Parent 65 0 R + /Prev 72 0 R /Title (5. Optimizations) >> endobj 77 0 obj << -/Count 5 /Dest [ 19 0 R /XYZ 57.02362 231.8236 0 ] /First 78 0 R /Last 82 0 R /Next 83 0 R /Parent 62 0 R - /Prev 73 0 R /Title (6. Benchmarks: Three Evaluators vs CPython) +/Dest [ 19 0 R /XYZ 57.02362 737.8236 0 ] /Next 78 0 R /Parent 76 0 R /Title (5.1 Peephole Optimizer) >> endobj 78 0 obj << -/Dest [ 20 0 R /XYZ 57.02362 607.0236 0 ] /Next 79 0 R /Parent 77 0 R /Title (6.1 Raw Results) +/Dest [ 19 0 R /XYZ 57.02362 591.8236 0 ] /Next 79 0 R /Parent 76 0 R /Prev 77 0 R /Title (5.2 Inline Cache) >> endobj 79 0 obj << -/Dest [ 20 0 R /XYZ 57.02362 341.0236 0 ] /Next 80 0 R /Parent 77 0 R /Prev 78 0 R /Title (6.2 Analysis) +/Dest [ 19 0 R /XYZ 57.02362 391.8236 0 ] /Parent 76 0 R /Prev 78 0 R /Title (5.3 Constant Folding) >> endobj 80 0 obj << -/Dest [ 20 0 R /XYZ 57.02362 135.0236 0 ] /Next 81 0 R /Parent 77 0 R /Prev 79 0 R /Title (6.3 What the Benchmarks Test) +/Count 8 /Dest [ 19 0 R /XYZ 57.02362 231.8236 0 ] /First 81 0 R /Last 86 0 R /Next 89 0 R /Parent 65 0 R + /Prev 76 0 R /Title (6. Benchmarks: Three Evaluators vs CPython) >> endobj 81 0 obj << -/Dest [ 25 0 R /XYZ 57.02362 649.0236 0 ] /Next 82 0 R /Parent 77 0 R /Prev 80 0 R /Title (6.4 Three Implementations Head-to-Head \(i5-8350U\)) +/Dest [ 20 0 R /XYZ 57.02362 571.0236 0 ] /Next 82 0 R /Parent 80 0 R /Title (6.1 Raw Results) >> endobj 82 0 obj << -/Dest [ 26 0 R /XYZ 57.02362 703.0236 0 ] /Parent 77 0 R /Prev 81 0 R /Title (6.5 Native Container Primitives: Moving Hot Loops Into Asm) +/Dest [ 20 0 R /XYZ 57.02362 305.0236 0 ] /Next 83 0 R /Parent 80 0 R /Prev 81 0 R /Title (6.2 Analysis) >> endobj 83 0 obj << -/Count 7 /Dest [ 26 0 R /XYZ 57.02362 259.0236 0 ] /First 84 0 R /Last 90 0 R /Next 91 0 R /Parent 62 0 R - /Prev 77 0 R /Title (7. Portal: Feedback Across Time) +/Dest [ 20 0 R /XYZ 57.02362 99.02362 0 ] /Next 84 0 R /Parent 80 0 R /Prev 82 0 R /Title (6.3 What the Benchmarks Test) >> endobj 84 0 obj << -/Dest [ 28 0 R /XYZ 57.02362 765.0236 0 ] /Next 85 0 R /Parent 83 0 R /Title (7.1 S-Expression Portal \204 the Portable One) +/Dest [ 25 0 R /XYZ 57.02362 613.0236 0 ] /Next 85 0 R /Parent 80 0 R /Prev 83 0 R /Title (6.4 Three Implementations Head-to-Head \(i5-8350U\)) >> endobj 85 0 obj << -/Dest [ 28 0 R /XYZ 57.02362 523.8236 0 ] /Next 86 0 R /Parent 83 0 R /Prev 84 0 R /Title (7.2 Cross-Implementation Exchange Matrix) +/Dest [ 26 0 R /XYZ 57.02362 655.0236 0 ] /Next 86 0 R /Parent 80 0 R /Prev 84 0 R /Title (6.5 Native Container Primitives: Moving Hot Loops Into Asm) >> endobj 86 0 obj << -/Dest [ 28 0 R /XYZ 57.02362 323.8236 0 ] /Next 87 0 R /Parent 83 0 R /Prev 85 0 R /Title (7.3 JSON Portal \204 Graph-Aware, Continuation-Preserving) +/Count 2 /Dest [ 26 0 R /XYZ 57.02362 215.0236 0 ] /First 87 0 R /Last 88 0 R /Parent 80 0 R /Prev 85 0 R + /Title (6.6 Memory Management and the Meta-GC) >> endobj 87 0 obj << -/Dest [ 29 0 R /XYZ 57.02362 739.0236 0 ] /Next 88 0 R /Parent 83 0 R /Prev 86 0 R /Title (7.4 Binary Heap Dump \204 the Fast One) +/Dest [ 28 0 R /XYZ 57.02362 585.0236 0 ] /Next 88 0 R /Parent 86 0 R /Title (6.6.1 Meta-GC: Arena Fast Path with Mark-Phase Verifier) >> endobj 88 0 obj << -/Dest [ 29 0 R /XYZ 57.02362 487.0236 0 ] /Next 89 0 R /Parent 83 0 R /Prev 87 0 R /Title (7.5 Cross-Process Benchmarks) +/Dest [ 29 0 R /XYZ 57.02362 765.0236 0 ] /Parent 86 0 R /Prev 87 0 R /Title (6.6.2 What the Control Group Tells Us) >> endobj 89 0 obj << -/Dest [ 29 0 R /XYZ 57.02362 173.0236 0 ] /Next 90 0 R /Parent 83 0 R /Prev 88 0 R /Title (7.6 Mismatch Cases: Graceful Degradation) +/Count 7 /Dest [ 29 0 R /XYZ 57.02362 543.0236 0 ] /First 90 0 R /Last 96 0 R /Next 97 0 R /Parent 65 0 R + /Prev 80 0 R /Title (7. Portal: Feedback Across Time) >> endobj 90 0 obj << -/Dest [ 30 0 R /XYZ 57.02362 601.0236 0 ] /Parent 83 0 R /Prev 89 0 R /Title (7.7 Use Case: Distributed Primality Testing) +/Dest [ 29 0 R /XYZ 57.02362 339.8236 0 ] /Next 91 0 R /Parent 89 0 R /Title (7.1 S-Expression Portal \204 the Portable One) >> endobj 91 0 obj << -/Count 6 /Dest [ 30 0 R /XYZ 57.02362 400.2236 0 ] /First 92 0 R /Last 97 0 R /Next 98 0 R /Parent 62 0 R - /Prev 83 0 R /Title (8. The EML Universality Proof) +/Dest [ 29 0 R /XYZ 57.02362 98.62362 0 ] /Next 92 0 R /Parent 89 0 R /Prev 90 0 R /Title (7.2 Cross-Implementation Exchange Matrix) >> endobj 92 0 obj << -/Dest [ 30 0 R /XYZ 57.02362 323.0236 0 ] /Next 93 0 R /Parent 91 0 R /Title (8.1 The Operator) +/Dest [ 31 0 R /XYZ 57.02362 589.0236 0 ] /Next 93 0 R /Parent 89 0 R /Prev 91 0 R /Title (7.3 JSON Portal \204 Graph-Aware, Continuation-Preserving) >> endobj 93 0 obj << -/Dest [ 30 0 R /XYZ 57.02362 246.2236 0 ] /Next 94 0 R /Parent 91 0 R /Prev 92 0 R /Title (8.2 Stage 1: Core Functions \(Depth 1--3\)) +/Dest [ 31 0 R /XYZ 57.02362 302.2236 0 ] /Next 94 0 R /Parent 89 0 R /Prev 92 0 R /Title (7.4 Binary Heap Dump \204 the Fast One) >> endobj 94 0 obj << -/Dest [ 31 0 R /XYZ 57.02362 765.0236 0 ] /Next 95 0 R /Parent 91 0 R /Prev 93 0 R /Title (8.3 Stage 2: Arithmetic) +/Dest [ 32 0 R /XYZ 57.02362 765.0236 0 ] /Next 95 0 R /Parent 89 0 R /Prev 93 0 R /Title (7.5 Cross-Process Benchmarks) >> endobj 95 0 obj << -/Dest [ 31 0 R /XYZ 57.02362 650.6236 0 ] /Next 96 0 R /Parent 91 0 R /Prev 94 0 R /Title (8.4 Stage 3: Complex Plane Access) +/Dest [ 32 0 R /XYZ 57.02362 451.0236 0 ] /Next 96 0 R /Parent 89 0 R /Prev 94 0 R /Title (7.6 Mismatch Cases: Graceful Degradation) >> endobj 96 0 obj << -/Dest [ 31 0 R /XYZ 57.02362 542.6236 0 ] /Next 97 0 R /Parent 91 0 R /Prev 95 0 R /Title (8.5 Stage 4: Trigonometry via Euler) +/Dest [ 33 0 R /XYZ 57.02362 765.0236 0 ] /Parent 89 0 R /Prev 95 0 R /Title (7.7 Use Case: Distributed Primality Testing) >> endobj 97 0 obj << -/Dest [ 31 0 R /XYZ 57.02362 446.6236 0 ] /Parent 91 0 R /Prev 96 0 R /Title (8.6 Verification & Friction Analysis) +/Count 6 /Dest [ 33 0 R /XYZ 57.02362 564.2236 0 ] /First 98 0 R /Last 103 0 R /Next 104 0 R /Parent 65 0 R + /Prev 89 0 R /Title (8. The EML Universality Proof) >> endobj 98 0 obj << -/Dest [ 34 0 R /XYZ 57.02362 765.0236 0 ] /Next 99 0 R /Parent 62 0 R /Prev 91 0 R /Title (9. Language Coverage) +/Dest [ 33 0 R /XYZ 57.02362 487.0236 0 ] /Next 99 0 R /Parent 97 0 R /Title (8.1 The Operator) >> endobj 99 0 obj << -/Dest [ 34 0 R /XYZ 57.02362 515.8236 0 ] /Next 100 0 R /Parent 62 0 R /Prev 98 0 R /Title (10. Relationship to Companion Papers) +/Dest [ 33 0 R /XYZ 57.02362 410.2236 0 ] /Next 100 0 R /Parent 97 0 R /Prev 98 0 R /Title (8.2 Stage 1: Core Functions \(Depth 1--3\)) >> endobj 100 0 obj << -/Count 6 /Dest [ 34 0 R /XYZ 57.02362 266.6236 0 ] /First 101 0 R /Last 106 0 R /Next 107 0 R /Parent 62 0 R - /Prev 99 0 R /Title (11. Four Implementation Tiers, One Language) +/Dest [ 33 0 R /XYZ 57.02362 290.2236 0 ] /Next 101 0 R /Parent 97 0 R /Prev 99 0 R /Title (8.3 Stage 2: Arithmetic) >> endobj 101 0 obj << -/Dest [ 39 0 R /XYZ 57.02362 313.0236 0 ] /Next 102 0 R /Parent 100 0 R /Title (11.1 Test Coverage) +/Dest [ 33 0 R /XYZ 57.02362 175.8236 0 ] /Next 102 0 R /Parent 97 0 R /Prev 100 0 R /Title (8.4 Stage 3: Complex Plane Access) >> endobj 102 0 obj << -/Dest [ 39 0 R /XYZ 57.02362 107.0236 0 ] /Next 103 0 R /Parent 100 0 R /Prev 101 0 R /Title (11.2 File I/O Parity) +/Dest [ 34 0 R /XYZ 57.02362 765.0236 0 ] /Next 103 0 R /Parent 97 0 R /Prev 101 0 R /Title (8.5 Stage 4: Trigonometry via Euler) >> endobj 103 0 obj << -/Dest [ 40 0 R /XYZ 57.02362 505.0236 0 ] /Next 104 0 R /Parent 100 0 R /Prev 102 0 R /Title (11.3 Sockets: One HTTP Server, Three Runtimes) +/Dest [ 34 0 R /XYZ 57.02362 669.0236 0 ] /Parent 97 0 R /Prev 102 0 R /Title (8.6 Verification & Friction Analysis) >> endobj 104 0 obj << -/Dest [ 43 0 R /XYZ 57.02362 540.4202 0 ] /Next 105 0 R /Parent 100 0 R /Prev 103 0 R /Title (11.4 S-expressions over Sockets: RPC, REPL, and Chains) +/Dest [ 35 0 R /XYZ 57.02362 272.2236 0 ] /Next 105 0 R /Parent 65 0 R /Prev 97 0 R /Title (9. Language Coverage) >> endobj 105 0 obj << -/Dest [ 44 0 R /XYZ 57.02362 685.0236 0 ] /Next 106 0 R /Parent 100 0 R /Prev 104 0 R /Title (11.5 Portal over HTTP: State Transfer Between Machines) +/Dest [ 37 0 R /XYZ 57.02362 723.0236 0 ] /Next 106 0 R /Parent 65 0 R /Prev 104 0 R /Title (10. Relationship to Companion Papers) >> endobj 106 0 obj << -/Dest [ 44 0 R /XYZ 57.02362 136.6236 0 ] /Parent 100 0 R /Prev 105 0 R /Title (11.6 heap-snapshot: The Arena Escape Hatch) +/Count 6 /Dest [ 37 0 R /XYZ 57.02362 473.8236 0 ] /First 107 0 R /Last 112 0 R /Next 113 0 R /Parent 65 0 R + /Prev 105 0 R /Title (11. Four Implementation Tiers, One Language) >> endobj 107 0 obj << -/Count 3 /Dest [ 47 0 R /XYZ 57.02362 497.4236 0 ] /First 108 0 R /Last 110 0 R /Next 111 0 R /Parent 62 0 R - /Prev 100 0 R /Title (12. MOAD Audit: Fixing What We Built) +/Dest [ 42 0 R /XYZ 57.02362 277.0236 0 ] /Next 108 0 R /Parent 106 0 R /Title (11.1 Test Coverage) >> endobj 108 0 obj << -/Dest [ 47 0 R /XYZ 57.02362 210.2236 0 ] /Next 109 0 R /Parent 107 0 R /Title (12.1 MOAD-0001: The Sedimentary Defect in Our Own Code) +/Dest [ 43 0 R /XYZ 57.02362 765.0236 0 ] /Next 109 0 R /Parent 106 0 R /Prev 107 0 R /Title (11.2 File I/O Parity) >> endobj 109 0 obj << -/Dest [ 48 0 R /XYZ 57.02362 284.2236 0 ] /Next 110 0 R /Parent 107 0 R /Prev 108 0 R /Title (12.2 MOAD-0002: The Intertangle in Our Own Design) +/Dest [ 43 0 R /XYZ 57.02362 457.0236 0 ] /Next 110 0 R /Parent 106 0 R /Prev 108 0 R /Title (11.3 Sockets: One HTTP Server, Three Runtimes) >> endobj 110 0 obj << -/Dest [ 51 0 R /XYZ 57.02362 715.0236 0 ] /Parent 107 0 R /Prev 109 0 R /Title (12.3 Our Shared Infrastructure) +/Dest [ 46 0 R /XYZ 57.02362 504.4202 0 ] /Next 111 0 R /Parent 106 0 R /Prev 109 0 R /Title (11.4 S-expressions over Sockets: RPC, REPL, and Chains) >> endobj 111 0 obj << -/Dest [ 51 0 R /XYZ 57.02362 523.0236 0 ] /Next 112 0 R /Parent 62 0 R /Prev 107 0 R /Title (13. Future Work) +/Dest [ 47 0 R /XYZ 57.02362 649.0236 0 ] /Next 112 0 R /Parent 106 0 R /Prev 110 0 R /Title (11.5 Portal over HTTP: State Transfer Between Machines) >> endobj 112 0 obj << -/Dest [ 51 0 R /XYZ 57.02362 267.8236 0 ] /Next 113 0 R /Parent 62 0 R /Prev 111 0 R /Title (14. The Defect in the Model) +/Dest [ 50 0 R /XYZ 57.02362 765.0236 0 ] /Parent 106 0 R /Prev 111 0 R /Title (11.6 heap-snapshot: The Arena Escape Hatch) >> endobj 113 0 obj << -/Dest [ 54 0 R /XYZ 57.02362 297.0236 0 ] /Next 114 0 R /Parent 62 0 R /Prev 112 0 R /Title (Citation) +/Count 3 /Dest [ 50 0 R /XYZ 57.02362 417.4236 0 ] /First 114 0 R /Last 116 0 R /Next 117 0 R /Parent 65 0 R + /Prev 106 0 R /Title (12. MOAD Audit: Fixing What We Built) >> endobj 114 0 obj << -/Dest [ 54 0 R /XYZ 57.02362 215.8236 0 ] /Next 115 0 R /Parent 62 0 R /Prev 113 0 R /Title (References) +/Dest [ 50 0 R /XYZ 57.02362 130.2236 0 ] /Next 115 0 R /Parent 113 0 R /Title (12.1 MOAD-0001: The Sedimentary Defect in Our Own Code) >> endobj 115 0 obj << -/Dest [ 54 0 R /XYZ 57.02362 134.6236 0 ] /Parent 62 0 R /Prev 114 0 R /Title (License) +/Dest [ 51 0 R /XYZ 57.02362 216.2236 0 ] /Next 116 0 R /Parent 113 0 R /Prev 114 0 R /Title (12.2 MOAD-0002: The Intertangle in Our Own Design) >> endobj 116 0 obj << -/Count 27 /Kids [ 11 0 R 12 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 25 0 R 26 0 R - 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 34 0 R 38 0 R 39 0 R 40 0 R 43 0 R - 44 0 R 47 0 R 48 0 R 51 0 R 54 0 R 57 0 R 58 0 R ] /Type /Pages +/Dest [ 54 0 R /XYZ 57.02362 655.0236 0 ] /Parent 113 0 R /Prev 115 0 R /Title (12.3 Our Shared Infrastructure) >> endobj 117 0 obj << +/Dest [ 54 0 R /XYZ 57.02362 463.0236 0 ] /Next 118 0 R /Parent 65 0 R /Prev 113 0 R /Title (13. Future Work) +>> +endobj +118 0 obj +<< +/Dest [ 54 0 R /XYZ 57.02362 207.8236 0 ] /Next 119 0 R /Parent 65 0 R /Prev 117 0 R /Title (14. The Defect in the Model) +>> +endobj +119 0 obj +<< +/Dest [ 57 0 R /XYZ 57.02362 231.0236 0 ] /Next 120 0 R /Parent 65 0 R /Prev 118 0 R /Title (Citation) +>> +endobj +120 0 obj +<< +/Dest [ 57 0 R /XYZ 57.02362 149.8236 0 ] /Next 121 0 R /Parent 65 0 R /Prev 119 0 R /Title (References) +>> +endobj +121 0 obj +<< +/Dest [ 60 0 R /XYZ 57.02362 765.0236 0 ] /Parent 65 0 R /Prev 120 0 R /Title (License) +>> +endobj +122 0 obj +<< +/Count 29 /Kids [ 11 0 R 12 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 25 0 R 26 0 R + 28 0 R 29 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 37 0 R 41 0 R 42 0 R + 43 0 R 46 0 R 47 0 R 50 0 R 51 0 R 54 0 R 57 0 R 60 0 R 61 0 R ] /Type /Pages +>> +endobj +123 0 obj +<< /Length 5064 >> stream @@ -979,19 +1020,19 @@ Q endstream endobj -118 0 obj +124 0 obj << -/Length 7579 +/Length 7846 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 741.0236 cm +1 0 0 1 57.02362 705.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET q -1 0 0 1 6 9 cm +1 0 0 1 6 45 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET @@ -1000,7 +1041,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 14 Tm .214168 Tw 12 TL /F3 10 Tf 0 0 0 rg (Pure x86_64 assembly) Tj /F1 10 Tf ( \227 4,968 lines, 22 KB stripped binary, zero external dependencies, ) Tj /F3 10 Tf (91 builtins) Tj T* 0 Tw (including a full TCP stack, `eval`, and `read-from-string`) Tj /F1 10 Tf (, binary heap-dump portal) Tj T* ET +BT 1 0 0 1 0 50 Tm .032556 Tw 12 TL /F3 10 Tf 0 0 0 rg (Pure x86_64 assembly) Tj /F1 10 Tf ( \227 6,645 lines of GNU assembler \(GAS, AT) Tj (&) Tj (T syntax\), assembled with ) Tj /F5 10 Tf (as) Tj /F1 10 Tf ( and) Tj T* 0 Tw 1.212397 Tw (linked with ) Tj /F5 10 Tf (ld) Tj /F1 10 Tf ( \(both from GNU binutils\), ~22 KB stripped binary \(bump-only build\) / ~25 KB stripped) Tj T* 0 Tw 2.207565 Tw (\(with optional naive mark-sweep GC + meta-GC arena under the ) Tj /F5 10 Tf (GC_NAIVE) Tj /F1 10 Tf ( assemble flag\), zero) Tj T* 0 Tw 2.478031 Tw (external dependencies, ) Tj /F3 10 Tf (95+ builtins including a full TCP stack, `eval`, `read-from-string`, and) Tj T* 0 Tw (native hash-table / hash-set primitives) Tj /F1 10 Tf (, binary heap-dump portal) Tj T* ET Q Q q @@ -1008,95 +1049,95 @@ Q Q Q q -1 0 0 1 57.02362 723.0236 cm +1 0 0 1 57.02362 687.0236 cm Q q -1 0 0 1 57.02362 669.0236 cm +1 0 0 1 57.02362 633.0236 cm q BT 1 0 0 1 0 38 Tm .814168 Tw 12 TL /F1 10 Tf 0 0 0 rg (All three share one interchange format: ) Tj /F3 10 Tf (Scheme source itself) Tj /F1 10 Tf (. An S-expression portal \() Tj /F5 10 Tf (\(define) Tj ( ) Tj (x) Tj ( ) Tj (42\)) Tj /F1 10 Tf (\)) Tj T* 0 Tw .689272 Tw (written by any implementation loads in any other \227 a 3\3273 producer\327consumer matrix, 9/9 cells green. The) Tj T* 0 Tw .134417 Tw (language ) Tj /F4 10 Tf (is) Tj /F1 10 Tf ( the wire protocol. This is not a property we added; it is what a parser has always made possible.) Tj T* 0 Tw (We report it because most systems forget.) Tj T* ET Q Q q -1 0 0 1 57.02362 627.0236 cm +1 0 0 1 57.02362 591.0236 cm q BT 1 0 0 1 0 26 Tm 2.01589 Tw 12 TL /F3 10 Tf 0 0 0 rg (The numbers.) Tj /F1 10 Tf ( The asm implementation saves + resumes 4 variables across two processes in ) Tj /F3 10 Tf (1.5 ms) Tj /F1 10 Tf T* 0 Tw -0.051203 Tw (\(binary portal\) or ) Tj /F3 10 Tf (1.6 ms) Tj /F1 10 Tf ( \(S-expression portal\). Python round-trip on the same task: 260 ms. A 160\327 gap from) Tj T* 0 Tw (the same language, same tests, same wire format.) Tj T* ET Q Q q -1 0 0 1 57.02362 549.0236 cm +1 0 0 1 57.02362 513.0236 cm q BT 1 0 0 1 0 62 Tm 3.009029 Tw 12 TL /F3 10 Tf 0 0 0 rg (Web server, same story.) Tj /F1 10 Tf ( The asm implementation ships a TCP stack \() Tj /F5 10 Tf (tcp-listen) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (tcp-accept) Tj /F1 10 Tf (,) Tj T* 0 Tw 1.01985 Tw /F5 10 Tf (tcp-connect) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (tcp-recv) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (tcp-send) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (tcp-close) Tj /F1 10 Tf (\) and a portable 70-line HTTP/1.0 handler in Scheme.) Tj T* 0 Tw .40135 Tw (The same ) Tj /F5 10 Tf (.lsp) Tj /F1 10 Tf ( runs identically in all three impls. Asm server + asm client: ) Tj /F3 10 Tf (2,994 req/s) Tj /F1 10 Tf ( on a 1 KB body, 22) Tj T* 0 Tw 1.003647 Tw (KB binary, zero libc, seven Linux syscalls plus the socket family. For comparison: busybox httpd \(2.1 MB\)) Tj T* 0 Tw .109314 Tw (and ) Tj /F5 10 Tf (python3) Tj ( ) Tj (-m) Tj ( ) Tj (http.server) Tj /F1 10 Tf ( \(8 MB interpreter\) hit the same benchmark at 382 req/s under a curl client) Tj T* 0 Tw (and ~2,400 req/s under an in-process client.) Tj T* ET Q Q q -1 0 0 1 57.02362 471.0236 cm +1 0 0 1 57.02362 435.0236 cm q BT 1 0 0 1 0 62 Tm 3.182556 Tw 12 TL /F3 10 Tf 0 0 0 rg (S-expressions over sockets.) Tj /F1 10 Tf ( The wire protocol for a 90-line RPC server is one Scheme form per) Tj T* 0 Tw 1.692397 Tw (connection. With ) Tj /F5 10 Tf (read-from-string) Tj /F1 10 Tf ( and ) Tj /F5 10 Tf (eval) Tj /F1 10 Tf ( added to all three impls \(89 bytes of asm for ) Tj /F5 10 Tf (eval) Tj /F1 10 Tf (, a) Tj T* 0 Tw .615304 Tw (20-line asm reader swap for ) Tj /F5 10 Tf (read-from-string) Tj /F1 10 Tf (\), a transparent byte-forwarding relay composes arbitrary) Tj T* 0 Tw -0.093771 Tw (chains: a Python client can reach an asm backend through a C relay and a Python relay, four runtimes strung) Tj T* 0 Tw .231223 Tw (together without any format translation between hops. Each relay adds ~650 \265s/request on the same laptop.) Tj T* 0 Tw (The language is the envelope.) Tj T* ET Q Q q -1 0 0 1 57.02362 417.0236 cm +1 0 0 1 57.02362 381.0236 cm q BT 1 0 0 1 0 38 Tm 1.342739 Tw 12 TL /F1 10 Tf 0 0 0 rg (975 verified assertions pass identically across the three implementations \(571 Python unit, 132 asm, 189) Tj T* 0 Tw 3.349873 Tw (shared Python+C functional, 83 C unit\). Every implementation consumes every format it can reach;) Tj T* 0 Tw .270556 Tw (mismatch cases \(wrong format, truncated input, missing file, corrupt header\) degrade gracefully with ) Tj /F5 10 Tf (#f) Tj /F1 10 Tf ( or a) Tj T* 0 Tw (clean error.) Tj T* ET Q Q q -1 0 0 1 57.02362 363.0236 cm +1 0 0 1 57.02362 327.0236 cm q BT 1 0 0 1 0 38 Tm .352397 Tw 12 TL /F1 10 Tf 0 0 0 rg (The paper further presents the EML universality proof: a single operator ) Tj /F5 10 Tf (eml\(x,) Tj ( ) Tj (y\)) Tj ( ) Tj (=) Tj ( ) Tj (exp\(x\)) Tj ( ) Tj (-) Tj ( ) Tj (ln\(y\)) Tj /F1 10 Tf T* 0 Tw .548453 Tw (with the constant 1 generates all elementary functions \(exp, ln, arithmetic, negation, complex plane access,) Tj T* 0 Tw -0.05811 Tw (trigonometry\). Verified numerically in Python, verified in Lumbda's own bytecode, & proven formally in Lean 4) Tj T* 0 Tw (with zero ) Tj /F5 10 Tf (sorry) Tj /F1 10 Tf (.) Tj T* ET Q Q q -1 0 0 1 57.02362 321.0236 cm +1 0 0 1 57.02362 285.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .70189 Tw (Feedback is the primitive. Continuations are its mechanism in time. Portals are its mechanism across time.) Tj T* 0 Tw -0.095138 Tw (S-expressions are its mechanism across implementations. Sockets are its mechanism across machines. One) Tj T* 0 Tw (file is the proof \227 by three translations.) Tj T* ET Q Q q -1 0 0 1 57.02362 289.8236 cm +1 0 0 1 57.02362 253.8236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (1. The Problem: Interpreters That Cannot Feed Back) Tj T* ET Q Q q -1 0 0 1 57.02362 221.8236 cm +1 0 0 1 57.02362 185.8236 cm q BT 1 0 0 1 0 50 Tm 1.454556 Tw 12 TL /F1 10 Tf 0 0 0 rg (Most language implementations treat control flow as a tree of special cases. ) Tj /F5 10 Tf (if) Tj /F1 10 Tf ( branches. ) Tj /F5 10 Tf (while) Tj /F1 10 Tf ( loops.) Tj T* 0 Tw .47989 Tw /F5 10 Tf (return) Tj /F1 10 Tf ( exits. ) Tj /F5 10 Tf (try/catch) Tj /F1 10 Tf ( unwinds. Each form carries its own implementation, its own edge cases, its own) Tj T* 0 Tw 1.451147 Tw (interaction with the call stack. When you need a pattern that crosses these boundaries \(a generator that) Tj T* 0 Tw 3.669873 Tw (yields mid-loop, a coroutine that resumes from a checkpoint, a computation that migrates between) Tj T* 0 Tw (machines\), the tower of special cases collapses.) Tj T* ET Q Q q -1 0 0 1 57.02362 167.8236 cm +1 0 0 1 57.02362 131.8236 cm q BT 1 0 0 1 0 38 Tm .104917 Tw 12 TL /F1 10 Tf 0 0 0 rg (The insight: every control flow pattern is a special case of feedback. A loop feeds the tail position back to the) Tj T* 0 Tw 1.658797 Tw (head. A generator feeds a value out & a resumption point in. An exception feeds control to the nearest) Tj T* 0 Tw 1.518647 Tw (handler. A checkpoint feeds the entire machine state to storage. If the language exposes feedback as a) Tj T* 0 Tw (first-class primitive, all these patterns compose without special cases.) Tj T* ET Q Q q -1 0 0 1 57.02362 113.8236 cm +1 0 0 1 57.02362 77.82362 cm q BT 1 0 0 1 0 38 Tm 5.742038 Tw 12 TL /F1 10 Tf 0 0 0 rg (Scheme discovered this in 1975 with ) Tj /F5 10 Tf (call-with-current-continuation) Tj /F1 10 Tf (. But most Scheme) Tj T* 0 Tw .086835 Tw (implementations compromise: they limit continuations to escape-only, implement them via ) Tj /F5 10 Tf (setjmp) Tj /F1 10 Tf (/) Tj /F5 10 Tf (longjmp) Tj /F1 10 Tf T* 0 Tw .712256 Tw (on the C stack, or require CPS transformation that obscures the source. Lumbda takes a different path: an) Tj T* 0 Tw (explicit frame stack that makes continuations a data structure, not a stack manipulation trick.) Tj T* ET Q Q + +endstream +endobj +125 0 obj +<< +/Length 4740 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 82.62362 cm +1 0 0 1 57.02362 751.8236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (2. Architecture: One File, Two Evaluators) Tj T* ET Q Q q -1 0 0 1 57.02362 66.62362 cm +1 0 0 1 57.02362 735.8236 cm Q - -endstream -endobj -119 0 obj -<< -/Length 5277 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 367.445 cm +1 0 0 1 57.02362 338.245 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1119,54 +1160,54 @@ Q Q Q q -1 0 0 1 57.02362 359.445 cm +1 0 0 1 57.02362 330.245 cm Q q -1 0 0 1 57.02362 341.445 cm +1 0 0 1 57.02362 312.245 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Lumbda implements two evaluation strategies in a single 3,743-line Python file:) Tj T* ET Q Q q -1 0 0 1 57.02362 299.445 cm +1 0 0 1 57.02362 270.245 cm q BT 1 0 0 1 0 26 Tm 1.151411 Tw 12 TL /F3 10 Tf 0 0 0 rg (Tree-walking interpreter) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (leval) Tj /F1 10 Tf (\): The default mode. Walks the AST directly, handles all forms including) Tj T* 0 Tw 3.328196 Tw (macro definitions, record types, & dynamic features. Suitable for interactive development & complex) Tj T* 0 Tw (metaprogramming.) Tj T* ET Q Q q -1 0 0 1 57.02362 257.445 cm +1 0 0 1 57.02362 228.245 cm q BT 1 0 0 1 0 26 Tm .557565 Tw 12 TL /F3 10 Tf 0 0 0 rg (Bytecode compiler + VM) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (_bc) Tj /F1 10 Tf ( + ) Tj /F5 10 Tf (_vm_loop) Tj /F1 10 Tf (\): Enabled with ) Tj /F5 10 Tf (--fast) Tj /F1 10 Tf ( or ) Tj /F5 10 Tf (\(auto-compile!) Tj ( ) Tj (#t\)) Tj /F1 10 Tf (. Compiles) Tj T* 0 Tw .84589 Tw (Scheme expressions to a stack-based bytecode, then executes on a virtual machine with an explicit frame) Tj T* 0 Tw (stack. Achieves 7--19x speedups on recursive & iterative workloads.) Tj T* ET Q Q q -1 0 0 1 57.02362 203.445 cm +1 0 0 1 57.02362 174.245 cm q BT 1 0 0 1 0 38 Tm 1.065596 Tw 12 TL /F1 10 Tf 0 0 0 rg (Both evaluators share the same type system, environment model, & built-in function library. The bytecode) Tj T* 0 Tw 1.668334 Tw (compiler handles: ) Tj /F5 10 Tf (if) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (begin) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (and) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (or) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (when) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (unless) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (cond) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (define) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (set!) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (lambda) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (let) Tj /F1 10 Tf (, named-let,) Tj T* 0 Tw 1.459882 Tw /F5 10 Tf (let*) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (letrec) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (do) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (call/cc) Tj /F1 10 Tf (, & function calls with tail-call optimization. Macros expand at compile time.) Tj T* 0 Tw (Forms the compiler cannot handle fall back to the interpreter via ) Tj /F5 10 Tf (OP_EVAL) Tj /F1 10 Tf (.) Tj T* ET Q Q q -1 0 0 1 57.02362 177.445 cm +1 0 0 1 57.02362 148.245 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (2.1 Type System) Tj T* ET Q Q q -1 0 0 1 57.02362 159.445 cm +1 0 0 1 57.02362 130.245 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Core types stay minimal:) Tj T* ET Q Q q -1 0 0 1 57.02362 153.445 cm +1 0 0 1 57.02362 124.245 cm Q q -1 0 0 1 57.02362 153.445 cm +1 0 0 1 57.02362 124.245 cm Q q -1 0 0 1 57.02362 141.445 cm +1 0 0 1 57.02362 112.245 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1188,10 +1229,10 @@ Q Q Q q -1 0 0 1 57.02362 135.445 cm +1 0 0 1 57.02362 106.245 cm Q q -1 0 0 1 57.02362 123.445 cm +1 0 0 1 57.02362 94.24503 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1213,10 +1254,10 @@ Q Q Q q -1 0 0 1 57.02362 117.445 cm +1 0 0 1 57.02362 88.24503 cm Q q -1 0 0 1 57.02362 105.445 cm +1 0 0 1 57.02362 76.24503 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1238,64 +1279,14 @@ Q Q Q q -1 0 0 1 57.02362 99.44503 cm -Q -q -1 0 0 1 57.02362 87.44503 cm -q -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (Proc) Tj /F1 10 Tf (: Interpreted procedure \(params, rest, body, env, name\)) Tj T* ET -Q -Q -q -Q -Q -Q -q -1 0 0 1 57.02362 81.44503 cm -Q -q -1 0 0 1 57.02362 69.44503 cm -q -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (CompiledProc) Tj /F1 10 Tf (: Bytecode procedure \(CodeObj, params, rest, env, name\)) Tj T* ET -Q -Q -q -Q -Q -Q -q -1 0 0 1 57.02362 63.44503 cm +1 0 0 1 57.02362 70.24503 cm Q endstream endobj -120 0 obj +126 0 obj << -/Length 6896 +/Length 6876 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -1314,7 +1305,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (FullCont) Tj /F1 10 Tf (: First-class continuation \(frames, stack, ip, instrs, env, vm_id\)) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (Proc) Tj /F1 10 Tf (: Interpreted procedure \(params, rest, body, env, name\)) Tj T* ET Q Q q @@ -1339,7 +1330,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (Macro) Tj /F1 10 Tf (: Wraps a transformer \(Proc or _SyntaxTransformer\)) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (CompiledProc) Tj /F1 10 Tf (: Bytecode procedure \(CodeObj, params, rest, env, name\)) Tj T* ET Q Q q @@ -1364,6 +1355,56 @@ Q q 1 0 0 1 23 -3 cm q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (FullCont) Tj /F1 10 Tf (: First-class continuation \(frames, stack, ip, instrs, env, vm_id\)) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 711.0236 cm +Q +q +1 0 0 1 57.02362 699.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (Macro) Tj /F1 10 Tf (: Wraps a transformer \(Proc or _SyntaxTransformer\)) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 693.0236 cm +Q +q +1 0 0 1 57.02362 681.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (Env) Tj /F1 10 Tf (: Lexical environment chain \(bindings dict, parent pointer, global pointer\)) Tj T* ET Q Q @@ -1372,34 +1413,34 @@ Q Q Q q -1 0 0 1 57.02362 699.0236 cm +1 0 0 1 57.02362 663.0236 cm Q q -1 0 0 1 57.02362 669.0236 cm +1 0 0 1 57.02362 633.0236 cm q BT 1 0 0 1 0 14 Tm .618556 Tw 12 TL /F1 10 Tf 0 0 0 rg (Exact rational arithmetic uses Python's ) Tj /F5 10 Tf (Fraction) Tj /F1 10 Tf ( type. ) Tj /F5 10 Tf (\(/) Tj ( ) Tj (1) Tj ( ) Tj (3\)) Tj /F1 10 Tf ( evaluates to ) Tj /F5 10 Tf (1/3) Tj /F1 10 Tf (, not ) Tj /F5 10 Tf (0.333...) Tj /F1 10 Tf (. Literal) Tj T* 0 Tw /F5 10 Tf (1/3) Tj /F1 10 Tf ( syntax parses directly to rationals.) Tj T* ET Q Q q -1 0 0 1 57.02362 643.0236 cm +1 0 0 1 57.02362 607.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (2.2 The Bytecode) Tj T* ET Q Q q -1 0 0 1 57.02362 625.0236 cm +1 0 0 1 57.02362 589.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The compiler emits instructions as ) Tj /F5 10 Tf (\(opcode,) Tj ( ) Tj (operand\)) Tj /F1 10 Tf ( tuples into a ) Tj /F5 10 Tf (CodeObj) Tj /F1 10 Tf (:) Tj T* ET Q Q q -1 0 0 1 57.02362 607.0236 cm +1 0 0 1 57.02362 571.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (Core opcodes) Tj /F1 10 Tf ( \(20\):) Tj T* ET Q Q q -1 0 0 1 57.02362 393.8236 cm +1 0 0 1 57.02362 357.8236 cm q q 1 0 0 1 0 0 cm @@ -1419,13 +1460,13 @@ Q Q Q q -1 0 0 1 57.02362 373.8236 cm +1 0 0 1 57.02362 337.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (Specialized opcodes) Tj /F1 10 Tf ( \(20\):) Tj T* ET Q Q q -1 0 0 1 57.02362 295.0236 cm +1 0 0 1 57.02362 259.0236 cm q q 1 0 0 1 0 0 cm @@ -1446,33 +1487,33 @@ Q Q Q q -1 0 0 1 57.02362 263.0236 cm +1 0 0 1 57.02362 227.0236 cm q BT 1 0 0 1 0 14 Tm .370522 Tw 12 TL /F1 10 Tf 0 0 0 rg (Specialized opcodes avoid function call overhead for hot builtins. ) Tj /F5 10 Tf (\(+) Tj ( ) Tj (x) Tj ( ) Tj (1\)) Tj /F1 10 Tf ( compiles to ) Tj /F5 10 Tf (OP_ADD1) Tj /F1 10 Tf ( instead of) Tj T* 0 Tw /F5 10 Tf (OP_LOOKUP) Tj ( ) Tj ('+') Tj ( ) Tj (/) Tj ( ) Tj (OP_CONST) Tj ( ) Tj (1) Tj ( ) Tj (/) Tj ( ) Tj (OP_CALL) Tj /F1 10 Tf (.) Tj T* ET Q Q q -1 0 0 1 57.02362 231.8236 cm +1 0 0 1 57.02362 195.8236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (3. The Explicit Frame Stack) Tj T* ET Q Q q -1 0 0 1 57.02362 211.8236 cm +1 0 0 1 57.02362 175.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This is the architectural decision that makes everything else possible.) Tj T* ET Q Q q -1 0 0 1 57.02362 193.8236 cm +1 0 0 1 57.02362 157.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Instead of using Python's call stack for Scheme function calls, the VM maintains its own frame stack:) Tj T* ET Q Q q -1 0 0 1 57.02362 163.0236 cm +1 0 0 1 57.02362 127.0236 cm q q 1 0 0 1 0 0 cm @@ -1493,19 +1534,19 @@ Q Q Q q -1 0 0 1 57.02362 143.0236 cm +1 0 0 1 57.02362 107.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (When ) Tj /F5 10 Tf (OP_CALL) Tj /F1 10 Tf ( executes:) Tj T* ET Q Q q -1 0 0 1 57.02362 137.0236 cm +1 0 0 1 57.02362 101.0236 cm Q q -1 0 0 1 57.02362 137.0236 cm +1 0 0 1 57.02362 101.0236 cm Q q -1 0 0 1 57.02362 125.0236 cm +1 0 0 1 57.02362 89.02362 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1528,10 +1569,10 @@ Q Q Q q -1 0 0 1 57.02362 119.0236 cm +1 0 0 1 57.02362 83.02362 cm Q q -1 0 0 1 57.02362 107.0236 cm +1 0 0 1 57.02362 71.02362 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1553,10 +1594,19 @@ Q Q Q q -1 0 0 1 57.02362 101.0236 cm +1 0 0 1 57.02362 65.02362 cm Q + +endstream +endobj +127 0 obj +<< +/Length 8861 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 89.02362 cm +1 0 0 1 57.02362 753.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1578,10 +1628,10 @@ Q Q Q q -1 0 0 1 57.02362 83.02362 cm +1 0 0 1 57.02362 747.0236 cm Q q -1 0 0 1 57.02362 71.02362 cm +1 0 0 1 57.02362 735.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1604,19 +1654,10 @@ Q Q Q q -1 0 0 1 57.02362 65.02362 cm +1 0 0 1 57.02362 729.0236 cm Q - -endstream -endobj -121 0 obj -<< -/Length 8468 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 753.0236 cm +1 0 0 1 57.02362 717.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1639,22 +1680,22 @@ Q Q Q q -1 0 0 1 57.02362 753.0236 cm +1 0 0 1 57.02362 717.0236 cm Q q -1 0 0 1 57.02362 735.0236 cm +1 0 0 1 57.02362 699.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (When ) Tj /F5 10 Tf (OP_RETURN) Tj /F1 10 Tf ( executes:) Tj T* ET Q Q q -1 0 0 1 57.02362 729.0236 cm +1 0 0 1 57.02362 693.0236 cm Q q -1 0 0 1 57.02362 729.0236 cm +1 0 0 1 57.02362 693.0236 cm Q q -1 0 0 1 57.02362 717.0236 cm +1 0 0 1 57.02362 681.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1676,10 +1717,10 @@ Q Q Q q -1 0 0 1 57.02362 711.0236 cm +1 0 0 1 57.02362 675.0236 cm Q q -1 0 0 1 57.02362 699.0236 cm +1 0 0 1 57.02362 663.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1701,16 +1742,16 @@ Q Q Q q -1 0 0 1 57.02362 699.0236 cm +1 0 0 1 57.02362 663.0236 cm Q q -1 0 0 1 57.02362 669.0236 cm +1 0 0 1 57.02362 633.0236 cm q BT 1 0 0 1 0 14 Tm 2.331529 Tw 12 TL /F3 10 Tf 0 0 0 rg (Tail-call optimization) Tj /F1 10 Tf ( follows naturally: ) Tj /F5 10 Tf (OP_TAIL_CALL) Tj /F1 10 Tf ( skips step 2. It replaces the current activation) Tj T* 0 Tw (record instead of pushing a new one. Tail-recursive loops of arbitrary depth consume constant memory.) Tj T* ET Q Q q -1 0 0 1 57.02362 628.6236 cm +1 0 0 1 57.02362 592.6236 cm q q 1 0 0 1 0 0 cm @@ -1731,26 +1772,26 @@ Q Q Q q -1 0 0 1 57.02362 584.6236 cm +1 0 0 1 57.02362 548.6236 cm q BT 1 0 0 1 0 26 Tm .144609 Tw 12 TL /F3 10 Tf 0 0 0 rg (Why this matters) Tj /F1 10 Tf (: Python's default recursion limit is 1,000 frames. A Scheme that uses the Python stack for) Tj T* 0 Tw -0.073228 Tw (Scheme calls inherits this limit. The explicit frame stack removes it. Lumbda can recurse 50,000 deep without) Tj T* 0 Tw (difficulty, limited only by available memory.) Tj T* ET Q Q q -1 0 0 1 57.02362 553.4236 cm +1 0 0 1 57.02362 517.4236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (4. Continuations: Feedback as a Data Structure) Tj T* ET Q Q q -1 0 0 1 57.02362 533.4236 cm +1 0 0 1 57.02362 497.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (With an explicit frame stack, capturing a continuation becomes copying a data structure:) Tj T* ET Q Q q -1 0 0 1 57.02362 445.0236 cm +1 0 0 1 57.02362 409.0236 cm q q 1 0 0 1 0 0 cm @@ -1771,19 +1812,19 @@ Q Q Q q -1 0 0 1 57.02362 425.0236 cm +1 0 0 1 57.02362 389.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (When ) Tj /F5 10 Tf (OP_CALL_CC) Tj /F1 10 Tf ( executes:) Tj T* ET Q Q q -1 0 0 1 57.02362 419.0236 cm +1 0 0 1 57.02362 383.0236 cm Q q -1 0 0 1 57.02362 419.0236 cm +1 0 0 1 57.02362 383.0236 cm Q q -1 0 0 1 57.02362 395.0236 cm +1 0 0 1 57.02362 359.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1805,10 +1846,10 @@ Q Q Q q -1 0 0 1 57.02362 389.0236 cm +1 0 0 1 57.02362 353.0236 cm Q q -1 0 0 1 57.02362 377.0236 cm +1 0 0 1 57.02362 341.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1830,10 +1871,10 @@ Q Q Q q -1 0 0 1 57.02362 371.0236 cm +1 0 0 1 57.02362 335.0236 cm Q q -1 0 0 1 57.02362 359.0236 cm +1 0 0 1 57.02362 323.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1855,10 +1896,10 @@ Q Q Q q -1 0 0 1 57.02362 353.0236 cm +1 0 0 1 57.02362 317.0236 cm Q q -1 0 0 1 57.02362 341.0236 cm +1 0 0 1 57.02362 305.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1880,10 +1921,10 @@ Q Q Q q -1 0 0 1 57.02362 335.0236 cm +1 0 0 1 57.02362 299.0236 cm Q q -1 0 0 1 57.02362 323.0236 cm +1 0 0 1 57.02362 287.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1906,23 +1947,23 @@ Q Q Q q -1 0 0 1 57.02362 323.0236 cm +1 0 0 1 57.02362 287.0236 cm Q q -1 0 0 1 57.02362 305.0236 cm +1 0 0 1 57.02362 269.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (When a continuation is invoked:) Tj T* ET Q Q q -1 0 0 1 57.02362 299.0236 cm +1 0 0 1 57.02362 263.0236 cm Q q -1 0 0 1 57.02362 299.0236 cm +1 0 0 1 57.02362 263.0236 cm Q q -1 0 0 1 57.02362 287.0236 cm +1 0 0 1 57.02362 251.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1944,10 +1985,10 @@ Q Q Q q -1 0 0 1 57.02362 281.0236 cm +1 0 0 1 57.02362 245.0236 cm Q q -1 0 0 1 57.02362 269.0236 cm +1 0 0 1 57.02362 233.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1969,10 +2010,10 @@ Q Q Q q -1 0 0 1 57.02362 263.0236 cm +1 0 0 1 57.02362 227.0236 cm Q q -1 0 0 1 57.02362 251.0236 cm +1 0 0 1 57.02362 215.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -1994,10 +2035,10 @@ Q Q Q q -1 0 0 1 57.02362 245.0236 cm +1 0 0 1 57.02362 209.0236 cm Q q -1 0 0 1 57.02362 233.0236 cm +1 0 0 1 57.02362 197.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -2020,10 +2061,10 @@ Q Q Q q -1 0 0 1 57.02362 227.0236 cm +1 0 0 1 57.02362 191.0236 cm Q q -1 0 0 1 57.02362 215.0236 cm +1 0 0 1 57.02362 179.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -2046,57 +2087,37 @@ Q Q Q q -1 0 0 1 57.02362 215.0236 cm +1 0 0 1 57.02362 179.0236 cm Q q -1 0 0 1 57.02362 173.0236 cm +1 0 0 1 57.02362 137.0236 cm q BT 1 0 0 1 0 26 Tm .35131 Tw 12 TL /F3 10 Tf 0 0 0 rg (Multi-shot continuations) Tj /F1 10 Tf (: Because the state is deep-copied at capture time, a continuation can be invoked) Tj T* 0 Tw .07131 Tw (multiple times. Each invocation restores an independent copy of the machine state. This enables generators,) Tj T* 0 Tw (coroutines, & backtracking search.) Tj T* ET Q Q q -1 0 0 1 57.02362 147.0236 cm +1 0 0 1 57.02362 111.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (4.1 Generators from Continuations) Tj T* ET Q Q q -1 0 0 1 57.02362 129.0236 cm +1 0 0 1 57.02362 93.02362 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (A generator in Lumbda uses ) Tj /F5 10 Tf (call/cc) Tj /F1 10 Tf ( to yield values & resume later:) Tj T* ET Q Q -q -1 0 0 1 57.02362 69.42362 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .960784 rg -n -6 -6 480.0283 50.4 re B* -Q -q -BT 1 0 0 1 0 30.4 Tm 9.6 TL /F5 8 Tf 0 0 0 rg (\(auto-compile! #t\)) Tj T* (\(define \(make-gen thunk\)) Tj T* ( \(let \(\(k #f\) \(done #f\)\)) Tj T* ( \(lambda \(\)) Tj T* ET -Q -Q -Q -Q -Q endstream endobj -122 0 obj +128 0 obj << -/Length 9062 +/Length 9194 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 627.0236 cm +1 0 0 1 57.02362 588.6236 cm q q 1 0 0 1 0 0 cm @@ -2106,42 +2127,42 @@ q .662745 .662745 .662745 RG .5 w .960784 .960784 .960784 rg -n -6 -6 480.0283 136.8 re B* +n -6 -6 480.0283 175.2 re B* Q q -BT 1 0 0 1 0 116.8 Tm 9.6 TL /F5 8 Tf 0 0 0 rg ( \(if done 'done) Tj T* ( \(call/cc \(lambda \(return\)) Tj T* ( \(if k \(k return\)) Tj T* ( \(begin \(thunk \(lambda \(val\)) Tj T* ( \(call/cc \(lambda \(next\)) Tj T* ( \(set! k next\) \(return val\)\)\)\)\)) Tj T* ( \(set! done #t\) \(return 'done\)\)\)\)\)\)\)\)\)) Tj T* T* (\(define counter \(make-gen \(lambda \(yield\)) Tj T* ( \(let loop \(\(i 0\)\) \(yield i\) \(loop \(+ i 1\)\)\)\)\)\)) Tj T* (\(counter\) ; =) Tj (>) Tj ( 0) Tj T* (\(counter\) ; =) Tj (>) Tj ( 1) Tj T* (\(counter\) ; =) Tj (>) Tj ( 2) Tj T* ET +BT 1 0 0 1 0 155.2 Tm 9.6 TL /F5 8 Tf 0 0 0 rg (\(auto-compile! #t\)) Tj T* (\(define \(make-gen thunk\)) Tj T* ( \(let \(\(k #f\) \(done #f\)\)) Tj T* ( \(lambda \(\)) Tj T* ( \(if done 'done) Tj T* ( \(call/cc \(lambda \(return\)) Tj T* ( \(if k \(k return\)) Tj T* ( \(begin \(thunk \(lambda \(val\)) Tj T* ( \(call/cc \(lambda \(next\)) Tj T* ( \(set! k next\) \(return val\)\)\)\)\)) Tj T* ( \(set! done #t\) \(return 'done\)\)\)\)\)\)\)\)\)) Tj T* T* (\(define counter \(make-gen \(lambda \(yield\)) Tj T* ( \(let loop \(\(i 0\)\) \(yield i\) \(loop \(+ i 1\)\)\)\)\)\)) Tj T* (\(counter\) ; =) Tj (>) Tj ( 0) Tj T* (\(counter\) ; =) Tj (>) Tj ( 1) Tj T* (\(counter\) ; =) Tj (>) Tj ( 2) Tj T* ET Q Q Q Q Q q -1 0 0 1 57.02362 595.0236 cm +1 0 0 1 57.02362 556.6236 cm q BT 1 0 0 1 0 14 Tm 4.875696 Tw 12 TL /F1 10 Tf 0 0 0 rg (No special generator syntax. No coroutine framework. The same ) Tj /F5 10 Tf (call/cc) Tj /F1 10 Tf ( that handles escape) Tj T* 0 Tw (continuations also handles cooperative multitasking, because feedback is feedback.) Tj T* ET Q Q q -1 0 0 1 57.02362 569.0236 cm +1 0 0 1 57.02362 530.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (4.2 Why "Feedback Is All You Need") Tj T* ET Q Q q -1 0 0 1 57.02362 551.0236 cm +1 0 0 1 57.02362 512.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Every control flow pattern reduces to a continuation operation:) Tj T* ET Q Q q -1 0 0 1 57.02362 545.0236 cm +1 0 0 1 57.02362 506.6236 cm Q q -1 0 0 1 57.02362 545.0236 cm +1 0 0 1 57.02362 506.6236 cm Q q -1 0 0 1 57.02362 533.0236 cm +1 0 0 1 57.02362 494.6236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -2163,10 +2184,10 @@ Q Q Q q -1 0 0 1 57.02362 527.0236 cm +1 0 0 1 57.02362 488.6236 cm Q q -1 0 0 1 57.02362 515.0236 cm +1 0 0 1 57.02362 476.6236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -2188,10 +2209,10 @@ Q Q Q q -1 0 0 1 57.02362 509.0236 cm +1 0 0 1 57.02362 470.6236 cm Q q -1 0 0 1 57.02362 497.0236 cm +1 0 0 1 57.02362 458.6236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -2213,10 +2234,10 @@ Q Q Q q -1 0 0 1 57.02362 491.0236 cm +1 0 0 1 57.02362 452.6236 cm Q q -1 0 0 1 57.02362 479.0236 cm +1 0 0 1 57.02362 440.6236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -2238,10 +2259,10 @@ Q Q Q q -1 0 0 1 57.02362 473.0236 cm +1 0 0 1 57.02362 434.6236 cm Q q -1 0 0 1 57.02362 461.0236 cm +1 0 0 1 57.02362 422.6236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -2263,10 +2284,10 @@ Q Q Q q -1 0 0 1 57.02362 455.0236 cm +1 0 0 1 57.02362 416.6236 cm Q q -1 0 0 1 57.02362 431.0236 cm +1 0 0 1 57.02362 392.6236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -2288,10 +2309,10 @@ Q Q Q q -1 0 0 1 57.02362 425.0236 cm +1 0 0 1 57.02362 386.6236 cm Q q -1 0 0 1 57.02362 413.0236 cm +1 0 0 1 57.02362 374.6236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -2313,33 +2334,33 @@ Q Q Q q -1 0 0 1 57.02362 395.0236 cm +1 0 0 1 57.02362 356.6236 cm Q q -1 0 0 1 57.02362 377.0236 cm +1 0 0 1 57.02362 338.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (One primitive. Every pattern.) Tj T* ET Q Q q -1 0 0 1 57.02362 351.0236 cm +1 0 0 1 57.02362 312.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (4.3 Four Scopes of Feedback) Tj T* ET Q Q q -1 0 0 1 57.02362 333.0236 cm +1 0 0 1 57.02362 294.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The single word "feedback" covers four nested scopes, each giving rise to one of our core abstractions:) Tj T* ET Q Q q -1 0 0 1 57.02362 327.0236 cm +1 0 0 1 57.02362 288.6236 cm Q q -1 0 0 1 57.02362 237.0236 cm +1 0 0 1 57.02362 198.6236 cm q 1 1 1 rg n 0 90 481.2283 -18 re f* @@ -2514,16 +2535,16 @@ Q Q Q q -1 0 0 1 57.02362 237.0236 cm +1 0 0 1 57.02362 198.6236 cm Q q -1 0 0 1 57.02362 159.0236 cm +1 0 0 1 57.02362 120.6236 cm q BT 1 0 0 1 0 62 Tm .519908 Tw 12 TL /F1 10 Tf 0 0 0 rg (Within a single VM, a continuation is the unit \227 the whole call stack, captured & passed. Across processes) Tj T* 0 Tw 1.828917 Tw (on the same machine, a portal is the unit \227 the whole heap or VM state, serialized to a file, resumed) Tj T* 0 Tw 2.175257 Tw (elsewhere. Across implementations that share no binary compatibility, Scheme source itself is the unit:) Tj T* 0 Tw 1.27989 Tw /F5 10 Tf (\(define) Tj ( ) Tj (x) Tj ( ) Tj (42\)) Tj /F1 10 Tf ( travels because every parser already knows how to receive it. Across machines, bytes) Tj T* 0 Tw -0.111031 Tw (over a socket are the unit \227 an HTTP request is feedback to a peer, a response is feedback back. The HTTP) Tj T* 0 Tw (handler is 70 lines of portable Scheme that runs byte-identical in all three runtimes.) Tj T* ET Q Q q -1 0 0 1 57.02362 117.0236 cm +1 0 0 1 57.02362 78.62362 cm q BT 1 0 0 1 0 26 Tm .158138 Tw 12 TL /F1 10 Tf 0 0 0 rg (The same abstraction, at four scopes. No new primitive at any level \227 each scope adds one implementation) Tj T* 0 Tw 1.356019 Tw (primitive \() Tj /F5 10 Tf (call/cc) Tj /F1 10 Tf ( / portal / reader / socket\) and keeps the semantics. This is what "feedback is all you) Tj T* 0 Tw (need" actually means once you extend it past the process boundary.) Tj T* ET Q @@ -2531,7 +2552,7 @@ Q endstream endobj -123 0 obj +129 0 obj << /Length 9151 >> @@ -2942,9 +2963,9 @@ Q endstream endobj -124 0 obj +130 0 obj << -/Length 12847 +/Length 12789 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -2963,7 +2984,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\2477.2 Cross-impl portal matrix: ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-portal-cross) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\2476.6 asm naive GC \(bump vs mark-sweep memory\): ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-gc) Tj T* ET Q Q q @@ -2988,7 +3009,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\2477.5 Portal save+load timings: ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-portal) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\2476.6 asm meta-GC \(arena fast path vs naive sweep\): ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-gc-arena) Tj T* ET Q Q q @@ -3013,7 +3034,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\24711.3 HTTP server vs busybox / python http.server: ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-web) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\2477.2 Cross-impl portal matrix: ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-portal-cross) Tj T* ET Q Q q @@ -3038,7 +3059,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\24711.4 RPC chain \(Py ) Tj /F6 10 Tf 12 TL (\256) Tj /F1 10 Tf 12 TL ( C relay ) Tj /F6 10 Tf 12 TL (\256) Tj /F1 10 Tf 12 TL ( asm\): ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-rpc-chain) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\2477.5 Portal save+load timings: ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-portal) Tj T* ET Q Q q @@ -3063,6 +3084,56 @@ Q q 1 0 0 1 23 -3 cm q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\24711.3 HTTP server vs busybox / python http.server: ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-web) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 675.0236 cm +Q +q +1 0 0 1 57.02362 663.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (\24711.4 RPC chain \(Py ) Tj /F6 10 Tf 12 TL (\256) Tj /F1 10 Tf 12 TL ( C relay ) Tj /F6 10 Tf 12 TL (\256) Tj /F1 10 Tf 12 TL ( asm\): ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-rpc-chain) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 657.0236 cm +Q +q +1 0 0 1 57.02362 645.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Run everything: ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-all) Tj T* ET Q Q @@ -3071,25 +3142,25 @@ Q Q Q q -1 0 0 1 57.02362 663.0236 cm +1 0 0 1 57.02362 627.0236 cm Q q -1 0 0 1 57.02362 621.0236 cm +1 0 0 1 57.02362 585.0236 cm q BT 1 0 0 1 0 26 Tm .215522 Tw 12 TL /F1 10 Tf 0 0 0 rg (Each target's script lives under ) Tj /F5 10 Tf (tests/) Tj /F1 10 Tf ( and uses the six-layer safety envelope from ) Tj /F5 10 Tf (CLAUDE.md) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (set) Tj ( ) Tj (-e) Tj /F1 10 Tf ( +) Tj T* 0 Tw .46213 Tw /F5 10 Tf (ulimit) Tj ( ) Tj (-v) Tj /F1 10 Tf ( kernel cap + ) Tj /F5 10 Tf (trap) Tj /F1 10 Tf ( on EXIT + ) Tj /F5 10 Tf (timeout) Tj /F1 10 Tf ( + explicit kill + ) Tj /F5 10 Tf (pgrep) Tj /F1 10 Tf ( straggler check\). No benchmark) Tj T* 0 Tw (leaves background processes alive.) Tj T* ET Q Q q -1 0 0 1 57.02362 595.0236 cm +1 0 0 1 57.02362 559.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (6.1 Raw Results) Tj T* ET Q Q q -1 0 0 1 57.02362 583.0236 cm +1 0 0 1 57.02362 547.0236 cm Q q -1 0 0 1 57.02362 385.0236 cm +1 0 0 1 57.02362 349.0236 cm q 1 1 1 rg n 0 198 481.2283 -18 re f* @@ -3529,60 +3600,60 @@ Q Q Q q -1 0 0 1 57.02362 385.0236 cm +1 0 0 1 57.02362 349.0236 cm Q q -1 0 0 1 57.02362 355.0236 cm +1 0 0 1 57.02362 319.0236 cm q BT 1 0 0 1 0 14 Tm 1.31189 Tw 12 TL /F3 10 Tf 0 0 0 rg (BC Speedup) Tj /F1 10 Tf ( = interpreter time / bytecode time. This measures the gain from compilation within Lumbda) Tj T* 0 Tw (itself.) Tj T* ET Q Q q -1 0 0 1 57.02362 329.0236 cm +1 0 0 1 57.02362 293.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (6.2 Analysis) Tj T* ET Q Q q -1 0 0 1 57.02362 275.0236 cm +1 0 0 1 57.02362 239.0236 cm q BT 1 0 0 1 0 38 Tm 2.646027 Tw 12 TL /F1 10 Tf 0 0 0 rg (The bytecode compiler delivers ) Tj /F3 10 Tf (7--12x speedups) Tj /F1 10 Tf ( on recursive & iterative workloads compared to the) Tj T* 0 Tw .139168 Tw (tree-walking interpreter. The largest gains appear in tight loops \() Tj /F5 10 Tf (sum-to) Tj /F1 10 Tf (: 11.4x\) & deep recursion \() Tj /F5 10 Tf (fib\(20\)) Tj /F1 10 Tf T* 0 Tw .224882 Tw (tree: 9.2x, ) Tj /F5 10 Tf (mergesort) Tj /F1 10 Tf (: 11.0x\), where the explicit frame stack & specialized opcodes eliminate the overhead) Tj T* 0 Tw (of AST traversal.) Tj T* ET Q Q q -1 0 0 1 57.02362 245.0236 cm +1 0 0 1 57.02362 209.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.762025 Tw (Hash table operations show a smaller speedup \(1.6x\) because the bottleneck sits in Python's dictionary) Tj T* 0 Tw (operations, not in Scheme evaluation overhead.) Tj T* ET Q Q q -1 0 0 1 57.02362 191.0236 cm +1 0 0 1 57.02362 155.0236 cm q BT 1 0 0 1 0 38 Tm 1.224168 Tw 12 TL /F1 10 Tf 0 0 0 rg (CPython remains 50--150x faster than the bytecode VM on most benchmarks. This is expected: CPython) Tj T* 0 Tw .86402 Tw (compiles to native bytecode with a C runtime, while Lumbda's bytecode VM is itself written in Python. The) Tj T* 0 Tw -0.007975 Tw (comparison establishes that Lumbda pays a known, bounded overhead for running a complete Scheme \(with) Tj T* 0 Tw (full ) Tj /F5 10 Tf (call/cc) Tj /F1 10 Tf (, exact rationals, & hygienic macros\) inside a host language.) Tj T* ET Q Q q -1 0 0 1 57.02362 149.0236 cm +1 0 0 1 57.02362 113.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 2.429873 Tw (The important comparison is not Lumbda vs CPython \(different languages\), but Lumbda interpreter vs) Tj T* 0 Tw 1.254395 Tw (Lumbda bytecode \(same language, same semantics, different execution strategy\). The bytecode compiler) Tj T* 0 Tw (proves that feedback-based architecture does not preclude efficient execution.) Tj T* ET Q Q q -1 0 0 1 57.02362 123.0236 cm +1 0 0 1 57.02362 87.02362 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (6.3 What the Benchmarks Test) Tj T* ET Q Q q -1 0 0 1 57.02362 111.0236 cm +1 0 0 1 57.02362 75.02362 cm Q q -1 0 0 1 57.02362 111.0236 cm +1 0 0 1 57.02362 75.02362 cm Q q -1 0 0 1 57.02362 99.02362 cm +1 0 0 1 57.02362 63.02362 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -3604,64 +3675,14 @@ Q Q Q q -1 0 0 1 57.02362 93.02362 cm -Q -q -1 0 0 1 57.02362 81.02362 cm -q -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (fib\(20\) tree-recursive) Tj /F1 10 Tf (: Exponential call tree. Tests ) Tj /F5 10 Tf (OP_CALL) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (OP_RETURN) Tj /F1 10 Tf ( throughput) Tj T* ET -Q -Q -q -Q -Q -Q -q -1 0 0 1 57.02362 75.02362 cm -Q -q -1 0 0 1 57.02362 63.02362 cm -q -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (tak\(15,10,6\)) Tj /F1 10 Tf (: Takeuchi function. Deep mutual recursion with 3 arguments) Tj T* ET -Q -Q -q -Q -Q -Q -q 1 0 0 1 57.02362 62.69291 cm Q endstream endobj -125 0 obj +131 0 obj << -/Length 9725 +/Length 9669 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -3680,7 +3701,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (sum-to\(50000\)) Tj /F1 10 Tf (: 50,000 tail-recursive iterations. Tests frame stack performance at scale) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (fib\(20\) tree-recursive) Tj /F1 10 Tf (: Exponential call tree. Tests ) Tj /F5 10 Tf (OP_CALL) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (OP_RETURN) Tj /F1 10 Tf ( throughput) Tj T* ET Q Q q @@ -3705,7 +3726,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (ackermann\(3,4\)) Tj /F1 10 Tf (: Deeply nested recursion \(125 result, many thousands of calls\)) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (tak\(15,10,6\)) Tj /F1 10 Tf (: Takeuchi function. Deep mutual recursion with 3 arguments) Tj T* ET Q Q q @@ -3730,7 +3751,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (list ops) Tj /F1 10 Tf (: ) Tj /F5 10 Tf (iota) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (reverse) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (filter) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (map) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (fold-left) Tj /F1 10 Tf ( chain on 5,000 elements) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (sum-to\(50000\)) Tj /F1 10 Tf (: 50,000 tail-recursive iterations. Tests frame stack performance at scale) Tj T* ET Q Q q @@ -3755,7 +3776,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (mergesort) Tj /F1 10 Tf (: Recursive divide-and-conquer on 200 elements. Tests ) Tj /F5 10 Tf (cons) Tj /F1 10 Tf ( allocation throughput) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (ackermann\(3,4\)) Tj /F1 10 Tf (: Deeply nested recursion \(125 result, many thousands of calls\)) Tj T* ET Q Q q @@ -3780,6 +3801,56 @@ Q q 1 0 0 1 23 -3 cm q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (list ops) Tj /F1 10 Tf (: ) Tj /F5 10 Tf (iota) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (reverse) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (filter) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (map) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (fold-left) Tj /F1 10 Tf ( chain on 5,000 elements) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 675.0236 cm +Q +q +1 0 0 1 57.02362 663.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (mergesort) Tj /F1 10 Tf (: Recursive divide-and-conquer on 200 elements. Tests ) Tj /F5 10 Tf (cons) Tj /F1 10 Tf ( allocation throughput) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 657.0236 cm +Q +q +1 0 0 1 57.02362 645.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (hash-table) Tj /F1 10 Tf (: 1,000 ) Tj /F5 10 Tf (set!) Tj /F1 10 Tf ( + ) Tj /F5 10 Tf (ref) Tj /F1 10 Tf ( operations. Tests Python dict interop overhead) Tj T* ET Q Q @@ -3788,25 +3859,25 @@ Q Q Q q -1 0 0 1 57.02362 663.0236 cm +1 0 0 1 57.02362 627.0236 cm Q q -1 0 0 1 57.02362 637.0236 cm +1 0 0 1 57.02362 601.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (6.4 Three Implementations Head-to-Head \(i5-8350U\)) Tj T* ET Q Q q -1 0 0 1 57.02362 583.0236 cm +1 0 0 1 57.02362 547.0236 cm q BT 1 0 0 1 0 38 Tm 3.147362 Tw 12 TL /F1 10 Tf 0 0 0 rg (Same hardware, same workloads, in-process timing via ) Tj /F5 10 Tf (current-time-ms) Tj /F1 10 Tf (. Best of two runs. Each) Tj T* 0 Tw 1.886027 Tw (implementation is run in its high-performance configuration: Python with ) Tj /F5 10 Tf (--fast) Tj /F1 10 Tf ( \(bytecode VM\), C with) Tj T* 0 Tw .85402 Tw /F5 10 Tf (--fast) Tj /F1 10 Tf ( \(bytecode VM, also its mode for deep recursion\), asm in its native tree-walker mode \(asm has no) Tj T* 0 Tw (bytecode layer \227 it doesn't need one\).) Tj T* ET Q Q q -1 0 0 1 57.02362 577.0236 cm +1 0 0 1 57.02362 541.0236 cm Q q -1 0 0 1 57.02362 505.0236 cm +1 0 0 1 57.02362 469.0236 cm q 1 1 1 rg n 0 72 481.2283 -18 re f* @@ -3951,20 +4022,20 @@ Q Q Q q -1 0 0 1 57.02362 505.0236 cm +1 0 0 1 57.02362 469.0236 cm Q q -1 0 0 1 57.02362 487.0236 cm +1 0 0 1 57.02362 451.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (\(C fast is the fastest cell in every row \227 best of the three on this hardware.\)) Tj T* ET Q Q q -1 0 0 1 57.02362 479.0236 cm +1 0 0 1 57.02362 443.0236 cm Q q -1 0 0 1 57.02362 409.978 cm +1 0 0 1 57.02362 373.978 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -3987,13 +4058,13 @@ Q Q Q q -1 0 0 1 57.02362 401.978 cm +1 0 0 1 57.02362 365.978 cm Q q -1 0 0 1 57.02362 393.978 cm +1 0 0 1 57.02362 357.978 cm Q q -1 0 0 1 57.02362 325.6092 cm +1 0 0 1 57.02362 289.6092 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -4016,70 +4087,64 @@ Q Q Q q -1 0 0 1 57.02362 317.6092 cm +1 0 0 1 57.02362 281.6092 cm Q q -1 0 0 1 57.02362 287.6092 cm +1 0 0 1 57.02362 251.6092 cm q BT 1 0 0 1 0 14 Tm 3.825835 Tw 12 TL /F3 10 Tf 0 0 0 rg (Reproduce:) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-3way) Tj /F1 10 Tf ( \(source: ) Tj /F5 10 Tf (tests/bench-3way.sh) Tj /F1 10 Tf (\). Prints the same table on your) Tj T* 0 Tw (hardware with best-of-two timings.) Tj T* ET Q Q q -1 0 0 1 57.02362 221.6092 cm +1 0 0 1 57.02362 185.6092 cm q BT 1 0 0 1 0 50 Tm .013432 Tw 12 TL /F1 10 Tf 0 0 0 rg (C wins every workload on this hardware. Its bytecode compiler + explicit frame stack \(and optional ) Tj /F5 10 Tf (--jit) Tj /F1 10 Tf ( for) Tj T* 0 Tw .885223 Tw (pattern-matched call forms\) gives a ~3\327 margin over asm on tail-recursive loops and deep recursion alike.) Tj T* 0 Tw 1.958241 Tw (asm's tree-walker is the narrowest Scheme of the three \227 no bytecode layer, no JIT \227 but still beats) Tj T* 0 Tw .566147 Tw (Python's bytecode VM by ~7\2268\327 because it pays no Python overhead \(no dict lookups, no object allocation) Tj T* 0 Tw (per VM op, no interpreter dispatch thunk\).) Tj T* ET Q Q q -1 0 0 1 57.02362 119.6092 cm +1 0 0 1 57.02362 83.60924 cm q BT 1 0 0 1 0 86 Tm 3.940642 Tw 12 TL /F3 10 Tf 0 0 0 rg (None of the three segfault on ackermann in their recommended mode.) Tj /F1 10 Tf ( Python ) Tj /F5 10 Tf (--fast) Tj /F1 10 Tf ( uses) Tj T* 0 Tw 2.150596 Tw /F5 10 Tf (OP_TAIL_CALL) Tj /F1 10 Tf ( with explicit frames. C ) Tj /F5 10 Tf (--fast) Tj /F1 10 Tf ( uses its bytecode VM, also with explicit frames. asm's) Tj T* 0 Tw 1.025522 Tw /F5 10 Tf (jmp) Tj /F1 10 Tf (-based TCO reuses the same host stack slot for tail calls. Only C's ) Tj /F5 10 Tf (default) Tj /F1 10 Tf ( tree-walker mode would) Tj T* 0 Tw -0.110555 Tw (exhaust the host C stack on deep recursion \227 by design; it uses the C call stack for each Scheme call. Either) Tj T* 0 Tw -0.056353 Tw (pass ) Tj /F5 10 Tf (-f) Tj /F1 10 Tf (/) Tj /F5 10 Tf (--fast) Tj /F1 10 Tf ( or ) Tj /F5 10 Tf (ulimit) Tj ( ) Tj (-s) Tj ( ) Tj (unlimited) Tj /F1 10 Tf ( when using the C tree-walker on deeply recursive code. The C) Tj T* 0 Tw -0.045877 Tw (binary's help text spells this out explicitly. \(A future refactor could spawn a worker pthread with a 64 MB stack) Tj T* 0 Tw 3.438556 Tw (and run eval there, making the tree-walker safe under any configuration \227 tracked as an optional) Tj T* 0 Tw (improvement, low priority given ) Tj /F5 10 Tf (--fast) Tj /F1 10 Tf ( is strictly faster anyway.\)) Tj T* ET Q Q -q -1 0 0 1 57.02362 65.60924 cm -q -BT 1 0 0 1 0 38 Tm 1.376027 Tw 12 TL /F3 10 Tf 0 0 0 rg (asm's remaining bottleneck is allocation, not lookup.) Tj /F1 10 Tf ( Profiling ) Tj /F5 10 Tf (sum-to\(1M\)) Tj /F1 10 Tf ( shows ~170 MB RSS \227) Tj T* 0 Tw .036147 Tw (each tail call through ) Tj /F5 10 Tf (apply_closure) Tj /F1 10 Tf ( + ) Tj /F5 10 Tf (env_define) Tj /F1 10 Tf ( allocates 24 bytes per parameter \(sym / val / parent\),) Tj T* 0 Tw -0.083038 Tw (twice per ) Tj /F5 10 Tf (loop) Tj /F1 10 Tf ( iteration, for 48 MB total before the three ) Tj /F5 10 Tf (heap_grow) Tj /F1 10 Tf ( events that follow. A future optimization) Tj T* 0 Tw .258138 Tw (candidate is per-frame batched allocation \() Tj /F5 10 Tf (8) Tj ( ) Tj (+) Tj ( ) Tj (16N) Tj /F1 10 Tf ( bytes once per call instead of ) Tj /F5 10 Tf (24N) Tj /F1 10 Tf (\), or env-cell in-place) Tj T* 0 Tw ET -Q -Q endstream endobj -126 0 obj +132 0 obj << -/Length 10836 +/Length 9228 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 717.0236 cm +1 0 0 1 57.02362 669.0236 cm q -BT 1 0 0 1 0 38 Tm .198241 Tw 12 TL /F1 10 Tf 0 0 0 rg (reuse for self-tail-calls. An inline cache for env lookups \(ported from Python's VM\) turns out to help less than) Tj T* 0 Tw 1.679272 Tw (anticipated because asm's env chains are typically only 2 deep and each step is a pointer dereference;) Tj T* 0 Tw .173917 Tw (measured upper bound is ~5%. The ~3\327 gap to C is mostly the absence of a bytecode layer and the per-call) Tj T* 0 Tw (env allocation \227 not a lookup-path problem.) Tj T* ET +BT 1 0 0 1 0 86 Tm 1.376027 Tw 12 TL /F3 10 Tf 0 0 0 rg (asm's remaining bottleneck is allocation, not lookup.) Tj /F1 10 Tf ( Profiling ) Tj /F5 10 Tf (sum-to\(1M\)) Tj /F1 10 Tf ( shows ~170 MB RSS \227) Tj T* 0 Tw .036147 Tw (each tail call through ) Tj /F5 10 Tf (apply_closure) Tj /F1 10 Tf ( + ) Tj /F5 10 Tf (env_define) Tj /F1 10 Tf ( allocates 24 bytes per parameter \(sym / val / parent\),) Tj T* 0 Tw -0.083038 Tw (twice per ) Tj /F5 10 Tf (loop) Tj /F1 10 Tf ( iteration, for 48 MB total before the three ) Tj /F5 10 Tf (heap_grow) Tj /F1 10 Tf ( events that follow. A future optimization) Tj T* 0 Tw .258138 Tw (candidate is per-frame batched allocation \() Tj /F5 10 Tf (8) Tj ( ) Tj (+) Tj ( ) Tj (16N) Tj /F1 10 Tf ( bytes once per call instead of ) Tj /F5 10 Tf (24N) Tj /F1 10 Tf (\), or env-cell in-place) Tj T* 0 Tw .198241 Tw (reuse for self-tail-calls. An inline cache for env lookups \(ported from Python's VM\) turns out to help less than) Tj T* 0 Tw 1.679272 Tw (anticipated because asm's env chains are typically only 2 deep and each step is a pointer dereference;) Tj T* 0 Tw .173917 Tw (measured upper bound is ~5%. The ~3\327 gap to C is mostly the absence of a bytecode layer and the per-call) Tj T* 0 Tw (env allocation \227 not a lookup-path problem.) Tj T* ET Q Q q -1 0 0 1 57.02362 691.0236 cm +1 0 0 1 57.02362 643.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (6.5 Native Container Primitives: Moving Hot Loops Into Asm) Tj T* ET Q Q q -1 0 0 1 57.02362 625.0236 cm +1 0 0 1 57.02362 577.0236 cm q BT 1 0 0 1 0 50 Tm .721147 Tw 12 TL /F1 10 Tf 0 0 0 rg (The proof-netspace server \(\2477\) needs a hash-set to dedupe proof hashes. asm had no native hash-set, so) Tj T* 0 Tw .241019 Tw (d88149a shipped a portable one in Lumbda itself: a fixed-size vector of alists, with the bucket walk written in) Tj T* 0 Tw .202397 Tw (Scheme. It works in every tier and matches the usual chained-hash-table algorithm. But the entire inner loop) Tj T* 0 Tw 2.469417 Tw (\227 ) Tj /F5 10 Tf (modulo) Tj /F1 10 Tf ( for bucket index, ) Tj /F5 10 Tf (car) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (cdr) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (=) Tj /F1 10 Tf ( to walk the chain, ) Tj /F5 10 Tf (cons) Tj /F1 10 Tf ( to insert \227 runs through asm's) Tj T* 0 Tw (tree-walker, one Scheme AST node at a time.) Tj T* ET Q Q q -1 0 0 1 57.02362 571.0236 cm +1 0 0 1 57.02362 523.0236 cm q BT 1 0 0 1 0 38 Tm 1.109882 Tw 12 TL /F1 10 Tf 0 0 0 rg (A native hash-set moves the same algorithm into asm: ) Tj /F5 10 Tf (bi_hash_set_add) Tj /F1 10 Tf ( is one ) Tj /F5 10 Tf (hash_value) Tj /F1 10 Tf ( call, one) Tj T* 0 Tw .366556 Tw /F5 10 Tf (AND) Tj /F1 10 Tf ( mask, one bucket-slot load, one ) Tj /F5 10 Tf (hs_chain_find) Tj /F1 10 Tf ( loop over raw tagged pairs, and one ) Tj /F5 10 Tf (make_pair) Tj /F1 10 Tf ( on) Tj T* 0 Tw 3.403223 Tw (miss. No environment lookups, no frame allocation, no tree-walk dispatch \227 the entire hot path is) Tj T* 0 Tw (straight-line machine code.) Tj T* ET Q Q q -1 0 0 1 57.02362 565.0236 cm +1 0 0 1 57.02362 517.0236 cm Q q -1 0 0 1 57.02362 493.0236 cm +1 0 0 1 57.02362 445.0236 cm q 1 1 1 rg n 0 72 481.2283 -18 re f* @@ -4224,50 +4289,653 @@ Q Q Q q -1 0 0 1 57.02362 493.0236 cm +1 0 0 1 57.02362 445.0236 cm Q q -1 0 0 1 57.02362 439.0236 cm +1 0 0 1 57.02362 391.0236 cm q BT 1 0 0 1 0 38 Tm 2.58789 Tw 12 TL /F1 10 Tf 0 0 0 rg (Same hash function \(key value for ints, djb2 for strings, identity for everything else\), same 64-bucket) Tj T* 0 Tw 1.194897 Tw (chaining, same load factor. The 15\22621\327 factor is ) Tj /F3 10 Tf (purely the cost of interpretation on the bucket walk) Tj /F1 10 Tf (:) Tj T* 0 Tw 1.291079 Tw (each Scheme-level ) Tj /F5 10 Tf (car) Tj /F1 10 Tf ( pays a tag check plus an eval dispatch, while the asm-level loop is two memory) Tj T* 0 Tw (loads and a compare per step.) Tj T* ET Q Q q -1 0 0 1 57.02362 373.0236 cm +1 0 0 1 57.02362 325.0236 cm q 0 0 0 rg BT 1 0 0 1 0 50 Tm /F1 10 Tf 12 TL 17.94283 Tw (This matters beyond one data structure. Every container that lives in) Tj T* 0 Tw 4.560927 Tw (Lumbda-the-language-on-asm-the-interpreter pays the same overhead. For a server that processes) Tj T* 0 Tw .026962 Tw (thousands of proofs per minute, pulling the hash-set into the asm primitive layer erases a dominant cost. The) Tj T* 0 Tw 1.349897 Tw (same pattern applies to any structure with a tight inner loop: vector sort, string search, rolling checksum.) Tj T* 0 Tw (Asm's tree-walker is slow on user code; asm's builtins run at the speed of the host CPU.) Tj T* ET Q Q q -1 0 0 1 57.02362 319.0236 cm +1 0 0 1 57.02362 271.0236 cm q BT 1 0 0 1 0 38 Tm .622256 Tw 12 TL /F1 10 Tf 0 0 0 rg (The layout reuses vector tag 7 with a negative sentinel at offset 0 \(hash-table: ) Tj /F5 10 Tf (-1) Tj /F1 10 Tf (, hash-set: ) Tj /F5 10 Tf (-2) Tj /F1 10 Tf (\). ) Tj /F5 10 Tf (vector?) Tj /F1 10 Tf T* 0 Tw .303797 Tw (and the printer check the sentinel to stay disjoint from real vectors. No additional tag bits were consumed \227) Tj T* 0 Tw 1.122397 Tw (the seven-way tag mask \() Tj /F5 10 Tf (TAG_MASK) Tj ( ) Tj (=) Tj ( ) Tj (7) Tj /F1 10 Tf (\) still has room for only heap-level containers, and nothing new) Tj T* 0 Tw (needs tagging because the sentinel carries the discrimination.) Tj T* ET Q Q q -1 0 0 1 57.02362 277.0236 cm +1 0 0 1 57.02362 229.0236 cm q BT 1 0 0 1 0 26 Tm .314261 Tw 12 TL /F3 10 Tf 0 0 0 rg (Reproduce:) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-hashset) Tj /F1 10 Tf ( \(source: ) Tj /F5 10 Tf (tests/bench-hashset.sh) Tj /F1 10 Tf (\). Asm-only: C and Python tiers) Tj T* 0 Tw 2.919168 Tw (supply ) Tj /F5 10 Tf (hash-table) Tj /F1 10 Tf ( but not ) Tj /F5 10 Tf (hash-set) Tj /F1 10 Tf ( \227 the speedup shown here is intra-asm, native primitive vs) Tj T* 0 Tw (Scheme-level implementation, not cross-tier.) Tj T* ET Q Q q -1 0 0 1 57.02362 245.8236 cm +1 0 0 1 57.02362 203.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (6.6 Memory Management and the Meta-GC) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 137.0236 cm +q +BT 1 0 0 1 0 50 Tm 2.31131 Tw 12 TL /F1 10 Tf 0 0 0 rg (The asm tier's default allocator is a bump pointer: every allocation advances ) Tj /F5 10 Tf (%r15) Tj /F1 10 Tf ( monotonically, and) Tj T* 0 Tw .389272 Tw (nothing is ever freed. Python and C tiers have garbage collection \(Python's host GC, Boehm ) Tj /F5 10 Tf (GC_MALLOC) Tj /F1 10 Tf ( in) Tj T* 0 Tw 1.422556 Tw (C\); asm doesn't, by design, to keep the 6,645-line auditable surface small. Short programs finish without) Tj T* 0 Tw .713432 Tw (paying. Long-running asm servers leak until the kernel caps them \227 a real hazard that crashed this laptop) Tj T* 0 Tw (twice during HTTP benchmarks before we wrote the six-layer safety envelope into ) Tj /F5 10 Tf (CLAUDE.md) Tj /F1 10 Tf (.) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 119.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL -0.10245 Tw (To measure what a collector would actually cost, we built a second asm binary behind an assemble-time flag:) Tj T* 0 Tw ET +Q +Q +q +1 0 0 1 57.02362 78.62362 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .960784 rg +n -6 -6 480.0283 31.2 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 11.2 Tm /F5 8 Tf 9.6 TL (as --64 --defsym GC_NAIVE=1 uncommonlisp.s # collecting build) Tj T* (as --64 uncommonlisp.s # default, bump-only) Tj T* ET +Q +Q +Q +Q +Q + +endstream +endobj +133 0 obj +<< +/Length 12105 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 57.02362 729.0236 cm +q +BT 1 0 0 1 0 26 Tm 1.033797 Tw 12 TL /F1 10 Tf 0 0 0 rg (Same source, same tests \(137/137 pass on both\). The GC build adds an 8-byte ) Tj /F5 10 Tf (\(size) Tj ( ) Tj (<) Tj (<) Tj ( ) Tj (1) Tj ( ) Tj (|) Tj ( ) Tj (mark\)) Tj /F1 10 Tf T* 0 Tw 2.41631 Tw (header on every heap block, a stop-the-world mark-sweep triggered by bump overflow, and a free-list) Tj T* 0 Tw (allocator that first-fits reclaimed space.) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 699.0236 cm +q +BT 1 0 0 1 0 14 Tm .665835 Tw 12 TL /F3 10 Tf 0 0 0 rg (Control-group numbers) Tj /F1 10 Tf ( \(workload: 2,000 iterations of build-sum-discard over 200-element lists, i5-8350U,) Tj T* 0 Tw (512 MB ) Tj /F5 10 Tf (ulimit) Tj ( ) Tj (-v) Tj /F1 10 Tf (\):) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 693.0236 cm +Q +q +1 0 0 1 57.02362 639.0236 cm +q +1 1 1 rg +n 0 54 481.2283 -18 re f* +.878431 .878431 .878431 rg +n 0 36 481.2283 -18 re f* +1 1 1 rg +n 0 18 481.2283 -18 re f* +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 39 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 52.46882 0 Td (asm build) Tj T* -52.46882 0 Td ET +Q +Q +q +1 0 0 1 169.6176 39 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 15.36055 0 Td (Wall time) Tj T* -15.36055 0 Td ET +Q +Q +q +1 0 0 1 256.2387 39 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 13.96555 0 Td (Peak RSS) Tj T* -13.96555 0 Td ET +Q +Q +q +1 0 0 1 342.8598 39 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 42.01425 0 Td (GC firings) Tj T* -42.01425 0 Td ET +Q +Q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 21 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (bump only \(no GC\)) Tj T* ET +Q +Q +q +1 0 0 1 169.6176 21 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (1,097 ms) Tj T* ET +Q +Q +q +1 0 0 1 256.2387 21 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (133.9 MB) Tj T* ET +Q +Q +q +1 0 0 1 342.8598 21 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (none) Tj T* ET +Q +Q +q +1 0 0 1 6 3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (naive mark-sweep \() Tj /F5 10 Tf (GC_NAIVE=1) Tj /F1 10 Tf (\)) Tj T* ET +Q +Q +q +1 0 0 1 169.6176 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (1,431 ms) Tj T* ET +Q +Q +q +1 0 0 1 256.2387 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (1.1 MB) Tj T* ET +Q +Q +q +1 0 0 1 342.8598 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (~200) Tj T* ET +Q +Q +q +1 J +1 j +0 0 0 RG +.25 w +n 0 36 m 481.2283 36 l S +n 0 18 m 481.2283 18 l S +n 163.6176 0 m 163.6176 54 l S +n 250.2387 0 m 250.2387 54 l S +n 336.8598 0 m 336.8598 54 l S +n 0 54 m 481.2283 54 l S +n 0 0 m 481.2283 0 l S +n 0 0 m 0 54 l S +n 481.2283 0 m 481.2283 54 l S +Q +Q +Q +q +1 0 0 1 57.02362 639.0236 cm +Q +q +1 0 0 1 57.02362 597.0236 cm +q +BT 1 0 0 1 0 26 Tm .105917 Tw 12 TL /F3 10 Tf 0 0 0 rg (124\327 less memory at a ~30% throughput cost.) Tj /F1 10 Tf ( That is the honest GC tax at the naive end of the spectrum) Tj T* 0 Tw 7.017739 Tw (\227 the number we had been guessing at before building the control group. Every future) Tj T* 0 Tw (memory-management proposal \(generational, incremental, region-based\) now has a concrete floor to beat.) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 573.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (6.6.1 Meta-GC: Arena Fast Path with Mark-Phase Verifier) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 531.0236 cm +q +BT 1 0 0 1 0 26 Tm .669314 Tw 12 TL /F1 10 Tf 0 0 0 rg (On top of the naive sweep, the GC build exposes a Lumbda primitive ) Tj /F5 10 Tf (\(with-arena) Tj ( ) Tj (thunk\)) Tj /F1 10 Tf ( that takes a) Tj T* 0 Tw 1.104556 Tw (zero-argument procedure, runs it, and attempts an ) Tj /F3 10 Tf (O\(1\) bulk reclaim) Tj /F1 10 Tf ( of every allocation the thunk made.) Tj T* 0 Tw (The decision logic is a three-way policy:) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 525.0236 cm +Q +q +1 0 0 1 57.02362 525.0236 cm +Q +q +1 0 0 1 57.02362 501.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 9 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 2 0 Td (1.) Tj T* -2 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 14 Tm 2.391223 Tw 12 TL /F3 10 Tf 0 0 0 rg (If an implicit GC fired inside the thunk) Tj /F1 10 Tf ( \(heap overflow forced a full sweep mid-execution\), the) Tj T* 0 Tw (snapshot is stale \227 skip the reset attempt and return.) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 495.0236 cm +Q +q +1 0 0 1 57.02362 459.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 21 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 2 0 Td (2.) Tj T* -2 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 26 Tm 1.041772 Tw 12 TL /F3 10 Tf 0 0 0 rg (Otherwise, run the existing mark phase) Tj /F1 10 Tf ( with the thunk's return value added as an extra root, then) Tj T* 0 Tw -0.081862 Tw (walk the arena range ) Tj /F5 10 Tf ([snapshot_r15,) Tj ( ) Tj (%r15\)) Tj /F1 10 Tf ( block by block. If ) Tj /F4 10 Tf (no) Tj /F1 10 Tf ( header in that range has the mark) Tj T* 0 Tw (bit set, nothing survives \227 bulk-reset ) Tj /F5 10 Tf (%r15) Tj /F1 10 Tf ( to the snapshot \(one store\) and return.) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 453.0236 cm +Q +q +1 0 0 1 57.02362 429.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 9 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 2 0 Td (3.) Tj T* -2 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 14 Tm .77213 Tw 12 TL /F3 10 Tf 0 0 0 rg (If any block in the arena range is marked) Tj /F1 10 Tf (, the thunk's return value or some other root reaches into) Tj T* 0 Tw (the arena. Abort the reset, fall through to the naive sweep on the full heap, and return.) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 429.0236 cm +Q +q +1 0 0 1 57.02362 351.0236 cm +q +BT 1 0 0 1 0 62 Tm 2.481079 Tw 12 TL /F1 10 Tf 0 0 0 rg (Free-list reuse is disabled while an arena is active so the chain stays pristine for a verbatim restore;) Tj T* 0 Tw 4.369862 Tw /F5 10 Tf (heap_alloc) Tj /F1 10 Tf ( enforces this via a global ) Tj /F5 10 Tf (arena_active) Tj /F1 10 Tf ( flag. One critical correctness detail: after) Tj T* 0 Tw .105596 Tw /F5 10 Tf (apply_proc_raw) Tj /F1 10 Tf ( returns from the thunk, volatile registers contain stale tagged pointers into the arena. The) Tj T* 0 Tw 1.244897 Tw (conservative stack scan would otherwise treat those residuals as live roots and trigger a false escape on) Tj T* 0 Tw 2.046796 Tw (every call. Zero-ing ) Tj /F5 10 Tf (%rax,) Tj ( ) Tj (%rcx,) Tj ( ) Tj (%rdx,) Tj ( ) Tj (%rsi,) Tj ( ) Tj (%rdi,) Tj ( ) Tj (%rbp,) Tj ( ) Tj (%r8-%r12) Tj /F1 10 Tf ( before the verifier runs) Tj T* 0 Tw (removes this hazard.) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 333.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (Meta-GC benchmark) Tj /F1 10 Tf ( \(same workload, same binary, both phases in one process\):) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 327.0236 cm +Q +q +1 0 0 1 57.02362 261.0236 cm +q +1 1 1 rg +n 0 66 481.2283 -18 re f* +.878431 .878431 .878431 rg +n 0 48 481.2283 -18 re f* +1 1 1 rg +n 0 30 481.2283 -30 re f* +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 51 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 58.91765 0 Td (Strategy) Tj T* -58.91765 0 Td ET +Q +Q +q +1 0 0 1 175.8453 51 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 5.075475 0 Td (Wall time) Tj T* -5.075475 0 Td ET +Q +Q +q +1 0 0 1 241.8962 51 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 13.11632 0 Td (Peak RSS) Tj T* -13.11632 0 Td ET +Q +Q +q +1 0 0 1 326.8189 51 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 6.465475 0 Td (Full GCs) Tj T* -6.465475 0 Td ET +Q +Q +q +1 0 0 1 392.8698 51 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 2.00425 0 Td (Arena outcomes) Tj T* -2.00425 0 Td ET +Q +Q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 33 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Phase A: naive sweep only) Tj T* ET +Q +Q +q +1 0 0 1 175.8453 33 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (932 ms) Tj T* ET +Q +Q +q +1 0 0 1 241.8962 33 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (1.2 MB) Tj T* ET +Q +Q +q +1 0 0 1 326.8189 33 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (200) Tj T* ET +Q +Q +q +1 0 0 1 392.8698 33 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (\(unused\)) Tj T* ET +Q +Q +q +1 0 0 1 6 15 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Phase B: arena-wrapped body) Tj T* ET +Q +Q +q +1 0 0 1 175.8453 15 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (945 ms) Tj T* ET +Q +Q +q +1 0 0 1 241.8962 15 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (1.2 MB) Tj T* ET +Q +Q +q +1 0 0 1 326.8189 15 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (1) Tj T* ET +Q +Q +q +1 0 0 1 392.8698 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 14 Tm /F3 10 Tf 12 TL (2,000 resets / 0) Tj T* (escapes) Tj T* ET +Q +Q +q +1 J +1 j +0 0 0 RG +.25 w +n 0 48 m 481.2283 48 l S +n 0 30 m 481.2283 30 l S +n 169.8453 0 m 169.8453 66 l S +n 235.8962 0 m 235.8962 66 l S +n 320.8189 0 m 320.8189 66 l S +n 386.8698 0 m 386.8698 66 l S +n 0 66 m 481.2283 66 l S +n 0 0 m 481.2283 0 l S +n 0 0 m 0 66 l S +n 481.2283 0 m 481.2283 66 l S +Q +Q +Q +q +1 0 0 1 57.02362 261.0236 cm +Q +q +1 0 0 1 57.02362 195.0236 cm +q +BT 1 0 0 1 0 50 Tm .306019 Tw 12 TL /F1 10 Tf 0 0 0 rg (Phase B reclaims ) Tj /F3 10 Tf (205 MB) Tj /F1 10 Tf ( via O\(1\) bulk resets \227 the work that would otherwise drive the mark-sweep path.) Tj T* 0 Tw .213241 Tw (Only one full GC fires \(initial warm-up\); the other 199 pressure events are replaced by arena exits. Wall time) Tj T* 0 Tw 1.256373 Tw (is within 1.4% of naive-only on this workload because the arena verifier's mark cost is comparable to the) Tj T* 0 Tw 2.654168 Tw (sweep cost it replaces. The advantage is not raw throughput but ) Tj /F3 10 Tf (bounded per-iteration latency) Tj /F1 10 Tf ( \(no) Tj T* 0 Tw (pressure-driven jitter\) and the observability to prove which path actually ran.) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 177.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (Escape detection) Tj /F1 10 Tf (. When the thunk returns a heap-allocated value that the outer scope captures:) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 146.2236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .960784 rg +n -6 -6 480.0283 21.6 re B* +Q +q +.960784 .960784 .960784 rg +n 0 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 4.8 0 19.2 9.6 re f* +.960784 .960784 .960784 rg +n 24 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 28.8 0 33.6 9.6 re f* +.960784 .960784 .960784 rg +n 62.4 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 67.2 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 72 0 48 9.6 re f* +.960784 .960784 .960784 rg +n 120 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 124.8 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 129.6 0 28.8 9.6 re f* +.960784 .960784 .960784 rg +n 158.4 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 163.2 0 9.6 9.6 re f* +.960784 .960784 .960784 rg +n 172.8 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 177.6 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 182.4 0 48 9.6 re f* +.960784 .960784 .960784 rg +n 230.4 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 235.2 0 9.6 9.6 re f* +.960784 .960784 .960784 rg +n 244.8 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 249.6 0 4.8 9.6 re f* +.960784 .960784 .960784 rg +n 254.4 0 28.8 9.6 re f* +.960784 .960784 .960784 rg +n 283.2 0 0 9.6 re f* +BT 1 0 0 1 0 1.6 Tm 9.6 TL /F5 8 Tf 0 0 0 rg (\() Tj /F7 8 Tf 0 .501961 0 rg (set!) Tj /F5 8 Tf .733333 .733333 .733333 rg ( ) Tj .098039 .090196 .486275 rg (escaped) Tj .733333 .733333 .733333 rg ( ) Tj 0 0 0 rg (\() Tj 0 0 1 rg (with-arena) Tj .733333 .733333 .733333 rg ( ) Tj 0 0 0 rg (\() Tj /F7 8 Tf 0 .501961 0 rg (lambda) Tj /F5 8 Tf .733333 .733333 .733333 rg ( ) Tj 0 0 0 rg (\(\)) Tj .733333 .733333 .733333 rg ( ) Tj 0 0 0 rg (\() Tj 0 0 1 rg (build-list) Tj .733333 .733333 .733333 rg ( ) Tj .4 .4 .4 rg (50) Tj .733333 .733333 .733333 rg ( ) Tj .4 .4 .4 rg (') Tj 0 0 0 rg (\(\)\)\)\)\)) Tj .733333 .733333 .733333 rg T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 57.02362 102.2236 cm +q +BT 1 0 0 1 0 26 Tm .812397 Tw 12 TL /F1 10 Tf 0 0 0 rg (\205the verifier finds the returned pair's chain marked inside the arena range, correctly aborts, and the naive) Tj T* 0 Tw 4.913453 Tw (sweep keeps the data live. Tested at 20 consecutive escapes: 20 escapes reported, 0 resets,) Tj T* 0 Tw /F5 10 Tf (\(length) Tj ( ) Tj (escaped\)) Tj /F1 10 Tf ( = 50 after completion. The fall-through path is correct under load.) Tj T* ET +Q +Q + +endstream +endobj +134 0 obj +<< +/Length 9096 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 57.02362 753.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (6.6.2 What the Control Group Tells Us) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 735.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The meta-GC makes three memory strategies co-resident in one binary, each with its own stats counter:) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 729.0236 cm +Q +q +1 0 0 1 57.02362 729.0236 cm +Q +q +1 0 0 1 57.02362 717.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (gc-stats) Tj /F1 10 Tf ( ) Tj /F6 10 Tf 12 TL (\256) Tj /F1 10 Tf 12 TL ( ) Tj /F5 10 Tf (\(collections) Tj ( ) Tj (.) Tj ( ) Tj (live-bytes\)) Tj /F1 10 Tf ( \227 pressure-driven sweeps) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 711.0236 cm +Q +q +1 0 0 1 57.02362 699.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (arena-stats) Tj /F1 10 Tf ( ) Tj /F6 10 Tf 12 TL (\256) Tj /F1 10 Tf 12 TL ( ) Tj /F5 10 Tf (\(calls) Tj ( ) Tj (resets) Tj ( ) Tj (escapes) Tj ( ) Tj (bytes-reclaimed\)) Tj /F1 10 Tf ( \227 arena outcomes) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 681.0236 cm +Q +q +1 0 0 1 57.02362 591.0236 cm +q +BT 1 0 0 1 0 74 Tm 1.957223 Tw 12 TL /F1 10 Tf 0 0 0 rg (On an arena-friendly workload \(transient allocation, scoped lifetime\) the arena hit rate is 100% and the) Tj T* 0 Tw .25389 Tw (full-sweep rate falls to 1. On an arena-hostile workload \(every iteration escapes\) the arena-stats show 100%) Tj T* 0 Tw .02755 Tw (escapes and the naive sweep carries the load, with correctness preserved. The ) Tj /F4 10 Tf (policy) Tj /F1 10 Tf ( \227 decide which to run) Tj T* 0 Tw 2.513647 Tw (at each exit \227 is ~370 lines of GNU assembler; the ) Tj /F4 10 Tf (mechanism) Tj /F1 10 Tf ( it decides between \(bump allocator,) Tj T* 0 Tw 2.75389 Tw (mark-sweep, bulk reset\) adds another ~300 lines. Together they form a concrete floor for any future) Tj T* 0 Tw 2.237025 Tw (memory-management proposal: if it costs more than 30% throughput, or buys less than 124\327 memory) Tj T* 0 Tw (reduction, or hits less than 100% on arena-friendly code, the naive baseline is already better.) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 561.0236 cm +q +BT 1 0 0 1 0 14 Tm .018334 Tw 12 TL /F3 10 Tf 0 0 0 rg (Reproduce:) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-gc) Tj /F1 10 Tf ( \(bump vs naive sweep\) and ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-gc-arena) Tj /F1 10 Tf ( \(naive sweep vs arena) Tj T* 0 Tw (fast path\). Sources: ) Tj /F5 10 Tf (tests/bench-gc-memory.sh) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (tests/bench-gc-arena.sh) Tj /F1 10 Tf (.) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 529.8236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (7. Portal: Feedback Across Time) Tj T* ET Q Q q -1 0 0 1 57.02362 201.8236 cm +1 0 0 1 57.02362 485.8236 cm q BT 1 0 0 1 0 26 Tm .17989 Tw 12 TL /F1 10 Tf 0 0 0 rg (A continuation is feedback within a process. A portal is feedback across processes. Same primitive, different) Tj T* 0 Tw 1.06631 Tw (scope: capture machine state, serialize it, reload it elsewhere, resume. Lumbda ships three portal formats) Tj T* 0 Tw (with different tradeoffs & constituencies.) Tj T* ET Q Q q -1 0 0 1 57.02362 195.8236 cm +1 0 0 1 57.02362 479.8236 cm Q q -1 0 0 1 57.02362 99.82362 cm +1 0 0 1 57.02362 383.8236 cm q 1 1 1 rg n 0 96 481.2283 -18 re f* @@ -4470,38 +5138,29 @@ Q Q Q q -1 0 0 1 57.02362 99.82362 cm +1 0 0 1 57.02362 383.8236 cm Q q -1 0 0 1 57.02362 69.82362 cm +1 0 0 1 57.02362 353.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .49713 Tw (Times measured on a 4-binding workload \(int + list + string + fib\(30\) result\) excluding process startup. "k" =) Tj T* 0 Tw (continuation.) Tj T* ET Q Q - -endstream -endobj -127 0 obj -<< -/Length 9354 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 753.0236 cm +1 0 0 1 57.02362 327.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (7.1 S-Expression Portal \227 the Portable One) Tj T* ET Q Q q -1 0 0 1 57.02362 735.0236 cm +1 0 0 1 57.02362 309.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The most boring format is the most portable. An S-expression portal is a sequence of ) Tj /F5 10 Tf (define) Tj /F1 10 Tf ( forms:) Tj T* ET Q Q q -1 0 0 1 57.02362 665.8236 cm +1 0 0 1 57.02362 240.6236 cm q q 1 0 0 1 0 0 cm @@ -4522,35 +5181,44 @@ Q Q Q q -1 0 0 1 57.02362 633.8236 cm +1 0 0 1 57.02362 208.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .550522 Tw (Every Scheme implementation in the world can already read this. No schema, no decoder, no version field.) Tj T* 0 Tw (The file is a Scheme program; loading it is evaluating it.) Tj T* ET Q Q q -1 0 0 1 57.02362 579.8236 cm +1 0 0 1 57.02362 154.6236 cm q BT 1 0 0 1 0 38 Tm .702256 Tw 12 TL /F3 10 Tf 0 0 0 rg (The key insight: the language IS the interchange format.) Tj /F1 10 Tf ( We did not design this. R. Kent Dybvig didn't.) Tj T* 0 Tw 1.188726 Tw (John McCarthy didn't. It is a structural consequence of homoiconicity: if the syntax of the language is the) Tj T* 0 Tw 5.458196 Tw (syntax of its data structures, then data serialization is language serialization. Portability across) Tj T* 0 Tw (implementations is free \227 it arrives with the parser.) Tj T* ET Q Q q -1 0 0 1 57.02362 537.8236 cm +1 0 0 1 57.02362 112.6236 cm q BT 1 0 0 1 0 26 Tm .511772 Tw 12 TL /F1 10 Tf 0 0 0 rg (Producer side: assemble the file with ) Tj /F5 10 Tf (\(display) Tj ( ) Tj (...\)) Tj /F1 10 Tf ( & ) Tj /F5 10 Tf (\(write) Tj ( ) Tj (...\)) Tj /F1 10 Tf ( to an output port. Consumer side:) Tj T* 0 Tw 3.693453 Tw /F5 10 Tf (\(load) Tj ( ) Tj ("file.sexp"\)) Tj /F1 10 Tf (. Both sides exist in every implementation, giving us a 3\3273 matrix of valid) Tj T* 0 Tw (exchanges.) Tj T* ET Q Q q -1 0 0 1 57.02362 511.8236 cm +1 0 0 1 57.02362 86.62362 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (7.2 Cross-Implementation Exchange Matrix) Tj T* ET Q Q q -1 0 0 1 57.02362 499.8236 cm +1 0 0 1 57.02362 74.62362 cm Q + +endstream +endobj +135 0 obj +<< +/Length 9291 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 409.8236 cm +1 0 0 1 57.02362 675.0236 cm q 1 1 1 rg n 0 90 481.2283 -18 re f* @@ -4612,21 +5280,21 @@ q 1 0 0 1 112.9396 39 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 237.7025 39 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 362.4654 39 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -4640,21 +5308,21 @@ q 1 0 0 1 112.9396 21 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 237.7025 21 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 362.4654 21 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -4668,21 +5336,21 @@ q 1 0 0 1 112.9396 3 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 237.7025 3 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 362.4654 3 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -4705,41 +5373,41 @@ Q Q Q q -1 0 0 1 57.02362 409.8236 cm +1 0 0 1 57.02362 675.0236 cm Q q -1 0 0 1 57.02362 379.8236 cm +1 0 0 1 57.02362 645.0236 cm q BT 1 0 0 1 0 14 Tm 3.901835 Tw 12 TL /F1 10 Tf 0 0 0 rg (9 of 9. Verified by ) Tj /F5 10 Tf (tests/portal-cross-test.sh) Tj /F1 10 Tf ( \() Tj /F3 10 Tf (make bench-portal-cross) Tj /F1 10 Tf (\). Same file, same) Tj T* 0 Tw (semantics, regardless of which process produced it.) Tj T* ET Q Q q -1 0 0 1 57.02362 337.8236 cm +1 0 0 1 57.02362 603.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .526019 Tw (This matters because it defeats the "version lock-in" trap. If the JSON portal were the only option, a Python) Tj T* 0 Tw 2.478453 Tw (3.15 producer could emit structures a C consumer couldn't parse. With S-expression portals, the only) Tj T* 0 Tw (dependency is a parser that handles the subset of forms in the file. Every implementation already has one.) Tj T* ET Q Q q -1 0 0 1 57.02362 311.8236 cm +1 0 0 1 57.02362 577.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (7.3 JSON Portal \227 Graph-Aware, Continuation-Preserving) Tj T* ET Q Q q -1 0 0 1 57.02362 281.8236 cm +1 0 0 1 57.02362 547.0236 cm q BT 1 0 0 1 0 14 Tm .373453 Tw 12 TL /F1 10 Tf 0 0 0 rg (When you need to preserve shared references, cycles, closures, or a ) Tj /F4 10 Tf (live continuation) Tj /F1 10 Tf (, S-expressions aren't) Tj T* 0 Tw (enough. The JSON portal \(Python & C\) performs graph-aware serialization:) Tj T* ET Q Q q -1 0 0 1 57.02362 275.8236 cm +1 0 0 1 57.02362 541.0236 cm Q q -1 0 0 1 57.02362 275.8236 cm +1 0 0 1 57.02362 541.0236 cm Q q -1 0 0 1 57.02362 263.8236 cm +1 0 0 1 57.02362 529.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -4761,10 +5429,10 @@ Q Q Q q -1 0 0 1 57.02362 257.8236 cm +1 0 0 1 57.02362 523.0236 cm Q q -1 0 0 1 57.02362 245.8236 cm +1 0 0 1 57.02362 511.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -4787,10 +5455,10 @@ Q Q Q q -1 0 0 1 57.02362 239.8236 cm +1 0 0 1 57.02362 505.0236 cm Q q -1 0 0 1 57.02362 227.8236 cm +1 0 0 1 57.02362 493.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -4812,10 +5480,10 @@ Q Q Q q -1 0 0 1 57.02362 221.8236 cm +1 0 0 1 57.02362 487.0236 cm Q q -1 0 0 1 57.02362 209.8236 cm +1 0 0 1 57.02362 475.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -4838,10 +5506,10 @@ Q Q Q q -1 0 0 1 57.02362 203.8236 cm +1 0 0 1 57.02362 469.0236 cm Q q -1 0 0 1 57.02362 191.8236 cm +1 0 0 1 57.02362 457.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -4864,22 +5532,22 @@ Q Q Q q -1 0 0 1 57.02362 173.8236 cm +1 0 0 1 57.02362 439.0236 cm Q q -1 0 0 1 57.02362 143.8236 cm +1 0 0 1 57.02362 409.0236 cm q BT 1 0 0 1 0 14 Tm 2.974168 Tw 12 TL /F1 10 Tf 0 0 0 rg (Deserialization is two-pass: shell pass creates empty object shells & assigns reference IDs, fill pass) Tj T* 0 Tw (populates pointers & values. This handles the closure-that-captures-itself pattern cleanly.) Tj T* ET Q Q q -1 0 0 1 57.02362 101.8236 cm +1 0 0 1 57.02362 367.0236 cm q BT 1 0 0 1 0 26 Tm 4.719816 Tw 12 TL /F1 10 Tf 0 0 0 rg (During VM execution, ) Tj /F5 10 Tf (portal-checkpoint!) Tj /F1 10 Tf ( triggers at ) Tj /F5 10 Tf (OP_JUMP) Tj /F1 10 Tf ( & ) Tj /F5 10 Tf (OP_TAIL_CALL) Tj /F1 10 Tf ( instructions,) Tj T* 0 Tw 1.439168 Tw (capturing the current continuation, serializing it to a ) Tj /F5 10 Tf (.portal) Tj /F1 10 Tf ( file, & continuing. Resumption restores the) Tj T* 0 Tw (saved state & continues execution from the exact instruction where the checkpoint occurred.) Tj T* ET Q Q q -1 0 0 1 57.02362 71.02362 cm +1 0 0 1 57.02362 336.2236 cm q q 1 0 0 1 0 0 cm @@ -4899,36 +5567,27 @@ Q Q Q Q - -endstream -endobj -128 0 obj -<< -/Length 9310 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 753.0236 cm +1 0 0 1 57.02362 316.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The computation does not need to restart from the beginning.) Tj T* ET Q Q q -1 0 0 1 57.02362 727.0236 cm +1 0 0 1 57.02362 290.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (7.4 Binary Heap Dump \227 the Fast One) Tj T* ET Q Q q -1 0 0 1 57.02362 697.0236 cm +1 0 0 1 57.02362 260.2236 cm q BT 1 0 0 1 0 14 Tm .755197 Tw 12 TL /F1 10 Tf 0 0 0 rg (The asm implementation ships a direct-dump portal: write the raw heap bytes, the ) Tj /F5 10 Tf (r14) Tj /F1 10 Tf ( \(env\) & ) Tj /F5 10 Tf (r15) Tj /F1 10 Tf ( \(bump) Tj T* 0 Tw (pointer\) registers, the heap base address, & a magic header. No parsing, no encoding.) Tj T* ET Q Q q -1 0 0 1 57.02362 599.0236 cm +1 0 0 1 57.02362 162.2236 cm q q 1 0 0 1 0 0 cm @@ -4949,34 +5608,43 @@ Q Q Q q -1 0 0 1 57.02362 555.0236 cm +1 0 0 1 57.02362 118.2236 cm q BT 1 0 0 1 0 26 Tm 1.387739 Tw 12 TL /F1 10 Tf 0 0 0 rg (Sub-millisecond save & resume. The MAP_FIXED trick is why it works across processes: because every) Tj T* 0 Tw 1.474556 Tw (pointer inside the heap is an absolute address, resuming at a different address would require relocation.) Tj T* 0 Tw (Mapping at the same address keeps pointers live.) Tj T* ET Q Q q -1 0 0 1 57.02362 501.0236 cm +1 0 0 1 57.02362 64.22362 cm q BT 1 0 0 1 0 38 Tm 1.067739 Tw 12 TL /F1 10 Tf 0 0 0 rg (Constraints: same architecture, same binary layout, same process model. An asm binary portal written on) Tj T* 0 Tw .022545 Tw (one box resumes on another x86_64 Linux box running the same asm binary. It does not resume on a rebuilt) Tj T* 0 Tw 1.065522 Tw (binary \227 the BSS-resident symbol table ) Tj /F5 10 Tf (sym_table) Tj /F1 10 Tf ( is not in the heap dump, so interned symbols would) Tj T* 0 Tw (need to be reinterned. That's the price of trivial serialization.) Tj T* ET Q Q + +endstream +endobj +136 0 obj +<< +/Length 9918 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 475.0236 cm +1 0 0 1 57.02362 753.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (7.5 Cross-Process Benchmarks) Tj T* ET Q Q q -1 0 0 1 57.02362 433.0236 cm +1 0 0 1 57.02362 711.0236 cm q BT 1 0 0 1 0 26 Tm 2.703647 Tw 12 TL /F1 10 Tf 0 0 0 rg (Producer process A saves state to a file; consumer process B starts fresh, loads the file, continues.) Tj T* 0 Tw 10.67759 Tw (Wall-clock time for both processes end-to-end, 50 iterations, same-laptop. ) Tj /F3 10 Tf (Reproduce:) Tj /F1 10 Tf T* 0 Tw /F5 10 Tf (make) Tj ( ) Tj (bench-portal) Tj /F1 10 Tf ( \(source: ) Tj /F5 10 Tf (tests/portal-benchmark.sh) Tj /F1 10 Tf (\).) Tj T* ET Q Q q -1 0 0 1 57.02362 427.0236 cm +1 0 0 1 57.02362 705.0236 cm Q q -1 0 0 1 57.02362 229.0236 cm +1 0 0 1 57.02362 507.0236 cm q 1 1 1 rg n 0 198 481.2283 -18 re f* @@ -5182,64 +5850,72 @@ Q Q Q q -1 0 0 1 57.02362 229.0236 cm +1 0 0 1 57.02362 507.0236 cm Q q -1 0 0 1 57.02362 187.0236 cm +1 0 0 1 57.02362 465.0236 cm q BT 1 0 0 1 0 26 Tm .698334 Tw 12 TL /F1 10 Tf 0 0 0 rg (The asm) Tj /F6 10 Tf 12 TL (\256) Tj /F1 10 Tf 12 TL (asm cross-process is ~160\327 faster than Python) Tj /F6 10 Tf 12 TL (\256) Tj /F1 10 Tf 12 TL (Python. The binary & S-expression portals are) Tj T* 0 Tw .812256 Tw (within 10% of each other on this workload \227 the bottleneck is process startup, not serialization. For larger) Tj T* 0 Tw (heaps the binary format pulls further ahead; for portability, S-expression always wins.) Tj T* ET Q Q q -1 0 0 1 57.02362 161.0236 cm +1 0 0 1 57.02362 439.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (7.6 Mismatch Cases: Graceful Degradation) Tj T* ET Q Q q -1 0 0 1 57.02362 143.0236 cm +1 0 0 1 57.02362 421.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A usable persistence layer fails well. What happens when the consumer meets unexpected input?) Tj T* ET Q Q q -1 0 0 1 57.02362 137.0236 cm +1 0 0 1 57.02362 415.0236 cm Q q -1 0 0 1 57.02362 71.02362 cm +1 0 0 1 57.02362 265.0236 cm q 1 1 1 rg -n 0 66 481.2283 -18 re f* +n 0 150 481.2283 -18 re f* .878431 .878431 .878431 rg -n 0 48 481.2283 -18 re f* +n 0 132 481.2283 -18 re f* 1 1 1 rg -n 0 30 481.2283 -30 re f* +n 0 114 481.2283 -30 re f* +.878431 .878431 .878431 rg +n 0 84 481.2283 -30 re f* +1 1 1 rg +n 0 54 481.2283 -18 re f* +.878431 .878431 .878431 rg +n 0 36 481.2283 -18 re f* +1 1 1 rg +n 0 18 481.2283 -18 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET q -1 0 0 1 6 51 cm +1 0 0 1 6 135 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 96.07173 0 Td (Input) Tj T* -96.07173 0 Td ET Q Q q -1 0 0 1 234.5835 51 cm +1 0 0 1 234.5835 135 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 19.16248 0 Td (Python) Tj T* -19.16248 0 Td ET Q Q q -1 0 0 1 318.7984 51 cm +1 0 0 1 318.7984 135 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 32.49748 0 Td (C) Tj T* -32.49748 0 Td ET Q Q q -1 0 0 1 403.0134 51 cm +1 0 0 1 403.0134 135 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 26.10248 0 Td (asm) Tj T* -26.10248 0 Td ET @@ -5248,99 +5924,60 @@ Q 0 0 0 rg BT /F1 10 Tf 12 TL ET q -1 0 0 1 6 33 cm +1 0 0 1 6 117 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Empty file) Tj T* ET Q Q q -1 0 0 1 234.5835 33 cm +1 0 0 1 234.5835 117 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (continue) Tj T* ET Q Q q -1 0 0 1 318.7984 33 cm +1 0 0 1 318.7984 117 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (continue) Tj T* ET Q Q q -1 0 0 1 403.0134 33 cm +1 0 0 1 403.0134 117 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (continue) Tj T* ET Q Q q -1 0 0 1 6 15 cm +1 0 0 1 6 99 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Missing file) Tj T* ET Q Q q -1 0 0 1 234.5835 3 cm +1 0 0 1 234.5835 87 cm q BT 1 0 0 1 0 14 Tm 12 TL /F5 10 Tf 0 0 0 rg (file) Tj ( ) Tj (not) Tj T* (found:) Tj ( ) Tj (\205) Tj T* ET Q Q q -1 0 0 1 318.7984 15 cm +1 0 0 1 318.7984 99 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL (error: \205) Tj T* ET Q Q q -1 0 0 1 403.0134 15 cm +1 0 0 1 403.0134 99 cm q BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (#f) Tj /F1 10 Tf ( + continue) Tj T* ET Q Q q -1 J -1 j -0 0 0 RG -.25 w -n 0 0 m 481.2283 0 l S -n 0 48 m 481.2283 48 l S -n 0 30 m 481.2283 30 l S -n 228.5835 0 m 228.5835 66 l S -n 312.7984 0 m 312.7984 66 l S -n 397.0134 0 m 397.0134 66 l S -n 0 66 m 481.2283 66 l S -n 0 0 m 0 66 l S -n 481.2283 0 m 481.2283 66 l S -Q -Q -Q - -endstream -endobj -129 0 obj -<< -/Length 7061 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 57.02362 681.0236 cm -q -1 1 1 rg -n 0 84 481.2283 -30 re f* -.878431 .878431 .878431 rg -n 0 54 481.2283 -18 re f* -1 1 1 rg -n 0 36 481.2283 -18 re f* -.878431 .878431 .878431 rg -n 0 18 481.2283 -18 re f* -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q 1 0 0 1 6 69 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Truncated sexp \() Tj /F5 10 Tf (\(define) Tj ( ) Tj (x) Tj /F1 10 Tf (\)) Tj T* ET @@ -5454,36 +6091,48 @@ q 1 j 0 0 0 RG .25 w +n 0 132 m 481.2283 132 l S +n 0 114 m 481.2283 114 l S n 0 84 m 481.2283 84 l S n 0 54 m 481.2283 54 l S n 0 36 m 481.2283 36 l S n 0 18 m 481.2283 18 l S -n 228.5835 0 m 228.5835 84 l S -n 312.7984 0 m 312.7984 84 l S -n 397.0134 0 m 397.0134 84 l S -n 0 0 m 0 84 l S -n 481.2283 0 m 481.2283 84 l S +n 228.5835 0 m 228.5835 150 l S +n 312.7984 0 m 312.7984 150 l S +n 397.0134 0 m 397.0134 150 l S +n 0 150 m 481.2283 150 l S n 0 0 m 481.2283 0 l S +n 0 0 m 0 150 l S +n 481.2283 0 m 481.2283 150 l S Q Q Q q -1 0 0 1 57.02362 681.0236 cm +1 0 0 1 57.02362 265.0236 cm Q q -1 0 0 1 57.02362 615.0236 cm +1 0 0 1 57.02362 199.0236 cm q BT 1 0 0 1 0 50 Tm 1.476556 Tw 12 TL /F1 10 Tf 0 0 0 rg (All defects surfaced & fixed during benchmark development: an asm segfault on ) Tj /F5 10 Tf (\(define) Tj ( ) Tj (x\)) Tj /F1 10 Tf ( without a) Tj T* 0 Tw 1.838453 Tw (value \(now binds to ) Tj /F5 10 Tf (VOID) Tj /F1 10 Tf (\), an asm portal-resume that accepted short headers \(now verifies ) Tj /F5 10 Tf (sys_read) Tj /F1 10 Tf T* 0 Tw 1.204272 Tw (returned a full 48 bytes & sanity-checks heap metadata\), a Python ) Tj /F5 10 Tf (file) Tj ( ) Tj (not) Tj ( ) Tj (found) Tj /F1 10 Tf ( error reporting the) Tj T* 0 Tw 1.304862 Tw (outer script path instead of the inner missing file \(now uses ) Tj /F5 10 Tf (FileNotFoundError.filename) Tj /F1 10 Tf (\). Graceful) Tj T* 0 Tw (degradation is not free; it is tested.) Tj T* ET Q Q + +endstream +endobj +137 0 obj +<< +/Length 6103 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 589.0236 cm +1 0 0 1 57.02362 753.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (7.7 Use Case: Distributed Primality Testing) Tj T* ET Q Q q -1 0 0 1 57.02362 462.2236 cm +1 0 0 1 57.02362 626.2236 cm q q 1 0 0 1 0 0 cm @@ -5503,38 +6152,38 @@ Q Q Q q -1 0 0 1 57.02362 418.2236 cm +1 0 0 1 57.02362 582.2236 cm q BT 1 0 0 1 0 26 Tm 1.105522 Tw 12 TL /F1 10 Tf 0 0 0 rg (Machine A starts the computation. Every 10,000 iterations, it writes a checkpoint. Machine B picks up the) Tj T* 0 Tw 2.790642 Tw /F5 10 Tf (.portal) Tj /F1 10 Tf ( file & continues from the last checkpoint. The computation migrates without either machine) Tj T* 0 Tw (needing to know about the other. Feedback \227 the continuation \227 carries the entire execution context.) Tj T* ET Q Q q -1 0 0 1 57.02362 387.0236 cm +1 0 0 1 57.02362 551.0236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (8. The EML Universality Proof) Tj T* ET Q Q q -1 0 0 1 57.02362 355.0236 cm +1 0 0 1 57.02362 519.0236 cm q BT 1 0 0 1 0 14 Tm 3.669104 Tw 12 TL /F1 10 Tf 0 0 0 rg (Lumbda ships with a mathematical proof that a single operator generates all elementary functions:) Tj T* 0 Tw /F5 10 Tf (eml\(x,) Tj ( ) Tj (y\)) Tj ( ) Tj (=) Tj ( ) Tj (exp\(x\)) Tj ( ) Tj (-) Tj ( ) Tj (ln\(y\)) Tj /F1 10 Tf (.) Tj T* ET Q Q q -1 0 0 1 57.02362 337.0236 cm +1 0 0 1 57.02362 501.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Reference: "All elementary functions from a single operator" \(arXiv:2603.21852v2\).) Tj T* ET Q Q q -1 0 0 1 57.02362 311.0236 cm +1 0 0 1 57.02362 475.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (8.1 The Operator) Tj T* ET Q Q q -1 0 0 1 57.02362 280.2236 cm +1 0 0 1 57.02362 444.2236 cm q q 1 0 0 1 0 0 cm @@ -5555,19 +6204,19 @@ Q Q Q q -1 0 0 1 57.02362 260.2236 cm +1 0 0 1 57.02362 424.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (With this operator & the constant ) Tj /F5 10 Tf (1) Tj /F1 10 Tf (, the following derivation chain constructs every elementary function:) Tj T* ET Q Q q -1 0 0 1 57.02362 234.2236 cm +1 0 0 1 57.02362 398.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (8.2 Stage 1: Core Functions \(Depth 1--3\)) Tj T* ET Q Q q -1 0 0 1 57.02362 184.2236 cm +1 0 0 1 57.02362 348.2236 cm q q 1 0 0 1 0 0 cm @@ -5588,28 +6237,19 @@ Q Q Q q -1 0 0 1 57.02362 140.2236 cm +1 0 0 1 57.02362 304.2236 cm q BT 1 0 0 1 0 26 Tm 16.01403 Tw 12 TL /F3 10 Tf 0 0 0 rg (Proof of ln recovery) Tj /F1 10 Tf (: Let ) Tj /F5 10 Tf (a) Tj ( ) Tj (=) Tj ( ) Tj (eml\(1,x\)) Tj ( ) Tj (=) Tj ( ) Tj (e) Tj ( ) Tj (-) Tj ( ) Tj (ln\(x\)) Tj /F1 10 Tf (. Then) Tj T* 0 Tw 28.85979 Tw /F5 10 Tf (eml\(a,) Tj ( ) Tj (1\)) Tj ( ) Tj (=) Tj ( ) Tj (exp\(e) Tj ( ) Tj (-) Tj ( ) Tj (ln\(x\)\)) Tj ( ) Tj (=) Tj ( ) Tj (exp\(e\)/x) Tj /F1 10 Tf (. Then) Tj T* 0 Tw /F5 10 Tf (eml\(1,) Tj ( ) Tj (exp\(e\)/x\)) Tj ( ) Tj (=) Tj ( ) Tj (e) Tj ( ) Tj (-) Tj ( ) Tj (ln\(exp\(e\)/x\)) Tj ( ) Tj (=) Tj ( ) Tj (e) Tj ( ) Tj (-) Tj ( ) Tj (e) Tj ( ) Tj (+) Tj ( ) Tj (ln\(x\)) Tj ( ) Tj (=) Tj ( ) Tj (ln\(x\)) Tj /F1 10 Tf (.) Tj T* ET Q Q - -endstream -endobj -130 0 obj -<< -/Length 9324 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 753.0236 cm +1 0 0 1 57.02362 278.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (8.3 Stage 2: Arithmetic) Tj T* ET Q Q q -1 0 0 1 57.02362 664.6236 cm +1 0 0 1 57.02362 189.8236 cm q q 1 0 0 1 0 0 cm @@ -5629,13 +6269,13 @@ Q Q Q q -1 0 0 1 57.02362 638.6236 cm +1 0 0 1 57.02362 163.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (8.4 Stage 3: Complex Plane Access) Tj T* ET Q Q q -1 0 0 1 57.02362 588.6236 cm +1 0 0 1 57.02362 113.8236 cm q q 1 0 0 1 0 0 cm @@ -5656,19 +6296,28 @@ Q Q Q q -1 0 0 1 57.02362 556.6236 cm +1 0 0 1 57.02362 81.82362 cm q BT 1 0 0 1 0 14 Tm .253071 Tw 12 TL /F1 10 Tf 0 0 0 rg (The key insight: ) Tj /F5 10 Tf (ln) Tj /F1 10 Tf ( of a negative number enters the complex plane. Since we can construct ) Tj /F5 10 Tf (-1) Tj /F1 10 Tf ( from eml via) Tj T* 0 Tw (the subtraction chain, ) Tj /F5 10 Tf (ln\(-1\)) Tj /F1 10 Tf ( yields ) Tj /F5 10 Tf (i) Tj /F6 10 Tf 12 TL (p) Tj /F5 10 Tf 12 TL /F1 10 Tf (, from which ) Tj /F5 10 Tf /F6 10 Tf 12 TL (p) Tj /F5 10 Tf 12 TL /F1 10 Tf ( & ) Tj /F5 10 Tf (i) Tj /F1 10 Tf ( follow.) Tj T* ET Q Q + +endstream +endobj +138 0 obj +<< +/Length 9468 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 530.6236 cm +1 0 0 1 57.02362 753.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (8.5 Stage 4: Trigonometry via Euler) Tj T* ET Q Q q -1 0 0 1 57.02362 480.6236 cm +1 0 0 1 57.02362 703.0236 cm q q 1 0 0 1 0 0 cm @@ -5689,29 +6338,29 @@ Q Q Q q -1 0 0 1 57.02362 460.6236 cm +1 0 0 1 57.02362 683.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (All trigonometric functions follow from complex exponentials, which follow from ) Tj /F5 10 Tf (exp) Tj /F1 10 Tf (, which follows from ) Tj /F5 10 Tf (eml) Tj /F1 10 Tf (.) Tj T* ET Q Q q -1 0 0 1 57.02362 434.6236 cm +1 0 0 1 57.02362 657.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (8.6 Verification & Friction Analysis) Tj T* ET Q Q q -1 0 0 1 57.02362 416.6236 cm +1 0 0 1 57.02362 639.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The proof is verified at three levels, with dramatically different friction:) Tj T* ET Q Q q -1 0 0 1 57.02362 410.6236 cm +1 0 0 1 57.02362 633.0236 cm Q q -1 0 0 1 57.02362 338.6236 cm +1 0 0 1 57.02362 561.0236 cm q 1 1 1 rg n 0 72 481.2283 -18 re f* @@ -5855,34 +6504,34 @@ Q Q Q q -1 0 0 1 57.02362 338.6236 cm +1 0 0 1 57.02362 561.0236 cm Q q -1 0 0 1 57.02362 296.6236 cm +1 0 0 1 57.02362 519.0236 cm q BT 1 0 0 1 0 26 Tm .395596 Tw 12 TL /F3 10 Tf 0 0 0 rg (The formal proof is 40x faster than the brute-force search & provides mathematical certainty instead) Tj T* 0 Tw 1.066027 Tw (of floating-point tolerance.) Tj /F1 10 Tf ( This is MOAD-0001 \(the sedimentary defect\) at the proof methodology layer:) Tj T* 0 Tw (O\(N\262\) search friction where O\(1\) algebraic reasoning suffices.) Tj T* ET Q Q q -1 0 0 1 57.02362 242.6236 cm +1 0 0 1 57.02362 465.0236 cm q BT 1 0 0 1 0 38 Tm 2.309862 Tw 12 TL /F1 10 Tf 0 0 0 rg (The numerical approaches enumerate all pairwise EML compositions at each depth, comparing results) Tj T* 0 Tw .653022 Tw (against target functions. This grows quadratically with the number of known values. The Lean proof does 5) Tj T* 0 Tw .327397 Tw (algebraic rewrites, each applying an axiom \() Tj /F5 10 Tf (exp\(ln\(x\)\)) Tj ( ) Tj (=) Tj ( ) Tj (x) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (ln\(exp\(x\)\)) Tj ( ) Tj (=) Tj ( ) Tj (x) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (ln\(1\)) Tj ( ) Tj (=) Tj ( ) Tj (0) Tj /F1 10 Tf (\). The type) Tj T* 0 Tw (checker confirms each rewrite in microseconds. No search. No tolerance. No conjecture dependency.) Tj T* ET Q Q q -1 0 0 1 57.02362 188.6236 cm +1 0 0 1 57.02362 411.0236 cm q BT 1 0 0 1 0 38 Tm 3.571147 Tw 12 TL /F3 10 Tf 0 0 0 rg (Lesson) Tj /F1 10 Tf (: The fastest path to truth is not computation \227 it is understanding. When you know ) Tj /F4 10 Tf (why) Tj /F1 10 Tf T* 0 Tw .96189 Tw /F5 10 Tf (eml\(1,) Tj ( ) Tj (eml\(eml\(1,x\),) Tj ( ) Tj (1\)\)) Tj ( ) Tj (=) Tj ( ) Tj (ln\(x\)) Tj /F1 10 Tf (, you verify it in microseconds. When you don't, you search for) Tj T* 0 Tw 1.513223 Tw (hours. Proof assistants eliminate the quadratic friction of verification. They are the hash set to numerical) Tj T* 0 Tw (analysis's nested loop.) Tj T* ET Q Q q -1 0 0 1 57.02362 182.6236 cm +1 0 0 1 57.02362 405.0236 cm Q q -1 0 0 1 57.02362 182.6236 cm +1 0 0 1 57.02362 405.0236 cm Q q -1 0 0 1 57.02362 146.6236 cm +1 0 0 1 57.02362 369.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -5904,10 +6553,10 @@ Q Q Q q -1 0 0 1 57.02362 140.6236 cm +1 0 0 1 57.02362 363.0236 cm Q q -1 0 0 1 57.02362 104.6236 cm +1 0 0 1 57.02362 327.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -5929,10 +6578,10 @@ Q Q Q q -1 0 0 1 57.02362 98.62362 cm +1 0 0 1 57.02362 321.0236 cm Q q -1 0 0 1 57.02362 74.62362 cm +1 0 0 1 57.02362 297.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -5954,19 +6603,10 @@ Q Q Q q -1 0 0 1 57.02362 74.62362 cm +1 0 0 1 57.02362 297.0236 cm Q - -endstream -endobj -131 0 obj -<< -/Length 8943 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 703.8236 cm +1 0 0 1 57.02362 227.8236 cm q q 1 0 0 1 0 0 cm @@ -5987,19 +6627,19 @@ Q Q Q q -1 0 0 1 57.02362 659.8236 cm +1 0 0 1 57.02362 183.8236 cm q BT 1 0 0 1 0 26 Tm 4.138556 Tw 12 TL /F1 10 Tf 0 0 0 rg (The Lean proof operates over abstract ) Tj /F5 10 Tf (exp) Tj /F1 10 Tf ( & ) Tj /F5 10 Tf (ln) Tj /F1 10 Tf ( functions with the axioms ) Tj /F5 10 Tf (exp\(ln\(x\)\)) Tj ( ) Tj (=) Tj ( ) Tj (x) Tj /F1 10 Tf (,) Tj T* 0 Tw 2.484897 Tw /F5 10 Tf (ln\(exp\(x\)\)) Tj ( ) Tj (=) Tj ( ) Tj (x) Tj /F1 10 Tf (, & ) Tj /F5 10 Tf (ln\(1\)) Tj ( ) Tj (=) Tj ( ) Tj (0) Tj /F1 10 Tf (. This makes the result independent of any particular real number) Tj T* 0 Tw (implementation.) Tj T* ET Q Q q -1 0 0 1 57.02362 653.8236 cm +1 0 0 1 57.02362 177.8236 cm Q q -1 0 0 1 57.02362 653.8236 cm +1 0 0 1 57.02362 177.8236 cm Q q -1 0 0 1 57.02362 569.8236 cm +1 0 0 1 57.02362 93.82362 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -6021,10 +6661,19 @@ Q Q Q q -1 0 0 1 57.02362 569.8236 cm +1 0 0 1 57.02362 93.82362 cm Q + +endstream +endobj +139 0 obj +<< +/Length 10209 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 491.0236 cm +1 0 0 1 57.02362 694.2236 cm q q 1 0 0 1 0 0 cm @@ -6045,16 +6694,16 @@ Q Q Q q -1 0 0 1 57.02362 423.0236 cm +1 0 0 1 57.02362 626.2236 cm q BT 1 0 0 1 0 50 Tm 4.101411 Tw 12 TL /F3 10 Tf 0 0 0 rg (Verification speed: Lean vs Lumbda tiers, both cold and cached.) Tj /F1 10 Tf ( Same five theorems, same) Tj T* 0 Tw 1.757362 Tw (symbolic-rewrite strategy. The Lumbda checker now implements its own cached-replay path that mirrors) Tj T* 0 Tw .258797 Tw (Lean's: write a small artifact after a successful run; on subsequent runs, trust the artifact if the magic header) Tj T* 0 Tw .759029 Tw (matches and skip re-verification. ) Tj /F5 10 Tf (rm) Tj ( ) Tj (-f) Tj ( ) Tj (/tmp/lumbda-eml.cache) Tj /F1 10 Tf ( forces a cold re-check \(analogous to) Tj T* 0 Tw /F5 10 Tf (lake) Tj ( ) Tj (clean) Tj /F1 10 Tf (\). Best of 3 on the i5-8350U:) Tj T* ET Q Q q -1 0 0 1 57.02362 417.0236 cm +1 0 0 1 57.02362 620.2236 cm Q q -1 0 0 1 57.02362 309.0236 cm +1 0 0 1 57.02362 512.2236 cm q 1 1 1 rg n 0 108 481.2283 -18 re f* @@ -6238,96 +6887,102 @@ Q Q Q q -1 0 0 1 57.02362 309.0236 cm +1 0 0 1 57.02362 512.2236 cm Q q -1 0 0 1 57.02362 243.0236 cm +1 0 0 1 57.02362 446.2236 cm q BT 1 0 0 1 0 50 Tm .204897 Tw 12 TL /F1 10 Tf 0 0 0 rg (Two comparisons matter. ) Tj /F3 10 Tf (Cold vs cold) Tj /F1 10 Tf ( is the honest end-to-end compare: Lumbda asm \(46 ms\) verifies the) Tj T* 0 Tw -0.127156 Tw (proof ) Tj /F3 10 Tf (~16\327 faster than Lean's cold rebuild) Tj /F1 10 Tf ( \(722 ms\) on the same hardware, because Lumbda doesn't link a) Tj T* 0 Tw .315636 Tw (compiled binary or spin up a kernel \227 it just runs a rewriter over five small terms. ) Tj /F3 10 Tf (Cached vs cached) Tj /F1 10 Tf ( is the) Tj T* 0 Tw 1.150966 Tw (throwaway benchmark but still interesting: Lumbda asm at 7 ms vs Lean at 5 ms, within 1.5\327, on what is) Tj T* 0 Tw (essentially "read a file and print five lines.") Tj T* ET Q Q q -1 0 0 1 57.02362 177.0236 cm +1 0 0 1 57.02362 380.2236 cm q BT 1 0 0 1 0 50 Tm .526772 Tw 12 TL /F3 10 Tf 0 0 0 rg (All four Lumbda tiers verify the proof.) Tj /F1 10 Tf ( A C ) Tj /F5 10 Tf (--fast) Tj /F1 10 Tf ( bytecode-compiler bug originally caused the final tier) Tj T* 0 Tw 10.06986 Tw (to hang on the rewriter's named-let loop; narrowed to a minimal reproduction \(see) Tj T* 0 Tw 1.693196 Tw /F5 10 Tf (c/TODO-named-let-bytecode.md) Tj /F1 10 Tf (\) and worked around in the proof file by using an internal recursive) Tj T* 0 Tw .558138 Tw /F5 10 Tf (define) Tj /F1 10 Tf ( in place of the offending named-let. All four tiers now complete in under 100 ms cold. ) Tj /F3 10 Tf (Reproduce:) Tj /F1 10 Tf T* 0 Tw /F5 10 Tf (make) Tj ( ) Tj (bench-proof) Tj /F1 10 Tf ( \(source: ) Tj /F5 10 Tf (tests/bench-proof.sh) Tj /F1 10 Tf (\).) Tj T* ET Q Q q -1 0 0 1 57.02362 87.02362 cm +1 0 0 1 57.02362 290.2236 cm q -BT 1 0 0 1 0 74 Tm 2.513543 Tw 12 TL /F3 10 Tf 0 0 0 rg (First machine-checked treatment.) Tj /F1 10 Tf ( The original paper \(Odrzywo) Tj /F7 10 Tf 12 TL (n) Tj /F1 10 Tf 12 TL (ek, arXiv:2603.21852v2, 2026-04-04\)) Tj T* 0 Tw .313453 Tw (presents the EML universality claim analytically \227 pure LaTeX mathematics, no formal tool. The companion) Tj T* 0 Tw .549873 Tw (Zenodo artifact is symbolic-regression / gradient-optimization code, not a verification. To our knowledge the) Tj T* 0 Tw 1.856373 Tw (Lean 4 proof shipped in this repo is the first machine-checked treatment of the EML identities, and the) Tj T* 0 Tw .247122 Tw (accompanying Lumbda-native checker is the first self-hosted machine-checked version. Five theorems, zero) Tj T* 0 Tw .234556 Tw /F5 10 Tf (sorry) Tj /F1 10 Tf (, no Mathlib dependency \227 40\327 faster than the brute-force numerical search it replaced, and carrying) Tj T* 0 Tw (the additional guarantee that no implementation quirk of floating point can ever break the conclusion.) Tj T* ET +BT 1 0 0 1 0 74 Tm 2.513543 Tw 12 TL /F3 10 Tf 0 0 0 rg (First machine-checked treatment.) Tj /F1 10 Tf ( The original paper \(Odrzywo) Tj /F8 10 Tf 12 TL (n) Tj /F1 10 Tf 12 TL (ek, arXiv:2603.21852v2, 2026-04-04\)) Tj T* 0 Tw .313453 Tw (presents the EML universality claim analytically \227 pure LaTeX mathematics, no formal tool. The companion) Tj T* 0 Tw .549873 Tw (Zenodo artifact is symbolic-regression / gradient-optimization code, not a verification. To our knowledge the) Tj T* 0 Tw 1.856373 Tw (Lean 4 proof shipped in this repo is the first machine-checked treatment of the EML identities, and the) Tj T* 0 Tw .247122 Tw (accompanying Lumbda-native checker is the first self-hosted machine-checked version. Five theorems, zero) Tj T* 0 Tw .234556 Tw /F5 10 Tf (sorry) Tj /F1 10 Tf (, no Mathlib dependency \227 40\327 faster than the brute-force numerical search it replaced, and carrying) Tj T* 0 Tw (the additional guarantee that no implementation quirk of floating point can ever break the conclusion.) Tj T* ET Q Q - -endstream -endobj -132 0 obj -<< -/Length 8391 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 751.8236 cm +1 0 0 1 57.02362 259.0236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (9. Language Coverage) Tj T* ET Q Q q -1 0 0 1 57.02362 731.8236 cm +1 0 0 1 57.02362 239.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Lumbda implements a near-complete R7RS-small Scheme:) Tj T* ET Q Q q -1 0 0 1 57.02362 677.8236 cm +1 0 0 1 57.02362 185.0236 cm q BT 1 0 0 1 0 38 Tm 1.369223 Tw 12 TL /F3 10 Tf 0 0 0 rg (Special forms) Tj /F1 10 Tf ( \(32\): ) Tj /F5 10 Tf (define) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (set!) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (lambda) Tj /F1 10 Tf (, ) Tj /F5 10 Tf /F6 10 Tf 12 TL (l) Tj /F5 10 Tf 12 TL /F1 10 Tf (, ) Tj /F5 10 Tf (if) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (cond) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (case) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (and) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (or) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (when) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (unless) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (begin) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (let) Tj /F1 10 Tf (,) Tj T* 0 Tw 10.15262 Tw /F5 10 Tf (let*) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (letrec) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (letrec*) Tj /F1 10 Tf (, named-let, ) Tj /F5 10 Tf (do) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (quasiquote) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (define-macro) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (define-syntax) Tj /F1 10 Tf (,) Tj T* 0 Tw 3.646907 Tw /F5 10 Tf (syntax-rules) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (let-syntax) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (letrec-syntax) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (apply) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (eval) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (values) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (call/cc) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (dynamic-wind) Tj /F1 10 Tf (,) Tj T* 0 Tw /F5 10 Tf (guard) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (parameterize) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (load) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (error) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (module) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (import) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (define-record-type) Tj /F1 10 Tf (.) Tj T* ET Q Q q -1 0 0 1 57.02362 647.8236 cm +1 0 0 1 57.02362 155.0236 cm q BT 1 0 0 1 0 14 Tm .150642 Tw 12 TL /F3 10 Tf 0 0 0 rg (Built-in functions) Tj /F1 10 Tf ( \(100+\): Full arithmetic \(exact rationals, inexact reals, trigonometry\), pairs & lists \(SRFI-1\),) Tj T* 0 Tw (strings \(mutable\), characters, vectors, hash tables, I/O \(ports, file system\), system interface, Python interop.) Tj T* ET Q Q q -1 0 0 1 57.02362 617.8236 cm +1 0 0 1 57.02362 125.0236 cm q BT 1 0 0 1 0 14 Tm 2.274835 Tw 12 TL /F3 10 Tf 0 0 0 rg (Hygienic macros) Tj /F1 10 Tf (: ) Tj /F5 10 Tf (syntax-rules) Tj /F1 10 Tf ( with ellipsis \() Tj /F5 10 Tf (...) Tj /F1 10 Tf (\) support. Pattern matching, template instantiation,) Tj T* 0 Tw (proper hygiene. Also ) Tj /F5 10 Tf (define-macro) Tj /F1 10 Tf ( for procedural macros.) Tj T* ET Q Q q -1 0 0 1 57.02362 587.8236 cm +1 0 0 1 57.02362 95.02362 cm q BT 1 0 0 1 0 14 Tm 1.958835 Tw 12 TL /F3 10 Tf 0 0 0 rg (Standard library) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (stdlib.lsp) Tj /F1 10 Tf (, 385 lines\): Additional macros \() Tj /F5 10 Tf (swap!) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (fluid-let) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (while) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (dotimes) Tj /F1 10 Tf (\),) Tj T* 0 Tw (utility functions, simple object system, SRFI-2/8/64 test framework.) Tj T* ET Q Q q -1 0 0 1 57.02362 533.8236 cm +1 0 0 1 57.02362 65.02362 cm q -BT 1 0 0 1 0 38 Tm 1.569862 Tw 12 TL /F3 10 Tf 0 0 0 rg (Test suite) Tj /F1 10 Tf (: 974 verified assertions covering lexing, parsing, special forms, bytecode compilation, macros) Tj T* 0 Tw .214835 Tw (\(hygienic & procedural\), continuations, generators, record types, modules, arithmetic, higher-order functions,) Tj T* 0 Tw 4.238031 Tw (error handling, portal serialization, cross-implementation portal exchange, file I/O parity, & graceful) Tj T* 0 Tw (degradation on mismatched or corrupt input.) Tj T* ET +BT 1 0 0 1 0 14 Tm 1.569862 Tw 12 TL /F3 10 Tf 0 0 0 rg (Test suite) Tj /F1 10 Tf (: 974 verified assertions covering lexing, parsing, special forms, bytecode compilation, macros) Tj T* 0 Tw .214835 Tw (\(hygienic & procedural\), continuations, generators, record types, modules, arithmetic, higher-order functions,) Tj T* 0 Tw ET +Q +Q + +endstream +endobj +140 0 obj +<< +/Length 4959 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 57.02362 741.0236 cm +q +BT 1 0 0 1 0 14 Tm 4.238031 Tw 12 TL /F1 10 Tf 0 0 0 rg (error handling, portal serialization, cross-implementation portal exchange, file I/O parity, & graceful) Tj T* 0 Tw (degradation on mismatched or corrupt input.) Tj T* ET Q Q q -1 0 0 1 57.02362 502.6236 cm +1 0 0 1 57.02362 709.8236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (10. Relationship to Companion Papers) Tj T* ET Q Q q -1 0 0 1 57.02362 482.6236 cm +1 0 0 1 57.02362 689.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Lumbda forms one piece of a larger permacomputer machine learning stack:) Tj T* ET Q Q q -1 0 0 1 57.02362 476.6236 cm +1 0 0 1 57.02362 683.8236 cm Q q -1 0 0 1 57.02362 338.6236 cm +1 0 0 1 57.02362 545.8236 cm q 1 1 1 rg n 0 138 481.2283 -18 re f* @@ -6464,25 +7119,25 @@ Q Q Q q -1 0 0 1 57.02362 338.6236 cm +1 0 0 1 57.02362 545.8236 cm Q q -1 0 0 1 57.02362 284.6236 cm +1 0 0 1 57.02362 491.8236 cm q BT 1 0 0 1 0 38 Tm 1.738453 Tw 12 TL /F1 10 Tf 0 0 0 rg (Lumbda provides the runtime layer: a language that can checkpoint its own execution, migrate between) Tj T* 0 Tw 3.051529 Tw (machines, & resume from serialized state. The portal system enables distributed computation across) Tj T* 0 Tw 1.058196 Tw (permacomputer nodes. Categorization & feedback activities could run inside Lumbda's VM, with ) Tj /F5 10 Tf (call/cc) Tj /F1 10 Tf T* 0 Tw (providing the state machine transitions & portal providing persistence.) Tj T* ET Q Q q -1 0 0 1 57.02362 253.4236 cm +1 0 0 1 57.02362 460.6236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (11. Four Implementation Tiers, One Language) Tj T* ET Q Q q -1 0 0 1 57.02362 239.4236 cm +1 0 0 1 57.02362 446.6236 cm Q q -1 0 0 1 57.02362 227.4236 cm +1 0 0 1 57.02362 434.6236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -6498,21 +7153,21 @@ Q Q Q q -1 0 0 1 57.02362 227.4236 cm +1 0 0 1 57.02362 434.6236 cm Q q -1 0 0 1 57.02362 149.4236 cm +1 0 0 1 57.02362 356.6236 cm q BT 1 0 0 1 0 62 Tm .778726 Tw 12 TL /F1 10 Tf 0 0 0 rg (Lumbda ships as four independently built tiers: a Python bytecode VM, a C tree-walker, a C bytecode VM,) Tj T* 0 Tw 2.18402 Tw (and a C x86_64 JIT \(the last three packaged in one binary, selectable by flag\), plus a pure-assembly) Tj T* 0 Tw .931492 Tw (interpreter. Each tier is MOAD-isolated from the others \227 a defect surfaced in one is fixed in that tier, not) Tj T* 0 Tw 2.098556 Tw (patched across shared infrastructure. All four run the same ) Tj /F5 10 Tf (.lsp) Tj /F1 10 Tf ( source files and exchange the same) Tj T* 0 Tw 2.266213 Tw (S-expression portal format; \24711.3-\24711.5 demonstrate this end-to-end across sockets, relays, and HTTP) Tj T* 0 Tw (portal transfers.) Tj T* ET Q Q q -1 0 0 1 57.02362 141.4236 cm +1 0 0 1 57.02362 348.6236 cm Q endstream endobj -133 0 obj +141 0 obj << /Length 1782 >> @@ -6576,9 +7231,9 @@ Q endstream endobj -134 0 obj +142 0 obj << -/Length 13005 +/Length 13280 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -6866,7 +7521,7 @@ q 1 0 0 1 146.8473 3 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (4,968) Tj T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (6,645) Tj T* ET Q Q q @@ -6943,81 +7598,31 @@ BT 1 0 0 1 0 62 Tm .118138 Tw 12 TL /F3 10 Tf 0 0 0 rg (The JIT runs Scheme fast Q Q q -1 0 0 1 57.02362 381.0236 cm +1 0 0 1 57.02362 345.0236 cm q -BT 1 0 0 1 0 98 Tm .274168 Tw 12 TL /F3 10 Tf 0 0 0 rg (The assembly implementation proves the language runs on bare metal.) Tj /F1 10 Tf ( 4,968 lines of ) Tj /F3 10 Tf (GNU assembler) Tj T* 0 Tw .459104 Tw (\(GAS, AT) Tj (&) Tj (T syntax\)) Tj /F1 10 Tf (, ) Tj /F3 10 Tf (22 KB stripped binary) Tj /F1 10 Tf (, zero external dependencies. Fourteen Linux syscalls \() Tj /F5 10 Tf (read) Tj /F1 10 Tf (,) Tj T* 0 Tw 7.484835 Tw /F5 10 Tf (write) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (open) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (close) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (lseek) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (mmap) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (munmap) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (socket) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (connect) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (accept) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (bind) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (listen) Tj /F1 10 Tf (,) Tj T* 0 Tw 2.397122 Tw /F5 10 Tf (clock_gettime) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (exit) Tj /F1 10 Tf (\) \227 no libc, no stdlib. A bump allocator with ) Tj /F5 10 Tf (heap-snapshot) Tj /F1 10 Tf (/) Tj /F5 10 Tf (heap-restore) Tj /F1 10 Tf T* 0 Tw .123835 Tw (arena primitives, tag-in-low-3-bits values, ) Tj /F3 10 Tf (91 builtins) Tj /F1 10 Tf ( \(including ) Tj /F5 10 Tf (load) Tj /F1 10 Tf (, ports, ) Tj /F5 10 Tf (write-file) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (file-) Tj (>) Tj (string) Tj /F1 10 Tf (,) Tj T* 0 Tw 6.731043 Tw /F5 10 Tf (portal-save) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (portal-resume) Tj /F1 10 Tf (, the six ) Tj /F5 10 Tf (tcp-*) Tj /F1 10 Tf ( socket primitives, ) Tj /F5 10 Tf (read-from-string) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (eval) Tj /F1 10 Tf (,) Tj T* 0 Tw 6.946027 Tw /F5 10 Tf (symbol-) Tj (>) Tj (string) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (current-time-ms) Tj /F1 10 Tf (\), & TCO via ) Tj /F5 10 Tf (jmp) Tj /F1 10 Tf (. It runs ) Tj /F5 10 Tf (\(ack) Tj ( ) Tj (3) Tj ( ) Tj (4\)) Tj ( ) Tj (=) Tj ( ) Tj (125) Tj /F1 10 Tf ( &) Tj T* 0 Tw 2.133223 Tw /F5 10 Tf (\(fib) Tj ( ) Tj (35\)) Tj ( ) Tj (=) Tj ( ) Tj (9227465) Tj /F1 10 Tf ( correctly, serves HTTP at ) Tj /F3 10 Tf (2,994 req/s) Tj /F1 10 Tf (, and survives indefinitely with flat O\(1\)) Tj T* 0 Tw (memory when the programmer uses the snapshot/restore arena in a per-request loop.) Tj T* ET +BT 1 0 0 1 0 134 Tm .274168 Tw 12 TL /F3 10 Tf 0 0 0 rg (The assembly implementation proves the language runs on bare metal.) Tj /F1 10 Tf ( 6,645 lines of ) Tj /F3 10 Tf (GNU assembler) Tj T* 0 Tw .321147 Tw (\(GAS, AT) Tj (&) Tj (T syntax\)) Tj /F1 10 Tf (, assembled with ) Tj /F5 10 Tf (as) Tj /F1 10 Tf ( and linked with ) Tj /F5 10 Tf (ld) Tj /F1 10 Tf ( from GNU binutils; ~22 KB stripped bump-only) Tj T* 0 Tw .295257 Tw (binary, ~25 KB stripped under the optional ) Tj /F5 10 Tf (GC_NAIVE) Tj /F1 10 Tf ( assemble flag. Zero external dependencies. Fourteen) Tj T* 0 Tw 1.588196 Tw (Linux syscalls \() Tj /F5 10 Tf (read) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (write) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (open) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (close) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (lseek) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (mmap) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (munmap) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (socket) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (connect) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (accept) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (bind) Tj /F1 10 Tf (,) Tj T* 0 Tw 12.76076 Tw /F5 10 Tf (listen) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (clock_gettime) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (exit) Tj /F1 10 Tf (\) \227 no libc, no stdlib. A bump allocator with) Tj T* 0 Tw 1.343543 Tw /F5 10 Tf (heap-snapshot) Tj /F1 10 Tf (/) Tj /F5 10 Tf (heap-restore) Tj /F1 10 Tf ( arena primitives, tag-in-low-3-bits values, ) Tj /F3 10 Tf (95+ builtins) Tj /F1 10 Tf ( \(including ) Tj /F5 10 Tf (load) Tj /F1 10 Tf (,) Tj T* 0 Tw 1.562038 Tw (ports, ) Tj /F5 10 Tf (write-file) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (file-) Tj (>) Tj (string) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (portal-save) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (portal-resume) Tj /F1 10 Tf (, the six ) Tj /F5 10 Tf (tcp-*) Tj /F1 10 Tf ( socket primitives,) Tj T* 0 Tw 7.344724 Tw /F5 10 Tf (read-from-string) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (eval) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (symbol-) Tj (>) Tj (string) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (current-time-ms) Tj /F1 10 Tf (, native ) Tj /F5 10 Tf (hash-table-*) Tj /F1 10 Tf ( and) Tj T* 0 Tw .773223 Tw /F5 10 Tf (hash-set-*) Tj /F1 10 Tf (, plus ) Tj /F5 10 Tf (with-arena) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (gc-collect) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (gc-stats) Tj /F1 10 Tf ( / ) Tj /F5 10 Tf (arena-stats) Tj /F1 10 Tf ( in the GC build\), & TCO via) Tj T* 0 Tw 1.293071 Tw /F5 10 Tf (jmp) Tj /F1 10 Tf (. It runs ) Tj /F5 10 Tf (\(ack) Tj ( ) Tj (3) Tj ( ) Tj (4\)) Tj ( ) Tj (=) Tj ( ) Tj (125) Tj /F1 10 Tf ( & ) Tj /F5 10 Tf (\(fib) Tj ( ) Tj (35\)) Tj ( ) Tj (=) Tj ( ) Tj (9227465) Tj /F1 10 Tf ( correctly, serves HTTP at ) Tj /F3 10 Tf (2,994 req/s) Tj /F1 10 Tf (, and) Tj T* 0 Tw 1.62589 Tw (survives indefinitely with flat O\(1\) memory via either the snapshot/restore arena in a per-request loop ) Tj /F4 10 Tf (or) Tj /F1 10 Tf T* 0 Tw /F5 10 Tf (\(with-arena) Tj ( ) Tj (thunk\)) Tj /F1 10 Tf ( under the collecting build \(see \2476.6\).) Tj T* ET Q Q q -1 0 0 1 57.02362 327.0236 cm +1 0 0 1 57.02362 291.0236 cm q BT 1 0 0 1 0 38 Tm 2.546213 Tw 12 TL /F3 10 Tf 0 0 0 rg (The bytecode VM delivers 7--19\327 speedup over tree-walking.) Tj /F1 10 Tf ( The Python implementation compiles) Tj T* 0 Tw .411147 Tw (Scheme to 40 opcodes \(plus 20 specialized & 5 superinstructions\), executed on an explicit frame stack with) Tj T* 0 Tw 1.206213 Tw (inline caching, constant folding, & peephole optimization. Full first-class continuations \(multi-shot, upward\)) Tj T* 0 Tw (enable generators, coroutines, & machine state migration via portal.) Tj T* ET Q Q q -1 0 0 1 57.02362 301.0236 cm +1 0 0 1 57.02362 265.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (11.1 Test Coverage) Tj T* ET Q Q q -1 0 0 1 57.02362 283.0236 cm +1 0 0 1 57.02362 247.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (975 verified assertions) Tj /F1 10 Tf ( across all implementations, all green under ) Tj /F5 10 Tf (make) Tj ( ) Tj (test-all) Tj /F1 10 Tf (:) Tj T* ET Q Q q -1 0 0 1 57.02362 277.0236 cm -Q -q -1 0 0 1 57.02362 277.0236 cm -Q -q -1 0 0 1 57.02362 265.0236 cm -q -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Python unit + integration: ) Tj /F3 10 Tf (571 tests) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (tests.py) Tj /F1 10 Tf (\)) Tj T* ET -Q -Q -q -Q -Q -Q -q -1 0 0 1 57.02362 259.0236 cm -Q -q -1 0 0 1 57.02362 247.0236 cm -q -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (C unit + integration + JIT + continuations + portal: ) Tj /F3 10 Tf (83 tests) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (c/test.c) Tj /F1 10 Tf (\)) Tj T* ET -Q -Q -q -Q -Q +1 0 0 1 57.02362 241.0236 cm Q q 1 0 0 1 57.02362 241.0236 cm @@ -7037,7 +7642,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Assembly unit + integration + functional: ) Tj /F3 10 Tf (132 tests) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (asm/test.sh) Tj /F1 10 Tf (\)) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Python unit + integration: ) Tj /F3 10 Tf (571 tests) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (tests.py) Tj /F1 10 Tf (\)) Tj T* ET Q Q q @@ -7062,6 +7667,56 @@ Q q 1 0 0 1 23 -3 cm q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (C unit + integration + JIT + continuations + portal: ) Tj /F3 10 Tf (83 tests) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (c/test.c) Tj /F1 10 Tf (\)) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 205.0236 cm +Q +q +1 0 0 1 57.02362 193.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Assembly unit + integration + functional: ) Tj /F3 10 Tf (132 tests) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (asm/test.sh) Tj /F1 10 Tf (\)) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 187.0236 cm +Q +q +1 0 0 1 57.02362 175.0236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Shared functional \(same ) Tj /F5 10 Tf (.lsp) Tj /F1 10 Tf ( in Python + C\): ) Tj /F3 10 Tf (189 tests) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (tests/functional.lsp) Tj /F1 10 Tf (\)) Tj T* ET Q Q @@ -7070,47 +7725,47 @@ Q Q Q q -1 0 0 1 57.02362 193.0236 cm +1 0 0 1 57.02362 157.0236 cm Q q -1 0 0 1 57.02362 151.0236 cm +1 0 0 1 57.02362 115.0236 cm q BT 1 0 0 1 0 26 Tm .98631 Tw 12 TL /F1 10 Tf 0 0 0 rg (The shared functional suite matters: it runs byte-identical Scheme source through two different runtimes &) Tj T* 0 Tw .353432 Tw (compares output. Python & C agree 189 times per run. When they disagree, that tells us something specific) Tj T* 0 Tw (& actionable.) Tj T* ET Q Q q -1 0 0 1 57.02362 121.0236 cm +1 0 0 1 57.02362 85.02362 cm q BT 1 0 0 1 0 14 Tm 3.001043 Tw 12 TL /F1 10 Tf 0 0 0 rg (Cross-implementation portal exchange is verified separately: ) Tj /F5 10 Tf (tests/portal-cross-test.sh) Tj /F1 10 Tf ( runs 9) Tj T* 0 Tw (producer\327consumer combinations. All 9 green.) Tj T* ET Q Q + +endstream +endobj +143 0 obj +<< +/Length 16605 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 95.02362 cm +1 0 0 1 57.02362 753.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (11.2 File I/O Parity) Tj T* ET Q Q q -1 0 0 1 57.02362 65.02362 cm +1 0 0 1 57.02362 723.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .155596 Tw (All three implementations share the same minimal file I/O vocabulary \227 discovered necessary while building) Tj T* 0 Tw (the cross-impl portal:) Tj T* ET Q Q q -1 0 0 1 57.02362 62.69291 cm +1 0 0 1 57.02362 717.0236 cm Q - -endstream -endobj -135 0 obj -<< -/Length 16993 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 585.0236 cm +1 0 0 1 57.02362 537.0236 cm q 1 1 1 rg n 0 180 481.2283 -18 re f* @@ -7188,21 +7843,21 @@ q 1 0 0 1 285.7839 147 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 352.9321 147 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 420.0802 147 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7222,21 +7877,21 @@ q 1 0 0 1 285.7839 129 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 352.9321 129 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 420.0802 129 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7256,21 +7911,21 @@ q 1 0 0 1 285.7839 111 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 352.9321 111 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 420.0802 111 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7290,21 +7945,21 @@ q 1 0 0 1 285.7839 93 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 352.9321 93 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 420.0802 93 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7324,21 +7979,21 @@ q 1 0 0 1 285.7839 75 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 352.9321 75 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 420.0802 75 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7358,21 +8013,21 @@ q 1 0 0 1 285.7839 57 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 352.9321 57 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 420.0802 57 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7392,21 +8047,21 @@ q 1 0 0 1 285.7839 39 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 352.9321 39 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 420.0802 39 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7426,21 +8081,21 @@ q 1 0 0 1 285.7839 21 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 352.9321 21 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 420.0802 21 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7460,21 +8115,21 @@ q 1 0 0 1 285.7839 3 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 352.9321 3 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 420.0802 3 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7503,32 +8158,32 @@ Q Q Q q -1 0 0 1 57.02362 585.0236 cm +1 0 0 1 57.02362 537.0236 cm Q q -1 0 0 1 57.02362 519.0236 cm +1 0 0 1 57.02362 471.0236 cm q BT 1 0 0 1 0 50 Tm .254609 Tw 12 TL /F1 10 Tf 0 0 0 rg (The asm port representation deserves a note. Because all three tag bits are consumed by the existing value) Tj T* 0 Tw 4.102038 Tw (types \(int/pair/sym/closure/builtin/special/string/vector\), we encode ports as ) Tj /F5 10 Tf (SPECIAL) Tj /F1 10 Tf ( values ) Tj /F6 10 Tf 12 TL (\263) Tj /F1 10 Tf 12 TL ( 1000:) Tj T* 0 Tw 8.520835 Tw /F5 10 Tf (port_val) Tj ( ) Tj (=) Tj ( ) Tj (\(\(PORT_SPECIAL_BASE) Tj ( ) Tj (+) Tj ( ) Tj (fd\)) Tj ( ) Tj (<) Tj (<) Tj ( ) Tj (3\)) Tj ( ) Tj (|) Tj ( ) Tj (TAG_SPECIAL) Tj /F1 10 Tf (. Extraction is) Tj T* 0 Tw .162256 Tw /F5 10 Tf (fd) Tj ( ) Tj (=) Tj ( ) Tj (\(val) Tj ( ) Tj (>) Tj (>) Tj ( ) Tj (3\)) Tj ( ) Tj (-) Tj ( ) Tj (PORT_SPECIAL_BASE) Tj /F1 10 Tf (. ) Tj /F5 10 Tf (port?) Tj /F1 10 Tf ( is a range check. No tag expansion, no heap object,) Tj T* 0 Tw (no allocator pressure \227 the port is the file descriptor, wrapped.) Tj T* ET Q Q q -1 0 0 1 57.02362 493.0236 cm +1 0 0 1 57.02362 445.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (11.3 Sockets: One HTTP Server, Three Runtimes) Tj T* ET Q Q q -1 0 0 1 57.02362 475.0236 cm +1 0 0 1 57.02362 427.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Six primitives extend the file-I/O vocabulary to TCP:) Tj T* ET Q Q q -1 0 0 1 57.02362 469.0236 cm +1 0 0 1 57.02362 421.0236 cm Q q -1 0 0 1 57.02362 331.0236 cm +1 0 0 1 57.02362 283.0236 cm q 1 1 1 rg n 0 138 481.2283 -18 re f* @@ -7600,21 +8255,21 @@ q 1 0 0 1 333.6448 105 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 384.8393 105 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 436.0338 105 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7634,21 +8289,21 @@ q 1 0 0 1 333.6448 87 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 384.8393 87 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 436.0338 87 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7668,21 +8323,21 @@ q 1 0 0 1 333.6448 57 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 384.8393 57 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 436.0338 57 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7702,21 +8357,21 @@ q 1 0 0 1 333.6448 39 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 384.8393 39 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 436.0338 39 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7736,21 +8391,21 @@ q 1 0 0 1 333.6448 21 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 384.8393 21 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 436.0338 21 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7770,21 +8425,21 @@ q 1 0 0 1 333.6448 3 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 384.8393 3 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q 1 0 0 1 436.0338 3 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F7 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL /F8 10 Tf 12 TL (3) Tj /F1 10 Tf 12 TL T* ET Q Q q @@ -7810,22 +8465,22 @@ Q Q Q q -1 0 0 1 57.02362 331.0236 cm +1 0 0 1 57.02362 283.0236 cm Q q -1 0 0 1 57.02362 289.0236 cm +1 0 0 1 57.02362 241.0236 cm q BT 1 0 0 1 0 26 Tm .215176 Tw 12 TL /F1 10 Tf 0 0 0 rg (Sockets share the same port representation as files \227 in asm the fd is packed into ) Tj /F5 10 Tf (SPECIAL) Tj /F1 10 Tf ( values ) Tj /F6 10 Tf 12 TL (\263) Tj /F1 10 Tf 12 TL ( 1000,) Tj T* 0 Tw .794123 Tw (in Python + C the fd lives inside an existing ULPort struct. ) Tj /F5 10 Tf (read) Tj /F1 10 Tf (/) Tj /F5 10 Tf (write) Tj /F1 10 Tf ( unify because to Linux a socket is) Tj T* 0 Tw (just an fd.) Tj T* ET Q Q q -1 0 0 1 57.02362 259.0236 cm +1 0 0 1 57.02362 211.0236 cm q BT 1 0 0 1 0 14 Tm .886796 Tw 12 TL /F5 10 Tf 0 0 0 rg (examples/http-server.lsp) Tj /F1 10 Tf ( is a 90-line HTTP/1.0 server. It parses a request line, dispatches by path,) Tj T* 0 Tw (and returns 200/404 with Content-Length. The same file runs unmodified in all three impls:) Tj T* ET Q Q q -1 0 0 1 57.02362 209.0236 cm +1 0 0 1 57.02362 161.0236 cm q q 1 0 0 1 0 0 cm @@ -7845,43 +8500,39 @@ Q Q Q q -1 0 0 1 57.02362 153.0236 cm +1 0 0 1 57.02362 105.0236 cm q BT 1 0 0 1 0 38 Tm -0.093471 Tw 12 TL /F1 10 Tf 0 0 0 rg (The companion ) Tj /F5 10 Tf (examples/http-client-bench.lsp) Tj /F1 10 Tf ( is a 45-line load generator using only the six ) Tj /F5 10 Tf (tcp-*) Tj /F1 10 Tf T* 0 Tw 2.952577 Tw (primitives plus ) Tj /F5 10 Tf (current-time-ms) Tj /F1 10 Tf (. In-process client eliminates the ~2 ms/request fork overhead that) Tj T* 0 Tw 1.553486 Tw (curl-based benchmarks suffer, so real server throughput shows through. ) Tj /F3 10 Tf (Reproduce:) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-web) Tj /F1 10 Tf T* 0 Tw (\(source: ) Tj /F5 10 Tf (tests/web-benchmark.sh) Tj /F1 10 Tf (\).) Tj T* ET Q Q q -1 0 0 1 57.02362 147.0236 cm +1 0 0 1 57.02362 99.02362 cm Q q -1 0 0 1 57.02362 75.02362 cm +1 0 0 1 57.02362 63.02362 cm q 1 1 1 rg -n 0 72 481.2283 -18 re f* -.878431 .878431 .878431 rg -n 0 54 481.2283 -18 re f* -1 1 1 rg n 0 36 481.2283 -18 re f* .878431 .878431 .878431 rg n 0 18 481.2283 -18 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET q -1 0 0 1 6 57 cm +1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 111.934 0 Td (Pair) Tj T* -111.934 0 Td ET Q Q q -1 0 0 1 260.7679 57 cm +1 0 0 1 260.7679 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 18.3801 0 Td (Requests/sec) Tj T* -18.3801 0 Td ET Q Q q -1 0 0 1 373.9981 57 cm +1 0 0 1 373.9981 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 18.3801 0 Td (vs curl bench) Tj T* -18.3801 0 Td ET @@ -7890,66 +8541,24 @@ Q 0 0 0 rg BT /F1 10 Tf 12 TL ET q -1 0 0 1 6 39 cm +1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Python server ) Tj /F6 10 Tf 12 TL (\254) Tj /F1 10 Tf 12 TL ( Python client) Tj T* ET Q Q q -1 0 0 1 260.7679 39 cm +1 0 0 1 260.7679 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (2,403) Tj T* ET Q Q q -1 0 0 1 373.9981 39 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (6.3\327) Tj T* ET -Q -Q -q -1 0 0 1 6 21 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (C server ) Tj /F6 10 Tf 12 TL (\254) Tj /F1 10 Tf 12 TL ( C client) Tj T* ET -Q -Q -q -1 0 0 1 260.7679 21 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (2,439) Tj T* ET -Q -Q -q -1 0 0 1 373.9981 21 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (6.4\327) Tj T* ET -Q -Q -q -1 0 0 1 6 3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (asm server ) Tj /F6 10 Tf 12 TL (\254) Tj /F1 10 Tf 12 TL ( asm client) Tj T* ET -Q -Q -q -1 0 0 1 260.7679 3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (2,994) Tj T* ET -Q -Q -q 1 0 0 1 373.9981 3 cm q 0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (7.8\327) Tj T* ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (6.3\327) Tj T* ET Q Q q @@ -7958,34 +8567,78 @@ q 0 0 0 RG .25 w n 0 0 m 481.2283 0 l S -n 0 54 m 481.2283 54 l S -n 0 36 m 481.2283 36 l S n 0 18 m 481.2283 18 l S -n 254.7679 0 m 254.7679 72 l S -n 367.9981 0 m 367.9981 72 l S -n 0 72 m 481.2283 72 l S -n 0 0 m 0 72 l S -n 481.2283 0 m 481.2283 72 l S +n 254.7679 0 m 254.7679 36 l S +n 367.9981 0 m 367.9981 36 l S +n 0 36 m 481.2283 36 l S +n 0 0 m 0 36 l S +n 481.2283 0 m 481.2283 36 l S Q Q Q endstream endobj -136 0 obj +144 0 obj << -/Length 9833 +/Length 10122 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 747.0236 cm +1 0 0 1 57.02362 711.0236 cm q 1 1 1 rg +n 0 54 481.2283 -18 re f* +.878431 .878431 .878431 rg +n 0 36 481.2283 -18 re f* +1 1 1 rg n 0 18 481.2283 -18 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET q +1 0 0 1 6 39 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (C server ) Tj /F6 10 Tf 12 TL (\254) Tj /F1 10 Tf 12 TL ( C client) Tj T* ET +Q +Q +q +1 0 0 1 260.7679 39 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (2,439) Tj T* ET +Q +Q +q +1 0 0 1 373.9981 39 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (6.4\327) Tj T* ET +Q +Q +q +1 0 0 1 6 21 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (asm server ) Tj /F6 10 Tf 12 TL (\254) Tj /F1 10 Tf 12 TL ( asm client) Tj T* ET +Q +Q +q +1 0 0 1 260.7679 21 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (2,994) Tj T* ET +Q +Q +q +1 0 0 1 373.9981 21 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (7.8\327) Tj T* ET +Q +Q +q 1 0 0 1 6 3 cm q 0 0 0 rg @@ -8011,41 +8664,43 @@ q 1 j 0 0 0 RG .25 w +n 0 54 m 481.2283 54 l S +n 0 36 m 481.2283 36 l S n 0 18 m 481.2283 18 l S -n 254.7679 0 m 254.7679 18 l S -n 367.9981 0 m 367.9981 18 l S -n 0 0 m 0 18 l S -n 481.2283 0 m 481.2283 18 l S +n 254.7679 0 m 254.7679 54 l S +n 367.9981 0 m 367.9981 54 l S +n 0 0 m 0 54 l S +n 481.2283 0 m 481.2283 54 l S n 0 0 m 481.2283 0 l S Q Q Q q -1 0 0 1 57.02362 747.0236 cm +1 0 0 1 57.02362 711.0236 cm Q q -1 0 0 1 57.02362 717.0236 cm +1 0 0 1 57.02362 681.0236 cm q BT 1 0 0 1 0 14 Tm .163917 Tw 12 TL /F1 10 Tf 0 0 0 rg (\(The asm-server / asm-client pair is the fastest cell here \227 2,994 req/s from a 22 KB binary, served & driven) Tj T* 0 Tw (by the same 22 KB binary.\)) Tj T* ET Q Q q -1 0 0 1 57.02362 675.0236 cm +1 0 0 1 57.02362 639.0236 cm q BT 1 0 0 1 0 26 Tm .050596 Tw 12 TL /F1 10 Tf 0 0 0 rg (For external comparison: ) Tj /F5 10 Tf (python3) Tj ( ) Tj (-m) Tj ( ) Tj (http.server) Tj /F1 10 Tf ( and busybox httpd both land around 382 req/s under) Tj T* 0 Tw 1.458334 Tw (a curl client on the same machine. When driven by an in-process client they hit the same ceiling as our) Tj T* 0 Tw (servers \227 the bottleneck has always been the client fork/exec, not the server.) Tj T* ET Q Q q -1 0 0 1 57.02362 621.0236 cm +1 0 0 1 57.02362 585.0236 cm q BT 1 0 0 1 0 38 Tm 2.116575 Tw 12 TL /F3 10 Tf 0 0 0 rg (What's remarkable is not the speed.) Tj /F1 10 Tf ( It is that a 22 KB binary with zero libc dependency and seven) Tj T* 0 Tw .829353 Tw (canonical Linux syscalls plus the socket family runs HTTP as fast as anything else on the machine, with a) Tj T* 0 Tw .829272 Tw (protocol handler written in portable Scheme that runs byte-for-byte in all three runtimes. The asm binary is) Tj T* 0 Tw /F3 10 Tf (96\327 smaller than busybox httpd) Tj /F1 10 Tf ( \(2.1 MB\) and ) Tj /F3 10 Tf (360\327 smaller than the Python interpreter) Tj /F1 10 Tf ( alone \(8 MB\).) Tj T* ET Q Q q -1 0 0 1 57.02362 613.0236 cm +1 0 0 1 57.02362 577.0236 cm Q q -1 0 0 1 57.02362 562.4202 cm +1 0 0 1 57.02362 526.4202 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -8068,29 +8723,29 @@ Q Q Q q -1 0 0 1 57.02362 554.4202 cm +1 0 0 1 57.02362 518.4202 cm Q q -1 0 0 1 57.02362 528.4202 cm +1 0 0 1 57.02362 492.4202 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (11.4 S-expressions over Sockets: RPC, REPL, and Chains) Tj T* ET Q Q q -1 0 0 1 57.02362 486.4202 cm +1 0 0 1 57.02362 450.4202 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .048022 Tw (The HTTP example sends request-line bytes and response-line bytes. Those bytes don't have to be HTTP. If) Tj T* 0 Tw .199913 Tw (both sides of the wire speak Scheme, the wire protocol can be Scheme source itself \227 the reader is already) Tj T* 0 Tw (the parser you need. Two new builtins close the loop in all three impls:) Tj T* ET Q Q q -1 0 0 1 57.02362 480.4202 cm +1 0 0 1 57.02362 444.4202 cm Q q -1 0 0 1 57.02362 480.4202 cm +1 0 0 1 57.02362 444.4202 cm Q q -1 0 0 1 57.02362 468.4202 cm +1 0 0 1 57.02362 432.4202 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -8112,10 +8767,10 @@ Q Q Q q -1 0 0 1 57.02362 462.4202 cm +1 0 0 1 57.02362 426.4202 cm Q q -1 0 0 1 57.02362 438.4202 cm +1 0 0 1 57.02362 402.4202 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -8137,45 +8792,45 @@ Q Q Q q -1 0 0 1 57.02362 420.4202 cm +1 0 0 1 57.02362 384.4202 cm Q q -1 0 0 1 57.02362 402.4202 cm +1 0 0 1 57.02362 366.4202 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Two server patterns emerge:) Tj T* ET Q Q q -1 0 0 1 57.02362 360.4202 cm +1 0 0 1 57.02362 324.4202 cm q BT 1 0 0 1 0 26 Tm .027362 Tw 12 TL /F3 10 Tf 0 0 0 rg (Whitelisted RPC) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (examples/rpc-server.lsp) Tj /F1 10 Tf (, 90 lines\). The server reads a request sexp, dispatches by) Tj T* 0 Tw 1.114908 Tw (car on a closed set \() Tj /F5 10 Tf (ping) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (add) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (mul) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (fib) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (echo) Tj /F1 10 Tf (\), never calls ) Tj /F5 10 Tf (eval) Tj /F1 10 Tf ( on client input. Safe by construction.) Tj T* 0 Tw (Uses ) Tj /F5 10 Tf (heap-snapshot) Tj /F1 10 Tf (/) Tj /F5 10 Tf (heap-restore) Tj /F1 10 Tf ( for O\(1\) memory on asm.) Tj T* ET Q Q q -1 0 0 1 57.02362 294.4202 cm +1 0 0 1 57.02362 258.4202 cm q BT 1 0 0 1 0 50 Tm .076027 Tw 12 TL /F3 10 Tf 0 0 0 rg (Full remote REPL) Tj /F1 10 Tf ( \() Tj /F5 10 Tf (examples/repl-server.lsp) Tj /F1 10 Tf (, 70 lines\). The server reads a request sexp and passes) Tj T* 0 Tw .534609 Tw (it straight to ) Tj /F5 10 Tf (eval) Tj /F1 10 Tf (. Persistent global env across connections; ) Tj /F5 10 Tf (\(define) Tj ( ) Tj (x) Tj ( ) Tj (42\)) Tj /F1 10 Tf ( from one call is visible from) Tj T* 0 Tw 1.463453 Tw (the next. DANGER: any reachable client can run arbitrary Scheme in-process. Deliberately does not use) Tj T* 0 Tw .876027 Tw /F5 10 Tf (heap-snapshot) Tj /F1 10 Tf ( because remote ) Tj /F5 10 Tf (define) Tj /F1 10 Tf ( adds bindings past any snapshot point; the ) Tj /F5 10 Tf (ulimit) Tj ( ) Tj (-v) Tj /F1 10 Tf ( safety) Tj T* 0 Tw (cap \(512 MB\) backstops the leak.) Tj T* ET Q Q q -1 0 0 1 57.02362 264.4202 cm +1 0 0 1 57.02362 228.4202 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .909903 Tw (Both patterns run byte-identically in Python, C, and asm. The 3\3273 server\327client matrix is 9/9 green \227 any) Tj T* 0 Tw (runtime can host either side.) Tj T* ET Q Q q -1 0 0 1 57.02362 222.4202 cm +1 0 0 1 57.02362 186.4202 cm q BT 1 0 0 1 0 26 Tm 1.432577 Tw 12 TL /F3 10 Tf 0 0 0 rg (Chains: relays across runtimes.) Tj /F1 10 Tf ( A transparent relay \() Tj /F5 10 Tf (examples/rpc-relay.lsp) Tj /F1 10 Tf (, 50 lines\) accepts a) Tj T* 0 Tw 1.39989 Tw (connection, forwards the request bytes to a backend without parsing, relays the reply back. Because the) Tj T* 0 Tw (envelope is Scheme source and the relay never opens it, chains of arbitrary runtimes compose naturally:) Tj T* ET Q Q q -1 0 0 1 57.02362 216.4202 cm +1 0 0 1 57.02362 180.4202 cm Q q -1 0 0 1 57.02362 126.4202 cm +1 0 0 1 57.02362 90.42016 cm q 1 1 1 rg n 0 90 481.2283 -18 re f* @@ -8315,63 +8970,57 @@ Q Q Q q -1 0 0 1 57.02362 126.4202 cm -Q -q -1 0 0 1 57.02362 84.42016 cm -q -BT 1 0 0 1 0 26 Tm 1.815464 Tw 12 TL /F1 10 Tf 0 0 0 rg (Each relay hop costs ~650 \265s \(one full TCP round-trip + context switches on the same host, no actual) Tj T* 0 Tw 5.709882 Tw (parsing work\). The relay never allocates anything beyond a transient buffer; on asm it uses) Tj T* 0 Tw 1.25985 Tw /F5 10 Tf (heap-snapshot) Tj /F1 10 Tf (/) Tj /F5 10 Tf (heap-restore) Tj /F1 10 Tf ( to keep memory flat under load. Four runtimes strung together through) Tj T* 0 Tw ET -Q +1 0 0 1 57.02362 90.42016 cm Q endstream endobj -137 0 obj +145 0 obj << -/Length 7387 +/Length 7013 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 741.0236 cm +1 0 0 1 57.02362 705.0236 cm q -BT 1 0 0 1 0 14 Tm 3.232362 Tw 12 TL /F1 10 Tf 0 0 0 rg (two relay machines, the same ) Tj /F5 10 Tf (.lsp) Tj /F1 10 Tf ( on every hop. ) Tj /F3 10 Tf (Reproduce:) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-rpc-chain) Tj /F1 10 Tf ( \(source:) Tj T* 0 Tw /F5 10 Tf (tests/rpc-chain-bench.sh) Tj /F1 10 Tf (\).) Tj T* ET +BT 1 0 0 1 0 50 Tm 1.815464 Tw 12 TL /F1 10 Tf 0 0 0 rg (Each relay hop costs ~650 \265s \(one full TCP round-trip + context switches on the same host, no actual) Tj T* 0 Tw 5.709882 Tw (parsing work\). The relay never allocates anything beyond a transient buffer; on asm it uses) Tj T* 0 Tw 1.25985 Tw /F5 10 Tf (heap-snapshot) Tj /F1 10 Tf (/) Tj /F5 10 Tf (heap-restore) Tj /F1 10 Tf ( to keep memory flat under load. Four runtimes strung together through) Tj T* 0 Tw 3.232362 Tw (two relay machines, the same ) Tj /F5 10 Tf (.lsp) Tj /F1 10 Tf ( on every hop. ) Tj /F3 10 Tf (Reproduce:) Tj /F1 10 Tf ( ) Tj /F5 10 Tf (make) Tj ( ) Tj (bench-rpc-chain) Tj /F1 10 Tf ( \(source:) Tj T* 0 Tw /F5 10 Tf (tests/rpc-chain-bench.sh) Tj /F1 10 Tf (\).) Tj T* ET Q Q q -1 0 0 1 57.02362 699.0236 cm +1 0 0 1 57.02362 663.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .921575 Tw (The result is not a performance story \227 it is a composition story. S-expressions are the envelope and the) Tj T* 0 Tw .649925 Tw (payload. A 22 KB binary can be a backend, a relay, a client, or any point in a chain; the protocol needs no) Tj T* 0 Tw (separate definition because the protocol IS the language.) Tj T* ET Q Q q -1 0 0 1 57.02362 673.0236 cm +1 0 0 1 57.02362 637.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (11.5 Portal over HTTP: State Transfer Between Machines) Tj T* ET Q Q q -1 0 0 1 57.02362 631.0236 cm +1 0 0 1 57.02362 595.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .273647 Tw (The HTTP server carries request bytes. The portal serializes machine state to bytes. Combine them: a node) Tj T* 0 Tw .711667 Tw (exposes its state as an HTTP endpoint, another node pulls that endpoint down and resumes. This was the) Tj T* 0 Tw (first item in \24713 Future Work \227 it is now a running demo.) Tj T* ET Q Q q -1 0 0 1 57.02362 589.0236 cm +1 0 0 1 57.02362 553.0236 cm q BT 1 0 0 1 0 26 Tm .363486 Tw 12 TL /F5 10 Tf 0 0 0 rg (examples/portal-http-server.lsp) Tj /F1 10 Tf ( holds some state \(integer counter, list, string, the result of fib\(30\)\)) Tj T* 0 Tw 1.391223 Tw (and answers ) Tj /F5 10 Tf (GET) Tj ( ) Tj (/portal) Tj /F1 10 Tf ( with an S-expression portal body \227 literally a sequence of ) Tj /F5 10 Tf (\(define) Tj ( ) Tj (...\)) Tj /F1 10 Tf T* 0 Tw (forms.) Tj T* ET Q Q q -1 0 0 1 57.02362 547.0236 cm +1 0 0 1 57.02362 511.0236 cm q BT 1 0 0 1 0 26 Tm 1.574395 Tw 12 TL /F5 10 Tf 0 0 0 rg (examples/portal-http-client.lsp) Tj /F1 10 Tf ( dials the endpoint, strips the HTTP headers, splits the body by) Tj T* 0 Tw 2.070759 Tw (newline, and for each non-empty, non-comment line calls ) Tj /F5 10 Tf (\(eval) Tj ( ) Tj (\(read-from-string) Tj ( ) Tj (line\)\)) Tj /F1 10 Tf (. The) Tj T* 0 Tw (remote bindings become local.) Tj T* ET Q Q q -1 0 0 1 57.02362 410.6236 cm +1 0 0 1 57.02362 374.6236 cm q q 1 0 0 1 0 0 cm @@ -8391,77 +9040,26 @@ Q Q Q q -1 0 0 1 57.02362 354.6236 cm +1 0 0 1 57.02362 318.6236 cm q BT 1 0 0 1 0 38 Tm .351019 Tw 12 TL /F3 10 Tf 0 0 0 rg (3\3273 matrix green:) Tj /F1 10 Tf ( Python/C/asm in any role \227 server or client or both \227 exchange state correctly. All nine) Tj T* 0 Tw 2.399835 Tw (combinations verified. ) Tj /F5 10 Tf (examples/portal-http-client.lsp) Tj /F1 10 Tf ( is 90 lines of portable Scheme; the full) Tj T* 0 Tw 3.611529 Tw (round-trip uses only the six ) Tj /F5 10 Tf (tcp-*) Tj /F1 10 Tf ( primitives plus ) Tj /F5 10 Tf (read-from-string) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (eval) Tj /F1 10 Tf (, and standard string) Tj T* 0 Tw (manipulation.) Tj T* ET Q Q q -1 0 0 1 57.02362 300.6236 cm +1 0 0 1 57.02362 264.6236 cm q BT 1 0 0 1 0 38 Tm 1.468556 Tw 12 TL /F1 10 Tf 0 0 0 rg (The client needs ) Tj /F5 10 Tf (eval) Tj /F1 10 Tf ( semantics that install define-bindings in the global env regardless of the dynamic) Tj T* 0 Tw .000439 Tw (scope of the ) Tj /F5 10 Tf (eval) Tj /F1 10 Tf ( call. Python and C originally evaluated the ) Tj /F5 10 Tf (eval) Tj /F1 10 Tf ( result in the caller's env, which worked at) Tj T* 0 Tw .282545 Tw (top level but silently failed inside a helper function. A two-line fix in each \() Tj /F5 10 Tf (env) Tj ( ) Tj (=) Tj ( ) Tj (env.g) Tj /F1 10 Tf ( in Python's ) Tj /F5 10 Tf (leval) Tj /F1 10 Tf (,) Tj T* 0 Tw /F5 10 Tf (env) Tj ( ) Tj (=) Tj ( ) Tj (env-) Tj (>) Tj (global) Tj /F1 10 Tf ( in C's SYM_EVAL branch\) aligns both with asm's long-standing ) Tj /F5 10 Tf (bi_eval) Tj /F1 10 Tf ( behavior.) Tj T* ET Q Q q -1 0 0 1 57.02362 270.6236 cm +1 0 0 1 57.02362 234.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 3.231772 Tw (This is the closing demonstration of "feedback is all you need" extended across all four scopes. A) Tj T* 0 Tw (continuation-style value \227 here, a set of bindings \227 travels:) Tj T* ET Q Q q -1 0 0 1 57.02362 264.6236 cm -Q -q -1 0 0 1 57.02362 264.6236 cm -Q -q -1 0 0 1 57.02362 252.6236 cm -q -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (within a process via ) Tj /F5 10 Tf (call/cc) Tj T* ET -Q -Q -q -Q -Q -Q -q -1 0 0 1 57.02362 246.6236 cm -Q -q -1 0 0 1 57.02362 234.6236 cm -q -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (across processes on the same host via portal files) Tj T* ET -Q -Q -q -Q -Q +1 0 0 1 57.02362 228.6236 cm Q q 1 0 0 1 57.02362 228.6236 cm @@ -8481,8 +9079,7 @@ Q q 1 0 0 1 23 -3 cm q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (across implementations that share no binary compatibility via S-expression serialization) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (within a process via ) Tj /F5 10 Tf (call/cc) Tj T* ET Q Q q @@ -8508,6 +9105,58 @@ q 1 0 0 1 23 -3 cm q 0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (across processes on the same host via portal files) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 192.6236 cm +Q +q +1 0 0 1 57.02362 180.6236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (across implementations that share no binary compatibility via S-expression serialization) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 174.6236 cm +Q +q +1 0 0 1 57.02362 162.6236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (across machines via sockets \(HTTP, RPC, raw TCP\)) Tj T* ET Q Q @@ -8516,45 +9165,45 @@ Q Q Q q -1 0 0 1 57.02362 180.6236 cm +1 0 0 1 57.02362 144.6236 cm Q q -1 0 0 1 57.02362 150.6236 cm +1 0 0 1 57.02362 114.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .68135 Tw (The wire protocol and the language are the same artifact. A 22 KB binary can be any node in any chain of) Tj T* 0 Tw (any scope.) Tj T* ET Q Q + +endstream +endobj +146 0 obj +<< +/Length 6817 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 124.6236 cm +1 0 0 1 57.02362 753.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (11.6 heap-snapshot: The Arena Escape Hatch) Tj T* ET Q Q q -1 0 0 1 57.02362 82.62362 cm +1 0 0 1 57.02362 711.0236 cm q BT 1 0 0 1 0 26 Tm -0.12705 Tw 12 TL /F1 10 Tf 0 0 0 rg (The asm bump allocator has no GC. Every ) Tj /F5 10 Tf (string-append) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (tcp-recv) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (make-pair) Tj /F1 10 Tf (, or similar per-request) Tj T* 0 Tw 1.173647 Tw (allocation grows r15. Over a long-running server that is an unbounded leak \227 an incident on 2026-04-16) Tj T* 0 Tw (drove an asm server to 19.3 GB RSS before being killed.) Tj T* ET Q Q q -1 0 0 1 57.02362 64.62362 cm +1 0 0 1 57.02362 693.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Two new builtins fix this without introducing a collector:) Tj T* ET Q Q - -endstream -endobj -138 0 obj -<< -/Length 6545 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 732.6236 cm +1 0 0 1 57.02362 652.6236 cm q q 1 0 0 1 0 0 cm @@ -8574,21 +9223,21 @@ Q Q Q q -1 0 0 1 57.02362 700.6236 cm +1 0 0 1 57.02362 620.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .828138 Tw (Python + C expose the same names as no-ops \(their real GCs already handle this\). Portable Scheme can) Tj T* 0 Tw (call them unconditionally.) Tj T* ET Q Q q -1 0 0 1 57.02362 682.6236 cm +1 0 0 1 57.02362 602.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The pattern is narrow by design:) Tj T* ET Q Q q -1 0 0 1 57.02362 613.4236 cm +1 0 0 1 57.02362 533.4236 cm q q 1 0 0 1 0 0 cm @@ -8609,93 +9258,72 @@ Q Q Q q -1 0 0 1 57.02362 557.4236 cm +1 0 0 1 57.02362 477.4236 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .76989 Tw (The snapshot is dangerously precise: anything allocated after the snap and still reachable after the restore) Tj T* 0 Tw -0.00705 Tw (becomes a dangling pointer. The canonical pattern \(HTTP request scope\) allocates per-request and discards) Tj T* 0 Tw 1.660522 Tw (per-request \227 nothing escapes. Measured asm RSS with this pattern: 88 KB initial, 100 KB after 1,100) Tj T* 0 Tw (requests. Flat.) Tj T* ET Q Q q -1 0 0 1 57.02362 515.4236 cm +1 0 0 1 57.02362 435.4236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .241019 Tw (This is not a general-purpose allocator. It is an escape hatch the programmer uses when they can prove the) Tj T* 0 Tw 1.593647 Tw (scope boundary. For general programs on asm, the heap still grows. For the HTTP server pattern, O\(1\)) Tj T* 0 Tw (memory costs two lines of code.) Tj T* ET Q Q q -1 0 0 1 57.02362 484.2236 cm +1 0 0 1 57.02362 404.2236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (12. MOAD Audit: Fixing What We Built) Tj T* ET Q Q q -1 0 0 1 57.02362 428.2236 cm +1 0 0 1 57.02362 348.2236 cm q BT 1 0 0 1 0 38 Tm .158726 Tw 12 TL /F1 10 Tf 0 0 0 rg (We scanned all three implementations for the five MOADs. The taxonomy used here is defined in the ) Tj 0 .4 .6 rg (MOAD) Tj T* 0 Tw 3.384835 Tw (Cheat Sheet) Tj 0 0 0 rg ( at undefect.com \227 MOAD-0001 \(sedimentary O\(N\262\) defects\), MOAD-0002 \(intertangle\),) Tj T* 0 Tw .059816 Tw (MOAD-0003 \(context-leak\), MOAD-0004 \(stringly-typed\), MOAD-0005 \(bus-factor\). Every project contains its) Tj T* 0 Tw (own sediment.) Tj T* ET Q Q q -1 0 0 1 57.02362 338.2236 cm +1 0 0 1 57.02362 258.2236 cm q BT 1 0 0 1 0 74 Tm 7.459168 Tw 12 TL /F3 10 Tf 0 0 0 rg (Standard: what the Lean EML proof sets.) Tj /F1 10 Tf ( \2478 documents a formal Lean 4 proof that) Tj T* 0 Tw .542844 Tw /F5 10 Tf (eml\(x,) Tj ( ) Tj (y\)) Tj ( ) Tj (=) Tj ( ) Tj (exp\(x\)) Tj ( ) Tj (-) Tj ( ) Tj (ln\(y\)) Tj /F1 10 Tf ( generates every elementary function \227 and that the proof is 40\327 faster) Tj T* 0 Tw .55131 Tw (than the brute-force numerical verification it replaced. That speedup is the MOAD-0001 story in microcosm:) Tj T* 0 Tw 1.171667 Tw (algebraic understanding beats O\(N\262\) search, at the proof layer just like at every other layer. We take that) Tj T* 0 Tw .048417 Tw (standard as the bar for the implementations too. Every hot path should be fast for a ) Tj /F4 10 Tf (reason) Tj /F1 10 Tf ( \(a hash, a cache,) Tj T* 0 Tw -0.019034 Tw (an O\(1\) invariant\), not because a test didn't happen to hit the slow case. Every behavior should be correct for) Tj T* 0 Tw (a reason, not by coincidence. The audit below is where we hold ourselves to that bar.) Tj T* ET Q Q q -1 0 0 1 57.02362 224.2236 cm +1 0 0 1 57.02362 144.2236 cm q BT 1 0 0 1 0 98 Tm 1.954609 Tw 12 TL /F1 10 Tf 0 0 0 rg (We also ran the unmoad scanner on the full tree at each release. Most recent scan \(2026-04-17, post) Tj T* 0 Tw .255223 Tw (portal-over-HTTP\): 18 HIGH MOAD-0001 candidates in C and 4 MOAD-0003 candidates in Python. All 18 C) Tj T* 0 Tw 1.186796 Tw (candidates inspected individually turn out to be false positives \227 one-shot option parsing, bounded-depth) Tj T* 0 Tw .330596 Tw (ancestor walks, hash bucket chain walks \(already O\(1\) amortized\), or static 6-element tables \(e.g. ) Tj /F5 10 Tf (#\\space) Tj /F1 10 Tf T* 0 Tw 3.004862 Tw (char-literal names\). The 4 Python MOAD-0003 candidates are scanner misfires on a non-ContextVar) Tj T* 0 Tw 6.764835 Tw /F5 10 Tf (Env.set\(\)) Tj /F1 10 Tf ( method. New-work-introduced MOAD-0001: ) Tj /F3 10 Tf (zero) Tj /F1 10 Tf (. The defects fixed in this paper) Tj T* 0 Tw 2.914587 Tw (\() Tj /F5 10 Tf (intern_symbol) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (_define_record_type) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (bi_string_replace) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (_tokenize_lines) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (Env.lookup) Tj /F1 10 Tf T* 0 Tw 1.773223 Tw (shortcut\) were all surfaced by other pressures \227 benchmarks, crashes, portal exchanges \227 not by the) Tj T* 0 Tw (scanner. The scanner remains a second line; the first line is building with understanding.) Tj T* ET Q Q q -1 0 0 1 57.02362 198.2236 cm +1 0 0 1 57.02362 118.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (12.1 MOAD-0001: The Sedimentary Defect in Our Own Code) Tj T* ET Q Q q -1 0 0 1 57.02362 156.2236 cm +1 0 0 1 57.02362 76.22362 cm q BT 1 0 0 1 0 26 Tm 1.195596 Tw 12 TL /F1 10 Tf 0 0 0 rg (The assembly interpreter's ) Tj /F5 10 Tf (intern_symbol) Tj /F1 10 Tf ( used a linear scan through all interned symbols \227 O\(N\) per) Tj T* 0 Tw .024897 Tw (lookup, O\(N\262\) over a program's lifetime. For a program defining 34 builtins plus user symbols, every ) Tj /F5 10 Tf (define) Tj /F1 10 Tf (,) Tj T* 0 Tw (every lambda parameter, every variable reference walked the entire table.) Tj T* ET Q Q -q -1 0 0 1 57.02362 138.2236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (Before \(linear scan\)) Tj /F1 10 Tf (:) Tj T* ET -Q -Q -q -1 0 0 1 57.02362 69.02362 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .960784 rg -n -6 -6 480.0283 60 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 40 Tm /F5 8 Tf 9.6 TL (.isym_search:) Tj T* ( cmpq %rcx, %r8 # compare lengths) Tj T* ( jne .isym_next) Tj T* ( rep cmpsb # compare bytes) Tj T* ( je .isym_found) Tj T* ET -Q -Q -Q -Q -Q endstream endobj -139 0 obj +147 0 obj << -/Length 7935 +/Length 7456 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 723.0236 cm +1 0 0 1 57.02362 753.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (Before \(linear scan\)) Tj /F1 10 Tf (:) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 655.0236 cm q q 1 0 0 1 0 0 cm @@ -8705,24 +9333,24 @@ q .662745 .662745 .662745 RG .5 w .960784 .960784 .960784 rg -n -6 -6 480.0283 40.8 re B* +n -6 -6 480.0283 88.8 re B* Q q 0 0 0 rg -BT 1 0 0 1 0 20.8 Tm /F5 8 Tf 9.6 TL (.isym_next:) Tj T* ( addq $24, %rax # next entry) Tj T* ( jmp .isym_search # O\(N\) per intern) Tj T* ET +BT 1 0 0 1 0 68.8 Tm /F5 8 Tf 9.6 TL (.isym_search:) Tj T* ( cmpq %rcx, %r8 # compare lengths) Tj T* ( jne .isym_next) Tj T* ( rep cmpsb # compare bytes) Tj T* ( je .isym_found) Tj T* (.isym_next:) Tj T* ( addq $24, %rax # next entry) Tj T* ( jmp .isym_search # O\(N\) per intern) Tj T* ET Q Q Q Q Q q -1 0 0 1 57.02362 703.0236 cm +1 0 0 1 57.02362 635.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 0 rg (After \(djb2 hash table, 1024 buckets\)) Tj /F1 10 Tf (:) Tj T* ET Q Q q -1 0 0 1 57.02362 624.2236 cm +1 0 0 1 57.02362 556.2236 cm q q 1 0 0 1 0 0 cm @@ -8742,32 +9370,32 @@ Q Q Q q -1 0 0 1 57.02362 568.2236 cm +1 0 0 1 57.02362 500.2236 cm q BT 1 0 0 1 0 38 Tm .721772 Tw 12 TL /F1 10 Tf 0 0 0 rg (The fix: 99 lines changed, 1024-bucket hash table with chaining. ) Tj /F3 10 Tf (2.9x faster) Tj /F1 10 Tf ( on a 2000-symbol stress test.) Tj T* 0 Tw 2.453719 Tw (On benchmarks with fewer symbols \() Tj /F5 10 Tf (ack) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (fib) Tj /F1 10 Tf (\), the improvement is modest \(15% on ) Tj /F5 10 Tf (sum-to\(50k\)) Tj /F1 10 Tf (\),) Tj T* 0 Tw 1.940417 Tw (because the linear scan was already fast at small N. The fix pays off at scale \227 the same pattern as) Tj T* 0 Tw (MOAD-0001 everywhere: invisible at small inputs, catastrophic at large ones.) Tj T* ET Q Q q -1 0 0 1 57.02362 538.2236 cm +1 0 0 1 57.02362 470.2236 cm q BT 1 0 0 1 0 14 Tm 1.423486 Tw 12 TL /F1 10 Tf 0 0 0 rg (The Python implementation had a similar defect: ) Tj /F5 10 Tf (_define_record_type) Tj /F1 10 Tf ( used ) Tj /F5 10 Tf (list.index\(\)) Tj /F1 10 Tf ( for field) Tj T* 0 Tw (lookup. Replaced with a dict. O\(N\) ) Tj /F6 10 Tf 12 TL (\256) Tj /F1 10 Tf 12 TL ( O\(1\).) Tj T* ET Q Q q -1 0 0 1 57.02362 508.2236 cm +1 0 0 1 57.02362 440.2236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F3 10 Tf 12 TL 1.554556 Tw (Two more MOAD-0001 defects surfaced during the HTTP server work and were fixed in the same) Tj T* 0 Tw (pass:) Tj T* ET Q Q q -1 0 0 1 57.02362 502.2236 cm +1 0 0 1 57.02362 434.2236 cm Q q -1 0 0 1 57.02362 502.2236 cm +1 0 0 1 57.02362 434.2236 cm Q q -1 0 0 1 57.02362 466.2236 cm +1 0 0 1 57.02362 398.2236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -8789,10 +9417,10 @@ Q Q Q q -1 0 0 1 57.02362 460.2236 cm +1 0 0 1 57.02362 392.2236 cm Q q -1 0 0 1 57.02362 424.2236 cm +1 0 0 1 57.02362 356.2236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -8814,42 +9442,42 @@ Q Q Q q -1 0 0 1 57.02362 406.2236 cm +1 0 0 1 57.02362 338.2236 cm Q q -1 0 0 1 57.02362 316.2236 cm +1 0 0 1 57.02362 248.2236 cm q BT 1 0 0 1 0 74 Tm 4.926213 Tw 12 TL /F1 10 Tf 0 0 0 rg (A third correctness fix landed after the portal-over-HTTP demo exposed it: ) Tj /F5 10 Tf (uncommonlisp.py) Tj /F1 10 Tf ('s) Tj T* 0 Tw .515223 Tw /F5 10 Tf (Env.lookup) Tj /F1 10 Tf ( used to short-cut from the local frame directly to the global frame before walking intermediate) Tj T* 0 Tw 1.47713 Tw (parents. That was fast but wrong \227 a let-loop parameter named the same as a global builtin \() Tj /F5 10 Tf (count) Tj /F1 10 Tf (, a) Tj T* 0 Tw .409897 Tw (SRFI-1 procedure\) got shadowed in reverse, the shortcut returned the global builtin instead of walking up to) Tj T* 0 Tw .07402 Tw (the loop's parameter frame. Fix: walk ) Tj /F5 10 Tf (self) Tj ( ) Tj /F6 10 Tf 12 TL (\256) Tj /F5 10 Tf 12 TL ( ) Tj (self.p) Tj ( ) Tj /F6 10 Tf 12 TL (\256) Tj /F5 10 Tf 12 TL ( ) Tj (...) Tj ( ) Tj /F6 10 Tf 12 TL (\256) Tj /F5 10 Tf 12 TL ( ) Tj (global) Tj /F1 10 Tf ( in order, without any shortcut.) Tj T* 0 Tw 1.17189 Tw (The inline cache at ) Tj /F5 10 Tf (OP_LOOKUP) Tj /F1 10 Tf ( was correspondingly tightened to validate the full chain before firing. 975) Tj T* 0 Tw (tests remained green.) Tj T* ET Q Q q -1 0 0 1 57.02362 298.2236 cm +1 0 0 1 57.02362 230.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Every release audit surfaces more. Writing new code is writing new sediment, unless the audit runs.) Tj T* ET Q Q q -1 0 0 1 57.02362 272.2236 cm +1 0 0 1 57.02362 204.2236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (12.2 MOAD-0002: The Intertangle in Our Own Design) Tj T* ET Q Q q -1 0 0 1 57.02362 254.2236 cm +1 0 0 1 57.02362 186.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (All three implementations share mutable global state between subsystems:) Tj T* ET Q Q q -1 0 0 1 57.02362 248.2236 cm +1 0 0 1 57.02362 180.2236 cm Q q -1 0 0 1 57.02362 248.2236 cm +1 0 0 1 57.02362 180.2236 cm Q q -1 0 0 1 57.02362 200.2236 cm +1 0 0 1 57.02362 132.2236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -8871,10 +9499,10 @@ Q Q Q q -1 0 0 1 57.02362 194.2236 cm +1 0 0 1 57.02362 126.2236 cm Q q -1 0 0 1 57.02362 158.2236 cm +1 0 0 1 57.02362 90.22362 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -8896,10 +9524,19 @@ Q Q Q q -1 0 0 1 57.02362 152.2236 cm +1 0 0 1 57.02362 84.22362 cm Q + +endstream +endobj +148 0 obj +<< +/Length 7958 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 116.2236 cm +1 0 0 1 57.02362 729.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -8921,62 +9558,53 @@ Q Q Q q -1 0 0 1 57.02362 98.22362 cm +1 0 0 1 57.02362 711.0236 cm Q - -endstream -endobj -140 0 obj -<< -/Length 7883 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 729.0236 cm +1 0 0 1 57.02362 669.0236 cm q BT 1 0 0 1 0 26 Tm .770556 Tw 12 TL /F1 10 Tf 0 0 0 rg (We documented these rather than refactoring them. In each case, the coupling exists for performance \(the) Tj T* 0 Tw .79631 Tw (globals are on hot paths\) or necessity \() Tj /F5 10 Tf (setjmp) Tj /F1 10 Tf ( requires thread-local state\). The documentation makes the) Tj T* 0 Tw (coupling visible so future work can decouple selectively.) Tj T* ET Q Q q -1 0 0 1 57.02362 703.0236 cm +1 0 0 1 57.02362 643.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf .133333 .133333 .133333 rg (12.3 Our Shared Infrastructure) Tj T* ET Q Q q -1 0 0 1 57.02362 649.0236 cm +1 0 0 1 57.02362 589.0236 cm q BT 1 0 0 1 0 38 Tm 1.468917 Tw 12 TL /F1 10 Tf 0 0 0 rg (Every MOAD we fixed in our own code is a MOAD we understand better when we find it in others. The) Tj T* 0 Tw 3.534168 Tw (sedimentary defect in ) Tj /F5 10 Tf (intern_symbol) Tj /F1 10 Tf ( is the same pattern as the sedimentary defect in Lean 4's) Tj T* 0 Tw .17985 Tw /F5 10 Tf (check_duplicated_univ_params) Tj /F1 10 Tf (. The intertangle in our global environment register is the same pattern) Tj T* 0 Tw (as the intertangle in any system that routes state through implicit globals instead of explicit parameters.) Tj T* ET Q Q q -1 0 0 1 57.02362 583.0236 cm +1 0 0 1 57.02362 523.0236 cm q BT 1 0 0 1 0 50 Tm 1.036556 Tw 12 TL /F3 10 Tf 0 0 0 rg (Our infrastructure does not extract rent from workaholics to feed gluttons.) Tj /F1 10 Tf ( A symbol table that does) Tj T* 0 Tw .025176 Tw (O\(N\) work per lookup is a workaholic node \227 it does more work than necessary on every operation, and that) Tj T* 0 Tw .250642 Tw (cost compounds through every downstream consumer. Fixing it reduces stress on our shared computational) Tj T* 0 Tw .385785 Tw (heart. The CPU cycles saved are cycles available for the next lambda, the next continuation, the next portal) Tj T* 0 Tw (resume.) Tj T* ET Q Q q -1 0 0 1 57.02362 541.0236 cm +1 0 0 1 57.02362 481.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 3.447739 Tw (This is the permacomputer obligation: infrastructure that renews itself. Code that gets faster as we) Tj T* 0 Tw .462545 Tw (understand it better. A hash table is not an optimization \227 it is the removal of unnecessary suffering from a) Tj T* 0 Tw (system that deserves better.) Tj T* ET Q Q q -1 0 0 1 57.02362 509.8236 cm +1 0 0 1 57.02362 449.8236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (13. Future Work) Tj T* ET Q Q q -1 0 0 1 57.02362 495.8236 cm +1 0 0 1 57.02362 435.8236 cm Q q -1 0 0 1 57.02362 495.8236 cm +1 0 0 1 57.02362 435.8236 cm Q q -1 0 0 1 57.02362 471.8236 cm +1 0 0 1 57.02362 411.8236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -8998,10 +9626,10 @@ Q Q Q q -1 0 0 1 57.02362 465.8236 cm +1 0 0 1 57.02362 405.8236 cm Q q -1 0 0 1 57.02362 429.8236 cm +1 0 0 1 57.02362 369.8236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -9023,56 +9651,6 @@ Q Q Q q -1 0 0 1 57.02362 423.8236 cm -Q -q -1 0 0 1 57.02362 399.8236 cm -q -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 9 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 14 Tm 1.135696 Tw 12 TL /F3 10 Tf 0 0 0 rg (GPU lambda execution) Tj /F1 10 Tf (: Map/reduce on CUDA for data-parallel Scheme \(Phase 1\), trampolining for) Tj T* 0 Tw (recursive lambdas \(Phase 2\), interaction combinators for massive parallelism \(Phase 3\)) Tj T* ET -Q -Q -q -Q -Q -Q -q -1 0 0 1 57.02362 393.8236 cm -Q -q -1 0 0 1 57.02362 369.8236 cm -q -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 9 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 14 Tm .734488 Tw 12 TL /F3 10 Tf 0 0 0 rg (Copying GC in asm) Tj /F1 10 Tf (: ) Tj /F5 10 Tf (heap-snapshot) Tj /F1 10 Tf ( is an escape hatch. A mark-and-copy collector would remove) Tj T* 0 Tw (the sharp edge for general programs without forcing the programmer to reason about lifetimes.) Tj T* ET -Q -Q -q -Q -Q -Q -q 1 0 0 1 57.02362 363.8236 cm Q q @@ -9090,7 +9668,7 @@ Q q 1 0 0 1 23 -3 cm q -BT 1 0 0 1 0 14 Tm 6.367835 Tw 12 TL /F3 10 Tf 0 0 0 rg (Concurrent accept loop \(asm\)) Tj /F1 10 Tf (: Currently single-threaded. A pre-forked worker model or) Tj T* 0 Tw /F5 10 Tf (SO_REUSEPORT) Tj /F1 10 Tf ( pool would multiply throughput without changing the Scheme code.) Tj T* ET +BT 1 0 0 1 0 14 Tm 1.135696 Tw 12 TL /F3 10 Tf 0 0 0 rg (GPU lambda execution) Tj /F1 10 Tf (: Map/reduce on CUDA for data-parallel Scheme \(Phase 1\), trampolining for) Tj T* 0 Tw (recursive lambdas \(Phase 2\), interaction combinators for massive parallelism \(Phase 3\)) Tj T* ET Q Q q @@ -9101,7 +9679,57 @@ q 1 0 0 1 57.02362 333.8236 cm Q q -1 0 0 1 57.02362 321.8236 cm +1 0 0 1 57.02362 309.8236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 9 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 14 Tm .734488 Tw 12 TL /F3 10 Tf 0 0 0 rg (Copying GC in asm) Tj /F1 10 Tf (: ) Tj /F5 10 Tf (heap-snapshot) Tj /F1 10 Tf ( is an escape hatch. A mark-and-copy collector would remove) Tj T* 0 Tw (the sharp edge for general programs without forcing the programmer to reason about lifetimes.) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 303.8236 cm +Q +q +1 0 0 1 57.02362 279.8236 cm +q +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 9 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL 8 0 Td (\177) Tj T* -8 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 14 Tm 6.367835 Tw 12 TL /F3 10 Tf 0 0 0 rg (Concurrent accept loop \(asm\)) Tj /F1 10 Tf (: Currently single-threaded. A pre-forked worker model or) Tj T* 0 Tw /F5 10 Tf (SO_REUSEPORT) Tj /F1 10 Tf ( pool would multiply throughput without changing the Scheme code.) Tj T* ET +Q +Q +q +Q +Q +Q +q +1 0 0 1 57.02362 273.8236 cm +Q +q +1 0 0 1 57.02362 261.8236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -9123,10 +9751,10 @@ Q Q Q q -1 0 0 1 57.02362 315.8236 cm +1 0 0 1 57.02362 255.8236 cm Q q -1 0 0 1 57.02362 303.8236 cm +1 0 0 1 57.02362 243.8236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -9148,70 +9776,70 @@ Q Q Q q -1 0 0 1 57.02362 285.8236 cm +1 0 0 1 57.02362 225.8236 cm Q q -1 0 0 1 57.02362 254.6236 cm +1 0 0 1 57.02362 194.6236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (14. The Defect in the Model) Tj T* ET Q Q q -1 0 0 1 57.02362 234.6236 cm +1 0 0 1 57.02362 174.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This paper is evidence of a problem that extends beyond any single codebase.) Tj T* ET Q Q q -1 0 0 1 57.02362 168.6236 cm +1 0 0 1 57.02362 108.6236 cm q BT 1 0 0 1 0 50 Tm .653022 Tw 12 TL /F1 10 Tf 0 0 0 rg (On April 4, 2026, ) Tj 0 .4 .6 rg (russell@unturf) Tj 0 0 0 rg ( published ) Tj 0 .4 .6 rg ("Stress on Our Shared Heart") Tj 0 0 0 rg ( \227 a systematic analysis of 1,264) Tj T* 0 Tw .998334 Tw (MOAD defects across 60+ ecosystems, 18 programming languages, with 919 patches written. The central) Tj T* 0 Tw 2.218835 Tw (finding: O\(N\262\) sedimentary defects compound across architectural layers, creating invisible performance) Tj T* 0 Tw .27131 Tw (taxation on every downstream consumer. A single bottleneck multiplies against every other bottleneck in the) Tj T* 0 Tw (dependency chain.) Tj T* ET Q Q q -1 0 0 1 57.02362 138.6236 cm +1 0 0 1 57.02362 78.62362 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .222844 Tw (On April 13--14, 2026 \227 nine days later \227 the machine learning agent that built Lumbda wrote MOAD-0001) Tj T* 0 Tw (into fresh code. Twice.) Tj T* ET Q Q -q -1 0 0 1 57.02362 72.62362 cm -q -BT 1 0 0 1 0 50 Tm 1.989873 Tw 12 TL /F5 10 Tf 0 0 0 rg (intern_symbol) Tj /F1 10 Tf ( in the assembly implementation: a linear scan through all interned symbols. O\(N\) per) Tj T* 0 Tw 1.841147 Tw (lookup. The exact pattern described in "Stress on Our Shared Heart." The exact pattern the agent was) Tj T* 0 Tw 3.328647 Tw (explicitly instructed to avoid. The agent had the full MOAD taxonomy in its context window. It had) Tj T* 0 Tw 2.822739 Tw /F5 10 Tf (BLACKOPS.md) Tj /F1 10 Tf ( defining all five MOADs. It had the undefect.com mission statement. And it still wrote) Tj T* 0 Tw /F5 10 Tf (jmp) Tj ( ) Tj (.isym_search) Tj /F1 10 Tf ( instead of a hash table.) Tj T* ET -Q -Q endstream endobj -141 0 obj +149 0 obj << -/Length 6415 +/Length 6975 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 741.0236 cm +1 0 0 1 57.02362 705.0236 cm +q +BT 1 0 0 1 0 50 Tm 1.989873 Tw 12 TL /F5 10 Tf 0 0 0 rg (intern_symbol) Tj /F1 10 Tf ( in the assembly implementation: a linear scan through all interned symbols. O\(N\) per) Tj T* 0 Tw 1.841147 Tw (lookup. The exact pattern described in "Stress on Our Shared Heart." The exact pattern the agent was) Tj T* 0 Tw 3.328647 Tw (explicitly instructed to avoid. The agent had the full MOAD taxonomy in its context window. It had) Tj T* 0 Tw 2.822739 Tw /F5 10 Tf (BLACKOPS.md) Tj /F1 10 Tf ( defining all five MOADs. It had the undefect.com mission statement. And it still wrote) Tj T* 0 Tw /F5 10 Tf (jmp) Tj ( ) Tj (.isym_search) Tj /F1 10 Tf ( instead of a hash table.) Tj T* ET +Q +Q +q +1 0 0 1 57.02362 675.0236 cm q BT 1 0 0 1 0 14 Tm 1.541835 Tw 12 TL /F5 10 Tf 0 0 0 rg (list.index\(\)) Tj /F1 10 Tf ( in the Python implementation's ) Tj /F5 10 Tf (_define_record_type) Tj /F1 10 Tf (: linear search for field position.) Tj T* 0 Tw (O\(N\) where O\(1\) was trivial. Same defect. Same context. Same failure.) Tj T* ET Q Q q -1 0 0 1 57.02362 723.0236 cm +1 0 0 1 57.02362 657.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The commit history proves it:) Tj T* ET Q Q q -1 0 0 1 57.02362 717.0236 cm +1 0 0 1 57.02362 651.0236 cm Q q -1 0 0 1 57.02362 717.0236 cm +1 0 0 1 57.02362 651.0236 cm Q q -1 0 0 1 57.02362 705.0236 cm +1 0 0 1 57.02362 639.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -9233,10 +9861,10 @@ Q Q Q q -1 0 0 1 57.02362 699.0236 cm +1 0 0 1 57.02362 633.0236 cm Q q -1 0 0 1 57.02362 687.0236 cm +1 0 0 1 57.02362 621.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -9258,10 +9886,10 @@ Q Q Q q -1 0 0 1 57.02362 681.0236 cm +1 0 0 1 57.02362 615.0236 cm Q q -1 0 0 1 57.02362 669.0236 cm +1 0 0 1 57.02362 603.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -9283,52 +9911,52 @@ Q Q Q q -1 0 0 1 57.02362 651.0236 cm +1 0 0 1 57.02362 585.0236 cm Q q -1 0 0 1 57.02362 633.0236 cm +1 0 0 1 57.02362 567.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (The defect is in the model, not the programmer.) Tj T* ET Q Q q -1 0 0 1 57.02362 579.0236 cm +1 0 0 1 57.02362 513.0236 cm q BT 1 0 0 1 0 38 Tm 5.336796 Tw 12 TL /F1 10 Tf 0 0 0 rg (Language models learn from training data. The training data contains millions of linear scans,) Tj T* 0 Tw 3.434395 Tw /F5 10 Tf (list.contains) Tj /F1 10 Tf ( calls, ) Tj /F5 10 Tf (std::find) Tj /F1 10 Tf ( inside loops, ) Tj /F5 10 Tf (array.indexOf) Tj /F1 10 Tf ( in hot paths. These patterns are) Tj T* 0 Tw .94631 Tw (statistically dominant. When a model generates code, it reproduces the dominant patterns from its training) Tj T* 0 Tw (distribution \227 including the sedimentary defects.) Tj T* ET Q Q q -1 0 0 1 57.02362 537.0236 cm +1 0 0 1 57.02362 471.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .029897 Tw (Cantor formalized set theory in 1874. Hash tables were implemented in 1953. The O\(1\) membership test has) Tj T* 0 Tw .363241 Tw (been known for 152 years and available in every language for 73 years. Yet language models still default to) Tj T* 0 Tw (O\(N\) because O\(N\) is what most code does. The training data is the sediment.) Tj T* ET Q Q q -1 0 0 1 57.02362 495.0236 cm +1 0 0 1 57.02362 429.0236 cm q BT 1 0 0 1 0 26 Tm 2.359862 Tw 12 TL /F3 10 Tf 0 0 0 rg (This means every machine learning agent generating code today is propagating MOAD-0001 by) Tj T* 0 Tw .91789 Tw (default.) Tj /F1 10 Tf ( Not because the solutions are unknown. Not because the agents lack capability. But because the) Tj T* 0 Tw (statistical distribution of training data encodes the defect as the norm.) Tj T* ET Q Q q -1 0 0 1 57.02362 453.0236 cm +1 0 0 1 57.02362 387.0236 cm q BT 1 0 0 1 0 26 Tm .412917 Tw 12 TL /F1 10 Tf 0 0 0 rg (The fix is not to patch individual outputs. The fix is to teach models that ) Tj /F3 10 Tf (O\(1\) is the default) Tj /F1 10 Tf ( for membership) Tj T* 0 Tw 4.550556 Tw (tests, lookups, and deduplication. That ) Tj /F5 10 Tf (set\(\)) Tj /F1 10 Tf ( is not an optimization \227 it is the baseline. That) Tj T* 0 Tw /F5 10 Tf (list.contains) Tj /F1 10 Tf ( inside a loop is a defect, not a pattern.) Tj T* ET Q Q q -1 0 0 1 57.02362 411.0236 cm +1 0 0 1 57.02362 345.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.790491 Tw (Until that teaching happens at the training level, every agent needs a MOAD audit pass on every code) Tj T* 0 Tw 1.596373 Tw (generation. This paper \227 with its commit history showing the defect introduced and then fixed \227 is the) Tj T* 0 Tw (evidence that the audit is necessary.) Tj T* ET Q Q q -1 0 0 1 57.02362 405.0236 cm +1 0 0 1 57.02362 339.0236 cm Q q -1 0 0 1 57.02362 363.0236 cm +1 0 0 1 57.02362 297.0236 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -9351,30 +9979,30 @@ Q Q Q q -1 0 0 1 57.02362 363.0236 cm +1 0 0 1 57.02362 297.0236 cm Q q -1 0 0 1 57.02362 333.0236 cm +1 0 0 1 57.02362 267.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.253223 Tw (The stress is real. The compound burden is measurable. And the models that generate our infrastructure) Tj T* 0 Tw (carry the defect in their weights.) Tj T* ET Q Q q -1 0 0 1 57.02362 315.0236 cm +1 0 0 1 57.02362 249.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This paper is the proof. The commit history is the evidence. The fix starts with awareness.) Tj T* ET Q Q q -1 0 0 1 57.02362 283.8236 cm +1 0 0 1 57.02362 217.8236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (Citation) Tj T* ET Q Q q -1 0 0 1 57.02362 233.8236 cm +1 0 0 1 57.02362 167.8236 cm q q 1 0 0 1 0 0 cm @@ -9395,13 +10023,13 @@ Q Q Q q -1 0 0 1 57.02362 202.6236 cm +1 0 0 1 57.02362 136.6236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (References) Tj T* ET Q Q q -1 0 0 1 57.02362 152.6236 cm +1 0 0 1 57.02362 86.62362 cm q q 1 0 0 1 0 0 cm @@ -9421,26 +10049,26 @@ Q Q Q Q + +endstream +endobj +150 0 obj +<< +/Length 2199 +>> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 121.4236 cm +1 0 0 1 57.02362 751.8236 cm q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F2 11 Tf .133333 .133333 .133333 rg (License) Tj T* ET Q Q q -1 0 0 1 57.02362 105.4236 cm +1 0 0 1 57.02362 735.8236 cm Q - -endstream -endobj -142 0 obj -<< -/Length 2103 ->> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 561.9477 cm +1 0 0 1 57.02362 532.7477 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -9456,13 +10084,13 @@ Q Q Q q -1 0 0 1 57.02362 553.9477 cm +1 0 0 1 57.02362 524.7477 cm Q q -1 0 0 1 57.02362 545.9477 cm +1 0 0 1 57.02362 516.7477 cm Q q -1 0 0 1 57.02362 347.2922 cm +1 0 0 1 57.02362 318.0922 cm q 0 0 0 rg BT /F1 10 Tf 12 TL ET @@ -9478,17 +10106,17 @@ Q Q Q q -1 0 0 1 57.02362 339.2922 cm +1 0 0 1 57.02362 310.0922 cm Q q -1 0 0 1 57.02362 321.2922 cm +1 0 0 1 57.02362 292.0922 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL 155.3042 0 Td (GNU Affero General Public License v3) Tj T* -155.3042 0 Td ET Q Q q -1 0 0 1 57.02362 69.69221 cm +1 0 0 1 57.02362 69.29221 cm q q 1 0 0 1 0 0 cm @@ -9498,10 +10126,10 @@ q .662745 .662745 .662745 RG .5 w .960784 .960784 .960784 rg -n -6 -6 480.0283 242.4 re B* +n -6 -6 480.0283 213.6 re B* Q q -BT 1 0 0 1 0 222.4 Tm 9.6 TL /F5 8 Tf 0 0 0 rg (AGPL-3.0-only) Tj T* T* (PERMACOMPUTER PREAMBLE - NO WARRANTY) Tj T* T* (This is free software for the public good of a permacomputer hosted at) Tj T* (permacomputer.com, an always-on computer by the people, for the people. One) Tj T* (which is durable, easy to repair, ) Tj (&) Tj ( distributed like tap water for machine) Tj T* (learning intelligence.) Tj T* T* (The permacomputer is community-owned infrastructure optimized around four values:) Tj T* T* ( TRUTH - Source code must be open source ) Tj (&) Tj ( freely distributed) Tj T* ( FREEDOM - Voluntary participation without corporate control) Tj T* ( HARMONY - Systems operating with minimal waste that self-renew) Tj T* ( LOVE - Individual rights protected while fostering cooperation) Tj T* T* (This software contributes to that vision by proving that feedback) Tj T* (\(the computational primitive of continuations\) composes into a universal) Tj T* (execution model, extending across implementations through Scheme source) Tj T* (itself as the wire format. Three implementations, one language,) Tj T* (974 tests, ~17,000 lines. Code is seeds to sprout on any abandoned technology.) Tj T* T* (Learn more: https://www.permacomputer.com) Tj T* T* ET +BT 1 0 0 1 0 193.6 Tm 9.6 TL /F5 8 Tf 0 0 0 rg (AGPL-3.0-only) Tj T* T* (PERMACOMPUTER PREAMBLE - NO WARRANTY) Tj T* T* (This is free software for the public good of a permacomputer hosted at) Tj T* (permacomputer.com, an always-on computer by the people, for the people. One) Tj T* (which is durable, easy to repair, ) Tj (&) Tj ( distributed like tap water for machine) Tj T* (learning intelligence.) Tj T* T* (The permacomputer is community-owned infrastructure optimized around four values:) Tj T* T* ( TRUTH - Source code must be open source ) Tj (&) Tj ( freely distributed) Tj T* ( FREEDOM - Voluntary participation without corporate control) Tj T* ( HARMONY - Systems operating with minimal waste that self-renew) Tj T* ( LOVE - Individual rights protected while fostering cooperation) Tj T* T* (This software contributes to that vision by proving that feedback) Tj T* (\(the computational primitive of continuations\) composes into a universal) Tj T* (execution model, extending across implementations through Scheme source) Tj T* (itself as the wire format. Three implementations, one language,) Tj T* (974 tests, ~17,000 lines. Code is seeds to sprout on any abandoned technology.) Tj T* ET Q Q Q @@ -9510,14 +10138,14 @@ Q endstream endobj -143 0 obj +151 0 obj << -/Length 1025 +/Length 1087 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 57.02362 607.8236 cm +1 0 0 1 57.02362 579.0236 cm q q 1 0 0 1 0 0 cm @@ -9527,10 +10155,10 @@ q .662745 .662745 .662745 RG .5 w .960784 .960784 .960784 rg -n -6 -6 480.0283 156 re B* +n -6 -6 480.0283 184.8 re B* Q q -BT 1 0 0 1 0 136 Tm 9.6 TL /F5 8 Tf 0 0 0 rg (NO WARRANTY. THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.) Tj T* T* (That said, our permacomputer's digital membrane stratum continuously runs unit,) Tj T* (integration, ) Tj (&) Tj ( functional tests on all of its own software, with our) Tj T* (permacomputer monitoring itself, repairing itself, with minimal human in the) Tj T* (loop guidance. Our machine learning agents do their best to leave no stone) Tj T* (unturned.) Tj T* T* (Copyright \(C\) 2025-2026 TimeHexOn ) Tj (&) Tj ( foxhop ) Tj (&) Tj ( russell@unturf) Tj T* (https://www.timehexon.com) Tj T* (https://www.foxhop.net) Tj T* (https://www.unturf.com/software) Tj T* (https://www.permacomputer.com) Tj T* (https://uncloseai.com) Tj T* (https://russell.ballestrini.net) Tj T* ET +BT 1 0 0 1 0 164.8 Tm 9.6 TL /F5 8 Tf 0 0 0 rg T* (Learn more: https://www.permacomputer.com) Tj T* T* (NO WARRANTY. THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.) Tj T* T* (That said, our permacomputer's digital membrane stratum continuously runs unit,) Tj T* (integration, ) Tj (&) Tj ( functional tests on all of its own software, with our) Tj T* (permacomputer monitoring itself, repairing itself, with minimal human in the) Tj T* (loop guidance. Our machine learning agents do their best to leave no stone) Tj T* (unturned.) Tj T* T* (Copyright \(C\) 2025-2026 TimeHexOn ) Tj (&) Tj ( foxhop ) Tj (&) Tj ( russell@unturf) Tj T* (https://www.timehexon.com) Tj T* (https://www.foxhop.net) Tj T* (https://www.unturf.com/software) Tj T* (https://www.permacomputer.com) Tj T* (https://uncloseai.com) Tj T* (https://russell.ballestrini.net) Tj T* ET Q Q Q @@ -9539,335 +10167,355 @@ Q endstream endobj -144 0 obj -<< -/Nums [ 0 145 0 R 1 146 0 R 2 147 0 R 3 148 0 R 4 149 0 R - 5 150 0 R 6 151 0 R 7 152 0 R 8 153 0 R 9 154 0 R - 10 155 0 R 11 156 0 R 12 157 0 R 13 158 0 R 14 159 0 R - 15 160 0 R 16 161 0 R 17 162 0 R 18 163 0 R 19 164 0 R - 20 165 0 R 21 166 0 R 22 167 0 R 23 168 0 R 24 169 0 R - 25 170 0 R 26 171 0 R ] ->> -endobj -145 0 obj -<< -/S /D /St 1 ->> -endobj -146 0 obj -<< -/S /D /St 2 ->> -endobj -147 0 obj -<< -/S /D /St 3 ->> -endobj -148 0 obj -<< -/S /D /St 4 ->> -endobj -149 0 obj -<< -/S /D /St 5 ->> -endobj -150 0 obj -<< -/S /D /St 6 ->> -endobj -151 0 obj -<< -/S /D /St 7 ->> -endobj 152 0 obj << -/S /D /St 8 +/Nums [ 0 153 0 R 1 154 0 R 2 155 0 R 3 156 0 R 4 157 0 R + 5 158 0 R 6 159 0 R 7 160 0 R 8 161 0 R 9 162 0 R + 10 163 0 R 11 164 0 R 12 165 0 R 13 166 0 R 14 167 0 R + 15 168 0 R 16 169 0 R 17 170 0 R 18 171 0 R 19 172 0 R + 20 173 0 R 21 174 0 R 22 175 0 R 23 176 0 R 24 177 0 R + 25 178 0 R 26 179 0 R 27 180 0 R 28 181 0 R ] >> endobj 153 0 obj << -/S /D /St 9 +/S /D /St 1 >> endobj 154 0 obj << -/S /D /St 10 +/S /D /St 2 >> endobj 155 0 obj << -/S /D /St 11 +/S /D /St 3 >> endobj 156 0 obj << -/S /D /St 12 +/S /D /St 4 >> endobj 157 0 obj << -/S /D /St 13 +/S /D /St 5 >> endobj 158 0 obj << -/S /D /St 14 +/S /D /St 6 >> endobj 159 0 obj << -/S /D /St 15 +/S /D /St 7 >> endobj 160 0 obj << -/S /D /St 16 +/S /D /St 8 >> endobj 161 0 obj << -/S /D /St 17 +/S /D /St 9 >> endobj 162 0 obj << -/S /D /St 18 +/S /D /St 10 >> endobj 163 0 obj << -/S /D /St 19 +/S /D /St 11 >> endobj 164 0 obj << -/S /D /St 20 +/S /D /St 12 >> endobj 165 0 obj << -/S /D /St 21 +/S /D /St 13 >> endobj 166 0 obj << -/S /D /St 22 +/S /D /St 14 >> endobj 167 0 obj << -/S /D /St 23 +/S /D /St 15 >> endobj 168 0 obj << -/S /D /St 24 +/S /D /St 16 >> endobj 169 0 obj << -/S /D /St 25 +/S /D /St 17 >> endobj 170 0 obj << -/S /D /St 26 +/S /D /St 18 >> endobj 171 0 obj << +/S /D /St 19 +>> +endobj +172 0 obj +<< +/S /D /St 20 +>> +endobj +173 0 obj +<< +/S /D /St 21 +>> +endobj +174 0 obj +<< +/S /D /St 22 +>> +endobj +175 0 obj +<< +/S /D /St 23 +>> +endobj +176 0 obj +<< +/S /D /St 24 +>> +endobj +177 0 obj +<< +/S /D /St 25 +>> +endobj +178 0 obj +<< +/S /D /St 26 +>> +endobj +179 0 obj +<< /S /D /St 27 >> endobj +180 0 obj +<< +/S /D /St 28 +>> +endobj +181 0 obj +<< +/S /D /St 29 +>> +endobj xref -0 172 +0 182 0000000000 65535 f 0000000061 00000 n -0000000158 00000 n -0000000265 00000 n -0001535114 00000 n -0001535223 00000 n -0001535335 00000 n -0001535450 00000 n -0001535620 00000 n -0001535793 00000 n -0001535974 00000 n -0001536080 00000 n -0001536381 00000 n -0001536589 00000 n -0001668560 00000 n -0001668638 00000 n -0001668910 00000 n -0001669118 00000 n -0001669326 00000 n -0001669534 00000 n -0001669742 00000 n -0001669950 00000 n -0001687422 00000 n -0001688138 00000 n -0001706741 00000 n -0001707027 00000 n -0001707348 00000 n -0001707556 00000 n -0001707640 00000 n -0001707848 00000 n -0001708056 00000 n -0001708264 00000 n -0001708472 00000 n -0001708680 00000 n -0001708858 00000 n -0001709085 00000 n -0001843976 00000 n -0001848240 00000 n -0002058048 00000 n -0002058369 00000 n -0002058577 00000 n -0002058785 00000 n -0002083320 00000 n -0002084211 00000 n -0002084483 00000 n -0002084691 00000 n -0002084882 00000 n -0002085073 00000 n -0002085307 00000 n -0002085515 00000 n -0002085689 00000 n -0002085897 00000 n -0002086131 00000 n -0002086337 00000 n -0002086509 00000 n -0002086743 00000 n -0002145719 00000 n -0002146029 00000 n -0002146349 00000 n -0002146557 00000 n -0002146665 00000 n -0002146920 00000 n -0002146995 00000 n -0002147128 00000 n -0002147238 00000 n -0002147403 00000 n -0002147598 00000 n -0002147714 00000 n -0002147832 00000 n -0002147974 00000 n -0002148174 00000 n -0002148309 00000 n -0002148458 00000 n -0002148587 00000 n -0002148757 00000 n -0002148881 00000 n -0002149012 00000 n -0002149134 00000 n -0002149330 00000 n -0002149447 00000 n -0002149574 00000 n -0002149717 00000 n -0002149883 00000 n -0002150043 00000 n -0002150228 00000 n -0002150375 00000 n -0002150530 00000 n -0002150702 00000 n -0002150855 00000 n -0002150998 00000 n -0002151153 00000 n -0002151298 00000 n -0002151481 00000 n -0002151599 00000 n -0002151756 00000 n -0002151894 00000 n -0002152042 00000 n -0002152192 00000 n -0002152330 00000 n -0002152465 00000 n -0002152617 00000 n -0002152818 00000 n -0002152941 00000 n -0002153080 00000 n -0002153244 00000 n -0002153417 00000 n -0002153590 00000 n -0002153737 00000 n -0002153932 00000 n -0002154091 00000 n -0002154259 00000 n -0002154394 00000 n -0002154527 00000 n -0002154672 00000 n -0002154798 00000 n -0002154926 00000 n -0002155037 00000 n -0002155288 00000 n -0002160405 00000 n -0002168037 00000 n -0002173367 00000 n -0002180316 00000 n -0002188837 00000 n -0002197952 00000 n -0002207156 00000 n -0002220057 00000 n -0002229835 00000 n -0002240725 00000 n -0002250132 00000 n -0002259495 00000 n -0002266609 00000 n -0002275986 00000 n -0002284982 00000 n -0002293426 00000 n -0002295261 00000 n -0002308320 00000 n -0002325367 00000 n -0002335253 00000 n -0002342693 00000 n -0002349291 00000 n -0002357279 00000 n -0002365215 00000 n -0002371683 00000 n -0002373839 00000 n -0002374917 00000 n -0002375252 00000 n -0002375287 00000 n -0002375322 00000 n -0002375357 00000 n -0002375392 00000 n -0002375427 00000 n -0002375462 00000 n -0002375497 00000 n -0002375532 00000 n -0002375567 00000 n -0002375603 00000 n -0002375639 00000 n -0002375675 00000 n -0002375711 00000 n -0002375747 00000 n -0002375783 00000 n -0002375819 00000 n -0002375855 00000 n -0002375891 00000 n -0002375927 00000 n -0002375963 00000 n -0002375999 00000 n -0002376035 00000 n -0002376071 00000 n -0002376107 00000 n -0002376143 00000 n -0002376179 00000 n +0000000169 00000 n +0000000276 00000 n +0001535125 00000 n +0001535234 00000 n +0001535346 00000 n +0001535461 00000 n +0001535631 00000 n +0001535804 00000 n +0001535985 00000 n +0001536091 00000 n +0001536392 00000 n +0001536600 00000 n +0001668571 00000 n +0001668649 00000 n +0001668921 00000 n +0001669129 00000 n +0001669337 00000 n +0001669545 00000 n +0001669753 00000 n +0001669961 00000 n +0001687433 00000 n +0001688149 00000 n +0001706752 00000 n +0001707038 00000 n +0001707359 00000 n +0001707567 00000 n +0001707678 00000 n +0001707886 00000 n +0001708094 00000 n +0001708178 00000 n +0001708386 00000 n +0001708594 00000 n +0001708802 00000 n +0001709010 00000 n +0001709218 00000 n +0001709396 00000 n +0001709623 00000 n +0001844514 00000 n +0001848778 00000 n +0002058586 00000 n +0002058907 00000 n +0002059115 00000 n +0002059323 00000 n +0002083858 00000 n +0002084749 00000 n +0002085021 00000 n +0002085229 00000 n +0002085420 00000 n +0002085611 00000 n +0002085845 00000 n +0002086053 00000 n +0002086227 00000 n +0002086435 00000 n +0002086669 00000 n +0002086875 00000 n +0002087047 00000 n +0002087281 00000 n +0002146257 00000 n +0002146567 00000 n +0002146887 00000 n +0002147095 00000 n +0002147203 00000 n +0002147458 00000 n +0002147533 00000 n +0002147666 00000 n +0002147776 00000 n +0002147941 00000 n +0002148136 00000 n +0002148252 00000 n +0002148370 00000 n +0002148512 00000 n +0002148712 00000 n +0002148847 00000 n +0002148996 00000 n +0002149125 00000 n +0002149295 00000 n +0002149419 00000 n +0002149550 00000 n +0002149672 00000 n +0002149868 00000 n +0002149985 00000 n +0002150112 00000 n +0002150255 00000 n +0002150421 00000 n +0002150594 00000 n +0002150772 00000 n +0002150929 00000 n +0002151068 00000 n +0002151253 00000 n +0002151400 00000 n +0002151555 00000 n +0002151727 00000 n +0002151880 00000 n +0002152023 00000 n +0002152178 00000 n +0002152323 00000 n +0002152508 00000 n +0002152626 00000 n +0002152784 00000 n +0002152924 00000 n +0002153075 00000 n +0002153228 00000 n +0002153368 00000 n +0002153505 00000 n +0002153659 00000 n +0002153861 00000 n +0002153984 00000 n +0002154123 00000 n +0002154287 00000 n +0002154460 00000 n +0002154633 00000 n +0002154780 00000 n +0002154975 00000 n +0002155134 00000 n +0002155302 00000 n +0002155437 00000 n +0002155570 00000 n +0002155715 00000 n +0002155841 00000 n +0002155969 00000 n +0002156080 00000 n +0002156345 00000 n +0002161462 00000 n +0002169361 00000 n +0002174154 00000 n +0002181083 00000 n +0002189997 00000 n +0002199244 00000 n +0002208448 00000 n +0002221291 00000 n +0002231013 00000 n +0002240294 00000 n +0002252453 00000 n +0002261602 00000 n +0002270946 00000 n +0002280917 00000 n +0002287073 00000 n +0002296594 00000 n +0002306857 00000 n +0002311869 00000 n +0002313704 00000 n +0002327038 00000 n +0002343697 00000 n +0002353873 00000 n +0002360939 00000 n +0002367809 00000 n +0002375318 00000 n +0002383329 00000 n +0002390357 00000 n +0002392609 00000 n +0002393749 00000 n +0002394106 00000 n +0002394141 00000 n +0002394176 00000 n +0002394211 00000 n +0002394246 00000 n +0002394281 00000 n +0002394316 00000 n +0002394351 00000 n +0002394386 00000 n +0002394421 00000 n +0002394457 00000 n +0002394493 00000 n +0002394529 00000 n +0002394565 00000 n +0002394601 00000 n +0002394637 00000 n +0002394673 00000 n +0002394709 00000 n +0002394745 00000 n +0002394781 00000 n +0002394817 00000 n +0002394853 00000 n +0002394889 00000 n +0002394925 00000 n +0002394961 00000 n +0002394997 00000 n +0002395033 00000 n +0002395069 00000 n +0002395105 00000 n trailer << /ID -[<3018bfbcd369f2de234cd9bdbbf818c4><3018bfbcd369f2de234cd9bdbbf818c4>] +[] % ReportLab generated PDF document -- digest (opensource) -/Info 60 0 R -/Root 59 0 R -/Size 172 +/Info 63 0 R +/Root 62 0 R +/Size 182 >> startxref -2376215 +2395141 %%EOF diff --git a/whitepaper/uncommonlisp-whitepaper.rst b/whitepaper/uncommonlisp-whitepaper.rst index 982c838..b706249 100644 --- a/whitepaper/uncommonlisp-whitepaper.rst +++ b/whitepaper/uncommonlisp-whitepaper.rst @@ -63,7 +63,7 @@ Lumbda ships in **four implementation tiers** — each independently built, each - **Python bytecode VM** — 3,743 lines, full first-class continuations, JSON portal, reference implementation - **C interpreter** — tree-walker + bytecode VM, 9,164 lines of runtime C, JSON portal - **C + x86_64 JIT** — pattern-matched native code emission via ``mmap(PROT_EXEC)``, 7--10× faster than CPython on recursive workloads -- **Pure x86_64 assembly** — 4,968 lines, 22 KB stripped binary, zero external dependencies, **91 builtins including a full TCP stack, `eval`, and `read-from-string`**, binary heap-dump portal +- **Pure x86_64 assembly** — 6,645 lines of GNU assembler (GAS, AT&T syntax), assembled with ``as`` and linked with ``ld`` (both from GNU binutils), ~22 KB stripped binary (bump-only build) / ~25 KB stripped (with optional naive mark-sweep GC + meta-GC arena under the ``GC_NAIVE`` assemble flag), zero external dependencies, **95+ builtins including a full TCP stack, `eval`, `read-from-string`, and native hash-table / hash-set primitives**, binary heap-dump portal All three share one interchange format: **Scheme source itself**. An S-expression portal (``(define x 42)``) written by any implementation loads in any other — a 3×3 producer×consumer matrix, 9/9 cells green. The language *is* the wire protocol. This is not a property we added; it is what a parser has always made possible. We report it because most systems forget. @@ -351,6 +351,8 @@ Folding only applies when all operands are compile-time constants & the function - §6.1-§6.3 Python internal (tree-walker vs bytecode): ``make bench`` - §6.4 Three impls head-to-head: ``make bench-3way`` - §6.5 asm native hash-set vs portable Scheme hash-set: ``make bench-hashset`` +- §6.6 asm naive GC (bump vs mark-sweep memory): ``make bench-gc`` +- §6.6 asm meta-GC (arena fast path vs naive sweep): ``make bench-gc-arena`` - §7.2 Cross-impl portal matrix: ``make bench-portal-cross`` - §7.5 Portal save+load timings: ``make bench-portal`` - §11.3 HTTP server vs busybox / python http.server: ``make bench-web`` @@ -469,6 +471,80 @@ The layout reuses vector tag 7 with a negative sentinel at offset 0 (hash-table: **Reproduce:** ``make bench-hashset`` (source: ``tests/bench-hashset.sh``). Asm-only: C and Python tiers supply ``hash-table`` but not ``hash-set`` — the speedup shown here is intra-asm, native primitive vs Scheme-level implementation, not cross-tier. +6.6 Memory Management and the Meta-GC +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The asm tier's default allocator is a bump pointer: every allocation advances ``%r15`` monotonically, and nothing is ever freed. Python and C tiers have garbage collection (Python's host GC, Boehm ``GC_MALLOC`` in C); asm doesn't, by design, to keep the 6,645-line auditable surface small. Short programs finish without paying. Long-running asm servers leak until the kernel caps them — a real hazard that crashed this laptop twice during HTTP benchmarks before we wrote the six-layer safety envelope into ``CLAUDE.md``. + +To measure what a collector would actually cost, we built a second asm binary behind an assemble-time flag: + +.. code-block:: + + as --64 --defsym GC_NAIVE=1 uncommonlisp.s # collecting build + as --64 uncommonlisp.s # default, bump-only + +Same source, same tests (137/137 pass on both). The GC build adds an 8-byte ``(size << 1 | mark)`` header on every heap block, a stop-the-world mark-sweep triggered by bump overflow, and a free-list allocator that first-fits reclaimed space. + +**Control-group numbers** (workload: 2,000 iterations of build-sum-discard over 200-element lists, i5-8350U, 512 MB ``ulimit -v``): + +.. table:: + :widths: 34 18 18 30 + + ================================== ========== ========== ============== + asm build Wall time Peak RSS GC firings + ================================== ========== ========== ============== + bump only (no GC) 1,097 ms 133.9 MB none + naive mark-sweep (``GC_NAIVE=1``) 1,431 ms 1.1 MB ~200 + ================================== ========== ========== ============== + +**124× less memory at a ~30% throughput cost.** That is the honest GC tax at the naive end of the spectrum — the number we had been guessing at before building the control group. Every future memory-management proposal (generational, incremental, region-based) now has a concrete floor to beat. + +6.6.1 Meta-GC: Arena Fast Path with Mark-Phase Verifier +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +On top of the naive sweep, the GC build exposes a Lumbda primitive ``(with-arena thunk)`` that takes a zero-argument procedure, runs it, and attempts an **O(1) bulk reclaim** of every allocation the thunk made. The decision logic is a three-way policy: + +1. **If an implicit GC fired inside the thunk** (heap overflow forced a full sweep mid-execution), the snapshot is stale — skip the reset attempt and return. +2. **Otherwise, run the existing mark phase** with the thunk's return value added as an extra root, then walk the arena range ``[snapshot_r15, %r15)`` block by block. If *no* header in that range has the mark bit set, nothing survives — bulk-reset ``%r15`` to the snapshot (one store) and return. +3. **If any block in the arena range is marked**, the thunk's return value or some other root reaches into the arena. Abort the reset, fall through to the naive sweep on the full heap, and return. + +Free-list reuse is disabled while an arena is active so the chain stays pristine for a verbatim restore; ``heap_alloc`` enforces this via a global ``arena_active`` flag. One critical correctness detail: after ``apply_proc_raw`` returns from the thunk, volatile registers contain stale tagged pointers into the arena. The conservative stack scan would otherwise treat those residuals as live roots and trigger a false escape on every call. Zero-ing ``%rax, %rcx, %rdx, %rsi, %rdi, %rbp, %r8-%r12`` before the verifier runs removes this hazard. + +**Meta-GC benchmark** (same workload, same binary, both phases in one process): + +.. table:: + :widths: 36 14 18 14 20 + + ============================== ========= ========== ========== ================= + Strategy Wall time Peak RSS Full GCs Arena outcomes + ============================== ========= ========== ========== ================= + Phase A: naive sweep only 932 ms 1.2 MB 200 (unused) + Phase B: arena-wrapped body 945 ms 1.2 MB 1 **2,000 resets / + 0 escapes** + ============================== ========= ========== ========== ================= + +Phase B reclaims **205 MB** via O(1) bulk resets — the work that would otherwise drive the mark-sweep path. Only one full GC fires (initial warm-up); the other 199 pressure events are replaced by arena exits. Wall time is within 1.4% of naive-only on this workload because the arena verifier's mark cost is comparable to the sweep cost it replaces. The advantage is not raw throughput but **bounded per-iteration latency** (no pressure-driven jitter) and the observability to prove which path actually ran. + +**Escape detection**. When the thunk returns a heap-allocated value that the outer scope captures: + +.. code-block:: scheme + + (set! escaped (with-arena (lambda () (build-list 50 '())))) + +…the verifier finds the returned pair's chain marked inside the arena range, correctly aborts, and the naive sweep keeps the data live. Tested at 20 consecutive escapes: 20 escapes reported, 0 resets, ``(length escaped)`` = 50 after completion. The fall-through path is correct under load. + +6.6.2 What the Control Group Tells Us +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The meta-GC makes three memory strategies co-resident in one binary, each with its own stats counter: + +- ``gc-stats`` → ``(collections . live-bytes)`` — pressure-driven sweeps +- ``arena-stats`` → ``(calls resets escapes bytes-reclaimed)`` — arena outcomes + +On an arena-friendly workload (transient allocation, scoped lifetime) the arena hit rate is 100% and the full-sweep rate falls to 1. On an arena-hostile workload (every iteration escapes) the arena-stats show 100% escapes and the naive sweep carries the load, with correctness preserved. The *policy* — decide which to run at each exit — is ~370 lines of GNU assembler; the *mechanism* it decides between (bump allocator, mark-sweep, bulk reset) adds another ~300 lines. Together they form a concrete floor for any future memory-management proposal: if it costs more than 30% throughput, or buys less than 124× memory reduction, or hits less than 100% on arena-friendly code, the naive baseline is already better. + +**Reproduce:** ``make bench-gc`` (bump vs naive sweep) and ``make bench-gc-arena`` (naive sweep vs arena fast path). Sources: ``tests/bench-gc-memory.sh``, ``tests/bench-gc-arena.sh``. + 7. Portal: Feedback Across Time ---------------------------------------- @@ -835,14 +911,14 @@ Lumbda implements R7RS Scheme in three implementations sharing the same ``.lsp`` CPython (reference) — 1.3 ms 0.006 ms 5.5 ms — Python 3 C interpreter ~9k 20 ms 0.06 ms 109 ms 205 KB libc Python bytecode VM 3,678 149 ms 0.75 ms 437 ms — Python 3 - x86_64 assembly (†) 4,968 8 ms 0.6 ms 43 ms 22 KB none + x86_64 assembly (†) 6,645 8 ms 0.6 ms 43 ms 22 KB none ===================== ====== ========== ========= =========== ========= ============== All C & Python benchmarks measured in-process (no startup overhead). Assembly times (†) include full process lifetime: startup + tokenizer + parser + eval. "—" = not applicable / interpreted. **The JIT runs Scheme faster than CPython runs Python.** ``ack(3,4)`` completes in 0.19 ms (JIT) vs 1.3 ms (CPython) — 7× faster. ``sum-to(50000)`` completes in 0.55 ms (JIT) vs 5.5 ms (CPython) — 10× faster. The JIT compiles Scheme AST directly to x86_64 machine code via ``mmap(PROT_EXEC)`` & raw byte emission. It handles ``if``, ``cond``, ``and``, ``or``, ``let``, named-let loops (native ``jmp`` — zero call overhead), ``car``/``cdr``/``cons``, arithmetic, comparisons, & self-recursive calls. Functions that use ``call/cc``, macros, or complex forms fall back to the interpreter. -**The assembly implementation proves the language runs on bare metal.** 4,968 lines of **GNU assembler (GAS, AT&T syntax)**, **22 KB stripped binary**, zero external dependencies. Fourteen Linux syscalls (``read``, ``write``, ``open``, ``close``, ``lseek``, ``mmap``, ``munmap``, ``socket``, ``connect``, ``accept``, ``bind``, ``listen``, ``clock_gettime``, ``exit``) — no libc, no stdlib. A bump allocator with ``heap-snapshot``/``heap-restore`` arena primitives, tag-in-low-3-bits values, **91 builtins** (including ``load``, ports, ``write-file``, ``file->string``, ``portal-save``, ``portal-resume``, the six ``tcp-*`` socket primitives, ``read-from-string``, ``eval``, ``symbol->string``, ``current-time-ms``), & TCO via ``jmp``. It runs ``(ack 3 4) = 125`` & ``(fib 35) = 9227465`` correctly, serves HTTP at **2,994 req/s**, and survives indefinitely with flat O(1) memory when the programmer uses the snapshot/restore arena in a per-request loop. +**The assembly implementation proves the language runs on bare metal.** 6,645 lines of **GNU assembler (GAS, AT&T syntax)**, assembled with ``as`` and linked with ``ld`` from GNU binutils; ~22 KB stripped bump-only binary, ~25 KB stripped under the optional ``GC_NAIVE`` assemble flag. Zero external dependencies. Fourteen Linux syscalls (``read``, ``write``, ``open``, ``close``, ``lseek``, ``mmap``, ``munmap``, ``socket``, ``connect``, ``accept``, ``bind``, ``listen``, ``clock_gettime``, ``exit``) — no libc, no stdlib. A bump allocator with ``heap-snapshot``/``heap-restore`` arena primitives, tag-in-low-3-bits values, **95+ builtins** (including ``load``, ports, ``write-file``, ``file->string``, ``portal-save``, ``portal-resume``, the six ``tcp-*`` socket primitives, ``read-from-string``, ``eval``, ``symbol->string``, ``current-time-ms``, native ``hash-table-*`` and ``hash-set-*``, plus ``with-arena`` / ``gc-collect`` / ``gc-stats`` / ``arena-stats`` in the GC build), & TCO via ``jmp``. It runs ``(ack 3 4) = 125`` & ``(fib 35) = 9227465`` correctly, serves HTTP at **2,994 req/s**, and survives indefinitely with flat O(1) memory via either the snapshot/restore arena in a per-request loop *or* ``(with-arena thunk)`` under the collecting build (see §6.6). **The bytecode VM delivers 7--19× speedup over tree-walking.** The Python implementation compiles Scheme to 40 opcodes (plus 20 specialized & 5 superinstructions), executed on an explicit frame stack with inline caching, constant folding, & peephole optimization. Full first-class continuations (multi-shot, upward) enable generators, coroutines, & machine state migration via portal.