From f4b1ce03c56857eefc37c5bf0827efe0772a0d45 Mon Sep 17 00:00:00 2001 From: Elias Bennour Date: Sun, 28 Jan 2024 20:33:23 +0100 Subject: [PATCH] ... --- bigint/build/bin/testbip | Bin 72952 -> 72984 bytes bigint/build/lib/libbigint.a | Bin 27544 -> 27728 bytes bigint/src/bigint.o | Bin 27160 -> 27344 bytes bigint/src/libbigint.a | Bin 27544 -> 27728 bytes bigint/tst/support.o | Bin 3424 -> 3472 bytes bigint/tst/testbip | Bin 72952 -> 72984 bytes bigint/tst/testbip.o | Bin 44472 -> 44520 bytes njvm.c | 180 +++++++++++++++++++++++++++++++---- njvm.o | Bin 53656 -> 59640 bytes objref.c | 2 + support.o | Bin 3400 -> 3544 bytes 11 files changed, 166 insertions(+), 16 deletions(-) diff --git a/bigint/build/bin/testbip b/bigint/build/bin/testbip index be10a5a688212572b181ee6ad4b1f6cbe7d857b9..7c94e48bfe1b73ea8517d4ad446d6df3842e5e10 100755 GIT binary patch delta 461 zcmeydlV!#(mJJJ-nIvQq5areBI}?l5~fxq@W{W5Q-d z*7pBW+nE>`QWy~6AdsKNz{qfS_4Y$7jN90>{-Y@{VMf(p2joLEOkc#!culJYO@1R9 ze;1N^9>y>xE|%@Tco>g!^W`L_m*ytsC8nq5rskDQ-yq2-J^iT!qZn2Rc}Yf5tP&BD zICM76qp!zCL6Mv@PP)FIH*H$fo$vb}dEQ&*KQXPqWc>qBd;kEady;$r delta 431 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 HHE90=#(?Ze diff --git a/bigint/src/bigint.o b/bigint/src/bigint.o index 4e68f95420ef573ae35b673fe7cf9a26ca89ff9b..162ad9f334014e112fd16450027be8f3b967b58a 100644 GIT binary patch delta 3258 zcmb_eYiv|S6rP#8Q?|v{-2$asu@qXKAuWisMW6)=6o`HDDgi>5c4?uzbS*1Zf-ES8 zib%U$w2dHwgiuX1A*+ajiUbppf{=ieXd(oIXkubxG-wq)-`u&a`=80qp7WhKubDYB zcRH@}%h!0@O!vJ?rdp@NqE{jnWn$a1$XmI*`}mCkoL@F?@j|}J93hI`v-2#a_k~4& zHlG!R?mwnlD9a-3pn0C8X-~vT&zc^i&|RRVgS3Y`<~pM=t!lcZdq_*!EXE8HxqRkX zBiD1Uz#6_WNUIfD^rY!_(Q;^-G7!%itDW)#+;*D-S zYXkIK>O9Ml!H3K5iQNg9!Q?MCKf)<{Y<{Fm{%-S`sm$0*;5KzWFmAw6qQX3p?Q#A| zTpS;GKYBg;6<#-p(|D@G$=z}&v72a;JekRK;-3RQ*dZqozXN=VWC>{mq$44dh?6^^ z5`PjQSVBID1~?Mtf`}xNsdj+=d0?@5VWMZ~3K|kwA_)d)_o(wggV{ULGocA%jR@}+ zk!C?u1T_l90X=1*R#$>BXHH5DZ-&8oF-SzVAaT(kpg^$sVW|5RWG}-6d5XXoYwWCBH=_-)cFE zG^^y>GzzKQA{sSiA;{i#`X{^Kcpy_Fe>TuQXtI>cP8EoC65@e&L<*np3-wh@s0%Tn zx?)0Ij0trKhz)HXXgQxqgg3qk=c~!LGY<(=TPx71b*vRQMmk|}S`3+=Xqo;1)4+Q$ z?GY&x^yasyY(Idsw=dbhW0L(RCfWNM1*ajjjr=qIkJhU-`?o!wgtXc9VJy`|3+#X)IG6v4Cj)C)P`yop{^N6)-^|W3*(1lgYG(1$w_0Y;R^fJ-OGQWG= z6TS|G>9*85els*|b*j}Wu%QFDlPFY>B?r^3KsQw&{EKP?YF>{()y5twbec+N8eOo$ zYx{7`09>Pel+VksocPIx2kyd2n{qM_YHfW^)U^=NP9huCM(j28M)((+A5TeZ=z;Yp zwL6qXco95UkkSaMq8V)$jbAw&W7mOI7GrI=b_Hz5*~?$6!u7#5RHucxo&|p)URQs% zT`F4&9aI-im!S*PignRWz5(~KxMU|^OB-=GcW^jBD`31atcgg6u~lv++D?UUgqg%N zv2DgSr`%@q+aHoI5PtwV&%0!s&A*T=UnBkqOd(z+7YWKV;%gw^ z7m^vo?;v~Q)o0{r;+1Vjvm9^h?{ATliBE+7fwoMRh-oJ5qCY8yy-vhstdxg|s%2Qk zFDRK64EopActh(NH*CzQ zs%fnCWqX6coTA1JA>W43#+*66O+J5P(AShx?)Qe)HZ}z|=9GAA$`(~+2eqJI$NVWj zGs*9*dph9V;H~oo$U}6<)VGaFR2}_T=K!mc@htmdMdPD-o;Nji>v`fENgkYDkMvC=j8*v?1Oz5aGtwS|}Wd zP)}M5k1B|cQ_l+1AGQ0`A;WV=TcSiELSgIoB8nFx97?T)V-1l>)6)KXvITza%p}Ne<#X)pK;!8e!g}%uQG3~{hD`2 JkJr_S{{VtJ97g~E delta 3079 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 HHE90=#(?Ze diff --git a/bigint/tst/support.o b/bigint/tst/support.o index f5bd62d4ca32ad2fc9513f1a55fb800a22c741f6..7f7b6da30ec8194269cd247842b84b445476b43f 100644 GIT binary patch delta 720 zcmZ8fO=uHA6n-=NpWQS`MIj0$V4;oBtY{^-R8jCCZBklFE`=`X8jDGGO`_Bv@LDO@ z#u34zAnMIRZuMj@Vo&wdUJAv7M@zjaD89ElDD<&!-}im*V`k^g9-Ll3vwk_VVn7sC zHLfeY=`uU$y*lJMM?7OC))rsb^}$WqejdAE&=Ti(DKn+Td|1kF#C<-IX&+O!#b;Ds zNcF4qeivC~BD<`|bU~^+2>=CgMch$}**)3aklpik3~q^!N-+^S03_s+eXic%)=TMn zE#~wwa}Sx$^nJ0akCuKQVFT7GmW0V{`zL~Tq&Z;Q4B$QCqzc*}1cs`7z@pBP2wIwn zBmIOugf@0E$=A$^NEzA3dEz4v(39l7N3#+0@txvpX^+_GL+l}QXfu|l9;9hgiX0{j zisZW}*D!DYV=3N)fY>;#0ah7b+B^!H3Rl9g;pb}Ntua1Hc&X-fmx5Nut=57?zu<+T zdo^fv{Z_Z*Ui0tyjUe>fZl&RMZwBpV$DQf13Ek*s^%y?EVF}YkBAZ delta 672 zcmZ9JO-Nfo5XWctedoOxV`(84Bxt}WNU&8b6p|PP0}3LDq=!Om`-I?2UW_0_3%%Ea zrdufV)SmPr3ON-)(2L|!=*feZ;K8HDV|(h%%hE%KH#_tD&#?PucmHX-e?J>77!X)N zm9eq3$W9vH?|H`-pIDmZ#4k42_feKVce~)m6r(&H9niX*kn)zO^Gr1NpZZm_P+gPi zjqE)WF(nhr>s>5L^;-x)!8|TDl&RREte(g!*xlrXI9H}ZSqB24<21QC&#j8=s*4qU z%sfQWnSLa8^Z|7}OOKL2H9}&>z`% zM32LK&y0(R5&Q6)cz7GvFmJq1Fd`S%2;b`+Cra*M4auRy*a+32mkuS1qch*2zUOie z^W{H^@CIavCTI_^7ID$WP|#GEu2wxa{#G0q6N3w-H?`GTJvHlYxt?EjYpEH(Twblb zTPRiBW#9KUMbaFyDkX2T>U-{b^Ob3_$#dL|qd!A`jZPL!gYh;XfM8n8>Eg%?@x{6< y(l6i#G>d%mHX=!MV^Rt(7Lop1N_4H%MI|W(Pl8AjK0!x2YMzDuFqRiToU6YXZ)g1g diff --git a/bigint/tst/testbip b/bigint/tst/testbip index be10a5a688212572b181ee6ad4b1f6cbe7d857b9..7c94e48bfe1b73ea8517d4ad446d6df3842e5e10 100755 GIT binary patch delta 461 zcmeydlV!#(mJJJ-nIvQq5areBI}?l5~fxq@W{W5Q-d z*7pBW+nE>`QWy~6AdsKNz{qfS_4Y$7jN90>{-Y@{VMf(p2joLEOkc#!culJYO@1R9 ze;1N^9>y>xE|%@Tco>g!^W`L_m*ytsC8nq5rskDQ-yq2-J^iT!qZn2Rc}Yf5tP&BD zICM76qp!zCL6Mv@PP)FIH*H$fo$vb}dEQ&*KQXPqWc>qBd;kEady;$r delta 431 zcmbQSi{-~omJJJ-nSRJjUc~Ih$T0aWbG1N()UhwRQ8pqw^`7l=i%Bq;T*0z}(P6V9 zYx{qxO-u|7DGUg(2gpxjU}RvH-F}FLaT}Y~S2P8x%%~dlfqaOD>5I4-uW4nV$(L`oOzi!#Rd5}soB%dOE4Oua^tzb|~hAU$!fYHwOT z{{*{L-8pMsnXsK*G=1$vE{*M9q!=GCx-3~4-l^Jn*HTsFX!OZ%JT)hdWiDuBkgT+_ vUdFxd)ZxCXgu^E|P-aHllOD1{9e<1KnWhg*vLKN-RYG zSfU1+vn`nDh7pxN<|L`li5ll4OcS%k*UUyXqgj@iWrCU*XVmZe&S|^er1zZP@BF^U z{q8;A>3iq2%jdMIdZ#tY=$g~zXpP3(9^~`!mycS#(~NBp6S_fN6;&ILAxY8xr3OTSt;uNrshcemsg<yecE>G%Zv(*dn4=cv)i}@BnRPvYY~6AXV7&vQGHV@BHtqyK z*CO1xc|VZc?b71W|7eCexU|W_EDia8B(m8E#ciUv%^7P!;Trd}Dwqvk2sb;C9B|HL zOXp><$ju%kPZVkK-3932gG4@KMcSm-foS1liOO7vK0F4YV6CL+dgLxf^bxKx_rfaj zZDY@%TQex;+uWN&IA6_+wRj)J@ba&~ZE-S4IsZXI8D$MeSFj3U#J_FE=20~Fq4@xr z*YlsHejVl5z^_VJK}p`5H1~pe>rNx~1e*7xqxWV;@5_uHNSe!sl#qGG9I|G|=&>g7 z{!}`nSY}4!*JpGW;}c1rkP;Y5$UN&@(&t++aPt8Ad6^+; zJW6gPWS;YG>1K@F97dy)yae1(bxx8I^Z1LT>L96RQ1x{(*pXdE>~&<$6GL`OsbExd z37O}#N4hy}1-W?~jebiTEoT}@$UHM;(r6ssD>vUpBfo|ZN|CxWc;DIZ!sF2bP1Lm; z%?so*}#mso18eHOrc#eFY5e*$hv9mbWbkD$@G9JAO z^8&KB>!~Ey>lsN($PB$k8iios<|Q<0(T%WTFJms|6=b`0kH1!G=ScepvWt4jJ}7f7 z>K1iuBM>k`+vXGnWH+$8rBxZ~&A;*fEiJ(p74@NE3Wl2`yhhtE9%@GTol1PtyG!^w z4{mP=heJdCfymIv@Mx94e`Fw783>1~8b^jB!QsegRa5Y>U}z*9++Woa3Pkpd>^DcN zwg>um?DSWL6_M76KRa*E4+Zu{2pd3G2VTM$EeK#ag!3Q zz#NV0pw4(vAA|7`wN7sy@UOYJ${1~37(Z8-8W-Ttl%BRIV22%Ua8Vb6u~_P3jJ6{X zTa2GjcuMJM9|E3Ndiojw?^aczodwuQRc&O9K1d+0 zsWQ_p0=!jW`ZNJMlmn+K>tR))GoqvCo7fU4ux@xHs{ah7N{E|6QFO|J0yn>EN_d*1 pA)d)fMTa@S-n0r&T~y(btW^~i$EkR ziyzUbf#ytImbpQ6h9AR`)J!vn1~LuPL}wISvKeIfv4kHmHU42y-}gPIE%he!oacF; z_v5_xo^!ZyRr}9REOHp3C3Uv%drIx&Z_%DSHY)9KmVbV9tJ+5v*&=_;CTS( zp<1llf#mLdE#CDl&9H`ituJ?q&@G9KE6OGc19>qof)e*J)i48I2)EWC8Oj^TlEI6? z$gTBAo-feid#7>sX<`Lq1zMkX2GNDjB`TgpGBKWWAuL-&Ss_QuTYO_|x7lkRen5;9MZOZMyxEz6I;htn0s zGArs`TG2y{A4$f9lE6_y=2@FBV}1k!w}NPT7i0F!a&bqk+0uy2hl+veSrsPUMPVdl zo@;Iyria4pN2hUK1YxK<2Rk-0_;`TdkiMm?91c`kco zn9FvMTZhqUA?XPHfq`4+(5Xf@ql&$OwOFIb*6W_&CaE1F?L}lK^r8dMW&?E-IvyjC z@DOdAOO%k^#vYbl#i+Nw!rvdr1YcCwN_0%Ys9VBC+J5nfiEvUC-sde9zNe0sRJZQy zXzu9Vus!^IIMN;scWkI^x2)#2P<3ltxVF7La!`1KcRSizBL}1Hk?^w#fAD8bHVFzD z$&uC2aR$>D;i$xi+6Cj6%1$R6;A6^8hZ^8vg=zJG*FdTGl;gT!bjah1jlq0B{5=4F z&%jkNQvVi@(Xj=@ok}zgb9CAYeZz;&B^aMmcG^^c=d#fX0acPO6sCg+_=`$UTMn?x ziE75^RDrQj>SK(y7Z5v@fQ|^j2UI}XNq}EacDg43SE^Oh0Rp&R>FF~BJfigUb^-5I zU7?)oCU-y{$SlC|+s!J~pgayyDdV0CS4M zk6cl7YXXg%SsgM%N`-f> 24) { case HALT: if (debug == 1) printf("halt\n"); @@ -245,25 +260,25 @@ void execute(struct program program) { case GETF: if (debug == 1) printf("getf\n"); tempObj = pop(stack).u.objRef; - push(stack, stackSlotWithObjRef(getField(tempObj,SIGN_EXTEND(IMMEDIATE(program.program[i]))))); + push(stack, stackSlotWithObjRef(getField(tempObj, SIGN_EXTEND(IMMEDIATE(program.program[i]))))); break; case PUTF: if (debug == 1) printf("putf\t%i\n", SIGN_EXTEND(IMMEDIATE(program.program[i]))); tempObj = pop(stack).u.objRef; tempObj2 = pop(stack).u.objRef; - setField(tempObj2, SIGN_EXTEND(IMMEDIATE(program.program[i])),tempObj); + setField(tempObj2, SIGN_EXTEND(IMMEDIATE(program.program[i])), tempObj); break; case NEWA: - if(debug == 1) printf("newa\n"); + if (debug == 1) printf("newa\n"); bip.op1 = pop(stack).u.objRef; push(stack, stackSlotWithObjRef(newRecord(bigToInt()))); break; case GETFA: - if(debug == 1) printf("getfa\n"); + if (debug == 1) printf("getfa\n"); bip.op1 = pop(stack).u.objRef; tempInt = bigToInt(); tempObj = pop(stack).u.objRef; - push(stack, stackSlotWithObjRef(getField(tempObj,bigToInt()))); + push(stack, stackSlotWithObjRef(getField(tempObj, bigToInt()))); break; case PUTFA: if (debug == 1) printf("putfa\n"); @@ -271,12 +286,12 @@ void execute(struct program program) { tempObj2 = pop(stack).u.objRef; // Index bip.op1 = tempObj2; tempInt = bigToInt(); - setField(pop(stack).u.objRef, tempInt,tempObj); + setField(pop(stack).u.objRef, tempInt, tempObj); break; case GETSZ: if (debug == 1) printf("getsz\n"); tempObj = pop(stack).u.objRef; - if(IS_PRIMITIVE(tempObj)) bigFromInt(-1); + if (IS_PRIMITIVE(tempObj)) bigFromInt(-1); else bigFromInt(GET_ELEMENT_COUNT(tempObj)); push(stack, stackSlotWithObjRef(bip.res)); break; @@ -286,13 +301,13 @@ void execute(struct program program) { break; case REFEQ: if (debug == 1) printf("refeq\n"); - if(pop(stack).u.objRef == pop(stack).u.objRef) bigFromInt(true); + if (pop(stack).u.objRef == pop(stack).u.objRef) bigFromInt(true); else bigFromInt(false); push(stack, stackSlotWithObjRef(bip.res)); break; case REFNE: if (debug == 1) printf("refeq\n"); - if(pop(stack).u.objRef != pop(stack).u.objRef) bigFromInt(true); + if (pop(stack).u.objRef != pop(stack).u.objRef) bigFromInt(true); else bigFromInt(false); push(stack, stackSlotWithObjRef(bip.res)); break; @@ -305,8 +320,135 @@ void execute(struct program program) { void tests(void) { } -int main(int argc, char *argv[]) { +/* + * Garbage Collection + */ +ObjRef *heap; +int heapSizeKiB; +char *memTargetPtr; +char *freeHeapPtr; +char *halfHeapPtr; +int gcCount = 0; + +#define MSB (1 << (8 * sizeof(unsigned int) - 1)) +#define IS_PRIMITIVE(objRef) (((objRef)->size & MSB) == 0) +#define GET_SIZE(objRef)((objRef)->size& ~MSB) +#define GET_REFS(objRef)((ObjRef *)((objRef)->data)) + +ObjRef copyObjectToFreeMem(ObjRef orig) { + int size; + if (IS_PRIMITIVE(orig)) { + size = GET_SIZE(orig); + } else { + size = sizeof(void *) + sizeof(unsigned int) + sizeof(bool) + GET_SIZE(orig) * sizeof(ObjRef *); + } + memcpy(freeHeapPtr, orig, size); + ObjRef oldPtr = (ObjRef) freeHeapPtr; + freeHeapPtr += size; + return oldPtr; +} + +ObjRef relocate(ObjRef orig) { + ObjRef copy; + if (orig == NULL) { + copy = NULL; + } else { + if (orig->brokenHeart == 1) { + copy = orig->forwardPointer; + } else { + copy = copyObjectToFreeMem(orig); + orig->brokenHeart = true; + orig->forwardPointer = copy; + } + } + + return copy; +} + + +void scan(void) { + char *scanPtr = memTargetPtr; + while (scanPtr < freeHeapPtr) { + ObjRef scanOr = (ObjRef) scanPtr; + + if (!IS_PRIMITIVE(scanOr)) { + for (int i = 0; i < GET_SIZE(scanOr); i++) { + GET_REFS(scanOr)[i] = relocate(GET_REFS(scanOr)[i]); + } + scanPtr += sizeof(bool) + (GET_SIZE(scanOr) * sizeof(ObjRef *)) + sizeof(unsigned int) + sizeof(void *); + } else { + scanPtr += GET_SIZE(scanOr); + } + } +} + +void swap() { + if (memTargetPtr == (char *) heap) { + freeHeapPtr = halfHeapPtr; + memTargetPtr = halfHeapPtr; + halfHeapPtr = ((char *) heap) + (heapSizeKiB * 1024); + } else { + freeHeapPtr = ((char *) heap); + memTargetPtr = ((char *) heap); + halfHeapPtr = ((char *) heap) + ((heapSizeKiB * 1024) / 2); + } +} + +void garbageCollector() { + char *memToPurgePtr = halfHeapPtr - ((heapSizeKiB * 1024) / 2); + swap(); + + for (int i = 0; i < *stack.size; i++) { + if (stack.stack[i].isObjRef) { + stack.stack[i].u.objRef = relocate(stack.stack[i].u.objRef); + } + } + + for (int i = 0; i < *sda.size; i++) { + sda.sda[i] = relocate(sda.sda[i]); + } + + scan(); + + if (purgeFlag) { + memset(memToPurgePtr, 0, heapSizeKiB * 1024 / 2); + } + gcCount++; +} + +ObjRef alloc(unsigned int size) { + if (freeHeapPtr + size > halfHeapPtr) { + garbageCollector(); + if (freeHeapPtr + size > halfHeapPtr) { + fprintf(stderr, "Heap is full\n"); + exit(1); + } + } + ObjRef or; + or = (ObjRef) freeHeapPtr; + freeHeapPtr = freeHeapPtr + size; + return or; +} + +void heapAllocator(int n) { + heapSizeKiB = n; + if ((heap = alloc(n * 1024)) == NULL) { + perror("malloc"); + exit(1); + } + memTargetPtr = (char *) heap; + freeHeapPtr = memTargetPtr; + halfHeapPtr = (memTargetPtr + (n * 1024) / 2); +} + +/* + * Main + */ + +int main(int argc, char *argv[]) { + // Init the Heap + //initHeap(1000); // Initialize the Stack int size = SIZE; @@ -337,6 +479,7 @@ int main(int argc, char *argv[]) { int run = 0; int sizeSDA; + if (argc > 1) { for (int i = 1; i < argc; ++i) { if (strcmp(argv[i], "--debug") == 0) { @@ -349,17 +492,22 @@ int main(int argc, char *argv[]) { return 0; } else if (strcmp(argv[i], "--stack") == 0) { i++; - // TODO: implement stack size + size = atoi(argv[i]); } else if (strcmp(argv[i], "--heap") == 0) { i++; - // TODO: implement heap size + argVheapSizeKiB = atoi(argv[i]); } else if (strcmp(argv[i], "--gcpurge") == 0) { - // TODO: implement gcpurge + purgeFlag = true; } else { sizeSDA = fromFile(argv[i], program); run = 1; } } + //heapAllocator(argVheapSizeKiB); + // Init the sda + ObjRef s[sizeSDA]; + sda.size = &sizeSDA; + sda.sda = s; } if (debug) { diff --git a/njvm.o b/njvm.o index 15cff30e77837b7811c30b59f74555e55ce9b035..57daa1f552c2099463b3e61b42f8397a0e24a59e 100644 GIT binary patch literal 59640 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 ct?%_9 zKZKs9|0%|gj^qu?**~wZxRbcoySxtV^)2tGztA<$SLpzQ@j?w!>(znRt#@80);3i$miGFVt60zL zRjTs0;(9O8_6Pe{+UuP@Lfq@4s^+WWUe9qi{k^{A?Zk)d_abeo*sJcoy{TEB~ zUu);17}sM-QQvH$sJE8l`%3!3QvX`6ujJzr)%I;zw*9k|&-bm>hVAr5qmwe$5W|#4 z<{=Z-;&w1;?$VNu+Zx@UrNz?mO%t?CZQiw4O^Vxryj+R2G4Z2@fniUj5){jOquM6X}`>;#!<(@WbypC2a(px>{RR{lRNs@ zbQt&8#{gfUv}YTXoisllTW8FV$tHH^AkCJW3F+|Nw#8!hQQBl+QUz6YlH~MLNdar$ zFk?7Jy=o;+G9x)jRjWiHD;MqD?3I;*VbBTPLf0< iyECus1RDz04%Q0R4Aux%50=z|_E?fcW06(;0p643|+~@ zCnu+}U~Q$Qb$sEBMGJ#*n<|{GDe7~B+`ro}7MdW!jEy=)|If+EtEen5Dp?`SoSfGB zY(3A5UHh*N&8>BZa-gqt_3F|Ro0pR_ed@xgcFZvHrCy<~pndj7Ina&(b8_+vmaSQl zQ(T&-xX^d))cG?ViA(2dGE+F^?R^od-qDx4Y*~51jnv;-U!~}~L~j}0hw*H7_V#0sXrB&)`EFhFU|ZABv`MgQ0_|u*c|OQC4KfIaKsmq|>T0;9#0QI39^Y}c* z4Rz+AdeyhgoO++jxS{D0^uI2;|Lpb;>tx`y6gVkCq#stUkyV7@>!VRYn_|bnxurJVNw0%t<$Gns*3drF)(`KZ>_Bg{$8e*8?Qy=h z(ZIHB>W%qexU>VxJ}Ui~b05-LKIpx%!FTh@de)V6;?0+;am#%4dlU40gg(#&dFqKk zznu;L_+g{Wa}Cb=(8&43i#5qr6X=J&fOQ7*0q2Ak&MUR%z~*Ng2Pplg`hnM&jk<;O z6Z&R|j5DNj?C)v(QN8cxqI%ygaSN3HP)FY_7?bzj-`Cg2n0Oj>h(I}+E~5tJMbEzZ zQTiIb8uWVY9OD)EV8>vrb<4<-*6aFtc;XmF9e@`d;hdSZ^s1rW6{~g+i zMY}`()=v1hcf#M$3IFC!_}IR6ST44~9rAIV)FD5&6aL~(_}6s8$K^+d`f)keAwRtn zzSRkTVki9MPWYE~!XMTNe^4j+wz7@#rr!7WP4ooE z-d>E&Q)a~8Q!yBCq2n;y=z;O26({Rl@90tn3rpRap%&*#`1oKJVZ@<4T;R<_&o z=>ydRFt1+U4Ap9$gDE>}tNSWGrPX7 zF%C8?X|6N-G+#_#scl>Y`Rkgo@2+_kwtT+sxjJ>7)ab@K7=d-rT@#4J_<`M_>tNtA ztkZL`#}DzpE#t;|SX*Jda+_Q4jq1|>FU9vem)ge^+T)Ga4|CHR)ZV_4d-shN>(Vq- zjTe1Q$9y%CPudB6Bv$GBrRFzzb^Fneb=XTKw%LoHx5p^Q=TO;0+>3SBo+q&Oo*IPx zLl^&6>R|rb7}qNS>_uGI+g0J(3D@L1^5k0c1ojZMD2M(=eN~-~cF>19+M6mHp}Vb( ztWy*0<2dJ>@+a(7$h(;K`+Qv{#=2YWYgN02To2jpVeeg7r_S0dumEjf8ZCC41x)l& z)UgTmHLzE@I9o#Y*y-#)K8$^L%?a$~+S-DBR6WQ2gXVzdhZ_6WpG3Q>IyWw9H8*x< zFZ&n!rEM>-yY2Q1&7=CtPulc7Tu(hnW*Y59rKJa%pYCed>Sj3!%Jv`R~o~P(>f&70*ecPSqq@y38-!`GY`s}qre10Bh z5MJs~Y0z`C(SvoQUR>)paJ^_dW@@YT*+E@3*4ZyP7gEIRs_8|{J8nH+F)#N3u&2eA<8`^+hnsjUjXgwYUsipKcEL}3($Q`=7d0DG z)0$gd+otpSB@E-vRb$uX!D?KyR18eP`sdWi?zg=DsY4odU#LEummE7eSFt|0CQfWy zAB;&yE@Vu0R3B%Zy$E0H_DE~+qo2XwD?2+wP(G@-J_Yqt=W#xsDGoIna8MAd>)){s zJB_lw5LxyaXM7-y`WXU4aZSy(h3)LOd(j@Mj_9|@ul6iQgY$;7M`7M3tV0~PBP8F5 zn^!g`Vh*4U?f6p-wC{9`Upc#|HeRvMD{$V$v(A=N-FSUp)a;xsHU`gC-$i@8hdxHx z6K%#xr}kmIoPypDpqJyY?RC0+X3P1Pb34bGsu$1g(B>mB{?(Yk_|B02!SQwiY41WW z{pJt5@OcyJrN=#Ve}Hk{nGGB-SGw%=1?xA)4E&G13TS`p@e``U-j{}sFMIEEuJoBb z_SvkztZIJfp6z^i+AHVHuCLT>HePAk48Lx*%fsGfdkB3`2z_q|{lgIYevXxa=r0?4 z)TIxse->*Z{dj6C_jK2{J6AYb=u&%CT|ea?wKqjw6~8Y1dYrLg&njnZ_FU6+5888k zT1!0I6(At@#7lKlbHTeaAHHaURAx!}g&at;)d}RECtpGD5FkLVc+E0qj@T zTjq~jpL?4zBGC3j?dJCE9HN*g;OaNWoLqOQx(XTH?# zj;<5i==4#B*NNx#ywTJ_I@9QvzMQR;+E~0&1>rCDD)T8p7Ci3r;{5_ke%K0SI1D_dczg=5RneU2BO!Huo z`QS5s4QuzWkk5hNaxUPv1(3Nm#BT*zB;sZREMK=$O*RZy$yD&465t$XyoVw~xMt-!}3ZM|AaTqt4brSuf#tDW}aE6Icb^rBY_&`-Ya>>qK;@g)fPihx8Z1u;kqr_`slB| z_G7j)|FVAE^U2!e?B|;{t95r$N9%f^AIcvjK2J}n32YV{W5DkRpAYKT=Y{tE1-c_# zMn$mwi_BQXO zHMlS?-S`fI{Y3Q@?#JGS58r`Lxh|(q!1^wJeii(;XSTfi&P*kr{@?Q7I~TAYY07`^ z{1^TA_65pEn(`m~bn0!`@P<9#kFN>jh@TpDe{6z}(f9TS-hkYb@ZHl4Gh28LZHmu7 z4sSo!|08|y)eF=CY08JMeu)opZH9Tf!RZ%|!v4plUo?)xK1=HR5crRxUp%h+#cAX_ z1^@7xL*I9h*02)i2>LsJl=%nPhWhWZufx7d-+t)=^+Fo!rON&T?yq?%4cGe-k@o!! z_x`th{o(~|LYngRix>8_vKfB!!QZyMU%uv{4Q5Fj+~alj7@f^`cE45Qx_WF)V2b2j zr~50f#RJu7%gx@FKzgH9Ywk|PcU|>ZTN*O{TfS?&fbWo|eAjqk-?5+3_7BkKGI9O- z!D2(5^_+SZy1#Bed;9`+A4+>MMnC*ap~50wI0E@!>g?kXy;Q4ye*;Y*Zm#%vfbXjF}Wr%NZKad+j{SQkF;Mp zWO|Ft*xwo>z#l~ZAuX@=*!Mv8Uij?ZHa_cpf8S1hwiS7{i_aP_s|h?S zdaJ?T3ZHG)KJ#3R&(e|qX~|#F#%EjYdE!!B?}$uZh|jiuMW3ZZ&m*E|K^vc?!}eM5 z*{l$sRgb_~m&i{E@!4gN9Sxt2ZsRk2pVFz%h9b{!@mX~u&b>r$Kk$dbXT!D6>OJk} zxprgIME+{YAKAudo5g3~Dn!reu-5(T?J(?r!*JF$J=o9E zFTp-o&#H^@ zSz`kBVUqu$u-0R<+MdrKGfQOd3GrF=SM*uqP@Hp#p6WI}tAOn{!Dlyx_{@a-Sdm{9 z;v5TAWwVm>!<#+BZ> zpW(Z#PJMP7c|J0AKWiL_GcVEm9{8uzapsk-`q?XC?Z@VSp)I;LsQNyTu0D?_&GMbLM|({#bQ^`Xf#Ck5w1$A02(~ zdC}*1D=ttz(v<&K{QLgD;lJg-ybIWmH08g%3;PfEzt*ek3!V#Bqu+0q^`yEVz8{dW zu@3xdtS6iGdeU~DvilS79f-iagrV0^ZRh)ctG#kAP+z2}_R9J9+so5IdmZiMK7h8q zXmv-{N>sUv?bEmmg<~fG0tDEMVsPxJodTSkG_h{uvhKF8~fmU9`R+m z_;M_KIT7>x#B}_|reAYy^+WPYlv} zOCA$>swGb(_%X=STjyE*b?i^?jqgK5-zRRhmudPT&ko!;J3w67*{dc{Dl+eZ|Jk&b zch65#vbbNq-F-Ekwlnl9eJ1qfiN2SlO#0?k=zc@WtnOJ8SS&J!z<(8GzM;z;+d-NC zk$vZa3-leNsd;a~h3CD0YaW_=f%1{Y@&j|z8aS^ybL*q<&Ew*;##mg_iO(Ja|55nt zaqY9exV}O=*?l`5`euo~dr$_?i?DAER73Y>cgv~G(^~eRfA2wGJv9{fLVevad*ub{ zjWkv7p}4>P$~JXh2Rk-M-P2=g0u#m73h>vV?i+O7AL*d(|B?POuDFRr>8nLabB-& z?5pp;H<9lX$#>eN$`8DaJntaSJ5$wqPzPT%;Wu2Y3+`dv8;HTY7&@k3h5Q@H%X*nz zaXu>gUIPEssh9_+D*3--K4`l>f2pslyWpHu^c~Xnsded5=ziRVGt#MQOsldRqi{wl zvJYuleMSn|dr_ZzQ6KcPI`p$d`yRJezCiv)$-hdqm%5D1&o3(gOXUdl1@v&{Ui!p--y1;U2=xA{!&J-5_g1HXO3yQ(JH? zbeh+zwlD4Lem)}tb(-I)4?n{_*5~bVaNpofQqCvfe}?<1&+D-;`RmlN5%(09ioW+y zhF!;3q5BP^<HS$?Oge~b8)>-Z#eJZ+bQdlMH( zIgf(>BGSG0Y&efGQV}rL zjD@(tc^iJn^#UAz7C+94!;eb?2y4+XQvIM2;_>6md_36cW&9vDADN@@(1Vlc-TS*k z9<7ws6D@@w@*L<5odfWj$vE6S+7G{f#6wWx;_jx2fcJC9GZZGHvEA0 z+$F%_kWDmVrASAZjvw9fHz;T4hTL=hvmNt)W7d|#1n0Mc=O3E&%K65guY7|0 zkYMVL5xBRZXdu=q&=`j;g*`&(ULkbfAWgYC+;6_&FGj=Cca4VJ5~F41e6z;q+c>}Q zb)%thnpv~qk4A(2Y>arL_K&c1XW>Bj-w!?bF3|TSzlka8mDaMVM_Nnq80dX%$NWU2 zw!HB7M#IV>(EVGZp&0YtO56{;@{XxBnGalEvl4n&_AqM-e~t3pka=F0zw$w|=2FP< z9{vr_Ann~Wbw0=6&=hvn_YNgu+!Q{g*VV$O(i(~=!+YOxR+}i#=_o9LpPt&NejkBu z;QYQ6erxsHJ^GaT&{rDxd+jgFSLe)$#!mW^zjgnrdG5T3JV&J*){lLj^+mV&(y}_r zhpzgi`3j{xbp6;uv}FL!Q z!q7VGl;1e|bpJ)W=`*n{A%3Nf!e`i~I?WfZ+Z}y!2LkThM&EqbU4#D6Qg|?}p)dmT z5XMK*O!QU$rVYQljl%D4Pnl7BL&wsp2-K-7>ed(c&OqMhiaO2Tzpk2Qv|tL@u?ph^ z_tB{5!#MWId1Hp0>C!j!$I>cS&CuTUPL-_rc_7}z>$71{6elP8s*6=KT6UTY*>|8w$uFfsyBh}_ETRFdA zd3;ete94;PVq-yNZr-Yh1x4R3nC$ltD~d>8Q(j(BQaPElF|5dMtiSr2tgQ9M`e9}3 zjl^L^BS00cH&QS6&zu)QSOAF7YU1bKSWv#axb!AFeoaZf%_v(_QJ81s=I0v~YnBC&OY@EL{GyUd<0d?jt`c-!VL532FU&2jG?;CLQC3>E!pN;yZj>XCRZLc~ zQE-ESXJA3BxWHIZX{;zPR<15HmX$9@s5J6WVWYgD(#S6_EmPUbnXTN&UsGnxm_L8+ zd}CPB*dkQ5Lf2Lz5k|Q&qrAMdd~$qVZb?aLWqfH_K}mdGX?{Wc@}lB`_+b@x`c37f zB`Y+Oj|*$fhBGRP@LasQU5CGlfY;>RS78D}IX zO&&9La`FV@nu^>N1(V}PjV@Vvrg1g)Q^ z3TAp9)4@bKNHt!xCI_V0P#O8vID|8ZuB%=`+t~bROX;OxmlY}ALCPCsD(>j3zT2rj1rZB!E)Bwl- zHD#y<2Dq*a0Hvvsy`rFUIhmEqRTS*p2+S6h%K_x-SjD$>#uB)>V0pm}5r*_Apgop# zuK+`hVPIiFZW&-jUfG&*%s(CXc-12d@;e(46_urBWlR>Al$3@{Hk>qymKQNO4m(nQ zb_<3XcWvB&%dpm;of$e_C+IfTwiZCl)!j9$YmCS2TD89GM;p3E_wLuVyQ>FOxyKo^ zV|Zq(|q$2R*)ih~i9@8fwuVLb z8D-GGR%J0yU(F91KxV%P_yQI6bjRY}zim#>@IDk8(8@+Ib(L}3g;d$YatAq8R?+xK z*EP5{8SEIRxI->c&K}wmZ8{vP6Fe$DECyzzB7TW#WoR3&2zIMq;3@|fO88*!g-?`` zg#UP+kg>l40jz9`}oZtwo44t7P$NR&HE+M{W_%w_|2cTlZF>nB8+&n zmGof0x!-26M(&}0^B1ic34Zgi&ET&I-NXE5qcDOMaU1T1Oq}dDf7LEA+Hl{%#B{&; zr*?_m4fowhGza?4zqCvAY8RL=^Fv8gJ~3g{nO2P9e)DWA#-)C zrjdy{v)YO=)^B=SF(&xUs8)C)kWbxUe_B;WwuUBiII};Z}(Y{pJ;|q_6dxQ(G~< z3?;GFZ?3i(O2<0CS#C2_mRtSijW**A9C(Par;Xcd6 zD!=)ic8L*&n>{y!}3_W#GZ!x zW+ZyL`ppyV5--t1)Dz=3!{@M1qF1sxJt!y2W^g9)V6y0DGk!yTaei~4FoHFXlkAv1 zCfL&Sj|XFElFh&sw&B4@nb|J;L=1E$Voco9F41MEInCP-)0VA@HS=QfxyxqcBfEEm z-+Z!N_FjhjHYA4k@SDGBm)KPg`EXR~4M_|?fNDR996or?e#o}xAbk<$eu;dz^;}djGl;Othwkl`8c8Pw&J%ovP(xd$5Gwq}! zbzOb%<8N$fR^Er1@{LxEsebd%tr(aWKCu~Wc;8&V>AFhQ!%)kQ@0)%z+GZ#duJfC{ zTQQdS%^@~}^SdwCZ(eRQ*u8wq{N^~Dp>!1Z&55lTg?@8dE5>Tf1vZ1D%6Eg`Tx2tp zS22#4wPIk{u4=`&#cx*H45b4j^A?+-?6|{kZnhc9V|V(^@3vyp_|00I!LIGwf)Z3ZVgU%+ps+YBXf(r?bT z8A{>uaJzq!z6eBy(SkNxIiVFZVQPdfCcelyROR#t!JH;aVfQw6wOn0;-I zD!~iR+E$z{;B08c=?TsqtvLO`xvLc?9-N&vN16IfaDHfWl+PA{^N`I^r7s5OF`J`u zT@TIyo1%&hLa1^vfW_r&8A<^}|;3-v%d=`#pTZ@y(Qh zlOZD_7W)bL_{oe8_eDGp#O0L{?l&UH!($qZ@Ccs~$>}U|9b!>;;NOc#^7|vVg7lO2 z`MoOZJ~G0Mh_}IelC&?(@cbT;@G$dP#MOS&Wq1P2;|l*9;BBxYFdu?cA3vFK?nuWJ zca#xv7Cf5e?&6DJx-SxR*JvZM3y7#V{5uD(t9zGdS7d}2y>C8PE@bQpdK~F!Uss>2 zOGIzPSqoQJBVr(ER?Edp7*99E+^+Cp0A&*9Qn1x0d<2-)(1M3WJ4`>Bac0m?6UC9Y zAA%F3%TES^Yc-xzYq$n7S9kYz-&)EIWG*8H53X0AH2im!E~ea2Emz~a zg>pmbP$QP!6{T`blDg|$lU1(R>CnK>IBHs5hg|Mn-OZY{UUm(4ueY`H zD(P-_FDmG{Q*yisRu6Yg*>@0k$0^H=*tOUR@UsoUwfafsO6hKH_j&0NcZycGJ$kE( zDgQ)=vCjBxLU66FXO^kTZYSGRW;3F2t_tc1M3mycaTN_ZhMDYfZxQNHx2Qx;QU8pV^)Lv}e5Jp9cxlHf`ty=4Y>j zg-aiXjxhgR+H2M5A(=$yyJJxq-g#4>)(SkyvfM6B=!Fe0o+QZHQO zn>F_*ns{ z&;J!vcp~RR1r2$Lu_zTYYYuPt1EXCS?U~h;1scX{2pEC!uQMt3dM4#dQoT;haJsT`d1b{AaL2 zXO7|YvZ~E+7N)$+QQ#Ra-D=(e6{9+cW;Ii}h;Bb(sIrFZvcwOGs;uZre5cCK%LuO3 z;i!(+w@xcr|2%kJpZ4DN=r5qs>t~uhD|uC;_WV#(a8g2&k3R9L?uwacI`2xrXF7tb zv^$g3P=%4$B{N2i7(gO-jB=~{P_D1ou~y01u}W6W+gG_fb|Fqn_z5Ua4Pmaq(5!O| zmi#)$VC6S-GLCPrN<%ML;inBlxQwu+pNB55p6O!7;ag^Y5)fRammybp7tt8SDu#Cv zjnN$6;a#}a8nKHcm!46_Fa;xedlan>*JIed-Qb)T-d$_kuJd=-`433`O)PcwB+B(d zel63BGChxqNIpc^6v~+1${|MI6!su|rX#pkPeXoRufFSr*^e z_iwn2(FBR^+c1vNVN}%b3X+$*?02&Cj923wz8uM{+mClmrNGm=g8h9nP#iwsp;@k_ zJ;|;CQNra#u4{ERx#L{SG0?0IxTaBo6Mxe+OULhk2L_qdueqLwE?ZYgS7LzgEwN)#8!IjN;rk&x4i+cp$96R3R%42$#>pm@i z*j2#zH|+F!R}tg$RlMi)nXm>QE-J9@fJ?Q(H7e1FXG(9gdZWvpEC*i#4tu1p!nH>= zabzZ@*CCvL)!s1jIz*%L@$V%_MgGYDGGJHatr2emv(dLAH(+B2n(m9-=!^J2o4ze7 z;soerl&Ol2_?t~v_lP(Px`_NuaS@T|F)Huvi4n1&e~TUwxg{y0Kj=Ft^PQB4p`h<0 zeP>$42+-{Iky|q&t^@rk>232OmV#C~w=asw2i+I7iQG{bQ3+b>eS%>seHjzd|ol$z~y`sm^^+|(x@bSLrL!C z$>WofMkRwYX4Lo*2ETaTYmHC=><0y6yrIr^Fkd_z3Cq^P)}thBgb)#&sre5*OHyp&%EgO5Ut zyu#dayy0o;{P|O_%ULk{TQhPNUN>(>P7ZEO;!DyDeraBjpKDa$3w-%%-&j*pQM952 z-wiU6Uor==73I0Bjf&hG3t*_CmzVLYwAm$<$W01g1J5ikT^(eA0&h8Z3;4yiDyu@tiHtIc z>}!iE3&n;|US8qV+5~*pTvDl&s4qJCWuH-2P_W9#D=oWuVX1AA60;*LcP74KhO5-~ z?*_jW$Nd5Jm*U!yR~3}3;n#)w>u^?sw?q(U78MlZrUjc|%Jiv>6SP4f?C%Hp9kEfc zwjgg!Wr0yyfUoe4)wx9_#*MkfY%5d_ZA-^0^+oue(Wo$-x*A0kTvGr}L0JWAm5*MO zj=CB6zBjkB5S%q7a5Y}-wkA(~1T&SZ3s)``l#Y zEHBPofr1K4abH9ZZ(=ZVmMy2;vNeEZxfNijK9p0uY`G@#N=sK2ft^=e%2YTkA2Rgz z^0Ly39O%i(&n?Fr&2mbYFIQ1iaKboH#k?tk|4?*!5gd_&TRw8|62tOb+q6aC!Ll`~ z_!9NM7&6O>SLwo`5-v87upC`4C+EiETqr0jPYU*BRR9{ba+($@D#2H|{N|Qn0bG$+ zT2cw$Bfsub=}sI16~;339o`iIaoz%9^>PQ-xy` zF&nv;83iTGyaIQ(l&`qaC|508F89&kR+2JRqcQ{cUZ`Qpev`3aDsCad1_L1hAxh>V z@?3_#4kCSCKAhQcZxC+3!<;RA?t8fb#cXZh>plbD;VF6Cl4#&oL}LiT-~M>-`tfsL z==S!k+~_&Q7`DCcTfcDd<7VuSw?uxH@U8o^zd5OK2I5q$#bs=uG-g zwnRQK?|6!5W8;iJe|z_O|EHV!z5SQmybqo@*}w0?v-dq={Oqa!DY)d!+BK`9pRZh% z@%ByE8QFWbMDAJmvvap}-F*Jaw^nr9>zWj?a>IS=BgXGu|NAl3FL+?&qr2bw!4_1C z*A={)=9S!0gf|hI5SkHuSpVV>@VhPbUWp9gB7{POwFp}fb|KUu)FT{4coU%sp&7x4 zbt4WT5g`R317Q(DAp#fcEeN|1>JSdVsoadBSYxK_|G9@}e2`pJ@FIutUt@jYhdWxv zlSQ5vS&aWou9sj9(}Ec=g8kKcqZ$_JR0|lAp&AOwSVgc*Vf@6HdWBF}3~rvF0h=iwmZ zQ^fzgGGqLd)R)&qjIR@W)L9ea6Gb179hjaf<#TJ!c%qcgT`l8vQa@gSGM+2?p9H-T zVGKex0$$B%;2uxaPQL=ai|`3T7&7q?@DhY{grx|#Al!%WC<4p*9m4-1e1u@29JU?% z8-AB%@T}`QvgnEQOA^Zj5p9rz&f5`~b5EdYmA>4&<5aA63 z-aFkL)6^)0D-o6;tVXyMVLL)C!V?J3BfN@m65$^RUQA-W5fTw5A!H&fMkq$O1>tUl z`w{jdJcsZ{g!d56B6xflHweQKQV?b%d<$U}!g_?e5PppCIKmNxR}kJsIFAsGiE}W* zSOh#z)3_D^_cj{q5bi>_AK?jvMua~hypPa=&>Q^@_oS&$8rqFb_mcEYdk!a$AL(*R zhI2Tl?yn-lVmOzp9W0Q|Mm?tCLGwi_ePAJmc@6>Q;l@k!2LzVQA50w z7vYx(JZ*gs;Zp=Z`fGoL(FmM7*~beJ)*-OpLd4(&NCFTadphLRzl_iq!G^FpPRI2E zzYCBQ-bTXwyeN?TTms1AwU-5|%ynza1J#WY%Yc7IFfs#+9#xOf>qwv+Y0N}MtKP-Z2 z#CX+s!qLE*^Rq-lyZno25k6}*v`Y^?&4)<4^w4wrj?zO9;yX$YJ$3IWJ@l}>qx8^I zb=)uouebh$9*lRCKlG%#qx8_@=Z?}tkAaciuKdsw;g0f$p8s}~9(rcmQF`c^D_%O* zuKdum){gRro~m|~9(pp`QU3}(1MMh(=ox26>7i$s9i@jJXLghxda{XaM7#bOdW4Al z?flc~FtLODqp-OTGuC00xLmH!x^^LO$dEDW>zql9UQ5tjN<>?XOyTUVIj;EKm$`hOE z8D8b_SD7oTyk_qzk7tf2evYTBH`6mP)6?5K$KwInGt(0#q~ZOg#~<;Dl0dH9Do<~7 zP?e{rw;Cdu9#5u+5|I&yJbpw6fE^9=X96}UT`sVU!_eWgY$exF$z>>8NmqILp)6X^ zC)48s3F+>%xEokL#Cs5{%&Q=1j@7yPpeD>kW09*1NM%hGtnpphVfN|Fo@!^$>^OUv z8w$*8eW{*F5x&PfW1xO!mFG&-v&z%Q3l41=oayPB>50hn41+IKQg2km50iR$eQP{% z5Q%~-GCc_(s?6n8p3BX?3VV3X{+YHwKZ=?8Rh~pIZa?&lLbf59p0Syp$V^Wx74-!N z1r1WAj09a}F01m4@S5O^M%vI!&p6Zr)klLOgV$V|=^5`eVc!%ak48yoiGya2Z=WZ^ zi#r-s({zF9Rc3aTC&nDAu$R|_p>#Gfq7!thGM7|&63hgJQC@Qxddgxt&b%ZORVhc6 zy$8`!W;Zmx+5Mm=D#G_?)%<@d~cYJ4DdNxNwq)pJf`&YQYr8` z4EhDN9aGw#gtlQ`^AFHQw_ld&Ny+p~P#&e0gJCAS!L);(uI#lD5W$E*KSSj_Rc1+* zXQ0=N$wX5qhjmwJD8vI}24&DYW{ENvx!A8EN;~_ahp7I&33}ZLu~cjpK+uFA(DY6L z1?+6>DT9$2+R;3I^b}tzcz{Yzcdt3{<2hb4HxsQ*;(8DXBo>1hPGS*=OG#V<;&Kx6 zK_row3t}vZED#e&%my)u#7q#WB+@}#Ng@rz^9HG3ZUFf!MII!1RFO}Ud`Xc9Nd8`t zPmp{?kv}8(nj#-1`Gz9vNWP`WpOE}tMLtL}pve14zNg6DB>$qwACNqy$nTTiRvPhI8%! zAm_urUUzDY=W=v542MD9Ly8&23B`qhlED zSD9s1o=Z#&FiaugocLHmc$H^pRfrHYS9`kpZnQ@TW*7`Olo}3xggYe$<3!CiMVwE1 zSD8S}Cvgy{_IO~>r887rP47I93-i7^DaPZ9z|}n}0!PJoVh zXbf&-?g3NbQuq+oRdUicF?D<9=#*GU^oKmWi1M(o_RtF(*Huh!XbA0GKMWlRO@lcl z+Y=7_%6`Mu_^`(pp%-T#)@gbi&Q=pP7UDxlgon6T!UjwY<-|&%wlp6oFa*vGR=EwsJI9xWNWOrqZC+Zt&CHWRy!W9}0#=3(w2TRqrs$iIj zO$w(Dj62&b}t2`4;LeESVdu%j~p z`!ryA1A&c9HKsJw>0|T_E?O)IyCW$GyTQqfW^xK13>8p{(Xp?R?RIu3+Mp?keyu*-xtI&47`*`_=Kv5DsYK*L~k zobH&0yyj1}+T%gB4=X7$AZ0$h0ix&-|BE;rtgY*d^$-Plv7dQB=RXn5f4?&8gtDdD z(;uVyLN@(SmG){F|{AGhg6L&?C-(Cwxh5KCK%>+ zst{tIO|USVhpQOuvryRGlmta$pG{PHrh`1_`3C!S_e}30uZis#``15$rENuNP9YXB03EE=wP?&iRj^uS76!J<~228b5@;S7!v8&nGnB%@+ zoc6{d1IC@#+^CDMaydioi(BbO|W>IhdrNJ?K%h_U?r(GJ-&v znyB=|D;X?)-M!dV!Qfj}jqeB+`7abX(FDW%7gY$c&n8%;&GQU}%TOej{ZUnB3*|Q> zBZz%AQRx{8@?-8C(B7O-nst$P28;X@MNT%!aAxgKZ7E%UY>vi;G%!|1w$ zZP$dq>k?{$C48hxAj2u)BfEs}evJ}7&?W2&me7O}CYfZ+wkO3VyM!NnjS}9|CEOn@ z;e@IK8BQHe*d^3{jS`OQ5`G#i;Vo4MGMqZRWtZ^C*C^pnx`fAqCA_NYK!#I?SM3sh z_BBfQy)NNEu!LhMVY~^3d5qmrh>21n^jyxPMm@szeobvbmn zo?Ii;ZNbIu-PIusOzuO1X!65WjTtiH$@?a~Cm0^wA*AL9} z^sn+HA-$)!O3n6-s1+{dpQYaCbPb;i+WD-q6AbfNmMO$On_vxX9&7k~Fy}KWCmF2a zGg8Aw#GQ4pCu+w%A(7`NsO2GD%U{!)gDepgiG4P~T7vggYx$I}eKx_uDLsalJ+kzKZc989s(5fTIMaNTK8AU()4aXZ1&YKzo1l5%UBJ9L zZQff!^L`5R2AglWs!UQ)|8_9#C(3VRu#JDh@<)2jI39Y0s!v2i3MB0Y! zXEM5-I5e4;ejywEU0TxzK~3LRnm&LgQqXi7X;{}1aNLS@W~a{Zw_t|vstkWa22ulX zHq~ROTvrza2^^ zm|&Qj3!KrzP6UC1nZv`?UJFc?)PDJZ@>RB@;SkjPS)Qp0Vt$HZNTHZVIw|IVR53_3 zNuiiJ7V{=(6tgF^7>_3lhlc+`Q8>Kvn&=x@I3Yaj>WL#l9D`)>@MEK^7rt-8N;Zdw zc~$rlL#^CAByGF}r=-ugah!r4`W&?2uBnhq2~9Sc7kB{se1yJd5dS06Kv>0E+ML=i@vB{2nNz%i-3VbdHWvbQxW6G-lq1Y9@Hi z_hC4{nt&Owx{o@d!D-Ac*a;_m04I2cnycuMgYd1{3k~o+?V!J+F%F`1d@1P9LZ{qL zCw`2I;d~h1Z<%-9;!eXMw%0rh9-P>vT5Te5m~87woLQg@@3eyEEO<_PdRV4Vf+-gjimq|!7W$gG-k&Ee+hmpunM;V z@+NtpWeERVhGE0pNP1AJ=HT0DK7i{gS>9xDM%c8m*l`+P6)kwH8P{l|bAd zm{q3HIyM9M{egcJh$hH-L8J9B@DTXLz(?ShLXFu=f%MxFjoAx-)>joAr6`Z-=>_Q>gYQWVNDfDZuAq~qQ=;7P&5z+H&%5G(_-U5bG>!`?!T z)P-Ps??@o? zB?56TP*#FQD;mgrQ5vlZ{af6$5Es8t?&NDsUSx2}r%MK$dg% zN*zBAWc)CY`s;yfpznZ2s}@N8yER%nfz)3Jr2c&1_kl}+)Sm&QzC-^`S5~}6 zD+)+`K8=;Wo!fUIvIRqHzf{3YUt zf#uLsuhDuKNIPmZTDyR|Ay*8fo{$2fV4M5;{7Ea z2Bf}|leE47umt&!YqX96sqY1iRuYiqjs&g-KT)F8RmB@E) zfoGa9V`@LtI62QvRY zjn>0JmR}280sd}{R-8`Hiq&ZOfV9^DQvTc+++Pm)W{uWSAo(uZ-=@*p1f={%U_SWkHCoL{TJEey>q8*h`3R8X z=KzrN_`|@*fZKq(fJ+2Zfz+D<%!A%>8m%}W?KnGH;|oCAb3~(64`eypfGlSt@Nr-n zkmW1_vYbRgACTpQ0hd9Kq0u@yO6xx&xC5x_t;^7{ zo?RNP^+1-hNH7t|auPIJ{edj!%w@WqlR%d98j$522C_ce1dD+zrx2I}J^31~3?R!% z5IlRSF6WF!s|m<*4g*=A{Xmve3uHN4fGlT`U<#1sj00Yea*{M!u|Sq{W`xEgK-TB5 zM(Y5O@(W(SezD%Pv56E)shHLqUflH8HtI_HYq+B_3{xu-= zzYOGfIi}G%3{>q3WWFsLtzw|^8}M7;=WDbA!?fISjaDj<_D2IbFB(8qj|AM~jeN}- ztx6#Emua*Lfj@@)bRg?6|Di_fB#?3e;6lh9*JvFBa(+1gq&+)o=2Xl((q z{7o9I^}r_}R|(vMrLjz7_97tblLDlkalrY=m!#2(2de%#Nc^PH3IHj89QX~$zp2qW z3Z(olAj{vW(b@rIz4Cz%02cv&4x9(9gFRUqv!?^8Hw`!s`BODoi9qU0&}j7sQs0?@ zTHi_F&k#QbWPNrEt_M=zTHsvduheKQ0@BWLf?+`F=Z_MBR`UR@{}_<=9syE+9gzCh z3N8fx67hM!tC2rTqm=}texKlL{k8s=HCji3w0{?n`nLi111o{lpC;HJ_)Em&fLB3( ztVXN3pVt4f;BFx8-=)#o0o;vzOM%qC5cni86-fPj7XVYu>@&b;(ceGRn0*rX3&aB& zv)=?hkN9gEvyTBA5I?Fhdmr#&#OpL>Zv(QPTY$4*-zJS#vG5ClGr`Z-Xe|NGKzxx# zYaVbq;#nH4SRnQBc?#*^M`^U0d+K>~2k zG+K#3+W&I2VcY@S58Mgd3A_im6i9oQ0H+||B8^rC@M-YJ0qamslE&yZ`7E*9!ULbfvM16snN;@vc5|-W~TwE zKT-Gz!Vd#7zX4=@&UIC2H37*#37iamK%@1h@LvN?0{>-=)?r{H|;RMaTGWK`Ciay?FX`c`!r^61hRgG z!p|2ze|x+ce7vj0I0$Tx(&O-~#_Sh>Z12NBmQxQLk8%!Zw02ASPD$SZ9EbF68m(d= z^)3QZPZp4RGJsx`q~2Iy zGV^P+&O~VbhrlH8n>1SEfO{c75;z+CM2%K|;l~0;QIAF|O!(*g$OL|~M(ac1Ua(FA zM}i;FXuT%Ec^q&OTpi-(Rx_;yMZIX-=)#oCj3pnMDRCiv?_&P3>*%A zp+;+o@D~Cv0e_xGYr61Lfy2O0(P)hnegY6%(yVxmR;=)&fY^Fw`7~PRe7e48fkVJQ zqtQAk{NupE;J>NSIwt%VfY@?n@wdT1>wxh00kP%Ds?%ug7XD5kwk%mYG+LX4&)*sk z0DrAUt62E?!2aMb)o3jgeipDF_!%0lRN;>UVoA?R(r6_JzdsO5b5@*2D@yobKrE$M z{P8c);%}na?jHiNBxW^fw2lk^HDE9BU)E^7ApFBXEG=2}8m)c8e;A0RA*)uSwNv=p zfSBsDwrI503%?SGDL$)Aqm?iGB|uEkS&KAUS;C(V#MGLVrqLQF{E*i(rDFr_4s>OWA-_ZKF4|u$nks($Z>ZRh$$rN1&!8pNl%sZ6iFW^=|{tK{v$x< zKMcf>&*E?4ffgUTMScblLpf`@MvKn_BR>U*A(_Qzi2bD0#W6x-5RYd;b#C*^{nX{tuW#9H)*I!);YIA>op+t@E6Z0 zI_sE5Yn$--OaWxc+N9C)0l8j>0l6;o_ijMzB>o)&e+Q81+kp7X+M?0IySr5SNFdV_ zfykPbpwX%|G=Ddc{9PKY>B3I~LNqH?qZJQidEA$P?;U~8MvM{s2Ra$!9||rJoFzC$ zu&3b1=zNs_x!`)ic)<_Q37P)9;7^PVipAI|SDV za(<(p1%lHAlLg}iy9s`QK}-3+3LY1HN${ZH9>HCLn+0zaED+2PoG92=@N-N8EGHn? zDEKIlQ^xltezV{bLHxc!<(n)xK#-FP^?ig%g!q4g&k61qykGEc!5ah@3QiQ{gBhuZ z&$=Xj2&0I95PU}PF+t9MOy4T_ZNVZzKF^2gvjq9r1jdI6@}Yl>n}Q!B!Z;ruNaXxT zd{Xd1LG@%@@Ha}lRPcJis{~U8`Rp0|dHV|T7r~74IYz|y1z#8Zl^`D*%k+l??+`2! z%n}?e$Y*X)zKh^F%$JOx7W};+=6=Pm6|5FqE;vQ-5+GE0H^M)}rGjaK@q&h60EJQR zh+wVYM!}_mX@c>BhF}1hRer%*!Ht4T1=9rM1r5P~*n32Qo%IActHSFcxB!4 z_Q1I83Wohz2cj!%v|m+&CyJ}M{XQDLS&8Yl&el2pfpNjO{nnXP61QJ8^FI1F(|;=R ze99){_N!&yfj=4FFX@XVZogROU8FJHey_|9v8Pew&x$?vn`Bl>+y)hZoe|-k7C~$Nxxd+_6uWvEB4v%idJ7S;x zu9#~i-b3VH5_{}7#Y~mB{i2v(iakR`ev-uP*TnGoMy#LxmY8IT+b@Z!7yBki{^eqy z{fe01iaqvQVbUaSzZB*vvB!QV%t(pP5`A@IkNrlN1c}=(gsByKz9I6%C2qeC=4WEx zb&}3~GwWl&4CaW~W4{Y#g2Y#d{64YAeiO_PiI+?IkHwxFCC+)6`t8@id|&MOj-(He z_&pMTSnRXk^)g@VvtRG>l-Ogx(PgB>?U%SbDE5TU(fuP%;`VD>c8WdSB%P1*rG55G zTegWk6C^!G;`VD=?i2fFN_vLaXTO+bpV(u+i)Dz!?N_nv5_{}7v2>NV{qmJN#UA^8 zD}1&V?X%yS!iV%TZoeqSEAsX$S9XYf_PbK}u3^qUOQ&mpTp{+_uS*|4Zz#Uy5?0#O-&Yd@S}X6ZsN}+iyhqhuCAk5M{l@ z?f0QvD)w!b{CA5z_S;axBwj1&-xm9RCh;?3kNql?Vu{;tLTM6v>=&WrOWb}B%4xC3 zeho^w#O=4B+$Z+gFG1mckp8pZfl?`P`xPi3h<)}OP?k!3+|{~$j*ER)NPLmR(Wn)hDOKo;*pgq9$9}a*ro<0O`Vq0meyzy_i8o66 z&&3}5l_q=^9`)NVG1)8j*sn0zBKqz9!57pA8T(aBm5g`6+4maVKD?ggv%l=;EAb^D zjN8wHdW`Xq{C<(QpSScEk++{8^pV8v=RpmIt<+~fKj}tE*QKkoB$a+x7%N5IeqPf5 ziu`n3C-ZZg#4B~w_$`q7?dKciOWc0m6fVzIy8V2qPb3~S0|Y)Twmw{E^OG%c`*~T9 zf=B(FxA^f(y8S$?MPjf0e5RF>J{^319+9~H{I1?2Z$B?;nZ)hqKk-?YERXwTe(pqI z+tD>Yv{xen}gBW7?!ohW|qI&uJ6SXe0k}oA~u@;_O$U`dZq=|D@w? z3`6zdb1*~Y)7!+Ww7f{;%%e?xm>GX2&PLToy`Cc^{#+aR1zNv}V;}X&Ym*<}8MLwo zPbV%~F&!_h&T*bGW#p)bN$239(0CMZyN6se!#wp~>zt71O_RH@l#dQ3C6CJHMqn{m}vmB}`jN+V8c;vH@gC~sRwbXbDv;7=xJTTjNICc)6=3JSN_cr69&wMbp zj^nAwlrPW2i?LZ=I#E5P8ZnS~dUuZf@M`49D_m7kxk?`FY~-kCSLZCpqs>d8R37*Z z0*_6$pRb+M`q|qo<0`z}Ta}KdeN$u3^4ucfl;@S*OqNPldY0>`dW^TO7)wF{3s^}* ze9K2KlZ1~$9xjf@QIi8-s`T8-(jsKWyMd*R_|$4Vgj$yaH{f;Nc-nQS_w2`wQ@46> zGulBvygSEvaClDex!|p8wPH;!9ve*?^fSV#Lnt_5YCh7I>!)TT%4d|(pXwd#bkYJo z6Pu52m)cIBs#M`2WvZe?-Rz?#O|q#Jhnnb66C7&1LydE&u?{uHp^}q>WRSw`rgnJ_ zkz!LR4mHuCCOFi1hZ^TlV;yRYLnS8%$sm>FkPb0vqEoO#O?0RU4mIAP#yQkjhe{sf zkU=Ur*e;$jtveq z(V-?d)Od%&&8pIhV;w4aj6(*g?erbDLRfWD1#3 zu+}Z8w~(lZf+CT6G!QIA2EJG%J_IQeL=ZjnROjrwBy`|+&+q)sz2~0qyXSrIW8K{@ zUsWbG>vP(^S~(G;&92JyntwvDr9G1Ehg|HQ(B|uL*x?jUKWCqWi2pM`f8S1$11j4~ zJAIaD$4y*bU{`6x$Np2lu@5xjf5TOU7xro_=;#d0@$1j?5<7K5u!VTPfu@@-Vozk{DgU55HlbP>7Y)VBj)L#~SYF5r{MHHC;jfyhqB3OHvkECLZl z$SZoJDW`<6GkCvW%A*^gw=0`jBGZ1#L5)R zOd%gWYF;)|R@Tgg<0+#sVCB;JaMVb|dip|HE^O^#n{uNkWekp_jf^p9rlA7cp`5C} zkh3nCnPaArE0A-CEh|N!(5R8?k6TH&hozOL9qZ5&1?&f$1)$Zw7`zI-qt$*B_^-8y zklObGkFdCUQpC}a*$cI94AXez4;a=&k8^+%_anUOIi0_=+Hzw`?CRlpa(F95z9*2L%Lpq5|nUon#jzA)+_kBY)#U*UuT>8En$ugyH@@Jyt%0U delta 859 zcmXw1O=uHQ5Pt6^*}TmrmW`++^$?SyRnP`42Bd8i1uuahNGcY8YP*Nf{F#7|wot`` z1q*F_DqchhiU@*WKriAC1*?eQMU5bO@Zt}67liuF?(4AMd^6w7?#{m1Ztv^((tbM| zWUd|adz@_@$%`9StNk@P!98ia;c?eeSNL9g(C4KYU0zV1c{Vzw@4xC5*|JnS#E8AB zkxkQ}h-l5ms4+4I-y;^;R&_EM+x3rHV!A`7sl&~BM2ihl7N0=} zGxKnPq`DhCkjxd&)W_@1fkVzYr&O&u^?`%ca(TQmnJZSDqt$Auq4vm>St*tpwQ9+k zQj_wy`X=uTKgKfzup2l5khvp*f4LcB?q?x>rE_;a#0mAn91YN}47EAbJGZKh+SX!v zcKZChb^G4izY~dTv+vZqM;rx3?h2W&HL^#)@i&FY&bE Hkx%~tS(=Ne