Date: Tue, 27 Feb 1996 19:39:07 +1000 To: macgifts@sumex-aim.stanford.edu From: ajbarry@ozemail.com.au (Andrew Barry) Subject: BugHuntLite 1.1 Welcome to BugHuntLite, the free memory protection library for PowerPC developers using Metrowerks CodeWarrior. BugHuntLite: * validates reads and writes to memory - dropping into the debugger if an illegal address is accessed; * requires no source code changes (other then calling the initialisation function); * only validates memory operations performed by your program - if you ask the OS to hose you, it will still oblige; * is free - memory protection should be a right, not a privilege; * is wildly incompatible with Virtual Memory (and probably RamDoubler); * is written by a 'rogue' programmer, with no inside knowledege from Metrowerks, Apple, etc. * is only compatible with Metrowerks CW7 & CW8; * only works with PowerPC code This fixes a problem in BugHuntLite 0.9 & 1.0 ---- Can you archive this file under /info-mac/dev/cw? This file supplants BugHuntLite-09.hqx which is in the same directory. Thanks. Andrew Barry (This file must be converted with BinHex 4.0) :%N*eCdKeER4-DA4P,6%a,R0TG!"6594%8dP8)3#3"#0`!*!%f*96593K!!%!!#0 `FNaKG3,r!*!$&[rr)#!13R9R5(9ZG%aTG'8a,M%!N"&N9`!!!F-"f3,2!d3!N!- &!*!2KJ!!!5$rN!3"!+eAakQY9mI(!*!'508!N!BLkJ#3#VG8$3d*BR9RD(9ZG#j S!*!@iad!N"%@!!!#3!#3!aB!D!$!9%9B9%0A588"!+ck,QDXrhf1!!!"aJ#3!j) !N!2T!*!$BA#j34d!N!C88K%!#"cXG`KLb-(CN!$hSVb!-Q-"1bSqYi-8BYqq&C! !Yep@DPS@NlidMf25NRU'@[GSRi4!13q,R2#-[k0[q[Slp)!6pU$$Td1XCaHRlAI ID6X9LZ3pbR(pr6XZ(a3S(1q-9Ib1DaVNL(hBFC@mij)!a@cYZ-jpah8Qj)aYjVJ ZRHd#D!GH2fFNKAq`9Ica%!Y9)-Cc@FaP-!#mRNFmQjlFq+jY(1G#"jIT#,`MPN+ -3"(5kq2qiNaViShIR1kr-(r)h&J)N!!r%(3B&2EhD0A+mIKMTXbm)Vh0f%S&MDE "-Hhca8`e@P"E*`%!8EAm'9jI"ZM9bm-'Z6$rchcpX!q&J%J[!J1%YA`KVcp$+)a ![aHB3hlFLXYX`i@`Q!m8Qq6QdNcGklAkXL$+G[Sbr6!NGQ!%`YL0X!`%B5J6"(f K6-`3+&YM2BfV,J%!!!d0&%*eCdKeER4&EQ40BA*VCA)ZBh"`!*!,SUN!N"''!!! $@J#3!aB!0!$!9%9B9%0A588"!+ciq!DY9m@E!!!"QJ#3!cm!N!1&!*!$*69MjjJ !N!BFaK%!#"c8())BF2$9PpXU+l9G&T0*,1`RBL!9[T4SP(Tdr-UHSGBpC[&953L 8mp)0MNkEPY1KjcUYErQZl@N5RJTH2fFNKAqC`8-Xp)4Bca42bLcqJ4jA(ZSik8` dlSLP%#eB0d@DT1H,Dfab!S$mJ@"A4j2m29UeFVJ[CXUF+q'R'LfSY8P4%HMhJPC FCKXZK)dKVp@0!MiNjP2&*N,KPM3E)"`N&1i(!*!$$3d,3R9R5(9ZG%aTG'9KFQY PFLjMF(!!N![)a!#3%!*!!!!-d!#3!aB!D!"!69"-4N0A588"!+eA`YQY9mDJ!!! "(J!!%9)!N!19!!!)F6BVcNi!N!EMea%!#,,4H,im&4MNaRP5@b@m!DK#``UMm`f !'#K1mp6-Nh`q3-@mVE*5ff8af5NLUFF*E!KdDY1k4rXN"*jMB++ZN!"f@1m$25k l0eXKTCe'#k!$JhbEGqBc'kS(pZb-1e6SNp`l15[RU8UT!b%fq3f!!T2QUGlcM2U *E(9aZhPUqEYUp6[UPRI866RRlaqIL8*TT5`!!!c!q$cQb@l6VHjcVHKQYYPjR@3 Ih8G@YK*+RT*pH-S2AhbY@q1hEJQpELAmD,FbXJNPQkfb0IbQ[qQ)V1(TmCAR@U[ eK'H-8(*l28+2m#62Bell#(-cm[[**VICRK"qX5LhMZdRr-M[)j[XPd`il6CcUf3 66SlG*TZ4ffHkk3'eD[6`aC9X3XPY4Qk66Ai6K'`bjQ6M#8"!SjkdaBiHLNB29j2 p585P#rJ2-rEYf1AIiEmHViEh"&(jhdq0G(@2$*L"a0!3aCU2Y,H%(c`ddK8"jF% LPD*(BirEPZj,i9d#X%pia&I`k"2Hr1ZmrhdYAALr3)UG(i8X`8X6I5`R85Lph61 2rh"1TdJZ5kfjFa60[8,YZ@Yd)Lp44lk'i[PQkXcVe*h28Prq(!dGXDKDH2)829R XCqHIUr%I6QqAjbeiXZ$*JLF,RLaibX*6&Tkbm*5&Tb`mCGrcj-@EFca0AeZpBih $fb3bNkY$c4EjV+m$2mpiA5L8T8lV-[!VM0IEr$m![m'ib[a`&LP0,"0&L+Uc$j1 5PL1X8jip5Gkd(#eJ%kY%G@KKD(ceU[e2C@UF*'Kkm8m6b+'3!*%TGb!@'DmL--l -*l"YH'X&9S+h3@#P2$GDHJYDfr&fVrA3kjRRM+GI@IdEHZLGU9PG5*qZ5U',(I" G"[m5l&-k8j@DAL3&RHT)RplYbfA)kr3L0iYrG',kMi814Y3Dp0!Vch0Q%r"9b'f %90MBJCFcC)`cd9`X)[Vh!Fl6b@IXJQIHb@$XJM`[[("(b`SGX$8rL,I9dCbT@DP %PLTRLhq0pB2)8ZqPXV`ZhCTB,(441SJ@0CmK,f2m)MZ0Fm1rUYC)bq!S`L[2VR+ "m9XV--kUAQ!mLaT%([IKM4CR#2GVqYcUEHj@qQX(8ZNhPk2YLp+PpQq@008KrHC amJAh4DM45e)HZF"l@I$K#182f0hR(Ne!hje61iXpBBrF85[McJTETaaMSE,Bpjp F@he*G0dDakbD1)5ACp4qSR&q'IXerU1FJr,ka#@Lf!mqGFQrL`)BYMlmld0He5& ,C[i&i'V)8ZE`Aaqb2'q$-a2lhZG@BLmqXa+lq*f9f2IrFFPI)AfeH9cb3hr'Ad' r"`CpDJAf*$!IX$TJR`EQ"9B1l!&i[!-[%@!aB,H!DF"q#'`*IZZ"`41p!9iYr%' EASIf(Q#X[3#0-QMm&GK&D""im%SAN!$EE@$XkB8)bF[q#Xrcd'h(2hYi&KMmH(E C18MXei61!ML9d2i4ZYN*M,edf"SHpK+&aJ[!RJ-R$#`(M,fM'jb*"jN6mTG6`0K 6066kr"AbFpapm1,!GJ($2*,E-AY2&'H[&TrCVbB`ep"[cFT*kL5TQ,Z+0TIfUZF ajeiQVlB!hKA5FSY8PMR`@SVedi09+69$j@0,6kI81A[12A3@ZPFY5Ed"$k[NLh9 EHi2HG2ciPdr8MANImc9k2Elm2UV-b+m@2H`THJL'$XVjNe3GM$HIDHbPbRb'DQ0 6Ndh"U@!m2dYeXDmS6F'EHQpqPIaD2+qV#HN@XU[2(2j0d90$dG2Tkbm@Z@U4HeG A+h)e#eP1)[GC#YPpN!#j$f&Y!E`Vb(L4)YT9Y8Dp)5dMlpETPbN+$qdUHJ!2K9d JFrhGP'UYGblckPp5Q59`($j`m"@((b(TZmk-UkZLXP"@QY[XE*!!C[BhHPFUd58 +9ZHNaNq3!*V(rKI%GY6iQ'FHrI%'iq$eNSEqr,Hc3H6F1!82XqMX)$Tl8ih([U% dMGhFl822rY0Ac6SSSar9fPcc'I8m9D)IYE&R*TZd+dKJ%AhpNY+NhG"ld3prN!$ bHU0AZSAFhUHJVd&Xk1L#KLk%l#l)h)9`-!jH,r,08#4SU6@08p)bXRkIJ,iqp#E flVdjl0V[0Q#rHaBlUX@lhSqa#iQpqKh)I+L`jpRBKm9HcGMpH#X&aVH423+V%2X XBl[%AXJBpPcT@`,$RLDp,6$XK4jDjhPiGh4iBCFhkI+HGhPc,ZqLbh[*jIeU(C0 p!RX!'1r0$Ur"jBA@-j2MkjjNek[XHT@[ZVcEkcc&m35H%R&j8CIAkI,kA*lPBMp GcdCaXe5@A0iYFFZSa0ZhHFY`lKM&@@bG`SjmhCi0c1(E4Djc(5pS1$F-h!IiKT2 lZFhI['Q)'d3VC$mLjJ9MI*2C)hLla4f'-Fl*,hK9iLE$'0pU3J,M@dfVd-#q6Zd YrGYBPqmLLT1[i,$@*SHpE()+lee1i@kdaKRF`C`pH,d1arPD4JRY+23,f%l'2XV D,3-&6Ck6pc6j*V+PbI2dRLEI6VBdHHlHdq5EbjBQcqGlQRc(H8r6lX$HIf[b[Hb Z6pRT`&UAE)dGl)0j*$3imbd0jMNDR2'@"[-F$Fjd5i0jk(&"JrH2,3hQ14UmVfa T--r4f*JjYXBfeQ#HSl%aJe`0jMND'c2*e@#HSl%aSe`0jMND'c2,e@!H0(Db"[H 5eZCD0dcH#3cVSdE5k"SqHI+48D*I"T,'X$QBG#QIr1,JJ(&)(cC)-KKUlHR[-DP NH[LTBG2Srka$,Mfq6V!PYXhUIDD4(0"0%)C0SZ-"%qEkMIl"j&2`GUb25Ym*L0Y lFfGR@i(iZ0(9-cK!TEm0($'HM*T*m[`Tm2QHT''N%XD3!!PU)4ATii'`JA0pPj( %fKL!Tk(NS-R[S*hDf8$,3'+`dcL8e!F5hH"%MrAK1CDJNVF#Mi`-*'!ibE44+RN Y%0A042GKb0RQh[LRiG+IE4DMp0(00*@R0mT8-L@bIF,8NfDERZ`ef2%S+@F&X@@ JdkA*9B%f[GF)kkEHNM)5)kCqUXmJjIl!C`Ck6+&)9"0S(KVUkdRS(!fAM6bA!ke YMaVQiC%NR#Ck#h@8Ia&iBUf2*,p9p##IEMpkQ%T@rP8pqMm!$3dC3R9R5(9ZG%a TG'8J4'pMG@ePER4KG'P[EJ#3"MQh!*!3!eS!!#'q!*!$&J#3!i"849K88LTMD!% !V2Sa++eAah%!!!+H!!!YZJ!!!9%!!"-Y'4EaI`#3"U4N%3!)!$cT$QF)Y6Y!cml pml9SkLdIK4D3!(abc)EYKZ6-@E2'faf56biM1N$*9PQTlE+Bl"54&#IbP+`-bL5 4%Fim6Vb@T(&pU'[9P$3%bRR-&(e$-rR40q-V!p5Bi,5qhHNRGAi"5V4MkKT(UrA Tp[8emq&db&dZ$3j-hUY+baa&HebH'*0Dd0QNF0BQ[G$A%`@FRU0ScG`ic@3pRVc Ac"D9JFjpbd@KC[ERUYP8U8N6fk@M3j02,PfeCUjCR@F1"j6$@B+NkE@i!+6!+Cj qRXfJ"%#*cE-4qN-XH!&bqMNM+Ac1Q2rVm3$j(+Sk(kUbTjDDV&k)UHY*#(Yb$)P j50mJ580TfTdp0Xp8Fj6YKL%b9P4JTR,b43j9*aD-cCX%ZGm25HcRrRG!Kp-VZX3 [3JQDRfEpDdMVZb!IGK3+Y3&DY3TfG664%mMqDj!!eRINX`!!$D)!6j!!!E!P[pG Z)8cMAqFC@mK#q-,1VR-P#jXXc#[*3QEi20HA8haH'cqJ-MG"2hUaUZ[kV-[JeLi bAFKi)EH3!0&#&M*B#'6NQ(MelGE(rI*CAhA2Lmkl*hA@Vhh9T9e49dRbaDaehDT ShE)ZUUAVDMIh,RAcIZP@22R!e3erEVZdbXrkM9X8beAhl4IZc$dU#eqe56+VZUE 1qmc1qCIp[b4jjmZXARXGY9IJ!IGkYfLmGfZrVTYEYfRUcYX"VLcQ6FSR#mjqA@p pmrV#jIl'PrA'0fh5Ya,TKHGN[VeZh8@GqhGTda4e-df5rC82Nhp`0fPCj'RR@pI i0'mG'VTY`mG)AJr(RlQmU6FEh998I#CaFSrq5pqiBX'MLA0&@ITP@VSdca[IYJk rT&R'AhcqcacDq,rd"4qkURCYh6HCGaR#Z'b99NXq1kQjUY&TPF[5XM5RF@G4&9f "5'd`Sh1,[M)IR1UUZLT[paT'[@3%Hkjer!@IV(hZjVIZPV[PT'@6VK%9jIM#THf e,Z@d9jF5I9@hAKmqF%ARYXL+YI@rHPi@5kqVNGDmHIE*RHfUlNZZ98)d5S)(+0l aade6h"4BC,L!bh,%+bVm[d'YHHRjTPZj(iUQkc(5Lh$EL5c*JI0dcR0[d[@6ZZH Ya[6A(ELe`c6SQlS*i[Cq-SLmpXf$F"5Z+kUf`($A9EdYIBi3L&L[NAfA&3rFSmf Q*(jmPdh$HHD`$a)GdZAGRpc[qGmhSafhYEkcGiCiNY16j'fE,Rh)[b5jUT88R`b %!`HIrXJRCY(+Bq#ZITK`ikc+bKiG&3k(d"jLXDM#qr[B'fjjJ0IGeZ0PrKmX2eQ RcE9[*N-Q,E"S1paefD90pm)HQ'DEMB9Mr24TPHmqP&AHH'j9P2hAie`Z,@iGmQA A[N-85AZR4lG+Ja'f4EZbM%T[2U("e2QP`eLq)LZ'llPRlbj"Jmk$ENMMR6(XS-r +Q9Q3!+*TTBiN'9ffFpCRHH2VCGTfpV6--UYDhbJ8PI65FdE+apI(dil*(fMKc+@ ,$NcJJFQ0r$XqSS$Jc"GT*N6"*9GeAFlVpql%Y)[3B&DSZpX0#S)ST'Dr&-009kH `88cFRp+Fb&5L"erPCU+I@#+Y&$i')i2e)J""3RKYRHBNkb'b$#l-!NmL6CfFiU5 bV,I#(aNHEf3VRehE[BNmm!$HD3S*39`VTafF5BD)hm`#riCDPAX0-C4qhETflr` 6R33J#-UJQp2Nq"B@Z+JVq,82q(6(UQ6fil3Y-YH$4rAL6XJ$h'@(#pb@j'TVk"3 3QIFGXEEf53`0RP1Z3p+!&KFY5[qqQ"GPd3Nj0i43NI9PfSL5&L%MJk%FEUkV'f9 B@LBa"KZr&2%G%6HBL36DeM)!GZ$11i8%`CCSrMeFd3E'2(1c`)B@Ll$p,Sa$&PY il+Q)**'bET[#2b+I!macN!#cDl*8!B3C5,Q$51+`J@)(lKd5UaABVG0VIGIfa)M ZYi[Z+8'DL$6R[YYkH2#r'HE154,iSb&fNCIMpkc$QQ2'$I$GGmDC'#hd")Zd,cZ "q&UJQTYfj#&FF!+Zb"H+VR0V(ACRaCUKc3$YLP3Fr*-Ukd$CVU&2X9X16Z*9Fr` 3&2bphILX@*!!@c%Jc*m2l@AREQV#1Kl`+-m$!,baKdjHGie+R3Di+@[F9rTUfDh !lX&m-3LY'KS"BmIrV5mAT-UQ6+Zd#c8+rS`"XKFY'!,9XN1(SFM%"3@K%U3A+"d Z*HL1kAe-Dq,kUqRr"9!b(00d*CLVADi+"f()XSkXcK[B$S1eAEr!$V8e!+CfC3E CVSTX46`PQlTYGa,F4!QLi&hI90#!+2CY49Ch2EEajDfk-'4Iqa6[I[51)C4P!Sl Vb4HMKBpbAp5bBBiSmA&-%r#,CqmI5hji%9KPZkUY,3(IjU6DF-5h5I,ee+*@$jG H)ReX5)CkM2E[I``8-X![j!ClHUjJ&dFQ2,*1haGV`(Hm2C!!dr(mS#5JAIG)*6I +j3D'M9qRKI&2YUTVD`fjDY*fIS1$*TDf8NNCe**q3L&&%DaM,'jH01EHY8($h@4 DF!if@HQbi+!cMJVpC$L6EbDa6mhKI-(ee&ek#6B(#Uih&+kJ)D@3!*8ePArIdI1 %9$%0pM@%8BNm2QRkDQ,YP5(,"'CU1qT,)DpGXZXZmciJ`j!!3C%DI0-!bcR1cJ! @!)cE2lDc#%BFh2)pN!!!S(I80r,Lf2lKaJl,NGF8!fG43NS8$fRk6@$bJ4SXLXE mjAND$ChHEBZ-HbAVABeKhK-6'%rpr#P`%YkF8`XFj4de)MeNaZL9d,B'X2VjN!# I28)`Mq@1BJJ1P5#(-k,RC&Xc6[Mc`6-Q[T'f[M4IQr%ak%r@PeJ!"FBDDK#4-j@ 'G5cT69U8pT(UMQM43B,2&Z'mdC)2pT'R0mHZj9kPE5-NM*HI5DHe-$dMl(52#4Q lVD(EL4HSAGERc4q-5,&jXmr&F$0A$I`mY'l8)5R#m&K8XeiXI*AVcCfZ3j,'B") (0C'RV3BE$Qij5(DKXS&-HBRS!G!YHM#16+M*3LPrJbL"c#+4bjq8C8k0`+J@b9p A%aaDepHmB%GMTEmPq6l(lr*D5'!M!k&#P(pb&jL6qm6m$8VZDZeGi2m05Mc)a-H '3C`X2E6T`%@N8mSTH`RhLL9rQ+V$*RPd8C&ClY3`fmUUZ(%q-63NriZ#ND&$pmh &9I,h3iqVKc&83c`-D`P)+hBkkZ1-RZ4kN!"3JXkT)kj(c$*AaD0d[18Pl+"bE&f VY1@Pf(QZdkVB80ZC5pA`C2AQeY`@MrUeiM%iN!#CBiHb4Z*Nhh+C&2Ie8UMF+CP )%e2lYpTVF0pplCAmip5&l3P-)ZZ&)8'"M5"J-ZhJQ56KX1-MKKdPa4q-A&6A+M5 YS[jBiK04@S'%980dG')8BUK4%%$4TI%F$VF)'Li56d6C"rM9hmD6NK!5qkENSk* lX6#lM+6d$m%`1'Zd9I+IY[UP68cqDIVV4'-0Nh(`6c@0*5'jTYE4UYVpL11BRP[ 5F`$1m$B6P%$C4p9Y*lA'#cSkp+2@0bUXDBpi1*MrPkX*bBN`6ZQ+eYHHeZ+J`iI ZD0&$5k1'(ij*NMp1ljih*k603Q4d@!lm`Jajl9Y&%T(+[4Ub"0X8&'QK,0kLCE! `BkC0DM4J)kFKRZG`KD96D,%2TQp[)E#e!bSfjbNl))M'3P`I60dVF#ef4i5b`S9 &8l8-1l%#Ea6Y3rIpZlST)5,&fb$%$IFa#dLEh*JR2$()ND@E0"4A1!hB8HkhBM8 +"I"aV-0P[1FdT#8VJ93cY0!+MXTMV6mGVG@YS,mJ[Sh@@)DdI"mFNlUh,&$FBh' GY48#+F`kc0X-1l)HMUe%+["H*58'P1GDY94hA4)2iaIbGaJpf@1AAD0*`U1Uj52 c5Qaj[2X,f'bQ[5pZlrmPb3QZSEq#65fU[p2D)ZMbU"9[r2Y`L(@ZmcUr0D1aDq0 M!PA$P2&BGq[CIDJEIVHL'4Qh6R')i$hejZ6A)FcICfd64C9-5p,eEHKY$hXF8+C 6&'0[*C!!*R5X(ZCH[ZTaS(PL,16JRZX%3j*LTED0RiCLBjGVdU&NZ%AeD*MRUG4 1p"HF3LR5039GU-im(G"TT4b0F%Zj'kXSpIT&R$6T&6U'4XXeD64dV$a6V"(MKN) +G`H'd+K"MGG22IA!+TB!r0GHU0cA)f+(DfF6"%-[FUe8UEa+Qk8e2+VD")fl!B& Pcf'RUV-CbeJ8kEBG#58$#Cea1TjPc4#51FfXJ0IpU%LTrFK0d$IX"l9AG5bPS!" T3F+,"m53!*3bI9Q1Ma$F"V"#bhfp6Skm*#')QkPlH(DDc#B8$'1L4J1ZLc`2YA4 FX%VYh3fliN2ic-Sa(fJe8D@0!6fGJI83@Z0DrSBHZbkRlNU%)+eA*,)YN!$-Ya% #&3c6D@KaRV%B%9XGHXjpdL$@(AY5bD$ZXr9kcC(`JN!-KqS`i30rrYDp@KQJbGH h&XR'(DZ86BJU-@S@1IlFTX1KR&IF!9+p2'D2MF3b4UmLNJYY[D5-XUE-4PeM9B( dd'U4AGmQR(L)'LhF$M+1IFkNV4IG9Y@!AkZimIRNN`NS!5$Gi+pe$Cl9#k1NXQD mBcALSIDeZL1f%pBY&GeN,%Lk1X6GFI+8-(63V5U9`SEBJdliLiULTd@"`EbJ@%N fP&r(2Gf!akE6Cf%#[)j9Z-L$rUVaDU`iR9S9lV5FI[29qCZ[hFRPkr1V9aHll[5 89++V44&%Dm'#J%DldUC0&c(2ECKL0m+TPY`+UY*5rd0RCr93c0ZKN9-V1TS1+2T rLJj%5kK8)5ST%@NmBR$$*)@9chU%,[20l2+#(SLEj'cPb$jNYc#Kl8bYc@f"U-R HB"0@fN"cq1"89"+VlMpqFbfTSYr0@9UDN!!5CeJjL"FDri9Dl)Ki2V8e#J@A9$J aXc"+mHZj$8K#BCfIrC8)2lA4hP#9lD"EK3qba4BYaT)p)9,+$hZ8![4BDNl)B&6 "JPa8VeJ9Mi6!q'b`BmKSXfMaX259CZBfpHMA'di8br8mVbC9%)TC2*1!F*lem6[ 6fQ6d6N[SKQ@MYMFQ+[IB&E+F*S0b)bPKqpM"6GZd["k+8r3YK(X@TPE-V#Kaq*! !l9lBbSBF$8`lVS!S#YDpa+FeM[1XX"RD$B'XmYlYG8!0MJQEH2dZ`+jLXF2-5K% TU9B[B)rC$Vq2KD$0*Kkb6B"AM063QP6%lYpG[9DjimpI-1L3!+BDa*acYh[TDA@ @$FKdr[MajIR&Nl-hVelX$X4Eji('V@`3@Hir"G[q3qCA1aRk$qAF3C+fTfPTP"f bElM%9fc9kNUS(8D,PlHdh-6Rr6c13ZL`Y6)3Xl#)0AjFa((98(f--&mhP,&L`,% Y2T5l$)*c)"8U)Kl$*0`f0GK'leS3pK`rE)FYC"0P[mS2l8C!5p"eE19#JfcVdRe 0qk(IrIh(dKarjMd#4,`1"MS1q`ChB,1AMamHF2j%42(ekHIPhILb4Fjq[d'%b9a ![p+"QMJ,bjqeemp(&1hDc%TCED`ab"[UeX$f('$V"R8DI*lfh8VS(3Km55X5I8p !m*-FCBMRQH[5DkKBk5[RaMGXf4069p%D+LI43iXYe(9F@U*'Tc&bdLV*N!$S#fe 6qFN"@Td[N!!aB$FkIDH9$dj99ZIZ4b"#J3aG+(l8+c#Cm%E'G(Q$$-ch+)$(JE@ j*+rK@a@MYKmK4*JPY@b(N!""8p+6QAf48c[r@-pjMh8X9K[!L8rY'@eaF9,bcP* (Q'cEqi#*Z%,+Q`3ap(FYh`N,F"TDcDI)`,6e[cY9lh$TFCq@U11[EYL5DU#3!21 aRY3FX5'MiTEpVZ(5,db)+AAefmZR,jpH"4JBZL4p'RYVKB-a`SRK1MU2UklK0Uh fJ3+3!%)YS"SYDJAc'dP$26PNe&#kV(`C8)HpN!"YLN-Y&Y3XPTAYU-,b5"Y[PD" aX*E-[R12RMph6jpI2RAI2CSp[`a$"E1LIV1PVM5$PCX22jlb)m1!j[CIklpUTeP 1bFTTUZYRL5LJL8-d+f1P6j!!)*c"f+[QK`h3IG`8'Y%(,eLmE09k3(+qTB)R,dX KY$%T"4)T,'@X%Seh"4L*ZQU-4Mqa@3QP@"(&A9H`$iP-,f-YJQi8CDZ!ddJce9a 9d"IJQ0*&K"+)9CK8P`r8+6'-9!CELD[R,D+LY"+`T2l4TY-Q,E&AffbS1Lcr@f[ e@!1m%eTCVAGXBX2Z43&lpiXe[(-#$FA"qLNNF(JfIQB`Ccpc-U*@V**'!Yl2+(B 9mQj1NGL(,1##@Z-+bS"q6Q,ZIjNQA'E-%0ULF6YeXKXYi"L5$VH(0QjlGYFXe5U Xc&-IIhR#PK3DFfR+5IQVrQ8XQ10[9dLK-0$k+)%b5NpUrAC@e92hA11rRSifM*r ZINTLq"Q+4,iR$Q`ZB5X@fGH+Y2f-"Ipq%mJYPQZ'I`F&FHH6X"8B9TV+TBVa(,b $[Fp#Q@M3G6IGhHr,c-DKl%mQJL6%,QmCpK@XCr6Y4-Y(UePT38$RX%kcJRjNMYS +DD(Rr8"fB*YTBXBkFdpH[CaFZ5HcbkXhXmG[Vjl5YVpqmqVl0ipHZ(HcUfIZmG[ [RlepHI9mTNm[VQBr22eG($3CIXQbL8EZB`dUY'rYa`ii2[b@#1["9E4JaLqXU'A 1LJD'8X[*UqlNZ,U(c3K8k(IhU`9`Bj(aZe@@h%#(m-YkCKYDIrV"&Xckja#f0,b 5Uq$0[&!c&YG34`rH"kYQ#m@e@MMGDlm'0ELViMGeiJhfdcdceSE@T0K)P"SX'AC @eU)XL[Ih*5!*Y`A*)45f44a30d[9"4iq'FG'X$qP@mTZ%ET3bk6I(JPp4[L0VA' a'Sp&lkqqh2F+DJrk6IJ"UZ22H'N#iEGhdl+$mQ'"Dj5X-",$mF-(Ckb)`qma@'@ qTYG6KY1%lbC*Zj-ddYHBJ4&Q(SercT6L20Z'&LrmGJ+i(jb&GKI"BXp3@J1X$f1 M(k+M[TTq&3d9IZR-(&CR*X!3RErPc(4rajGQ[APIm#XJie*2qZj+34d8qekQ3Ci ,h-@6h3eI6[pX0i5DV+!m)F#LFkE*r`F!N!-0$4C#G@G)G@jd8h4KFR40BA*VCA) ZBh"`D@pZ!*!'"LN!N"!-d!!!)`#3""B!0!"!9%9B9%0A588"!+cipk@Y9m@S!!! "QJ#3!d)!N!1Y!*!$*EGKEp%!N!B+Xa%!#"c8())BF$$q0MRBcP1bjRRb@Q@PYXY L-LL*N!"q)JC5i8Z*4UP(&eMCdqQ!V+j(qb3%bRQ*E2-GRIEkX3kYG9VImUicUe1 N(fkI%H9#iN#Jp3I4l$Ai1cR*2hRreQ0Gkm5CNJTH2fFNKApCLBGBk!QaRTXp5E2 i"hTF1FjaqQDLF8FXK@M"ZLR5*$eIA'0(SFjp%AmJf0A4*(q29RT*Amb819I#6c9 D8'Z6!&%4k2H#9PaQ'bk%dl!EBDXE"Aa)c1H+6B6#EANf3$K)Z"m!N!-K)3j#G@G )G@jd6'PdC6%Z-3#3&3($!GN#c`0%!*!$!3!!)Ei!N!F@!*!$KJ!!!5$rN!3"!+e AakQY9mI(!*!'508!N!BLHJ#3#VaDPZi!!!: