From 9c709a93f91a71a6f865bcbd0888ef80dc4a902d Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 25 Jun 2020 14:35:45 -0500 Subject: [PATCH] Added boolean types and while statements Almost a very usable language --- docs/plan | 8 ++++++- include/onyxlex.h | 3 +++ include/onyxparser.h | 18 ++++++++++++--- onyx | Bin 195792 -> 206336 bytes progs/other.onyx | 38 +++++++++++++++++++++++++++++-- progs/test.onyx | 52 +++++++++++++++++++++++++++++++++++-------- src/onyx.c | 24 ++++++++++++++------ src/onyxlex.c | 8 ++++++- src/onyxparser.c | 43 +++++++++++++++++++++++++++++++++-- src/onyxsempass.c | 3 +++ src/onyxsymres.c | 7 ++++++ src/onyxtypecheck.c | 27 +++++++++++++++++++--- src/onyxwasm.c | 34 ++++++++++++++++++++++++---- 13 files changed, 233 insertions(+), 32 deletions(-) diff --git a/docs/plan b/docs/plan index 649fc86b..c7f8e803 100644 --- a/docs/plan +++ b/docs/plan @@ -57,7 +57,7 @@ HOW: [X] Numeric literals have the minimum type detected [X] Foreign imports (functions only) [X] Comparison operators - [ ] Proper boolean type + [X] Proper boolean type [X] Conditional branching works as expected [ ] Simple while loop is functioning as expected [ ] break and continue semantics @@ -84,6 +84,12 @@ HOW: - Changing output location - Viewing help screen + [ ] 'use' statements work + - Adds '.onyx' to the end of the file name list + - Only searches in current directory for now + + [ ] Output 'drop' instruction for functions whose return value isn't used + [ ] Devise and implement a simple set of implicit type casting rules. - Numeric literals always type cast to whatever type is needed (very flexible). diff --git a/include/onyxlex.h b/include/onyxlex.h index 7c502c76..29c1c73a 100644 --- a/include/onyxlex.h +++ b/include/onyxlex.h @@ -22,6 +22,7 @@ typedef enum OnyxTokenType { TOKEN_TYPE_KEYWORD_PROC, TOKEN_TYPE_KEYWORD_GLOBAL, TOKEN_TYPE_KEYWORD_CAST, + TOKEN_TYPE_KEYWORD_WHILE, TOKEN_TYPE_RIGHT_ARROW, TOKEN_TYPE_LEFT_ARROW, @@ -57,6 +58,8 @@ typedef enum OnyxTokenType { TOKEN_TYPE_SYMBOL, TOKEN_TYPE_LITERAL_STRING, TOKEN_TYPE_LITERAL_NUMERIC, + TOKEN_TYPE_LITERAL_BOOL_TRUE, + TOKEN_TYPE_LITERAL_BOOL_FALSE, TOKEN_TYPE_COUNT } OnyxTokenType; diff --git a/include/onyxparser.h b/include/onyxparser.h index 27b903a3..f9dceade 100644 --- a/include/onyxparser.h +++ b/include/onyxparser.h @@ -12,6 +12,7 @@ typedef struct OnyxAstNodeLocal OnyxAstNodeLocal; typedef struct OnyxAstNodeScope OnyxAstNodeScope; typedef struct OnyxAstNodeBlock OnyxAstNodeBlock; typedef struct OnyxAstNodeIf OnyxAstNodeIf; +typedef struct OnyxAstNodeWhile OnyxAstNodeWhile; typedef struct OnyxAstNodeParam OnyxAstNodeParam; typedef struct OnyxAstNodeFuncDef OnyxAstNodeFuncDef; typedef struct OnyxAstNodeForeign OnyxAstNodeForeign; @@ -60,14 +61,14 @@ typedef enum OnyxAstNodeKind { ONYX_AST_NODE_KIND_EQUAL, ONYX_AST_NODE_KIND_NOT_EQUAL, - ONYX_AST_NODE_KIND_GREATER, - ONYX_AST_NODE_KIND_GREATER_EQUAL, ONYX_AST_NODE_KIND_LESS, ONYX_AST_NODE_KIND_LESS_EQUAL, + ONYX_AST_NODE_KIND_GREATER, + ONYX_AST_NODE_KIND_GREATER_EQUAL, ONYX_AST_NODE_KIND_NOT, ONYX_AST_NODE_KIND_IF, - ONYX_AST_NODE_KIND_LOOP, + ONYX_AST_NODE_KIND_WHILE, ONYX_AST_NODE_KIND_COUNT } OnyxAstNodeKind; @@ -167,6 +168,16 @@ struct OnyxAstNodeIf { OnyxAstNode *true_block; }; +struct OnyxAstNodeWhile { + OnyxAstNodeKind kind; + u32 flags; + OnyxToken *token; // NOTE: UNUSED + OnyxTypeInfo *type; + OnyxAstNode *next; + OnyxAstNode *cond; + OnyxAstNodeBlock *body; +}; + struct OnyxAstNodeFuncDef { OnyxAstNodeKind kind; u32 flags; @@ -230,6 +241,7 @@ union OnyxAstNode { OnyxAstNodeNumLit as_numlit; OnyxAstNodeForeign as_foreign; OnyxAstNodeIf as_if; + OnyxAstNodeWhile as_while; OnyxAstNodeFile as_file; }; diff --git a/onyx b/onyx index 0a10774a060fda1613f33dedddd8a4a609b13473..e335e3561697b6305fb1080a3daecb34eab417b5 100755 GIT binary patch literal 206336 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

hcJ7+G1#K*@V=g+GbAc$KX%$0BwA^}xdeDPb zqq$bhP@qU*wC1^uQoj05f!|QtEhujR?O}e}3_g+eo=UsL&~EW&zm~%3N|*x`nD;yV zi1d`ONZ(rp?St|QI)&eJBr_ygwK|hA(~8ZSWKvf&m!NtK+Gc zW$bjqg~C5W1TNh==PpYGb=#{-SuE;<0@|o5_0cd;W4ZR&3Yoa6T{D|Tlf64fmp%s- z1Z4X4w>+6HLRw^s>X_vsg^Q42@T%|?Bp7ij)F6S?Gg3GS3C4>G$0ETHQ(*!UBEAEV z7(vM1NHB_9*aZm&ehb?p!KiYf1PS&ao2*~4DY|4DCtbrV_~(29vxA3#$VR$$g%+t5 zo0;Xes13|66yc8(L`_M-6)mQeVQDhR~g4(J0eRqa$uue(ojO-%+0g{1E^4BRvMHc6mz8^ zdeDfV-O$D;Sne6w15JI6jQb%qQ?alK@C)F=dy?@sL2E=nnbE_P;UUmlX<}z&L{DYV zx3W03G`~=nSSc8bkR;U9Ewyx8#6BP|6B+x&iM_+FmeD0sw6?66TtA~r4pxY)sKz7f zf=8C$3Ggf`=fYd0vj0J&$+b1^773186-ICeTUy0&PurS`XcPfV@1QF$RH*r4Ob3Q- zR5H^igPz9vPRBulu~S%{c#<$1;|wJ0yCcyh8Dh&4C;m`HVWB17^uB4hAHx5DrvZY! z7WW1$63DxZT>!#YPfXa#D=DVn7$L&wON zL0}`}0*@1|SE~IgG2M31e7Q-Jl?tX^R%UXt#*ue3pe?q?2i0vY6KeiLaY14&uGe+6 z@|p8vm)C8V>>U?fG6u-`pP3qD`i*zdsZ8+$Q^YTC^Vc~jQ7TzrjZiI_V$(IXJK2Dg zYS*Ym{K>4rt})$aB�dkQDbH#$#+oad%uCA-7xO#JzO0v(y>b3ljs$)S?r zOnqbF>^e--5V~Wyp`go<2Cj@#=1U}xUUqT|Z6<&hb)2i2L>q2b<3}~@1pDri?(9ZQ z-6biC9$Y&>2lZ;eP7XQ`tGJB7E<}aSMFn&$^=|3)Bv**djt+B*7h)O!0S)!&o^g)|(iC zOa_?(#|av6_l!N>CU7FB>5!w<9(zN4S{rK;5lF+%uw?K4(WNb5C*ahK{gda^j6&LO z5g{HE+`zn4SOCJNCsI&KUz`Oq;u#DySqkKG%>8oeoS+XOi0ip>5b=l*g)IGi7VI7> zcunWNZjEv#>)*fvkyIf|-LxEy;~Fzg zI#!VkyFZ+97SoaKG>V44Rx`Rb(#9BH`#o_64X4o0HYPJw7fYH9?9-SOeQi^|mzMXU z+-ki-akb;SBqlMtie4l+{IPQ70h+>qr3&cDf0tEQS1lM0qbb2gv7DNKwK~9w6c}}q zW#^mpCOE?->zzm)TShPn9^IixK@bc8l}aScfnv%8QzIE=aNZMd6W{DYfz1wUCw5GH zm)TYHo7su=jB%jD?x@oRGE;o{F|u@kI4P~KDI#oCMWA;UM4+y~M;oUb zvOWphd+9*_pG3CvM0>0US?0wA^59%Z+P3x*zQrht86fa0WM8(XeMF1Krg_)G*z{={ zTcXWdn=T;%s(u>@cgk#8%5sVQ=+fK6NFx2i1hFxn(&X^lUR5TnicM0QFb`R($_$#A zi)9=EhQrl+llI~aXux63(3BQEG-umQf4fD zdvO%IR;e`FosYG7VWm_D7fpk8d$BZ?7Pwb(5M)SAq~%+`zujr3Zz}^%fH zXj^0&wC23VE^%%b)T(?jD49YLFZ5O7RmA_MgWs!!!zJnj9=Vg&f$10u7+nuP2 z$s=9&Rj(!V#)NzMlwt6R@zg)%B=1=q-*v`Q=Xa%QpVJe@Sl7x* z>4|u1XDnr>WZXLG+UI0n;Ivn9VW#99Oe$OsY?|9Ln=bRE%YEqzH|;L|XT=w9XapET zvdMqIxCjS~jo>glE!D69`U&}L&O}s-XK>b+xw_0B)_M{LHy|eAhBqH3PVrYL14NVy z)#&CTu->>5+iQTNo9lHtY5^R7wasP*X*TO#hr8wtZAG1QZ41_K+>B_ZmYS)sO$pWo zUGhuCiEo!hx)pF}3n$Eo)?k^Ckrhu%e*mH#HGw6dedhDZhEB0Okn?#}Fjn`x5<+Ts z?tnn-A*5d2?g9_^GqVzgs};*{y_uHBo#o&c8rK!CaE{ah!M8PhV0Q1vLD(ZH?4x2m z;_o;RN{{t-dLRjK!S#%PNE?3#wR0>0HhIyhwkUBovS!o086)YK#<=FMn%^$@_0$YAfhDB1!L&4p9<&152DYz)sr!@&2)U1?<4qX{=11_h>zZ^lpGICI?t!fuO=Gq*70sUwAP=KGeg#~2TT z#+eVcL;`Wzb^jK1q8punNQZz+CQG5_=#mcjD$*fywxCkjViDhdE2@WVA|&EH zww$|CiuefS2(ksYN5wkpt{1T~Mj}xbKLa(Efl9aM#!Cx zkd4Aly#oTd>7};@I?SQp+;8x{KuIQOqi#$t!gBV=UD8c{e7rb~MiL0$L znrnwR1m938yD0iHvU<0IS}Ul{WyDD*YBqwiFS)u|1#lMdz-r{Q1J{403~nfxgm02c z^oWbV?Y%xI_7et(b+?aU)$TOxCXt2-A+%{b2hlE2G)5(RSZxF%Wf}}~cda02o>bG> zt)!o@?zz7fPAl1ic)A3AE?G&(*7%CY-pr)+U~I6Q+iOaae0Q^ot}moeHPMyvWVjrd znGP5fX#jzFkeNLHRC`K2naoz{4K|2EiOOXr-mHM1bw|nI&-q(0GMoU|DCR34_qL zb9Eh`rgO)dT7$OyW%xE&P3DG>46D@;fB58Kn3|V3ppL`KKiqZO-t}ev2^~x{(Qcjq z4(wVQ(HLH>hpMn1RKi{|u9S z+<{&H+3a0r!av&iGdTi~^YOEgzQxtWv$rr7M9HLMrh%oLtlVh;JTTm!c-^ZftN>eB z6RZA21O4iCY62i=bR(mUguEg9H5eVIz(yV0C@i71`e%d#7NBFUCEFRHcZ+6(pUZ;7 zp~wM0kb2sGshsMu%Ox(RhGh-&{TUXb;$Y20UT?=4+-3~x0^1PkSt|(4)13Fnshz6t z=UhL4)ZIza%sM)`e?yPKRhxC&ffh*WTvRAR5CU1f=?XBnq%?=;Ii2q@)W31{tsNwQ z+Z0J>XtH;w=+b|I^}tEZkALZ%)ZB}-J*iR1uQa{#)z@vgM;3lE1p#yh=y)`6V+A6+MQ6 z)qMdL5@`wMBRNLRE7ksjj4XzHV`F+ z$L>}HoBlTT@wXwUUK=6Q(b~qA^|(@JIB*`Ywa4K24nV+|`7Y6=B|r+8`CiX@X1*iR zYUUZt)1I)#WAMo&l7C)oHBi_AZe$6{Kiapj7|PMYW!B0ABHGQC7q}7Y3CizXxA0t9 zI6Q`)g%JwbLX}htT0|+?MRSqDUVVx3{9g<8uDNUUm9CSA*AWzEqD2_CyQ(|@Uf^mR z0uaEmgmihcZ<(3MyD@v0v1Opa(y+{yNd=8kb!laBhP$yW;jHD`?#=!_^JPG{_wf>g z8msJ5$4W-K4Nb+%kw=3v;~fB7(rml)E!6XDLKj=UaX}Z23b5EC3n;a1$Lw&ueFTtj zsu4O_K-qJ)WHFD|mH@`k!&25~E&i91!tyMn>{{&WbdV*`$eRr&>!1+)U5yrdIM9aF z4M&i>ZV#TAiV0dijzurwI!w&Nej~&tLsCQD0wGy7En8!x)QB#*0~HEendf^#J#GZ0 zAm`BrzUl(tZt3l520__8kPU02cs?k=UpG)887Ak_P;T2<>j}~qz4{TXhMbU2=1x_n3{J?L_e;YG{ttfZihCrleTL@Ykq$RZ2 zUn^L8O)IC^RuCHuwlWl>>T+KzrP0T$N|W8CcnaaOHD2sC{#$Mg*~P~J(xw7~>v*8{ z%RyonAGQ(rnV7k8a(JazL5>YsiiIDW`lHs=@es`eq~m^tl=>7jfY@-)#fWW`;oKX- zXx(mpjgA@OxXtTWIoifdAh$y)a+?MvIUg*^Dc{%SE zLBfTTEk#%m6nnI39R%Pa^f@`qjH!6qeb~deo8^YofL#u_361b=ydFaOnK8fHr3l9e zopn_{_<-$qJr!=hnYWDCmAI+TU5VWGheiWt!|&o49ENgS9BA0pKm~Bz6(*#+Ku6?I z*c-O&$jDF9k!YWeyjEg5qV83Y_iy_7;>y>BfJ!GA$Dd5Q(3W1I7@n9W{c*=X4F>X* zS;nLjU4zXqrx`}_zt^!ZH#3IR4MLVopo#v-Vn7(1`-pdUII3?oWWf_f-^uZ5Smvta z2uxR~p7z*!5QyY|jQ^QQ8aWg(8S_8*wvSOGq!1V=-_jMB;0mzYYqYn}1;c#ROHUk! za^TUFIQxViq~V>L2--!Dc&4j5`2m*#8r3}b?xs4Lf%35!ehPYLT6(*C^uV8MVM-fI zMs1+6fv02irN5~dL(KG`n{z&U@SxhWxFln)8%z519(KKcv^13&^AH~Sp^)>74JP{O z@x}ta+fDfjs9+S_8N+T6AGbY#AJ`py8=iWe5B`MU+e03CZbl3tpL2mOx-QHB-Sym; zcewztyO{qhEzgCBHhkX$gI52G(5bl55wz;N4b_4f{DJO|cDG+aaTR!DkM`!Zk2h*% zw!IjpwNf5M%SlPHu3(=p?|+pr;|CkJW^^Plex`ti9X}IDRv$JD zNdGbT--XLUqW>8#>=s~e0n98M;zCsjcmhM=<3qr90`XKyp!!sB2gkLaS-{<1*pWKM z8>x17>p^_ZR~P=YKin?Dw~qV0TDu!!t`K|Wwqq^?&-vFUc=NJl#<~>0b}8Cm9&>_RWp0AF`N+J47G=XpCxV6L__eyI#yl{9 zD5#Y!-X1;jNw!C>oh;ta!w#jME`v#=9%BS0o?1Rrelm0MgX=%M)G;lUS%4qxC(5Ja zVvC~VsT=a3xkX^^}P-&Rl|diiJG zMNBqSNU8j!my-uZWHSnlAz2F{PbrC~&OkZ_bD2`s-cSiN9u2k2UCB!JA``0sv56#> zX{g~(s-X%$=?3YS_e#M1w#TH+VV_`57uFU_5RU8apW`&4*nugrky_qb7r^ z9ZZ#GQAln0Z>e-X*vIsYXGWVY+yY_i=s=Hn)wnmFnO~v6c$xmXPGZT)d^-hSt@F_e zyNXV_#)Jn^QNqcfW{)u73cmYU=O=$mo@bdBVzhDx{J z!$T(OEbW9^iizlHbZIeK4XjYdgT7s%jzrpecug|*aNjx(RnoC#_HC1xlGGR97m~}5 zL?OuoTaNj#5NReY@8MK9%Y?0qUA7j@H}#+iR|-eE#TTO3zQ~DE80(gtgc82kDIIH3 zDP$&(b_@4cs=eSwc7zy9Vqz7>bHL4ZOk-|)?LV_pdiN@}hs#<<>W{c3uc0IvdkF14 zWTj5>7!0;k_qwi1k(WX`(5wa{yOWDBI8S zJV}v45+IV1z;`_)P2Ww8=*;(Sryvd(6x@fZ_kq!SuQ;|gaS*9hp=$V!r&x)IBw$|bjep~Xo$77Yd-}* zM84!cUy<9%J6S2EB~2c8lJvM6=C=H=D~voW{Ti>XC%Va`dW2V^BC7zvHAuE#)Db22 zHXgR|?Fla5i5zy!~Cq%$Pp`e{QMN>lKF?c5+A7}TvFvA)gOEF^@$bqgOyVW3H)wP9Y95_$BRta0n!C{1!#tc(3bw`8U?`4pOb z$~O5mxA6FIlcn0rJF#gry;NO%6ND|m)x|t+EpKvJ=1?$W_bikI;HE3bC|x^f>ZX8Z za7^w@n)`o(H?`@O1kW=puHX0!xQs3xCT<4btldC)#52W1u{*M^Nw4dgWQw5t*R;s|a!sE?_zX>pUe40=iG-h|=@XbfM$=Q7K3LOLOz*8}(fdxC7TXYa z0dLYL&L*z9nPSd_`S&$_B-3we`Us}~;KO;rhx4ot=Lt=VeLm=ef6s@{cZ1osmTLMa z(!a?Eze>~6?kr6U%`a>EaN?ipgCFO^Kg^fj&zIiShac6n(Amm|^AQ)zOtG|8(6r$E zS<{EH-Ismvb|3yPG%Y;K%e*qhBE$Q9@Vk6<)0!5V3pITx>0j%EU*f|*&zC;kmpmRY2p7FO-s8!*YqLm z%a1fIb??@+)V*EPQa9;KU+=@YT+>o_hNi_n&+?^D(zNi8N3_Ym@GK7^8$Ir=aA|iZ zO-sAmXj*vQq-&qleP7cuF5cF(jH5qjTE^WAnwD|;tftRoe-UgZ4>IpPsObv`|DL8V zX8KM|U&i!OP0vRfk(o^K4NN4ExRr@3kVrEz3yEb+oQuT0Oq_wl{Y=D>_$d>7PV8|e zjzHoWCJscRgNc2Rc!7ysk@zDMJ0MYDg0FY@Cle9#W=Ru_(W?d}^7_ezV6t!(ypLXm z76JMtW_cF^cf5wT2?ibnG@z2iq_$gFiHF>#($GGY>WNY2t2DgrW`gwck^eY2!826YEQKC->WpWm!)YG?KQ1RTd|vDQ)6fzEFYdc*OUa}A?%Lbt3nOSq&P=@q zgO5NB`m#>z{L; zv4>kU_#V{lH3t8){V|ph?Uj+>FL+>U6yWr(Pr*V=hy~m|=u}&$s`rqFyPqx^kem;QwLS_ z>sM^CqSLh-`V7}SsXM&kju-bwAV{)OUVV_6uq~Db1f#~_$C$sI;nJ5*@gC zk~2@gwqb%Phl+DDOmt2gH$vD0$eX}4)9(b9GZR?<_}&C|=qZB=<(HS+R%HV78r*^j z4DP3IxT8-Jn=SNR&!#H(_K=Mow! z$AL;nmxnGP))gXltr7!Rh{5{myL5SAU40(yL^=!_L2=g$ulIe{i!BxRv++U2ea>aJ z)lV*Nj9YRnT?mR5Lkm}Mxlne8BylN1iKqjxNTM5(z-?SltfeI6iM14Xn7(|gE<}RR zoLcB^N(^(85c93N!1`Q`w*I6+rC5sKjq2``OK}@WkwdiV|9IK`$%%t@Y4Tj@672tz zI}*WVmqW<4XwCFHfo!P<^lofW#+O|3=^4jf%{PH`m`M>lyN=#yZgB_l(mwr4vHReC zYMo3tP%JG*k{`6|%#PtOXg&hXx_=mG>tDoGk>{RRRaQgF(G3sG& z0dIE??J6uxyrdp<+d9HG;-;6meMQ%5@rEpMQ%^6zNqRi>7%#%$cFbJb|})no)0ER)y-)Uk}g8meO%l&0#K zc^}lFajFR?Ag%*-%*2ngpmFo+SRnTXjJ42)`%%Z)isOpEAF1|P#Xh+@PCFKy53G*= znIUpiCO(xqmQfu$$_oWHJ32o6uBQ&Z9nz?y3A-;*N7F4#KpjooCr}+tKd|a}5sF#4 zKu5=8_li1R#E+A|ZS(5Li+4J>I)14*U$8o!nKY<6&b;8Ws-ubOSh|yt=`%W_OTP|r z1}3cAAVWJsZlqZC3T;4@8VwwRz}|@V*gc4eL<)0|n8(EVW-hgpVi0!`Q84Y@vycfW z_MYWTK(Y5=bm=(j#h_YwgDUn7JduNO){7sf6b}xvjbGloj#zQN#%-5^Kk-Zb;Y zjI+0n2Im8hvm3rD8u<+4>>eui;W0vHOBDMeWM~!pONw=Kifulb8i8V)u}|HMVw=w< z3KZLX786ix^Z86bvCZ%bRIy_*!dKp;irwlv-~boR@Z%hr+`M9sl;i!u6+23CzTgqN z?NQ)-V8u3{i(|1e0=|J--LC;1m7^8s z3s&smM}qT#726I;d^W}2PsMKBUdU{TVlROVtzyrkSU0EGmQ$$_jMx?g@;0N`mUD;# z#kSNk0mZgptr5kxVCSKVod@t|s%3D;i3*cKpvCHt|JXG&jTK|fDNWM2Q_*C4e zIA5@0Z#@j053JZRuS#TK38 zJfn`*3#~ee?}9pb3WJ>e!v%xY*1D`p+K0`GVE){vqIeV0GLE z*Wk0Mqm}CT1;R0Ie|_UDq>gVves+v~4QZo}6^Is#I#!%%)Ug7dn2e4U7g=>&2UV_I zr0O{L4%E#|z79XmH*WNcy8qGf4f$lm;G^R*#rcBOad9O$A6Ok9!5%-GI#y5}2Ox6e zsY5p1#e65lu)6&VHNJwtKA;Up;qrB=wyT)Hry7jF?Bi-?Z_#$E(M{W8tDD!M%az|y z-K@G@bn`lXoc9pbamfs@J9tk%H!!$vo>!bNST`L94XT^-YCfxO+NhhX922^t#nUUX z9NyJg9Bp`l0<>Q07Z&esMt zyYl{2U1fwSziK!iNXQNQzf$0ygZF9$HWHt$R|qI?R)Le`YY1Po0*@F!r~-e5tyuJqU6kpNk7rI15uur+qPysH*f4lED+ZY+MQ*uZQ9fryFKoG^2GsZJO$E?QcnmTqZWZKx9S^Ll3*<0#-^Mgw5Y4 zOZvddSqI_gWy|L(hbOf>hpm7RJ8)}MPIL$GogQCL|4NR0dFiGDw?jH2iRTOjr~wbe z>ZcfzxvIE6Aaf{opsCnXZoj@T;oh+Cpu!yqr{85_^TI9aN!LErXB1$2FQcF^8J!lN z3jP$IkiM$HKGL)c0}YvNk4(Wu{a>mhGhtU00%rz(oYV0U$80vfcx@J>LRU&4vd!N5 zI_xi^0$%DV*C9m<&`UlX2JNv|Kp4ZRi$5socCYQaA6=FY72+1pu3j;G?Zik^H-De0 zX>R!9SkF>1F8M1Qs`7PAB~>CHSTQY;6pjR58A6=%SXbzjBu)>~sR9n>ib&x|56*kS zh!UA9Lxm2e*oeGs!qORzip2l|&*|Ga$8gQgnPSs9k%;Y_MPuhYG@fO2xt&uS?VN{0 zrn=nDSsZrG!>L2(y4=ngxb2*6nsnUGSvu%k7dyu*Eweh(u~*`=I^+1fdr=OXSNVU3 z?{Tenm&gV;6?+38s4I#tc~r%ci~FwhXr{k&Ts#h_mzw*>_l|G(*bCAgco+F7CR=nL zR5-5WAwxYl-hzYMH?T+P=XMq567#APdF0GX1nt1kuV&8 z&o$F;&$~^}`^WcszR#Y6_WTK~LfWeI+-q>NJ#UXhp(}R1yq{U14R=3VaXJ5t7uY;I z9BW0-I7fGzkGL1i*Y9*yJ+>2X*jNp;F1#-mYe8*S>er2>$yg^}o<+7eUz^)}?S8a% z5#F^Vaao=J@d8)p7yKB}$7^3`EG1+e=M|Y=kZTiuGGiWo9&cx%8FO)e5UvK4#ODKS z`8WLKGvG&Z2l`4LUt@)hcj7C~$y|xPgAz4hK3E_0MI!s`A$`ZP%z*_SZ&%DjA>Ii;8cG86VjQ>g5mdZ{}{R@$rmWT&#<+YI0|GriJq+!x=og|e|E@4LiM zBE5dyd@%gMDilk<=X=!pUSHS>!geD%PBiHRJm1 zI_Py>?05Kk6@Rbsdp>pnS;PsoyNJ*1Kfn&BW1s>p^?mL6RhL2T`i(=N)HdQ0ca;jv zIRJsCRP6rtSO-Wz@%N`6b??u?g7p)nD?kY{Bg*i)>p8HO+4jK2(z&*H z(XXSA?=Z15aaf3xT!@o*C3FyLjXoYxF|^8v1e&%2&T^5&a(qOqwFv)f!~g2rwu*iO z3c;)hwP)mU7^q$@27M1~(-f`0$_9>>#nC0D-jt8CiwTbM*n zNoBrAtv`;{?}owPF@=TrI@Oq?bkP0|_ZBd8%o>o6J*U$GF`)%_p`ht?OSN>>Oe;c8finl50%s10?}>2C zE+G+?iKeXxTaFRF(a?O4T2O>9dCtu0Zp?+UhY88D8?S>ZEtEfpky3gK+~{w^+rsqz z$_@OPTy`Ve=n}keI573`YF~>m^R(>7`O>GJcd(ZFM~LvMiyU{tx$!I}W(#1aPMhg!}Jf zfxAC(m6+*(7`V(IZ^nTzq924RGr_C|g4rOsS9I=0a2`s4nesup>P2`_Q)4{kevB=P zd=v8J=3{Kl$hRP0sUKsjhKci&esMH0J&yW0&u%Yw2ke`YCT#U_bys2$I zOgbK&e$fiptD;5~R+pvDef@7*8=b23;;WDrz^{<0R|F3>(hAR4)@Js_RaC^d@=_Ww>!J>-j3!c zGC$JGmok5~I9`H}p0_&}dU*(?-MLTK2-2I*{GG^q?{-9$`mR*sl@velUX4#E#&Z7I zruUGXdb}BQP5U}?7Y;JKfRvq;E6q7Gf_Pt{J+=Y1z$bVqoisSF%>k`LD{p#{?q5^9 zDAtvXZNOVgHXIY{yqQj7j?O$@hl&@&9d5r5{>1sd7sFXbu}|m-afs?2sE!Bjl)A_3 zik-u}f)SYx9yuH?T`gLcH?vvjw*fWO#`E#LYVzZLuY5m0KhTX1zrM_LDl;I|xoRdy z2BhAjl<^Tjbl+oeR38SR24QeJTLEH$Bs1}1(ldqc9wvNtA(Sw5CFMP_Q$8uxxeBYW zw71AqCr0$~PS#cRU4nuFXMoOCtVrI@R$Q{(Pp=R8s!t0u(d!oY>CJt6-7LL^vSZCI z7auF1&GB@lEXeRepIl^G{mUWJhZc+u*};$}&8Wv@9;=1{0eWL4gw}a7f(n^!Z^HF& zyd1Fvbetn(L$Ed-TPtFH%Gl^ryf=zqALC&(KJa8D_r#&nYV)RqvnkQNDbckFugZoD z#*}#9!m7czu&~H2mW9EQge*_rG84I-4?-;Q9*I7LogNrDNshOz1 z${F7ws%%=$;;XxdTJ8|`IVzUBCd)~m=58C?C)Ajym$63PVZGcbOn7?PStX=;p>hKw zwBakCTrUiZQ7@+%4*Ju}kq5ha5!ck}#k!{b>1E=Wf%I~ir{$T{OTLLLKs8Xic@LT- znWfpQHb0On!h%$)--#d+l;cNw!62n09P}^+9rV{|i`p5e0z~ z9Imhk3n1A{8%~_Vt=2LaO>4S(8KK%*TQ3#RqBha0HgN$sz}qSV{4UvnP4~y|LUvN7 zmUibDaD^B}!zH5DT!6yV5CwBrL)kc5B}L(GN_1>W#nh zsmyO2(C;5JBa*PGtHAC=z1*<246dq4$p5dY}!JpFf@tvki0@hV=JzpelC z0qZ}E`f_p`@QzMasgPAL?@}!eQayh_s?$jo`+u2!U7zcHk5>r5r8+D~b@+f(hmdN0 znCiVARS40gIy^}A(d`D3;6vj;_2w|ula#7DgHUX6)a`TTme~dT+<;u)MO)MmH=rj( zmyU;<8hCo==F4HbcoR0J$T9PgmRpZfp{gW>I60hg8D-9!+uH8XJ@*^LA1g3dzO2Iv zTg70tom?q|t3AMK_n2yCF-2oK)&^{BK57*%H4Hw3+L1ZYD|60yrWwoHN5ayCeb1SpsQGB5OM}#1fRL|IfErq869Dy&N_o7uAADAGx)Ie0IZX~(@0TeKTi4% z`=JDjSJ)Z6jc}inJ`x>iqwvFKT7UW$iboa)_0P8!skb{Pn#TK++`;<_V-(XC`{$M0 zpiaO3`FQGqIv}Y+v0b>aLnV($3U^6z2`C9bFO#w)ZQooK!;Lh z!qiKM+3x(EZ1~^@8ThLLXVAe7Kv(gmc_sk*{ri1D2l48E5Nj14#14Vdi1dU&%drRL zy2R)fq6wLpmFQmE_Y+os6JKXQ*ss^T*|fJYwsBGY#+kPa!~bu*WhDMzb<4K+|G5i? z%V!#mFYUeTEY;H(`=G!f*NdZ-iLnn7SVsUE154>GGGN?i_>+tbt(P**94w@d>X$SQ zrUWgzDz*{wy#U@4+?A-wJ}%k108j1&(@sT`{A2X;Co?V4_3r@ zl2ckHi`JxLA7FVB*Si;`IK!1gYqT9fKU1*}lJy@%>b65$b;9vc5%2$V0f=L!(R;LF&ZQ)FJ`8Mnrlao}=s7vnJ1wSZms~xT|)IX=Co}b2d!S$gB`vy~t z`=K55X-XU1ON>V0j{9hr5?sbXDIw0-<#Cq)MaJQ3yOl$H#9@`$mb>f?A}+r9sBV9d z6N!OLmnG9F9Tw5sm=p+RJt3Y2M;`ODemlwoL$+14L0Ag!B|w&);26 z_A}rPL!inKz#!me0AusmxV)^4D)393V+Q(1tM8#fv@e`fDBZfL#A_bn(WwZI^Pr8= z;t2$U*f5@T&Lx<~lu>?18uiIt${rR1gc|lk+wE25;-$#u2w!5-&$JPT=`vJD8o`Nn z$krcjhJ}GkTgsyaM&cnIxy6SZtcgH=+=(Pg)FBc6{z3i>x}HcpCrIs8w8DrrdN~ZyCX7oBZH~#wBuYgj*?X$%Qt2iySSwEI~umRH>45mBwbM zJpAJ9L*_atf!QFJ__PbWQj|DbWPg23Z6m`}GA0HxwXjJ+NHV-R6SG}fnRkj&3Y}5H z_^T<^U%!~1l2;<2)H4;P%Z)&o7PHwB^B8bm5T@9MyPm*2xUt|I5nalcy2?BO^H^V$ zm(M{d!xT6e=c!_6d>lh&UAGu3c~3QlQaOr(9;A!3m@X9r<-{y|ZhmoQht>4fN8P$c zBrc-T%4a=<{#Y2U#&eAl|D^3-vzuW`)e&kN%Iw1I(*Ycee%T(Ka)O=HdW=n39{|&r zvE58@-H&0yI+;4j?uCu9kK(K6Im2Q9_^RU2Mb#fIl4f;jhJRH1Q6m}XPMbR@-7tCL zCRSni?+0S8Uxl%alK@P6Zd+xhEhrSagP-t0l}fBjT7D8`5<`PEUOzY1QQ4kQ_1T)VP4-6UOO$XxHBf_t{JfU^%l!2?}cxmXk<^!ui~KR z@>wLrEVgPaz6O|-0dhkci)VYeqQ>IsZZ6VTJPjE+B&HkLSbVfwRt3xhy&R~NdpWc) zin&bj2>ht@C3pHL2tsn2@z}XRA4qT7(a_G@+ z%w>wV!;fn~bQWMEa341Xe1u6H|JR=)LMh?cuiLRO35c)>(%A2-_<_(02Lnb!0c>Xr z+Z8Zzgfhh=Eo^ujA$*Bx%t_aNAagh-X_>=IWXu|t^ewH>NTRzvw$ZG0-RbI$tf_-; z94NUnxK5&UA&uK;T_z{&+SOaf2y{UKG0OGH?r5@i<;M0GAY&x`7ugS13-Or633 zNK66c!rn+!VgFay1qtcf_DD=+Q3(?$$|~1gD<6l1gmvktQ(Hxspw>wZ5osX4dV?8l zJWZrjFsy4-D(GTBprelHMIIZ@!kg8IXWF1TcW zIL@~cg9(ZSn>0RbfUmuBf!76B<^osbHS{$=ztit*`1i()VHt zHe#OXdPbrq*+cprP}%KIWvU*rvqZPvWKPC?#B>3+X64nIqN`gWv zhmgdI`wFHh&cmnxGW3x%~J+dnx=T_AU$#b(nI@@ zra1Z`PZp^((WuL~(dfhf>7VfjCT#)ZAE}^q|H7@nM9Xw07fddFW34T+kdH34KsY&UJv-v=J+n?^yKpb86!*f) z&;pDa4);PJw@K6?U5$2ekfr;!NBC5}y*nxQDRnPRc7l6-XJ2uI#gT^p*tt$@a7!6b zUhPh4aMAcJUaxUC!#ij-JK8kgWQEur?&7v$%o-uKJ1Oc!&~U9u74Zp}3*4H!=_rsA z;aY~FO32gQCX}NTiZ4-x$p&+|yxss%vmNkHLxC@p##4{+?j&w!;%**(KDSSl>i0xT zU@(F2iGuHbz9$;b=(j@6w?Q@9upjCIyMlbB%})m50)BDRy~uRIMBl)xv}=%GXIytO zv2ND`C}Y@Dj~p4{gh7hazCY%~@a$UT5&!>{(8e9Pr9$IE!Lj}qhL8IS?L!uamZay7 zaEXV7R{8~68UrVv#L_atj5Rnhf&L8cF=KGK!bC*EMm^&ijO}U6b=dS z#anQMD8_H^Mg;lg;S?hWDgH7w9M0JFOn4M!l&Fx{pP~pq?&KyXuv7 zFhgr6@R8-Y_(5!a@8~$W^@8s#<6FzM_}23I_}21ld~10gzO|gdx0dVuzKzUL zhveGjo4;jZTKj-dCG9;E<0MvrY&;`hLq@Jra+z}eq?ZdLY2_~6pxjAdc|7Z<%(t7( z&vHyMoYF>HH#B`17*Ef()*x0Ej*Y{}Xn5QcFz_i}Jkox{I~xIG=Um+CfZ_E31%LLD zJy{}-cfhOIq&hRO$30Pn_Lu?(ut&rd#Z(cfGV815Y4HYr&pECixyBM=2DbL}b6!GJ z`miFu^eHn)zlJ~hN$PkeBT7gw7cSDulO5l1->~!~b+LC~bb4ninOlfX%mq@qfi=*4iKY;g;l4Q4fM;Dc z<^OTfqv(cfEe3}Df#B~eOGE$Px*2&)D>#q)MdcQx-+w?9+S~tCde<2zu z9N#YKi-R5tZ&WmZqQX%RUB? zj=1F06cj$hyAys?0Lk9c#6Fgqp|UQrpbw-H1C%Y|$p|r@v^+dwynrH3A)&k5|2o(; zip3i`!8`1ph6B4N6RG9cO;B|-zmVfGkm^`NRmYU8I%))*iyg0aj>8$Esxv8~h|~>_ ze{`=DCZFaHy1#+!7zw(4uFU@h;B>}M?%VN?{u#%~Wy4odG5IwAFS?g(f4YDA6i@e$ zB5ia}e5-q=t?rq&x@X$zo@uLlrmgOo_UWG4fbK)QL%u2&+wnr*&PB=I?W0To1{W_d=--HYitj{P6pzNTyzq4J z^_cCrRg^$HK&Xnd6}$mFy+h^{>_G4;@U8jy2yw7|%<${Gwb^*;l#+C$G4>1!S`5?Z zZ|yUUrTMGDz~@39N7}N|RpW|X4uiN^8pConWh2LDtRp|{^Jz+t_8hFIPN=2V^bo5f ze-D?(&n`1<2{BL6As6sagAdYkWY>5N?Q?4os~BBb2@AlGWfZ*KYg$?jYx>+;>irxj z@ricx*u+t>=6Lip{ErXgOEAQ;Ut!p{4!>x_3A7rT>v)7f zlDVRAc&Eobp6$;o&1^DVH5yksZsEx+)41?a z7{eOftla?C3g%2gc*JT#VRzV|e!#eB z_w>>^%)mQDXu6-(9tkwiqtc^r;i@{;twBibVt0KFj)lNEp8y(+^F@E~4}%cr-2-rr z2|$k{f}Hz!Hr+kkf|OyHnaptbE%8kWcasP9w;f%yTWFZ>W-Kk_xPn4QP}O)QalJji zN!PDWSFd%?Z(wRuQqYlXarf3>CpJMf4y2ZvS}NSwoahWA6w+L);}$xohW2EUDc#pF zABrh0z~Sq+ z#xYB}_Kl+VqL1LB{j8VbnZt41#-RV!xTg;w?!3JeFXFx$qseIoABNue*c%*a82gw< zeA60($rCw*^-0uJ^>fMk=OWQ1d+Gw+W$f@|j7A(4@ocY41nqvTrSf%5YW2^ht6zZ+ z({*wxcXH~*YCZ|xDMEfv?#HcjegRh_|D2k!5LK%H=a_prfj*bnZODL){O0#)#NWa+ zUXeo!UFO9RUj=#WQ057Lu6UI?pChCc`S`0i3Xs(+kQMHYS^DuRtK1K;% zqvVs~xqGXYl})__qqA|~+8XpcVAvy7{fa&yo6K#6yNz4vtfvEAXT6JGVg{Gg71wI(7TrUk!X31_w(L~@5xOE$73xn@Yb{e(_B*pXyxBOd)WRP~=9Lb%sbc;cLqad)l2&D9E(! zj-v?Xfl}O~A(o>8Xt zx4HNIF8dwijfG)d?Dt@UD45$RDCv++rwo@QMgXHIe;cF#G)O;!TIeW}(z94M-m(5V zWL^sjIB(_CuyT6~sF<3ch|EdFUN`7NP!*tB;iH{Z#E)_}~`ZL2NGCyC(}QQ`WwuSfz1hi}jVfPr=q#2pKTWt27{%{v_n|hldB=1vpY%_)&D+XdeY9g9d?CMC0z;yVcC~j>DU|c#xs#O zd}6pE)Q-w`4sk?7K9RE+Pi^VUecK-9&Xd(y`)YVYo8sfprJ-BLLnrMmz;@?ztW54L zMGR_dXqf&uMvb9$xQ15rvKU&g7GnwY8JT(GgBj(#w*$+ffk7BCrv#Su7J7fYP8~&J zc8;3VTSOQFTY3wfqB+_n>1hNSU?=7-#vahsTi7rVL&Kvfm^sQH65IH+eLC=^&GyMS zF1M=1_1CSlKS{UV+D*DurghrasIoYu9q7I=U_b8;_H!n5*Op4Gz;FsY2!XI=I<~^9 zas|k?xvFe&Re8jVI%jBcaK3=*p?;3y_1b03&4pscTnJ!w4?Y_RN$YL6cP)~=oS9d4-YnOsva2JiGxT5MzwYp+mkg zCfssB{gnf%a5(Jbc{Xop;?8}iA>0XE{~Q!;I2|JedlA3`Pe$DezSN@3jq&;}^G*uy z;V^8R%z|VVj_8t~8+q}o$o?{Q2)SRP7dr&okzWEcBAjEm>$?bX(Ir?5GgvuM!f?79 zuFrC_DAK&!Ne}AHyk*}_G?GuL^iRg@GR#{vbTNZ~WhIN=x+6DW5RH5GZLS%mYM+CT zV=e4CxTf9G8+*mb++78{*YvVeeRnYlbXT?w&;{C|10fThBTu^aK(o{^Y|HN&0L+c- zl+t+W4D>zL<=&U;MGk-d4aOvO_W-RbgB91^L=E@)iZi~iv~1J zVZtOGS{gG)Cm2u|gkPpORb`mMqEF;RsUDK<4_Bb`*#e&|3AJD$%C%vk)KDye6Os6h zW&$uXvtH=d)>4-zbQa+lVbpX{1mJee_J`e;=YA+Px3o0R?Y1x;xcG-o!vpWJ?~{UJ zxO(>=Z3$eA&TvIcK#wuUyd8>x4YQiw(9>sYFWpM!py77ss`tcVd4+*N_Klaay8D}#v6e;9T=Eq16kmc!-8;K6vG^21A8_Os{*wo1=kKk0j5g`1c9CC z?bmXRmYaP(TI`c6|4Pj8*rGy+IBg8Mg?5a|eKmWyC>uFmSF+C$NjL~Sfh*f%dqxYv zgg&*Ta2BB)XPFyIWzN9SIpys7WdmdDm z4huV=yh)wkhIP+TFwV_$KUvsZQ>yxYJh#&5SAkr^3SL;lEBO%I=P64U%{QJYK9w&) zp${v!vpDhac2=xuip($m*Tl`=fF88twT-BlpP&2FiweW0JVmBK zC0K6ejY6^W=C9DVOmz z(j83oL>Ha+FN{A{_iK;IwDIy^_s}2p2W+ho-m2 zc~v45`Yv@EEzCPJdE0~S^GJ_%QK+#+)ar{85(=UI{UD3_HKLl9GOe`Dc%~lOs0JJ6 zH7wa?ZNCLScwEr1@aS>UMviUlK7~YTIa|25L}uecsdWw)Z-`M883Qpo>@?d zhUIh<-YO=eC*_`!cKhZIVOEYn`O3ERy^;h6chHPd$yRcjx|4$(RHQJIl}?#lx=~Ql ziv-17>YPogaR$Y<%}|P zIa@F@OstCR3$Z(V#F9B6x?O!h3Feewho4}!Q*$al$Oq!X%`VWC?fD5Z&l%yu6H3X= zg8bjK(sZ%8(zw_ScxZP{e*ueyyu>g0^w}tl@a5}z8-c>1%{_X6HKgkhwV_ZW`4bRT z$9QQ}j32oeV_$_NGWE^IxI{bYevJF?+&~-aef1@uOc!bQ4O?7w^N(`+$xM#9 zY~4v4Gh-@~$;o11G%w>?Mgh?M zxyLH;<6p86Kytpc8U#`eHG;8xx@uE$m?e>WGEzk|foSkroyiwpg-yfJYf&XLc{_B3M?E-+jrN$N>n} z@I=E`*zFd+jx~v)C_@plcnA9m!%}ov4tLVR`<6eH&=Z*x9lL~5iM$`(m0nG;hd9GuTH5wIrZU`v!|ps*2Xgjjs*CuY2*G4Z?43NqHcWkzqhIzd&nQ6V;8ah zv=olG{(i#$WA97gt0=O)yKg7=cADhoX5WC^Y>)_npn%AtYypBS5rTrU1qcuc36q3P zkwrm4QHdKk#sx%01qB2J#SsTw$92XX7hH!?9C6$o<$nKvRdwIK5uEpC-uK@3%_G0m zJyms1opb6`bye4??&?*4?iWgaZ^$M4^dYCcGxt**+hU$Kq2Ks^6Z%c;H)-GW>7Cs2 z_9?mKNlK#2^>e2-YI7T^w5kPj>gpS{>gifl4U_mme0p8I zhMUFus>ZqXwM#af|Oq+O_8q@AZt z&^lDuXiwBB0pK3bnXS`L1-#afOwQETT`Z}hm~{YMUS z=L{>WC>_;r7^_k?V(_srBgPCb9aT0!LyfAm>6NU5%Q6E-jzM)N<+o_s(ov&Ej?&6U zjT}4*1{ySG#DIaNgS0^-N0pWh9-;LgHgdq3+UNlz%S$yx`wi2SV*LgV)P|Rh7&BTM zK4w@&S^2PW+Q722%LbNe!$%GrGYt77N(c9=DAm|1n$lex&~J2wR^E@2`i&Y4b)gZM z4%7OL9!+thN-M^U8ljb*H3pJKjI5X>V}sFnsJy12${kiZdbGwLl?J_5Hb^^XNZGJb zZRCh?V<$n{q!A+rmQFge41GWvU~cWK+Pe9*+Pu2zY1)*!x*BcnDJN@lyLZ*90jmM0 z15O8Q;E(2mw|fEBcE<{Reg$_d`hS%7nBuoREfm^^kPW%_B5X(4jj$KtDTG&D;RRRR zoxcqED-mu$xEf(2!p#VWGD4xw*vI%0Bkyj6+Yr_wtU$O5 zVNfn?)*}2Z=a+etTr^!(Jj#_v9?Z9KEqVTD(rzAYTznhqr*^KZUASOQWqm_ceW$5f zN%$fWd6OFJ=1i)onpagbsbS&lDd;rL-!Jfum5o)it7;n+h0Pn~>Z=;SyMYA7r%#<* zUq7i~YTcZwU{0Ulh%vYbG+!@#mIh%ULN3D0p1%z1k!REFRdJ@jaK(>Rj(NM_uz3~X zi{274{vQdy1>I7FScIZ~P-YPDQxQbfV6)13e4i)$C&$t1+8M#=^>wp@wRN?{ycC1e z=hjYbtgfpK&aZBqSvR*aIIpq>!x#tUs;P}t(}KKKt14@QjSFEi48y^xb+yx~Swt{z ztg8!7ubLmMte-KL=5Gi#BEx1nwX#OF8R=$M)-L={39W)^><}tw zcEeJisWYpl&O+Nl+4|zsnNxgvb;Be%(rDVVgF~T%LqefW2p=GR1TM0c;bKK|A80;Q zw95dut9+JkS;kJEhI8^p{F5OcZ5%VUC92?70n% z!6{WiRq0>SDUzA!5#eU1ts26;L(?2{PNFfZ8X8ms7c_*sLSx;ms@h=tf`;}TgEQ(H zMNFGp>vWYc9=Spv*=txL%%uiB3`M837vd`$aoNskWUr}&&>84xb?joeTx%%-WHv83 z1W2j%Rnw}bSJ#Su7_6Hf?r}mEIM1$bm|fY34l+&IiCuR}b!}z+!XPgG`pU+-`i_E^ z{IzZIi*mR$q+;yd9fM9~TbRMg51Y?rBu#VGlNW_(3A?SRfij1>-{Eyi0rFzC>4J?j zD;tCIN^X#L&>S3DgtcRHN)FYv!8vse(opRSrn#Grb)H)*t}_@Njb2xSJ|c?JT8_O% z8?+>IV+#u!dKT2+zbIJHU}=S}xTOVy$e2b9BU6fkS~~&$|GH@lwSp;( zb_^l{$_5mfqCqhhw5!>Zc?DB?;&*^O4)xS3aOV}Af}vwpPi+uy!0d#kZ5tg5y#SZ} zPY73>6$*94alv;Zyp3=bp6DX}cp3tqi!WNFol}Mz zW86dy7}BplZjO)~F|wRM+~47rvfrqRa1uAnObi=2vOJ6`8x)S04jV0)3>`CEa2YTX zw^w$8a8iXWN8QnZow(0aa1!pv%0`tA5JCrzlDdp89j0=`o#v#$r2;Jzquq&$QXziu zu#x?7L#*gjN)eWwaxyB=PgJC=dsinu$dy0Hm2cBe>M?0FEAL8=iAZw&#{@KGvFqlCIl-dLH)uBH-`F^o^`HWy!0$P zHbT}C=wTHun^%NQG1!%lxMQMWr7n7`32lypUHOPR&0>p(T1q@(N<3nYco}z!IpUG; zh$oFLM#jVRu6$cO?IL9|CS@`?l@!VPiAlSbJ3I@Gyo62h&duFl>3O zJr(=0;ppfg4*StVMunL$;V>CBvcjQ4T=GFp?OHLaYK5q)R!G^kLe#DmqIRti4cAH~ zoJI`S3Yc)Mkg#iosHzHLcC8S#YbBy~tyCh+-mVo8cCFar{rZa$fl(~1X){I#l$Hq_ zFg^(5wJ-t`6{E0_x2Z;y_8V0yuSw!YpCt!-#+4yNwrpNTl_3~~A#65S?mN+bW9=wh z1LMTnohm_TTTw)9MGpOKEi`70?1IS9oFry-OgoP{s}p&DT> z!ZL&_5pG1d17RD&qX^F+yo&HX!siG-AVlMSFaekYgnkIa5yl}@A^Zm6B7{{4 z*CVV)*n+Sd;R%G75#B-g3&J-DI_^i~5Hb)75V|1rK`28QgHVYu8(|^B3WO$vn-O>~ zyA$DYgy#|7MEDrtON5^hVsNjTf{=qyjBpx4DZ*I@6A-Eq<{~UZxDw$;ggX$nAv}uk z48p4j?<0JU@B>0L?t>E$+8`7mbVKNeFdShVLKVVq5H3Pkg>XH>dW0ZiJl(k0U&f@Fv2?2wx)n zj1Ysqn1YalP>gUILMg&o2on&h5$X{xL|Be+CBh8|w<2sp*oN>h!ajuO5MD)i7vawc zC*g6h0smx3K)ENeme_*uYdqcq{(A)5?J>WyVKzJ-g}G(5SVzNw!{u~t$6!g3E00S! znK!0(W@YWP8mxk+RyI^&^)$_rUbfHzw9^HlP~AKUYbU~9lR}}@cw#7PYA7_XE)+`q zjl^9xA1BBl*tGczWj@P~t${6OheBUZgZ-z6LU+!@+6P}$KOg)U2B|R81;-*@iSR1q zF>F)eVHezo_;Uz-p$|iA6$)Ii6XK^Ld^1IcD*zcDa={M~Ka6k>^ke9&LX8WqLwr5L zB+i%el;;9`zf~9R%VLRYMDv$YFRN!k!d=iGwF*DfZ z_(lr9WzjN!C-Qho6(3c@apl^52=^nf+#?A0Al!?v6@drBKZrmac5C>ar#8E?S~w1G zxjqzPxc<6uu=9=uZ8{srv>pFvU`u}g43B@c%yX!N0ULBjs79cf?7yjXv*%!MYm)Rm zP2yEf-!LxasBG6YAb{NYUpQ$3#=!6ZF6g;)wXX8!Yjo* zI0=P27i936PeW_r7mi_qs``5J_-JD&bU(r_1jZj%ka0Uai};^Z`fb2D4}?OC5LO~w zhj1IhW`v5Jq0nT68iWN1%MsQf4BU-*5r?ater8paz<4r%L?WP zxo;6XuedJQyAiJMs>a}SwASepkX1ahs%FlFVDIYMIdG>lyWw;c2?oQ&lLRrc#NTK* zva6>r6jEKxL=nNvCJe*!`f7Mb8)sHG1Su^z8xC8jW@%`sPMjh%sfJcurwyxGK=t89 zv*>wiV1n^Ml~4`d(K`A=YlWgBe^gZ^T3yl%po5)>hAKGk8>^=_1Ys}fQMI%I^;MOP z#Gcb{^l(^k8WcFE9zdZntHyZ?ARRq->Qq!_`rMkDg?6I|CFu?Y zUe7Xm4fARmpNie|{?X7<#LW+nhGqil9~}*C0!;b%Xy|Fcu7HOCYXD83rhW3&(NIUg z&%ZtzDhG`H=4faR;HiLX09ONU1w07&5@7zfM?*&dX95OHP5U0OE8snNR<#0f=TApN z3jhcHd^EHUFh&oB_5fCU;9ms%8t^B;WH08g7>tvEy#WWC=<|S=$6$X4@Ky`g1K>BU zFgF11jK#hM;Fode%c%1;@u5&Y;5NX4fCB^Ap8~u&0rNHB9>C3j)rr_s0Nk8}`55rD z%up!36~<%09)O=_VZH`@3j2@?01vbYh1LOj+u~XVybkaU!1uFp&jD!RG1~N4_=o{} z0N#{?@_^p}E&%M9i}HYN@gBx5z)65_0ItbLdBB7Ml#kQ22EZPG-gYPtnBN}d0lOEW zJYdmDC=d8Iz&8Ld?||}vZxo}vU(?dNpgiEafMWqOPeysb{ebHLUpxin0sD7FdBCCF zQ6BJ1!1Q>u^QkBgI1F$s;1oR6y8v+U5R?auD?@p};-P3aK&~VBzQv!0g+f6<-kT2u z+;|r34j6w9><%~{a5La{4X`_)XFlu>_%mR7f~K90`=j1~hb}^U1D>`7;~QY(GTd7N zo_R?q^fchZfQJC5E)RvwL_C`bSP1x+6?p6t@aIb*7x4O(7(W4TyBy^Km##*6z;~}i zdBAV4M)@Svs|n=+Z@vcQ0n;$g%mnOxJ;qkRS%6ysZwGt{@JYZUfFZy@vZm$TfK&ef zM+24vZULMFcSM74Rv*mjDyip*-Mpz(5N6BVbp+KLJ(%UUDP+=zvAP#dr?5 z9dHNWbAYb^8qKg9;8MV3e6agvz^;Iw0agH>a|_A??gP9Iu=ZAz2h?vvdBCXkC=a+6 zFc}|We*&;8;9i~P)j`Dye=A~BvCjfp8_y}Nfx~8Sxf%1TjfE9o* z0yY9h-HGym0|0jbUJUpO-~qs|0l&Qq?Vf>qrcG#fz>fgO1MaySb01*FJ)uxD;Fo}V z07u-5{svgQ8RG=t3c%Kx&}R$E16~g}9`M@xFirrrzaQfSptTj_1mHBlgMiuF(O@SA$kPm0WaBu@_=su zP6piYD9Qs4_#MgvUj7)KQ2-pe7xO*fkAP8aG_8Ig#wox-`*FPhc6tI&ivzBE68#?V z_NUNq0lPkpehawf8T4Dg?*YxW=y%Ve-vS2yfPM@30pLu)*yqsi0WSmG1gJfa@_-8f z4+GxvBKlpnracN+0=V-f^jpAIucO@n&j-8?aLAju&H;A;YC-V9AG)ph(=QmM=?emS zR;z$(^etJpk=MP-!84%|+;&q4+_(jMrefMYxDuwaq5-ZC$0}cefha2A@ z@j>M6K^PA_KfLAeAH3SQB+97ugN!r>5w;&b8uGbyD80n+{2Z1O1>E(YA777r;I9L| z19&-driaT91pZdw$GGvHazW4!_cD~Jv)M?8}1#h z28qMNbGg6=ku?nXjle&_w?pjqmhG|I02OU92Q;O)e-M4grZLWQ`otRGSNw1^bOmS~ z9;zZNzZLi+zz5wjj4ZMjeTr|o9>IOdO%dg9aCAHZ{4CzDxb47tUL{lzJd(lty`x7% z1Kc#m>5h(Ff%jFdNiKp0=>gSU0dYwJ@8e)U+c!R&#V$^XryV4 zzVHfY#<}GTft+DsIsA@LjPLkzCIfE*zr`)bvq=g;9_1_tO%rG$>`gh{r5w_10?k$v z{wdtgI`xr#Ynd0^Xt(D;lMxSp7UB+#XSQS4!@$o1{tS10jGjUW%g5qM(a~=+@N3fGt96(6NCu+* zz<&w+lnDF;NB&{pPf2gl=RH?B_*krU?gYMVg!~LgKG#kgGvF7*7~=FVBhEtxls^pk z8?eUsDnkBW9sV`ISGR_5ECRpZ!LJ5Bu?_CYBk9&s?!;)#FAd0O4O<7OeU;dJ27ip-+4$%As&t86jcv#LmR6`3Q z>lNVd?TzRDe#s-(mh(MmcJ>K{Zg=+;smoe+81iY2HFVd07*8;6IC3P-q-do}U(j4Q z2xAsV92(CMN0-UKZvy@%DsIpBL&ZJX>efoma?oT?MZfu_E+IC45JfkE#ydR}`a9wd zAEArq3koC6bD((#H2lb2B#qI{=5quzKh8uS{-vy2?0P4+!dk2bdnCWKU#V@s9-!GW zI~3~Wmc==%ljyFZzl;aX{<=`;bvGa5k7Ob6i-5oIH`rHzx{kh{^NAMtX5gO%{_Y6; zMhCwK_|f%PlSbgLaPV&fzYq9tBk*53_@98k5o`D3&1bFQ!?>~$<57hE*E;(520nTo z+RbeP!z&EH<{l6Hk@;9-MU+3_lwSn=)`g+a#0dO22j2|*UoXI#GJ=1S!+#I(pDe=K zD5Cr&PWiWiAF&wsCK32d2mcfB!YtKLGr()-klxa^U{}e4e}fMA1y5{6^qk0RA*LzA=p75B#5j zr_PT2Nn!j)z<&mOi5ovFjE}F>ZFZ{E)bzT3s2(Bws{0QLBcH?<3J4~<; zHarBHrJ#YEBWxp#{bwm1&3O2AfZyuId+v2~CLQU0aaQ+Aj4EO7Wg4g56V&x*iH1F#Ja0e?O4 z$CGacH0^5OYa-;&aO4*Pf8a9UBlyp7?>Xv}-vqn~zu)o7KMnkaz;|-XuNK8+`vboU`1Wr6lrY|e|8WiQkGt`nJ&ycB z;JaLL{CoQ$!1o4zazy#_oboe)Uj+P15%@ni_?5tSTz%|5&i2~`d?oM`Bg&6+%0CVK zt-zlbftNQwqWyt?>sQK~@Smn%dHnK)z>fyLo16a}Azs*b2=Ft3Kf{gZjTO?AKNI-N zeg(f0_&b3g=PvKz)gkX`HUa-0@LBHu!Lc|&j>SQgdk!?OU4{L0HxG^jcZKyh0-C8; z?Xl;gAb1Ag`0E1vQ8)jx)rRMY z5Fu>T6*R5jQ@_ql_($ArZ9M3VMLU2` zTZ{Xai2H(g=f2<-;9K2@_l?~5c*dvBI_PWQ-)cVoSe6W5e7l?Bk8tb1*j0bv%YZ+Y zkBNPx0{H#FuXdOBTo$fB@Fno&7r610!~CxUz8mmox$$Z;BmW)1PY3?I2>YDv*yk1C z*WZfgb|T8}bmV^xe6QP%Kh`8;FJTVw&qkDg!YSVs_{{b2KSki11wM$p3gB-7ez03V zUaNiNwaPjy0L||<9N!1F4)}?;AAdgH1^i!uUl7p;8k|1x2JnOK#QsEtjxRcO_#XHl zfj<<1|Iopw<3{24ci|ZxcO8r>QGp=J^Z-8g?iOoZ)=>}FaXe_g0!>qdjMa{eMZizH z2YVb5GR|?@u^IT=?!_KJMER*s`8~iN0=|PA@A5ajP5Hoo?#6o#Ipu!>e(&Z`=#LTj z=N)|ObnIzt!E;`2e3d|paiBNwi-5n-jrZ`bPmcNHfqxzNg%Nmp;~GTXBH&A~x3j>F z=Xfn$0vc&<1I=>Kv~#z!T!Ut^vDugQgXYq$$M!)I{}J#jfd3wG=lxJBm6@So@==>uTz&o&|Lixo@WAyL*tPS)gZEl0RIB;uST@xOR_TnKMRYs{lcx6&5mb=Nd;ZxFTZr;6C;_(G#9xneNr9!h_&aowOlPSyTqNR8?8hK>MB(YL z;Gd1hqxf|qO^1*Z6`{+5e}xKf$)qNpaY7thyy6co5b+1sU&Nm(2B){wk8T$J zeXlAASE=~Jqa)%EE+g@`3x0I|+4&1p#MZm75*#DRG+X}P)pj?s1?f?hE>z`1Dy_t8 zM^yTVs^||Y-JtmXPl4}Md$p9`Jt%VqDR{Pm(-oYj;H3)Qpx~VfKB(Z63cjY`CklS6 zpf^Vof2j(#Q?R>&gA_bl!RZRlQ&5)1dnBse?X(S}g1U&NDOjvvUj+v%c&37*6da@A zxe8V)Sf$`h1?v=?uizpD#R2G$e5p#WR`6;CuTk(i1#eJror1qruvx)d6ueEr4GL~l z@Jb(pceTYc8MFR^0BQd{y035eng9WAM!{)O6A+*DQOwb zZjsONlKJPh$j7)CLiRuXxAYR*GXF6ahuTZ}&lHR)l<8~*yC^tB!C49}QSdee-%v16 zB+Hj5I99=x3O=pi7Yc3?4?p91+W`Z51`7v|7*iDNg0~hsmEa^(*_zT$nzm5Q%-!v# zXi-5)e=iz>cEww0r$~a6+ep~*SJJ-+u9E)!a!Ju&CR>s#eg1Z`O`kVTk}Py?4I+z3 z{(m22(>GU1d|Uh0A(CA2UpCgJf4E)}SkBZPSwQkX9~;b4;r(+ZUOd$pNh(s3{>)i6 z{acGA(OVVAAV!v?ufD;i-|;6&XAC?x{avs;uK>{NL(vIhXF&0ba6KNY;XJx|7A_@^ z$M-Nnl&>=gJ*Mv@0^K`W;GzfNDl{GfM^91mRDh_cXuJ=q8Iy=UDYX}}jJqMz(=p>> zQkl_hkTTjsu%|eyKeD1tuX!_3y7ycZ@`<<^oldgdES{Nk4#B<5$V!?=QqxxeExhJN zA}UcTDl_?f#*4r=Dl3_f{+K+~H99%*RT0N2A<-#`?=xP_{PcvaBF_AbgguBG`%pGI zQ^d_Fq{)hlhLOxUjrCe|>-g(Ic(HmvkZy!=s)R!3mu-X*gOT7S9LF~ z76`CCqF>ehOeJdxEExToZuCdFm}vY+!+E{_KS33%H*z#90a0DtH+!r)6fmsEksoDE zN83kRHz4k{P6j`p^*peqbtwwPSWz&vWqppG*viU8Jl1LgeVoOfv7O$SPvjS(^`i7ENe7!T3ZeH zZDW-nr>%7*%4S<9gFa||3(6epY5e9|Rlw$19U&{?{yoMaWEOwfNWxOm5iDir$n5OYp4 zIhUa8Q(uGPykm`8#FN;qe?TO;KO(1SDPO}pdQ|dXkQHMbwxa9QcSWPCd(Zr0li2v znW<&)u{u2z&$1ISQ}NFy_0ja^*HI*sSE?R5nHQ?jv~)?<^r=XWB+6)7v!wMK6bO;z zU^Lyf1d8wi&+t**+E}XhQJ!QhUdKaJZ{7lArl?TuNmRvXTDhbRD^wRNjMubvN!uh+ z{-Ae)c>ZN~DVC9YB+x3rqfJd!t)@TbV^1=g)-BPpKUGv?RV6NWsGd_)w=GEtQn%+- zdeaguIH|K_`kmq}`5y9pF8E%z1lJJ$KG+JVjFI*lfgE#J#3>-?aEH?X{yok z4lrFF%UdCPl1x?=)tjY3%k2&Voj}`5_K)(cn(9U*OWChIO+zw27Mw!KJ2c zb2?}Hwt>maI@T1V)5>?24KuIt&dPD z#!AJnW%WgVE2{}*W34m5KhA20QhsYlEN>D&K@RFK1P2WdM5gS+-Dsii%MCn>lrX0+ zFOkYe;T;?+WB5Wq7XH^3^0*1(?LX1c`1dk+5lr;dxN;R zEuc^L6$O$pOZqwc`%aQqr++zW;OiJqL;#$~z#z4+*x)OqMh@z4#$=rgd>Z2==DWUU zkVvmbbu&(d4D+)j9p=f1!IfRYFOX=TY4Yn2VpPstE744pHH4&r+&uxdI&eaNofzXX4I0% z%6%1u;}|bA8%#>`55d%HHYR=mp_+eO2@-R?pCc~sFU@&z>=~x8xj8>D0z3o4%;tjl z@4zSBpGnROJG2HSs2T6Fv0LTz0qZ!%3(Z9)Ya-=b(i|26U+eSW|0W`UnSWsLW4rh=nX|o zf7^>Gl<^XCy~!q(LN}zi8te8LS7U7q$i}*yjc`XI+ebClog$I$-vBP=T_O?mLFX*LboZQqT1Wjrh^(n zzo5`S4qpU~W4zE@Ve;aTLN9fj_cFJ6SGt>VmD{|RC!Y(}>3-2&uCSXihZaf5l5_?f8lZC5K$@ADSBA_u#!Jk{ zOkT-S=w7$b$Cc1w7!%FkyDPWPEp)#UTFgHBgfM*2Kc2n!Nr8dTgKXiX;O{7u@e=bH zlS6%kNCd?gZwAE}&k2HV1Fy-8#%s0%Z?Bn&UxPBu z9D~(~*$-aQV`Ap{c@Ql^Sr_6r z*?JeP0FMc{rCL$w6KU2^{H9wxEGxr$9F@(qJ_NTc>wCmoTiKv*W4(p4ZLNinn5`MC zk~!3f2UX0YK&a{s^Y;M{>r#lvjE`cvwE&bJ>qgKR)>^0@WlhAW6>Z%G8n1OeetlM7 zb_DBj#A7sr?96kGzk+q#D=3_9jt{&5uCgmmNTLMI?pHZqn-Tbpi1pT`p**qi?g<9)d*#EpKT)`y12+h8N zKygcytp(p^eZ9#aA}hvNdNCDO=E^|51(l`c&~$p|803IRZKVX4g00>^nHNutaociP zGVkZi-ZMgK zCeC&dnk~d7lh-{(kaVP}jHV-t^Mv;%%jnNxhkl_v4k=)A9>)};>CobQQJL089J$gn z)Q%pApdp4-x{lfxkCdW@OQ5wA4w76$w2pA+Xu0uFSoa%#Hf51g?OH{zH^1Ph<~NF| zny0C69`EE(WFUKt(X?kt{(z3ih_|gYRx7-mX0;6Ad9f7Ju#G%uC&|PzP9+n%UWx|e zBGdoqNueUu!=wi5Wy_-VIC@CC{?XHmb~T!IEjg(@u76%@=o9nkq* zS;>z)VsuBdYVBt#lU%N-@@v@epLxVIfjY`6ed%dSZO~ELzoH7*PgCTt4Whtzo}xFw z-_yi?khl>))JAmO49!QKy<+w+8c+7SWaWy_ltR@$8!A_e@k3T_m#2s9G-E~G76TDu zOt$MbM3ux1o%lNw==^20^~0VvmmonuW&2wc)dEE&Ro&-lBUPQOG$n7LX{zR<0$y=H zRCE)2*#=K*vYS0rve>IQ>CGYJN=-L-`r8+g(BKYFs?=a?K5tI+yFB9V1Q$*FR~4IL z#U`Kks`?g>7)z+KR`eN*Eb?UXmMX1G(uqTy5Y?L-&^4sgMV{Wa)C zcdWG2lk@k$`uZw6Jyy2x6&^8JQ)tmX$kL~KQaPe|hDezyPKW!8BXhc^*p`_>88bZM z3ghq~dQG*>b8`EK6dUdl@h|@!jyJ#Yhzm~EbSLdw>dEAN++%|z*#JlC1XxDawA6F5 zEp=!PiVX6ITR+${pZD?R4o z)QjOvR^$iW?$Y@$p!euM>h@@wKaLgo*-oQL-llQx(}n-Frk`Xc&KnboX5h_1$@4zF zvs855l8*Q)70Z-z$mXag8)d658rp!PyTen8QvePZ{=Ev_@`Xe8Azj=G8cmy)uEe8Pw|{+rWU)a4 zO|tk%7o&=>@;7Zz=8&!iroQ>vw8&?Y0K*QhjOW>yx9FKyqVn(em5i=X{Pbq#N|W58 zpKA9Po-m`|s;jZAJfCYZeZ4JYY(7^;`UYJrjo6>ou;v@}G%{l+^@=rMQ7`H;Ur#Gf z)3jx0NRgABUc+1|dA=U*HA2({wx}WbT>0r2+UfFq-rVXJ>B%h3VfFxRw%AUO?a)fq zaEYp6G3fHIV4+L(bXf=^+-619SyAP49jf1;r%KaL=3vIPb5Sfieu?a(d(=fK&d5VS zy*U?yxvWBoE-p4siTUrbOcy;<_9t`<-rnflWG@ws##{$@ghG}rrF{0>uJ!_ z^cdc%8BH6PItor5NA) z3~pibgz|3?Ot62}eu<(Qr>OD;g{dnN>~f+1aQ*Bx=>zNh0=2jziwx#;lV!wVj)>~b zJT_HY@rpj`0u26!)mWX*0+=O&VyL-Rj5HWny5M7lntolYwJ6Tn@fv07^OQD0`nmM= zan9aQ=P?{M7bWpF{9so}wMG%^%{7kvMeUUQl0^2uMZM_;#@kmm0fKm%ANabMqyynUdGso|4xz?Uai+xKxV~dh9P493TTBy}Gk3QKNOeo93Gm z7p15x9Mxm8Y|~BYpu}n27E`(LarVB~7>8OKdAviZ#e*_RTZ=BB_RM@3*ZFu$%jbq3 zhXVhr_sm?6wAlM(TrsxTC*#ubnEPZ)f%uhuG9HFt@00Paq7`o$_9BQ*63f!RzE5@t z6!tzDiCszK0`(#|og!jo7I$W?%Cb=AYpNxdq zC!=0`0;9z~SzlyD?vowF6?kHw>|fj`yB=nB_Q`TE2>xgH$v6@@`($-wz!4eGy0Cfv z1N&r@8Qv%329Vbzo5(GzACdFlyk)fvBEwr&Wf%$VEh{SHY*|r%XUmFI&X(0kB@BOMn4;}1tHGFH>@BPJa1&u~S#3ojd&?@F^lHnh3nprN%ZiNcEvr4`qqeNRA-&qN zqW{p|vbqyxHG9j7&$~EVR+J_^V~vTQV?sXmmK8TKoh_?0RLI$~@}rEiW%V)c2ZGL) z)gH>Rx2#wbDd!@$oEBSFE;&mBE;-BMr5v?o)dm_sj@q)y2Ww}`iWZh~u6E05v1R3w zbB&UtwycW4+S#&Fa@3a9YRa*eH<1qqeMAIcLj?8erQ& zZCUAPMQ6*3O)7HBmX&HowPiILteq_@UOZCHgKjx3wya#uxZ5q~VRth=lFa%zTUOK{yk*5LIA_a> zSF#kk*DbWgmX)h=``kkJE1_!3ie%1~m1;(AQ(?=B`*F^e6^8&R^jWvi7F$*>q0hU8 zzMzDzML)romFzoe%Ss7VTUK08I9pakNujT~`%a53E0@qW-F@e+)NY~~)s~eIilO%o z46*R@<2Q2qh*!kF&Gr!&N0Hk{e3s+CWc%m`uy(eO-UL_KLKBiG;eTTLr~-1cxcS3z zqqVd7)7shmX)QK?_|#TwvH3FuF?0dy?ln1sc}4`Ewh%$|`=4 zj)^lEkGl={zA^EE?zm4Aw;M5u^1j@EfF%<%dG8Sro2)TO0iGHh^e-SL zHBC$t{%uTTh>NDg{}?%EWs_MCNaGA5cgPINiD_+cL#{2isw{5`IcHyse0`#K+gR8W zfAtbzg}fGJgD;;ae5a-U`CY+)_#?BqVlbWmLPbd=%Oq%*$J%p? z=K9exe+Taa@s}%n$S1YuP|SU=`xU;7JqCZ1Avjk!=ZXvY=qYzJ^1iQ-$nLyN#-G&c zjCO2Zx?}Rv#z@3;3A9{3(xRW*nG*~BHzM0>QmEJDok77@R5Ln}7P43AVdr;H?14p} z!Y1GrSg;GN53;Tx9Ph;Y4 zOeDu%*!P2NoP|9fY;qR%Z-KM3u-^tu&{^1DOgZ+#o;8tjE^^Chv9Nc^SsHN3Sr#wl zsD=Gsq#U)d|CDm#VBy$$_su|V7-aw-| z3wsU$Qs}d8p)D5nE}_r6g}$JKs)fDmJ8EICgsO%80t#iE&!WEK2z|}ncUmm$T|(b< z_no&=b&Q?qezmX{LNW9bdQEy$rGGVYdC%+O-)4FL391^oyiZ2A`Y&1DKLI;A%lkXP zRd$XENtEzEvAhpLu2|l4^f>zw7i=!*98o(b3T{yGX$%X^}nJtzKj)MDYgy-?;#MiHQygW^guDV#<)1oAU1k;t z55Z5R9MdT!zmZ};k26)_Wlmv!uvixUyt}GMfiTbKL)rYOM}c_u?(@kU4dHFb>!x^g zRy^c$sDI0pd(2aVb%(s@LRwM*jJ%@Z)hCC(E*bb6D{CT*>0`B3u4bWbybJ zL`fFBKg!P}i#>6(6$|y447Aweu-K!z*vvxl;M$&kP8Dt=%N=n^s_?mvd=pRFN%=dv z*ap9bl6I6TgBOYC$abpUIaAC3iM*D_eJ(y)f@26ATb4S!mMdN}3&i6+%LmEUf-NVK z_XTkmtHQG!MQ(EnU(mr;L^Q+&XV{8NOhefVQ%MQC6mk00FLLz4TMz7)XHmesxN%BA zkt5(kN5DL%v4Sw2K5r0F($c)UX}^#aoG70#m>|oGk2fN!H}knzX|Rc%Y(2%LHnB`y zX?ZhMA*F&=bOm*qn$FRK*R$5%&x}!-9B>w^=ZUUz6y4@X7}Y~b5D)A=j{F#7U4gWB z-h-;3diF^x64%Mu8LWbklCTjhSxBtST4_Eq?(iNfH#}~%D&4^mYvB1OS+U`&0cIA6 zr$L7gq@J`-`}0}2X9^qS4E0P=veW#d9R@v}YgatP+S9&vr6C3<+lI&=Ks$7do1*&T zJB~89I=njC!)Aft)lv27a>=W+!>i*9)Gam6_Qu&q<>}3`QmG|&YY9H71MOZV8Ye^X znVc6;x^z^!6p22PpXHcUyBNJCN}B;2C`aHN^h-JdTb}uIIcoR6+7bBg_H0n3pRUxv z-Q$VFX8yIqW_UN|_~|Z%MgOyYy0cKm@zcFR2I>JEHqWp4>EhLk>XaGw(_Mp<*Cd-r zKiwoO4F8+`be~W$=biEUpn&bCqcWP%AMcD)f5%TpD#uU9{Tce{W&sL6-F`%b_c{Ck z4snj3?t3I`KOOf)H2VP@BIu_h1KUsc664BGmx|?M661VldCVO7QHt`@y~w!o z)3w3~t=WFM-6-t%=_pMuUm6of;V$CXemXwE<@o7-hYC4s6p6IHyv^uKOLJ? z3f++6YOEH1Iw@57>B!pg(@7&LKb;iHU%WF;5cbm@piujrarR9qbhBG%3qPI9qW34c zYPwahRxhe=6A8yp_nNG!^3#<=j^n4}#UX`W>Nal+Kb=eHDtC9eJo#DCjLJ`^no;@b zc2SP~&Nwd~Dd$1AoECmMS2ON*%X!${jE^L3Ahep?lpzTlnc* zmD}eQx?c%Zemaslemd2R%1^g}LK){f;~WB{&}ZF3Tlnc*LZ5dFeL)FTemdEAl%Gxs zeSkeFIhY3E`00p}LSJ+DofdvNm(Vxeedn#zw?#85Kb;VYq1VFrP3+e>=6s``f9< zdw-j5vji$K1|dyLSMP5RMJn?BZO$*peSbTHkMMBh$#fp!$#fp!$#fp!$#g%$L!n-i zbD-DcIOjDvPkBwwB3^OHWbqN6!I;mbkv>Rrjk_&;e6DW%aRL=lMpD@$nHsA0IWbeSC~NKE8KYk{gS^`UuZL@N|59VxqBqeAL(R@sSyQ zd>;aO&AIrseSFIhZ+#=352d zwQ4IC=Yw=H7hoyfR`~b^>*8XUKEA&|O7^#6L9EC1{*7ec%2{1M>PYFR_qL@7$3sW` z93tsS9Hxprp_FSY{CmZEGzVtk6!4myWwQ5DPFp?hnmLm49;Y@1aEQs;wADM?a)ke` ztv-Z~3H#g^G}#3DIIkLIi+v%G!hJP;5K(+RQMj*WWXPtQng0Owy)aES)Y$x~CN16apzY{vFjv&_$M9l<5U~Y%oUEwaYKlbzAoNa<+LY@Gvn6Jlx3fBSj51~ zA!~4EN83!oF?nWxq9hC65axVL%})h5_R0LF$T&;6=u=gzAlLW5fSqP{4m7y#}5Ymov=-Mw3dxApcS4V z!dD`CF~3!Y6OU>&K*U!e+iaER#Ic~|XF8*%rauZyta%N7#ev4&tmKOjkDH6*3wNd>$x?=h&M4{2j-(Qz?B zV+KSfOE*AFZlE)2kVFSZOkN_D(NgHfh{^Y}er6Ki){iMjB~>tqN5{pq^L0a_5T-dy z3U*OCMno4=Zh)Bf262hv=(w1oz(UFpv+7ClnUs;lqvK*a#uE_$Co&LjfS6)~?iZ5= zy$KP)HC{`-n-_Id@)gW74yq$m(q3V1Z}0NCV2QuJ;ul%Xe+6AS1?s)qQy^xTbn!T5 z@4iIwUG-RV31S(C$f8GdCFE5rHn_UQpWe(fmu0yg9b~zgTIMud26_kY?;9o6T@LkB zhq^<1Nj)}ecEb#~qeVSAiDmAixD2m7qL?%W{`BS#oWdCeER5%D7pJpX^o(9?7NcqT z;?`^#J!3dq2FJ>_k=!!{cRYu?ICVZ%YisfH#&fufQ^hSpUVyyu#OY$xnFiN*UlOH> zS5xHit!q(^?&kf<0;w@VEA7%Y5cI$Kxzm3)cXQl*Xz9Y}0|7dj{Z}Iq{kD2kJ+%`O z?|AvLXds>^W=6l`XChskhaLS+5)(nqAcyF84SHE4o!86Iwf?U=uMeYR2E-ZZ3F3_O zL~%xXk~kwhS)7rcBF;!p6=$TUS&xH0U7V4gAVEzgdHuugl8tb~`eL#= zAs!HJSl^#~yOBuff<~f&q#V-F z4eR?TX%*vi!}>l>EXECSBHggQPtwRZk#1PupVN1d58bf7LrK%ghpt!OUsC98(}e5Q zXXQSD0@C&Bt2Ze@tSWsCi63&{632D=8oi$*E>8vX&5dh~BGUEhn-_=!f4Qpk&5yTG zM!H^o3pyM?&CtpDSfsC2PBBeQr|qq3hMxEE3Z7>bqHJpj@v$f7^P>h6uLge)mR%`ryt^`Og0u>ufC0mY#-HFcZh`ag8J?h33*(n?=F#mPX?{_AzMk(|$x6r-rnm+Cp z`g^y~eM%_TtG@jr5fmq9`kt_bKEQe>1@EI!#tVJVn(PQt=pWpD=Q(%Zd0zD$4uifI zl3W-1i>Vz%Gtvv{dr9^kjCQ#g7hL{NU#_3s^8Y#iC(o=*7iU&xh_fs+#aWh-=U48= z%p7rkrLW8gpfWE1r|(Sv>9FR%?*H_SGrj<8>HqYd7vRx7vTepEQG)b;`X;Cj!SgG9 z6UDSurv(K}%&#&}N zGloKLvgun8%~nsT)_e=Z>60lnh>6oDQ>G)9&9`P!rXki&y?{vFyXx_V?YrL0R~9qr z2-U4z%IDjAnRf~5jy#zOtBNIA->AF(c7i*;-U1czfG3Vqn~EHx3E#WGIzZF5Gk^Lt zy!n?#zF5y>{hb~R{MkiktD3l7duMuYbvj%cwC%5*9xcubS(}>%j++y7R%+`9w z)wesU!L!AgM2nbptZ#R00^(QBB;rA__L)R`5pQ)Cet5P}EF-Zj9b4-BtcMb@IY@>- zzZKwePJMohapz1Tmgk1Y4nX@%A~KHOflE3%R*z%*1-5p=PqbeTj6>N3T;kF3dP*+& zB+|hZ9nk#;kTA7)Qbs4}20ynJcr72dDAD)pfh|ZS(%llhRgX^<<;3TqcJqUU>3=vvhhdBy-znM|RD zNE*GsW4wf9;Q0dD@d8ia6imQUvkN_mQnU9cV3DUaQG67Ktm9cA`XY~EA~SM%--NZp z|Mlhlzx#*K2EnY(vuS^XMeS$PczHP=LSvIVA3_uD?|caDW|VQBP2+c~>}S*1JkGOe z?6}T{&~6996i!`y2#qrB1^;m4U8KAw+1LyI(-BY2!DLk8d)LRWVx)bJM7mh;f0o40 zJ*0~T|KSvVGay|o_&-nLcM8(Qg8#2c{KQ4NSnz+5#LrNqiv|CYM4r5#E*AV>rjc>F zSn&TXou2_n7YqKck}f8HK6mB&I+Y(>NEeI$Z&G-GzGg4}-$!A!_-`;NP2Q9>CN^TW zSBw9--W10KzIk!{&YfEP&ksC<3aRzvg7}-jSuOq-c32Bc&{_PKag`)di~bj$gzk|P%XH@WN6tm-2c|2K<-TKwN4 zGzc&LucA=#exz@`$tIOTH>9{4>-HE|V{Ht`#uAJFI}+JGss`36LR}b0h7P?Id71iFJ_C9P4p~B-3 z$XP(4;{8b93X>Oy6nd%KyqCGnyVBi^tK8X58(T^RT-aA4z6?l*eI@&;XUAm%*2qHwJQ)$Kf%PSF#kk*DdsM zB~*AEe($c_KDW^QN~rKSJRuCPJPuC^41@}gLsIZr3T3>+_l(IQKni`5(AV63=XH1AdBfdz-gNh!w^IKs zno)Qh4#>WP;g+96a(f)|{Ja+apYu5UQ(w&R4K>!oW^RweF#n6J-oO0BmG4|*DHth_ z!}!2t*jBd9gd|E(9*2plLkN$I8ROz;X4B>H@qS9>w8N%Z* zRi#@8GK9xrno2t!hbn{TLAxHU^3C#d3OVkhRhg!5VKfJqEI20?CUBO{f^%YF`e}^8 zIk7N%0%LGaENnLiG4vKz6Q}ZHj=-CVxES#grHFH)@QSOVb&2nN&nWmvq%}TBat*B? z`dmZnM}F5l_;G@3l=~zg=Rx6|__IhT=fokAz%_X%?ukt^mbdCY3Tva|4%oEPCNh4M z$W}5Qorid=j926$9w*{)+uI{<#s{9Jrsv}()l3w(+nQfI*PGOeT%-J_;vGXXxfQ9R zwIt^8s~_?P*$_NZjBAk-a~=4pFOsDDEe!nDB50vmZy;Z{0y$WTS*N$dTFQDCni^Is zU|U&H$d9rvYzywz)zGe$b$Sr1DXRuzXF zkRP<(Y>mfMtnDb3YqiC1o>h(feCv;JhZkB0^KqKD^=I%o$vTMq4%SNKceHLmPO)_j zD&NVv9lxEeLEu?posHiv*6$(fWNQs{JH`40R_tnhhu?0N4$AJk8C*q7^`Vk~IPG$yPonE3HA0IK{dJ5~o^|!E>6m67edl58~6UWYl_w zH4~IGt>Lh9wY3!a=UW;|&9YvFJ~h^AwEk@CM*P-VGw@qyHR5-U^(lUTW8IHZ_0}@P z8?2$IX`}UL=rGs%8o%?beb8jS^%i~?SS!G7q4g*(Jtn z4Sp}T?g!-+)(^1TYU?oMUTLL4)>YO5{9bL{i<~vq?_t9x>oDYAWA%Uz*IL&gew|ed z&evPNfzCHr-+aBH^K;P+kR&jOS1Z^N>N_agRaefca@)6B1&DW`34R>C!J_9!@2HQ!_|ser_yfnT3c) znO_9HWtksg1@lNWhg;46TT~I=XeM<3*{GNKH<9r8=P~h>NEn(y4(8X!4sz=S(*?|L z1E*p&<$sY3zEi{PDzg4QfnuWkV_|dihfGq@O+#=r%p`pc-)YNr@lWpJt6*CPzuo4{{ZB~(va06({M;6!Qh zg4C-U%UG^0S}@%-^?;UQmy6L;T;(i1MyzfVX4jz=TIurcD^YwPtCgP087`p3lZ_dx z8@tK#0rZvyCcInw$&+p>Gv0P4y-8yv>J~pI8c6KLCQOrrg^4q0n{++>SrjWtyq}br zdeUo1^++5@$}ByO<@zR;2a#%{r@al_*u>w_+Sz*g2S`m$46yDwvbHl5*ON=GOw}Z| zV!1q7qdAE;LQgYa;u_Hytf$v}30%A;Cqdi>pgMTmR{YXH@vNFzpc`>Ww4DkX-4}>4 zf_!=ke{JiSV4a5#)LSJ@U0S&QA&3wkK)VG$#+ClEEN(*0ea0tFlqj7G_&3{Dwf)(yeyet z;4uH%Vcs>Wvt+(*N!~0BODNNybrj6~xSsTGQR4D5nl>-Vc@dY5ewvhqO^loma**zA z6Kq;iP*XKU)B8jT2PtDPpn&TFydrf4wlu!!bpw z*1kg!S>G9PwJ%7bm5y3pP%Tm7JEIFr@Bjv3!S9R#)XK5X_l7W_r)j)2&ku$$54U0R zO^!w{8={%ceoo3rM^o|--(y09$g00=hS%uQuairo~v+8$$q%gD3M)drRpj>Wkn4f5t$>jcu-0)nwpp7 z3})BeWoN8gQdsy0$@&rrv{S&ipc>y4+HH6$4Pmc#gA~meMN>eBF$oSJg9mixh>vz4 zgF}hf;?mmfRE3tQLOJs>hU!lkKK6ammzT84TBD1!%Av)w`PUi)Wv4v2SXyPBZ3LJ}TtGJ& z>T*SW#1(XlP4UxW**v$(=HaGi&U9XL8*GZ@OWN&G+B_A~K{A`5hK5e-5vo3uJxco{~jdIX$reBY~{%1$KSyi|_)wzF;hR!G*T2_JFZi z*4Mcpme~aMfN`;1T?`o8l7A@wklgyKN=p^)z7P~+$Pwe`qephhCTd^4J)tZpUF<&O=>o4pVaJI zRTI7WJ!(d`B1lf+RPKyD-HculV^4P}MUHQ^I1|H8kIk9E8KsvLD#p8x9Gr@!%mcrd z!qzx4rvaNM-hL@I^4VJ{llyTf(pg@-1LZ|lY#Rqxx448l8RG5=8|bnVb}|xW0X67$ zHez_S3nivdiMCRSla&&8J4%?i?J26PuO~?k6I9|2+N!N_lC1ITUQ=^aImmJEoD>dC)OU0k+8VZ0va4VXTKjUULN|lHBts>}QX6 z-{VqA?tJo3ZypG7vitn(>BwP-k80o@Wy7F8ufZPL({q7C%@`> zv!@$32#uz_i*v-C(=DC^mNA+RF4o%rANJk^zOJg;AHV0EyY7_S) z7AF4?!CvKa<*jz3G3NO6v(o!kdkN{~(9^(7sB^f1qd48v9ec9}E9Akd=6uD%j~}uP z{K-yZy>7#dL^WtOyv7GZ28?=*`JpJW*ZoTk>MgXBpZ+Y~;_o9E5cy{vTZ}j3IAy@= zX@VUd#A4aEGOY9sv-ssf&k^f`>-fvE!Bh`MVUG7u+ z&V$w8W33)LFBo0Ne%q^8;J2`Vow3cYbL+wCUjveLl|AYT&=Pm<@K{s5mKJHZoit z5%wa(Zw%XiPZg`Q^H>^b9XA>7)WVw?WyeT56w5TO%GMnT1n^XI?a-<=d-YT_E+1MA zwyqyKM?Vj%PRg)hZ!}>3*zKS3s59V0)y5v%1;!qCqlL6vvq6Nm5Wl&Wj}}^KJNc$h znX11xCkWD!pkZm>R&*QZGHp*c&gF`6`mL&S)QSh~ppuGIGLhKKFnc2|G13a|gm z%q8)oYSrE5K4o~axVp9s@AGV3l(3I>hU%KD@u1&Ie(O#{+52FM`DYy)gQ3?@*l&5R zE1Wc?u;04WQ26f$Mr*=jzqQg(_{;%S^mf$6uibjmT;KFA1N3cPPkauIuWlqM`z(j+ zBXoj8^$)!}yVwgsvHgCr!zk8yS9Y;nNRxqfjbH2*6#L$LO|frzNGArxuC?L@>8&XC z$z$2Y)&|Ai>=(l~+v{(;JGc z#Sk7>U;05)%;(#0f?@~#Vu+Hf|ImHe#VVl)h9Nij#SnW|KlwwZ*t8V(`%7pGe#o?(Oa0E#KOHdh$In~UT#I7B-q`19>+$D*f2&&K^PaYf zFI5n;&8YdTrK2V%*kga`)tGB4hH5wMK^oRGmKfngNS`-?P(D@X3qw)Lc_hZrgoti& z*8M$g^rcqvEuKm&^PpMB?nF_e5|j#7~n^1dg-M`AsCTZ_ha(0(Mpc+ zTs3|om4Eo!V!aQq(Q2R(phKY=)@WT~jLPiM`n#u%)=C!EMS+GpO#K<=6sp#Ya(p+!kQ9TAB}KKSe-0R>r;RDHUsGr z5B1G>VbB*^NrQfNsQ&9-DWAX-K`DHQ(v(^Z{d{{itZxLRs{B$Af-&zfrF>Wh+Zexu zHkLsRb!TZ95xm;*ccwyg<46|NLAK5*T*hL-MJa{Jp%z305@aGmhBNxhSEoVYR*d&yz37XQf%T#_W zs~`=$)l{BpPN5b>_R}FbYRo6)KSIdtT$sm zW~LwWVE7$rko|B7S?ha8iJNVt}yH>F=Si zAK^LzvcNy^`c|fwVCMHPkz(XaZrGNN8nUnY;>%X z9Uc4m2Jp6iL_453bU&PN={Mt)87b?GFP_df{}9GuLK#P?%t%?Mv4ZAHVv!h~5I<6u z*O3?vD+&jB;o{^8deZZbK&^kF}r3(A?8d>93y6^_Q zp4=X?iVAP#HRE=z(t>|M)#z9C0biCCe3x(;4QZ9@bsp2st%{_UVMeDlBA@iF6#QXSo^a=+<3M6JBc|uXS(yDqI)* z0fp|sMIkQ=S-bFgUg?2E6rRRyD5dG>)(70vD3N9$ul2!VUWd{QmbLCnus(NaHsGNK z@>=&h1f1X5g63;Bx%J_^vv}g(f+toe^>`z;EvzrQ%+^kG`PceN{=*7#Ip&B@uoCw!}eN_#7JFL`VSc8tVi;Ag8%@6vmSMbA@wU7rvJZirl zW6Q9;#d6laICD@erJ1MJ_uS6}h<}L?0$T(*Oe8<>%8Nf@X521@#dEKnu2uvaOKVZ2n_i4PgL&YqGan@|hWa*T zCmiAl~^6dczUvqJu1&FZXhgV$i102vEn`Hug@|z8gvuEaj=Lo9 zV&#kow-6C-VCq5@BEk)|j0oohQ-u`N@?1>N79zrbM?4x4ZnfF&`vA=J0wTfaIA5+;_YbNRvzQt35>Pw2T*dX`$v?lb05NWz57mFk8}IbuJP`*c+%j`0^|v9 z7oIe_DIA;JAE8XMdj;Cn;?4x*R<{ae+T0s(J<+6q$L2Vf;C&bUh3ovRZ=<9W zfUMs}amP|=T>UnRtKUX(_1h?}ejCNrZ=<;SZ4_6(jpFLJQC$5tiaQ&Cb6ov4imTzB zu6`TE)o-J?+22NaAIgphzKya41SmW4Z4?p{d>e&Ki>1A9qp(y}+WR)jcHGpXWmPyQ z=&bQuVd`HEeH(@EQvSD5PU0p_I~^Zy3`E-dHVR)*3kksgHp)%BW_W%gUhz1tD|y|L z_(61Y4n+D<*pg8U)ld91^)ld99^Q2oSzlo0SJhUz1b=PANrsD9#nDxYu|s-Jkd_%N>-s-O6E z(HBrRq@ntWM9nUgP4Q5l*c&6ZG$TP0{e^EXK&f;O2Cl?_4kSi46Z?{sjF|E~vERK9 z^t;OD#5MVx|CXj{+Y;9{?8TcZ6RMxcseX!hG*mxvU5qU;c&^XHb08DX!Av|iWa7Ee z!^7C?#9;cP1`osY6S>v=&Rt4F^%HN8k;4YhJ2LSc$;5Ls6VL4)9){{C?nr+Ir_wZk zgD~+<9}h$I6UplPiAVGF6Yq|Z(+1CbGV$D%iRZl@9?8bk}#B(aM8&9X%o~krI z4v;vb6rgbo)lU?TevU}>;{b`z$Ee8$=@&AQKI|c7sD9#$nT`ABOr&4(kTO(1@nvOv zRhk>giLdAzApLjtaH{HZ;7ReiCGlvCCcq$lEEDPDnJxWVCep8GBK;Q+DMR%WPv}im znx9BbJn184czz;X^)({ZQ2oTWWA%_egY>CP*?BrscAm+Uo$qAI&UcIdS-X*;`ibuu z*$Jh-2NI?xirvG6UCdV{1-uTW9|V&VrCu98LrTl^#!dg0EUm138;X^t`N^roNcUYh zRjG|nRH=>U0PzkqDH5a7L}H&ugAfgcqeGmDYKP6q{}NysZ!0l6k6P&d5={=dzXGEz z_W+6`M-isNanEB24ZB}NU2$&#Z4vh_yp6h-p;FAX@I3DRvkHGcp5(Z>0S$rqe2dwlvwI~n9ZXQd(G?2dy37w8R#+MqnhPj zg9o;I7s@#9yFq%`y#iKC+z+8l#N}_ON8Q)l>F zGg9&T6fuN!hMTy;6GcW1CN`Lp-%R%okgwqx`v;54FU2d+w=;ng-=jpC=kYOci9 z*a}=h97uaaN6m;@Mr4klr|?@rdZdz#Zb|&mZUR}RiO;1nEcK6~8J7C_yo_P>g@O#D zdDb<FX~NwD5bxPoRe@bBO-oFASXu^B$R#$9LmY9;0rEIkP`i< zYEIJOb&5Y|G&?8X{Ss@^#mOo3Tpa!`a!z46Ckd`jBxsJJ%%4q$dwdV8OHD<3b~OYV$uACWGt5x z%ao=OB=g-#0H5Y|VzN*jywNg_NTunuA zH5I|tR0Q{Xcw69VDuS!22(G3gxSERKYAS-OsR*v7BDk80;A$#@tEmXCrXskSir{K0 zf~%vm zQxV+HgEO;SO+|1u6~Wb11XoiLTunuAH5I|V2N)N)nu_3RDuS!22(G3gxIe?&rS5NW z>~J*|!PQg*_ak_+-2F6;U9P4gxSERKYAS-OsR*v7BDk80;A$#@tEmXCrXskSir{K0 zf~%xcR`mW(_bwcFxtfaLYAS;J5}v%#)l>xcMqKZ8H5I|tR0Q{B z(6-OjR0LO35nN40a5WXd)l>vmQxRNEMQ}A0!PQg*S5pz(`vLPtS5pz(D$sMt)l>vm zQxRNEMQ{i3{4MSvj<>j)ir{K0f~%*mFk+SL&+bT1z62ONWSP0c1p7lk}tU~e1Dx%C4Z`)h&0Qz$)6Pye#~ScB!BL_ z$U2&Zko={41?w;iA^9tz(F~=Tg^>IYy|L2FLP(y|8#~P`gyea>@v;z-FFPXuAf;Id z$=|s55E|n$lK<&hT4o_6e_KE_;WV=llK)lCQXEJ~uVx`6f9Jdb*ZD(P2+2R>J&Px< zW+Awmh2V~Yy4kMDLMUd@B(e}bj#8zXT98B*LK=&6<(zvak%d42p)zJ6;0MLc%1Ee~ zMU%)v_zCN27D5tP2z^04WFchKLly$Z@NgM7?UKks(DAjL{siuddFO_T2_}gwgla%3 z)hvW0mVhTzcnfbyWFeS^H)bIuk%iD0MZI!nAtaH7z=HMV%tA;a3!x2nE#=HYNFobi z7Vf5&GYcV!ECkk@UA_XsmP8f;pLUls3n7Utgr&IKSk5d2d`d!F+gHvkge0;M*oGbD zIjn~)1m0a;&Mbr^vJiO3ECik-v8jN9Z@WWuk$?ymVd(~qip0pEVm2*_EQA5v)SiHc zVCSW|oE>*IdLcdePLn@G+9i4K0Wi069D2b`qO|2sYeb!p!$Nk2vlp*Z-^ZhRyV5<2 z8}%LRk!F=LeODVwjY=ty^mJCKE@!FI^wll6sVN}pD$vHWLpb(m=YuGa-#$JdqBgG? zX2#tCrzGU=swWY9L6GfUJrR}MPlK$md%S@ozr$+w1n0K^F=9Rn^;ve4`!!Tge~)c# z&YR=_O8Okdu(^yka8{amGln-C)7O!%7A5~k`i-p9GKw94JpF#X8PA&s)88VgEt7cj zg>*X`)>=h0PpXGxPb}mF;hFRiw!b~S0_6M(t>iktL$Yi{l%n+57|H#-ycsk-$BZWY zecPO{8M+B#UiWSy`g|TsAY9_Qy07Sc`NMjD{JPr7@U-lQRW=a?cwOy3@%>jye+G=s z(I>B~eUub@HT4Z(L%`1UwZ8`!?Z=DBQAF!q2cc!_KNUITq2E9n@Mj%+JJ65YvKKGM z@sgXjkr?5OUCJt3gwocSZ^*qY;#d125d9|-C;g*zh^h*aOY}*pDZz$JJ z0#d9L*AyD~&w3ChV0YTSMb@CPB%@)8_x@i0J=gY8K&2TWn6+F1!@Uo(b{1vmt>v7+ zI!9kTfNGH#yK3y$Nm_RyUrfp~NPp`AwT>-?L8v!mUgc;ECnjgdF{0> zr>dl__Ghp&_J-s!m-mS8ufK&-x;j$qfd@?evyNRu@Y-XmC$PuZ(~X;0dP)U}`&Eu1 zXe@-Cf7Y?zvxZ9El<8CfhJqPMowD%FD8cWL8A+Y8@?pLI?Sa~H&{lh@Cz%f(Y}l7; zz^*o@(1h(Fd#-TYWY`K;<-bZ*|5Y?{jfejlBFCR~tf30a^-scL<8>u(7_);UEHt^P zAB0;!jz<2JFmSJB75rJpj#l}#ejFX?)oRh*m>);mx&ML)rq)H!59`IK8dyXIwO$EH zwSE$f{|eCTqgRI7eu!pR&qfPa;jo8;ZRQ_-UZBdy@oaQ#7LI45GqP}ee;AG*WZ+mw z9M43BNY{Ee#w!Nmm{#rMcqUqIaP*mWJQHm(I5viw@?a3H$D@&37(IZ$Zv^%KA*la& zv?7bf$D^$tjm^3*^>}olxnFGf^0i?!e|?DNi9HZ)>l23N_r(m(p9eT+)%Y}jB3f;5 zE;clOB09z3nBAhE%>G1l4hK^PyR`4vy&t=ZKGM~#jF+)K>ECx7qCVx{uW#?)d3DJ8 zbTrM)Fmzt1=}a3coQy`U_6Pz`^v^oBDs&uCh`WswavN>`o`!i+GR#!w-Z%=G))ksE)wHz zWz*lWqk5weR}4l^yFlOj1E{^xY6Ep~L#0>jHy-kK1Sj`JbBIL4rNXU0@J$#^tVL1v znh^)q`WRdr+>hp7E_L=kQqU1qHwcVqoyPl4|9*bECL%2N;dQs#g#Wr|gnNa~(a#;6 zQ~>L1ZHiiN3wyM;ZKn2&iwaSE&Nfe94A{@;Rm1*q(UBgbOuNQK#~IGdH_aLsoo1T# zS+7|Wd@}k>vzq*7bsI8U{r4LUneB#5`{-q%Hk-Do&`8%ymLcj}0a5n`L=_Grs&E)l zg~N#|@{xK(l?)@Q+<)&8RhdE5muPRlA5l*2`IDjM8t4Q6@C(>ueNKHpqMV{$8&=`_ z50JiBOb3l?D6W~BY_Cq#V-9}#7tt2E-}3OQN$C86_b8Mb$K~rLH`xAVdjfI z0I$z~8qq$tk1jP`o)<-QtEtes4K9cEn}{bwouRg~)XXO$YJ|V|-wHMKpgEyo{}MFp ziAWW1Fa$L`?-kqR6{D_vBjV}G4i5GdmbO-!_lFH++pF@00P|6&wC@4 zyn%|D9(r$NtOvhYRr0-&c5^?wc{ZEy-pHlAr>$xDo(H$ugKK)|-bn7hD#UI!{v=RG zVhjpt8pHm&EfOjBs@-d-0y&Goc0J~`cnoZEbIRvU6|^T}CZ$hpmsgAjRx{Oyq( zgB($ZFR=LsBTu1E(?O2Yr^$HZ&ZJG_lH%)EU_jL4)N6AIrw} zEt?>IgOS{Cf(Q7Wp4Lxs^f_$WO%J7Q4O_k6bo}psXV9++s3?Gp8?5^yWu_y#4URYY zIM9-FY{_N=V~z*oQ~=}70LJD>g$KiMZ*ydf>Ack~O6TTCo4H?MaBTH)Y;3sG1G~Zl z+m2>!kHpCc`i7yl=c$de3=L;JKXskg@z${!XrxL4ldoKkL{R11Ket8XwAI963rN z?W~I*{s=YQMODd-M4taoQ}5QGej$n)DsqSFYj9U?WXjJ`41-_u4TP5)nPWO@eW>Yj z8miw(WQhmweF3~Z0leQym7%BG)c>7KF!fg(Hrc+NyR!9a!WZ9?_Jx}6CH$B1#DhOC zfdBpg{>wgml;6$rKbOdRJr7|=Q2ty{{^vn?BN#syojPOiZZ0SOpUZ4R9~|s7?e1}j zGM4e9=M1o4I_7L0`#>XtsiHf-YdGB1nHc-XDfcJ<^7`Zb(1EMqG!e0={2a~Nso$?9u=)KSmHiO zFGC-5a%D!F`z3BD`0T;)cb+!{uQjL8vk=bqEl3ZS_@|WU2M&hDzw8y-<`uF*UaLCZ z4@ry@A^Nc6H@s|KZ}m#m2c^E~m+B6Uf7C1GbANeI>Z=lC6cRna@t6EM8`d6_YDd$* zE(!7ymOs?+L9dK&RQUcI{`y8BCR|#_ zuEbl@ZF{BMblYbSu-o=Ztzp`O2bz_wdu5to>xlzq60%nom`UOB1MQm!w!x*9D8Vtu z(YS*9M8lVyqt6^@{SB3Pzv$K;mln*NV81kSsn$9AwF9m5*m>7Vgp(`h=(i4-&>v14 zHT36TsBJ5_Vy!eydG;5kDP$r4tYae~@1`j${iZykO9fOMi~4l zB%+unV@$W+aKLEeJeg>;@weAcX;*cdZ?N#kklLxA3nal{cK#SrsBJ$Rc8Np@Gsi>w z&H(L=P+wz6E|D6~MKWkEkx4`YK~|l=MCMZGIVn(UKV9-zH|`w2AEoeT8a%^q@J2)0 zOw$WwfX0R0jyhB4qWGWkLv00=j#fij@@EPq6x6VydG=p^P_eyuoi{YM5N6GuyZnm91QZWxI#v^#PXW6blER zTp43pW#lkdT75ax@7W|JL857s+is*hIR@m>7Y(eT-k1jO!7$1({Y=um-Utt)R5B_3 zEex9V$FL5g?H<@6N^cFo{xMvYN$DTMjaiibcX)`>Mw*hB4aoIB9!}|x0+26Jp*7I;--I)Cy^{v{nXpc@MtNXo20Sfkhpsc$2SpmW`l)8=7@78DxR5KWyUv=z z9}nsrU>#kYc``i1U!ZK}`Y`Hr8QP8{%GVyZ; z&8im+{0dKvtYa?(Xg(L78K6<9p9?QDa(2W({rnKrR!!Xavd#R?Ob@B6e z&l@y7L2IT>LTeQ2r@|_|&>aKh(_!6b=E?H>$}_3TDF*X^zQ!Y->o8jQ`pKkQB2cZAwb zk?^|>KY!+pR_g+o*9I`}_UY_y9YKM*$LHV1P}`>|?C&u!-tNJ;B7pJr0LFU)7|qQT z0fL#YG-)9k^b4uO%(o} z;mZtZSn*cRXqQh~Uufc;q^;MeN3BN$q)7j)W2*updc$K3hx)Xudc!lBvV>`@F?+q? zWyZ=wi*KTKbQ+LX{<{J7usOl8_)Gw@Gd$jt!sd+>y3X*-T7|jV!0a@p6y4j}O=Gh> zLjy;!V;377Gd&!b`RgC{j{+Qv!?hmS2Ik`M6hkL8&?a-{8W{N=40NRjqw5l%|8v82 zKAmdf=Z2>l7%N(PNyhwezM*?ZXrhpvbq3~jo_lad0P`OMn04VsALcfSc3pTrQ@XgS zvy$3W@3-~JR>e6k?9C<7Wos!ne{h5eQrG^#0Qc6$!QTbr zX|-{D{^;bgXxzEQb9`F=NbB(@M-#8qHGL1HbOOrgyd@f%_-|y`PYmL--#3Vd8h59M z_$N*|;}@|+Vi5ntsWyna4dR!aTo%QrAhHnuY#8GEe8f&@;G1y25biA)nBVS%iLJh)^ZuVV{s*>>9F*Z*?s0Cv5qihZxuVvySbAyVI--KVA_^ z1!E^zWtDc;>Sk>$?v3qO+&r2(7u?ToE})siJ#CE|LZ)o+fj8yEsz)gv+~(vF9R#TL z<4N4V-SHODH^S~Q6m#M?2kukJfUf6wi-+h_ouCo1A6?X=AAA9QEpYC-U3x znu4zj%0C^Hzuu|wFo&AnO^NAuB5(G}Umuj8GRueG@0agx)|A+OXR4X&&2IiC(e*ov z3@=u+YFg@m-x7E~x05;Z48P}p#{i!a@Y{kTWcckBfekbK#=YV9e8X?t6NmCs86G^q zz@i+-1H*A_Z7Ij`z;OKd!PevK!}(4w5mI24;|qN{yBq%1BWz22PStpTTx2IU)_ zk*0jNSx{+miVXo9ThA1rdb59z<-QqYeU%gW{nG}}{Q2yxQ=F>vm-xv$~?O)c=bF8Zo%rtIlIEJV1*I9b9Rl{ zzFZt?`xO=S7q)Jpz14#-^ z0EW>Nf|m@2OFaxr0~+7sVR*?Nk%i$U+uLIGFuY_pdl*7(KV~2)^_84VPH>=SrT9?p)s4@w_ zoN8YxXYIh3q`GR)X#E}I`mpKO)o$+k z#zE-1=9!x-Lu02=#yS+%eh=1|0M<2xh4LNaJy4;sx#Z;{EkDaE52sE4tYaVc$}g(- z%TIray*E$GS9s+|2j!pf%Fi1elwV9vT$210%KYe?rXbvN{j-jh&IhmFL7lopS7*Ta zaa;OuHsEiMl*Oe_v@ma2D^<)a=b8?2t<|Q)-n2I|2K?#|b!AU8Z5nl-+DajHA&%&js zO$5P%vY1zM>nAlOb=uc5Bd3jUs!zENKrNr3_DzSid6h$NI;8yAu7R_ zE3!nlG^rrUG9@?^D$l&l$w}tq=1?drs=;2rw6hW`QyoTT(u0mqWxcH$ zF2~jFp+%~AOHvf9p?+7f_WRuvY^>~Mi`|&va#$P4%`4SntS6&^7S#EYSf5?X$LdMj zI8WLxMA3K>uq4%9M&cWWgnWXhF#)bdPap7r`p|SCm>$07SCMWi55A}1OTJ-PtJkPN z@!B$LXQ}nX%s0c@*q-?=OA{wu@Xi0PX*9}zD^1JRs1ey3Rhg|(BRv(!(8y7NIOE~4 zv7u_X0Kp3T5;d%7O(tZ@_h?^V#taGikisc0U#y_8|8I(jZ+#1m^-X1u*_xTv zedxSw&BRvy5J;ohPH{G&5&?^B=4(bKvO4Zkods3-Rt!@+tsNNeVUxQo z0ea=sF4NKva|UWXi3%W(^##dyA@F9H@vk2e$Z?*n2&#_{EREJ1hOL3^@JERWzU($$ zaCBfFHw`yM&BN_pOD10_?yZ@?eDt0f%$m?;y!#ty$5_CO`@>SgAC_|b4$U1JFxbwd zFJWd_%F7;&@-H+Rx&CNWFfDEL{{OEn=|*-El7q9;jYX#m!H zK)s+oY3CD)zuXZ#z(NOyW#|G{OET6`u+Wjce1fG8795pHC`?!8?U3SCXDeQfM}~SE zm|A5kUY0Ln6pu0=u!Ax)HV|4JX?@A?2FSYMGB>owkuflPg?)ukVhDTukg|A-8rZ7# zlrAWgr2)gxV}0XQmnVI7P=*s57d3(|QFZXz8kB$zWP%%p3=10Fzq$0&?QZwS3w&JO%F)Q>Ku=x8L#>lxQl_-2_2$(TffKR zvV}k1;D3huHV^FG)4YAxmK_6EZf)MYy?<}0$-fPScJI3OnjKrOX~I4SJ}GeR)m!&A z^&#Cqw737t?YsIL@o!hwgMpzZoBQy_83Lg`D<(`yw ze9PI|CewKulyN-uODRt?q==`x1=z#RQrXSZpuC=^ep$%V44KDMtWeS&lDkhzk4kb- z@(xMGqv8(A=tDATP{t3+ylqmrO;U#?5$luqKCyaaR*Q@r5G&Rr6I#UWl=7ug+%3@= zBE6EoRC2ndbcV!_igk}nn)STIUKFPpxU9(Y#Aw$S%GgM3x{Mf)kVKm$+{0!LF}pSryF@AmC4o-4 zTV7{av52QZX)zpW{8;x%i+aR9u7&8C(vR}Bi2&_h8jAc4eh|o z47#e>P)J7cQm?Hu_1|_*va%YI!A<1E|aw4%yB{?8A(&{sC zM4a~=j1BhA9QqT%wb(-sE^y^sTBT4P!O@Pff#Gd9h+anY80(f49>pT|{%6qgk{FRaq};~?n|Irw^L7|^@B?vL#(#t* z`pYci)tmP0-MZ(mW*lj3ckb<_iS_KJhak8g=-dmWOAu%r)6R6~ky55kgG9+IL# zi5-$Oj;G~PwAF4B%7HzIy-T$Glwmqv^R9`uZ(^s!4qr^!%AO(U)@hkOOA_|vQrOS6 zvam&BFTf^B{y$MKV@=XU_}#{!drEmktYxwoGKgL{EjedIwu#dNAf3e$-!E2&Ea;PI zr=eM$;Dr23?ciY=AGGv=yWitd$U z>?p>SCMmq^O9?r(4eH7P(0xb;ktT8P@Gk0KFVO>%k1mSdAbECE zi9{ZfLgx*qWF&@&CW$&ZCq$fNmE@k0Id@3wDOtE)$s1$H8FNTVPs+kOU-_(dr-To( zTKEPiPg5zSVQQZ=;{!D^aX{MlNz;H#8IaZiY1}8x1JbrnT5yZ!`=kuxQG6(!nBnD3Q5^~)TdX3#$=a#lcQi=F&#i97XGl+^fwxQBShy6*(j+?mpkwa=#!gBo?2E+OBz0Qy z9~jbxiNBUY3Oq2YZ}BlW0PqGUIG5SNfMIV5Fgps+8{kc>u? zK@I?)l<+kYN85X3c8gR7Hb?RgOYUK>t%)9qfZwK*avqi9+a>-v?UR;AB>sXF!Z|xk z!jpDOT5?WNg)5;e=Bl6-ENYUZ6Nmpe>|JH6j2)0PpSC*N;W0YpRg%0%%Fy5@8S{Dx zAAmo17;i2gjrze(z^-AEMeFxB{CI2*sfkZP~z(E&c zrVZI9i4IA9Oz0k=>(sSArQEx7H#?TrH#L|_u^B{=sn^flUO;MuoJ zH1-UhoDv82(4LkC=2KF%Pa@kSuSe|9q4v|PJ->zY7^p5@9EYt<2c%2lw50EaQx>~P zU`P!QrV$4W{28f*oE4$5=r%B{;*dmQEmH3_>99ngS>^`1kng+^K88nq;Sq_$2Y~#x zaJ-ocl$Fqu6fFIjA>^a*xa|BhlKL^tGpsTyKqLZs>wCmK&#s40p5LTC3d~+H8sP}HOTCS4#K`DU*-yp8tR4mp$ndgr^;J@Qch@Fry8{k~l z4PJf^BA)V^Q1^O?9DsDAk&uHD8NE&_I7~H*dnatd85FEl>LtBRs=>L3crmVrLly>^ z(woHDF7{~ULXXVcLDS1A4)`$^<|7$9DS1av!gNB@^G-`#m3>p6J)uzSAA{U+X+e=< zSYMnRjFD($&T5Ha?zG`No0=ZP`~^Px$Bft25O`g!vy4SDQkV}Z{I!&sUdo4s{+LX` z4Vtf#6o?;WCf~Wn7r(fZ+l|h!ZMbH0;SD*VFaO1E+TN`@uimtG@BcwR&Bu6Q$E_ER z+Yi0q$YOg&p%h~XbrSY2OoqvJ%bu5l<$vON8TDt!)*|5?BYa5QwUpWt$m=$lbCkxf zz|3-9bG)MWf$?g2N@n#)9VV2RH*b^rqXM@9rmgZQyDf86f8~%j2G!x=UtHmuh`p+q zh3TBa?cvNFriTK7dCi<2X&&TAsPp58=%$F>m6p1TF1$($w}CH%QhO2b+mtC6S(qFwl2OhZVLqMI z2`O_f!y-b-Qlm6jd>|W6NZM(F5ptHD!qwyxlH)8oC6+V&ge->U!Gn#%G{nw{bY@&N z|LdhhgBbu;)@Wv`u!h%=T&#(JZtIYAwMezLJAo+? zsi;1rqft4Ue_E=YT)W;PUQTq1oNM|?Vv&+qYd4hoBwDYRWi1pLjt2{7NikeU_>`#Q z4W@~wMQZT&Y3ZCLdFLhFFZF=kV$mV5hnyw*aj0Ks&V}owv|s(_o@%M5(~g&QEfB+Q zF0IvriddBtwPF_3jU|Z5)o^d$gvn<;sVFaSgQkpE zWja6J-lFSs$!7FRlZ@=(Dn|J}2*hbAg3w`-=#9hT zOk6M1U^W&>$)!?hE;{vMv0Yy*E*5_=7lW@qLnbc2K*{(G!;5h>8)M=Uo-p2-yNM6J zYF$|e^V3H(m~zDWWlV?U4@v{NbE%~IXk^AMl@=((Qkk?~W?s3-XNCU zRw_#a-R0WUQYm@J<4RkxJH@{Q}&AYU4oWpXrs-SAgx4*9AS3>%aZU8TX;fpuc&TN$Po@Ilbp>MJC9 zy;Luk+$`V$rYaPZD`Scj0_|dGg{BA29IEI zmbcK#l)|dE!>XP|Ba6Um%wDh#QMpbEv}(~h`bxu|pp5BBK7YL$zlBn{OkKW3QrXG6 z^(BJ3a0RjURHVn`Po!oIy9eTsylEZgEWNB+in~J_W6kTJ!HsA!+LzHvaH)8`6o7<& zsk{k*G1+Y^L3=VP>y89|K_U|SZne|hV#qNYS(P9sjd zUtX^=#OblASx(7huW-;(Sq+|;`g{EPbrE(Z)dO==h+Pi^u8$+RXHYN7{#lOOuS?B; z#QvERdiLT?pKiMe~sw(lCarm=U|KyzzLQ)^R8uvIr~ z(@xisFJ{*cKd)`pn`dku*uH~XdPukoHu#3`=fQycTY`Nd@5WoQ#$8A*hj~1;hXByr zQVX9jhFDiiu3ejwoEOB7eaCK0!K%RHIRSIE9bqdgP#6M` z2GqKWeMG|dz{^c36_2xgF4mpUt{$mZaJlz-x4AKVTFh(kvY~>QKeGW^^;J>nib%JF zdjnKolhhirshkZv!WBUWt6!}c)-XuU;IRNyf~U!&Xkn-1=-#k$d%w(G&t^1fV_@QO zonxA$?>nV}@9`x2X&To35J498a9DP+UDPA1fM}^S&yXp+fC4yZW_G>G_0oP5XFjE~ zc%0ZF@f)RdCXZ<>(vrp=NWae=Qd_!S(uyi+wsS8eN8ouHlB3mMwRiugg$%Qtwv5JO zYaJA&ov$6>B3xpIQ_4ZhDVX8JXE^X*;`7CsKc6=)Zg6l)z*yY-lj*6&H0SUCi?w2@Ops=uH4~Q%;*W$nbasybk{r{_m- zeD!^ID`KxpNzd&VZhQZHag@Lc;O4YJ`1D_b&wv2V%a23pXUb@9Av$o$)#uwLweOuAHDHoAR|K)(V-%00FstFa-QU=<8n_y+q!05r`RbLBuJ!LfQ4_tC$L#&8F{bN~2d& z+jcSC;FI#_X;4Yc5Z&RrB62a>;^EWnvB*WVWZgxySz}lXL)RXM7S7}~0)$^g$AHWZWbp&VPjL zO%_I{BL}&5_*Vh>D-Yz+zaGe6D#*BVyMly?x{QspkFdQ?jK{EEt5X@}y(kxAh6{0R zbPlzaGdRE64)p?t|S@azgT-5roeq%-#|P@+f2pd$c8u5*?6ytlGZ%OO|ZL z*zz5FObY+=HgXO}TjkOVhoibi^g)ce36ro9F>1VWz8R{LHs=$dqXt_$Yo*8xQ5OMX z6OqL(3a1WRv54c+LR2_=5FGWlM3X}_*ml5{6(`1J7lBJkF=Ah2QI5f2A&Qq@0T<$w zh;a)pf@i%x+gqxzOR}mP-pTVaW*y^7sxe0&iItsnw^U*O5%Ed=oPk#8Eh3<>*jd|~ zaeIUTHbZZZh^zx$7uEUeQ&O`|QDaq2PD%t7gJpY|ab36Sj9epQF(JeFUoi8}L)P5@ zaHSXf#wZ=Dm+*KQUoGJyXjg%=1c6JIGp$NiI=PR~Aw-naajbh{LVHG1{Sv{xi>~Lx zTh)0d^nyrF$Yh+bQi8w_EarP5n_PvqpJ%`ho{eI;Zu9DduHLY?zRE6+>1wX;9&6kv z;-s`#t$~1j3ebR9U(ir$9%;1q3616jP=qG{pGRK1p&?Hpcx%V{>V!<>P)d}gRmGhFeuG2GW(j20G1Z*wP{&(973qxI>H$3*u4bw+8%`IA$7DmxQW;* zX$S#Umj)!&ipUlO@tu-HljOle?vU80MBXfM1d(A09i53VBCPBSmZA2c(-1h4hnPW} zw!dExJW{_DB6IqrwB8}%ZH!gn3PgafZQ^y#3Tj__gD|Wj3$Zj zsR6Up=lQV+&;bS~_6{7mV4I9w$4$)Sqi9HvEINm!fI?Y>h`l4&;=Eld`_;9!Z}p0+ z`@kx=x1Ig8uU4cxf?#ZX{hinJA-q^bx((`C1%Y}Ppw_97y>^eG9+-1kk?Fbfk#n*# z@(dO(n{`W~NiI3ci!>G!Djt_KHb<6A`hdh=rv&^NAu_Og%OpOYd#%sNjN9!-#5-f9 z%_*=aT6S{^GKqt2H>d3hDSJX1-Odo8m$9{S*h_0kh8{KiDJbJsztd#-S zRK5p~!m*Ewd(Z@GVONEn`xzYU2x8nLKzSqj@pl7>Nq+k_C7}W1~GM!JGsHg zW@ZtxG_x@mONb6EB!whJ!67Od;w>3Zi1Y{=a@^@d>?`ulBR42Q(>hdycH1wqO&WL? zL!=_l2oTWQ4#gRD-lX1Ab`v?sYZIOLBd^v-44LfjM`M@DxY&2NiVs$(0NDem4xL9_ z2x*E5HF#)E-?Z`KC*)gNXl%pTpn-VJpG{io+2Btmioy!``vVq|KU7kg+3JY@$9YmBbx;P+>BZN08F{du%?k=y<5&QdPw8d`8R z_B8Y#K|io`Hd?IzA?y^(#gmA-p$k`ycUhCRtpA)%n#nH9GKa8X+eTKQ%!#eK9zWbbfPSjIlP0Gyo)W;n_$$ zgNK^vmH1^0iHLVmRK~VQ>L}lsttN)YcM<2k1!rSr3*I$&@5ZDU-bMbZ z>*NKMv)0&@jJ;O($Ui3yeK5ILM@B3?+_og9R_Ka45{t1L31~2~xotT0iqndrpK(Zt z_SJNUWlp>aR^>cuA+x6dUS%5U1oyuPp{-cTKO@r-wKpKOh*`rbzKL;nkO+ajR)mff zy@{m|PlX!ji8ky_A!+kLna~GPo|edA5aras9+x>=x;e>0EDW*&bJj}Xy$q0P!h8sZ zwMV9(hJCJqyM^sG34zdoBtbCAF}hgOTx|>;@1YGsm)Y4iLJS7yef&cIst^d7Ncu%O5lXu^Z7WTznR*B z6CXyYH&jsyeF9@R2f+mP3emn{*!qZVd>eC|(6_1Hr=OOxr#YUK9mbKj@$aw*lys=b z)A$=!Odpw|9Zn&12C?qwvBMDg+a(u655gs(v)LC3toMM4Xta(f2-MGinR6B@%p9l$ zd{bQY05yy{qC^`Q%7BJ9z~KAGsd}AxOpbwcBAj452TZiL0GTHW|8j)KU_OP&d&p>y zY;Hk6pM-KD(E|K|ae(lt0fR+AEJBaGp#_t@$XT%wWPnnFEV4dE{vtMEsD{q3Q3FBw zgwlgN$}1x1HjKdZqK67*fo^FvgC}>+HEE(gw)T|zQhWj{(IFH30X8U8eW5ZGbMO_; zd=yp}(le9!6mj@8mOU<|eDtrY)led2!bZH$X+1)DfC_P6DZ2(!$d@IBywBKNg42Zo z%tq}-`~VLaiY#g{A_w||;8<)|bAx=AX*BIs&vE9C+Hmp#lg<#6LHJ?{SO$$up;df@ zsCTEd$?ief7@|hmrE#Q*K*m~QhdHd{mX@$r8e(fNRBY0)V(r6=*>!1xn}tLU#-`e| zuyJk(bikNi2x1#b+K@an4fSTU*gG?cV^}gCFGR2B0W_i6fQC&j$$wtr;B$w}90u2J z&^l8AICdWK&yWlZB-BlRC^}`7+2riODW;Q;6Jr$MzHs3U`5NjugUubp(b-~;EtH(I z^ko^CRmXAE8?s=la6@;UDj)8X{2pxM!MOHH0TYD~s)K0J*Eqr#OzsB<5P9WX4XMv{ zQcqETl0Co_M@LymM(G5nFM29ASpZ4OAu=?98g(MHT=Y?3> zef49!Rr2;j3ZV)h53@)ojr2gKoQ{44m5boM=Ry8rHwn_);sb{zjhXBz$;W&dDddfU zSvi+7u=>oo5cEE_90TTI$zRJAA7>l$Q}K<1GKA0dGYBbXouuulX$;W|3TM(-JH1l8 z4x+oDke-eMVF1d6y%cj=T#W3& z>N%}df&{v_vk;3oaOs_y2u;E8+aVneGEbR_SODcpos@!mprv?oNa_(K4^_tU16_WY zEqv4gt5--?gJ%o@cs;-LKzAo%+n90 zxJ;RaykRxqF`TfX0pAH;Q#HyW2HZip2tP+asxif9*C4x!a;dWF>NgtB>4paZ#ngmz_JS-hG!b`uo8fE zic?a!Uq--hnIWS(m^F`2j39_CZ-z|XFI`xRIU?h*YbA5_5@G@o5KIQ>Y{Cn@UBXM5 zXb&GOj&1ld#2?PILH~PsqlB;F-5R!XxiG% zm2$*$Mv>8rR?bpZYRl1nZESoa`v|!zuMQK7{jUKNu|K(({3ig=xfYSBSXOcp*qeq* zwq*8EIcGyb2f_1;93IG|7T-e{Mr}R9_~DS_iyTe@X&Gn|)>#COb_$;%arPY{&T%M% z^-^a)!e&pQU=l0l&UR$jIF(h1E(EI{rI;47{Y_GKJJ##5KQN%(YPah`dhB`jXSa;U z3F~CD^L#N>bA!163&X^}o3;ufmp+5>52qU?*-7hw*;9It#6M_ekj;IxOi&q>Ubq1; zP=g2rh2&Dx)o6rIGX6h_6|{VO90hbIkl}=+rW$T>Kx1=1%Apajy?rK921U^MEC!_Y zoEBhpYYZQEOTj+Dsxqd$<%gK|07b|44t7(N47C9C`C+*5tp*2MEX*lRL4c5Sq_fu= zj8gCl;p3l{g_xk77uWFT5i$fl#)&&DHjgt+&gFh7#lV308w8jEBi7Z=azg21i;Xm4 zc6^jMw~*}uNI0%l&I^07_C0`UyMu1kWet!G>&q%Vh?z%&kz8I5hk=u44DEwb3vIjw zy9D485^@J+G+YOa5$45VnFN_ax|9VcV@}JtjN0j5T3^(5F|Q*0wXihPBKtDSU=n7< zJ|?57L65PF`Fe{NTxOyx5Q#D=6}Dxq^QEi%?YcrKMOvyozT6&*joU}z-84b?tC)BP zvPNRf4-X2=gX#gP$6D!9?6RW39VnnUUUO@Pmc@=Z1K3Q~!dStJV0sM2r~lrD!3{ly zZGtOj!6J+}3sUgdhPRBqWM+2Uo(7Nov~Xb#PQY0i$(e^R7qFV%GmLC8o?)X)xJzB- zzvcc)B|_4X%}tr*UpVX~a1OpBmG^){a1_}%XW%JViad0B3^orw8h$0L8t#bL%Q#Db2@4)q z>El0O+lLbr?|B^4aWs+@_k++}E?O8-LRU9Nkg@*|_EtDr;9t!w44EZh80N24Y=0d@ zEX65LaqJCJ1|5ZmeFqvoQ>xi;2sKj6;A)MQq&>Yn*3lZf2md>Jn!t;KDyhIciH&$P z^1Oz)ukPwtuzbVno)rr=%2ot9q7gm^WwTg4M$xu2`^g9>L-l>o;xL-hb`z_w&25s&p*qxx8!T{0$4c zR%Vv;A1~_cnmea6v|$4x<|npo=+7)e5>|AsS*0td8%#5H4eZ!~%ii7{TQiHUT(W5K z>J4*NuI#!zqxAMSZQZkB%bu;9`nO^gcEhF}J9cl`)W3VrhD}@gx9{GyVcVXqSx|hU z7LXTJ`+PPrWstpTXw+39u=p4dW-nIIbFMJv=U%aFfEl*(2m`^daLv>uxs!3-d$U-tOENp3$9t-vApZ@<(ZF2(VS)I z{Z(_8&maC`^^(r{3qs9(yLWDF-n?h)t}8d~YQA#ozUD2>T=mW@?bE+x;f1m^wP`1QJAU(~EmsX(oe6Kj^7$K9tzNlc&N9dwvoj{Q zzf$1lb#-wvy(-;0)JQQ*s~3UFpcUxm@CC9jk>MdV4)P?rzu=^@-%(&R%{jas{=BX=FcTLjx?*M5Jfra!>VRcSmP6$;s!{N0%jTHQ z@7>xzyt9XwUbSG^64Q?vV0=R7%~=JTc-5{Al$GH%7aA4a+qZj9zv_gxdT;-xJ^e#k zHN4Uyh!jj|Xv+Y81UCaC3178(PL|y>>^5?-W%rJOox4n{AV{WFSsD=NH08n=z#ZHB zAt4*~@7|MT%>CBEV6R!Zd>E%pRn?!pJ2vg@+puN#K(@YGG*UVe3+*$~|Sg|{+MMOl4NBO4OfRtVRTX*4$mxkv7x?y7KL#Jtm z>9}(Dz~<}`pmV`Oe*nnn0>9e)t_zWhF=@e)MazeJR#|kRkpf>`pi*W)_7!CLnq>=C zE}0kVTHe#W0ip$~J%7Q5jwP@)MgcDHVp-SxH5}JA@7}#*!>-*|ZVm0(y&D2X5X-=v zIg1vUA>1>=8^AT%ZMAOOcWv8kDw+Mg3t^ty*)^}@0`NGZbY7<8?FvZB>Yfb?*DRm6 zdP&#v4I4sN@7cO<14qam7XqnjvukTF#!`b_sZ~c~$?}C=ro{_8yXLH(*khvuJ}c+6(4~HtpT8d5Dr>J*S*U*QmS!?A06oztXM+ysoNBZ(4*xDU_G36d}A( zAhtZKppfR#29h-7Q7EXVx49?HrAcnQH)$G1u_y{Chz_8R$Tu*K3?eEz1Ea!><)Qfc zMs#Grck#gh%78FpKX73FwbsARD>shcH|P7>bI*U)UVHDg)?RzaX4?AL~)Jlt!mwsc2=m5s^h;vzuU|2>9%lZflm^o&DV{1FdVaitL#h>w;^> z-$6%wsckwQt;dyN`;A65idb{gXmw)=f*Y!pCWkTssac?DPm7S3VSg(+0?n*fPrJ18 z=dDybTM;EiHz2(mG-UZt##<+?Q&6eZEc9)VRpJsG_@ch{{ir4}DKhw}1WSA%M$p>(DYL1H$x z8RUZ4Mmksg5^XiI5$(8Un+QFd+C~t2jLPw_Njovw&6V+TguiqNzu;EWFRr-?*f|`=oK}oJ2|W+QEB(H;Y@S+ATEDstgShC5*?@E_~@gI-sgHXe#w+ z<#>pS&#_XwpZX|FUP+Lm~!zHx;qF}UP7U%&dKBxr6T3o3 zT0+aHWli)Pk*a82+<7M=KgtSTW2!cu5kdtPGg%p~#I-sCANddM4E8OaNZXkC&<0l9 z(zhBREJkV#-u1Mv#>ghbTXE(Oh8<%Q7#206lNhNHp0-PSTM*D7LOw)`X!x7QtJ4-2 zc}2D6tY+$U@;b0NkOt+}zM7&!;Ss&p#mb=Rg8eN zkwrQ>pnWEWDJt-YPrB0vwU>Z5^}6Rt5Z6eK-Gf~NoxNS_VIpxXT1U(%TFoZz)%aB% zo)#pT`9iIIR26E{*PvY5EQ6jlf?!eN<2uEKh(%ouQppeuwBUxoSnAzSiKashq0Pq7 zU5u6{;QREkZmooC54FJk@mMd;g6tPT(YE4pL|sc+)FV%qMmM7|hz^XeSV1}ugYjai zT%C@~IsQJ|=kqhZj`+B>FV#EJ(9|Ir zvPw;pKx&~RAB|BjCpR(sQzLH-Hj-&A9;>FwtlwY`8XxgDqG|q03KC(epfVonP~6NI zEJ&)VV^=*lEOlC>LmL@`%+1V1{YGZ;N}n^;NGL@9qZ6u*VFP{8HVG&UY zGvmnHy#UJ)p!FKu`T97n7f$gKkZ_ zZcMdsEY!&Bb*)|7TNpBh^E#tWOh0w>t?iCFFn!oR3mFtdUZJB8L)Ebf_|&9XBEl@s zAe2P`s}rFzj)>esBc@Tlok*-)B&Ys0T?v=een#VsklXOE=ib$xmIS|()R+%xi&o;D z>Pyu>S&d|&b($?QX<23UK*osOq>lL2ySBF#-7;$|oRZ%I%nekn0~cgqWZcrvQK~s+ zZMc>4Rx5$#jJRe>X5Q?>2>D|stOt{rGA$H!pi?Gnf)+W5vaGYyFkA-Y@n}4zJztus z&VwK=STH{11G=z8j+tg5Z>1I*N;1zLM8=3WbttR(@7FaUuVh0dy~WF#Aj#B4r) zC8qO1!YL6a#dbYO4TVQI;FyBD@~Rpw!^mu zNheizqtKQxxGJxFnX%C+y_6m^IaV4;(0;D65g{0iLUkZy^nzzp&#ELyV&7tYVg+6x z%>DMXIs;LR6cjn+aLjHd=8oUWOlqU-MP&LmhbWB>AftXvg@bE%d-vMD^-+K41&O4) zyjg%({{ZH8!! z>$7@5!llv}(P5-Y-iz0es#`PD%z&uwSDeb4XMjN|olb>A^Fy`DgtROQ+-iZ(X=r$A z4((et1b4S)4JjIxsE#GewqwXL$0=GV5&?hphi-EELh1ul*pV6)-lGUfQIKA0QH+#hIswUxY;hQXtV|wBl5Jvqa~s z&C@F{UflV^mMfr6bf695TzrqRp{R7bqD(L~_Rz6fkyu;%xff8G;-9U%k90Vjl>|6y zW=WY=$|L+%TXgndcdu$kT2GghQ|m2dNZml++5z?KiVg(zBO(UjVun4?4ogNG%rtq; z5p0mS%aR}pk};UezycMPlRikr27PGNZOoPm9Hdfb`GiYFYA0wOMzXWYSgVC2w)`NJ zD&;3ulCv@P6=2%GrY~*S@-Uc`)5k%QJs60{`7?0_fZZ8L3Eg7)wFNSBor}k(mCim) zUL_p784CwCkI;`H{wO}q#$-CcbU9{%ONT7}L@7mMt?ixK`^axhCwta??fAl% zebBZdHOzQ@#33n>JQxu;rOEk_yh+pGjit$SiR#lRKhdPM4YS@cv9wpY9Q&j%*bFqQpk=-dSEjoZ=urQ z*I_AvPdkd;cWYQ8Nz@Zb>-FMGL(zC3Gijtj9D8Xgc((UQVjwNBS*S2gd>WLN^*KHz zV`z8F>dsaejDAzk^vhl}^bcAf^%g9y7=;J9(zY=S;2U%m@=HaFx0D=BW}k(fGd> zPiXV>;`g+hRY=WH0rX_@NkvE{Fp#K4i-1>*fTh@?XlLNQNhjf0E!86A;WX9{iGaGy z9PuludQy0yHg72{ma1}7*HR#B84!W4tq+4U$qk&~plmFq0BADfnWO`+0Jr{`)v{pB zLUvOfXBaVxl~q>qrCB8=&R+}>-^nF@tDuiY#v-h=$KgX__)_YuDM@`r9obfIKF;f@ z?vn;7>?vg(z2%<=!{&I#6)oDJVx&aYe9S)NmBzqgb!i+wAgTq&{`M~I#qhQRrFB>` zHlaa%62SU66W<`hsx?su)_p}-LC_wZ*M|=dI+1{p{J4w_@V`w(q7RS{z>&lNVn+3G z9gh!V3?E9PKK10>&Rf&o(~1R1?W^I%9Mta!QD+a93*ggswH_g!jf1QL!F*IyD~;px ztWLdRZB8%B)EDW8cUjHW(Sql;2(z$QxrN-VVEBH7*hr#JT|xz1qh57>?&)hbJLHxh z4Pox8CQmk>z!?(-Y%Ho{FnrgsJd$+sWr1a_W6p45q=b)1x#C7Gw(fzY$Nb%B41<&A z+iH^rwSJwTte2zVvM_cThGDFpDM#^E%y;PLJek{_QwUg#)Qf3w8Mw)~9~zks8)uLc zr)i{aRu#5Xw(-(LCThm^j6j2*($9(+)6dkWQ>omc)u~_hZ!a@X1LcCC$0>b5)&y#GVat#B!oI<^+-iK zVZQ}HhkY1X!$HBV>THDu#@1v+6Lol%GSuP5rHfoDnEFI&Es-x#D%Kxg>kwp5M`an9 z(_6xRHcgIT>{md;u@l! zvIWgZg?@xp)|}MQ31_iKEDM-PjI%z1P-SzXGzwjwX_>04wAGEom=8#NQbSqwA_5$U z*0gu^CT!ISO8#n{Q*iWn&~||WK_K!-!^MoOx*(a1#r)_{!UOYeWfd%}w;q)%_~4t4 z=&BQ#5C-`cAvYt%M7ow!Kc3Jzt(}l~*wkX~71EDu666Q={j zM;u!%MBg>d9v)v;w0{C~r^v~f)4SGL;WNX~h;&w7l%dgT-K8!XNjgi+D8MCRX}|if zMB?~xDyvm=LQxfF{tll%Ya(TZY^8yjD)PyvO}lam44wtiK#-M5QWH#Sc-az_sd+{9 z>QrqAQ}|*g`uSFzOeK!v(@xRWhb{|iGqaYEcBr}%N#tu%#SEKfV@V`KGn%}i_njBU zD&?|dr)!#+R+pS+^ZxT*3lqU@*8VYT1?l56lYCt?v8tIR0!nMXxng~(zR#&sn+@cJ zGP}By^wx|M1J|WP?8hl=8)1ssCV8pWJ;v82$nI`>L>HeV!jVr)(mZ^4i=nM*DB+}^ zp5#e&gops$-E^%qF@gR|#=;T;1lw|f;1ixdwQ+qE#|-Z&9Mq3k!{C=2GjeZOjB;dn zVv(pW+rnCZ$kl1AOT>!J_Jl?wz@)qqmIU~(#DOvtk(g1|8p&6UAkkQoLYtl!4{w6W zvxenFe>V8T!l4#SQm@7)0HmfaL@322 ze;Xov5N8U>^~?ghKgYX0rT;tKVw@c$m(%@W4tl4%n)FV$a}Ii^+fI6?dua}Or>o(t zBe|UJEVebmmxS#N z@ugwg`x?=|CNBU!%?}67fiIf_KX?xOwR7Ny%z+;|3zt&w8h-yu@rAUwM)>}~=Y>V# zj>GaP4kW&#fFDb|>F_+g{6VE%LMk_x-r0)J*5f`CAzK8s0$o~N1-%$Fc;Zo|?%lW-I`0HP@3QNMa_mGme-!k8uE;C>`p5=N0|3sc& zpo@lO`;Hxb`K{KKSgAwF@60bjziT;~x#{4{%B z$gZGF{GQVd|2qBF6!8;?Ut_O>R8z`7Z;b&5;#sb1h+lf9J#Qd>Bk`|w7~V?!GsGV| z%kU4{Eqs;uXo~?&EYJ6eUq!*(K>8<$AJcBY$MG!JPU1^C?Rg#Xz2V2D{9|H}xVG#6 zAskEmgmVlygY;(t-v$0{!;uCoA^jlfD_sWMO!_M6w~^jG!ux-~FR=7Kvs?Hc@iQ+p!0rF%#QWcB_;I9viufhOKSbQ?_3@)D z!@Y>VK>EGjWC~8A$}$4 zHFEyS-P{s{3EEYFR^e>-G^*OLCr zz#HlPo22)@uel%ODA&)3_m0~0S$LM~IpUw+WY5prEzCzd7CGNMV!*eEFDCxsssZBf z&WK}gTol{GsNNJ zT1dHl0C*$$Tn~H~_}d-gaBywY|3kQW4*Ji{fqxme$jARC)WOmL;<}Ic3-7mQ_isNU z{=Ul%Z(=#0Azt}_;lH$7*ah*N@c;A`20TFeeTZLtr{OP={t)7qUvEG+@fE~pt}@_L z)cYC452l0PjAyydCjLY6x#3{L-$wi#I@D&C=N-V+kDYG70Y)A!C%%oi!~t^MNIums z+4Dk{=Qh&c^hV>uVugPs{nTAX-$Fb2y3#KVJJ`=|v)AEa(%&V2As5$ei9OmrF;9%lRBe{Nw`O3|#bh;(f;8GjF?z_pLpp3dv<@jnfTP#4flTP65@*2D%^V8$Jef0P9$zSi+u z^7#3RF9{oHpPuhV;F9mNbW}%Ep7Oqt9Hx}dzTqlY2+JwAM)dCmeF*!_8rNK>d}fbp zZX|tid~}E6v&UKYE1%ipo#{nVuZ1BrN&e~eBhc@M`Yz}A4$V!kCyAf)h&|syJU|da zzh{pDJ_0#NaVJXe$CLh)y-of*`RXmiFPk#pEaH8{@BXy`3@gKiIrvY_fqwva6M1HD z&m(|oLjO`6_uayL-}wup_I~_s;{FF;7tkKQOZ@61jNaw&8{&_%q8D1Vbt*{YcK4r* zel_uVdzd^AB7QRqyC3oI{nP-41>tbw*OULbq(6=L|2$>Dqr_JM-xvO{={U=f*@iyS zAN8;ivU>{`5q~cO{D^!mA%5t88t`V~*AZW~n{oaK@y`(VGp^r2{GW+mv4_$BfcX8y zE3}7Y#DAhVA2PRRNPj!?eJd;0y^qLq_BC%$lk+vqkl}1NjQD*oTN=0X<-ixiPDbb- zoa1Sv|EnJxBI8xLRuey&?Zw9n>xrMRj}>qo{Ha{Sz(p@d6!fx{^iS<#^glH6@P6Vq zQ?XYP|CO}Ud9&wdu2XsvWp1~U&n@$f|3#GBSBNis+K8`Xng@YPIS(t8^N~6DKTkei zpk19sK7S(q@NW%RNqkSZBxx7F{-Xg5gTgZ6zxww){qex}MgMXW^>QrvoKE`tCJp!p z;ysGY6aUB)26%h_Z{nYQ&hTd#U(JW#Yt$~50GE0lS*X|1O1~%^ z*lT>;znwM*pR-9n^b?~WrCpVY-#|lNZm&a)_-@pDEAdN-zx_l5b|;^YDNdry?Jm-P z<4FVQzQeu5FFVQb-)Xg!m^IIFFLg1z{Q_DM1QiFd@dyY zGxTF@24R%=_9ezRCjC2!-|?6M4-vnb`1s=ne3AHV#QpD&zZ(6STwfu+=y&!^afb(p zU$&>^`&aflJVbmM<$MJ3pAtWv6GERQzCZBA;y>@AV2J;b_Pp&d1H8X}ihOpmzw>zG zMdGjPF?x@e_R{`$Q8<|b`yBZ%QJfE%+ws7qJjH%?CHXu?K0bfgH3y#!r2i%3mWNrr znE3Asc2Xn$YYOaQ)JLvMiC5M;LCVny<*xSf|;bLnSZ)Ke3{lbC7EA*32e>Cx<9y12+Cr>1P z0qyPeU6!I@3iK|bXj#`s?He~$R=v>%UW z_Sm^{sfzOyS|-x?_*Yw4J^++#6R||0SC}NzeW5ltnV91|6}5xe#(IJ zi9Z4SaQ@ETc133@ayygyJ)1B0CjLb-VD}c55uey;gh!G7c;cOmPYxoEKTWLsfA=*5 z9--VWAYOaL@U5)Z2=O=XF#H(1g(>1O;|;erT^89q6ozV(^+_zG#Lse!9l}`Kip8Ci z*x-hS!$J!9kgJ_(AbF8i=59m{;al6l`ITb$hl(sdz+K#ISP|A}snYoFmt~f8z12$Ge20Nkv_!G#bWd@0mvo!ojr3P1v4d0L6#;3P@wc7Ek=r2In!sWZu+b; zOCJ*!6kGZxUnNVlbLW3{ zRhhOIuA1XPP5zYZm$TyoGMaP>$jX13RQxF;YKOAhbQ`sRli>+xx1*Di40NY!vfpj? z<`}6k&g-y!Ma}8r+q{(RtR>wMrt+$zrFsdI{h6{qCb$1hcg*-!JuVmI-d{fH{$XE8 zDBBlA{Ct+*z6~csQh;oeY5{~CvD38x!lGtjS|c1YV;ktR+gS<8u19~J-Cr-3gQjE4 z@|sWeAE)>atS;4El+7o}V!Z~78~OS~r(5AamS@(syNELjrXy?u6=;P&8DZ(mq&f z&}i+qww|P;lwHs0G<46Otin9&tkqqet6HNIn@?;$#e1C0a$HUAr;wxvZKvxRW#88L z(8Nrhk%D6rc`)i6=*E^5k39yuTP5-s&@;?@tz>RNcP{hfoD?A`L<*`s1QuMo&CLV8 z=Rs5}FMT&mgKZ34xS3x>>&vsXf$(T2In7G=*@Dvih926%to7%z26V0+CYc>JzT7og z%9?C!$;knE`cW{D@?^D~7cvUR#jXAo9H?#p!LTo9`!oT;w3POGEKa-&#xy8!i7 z$hzPOG6CzZNCn#J_lRnwK;h zu+`>Jm!;jXw7TrHDU?a*(i-@lWu#QY^j$9L+Gy46aN~Rmt&r>deWAP9h7`&7vdOw` zYz{#+^W4(X=z%V3BN_s76PU8iClRj2b4|H0J-25Nbd<9yTUl#^mBW|)P#StK^?6u6 zUzu$UzClgXXHL%+shNq(3TZqQwg+G!gY8;k9=7Aa>@HbKFAi&{=$cgCqZuO-h0SU= z);^+5V>q|Q3Ld4}w=H1uY#C~+vARp=ZD&HEZ1rk{y^6B;0BXrO&J}98-h5@PdepfV z8I`dcbE=LlFlw*dYmf@ro2Tt`;D#l8Kw|auAT|@t>{Ck$nn=cUX$Nm-cR}P^MY`)l z>uRh0xko3{C3&gRoDER~ne@CtAPljcjm zt-q6Px~k8-`j}Rf%XY8(Rxxra&F-Ac4&|tIkSAK@ena6Tf3YJMQL)t_Twplm$C+v9 znV3|%6;)+n5kmHliD>xIF!*qjLYVJ6qqytLj6D@Kj;TQzRU&CGr8-M3j$SlX09$k- zLU+v#_d2EWwdP_PldXDQ%4D;%NGnxt6b)@HNhFA(Up(8exFITQ)ft6xs}?wV3rf7g zY&YnAKB!qW?&8z3+uj=;vdO%Q`g|2mXvXjtjvIHxEqWjEU%It%A~cU1JV8#*({~beh34|iIQZEeyE65SY`>C`X7(Y%yIMS2k_7xUF*+HVwN*9i zvDwWshlO`ljeMG8u|k={8Yv^KKUoUVb!jGO3jYnpC7hv*Tyey|{MW1*7&ADO&D%!Bg;!pY<#>86 zn4iCU`F&l{0@C?SrmOMEIw}9LOz-zA$XJ$5NZmdCQv8-n=KCdy=kNP${O;?dg;uVj z{N(%TE1B~9ejLAxeB|=-dp>^OjCU_*()+$0zxQhD5Q^m|94^KWk*V|Z{XKp^ON4{V z^Dox_GQ5-YtAq%b?*sC?tcRCN(!U!2is?TDOh}}BdNt+mVxQSd^2%Pa4kequsmb2@ zeS^HrT=;CFm*20$Q#QSSfAssEFE9abp3c!v6w>=XCBNhIaqcRX|0cYZ{9XS39oz5I zhvbrnru<{L70=o9zVFHJU5Q{VVKM)^3h8}+RC0e!K10`^qucRAK3%feB>SkI7?V<^ z`qqccv-9~bFnmf(())g^XaB3|yr!*$K^FPjV zot>9_A20Hh6px;3E$SI@I+?3Td;A>f9~`mtzR$*46w|L{`l9@n-)ZTe=J&W_dgmkS z3jDXz$o;iXTKfM>ev;NGv#CRPNH)~q`Y`>+Vfg)b_~&-#{g*8JaNEJpn<}-j-U6@U3e?2vPot$Zwzf@`*4-{`Q?)g<)cn5Rne$xsNj6~B_ka0_ zpSb6lGiT16nK^UjT%Pl+3Qj#IKQGU+{|&ItwD`38NQIP}jG_Dp}`w~UzTe!`TpO-44(aKbI4zo%k^*3P|dM_ts;G9xdJ9j z_&@wBk^eit3;v?d_OG{`)K^3b_~-jgo}pm-*ISOVNmXjO)MeSfs|RbjmT~%Pm!mjX zuG^IBHs$Q!PQ!-%Ys-^7@^71wr~h{{^7zmGB`*I}{h{^>rmK!u!v5dm$qfG4zjnC` zP|jp2!fyU=)L_jp_2rUFvEkqTHO;lgELnW{si%xta>eK+i?0c<7`ewxb`JQVIp7O(z$fH@UyuVnCkOnN z9Pp=ez?*ZxPssuQ5)@W~JpaEX0Q4od<8#1&m;-)q4*1#}@CS3ikIup8@*McL1O8?F z_4C`8>~5Vme{ipaNgo2*0KfjmMmF1p9r-} zmn;FoyyeRmEUVRAfnK4R3;DBT!8O*^3$9+ipw?Qle8GaN_%I)I=Pg-$Lfwi;-$aCh*Uomga!o}ABrPDUSr75QPe&WA>Y3o~e zehcoez8s;NLXxgb#kVfv@+$zh&T!KKObAZ}P$a%fOp`@cRtB z#Rvb6fhT?NMgwp2!M|tV?LPQJ2HxR=f8W46eefm&Px;^v8+exwzQMq|eeg#O+`2s5 z{vR{&LLdBb126KypEB@bAAF;Mm-yh%7x1vRzshU14_;>A4L!Ke3pSX z``{NFc#97{*T9oL_>~6U=7V2l;O##6wFchdgWqW2oj&+22A=Z4qXypPgC`8U+Xr7~ z;MV+XyS?AQ3w`kK8F-No-elm#KKNq>UgCp4W#FYg__GFH=7VoD@Nqu)&kVfW2j6bs zAs_rL1F!PI|775^eek~;_*@_SBLiRLgMVz`H9mOW0V>}WKKLL5Z}7o~8+fA+eyoAF z_~6GIc)JgNqJgJ;@UaGNU6HN#@djS(gHJT@G9SFcz(YQG(7@;V;8P5|*#}>3`0Mn+ zLkB5;DIffN1Ml*|7aMrD55CI4tp(Zbz0<%8eefm&FY>`(GVo#_{C5Uk;)7eoT3@LT zKF+|)eDE3rALoN747}V2Z!z$Y51umcDj&S`VC84F4?f+%=lb9cqZGemj{b5EZ_nu& zUv_%n`w?LNr9ANcZ6JQTJn&)EaL(85e`OxH ztm~MJaUQsLeWKh0H%l*4BIJSFu{ATQJa7c=&cE3n_}&iGvgUf=oa5X77J1-9Y#@GX zJa9}DoPR4k@PGrgtkoX4y_Ul41`pgj-%WVnT#K;(t@psqQki5mdf>xsWc)UH;9v5< zn?3M@Jn$9|{9q6Ki{uv)_(B3-NZ<UFGq^ci~I6 znNzj&TzUR4K68qeu9D|(@|jb!bh$i#ozI+-rOV{`Rz7nomM)R!8~MyBSh`4_m+_fX z-?SyqU*j{UV(G4r0XX_{K646|?v&??`OGPCx?P@U@R?JwbW)zr<1?pV>1KI8o6nqj zr5o`~`JedbDbd%y8j8LhitOmBnl&|E@YGJr3dQ$5OMWKK|C43)3_Iz}JnMr*C_eGA zNzhZg;9>rZ@2(vN)$NBos&22I&cN{1plxk6zrepm@W1(;SS`iI(mL$Qgsq28Wh z%>bq5LpCoI91q02%eF2&AuxOm*|4@QbknpS(o0_n+-lH(;gyA=b*WG^+!=~icSI|< zPmTuLL$P2g6f1{KR(FJ=zYIlNQ};Bn(qMNeQrB$-zVR|BN9wj)wIzyM1zcq2wFjQE z0-KX4@a7LJt3DY%w(tBGAeItr#icF;+L~nT;1=?lsRMRrthzl~N0VgvIplWfSOI2IflTCa_52=;g&TLMoNY^cby8u9~A1$!C_8j((Dxr$jc zA?>-4_WCP8?dVbxj|NjGCNt-Qne~)6gg0UDFq_54(onoAPtwsU8&>Fnu}MWmN@Niv3l)XNZwaq$4JM_LHlb*+tu?rfA~AG|!6HSd{6vEt*<`$;UJumH z>};)N2x=k8^iSXf3@vHum_Yp#ZdHXLD2x&S_$r#=~|4`yM~#oCw` z7|iPp<`G$#bj~*B2!mN^Fh7K+b!(@awlN19%n=5&Jqwc#+s1r5t$hCTU&`kXvoPuE zZOq3F=Bozt)+|gqaU1hNgZbYE^O7t~JUEzF8O)mu<|$d294Ks>A%l5=!Q3|s6C!gk z4>g#_8q7bUxvrErxY#rY7|efvq-}pL3zNf+jrrS@O6lhYbA1*j2P7Nwe+=di4d%63 zm>jA$;tvcByW3!{GMMM(#Jt*IRvXL_S(rzAXxf;g4CXE<&~5t&59XPMW}d=Z#$#qm4^B99!U@$Z2I~{6}rkue-JF+p;jZ)@oz^(qKMj zFz?U8!sJT6P4lY;^JIfrnuW=8n>OY+gSnT% z%*(>$$ut{th{62bhuZdE!D+ctI^2W#$3Li)o-~+`XJH=U!Q5;xV+Ql~EX?5^%x@XY zc?NSq7G{YD^BRMBn!!9X3-d@1<~as)UxRs27A6n(*lj<;V7~JYZF?8ou-o>dJedF7 zp>5x2Fkj5VEcIai%3$7MFu#|DInsmq6N9jv`-gE=b;bCd`3a)Y_Q z!5p21dAtYnbc6Zs-?i<7h#3pEIbpa3$& zDh}W6%bajR?Ja)L!tiI!5hODPEsX^qf?(|G7}0*pm_BoJB6C9`b6p~{JdvqMWUfwR zzLv;bnaEs`$jnP*zM9BflE}bRzTRL}qv*b66sCa3b@iMCQOmrYMowH<8&pkr|xG3`}J5 z5~d+#oZgyQM0r^#k}Ad|Vsd z&W&`Lq3Ewd(GLMmowM0CsT!9WE37JtpO+U66@})%j)I}*JM%FK!w)9XU7=WIG8DV4 zEfg&bMQ39kRN0P4OkaT>on4GcTBn%?qEm!ix@grg4$Imq&Kk4HM^dGk!J*b<2fI~X z8wjVa2#q>SCULa|skXnc<87OJNyVi)+2d4i5vF=goa}P~{T_Nw0yAt(k}4a0^FP$y zh<;iElx9!5Mbk2KWqvW+8V#b6f?mYF=s|CXf9ViCv<5pNP7GZj7q3D~!wKMFs={-$ zM${tb-##O9Zi1{(@ntQp=!_(7(K(_7kF!gSC_y+#DdV$K!9ruK#y6G?!53H5;m$$1vVhm%#r})QiMi= zClrfT6=krNLIT-P8%Cn}wZBQ2DLGkl3UFrK;UisW3TSz=#(`Q4y{saJCRPt3b-PLe z_axUO!=tc}u!%Z}J|Ft|+o6_xtIQG=9odfF6j%owtb7n+Rv^q0gArRa{6S`jvecUT z2iB@gy+tu=eDDM5jMCJY1-Y(*X~LG7Xhs@x-er^DbTLnXoW?JeGr&pMd2cUFzt9Ei0%0_)|~M!oW)Oo9a~b?2`0tgvSf! z^o9F1;)V<|npTpzgq3U}Er;MAfP`AQk<%Ueb_nk1WF$tmhoW0rAeA00-(0^hYIt(A za+BEy4@vW&ji_diC^6|y_6|+=DWoIWc_Z6INZLDTL9?NGh0YF&W>JH~=Ivo{v>Hs*y!FP%_BhiN>lO&Z>51kgbv>MTT8IS~AG zdQ8f!EOw?V4F{VUN0PTk$VN2SqLMIGW2R|WeWg|n?bAJ1x1g#*#Z{>tP`eki(jTC+ zWYN&ZO9vRCG}@TInbT%ge3G;ui%;4CkXfBH?LtM;F65ctNU{`6He(#1LacP2zc!^R zwLOWNf!r?KprXGDZZ*v7>=M8L$9SX_0EP-8b?sK|k<5y5Iq@K*n!yb+iv&NCESAbW zwsK%#&0TDV2XtiZeD@L6-Y!Q~ms%wcFW3m64n5x}UdQRt@HiMuJx=GLv8Vw~ z2i89WC+pI8+BJguR!sG6YBb&h1NA%M_B5txqI@4vjJC{Wf(J+y7LYR2-BJL(o2K@C ze4Xd#>%Gme8XAN;!y$$*GtaQype`;)Qib5=`s<=eEHl@m7=6X04up;a^XYYlorW}= zPEV&SFJ@-w&-pEwm06j|`ZG~~PSu|=EtuC@nNs~ZvIR4ID|3kc9N0oz%?xQN@kpSC{}PRek!EGjihDbwQoIvWDMN{hOxgS5J$m!&<7ap z{q&n`Ul_gO`B3!d(p%dRjNqRkg5c znMf2fF%}6C-|{^TlmUT&r!e+#zJy1zkuZPEt;ot+nf;!gts4tDteWWq zbohb_^?4qU4BIGVhBL118S7h*Q5E^LQ&^tFj7XaiHB#4U1=hrgE#rhtt4cGgY~s^C zFctSf_$(#dZR6gc9ou27jcao%PvCeetkp2s6*2kgHsZyv@QSwRa9bEybB%U62Q)Z5 z#;){7@4J$@P%G@h@YZEXB_!Ns2&bHB%3O(qqTxmmX|k&sUAwn$@q*eB63Df9%Zv^e$s@43lv9&!bf(Id0euJe)>L$z zXhITAC`4JNTTF8_*2#}Dd^WKT+C%+mEk=5!5*RtH9B!7*JPjWnc0;FuUUDd8I72W4 zc7(I@l(UrKCIxParB&KV_)JcvL+$^b=tk0)a%^UpPTd6R?@)^qzWNCA=V`AfQ_7g@ z=vF6cEeG{V6q}MgVsEDJ28*J?)MW_uB#bc4?4yRB--91S$TDBEgDcP%b1Bt&P3t|O z;Z#(ER=}M3=jesyXul;&?Qy4Zz2&#JQfSi}OswaT*>5;&7PfoW{t8Aa)ZUJK{5iFY ze0O2=L0$*)K-+P^Omn;`0i5R12J_G)63{+eQafHAfjUze)uRVE^$;&ubR_!9_+WQ2l{VOkI>HMqnI%m-ryg z3}Cat+K6G{@9=T6_L$bxnT8RkbEyb1zd2k+2v7$${FOAhh}gE5M1MdfX#~2^o~+e$ zIWs3+3pxEaK-XzLBr1-Vj1+IyIH@)D3W6kX%g*OP2#N0`%%Qg#lX&V${paDOta4jP z=8Wuu9?GGg040VZ>I^v{+YdV=_HvyFwojgKd&}Y39g#hDrDDXYgRqi5OsBma&LsNJ zJ5k;v@B>Xi3za^QF`g{_N4Cax2d%*_Jn~sgApLzlcqkkxe2Y=c0R?6`3R%V4w2iJ! z^K_cA=`*;qrZ#WebfM4&JNw9@oH#|!xI3*dv*07eV!A@D<;B967$8LlTae+W*r17R z*oKAa?ztKU38znTdJRkU*%f(5SO%UjVK$9%`YOT{o9~FbXd~om$*Z=*=Asnj9kVWy zh^u2W=Ru@>rA-^@5!#cwO$)j)+!SRv=}2Mj8##n#ZU@k4O7D`T3D*Ql+(Ac8 zU|$K@(G6Qu2eaYE($a&}BEY8N4G0g%*}h3Xv#d?)8HmNljzAh)ilgz9I`j>ZlY>1Z zyh1nw)n!}>5UCqqX8HixU?6s+U@4yuxMJibB} z=^n^+yn@=J(ic#E@qJHv5dwQu1@>N>2y7RAQh)k|NTqGFdhXWL%_=6BbnT^XO=!ut zu#Lj;i9Re9m4{C_K0P`@o0Wc=)@8<|BUR^+PB10QdU;XrN^u&SPKpaNfTr5*a`(M! z_~%gs8qYH+AK(!KV5ZFf%+y@A2aGQ;vvd&cAb3ESeG)xIx^5?=Tnde~!>|hp&m54j zt3Mpoi?ZBtv)2*C3vtVidjydyv*SY1f6C_4R_rK&>}4I%>X&uXE7-BAOj;u0_m)*` z6m14lseV~v{Zwl?M`21M1*cNzNwd4!aCJ6{Q{sV_I%#L5pBcJkX9G*(c%ygEYc=+~ z8o*&)t`BXTD8yvmKJy2}DVRwaM1zf)N;GpdSZ~B%Xby)G7$_5egXTK^esp{;sdEDz*7Ayg5B+Ko!Mg$5zDrt%>Wdta=t2n*fS z7R&!}JuQoufL~}_hqugEKokwd3a8G)%{2Hd2zwBPJwDha!3}JOUP*(SE=U4gNYJKf z6WpLQ*%M3a0Fvw%#7-M0!xT#g)ylREocU`1#BmfPNoK}L>2MMMwsZhTqfH5 z5OCBCU~!khxC+fCbTb}X+)e1pB%a&w3{7w+)!A7s!}B5zISxb5- zS1Y*8X12A{I~n!Fg3aPF1NE<&N6Dva)NYi`5KPFo_?MmUGCcq0-VFN||K7tvAuRqu zG-x(B#^Qs0mcYCC2X&Q0HTmfSl|$fLV6Fqj#H}A5sGq{o(C^y0k{5?@33;;&uJ!D3 zBffLfZW}Rr&l=H*MnI(bV1~&es5!9aSjKODo$tAbt=)5X2L{+Z5V5iZ5wBw?K|zw+ z@xk`m>zyYm0a9F;1>mAHgWja-2)~iKq{Y`D3Gmv`yLU_` zp!Z;#y+_wZOC1=f|Hh|N>Weq*R;jb^-6OHVY2>HRSKAZjV2TsWqe$>GFu_B2&+Wti zwTIj~CfEk<)C50e2dP`JTUid-bMA_?gOEFpT5T|D*YFks4hsvydtPgD{A~-MFF^a~8ye<}d7)z`fSy*x= zg&=2M2U6!z$b|%FexZv9e}7pxEn^Epu|hPia1-N36N*)ZnY050dwrR+*Fwq@r8-$e z-8U(ek8@-^{Q)+l_V|90J_b@KR-~<{0-=5g-X^1zgfGNnuO5VB94w;KL)KqvJO;!o zUc$hf)kNjDw;*=Dq=ImRu{{yrQ>IkEd>~u(cmukjRnM`W! zI(jod!@~x5D*Iuk8O*rrQp!Vbf_W}Mh}TS{-QGzJ$^Iq!m27X|nMPMtYM(WW>{Q#3 zJ_C!xV8vC4zr)9Dn#pbvAN#kB{F(SK{G`^s0MoK@b!_U+3as&EXZg^Jfv_ zxm9__4idnweU&aBT9179E(e7RaIxRMeI2vSO6{-kHYx`~Nda~uA?32Gnv^+OO z^?4;T6$M>}vWsP7ewo3E2wxmX?S=M(1gqi0>_;3DMA8<@v52!X9P%K?@=~H6o(q*T zZrjFGKTaJooge5F1e@MEw&r>25LCAgAL>x8BS(vkl^z^eoAO)fSD$pPbOzFDrE$1f zx2;RicXUhjQ8Bfw%)KB!89~e`v8>E3FDGAF&nM?X_|p3;EW$`t(w;*d^l|wP|;$MS6&ZcFT6@`jm`sY&mPPF(+wF0HbGM zr0F$OUdjzta;Bv0q0-anY?eSHjdN?3DT7S#cP*Z}*n#qE2V;r1_6TkciWS*>d>5_6 z$UZK;Rm+lf>2mqsx= z4C953EdJ_XJbM1oR|UrvpKu=O*PBrcgTu2~71{`0lo!TA1HF$>5h4LM8*2loVP#3y zjAC;D?Ur7UdXtkHjK1k_!*vCL^{ic^j{Nd?5h^6=9pTR+qInRuVo;5)m5Ha ziULoS7ezXYa7h2tRnC18ZQ?)nHcfmAAgwB^b3LM~PPRl{4#J0cuub+1I9BYNUE{JW zn`X?#xQsdX_${^ELUIAIkXIo^9tGtP8%}N*&LzSPT8mnz}AdDw&-(Nk=SuplV*bR!55zzE)J z-z+|C&5xba_a+*Yb1NW~v&mVbc$cnbnHEC&@nHvl3|_{!*Or^QO#}L_|CCs*?e7>TUj?(S{$4rk%4MpA#j|iha*e}))m@;fInIKf>iXio5A6! zQqJkoR1D-Mz1gJ09sTv>fZ;s-ruH#;nmbxYdvaPi$g4 z`+;GZ-ajQU9SOQxgF8ULO8*f5GtLk#7o)_z9sm*D={VA9768}A>%|v$B)i^)IG*%k$JeY|DcjOu39Nfq>D`lDk9gdjn zgC8D!3)0mKWRgJS)QhPR=eGJV=D?5q#(cA>8vTNl!eXUP!ysjQFtdM|f5>LJCsva~5nKv(yN&i%Iba!mX!zl? zj1ZwU_A=kg1DIE1vd#Z(=FXw&WIp>2N1aJ-2Szp0k^U2U2io-BSL*`XcA<+O_S@=hhHA!i z>8$3TsjDa13PSTUJlaL5TR-mPiSK*sBe0%7laKh=;iw8rHOJ#8^`|F#dS1@hugf|< z7NfJhb}K<6C*PRX#6TdcSIhwoyI0I4S-$sSJe6(h*CTq(z+kdeQj5qjQ|<%K;F9hr zA8-)XATl_`pH=*9FoFoLk8bS5;db@Mxn0e6PhD7N@|4XEp0i`~`?WOMBykBt>F&%T z$e0e)BV&8S?!&zjlO~kvJ?gkUS;9t`P=<^1EFm?)&tXmMPDd?1PIbDF*3rSw5#5QY z8mIgE^0O$n8FI9oC8VM33bf;I5o+2fA&7YGeyOFK{M23`5jKfeM6oQzuXC3`{ZvP; z;#@GH;LE;^d96PyXXP3z8*nBl=6_cA>bT8Tqg31MsR zK#O?%v^x~9DOF&oSbv=;uW$W{Wa@;zBqmmBTy|@! z25!u$@1y^=**Qb%L*#3u{vo?b-@iAYi&sH6}^7aRVH7ij^JaYfT4%9z_|b-$>P2Ww8=*;(k80+xJZKBzohzkA=1U7sq`<ibveBV^w7Epqg~MY( zu8r+yi?k0pk8UG>iRp|w`1S?xF|N4_uA2LHMDh;Lgqv>gj4r?vqH20lC$0i;l>aSY zrSH|8^%&r~z!(0?OJX&iMOtS)(6CC3LjG0Q!+!EM=G*uFMgl%pIyM z2*6?PpWR?C&t)zNy7<#hvCwhIiyLhzJ$wayCf*P?4*3EnCxM(u@Co?LCv2a2yOX&b znT`mh0u}8IsNYm6O>wLI2MzE3^@)^6zXPwMAGP7D)q^-P*@6D-TRTpMIgMx64 z`)XiiZgR?d`YzwQ%YvJxoS}4yNxHQas6-wd{T@u3$9;l3rgTbzWAC@r?RpN)53C&| zVFs_^t*1Of@q*Ku&`fhb!YHK8_Fq9c1d)DYu;5H$`Xx=D$@FuYu3-9cO`py54>UcQ z>3cotJ2WjcBbuH-oa;3`k?E^6eHPPmJn)&C9#8nWnid|;(Ddnq%NuX;f^kfb@ZcZh z!P!UCXAq}H#?k_*_kB%Ez3+O`zxJeG^`y6Y(obtzz*an!cUsdo&$q zI_80|(zKLauIUEiT{Uq$hdOr+Lz&Jn7+{w5%M)3xxh)g|B5@{~9Q5uV?zN znwIvy<4M2aNx$StKj%q5?n(c^lfKuJzQdD_X!;h`d%dPb=2vODj_^5}7QM{W^bLfc ztLf{RmN(ww1!1PgD1157BQz~~KSLp}HbO$(g?9{dkESmMQJ($8pGaDJ!hg@pgy18?=<|Bt4nt{-b!WcZ*5 zevhVwW=zvUbCsqSkp6NH{7Mi0C7$$jPg)k#;{`(JG=&SDQJ(a0O$*L}p0a~AEqwk9 z%OhyJq~)F>Be!=HE;4yT)58BtniiVRX&uEkDq-l)YEeQuYo_OWBAgeZ2?g zDosn-Ihq!mndwQNt7+l+3{8vt$7ov0;=%{EOX}sv4w066_tCWQ+@oWklzm^*(l6fC zwDhB2Yg+oeKlY_Gg07cUUM_lUypBpiRN_a3J2()9gIuhsN}NM}|8VFMFk zB%Wkq2@;!`n2$s&6Bi@V&cp>syum~WiB2Z?IuYy1oQlMIOpHe2UrZc@M1CU@hayqL z!~sYg!35vzKb{H8+=*uvV{}ixP%h3}Wg&klqK|Hc<^g&PA9-k?dti8Qi(ue=F#{?L zPiR@mLfj2Dg$DL2R7Z?rPocprHxs0%bi5ZQl{wp}QQVVY2maWHDoFnYB^(GNTkP=h zWE$6z`O**Oj(SGso3wPD`f_nMrQ37A1PE9N#t~p~-9jJu;!3Xv5*$CQm;D=-r zhOhNZoPwIL@Z#LMsb{wBTQ}QvwFDK(rl(tB_M0*TdDmtuS_fk0M0cyT51;T_xpOCt zzNh4u&u87Dt3v&@=woM%;*+-sTCvc)ayHCXY%Uc_r~6+~;f?3^+u(gaMT4orM3xS5 zP6uXd_OPNf++fP=?qVMc{Wp8*kUqqY&*^9EeJmP$7s_@UgWq)&`V#izq$hYYzKobB zgEIoXG8V!iW=`%SV%VkwxR^ z8>v}XnvVu|=Imnsd6#@R*sne(UMbdxZnIkhj#cmM)hmyrig0ll&zb+?0c>6lkdb9< z^>;uvKJhaAq(-mDf_IkMRa)iHd>c-PB+a{!E$|~H&}342gSswW0f9$=TtB4`efp`S z@l$={yMAijr>}Y zd!N0ykD1i3xHn#5*ZRrDjqXW~*?e;**cL0g7LKHHJnZyI;#RB}q71+yiB3oYr&C?A z3L#glMZklX@(iv?l!oQX0o1Wd3@%8Bc?MTteWpg+S<$Z)m(TytrD%KRa%Xhy%QK_@ zltPqUXua)ek5KWW_0n~{S%1KirrG&tf4^mCg1FIVS6~+>6n&DLu-KVh#GhC_e~jbD zv7UDi^*R2p{Fm$a&qLZcekleiQ(>tAxJlyrbF#LYR(Xmow~Ms~69_{Ppdlea*NI4Q z-6~UxL?aXQX2;^4lT8|Xk6rt1R2iT6AbwJF?s6E`M#rTk_PhFG6NPT0RAznP$ZZ1l zYvF1q#SnxN!*gH$O>-p_a}g1}`3s`bLhR;d3Q`-+qRev!WM|Dowp}SZpG&s)3(S3l zWwGi6c4E`DhX@(fWlnAE1@YOV_rKSp1W%!~2JgPgXya~)ilL3WIZdE8?tZ}5#6Oyjk~FhKNbs_-Du-3NYU2DT1r&4u^yY&(l^$xWCGe)&ykDTSpPj+8~dOyZJMXr zxC*CGppCWoNli+4C0&9e554=wPVtwf=hC0_fy2EhM-ZP|-$+aV=ee~p;;SM?ZNYz} zjrG*V?1O}iUmJn7Yaq=mZ*?$4XlrC&N|hRM4A(x!l#j{eUai6VuAwq;zwCWiGjUN) zyw%Kxue)y*6VT^<>zIH(?|YC5`nogFl{Q_j`n(tFhCZLhPipx$cCXLFWPhuFeRj*1 zjq6)JpWc-`9h~RZ=gdn*5uZYz_fek>!-UKp=yM)KXzR0@QteNljhH!$J{vLN>_?xC zvzQHiHqK-M`fR+63FxyC0f6e0eR9(ks?V1&v_YTm;wSas?Yr0KRM|!9U!SFlqoVxW z`e)ZTaGqPAk&8tUpF*FF)Mv|qLS_&2`9p}%*600{YJd8CsFKP+|9ogF6FK|mL$jF; zeLi#{6VT^F7zIS14=rGV{gZui(*o7!zYs=2p9kS(p4893zI%P%EN>Nm zrmrv?`fRFZ0{U#iI3oIN!Zb(q$v(M>OAd%;M%}@miRa=cH6XfseQx-`i_`b`*`PR| zvp%cFg7e(^dfBM`ooyvedH%wz9r#?5p%ZNTV zT*L(QxnV97@V6VVN}&2=pWJk%>hqE~YK~959zUs**LrnT(r2vmmfT0&fB$SzoX=UG zt4{{!x%GJ<4EodQa|87m!fEP0`loN^RuA#ny1aoBr7m%#?Hr06y{q{GCZLVxON=&} z=h@o08oJ*k?<2&={+}4i#wVunllpJGKJL`a>1rR5=QO!9xPNUNr#PRpHr_iCoafd? zJ%;~Jr;TQ6W77~Jx)634T%st=YXcl5*K@|Jt}uaXx2lTu}zjb8F*6nB%9@#uL=W@%soFk2Y{Q zCSC&`RC`>e$}wHvOrWKPqQ-Y6T9z__4>cHp`SETwx@oz^*3Bg7a+B^mj(xB}bn_g3 zQa9bYd)*u*cL?{d8%uFMXWg`&(64STsrt0KX`yZsd--&OyTWieSV5rvX&SdZZU5Y& z;kQTk+sZJ;Glz-)AbM)GDqt0k?c{KeV|I#Re9j8}@c4e4`gM%hpRTD_p{eQ3gL$+y zIp}{&fk*b=swXNxZL7}S0|j35r~eHFo;s>u1->}-(>9eWh3S762pRR3ISh6s?g@sH z2M6j~RXU%u=}tJV-uOaUll*lGmc?)|NvkyY{B&4z5)A4?wsJ!I;!2T#dT+XW4G*<$MmbH#Ub)+tY!B`86Pr8cLTAz^hey_j4p!9@3-MCt>~> z4L;+v>vI$C4M+DY+#v}19VT`!+`O(>^)tPCK@p6Gy&y9YjTQ;wy)wRQHw(KCEy%P| zhj4WvzHj3#2vJ|5q~l{PWCCY0eo`IR^DVm2E!z@6c6KfI{9wU?cSHr;H!jgG#rDhG3fdgM*WlnS9JaLAlAyZ_a(1DA!Tm5+@a`j8mBngI2VUZbvTW)ao9K)rxuOt za2jXecH``-NyllNO$UwZVB>fSZhjlSH5<||F6SjNc@6RZZJvYw7sKUYxgi>S3!lHq z3#@re#gYttwmbMod>PWtJ&Sw{&KAu_t?XCk(90g~!@h+%3eMQL8~EB4;7iP1tMc-w zar4-Jp;|kz9a@47{Z6Fe`ef_6vQzp6Kd1au{xn7* ztw>t#R=5WTZUWF1n_kj~7ihupqGlZP{1to(dNmpxY(~rIqdUzvOf%-&Iy$O;fDcXJ zN^;7Eub)C_(VsOGMS|_TM}=(BUz-CXtzNVjES@_daT%RAfKEg3RWC;1sp?l7iU@gu zens31o?3(-e2)_>^7T9LiSGa*)PRzB($vmB$eTY0aU?uuaC^D}y^O=gdc3+_sMmg> z1k4BOGoL*^LfVdDnH>u}$a}IWd?_MIZc;G|g?YX$eqI3y#K&%Unk8OMZC~d2$TIto zDA_6N^Kb$<)lai43fQOZIQXtD6b~nP&zXcmX|;Vw^pSF8OTn5lF9E!E-q&^NFx-5D zhIihFbv@+~<4!CWqG>I$8H=Q?EwS=N5E{{u()Wv7qE(CN9(wnk8uXn87|?3Z1pvVm z-~O*&4HC$bD}KI?qXW@kV=UN+Am9b)^@ZRs@b^pny}=I%h`R*-YC6=;Jih(;eKr^n z(Ngb=V7r$??)n8Kpj0>DoM5>MEOk5$DSAUwW=t%2AE-vF@1v8A z1)Jbg!1VLz3DEMZshebNg5Yv?pC*JmO;-44p*T;pB?kh;FABrH5%I=c;w8W@#a{^! zk{KvLJfd{3N`Ay5zVEkgkjAxy@_rV0>VR?W;gfxwBz>IxO_mOV&4H&Z6+^T1NT6vg z;4Eo{*Ws%j&3X7=3;tKvG9d7cugQTPs68$RtD$;vmepV*jk6FGM+bYz{*vg^Q)cJ8 zytJsK0tk!c!gtbCl^fAyhH4ja&a z$ANy|_%6q@aXKrj|0*dg@jHLUEml$FGHBd*1nywD(IvBhLcv zSF&(t=feH>nZP}cxJt}4Knz^`$J>~wruOOsq1-r_=Ye1*NX~ZE{VPNXFjKygQMnpd zel&!lA#|GA#dt=axokb2OU&0_8u8qO=Q92JOC?NPz7~TjW`}^E#B&?+tMEJ<&+T|d ze+*>s(hn#=s>=_b zh&(KSEQyB@$swvcZwY!fLpm9;zzFVDi98RX$cXi#$USIS<&{M#RML%K{MjsXz6Fvs z4#}Ema7Qe-L&7QG%_ya_p?8a)2f|x86xJBRrWM+-K>aML)Ze&3{qYKx2Fi6-Y<&p@ z!fhU9&)gGxP-Y~mLObBQ)Wx05H>8L9fNeaK%c5Bfgn!bj^6;I`9X0l4y=;6W2^F`d z4jV7R=JPl{4{@K1_b%yYTGZ5{4pm9ntXiC_iRa ziElOqlU{GrePU80-Z&R*BnF!+{uFnhQ37&6Ica*(C0Isi4eo?3@Le!UCk8XAP6Dk> z3-`Rn@Na!6FW3-Q|zygmS5?)V#sC`^Mp1ZhbZ2L z;&`V+sk^-LtM9Z}msc<%?%>C#Af&5C&2q<&4gEHthT15;AyP?xoUfrabnvd^6mNd%`8aXW+^V&?xWS47I<1c7p-nW zoZi^G)s50>C_C8baPg7y*%*qI$$*R~bmMAM>pR?ZmjD)%923tqp{v+49`k}83<%I0 z%OJG&DHw<2``(0GesIlJA?Tz|l?lPNSa6$&^%-NM&+s597W=p!M&kodMsiP|B(*m7 zgi}4?&Yo~b4{l9`3`UVtOl&1k#`9y!9UC=@v2eB}eE*71A`|ccnQ&=^HT}_W(3ebJ zEfel228kl|yEJ^zC^EF(mP)+3#k95kOQg%Twn$qU>8lC7STcqE7rQM6PwPJfj%-bSZv+MI=+?;L1zhh?Af!Q`?8oj%RouIwmZWv*U^8+rTn za+fgS>g8aSkm`lX&FZ21;TmnHhtA!dt*TzQEJnRdGaU4#m(#{LdXdo7){7mQ_NA9` z!*c26WLL}JF_=uRCks#w)NXFnkt82!_NvVfNUs{Cn8i*HQ_xPo zOlyRb9hjw$yNBlD@eZ~a$}d(uhvpi6OY@I(9*pw6>wO539W!X783bQX`gjhfT6e=}nq!rB6RNef;1DtT ztJ*}f+Qe7E0q#A^;&;sfx%gehMv7}`O`QR*utrgj;TcquSrpFpQ7~IW%Esv`DGIkI z+}0CL_Jmt{uxN}o(QV2U*-|UOL=*6Pu^`hESaXXgKA3P8k6uNCp&}8ciI!4-FCwf> zU{JY)U%v+oDsSP}XJeIc`N4!SmbXUrrtr98Cu4k}y;9_1upb3B3yX9&_@(>P%RJI8 z+g+#w0ck9_FNjfZHjp-C;e_Y zLE@voaQEM-w)Q+bjY}P2{&xAtbC!P;|B@QX#8g-l1BMP4%*zRA-Ya_RPfn zIx*M#F0T-PLv>I#)xkNb=96ljpX&WCRS40cIyjr^WBcWj;D(W)db6MExk^=oK`1u6 z*Zt^{J+lkMxmj}k8|tElI02m;SUU<~YS#NWf0z&3HMc>%iL{)0lmg|2QLK|A7?)m_ zdV62HISkLe2JxFx_{yJax5890yVyaF6#T`$&tmtPVrDQ!W!l$rR#t;jnZ<^|=TO>O z7`P^xy2Mmtv$jb$8N^^GvIrxv4%VV&LM*h=U#O7WsFfG85N>rwF$Ox$r(}=5*rSKJ z{RBFFMKgHY^i0d)GBtUv-l={K7U*ss+<4glJf;$t6~L(JCHU&w|Bevg6wQs7*4a2BA;d5Aoo1$y)SUZ4|r@IM=C zGe20A4T@o<#|K)6IVi^^u5Mv9As)0P`sMxmSXRI4D4w`=aoLHPfT zD~I6!%e7}ll3E@h>JU%6lwOKql;g_c%50*4Q6{$)TKqRC% z(Z5C8qaQU?@4^mmHJbbZINo(Se!i2$Fo7z%@!=Sz&4tWpXA0pQzIqkxX8+Cv(6|)0 zi8}c|X=W!{k74fsv>1D>Mff3P+?HA{CuwGwhmE?;Y{a>EC>0Iw;OF2$y8v@E^ZE2h z-3}{!EIuy+zE@?AU_taJ*`;MNZ%Zur0YVcAy}OZ%JzUweM%@%cdg zX}QB*KjPx$8nwrPoJb60I&3oS(qIw2y(R^M3Ag{vL?93Ute+8a!B9;(Z4j2ia|w`T zJ2=MbC_-pslCYQj+G_s)`s-;swT1Y9UhSof3aCB?sxq`*JQE#W7qpYulje9C#DaRa zRf~@v3TC&hi_|w}U>*5b18y?}UIdT?&k#3cM0$pMm~SE4DFNzi>{W zbn2us(p?w|oQ=hCZnRNa+=1XCHjL+m)RpjK$|%3AiSpzwYHt<-gcA0rNAam`iBe>8 zgwJ>Ar(TG|bTNt}jm3#p$kw~u3=0F7b}qLTxDwCC$yd&FItw7b2tpEt8juKo{~&(` zU3Vm27Npj4TA^jq#hx^RCkI}_v|0C_2`;*zc^UGhk9ay&6*9RZ4)HjAtx{WJ3I=v*u#LUV0*9{vSs<+()-feoNOKo zLY7RC&~jjp-*WSEDe6iY8GL`A^74x03BJ5f+mf$hAZD95^kNedrEWx6DRs$#Hhi5G zH99OoL)27}l5~{DYN$N?V(&wI9hAVwY%cMU07Rw8N$rvS^)j_xT&9vfk;~NlCIul$ z_ogRiy|glS7o!L|qlEESRiwXOF+C%993a;<6{bs!K$sS@*%R}~=@*14))DL?U3!MV z8cr-EwU*Zdil2aa?8r;YheecO3LK1cSFt@bl1pYCD~*-BhvJ$mTT#%1G?5n5p@N{C z_{f%qf)gQ&F92^XO+76z;F@N2Fh{z>a!c9>yG)#0lf%ItvmX#);= zzf6yQj(|aJs>|4v9Rt998QYB){QH{_h!{>V73o~n5d1Lo{MD(!uz!4DYvAh24_8aI zIy56bs{XKn40OiK8I(?#JaNOD(fyl2%!vxnx3Lodx98OLfT;@#h3*h1d{C|u>yVoN z8hXC2gEix3r+pC5{58^94&Qz-Aw3=l?k!|-6NSKma5I&>{?*UxUxn9pn^&9}lYQ4X zSRLlD%5&j6DH@p*^ZN>D`FOS(YZe0<3jTGcnhc)u8w&p7KIJtO{N8!88VY`a2iYWM z7}-#;)yXRd=2PwysQl1W6wo(QFoeZTfg znF&CIO^`-n7JeYK%oxCED1hB+!wv;Z0wLVDYr_V&5W;)%f~i>b2jauwq{W99N}n|> z*`Fv!9Nik+WyZSBSmiF3)J}(088>EAC(01ggpGE{#4o?OXk{G2O<)AN$if=sj!0)9 z(mmw*3$s>rUYhBy>O6FDnd6bD0OiaGB+4=W%N&A)v~7PR&Sq926Ua&^*BzUl zf`o*1X=v)VQy3Cdr=s~H4Xm%;V0s(RI8Z9+)>SGM$E$Ql!yib5ERKzlauo&(+$l<7 zW(!c9Jsd-)Hwpw*Itmdn zhBzKiu;HB>a}C?X8z92nW9}Wt;HjdoZKAcH>ecumKNvXL!&hISm5Ww{+mO8?q}kxMD~tCQ<-G-^xObMZFKk zeUy!z*o@E2L3%sBO6jOkWMbwyv@H1$Q9de<26sj3cELuFNnX)wvI=#hwXhVb9bEx( zl9Ogwxs5T-gAoC&(@$pJgGI;wi|zQWCKx*~7t^>T%E^~~7#Z(%8I3fO z1ulyqzXg4*#ahKlPZNZb#MHAb6h+C|g?MboV+YQK72&xUHFPq_lXq8IWYs}Vo?#

*RU^K+SZ(>xQzvbr*_0$+MH6{m1U~%XFMsXMLFteE0EXx=>udI%mEzr>hOeqAajW z#Xp&!IQ%=m-R2x*dbh&U@yhHm$g4AsJMmzr69E)+*;BV1xxxv9l%V}M_(Z>V{klv1 z|5rl$3BCsCc&mPe#({!;{T=zXkcLSjLt-6mGr(YJS#@Lm{}dp>`NLbRzhVEpWpT^icoWIE;*e zq^ydfQ%V$%Vb*JSzxf`7d2su2c=Tb3*n2xP2{mj0XszZoM|CDU$Q)Z#8kDEgJqJ-Ew;UcCy z+5H>g8|GfN+G1ujc{Ze?cV+8BSd`(sI9iYMoIUAZBN>Y`8H$OGdiHFzYeb%92ifbo z6*1{4k<{M22>IHqN$=i4chdXuWXMmh(-Qo7s30?`RnnI;eVV3m;K9m_()1Nf57+bp zrVrHgLZ$~tq%4le{)o-VQ#PVl5tZgO6vdwH%|1Gj_PEHi6cj$`co2S60FmyZ@KH83 zL*)f)MK4GhIw)(zn-Nv=BQKAbC?Jn6#CLXk&3MNsZrRxm-eLDN9N0aXh_0I;4`P14 zz$2IHSVC3Dl%qOo1e}W#=r6?GAmj4&s%VS@$@;eSk30p1)^b*17Sp5Vdd~%zhN+C&Au!IGFmYGKOdH$Ny z9Gi&jtkG#zxDn0*GnvW+I(rkGL3{c~1Gw0lgf=Y9qT2W?3m5B+yI3!n>Mn4k5$*zj z_2M#Q6@keKM~DB90}ZU10+Mh;>$yD+GO}??G;G{Px|j0WuNAfXWDY>BjJ-4aA;Hjy zzUyi&WRO#rN4ob9to?Jo@BC7*!d3iuq($+lEWra$W3Gp{<5W==;sJucz}^Zj^o|`6 zKMyky-0ZzKUmqb3W+QQa$FVvQik?>(vl@cWA*0DKjrLYQ*HDzc77TnQKP~XBE5HS%YoqL7z=ky0w?Wc$)In^af3ZHQkr@nKVjk!kVY(kOR1{!bcc6 zvO*q1`wXP06=D>VO${SK=>_k0o0^`7HGO6^A^P|X3=7x%=xY<>gN>oUH2jY*QvxsJjTNFh0N{?nJ*& zMJqpme%PK)RE^lo-fiyo?9_2xwrVJkU&sj?U~+Xw!m%fQ%j&phcy^B6z+zy7exYZY z|LE_8M{gCat#;Qx8#8RQAc7p>8_U9<?6DSZ65zD&xEm2MvB#c)d&35cBq!*i0r?R(T+bg{% zj1&aAjOC^=6|-zM@R|fP-NkG%qvXmPOd4mNX+}H6jCP6{A?Ah|;axVo9G9dSkx?Ft z7Dm}eg;2IJov!>EVR)@ifsgaf9Gt@e=ypUl=N_I-b5F5B z$}r4KJRE)tJucy1^1$}$=C4C^H%zV zM>547p^KfE1XZOVwdmPJ!j1hTIzz{RG`DHLg$^pAJ@L}tKEW{WTT{vd+-XUfacEF% zwDK*X4&6FJ;TQF&#k#9-DUY>s5fBKGvGc9GpW&s3ADfqLQS;u|t%y~>mG@rY$2e#| z|MgJ(6l}L~(SL88(+3b|-d+#oabAtylp3l0k>04_TkL7*`|u+kx5mZfaqPnSCTg_u z-?R5z6&bL>}eg&si_j0UqJ7SoQDbeJV=xddH6TDr7 z{GObTdm;5d2sP3#s~HPX6#zI7ro_#?96u~SXC*JaiAuaROyvpa5BIhpcdJ)D|E(+B;U)9;<#i?<3^k8YPbu-@yyYE}MD?M!j*? zu{G#9=dwq%a=X4D8%Ykp*~S6t^|Yg_*Sq2kR>B1mZm8N~H(iPMVgXc$AC&Qq)$kgrhBMW|@2q$KiHJQSOe71+U zK_t`LLsY?P+oIuZ7<*cL?f{M(5m2P_W4Ta~JHYSx>GKfg!ckQUivmj0ceoEg;HoJlG3tZ=fc+DuORbkP{4jG--eabTR??te%e|X z4gSiY=c6b<)p(Yrtrp`(zB!V{8(4F-^to!Fpol|+t_iF{>)__U5}=in+1h=zCi%D} z!XheMZ~L;s*f@NP761&?i|sH}3L%j_)`yqdaF76sJjgsf-#rl7c(XK;$|n-s4qBJj z9^FEOymk~oFOSP;1%}G#(<`EF8_@=cNPKJShv>DwV(}{4H-wiehQU&1+8_+=k>??x zS#5=@>)y0XOIo>ZhgqQ%i4{RX81|)9Eclk(cqZ~jOpGvu+EMu~B#vmvBXVZrtu6K3 zfl_nk$<|rx^N5CeLLP)602o2bM(xgD`@rLRi)x(fUd1I`YKqQfg9vBtkxH>5pg>&Cwo`&N-I0 zWS@LG0=oJmCJe;T<HvZE#jedQ%Z8Cw&t!i<7HEY%CqTBvQDu{(%2QucpP|{={sO9p z`q_(jXp`Z|<@Po9Irknk*dX-_#Rog7-&f2lP^g`b!!}`hjaP_66~AKKMU%1J`A3T^ zrZNlVv?~U;`<9gU?;DzdYdNB+_xLT z?ZEZ=pg{d}^c2iR0MB|eY9H{W7G+M1*L9dXDcqOCFmW;ik{LJxYaTc9;)gfAc^VLM zzQiatAJdVa0@D)C(cSe%J{)w(E(H%(LKHuo;f52l+$@STceCk6z42T2-9$t9mP+4b z%q+v)qM?Hs1S}(2;MOm30tV68oAq=S*l}x*R=sxV=a;U&(L1EN1 zQ3T*L%x({xE${tMYEEuZn$vAzJnP^e8jT3N%f3$vis9(p_i9Vl!RRaP3@&wkt8(Snp*mvSS*iFu#mH&V(bqrwBZ#S=AcxE*b(%s0X-Fl4uT&i zXh_*z_ZF0ZU14s-vH$r$4bN+Tts9eMr6NloP&VQOnxytH8Ni}4+v}2}appAMUMSOs zj%g;48NN9z2-gMB&Cxe7XJfa@P)m}rd=N6=E+G&s>;&#u&M{g}_IYTrO^*D_(BV?( zaFlt6FD$hCn4DL$Hy33h$Ky)&dqlDvgq9$b?Xp`&3qdzNyD&48Q1-L4O#Y^nA?{T|- zh1sv&ZaLQK~2JAh`a+sINPhRyLPt}Lz66!|Uyk9yG9$~kc<4mzMT860E zMJi=jGfbQJazf;4+Qu?71*z39!GyTX_68@A5+0a0y=>oK^k?ZwPFcG{xlUbgovlI5 z7?aV@&3iuy*xdSPEg#iJyXAhS8SPS!wT^R0oG*gV-0@6x=Er z!F!GC;hU!sB7dPI_b10#B9pqUF zLgpfsM7vU;>EVSxLu4h72-EmL#!YC+Mp zln1XORoQa)S8Z8{cSUArd8&4+ovqa-wOSFesVKgpEH|C&oy^9hD z6=`I=C81AQvMG0z`W+9=0!4MGK1SxFkuGJk+eqaV*BxcQ^|l7gwn1*w+*~Tmx26i@GfO=Cdl|g0-94M} z*b;IN?81EUHdaJ9ECfLnF5@`2&2UW^?A&MdP%_pJum?K?GvkFw;8yvDwH^gw^Fpn1 z;zN=)!wtePnzBi`m7wC^m_wNR8LQWGhgs(_jNDB}#Ev)@^>Ff-XPTpE7vDvT;p8#j zdW@oB_Km%r^Z(sHv`?MZO0nK;A72RgO4S| zUSq3iuUH~>T~8^Fz=OHD%8K2@im9$iI9zPF(s04yGu zvo+5WN$MG|Xk@PDEz-Oq%`4_lG*Y8^D>Sb}^GY>uwdQGS^ddg8kv_*xtLp>g6bE97I9gMa(x!ZY zv>rGoZSW4S7HlN?>=4n}lNNrwLll;LQnk;6K(xL@FxHi-9_0x~?(nqHDo4Atsqu+t zT!b*cVH=9XCyrtIyq~go!Azt>(P6Xr6R$55D$laISX}CkJ*gz60$duvramS2TdbQ4 zEb*BePo@OrGU3*GUOs|H3vx#aeQpHqc@CcyiWRJwO{`WalKO4CnS7>SV&S+@vpG;N zF|C{4oAj_=6M2@2g4%^9as5r27+8CnNnF2J6IShOxdj8)7 zYKNcr>%j2Ul;+eZ_M-kWIf^6rLw^^FY|RUe|4sN$xL>94lFKSCt+=e>s}*y$E?js* zVE7uMTdZ%Z`6W$a^7)H@|L>GQ9=iLi>E{Qh&6#ykRd7!AwDYG;zi^rt6r47B&dgae zf)$ls=%neDmBDGVtmU=K!t-mb@bU%Lf)zDOm(^N}7g`IJ@Dcw*dg0P#))h;wWeaM< z%dX+mg2h)}W7RBMI^Vi-$oRMUHQGAPI@&tH z8e?5*oo=0B9dDg!ojK8(U`?24O`K>QiT~rHKSx?$wT|&JHuIv&v!_q>LZ(ic6`WBq zm5rD(?cBa{rd3x4XH1#o&6+g58m*gyI4%2MaK?=3Gpwo^)6bm&ft*u4ZPMi6Io3JT zX9TC5JIy+K>hwwHTQet3uL@d7R!p@FI~9{BTa{C$RnN34tEbMIQZ@A=Yx0z@Oqm?C zDyL7bo(lN1;JFpEf)=%48IG+<6*Fg9RTZqMV#c{(5-fq}RI6gUS&<6cG2uPsBF%(>63$V&YuF6 zs{q2+T=jq1`x5Y|ifsRT`=+~ZF6mAuorEkvItwK1VHFXTeUnWDML}7^A|b&fAP5o= zMN~xMf?HHjK@=3+QBe`M8TU~~aUIkd^f~S`p13#v1(f+c!j}jiBYc4HHbSrV@%ZwNzZ`7PWFX`tbW-#s3VO@NA^U5D zPZ9oz@G`<%2x;Bo@wUyv?uwu1xisG?+%wH+nD63T+W!pn^7ugUWL{nE%&s-nOP4I1 zURzgL+hwLvVHhGlwZ3NI)T+wGl~q&gmM)lqUebR*!`Dx*uUt@BU9Tuyo+wvaSqGkV zBcx%matl&Qxz69U95S~W(B_3}B&xY1bih)0UL1n$_ zk-FG|MRoPD8I>_r>7UanlDQZWiEd|G)g?xUVd&TBj#R>#WP z)|GXN&8evuF=J7+9x4eua)mx})UZT?OBF^Kiq0q#;-}YR+Agf;sF@C-bE+A`5W{q> zrUa0=yyOxfrPfx?s+>KqT8zV3&FsX86SBa0!MwT!)9W!nW(ghY#L%5FuX=jz(ikRx z?ezMZ+D?L({B_&nXXP+8q+%T1onpGO&6+{yCz{XGNQU95CntsI3AeAPfocwQJ;8ZO z0dlgsbg}xm)9Yh$CfCV!NQ?`zNNC6IlpN+&#}?Mq$%ZOxJImX3tn;F3G0)KG==7Q@ zj1f_k6J58r=!52DUTk^Wy1s3z@ZUbxw$3riJ#oi~#gH+J7)EBaj~U}QgpnFAuASOLZG@Xmiw z?r)IOu;T3H#z`Y^;fafuLBj_O95sZ=F}NrJ5Z6< zb%J0ra^h&gWzbk$&$tP~sS{i|>Iw?%#C4T|Q*i+_V*HRnLg?V}QkN5kj8Zw`%5Lhg zAp$KECwLPRh6wS)MvWba%T7h7Qi^aykM5|z08x<(!6zwv4$mp@-Po8?hh*N|PDmiTY*ppo57!0_mW)p&yPEfx@ z!i%APLykYiEk5LUH#SDr66jGAJZ(N9(Gzb6(i#bdQZM9p6w!KGA3m*HcB)hW5aYz&Rmfvnug<7l|@XI zrA%1@F;$j%y2LQutb<1BRv$D$N5_pFHwb2sngg_}RP=<21KlWWEH?@(E790Y=++)T zWOM?XRjm;9)CwuL zR*1T_Le#AlqKR6mgzm&dt$<0?3JJGXh^nd}=GF>Pw^kzR)=DK3?A=-c;ns>hK473& z5g3Ib%Qjh$fh@6weop8Kd>={=LA+lxnGO8Ma zQ8a|h2IjSn4w&RdVTzwDY-OqhrCmi4brnTaD~fnRQ6v(IiUJ8mk<^MJ?kdV`r6{7V zqKLYRGFK_es8SSBuc91zL&uLD%{7V@(P_~TKg-c$PLyFS^&X*fbPr0t5TKWEos&$H zkOhX44@xzo(XuoRB7%m+HD^6IbWSrGmrtV9&-kETqElT-Y!u1Yn_Ypor z_zr<@B+o=>gU|t?H^M-KF$kw1%tok1Sb=aM!bXG}5$-^E5aB6=ml57Y_!!}91Rt&s z!wC5Z?GU;n9D^_t;Y5TP2-OH@A*?~T6ybV=+Ys(U*oW`}!kY*O5xzqB3BkcNY7Rm% zLKlR-2tyIZBb8HCpm-beTh;X8x?#z!VX8-xxBy%CN@7>;l}!YK$d5vmXt zA*?_+A7KN+)d)8tY)7~U;a%7QfB#R0CsFP)gtPuZ`5nN!E{`*(*DZjzqr7-THEd`& zZ)i#vcZyZC_vF!hlX(-X=T5JlRRs%p=JdKsSWdGXde#ghe`P$rauxdbYzZH#gzsxk zJpTGzJnnvaJl?oC9`C$F;%;0KkDra;(jKeIvOGVSYb}C*vnC$jat3^wRX9+pM*o7} zwFoY}8S&c@Y{<1y&t!r_P?kFaZgJiZ^ng$CrN zBFtTYenN2JZp0r$h(W*M2rgWR_)>)Z3*lRV-YzUhyc@#0+Iaj51Q%Y9_$>&&`gptr zf(x?{Z;ikWz>13ca^#o(6Xt*;LpBL80G@pTy6 z5N<`d17Rlu%RPi}8^U&kT?ls~+=oCMP9yk0iLqe%JmI+ObshQ(p;J>bbo2iabj$rC zy2IgF{=drOaJ+wQ{!Hj_4Z`yX2HJwn5cA-q6Yf-y!Dl@Sy@g*m zW(g{5Ysq67&b5akj74C4l7fu8VLIZct8^V;@S%7-icpBq5#b1gK?r}|gEb7ndKjMx zKqx>cLwIX%JpSAxpnWtRzY+)IhYK5<;SH2?Y0p4>Ed2VYqiD?9*y74sIu>IUUAj5W zgt?V5y7^{Juf-DOlF;*14~!^?vlGi%`ztDe(WILXj6CoGyd6JF2Ri>j)Yy2=Q4 zbi)B}7Fb7h3K+%{X#bb~@>6^o;uU}UDLx#q{ntOm*8(2>_n+e10H*-{2Jmvgj{sNs zaTbHSuGR+d+7Q570LKBo47d=mEQoara2en(z()aJ0<`RS{0qR#0JChv7~;g^Jpr!? zq0a%^hvV@jfS+Z=<4u5LqVf11z-l~pz^A)XTf%n@xHcDSU#ej|n-`Dw2Rx7;k52EH5>5Ej`4VI3&WVuDIV_wIJYzO2D}V#31Cr|c>F5B>aMtT0q{z|{eV84 z34H@t-VNo`4C5TYK7bDZP6FKC9pwS{^gwyQqkEz};0=KL0lW7?dBAbKQ9fiCGy0%B z;KU z9&kF~Zotie`vLDCgYtl{;A|i_9rAJQ+Xs->uu}kso`QAOnZb5m#&^DCMF^o-sod9pT73BeY--hyl zvjEotUIe%UaMX5`2Rsw-6TsI2)9}U9Td>}C0{j7R6yPbhqdefffa?IGcc46AHQ;lA zHvxVE_-F6PBflm|Qua1`JbyRc3G4!slSQh=)g?*W{AS3LeI;BLUb0&ch)>qMSm zdu!wKe5^YUV7vl8@*u`L z;LCe3-T@!mi*X0o`7w-lz=eSO0bA@tdB7_Ha|n*dk6iggZfJKzDpcE3k?+>&$yU<|P3 zYZ&){NAJhD1Dpc57BJ@xj9b8we?Y$hJ_Ps);D+~b##o4r;eFJX5Puks;?F#5ykRbh zm<4G;oA>B3A1WIMKKm)&l@x=6n7Qa9gq{dXgpe|o0 z@iAoWLAV+CPq7AS{IGS_>J;m}5XeY#0AayTKgEMy9fqv7d_N}SqyRTAet11ffgcNe zNAS{eW+%!I2L2S_CwlR|ae|-~@@4^l3Gfq=@MAUpT;LxEey|tckl=qa@E;xqA48cZ zfNx=7kMovi9oHmyd<2>^L30E=nL|&ao1t0FCL%BTP)qa01xXpOY7MQG=2T? z_$46GG`_VTa_gc2;j zi}(=iHpCM;Y}7jNQ4xPQ9&hmSXFV1P5n|l&75UTBab4-9v5wI?WI^`oNIagMgpX)^ zPvDni9KQSn;IGZZ+)dK)A>EGkz#kRG+L6Tn2*E#wGM58?QdT^^*^6f#u1wT{x5B=f zjq7Bu3^jMiV?Xe(0DqYm&oOaUkD6=82mDxX-dIstDN!`ASY z_pAe>fR6&d-iucaPWe^9uL6E_693^^zjeUhfos(E-tx0#Q;PZne?Rc^y?CEgfcWQt z_m#r8mBhbD^Zx{RyDfZ2N#!Rd>JJ-WAn-?c@wEy0v@1>q{wpuu_o*&F3iyug;5$i@ zpQhzk0pF@D9$%GIez`8c4*0WypOJ(=RpWO6|0wWDW7@Y~(&NY(LsQ#U11Eza+{3O!Myq{NI58Z4&+ojUNU4^_}3OOyWO6^REK_ zxi0V(V%{a>XXv$U9q{|Q;oLrn{|?Q62k<9!$GYLgpDEBn|L1_O0sb~G-nT`U{{;AN zfp3x2J^|f6Y1nxG*aLpNr1I6ed?(m@&H{-T|G+;6d=6|rPy3~kgBbt7-+wHw%>WblmbQ!k1o?Ll zJN*8Y2EN6^vG;h}N3KCxY@`_2R)D6>2-p)pr`b&!>M;Q{kBmI@I3bUE;O86%U-8d* z6uWY+0?iqt;_;ijV@2w6rMs8z0nHaKmB>z3~}3rHvAWhqEZQu{L*IWhsOJ~ClNz(r^t^aP|hc}?#ylr3wL<6w9_XFQ!73_wj@^9(#-vIxY zb8tS9gg;s1bK#fhb}sCsB>qv&zYp;3*TCLLD!*Enp9Fm4`M7RK!sl!J65uzi#koQf zUS6cdp#N3Ce|!P%0rui~4OAdlh(6i_nm=C{m-dM}zGW8*{M*2P2mGPz2e#1jFCWbQofWHFx6TRhmjX6rN5N$XOG*5#DZi7S{V@*F^>9`X3M}Xhu#rw8v9X0_! z=3<8i+{7t|YHv*r;e~y;F7x-%6 zw24ESxppO#eqWL>^L@CSjPoP?JbHKPB4FWPwc@+*O#3jE>9Zvy@r;Cp%bFBIZM z`|bsPC-BF5@w{L{n(_|-|H3ce4fsPp1^#4jc^_woyoQJY-|k9Wvw6n{*WnDg4#!Y# zFlbuC_j;$72iJjH5_-%9&26AL+Djv+k0nwxtGRwiPqsc;GY8igCzXB8vhCK7r>`| zxcw##PQS;2f5_X{)_r;{>ID30n{dsNbWM=1uL(v0KmNve{B!U1o%OM{Z>oSV+Isl4 zY#s0mfFI=5e}$+1z;6KlS})!weLox{&jH`!7Wl4{@aHG$5B!i%{U=G~@740FfIsKf!>={#fWII3XOhZ4smt#G ze)?_j3nk&31U`nm=YW47_+eiCI9HFBbCq@Y0yO>|hxbiIa6YgF_+3dd68mul@V#z_ zpFC*{)afxW4)}|A!rz}%{zYAfg}@Kkg>#f7{0ADp0r=EAaVG4ogHd{5xJ-h22x zX#((lf&VnA{71TcJ@CQ%aDP$~{&|hR9QX%-@8HE(3ba@U?g9RB;Fo#vK3?_7HUCxM z+uVu=g|WdU86O`uu4Hy%F&B$~!oCGat1?FIg6;D4Xg zmoLe|0Q_KtKZ0h-KKY3ZV`w;XiEl(WcfBW6rzkj#DKh**YizRtXK@L~`xe%tP z{EJBd(@gwL3QGzMJ@NO^sWM%l(wOq%PuLfTeWCE2fBbXtxCNv}q`5ca&mF_NRD@HI zf8`4A$fO~B>4?K!ApS6w#2>biq(4;*7dcWtE*t#&MpY17ulR!tQv6{F5`PPEUB*8* ze~F5?decwCzf=hfSN`|Pb%Sg{`jbkRtMYM`R^p8>RQd~5(Qj3Hq2l|$1-?=J)m(n> zn9Lcf;E4*(R&cR`YZTn5;8q3iQ}8JTUsLd)f?q2bC^E!fj)LtJ?5*HX1y59Pwt|Zl zl%;WRgX(uT?ZT9ZDWWYE?5tpa1&1kkoPy&OoT%U_3QkwBQo*?j)+l(Ug3A?Lt>793 zFHmrug6kFBpx~tnUasIq1+P-@8U>payk5ag3f`#T%?fT+aGQd+DY!$yI~2TA!Mhc_ zPr(Ni+@s(l3hq^KpMp;)_>_YC75qxUkT{HSd*kP@Lg9NWc#MKW6&$1B1O-n~aGHX1 z6r8W%848}I;3@?#P;i5SS15R$f;TF-O~E@AyidW06?{U$XB2!@!M7FsSi#Q~{7%82 z6g2r3LHq?2bX%mbSz1!zo;Q`x{hxna*NE$+^4;}_>mQC6jczI*rk40)9v7%y&GNbI z5_hD^&p@1iT%JgObhG>*@<=~G<-6-CX&Htz%jbH@{1MIau`b4u{h$6@In!;KU&ms2 zOG$s6g7Xw?P_R+KZ3;fC;2#t;a%K5G3NBP|gMzyi{7Av_JV`%R!L|Hm6aIz`8q_yd zK5Wdy_OWibtFuc5-e)3vQ?`>~ELA)6t!`I~a)}>Fe-%1{?Fz444~cuy-HK&W|4RDW zBA5QdF%q?zU3rKvKXGXV5vCv<9B1r#5O`FN;~^O^RKm|{L(a5iR?FD3X5O8D&HUkJEL0T|{b@X2mt_Q7iDR>yp_xLfL&)EcqMI!&z)>xpe))cWhbsgd@ z_yX5^5YiY)W9hWk`iH{OzQvCbil9uye^cabAj2KW;N~30jqsWdNNjOf-bQ1r1hh!) z-)fO@`a~#D?$0wLy`Vzm8B7a*zM1|$%SMhNU4a>Xk%`EqG;#`zvv6*@N}C+5`Sx5&u=eX+A2 zza`E9NGx^E17%z1DR6G*+<P$5f~^2Q^c@X zC@{!+9^|1QFy(x!$e1>gg?glM_{;pCAnqd1rtVKM3^$c zjT{0atuRud_rSSNU{vHuax;k-Ey@_-a*>Eg29?#bfN9A@L~1=&Xq_AW0R;oci!!lr zfQj*<3gzLsWH2F%oGUQUsjo$Gfr-`>#G@R&(Dn2@`Js7$>B3B#!nN6}mN4w(#I)U~mIXuP{RL!eLatMdD zuW@*Oqu?}#oP3Rg^EtW9(UnqAe_8!80bWmYXc@2NVUaUhp;l^No{TBSeYyDsQUGlK zy)XZKU$$p+ziyq*+XB@dZO`V`-X_A?f5`osoA58}*K>e&_iNrgEcWZ?5Rv;eOaJnI z{Z~-9`!(Y~+pn)ern_I0abj;h7F{p*YwWGxv8>#o|IywWK)LiS7(2QC?!L%*noAF# z;_@*rUi>|MVp)wuHo{`^_wofum}_M6I^uFfqXQw($RHnoZ=c0ml9M;=H!)xSyGqGWpA*DC$cggLr8+O)zVZ$b8 zZrIe<-LMxSo_aZaq4N4K*dja+i<3_zg{*XEIet-pAvk7z z0VT3e22r^gEROIk#-cfcC7D#l5RDcr4YSega8Vfqw#^|`EPOjPZx?(7iE`9z5nv|w zp%)Oz;lzm>78wW2EaF0gP>bAP`-l(QSeRRVu!Ee7;qK5b*eRWe2sn{}Me1N@>rKY* zN8C;=hymY{@e2Eu;C3W(|A6Y|J&#tf4@5seljL2CI@|AM_d-_QPVDRU`_bpo7N}9Rk_Q&Wl#`iP+r_4gAnfC(Y2V0VHo}Xnu%)O0#?gP^PD9UFK^NwI!|3~)a z$TF-HG=S|C-;V+z#>?$mn-apK@pz0~mpK*;jqsUWk*E)FgO?YO_M#9+gDu+GUL1J{ zm57L@wa-kS1wOgqT@<;b;|0LP3~L#cZ&Ad3I>dOnz09WeQqFR(oU^@hR(Rz!c;&2A za^3+KdsWtBQcia^Kw8oHl*4$reX-3}m2%d5C-SUO88Jb-;Xt#SL?RaMNwVvN z2IYqJGF1q-nFTo^#w+YiHiw23x;fj^SvRJBn&_;XBC@miD5HIICi_Qq))tY-4G#tv zd#gyq!l~@JTSNjvPvS62FM5MQ885fbwK+DW(DS@CUE{6k`Q8>?>#gYpSx-ax+_31m z3*8pIpTjazG61YYj91vV*&Mr4&UUYy9bP%Ndt3AlubiFU7TuNg3WUbOyq(s*Q)qz7 z^@IRBqvSpcWxT?^$L2(mLhtnoy-x{!7t5J_zqfL`y+R*QLLcWqd{8ueEc_V<(nA6R zq35u%Gh-bgC&YM#{fN!kD1|=i6}s13)5p9*_j!dru7q~xY<@x{u(namldjMatamiF zi9#7Kx1X_p&_bW}j-BVcW9NA_cDO&;FGM{P{l%O&L^qy_wZnc%jvXU(22|){XGbOh zhH13eIT?%_;i2TvQq^HJHO&=?NcciFPpj6aAul(49^1Edf z8P1)+W;%bvZ`27PC(BuhQI+lN0k<6I8kB13oB(dQ&QiqloCEmHch;jF3!Dp)-^zIm zdbW1nfIe-Uw%}Z7Sgevg!s4EnIu=Y-^^ObQhSE+s3K&iRVob*YrO)XI8q0}5^%Un} z{Q8{{pb0o>_zgO*fzoznBA#kkWM`jjO$MXTY!uG5Cr6HgHgYIViBf_Q&ME`dscI-* z$94ZSVdUHS+rZwQDlukZB!3yx(^R@mB!46MPgm*Ik^JL124<*qt4RJ(;%BOK0d{mM zVb8MegWOCiGM-Iiv|2~Lv$KaGmD(3SstHaHb9-?(eNAT$qCV#={H8dAxzZV}ZF`BI zBeu;vY(*J#UA3t~ESIKQo7spJ4q$8+V(lg%h5<#P0kH)J#M&AV+f+boA^|Z?3oGo` ze1lOD*+{QPJY<5D?B5u48Jx>ypaLyA}q*qQ^g zIC)a7O|xXt;y8w$8MZPxq5F;z?8JLc7&Du)(U>LcF&076o(Y)5rBlg0-HNgZtlrWs z?1Ky|!buE&OKB@q&CImK^5biqhBjRYOxwFC-?0J(N=m|nKTb<=tP&|@u2Iap1kJzt z(pY%kD5;rvI!|bJkY%pG9to08Y$~hqixnlpRq|KgKu&G?U`n{8fMPP&6sz&06{Vsw zfAfXNm2Q}JH21&ti6xb8nzA0Fr6>iAcETI+y-)Ox@SPaNThOxRhrTeova3?Z_FV@`Laj4OQ|dx1H_O;0Nwg9?~4-Si~c!<9a2P>(gv~J zk}OfvXSCEpUw2pPfEbFzeB#m%?ODppX|u@Jl2`O#T1s2c?BY|4*0|D}xY~40OvmVT zrjH2k44#gbywPQKn(2Pi9nz)KsK*>_78|PwEI6JRDRx*pxmw-RB zX-&4P=*4DNspwS=o$x+tmKnk&o2#DeluJy}(H6YQ9luqaBJg+cZy@-T3h(DeQ(OvK zjoTVZA4bj1>&%vqiB=s~c1wRjY`9+K(kC(P%xz{=t#VTP+uiiE(smq>517RgKNklo zsj69Sl$;F7;&D@~Dx#I`)+qC|+p7Ib&u5D~BMGoSVLo2NoLOeeLAbf~m}4ZPX}a&2 zEBkJir|)P7nR8sO!%JxjnRDIrxYD+0D)V$Ri>0~Pok7j#yXi?Cf1~6yD7|B#D=lK7 zIx|-m!a6fgHEUP5b~Mb))n<-tfN5M(XiT<0kKNu{j+CW+CAD~$0HWBJTe?+fZHgh! zjj41PtKG)Tm%WPa;YEg7EXRsyI$mg)C5cL%%&Ar?)9m)rbPlF=W-2e3tj3!gO0U8C zW|o=m8sGU%>NU+YTdV4peW>Pbg&HWOJ6WQ?nXh&MoP1TWjsY`DrXL?E>vD+%sLKe} zMeJ+=v%9;qb**Ic?-aA|ir$h|ypBOszc+T23bB*#?Bb5;j(<>O3K*NfHzsDwJ$eu8 zn0mPscBxsq3XU&(8h(W8)KX|7n>p6wyENHADM215GWuChdx(eqd~ z;`Gp&ih6=peWw;Ty`vIm^n%@Cn3F^9=?u?=`DZrCN>0|4#&T36#aKhDR^D+jJ4>GI zG{2SQ6e#e2`ees*mxX(pLsP5SX%20!L!RcW1mYJ?b9lt=p62k}r3Lrey$E8Eq_Olb zpXTu8FYaj$Vx`&3OSc@ZYC7P7M9>Yj3}}0*$CobJDTo{j;YzTzB+o&Z%U; zRT#Hlurq$eX%1y3PIGun5wOW7`C#QEeBV1nAFOa_NTHjvJ)PC;U_}a52P7qEF#Q}Q7P2j{=cA;x#UBRds)5zjzf;wV5AQ@hN6XK4^4?u!vDr0 z$77INz#|IweJg!L(Mlgtv=T=YypgAsIHDMi7={3K57^vH0ybBvfXxLzU~@Uf(FIzt zHIFDlFhFG$Uyphgux3XToz;?~_G-sKYo} zmT!{dpV^cJ8&Q_Y@4_;?TeJ9D@+c@Ij!v55_DmOw*5dg?aa*QiV&2o4Q1Y!}`#Y?1 z{41^?LAw&xo(Bon9xwBwE`C4^_zq=Uig`M7ufmVuh{50Us7tYMUUe?dhZ6L=m;5wd zB69*skrazM{y}gpU(c~xlOU?h(Hdx(LaeRdNg{9aVsP#`+GY$ z@XpHSkA~32`hVK~KFkvjt}Xum_nnpcp2)DOA(lhKIUivB&?@1M1zH+ik-5-e=470u506;?E5Camc9kP6sj zlWaxbft>$gE4mj%CamZm-J0R{L@J}LXzH)6Xi{k_+QQ~SEBZlXX7KjJC^DK^(Zp#h zdKmDo6-~dB;abr|(26Dl*NQG=Tv^eTh-)kQ3nX&uvADZdG#@2*t?09G;o(}*nT#td zdJ-;0Tq}An4bW>V`Ue!yRx~BZ>zcaEcG%Pp zZAEuQduS_~x9eytdKk7BZAG^MCZ?_ESzxWLXlgIzEceQ3W<`7CG(7(W<`5i z^bW6_o!%DRmBm|nwG~Yb5?1v06zbld$cZF{-s=_G%!>9@ZnszH14^i}qDiK$Xw{<1 zieBioqB$F-&_}&On_1Bwq5Hf-A6G(^6)n3_Sy8L%(rREus@RhIEqwy2nrut2V)gzzZ0YV`q;2U; zw6pA|DN#!J->{`GhFoDwa|9gTmgX6hw58SUe$*X@?O2ZkHrJ|v&1FAeb5Rc19QMMN zenVIB^{8hVYi3J(hT@wUo}u_wgriQ|(qbsOwlotSTiS%JIaY3i$OX)>cNy$CR12l4CL(ow|Qd`H90HUsBO zhlcnQ?-vI&n?3}(P}ps@*_jEPNf!zW+BS!9Lc;Ql3F|l2%wz>&Qpbe#>zHD~@)R2P zT%u&rLfG}@524SeQ3O6dBmsn+L2FhB`Ju0pQG6F~t@~jjQ4moQpC+k$szPIsU+T*N z&5wRAuC(Oaj#TQqL@_~NnTldA>(0HT=q=XwZ=s77(;14X*>sQAp7(q?O`NVF|cFJgVVSY!mMw5q~g(4 z@sPJA{yATgL*KF<6t-U+gMNRSq*CwsfWR4A;Qp?zw&Iqj{ex6j7)5uH!QN1+D*Tn! z_6A*eZ+o|Jx*$H5DCrvEHAc}4<~|g9`BYg}-8cdH?`swhsj)G)T-=28&;Tv}BR2Kj zp(U#DDO!FPoYKqIy1Sd(T5nR)-9uDsm5O_U?oq>Pu2D3Y=+&X|QzR4d6#zudrumxJ zYQ<}AvA9WO^-$T==(epayfpNox>aJnR^%yNcxgvh5z&fEk98H<$boiN4k^(trQG+- zZU-qlkr~J5bEWv;WU1kLt?27o z!ts5Sg!a6#ly{G$THj=0;lW?q0wtx7Dp)E8`NTX{K}gBC85kB4Hcbm7NX8w?D0)^bI8skMaYN#f z?!=P~F*M67;a#_u-Wk=w>ze;+7PnAKE~<%eG-$(p}d4 z%_s+;(f?_8*}vNDD#_lg9`G#u+neRYFj0Q3H;Wfd+MC7C6aBN^tYc9|-xIQr4Aea# z?2KRVW~Hkqd?_>G&02|6z$TkyZ`NqoZ~w#ItXHX+e%Q7N3b^-#P#Ht$kB4okzxHO4 zN_(^TZWVg7P6ia-th*2q9@)ghw!~>~)BKX%~lWFK8*|gZ1u2h9^-Jk*FC~ww$%3+)j+p<-q zob_Hg&AeG2IgLt=@@5?kKH8h5OO4C zu_=X~=dEcoZUy(?l0u*Lj-6)SERWC^qMiZ! zV$KNBjmn!Pgkt6U2CH4b=4afJ{a75F|1y58PtbD7eyn_~bN?-VtY^_q+K;szTxAbU ziBiHZ__1=DJ@}f_?7`QZW)HsRG<)zhXDG~uLp}IP=TZh0*@w{5$W;%%-j7uBgRflb z5BuP29`7pQ=*ic2mE`NYO7itxCHdaFN+>j7b2|#yT;~FKu9v@D&;vH7OabpIxd&Wj zBfTE=EP>5DVV+_9W`<`NzZK!g)t)dhj9pI{6CO|4+Z3ekDj`aH!ibu!q4EG1Y4&ra2rIv(c@mNIw=Gr0o>a=U5q_>*)6a!j zSl|JhyG)@?IjLso(JD!Kn<`*7U8?1znq6Hv17d=FI2U`$IjD-QQpMT`uSJ^a=dL5< z6uw8>*Jp-SE7E>i!pmBM&pc8}nA@7~u>tvL)jmeiWNP?z=;isc+?~33y7n!7-9wcw z7G9aJhv~w(EPQ!r&se0fi|ukwL4Zy&t-Cl|D&~B@do!mMK|J}%e zL`km_ud0eVlSS{)U9)7_zi1Y9nnmvlm&I~HJlJjHwtJWkhg=VX__8DzxXz8RZeQWM z3%l)$Z$x7gOEG3+q$p>_z?SOSnrf+l`&!l;@}cd2>20R!4W^61_mFQeRqrkhTqFs2 zE5V`OU3$7ei+7h=7em>U@&Yz@a310>BVxag9|rX_qw^`+Cf9Ei!iH(l2Sk2DJT}+j zcpXn^u}s7-VDT1{bsU!9B#lh*7S!NPkt_&{@-3*r zn{ya9qH8)JvBhC|8x`FRD4xR!ZnelbQ@keA?jPapCQ-g7(;g5OZ#0hbHJSFn00r1l zz9!Qin8pO!j)m+&Ry&jlCtg;S+9G@aIqBkMRq5hoRp}3LDx`mdQD~*#fyt1PE?!oZ zE?!oZE?!oZ{v}o_J6*i2DqXy+D*b&do-NYF%c|1F%c|1F%c|1f#h#j;?s-{NYRsAg zky+AyPA!gfMGd0#45XH1QW+zg_J3+=nDw)xd_Xz1Z4Rko(c8f-wOz0m66I)`Pe{Qb zIs_SFh$;Iywag+elgn~$YWv7i$`B_*9n$kDBg&UmrFKduA_7iiAnfPV&erjW+icKl z5fNO|jhy#5sZ+8pVwQD4y)~j`8b+kqFL37>V2Qu};+IqXGtlKypxLjC0q|qK|(%W*cS zdQ!oHx;cg^>&fjW|9jRWFYuvSQN(9k!2l-{x^P}w7RF7RD{|Q_X5LZk7OU~x6|LAa zX5MJ_jIYsXExG55R>V!6D{^*HwKfi?H*V@&ks~(uk_dU@_Qe&bGaKA^2RnL-k--}d{yynVtsv;Xw9vJ{xc~q7wax!(UfIw=^mMuZtw=xgcKB%|{BNuKo(FbD z;++5=^NXbO9ew_H!c63f*X{b>i82v0EOPL_YtcQK?BiX9q4jScuM@)r`?Wsa;pheJ z;}tI2fAY1<7o*L!k2iv8?)rGy8Nb5EOPL8D?+Zu;Y_bvl%V26j7sMm?V->Fmz7l)@ ziHvU80y62p3?7Jni7hUZ{>$Kd*@LiEWzv5cd_VdYCVeLTm%$IBMWmtsGWf^n1&q^w z8T?abXKYxR^j`)Kwj|?B`Y(eY=I$mR`Y(eYMfsliO!_Z_|B-zo=%xQM=oIrMxzc|b zthFgY*n`2k%nzWL^j`+OFAEGV3bjHJ>Awsvj)YJN=@JW`neL#B^j`*-bbJevG06EG zTd+kDU(_xAm%(K=wU=_1d*yijm%$ZYISpPpE0r92!Gf!@qR;?x=(7x_6WYpitqz4BlgNB1xh5dWCxZm%;nJmD}wV`hXHj|7Gw& z(eToL8GJ}!Ae8>gU}o${0O`LBK4Nn=N}-Q>g?jy$!N*xeQK@ya=wcZ>B^k zL3%EOr^*-Wg|9;^2h}V4qV!w_6R+%x(sLP{CMnG}ktjWv!Rad9IufPlGMIQ}UzDE9 zVDne@1!q|!AvenoF7dP1v*#H>`NF;ID#XMK_p)arR>(&%vS%UIPCd;=-2-A935fM6 zAeQ=oScn5+sOMA!U-NAQS6Ri^qn@S9>vs&k5%%meZ)SLg-&+y6&-gge-WCb@!oA=- zB2jL%{1R7Iwm-^CvzB~T%$CoJm;4Y18xd|`G(*0b$Pw?;Z%x!)%%43A zkCC+`U)VDR<#n=*TXcac+S-yu@rwU~tD4a?Dw<+N(}d3e{H+-c#kW;>e4_xjKtj&5 zC|D>QhuyNdB*R~2w4MgUABh+cLmTwV=CTPtr_p)?5I+(jZp;~-&2158pwW6S5INAl zQ1}K<%;r{1gRu1%KvWPRd}6D!UO=2rp&6}X7&0S>5pRyWto5si(_IxC2SlNGs_mxS zHwF2whJyA>!3ckDqnrZ-E3_pf8|7v+N>ekMt%~M0MT4&#v`IfJnGbpFRQMfy^erHE zwt(0I0%G?Gh+W-C?LY(Xci2Cbfw!ty8hFh=08|}AMgFmYXSJlqt6j^^5Zde;JvGSs zg>Uq%XNg09qvuwl)HixWJoy_vqOH_7dd?ACgr6&5??S@LgF-2}(Q%Bc@Ac4`=6_=UI0tOnYBo6KIsTO5xcz7-~oku;W08=`+ULy5E^Bop8AiD1oe z-zLMjewz%-i=zra_iZv{oc=USdw-f4V*f?nM#o0{VKZ_v%4T4S`_s+rV)DtPLE?{? z;kS^mjdW7_Gfb;1kde1aaEapIX+~~GDwFOO|1L8IOD58g0p-{4!;Vt zmt2U$YfL^qkj4f!{6B#WWvb&koE8E3o&J9UJOcq7oXyZ_q{R|k=k}AWmjK- zO-XGD)5+Rj;j;oL9??$&-hz~D2RscZwRPXA!~Tk7x?e~jVXhG+tNRcY-U|+musw8$_!s*k-vgB~zjCSJKhu}}I1)xCU!a9lK2zu+lKPkUte23C zyj;q5Jj)m9felz{w#=6)HTxq4Ecdk{iubUPbvg_9&-Ph1GLy~w26V~4&3h+?CjYhO z{ZKTbHt+YM{oGr)IGOZUmDs`ht4gA`^;eZHLK$t|hjHQRn)mDsZQgU3>aQx@1cWVI zxcI6PWhTsfenux?lZ|WMcS1bJHShTb{+6eNFkqB<&sWRmD)XK%MbA~{{TsL_&sF9< zU#Fj|%zM7_K3AFde6@J4GVjSaSDE*GQF5*_?`M&ZGVl3TaBbc{jsn`erv!P~RhRi5 zwrXwOXX|Riyw67wZQl1rCA4{Oql`B1Q-FzS^S&ckYxADkOF7HEa?TETC0;ojymA_q9A(}QXAg;Q0l>Uha+G=hJ>`ho zlVIMnb)}puy>hPd%DGy}QRcm;KG&-HDD$3`)8;)jNSOBvAxE3{92!#S=4?-A-I(fW z#G4|rvy^#H*4n(6jmX=RVBSlisTdhB@0m!L_kW^L*SzQ0ltRz*)^v@xrssQGbgj4N zF31`vT2z_$szsG~KN_sHdC##cdyZ>nfIOn`(h4X4UrpG z=DiS#)h>n_C!6;imj5#5eHfKVHt+kv_}=ZQef*uCi~YL@7a=_i|n<^Ilvd z<|*@DVDLu%JZ0X?bel+?GVf)&btF%j_cGlolBdjjnZ}zjt=aTz&a#F>uICP<;OSwm z=7+rlDW9GI4v+%j3E(DKAUpv_GA29$r!poy0SghsXkj(+7E~;wc+3q;3|@95;#{)> zHfKdEdIBB=SJ@h`M?I_D{-DrVeBThB0MDF!Gs81d-->W>$~%zY2@oSy+<^p7025dU zo`Q8_+iAQm4pLa_B3y3TPRnN*Z-c8-yM>H9#fYcL_{l|xheSN|L_5Uo^hhtbPQqv7 ziqOs!*S1Dj+=&`(L9Qv`erKy7MFA5$9!KGo1P0lkYqT&IQgD$d5VSqQ*te{U}xJl;F3-sYZUO^A&v0<<6f< z@Sb8P2$~MgpOD|t*@pa1&VAtA+1Y~1cX95+Z&&9y@T_nqYGXrw_Ixir8lv9e|e$FM(^JwRHpg+b5fc{u# zBdZiVnll)b)19Ls zafWjfB+hi|z;l*!G2)fZIK*c=d8qXqXDuk_It$Rw^PJ0&f4cK`(9Czx==nCTACZuXC;e{q;^N=x=bYMXPRdqR8Lu)FFPOQwn`*&+`9a5zx;*5Jhul5R zNzmkBXCm705hnybj~W)23Hx1(p9KkWm1t$#@A+;+Bzs;r+>9jFN5s1$-a@REM!szy zNPQ0!E!W})3$*>mfLfsKKiPD#V1c#|rqZ)gu+XqS6lS<#eS%8ZA6eubdIBm(?2jYa zQ7kCDGO+)gL+R29VtT;lx0>Ro??Fy;zY+;w_yQ*WA`+Hik%RqLs|XB2lhJe$`|HTfRfBkH4*FTGvOk31Lypr0B@AaW`oVNc(YQY6K`^w8bduVpY262^ z$Y)f{w#*0@_e{RS+)gnw$-u~%H){!;%FNf`8Zp<(99i+)U?cO*1bs9c5Y@ibg_$Nsw&gRawW1x3p1}Lu2kac(HX2~z&;vW z0yZ~6eEb7Vgu7BvsesJ}N@vyVwx)F!5^Y|>W@!c^sn*JTl*C_~x0z!jXO)}t5pz$ySLQg#S*>ykH)1ZCEh606Q>}AVZge%q=xfj=HV~Zs^4AFNMNZM@(87G#EG8P# z%cb=69%wPsXNBU(Zo$e#ai>w*W)x3j40X8Mhs+2t?U5ENEhCtRc+p_Ay_sTV5Rqy{ zc%ujYinbRa+wW#)sqErgN!=qQ5csViGuldW+{3gJ;KP8RYuX|cDKT9*8j#CTCJU^wYWPVjc$wgR} zP-Y7C#PqWocQh2ehiPLLN@+MTD0+j^i(P_k4Q;C`XBcKlitt9#-QTX_ zH&XUA3GhTZMwMBf;^SzPZ=EYWk&WP&x-NK167sey{+UfbP*+jPpHeJKxw`sOdT3os zia;D}rdq^RZHH1V!=u_mO4KwV2z|5y!`}?2__(G>)yj%7&dmc>=ub~bqP1GBDQK(` zQR0BrjU{mGAzSc(HHcd2_Ib||4d`o}BAe%ZOEeG9JW4}cjUKc_H$A^k%HUVV`G@bl zP==`bgH|c4u4O!E^>Ss1PI}0dF{x-H2k#?pdW!6$C*1S|sl$^V9Ui0(*GnC09+R?9 z)Ajrsb4m`C>#YhoRMx7Ya=ol5U+z~Vw75Y^u^O8iicaCs-Rx#u)lhzeV!c{QFgAg4 zTYjnOM$0$d67ALQVMQ}h(X^#^mIQAhgRfRB5??q#2A2|Xo@BJ^q}pwjDpa%_Yp8jL z73A0_P0{aSA|rSxp>itAdroSMME?qGGrs-ToLtMR0J_I zWqr?8tXt@jcqvu_S>Ks%eceeo)2%NUi%~Gk)zw`v=E(Z$330kh;4T>R-Rfe&D1St% z{iV{r=rdTXX0_$#rlb~(0Gni_)b*2xBq2W>z(2F;7>qor>qx8F;x^K1wzwVVs^aQ8 zrkSqCy9BPT<2|}=*dt}GkU%YN6D{xJ)`z-wm%8qMP!cBIU9ey4+P%51-J9#$!&POM z8b`eox)yP^9qAI>qsCQ#H^W{21|*a>O2=`~w~?B?|A5r&YgH4oX%v=`5^>LL8><7i za=rGnv5rbwdkUo#xxV33@Fi|~QqlQXz|2x9RIGQ$a&gL$GRG^K8??;dQKsn^B&8g! zl*z*{6zM7_?_fE}a@@wj>=sj~r6sPea9S+~VM{Ah7Ep_Bu9eE!E|geAC4y3kTX#$8 zw`wI8VS{Qvy|$JlMNCkMci2`ztAncqPqmQltyYwh%Vc`wGSG9$DG?JrXib(&!7gq; zXc}8LjhyGHx@p?tJUY$APQew%W+)V}ze2+oFXLW*&==^dbmcK4|IDU4Ax;kUgT78& zhIn6e@iAQgw)g@w?~`<|>#4B}+nJ=_;uBMYb(_lTs4c$X^!ag)iW{A``h??=?J1sO zy2U4af@r^T|NW9}Hwld1U|JN$556pyEgNK<(QbgE8l$L+#Bu*VUt8(`HQP;61V^|8 zg2j`*Jjr4LvI92V#2xx_xnARo@WQ729!Y+bUYed}oy5Cn*Z6wzG|p<=yP`;3Ii2sz zU>U3NzzU;m4K=Lwg>$gw`%&>S6t5!MD<%#aSqFX+P_AB!eObKdMdRYCaTjEgjksz|H-eO2_DT`Tbw#50bo9+dsJxvCnkCe)Nv!Xrk9O>#CPbA;HE9F-B#2gTpZntA(nB9FXc;OAX zg8UcKZJPcv+N_kPh4|- zvO{tipoi0S#cq51eO=taAllpS8z$Qu+xCr|VgX;6)Od!X63XGPEv{y4pH0;el*9> zcZw<)Wgl^^eA^5i+$I^d&;#>^61Sn=Hap0M!n!A}R^K*{bT98qzK{$?k)ycQn#ET5 zgDDO<&?;@~YjB0_CMOj=!)f}yv?cNFsiLtm9hIxX@S-8P!2jJ8P6=P*D5I=h3>l}I zp|jUX4e4g!pV`!ityfN+Q%!a0ii|%g zG?%}wm|viJq9gjhXf#!sYFhM<@FLhKuUs!>yJX`v*)*5zT#)_cl4P=_nrymDwiaZo z8YS7YO6Vp{Hp5JnLf3)p_{);Xp4McuTr#|EyS(U%WU|jRS*1&MImo`;m`p}*rmX2~ zmkbw-<&RyJOx916&2h(yx`(9aPyoXgocW-(7$#L7^<^=8T8GYO2pkW4IT*GXrF)p!pC zJ+ejOmncDfF&f%d(OB7PmeMiD>HS+Ypm~d#PglRy7+)dn$8Ba2eNntSuHEEYB%5Ou zn<8;D++H(hhhWiP?wU`UV%MaB-EOujF;MB(c6u$Id3wzB%fY$30r_GF;rJADKGO(t zoCj>)84$2}#98(**XRyrs6vg}(Tbbd?*d&v?P^)tR7ZAT4 zuG-5APvz~+S@h~KkN^jgGI@}o5X7HIOeyh z$g(ZTBC=()*bWdo*bW2yz}Nw1SUg!6U^bfoAFJ&!WQG}%un!Cg4DbVANCGo#Nmzzu z=6~Nh_ulSSl#t$e@|3kzq1X95Wo=a^ve|SHlh1r zN|N=L`H$m{`ySk}Ldl;m!^VO24=xWUr+Bi_`p1F?6y#Vl3ZIG)q?>BgLXw5DR0?L- zdN4-n@N24C$Y%jt@C0W)(G=Rb)% zZh0$kx;sg;8(E6s3puQ0{mNk;Xu(;K?=|>Mel66*{Q(+S?oTl9+U{3z9d>tt6*2ea zAO{Dm*}w{0&NFCT+Mh-jvGV)a{03kOxem;c<^B|p?NAA8S#is0#q$#86I;k9eg&$P zX+E)qO`r>SR8EVCeBvQohbov)Y$2a`KiC`#m9VCTeBuc_Ed5$~Y?D_0=W)xu&`7jD zB+uRXKn}F5g;$X{e}(5|yP#Y3R=MRa5CGQ`-xZc&v_VyAP`MQvlbK`bV3$>>n9a3x zDETTU~cm1zRBg#_q(1MEnE zR;e@ikN{0JbSt{i)Gy&Q|0(39>SIz`z3klFHgesT-jZ%W8SOpWH@jK)mObrzw z0oqW@1Zb?>Rbojkg|&pBEhIqyl6W)$8cTQg9ROxV0SVBCS|&hS%k2mi->qN*w6(&H zuwq$A)%>q45aOoiDyH{{s;L^Ig?%VOS(A@-8DRSFUKk0rH&{FP?aHrTE$DI;)64#~f zpQC=6JAk(3ZUgRDxR}I4mF_Nl&T%QubKP;Yo#*}vRLytai91#96h5onLe#HuAI0Ya zw;dQ4x_6*vt^1FFyvV&9*LCjAxUP3w&~~xA2X~gZRe-$I<%Z8P_v^UR;9f+XMmG*F zHo40HxjE#Jaj~_|b-0)G-FM|UdOZ9;cye~t=BzRxODYQvO z@uWW1;o3Q9qx<_CT@FSlMV*dqQlSl}_>0f6&FU+d1n5|2K5=>p(6KGfCkXA^=;^9h zw|kt>7`TmX)i$9N&2Mb0dmkXj)G)`kma^a)s(Y2{ved89#n_9qO;sww!gdwz`qUu; z*qI{aX2=uib%-vu%gM)eLDq{u_-b8OU;N?fi$7d_@rV11Jc^UP_`}r~f4KVM4_9CO z;p&S&Tz&C}t1td=zk@#Iy87Y|S6}?$>We>Iees8z{o;?;f`~c6i$7ij0+gM2@dt?s zUi?9(#ZumjKUk|ObqSFWy!hkADAc28`S_00H54rx00_!rTNTEkAJ(E zr?loXGd=#D4ap+Pc?kNWsTj2KePwuny_JxObjI^KlBlui{! z9^=yqN<&Qf96#n3p%bpMHh#R|H-KE0qVS zd1WS^+cNQ-%*1ml6VL4)9_Ba4UzI8Y1;E2>^mtx%6~2<1nI3;bj9fK%-k6E!k2CR{ z%fxfu!^6z<_?@YR09}@1NIw219}lz9 zy}|l(H43p5Gt=YmD&qKfgY|ALl%<%N9)FJ(s!}-|xxdf?kTM%RUQj&&JW0(=kDrZE zHVx7{GJE>!%%1*HCP!bB+0)mi<|#*YG2Q7s7MCshcc0V*h9+9 z^!P_IJNMB{q#yH;GBZ7XSs7oI;=XD8iar5SW~RrBsy<1iyl#$vJVtFaNdGny=_fLK z`amYqzsp4W_a0JarpG_21=u#C`3D~~~F-JcNl-(lj2mlX0kl-fuLrCuMllF~9Q zxT)8XJ#*&%9M#HFe4SBzuIu2dN=iAB@(6R|w5;*y#*pD1wOiFPUOo+XOZKMkcgl_iq7gLn{5G4no=%4IFV z$m8q%_-B?unt7inb`IlCK|1q3QI`K02yiv?-qp-|H(EtO*35fXGw)r^ymxFbsAZaY?`r0~tC{z%X5PD+dGBiG zy{nn`u4dl5ntAVP=Dn+#_pWB%yPA3LYUaJGnfI<{-n*K4?`r0~tC{z%X5PD+dGBiG zy{nn`u4dl5ntAVP=Dn+#_wE-#=UP`Y?_JHjcQy0g)y#WWGw)r^ymvM8-qp-|S2OQj z&AfLt^WN3Wdsj2>UCq3AHS^xp%zIZe?_JHjcQy0g)y#WWGw)r^ymvM8-qp-|S2OQj z&AfLt^WN3Wd-s-VWZt_Ut3~F$tC{z%X5PD+dGBiGy}O|jnfI<{-n*K4?`r0~`vwTh zkgJ*Zu4dl5ntAVP=Dn+#_pWB%yPA3Lo`F;xcF*DSi2D+Jj=Q(u^Qil6e7?-p%zO6) zt|wj1ym$W%R8718j?ZJRX5PD+dGBiGy{nn`u4dl5ntAVP=Dn+#_wGjk=alNyPA3LYUaJGnfLBKz<;%?nfI<{-n*K4?`r0~tC{z%X5PD+dGBiGy{nn` zu4dl5ntAVP=Dn+#_pWB%yPA3LYUaJGnfLBu;Cid8nfI<{-n*MX)jQlCaQK3&nfLD7 zYmj;GYUaJGnfI<{-n*K4?`r0~y92G>S2OQj&AfLt^WN3Wdsj2>UCq3Aw_}t)>}uw{tC{!iFCa4?b2anc z)y#WWGw)r^ymvM8-p$CoPkhtiG`1j?__j@Qm~@}`j@oKXx=(y3SM4@tjKsHcI#FZZ zk6}~Hbf5UXdm9S6x=H+N z3C)vHb-6#INg0(o2kX}u? zPyEt(1lO8LZ#;#>uk$-m%hjZNSCj5tO}ckY(tSw@q#=Q%`+2BUrkV5!B;CIXr3x+s z6G*xzfKWM;?h{D5=Uf~Pm9T08N%uFgohIEUkaYjgK|3VfXS74oy|ydozFh)I_d35; z(4Ro5ge5mrLNEy=-M^7AKMFxPkwColZP|J_Ej+HK7pkBkD#=# zf=TyyO@a3IP(?9lNg(N-eHg1?(tQF+_beT)VA6d8N%t%<>7L(_*t-D*Z~TVn;urAH zok)x~a$lOnsyUwJMSdBsIb&b1GP?EcM1F6y_EZ zbropiH`4cTZ=O?#3I!V%2SilmUmy{$YbFu5*O7=n20^y_##S_PzXP(u?gy4|=6Bf4 zu5*UaV9rgb^j6DW>~=z4Qr|%Zdr3aGGeW5-JF%pah2~TkAnhfKSlE~PMk5O?ESyWd zokT9xzI-C}XJppW`ILe$q&}yGB`ka^6(ZeBSFrHoMf+G-Rz;j4YY|r!c4HBj3o&ca zd&!Qb)cs&um4#k2$nKC#yV?0mkX%vB_Sc^bLz? zwmjlDdkLhu{s*LD?;>7f%lKsd!({p1>j?)*87FJ+AP;WWg&n9mS$i89|0=Ki=*ikB z%Wp1O1DR%OTkTd-{m#S%=rD8NmM)1Jv~A`q^h*G)Wo*=bnNZ%G^ADa}*6vk$*pL>g z!_g8jSR$E2B%Q=LDs&MVsxg03tH#=lPA#(zoG+r>;9Fb?I_}di(!NG zvIo?<@F}vCzi?^qSV=i!Q^V37I}J;Lifdqdm&>IqX{&uB?2g@+$bmp=9?aqoQc!y% zZ}7mwu;`z4;itif^)BOxaikmHz}l^qByPku1TBKR^Uu0)0*&ic@>;K_7BCaaNNVfG zSD*&pd1WNEb^8Na{>91KP0(Ju&6CXcom%z-5A03@J=8E7veyXbQKpL^82(kN{*R-P zA6cfx2_nazb>T08zxkhG!SQ%53rtzTx(i)yx(9??PedcfyjHiGMrf5^<+pkwI?rp> zqFW(PM3-~(0|`8>L$Es5lTkIeNQ`Mc21&KP7tQ%GXt2*847L3yx?z1iTF3^!3K`1S zXZ~3iCaQcKUym-z!twR!>MR`Jn1SP)88~hwjz^YJSjz^;v2FD@O zk4K};2FJcoQxzImpN>ZU^FK|ye==X7aZ$BTlUbN%#6A$MHaIsMnm-V|#^AWIMPJYSfoMA?S7w^5 z7#ly1Ej=IU&er`fm(~aUa-SjULwYsJtUju?JMdx@-3^f&UwBHkrobu`)3hFPd@jLLIpnkKaAipQtL>*xE*Yb~%z}pNH z7W~FE-itxxpLJmzFj|;ha$9sMuc2rw%PHiqk6I6VwIRkdFUzM0>1EL*3wQq7Ksax{ z0O=u8^H&90rHuvTmNx4i&&B@)eDYWgmDwk{f(`%6>fr9pq63E-`Z)({>Q z+mN{~+F;0h*C`_g>!NG!LwhC!x86w#JEFQPL>+t&W)o{uRJ~~AC$(y}`ljdtZlqFY zA0P!?QFV*Jh}JHayZ!Qp6`F_NuO zqe2ub{@rx!Nsj~8h1bIL81^rY&hr>$`n5Q^*l=cp>DJ=twWeDi^}4mpC*zRmR-@mo zK0{`U|9qbzbGaeYK7UiFt%|m($Vk`VFAOzb4v3lur_vBrG=r$38AKJ$B&yg)>Je2s zgQyDsxkuF845BK@%x^@LQ{Vfkq2`2bzO4&C4~Y6kL^(yhHmt(CvW*CQ&=Y}gL_A*o zrN^spMFJ7{5Qp^J5woZ{-)VUFzaySVY+LzLs>?GG>j_Ux4Kttg0eEBnuMr({`}`I& zJGL2f|~jHh#KK*y^g&v;I>9&R0BUBsbT?B(6T*VwLz~M zb>*KTp012>vZt`L_0qgQU?AW6jH&yH0P;ToShHqgJP@h&EQ=Y}2O_Hsrp?Wo74Sf0 zy(etT91k-DS^tRn!3@kzyE#m6k3?FZHWfBOu=!_Q*o=O*=;4>QN9M8s6*D9B_Q)a+ zezU6N+at?O`Nrm#unTXG+`uwz&9dztT)u#de`bX4jpX$x#6EWZ67EN0%*be3$?KtsT18e1V)#2IRcKC#TPl^9G-sorat@_~dLeX%X{kLGxyJPQgQpCZ+kGtiRvZ|_^m96r z_a*QEKj_l>CC)x)O~2`(w2iRW$IZY`cvS2PsCXl&Fj$XA%FRIZ85}S7aiAyj*pvMR z#z%i_8mC>wB498u_D3o`7>0ZMBMZ&o?QBsx_eWYyd7Hs8tYq8f`-=ia0y^**_R_muI;oHoj*vw2z$^XhoB+n!9MTSC<`0pg~o0y*P zco7TeSM&9zdJ97;boC;!zo4jo96Du{Mj}uA&@_id(?8_SVv;aWN+UHsl&^EK_~KjAL!qX>CH!Y3a+?Q#eE@$x zIBfd+j1M36-@y7mkVv6dA9hav;O_+We-P9+g7E{<)iWmV=4HhH1G&-A2M2o*B*eN$ zqD&;L`JREr#2x-w7pfW{;FHYCyhrBThg73*lSL; z92;bLJsWea()xLh>Aj-6OOVcMCWi3CAnz1SZdBiX0~~ctzB^-WPMa}KBPq7cPg~>7O&EI*Hs@n6m3F|XFAgIb@G7?XnN0WN*NSIdX> zBh*@fu76hIPKDaegDci{)0G|HHC-VK`Da~t2jtyI;C8<&4{BGo`(62j*Ol#lSFU

`*)_8(H~C%pve%WH{H}cAWN3K-`_gSF{rATVg}%t)_!lT`Ufrx! z=9%&BBhR~K33(2QXqlXVP z!}=QK#d=w2hV}N7MjO{lo6*K!+_q|ks@n#Gg+IKrg8JDZab}Y9hj&74uZ2yvu9GNX zp7!v)IY9d#Kx+)ibyDNGNCwSyvVv$J$g1<#$vWyh7X@nVua|tb#k;^?jav9K9bWBs zc%LC{jTr?pK-07ez{6|Tq56Logxc0nI$8{AXTPIRLf&!_9664vhO`#Z$q&Jp+YD_j z(rQ@nq|bs@f3#m?SkUIP0KYZV_EoZAsln6j;aO$S0nZnK$ADcb)uzjbw98AS(R6vA z>GHCm%g0QYLv4@KV%HeRQ{Ofq9}OVaV;VG&Yh<1w_%$cJF(K6$dx^vcL#p0xOKsIPNLNSs8|CbwOpJUIqr%mbMojSmMP9W%}(-5ZVY z3`!-F(h`owZ^Al_{>?WHiD^o6+WbNOO}HwP(%*y|vMBwJaGKICnv!P>$S-}vfJ{@m zF97*Wc&_1TK|FSNj3VX2yrnrq|GR?o_J|#TQKndE9#i0>IXn!buaZ z#VbMD{t?E*`nW;!@V^-Nm7W?|7xpjr(R@6-CP1T5KOWv{WQn#ls|mm4Ylmki9Ozh;1?VZJ1Q zdC8~KgLx@jmj&}uctrqnE$p%Nu5baP@E`YJ0+9Y$7d{Zcd{=mpp|fuVPkLtAi{;pYJl=AHoN&jOft`E>TRZl*xp?elM6sO`%X_O}`s;=y=H z0AtHapMP%+U^KUrUvCZ98rN-`f%&!!n0K+lod)J#f7Jj>)Ahyx=AGdhudfEin=)WD zkkHo~7~LL>G+o~bV7xx;+u7!SNhPSgVCSx;1clao2wAr%lK??qq5vV#3 z@fQNbPoc39{HgGK!;sAe^Hg}T!F;0;+NtoGAE22oELCc!!d=Gyc;Bh!$Ed_p;hPDL z5lBPKv{69n&gW<4~RBZjJd0dcpj@`*b#~(DMI9+D43eT=0m%vP%D~3ttF`7zr;l z96F>!H4!p{8kpV2lwx>WUrJ-slc9mvabPza93S*>ppO1w|0uw*Ib7?JZD4K=Ut{Qm23CkN!ndoaKa55{K#80*4yKAmdf*M+Y&Ft)YcK{7Uk3k=<3q2&w6&N>70>3=q`-W0%W zzRvG^UAV!Ad6uGG7v8}0RE+8zq&C(2eLdK!I2VV#wIqh@1m)(}j_`ESkH2hyI}j-T zSr^_09P~tf?Nl!^VNnO*o0_b0% zj;>pxq2<3J!@g$_-|QhycdqDqgZO(+MNARzHHg3GR2#&72J!cuJXXzdZqGveZ!-|r zppGJTLd&0^M19^M{=k<^Pyfbzp~qK<7|V{&JEcZxH#h%3G=!gb=5wbfaL&KrrIvW3w+ix^$!B>P-3-$20r~TQ!37sN+S62SRaj=+i!-1)=4CK^9&$ zgl_Z*9SaEEu-XuM)hXvPjYFe^UUjMsq1z0H?)M4Zmqq9&(u67@5BP+PVAqgC{CdaY ze!|zjXfTf9nt#@X?*nnO27bIMM9o|ZHsL8y$X&B`7G+~QHaD-J&IRQgo7d3Hp-fw& zhLEQzc*9$Ao@)JGDQ>*M$tOApQ0t}y%5QYMAo@PoJ*H+Z|1kmG;pEe!`GiL+#!3II z3k%_zH7le$oF)Tl9}X@N*KJN@+^hehp#ILF{%uZ;hdI>rSCp73C-T%6OvT%R`X3DH zPx%@o>Q$K=NN8q@`#WEs~q3x z)7iIdv)BDeuluc08ke0;*;#FHh|v|MrbJ>qJG=Y=O3`XFGWUADN{`IP*(>#WS365R zjG?A)vrU5&Df8;THsEwVTsKp{!I@|3_nCl7qf=rC*w@-qh~`ax8R5R&WPOzrnfROm z^qv6TkpNy*0MCqEmDB2voSqV{a@zfoQ>m}O+h(JQ-ZRmDJYw9!+w;G8*T)eqT^(xsk(j#C%}KVRVV(&qYB!jf7XSjyZHDi zJF?4rbW`wX@J84aL^qzYD-8>_8AX4}t})w}n?r5+9HJlEx`h_g&|YXD z>@yI4XfHJo`kMcPWAa1$8jq>QH2l!^)B_mWiQ)SO!-qd(h}#m-Sln)C{JuRW3&Zzq zZ;RE#@O`_jDUi*P)jhIi7DX_MD*> z-5Q>6ds`tpTl8HY^X=2pxzjbNZG`jRPU8+MM!*YsFY-we6>hgjQc7mv`iG zl3VAY-yNX873k~V%K2x9AB(HMuYtuS_n{I(0S!vbPH#zfD71QlMyyx8@*)o&FzBCk z;U55R$rxUw)LVO1+m9_dgiXKR<)(CK352e9y(t_F)xEe0u(}l14<9x#7Md^2KR+cb z)bCp2feO{lBQG~;{SSHd;c)4nb)j~>slTb-ufIA*My=QScY5^~1od}$_17;5>Q9jq z*CjrLI=j94@MZPSy6_g%ufIZ_x=y1r;QW#UhfrF@`rMmYvyAvwDn9=`9O$9fo_$&A zvjz1Et=jx#u9IJxUx@v47m8~y#8HX0xCPr@5_0md%e_AL+T6}0QVYE&G2|B(pc0HP zzxXJ+D8#QA8pP5Ka&YQDe{C+Sn41>r#Bu&Ae-0YsJ>7NXok`xy6K$SIqJC~}x^8|V zgMd|NQxMdUYjfGs^=hElnPiPZk7m7rqd<5bP{ij+%Q84q)xg<=JH^X0kl1C&3~jV- zDA$eyNL@J@b7R?`tScwJQe;+=B?_LE%g~w#f*a*QYp{(S%xYiZwO5w1eI;%L1o8%6 zb&`E!Zakom@12{Mi$N=jl9>7CG8C%H#%VDAsiC+!`c5TOzU~wJf0^$}r+C$pYbWwxi_R4)&0Qa$TTvWSt*lwyC}Jvl}oFI$cmdf);% zuFY^;Q$&30TV$*+-VL0#NdG5|@qbA~0(npqmL(7KXPQ*sLI;-Xc?4vpEO`P# zL*-lMz%JGL!sDCa;7MJk1ZD^j!QdSv*?z_1OoO{5vt^dmTKeoK|3gJGQ~5a!yEBbW zVU|eJH%!i)=iwvJRVdD!*x@l|7Sr>5Dd%}Qh%@H-@@$c#mk_vs@D8%A(wyfJxw$h% z&NpF!$iaa5S~bHaRryl%Uy;g8k$JXU{-GqrEH0un5W33nhbhN*$Kt`VKox_uED2>G|K9W8jfANu;DN&S@U}!0GC7IH|nV>Wn z-i#T>b6?74T7~CWTX@wgW&`E7U79cc#V`8ja;bFi=A% zc4jfHv8im$%o;unUbbeIW{#!t7ohC)!LQ9Fi)V~h)@1SQbzs^Nc=ie~*VSiL8OULDxD}z7@j)&bQUG zF5$8S=-CUnOiMpw?ym)8@+6oR7Wu~C_ZaYG#{5v97Rbe(tq7XKTX>$epxKR~`F9Hik!OyZ@stMW3R+@zogG(aI z0O~+sgyIJ^R2p~#;S5fX&;`UqGNL62XJiLS5YS-7`I&^mbY&LPidUVjcr_jw zp5iUYR=g}<#3&wRK41rBW>F@dRoH=s?0ZtIQ?D;7-i%3qIjcQ_7n#+wv~kHy5zY)? z_`25MX`yz36#1cx+0Y|&k*Q)?*!<8%ppPvc`rt;Z*ZJTEA{Lq8X7m*?i`kxf3bn$c zI{>yaI|6e}=5rkIN6$jnst$n3*FBF}y1p^=9BA*;OLR52K+mcbz?exXa6BQanc~P5RzL$IrgnJz>h!YGdNI?7rR>o|MD)$ za=b3t8kXz%by^nlYf8%awOWe#b(a8p*x4fE{5mZ+^J_{r@@uuM=U1#qQeBdFOv=tn z;-cbs zY~|N!?0@N3e2yo+CQgm9%yCna#RCh_+X{kRg?Ze{sNkO;NoEAAPx&7iy zi@R4MD6W=e21=Xxs^-@gna8iyk~|~1u{BaUEqNfJTf#G_OOd*`Qdia^3r@@YEwW^_ zBvy;FM(jQIlH`Ba|59o%DVEe0iGbO6N%V~5oRMggg!|dEG=FO&vFoJrw8SwEcgc%P z?>F)5v@{zgH1G?fpZFumohIvYz`8ADUG&TuanAB_8ek5JP9(OL$clDL>@*>X z9j9V_YhLJ|b3>Ije-NK`j6Dkv<3sc^qMxxoyxP+a$0GLel+5APX}s7&zgV*Rv}DBy z$c})S4EQ77wEgPF9_FdRN zDfk!_GS(=)gx_b3x2KKg#M&yGA$%BxE0TLvWLTVj0O>A~oa173Nyj0%_KK7ORB^26 z3@)0a7S&)BWB1ZX=Db>BP-d9ODo8<}qir>XTM}U6h6Rvb)qBuw!4*so%b+5A8pb!X9zANTF#k?{O))B31XuHK;cax6ep3 zt`f$+XLM1`8OwMp5*-l9lEY&lTf`C9^pt*A|Q9p8;WYraMV~@+C zr={{4$-5%8(=rcSxPsxII_(XAfm3kKlfs;SS$7OBRDtA*lt2dy-s?Tw!0z!;t%sl-wyf zA6Kq7KPWlhl_GdiXGwU%Zca(=Wh&oXXoI;bYypcJCE?`2(aV0;;v9iH=M+~-;%+HN zCmUtq%@RHdXX`Aqjk@MwL=E?^i`^+LS1=y|A^zc}840I9mV~W|72551 z6RGAb3E@%Vhb7)6$@dB!85k?|doSz63Ms>I7dW@VrmM-d9r&a5zoi%@~0n_HV8}|) zDenfn`l~Vz#La<`o__{7aH0!RcA3J^e2e6ql2SBBI zZ0>vI8WbRUDn)_lL0$@+6Tax>IC*^_$hP4}6~lFLLjUkP`&5%dhmQ_UPW~Tss(g&I zds!p!vYzNMURH^{x=2beDLQfc2v(_NyJfFW!j^yjF`55cXUk&YN+5hj+})JgQpoGD zw4bN3D>Q47=beG*CtwEZNy^%Osl!SS3)*3+KQ9a6V4Rk@=Q(Vd^YpVPv4v<3cl?D_ zu8G(?N?4hmBpehjsbO{~5LkV*_e;}h&TYEjZj=SQeOYH2drG+4gx7h)Zdra>t~(>` zr=@L+)SQu(r)AL{GXILyVZMMaya1vbBX(~}>V~BiT|F(eFQ7@Q_VWc+CR2)KzB2`D z=(rc99QOGxDcxf901JKg?4qQcrLZf`w#&F`yC}KNmdj!}t1ilBC==Yr9B6y&DUt4s ztEMmBAl3p^j8U8baY9T%{M{BCleZqm`JVqSy$DG+6yY^qYO;gh?!b%;kGd;YQ< zq~sEfQVji{(cR)FYnK9<|rt_U%$%@u4oAs2g+WwxMcyQRc;dtw%t{dk?gYt2FamU2XQa1Ts>e1Q)Fo3JJw1G{5v>) zXyeU~@kc~z@bnSsUMu-eOKM8$0lV3v*IW-dOHARTevkPs+9PFC>g4uUOFcbnJgjSm z81^xYRSzm+RZ`r7B}gCE{wu5DgT5S#zj{(p{7LnK$RpUh!NSe zmc$m|3ip!z3^3$13Z`2G)5;Jpfu0pMO0AajQ7*tqZ>@-RT2Rr7)k)c6sm-Ws#TH8b zGO=o;^9Ct=S{m%-Ng0FZ)o{0d)!i+_D6PjTWeaXpNyD_>-|O9Il#Rioa$SjzHfz)? z(S#9blzCl@7gQX>&|i^ah!@sk&T(pO-jsBAvs3w|Q*fmO+=g`Q(Y|UZ2!mjRL51aV zaf{+^K&`snX$Y#7!(aA@ejE&qM?W*h9yJ^RhX>m)2Gcv|BRjncMPu7!cv zB&9dVTyxQ_7n|++5^)hy#nK2)`f6$GnWbjV?K7(}MvMuqlV6yuOsVaC&)HV?z|b5b z8mtduQ?js23Qh|qhdEm$d5Gp@@fK-@=x>n~du25i8JnbXt5lndZb>Kw)&i;@99HVt zdDyH&jBlYO;Hwg!G1O5JJ)5Y2$GZrH1K^@hN@l3fLRW#95(C<*{aZ2k1)mOC)idRQE{Yq_lw8Q&Nc-&?zZbJ}fTN0qde-Lija= zJ%#mE(M8`B79WR!x6uWxEj{ZP+=AigX{O;QgK=CALp?Ta<-figCrf9Op{ zpTLuny;2B-Q!@7sfWacOwG`B6G}e%PB-R*-eXZK*Yjnz2JGraHT11iX4Pg#UMqLw@ zldy+PFyS-4nrSz8u9aMP9$2JXd*?mQj-fGFSYm<`uU9n?dwHuPK4De4b!sLu%rmj|J+-cMeG3PFwkKmhX zJohf)hM3(aHT=5E1Px5+%Z8!q7p@1wjk2F#&)<~8iZ+az;cFGXoIdH`*IgRi!gd=s z=J1ujTk`Ib_$7>YQW_BO;6f71dn_bR%ZvLZj7==NCB^Tky%6r8^KwYr2c-pqsPSs+ zJpGL#L~QdR!`2l$3J3XNT}8eNeEHp+WfLfWAtTBy%bDXgbBB_H_`IR`_46oMmI=nSq5ery$K$|`% zDh)~WNq8hc^%+U-BAY7Mv2zT^IS4(qVD`d9x0;`Ypb|VyoJSA4C0BP%mD|T<-ClO1 zQ9FZK8`rs}OZvQ9D)}6DvhSu~*3S@RaX+V47n>{nvIB^=NYiS$h8Iu(2i?qWH+Qcr zzk}yn&TN!c2HrVte+js1{*pF5Ylm1PVr6;|7bQ0wX)vm-Zno!F47 z16FMM{UAP{dzadZ*n5)Fe6e&H4uW^pE3v^`CafC5WxB3d!Y1dWC3^O9C+U9 z>+2)(;s-7lcMw+{vu(CL70l6n*OV=)>qVssd=Jk}%!e-xxL@+JmRlIa>4sO&0k zKBsv# zrt}3#acul{8DuSD-^dx?VKg_)58;Ou`wBiI@bd5#jZNV*hh{wik5N70QK} z;X;mfI+t9?Q!XU*26jowg@TClLl6F&|3L8n&4d4zKM?$X_2B=>9|->UJ@|k62ZH}S z5B^&f{_jN!pY%Y!?e_=r2?bf`+;yr?N-s*mqk@cxxY>ljgcF4BqyqCL~p2s!zAoO<`HhjoG*o{q}BNV=%~Sl!EPxw z7WD;y7$maT3&N>ZHWqPQT8K(#0x2(lNHn=bgJ3o`Lb!k{e*w6p3=_-?tjZ~a^HEAF zUV@45vWS_*UI5QVe6}}NA@;tb53}fFvTzR*4yv)1oQDVme%ZVV8&yb6nc_;RQj17_ zL13+RB%^qaxfSWB=S22^t`{`;dy`VLM^Pi}BbOwChCzrJW?bVd-H{Wr2nz>HSA}bS zJ7kSKgDWH0U_|X$y@Z#@l4=Q`L%#~0PUNgu&b3vt-N}29jtdfG?m-w13$Lq^oRSEl z`5HThSEcJC=mn8pl$H3xiXPbk2poHfc#L@3k1>-2_vW)+pLujqqYSLBkFu*{S(WFz zaheT?6dA2nYak#d4jPcU2^z}GEzQ@xsL7cCihXS0^T=Z~0W{<*1TRjhk1omzK0kfW}oN1drwZ4j1#2IeCphU6ct`xtf1dDQOjofr6 z{H7FA1!72db#h}5GG>YFSY#4nNjwiSm4I8BzgC>jNCb&s+=!YBXB+WltXtuECy-Y& zZ9-C>+l5RHU~po8j86s@6OmVPYb@~)I?^wjp2Cu~NH!r^>l`-D?v%Mx>IvGf_o}P= zz$Pf$&T)DWR-`Y2+*-V)o7eOqyfier4eD71Ia-*Y_Nb6O|A?U-#_OhHqgzi$o|5g6 zM-gCaVvrLYx$ZnKQdsm>ep*rp#P>+*q~yFv33x%WFj6i#OSpsgsI0!zZa@|*B0^4~ z-DcTMNysEVZ2Y#Hy)0=jOJUfVEAkA&_-C!8ya-pBQPWZ+kqpbCerbU1Xk^yFB4h{M ziwz(|(oziD=5p)Wbqa9h??0K`0yJ7NCB=8a<{+GOKjFX#GNBROYm_BOp_-C%#0}R- zJ7y8~c`x9aZ73)=x1kcVY(o{kTZ$LQnwr6})Iv0vCL#GGWSqNeut3YZk;wBjwn~xh zi7%wy4mlO8W9KCAacC8mdz3iDx460)ktiZNP>oGe_!@54ZjSB7C=?;TlE(n1AvZ4m zl}}M*+he<*k_fnY4>D?srEnPFy6|)^E|3fUxTXtXCg_qHggy|&!G0*}m1tuCHjVGb zt#Iu9;+`@YJ=nwG;C=)jb_AKr5ukh(#^movET}>1&DGgpEQsC5_>1N~ApMCj9#a^a z6WyoFL--2Jh6tm_3-KL&M1?zwzCZmE|>h&ccQslhyWWlPKzS8b!V94S+@Zq|V6!t37U?1vn1-U6i{{!)+}5 z3{u!i4!7c@X$3eyirNc`q`(ZRbqa|>IZt8ofv^>0q3>`;0PFdkh+&^nW%7D&7)#zs zyIP`_x9(L^(#&FTf$Xxp0SY4`<-2Klmm-MBxu74i|2yAGQ=#2k@+3nG1sK4kc1syO z=&mE8433I($lCb-+Cg4p{x6ZIvyto?|j_yib8$0wA^3r1WVJ>V1Z=zrEWZdi) z%_8GV5h6e&(U)=NxAoHuc&ZKt))-CGsqeRH+FlKe{C2c;kvsjt&QdLE8hY?}>=9@` z5=mg^Z1hcZ*oxwJSrG^+}Czmhk-4%=1*~t)|&eR{dAEu0nc<3YfSn zfv6}>UipWxuy2ul2+Q0sn^xFydfrW|tW6IOyti59m4c|LS57C+c{lvy30~2Qs-hG^ z7HE#`ziQ1{VKGvutE*u(Iq+>7ASVz$H9$0cF}RI%eRE-o5kW-$H%{f?-aOoce;OZ= zoSV4$p3_TFS=21a^L%19TnHd++DFlTDRN;Rl8TGE0ggeV6KP+>hZ9jdovzuSH7#f| zb71gQ_#l%)ni0a(3|$H^Hs9z)V?&INJicgaKvIlf#-Rm{1t=j8j&3);;P}mDz{gUA zHh=gO-34hkIu8O~1V$Di(rG{GS3w;Uw@FGsG&aQhq-av|FH=Y0kf{?qY?9#5N&a5= z8C|l(`4~=g1(#8SvNFa=Z`m%2;Rfpc$~D<6MKirJ5mR>`Sja_z3=N^}zR7J*(Ym=NbLxX2{1 zrAQz{c098Fa2MO1AZwLRR^uVWbV1e`l2rh*ik-nK#rfQc{1f4-jG)C+!ME*|6!_B83p;=1!EbBmcgxxcHq_4TpcNXUmL#XGPPU9!xdV1qiP=a&RVdI|r^<&9NkKpMoM2o>q>yJxkWhlW#OL{hFPJzE4j@0sISQ%I zbCO@7{v`T=DF*{(;mkreIQ;@h;H(M~l%k7fNps%l0Rnf&B=LxsErZzah!l}L93(D6 zVE4H{b6O<-IHVA&0P;@5bx+}37>^MycovnL;JoKU{$h6sPCeyJpOqBWv6rO)t7V)A zZV;@=8OT8FnJXdaeXIu)=2tyc=4ICugJ{nb%Nd1Rv<~ z!))PDK4Mom&jimH0&p`=>eJnc826q+1LMhcqAxB8DHWcTV;!J!+ zoExQVJ(G?*>4hL~_m~t<$s!!EnUbn5^2dhc6bv(6w&WZgZ&=t8=T=N|NMOER&kI#~ zuDD#Y7H2`#fXDEKcm{kYcum!)J0hJ9>P2|AoK$0h&!NE~9FjXM>+g|O=a}ag0ezk! zWy&x}D#EP#Q?7;*INpP?+%56DHODHu!!*+`sErJqTl-}la$88%Gu$OFhIs^#6KNpxV2R;1 z1&(p*7-7JSM$r!pRlCt?j25yxv3fm&AqFe$5pLSnjmUgd#;k)*K?tx4M31`&q4+HD z6IcuGY`ilVH$v#^$-l;7Xs$^LUpw{#>)s}Wrm3Y!%^~TQV)%D zHgN?yZ%UjCJjiDVb|$6hYw}_&>s3;Eozh`xp;McS6M%5286!tmhz8-JV_c0pID&{E z7Pw@{MRbbzA%hg};8XzE^=h4EeAep(jVuOj2!VkBV~$4Gxv0V9;2KX1DY?W3QRWv| z$FD6f(ec9c4pG2(t!+W*3(0?NmHtB;Er5M~(%xJM+f zN#d9BvI5CR0x=RSkZs2p$uN_#kZqCI!E=AsJ}IHCML3eD!o6VXgMnoi+zhWVRs2nZGfbT;9I-YMZN zJUI;?EC<5?%8NAr17zd8?lsOqSeP7VK0H`-VJ(C&7u+*FkHA6BIK2pe2Od)dK||Bm zKE}zBbr{7#PxNxFvQm4F{%dD*_Hm4G{^7Y{BGmspFp;5>hsA#!0G(TrKZ&4{6UWXp zRI)j9j4HSq3I+(CU*zm`Cbc-@K7-nNB#gr$$9p!MI1T`yONg@w9PK3DDd8MDN1TgM z2hmdJIFdUrqhbQ_a%U8$Hk`Rt$bkc^9-^2QvHy)yekY>!*d3VGVYQcQ7(MnF$FmPV zX#^=mPC~vfhH7rG7GPzV_&=qsg2<(=V*bO|t0d7)>wwi$YC>|}Wmb?)hiI9gGAg}r z17M&|BV7@aOHEg!5x&Gs^915&1$fg1=#Jym3=YcFaDxLHoA)=I8u8fMWg=xz1YOT! zLfXq^0b*MVdAm;vj|pPRSn^h!VS+sr9h*DYOHne^0?_A&;lkm22OBIrcAA6$;UJ5y zUTZK*!7GH1e?>N8f%dexhCdIIAs8_(++nf#xyBsLJ1%9I7?3Q2G$>$1RQ+)-C|zu@ zktVE;&+}*|WV;X&j%$_kq7g*Cr-$L#U|2P*0kUCz*`yyS-RLmR99O_$;Nlrm`)R3# zHogXX1mF_RZJw3|a2+s5mP$stmc_=HAVOw@Pe|vPwt}Bue(zyyxByA(WyW!ohs zn#@^buGS?@%ol!oDSU#j%G|rb82E>HY&p|kfq}@!SjS-M;F?w63p%!PVF0UTZdLKt zud&C&^@w*b2di)N4GrWtmO?df>j{plyoLx)aAOzcO01fb1OC;l#SB^cI4ol`dWzoH zL86je;grN)D&&Vlyr+k0P}QG4{|LlXlBCWZ#5h7eXA z7#tfLKQK5oJ~1$OU}|*y$iVQ#P!<%QsE+O(9idG-0Tc%(4jfv8vj`03p3c? z)4TK84|=y@1lMhEU*8exMTB@Khi@m2bIoYHuD3fhHhyHJNB4SMn{ zChCyx$gI1*yLU&2j$IejYIG7k&7!~;OO?~ihTWYzJGQrXvsazZ7Ar;M2}*j%XN+_j zcSi`vX28Aa!~4PL43YDPtfOyR@AfPmUf;V53O`HLZQFa-8{M6a$6Gslpu8E))TY4h zw43oA8Je0oo-=Fj=-Aq6hAIP$Pw4vg9k5@w92uZE%xt;QDBI+r@rfxFd+qh))ZoNa zT5)DJ+61Wqt3wB-@hhSk7)kh!o$Xl`%y85U{ekhZ>BC1%uOKU?S6MUG1D36*Q~ColpB4h>Ft zs-Y&AoXPC1PXWYj*ZQ5xt&I@yIGIyyJ?q(@d+G@H%GA$#gw24r8mdUkE?*xtE5 z)Z5eFHvrKZ=;__iG0@csb7B-=mIqsVH|*jJH8DO8v0}rmU`hL?4l~Jm_H_WfqCr-( zHF{)teBj9V!J&}ZaGMR^y6)cfU9-UBjL?0P&X?ODA3OU8Htywdx9V_H67m{oL5y+rG1{)wG}S%%3YT%m-(!(Al$dmd z?C8aaDr_B~_Q|Op^nX3<+-#J>sBGE}BA~e0pDh;4jH1l(uEm3Y${}p!TR>@ zZVY8lz^YkEys5Wy1GRB#XyWkbk-@3aBO^wOGb!FUJ~4!OH1pOvF#MKTumxno0UaB^UO8vBgVQf^~7 zRK@`I=)l;}v7xa6yk=tm_*iIaVtOdEb+)*Zcu<{2oYn+SlIePQ!${Mh9N9WFIXO7u ziS@uRe5~;a5ILpd=FQfIoZ;ys#sSkYo16`gnLCaRj!h4-qoc#KRWe@Fv(+wOKCE;5 zR-=krJ9lht-?@Hs=HT^AAMS<`#!p7WCsdUj8k-y%9X8icq%ru1BV*(H2f?@l6N6I+ zGMq>wb!y6Iqix4}n0!UHOSRl%POD_4$GV-I$1p+$|J2ZlDP#VXYZJy@oy7*t(O=@l0#pf8j>`7{tZl&Gd3?f2wz&y3@S}jR1-{g592*>&3{4D8K{7)Vqa%mFOx8DM7e3=iV1%ers<3LX zgZ}BQ^}RiCU4naQ^~zWbJey`{e#iQq7)xAWTz9BNNh@OKaOlX;&_S?%=HJ2-S;_JQy1-8PHTt?TUR z-8SG`14TXSKp2*y5O!gvz4S(M>$aVpTRVcKg3(nZ?$Emhrw$Aq96EBq=uNws z_`08Kj_$zvb-S)ZrUvO0DUS_TF$6}&o;{GedIBXk(oC_<7|~g{4u^&U=uJA5bAN1) z!0335%|HgW8u~GMWR&Y>Z?rQepX}+w_o58|Gvh#y;CXO54>9X#HkL!*XS=!J{x%TAVZ@?`85S zojZmOZ^H}tc90#OpbQ-x@CJ^wsA)YuICcvpo18XqIi%_62$pz*2gi>O9n6C7huZw8 ziJw4tAmk%8&ZjyBDkEvARHkE426$R8n;wGG7Xb0!i{{x82+jD|v7wNfqaoE9wMlr4 zN1l!L3g{=?bu~IVB3@h1x0wu$4l5NNWN>_9{NOZfwRU*`3JMl@pwg1&-AD_ZSAA>< z9q_9ge)^@^Y^aBHV(9RAx|uQY9tQPjyleQs-c>-z0G9EiM?#Yrp<53_RM=HrVd{&W z(x%3%2a!Jv<{Ek8IGbw5h^NaL-Ado|dXv79-67?F`e8s}1~s4`K$P29)(sp*C?VZI zJBsDPbU>d!_(2`ar@=LRgY04D6Z8_Vv*O%B~Au6PZomQ8=B@e^g}$%rm+~=00PdbV_|T`L9F4oG}sJtm~!dZ&jCwbt+4opBq8+jn^DMPpf2 zAx96MFcc_ecp1}-cA0Gj4?dz#JqR2!C^N7TQ>1s>Fq(YepqM#H9bztxhsK5u>jafX zs!<5E1qjbY^9q=H0zPJlKcBJ}>dkpLd*F*=_UHZv_^gzm3IU)(H=JUPWGZKfhJKL= zldnRQ996u4gkKrabRWhHu>sWJ&MsBYfy0AGLlhRh@aXXdLWeMufg00C9d=-AdmoX| zlWkwWxqV%ChmW(*8&Oc|NdpE60WZh)ydrHVjS; z($nJas1vIPP_IG3j$P}r2cNMM4XCB-Bc@`gA;}#t@|$|MLDWWcU5N@<11y1T2Eq`? zH>HnK;1h&+YtMQg00+inPu6|J76XvDR$%Onf~Vx`)2usMN0)K~I}m;b)U6#`d$;!w z?C9JbaJrjnacl@nHuM4^UHvC&mwlhCz@C zO?zF~w39B*;9>9XFj@uAX(-rRqgjd!cXYU0R(hSyxUq}WX~Y?WePCkrD3u9lwC_6+ z2o7Om3c98e&~ZY2VBeA%-5D681Ljedsk#7>1!-UvIRf}<0(~jdJs`FQQ7Sj)(hLCZ z1$^0|)OfOK00rPFZ=D0W(>OIgg_%!H&7}X_@BJ>-C)}oC@&Y{r-li%0OcID?pk*cY z`!JKL>iONJsrDg4U`J6q;5vo)|10fEp!6!Lbdg|0vY3RBL_la{F(NcckX0R$bUF)W z>1>8Y_|xg`&}};1ZFh$xc#sxRaEZ7e#}QOGI?Cn@GK!2SMuq`5ltmks4u1uyZ zs7;uPOYh2Nh$}i;p7z25)|yDzs6~cy2q{fY%4(Z+#aA|~CmlMUHV63-9t-c}ku_>2QuZ~T zjZUtwAWSUsyb6a|7pv%@?C@{KHhiq|QSKMp+=Ed}_ptXyWmo|l^b6}WHdEu6%m^rW zafrw!I#ytpS0*T3%;} zH@TpS27`SdB9BoFiLcQ}Gf=-(RA{PKUpOK?62eBtIb5o(Z4|NI_zuFN21G={8cI0p z@EHQ9{+fcZ08NWb=ec(0fMb*V{*FHDtWo@s3f2r2z(~d&43csxzZ|Tx|2OtO%H*!{pQkYL$fv1FjgX)6{&dMmt0s# zXR}_4U_NtS$#w?$isnT&z~SvY6g^;;!a0bxg8C} zwW+w<5;?j5LLI@^(GYk{@AN`Gq)wnlBq7M6D{DAV$aZFJN6Yu;>x=T@*h3KJ;g z?ghi%4JJyQe3~s1aGUg+CJeRT@9R9#4JvI|h3aR>R|>QiVt{{r+E*9$R6LI?9#{5N z)&VT@^>wyl1E*Bn%51kYQ0cM$*4+W=V_$CaWrF?{wx&4HURl@9goB4^9c)zED;=A$ zlEGCATmG~Cq<_o~*#5L&L7E?J{N_j7Y)WglAWtpDu$Epatki%x8UPEG^)ed3L@w;_ z-IO(#+OTQWa@cOIOdGhC7EK9LpCxl=!)P(zkYRjJF0XG3xBIZ7#0=KCyrfR-31%4@ zv-4u|%O9I_gD_VE*qTci<8z$_`>Q=JHb7#-*_sAnud1aHQfiR~JFxMI_iOX?uy#aY zhOV74^R$G;F7mFzFHKt>!Ys(89_yTUUuw=Vg9|T(#}tDsZPkxg@c{=^y|;#4|H^_XZev$NdyZ$ zX2q(eCfXkP$_2g>u|_u7X)D$=XZ6C?H0RP)D_d5r%$nJI>>R8y&6{g&=EY>?*KNR8 zxl|a-SCrJOCoE`gdXtNYE$<*#c6Iz@;9w8-4bh&q-boFBMu%eW8HA9Tv^bZ!L&zn& z&8cs&e+HIt2YrP-(P)tjz&ew)V9rAC-(VuFZ(Wm7Nx+DzO)Xd~Xn|kSFk*n^WGav; zv)I_I-(oCaV4xE-n)O+8syP^z%vvkvy|A+b3k8|Bs>`buOcYmE7Bnwv$&xko$ox%i zH)04tzlDJL$#VokIyO9N|g?Z#Nh^+2V)3)`(wV_LQB?ZYB4$S)$f zO9U3nt(>+KBDJ-&kJDyv7FWFBen)=~RtQ8f+a}h&90a-O#exV@EY})EMLS>@s~x*3 zY~ROBrHo#;taw$2MuS$DWCeRY*K2 zN}Sc=t`A(;Ola%mz!gPl>+WS+Q59n2tQG9BK^{!+gnAx;S-iDm#&PU!(rUz(6Rn9{ z_hFB+pIkP`xB6W;kxw~pKCFvj&?T4|Bw7fuCRpu=vSm$X0#zC4-PqrT1$+vI?Xgm= zbaixeoQj{cMjQ-Zu!by3LO!ILMG*PxT*YFWW#ds8*@dPo+RIm`4PEW+%+73!6xWPA zi+TTJJ%wf9x!&WkoCWS<^N5>+&Q=q%j6r$L*LV52YVS+UX&nXpLYbqvv-sX|GXXaf z9*yZ@wtsrExwE{i)noE+olZmFrcN{V$e6&u&hUHwFMc2SpfiwG&sdo0kmwC-_+~u7WhcaEn_B8Q3_5(cK8wC>HRohhu7`{ z{QkV|9?Jg*-FO_N!z<|iI1GKzZ54gc?Hz_b=(dSI=w29xKIr;!@DHz`dvO^0yYQ3n zyn09Z{XqOUGOw|^dno@ObYouXSkR3hhCb*%ru>8Mpke6e9PR0T`Za!k=mft%thrq#tqrQ5{bGW|=_9(otz|=RfNa@cb)992M>fvKjLtT7q8alEb{kU}YIG*EFzDA~(r!>AEK0dV^ zUk{&uq0w5A?DC2gyVPfbG|_2^$wW`IH? z(;>s)hYo`uHVppCVerF;!H=lHS?c}MbNi}au-DbY4+1_SjZL>5S&nhA@Euk7G~o@e zD%10KaP~_%--3H*8D86t{IwM3+gFv&B}QK>57z;&SN_i#{gkvr?Rcd!{+iO?qVy*T zzt8BWrgy4+qntk&CVl%6qBJE9trewizg521w>vN$VP1d2AL|vr%)ZLdlnwwH@lE>0 z_Lag95&m7_bA_KM{N=B6An-GUuMqwr(a#qClF^D(NQ{o8{SZhU5Pw ze53H+obLEleoL1NKXjf02P4euD&hZRKZKNbvrh`&u7Wp-{wCp{I@9AfDBo?u@1EoM zwSG&F2|uUFflHOnF5%PXJ09u(UHHHP$G7<{O&Q_!J!zo>Z%{go!1se5+jfuxQ$#;k z^t}{dTsMgR0@3dfef0c6;PvG5GNp4|i>LF9#(|FvL;q>f$4_mZseEq}e*bDu=cj&4 zcMJdQ*$#x9KOp?ha~yxI=pPsUl<*GSPWVyLe*$>D_Pts3@l%Bp!53cN5dO7J4^Kvz*AIo?-tOVw z`z`Gh{x2O4d|UYQ!XFkRzbJgv{?6x~bq*|1z6T5cMz`ZPi$2jrtq!}4vZFm-U7THA1(yGAN1r7>BAwVGcXMOrNiLw15WvgpWr!+0~fBVg&*}U z4~Jg5MfmN)8&uA33cuz(P9OYyMEJv(JASX|pA`PwEsnq7x3ow2^ba_&SolcvW0rI4 zl@5Fc?Zj)G@JmGBb(rHv3a?z@;YQ_qGH~jjS;sjr$zP{8311`pAmOb_=T|p6Fk1Qc zh<<3ArxWACCec50tJBYxoV?fQr=}em2ZxmYKa2i^e{+EH&Fjlbe?a8{TkQHz(LZ*( zhnJ~dA#X#XA20exl+O6qIANr-Q~0DR{CTB+6MxJU*G+y)X_WJS`F}VN^&KPp7s5Fn z^EyoU_OE(4^yG=cpSjENkE{H1gkS!3$485AtA$_n4aawgzFTk}i?s0so z()pn9o%cE(^OhTgZ@AC#Bb3e;gn!_E$1fJX4S2o&ct3E?$JVTK!r=dd!uzW5$Au3G zk9PTm@GFI@JEq?Pr~LnUyO$^CIs4)Jg!x`C`lO5x4E!P$T=+qOzo(2JX84q}M)Dc? z9t)iLUO2+(j}<@pz8)V=w{#|?uf0j>dvWc5J^J~ePibP!cgNY5PVIL`tLUr0Uj_}Y z{SLaq(y9F(dHq<{YjjEtRJbXy_)}x$0_;8c(^LIObo>x2FA$+C=L^ zKEI_#;h)fetma8`gkPhH;TuJNw(yVq&4CXK-yl2=Wj;~(+lBAj=fK0luZZ-O;i1Am zZMXu3+rNwcsJ}b-7FBG*%UQ45>pszs`nJD2M)W&{pZ-V3L(cyId_3f&Q~DuNd_nZj zKj_FMdNKMy=jSczFEP)5rEng}%i;1=aqkT@U7y*CBiRz%JHie=l#H0&UaRo^V(t3|BBK%_IsYd zETywe_@ZApaGLP%3qS974tzlP&xN1+oihC%;1j6-)h^RSzfbhL`yBYZ@QF})_2l6g z!^ftV{MZRKO;0n2pikrHH?|RYk*Qz{Q3|F9V+ba6^{K&yZ zy}M5M-74qF!fzISz|S3s{(h(MSN+=Y-I`zBZ@3~CZchMby)Lh+*Kd^0p-Y@N^xF%= zq%#hBmHOnz4>^6eUVGs2VlZ_GEo44itPdL8c`(chr{c!<(@)Nlm~w_gu~ zzo>N1xYLPy6=%}e`s3G8z{%%Dk2_(=?McG>zwh|xl+JA7FbS}0K=?A?6Glu)-&!LE z3%|hV6)4=^rgXOa!NF~MH^g)xKe0|5^SY}07>%Qke zi}2~fcZ~G}I)u*>{%Uo^2Zb*azVjyzd{KCh@c3D0j>o(%5q`P!q|`^cQuqrR!QbxW z>1yF0k>b&GBwa83cFiAd5&dJ}!+7e?Ys3KIcS#Ooef~t@|EhF))vuQczgzf;iyZi< z@CSvTvBZHd2!FzG1q!!4z*(N^arSRYXP456^|$d5wR-yeXv4>*(PO+`kE(jF5#IJ= z&ot!Z6yd)V!=43Scr^>ZtkuJZE1h!GiI~!@xs6Jgae0)Z;isYJ?r?jqJN{|3KVWFqJNvxIY;l#7d~;H z14=IS319Vq<8K!IX5m})-EoBQ_W`HgtCqKGh(pg0wRyq0p3dvDO6LiU%inZ3-68x| z$ajOoIcjsRtTRgz50~WuLwV1dNTTTpYZ!7Cu>AMBz)X12PR2Aw+jEV>U+BAKPCLI zCmlFj_^rTSrRU=9TcW>1diX58d|3EoHF&@9p9|mhI|q&tzDM}Bha5OWI1W-bd2YMI z0qzIzI$Zd#^H`_j5-IP zc;#Q+N`#7oRlSLuBMs8S*>>ps|Z1M$DYRAthLNnKVQfM*ElqQ?iVG@ z+$HItQgT2umzD69lUbhJZ51+?-7wgrqW~GMFrUK@ra)2!xzA`72tLBqvP7ETL3BHe*F`UO$_hG%o4+-l5)UWG1FSgBsj=}S8pYKyBGl`dK{q2FrWdTn zgT*wNmML-to`AC#H`6f@XG`*Y=ECUJo+@+CSuz`EvzFgj)dAt`PIt6+oHc9yqJ?vsDl;2r zHl8e9T{L^O*m0&uei(FaKS;-^p0>U%<%A5}&{qa43s)|NadylfRxWPh>|v!H))h91 zCBx}b=GmzuB&izht@SWDkd3s=^23{eP0N?zfl|joKn9X!W7RN&whp3mj(CC-({sbk zvg?fGpvKOdwwA+rbrif>!mKni8O@wYN_;?`aj*)wJlNY_W-CU^Ssz;kgRow0h&-l(gx_mQdK6>L?AR2O5u4ZPq)bb;9EGV?pW`V5@RFY%=)`AhY)jfY zERPkAqhF-GOy|K&y{lFl!YRz+7tVzy*IdMDiHuN{89qKn;37rwaLay|yUb*r3ahPJ zH5tFV3qr&OtLZo1KPne)!09kv@JinL?smnnXK1~~>(0U3Pgp|P26`*-52TGhnx&*T zXPD$h_oYpEW#Lj})D92GjRSBsF?p3uf6nCSo@ffpgyjn40Yo-U4`LV5f^S$>(2O(Q zmVTsk(c7ThD{}7&t82*@rZ6N$sq&G6mgZ5Avh$5xkBnIysl2PPfO3++qxB6oc&JHQ z-^;Ihd5gC&KDomT(+AHGmU9O>&G@A0i>NeWp3fam@EI>SgYP z7Bd^AJX3vyWQV7r?Rj)rIVq%K`XF~9vs#x}>CO{SU*)KlXHm!JTEclKH=~@Pg5_cn z6_BHlY%4ns|M=5KwT;ilf z^9E3l&R7_#xvo!9&R_2?-Wliw7p2S`jLEIMaVwR!&8?gXqUaab3YHv?ic(!@Fu6n_ z#ppqqR;X2jG3J9>Rio1>X!asj+=a57P5H{2lEL-JJMsSqxP0uD_$Zl@avR z*FBgTtyeYLG0}}&hr+vFoB1?$Pzt#Y)!B}?5%L&p>((vFV#G5NZpE3w$Q8%f^IxN7 z;E6$@q(*SeK0X`UJJxRG0e19f2kt?hX&=w6Yw^n<7e&Z^TR>D`Rltg_#k>Ei-~)S#Wr)mQuzg^i}667Mtb2t z6ZgFbI%VWvUH{7!e~y!7em3E6vsV>n{K@#Mj{iYmB#~K3N(~6`YOw!_@>#s9+n;tM z#rO>kP966(d|9}#U13+;uSTdCKlTsf{^&D`pj*TX^b=L_!w)F#+LjA)<8>Cm!}a)M z{=xs)hmQNw5Ma>oYOw$LzZ>ybj30hQaX&s|tjDS5-yK!)!~ZDmvtE(s#iwY$K)2yx z9RAn`c!izc(=vpwrjKykxh;aNx-5S9Gwu0b#@~*(tYYLJeouQ9e+QX^E7%bEMms)< zcO;4U;UBeqsYjf~$b~E7$Ng7$SB#(eQMGvdZH2gejCgV14XhYH>@>D1{*6@)*1$vx z7q@qqR+K;dvN~6J{tYt<#CU8d2h(2>Cgt=hJmOkj}bravs$y2sJ!hdX{GZlA(m$X$$I lG}{Q-aZ3N+x5MKvt`dOivSM4ZZv3x5@A1RlJ<_g@|KC#IX378n diff --git a/progs/other.onyx b/progs/other.onyx index 1dadc9e7..b699b444 100644 --- a/progs/other.onyx +++ b/progs/other.onyx @@ -1,4 +1,38 @@ -other_value :: proc -> i32 { - return 8675309 + something_else(); +other_value :: proc (n i32) -> i32 { + return 8675309 + something_else(n); +} + +export fib :: proc (n i32) -> i32 { + if n == 0 { return 1; } + if n == 1 { return 1; } + + a := 0; + b := 1; + + count := n; + + while count >= 0 { + count = count - 1; + + c :: a + b; + b = a; + a = c; + } + + return a; +} + +export factorial :: proc (n i32) -> i32 { + if n <= 1 { return 1; } + + f := 1; + i := 2; + + while i <= n { + f = f * i; + i = i + 1; + } + + return f; } diff --git a/progs/test.onyx b/progs/test.onyx index ad83c20a..7b492349 100644 --- a/progs/test.onyx +++ b/progs/test.onyx @@ -2,20 +2,54 @@ // Foreign functions are included this way: // sym_name :: foreign "module" "name" proc ... -print :: foreign "host" "print" proc (value i32) --- +// TODO: Make this work +// use "progs/other"; -something_else :: proc -> i32 { - return 100; +print_i32 :: foreign "host" "print" proc (value i32) --- +print_f32 :: foreign "host" "print" proc (value f32) --- +print_i64 :: foreign "host" "print" proc (value i64) --- +print_f64 :: foreign "host" "print" proc (value f64) --- + +something_else :: proc (n i32) -> i32 { + return 100 * n; } // This is the entry point export main :: proc { - nineteen :: 5 * 3 + 4; - thirty_five :: 5 * (3 + 4); + i := 0; + while i < 10 { + print_i32(fib(i)); + i = i + 1; + } + + i = 0; + while i < 10 { + print_i32(factorial(i)); + i = i + 1; + } + + x : i32; + y := 0; + while y < 10 { + + x = 0; + while x < 10 { + print_i32(x + y * 10); + x = x + 1; + } + + y = y + 1; + } +} + +export main2 :: proc { + big_num := fib(factorial(4)); + something :: other_value(3); - something :: other_value(); + condition := big_num < something; - print(nineteen); - print(thirty_five); - print(something); + if condition { + print_i32(big_num); + print_i32(something); + } } diff --git a/src/onyx.c b/src/onyx.c index dee3930b..a4614528 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -13,7 +13,12 @@ static const char* docstring = "Onyx compiler version " VERSION "\n" "\n" - "The standard compiler for the Onyx programming language.\n"; + "The standard compiler for the Onyx programming language.\n" + "\n" + " $ onyx [-o ] [--help] \n" + "\n" + " -o Specify the target file\n" + " --help Print this help message\n"; typedef enum CompileAction { ONYX_COMPILE_ACTION_COMPILE, @@ -39,7 +44,7 @@ typedef enum CompilerProgress { } CompilerProgress; typedef struct CompilerState { - bh_arena token_arena, ast_arena, msg_arena, sp_arena; + bh_arena ast_arena, msg_arena, sp_arena; bh_allocator token_alloc, ast_alloc, msg_alloc, sp_alloc; bh_table(bh_file_contents) loaded_files; @@ -83,8 +88,10 @@ void compile_opts_free(OnyxCompileOptions* opts) { OnyxAstNodeFile* parse_source_file(bh_file_contents* file_contents, CompilerState* compiler_state) { // NOTE: Maybe don't want to recreate the tokenizer and parser for every file OnyxTokenizer tokenizer = onyx_tokenizer_create(compiler_state->token_alloc, file_contents); + bh_printf("Lexing %s\n", file_contents->filename); onyx_lex_tokens(&tokenizer); + bh_printf("Parsing %s\n", file_contents->filename); OnyxParser parser = onyx_parser_create(compiler_state->ast_alloc, &tokenizer, &compiler_state->msgs); return onyx_parse(&parser); } @@ -96,9 +103,7 @@ i32 onyx_compile(OnyxCompileOptions* opts, CompilerState* compiler_state) { onyx_message_create(compiler_state->msg_alloc, &compiler_state->msgs); - // NOTE: Create the arena for tokens from the lexer - bh_arena_init(&compiler_state->token_arena, opts->allocator, 16 * 1024 * 1024); // 16 MB - compiler_state->token_alloc = bh_arena_allocator(&compiler_state->token_arena); + compiler_state->token_alloc = opts->allocator; // NOTE: Create the arena where AST nodes will exist // Prevents nodes from being scattered across memory due to fragmentation @@ -115,10 +120,11 @@ i32 onyx_compile(OnyxCompileOptions* opts, CompilerState* compiler_state) { bh_file_error err = bh_file_open(&file, *filename); if (err != BH_FILE_ERROR_NONE) { - bh_printf_err("Failed to open file %s\n", filename); + bh_printf_err("Failed to open file %s\n", *filename); return ONYX_COMPILER_PROGRESS_FAILED_READ; } + bh_printf("Reading %s\n", file.filename); bh_file_contents fc = bh_file_read_contents(compiler_state->token_alloc, &file); bh_file_close(&file); @@ -145,6 +151,7 @@ i32 onyx_compile(OnyxCompileOptions* opts, CompilerState* compiler_state) { return ONYX_COMPILER_PROGRESS_FAILED_PARSE; } + bh_printf("Checking semantics and types\n"); OnyxSemPassState sp_state = onyx_sempass_create( compiler_state->sp_alloc, compiler_state->ast_alloc, &compiler_state->msgs); onyx_sempass(&sp_state, root_file); @@ -152,6 +159,7 @@ i32 onyx_compile(OnyxCompileOptions* opts, CompilerState* compiler_state) { return ONYX_COMPILER_PROGRESS_FAILED_SEMPASS; } + bh_printf("Creating WASM code\n"); compiler_state->wasm_mod = onyx_wasm_module_create(opts->allocator); onyx_wasm_module_compile(&compiler_state->wasm_mod, root_file); @@ -164,15 +172,17 @@ i32 onyx_compile(OnyxCompileOptions* opts, CompilerState* compiler_state) { return ONYX_COMPILER_PROGRESS_FAILED_OUTPUT; } + bh_printf("Writing WASM to %s\n", output_file.filename); onyx_wasm_module_write_to_file(&compiler_state->wasm_mod, output_file); return ONYX_COMPILER_PROGRESS_SUCCESS; } void compiler_state_free(CompilerState* cs) { + // NOTE: There is a memory leak here because the token's aren't freed + bh_arena_free(&cs->ast_arena); bh_arena_free(&cs->msg_arena); - bh_arena_free(&cs->token_arena); bh_arena_free(&cs->sp_arena); bh_table_free(cs->loaded_files); onyx_wasm_module_free(&cs->wasm_mod); diff --git a/src/onyxlex.c b/src/onyxlex.c index 6c969bfa..9b0c68f9 100644 --- a/src/onyxlex.c +++ b/src/onyxlex.c @@ -20,6 +20,7 @@ static const char* onyx_token_type_names[] = { "proc", //"TOKEN_TYPE_KEYWORD_PROC", "global", //"TOKEN_TYPE_KEYWORD_GLOBAL", "as", //"TOKEN_TYPE_KEYWORD_CAST", + "while", //"TOKEN_TYPE_KEYWORD_WHILE", "->", //"TOKEN_TYPE_RIGHT_ARROW", "<-", //"TOKEN_TYPE_LEFT_ARROW", @@ -55,6 +56,8 @@ static const char* onyx_token_type_names[] = { "TOKEN_TYPE_SYMBOL", "TOKEN_TYPE_LITERAL_STRING", "TOKEN_TYPE_LITERAL_NUMERIC", + "true", + "false", "TOKEN_TYPE_COUNT" }; @@ -141,7 +144,7 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { LITERAL_TOKEN("export", 1, TOKEN_TYPE_KEYWORD_EXPORT); LITERAL_TOKEN("use", 1, TOKEN_TYPE_KEYWORD_USE); LITERAL_TOKEN("if", 1, TOKEN_TYPE_KEYWORD_IF); - LITERAL_TOKEN("elseif", 1, TOKEN_TYPE_KEYWORD_ELSEIF); + LITERAL_TOKEN("elseif", 1, TOKEN_TYPE_KEYWORD_ELSEIF); LITERAL_TOKEN("else", 1, TOKEN_TYPE_KEYWORD_ELSE); LITERAL_TOKEN("foreign", 1, TOKEN_TYPE_KEYWORD_FOREIGN); LITERAL_TOKEN("for", 1, TOKEN_TYPE_KEYWORD_FOR); @@ -150,6 +153,9 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { LITERAL_TOKEN("proc", 1, TOKEN_TYPE_KEYWORD_PROC); LITERAL_TOKEN("global", 1, TOKEN_TYPE_KEYWORD_GLOBAL); LITERAL_TOKEN("as", 1, TOKEN_TYPE_KEYWORD_CAST); + LITERAL_TOKEN("while", 1, TOKEN_TYPE_KEYWORD_WHILE); + LITERAL_TOKEN("true", 1, TOKEN_TYPE_LITERAL_BOOL_TRUE); + LITERAL_TOKEN("false", 1, TOKEN_TYPE_LITERAL_BOOL_FALSE); LITERAL_TOKEN("->", 0, TOKEN_TYPE_RIGHT_ARROW); LITERAL_TOKEN("<-", 0, TOKEN_TYPE_RIGHT_ARROW); LITERAL_TOKEN("<=", 0, TOKEN_TYPE_SYM_LESS_EQUAL); diff --git a/src/onyxparser.c b/src/onyxparser.c index 743333fd..9a7dbd51 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -39,7 +39,7 @@ static const char* ast_node_names[] = { "NOT", "IF", - "LOOP", + "WHILE", "ONYX_AST_NODE_KIND_COUNT", }; @@ -48,7 +48,7 @@ struct OnyxTypeInfo builtin_types[] = { { ONYX_TYPE_INFO_KIND_UNKNOWN, 0, "unknown" }, { ONYX_TYPE_INFO_KIND_VOID, 0, "void", 0, 0, 0, 0, 1 }, - { ONYX_TYPE_INFO_KIND_BOOL, 1, "bool", 0, 0, 0, 1, 1 }, + { ONYX_TYPE_INFO_KIND_BOOL, 1, "bool", 0, 1, 0, 1, 1 }, { ONYX_TYPE_INFO_KIND_UINT32, 4, "u32", 1, 1, 0, 0, 1 }, { ONYX_TYPE_INFO_KIND_UINT64, 8, "u64", 1, 1, 0, 0, 1 }, @@ -79,6 +79,7 @@ static OnyxAstNode* parse_factor(OnyxParser* parser); static OnyxAstNode* parse_bin_op(OnyxParser* parser, OnyxAstNode* left); static OnyxAstNode* parse_expression(OnyxParser* parser); static OnyxAstNodeIf* parse_if_stmt(OnyxParser* parser); +static OnyxAstNodeWhile* parse_while_stmt(OnyxParser* parser); static b32 parse_symbol_statement(OnyxParser* parser, OnyxAstNode** ret); static OnyxAstNode* parse_return_statement(OnyxParser* parser); static OnyxAstNodeBlock* parse_block(OnyxParser* parser); @@ -249,6 +250,24 @@ static OnyxAstNode* parse_factor(OnyxParser* parser) { case TOKEN_TYPE_LITERAL_NUMERIC: return (OnyxAstNode *) parse_numeric_literal(parser); + case TOKEN_TYPE_LITERAL_BOOL_TRUE: + { + OnyxAstNodeNumLit* bool_node = (OnyxAstNodeNumLit *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_LITERAL); + bool_node->type = &builtin_types[ONYX_TYPE_INFO_KIND_BOOL]; + bool_node->token = expect(parser, TOKEN_TYPE_LITERAL_BOOL_TRUE); + bool_node->value.i = 1; + return (OnyxAstNode *) bool_node; + } + + case TOKEN_TYPE_LITERAL_BOOL_FALSE: + { + OnyxAstNodeNumLit* bool_node = (OnyxAstNodeNumLit *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_LITERAL); + bool_node->type = &builtin_types[ONYX_TYPE_INFO_KIND_BOOL]; + bool_node->token = expect(parser, TOKEN_TYPE_LITERAL_BOOL_FALSE); + bool_node->value.i = 0; + return (OnyxAstNode *) bool_node; + } + default: onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_UNEXPECTED_TOKEN, @@ -392,6 +411,20 @@ static OnyxAstNodeIf* parse_if_stmt(OnyxParser* parser) { return root_if; } +static OnyxAstNodeWhile* parse_while_stmt(OnyxParser* parser) { + OnyxToken* while_token = expect(parser, TOKEN_TYPE_KEYWORD_WHILE); + + OnyxAstNode* cond = parse_expression(parser); + OnyxAstNodeBlock* body = parse_block(parser); + + OnyxAstNodeWhile* while_node = (OnyxAstNodeWhile *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_WHILE); + while_node->token = while_token; + while_node->cond = cond; + while_node->body = body; + + return while_node; +} + // Returns 1 if the symbol was consumed. Returns 0 otherwise // ret is set to the statement to insert static b32 parse_symbol_statement(OnyxParser* parser, OnyxAstNode** ret) { @@ -520,6 +553,11 @@ static OnyxAstNode* parse_statement(OnyxParser* parser) { retval = (OnyxAstNode *) parse_if_stmt(parser); break; + case TOKEN_TYPE_KEYWORD_WHILE: + needs_semicolon = 0; + retval = (OnyxAstNode *) parse_while_stmt(parser); + break; + default: break; } @@ -619,6 +657,7 @@ static OnyxAstNodeParam* parse_function_params(OnyxParser* parser) { curr_param = (OnyxAstNodeParam *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_PARAM); curr_param->token = symbol; curr_param->type = parse_type(parser); + curr_param->flags |= ONYX_AST_FLAG_CONST; if (first_param == NULL) first_param = curr_param; diff --git a/src/onyxsempass.c b/src/onyxsempass.c index d86a3090..9ce783a8 100644 --- a/src/onyxsempass.c +++ b/src/onyxsempass.c @@ -65,6 +65,9 @@ static void collapse_scopes(OnyxAstNodeFile* root_node) { if (walker->kind == ONYX_AST_NODE_KIND_BLOCK) { bh_arr_push(traversal_queue, (OnyxAstNodeBlock *) walker); + } else if (walker->kind == ONYX_AST_NODE_KIND_WHILE) { + bh_arr_push(traversal_queue, walker->as_while.body); + } else if (walker->kind == ONYX_AST_NODE_KIND_IF) { if (walker->as_if.true_block) bh_arr_push(traversal_queue, (OnyxAstNodeBlock *) walker->as_if.true_block); diff --git a/src/onyxsymres.c b/src/onyxsymres.c index cfe7f19d..a03dd614 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -13,6 +13,7 @@ static void symres_expression(OnyxSemPassState* state, OnyxAstNode** expr); static void symres_assignment(OnyxSemPassState* state, OnyxAstNode* assign); static void symres_return(OnyxSemPassState* state, OnyxAstNode* ret); static void symres_if(OnyxSemPassState* state, OnyxAstNodeIf* ifnode); +static void symres_while(OnyxSemPassState* state, OnyxAstNodeWhile* whilenode); static void symres_statement_chain(OnyxSemPassState* state, OnyxAstNode* walker, OnyxAstNode** trailer); static b32 symres_statement(OnyxSemPassState* state, OnyxAstNode* stmt); static void symres_block(OnyxSemPassState* state, OnyxAstNodeBlock* block); @@ -212,6 +213,11 @@ static void symres_if(OnyxSemPassState* state, OnyxAstNodeIf* ifnode) { } } +static void symres_while(OnyxSemPassState* state, OnyxAstNodeWhile* whilenode) { + symres_expression(state, &whilenode->cond); + symres_block(state, whilenode->body); +} + // NOTE: Returns 1 if the statment should be removed static b32 symres_statement(OnyxSemPassState* state, OnyxAstNode* stmt) { switch (stmt->kind) { @@ -219,6 +225,7 @@ static b32 symres_statement(OnyxSemPassState* state, OnyxAstNode* stmt) { case ONYX_AST_NODE_KIND_ASSIGNMENT: symres_assignment(state, stmt); return 0; case ONYX_AST_NODE_KIND_RETURN: symres_return(state, stmt); return 0; case ONYX_AST_NODE_KIND_IF: symres_if(state, &stmt->as_if); return 0; + case ONYX_AST_NODE_KIND_WHILE: symres_while(state, &stmt->as_while); return 0; case ONYX_AST_NODE_KIND_CALL: symres_call(state, stmt); return 0; case ONYX_AST_NODE_KIND_ARGUMENT: symres_expression(state, (OnyxAstNode **) &stmt->left); return 0; case ONYX_AST_NODE_KIND_BLOCK: symres_block(state, &stmt->as_block); return 0; diff --git a/src/onyxtypecheck.c b/src/onyxtypecheck.c index 6949bf57..86110e5f 100644 --- a/src/onyxtypecheck.c +++ b/src/onyxtypecheck.c @@ -8,6 +8,7 @@ static void typecheck_statement(OnyxSemPassState* state, OnyxAstNode* stmt); static void typecheck_assignment(OnyxSemPassState* state, OnyxAstNode* assign); static void typecheck_return(OnyxSemPassState* state, OnyxAstNode* retnode); static void typecheck_if(OnyxSemPassState* state, OnyxAstNodeIf* ifnode); +static void typecheck_while(OnyxSemPassState* state, OnyxAstNodeWhile* whilenode); static void typecheck_call(OnyxSemPassState* state, OnyxAstNodeCall* call); static void typecheck_expression(OnyxSemPassState* state, OnyxAstNode* expr); @@ -73,11 +74,11 @@ static void typecheck_return(OnyxSemPassState* state, OnyxAstNode* retnode) { static void typecheck_if(OnyxSemPassState* state, OnyxAstNodeIf* ifnode) { typecheck_expression(state, ifnode->cond); - if (ifnode->cond->type != &builtin_types[ONYX_TYPE_INFO_KIND_INT32]) { + if (ifnode->cond->type != &builtin_types[ONYX_TYPE_INFO_KIND_BOOL]) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_LITERAL, ifnode->cond->token->pos, - "expected integer type for condition"); + "expected boolean type for condition"); return; } @@ -85,6 +86,19 @@ static void typecheck_if(OnyxSemPassState* state, OnyxAstNodeIf* ifnode) { if (ifnode->false_block) typecheck_statement(state, ifnode->false_block); } +static void typecheck_while(OnyxSemPassState* state, OnyxAstNodeWhile* whilenode) { + typecheck_expression(state, whilenode->cond); + if (whilenode->cond->type != &builtin_types[ONYX_TYPE_INFO_KIND_BOOL]) { + onyx_message_add(state->msgs, + ONYX_MESSAGE_TYPE_LITERAL, + whilenode->cond->token->pos, + "expected boolean type for condition"); + return; + } + + typecheck_block(state, whilenode->body); +} + static void typecheck_call(OnyxSemPassState* state, OnyxAstNodeCall* call) { OnyxAstNodeFuncDef* callee = (OnyxAstNodeFuncDef *) call->callee; @@ -188,7 +202,13 @@ static void typecheck_expression(OnyxSemPassState* state, OnyxAstNode* expr) { return; } - expr->type = expr->left->type; + if (expr->kind >= ONYX_AST_NODE_KIND_EQUAL + && expr->kind <= ONYX_AST_NODE_KIND_GREATER_EQUAL) { + expr->type = &builtin_types[ONYX_TYPE_INFO_KIND_BOOL]; + } else { + expr->type = expr->left->type; + } + break; case ONYX_AST_NODE_KIND_NEGATE: @@ -248,6 +268,7 @@ static void typecheck_statement(OnyxSemPassState* state, OnyxAstNode* stmt) { case ONYX_AST_NODE_KIND_ASSIGNMENT: typecheck_assignment(state, stmt); break; case ONYX_AST_NODE_KIND_RETURN: typecheck_return(state, stmt); break; case ONYX_AST_NODE_KIND_IF: typecheck_if(state, &stmt->as_if); break; + case ONYX_AST_NODE_KIND_WHILE: typecheck_while(state, &stmt->as_while); break; case ONYX_AST_NODE_KIND_CALL: typecheck_call(state, &stmt->as_call); break; case ONYX_AST_NODE_KIND_BLOCK: typecheck_block(state, &stmt->as_block); break; diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 2eef58d7..a9c6d22a 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -214,6 +214,7 @@ static void compile_statement(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* static void compile_assign_lval(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* lval); static void compile_assignment(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* assign); static void compile_if(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNodeIf* if_node); +static void compile_while(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNodeWhile* while_node); static void compile_expression(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* expr); static void compile_cast(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* cast); static void compile_return(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* ret); @@ -244,8 +245,10 @@ static void compile_statement(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* case ONYX_AST_NODE_KIND_RETURN: compile_return(mod, func, stmt); break; case ONYX_AST_NODE_KIND_ASSIGNMENT: compile_assignment(mod, func, stmt); break; case ONYX_AST_NODE_KIND_IF: compile_if(mod, func, (OnyxAstNodeIf *) stmt); break; + case ONYX_AST_NODE_KIND_WHILE: compile_while(mod, func, (OnyxAstNodeWhile *) stmt); break; case ONYX_AST_NODE_KIND_CALL: compile_expression(mod, func, stmt); break; case ONYX_AST_NODE_KIND_BLOCK: compile_block(mod, func, (OnyxAstNodeBlock *) stmt); break; + default: break; } } @@ -295,6 +298,24 @@ static void compile_if(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNodeIf* if_no bh_arr_push(func->code, ((WasmInstruction){ WI_IF_END, 0x00 })); } +static void compile_while(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNodeWhile* while_node) { + bh_arr_push(func->code, ((WasmInstruction){ WI_BLOCK_START, 0x40 })); + bh_arr_push(func->code, ((WasmInstruction){ WI_LOOP_START, 0x40 })); + + compile_expression(mod, func, while_node->cond); + bh_arr_push(func->code, ((WasmInstruction){ WI_I32_EQZ, 0x00 })); + bh_arr_push(func->code, ((WasmInstruction){ WI_COND_JUMP, 0x01 })); + + forll (OnyxAstNode, stmt, while_node->body->body, next) { + compile_statement(mod, func, stmt); + } + + bh_arr_push(func->code, ((WasmInstruction){ WI_JUMP, 0x00 })); + + bh_arr_push(func->code, ((WasmInstruction){ WI_LOOP_END, 0x00 })); + bh_arr_push(func->code, ((WasmInstruction){ WI_BLOCK_END, 0x00 })); +} + static void compile_assignment(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* assign) { compile_expression(mod, func, assign->right); compile_assign_lval(mod, func, assign->left); @@ -304,7 +325,8 @@ static void compile_assignment(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* case ONYX_AST_NODE_KIND_##ast_binop: \ { \ WasmInstructionType instr_type; \ - switch (expr->type->kind) { \ + switch (expr->left->type->kind) { \ + case ONYX_TYPE_INFO_KIND_BOOL: \ case ONYX_TYPE_INFO_KIND_UINT32: \ case ONYX_TYPE_INFO_KIND_INT32: instr_type = WI_I32_##wasm_binop; break; \ case ONYX_TYPE_INFO_KIND_UINT64: \ @@ -324,15 +346,16 @@ static void compile_assignment(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* case ONYX_AST_NODE_KIND_##ast_binop: \ { \ WasmInstructionType instr_type; \ - switch (expr->type->kind) { \ + switch (expr->left->type->kind) { \ + case ONYX_TYPE_INFO_KIND_BOOL: \ case ONYX_TYPE_INFO_KIND_UINT32: \ case ONYX_TYPE_INFO_KIND_INT32: \ - if (expr->type->is_unsigned) instr_type = WI_I32_##wasm_binop##_U; \ + if (expr->left->type->is_unsigned) instr_type = WI_I32_##wasm_binop##_U; \ else instr_type = WI_I32_##wasm_binop##_S; \ break; \ case ONYX_TYPE_INFO_KIND_UINT64: \ case ONYX_TYPE_INFO_KIND_INT64: \ - if (expr->type->is_unsigned) instr_type = WI_I64_##wasm_binop##_U; \ + if (expr->left->type->is_unsigned) instr_type = WI_I64_##wasm_binop##_U; \ else instr_type = WI_I64_##wasm_binop##_S; \ break; \ case ONYX_TYPE_INFO_KIND_FLOAT32: instr_type = WI_F32_##wasm_binop; break; \ @@ -1000,6 +1023,9 @@ static void output_instruction(WasmInstruction* instr, bh_buffer* buff) { case WI_LOCAL_SET: case WI_CALL: case WI_BLOCK_START: + case WI_LOOP_START: + case WI_JUMP: + case WI_COND_JUMP: case WI_IF_START: leb = uint_to_uleb128((u64) instr->data.i1, &leb_len); bh_buffer_append(buff, leb, leb_len); -- 2.25.1