From b1345f2305fc2deaca3c30cc7df5c7db12a2e59f Mon Sep 17 00:00:00 2001 From: paladin-t Date: Fri, 15 Apr 2016 14:01:04 +0800 Subject: [PATCH] +added some error raising when met incomplete routine or class. --- HISTORY | 3 +++ README.md | 6 +++--- core/my_basic.c | 19 +++++++++++++++++++ core/my_basic.h | 2 ++ output/my_basic.exe | Bin 368128 -> 368640 bytes 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/HISTORY b/HISTORY index dff3f0d..f291518 100755 --- a/HISTORY +++ b/HISTORY @@ -1,3 +1,6 @@ +Apr. 15 2016 +Added some error raising when met incomplete routine or class + Apr. 13 2016 Fixed a negative calculation issue with brackets diff --git a/README.md b/README.md index 11aea1c..c7b559d 100755 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ MY-BASIC is a lightweight cross-platform easy extendable BASIC interpreter writt ## Compatibility -It fits well with Workstation, PC, Tablet, Pad, Mobile Phone, PDA, Video Game Console, Raspberry Pi, Intel Edison, Arduino and even MCU; totally portable to Windows, OS X, Unix, Linux, iOS, Android, RTOS, etc. +It fits well with Workstation, PC, Tablet, Pad, Mobile Phone, PDA, Video Game Console, Raspberry Pi, Intel Edison, Arduino and even MCU; totally portable to Windows, MacOS, Unix, Linux, iOS, Android, RTOS, etc. ## Main features @@ -91,10 +91,10 @@ More detail are issued in the [Wiki](https://github.com/paladin-t/my_basic/wiki) ### Use standalone interpreter binary -This repository contains precompiled binaries for [Windows](output/my_basic.exe) and [OS X](output/my_basic_mac), it's efficient to download it and have a first impressive playground. Or you could make a build as follow: +This repository contains precompiled binaries for [Windows](output/my_basic.exe) and [MacOS](output/my_basic_mac), it's efficient to download it and have a first impressive playground. Or you could make a build as follow: * Open the Visual Studio solution `my_basic.sln` on Windows to build an executable -* Open the Xcode solution `my_basic_mac.xcodeproj` on OS X to build an OS X executable +* Open the Xcode solution `my_basic_mac.xcodeproj` on MacOS to build an MacOS executable * If you were using a *nix OS, then use the `makefile` with a "make" toolchain to build an interpreter binary according to your specific platform To compile an interpreter binary for your own platform manually, please follow the steps: diff --git a/core/my_basic.c b/core/my_basic.c index 5132ef5..20e6e3e 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -265,9 +265,11 @@ static const char* _ERR_DESC[] = { "Don't suspend in a routine", "Don't mix instructional and structured sub routines", "Invalid routine", + "Incomplete routine", "Routine expected", "Duplicate routine", "Invalid class", + "Incomplete class", "Class expected", "Duplicate class", "Wrong meta class", @@ -11854,6 +11856,23 @@ int mb_run(struct mb_interpreter_t* s) { mb_assert(s); + if(s->parsing_context) { + if(s->parsing_context->routine_state) { + result = MB_FUNC_ERR; + _handle_error_now(s, SE_RN_INCOMPLETE_ROUTINE, s->source_file, MB_FUNC_ERR); + + goto _exit; + } +#ifdef MB_ENABLE_CLASS + if(s->parsing_context->class_state != _CLASS_STATE_NONE) { + result = MB_FUNC_ERR; + _handle_error_now(s, SE_RN_INCOMPLETE_CLASS, s->source_file, MB_FUNC_ERR); + + goto _exit; + } +#endif /* MB_ENABLE_CLASS */ + } + _destroy_parsing_context(&s->parsing_context); s->handled_error = false; diff --git a/core/my_basic.h b/core/my_basic.h index 7a90cb3..2d37897 100755 --- a/core/my_basic.h +++ b/core/my_basic.h @@ -391,9 +391,11 @@ typedef enum mb_error_e { SE_RN_DONT_SUSPEND_IN_A_ROUTINE, SE_RN_DONT_MIX_INSTRUCTIONAL_AND_STRUCTURED, SE_RN_INVALID_ROUTINE, + SE_RN_INCOMPLETE_ROUTINE, SE_RN_ROUTINE_EXPECTED, SE_RN_DUPLICATE_ROUTINE, SE_RN_INVALID_CLASS, + SE_RN_INCOMPLETE_CLASS, SE_RN_CLASS_EXPECTED, SE_RN_DUPLICATE_CLASS, SE_RN_WRONG_META_CLASS, diff --git a/output/my_basic.exe b/output/my_basic.exe index af803f377d34aff6b6322666d0d3afc49c100533..bf396626d4c8abfe124be864985ba7d6e24611c9 100755 GIT binary patch delta 26184 zcmeIbd0bW17dL$N5d;;zpn!;oh^RQqfD><)u*HOT*WHDOkLE@`qmtIbNRzDqaxIabwi6CI0&f zN{kuphzm>7oE4uu7y34S+}!z0PIknEg;k~9ekKfU(uqI(Ovq^x!_RvroNCgFANH(B zY@&B3;X-TQ9r!)zJAzNFC$#hHgogybqgjz&QJf<8Z8WmVjuqqvNPOP@vh z0?uCgEX5!2HNZf?@k^f-1Obj%`mC@O;Gm_?l)-@gkiQLJ4?MRAv;cMn)GU4Gtpx16 z^jU=#uq~hou;tRMXXSQ8nxUddz(z}-&4>Z4rztrm_59e`+J8%*ZAq*qxNr!I%LFTj zq8tb=WDo=^lL0|+A%h?|WH=xQ-ohXV4jBR1F9tng5k~PSKu}!BASkXF0|<&|qyU2A zYzA8bKNb)K7mNc0!CMvyNzJ=wG3IGXN@EKd=SpMuFvgX}?q_@}jXlKJRvKHvxKFGNXrxda z)Le?qnx@c3#DgtbgDzqEV;MlO~((}c3A2TQ{ z?$DhS2%mPa^Qv>gpB;?+q_aYYa1%e}j4&>|7t8TU_}`7=jL}?aZrBP)sxr9fJ9Jlho=X?rFoyE@Q$Sm=_7n?882bnR)z~5t?%<0XM}UsaeU)_g37j?JSw_udzVxdnHLd*B40&} zl#8qh7eXR`L% z3nOWo-BpqM9w;)+o|)O$(IcR=$4r~hX0WfYe^6po8{SD1h*`oePpXM+CwL5QA*D>H zk+;3jJ=u#-nJyd|JQw{J%tN#c%oyU|xO_ZocoSG)14bC~VXa~lhWfIM3x~d03(ac7 z;M3C&r8(!3;FRuLPSNKPEWNh|`uAl_#eV zg=8vzuw2Y+uymeV#n_?&!#lW<8N%GrOG$Xqv(ZZkKX`M|{1iLk{WcXH7~7AKWkv4e zZ#LyeZz{T%8BBQldqqv=1`s}MqYyr?6Tje1A!(k4|8hgos(E_Cf4ZsY)cj<^N462# zF6_*dB4Ob;$WGCog_%6>zg+0NJ=w6s2Xyc<~{#i#}WNp$C6=wlH{g zDF0oSFn{$#vPdXjeX*+l*Pb^Q%GR`^S5t|n@Mz7z%7mi+Yc2JNU0D9^FbUlC|~tb3KYOj!&z{kBSujC|$!3G6)M#9+Zr@BKJO%7-q&5 zxi?vqnQ}$$RTgFDT#@^&6opAw~=86j*uKeGzud*M$$WVleTY$^`}KC7&2{fy{nZfmaaVcB3l)=>1aEV~|w78ZZ6 z$M2r+b4e`X?S(NvoItGok7@iDs-l7)TM&LrqVUP3v3%hWp~>Z#rqa~x>zbOq*wief zUN-W|@Pwc=JD6}Hk`o_vMi-hm8i)tG zvIr71!nfJ}!Hu0|Img{f>%*RKqmMcLW+jFy9*h=4p9x1(V+>BORxxk{DZ11 z#DBs7`Y|gZzK-;q0)QAO30H zJ|O=`)YwB<@Y`@Wmp}ZL&qv-8Qm%i@4+;_*{r-lZgYoHUo>P&x2po}`6XzCf|2>0r z?1Bk%Vm@(1yOl<|F@Gb+wt9Rt$7O~mrn?_3Fh_F-*t6JB=y9XH*E;sRjy?Z$rYQ5q zZJuA)xoE7ohLA$x$*rlpSWz_bwmVOVFy-!9z0wxVIWD9V=RPfB;^4p0zZ0J5;?h@4 z4Q5?)*bbpC&11*fWsoL0>k47opJ9!j+AE)53h(_H)Q%D2)G50%lJ(@wElPUVxMPrR5ATK$wLM%Q>6ENX?xf9ZXu z1~{EtSv`&!v1s>~7DC})I-d^J*gn9nW7rNttBRmz-!(^#Op4btLYWk|hZF}1CDdJ* zTG38l2>BEX)Rc)*v1U`qvo;IB8>kP}w6=px`nbqSY&~afw`6g*S6@#@_y{4|& zV-cqJq_6-mpw+)~UGs6}f<=ZSc?6Zj!IL~I9(N@a+$B-m16TMTVC8cqWNGf~;jUnN z97Zg{xW`6*_gP`%+iZ_bjL+}CXJ43Dm7KxxmJ2E_AwW;));XOY;a ztk^Mle>qF0!W}z+80sqR`OY9;A>u_#!MIjY>1PPno(J?zKnAq135EYpEm;1eg`lby zn*Lu}82B;zu(E%M==~cy+S69rb1G{KX4c|}^vsWaS=!Ua5Q^3@9G6a34t|NDPdbOZ zPcgmZIWrpMI43FcE+b3M;+I_J)mtNkuFu=IY^-R_IneX493z+c*wHgct_^dU zu#TAeBDDGRMxe5Pta#H4u+-(Fo;@pUd(o~>mxfUsDLI8DCpC!T zh9jgPOhlN1FbiQG!V-jBgyjfg17YXOPq9Qw{wEo~U;LBUEF5*E^G?4mDrtUC5a+uI zey;|R6~g3KW|Amudlf~Wc#}}U!|6wiLM!LK#x1^bI#(uzS)uSvz7oovoqfJI0FFpr zdt6v=sOPpdK_sa0oYvmNzF2goFp4v|<~n@6H-JNuTm0oh+l{>yZusj(TJj`HZ%5BblTt72L>{ z#s`XBRGb$-E2fd|AYQ z@E}+U|4F~|B-@&07D**yAk68A!cckBdksjtri}}$%O!wf?jL%j0cqLTySjjT5xvy_ zO?>=$?W`M%!y1x>goMy7jfj%`_0hMD2qE{1FM5&I_0YZh3NoG!?n6e?B5x8?KLsP{ z;OORUq$LgTA$}x9;<_w^K26lWALtBCiPQDy0o7XU>o! z_X2c5GSfkz_6w?LO2+a1AJQgz(wS~*N*eObAJR7CNiz@3T?yiqa(cWe*+t6e%w{B* zKldA5)r_>}6%UGcHzQ+6_s{-D^;pVjN)DhQF7MPB#p;s$9&VVNMlc(DPFzuyBj=Qp zhWL?|K4V6g_HaXP&Xpypc#0pHK!QicMRS`UACFnsa?E~K+vxl#ROHI^E&a=%`0-!< zMSpEcRMgO%yv0AiN55!8Lg}sM#EU1KK_5x%i12P51&khE;7*jOje_~KE4B%Y9w^pln(h<|#U z7KRXCa-IItlHBH>++yT)<4bSVpsbyz$9_iJ!~)^S_EwCtR*a}t5>Yqn61BNbgBx8r zK$50}dbfrwqz00=>6O-`xRMH=|IvbWkdGU5b0>0(_r5__wI|(ac^hJqnbXeQosm$@ zndzb6Ok{C(C>cw-|8l)95u54|ambZJCZeKkB@qY1s)>kx9aDhC^)vT!y;@72lkL2;{&HHOG|RUV>Hx~UU} z$ndjFmdDRE$*Mg>wk{Z=3B@D2upxSdnX8V#uaR4TC7z}c-5cYLkN`T?;KU`%ntVob@?v``ro(A1aDPZzoF%;j@-8wRy6w$_dVhCDT zCbPrQ!_(PwEIiChQl+pQ_OED)o{Zu*AEsaHNf7yiUe%M`jYsE6hBOG1%b+~E!9cp0 z9xbi5i{WTOJnyQrmzyK93p|Tp_yid(FeQbF&vL7Z-^*QVBtu*6&2~E5_Hui2xn;?d z%lXkT7&5V}rZ}2mBCS&*qraPpJ?Q5QiC6itf2@qX>^Q%2@ZE%!vEL`8 zb7G>6+AO3SiJ;2Suu5-Phyw9V78uOWXVI@MB*T}Dgd&e^x;sW)b)0v6C(hkVds#`i zr7Pw!$!2GCtTI7X@SX|V%Gl$M@7Ora+gCMC*WlbZz5{OCUb@pt+K~iWW+kR(8jzPC zTLH3G##S&B9{Mv4vJn$c`_rK|(ux;*(>XS>iN8FD`rAn-{!jvqwv$Qx@1gV)JNg-# zK(E?K8@}~-)M+Ql`~({v7C}1j8!yt=BSwn}~H6Te;*c z3Jc;g)S41VO;8$3OJk=fu4+qG(ZfAKGB=Ih>q$PtrVZWHiwt#D|4z;7ld@>T-eg#q zw4u}8a#4{t1WjO%lTn!w%n-3MLYYk8?2Z16SwX+2=$%* zq=2sMLweWWSO>k4Htt7CyKNZ;&!APJBi<9#dW*x}K#!oskh1(nOvWHtRf#W`Qa+CK zsK295RXgMs_S8Y|k#@R5$I#!7^GL#1AyL$4-~@qEP?8kI-U!Fr(Cz9m0EPEO|>Vg%^1y^OFo5?iz0;$NMih(4NjG5!KJ55O@{rS-ev@jW- z)JKD9X)=l9JN``lhCw4_(*%c{b6`{MykoGJID8#V9Y#9xzb4VQhY?lt73<{5gQESR zXO1BcpcUEAYH>mN3$9O{6)UI+Faz-};Egjv}oCmyJP1IL44h z!dtvWD}`Z{pp5mWt49%^$iR=$CFok!CM%nwAdy}W$X7e$v~-vu@Nz{}c@7zTrM-}! z>5Wn35i^okM-v@CVgMTpf7)>j>B+|%>C7>*a$nQl~CdQn6S7+M;Yj##wul? zzkNemqJfknq!TSU26rnPM9HHj@2Obnt{>r}c11ZUZCb8+6xfB9OZOM(cWSqqOd2v7?(xTxWI!Vp=2FtR>e5clZlf{7#yHEfxn&JdYK=21{wl40#%kxkp(PV&DBWI6Niq)BdkP zNshchSK`?e8s*a23z7*F-$z#*70iY|R^;7Ae_V4TYv+PfIRwX)0gfL~+BA5?M%|Yl20S(s@34rfpw&PeNWKAuc3)+iKYvSpITj)rqx&)xM&Jt z!oz4%X4BwVB%5!unr1tQl9tUPBmI@H*J+qBVF`_%O$IO?G!{rtsk!U#P_hJe;@4-S zfz;;5@X=g@CkeR~b^9!m7)XD=Dv$%>tNuwB3$`{gU zb4WJ9F3B9s#ju}q;ljVzOb5*;;r>zq=2x*%flXi(M7~XDW|D;e6AACXRZYU=x9XCh z#TL42T&hSYn=g^TA6ZE&=3pIBu#&c!OG5Y?@6jG}NeBPyQkgnbC~3j`|Kid+asisN znB&Dy;l3<>D8^;dflJ^cd^4NoFM;K2v5f9mA{W28gal72o+TUY?mQ~EB%Ykj9y3~D zHgws5{{iC~*G4SQNR}XOk@K}-`SM4CUP%uRR_Fbd>86wy{kT4hPRSyN!ZVne8d1W! zo{H!L#jummj}jSm5*#>!ev3^qX+k#HOJ>meOW{{^%%HlZWMplf&8@4mxvu^*x}|k- z2K+e}-PJlf!=(ssXIhqU>x*Cj1x z`oBplpDL5~?NUZs_YPZ@)}`%dSeQDrom?f+*8HMWVI4UMSxRT-kc3*qy`Ei%xIWo+ ziSwQMZ{iAHlZo4!wRSN~T~=MvF5tdn9nucHEtB@XR9zj?Dwh14w1G?Nkk(>JUDEzY z|2JvblV#FoE|&QgxwtNI(^vkBxREPm;%2?}A7fgw=-NXiSu@qs+uN66Ar8DaIU>WCN6sNe-Kx&;NQgEpI?W#1M}+=my4~7y2=nTK_<>; zzD!*Cyt+`!{Vz=hmSue{Nmcl2ZRoTg5m=+fp)zmSjNS z=G3L^?>GKM*)MOHE@ffk{!Lj)3Z0e<$}*(MqhNq&E}ioxD3fZdLm8JrkGz9@E7>9G%csq*rplddu6C!Z1o&y#cKA#n;lXo8 zGy9yG4A{XAsrt(JYS^7{Q9oqi{gOhU{>piv#g*{b`tvOgh@?4iiqgIpN zRqfuMS*Kkb1Fb>3vqsY{Ylx}u&5=^O`jrFR#Sx2M;pi6I0hp(TrhAuqVD{op^m60! zJ;V!G{K{6cku)Rxg*!Bw642*rw&_gz`5Kb+?>V*;%zeUIY^WG!(BOBm#&|lCZeNRu z>cB{PV=al|+mE2(l(gl)SV-e332OHMi!Z4qMcyH_FSVw?Wu(f@-ViWPP2ZxVkSwJU z>qzo{w8>wc%I0(f+a`Gzy-giX&F`YkcEjoXcd;+>!!UY^J@-tep6f{;)hF{_u{Lv_ zIu*I6&?sigFff^2WhlW4OVY4R*UmU=-%ej&kF(0}=%4F}j=<~PK(hafjIwlz44$UT zeNP@rdu~L#Er!y(jp+LugXzhQq>Vzz1n0ra&c_^OV*NQ1Bii>){x>61!)i0)&B^p_ zN zE|GD0r8?@^jGbS3*)o94qW!lJL%4Zj6_r-m2X+TVE*rdgCVWlnTuw$ZuUa60#bezT3}%-@W4H7Ql$ zi1f#mLe$bPp;BlXOIsXXVvANTv2i)`VE%_>8Dsw856J*_POzOAd>5q1)qxWuWwD8k zr^B|xhilr5?%GaLY6(HyN2H1OxTZK?!V+B0zO5fk{|Khyqu=P8ACdU3qK}lCDyJUo zS0#h&>M8gXhN4MqPbp1Yd4rN2I17rQ${obdHwL}G^#ngi48hjYNO6J>9kv5onjQMl zxjTru=?9ac?l|IN+fvw=5(jbg%N;O{H@)el9i(H{-DZ$#w$$r^JwD6|!=PfxlG#rd zBeAh3X;p?++F4A67`#17?tHZzqjl_u;c}6tB){kU{GN-k8u7&`5+^ZrqlH)|J4qPt<3>j@_~lfZvlI6TysY%*PM9>n z_Mebg4=)%3apOO9)+ccBr#7ZrKf&JR;AQmICphJJuQ6@2i%cWAv|tyega9i&y^BN# zuwxQMZWqw!dSRjsi{fY`3>RG3QPK2INvC1*8y1^+mLwHe&7$l?MUk5?VWo4PB`hkx zVKJLU*?TOCy!tPl&RgU0?05riBX=;;I}%o25nCn(HKO-FC1WBiMc6BjVq08`!o2fJ zq#Q_hD8#J|fjlXitkkO*3ZH4E z9g9hbqMnCz+{`q#i}<)cO)e&>u@yrl8lit7FvBBZEc*G2jv=p{isBxi$ZcX?$&&g{ zE>Fzw;mh7|z}DeCY^Sr$(*H5RVAr4H&6MniNZ4&OWIt)o``c*m{iJit{Qj?;y(|ma z6;_bN>h(wlnPG*KxnHn9t_ku76FqeR1){6= z#r>$|An^xc%J-PgrW_>g8+3A_@=Ib5Bi(S2gpB{q=rU-T{TXxFbeSM70-xleAe~AM?d3x8JE|aa=*0nY!*=jp?WrRd%G&Ax%D4S zj~^oXPDfu#GQzrK9U}fwDtC$b%#kcG>3$Ba5zR&#_7!QLHH+oPBqZM*RlKv0l-TTgRlUaAnRdA{iIE1XJVJbf8X{ftI>xg56eDZ0sV9?? zUVfciMQSG&YoI^XR1I_)Gcs(T`>17|`I=DMAzc2G1iAKrN4hGiNp3V?eE|CF9BAuap3 zV<2mY=tQk+qEzHDmtLCqVnijWHGtb!y`i_>}vE$CN zgR!IkQ8+0$KROC0<#vxMZr~Ch+lb$*q_>XZg2iejZFr3I^p8_kaVNQwJ7PCF@fhg> zu2g!l;fTXg^`ozjk#3y|9zlR{djULV>JgTJNOFSs?hz*WOhsc7(7h0`_kB9#IO!Gk zwbVwn?#78L|B+OHop+6trYD%5<75OQKlmGvk3)`c;FarU=@97YG>flV55;x$2 zjjIX|!|Be`B$`Cku=`!kfYVX5#~ISjH|d^>S~$7PQ%x56!*tOZ5^UJrzRIHGq!-fR zD}LUwE@_J&OQf;0MOiBTqTil@j|0AsJ`27#HB-fQOh{KuRg8D>_rvz|*;&#L*O1`} zUk8VohA8s1FzmP+AYnrhcQGzWOt_1dE{T)d(adv1*Zh7v*SKX)#+bPV^IAK4#3m&=i*6%Pr>C#ONamCHz zrWXibeInPl41+jaFAbt^sJ@C_E|d6YDE*?0^vjYMGq{RfA0bxBt~H3e*cBtL6D1%aeAIZIeu>j4Bq(YfzB&PiuQY8kx9p|ILyWZke zbV@cG^2{D1?qp&upN7kF5TvWcwHVP;Ca6st`qj6%qgC97-u#yIXncPUYdXUl&3+U@ z4HwCcN{hk|)X?eQ5Pf){rivL_SvPOAcJ)D#=Z8*9bS@31=f10@n|?I;d(sTL2?wWL zQs*0>5OcM7@cC4Tr`X=*S^vThVNpx-t7s1+ywDfO}1#^5H#_qZrm zDeIvsN!G(}E34>Dby;vMPhCc)XC=LfLG+&=NOGku$^Maamd!}JtUH*)r8^0@US4@8 zfnIs#+|Lg9@3eP~ajJOiKk`kN^07wZ!V;hZiEIWj2iNXPs_4mNSROA~$`^E(iDpZ? zgiG>?%V(FM!AHAEA{oBCTUD=I+BUdlRjS43D*uEzfVv8 zMB0T-ms+nmL)n;wv7LfSTl6{gxgtBqORk_N_dCmu<-yKXJ#i^l9#*=p@o81rlQzw1 z*Pm<2Qy~57XUW!|{h72IdFGlVPhpyiUvr*t6@T6iv1(PNf4gcV!;FbtKE#H}Q1naF zqV`zChy=?3*I3A2@oXA@RhBF1tp4^@ScZcgWo3B1V-@i(Wr)X{X)fZkDv7`4OD9|- zF=qG@+$|g!yNv4{#9%EX>`#bSDZ!nerOx<@?|@7!V_y`~->;FdMtdvq)@`)uFYqs< zU9$M5nsAv4*{ea7@}^jKX}3X(>GxF!IfLeurbH6KfIpA$?fZ(R=?R^Z5^((8)J(3n`es zcazM+1s#8p4DndOZi86@>1>g7@z}#2JOk-=k#r0#V-J^GfHl8Br7XWL_S;%AKAO98 zc~IJFmh@E%`nO1uy=G!?2BlqQsAPKJHVId_Ubp!X1C$`%51MRfbHBhc@s7%p0 z|LW?-h)3zYJ7kK7L~Fc19ebAql6iE|U9!F1`g-tSrPmN8HQc%p{Sy6hUpb|i^b&`- zkM{bLgl3hqe%bw`*$o4Y!|a5#mkigbCeE4pG%Y9wSl^o1%5elt+ZBt{$G)$eX?qY$ zD`Af}s~%sn$IDfZVLkD9ialnrZ4&Wo7ENZzy)2f>VxO>B0gG*AvCAw*SxhRilEs30 z0hhyKS{9qnV#zEv9kHC_k!ds7!#IXs&0@(cwui;~vsf8oSz-)}RxqTQ#f-fXQ?l41 z7HiL9J6J4;#a^;lQx>!KLCllI(pc>-O4ve<1FJIi9_EGDwpk1Xca7qPR5 z!OL8U2nz$>wmYBugV^^&l$6Om)e`AB< zA!$)RbD~)8d_{k)Afde*xwDFx?)8L5IWAjfx-Ghb9U~7hift`imPb6#hw;m;23>Rf zYV~Fc?ejNj<=v+?wt~+28zwH9egNQI?pv$K4EpQeuo%g-*?nSdnBq!=K^bpdV^l1+^d$iU`t(3v|;64KHbtUokO%XFx* zf^L0)dz=rO)+$**&paT8Ub!sGhfO4ftkK!EuFPrMSbE;S(&yB!Y#r_MkeED6kU2q2 zYC@MkBq7b+tMmK=;W#NJwrWC;AQ3M_Tz?2V{UMEfM8ZigI{6U^^*hcaF{rV``N};> zZ@T3XR(XeL*(1^}=n!%Y9hC36az_1$7(_e`!HWqK^Lx8tkIv^YZqHuD{*yG7VL(H8 zr}IwZG^yHDFWUDp-WlmbCp{+nJmUJHspXAm*b_21>ndxvTO+C9e&$KA9Z}e(w5Ke= z?>`d4Sn-z)|5XCtEMTrOPS-Ag4#>HW_yz=b%xI}vxzdfS(vliw>C-1TD})Q!`zcw_ zZoxCD;4mynyc3*$925krZnkFj7Jq5QarYIY-P7pJr=*qte)*A|Eu6oP>pyJir+rBS zpOJW0opeJj4KwLWuc||%#^f0N^BMNpvCZ1xIbOXO`;2ydPL%wwPw1HEWPRH^EnSDd zI9wBZK4(3IzGlS8hcc|T)ime@3GMm{%w?yzEFWK)FH=6X4LyM!q!N&vA@85Y($`+# zS~zGr@B%kVwl`$-wC`%hOZUExBXZU3uzG4kmyE)##3pJ098U%`PEq-Uj($m0iccTG zPF0@<(@ih2Gvi{N=iP@A>k@>SsX;X3AL82~72^Z~aj<;wiK{Cv60aO%B)SHgX1%~M zK_z)}JpT{m+2Eu}%ea4$$33ENy~3vJvIlhED~R_`^wKLFR-i_9$BIwzU^VI$0XXVr z6-Y;I>+aL-PBPM%#$@S39{rl@wlWKw{T?{6EQn=CcKE=?&P_b}ppr4Z zE8k?VH{;AU5l-d;Y=?lBYG%L0%7GCt&%<=9H>QG8!na~1{EzU9JDmDUsyp1FV;;cD z1cF`ZZ>G8Iv*SYN6HGq$+^5TV{%WT_neOh*aaiKa^iEI|$A%;hWFROZZ651)fb$h3DKf~AeDs^9m_LP6&vs>;3h?V?B zo4N75NE#jC#%r=R{qo8w4#PS}`hdd009+hP$Ez0ZxH^}e2W2n!j^?DK((HUZR#ZQ( z!DEUK^iTdi#hS|)BiYXhkt->w52BV-qr+shcLSg&xzJc{A2iDN$cDftRA;xk(2amL zRih(i^b9YcL#xrfWpr6%pc_@A6J&IX0_caA*qFt*h)j}FJkui4Bk{^5y4s!ZgMN@8L_k`tW!7m4U zu#AEM_3j$N9vdHkv`dcx@ie~~-xe>LeAgTVMxfHCk}5ZXw-|H}m1~bh{sKLDkp&cpHy~+xP>G z7DxH>p`@H<`}6({%B2>EH5Tb+f4+S~QF=^vJ6B$O!Jk(VS`f#lWQl`#&Mk@OZV%(R z?-33o>_k|L5P+aX7>F~Cxf8M64{fM{-5i)gwuj&D<3(t^M1)~wI8@zbZym@*+_LddM?nHiI(P2lJ! z!Mw?*M#A_hV`tCiihm2{JJio&p9o@K22ui+0BQl*H?WKhj}Ks30om8DA{oS%c?=-? z?p1F<_5uO>CLepvf&G;MCg7QUwlIm|+edN940evLV5I=E4`8J-Xo||>(hw=P zR_ln{c0Y>(Z;<5qRYmB*o>j-D*fb44+?A?w4K=wXT7+^VIIG{3X zRutC-kupFnAeRZ20~XE)%K=jsfYl7Y2&@I%0*Li92d9@~f)I(IMld5(uyQ3)9Q!&) z_Av|z>}bLX5Cm9wGK%v8%*HvOFJQ`rC@u)FZ^A`T#1g&-A%GP>V(eLlpFjwp@*2h* zFrge{4LIXE#ul*b4~!+?mYWzl!17zg{X6jMdAq2O=AI&W8KSu$gf0k?2uTR32pI^= z5H=zlLMTJ{1Azm(0*o}c6K~E+Vm(1mlNnqB;Q=hmMuUJ{4&Gn{^v;8<0EWB?Sz*ul zkP(*dfNTINS445k0L$Kjj4=GFD6W9v1;`3u${NTDU;%}!0G7N983C-=5H*e~L?mQW z6t@R3VGD!>uxx7-cL*@@gDCDed;SnI16aNTG6R_X31kK^%zd)Il+Wl1*ENbT2v{v+1L(kAiHk4f3QN^?Wb>tZ(rw zJ>QfxUW9F)ZnILyW{d?bbd`Z`p2f&Hgz9B<*n$NMQpZg~lUyR~JV3Wu8RNtHL`mB3 zRtq+{g!J?Fz(DAh7I}f5FVS;xoP*Yv5J`X9O-A z^IqlO4p{LZ73Q%TxRb!0M83;4aJPZWK)ypY>hns*w4}s5_I(XxHy~%A@bMaj`vaGP z!uxCBrU91(Tt$tt1;DL9S+NGL5V&06_SC>#1TF!%vl5O;3jXc`nWp4dwekD^C-(nu zC-&kmEPQLvH)8lVV(PsSn%gWozr^@E4j;bE2c-2@{x@x(Ks@_xWP<^U8ulgxV z^^1yEH&6$w+p4wdLF#1nWOcSWPrX*XS$#x(Lj9xqmim>to~D_moyMrKY2r1bG}AP* zHE(KGX+GEN(Hz%Y(%jYjts&ZG+V+b0u>t5>o^&$EW`tEwY z-mdSjpQwLBU!dQjKc+vczoP#`|4{E^Xldwduoz+t0}Ue$;|;GFW*HV3mK(Mib{TdX z&KiC+Tr=D-+%-HjxEX_u?TuZGJ&g&*p~f-BiNAz+FPP5JuSm5b1jQ31(pq#?Up^3qn0wuHOqC&J{0ea z`w06a`)qrbeT99aeZT#L{fzxP`)&IRyL&{#2=9nC5gj9jMcj_yIKmY|`!khP*-3R! zbzPOKUZ!55E>N#luTyVSZ&7bk?@;ej-&9*Q8Jc-nnnjvyO|E8{W`(9evs$xGvr*Gf zXVNX!y{_A)d#+opw-|;QZyP;LeM||a!4S`}rb(u$rrF?B7R1zHT4g$5`r7mj_;t(l zm+6t|g^4q}L1ewm-ezBOfH}w<0{(@Y(=2l=uUnQ|Hd&rn8dw$93D%9)(^ls5dlTu~ z>RXlDm3x)fl?_!k)d1CKRVQ^{ZMyyko0omA{ZsoDdkp%0Yv0la=`wY{>mKUd^=tJ%=)DYs4J!;k7`%*wjVp{v;L}S} zta*|78}mzZy2WY9`og-;dfj@{I@q?tcF@+({TP|2=Y(8pQ2Fuhi9)_+>i-ssquZ| zr^aY=x_PTP)w00ymSw$VujQcip*78ZkeM8g%O)I~gs&)lR1Gyznm}Emu9IP`A<&d) zIsziJ7GI3>O4|-wk?l2m9tP1Tf-8`Ru%RkSW!7ZP)THaS>ed^+HJmmP^K*;J+Q~lF z&TSzaj>@>R1Xddb?!w#c?H;zY!A#;rnmSX9dI zl&2xt4bh2r4HJypjCYI*lc!l>j)L;8FjFY*pXL^pFmT6giM1qTStddz_gQ|kD6Ib0 zIBTLc-MZAe!CGiNXuV?l&Boc??4EWnyV?Fh#P6)35}ADg$^pt8)@c_R=oaF4Jz%?$Ca&J*+*c z{SiXjMAu5!R;PyDAETS86Ljyw*x!Jm&#DiWb=Qy4&(bf@uh)O1|5E>}{x&|^)Y#C@ zFxoJ~u+VVA@Z8{GY-#La>~EZ4oN3HA?uO;QV)Qk&!Cbl8^nq!Q>7ePhsgc>w+}Uh4 zC!5pE)6KaU?f1<4%}32=&7%34xv`}!Omsg>f@Qd6jAgQAnq?l$(TXg~TFVy8PFU;1 zmXnqrEWcWASsqyafxY&zwzRf`%{Ezkz-AA%jv>5HJ_*p)y3+g z>QeQ2^-t$)pK14KztkSpp3;_SFKK_#-q8N3eWd*deQ&C34iW31Q^7hW>c;BQ zb?@mu(0#1?9G=COx}&;Nx-wYIUm$dMVVqy;-1G{)uRbtKAExi7kJ9&q^}D2RZ!j6+ z49SKx!+gVL!ydzzh9idW;7Zty{fx7W3ygyCv9Yyjj%k}|FGTKZQ@QDe>AvZe*~`+w zqJ~*IZMkS^VGW1WOt4O~F0{U3ecQUpdeOSrw$ZlTR&4tQ6S^0ab1c;IjJ?eMr#;Iv z!Z)IAM3)FtL|Vj*h`b0##O{d85x+&;jQA_!AsdPio+|(d#K$UPlzo*6$|1^;%5lmx zj^ zYMM$={jB<3n!1YBx7E+G)Sj9c%~H+RnirbZTD{h;ouHkjU7*d@zM);AeFq-gCha!u zPHmxfpY{+Ke^Sd9QC%P#xvCYab*hc364h~)(x$Z;ZB|>PEymUxPE3L=$(C#zX-l!C z!W>Pp&9G&_SZCXEZObqr6~Mf$14p(%Z)os(_hrrY!$g(XkK0e$&w?x8Lu0Pe1MA(p z1}DH$B}a^mNQp=Vf2M##8H^{9SQ>%^>bAjs5zSrY?(Go?DeSF|qjZD&h^|&mBs$ew w6Q@bgBx#a0BOza@nlufY*2C>w0x$i0moQbhDn`|t`t;!cV*8&W`|@Aqbr#1>oxLF`JXR%n9S5|XI6VmlZVrBzj> zpR`f2wT(5XB@|UuQ>8tY+G^kK_dVy_L`1*ee}Dh{?(22#Gv}E(Gw*rknP;9^&dDkc z$l4Q7;6=iGZ~64&+`lr8C$&i(j`QO=Zf-S++oPe-iu5JH!YtCPrdI&RMR()5w8c$> zNP%#K7;3etkF>r>>L=9VL+bdoMo8_+;O&$l3P!eIO-2y^h?N%)#?REK556?-B9 z=$yiH{NG;um1n|_wd47Zp9$5yHT!~srwD+v11&nq@`X-fTuDy&d}wMxaN(CN1;YFOTxf57(UYHZ zwlGL#AjBy2R$F=BF@=lO1KHg_njrkw)Q(`h_qAap(05D>m*MG*@ye_2+~@4}V#r|4 z@qyyg(!x!;OFW;ID$Fs4@sE!Sn~kmc$2)~zj9>DXb{5Vy)#Ph*`kao*(^l;rI@V2!HmJK;nn<9gi2j6Ccg< z?N1hd(Xkuh?~V~3b^4o68&&vw=Wya%kcPUoFNq8HX69pOl2E_vAYv0HbRAF*r0{gt zy4Cosslv7HN`BdXp+S!k{OPZS={+WpWZ`y?F8qUyg4wZ^e`l+3-7&5FDdF9o{i~&z zV}&NhmcrehWBB4kVPLOxR{W`6^@&Be)~lif!8a*DNa@|O$z2Fqk=qO=()2-FMa~)^ zGJP;1!^hbnu%yETi_o->pRl8M&x$g9lindFi90W;GB-k~(Wjvl^G>C-&4u>K-hA16 z!rnfUQGdbQSIbCR-vFPX!&$*=Ap#pXLf_Bdc0P2q<_?Sx;px^U;Pu7nIN^c?YbJ^qK)g|{<8 z2*38@!a9=!37@k{h@8@jf0ipGO|kGns|puS(G%WhP2rIblL=qkL})gxHR}|PX~UsA zh1;fO@cg8?LhG3?`7N}tRi>5jaZ3tQv*Nt@brTA|p8t6bK5?SZXK5I(nJIj@bQDPv z%9ft4sQ=DoTFCeIvi{|q!tTp0)reJ?w^C;L<#L5LR&J}tlQF`&HJh2fCa&$x*G?DK zuYHG47$SImvP^mw355-x9P>9%#7NbnP4)rr+#~7UilUyc#3O@*+;#o<6BC5X>(sn; zP+`6GU)JKU4iLWo>S*o20rJQub{JT=WXnv?>efV#%d0NT8X8#G?%O_uKhj0WEnLp4 zx)e6vmQMKHoeG8THq_$%?SiSeFYlWmEH2gs{2K2bAG^H>D%Kp&K1>FS2jdGb6)&&G zw~Z}KKk$Av{(HM{wPYFpvrd?Hc$Z|o6*>2rsxbSl$oZQEnGILuTw+0H#}zrJq#$g$ zBIghbGJCGb*)64oiB{wkupl$xik#1-AdI>qXB7)FQ;w0A1(|VI^d!Gyp0M$!pLpkc!UxCJH_A$d zy8326ADv#?c~op=a=DyOZel=#VzfK%Pin9cFICx3=yJlruj?OP9y<6PgI!exKU-VF<@L?>f&pPl~OSE>~`GMqO8imvlc?DO~-% zuWDa=i5=!}{(^3M^(C^tE4~*2(v@{(@jl|S4|tLI7mV?XxI}ojEQKr+4wni1u*Slm zKgNgL4R#mulNiyC<(3|h>RT7^&mqS`;l>{W$POX?N*-S-3Z+-R}|D09r zNv=zgI~{gVDo*^nFyLxBY3YGcZB!m{#(I=QdoZUU+qQH>EXQR;_8jZEE7cs!?PT}j zRH5)%bMG{Ezk=O&K2~_`+6|uX+N$uBxQw8MM&EdkPrg@p?uI8%CJ2{q9n*W+Vmar@ zvBb6A8zHgJJ=E`z7pgex6;s)Xzd3DtkeB9>b9pjaUQU`KT>dA#cB#Gm{*2&rJ2-*? zap@QmXIi+kyO&rm%;j?F7!=&?Vz@+?(EWBRQYw6SyCsH`&u%v(UP8(3mR>I!qV^}m z4B^RbqlYyJ%}egI5(eM#@~AG~gbNGq)QF?MAej#XBnF==4`v^AiEFdV@0^{xiNz>b zPUh^~Q~b8lT_16S@ar9Y-QNOTuJtS*XIebU?cPWTy{oHBUvoQy>&3V&g#5d~^*bQO zS;tvZtksAGV6&PFr?P^DV(KaUb~i#7eLb2JuQhPF5-gLwC;kNmOKn3=`N43tzMgDv|5db!e~?#$jgHQ4Pc+BH#_kBG z%m#Ca=J;T-dOe}`!};h>D;~B8Z(ARTd&G;M`+@fLfJ~nsL#TRo@zd-lwI=(y!gKwE zKOZJ!79IvWF+4cWB+Yr^FdzEa*KO#hV+c+P4}<{n-%ho)JQa*5oV~rsBoW@;F>$Fo zV$pPh-sZk0ftKHwQx@mRZl()cABB^zgwv0VeAscp`*BG9*#`hC{!%5l9)j(0)9BmN z!0+}#Q!G{aGlh)w93R8|=Dtcn%kRr6i(}z)ys-B16mm#t@T3>{Kp6XEl{Bt;tl@;( zPmOi2UqR;Qo#)1)tL6;}74w9or(bDG;$NW2x%|PQxfj!WIIF=Zb#{6|i|b3uDITwb zr)opJm-?~*B3ePc8wouQ)lQHmzs>|(Ny2+94?L=OMtkMOzbHwtF~(Su-{%G7d;A0* zeUg2^BiEH)Gut&8@CEPhTN{`2CWpwP*)T-O0*dX18V2_0FYneTDVz7sNrAd~LTRKoce z-m)OzIp2H{=Kqg3;B=1{-(giNaeHM#_{)gSTfAa8=uQ^M4!Eq`{vFe$|3DK9=SboC z(*IKFf3@_#LHaL{{)?sm!@`o6E&N0&Tq-?#SPGvv3&&pu$Gnhk9!UQpEcpH%MixF( zBZj+xs|?p)xNhOPkLwApSGYU?s}`=2)N3d>x*$vEM<%S=?u!bwbZU!-wzw8=&iv}_IuAim4iknKJze{i|-lftd&LkoVO zLkVeJSG5~*k-XK!@J>+q9J-p2U?1)4lr4Xt2MK9a_xP?iQ-*HmNdrQ>Xkaxm)hpja z)?d0XkVMjb)kvn-+cH{cUuyPdSSI$)gs?oAjGMbE1fJ*jrv#Zj#n`NXGTQN=TL zifEY^p82-$&1XD|f@%^>0*}+)waAA054TBA#6f#+Ac*eoOW&_eBI@OT^ZGdl5SP86 zF||pM&!X24iMD#Fcwwh+=7R zUIz~h0Rx#OJ1!==6Au|&(!m3%IX7QhbSr?oLqggl#&VxLIuJK4Xo$3YGdM2>PrDO+ zL&paafBxe;bVy^OqD6sZ0e|5(RW*Y+#xx|}{N~$qSTkaTsuVONExd-JA1Ru|aYFIN z5c)C%Lao(^_!2a3BQlC8*4}y(ctH>eQoDgGR>-)SJ&=H>xDzW@SBdCQ^ji?=Mo1gl zx-kjn&)=ZRFtp4*I=C^p!T)ld!E48ValI0<2(KDD7`9Q1guNRZGh~e!s3sDqzpH=> zB|(iKOHFa^5ydA}%1-&4UJfG5=zylAs2sq(YZ3td;x*c&4Y|(Wy(%Ff#dK&hVvCh(HnFgy)u zgNA8vQEr&OFI0y0X2X2n77Y_$bg?aKn9Jv@fNEb^&6mlAmut&vcVbD+S+8(wQBKk7 z_E7UC|4%h1ztFTm;>X`SC+qoW74*E-IfmD*=g-bo0$oMVx2gfUPti|m(#WHmWEi?h zoj>J!sq^Rd0US&M{hYrzU@n^fSYalt&33t(b@X_A zKB)Nd`Mg-z2^lTRsttW$BCGh2A#{n`=UYe75msUk9ym!7R$lzo{P^?E6Zw5^Ir8Jr zIL30~DLeh%O4<<{Ef|7Es$(MxghOnwlkL-Kl#QhOv8GVuvbAyNpi9mZ&Y#7Pw$lTnt)nd;S~T8|Tm9ZQD*;*+~S3Q-__H>KA6X zTzT<#0V_ZLF0fkg5Jedsp{M9=p*L$4>0m;hV)%Xb5I{|Xmc=~=P@-($&z=2}%GsaEqVqbF z{^8PUMtjR?MQ&ddft5XmGChPb;$=obUs|IJ>hpU(jp{;{)3bHS;AI_1SoP#8jzBW? z=}J0PPp!gEmDu!b7c!U@CX)5-LX+VcH16r_<^|Zk;;$dc-U~D-uQpRQs8~hh^lUo2 z8|gs%bR}8U=U2&jzFgpnD(n^XWp{Fv&-jTR=|S{$r7e&_Zn>TmyHBOQ4l;^Abd*kU z5K|_LPG#FAk_=CZyXP^b_QLu~?AQQ@o0$NNY})wfX4}-N56r80pziAj{N)Fjox*-r z@Q^$&=ONs5ViU9%+hrA%Hi4E!lZfgYs?=Zu&F@Kms4H#O43m)iqHFO}Xi6_Kf=?Sv z_x2(U_>qU{gCfe!+ zRZ1-=>Xt;XKKsS)qS1W_7Ht16pda-m?;8u)DqU3e(|~j{){WD3u&T@pgKYf7pie4n zz-H)|D?L2ad4m0md)Lvn{m6KdP1p2;-`bU)?MDXlrv6lyOrG*Hqp7k#RP;m?E$dIZ z^Ot*41o z$ZHrf!Xm!Z629Wo73In>NKnQHP`@FhZuGNFs1mxG%RfyiP083$1r_y%hF*5ZjfFXa zELT@N&mn=Iw92rXzB7b8WX3XODADm39jq+^=$AuD0)N~@?+ukLsB#!-eV+K!t?!UJ0i>VHg$^AT zo&;HNtP8afw|1weFwJQHa&dVxHPW0$DS@J8h|47fJBdmJVM+YZ0Mn%gfX_IJ*rnn| zjw0On>q8HYA_6I){YPVdxribtb3tDnY}XVVtrWZY&3lg z8N)Ah(%;8mX#KVmoj;Z|;1ALE@;EV&|QBiJe}2m-O}dxC1i5aD;41 z_0&ENs|0po@rU*4m~q70%yP=`?2-qIhio#`$if-zfekoT0Q_ps#(JwF2QD4()2FfS4ti3uSK_y*it{cTb{;8mZ=gQzagddB z(xvQ+9l1c~IkC2Zj(Cr>1?I)?kv;q;d9=s-q?Z@7QP}jIM87X0jp+XONh_kJx8Enm z$fqmhP7a0hWj@*m8J9)C7L!Y z{N>WBm^Q$pcMB|(DG$RGJ&UgW0Oo=$rO}g!k~-2!N{nFx{66gS(&629siuvl*-J5VmgGx?80tNAx+6ex^D`JY`|w$MgWVzL=(D@-kU@m z|2GJ;7rchhc|lbOans+1P&QS9z^~7zX;UzDNXw_|r;t$o;2OFgDEy^Im}AG<#|^@l z`cC_AF)(eIIRCX~m~b$oqLn0V)lRLzaJ^hxOQ+B})1euQolINXV`-y!I*ACVfo1cz zbR&X3pHBMzSN&Ppv**1oyYsxNWyejaDEnb~*=3XHs~ISJeI8vmmnb`8{h0xl`^dkF zWKSh}EjvEJ7P+viQH*iG_ofF%6<^0#542(J5B~#YOZs>wEEhCbpGi7nl9ZK63_+=L z-H75JXj~4M;~7ujtIT*Hrc9!zGvN@NO{X=pVELYYL?g50=SOFekkKU{$VR(8j|_eh z&!@B7^u{nyZX56j9Cv@K&C;Z>2(ds;*OaBpO95c1A0B<3_IK7drL?HX{SWA^EV3su zj+v=}#jNgH1pig^Ka37iEVB+n1bb0&F=P@gokhMQ(R9viI1#1{`rT}j@@AjSsoH0; z#9yHea-W@8f%|ozognwwY`M>3qW!u-SO={JYg47q-WB9N3o*T=FzB;6q~{yJmdvgK ztpDt)z>?D526p#-T1S8}nMJWnq-;K`DzM!!FI9kTT1>YuCh-AMZsolQz98$$+$?%8 zhdACqHax2evX)s@k%hniHnQSz^oI;6@vKa#1GR8uR>k%|oa?KCZS_L>7fuibNcmO4 zRyy--Z0ea+usxko72AV%-^R9RtcjOf`>BdiNbHgS7B*`>T|SA#HJCl_KU#F% z^tZwB)2o0xGOa4O17qF>H#AiS*K`^Kr))m8s@xhn-@;biDP!w3_CK(tO??~N=?|-5 zTlryCY)ePKjZHa9#&&OtEV$w+Rlz-kJ*m>DSLVv#!czYOT=bN;!F@Wp3b-+otAZQ( z&fDO)kutcwlW5jV2yRkUY^UbDh3$tqGPe6tepNKichcL~CT3K@X3D6FO*`UkY^B3w zY>U%n!3|BX3hoOSqAG%0nj?eTCuLX#T-gUSW+_&yWRIi^-|2(bz&zQSs)E*C21kt> zM%yhTks)(1@4%3m4Byz>$Y=QHcdW*IQ+fS$3r$}}S~TAYo0EM2vpY8Dgh7oNUb)4B zWg9Vs?p;PYRg`;lLX~o{=d&E;&K^RyEGMQej|WNR>hpVeiWg_R!tN|4{}`$IjrA?5 zf$@tw)X{^>t0DeAw7jg^(vUE|Ev8Jxz~?UZej060Nz&V+Y%AiRr4-924bte^RhVRW z4W`XkV5B-Sh`zIe#PIqQx@iSz#;az~<10vTL^Vi4GRcbEJt$u)Z6OZ6lrQmyLU{FP zot31345L4;B+36#Cco!BHmV!gqR1-LHhm!7wF+hG2GXaiunKZ*0PXxS?)&zqb3Z1X zRjsGKVr6DOaVc_+pim5z;Se%A5>PtOtu7hv1#wn>2<2B}ce0Sax0>h(+}_nB>%U+W zjFn*UlgG++PfezW)}Y*$$<%W#>b|@$?X;FORn(sh$wQW{_d83)Ig=$pG*9mTwji!X zyeWv$W2j;!`5)O%$9_WkRSXQwpRAYqy5+5m@$2Y{uAr6u-!pyObyMW7WTIyNZ(5S< zIKWVF`JF;VM>?Ikjh+e^-z2)G{m*^b?!C!(`@rvmOLxOuZ!W6cW!H%7dJE z%)#ZcRaTiL&D<*E_6hxI?e$pimFF!zNH2O~JuyT!8dZVPD!ak{K;-sR*r_*3A-?HF z+kQ$u2n}X)XH3`8V9lJ-p&-H1nS}t%_~XQOjcM_xq#4#VfBc=aWh({s=%Cf4MnlM& zodCH#QZB1vk*5Q_8;2>&pwCE6vXhSfj2Qj9Nu`(fZu#iPIJ)gKGNVG;%#HkX#A|71 zGRBw@a^5)UFw9v4zy@X;y)yb@I*SRov_#d#+0iSnnlm91kseO&Ca)=${ln+IDjNPv zR$lSRM2f67eY(?MzknOJ#E-VwM25bh1jja!I=)wMb_mG><>cEE>5WY=6)paxHNGU> z+NR2}Bjwnmi4{7?PFq4w;dnHOEi9#qK7Z3$Ut$L+mKJd{}n!~&)vkv{&CsOvR*7u_8@TWoC#t5f37gjzPkG>)!E`)wvIGspQutJ!R?H&*m8 zD)dJeOP0)jvgqjM7EroYT1OlSH5flguKa5~M(NIkz`TSEO>thrhj|GzFdy;5-VrAW zHANiY?l-8&IBDUijXMjrSWaD=iBNOV9{C8&9{TZDz*f?j7JWs+`Nf{}H%2YvX|*jl zJaE-QM{j{i1KqfV#MijWRuF?-^!^t3`2WZ zNVsdEUA`uU*uSsXNL3HP9(yG5wdWGNi|TB42wSDd$zn>*Ilb5_oUd%N&c1TWLrN5l-Hv5|frIG>+lk)$vr;xLcwjQQ(@wwJP9l`Oq9CL5%qU&V z=m{Zsqhka+#DNtFC)g!5|6bDhGd5bQ2s@E`qiNeB64rQ4G@i!tD25X8kE7B!8SdN< z*#Q4GI<5#B0$Wg21ZOM6LGQdzn$wm$NZm%)dbsO$Qv8BFh68Vy(fWyvY&2;Hbn#Og zoxcMeKG#OS+(AMW*?7;?c`T3MNtPJ z@)(s{JhS@a^P}=Q__5RcSUY@$#dEe=`WI6Sc8YkAh0fXumFRA#>vodnd~-WJypyyJ zs_A&;>S&q9PJ#j!%l9J`h8;=e7FuT)QRC1=%r5e7`S{3(bz@6^1JVa}iK-i?D@(e&0?3}?4?ljb!ybHMY9*xN*d_K?sK_e^esmeHLF zmkpN=@de~0H(fnM!|?nlwMYh5lW`LPDMU+FC|aB-Z4t0hQC^C+iUklKMq)4ICJ&Oc z>DoQm|3lkI%aZ2rA?u@Eq&h?{=~7XLIN8AFqYS1YklX^+OPTd+X`tVIkHsCSURs(s ziztGTJsY|2c9t`cEgnoAc9^1R+z&+GD)yD6Bdki+zT(Iua+R3R9L+AK-Otc##4aYf z;Rn(@^ZrYu#~>u1!Bl+o2_kXyukmoG%SZPJv@-h zNOh-Ad!63@&GgqhxnWD`jm&eQoqr^?yBJ?T@|))yMSSCaL~}$G{;a^U^Xz);XMwM$4P5t(vBTsxr6Zesz&besFN-8=@=N>2(xy+@P2EI74fPX`}Iq@>S zO3&GKvIwUj<^NlRPvYcU^6jg50iS~8|1eqDlCguyz)Xq$1DqG4zkrhjHN4}yL}kKy<(?L4iJ6J zW_txZw{$;mQvuHoc+6vy#XkRaL_|66$kufG5z(6xnVjifPZP$Uc@{ zK1$}edymI|&1dmp<)iDx_g9fh+|CVDAbrjuyj70dI zx#LC)FPFKh$>QuE>5F3|#IUbLg-OT8F4V(M{IOM4XfK&!F_)lREl$#&$Km8a@RyH6 z@b^u0;TIT@c9|*!@0Ra(E$D|QNLLjUhP!?R5@uaQk*kGeXNH<_!w_~0E=er?2POR? ze%PEoJVA5~c%YL8gN!j~Gk0VD)11bfBn?L|`H@MLEmnIqmnyMTvLWwcX6zoM%3bBu z$Tw@0ByM~t)yNk$lHJ}ZMmKc136n$*8OhcNy7wfUoL0@LM=6QpuSU==r6e@+{tkDi zO7{bR2jQ~a!sNhp9mW|uw^C2@zFxGXl<=?j%`Kb((a| zlmx>L>B-{y0-xev$hiio z3Yp$9LtZ%8dpoO@jYqza?9 zpK&y+B#e&!nRM`(xSbW9?u%lJn$n`5$+dEm!mBm(&LN_Ye5S4thF0#I4@2E`P~`ff z(h|lRrZava$!=S+ z{5)wbTak#&cdx#Z4<_J1dHKPF2A5vBcCa1(o6X%#JW}lNAL;H~Wa(HLiQx`(fu3vx z>C)uQs*Dup-l}LWS;+^qmoc-cUFmsw%cb3~=)j-0lQc4NY`cm|xjWlC!4;MIro2+H zfxrDqqTaAJw@XR&x_D1V(pbEeD>-6O^n(i|GPvoLSFT-%;&!sv9KmG$$*Z)pP~S5JV=D#arf4Bud{K6eUtL5^ zPPdjF%T=u_YU1u&%NkbHq;YvoRDpEsr8m^65w-m$nfk=vNJL84-z9Yl*PQ;5^Mb25 za1*quaYgrQQz;r&Ox&^&3nu+guMU`1S5~Vyan|1zZ6SNbz3K7aWVMpK;<1-u7*@5E z`@-;+72w@{VNin#@R{Y{pZe2lmr0yChFMYU8M}?eO@v@9B<`;WSM-5*f0HWXC)WD{ zfy3goZ|R8NNqB8tIe*XRbjk1VFQiqnZuRO%$|z*723g9BV(q2X1}%o)%Pr&tnj@NG zNd;F)C|Pqc&6LOJokgR|$j1cdQ>$Ge9r(L9Xs0V=5Sd!E@d~L$Xz`yUlnkJM{7L$d zQPgmiEMtoSC$5q!WE=hF8u^1HQQ&Rp{_BfJ#Bw*!_f8$jqPhjqSvN?s&oHz{@6=6_#-}7LFw(-Xv)u9|X%%apyrAA^UDGpbhN90Db9&n`Edj2hrwtBn~;xoQD6AXGlYq zXIaR}MsjxjWJrSoUuQQ&{FcuAhm5Nsf&Hxkz4s4kgjII$+hk+JE)RIE(%X+x*IU0D z6%#+tedUru(pwthA^OX05|&xODt0138qmm*lmAyo5_|zddnSf9{3u#%%!a_q?NX0^% zSf~XHNl!Fpp<9espM^X+B2<%wB3a1g&*~GM8qIF*<0f?^3yCb0!$Ox?XdObC;u#h! zX3V23W}!3| z+QCAjSm+E3r681jpk{RHU3S;QpJv`A2LGI99G4p21sre0J9X?0uHN+S4bs3L>)IKO zQ{T|NFZ`IE1W=!Q#1;^VryQ8dt#%01G!$Oc&lhME~e^EZ5C@rqY3r{28eCmafUP5_&dy{e{bDo#D!ErD$bsVWi zMyvNr^#B#u_)^tF9NxTI?~VM1(t!_&!IZ?3=&;C$ma0_QIqt-%=`7y=t@u&(sN+6q zNUuI5?YtHtjYGVupp71p&;}3dR+NK-o2e_L$gK+66OrTxI`I*#^fFrdh(zKr@6$&l z%zr7<$t`sxftRmHa#Z;kbG-R<=wlKQJRd3g_0IFkPpdx4>9YuTeep8FsJu=d;sLt; zF;2?9!0MCinAQ-ZtGQe^eNv@tANbG)-(G3bE4#3 zPw1WJWL2|^K^W)R)-Sf!#8J;BeL$7s@OX=)AlU3DG%(2_u84hl}{N(4v_E5ZlTZp17;x zhB)>hgXnH(s(6V_f^vAHy#6on+QLP1FNjuw7y4*f2;ZFF^k7*6A4-la8_ic7u;Qa@ zuG&`3?rR7HvH#1 z2$rGWNpl-#=gHQGm`Yy#m$vfYFSY8J;py1`yCbd)Ux%V7KD1{qMuHuwomg#ma12TC zp#9lTJ5r@5-@t1fV=v-f(H@?BYrOC@&65ue+Lxm{j3o`y0Dyui;rLbkl|8{SL(Vth^qA~)z;uU`zl08 zV>3h|IiH$GbkS|B)qhcguUDr&qzUJ$kMmaF)OB@fNe#YnRODT0vhSJwiez+4oq`!v z>S|{E%U-^O6T?F1Scqf()iD-|W1)QrWgqYprxrEy;-^>R%N#}PYx73JclerK^yY*3 z$szQKHy=~~Pn=nIh4P3TS8`A5gPEDzU%M4jL86H?Orrx=r>tUQjeXkXMn+9ld$(46a@Md2R!) z1-Pc-8ih+t<~a}0FkE_EU2vVj#eQ9qcrF@O2(A}+{)U@BvY#C9)raRcA#OP+`@Qex z*Ta1nu1MTR_u+AB55Icu$jbwG?g=h#AkS?EU4&~At`uCcxFT`c`|?~J&<7~+0H_zz zvfn1~XQIF#K#$?Nfa@x*1-QoH>We}Qd1H}xQ$D&0+>pk?@OQy`;(FlreMXMGuE2imt6q_~XJ6WD!}$1y zlakSvF`O2ZeZ9#D%0As>Wz-mx$wec;KH3xq%D&jt36y<~FA)7d@fbavk_hRXtFuK?zNvhDD>>>hjJi`aet%ouJ3 z0_=snb)f8JyG@|%wYDvw>>amlpzQmFdqCMo$qq37&=~F*DEofl8Bq3>v`dVSH#EvX z+3Oh`iysriiJ?C0v#&G6isf)ujKVt z^|9OoTpos4E)Z86Tvl9(xQ60N$F&sKCR}@PoyT?8K)bi$&6#b0L^%x#!srYr2&egnKppF1xTT=Q>tndp?0y6E0(9sX&gzcAlY#F;d}&i7-=twsV_2i!alMmG>-x4Y zJP^0`i_9;AZSVH3LHir|j(nT?MV}h^dc-FYt26B;jvSUg3}w^3crQAW!P$fCWp?<~ zsZ&P|AB`eQ9k5}b?Ixy=2=9yziQkzwcmoD7-ucSBBstxsH+XWoGVrWO-);&kK70y$ zHn=Bm<~#_PV#Iu8!1YU8aXNQ6}AJ6Wn#LEIN2fUn0yidV% zfVW!WF-^g5ADF31esNR(|9@Ei|8`g|`oqRI@uG_`f1Z=T&q=5@C&6QTg6D%Scwy<` zB2P``Y@=XYY5dE0)A-DYMH*9UQzz4C(>T*KlVDn5+G?_!9p=8~)t2>^0?SD280$)F zn(brT7TY(r!S?C)S@uQtkL_RC3+x=uCB8uaXrXMQj8hI%rYff@=PJKY?o|G){7rdJ z`ApeJ)k4))WmMTzgH>Zx@2i%mR;s?vR28ZYsQy%ms;4SnwZFQ#y1lxmy03ba`a|^s zwV?h?{hj)-`ndWx^*`!Y>S~$>nx>j4O`Il4Gg>oUGfT5r^OE%{>j# z`e~bLBeizz0PRTaL~V|Cm3E8vTkRh0e(hoHY3(oC8(I&Yx2~S9jZUw#=`!PWiMk}+ zNZm}`9Nm1~MqPofNcW@eknV);vhI;CKp(1C>U--`^kenu`W*dw{a5v=;hLnDLMfI-KQVi;w3&yZo5Zpbk#HGFN@ZrEcuXDBoLZMb82WO!w$V{C3r zF!nYMF-|qkHZC!KXWW-*JZ-#Vd}^#|iZrQB7x-vzIyCtTuN?b4)N#GUuDunm;pdH=i<}Gha8?uy|WSEv+qjOPr;bWvJyn%S6je z%RCFUY_R-jIbb<&`OR{};%TjA4Y6vieXIklA6S=IH(Lk%&$`F@i}jNAjk8{?>pJTO>n7_KYk_r}bq8AGs5QZs%N}+R zZX8HAW-scxb-w$}{Oe4*KkepMTFpP+rLeWC54i!lr`Y%?4){At)`+-WQ^HZpx=ns54_ z>4N!d;?H5;_sw7ayebuqe*I;XCl zzPY4ZQPIdsVA6 zr!<>&f9O^jP8nhVVw-6xn%T!1Y1LS7T0PN-i*56w_GU(LiwGBvhjyv%scvYRY8&Z$ z>bn?c8K;`RF>kj1VZC6l9mTC99JZ6W0m?k(QB^hd04>#yHGF2MWsWg-u=KNRw!E-B zw7v@Bnukg>)L+ww8{Rc6G|V+FH10JXHhP;Hn8MJHGgq26Ks>ul z2holHGSxEc&BLIO%gx8oac`K3CCH+*m@NaW!>n1>9P3=D;4W)3^sp87llE#+=BQy& zTruI|P-Z=)psc0Vskdp~*RIsA)o#^Z(6-T;VQYq&O3i1?=gpVQW#+49(R|B%*Zjcz z#9YgglxewPOJwa^Dr@QmWw5H2W}IfK?yByFA;q}M;s*%?M{#9@%R#bd%0$%w%@$3B zE<<-(*GfNKKi0U-=x=FaX=Tw`td?$;B+GQmLdz$XFD*wcqUDhF42;Jg5cxgpE34XO zwRNzKvt`v+cHJ9<-gY-LTcN``UH(SXhsD?V0v``*Qnt_Jj7H?DeCpQIn!_ zqgF=Ui+UWz-6dQq#t=VcbBrM4m076qG3DP%UR6_NQDv*Hs%ohFtB0${si&)#pbr#b zP^g630Ak>;f44^6d9ZB4CK+ebT2J4w4h`-%3X_6kOT zTDk_h*18_L0lEpg8MHOGV>?qFU^JK@69F9i;HN(T9PqOv?N>7 zEZA~qEH;8K&%{oUL4ef%>HKrqWAQ zN7Y^xubQlKs!pmdsP3p9qCd1ycTo3JH`c^Mz#nRsXui_?tx3?H(*6ajVAhR>K}*xm z)UVYa(O-nzB4EOc3}=k}A&t!Orn%7mzfJqif1CX*ytN_Fe`sxJyJ~w6{zLny%&0G- z4ze!gi-iQVeKlnbrH`_%vVpR_(yokG4uI{;1H3iL4a%>Th05=h`=Ar2;Zs~uUROR) zK2>t6+A3dF163IOi*_oL$`1GrRUcJ~YP4!xrs@OLEY%!UzG}VdOI5MzXVu@TXDT0c zgt`}MG)(=jIz#=rdbj$3`lR}t`jPsDn#W*O2SZhmCQQ>(qtqBQcB$TdU=PP=Cc?_k z(0l~HW4-1ZSjVH9mzrwOF@@G&8>9`>w$v)M26!Lw+C*)VHbt8`Qac_NdMX@|1={u6 zjoR8e13ZnDx-GgLy2H9(buOKsK1knGuhH8ez_0YD^%vk*^fhF{bMP?w8ygv$7^5-f z^)e2ISN0Lyf~MwHa05Ox&xIX1Xg&dL`OAFA{K~Ax5dXqb-P*t!0qq!v(PXdna;CMl zO=;_9OSPrjvTgHiD{Y5urM7Dr)a%)e7{fZ+d)Sj;*D~!J?3>}nZHLnAvmdsfu%EGC zu$S5Yvfr}bw?DDJvU^0;it>#LhzgDhi;9eD7o~-9ijGQ%N{kv4H6`k!s4Y<^qW+EI zLa{i7*0d-)D7z{Zs>}weE~@^jRMiI6AF3wmf$B{4a`jsELG=ms1$CMFFZC_;ee~g1 z@DXakLkNI>5C-o6IbcrF2Ktbrny*@+T8*YVpz^YL+k9<)wm@63Ez}lni?p>t<+L^< z%uci|4*H*HOR^=~Qt%D#k*M-GTbc*zJ%v91*z=S6rKr+*`z2KBs$E32?%E&Ft*brT zhM=%$p1A@Xr}9vFsl1_1eyTuKuqsp)uA)y?drohVtWHr6RgYAs!uX`A)74X8g0j>( m)VaoUp#Lq~UE32I=RhXNYJ`c#G_>*Z%<*DD2n(