From 23c11847ac06735217d778e4e78d527ca0d55649 Mon Sep 17 00:00:00 2001 From: "andy@galois.com" Date: Tue, 19 Jun 2007 05:56:54 +0000 Subject: [PATCH] First cut at documentation for HPC option in GHC --- docs/users_guide/flags.xml | 39 ++++++++++++ docs/users_guide/images/Recip.png | Bin 0 -> 72701 bytes docs/users_guide/profiling.xml | 120 +++++++++++++++++++++++++++++++++++++ 3 files changed, 159 insertions(+) create mode 100644 docs/users_guide/images/Recip.png diff --git a/docs/users_guide/flags.xml b/docs/users_guide/flags.xml index d0b0169..0ef478f 100644 --- a/docs/users_guide/flags.xml +++ b/docs/users_guide/flags.xml @@ -1189,6 +1189,39 @@ + Program coverage options + + + + + + + + Flag + Description + Static/Dynamic + Reverse + + + + + + Turn on Haskell program coverage instrumentation + static + + + + + Directory to deposit .mix files during compilation + dynamic + + + + + + + + Haskell pre-processor options @@ -1746,6 +1779,12 @@ - + + Dump after intrumentation for program coverage + dynamic + - + + Dump inlining info dynamic diff --git a/docs/users_guide/images/Recip.png b/docs/users_guide/images/Recip.png new file mode 100644 index 0000000000000000000000000000000000000000..f85846faa0b12d596f00621ecb1903e8837b3c55 GIT binary patch literal 72701 zcmV)wK$O3UP)QqKE|)d#|w@ORUk@h|w4|_SjpDEzv|{kH!*v1q4BgNU;GT zz1Lk}``-KffvAaKi};PdXWuV;$qv)!?wPq~X3ilfih>?Jdi3b|G@<>kE1*Y@9zA;A zAH5LQqeqXPPZ&nse`#rHNl8f`x$Nf6n|pY8eAqk{(z5h?S@UKNbQxYJmL?P8G&-qKsWb$G@oq&>6s03c09v)OvP$-R+f`8`tEjBf zk}tMlNv)=`vO=ZSXmwhuKCPW++Y@Uiv03zIaY!9Sfg;JeJnI8VlA-{rMph+Ps-Kms z)5@x&BDPV8JD3W@IX|krOI5{Qx_Mos3OANHJ7eze7a9zE|%QwecWDNRX9 zk=8W2{Ar8>OGh*4^zYYg2y!=<7>bWvPNa15V?Ql-ZxuLUc>fN)Cp^e51yGn4H=>)r zm#e3_Er-qa%akesgdJZi78{LOeORp_0m!nGTDzGI`Fw)Et1*Lax_rkUwOU=}(|i7| zMqYgR!^}##x-d0%bgy>(hL33F;=Fw4pK^^3I{C?6Yi!KzyibDPe6`?;BU9KC+8PS6kpK_dtPZ`9t9SAXC7*{De=c@@utqy_0A0Ay0cUp;)B`4-Lk z_323G`b0k|c*}N~JNQhVGHp=T4!wqsoHA*&g^{ozJ;sktcl7e}^YU&P*z0aaF{!RT z_4`lzPhCBVjmVA zips7m$?Fy9{_xI~1;=wj!$J?8x;TG`+MHROpB5DzWY4Ti8$4oR z(c>6H>e=#1Waqtm=Y~q1;Alifd0|{-*p@S)4-6cAqhn%?iW1D*j;&P4ADmt)V#?Rf zpVf8Nj+>V*#i!gUxwP>@RNAAs8$Vu2jY@lxm0!4b$s!tb01PahR{VT)%bFk7Zk%#H z{Pt@kZ$pr&abbTR-IrPT;>}%FUL1b$#Fd!)>bJ;>tbZ$U^Y0ombJ(n9+aG15g#;T$ z-OHx2MV)&N3ToM`bN?YDMvUki*osYWcv4ZyW#uoZ(CBmoo$1lC{i+@N53HZGeeu}7 zGgeg8G$zM&@u4>Y`~yVXXIm+jj^1$xzU}+jh!q=mb4+c-0*3(cpST(I zASE&_Dzdy%E-QMvZTs&_4qPjL65Xeb*OvXe+B#dlb%+16-z;7H7Owwh>{rW^pQLY| z+TnWiV;X}S(5X+Cb}a*Y4Hz+E67Z@oQ+R!vZg#Ghc~NRTPBS#ar8fzaGfh;*Cizg8u60& zA_&^(p~Ial3<($x8#C%=PL7Uh0RpD&#*FFRfx}|h*>JU$naM>)vpY1W(+Iwy)u7>h zGRmsT8Cjis_ja(55Cn!yUD89PV-mRb$BtFU?vESQS6)%gWC-7}Rg5X?e;@d*!qUR@ zd611)yGx0=ETOTG^G*Xn&}f9Ct389kcJ}s4rzp@^wvJ9VW@0;g$7aoJUz76M-lhF# zZ+-sp{JrcxKDIUG1=la1+q8C9(AaOr3>|1FU^bkXRF+oOi1>o%Ge4bUa^ULis-nW& zr;k_8{(AksJmA_G5~Sy&dG2uf=Ogs=VOoue*LOR%q}{sY+^fBvqf90*;+Ho>g2~S(N$5p%Yf7 z=5&H0DQHRZdHxKMk&i{i_3%U;NmZBUoH%w;Vk|MXun#?dHM^*a)Tv^_E?tO-*HW6h zw{C_kTRv|1KxaD(Qui!5MUiCPzc*Z)(jD9Qovl}w$kgKJK_yR;hIICux#^%>{hF0{ zU2AkNWlw2IimKBrlO**_-A^#N>>62(POE;H5cBA1VS{<~n6g^-5tX*Yz@krY|qZ}ls5g27=`ORIG{ZN`Ip_a0_F@8fEPoWp5k zKGUP;KSNUqaiOKl;31zmTZ!F#Iu7g+^tK27bX60*T>DR2*RP!ejYhj1mkYqNeXr3i z8Q#rX1T^#LG-!6AOb(i0{^nn!_J&wkTbQ|bt(7<#u;|sfDSmEdCe7Mh|7|gk!|XVH zgHod-0874Ze6O|=i`M*hlZN#0NeMk+ZR~n>=RyIOwXKtyY6d1*LmwiG&+LE=hN%w9g5V} z)X3Rf9*fziE+X#wfn=HM7lYe^qF(<-K#{tdnp!%G!{e}?2db5Fl@Tsf1ACr5J0W8 zQb%VKI+c!Mio}8!Gc`r2R4O`?&1gh5{|->3La73&KJnwyD(7LdhPDInIO^o6m6uK* z+-7Gicw+`{1F6$$v?PngdOi+0_rt&X;pCoO8!g0*&J%j{{1^DoZEQ9MhbIsUUr2BO z1dSmSiC!bYW!Xv7zWjR9*lq^aoik<1#-i2dMi+`iFH3OLty=}Wm!&_4$LGDD1P4IS zn6K29&SZTk2@ZhHV6vM`f&(yjYB6nyM`+yBx{rLZp-8|JiVY161b=(iA_z8z^8q9{ zP+OKeeV{i_V0}4HG9cKiE>K`-zhTiFn-3(x0nq3SHkJHl_un7JT=-`F0ag8d zK}H=-DZw+6W6z&IfAL!6Ywl9M6QovMR9HokAJw{~s$5YVU#675#pRZN8~}Ptbk(cB z8nx@s*cTzB_R0N(8#h8T@=9NdRko$iqtN#$5dct}_2~Th^XD&KFRrYu3n|ZkuwdcJ+|oB(0j(%}wBXz2*(J3vs;1Rw zb)V3Uqj$TIrRRgtR6^X=&98I&Rt7>*3;!VBX0{(qj+f>>ip(f^%|77==W+D8xwEJD znYv4+dfhddk5A2$^2cX$s!JQ*;e46AKOY=zefiR`xa!IeGYGiOvsv5P8i&y7BKNgJ!ohtU$&7|~Pp^*`kwO)b!n%f#?KaQ`YJB0KS z*Il1f%SvuW#Ha|SR#sYGt83XVxMedtjjSXrGDb-=^lfGo84;~v84nuLTL5)TM0i?u zA;A{54eI16LJ;u*<$^^sC&6nl!?5d}>v?9!G}R7He^X6BWPOs#{1gG@v`P-OPw z#9Mdn>6jcbpTRb5-oc3<8j~!sarZQ*N5tKi*t&P{b*;=xkGT7gC$Y7YXe003lh}Cl z?%shfG9NbDf5z-3XO3>SZ2aJmo)1e?3GuRmEC68eEiH|u#c6NvdE#O8xheCum20$a zo<3!14<>CpY|Shk*s+^+&xwJ}1XKHeHEQkAl~a44+_d2H1>1&9o~g>dd**7?+1pQ> z+Zq<6#jjYrArl3%yHh7Ex|tl~XCVD$^NQ0q<4N#+ zeH@Y!D}3|rMebTMWA)Epd^IOK>iD=R7I*GlaO0GY=-oF?XEnZu@1p$&OnS^4*sVjt z%_HBgkNA4du(&h(_TS07y6qeOvr9T}XkKAP{G?IS%jD)mhBUu&?$XY4Nn^UVc<+Uu zBDX3!BuOKuTXq)|hgNELcXSVK;B+9**0AHwV6WuT)FY{X1>Lus;_5fmO<>r-h%+S| zfhC8|eO;kNPZO4Xzny$O53nuw{JzVhVIfY%T=^qH>ANAQ#Y+;F*5mVO&p%Yl$}{hm zjo#MD)ZC$Wm*B5XXVz9L#YQ}U)@}5ZH}*imlccfUZAyDhx%K-N8)IJM5oy80zIbD9 z0IlO^0f$$Hr=gFYiW915fM}uT3eR0ZOykg zv&<4ATU!_jK&sCl+&FO3y3a-q&V3jWlax7S@#Z$|TFJ|Ee_Z?Rji*NO5v?qZg``rp zd+p4{TQ2}Ox$pbnQIn7E-7V2o{j}oC@KV>W#s(e#X`|z3E8bp+SLCHGo--pQD_<bNe=d?aaB%z}|z%d2P=} zOq$Zi|1B$~=U>v4H#TYPfWQuXRL3NzzrA*2@T@iQ*RDLW9l3Age7;Tr4nOkb`q>YsNlm_*k|H~+B8P|N|)w*R!Bx!mCCp>;x4Xyrb4 z-qi37nFkN-wpZ|@Yzugl;O z-4025&ssDlVA`-j6(wa9-fV28F^t++Id#sU{9OEpn?}yPr6^T5mK#B*32jBDenvUh z%k!@0dyIB!P>8<`Vl&5KBZfcM2QWB75tr3)R8om5-_4O3drO23uQ4?>6_?H*>oalb-k%od#hq<8 z=*PNntLB}K96!{#)z@{8rMgBMb@SrrX-oF}G{5Y@^|oDCO#OTWpANoz(2+k5ck!83 z7mdad&sp{>Pp~+y+;#KvaU3?+fJ@WV0t8}j{&7-Fc?J*Z)c$QHH~^P+eK#&mpS>sS z@R9xAR(yq)sLhMry6w({oz0{-rX3EBf=%Qs03;a2PxDk-owTe3BI0>&cJ^-0b|y3io=>JUI!$P5 z@wBR12YfOI!ai}DN{D;;wXu{4OY(Ev{5lxYHGL=mWS;YD`mpTXa>J*T1_v-j@UuDVD2XyM{;M?QK zuJ1&q4r2!Nn>J^7PD)sA^q(=M_S=I4T-c61ytee{*>_^Uw%3jvG8{br>b7Yl6G`zg z=l{f+y~iGCxQ8zV4{K#Iea2TQsZT4?v%7Xr8$4m*!ij@fuROeQSB@XL6h?o{BdP)p zT)ZXD-O{U|QEVgBSwH7z5}p|g>J(La^!)oG;#>FN$Y2U+4--8>H^hu9Vc9C9(?Tt?7}@pSybwYCt7zoIW4-+sM*Wr3^lZFK5tUb4LjBoRm1b{Ub$0k)p_vP z;I93CSURxxfXd)z#)tMEn6mTSx@kS_Y+M)aT=!Y_`3o0r7`W=j_V%m3e{o94>YU1& zE^Y619Xfr@{84pJy+*CbzJK3x$d`Hv{?TZvbK*9R&7Qw?Dx_uUS^2NZ@P^Kb>*8`rB^($K`RU5EB&h60f4yHOGM({pGXelyQjex44LQW|yiHy} zM?}XxFVxhwnV*;Qs|(Pgrzv+IW>a*Yy_F~@r--C;+jj~yY(yQAlM*@QhYQDkS#Hpf zuHaGa{pAU>i&JG3ohdeF$?|I{I>Vxk8HfAcCpxI|q*7Vgvp(nB8k)EWHooSZ_*?M! z&bhw57w*4(xr2M7yM^jn>5XfbvWjGmo~?red|0oUW?n%fufBaNR41_R(AKvxdyS2e zpO$)kK^CZ>*e$DR3 z-6^c7sf)l7O4_y!;IoLzlKkA_DrITfXG1rhiaO!vWPC3!x}dy1n!qriU0VT*Ca)?A z54&BdP#as?2l)H(2zA(%^HmypjZDT88n^ElY-cJ0P@Eal-tDs=u3i|{sYQbo1E}28 zo;#e?N1m z-g4MS<3DMN_5)#R<+@_?VUnU~be@3u$%qn-PA98YQlIjr34+BRKYNwi-3QQ-de!Kw z@Wm!yt=X7gE@SfyeEr*4|2qi|z_Z(!lR-Mc|5SnlAW3b3Khz>c*zn z#3r~~&q0F*_3PEm#;nopay_p?yx-cDLgZE4OMMY=_X;=!*8PePxTMcW!0>M&t@&^{ z>d~X;-_cY;+}Om7O(`=nvS~cAr<>cqKUAmZA1LLJ$?(EYGKI5;a3ku4$hL2eew{%h zP%VZ0B^!a#IT0$&_PkUUCgI0mxcH(+8 z&K|+CWjJsaDjke0;B1BYU%jsHXp001BWNklS^l>mW#N;I?D!}C4pqpdqGPJORfeCKjM@c4Tj)hPRkpNS^L4GCV zWtiFrbTcen1|NGEnBZD+Q;m@xJs*uG)QO9&90UBlXaq{iOWyw4y`DFc9EC5ZR=S2pR!U0D&%}u;NRsnvaM`1UO^Q8pO*HlZ4t#%$fwZ z=9ttA)8^vAc*LaQ=i?|XhMNQO^3k?Cj_-k?0|pI7fe~7{fGfw*Uoq|b7gh$I#3MWx zN6$i}L24y<9ArJhoCz4W4FlWZ_*P6?f{0_VHu`51j4a(l=FEQn7D4BVEDRdh+{;bJ zoUs_b5hpt0)K8ec7~#j^5ricZv2q_a?7_J~AS5s_!nj#T7=`czY&nR^VmKJ!mkqd? ziz~OmuEhLl_{j>(rsMNjxH}SIaoG4fq{VPCZ?ZwsqvvDMghE`J`}ka0UfYgcY@D3$ zrswN)dO`kSD1HJN52FXd)(9iVVsmd)koasA;;zE1Gp3KPf4$NH6uNdno3`+B0Z3?S zkeY|6TbPsv78^V_Ftwnu;o%7hAK(9g0EcG@+xZ|b6;ZK}GzTitZV=2xAVlzM0r5+g zV%*xHzYj(Z0D#uLFmM1W^YNe>>sR3qF~EegHOPjR;)PG+M~@xW023}&phy^5p_wzr&BxR)Agq6Wn>B}t2=mvVOLG8FmLoqCy*eYf9T*C9 z?Tfs8sOf0t0TVGo)}ou&hZqSxdj116l@NFHX(J*O#pN;%llGBKWB;GW+!=;){C)xh z+TizJVcH5NJb(mAB0dpeVMx4<<~`8b5?KWhrQ>M^atl!P1PTV+t0+F}iQiLX+dk zju!2)Yd3a(ixw>rR)C{>U?~9@=-M5jzo1Jn&fSBt7*7*%`UZa9g)@KQ>~;LS2ia0g z`40Xf1hqnomN*dyb7K_eVo3;6Yw_g>jGBvzY5;Kbg&62N1|!=6u5dJgQi^TgCkeB!*%} zLwn!WuGn%AXEwpz4L!$zW(W=oSO3Hh`*H0!dUwH}S3m+4#aJ;1_oN6Jk6|-VR1O*o zlS0tT3B5a^>mc}#$BYT6F2#zuxLbvJU*NOpC}>CtuSd@(M-$%IWOD^PHbY)ptmy+03t^Y5EB_03WK6{-KCZhG{5OgsR`2LI5sLR?~MBN5PYvUAjWo%mZLHnr|* z`g#j+9p5+aBv4p04XpO4je<=-OlZV#DFB@YpyO}$x+$nNV7>FA_)x<}0vgPX#Nl0F zHp8$k?^;R&=ro{cXvF$=9jAa(AE2anhtz^3USGE+fWqbD$e?4!(2rCgsYPN83MwIx zAgJ9tZ^2O{G9KV@Ht0;W=>W;QSRH<2&dIUJt3b;DSTx`l>tmx*;L&}s&ERhPEF}6Y zdhEoxudw72ZtVncp)n!egx>B6mat7gYhOQqJIQMuf9d&{5HJ+O&Pk5ROFO@yb?(*!cJoHWNiEe?{VcXCjlpL1rcdLYNvuB}aY%s`HSY2~rLV zOK_L~g@^YLmjsG|R_)+ni`$W?tVUHOI07hZAhts1*0>joN);$2N~+-QivVAcD&*&* zx&YakpebQ)2`&qi26tlM*A3=Ybr+RTo{!t{U~wQVfrgFVy&(}mt3>oIJkEl|983}h z=4jgn%ztcLQYbA(c_m7<$jk(v4|7uxKy?|y!ci`R*bJRI!myE*okEJRo5(GPu?Z9! z^y~=<7mpHgHw7deo__Fg#oZVbmZL@rItMx>SQ2y(#KXHNsRf}yQ5l??qeC0i6d*DI z=8kX_AvzJ}PVo0cc_~WEQCf@4OmMldGzS5wYH=$J*#$5#M{qEV8gdz;QzJeKMb&8T ziN|+QSdH#|VP}l2G(_HknnH6wwDtlGP}d;*CNhg*WD1oMoqNDch{Ob#d&1cmBtQcy z@(_6!1QRu-P%#kL8BP|c$VFrV_(rfXKx7PzZPBY6bTWj6qNp4^2|5PDObk%SNkw=x zbW9isz%WMN4k*mTt!Pw8A&{V3cbFT3!9mDo*t+6C>}y?LQOJCV+wsr=j?K}o73e@= zHZI?Qxhp12frlfSJ2j9_CBxM)5De&QP^v)pUa&DnN-Q$V(5eke(~(nwR&7z0jkG+d zYM};LfRaG}{unn0bN3=K7DbO?VvT@SpaY}^kzq*70?z=Qy1-I`ni7OYgD!xFEy5ze zkzmk3G`PjCQ6Tar*8hN;_poL+NF_oeL95@SA_&;K!PcySgochtO~taVe_KphC1C@M8I^^XtAxoc5sQkRmLqSKKHq30Tm^Web)O3z0nk)rUAA8j?J z48g>?`0ZzS+Tg%7Xr%aJ@QWv8^mmY{5qIftkImKlpeWop0uv*AzZTzo38oQl+`)Gf z0TKH40}JTc3x<}6zlYg_0U)3=#tj94!`E@|`rmT9kO+!`PLA~pU@F1lEznY+D5S^0 z$p`=j4uUBk8xMoj;^1Zg82LH8-2hF+_coYU}VCfz_2!%BV-|vA|j^#67)UE4S6w9HIVc{6~cf+>r z=ox_C6H!*%K;2Z;SUU@KFScGj-~va(ksJyOKISaO%7x(aar7osHCQ?x93xDbiMHM_ z_QiuNkZK&*2zx7xnhgyFio%m<*mD73%tQow!J{Ld6eB$vEgS$qWB?Br1P;K{LQEeB zp&7oK0}nI!^+Ik1Qlnr7wCswnrU1Z~YeA~9YZ-bD#lgeq>4&-7>#I%T#7^`b5A`d} zdH$1d4FCfBV#;WMj!j2FkvO&IMK4WQ*>FN>9{lYApjUsm7-86V(5SI@0eCiuO2(cA z;929&1Dx0n(9wG!1VE==aA4tVB&xCifW<>_dw_urN1@YT>s;7+VcSj&?*aRE$gM)* zeYA1|0457Qp0IX9PR&27LF#b(9NIO5sT;N*KtTm43d&M+3P6Vr^*@0)cC*nQAa$70 z65Ic5Gy+9kXzW|vR4Z|JPfwasMzZ+?0UKBE(&~7rQg1=!zX-v?XQOd75;1omS3oTX zLxe5AK+FZF1?Efumj@ve-klM169b0g{4Lm-!N35d9DiMejUUVmKr!LYKtvn{kHqm3 zgv>)yGQOXO#h*hX#1}KLCm9ERhaDG8H6kL>X941GVZcC~3WK8s3=9E)#>F>3fK;KT zUWwz}3RA`*ON@>4v0)y{3Q${x$S}x4Pb!tTC&BDfCL8x%;3WiO?&s)J( z!gwk!Uq{GrSjFP&1xSm*qIuXh844yopN=1{V*ep{nZt-c_zjF&hpDrnrJ-2>rcQ$f zpmPzj53v z$wz5j^;p<{8pDIJDFnZ5!tg+>+JX*KAYh?oOB~;b#QW&m9=kT7>m;1Lfgo2@DCtnW;}D4ED}S=1ziXuW0dAWp@FFZ3=P2IKx_mN57{}eHUR*Z z0M>R8vN3NZEWE*}21tN{7NF|Px6nXRP}V?J12qG+a+or~WGSc&Qy6z8K_i^iTTp$H-#WI{+xP*s3JH9!Dt)T#O3 zY?F-y0I@kn4uqHw5C9FRTQq6^7DrqED?taThFT7(3|eEzYQQoCod5}x=0K%^tQ=ed z00csa1z-ab6I2%?|Cwt%h>hW34;w3(xx=av51@4wY3U0N0}z7J004sv3u~D2F=H8Y z#`WK79RTo+Fk%QKFCVq6?_LVfk&sEDRG~%=FrJx-rvdhkaI{682jp@BU_9$*@?|Z) z4j@6$;OP%Z4QeVdD-hnRF>M5nYf$lznf3KsxHN$ItcaI~hDLy(fndDGEjLJjFM@~( z4i5w!bw-2arI1#ln)}Qx`m@$jF9wT72aN!Y1|AO}z~O*xTbLBe*&| z>vLlhc({OIK-7?$i$=$n>(FZgP98=3RtO$~Mc*LM12hI0Z)XXbsvEBN+URa7As!cg z#oEck&C!<4W~mfPt^Rb%e-;8H6Sr^T$#q-_M+(r=?f43sj&4<=+YJIS7Gmdcv;~1K8)LfL4gSQ0<*>;_7Vyb z@R*IOCs3Y($up6fhDseeCSlUI7#9ox=YNA|B&yTVZ9H1L;o31wn}-}Jy0k-&;aK%G z%v>;Y049&d%|WB;Fn|1KIl9!yeI7B z7!!j0EELMnE)5~eF*5j{jiRy8xd%cvp#NYrs#P1@_oAAb_k-4q4nIQmB z+O&rc721Ewas7?Wk4_Tc^N%1(hqy>Q%7l>xBwSP}&^{1i9;%8Eej9QPEbI~B2M!aI z4)^XLH5+UJeEi^O1yFdLi1=ja2-vxxjW-hGQ7(g#31sEqi=nIm-vsPR^jUykR)R%` zlLwrvpOu>wi$|GY^U=Z&&ekZ+L2UAig|)jM3@O}607-+L4f3*~qoGxMn2S+Xh=MXm zb1-xgLStT>%K8V@WeAUeObIg^1hfX9jhb@Yx`pB@7+E4H5Di&Q1OR0wXdM7k1IQ~87LFW)iD}Q`7~3Gg8vs<*xD|%HQix0t)Db2kfI|LLL_|YD!rBgP+d#lZ zdNQID!56{C9Ho`;ZViD3kqIyA@6rNp4GtEC?8k_ThmwMuC)%_G9msry2N}=)Zs~%S zZVh!vHEx7MN5IAoMOn}gaP@(!C7z@pIuRxoAXQ)qVIf9l9z@2_R)OS#twXIAMj{lK zg8)iPVQP!c9l@c4)F3(>X*pnW;O+xI50qphHsx7yLQ{0~Z}^${Hx%a}uHGs#je~Ao z8@#f20qEUe^8d?@lJ&eo146v1$$5-%!x5H@z;5{ISG4%oKG4f@FnJIvct}lwV^93K z8x{s1qN4wr(j1Kc3>V`N&a1l4#idA3gPDu^Z$kf2f!0y`gfQ}f}p|D@PA#K zx4_LCyY>Nq!0?qbntDDR^eb^adi3b|glVdkxU**)2a9JGqP4YUx9%kBn%JuN&7PXUtp3XDFC(A(rUTlc{Ev7RrO2J^ytx}=f6)A z?q!gqMy^oF<<*ZKrIR0W8Lr#Sbr_;q*q>-J(aN>Zr1`>&_ zfBy&hQUHbN@#Fe;FfcR}@{Pa$@rYcbtIW9D+QoqG)NA#!xt1mpk!j$g((0m&yAuX= z6dM|f_{NL39;(&o?S%P1k&&^ZlWS0iHq6%?)_-T{{m0I5v=C11 z?Y(B<>;k1_4`1h5%hols6o5egY0Kgw&YMbOqT?P@TIs6UQwxmSB|S>Jcxd%6-;TZz zl`gPwUbJYXN&c0jLW7fM&;Pb#z9~nwCS*pgxOL*gv`a_U99aDMxrj9VdR&hlJ)ZwwM6MK2N3z*H8ul~l}mp{vKf2)1trrdVZ;`?a{e1q>ZBVNg@h*Nz6c?8YK^Ax1phfm z@&mhU%z2z}{`~p#m&2-RpIN-leH=Z1`H$t*s@EsXON*JmY-^cJ_4mM}^XJc>zZ6Ai^u1C**m!=cq%$Dtfy9Bm%wzoAmH(@l55LZb{7EbPeE%Akb zR#p^kU%p`QfPT@*S#<|ubP8$sjf*nn8w8wAA&U&Z@^Z9nO^L16u7P;QCol4Mm8Ycho=eQ^Cph$H+gGi&9i&0RVA4>?&rR7ms(nqbv-5LABGmPk|MvEG^*dE zO=U9q2diQ|cTVpxFt%vhepG5f#cLx{*A8y)-MjC?4ZqaZwSrXqx@}4CzP(recu4tS zci;8s`6x7%PTbnf)6vQ}^M2gj$5~WU-JH=L+WK9j!e^1kGv}jadFe6tb7rqtUNdJ- z-K0UPs%}K2OqjRQR!pbrU3_Gu#6-j-(}hNcT$YYv2KDGHCTed+CXbo*y`90cX!7cc zg2Ezcc79e?mQ=vEwzg!_X-Zl7&Fk0l%4)=7ftqDJtZ!#F^Q~q+|Drv;+=o(Vs?QR|$6)lIT|KL6nE@$BQ;r#|rw!eJ7gGa;mUMa0S zJ~pma^TK7VskKuxC+k-ySW2f#xf@$8a$B@|;mqZ+brFiQA3QDRd^<9jNv8m4YO8MF zj*`kXmi8{Btf;6$W@POg;OAM9`|wFAYvJgwO#1WO)DP~(RdO8`uUR~E@vXYtYO9LE z!fq9mRh!y42M4tkaU0m0F3(T99sh{M;Yv&LHEiSFy}L>T+yVr3Q9psD$MgRdnj&ZF|2yVZj~6MD3Y_JAV7~%GN{S-pyqYmz#eec@Izof1Mdv<(FA+D;fIJ9HU;R{hZ@O*uok`qfjvyuw0 z>>mI9iLd8REsnf6>Fcf0x6in8%fA>r=w_v8TyOtBj~?c?pBn6CeQ3?McO<>9ts8rA zB9tnYES2_N?E3=9U&*A0OxYiN$Ui$!#6YoV)}2cd^?4$Ay-QCi5Dq7^SX0 z`TNeO2L<&3y1wJ*J3Csx;woNq=I6D;r!Vtu*E%yfPHHfqF1R8uZT-rSs7jxwciI^W zI2wiQY( z?ONxh#8nFW0H`U;`g+{(435`;j&2+0jXTx%>z|fQ7qb89&ZIK`QOLwm8Rde3gW5!0 zJy-m5XvnBe4ZhO}3{4&EEJflsj|B}7iHyxmB=sFc7#NwDNkq`AVf1{OG?hAq!D0Yp zUUr5|LAti^7PH>VdE9Hs%grn-H1YCws{2;Q-Z+t%?|k#dt+0rMAopiWQM%B2_n{+0 z{k@)hG)a!UlvUpT=!t{Jjvg7%rrCE37ukw9G@;dw-w%y!@AurVOyJ=8H%{*oSPV|h z$}KIc@Us>J01c>!+_&!-!^~~|$j+R%Zj{i{b@}SG9%A0n8_{ub36-*^J`(M*(-+(V ze2fG5*ZhlP$7HT#=#5#!88bL=^2)ou285OtOmj0wCU7q*mFjV_I9&*RVJz` z@=u>THEHqA(6Fde2X}Gm!`<5t+P`nNZM|Ddp0VwcjXS!ynY+1rcse`xpRsDzgh4C< zZfyq~`1NP|dh;`?s-m;!PmW!%H7qph^wE8FzI1X@;|^Vn^=#qB7f4!ryZnCOa$%YD z)e1Ye>M~{AXJ0N~arnso>Ej2M6_n}~9(wfrgQi-ElUkBeOA`{4otksK+$@?vhC`*6 zt8@}>eby?q5&{DbtWfpL001BWNklP~xA}>vH{QY#@WHPtF016y3QMF? zP=6N-#IsZ^4$sg)$lw5+Kx4ns#YRQ~D4u5LJJ?w{c?B+BWom24`0K=h)vJE-&VAr( zZ3v(+GbQ@&W4mUpTYB0zru!!V0?sWw?dc4LP{<%_ssONrCN_2sTo=d1KS*4BooIO( zfDj}Fz|6sOR4)@YlTLyDI5AtP(MZcHL8E~n>T`4S_Hp|2B(+-g|6}hgb!Dc<5xq-b#| zZlwg*7$F8kNr(`4zplIQhlF4^5K7X*+xz_Zz}=kPJ!`XP=giEX$z)?FiN;`%NEp05 zr9na)S2D148a86!_GLft`K9X*Ue#id-f0E^062~-6><)PgJC2ZgN~8V*E^+Y>6utr z8kvrsYw2I9!&RSPg#+lYwP_RzgUXSAV#tBu@HeGqHE8&DX)PmOR8(lLXWzL~AdRD| z5LfeCxEL(}fDYG4oA$J@gm2B!0|1|n11!ix2Miu;jFj9<%t>9bx_j5ZQqOJJbnrrS zLi&S+lmFOdy7l;Zzn)_UIiGE7XHvhBdhyjeN7ruHe>Nr|?bfR)XZD(HK607%6CYmPaUyl=in)G%-nZh?nDqLyM}(cJ$?S#;d{ONcm@vg)9&AIz@z~k zBd%PacAt57{|a3b8=Hdf$Bz}fhM?Hdti05lX)zB3`89{m|Fw8*=L!8h5AEH~@7E>q{^cUmKEs29KkP|H?A_hJ zpXBSlGNkA1JaA5FnLlJ`ppS*Y`|WVq*?pV$oezo3&np=-a^$3W3#X5yX`*K}{5NPt zWgl}p7gIg1QX$DqPpc8Ai7NX-Wgn%mbV9Enn{iuKPaS}v2mriFj){8qg08L4CW9QO z1$GUpd6k%wUGn+`g8FpqV#KA%#I>2(c~nfXX#ChdOAk*Q)}bK%S#nl!V>9m#osD^P zLMeF?7M5F9#o*|)Y3FCE$4!d3@v>Yh6$+FH*`sYoPX}`p0bEu-dEfw@?sGT%Fp7ey zH{*iJ!l<}Jg^Bts)(iA&Q}5Ujm1U0`**9?d@81V^ zB7IpjkU}De3VWDSUT0`%gezp)CU!nfCb3VV8>0hRy2gHOyr?9EkPGkKy~Va@&wm3F>3GYO;U=Z!yjgq)EF2U5(+ub$fm8Albl}`9vWF(#b@*MeA>0Q zHqrgC8`Z^`(a&DuDAmGDw=l0rg;LuD_#3Jjv#Zjd$7K~&*8k8kwQJ|;(1Z1a_Q*4y=0eud$%rQYmB&tZ;fx;hyy_Svq(hG)xqpD zWcuIfh4gV)w3TODV;5{st7rABb?#}NAjJF&TL3PTDmjs#R=ITtRV1UchQ&MUgvSA4=14{>MW3@Y%32Rd_ z^W8k$Dd;;}OHO@>keRM-F7(!jd;$OfetB+Y1?uBsUjMVaAS>p15}*t!gW0xiJ06Q7 z7YmYKWVv{IeR2}DuBvFs+%?<&IBaj)e7|3FkqRmkQ!?=Sm>-m6@8qh(QJ)f3lAR`? z>Dj+M{XnQ*BtGYvI~r@VTD)T#{ux>=PMk!lE-!rf@@2I^NmO`_AS~SjE^nMnCe=T&1g>fjJH~OmQ8bw#2n$!gi<_oU-+8bJC9wBByfem$gS?Id zmxu(_HMNSCRQ`NJO=UrHa?+8_OU~X5PfE;?D^)-cIF19Zs;jM$y-_$)+&Z*5Ilty} zw}0=%x{*^ChsGq!KbrrJD5^ z*Tk~V3&NIE=1m#iYx{vSd1aqIgyL6mYquUQD63YgZ~(xSvR7GYagQG^U$yp0Tw;Df zIq|x0N|~g#PSDu5y7Gd<$1d^v zR2AadJ!@7M2^%T|lxD?GojSWxjPQ$JELpO(q*?#~!kW^<2aeT<-sxNY-H5A{b+xsP zMVQ&zCchotY^Kj{Xhh&DoKPvGwYB`WixUt8uEKEu!12#eQIQBMlai8doY}wi=;h?3 z7XqQAVG9Hy7SxHvjddgNkvY$@u<3}NphD}+VUeoZ1K0LFY!_^tL@l5?wQIHgFr_aDJ{bvP5GrPCP zFl^e^lL{3PdVUj^t21`}X}O}|;VH{Wm^v_sN+J!JxFD%i1OT8CUp}zGtxdqhkpnyQ z8lUv4wCTR6ZXVe>Y|PXbCAE!6`MVpE4V_z-iNF^z!!@G-l$o$-_Bx z%8Mr<78qvl-lmO*r(eG@uPTMOxZ?2ct>^DQJG67-nl)>FzjRmH?4<8*W0$O)-v7?g zjok)L`s-elP^$j|+G=*noTkF!)g}FD0Pp^r)R!)9)<491q5$CQws1bgwDo#Oq zbhJRPowH5-Pku$NaoZ82M+_b_Y37b~GdK)NX;$p7zizvE@6p!vt5>i2B{U@u0OCUq zVHh@k{)(9+yYRHM7H>MM0?13aWk6?knXrUj5 zIYvetJh!0PgH5Gi?Tpa@Gk3@o@`Xb?Ry5Qog05p$l%_pls~VC8&D?{IAKE&0%?4Lv z;~zKw(r@<0UGvA1F{E?wPo?QGTEy#-ky5yM{#5UY>m_pe($U>&MM@wbJ^tZOr!sEc ze|Y-Jjpd_Ve%yUl(xmt&@gn-}hrUyZ0T^(bKluz~RBc!F>a~n+i{qi1<}+s8*`e7trC^fM37&M@tr?2nO z5u-*Q}0HHI?(f6ZB5QTO8MkD`Jiuj!&e&0 z7&Uut508M052I3(BQv5Rt7^o$rp|)~4)F5v9x`I|s8PW#raH~vvP>d;`@G2%NAa^p)rFsbf|h6A7x9OzVRISa|j>t|}RB%OL8% zoDk~3Nizp~`Wz2=nD!!8l=8T^Oen4?*|&Yi)NL2*ic^BS_%8o#cTZ27&p(+BZ&58{ z$5n?n4II1RS!UKB>&AvWN`e^9I{>>A!LH zciFRsKRA78(x{D%PGX?qslDdjV_ipamvfHWe!r?8Y$;LgMVact>1WUXYvh z+uG&S?FYKJTiM!L8|i7;+1VMf-^#8+VZ_AQf$lZ{zM$u( zYkLy_LN1p|DMlWy4s-^oW0#I;QJ;0JYCurL&e@hhAzL^&K#?2}%)r#b($qktW$xhc z&SgR{s->}2a>2)|KWg}TY1NT9+04wSthk{0z7#T7*IgBJ<57|dSH|4C^`uNh009l& zQe3IR38LQn4HTZ`_j5b`_VdrD@@>1cv2JjkzuSz&)pkTvZ#+y;s+92$?>^42B>)&S zj+bxuT}Mt`xpH~Wuj_|(ZPRodi|XWth34+vqO&U-7nNo_>)X-ehn;7oijR!M>-VoB zh{i1wN)-?|-q6X0GlG&CR3TreQpi%`pS;X1Q@gExv$yfzqMNf({LQ2OU5Dl?buWd5 z|GZ$DgL#v(&IExIK&W1yGyuQ}LZ!k12%^CS4FG^*B(XrKR4VH#io+wK#Zom@)Y-;% z$M5GgcH{iUMGRTR+V6uG?zj*za?Zn$KZf=SWK%z`vGhUT>ihS42~OZjW&OaMz*PBDK@OO9_b**!!UQbJiJy&jSUp?Q$-n_}X zA0e|D?6*cZcy!3IooB<%9bALDb?@S9RV$GJ0D@vlnM5X&i)t&PA|BTWrS+c{jgvHQ z9V)I=sc?d*zw`tUN+sTK25=QY5DX?yk5qB$%*D94$bGvHyxFl_xO>?|uRde)swAH{ znea~NfC?vYRpb3uf3G4WD!HzPkK?Mmm&q{+8LwByMG_Ic^(Xu_v=Xgo#OVg++Ehhe zVO8^2K`6Rw_V3<3qcaI3uQ+gxoOy29p3Bv_iLO>U`c8hK$ClBlI7eI%&)C`?!jKcKc`PJo`Nl{=@@*2co2P2j!6S1NV0&71an>F8tu032WGjy5*V9v35$luF6*wF?~D5BYg|FBC=BAA0}*azW*f z_JTEASc1%RSMKTC zxHR@dB&dyhbYsxaF=jgI15N;-BrQ}I#k~4X`eC3yViXXQUR+(2vTDlGt(&&QK7YA# z%D5fNm)%Lo20+~Wf?^IVG&a^9G;L{KwXlA5l}wzLn&52zvClybUo)*4Cyt;LGAeI6 z5}>I#aiv@;mMK{*)+a-~`8Cyao)-C|k>e_bOe|F}Sgw>U-wj2nZwy zxlD$VsiZg4286IIckzmy%QkE<(^FqL>kFwVPMJp7@0!-*DW{zAPAL4YrPC93YDGzh2k=_LfKB}}J!w2bX$P3dvx@r(MOG!|Ej!(?%IT3VcU zPZC0*(psb&(z=S}oRv(;1|stYWPeD90&9tO#LNr947#4wKr2!JAHT3Rl_$% zD_%U7mVvX2i>-yp-x#*0Ka042{rdGgk+RqR=+q}6i?^PXe=4x=Ma+%GTTaN{opsDe zh`N6L`t>^z(q_lWd}R>QnhHs?=kz{;qON%Fj_uDg@;`na6{5PZ`**Hizn<_S?{gEP zQp5i|bT*_`{HH|zn;8VLJ&%&5`E8tRG_)SAWyIMA);+rTahY^mw>E)3&Yx??6YpP`J8n?_Ime{0jd*#%i^s1jK6%qr z6r@FFm%kPA0058@`scjyL;8PzSgiQZ=cSPu))qP&=1f?<^9;WU0U!X7i>l8Z*b*E( z{6<*v=ZfiY4K4VYVMB&|7y2~wUw_DzQsMDmm+ZS5{d&RIB9u%hWm##lMYV5YPRa|O zc{%h-%z7vLj8Mt5(_#y2J{FqtFQK|~a_6dD=RTUEpy8jOwc^Beb#=t$1u=0?b*!cS zcDg8nsEv8}5JDk|ejLeg?z?COW!{0>dgGs)7FS2Io!_&e?u4wi>|tcAT#4H_yH;es zC)u=1W zeef`%N}|-);|OuyklvjTSzYM;`}q}hTrOKq)*jZc>lc*)!R1LYkKUW3LI7njmrACa)S_)%y?X|>SM!oG80dlr?<)VJDy?oa(0-yv^l z{|IY}Lqj7!e${f(I7nkvV%p#$ZCO(a;mEetA z);2VEacHXgARc+`*p{0m*UvS2?OIGIxjZK|Iw>0^lWWV1aGG|fuHDS_ID|@(o){aS zl!;?x7jHjr7i$!tG$-v*c(e#dnN(EYu3cAOdqO398Xs@zGmvMbg9D%d3Yn;|pg>ev zm7kl-CCT&*jaW1ap^`m|k2CY??`oinzaDUjYfD2PMU>YHSURRbojU3=vBdbOyfP7; zjOQ1YTD!Il^7BxC8xgA9w1n`O1cE~6Fff{-Yi~anb;0A#C_v*j1N4L|~7E}BAea4B?(9*QlNW7}5lCEpw+t%h;b+OdqlQj7+5h0GXg-$I7{b1`m3Y zlyQ8^qCtZPKYdw902F7$|FUAnh-IgwN>%;V4*fFEKd9T5t*hrR*-}63tjOgkjRV=+W8e=frkD|1N)p#oau2WMuHTl&tcPv_?>piK!`tgaQD+ENkYlKKm{_l8P$VeILAF z({WKlPY6KXoEbrR_V*+E?>_rbDyrHzZ_NA+$8s{BPai&L)1Je>ZCti`^WLMIH=Mlu zsPU4~IXZ^AO%{6+Rpu@nH+b}-jY-MRSInQY@?eNaqIiDyWS8KdRTM^UV#J!mHw0oe zF_(lwbnDX5l`9%qcJbEZrb6~bl?8ts-#>E12n&5qYItG3+9d; zGmA5i-$(cUY3@pHf@J^5plJxOPjstZ^wq- z7&0XIUUa6~X6aGa+B*B}I(IWZ{ML{m!MC4eC?)&@>t}5{8Lp*8yLxojji`oafunCZ zar)RJ`;L_eHKXx=lhzuEBR~L(Q79A&i6lXqTmDL1oWAGWwblEste7$I>b_+oeru@X z5in@>0Xn_YoXGm095dGgM-FuA9Bl9CEO2(5*k$pg0Ub~PzX3B2(&?RNJ*xMnh)Xh$ zT>5L-Zx>d7Kjg;YUxsbX1%Q;e`{6H(mrb)}YEk_?^?%)UZRwQ$I*j-02)6Ata#)8G z=A&0E9qBc$Z{Oe&7!V+_vskdk)`PHgg11|9$(L^CITLy=Sx5j%IRrz8==QkKFok?7AUC zJ9>;-T6*sw%_-Qh^j>^zxm*RLW_(WMy^Qug94-$45DIJZ;*AI(k6-6n6sN@;xlwo} z{MO)(t|peIm(L=hPz3P4J_(@^KYVb*vd@@Hrw^O5 z(ZM}Cr4ed0ObCVK(Sz%zJx5$VcfyQ~4e8Z6Nv;h5fFg;HFP+oFTssU1=;Yea8l`wR zd8F+-P+rbAV*R^{DF10%%ZM8pnh1;Yp2R%kSvUnb>7z(`bKEIPl}d%HSS$_#D1*sF z$W`w=p5!;*4OSij!9AVVE}R}0^WtXA0rK0Xv)&v4sBo1^rDC$!2!b(KOoZGh_{-Ea zG_x{f8qM9}S*m0<;U`f67_hh`DxE{2f7GYXMsNZEjBMOT^){k3X~Q_s(9CUAZv!eB zwQ})Wv385O4)x}hQybPFbjwNcwNxWf_8F)!AON8)N%AlZqILqOHxPk`cBxkH?|q=jR!lThhqyHv<#_ zGFm@I!SOfaUlmhVk3q+1Y~6Q7t=|VH0Rad`c5mOsP};QolZpa3fnX%JcAfRa6qHQ$ z4IKQl{UExe{KT<6_v5qO&mS>hpa8(&u;c=XRQ7)`iTw@JT1K2N6tc`soE#msjLhY- z+E1?l0010g`%yjo7L6bD?0(;?7cQ%$%H!8ZPiSW_<-1wQFQOzx)Nb7~JCB^RZst%j z#vD0y`hmXVyUg9~Yoh}I!s4`PlV>NSJQfyGdi2QZG<^2D>Ai<^4ftvDu*A@QxBvW8 zA(S7#7Cg?cdsoLDyMNn0q>K0cvxm^GOQ)%m4t{d|)P>NPzlyf1Dtyj7io090tyfPU zOYZxkInF+v`*`i>-Mjzf0sarppW*ahaCh%gGWPyib@B@8@5|}ixBuh;9YQajWA>hN zXWz2q@EhBY#cp0cuf3o5^(geU?DF3MW$KL>*nil>#Y6LwjiLJ7mFq_zq*^vn%IZCA zT>XQ)I{v_qKb*Ef`liPm?3)x$pnK^9U#x`#5l%B&jjhxM|$m9t#FFvk36VjU^ z;orZwH<=zZeRwA?cY6g(i$X?TM*cZ-;o7wH=R(vhcF7t-hTeUN{^WywJl!`{LdW zFREgBI=Z%Zm@AexZGrDx|zv-7DeFs(r+H0Raa&p#z8|!UN-a8zG zOz+&S|Ay6r`V6e;?5KO{@QG>rLe`G!@aWRMyF&N*6Z`vmJHG;5Dy5;$MOjg?o*|FJ zVS|Q$kJgJ5M=c#(jCI&bx#VSPN}WWFe^YIoxJ+36@ZP;Lfx^_-P$rX_*t)x#vmb>$ zk-ZKs)H1R4^K?WJz@;^puU>a**UQyP4**n>+DG9}8iNRV#x{OlPAXB&qX+j(>ZB&d zMsk_d$lA@z$%0>=_bBX1wLrqtHS!AxFw#+T3l?W3K2I+oFovZGCojL0z!)97bmXe5 z4Z^R?4-I`%DUfRG8~gbO7-*?iM-x;QgoZ^`@Fm)M#_jzB47Hi5QMXfzg>tb_L6F^i z1H7Cpo2X+50E#{H#&CPD9M{XOsTM#eQlG{=OUWY0G+QSRUk?Xzv%`&rHO1kfk4tNW z94&p{_I?&d+WBeElCq0m|DD{XLq|g%LsVN59{RYXTEN!Q^KIwHR8_<#W>Hye8Ylz` zOpAt83KVSv0`xz4)u}~XR~8-`SzImPY8&{r_cJ%(WhaEkWt8DEiByF+c(iTn;XwYf zDI1lHzjOKQ1j1wQ#s!=PQHf>=B@;@)_7!tugmwpi{jsT{V7R3Emn9QQ*?mWKvjr;G z$H$XJBLl8@nHU$JoT)@9?mq23oUCvO|KXjRd?hB}^JyIY4ndvF^w_nfIZ^ScuRZyQ zjawTh3j@HF=?Sq3FLOyWrn5&ICuti43N|komcbc#V8g6W%3^3}Jv7Na-vrGt z;u_RZni)54+?*eF{n59r9RM^_C|OcfwCKALeODgu<7=mWySVi9-t}{ruftf5ljkp5 zxo|S$KWD{=7ZH~S{c!Bc)swDfpHU)MLyOb8rD!#@5QIQRFl9}Kbt@tw2)>}HzqTIa zz(9okRm*xA+W8(oeYjZC=$S$N22I%NSH0N|?SM|*2M-?Hr$-k9jRxx%gSNH^Q!}W>6>DU5e$v`a z3P~OO>&ckSr6?N`)kpaQE`^_G17ZTnx&LUF)FLd0&5Oaq9Tu*G($}E?Y0n_D=wI!Y zhOeI1vJ9?XzQ)>&oa`)|%5CrKMfwM;2>oZl0SEvbpcaUa)jR)NC;{It7v3W92^e-! zDL$l-eG>^DWmzz39F*|iED;Hyjt>$sh-HA1p;K?*VSp>4wic9crCZ6Rz~@6_jdvUe z{PheYfkUIH+=r-CP*VePCEzM(z8nfJha=ly|9zM=9iooGFTa7D0059w!pL!u@ev_d z4gYys%ZStHG^L~_IVGjIw2s2j;eBD8frd|UTOr^{s;0>V)1)=#lImr0@rNZ}aln_# zYP-qmdcOX*OCfuvk_1X?8<+Hz2{H*a8IYB@G7j*$WY!Eadj>|jiOcK$jj=c`tzJ7n z*e{@CBfsoAD{CTS6PLr8gP`vR{_YJwPwfC54)D0ZV8ZT;02tWVfqnsa+JTl9Ok55% z62KL3`#gBq0GA8)9&qs<+&B&x2Ik%1RVkF_fe#Nb3{E~$v&X_0Fsd79YlDe1SeU}- zIUs0W9%X-ZwTHr^!qOkBAiS8OLS1|v8FA%7SSi2%}*ME87S4hUdkFw!r1S@YeyD_&r?S31fPL zRse+k1rjO*PX?oM2y}mccZ3X19f2GaLSvyI3dXI3VFQ8QygOeefz&J*YY%{csS(ui zK`93Sps=8OH<)@9=1c}#gU>u!8vYx!mJv^W7E2=BIdqa-siLD2fo34l%IG5`8w8nw zQOA;LO{L=DK%7&E&%QO#{vMZZg}vL4-fvtob=eMIZx^)@ei9L6=7Wtz!%rF)x($Ze3*qVs04i+W2c3KXZ~$ZI z)fu$qV50;8sLF+63XB~L&bB}s2g`N=W&|DD!-HJ7_ZX__V8I0MK=?4bRxX8#LTKXy z{=QJj1M{_DZ3&HmD@p|r2sDu$3}hNunm~Rj0DwRMWGW!9LuE|Op{x)@LI8~s*PxEp zGUB*g_&h$&+}71cSHCC0QV9tQrRBuQcAqx0X-= zr~r8+`rGeVt~&dyjgagR^ny~R1NaGC*%_s=TTb4n`Cv@FpLbqbw&jgOod+cp-K*XF=Xd}n3-k8Cn%U|- zm`oOU^?(Zp!G#A$PC+|2FnIlv5b=S<1)4_3SVI%EmJxSr-__Af8-OS;$clcJ*4zqM z8vZVSDMSZw96)|uF5gLJe@CLIHL+}U23o5b+ovPgLNa}(LflU-3q;A&njY`BG6;*! zZDzC+hX*eH5c34OdjJMN;2^7k?*;(?Fb!bOA>g3!AOtGv;QTq@;ZPxhtM{SnYB+om z=Ffwj%fZSOj_n60ODL=beSp5B!LR_%Jpo%obv+}&xY1B3tonGWAA{)~9-7Qv@KD3w4EfFOWj002D( z{;drmFmg5k`u3<_ogYWTf18#v;;5FMfsr2PReFZ>^%KL^F)}yOk&9}xbBl0|Q~ZlS zxKxDFblUyjK$KZ^dwzP46YbbKYDzPz2Pf(>YK7Gbjt!4(@Rd)rX#wcLN4uKcke8p;~Lt{1jEl%Kh7hYWJ6MAp#Kn8os?ZDj55BE-4^Dx02eAhhEsfc=K`5H<2#< zPth_X@t28lB1>y0E2G!rZPdxd0aHoC9)?+Z_*od+nsCw!>NGC$Rz&c!sv=L!vfx3T zup(Qi?O|x>%x>zhA@vHj}B7`c;Ku=pK$KBfdS?jYCp2Zrv_OjJAsBflJ zhzkn}L^U-9xw-mug|5C4n?Y46WbqOAlQN6wYz~e?kA8y{(P;QLW0^ z%_%D(x}aL#rEfo5LtbHaN?6o0sSySDMaOQvtFq$r zs^z|I{Yx`qi)xj={z3X|Qo@r*1vN@1H9$Ow(c?g&2X6P_>A&wSkqczvY}~D* z0bQSI*})(-OrR8hiL&$Gq+Tfb=98?~3-HcEXWH9Yeelu&cq5d&xn3w)R$H=V*|b+= z|8f1@kMG#hakhD&r!^orR+W6>_(fZN$;xB*BQ71#$I54p8Sx-bHL|zgjZ>5D2Q3@l zjyHSW65F0L_h@OOMCFb(v%(9ge}vq8--zS#8^^Z}oW42uyDTFv8Jxhmo5Sh(15qN0;)%F^>na_-y-N!8(c`**O=e_xwPTwD0# z#F57yXM0-n9>>0%xS(787Ly{bui3djXwE1Rk{&xF5b2e;U%`Hq_ zcPiF1pl7p7JdCw(IsIJg>4#(71s=EHtN8_n5h4*Oib7UF^3n zoUr0l)c6TwGNW%N)al%J4|sa{z>>cT@Beu&{?C0&ua<`13ejWGqi>yDvhlPCFjr6a zoP^Y^ArI}1bs5^Gljlrdv19+>p8lq6&6FNMt4(ZTC<=0=3gDlfQ~J+hJiy*9sVu94 z)%6z-29+Q%tSPswyo8^2t=RF$4pasT08~AuWq;GgzakVeS)EJ^uEKEzN}?hFfFS?c zMg1b7WCQ?(M>o!JsnWK6#&q_zX=ulE-*x=3nJmet$9AbqlArzf?1S3dakqQ6u^ZpZ z*SGKHC9}^hnl+qn>i6d#Yiel${RWJ%!#oDGb9irea$)V`@SEdi|GaWyM*_FqnJ25A_c^P||v0_ARI=R~* z0OJ>|Ls9frPD3+e=WbakVg1_9-gfJcw$7$(E)M_*1VC2s$I;`xdju|+KE~9bxg|(R zG}e@5zr}=HG@JIv>e(X+shCW~PHvm8GB>rcFk+*;4pwDXEKFzwEr)(pb@WEZv_AVTqKqeJY5|ciW=(bAP7hVpYYacXc6>Wwdow} z<0T_YBXgz3hNkWfqI3iSDE7uGBTWeHQkXQFFJgpx^A zc89LRt%BI{vh1Trwx(9d4sBZv1Pa=Ex^xPK%+;^=PM|1Iu=+b$rBVO@LgP4C*#CI? zu&#nHBjttiYiDm6{^65@VHkzU5z2*fg_Q&;is$;rv6#vJgFU>)i69|+vvF1d|I4^X3VncZ}4nod~pb);t{{yQ4b33Uzn`^ z5}{Gf*+Y9W3LgBndk;sE@v`E>xX@0>r@XXAJ%OkTf!!TSbGc71q8T9heZ ze%xt`&`1>YT}>bq$ZQ6JG#v$C>eyyvJLQDnAwk||7cSjo>c)>5+s#t^V%oelFJC^Z zBTTZNUYfdmYp`Fyx=C#(4d^%t0073$8vp>WVsB2Jv+`xevl^9gP~w#-OSgR2(+5Fm zJT!Ue=;3Cnsw}Ew-ZVa{J!X`+ga=aQLu`Dg2ug#~rY<-M06DuS0!! zB~eyX!qsJSc^Y-*23jOzlVtDWOn-el)|3|HmsJBGmJY7QI&76foR*Tzm#FcdYBDyP z%_lN8Hx{mnj(=EJ*)TTIa?t0Qs`q2or4)y5$m_P>m&yI?_qR$cF9YEIobvkTvS;rfg6o-dBF0B!28(Ri-^ye|Dg3A0Gx5M27doTsL5h3%(n3<5CG-%PgR+eQemHS}6_yD2dXheV{&%1^_C#WXF%gqZFM_|F)3cLUEkm zIvSzmZ-P%7@eD;uv$jMKxRO9ysJ#1EZp1;2Q1U-Pdf1g2OMVKA%?;}R-J$&(?M#|e zoTg>LAD-SneZvt$hB7ifZNne8mX7WACEra7QSC3&`Z#>IcWgJW7VG2Rfyj!z-f8@= zA-6AiS?c|(J^6~zOz(ah;3{aDI*{fW6g0 z-8yvtb-j^7No=xoXyfJbg_oSn+bAm zV5l!F$&P&X;vWb}dw6zpkI_qi|1)~>pmzU%Lrn_xV`E7l_P?OJu0ex_uYs2FjcOSf zG8r@yiQJg@M`7`_cx)P-iefGAu^|Wo$8q9y{1&dlaU6GU8`R#;7)1$wO^rnUrv5E~ ztLkcNg<>i3W(kht1OSKxbpo-Zu^GR%R`6Cc4H`6P`1)xXBc2=`nwnGew)qoRB~oZg zGicDD;oG1E^EE#7VYHH00~;`YwzUy^dLNICKg}za8u#?Fox5hUqcIB*7%*c^T*P(# zx|k<%>4dUw-Ms0=y8el288=U@KeTkrji^kPk?r#3YxRomB$n_l{dN7=-X;1p*~SI4 z3%I@sFEVbO*?3~bxR8hp&3Igc1`Xc?E$r*~XPnVCKK=pLrum6+7tfw7Cv&T66(c%# zY5qq(=Y^MYuVdcWM${8TCk)zNz1>D?acM77c5===lS1ra*%Cy#$|=+MK!gV=`XXL zh|-$cjP#ePz79SndMuBi^^2!bq*V`YgcukZh^x!u7I*|bej-TV=GH4%@rodG~ zp$It;1p%|N^z9!sz%~;K8ra^-S4PO)gLN!qh z8Z>Co&{DLN5l6N3jGUbvXm9eu5q)EGXBQVcYcuTIbWaetih!>o)KDoGrzbyso}Tlj zdDTEb=c5RPMebrKZ z)1cwMKx+vlJ9-BO1+;TJRZ$7KrsHnO_%pQaADm(VIQuNiT7#?Sb|h;t4v}P@5$YK^s5M%;e`n;B@eI zNO&42M%h6D?U^)EZE4P<@aQ^`RNL58eRFgrPt@&=olHEz1QXkKGO=yjwr$(CZFAyG zY}|LTL=ZT0;MMY6nQ#p8d@95x=W<>+0ji)*T zKu?{k?u2x8<@j1pNjA9nm}cpaBBmi^WhKlenDhSNY*Rb=!xK|=BzbOOQAXV&r8dFZ za=uF8Cu8b*&R1f&z4I>tg;V(R4^)2A5VyOQ3RNj#!$*RJ>Nesf_b+B%0fcX34N-Ee z9bv5#H~{BzoNzyya|G$~2PkD@jt!TW&*CjPX)riIoq1Az_cr$NL~E|R;|Vu`O> zs>~Gg9`NNW{jMuk`rYX0uzzeCt>fA^*qy#KRnYB4ov+8epuV-WvO zVQ-j?``O1ehK7Z!1b3GMv1qIAvkM|L!0!xbQwB?GPg(Rin@P_&Tlaaq5T6$fK>>mV>KdA-=Zvtrwq-3X1@w|#O`f7WhJzrRU@F4B2@(hJtcxRs zpMEu@qjVcLI=soZb7?Z*BY%{xDIXzB3Nv^AI4}V^|qF zo@K7Pb7){PAxu(BIW@ZlD&5l z&SiVLhDpl(8Om{HU4#ID4@XI5c)=h`h@UJH@mcd7A8iWf>U2C={TXWC#CXGw$3*zn z)?fezQjbwk%sJlImAB@F%d^2+eB$SFnuH}SIGu4CygDel zI97^1XSbZahmDzej1sM@u zl`fJJ#aab=3}rt70r|FFWYFo$bL)?xQ0XY)Spp?2_bW`fp`yksB%3^EMU_U#g;Jfg zceghKK4~7VwvESC>F7k*JsV*1fv2CP|-|kw8$~&KRIXZx@56Z*QOe%{^H%MsZM^Bh~KV)NJx?$4Y4Ca~i#`XAiZ>#ntGlwh+z?f?6afeXQ}*!t(n zTyBKqeopt!*%_uX>`jVG>DYlmx{xVUk$!Ec<#1+E(X%p32C{ zaxW7w@&%^B0M=eS&FN?;ccced<9R^PK)sk0v%EY23UqL*P2)$A`7vM3P9(Y(CxW+U zSk=G}K+yQvk}18qEEHhUs(TvmdulRHQ;EX3=QWDojvruo0v=ju3nbmX;hrCbj*Rd% zx800>cxy}J)c6=zg(zOVZCtent<$R^cVVU8f zLH+uYA9GcpLr0D0%PCofG*wF*$aO0g7LN%4V;8xuPtF4(F=>ejsvFaDAb>HcUy6>B zh*KWBYdmi@F~s&(fhY_B5I-;&>lWD{fZT1AlNnk5?({fUdXaSWMwHO!T+;;c`#ev3 z%sQyUPp$68!~&~oE1DhS3H51iaQR8^bW>HXXzNVhNkh+63(W*S{6b$St{uG=3Prr! z-nu$#pYM-!UBfm58^dCL+he)E{*3KzjEdcRdwa26qQP-xGx$NsZ|4eqRXhtiOhF?| zIlEWP9-Q)9I0B=zO)`#{-w#?mtaIJO+tnlo6NYe>7+h@a&iCkj7sB&-I-AM0!SpK2 z^Wf$z)OBz<7yjHNrNenU+`#@~r}4cvht+JWY4^?9_u+iqcR4KG6QP~;;$PtVw^qkJ zkgPm3kuK=kvBbUI)Q87Nb6S?mV^5+_bsxf3;V`MfYq!(CFRD&D-Bo0InSn(Fqs>Y_09IOclu@8kX=pBHOh!GW~8 z&D!9YTTYw?tM|y5F%%g*>~FvK;}%z(_H+FK65I2PYE;1M!BzDnit#X1t)EK`UBvI4 zH|MXe{f0Qj%&If%^zy(ks`vMp6}QtEh=JXNT{&7 zzKPk3qIU4#5USJJ^6GrQQd+tWr&|M;_pFu7!2i0d&r_@wsm2yjn&+iVJa22%CGCOW}-<*-(ZQo1QN`)|p&huN&qV z;xewt%w$aT2>2z zl@XG%_UBOSrjfpzEw3{DXY`>ho;mA3&$m-gGdg_xJTo2?F1ci#Cd4J>e_#pzEPY_3_O<$ejk?a z4Z1=LzE;{+gyppYU9idmZ+j3-uDHGA%y(+dhtKu>)jz2qzy_iEL#u~ChJ-f=Co?@( zaFo3k#$jtVdP?UK028goP;8!x*&^Z%FQ7IwElF#C#XVCrMywYnyGtH#xe6%gdQjt6 zYNYf0o|o>rKs3CcRmvKDsc;Hi%S|d3Q#KJ{C=|^=2D;TNO|DuHsPVwSg!XUxsct>^ zNqIdS-HB4)on%Bit+49$&2HJGS-*21@JxvBJ(+cRii+ zyx9R3gnO)LE}2Bx0QT^Z7x|HE=r~y%6TtyF14UrI>m% zm=A5HWmTkfHJOslY%ZK^;ZA&Q^JDs)o5++`fQWW=Sz-zN2)dt5`WVNOiD2iuJJ+2! zu(gAd^6|1C`k*1Hb?L1CCJP{d9tD8`>XZL^naNX~5E2?R8XtkyB{0O>k{y3drHkAB zMvqn|U!B}YkgZHi_^0-Jumle;8qEdY_1dV_AFcw*ERqJd^j1W>mkqvmIR1*=o@oKeI0oLc)W z8`-pueBNwVw3f4&6x$`U)67zGh(|&hJDs#K!Hgsm4t|Z!Q&_bBaA-5$tRcWetsrx#h<+VhX>I2He94&R}l_LW|sV#b7k9IK>`!6HW6*8p2mAGX%;Vl+TG?Pm8C z7ZY5icp_ zjMdHUgv$-X)xFv*YUyGOYof-;d&OKCoYjfhF*Qn7?K+cIpjNle>vE0rRSU+5NC+;f zPG4IwR=q4#ll?8$o3zH{{+B?^)?hDfyrmJ=OhBO3YK(R&ZO*ZYwT0Q%o4f}|-xcc( zk7flv@R;WNN@`hD2R$hMj%Cg=O{Jp%83mt z1!wcHo6Vj?BB4;mP|l1#D-yB<_%pbLs5RmzA%?d0DZv^Fg$=2><`oc4)B+_bB7>|w z>6j(r?I1&X=fZ*$5UjN|T48@Ugf$d=gv?}u5{vS7ywdk*mbRdO1@ERJPNsD_{B7Y= zrOmP&tAt2z=!{ELn%vlSK|+4gl9)ozIS`E;TFFj8xBBBo(* zNbj-o1Asy`%1{{U4{8=Rd1>m^JlTA5G)TO3RcQKT^SLxF2Fh=B%9!Uk>Wx{uXhKfV zw$~FlDx1mJoZSD%#F}6p$!dZz{!Lrg%|?nC+DM0(Ev$>A)f8oZO$>Un=zYR=CFquQP{^WNAGEtSRh zNr*!Lpv7DcwRE!kz{J`b{=t+(V?J#2gxMS+IG}B@{u7Cr$>mk9K2!54tJ@u?UREUx z2^kVngbYWLYCM!pF=;hlp4nZwUKm8(kRRwBG2sxo=>No;EYAQVdsR+MG=g+(J3!0R z<}Ew?7rKVM&X|geXurbom~=>CFHa|1Bh7I`v#q18g9X`f75vYXW>W(jYq+Ln8 z$Diq#^(+d-l8i7ao~Msaqzktf2fJq(04Kt`!@`aYh874QqvU~;r~k-qg@q4|Lol#p zsw?W{DpGa&xseq-k4ijxYP{$3;Ix!MUkgtvqs8!i@%3~jaWRHS1jj*Ym>z6$l6hKsOXMSN_>;Oo44dMSpx;Q=PV!oH+@z^d>8Qd1)hA*Mr z;k&%nT{=*q(WB8#m6zVRqs&7~M=2o|gU#usn48118O73@{oZZx6jg-_>ir3itZ^GZ zh3b6G<@8cV1Y}rI9Ocb^Ts>%+%B%wjNrv+C@d<5|pOlbOh>LkJ*3DG-bbEMc%4y2l z81i%H0yZ55if)>s!?S*<&3^{0RW`f*q-1rlwDxlDICw4z}^j}Gx;6P&meGRS-V}GILDU;v`QFa$$1WFre6Es8t0Ozjv)7EOfH9J0>NU7yt=mxJ%+whS?961*4|gE&;A7))57gemg>XCK`(!s!!Px!Jiner) zVV>_irEdIPf&nU%A#LZ;`Z#Odr~AyX^P<(PSH1s^ElOk*d^PSyZIIUK52NRsTE*bA ztfB>KPgI|WeX=>(-{VRUNP^esooz2~ZZ}0sL?Vcn%pZ>ap0%NsoOUp?9?A#%WDK(S z$>nf(L0eSL_P6#d%?=N3KF=1ZPt)<3vWMl4KuR)hYpo9iaG@hQ+^u4F8Nr9@QVs(F zgq};|V7DBQVhnL{F{!`+k#gLUgyl|iG-G5WJoGWNcqF0My8wVMpS^YX40OvM0;S}# z2Q&oMevAn1Us|rXZEo$Fp`lekadzGna3b)ZFp^-QApOuUk{{@C5b=t@9Bm+A=d z+vhU82Ea*qVUr)RfI;g0b-3Z)tChu`w{-F+f_M=dA(pPJF41gJqOP5@If9rS(m-DL zj6~Vzqi=^dw~CvkLvw24rX!D{T?;XQ3InbZh2xZ&vRH%;CA^((Y1yM&rI18eP=E7p zP6D0|9=*|53+H|KGQL8se1)??eA*-F^6zGa{v){d=ClNzs1oIhrr-5x+Sbg#eoE#q zg2=rs3$f8VWVCcrnLIvWqhrdt(dW0n>A;JX$i)JPFksY_6{Y4myK@E)QTU5<*%69C zi9zbi7|GHkU|69n(AmAhz{_q>>BM}v3$DYkfO1~v3soieO!Un3(P?aAg$b!iDXb;A zEXRebRBLefq1@FDS0>`{Ma~v>fQ8GzUZ?AS?awzeozd?lzL>q7N@$T&7~y}EQ*3hh zhxQ$YAr;F1C_NgIxrHPiRb6jSpKEuK!=w!HQ^t1{WVd_e=P&qa(qx1T?uHB7&hF#^ zGa=Wyb=H<~reJ1v04v08{@?C}kWd6a!q1m>04umT{{BIqXJ)u~x)$Ws+JS7aC`_Z* zs-GV_Bd=8fm^iWElEe)3Kj73COVbG2lCirgAb!KZ50!O5=R(6rM9tR1~$i13}QOsVy z_WvuqlFw%E%Arucomxs3pBlA&^6n3!X&(1FN4-gPCRQD%_ zt8(3Up3u;yJ|D^8V}Cnhyz1 zong|AQU5po<(++$H`?Zp5G)uN*xu-PUXG$0AMFDp-=O)XlW={TP8zPR^7ex^UUm=IMu2s*j_B*o34+K zF0JbMe-1wj{~JNbaF(Aogjr15-9W;9_*+-dA^~OoVRDP~zjOPu^b*`Wx9V@(n&#G4 zN=AWEGymO+9FdeBDDeCs)Z}*tifS^t2(KjRwo#vaGP*FYq=z9JB+!ZbW=AlTsc&+1 zc5YzXv!v7M)s@E?9-3}$Pn8Uoln`-n(o&GwBw|J@XVBmG@p1FLb{)XPDlQbdR(o$| zMelJaKCMUMUA6n3-V*-Z-U%BYS6sB)pN+bjj=N zo}B8L3vLVV1a#9eF|yT3(Np*4Yf_XI9N~g%jivOi4$QVgoSX3Q-<$}ID5j08jO`gS z-s)$PR(gH^$`cY2f$bhv;+zjnIG!0Hqd@E|xgpX**j>E5N<)h8fm7PvK3t?!*^)AH z;UDwmO4HPwa^g!@#ejJS>N&=caj(K#WQnhTtI^un1XwVpbHLW|*41Xuiwam0ARJWw5AtZWP{Gxdtso#o8DOQW(fp}MO|skof7 zzOeW4_z5cfwKhuRd?Esl_Db9LY5M+6vXXW>i=ksCL-)D#0Bv!zv5T3Gk@D{3X|eay zosg1Ir+i6eTtv}9y<9XAZ_=iv@EF z>eSS{*7eG#pzNBPGJhn7gTyExt~{BKLw0y)m!|`Oc;`0<~j(#QP5FdhyMYU}Z z=6!xZG)_jrlU8q*l9&V7zO{_a%s5?!L8@aw`6(S*tF+xeTsD@RCot)By6zvUBX9w& zu{A6S8Byv_p&F{?n+|(}d}s5lZUj*znb*d_~ zEzb6G9tTIfFtU{u7L_v4zlYm)EuXR%7jl?Kip}5uCYC-~W76Lg-X@a8(4*b%4@`43 zu1b4pg1^1Cp0aUL^kykw014iXZVsWiSgSR<+-{c&Qy1ReGWx z6;rQMD$mJPrR`vRo_Rkr+SOIPTAraZxZN%6N>x5ZqqDiqlggEnJ|05YGB2;zf6p%0 zD#sGeG)Ry;|MmZc^OOs>+GsqLKoZ%C`y#2skPA*%=iM43@MW7kA**N5`nJrIQ?e%h z=`pGMV(%!$Ym$hI z*Yyz(S?$GohyLG$VH{U{n)$9%aiCA7|4)t8K3PMuZZ%K;dZ|k2+~o0t1Ba7syVKDc znS|$+zLK7b`hBB;iO?RIu=G1jE;J-qy9=+wN^7U8cs+@ek>f~bd*-O-$8#4AMi-pql(iA&2D1RyPy+aOP9YL9dt5}28 z;>S#<@7Kg5944Mf@R6>X=hfDINp?W*OWFBHuFDV^U+%0FDqgmF=Yo>eO7niGOUcoA zMTU{EJKHpV=TE%C`EGUBSvnm$Zq4U6hqXAm)Gw6GkB@toy?5Dpbx`xxoO^)CFg(A_2SGdG`3(qs*B@e|U!^(Rpe-D@m zSX~$aeOs>c!Na37FX_7Ik2l_@*6_H$v0s>1#kWJWZoP5P>U;FhoH8HhV1Dgk9oe3O?2l$35F-2B%gVm6ywoSCuuBz~yP! zlcro<99vmZ**n`jJUrIaGnBlAe*96c!R)SLXIyS_^u%Y4{DHHMh__nXR)Qu>fkBi%;xbZJ%6?scAaVe<2Cz#yRVK-(MISxnjOd z&IimzSd?XJ*uW#D+uYe5Ik=Zic=O2X+MZ-+pO!{qWTx@(@M2n09(CO(92HBUJe9(^ z&dwKyB@#-UVB+&Ddp<2DPKWqrHh=yr|7t&i!HBfGciMGypWe~|UWL6SW*U*z1TjVi zc$Mj=rDpE;pFersu*Jer!3BPR>!ft1{!CZ43Qo_!R@A8O*+R}lv)dWljT!)&*n>e| z+!m(RCPy=e-HYH26q3AN_t$`xk*o;=o*vhV&C<#UiSdX8yp50Z6opzSIsN9vM08;` zDw6$(*EuGJ zuM;an(co&iw(wV~l8gf!{q;uYGy7G|FItYT!|~pep+Pv472#}4O0ZKpLIN88!Ic@K z&MKhgyGv@wc%F0Wz~<8Da#bMl*Dr3v?z9PtnXt2k=JWj_K|sMK9G8@~_v@hd`EiRGS6Sf04NRH=hA$@k^; z^4GicA|S03Vrs-V)QZO4#eH)LHKka`rSW|-vzcDXvEBJ%j@0B|3|J`AuVqgY`x@KU zdPxjl-F-7||FGwZ=Lk!^S{yi(ks3KHK!>l;bGK_m&}q9!@d?QIu=V|DeG z+UceHNjZjfND^3IKz&VrJ)3Lf;Y^BeXU+x9bG(!$xAmKDI`6ObY-opi#EZ4_!utJG zsYw^>Mc+B3$Za2N;DP{P*K^~@lB3+PQwD3PM!NoqK3u)h-H6Y-|7LF^G0P}RVU;XY zD05C4;vXP|26$wL?ASR|vJCHqS!g#X3!XI*Pwg$LPsEpqwQKbs!ECW>Ajl=f6t&fI zLML$2^zX7N9nmS2F3y9;j#{Ht0@Pc~?y5i{ms*?}+(HW}x@ANIMr&ztoXw9Li1)YV zLm^qx;;zAqmrunqMvobm&_ceIvF%$$D;37ajhfAGuqh@0Psj_g5;h^NT@yo`|qQ@siQk=dRL;%iG8*N zNGN_g>PxAkSRDHUiw7>;sXe>bMHcqzt!|6mv(MII$mru09bGkC+T6Jv`0x3TV_1^& zM-L#GAL9FE3pmypLc8lBx6gTaVaMCT%i~(rA;Vf2B=3gPBCcOQAxo(v& zrSdGS)7^C8oG-WOdoQq+L6?DFJK=M9jMYY`NArul+Mpz67pzFXOY!$$&8XOAz&fXD zGqm)t&kY(O+wC#xxJCONOSAF2n&6;wHEwTpo%jfgxf)G=RL=l@owG(9SG;m(531u5 zZBEELb!uhv{zWR)2Faum5fqwj2c_?6T-JDu=enRv?$TKO;!>jOnQ^gH3guPvataDk z1w%L{A{f7>7g1rmw0TvDF1H|gPGhyP>SJ>b@a;V5(P*FvZGlKJs7K?7jS#DYzYJ=Chgj#=Lp6KS8R$Y~E)Vy5 z$onI#0%K}$y0d@!@yr6JYtf^(i5yFcgKyTCHjTym2fKoN=sY;Vx{5~N-;{=nRYfA7 z&(9pyf~pyM4fX!D+L28+oi*1XBcJ|F3RKK3pQqXIsO#C{-o9#WTfRc;L^3J0df$0f z!|6*6?vK$lp>;kauFp{t?+JZxPKT9?i({lzTCIn)E7gCUg?@ue=wt}^XkOpuORHFe zy$~i=D~(_Gx7-*GsJ~NaG=2&^(Vi{Jj~NF75rPL3SX3>tX|KX--F&06Er{M;F>ZKo ze@|v47h48HJhH#f_i7{=h&mU3cqSzN;MISaG)R7|%jd=X>Ztn^Tu8H#w#+O%C-aeI zINv533k2>K*aA8F501NmDZ6j>-^^5^U7t4$z$Z2vF{SI(^D?&Ty<9Nr@(5Dh?fkWa zbnY6R$w*6jrf(6l(<&rdy(;Wz>SeXVRw7Gv9zBsFvx)Ze#0H{ovG&o=ro}TR%kpc} z^!Jr#m*HvoLobTKH+9Mj&i%vPSfnr*YqMNwDz`=|zv}S)P0(fPYtct?(tQ;rA&50w zUAU&D{=ynrFig;l)kK=~Dl2}cIx~~EtN0eWMroUygKP5vjnb%qA_j{+#)q{EH0$#8 z-_^AN0M>UEF!o3IV|aM8U)N3@5EB_i?|N&#y74^_{r+f=&Q@p3d7WvF33Lg@~e?XJVRig#rA#=NeDRmHZ)}(LY zQcyqjl#Q~ALQC=aUe!kCf-UcJ!PziSGmQ9O#O!(ASFSZCOs7nbg1v&W&Rsr}Y47IC z@t*o%vU={*>HPV4^-V1w7Dv^mPACIhFCNy7eXq~(t1z>LT6yychu5D}ZamIV?N>72n?+`Ef4f+inW=^Y3LrFNtJ@~t zC!NZoq3oD?H_yz~oj+|nz6s#%a4?N5jgDvJLk9oiYzVEyU+}!BO5tTiHzjBj`IW); zxu+2zQH*ZCJ;?N@@AhMi=T*z;n8sRdwf)$n_{*+ z&maCX(uB6Or?F4kjRwH*|z9$h)r_~`G*nV`VZiS;4}eZ3bw zGipqsh$Ty7;nP))8AT>`TZijPL~;4MhTp*ol}Z!LoY`>`L@U%{?0IH>q>st#_IM!L zm^E5_1+wQimZPIku~AfVUAO@gKKVB4BBUY)c&cXP3`|TE)8cgUW);q!_Ltxw0eK*^ zc@#XtDmF+7e#Jv^gP0QT1DvcTl^s}i!qh64wFgNuB@0;4KtYTjaz!0lLMa90yga3K zFTp-W>YZ**mmA|^zui`)YnD-i^v1M$&N9m)BRx zl@Q_dwMpXKy?SA2_8kI2ZFvH9;i=#Jevn}nG}Hxq45F444Ou1>av2q~r(fCKg4oQ^ z7^SeRIAubisAy_>%MVE=dM`8cYQYIij168HP4H$%M2xMf6tLShG7fjAekoJzr>BQG zn{Q55Bs9AmaL*5Cd_|$5{W(HprZqf9L&DN-PB#hG32V;$fWU^Ve z#BVj+iOY?q2FJThDYE#}VB7qYnNP1npO$}~2XpY+6Ia%S*&Z9QkmFsAv9ff!6F8AF zTfE-#>cIj_eHa*d&P+x=_w^xUGCP}m>}Iw$Yx{adtwOZf z-CoAC_y1a!@1?xcZ8J@4Zg;A}rK%=a_WBv_n2>bGXVokwaP#6cSv;yHVp?tVS`5E& zvAI58&KDjkJ{LT=jY3u)%V(Ee%aY%y{-@8zu9aJTqCVxIf^BXC!e;>#J`R zXB`>hdTHsfMTxy}_AV7j(e$ui)l_M%d8AvP6s$PfH|U&a4nB1cxkIUGiC_B{p3gTD z@K|hJv@hfH(5f^z>=mefcD1xODjPlgU(W(^&+UikJp~CnDJgjKC5*b-^cW26$x=guKs|-ae ziVqiQ(9WZN__1bxY*q;;aIt8*U6x$7CbnU_1+o)e&uY1wgifN-mBr z-z!o#wboud>&czn#xC0ytYXC0I=sm+H5;>rN@MpK&05C(s$`_(NHz-p>Tsby=&iwZ zO!!S?FkcCzv?vagr+GyEU2}2GWw2jdn)-<=1)!v)Ca%ug*jlY7X49_u*YVbLyhM{goPk z${Uk>b2I9VQS`~=sBp|?h5vklKwZ7;P5X%}x4&#TpQ6+0Do{KNH$~i}P_1$n%qo(i z1No?4dS-lLE+`Sx|iKxgtWe_=pPHKI8`KLd(I#7iWqdX$Py2ZK z@q%)%apgm!acHvn7c{j6K|LkA`gaYMxF5*HHZ7_u<4uQik53VR_S#9WFi)9?0t>O` z$Nl+5iGaet%ue723K-3|HP#p3Kl(~-F4Gyr>`nwcTq_NAzTm|Ip;SCN=m!_Wmd|g+ zx~;#+h3uH6(|I4ky6nY$nE3v7A_`Mj)7uad!MZBD3)zr3H&dnyd($k`Z?L&^!F$p& zJRB5dB-x&Wak*gvigDV?MoA({KW&2dn=xAlh~cw>CI>{4f_A|Q^po1^i<8xeckJ5e ze!s1VkdijZ6e^v=BSgP^e6tLWeM6a{IA9%&r(ze8BQf!b?nXju1;pm`$Jz0p$tgsf z*+g?9NJ!o`WHBN{fJ+Ddme&BKfr$`Q7Kh4!6wV*;4d2o4Gi$o7poKzXO!}Lr#9!>~ z9;OAEj(dGAQLakF3L1|juM)xbA~)A&2mLSoA(F>U#`ai2L78Hp-`t#&~~KANVzk%qf?bur`w&2ks%T?J2!iH zV-G2^%1sIv5lrZ37{fc%K`IdmET65259QKV(6Hn!H5@pUG`C&`G!j(WPs5SeI7sn0OloMFjkyT)4aSNj=Vyh zHtgQz3fA)27aCxwLO-ztsry?J0dg6U*CqXZKSChWdVajJ6g%fJlTaPUn9tV;q4Qa- z)Yga}-WR=C;f)}83~LhgJLb4E zAPx%wOc6dK?4WA=KE-7JygW{fkfkrpTcBtbP@9E~YG$Nr_&yB1M~}36{dE)uEb^%VQ67CO*zli-*2vj!AuvW}+}L)}ALDQx z66JuM13l4`2`0F6a`c&-+&~4xPX}(5T@`lPU&D{pE6(sc{X;)-`zGO!j>?=`hyi*N z`nX@{>n;Sf;N|r%dx}xIQ7`OKmj30DaoRy9+P71q>`z=7PeZz*42~crzL1IhD{!}m zpl&Rok!YwPgR?(!r-p{|%QW;VC6FDkz{qx|wLcmVd!zxdP%S$O*n)Vw((&m4%`{UOzc^L;p(wd4*hLt7(7%yhz%46D1m#7f0u(?f9rX3HqlwoTU|RaR>4 zh8JoV9KkTCyJoKiR0!<(s$>LEE*^d&_811^^&T8CKS8zHR{aa~Y(hzE(wd-iy+Ijp z01Acr-EgtBhWi>}sr)OrG?@XT!L4)~*7D6Q7}$l!dXpKkg9r}Bv&J}V7wVN|PoMf#@SP7XiA@1*>XyEQXOkjOlFJil~*cgkWpmfh~E1anuz^m4XJ#_t{0xkB#)8>C~r{>s{baakqw&;b25wV-Qia`>=)mb z0;vGaMg|T&*GvS9x2Iq-l}h?!a1+Ld+UYW^VDyEm{>VlPkMpsAAQ?I*O8uO^4RggW znymzWC^Zq#H;tqnsBft?@xZ{$h)^)3j#y)}R3ZWn&9zMW$3?^^9M>yy* z`wc6nRH#r$3|gyOPh$T_+KM}XfQA(_CW{`o=i!rd$u4JwTM4Mw~-2> zQDt)e%+&5&Ad=BM;eq%POker?Q&l0vV+9H-{u#<+$NLN=U__s~K*kSlb3;45c_Ad{ z$aobPf)xJ!g;ldDa%On5LEpo+SBQ)s`}ce0qqiajLcDTARjSb7ObZ6Pvj$yRT zpWGwH6m6g|Z%S}x%PlQT1sYoell|Bp`tuyRM~<6k1ya zvN8P2zaM310$;8Ju(<}>mnwO43S9>x$pwEF4HHO6Kg>qex3s$flZ3JRB2UgJM>&|T z`C^X9dewhXTW1FgUZU270!sVE9kd7q*!l3O+Ki^-^Y_Qv$jEOb6G0Sy5oqHQ8W=5n zKj8&O&rF4C**oERu=g*4#(#zagd_N5LY6}tnh<)zcr=0dv3}Oom_}m?h{3~?u=w0l z3b&_WM}<+O7uL`?8t?vV9KM5;Ef%F6rSz`k`HJ7IFJ7?!^Ju`vHKGz4$<% z(z<2FK7QW$zyqAHqF8t5EAIA*P;bKl6nRC~_1W*Z{wOrT4}?6PIK%d2*PW4_D6@CL zNVU6?93ns{`Bw_cmv!pg29-;t&2*ic7fkMA7uAvi{hYjo1-{9Y(s#4kA(vwyV zF6GV^6H&wK`V=nw0d>h9@#sd>-~kWlV07~jkpSTV34g&K z-xH3Pv+OU(pA)bGAi_oEzVr$cLB7X%Y}Hh!D_pbkT@FhlFf0k48&=N8*mvd@?h z9X>MC21EG~4)7a&*YxyGS^cIaX;0&WA?YgvX+sIWn$q!kTnnn>_~8KHSBur>(6ZY~ z^9k^~$<6+Of%BUX@bNxe_q~0;9kF8cBC5x7%@Sg*Dq6!!wKK^_CIfae?P)QB;8wg; z6Sf#w0s{I?R|(Y5<0EzVD3CuCu0rQahfHc}Fn5{shwWi{D!_pj)os#Q{WVz#YL z!|77l6v{F0n~!*+H%fj`=k!~0bLxg}o?c?3)mfDdho}rrL4ip;15!`#^j~4Ot&B)X zeq&~J`|hRa%uk+aAOd1`hgqsl)@bE%etDp>6D1=(o${V(0FT=XEz`)zWTc{y84-w& z02}Q52aJCsBVdE2Gaw-26yQ1=28=S)Lz(F5>6t;JlQSX!2pE~8`?u`4KcZkw_4M@2 z(6E8Nx8~}2o&?f1zQ7F3{va#{r{pV!_?GFM-d5i}(No|$1 zxaLZG`-)-0o+{1k8xGiLXSEt#4vNY)Hbzp_2A4Qn2&YTw9NOxp#n}6%DnzU23hw+GRXsYUZ(?pO~Bo>}ymY$o;$oAj;_5aWs zogH)jQ%6ad=xC`aM@N`xX&Fn~vfR6K!!ACT$8>4NzmuhOeECJ^0R6jY(zpwS!M(o6 z`il1l8UXeBXHh3h2D62eBN^I>)?5_~G8gl!aebUEuN0&c-;XA;%t2l+zFOJqoN6v7 ztk1bNbgI;&tuF1VIe#U*?Un}hNSE9w+?Af^wy^^(Kzlec{MzTv3|F1s`vX9kn=RyPW#$7EZ5YJzcR z;gF9N5r>I_vazkDPz`iHzmV_M=^>0YyVHx)T_Th~Hh@x>*~G8BGBh`~H#2#-gpcl& zoS3_#>FZdRE{o%F|897jPUnlba0x_L$Y}R&;=1z}I7wlri$>d9>q=7A8oY3Dd$>UN zC;~n%xBi=I4&<3X&X$s~Z>AH51Ug<$XEuDmrsjiubwefZKiXPPcT)w;Paz-QwZ@ zO?KZ41GlKFV(qjDU%UI4{B1>t@hx_k^hKaJ0e}D?{zpJbX;C8AnErJg!uqo_8_65@ z^99IEPUuj)v__&QXUF%QmzPf@5{t$2Z%R;OpMbfXih_dH!@o*P01UE(HE>j>8^dP; z`F4wzb@Xaz(XFaF@_RE|_Yt4h&2DNW$ZR|bU3WL%dw1o zxGKvvDG+Fo?lD-Rh`9Sq-fjq1*1NudIE zcGe?PFh@-q$R4aF3>zo2Kw~%ChfUd$wn0 z9KZTMG<{QGBwZJ62b0Xiwr$(CZQHi(Ozeqm+qUgwVomJi_V?d=ANr}Qx~i-8*=L=# z*IBzLG909LWz<2_>|-=|GuK<^bqa&!xwL!o1j}Kpt<><{-L5l7F1rn7fq1NW#CTmO z`cwTT?bxK0eDssya1wSD4uVUwt({9tGrhf&oe@oKvTb639NC=Bz4eEJYH9$%&w~_q z`czS5bZF#qLQ_L?WAIEhDik4ZdwO^A`rq5-+V9w&_N=79`HcD|A^B60$wP~iq>w;2r zv0-3|81jpSk(tr;sVSQOc{_jMD%ywd4`Z*W05lv(6xlQ`ZYM zjBI6<%rv*lJw|M3YBySYOwV8Okgj*R-CudD< zy}nddmb$@Tuj>s|Iu53G-Ho1iqZ8};esn%uF3-y)leLOBZw387ly z0@aNIiYkxb<}9L$OV;;d30_cnf`tQNb|zMV4?wr!Y*_g2+sR{GSDBx{8um6z43hnJ z^KKtrH3!lpp>P$|{ckr(1*Z3v2+^7qdW8nO1BE9PuIiMXrTWT8{v$f6Yi*fyn%u*-@ zk><5)cQ1QF*520A@ioIn;>IB2e;%undV@2(_g=U8F(N#1$!b+B9>5JqOG;tRZETja zkJ!ybcF~$;@&BL9xDy+#N^r> zz82G)Su+^xX`_0#Y(H=T)$}h*hrIlp_iNn?+o_>xai0uzotM!PS8jHCemByCmzCHH zf2|I))n5Z+ZsX^EKzsHqyhYZffFwAu12+@i0!WT|S9@>l0YqRG;#w(nm`GaR-kyJjsrqTSg|?i9H(bafCkXdSfLyY zwg){70da7C9&b<&TLj^1@$YUbeZBEmE@x?Vt;SiX{w@}M;P_7Oc^v43U(yeP0IpA9 z0RsysU}Hgq8VwT@6AMFHn;l5-0xAfUy$dM*W-|?_9qZe-su6WKDY@Y%0Lr-Kv8+k; z@U3(rztiR~9svRfI3=k@!UD=DqQTQ<17VmLJ2?X|-~`Dv~3 zN!733beju@L^C>qjZ z{;uoK{K-lt2kS$_c)(`!+p5D0>R@}&D`lYOBN0?QY$5z_S>PWSrf|TLk%9KiLnS9J z0SR+$XgVZMrJ~8r4c#PqVi&&V*=%usiIuCSAWtu>YWbBisqQS5@;~K8MUBy_1Y8a zC9x7SIXJW4Y`NX{&FrGiQuCPW#Uc9E#xzq)zw>5n_vp!GH#^x*H;ZxeMgc3lo%Tl# zK2;;5fd#7W%_r+)lguxkf`Eqiie8X@P=KxH{`7AJRF0ymI)!{_i*3%i&DR?=ODXD3 z&x;zJ!GlCo%pZ3vIbJNzt>5pB;VYB_LiiSCX}cPnZ9tr52t~li0NkAhd&?wkZA4`3 z%3^zTFjcr5$^;7l%P(pw3Mo1rI6#UE2=}5cW#&eM&2C>D8+iE22(FCVt#!yS3*PB^ zSbfi59fiMkyVgUZc%0ppyO}He&MBSm{pJ{+E_^QLHl*&sVz-!!DO)?4JvflZUjuHZ z-D{kG6|4pe@ewBH=BDPRhU+_Wj9MfPce8Q-=M?o0QyJ3Ld4SG{0jVC*D9IHxi+JKA5} zU_GDOX^N_mVWEosOf32tGz=*XvYapR>r`neJvdA%JP?}m1N&yVmtfYpXMN{0W)H*%QHg5 zY^%L9USC18cu;oCP0oflH{bi_xSf%)pSFK=GygZMeaOu<|7?uj$7IV*iPPgz)@l_K zBNC{^y88iKLfOU8Ju1+yn#XK9!^u(ep{KhSi((P#{Tb?)_uTOAZF7Wd%aGZ|C8oH& zLT5Z)qA1QK%VSCA5?HPG27->_JKkqja@Rj6!}_kRbW;xCaM1pbG8mYz)Rn$j8vAE% znbKk(t4GX;hzxFMLXq#%@s^ds3+7Fub7o4PABVeDZ?k?wdzb5ti3~6#Wi^N%I`#p9 z7BFSufek2mU=anWYkpSb)BUhUdiB4|arHqF#~wAepZ%mmcXyYUh(N#z>f}aQ1zL~D zB`8IqS~y0byT?+8a5%d2uWtK(|5W%Zl&`ZR)VT}q?=X0Id5QBpbvbpvt> z$U8b0DFTGlTS*J>boiV+WW2H!m@oi903icYE1MC!I5 zvc=CW^5#4VE~r>urb(olkZcqxBuJXjoT&=~P%)SxMn-YLi!J&zg&bsv5FkL>#qr+? zJKWpzVd7#qKxuIl_g7b;BW!^6e!88OZ&P0*sHLfVa5z6bIU8YZE~k?f=jXcQd!0Gk zUd{5;Vx})Ed>)*lf`Em*lwtQv0V0(_>V|BIoesvB*E1jW?;mDzM zy~bSW&(<&vKtumk^2N05G8FM@UFr{Sg38@;og5Hj9r?Ixuf=S!R24{d`SRAko$cZ6 zzr$KoIXl?ci_}4z%V)TktQb5(lfL}>JDHf0+yB1*D8%SbiPd!sr(`)Jt*OJ!zXLg8 zbDKZh5CDLbz5D5@WM!pw{bgIN_1ybe7oy|Q_0?wPz0woz!?d4Mc|FnR-&jZJ(Fe~` zvcL&!MzgyUcs@9|8Gjtym&l|HA9Cz_bw^qaOFOk_P!PaR8QV+RSe1p6r3W36O(~tq z+?Pi2v}kRH42=+^vK>J~JU6l!rtu}3dBSQMO3i~&C&6NikC?izY?}tSp?=)zDSsQ zBxz2dVz?n7u`lWY6;iS>va^(d6fWZI`ugnJc}SvS!;^ZXSw|S!?hkH}pT?U*pT*)U zFv1FZ2S?^5v!37i3@IF3RB}ZM*y-uxndc->DfQKrt&ObLlHtL@i+FqeeE8CC3)7Cq zV*K z-V+EJ+^ndiTmD6|FfK4PKa@3zMOD8pg~LRXBkq4Z@*L-c{qq!rZhBBhV2^ZL*un)f zl>?EjZDOnHPHUV&c3Qp?_h85bVweD zsPh%#37f$I=q#2G@`vOnC;-6{2Y)xlt&pBk zXMYm*TTWPd_+~;uWSghw`T?0W2o!)teW!NadwU={)q(uHjQ=p53VpGtkJ5u%5`t=0 zvJ&|>cWL$I0+Iru=|pDeTVG0v&~9dI#`~SIeqn2>f@~bJR`{?6H+p8Q$HmFsNbk}7 z8C1H%_ig;X%K8LuxToyHVLB=Z{pis?62IJ}AZ7|(3ietwKDh7)E`}r0>d^Rx%#O|` zff9x$2Zz=j0ANCvHfpM9i2}OC7wsD{bjVo7;_FNnO72lEua^2JJtgItr32u($x^8$ z1%J)iZt~{vpH*C*5{4HKS{jW*(}6#SySSm)68nW*7ioJy1bh{+`*e9KLoT}_wdwRU zEmW}(NvZ*0%@e`}-XV-YhQ=m=@;m0UA0bwQBykL-dRtWSp_u_Y%#b3=U_+Og5nL1` zOiF}S=~cgsOcjM>TE|m?!m|*IinrT)`zn14UKavU6NW36j-iO*u_*_rEJjEeHkiZk zfc!)VkV2t!ER>c4y z$N&Ii=hFDRQNPPJ?H@(5oA!Z|_SM#BDX)x1wW#h0jRuc%5aHE!g=Bo~C@~*chgWNd zPZsAZo)-J~IK9X6P+$>TLxmAV#XJF1yGCUG&#;K5NnC&<4+C_4*P;&Q>K!H zqa(D1_BXv5Hv!tpD$h^4t)6*mGB!8>pr-JCbND8cM?}lp;(5PV+K|$-*8tM!-tv{>?Z^xOp|s@p=eE=sx`zVv-M-ft12p{q-A$YY@4BPTMzyC= zx%RmEL$4^PRIHFE{RDslK)cCl_1Rf%&bsW44jOr4bJ*$LYa-5((wv$oxsATE*CB$O zkxS$#+N$@;oY87JcDud(2dS5p!(0jzc5*CmeYoMT4mM3TOsDs&FVd!C<0c;(*}eSP z;yCVwR~@OfzwL%LVFTQ^7Qy)GbG^O{*#Lm-E?%$z(oK0AEvCSNt7xQjO%MP;yYnYG z06;YF{eXXhMC1F2xz^Uv#gA2enxO#-0F0JYub{}HLYKgC`8)!fwOsP{da$H7KlL%t z&)JS$u0XAXi31!WC%xz9_1=qug70@l*u8OK{uq|d8E{p3Vd3wRe3}sc#0~0xyU$!& z>ui;RT?vQuO-vMA8yj9XRAx%7rG4-Id+@{w12H(W@pr5}97=WZ4s%hs^mC5AFUsDc zX4%Zs?PB-!ayyWh8w?;6PKUwRmW2olfO)u{ALO5#9GpNiD66WkFDP;OTeS?bWA_{P zedvt%(Mhzm4lf29J?TdO%hMgn`;)=X0-awx>$!7!k)4%&?)hqkm7}RJK1W*H%O3Yl zc5((QIrr6Jzvr(qzu)9ZolTWYD{fbZ+D@16Bhn<^y||m>@lTm1t$*<#sz2$ocYIHE z9xf6+v*6x5xaPlBHgQwTo4i)re_(6F+2~8(V=%YJ!$;efjRrI{4opBFn%j2yzLctt zfTpGlmyXLE?tNU$2O^d_!wzzVGK__sH&}W1GWg9mCSNjfi5u9N2!s-*4?EX2(ooPW zV%-!f&uuN4&n`3!orfhCX{>E;PNc_|YsFoEdtO&Gqjf#AY4ZKdvL8Ce9=BEo_X%w* zWDXVs2dr^$fXXHjMw^J@|2prt@7w52e zYx?Hr=Vkg{vf+TwjvDyvPOz~S$H4&s^`WqUJVYRvi)^nBZ~OrWs4(B_KU_*vWhvkA z6h=n8(PMqyyCMPfMd)p}=5~Hxjo|@#NOgRpXE-;~FIr4y>TtNqQmv$&tvP}QaylKd zy4CMKRjkm7KnTE<+d<95?EnduAhzO%*`a5;Wn?P;7d&;nktpe zY2DPB;Ks_0Og+om$oarN#08kbVR9rJzPo29B|yu1Uv1|5m5#?}gJfjzYL?MAWO+5P zj}w;q3Il`_`grx4`l!YIq9wlr3Yfx(lp;}xluwt^ zIzIm}rv5#$4XM8#jRoP@h=ewr+Mb-+q5-^WfW8nJE+wkoQ}{UlW)-rPWfSgUsY7TK1m1*@@Lo zK}p#zNn?(w5&qKN*Rd0aU@U=EkuOk(9{3WN(jrz&^jjiCotttw6qAx(YWk9w7pGaG z*_W#q#6gP`gz;9O1iXZ;Z_*V1!BI?y);2O${x=27aSL$!8d~lyrbsm?10q?IZ(byo z^1(snkcNYWI9}4*I=c;WtWNfCgk2)lUoyB{9^9uKwj?DyEuNla>x+s>8x~9k!$mc= zs@(0i%gj^j!M}A$f9f+gciMT+Llq?Q%SM!=Q?9?M5rWu#8w5=qR}8ErqX!7wJwUU3 zJ7BDq5+kR=I$kh8|NZmntZvuiwmBLH59m_>N7%VrON^!t<8sY)eMmoA37rfKKPRd)U*%yQ8bO+VOg&JCp+e#JC)bp$Tzpd1;;P1|1AJ7H?8Oe%S~a4sSEjR>C$JZ{7e{TY z$m*tg1L^sn#7WRD94X}@drNc-P7EH&{}M8Ri=VtimOrni?`4XEHzMZe1dsr#9S;AG zIOAu&Ih2ajZLZGJ?zpm$ zyO~D#W;jGn8i?IKfG}gtmo~RS3Vq^;e3rTvy><178Pfwy3Mh7D4ooJFnD9TUrOKdpE(PMXzTmAT%yeoZGvrnsJe z`q$NNAe`C(0*o=1r;i9qg+2OTL-ILewPuQ+3`+`s&~vgkDS5Id4}lvVT{Nhy zn9Zs-tVX<8;SJAY%xCfVB+ps>rvA?F%h~O?*tSEYU|_{kqy+4N4F1AOfg*Ycr(7?S zx)-xZWDFeZ`^^L6%{z<;_zR1SZ}C?WVIMOzr#3-$VN4u>5_hK;q@=ut#y&x!a#AWf zT2=!mkT3UW)p@P$A2a5eBY7Ok!ejN@)AbYyGDwM>bd>Bk4S~XXV7?(7S{SS7nIz^g z3s!YcMNA*t&1x%kbb)XCt`ZoMQh!;fK*5)SL`qxv-FVXJhFN(+it(x(2nD!>D$- z&((~xMSV4A2W13V*|r@c;ji!wVO3Ahb=0>N`_%E_W_Y7}G71)3U2wo}=!-+7L|@3+ zbRm*e5CF)WLMC!r<|I=cliAo|;sUHKkCz*)3bZwGuE;7|G=|UOjIPk5MTohhVhRy! z3`OMyHVtm~V9;mT%`icpm8q1ENvHyB;l%j{1hjbVO#hdbZV@01<)oye~bHL(-45bEgXc=hKJ5E&CY~Gtl2YH)+$Whf#0tO@7}(r~>iU zDC~?Vs={~($&rS347VX-iVtF&g9aVc0&K(+>{TH9KLZoO^MikyI7jq_j?-bO{)+0c zA6lj@-i^Wcqo#uA!R-9f{x=N|`Am}`_X7jOp!bTSDg(voaKQ7m*c^Fq+wQBwbYUYp zx;IM^+u3{LVEeXSeg7c&%-DQM5;h#pvDg3pX~%k&{Nc&#`($1LbOauPQprFPVqBBJ zA?Aq?Y5DIo4rkRc3rSb-aG0jGo$OZAMWdT-G|XEN5NbKJ(asfDgk|+OSq*)+)16p4{ty|($nsweWNB5g(RxwBs1bCxO5U z+4P>%aOKrr?A5CrNKw{_GHGx0n{La)t#-@m zBQ)dJ4|g1tdLHy~o@Q?6QsY-TM*vkMCowC+r}gKGIB@;AH;0=Z`uw4klj!{O&%Y%% z2@0GZr=w($A~q)NdV&K8BwAV0O&PQ2;7Fx_d61P1fjghU8cw0#eBki?61CA10RmtG zQ6OyKh(KOZAfSmKG1A=kEuI^CG|myL$!DU@fGb!ulrR7Q=-UwXR*Sn8w}K9djg2UJ z+Dg%m3)J(H;o2NuKA1>JUyFG)hK&8iKX}UJdo}dC-8hVOh0S0CEd|qY?`*kP^Z#oB z?5I4n0NL#Z8)a7*t(FTWzN24nGaohg)4|!Mdp!1H>^YE6>OK&D6VJ58>!Tj+H1SVkw>^elZVBi)mFlZ%;J{ z;!29BxCqPA(Xv{~keKMLCl9sw=GIckN$9fXk5CC>Zcsa?2V!st3-$x8J{9_gd*NW7 z*ciUHQ$K8#!U=h4sfp@|DQW~o2}GC3X732fNd_*Wg5vVFmL4KHvWbA%=7)d2yAkSU zq?es)UYvJ+{QUR$sdBcuo*ZE?TlHlAKcpNgS7Nj($z@^`K9@lYtoy|5D0{-k~u2v9|NfId|7;Lu3S zBO)S6s#dr0F_LvCOHFFJ4A7?*D!4eTf9j9E!2^2I9emQJT_^l<Jz9ZY?>iN{5yp|hudM}@1gl9XJh7s zlD;oDI6%N*m5y}0^s9~C?CW#~cvcyYud+3@aUbr9AAhn5Z%BLD%$77=RMDn)|| z6opK5bE|5h3?x*vP|1)eQmoK&oE{275mvqg#grpUghrdk z@Ph_Na{bq28XWkxVA%gjw#qvh-kSQ|HY&f6orbC2==JGluf6k*?uWq@o}WO48r3_t z`?@O#DYmt?Gd&Kp@+V+$W~d99bV^xb1D8=tRwsEkIKGxYTFGDD z^m`}X_mo>Ipd@$8`trCdsAX($IB5G+&viO9WAOgn?3wME^nL1-5VH1 zjsyxMZs${os>JnTY4D)8wYfU~Tt5a3Hq>R?-UzS3Z^(hcz)9~0*r)4$;sG4E>+R(= zYL45Lb+lE-!x1=tAE(g`eL6D}6M^R>`dqhN_lIQS^0Sc)-`^)~irZb;S5xaYaFNCQ zMf$yq#^^aFgKrkw8N2jX9dBK+H-QqR3#m2Q4|`irrS+1XH6%~XKPV&-pI;0$O+I5G zGbE$%xxH;W?k>KNlK7te)?57VKZ+a4e`WdWFi@Eo@z?4<-yl6+WIp|imulo26mNc& zb2Rv5cb~DTot(|BbBZsFOx4iTe$I1Pr8O3Vd#pFq>3K@G)?+o1kO-)L`mF*=z-(#1 zi4!A0oQRT}tbJmtjiMarr>K^pQDx%H@5+u=fHWS`y7~bwU^L&1J)}03{UHWnK^BLF zbZqRmzhE1-ceYk>D>DTRP=>Fw%1!DQbT#fJwj6RD< z0yVw27B$tkAXwrUbE($0K9dyuF+#r~mw&pZq9mf`YF7|i$oZt|d z^z7Kkr985dx~9f9L8GgiVIokmoi3G_q5SYA_2Ep!Cf$&0hPvEkm9V#3o`nbx-qhSw{pj+G-3TA6;fSJg?=`^W$97~rDTJn{fAd4TdFz# zBvrpbW-(=JR~1&MrC^Tmi`GJE4E-!GZW4F|OX@h*vhL1_^pUVm3Ml+`SA4stVnjpP z)BK&FMV@$;vF7&A4Vc#piHs_+L}_Yz>;>{-%Tv{jRkS)?t~I92WWEWU(`TOVZ;OBg8^M(?xs^OE4-F$|+FJA#JpkRp$@KG)QHb|JI{WO-2TKWDNC=PR)zgS6WG*b3L;g zgPkj9jDhvdNm<=){32fJ+Vr& zUmHQ`nESMzcdi2!vgo^C23W(z`mNbsaQN?@DR@_tusPP{(-}N%-^(vf-@mW zb-m>b6n%G!1V3wrQeJHxlfOOsY8`y7 z1w;JgdgOMa!T{#o=65D_U4#TKj|r#7zbC)3e(2Z5GlkB4A9r3ID#8Rsqz17SI*qaH zG~Kks3N!p9(mK1~>db)aQ^?%U;Xc`Ng#Lo~u1ZxtgY(UHY*$)oNW5YCnPDfQ*0#$QA0z@z!^tpmnGXZ-v6pwJ!ptxh$y0p zX>f)>4`*;tGAp~($}brD0R@q@g*&Yn3_w6WMHFyqE7zb%9oJV!Zf=U$Ed!Q1gYS

Y( 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 literal 0 HcmV?d00001 diff --git a/docs/users_guide/profiling.xml b/docs/users_guide/profiling.xml index fb6049d..3442aee 100644 --- a/docs/users_guide/profiling.xml +++ b/docs/users_guide/profiling.xml @@ -1302,8 +1302,128 @@ to re-read its input file: + + + + Observing Code Coverage + code coverage + Haskell Program Coverage + hpc + + + Code coverage tools allow a programer to determine what parts of + their code have been actually executed, and which parts have + never actually been invoked. GHC has an option for generating + instrumented code that records code coverage as part of the + Haskell Program Coverage + (HPC) toolkit. HPC tools can be used to render the + outputed code coverage infomation into human understandable + format. + + + + HPC provides coverage information of two kinds: source coverage + and boolean-control coverage. Source coverage is the extent to + which every part of the program was used, measured at three + different levels: declarations (both top-level and local), + alternatives (among several equations or case branches) and + expressions (at every level). Boolean coverage is the extent to + which each of the values True and False is obtained in every + syntactic boolean context (ie. guard, condition, qualifier). + + + + HPC displays both kinds of information in two different ways: + textual reports with summary statistics (hpc-report) and sources + with color mark-up (hpc-markup). For boolean coverage, there + are four possible outcomes for each guard, condition or + qualifier: both True and False values occur; only True; only + False; never evaluated. In hpc-markup output, highlighting with + a yellow background indicates a part of the program that was + never evaluated; a green background indicates an always-True + expression and a red background indicates an always-False one. + + + A small example: Reciprocation + + + For an example we have a program which computes exact decimal + representations of reciprocals, with recurring parts indicated in + brackets. We first build an instrumented version using the + hpc-build script. Assuming the source file is Recip.hs. + + +reciprocal :: Int -> (String, Int) +reciprocal n | n > 1 = ('0' : '.' : digits, recur) + | otherwise = error + "attempting to compute reciprocal of number <= 1" + where + (digits, recur) = divide n 1 [] +divide :: Int -> Int -> [Int] -> (String, Int) +divide n c cs | c `elem` cs = ([], position c cs) + | r == 0 = (show q, 0) + | r /= 0 = (show q ++ digits, recur) + where + (q, r) = (c*10) `quotRem` n + (digits, recur) = divide n r (c:cs) + +position :: Int -> [Int] -> Int +position n (x:xs) | n==x = 1 + | otherwise = 1 + position n xs + +showRecip :: Int -> String +showRecip n = + "1/" ++ show n ++ " = " ++ + if r==0 then d else take p d ++ "(" ++ drop p d ++ ")" + where + p = length d - r + (d, r) = reciprocal n + +main = do + number <- readLn + putStrLn (showRecip number) + main + +` The HPC intrumentation is enabled using the -fhpc flag. + + + +$ ghc -fhpc Recip.hs --make + + HPC index (.mix) files are placed placed in .hpc subdirectory. These can be considered like + the .hi files for HPC. They contain information about what parts of the haskell each modules. + + +$ ./Recip +1/3 += 0.(3) + + Now for a textual summary of coverage: + +$ hpc-report Recip + 80% expressions used (81/101) + 12% boolean coverage (1/8) + 14% guards (1/7), 3 always True, + 1 always False, + 2 unevaluated + 0% 'if' conditions (0/1), 1 always False + 100% qualifiers (0/0) + 55% alternatives used (5/9) +100% local declarations used (9/9) +100% top-level declarations used (5/5) + + Finally, we generate a marked-up version of the source. + +$ hpc-markup Recip +writing Recip.hs.html + +

+ Recip.hs.html + +
+
-- 1.7.10.4