From 1c18cf2c2b7ae6614cf57851a5eed28336b3e29b Mon Sep 17 00:00:00 2001 From: Federico Molina <25739121+fedemolina@users.noreply.github.com> Date: Sun, 19 Apr 2026 02:41:40 -0300 Subject: [PATCH] docs: add causal panel problem animation --- README.md | 44 ++- docs/assets/causal_panel_decomposition.gif | Bin 0 -> 1810690 bytes docs/assets/causal_panel_problem.png | Bin 0 -> 183010 bytes docs/assets/make_causal_panel_assets.py | 428 +++++++++++++++++++++ 4 files changed, 469 insertions(+), 3 deletions(-) create mode 100644 docs/assets/causal_panel_decomposition.gif create mode 100644 docs/assets/causal_panel_problem.png create mode 100644 docs/assets/make_causal_panel_assets.py diff --git a/README.md b/README.md index 1b79038..d43b22e 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,49 @@ # CausalTensor - CausalTensor is a python package for doing causal inference and policy evaluation using panel data. The package achieves 30K downloads by 2025-10. + +CausalTensor is a Python package for causal inference and policy evaluation with panel data. The package achieved 30K downloads by 2025-10. [](https://pypi.org/project/causaltensor/) [](https://causaltensor.readthedocs.io/en/latest/?badge=latest) [](https://pepy.tech/project/causaltensor) ## What is CausalTensor -CausalTensor is a suite of tools for addressing questions like "What is the impact of strategy X to outcome Y" given time-series data colleting from multiple units. Answering such questions has wide range of applications from econometrics, operations research, business analytics, polictical science, to healthcare. Please visit our [complete documentation](https://causaltensor.readthedocs.io/) for more information. + +CausalTensor helps answer questions like "What is the impact of strategy X on outcome Y?" when we observe many units repeatedly over time. These panel data problems appear in econometrics, operations research, business analytics, political science, healthcare, and other settings where randomized experiments are difficult but historical comparison units are available. + +Please visit our [complete documentation](https://causaltensor.readthedocs.io/) for more information. + +## The causal panel problem + +In a panel, rows are units and columns are time periods. Some unit-time cells are untreated, while others are exposed to a policy, intervention, or product change. The core challenge is that once a cell is treated, we observe the treated outcome but not the untreated counterfactual outcome for that same unit and time. + +
+
+
+
+
uo5$iB2s zeWnO6?!nqMW(4OCkoDD-CA=EOs_QOzVMo~!)ldBujj7;N*2njryX<4h`Wlxwx^6) zscG{i?Vc-?G3Yj8|M?Qh?dXNAkUR!o-^|kjF_?;!oBw3f;GPx@-_Vs_b6MFTuXJoJ zg`>Ze!Xr@0eU+we&t8nYnzz sLz{a?*-SkdsQ+v0EJ^Sg(o#1!QB}AkLb)V7M9idR)?N0{3h0H zHf5)!E96!9M?`bD#!dh45pw+7#73E4Fok$y#sUynM)F|z9=>9%iZ3=KHR+^WT`fEr zbO{m_hh*2)6XkGsnJAS1QM9rQ{Xxoe^FuP))Yp?GoM!`E)R2&NZO(DDkY~)49I?<< z&jbPQ3lY@!*;_j%!IWaZ^(li9llJSK6K*X-Wy~^>Q|Fq;?llGaPDB=v7r)_q_;u umC;~DZnzVBWj%wU%SxwRh`Wilw8MQy>6CAMO#;@*FCTp$ zgx8pG0uHD@t76=B;Spv9&`M6M=9B%qL6-cx%WkbZW}D!e8|rtcT@RU #%9!%cl)MEJtv`ACLveo6Om}Arm5*t>yn@rD~2YL5t7+m{D9?c2f zdkgK3ij8P11r+At5)7JNa%py;dF+D-P~FNOYu;hFYJIKm@y`mJZ !n;XHva(XF(96Q^8LU~&j80Z2^%v>N~x8xYS0NaO+}8HA@)`P&A9cPIjV`|{Tm z0B;FEFdc*=zJU?Dfw8`Rg1YR(lYW6!V}sLjfzxY(GrEDpYdZRh{IIX`FDvoi@9P(0 zB&eGVRQY7v4ur@~^TxG*PWXk n7JQXm%!aIGH0BgX>=9>#<^PbqRbW_S@of>|oyZOLSoK(!G`U=H z1e4E1n$5)3aA#t1q1^MhPslI 56 zU$t~;4C0b{>QGF5z@&mR@N5d7*wz2?-M~{OBhW9xF{*vUYd+D*e}1|pOkVnY&q|)_ zO0Ix)g1Y?v$?efi0p4K{1`QbnsTsuNg22i_<=6;ALQYLKdGcS)v!WZuOY>(f>~&o? zT%{;-EqdB`XWDJpBaYZx;(a<>b_7!hrd1J4BEyvp3Pb8LjSVJ^@GVaM9Ru7fO(7QT z!rkMAn(S9KXXtbj&_m^k+!evAh|CC#Fg{P_s(vD^j=|~5`bC~a;tNsk0?QN=qe%+_ z-b&=1%MoS*LWtV)WDB$4{U)P3I}s<%rW+B(N*6UJD+4E&*f|FVEYoMeecT;=B)f=i z0=Jkw!`kxak=QQfRvLR5#_mW);RQyFu(hjN9>-MFwK-JRm0k~bUa}RgZ!2wotvR+M z_)g~e5MU1?oH*;l`Eyg>?P3i}H_iR}AoY7y{3-3jNZ4B$FU=%LLuzRZG zrU65DVJPKtmbA1u-Kr#Sthnon_!muKe?^JyR0*wCavV)DnFeDIDui*6r~6w z$SS_Ae(X|Or7ItJDcyMYofOt2h2&a9nLK2_<0_7%p`~(>^V)e?K7fxn#MZfZw$do? zag>EuWS&x$dsh_(a8<@|2eVuiiB1%)apezJ4&b@Dx47>2xD*tWm8l*&Vb_$&@Kj({ z&t91kblj|&+jZ2xXly%bNR=w79LYE0D%`UF;i}UlOP5viWP$V0`qJ>LFD{u8UP+8n z9x58Ey)>+?hNh;aq!xR~6Zoj}8BdXFjn{KdH(S%(Pg+knM6Z-ZQU*r96i;(oQL{Zw z^L<708@KM`gA{PifFIdB 44jqLhE1D x{3yT1F(ST*80826LNbI$O`w zT2CBXZ%gS-tsT+hGpo+4UdHLyYMHKUNeTWj73Hz4%&=3Lu`5T&ZILk%*3`D1(}Px1 zqUOtsPG~zHOgZFtfXD%MrP_8{>5gbKj-jX8E!s{K=}uqfoa!fw{k~Ypq}%GuGvnQh zk(0Z?={QDuT4JEM>Qrk(w9R$?NZV5Bw}Bj1(%le#c+Pa_{Pc9^C$JOlbP?03lhi5v zd-jdc+upj#zLGLT+{!K0%a(;#`MraKJJU-r)5T)mMbOTBz)lsP*M@4!^%m7FbGW}N zB(;otV6?;8s#Dq4+r3c7KvbtMAjYrzu{40!s@2;@?TJSnJs?%bccRlIgV!DS6kyNm zSj@Xuww}I|83;oY)a)JKMljRG%RotwP-XS)B{O7V*=UXcvchY9-2fptgFqR$<$rkv zXSN5sUIfPu`|q}m4?js7Jj<}_$^r=k9laryEZ+4 mahm=H$X zd+S>~J6LB$IRA*?MvF9%izN6Xhk7I&+*zi|M^D*h#rzzSs2h;_?3~F5X NSPs#KNm1zyd z;!EZBP30_0-Su%gAhab@ E&HkRAEjF5} DxaDxSHQ0zLn>X-lkH$VuWN)nlvV)A6RWagDfm;;JKQv~ zKPJorn7Y%ybo)JRRwepnEXh`663c>|Z;%&ghGmvY{EDnWN6@I2931`PMgbGqS7xQ2 z+I-$B1Fn)Wzo^L`>$%rD0-uVfna4UB(61buWRSBnedD8FC7n%UYD?q$R_+^N9h`sV zcu&*Jt2nD)5bwon+;DRw+Z&JmvXEa(JyC7)laG~>>bIWSfgJXc9+e5bwt9RCd4H4M z8EA@BJ5+@q7871)(W+UtJO8b_Sg@zuzo)vlr~a*nOjXHwyBLnI$=RprX`&O0pvz(_ z9&dYgu)fRe5D?{(Z)8x(@RnfF+v1<&+nL)tu-Q65(pM|fx0}&7W61|D%%Av=!RZ`}h_|BhdH$HXtWB2>toos@**Jxi_fr*Y^Ye{ ;bFD!pdqiteFvo=hmiVV!2W^E(i->QNt4UkdgS14(Zs@ zTf-x7+~wPtSwO2hNg?~rxP?rrcb%3RQ#D*)8DY^^=Nn1bx=tPiOta{YXmTD+TEJBP->Kca#ZH0wa-s3_J{)_}g=(3F zPP{hnof-eXk*>ZBbqaIqeTz6+V=6oROsiu@c}pyL&V*e=8 4<@|B%_5HqL3`o- zd$ynd%pBiYf1ANs|1&f)3NLDwm)_l8;=c3g)|2e{XW*)a$>UM}yukoGgUS6|#7pka z7yF+V7X3OEg{FCHcZ7PsyMOMtf4&MIxE&aH9)mt7i{1l6AcMiMD8xchF8h#hR1$#z zMD~)=Xlxw)z9{z6K@h2+-(N(IvdLs>s6q~GHG8>O3^Nh34-#j^Y&ILw1}a1&1QsCV z|N0k+t7@@WGL~34rp+d_Oc;ah@rC?%Xt_!)yr&&^t#*-ar{CJvW36t5*+dSF{+~LX z8oTYD_btd+Shok~#`j!c$lmvWH-TrA=f;qsFccDz=&aJ|F(d KeJgZ?;v zci=QJl}Z_sz{6ag;LjY9xirV+HW?$?v0y*?^9>X0l|OcGJi5Eq?)UIDubnRKu4lv( z{+*3?--BUDf{b DISX38fQ!n5_!jEX~Uof$ICPM;OJ;M$cP zNf12wpQL<5q-B~q;~#3EVuG%5H1M>|B2)NGH!V(37H%Zgc-o6L$JV%=R!1=8BjhCf ziddEugmnf GIh1!&kJ%N>yat5Z#7{xJybd-@0edfUF z4kpq*$4B{wO1GD&qSggzrh1U<*V@H)B~Tq!Cw%A$Malkn+IiO_x=dq*WqVX%U!PvU zZSUkV;qA!%UhK7@rw9sg;GGz`X;2Y6Z)u3t{@5`brO-RI;S+)lt2%Fz-tBm{c^%1O z8xo851aIz`L+fjfom&lkWgSO2v&DnkTE>{-!7S?f#my4`aR6=)Mpf_C0`VIu-I9wh z8Tljyw5u&&>HNi`LoJb)+gtlO5c|i5tr5<;LnN}78nb*jL$5W{Jl{m O=tBV{fZU*?*GJ6ggTQwb!xk< z^QaztZ>YmrIrmT5RbMZhh|s{__+-Zd44QL!gdbyh^#iq+m kC4YO%MIHsqjtsPa{Ux_ZPBquMVcQ{?QYzS*!T~W-*i3 z9|%JUZP(7%u_o)VQCzD?R*GuP!T Pf4|EF6_11I_>;)7 z>L}8wHT#w}C4*?wb~PTTsxea79N$BCbNysVaVuQhx+KVVjcqy!r7a`in$6JYeDaa6 zZbD>t 3wBnoJ2!Hzttjz3~AIQ`P1^H$`#8!@);I9CY!16 zGy7MOfwzyc-DB7Stz}lIj&cA)eYH&7|BmQ#vr9e`ANii;EU|xYQ*187;gx~4)+#`n z(_xJgW7)~)_K%!%u+vE0-aMLpKAl&!Tcmr6mH#(uI~(?Top*s$^yNT~&X<+WyCu$I zk1%T?& BOwhZJ|FTKra0 zt{#{17bE1n;6ESxF}@{vZw*;X+IB-Q8M&ebalh>++myUmeG%vC6+^eQ)Y3OwjR9&+ z0N@-r%<)^j*F&?6F%67vL?d}PHJZ&+Rk7!~-`-HOP mYt}l zVOQGrRjS#{iqSOkPP?lEE9IfA*5fN8eV^TZ^zUs;mEKpSMy(=vEWi-rR}CPhWD(3G z)|rZ|??!tLRx`c1gX(9L&C2mrNLqPy+l8E5-vM_cmP2vPpX1Gi`Po|Da|j&zA_U!o zoF0lFHRvt~2mvB{)>*}~$Xk&Nw>DJP7sbuM?L` jaJ;IjnVT z%^gMjaYc&)tJ;A>3M3&g!S%_ih;M)qzs#s#N)Dmn5_?iPPkm>eR)+q9I#2xs{fWt6 zw8M2wW}KM13w%GjZ;k_@Age*)GcW{N8caB`(Jql5 IvVB@4QDtYyNfIiO{+4LcmpPAr$o#EU`Wz4s1zc5!$4D;|V4ihtiT| z3YqltZ%%y~X>=QsI?9bNg4daHQ|X$;BU 0tg)3(6)I1_-w)HC1O`KToaYj+@WN=mxX=A+nd_gelL`3 zhm u;im}c6w$_eFn;R-@Jlh;gCRML&v9%Ut)6to~{fEqF=Ns?GAit3|H`H@4 z6J0xA0?yT@{AuD6&5z5x;Eaa%rCsgnT2Cf$Dc<|#kYa#$YDVNhz2 ~!9xYF@NYa(>P{Wpt43?R3+pfb)6V$^RCfY=QpA&PUY~Bn{}VaCiGLX> z{B$(=k#I)3Z#-7Hd|6BsDRzJozN4FzNmee!qg}jTQyC?f5{Ul7fkK@thkcw+e11oA-eF(NHE S9*UwBofTTQ1= zoeYFLDl%^=-2XYeogl(IiYE9}n}3D!X@d4ehsU8S%sSJVC<+?Nj~Jb-YhQojmtIAd z85Mn58NGHJS$q(EWW@^i2xv-t3{ys8cOrzs02z`#O&Kt)$AKmS#2C_$ z< q(`I`|XA ZlzFjiij zRMeN0epxC6S#sIQmB997m=l-q+LqBx=b-*hR`V?UO_<1zoWaRh=`IlFX~*K7Q+dC_ z{__PO1dh2H4*L(ODy%i?YfM3SPMKhL99b5$%8{{J0lxCrpQ=XWd}PGZSGj8ao{$qt zyr8FQHHM;K ncEM#v3OVXc5+eUE(;a&5AF^rl`dR<%RGRwekgmOHv$ zgQ#X$zNW#qs!6VVN}#rTye{>)t`WI@IU9RRuX+cE9W4oFWVQMgp``z{(o(?Dm7=b+ zr)XcluJWTU^> p{+() rf0o|ppbG*h58V!#&Vy=t(>e^d7F>A)REU_H^LT5`w(Zp28xK5 zdB0L>CQP4+6s))C9NvOIG0o8{ZB=SepO07r|9K+=agsc8%AtM}{J9yTPm4ru3xajI zS54`4jSyEwvt&<)LvQ`@W >p=S_K8ZC_%)so68< zPFF|R6KkO4XxX<52xjWnri(BI-dVY%taqMGH)V#$ve;+H&%`PUwi0c3Sp2SZnQ7KO zZ%($a@#^)1ok=&gS1|Q=$*%4G7Rx5X&{e3=HLdNn{@PJN(l=;Vl8DmHxYeV_->tY+ z78s?Jso>q=-)m{#rtQ{IWS>~_*2dBMeaE0@G}epIv` _vCajuP^pq+ouN2~15nObNRH29Zbe{F0Z@VsXsx|2$~Wihwu>bD;QM{-ch>6f z-+Kn0Vh4t2vffVypl^+JOoP*JdCjk>zUSZr{O`zpgQ%!o%;()9FN4OzKr+DBI#&P{ z;Hy!FD_d;W?OpHS%*bKX(4l|3Zfz ZXGucSND-28drNAcTu!usvYi~8TN{sfVxh3I{ w!f)%yak0x>3BR5wVHmmAx~~X&~B>EOy2+> zD1v}%g8!AA+%@Fu>_pt`RNenmpl~s}fI4S6-u2xUNN76uV;1yL-?2SAw|g=76LtRJ z?;IX@{>WkeByRq!ZvK3B{_ in@qB2xN&< z%&c>+!2=R5y5})lps{@oM4c`Z>M3TPY-YE4KUpNIUm}@XBD-ArjJ8a{vP`A4Oyjsr z7r)F 1#N|$WrgPZjI^1NG|-5%enoI@Mfh?>6m3 j93N@#33ByPJu^Te*%~mGN8E@x;aP>xH{p4VRlW zEZeP0+wDsDcrL4EA={#@+kN@lHcQ*KI6ECmJ7bPJ6Y)D!^*b|{3NY`sqvJbEEW0a8 zyK6>22q$n5$Txq??e1Rg{zTi`3EllTC_8f8JBi;j5+5-ew;I(pA_k1u$8V4~Eh+&= z#4`6@>Y+d1=6;?A0yd5oIWP9gX%^YyfK-D(la8smR(;Z&;l sM{2Zv|?tfmb- 3HNcdBYw4_dDN}Zlxpc$ z9^st7n+t+m4}Tppw(s#>&0yUea+NH86ewT+`B@IP{&qXe?(kFf3WxXKHn)fy<2;TE zi>XWet^mPT(uSi-M^`A?0sSw-#qzO gzca-KNaG7xy zxCf kor2U+gnRwbO#VW0d+Hy6!3#&e(Qp2w+PI}mkpDB9aa ze%~=NKF>i1YzTu|lrJiUFDAWc`&ogDyT3!O+&zsiTZ6u_qmPi?IBf_0F4?%44Ekta zKd$&hl^J(sQewVT@ZW;+E^_|~VZnu|vIEK9kF~!2JJt mct!_hqaLuLb*9Sw z6Y!K5_ARy7L0|555+7yJu8l#zeu+HNrI?!=!x%$v|1Hf7h!|NqFT#f0Oi0h48K09U z;$6<;{O*6$OMLQGu_^iVt1N-?yn><4>6_ILcg;k+M%GhH<-_`fXS(G-LCT wO+g@2dV|E@8hw_l+5D$qw~=u;vT`qBt} zTY$b_L!lU$09bTt-Nk*eFeE%y%Z I+)n>(EFH=uQAj0F>n;B$ zm&TygV7a+`q>#mKHD9K;a;%ic?|Jp#=E{jmkyto7jsEJXTA5rrtJT)(nMRdbxpKMw z+Hb8oy>_Rgt+jKVCbO{w8iOAfdTq9A4OZJfE)BX|kLJq_)~}5Ed>^llw%4ys27}=+ zXbm@R%toW}zI@%;xV4x}rctRd%r+0hFs6#)%Qg)KqaZPF&;*N1hQMU(+Q~wSnIm9{ zX$zjoOTxih9a`7Me*2Or7?dJ)RS+!BW%LF*r>nn2;L{~`UR;DNa2OI4by|rQVM>?= z>BNBFLG~jzff!QPZr_F(MDMVPWhOJI8W0p1L(Jo{zYC>_+}9=qhN6kvT$UUrybgxV z@NrJH=3+;Y({DU0*oq~wDMs@*n8r4gVRDez!mP%GsFdIdk<*XGiW@A55-JJo!(cFz zPJ(_j$}iHR(fn%qh=8Q9(PJM }9SF zg_YGkh2Tno&Ay|HBcg|+BW~RSNYH+fhwlr?n#rTAYEpz@$o)qS!VuC0F5ubWc*tX@ zAYK7}s@|9`km4k1E@Q$^UxwmfZ(RTcgtJ_VkWX=kRv3VjbD>boQQT7iINbe<>?!P4 z+lq?wYN|>&>zqdsh8^5K-w#?cYzPdP&0|qZOt*C|n7Xd$qpOwha?^%}JZf!U#3d0{ z*kAY*#*7X%83yNKw4O&1NuNyxPXse{7sJ>=dqW<_2p7Wt*-=c(T*U=<*_W Pk@74eQcKc;Rfc)Q1E4AjrdiBNd-}+v)WVwX zVrl{o%u=c7J;|}d;~V}{OIET8&8eLA)(juY=i+?)q`a?^Y~|=jjyjF!v~CjanQee4 z#73bUD!{fGmS3*yO`f4Ls-qbVL~K{iE%tgLH-ba v zY$*(XiSeDq(Bw0Ng~^5+T)~o-r2y7=Q{Rr*3qO;0gG#By!Y~DH^utbN9frcNz>7-c zn2H+!7^&tkv~W!6=QtQe_R}IbtU8*_P)_z6qd6Ql)%>AQ9tnzYEJ|5`FF;+Ef`5(a zoe*|cXTwt(!`Q@37hsBad5Et)IOtm=iV^5Bi^M?z1P-VK>zLq#v4mYn=c>V82ogkj zW6H7uIdNn`r0v1zLNTzr3PlLhBf{5cGoT`pqycpCkSQ8#F1tHTFThRzGmU8w=miju zZ=C~IpbBe 4eUXn?&=FIVJOa=G65iMJxBr 4V20rBO?BjpnPirjOP zk%z|*+ZWX~55QBOqJdgDZm?Ak5XM`)s$W1Q7&N{iKx?Ty@pmT}+I^jaJ|rv*>J*E( z7EMq90wfFTPKPn4e0hrw^GnN(YcZ6%_)*sKdxjM|S4~JfA4Ul1l)@Iq%%PY+6`|j* zAT{IApA?7!s$$3o!_MQHcr5D3dd+JXJyS;!RBJ2!_K9`S1(~ev@q<{UoNeK#s|XCH zX`=M)N&u?b5;3Dwuzd5SN2m-E{7Hc2vm`e}F?CTSalsJqSs^goc;*Iayi!26w6BHk zFMLVQ9orPS>=AVaj|C7Lw%V>;p1#=!X`%QNdF51S>E_^AV^e_!h{5PI65U0+9c_)= zm2A?`2xlRbUdzdl5=*$=W+M*YvgjxodqNV-ZLsWKd?hw%zOARa3Gkv&jyV*Ax1-v4 zR#t!^s@J1ns*0|LgtHP)LRETSls3d+8?{n#?^O4jX^wC75vmrg@UV$%jygbb=D3lv zt4i*8VQL=CHu%xuEXLfPQKQ0On1|QJ^aeW!JU_sG@xBEg^G O_ttGgGB)_aAwV< zra2cV-}6EfRHmjgGJdPQcQ;9glFosOpUVvVWz6^|9N=8r*F?BamJ@dD@{s1dQPhoh z0NftGVLg_XkZwb45SQMJ&S7tLfGCiu5*NcspE_MCwa$n|gKy?}Jn{cseE@3V|1^_Z z`$5eH`~FKbh^Jl3HogMRKS6rbt0%;t_A-#RZv1=U=>3c%IL;&~uKa_7 ?0lyY(o-rJGGJ;D9=#FrK({*mYUej7Od zF6Bow_7#kiRx11R4u5opy}bWArFaLVpd`3y|7)q(>$tvSZW)1doA@Swe#z7FTE*;f z8>a%bJ&a!iw@CvYF; RakkiLqAtI1{ypz|LdCD6qe<57A&kNET8vZn+?By z5rZ_0ptA+5`O=lbaIsbMpviH#;ox9`dor>GqW1w 7gA#D?6n2@kVEH>!(D(Pc&n4mNnmJPK0ftFN0eDRITEsawP4034dcRNZ{`TzH%) zVm_ ue42q&!+qn>fPhi`BDJu$QI%IL6&tGJ1zA zy*xg9i8GJ@GX)IkC$J{J`%P#K)kb^d#^;UY$~8EQc8RU_i^BraI8vS%$_bz=kn&y` zN}SqY8@c6Q*s=emGcruQ$c;azbSsS#nR^ueB|*&Q8s=7K;TM|-0|!fn;FNGmeE}v> z6DNU)GKkbjNzL&q4QQ)Sg_yHj8m7ot&A;djmDj{juDOoDv``bDjhS(Mma+w6#tos7 z2cI^TAnMXuQGk!kKAnhtGT6%dh${Dn@!;K1A9g2bRij;;0l?81Hfck(ax)-?G3MkX ztfWGcA*l`ECuX%&^hE{pU`4|ibO1JaB=Ll$zv928{HeGCOdqnZHIkkeH6cEQ{SUJ~ z0pi%W!F{A?t+f;al$hii#675$y*qIS0fQ`I%D5x5m{m1f+eAnd!FJG ?PB95b26GGgUkaeH1QoY<)KqrCYBYfwrvi)` z9yUJ^n?B)!N 8!ZS-9L zuoSd9EQ~15@}SfqJt$yAp{r0MqKqx#KjQ+ 0*PQAosm-OxssRSzU$3RLQQZP&_K 1O!YNyLK5QZ#*C?%6pmf?CUm4ZLJof2x I4iR2cF{MxXdRmC~L6-Jr)$%C&`j26ac5L~bxD~Z*jlZ1JAzkZU(GcAKa`k #OIY+vh4ssn^vjL(D;)JJ1NE!o^{eysYwGoDzw6h{>DTY-H(csB zzUw!k88nj_w6GYo3LCU38MGT2bT}Gx1{!q58+7Lz^wb;lemCfwGx)x1(0^$#@NO`O zW;jG vxr{|^8zPiXrA zfG@9YvGPiN(BE<#K_B$@hXlTRaOxA50q*hm(7)C7t@O+sJ`8Y{CP+kVs*^|H|1rQn z^luqt!w&|$<^MInueBroHvkTaFV1YckF2^CbUT;!yD05@3@E-ei@*9G{d;)+ymx8s z<4gYU^M6<1|IZ5iU*7xwEALIkwoeX=>AFu2Lly-)6h_siJrstjiMazuX*qZhvZqxv zghcO>bs&vs!xj?7=+ZQdNSg!!i&1zKQNhuiRh354azB%c5j^`0iD3)qnn~e3cUg)N z2y~UG^IzF$Bnx~(T8_X0ondE?*<^1Zkt$DWARw2W6(J&+snWuHN~+ob*=6w4NaI;1 zea$D$QB_Sr1 5<}oJ%I>RNK`l znAxpVba>UMRTsBNGMf`CR)LUE0RD`Hbhu%VD65vO8Z#72FclJ|Y1I-!pf&^uPg{{R z)C}MgJPixiKX+ qjLo{Vu%tc*AwoGNH8x(_Qv?LctAVq<-2`3J#g21;c>z;# EL?cef80b?dw!S6#afICTzR7Fb5#5MQ;d+(hUGyL`ZfSo?)+mv`NtV7-2@5 z8}D-hP{0szc%m{WX3e^UJECR2j8{`gln{Cu&o*gS;36DtToW%05f^L4oKflY;1Ns0 zjT<~ufa#qW?nW*U8BgG15sty7NPL#TkQFo2RwU_kUDH3F@uZGZgmVkV6W!v_8Ap-@ zgxQzZ-h`Lc9|Dhvq{5Gk8Fz&VM?W0khs=%r;95S8Q4hF5fKly f&EU>-BIEFNg3D97w+tsRd?7-bFoJ|gAWC6& Ind+Gq^@dPC!Ctx=L`7SUt&s8WZ1Ix0&L<4H0V*PxIio|dP!W}FW&4sdA}wf zD}sQ7u+HMayXs>}$Xqq{q=;)Uc5q_B0SmTOF~wQ3;Bj>0ghU?0V5odK(CyL|js=-? z65b8S@n<#;kzytHPgt`Oi(7&}sDPRYuCchh(V7$+x85(K0#y?Q5HCpt^E*mje|MS! zU #H=o9BhxS8X3Ofb7gL!dQm~9;|x^$>c%^ z0Zwx4_u8xhkjeQPkmNFZ7~ekE0LVGu6&(`Lmj^XhG+S%Xk8AMwzpm%JRSI9)QRK%t zG|+y;iXMLZ0hx$5NF}+;0_A7C{_1BD@E>vMeVInJi5f@k5FB%*hq`{c(XVo<4uQ(q zWj$C@M?NdeiL`r)qvjbPqF`HJm0;VMD$8=M_bk~EQP(0o8V_!qoCH4*YNDuZ6(}-c z&YBYgYDSKEn$J!{G~>eHn`vq){ucncKt;bPknJ*nc^n#VcmX{S-%@TM0GyblN4+&Q z6%Qd7CJ2xnWUlIRnjn!%ldc&uf;~;Cy0W9DKp `(ERbeHkweQy2*fjR z0uu!DAi=h2oye!Hcb;)iQD 7DFoGIfFN}U0H-UUQ2(~@zbu%tT`jc8 z20=KR)0Fmx=NSM1Oe%+djqN)Ngl-pi(EJpZFIv-kPi9PgKpF5h3=EK%J6E5js)(|l z3k1ytp@75_f?0VI1cXpC?M+!}$(% _E zr jf;Yh&C-p5HI&>2@y+!M02x)DpeL>T8MoH zkwHRbFtpfLUh_7g_IbE=XO?$Zb|s9@ %AX5N&-XW`U;w{|8yevV<8ZP97N% zqeLz@5(1?(As#nayvB@3LW)FUiVJ~{?^Hem@hU9;M0k}ZF06MD(`a1)z+p;+inYgU zRkV_?*NX;GXsDKI=2$0!wEzdUb4~|?1(8)M&|si8I^{JX9~p%Qp=q{qY@TLaVF)#> zhLRjrkMzipP@^@%(u#mrm9JKd)cA`mcz`@;jbW*k&zCltRci~^gLzp)WY&*9Mi6nf zCq@Td{MTu)Coa>bEm|orItF(?WRHh9Aqy#yb`gw*g;=4OKqy3YC`JPMr-Rp5N)*s7 zfCV)HNdZN8ext~EFXfy;DRcJ#7%*$LxKNz`r-k=qj2N>-2VrXrP@NcXog<(ED{_`= zA}=J6J3EJ5+v1vpM@AW-0melFCXgaxGC jB2~kKVW?Zs4n5c&; zCqOT2SD4<|dj5!8r01Qe*>)^eCNO3qGq#`i %RqifH3ct91B2%( Cd zVbXb%Zwf2gSuDG!gW{QscX)UTux#l6X%GMvP*akHW#USAqLw{FfDScM^~6C-2bN*E zqJel(<5W<*hLUfBsUTG=BBf6mU@qtQOac)%sEC)U2c<(LQyr8kZX#2eqe+W65O|m< zHZ)36r!fw6R9dQ(gNT_@2dh}B7h1Y 4LSXfnjNcgDO!W zRcqq2ek^HyXD5Jl3X@h!Yz<*+Ip&b@7lU4NIT)Z)GWCC?1EFfNP(z7}J-911) @+NF}gwzB^_7!yH)-%5rPZJ_lo*I_F2X@s`h!0YI1p9kSN3ntUM}fLk zgS32Q2&^gER~3tBRdx{gD1eCnG>enkOnA3R(h{tInmHXnPK$~oeZ(QG)JXlLUp*;= z%=$Ra`mA^nt$e6WqKFU!1_2`QGSlNY2az|PHMJSDH!_1Xr$(Da39ezeHV0O(4KYgj zI1tllhy?+P&-Ve7gPAvTr|{YkIRjLDYGW}NnFN77?}Gv-uvrh$JY`co4;r3NNPBpb zJmPb(L6{JPD N;S-rzI z>H>KrBe{LUBO)8RBuBczW4fQi0l%X^!^5@VLxxcUJQP>Dr%O2^00B#zY821`lA}HM zgOOKrIvoJJa|oG-8LP1WnQEd-IU~R$LhE*&V?X#qMCq$N&ub%U){s(%h)`R<_Itnh zo4@+Izx><3{` oWKgazzp2L4*b9n9KjMi!4zD<7JR`NoWUBr z!5rMd9{j-|9Ks?z!X#Y6CVavuoWd%+!YtgvF8snU9K$j^!!%sOHhjZ4EEgegY%Ku+ zGn*9@aBVrUV6vzXM4ZD&j3*GV#1QZSw)+)3Y*Pq25 9LEi@V8HVLYb+LM%o2A@6>Y2)a4g4wj1Y7j zJSP@B8nDC~aAuAFIRj@Cov$Sj6z~B{JOiv`JQ^U$A5di>009WF$ulrJhYSJv)3uH4 zoQV^}os7sB6UAV|#G(wzk_-Wq>=2!d$&H!H5WoYhw8nOfF~|c!o1Ds-Oih~%y@V{r znCw51Jjs=8Q rYm7WT`~Zv$B&^)Zr!3Dw90C>a z03ndh_ZR{c;Ls4zn49dx4`4e%tN{ N+&Cz6R(bOEymbuUw{m}Nd#3azs zA0RA}Oac`DaL9tS#$Aj&1})1WaGgFp13i7nG$zWKyv*%9qaOy*0|C?%y~!5c#67Li z6%Et!EG~A;&=n9T+I)OeN&(AU0rxD)7{kafO~z>qx4GQYo6KqprU72f1En0qXx!29 z%sjG8)fo!Sk<7?9f&g7z0X5Bl{hY%KW-=us$!N35=0c?cfzO;90@I`cJRlG=aMlcg z$^x;;V$#QiSJ9*#(h1#|>;|`-mdD#H5r_Ov>}EZw-D!!F(~oS z5M {XQN=;3Byww08$)l6orOesBO o7oa;Yi?BD)_&v{d2hkV{dBF{4}-h;hh9J(H`3hBeItec z9dw)w +is2@cQ;4$$Ue@4SxIz0U6iKimSp z;TXfYz`QH&+|tcn-N*Or(`4`tq1Y=P&wgp>GXCX5g+qWx#_yEdvTp7({Lj<>CeI?z z)&36h&duheqv8b-?uWeV!tD^A&Tjqg$cYW`!Gp#5KJ%-)@2w3siBslgzU$TA@M}KY z8Q=2}j`CHHJeF-Rzb4`yU+~iu#BZMFjcN9scJRr!>03PFE^p=-v&3F!>+%irDlGGn zdn5uq(FJWZ2QJWF;>2RiZXZtE#eSWC-|$C00~1}-vaZ< E +D0^-)Rj_?prR47% >o&r9sY;a$v-C(;d`>gLR8ErQ7Aqt75F`~U$!pg;s6 zK0x>oVqifC5N1>u2mk_wg&GiEKmg%^zz`53cKqlOKt_rK6AGlD;oyf05nW=K(Ga6X zjv^ysu!u0k0+$09 tc50bKm{djZ#Y}&PL-^QI=_io<3 zeg6g?yzgw`#f=|Fo?Q8I=FOcyw@n=Sbn4ZuU&o$Z`*!Z#y?+NEUi^6S<;|Z*pI-fX z_NhBCU|>`7`}hLs%Wt1w|9<}c{dd1W0Rj8+po0#kDy+Z*>$(rK1_5|bF$CaC;UxwX z5aB-!H{`HG4?mnMzybNH06q>5E0KW{>56bZ_(VdWf(m$Ai~ b71O?!ulL4L(=wO8mR6wDFh)fXhgbGB+AOo-e;uNq>1!#1sgFpu@^w2cd zY}3z$K0v`l5qyj&&plBv0Zs@nJi$IF0aXA3NDUQrqz(wp0Mu4{N &{#V|0iCBPg_buI(n91Kh`1Dn>^V7EQZ%(y}TbIuD_5J=8M z>0AH-6vBmX1vpXVKv9v*ofAw({}eD&aT!2iD{$FmAj5J2E|#DbE)2I{flw`VR0bM` zx6b+qT31np<>J6y2AmB+1q?>WfLoCXOCelmg){eL#zYkOFKE3S$lAeV%vCU%N5+{n zZ_(6%1Q|&%7fYN3%z$P9rVN+_3Pw0p+!U6&u;8Kp6)0Lpx#(jc1rju1lL0>~==p&M zNH~}QED;cp1D{DS!Cirn7C~vIA2yY4hee`Kff1md6V53yl)Fp0CiIAd4@S!1@C;hc zxpBNE43}}>QhtnOYz3F==Fv2FymQQU?nwhe;RBP?3esK(VV^4?0lts{0QAOzG7!+M z(-lxMF8Xrpl>u@A2x0VdIUQG71b8%CMjPSVioS*)MD=w5XjcHM USgm5vc3|DWKHiUc&(ijtBr0VBd{S@T(5Q zYXuZ|neIxcfR?081Mw =!qeAixADPywGPI74SGK!|O6jYRav zzxdFuU;+_Q!_v1!0DvwcNTbsP1@ZvY3FLMXq!U(Rmq7rKP=01C<6Kb1#^r?!jKrE) z{^-Pk6Kn(k7zpFOE`$~5)eT|-Vq?7Ccshw8ta@?L0IndE0Su_1D6LZ&7t zq6i>KC&)Jza#RX<9(=SIFG-$JQ3CSeIM38N5um_S%3^2Z%15 6Gl(z!mC`2H~fNK#%E-2uuL<`71 z&ZZAlBKhYS1q8k}Zclq0pc%9ThRPyhN(B oc aeV( zq-$@YlLmw$F6cr)sVJoX(A!*` QxNo achQ1C)xNffqi$)2y%&f?K9nosCkC3qn89NWnTcqZ-$2( zfq=AG=FA0nw&?syIKc!bnYFcq WF{}=;vYzq?4A~Gu3j;%{b>;!F67<0??gj0jVs810gpW zTRJE6R^Zfwj&Gs= lZvsH57^0o@w8z)DoI4_&{3OC4 zqUIdoS76Gdrd%Z xFQU6u{)(21^1Si<6OYl1a88z?Vx?X+j-L!88a23Dut~=FyhLs0*p!XMmKnBLL z)}@M3F4T)^Xz?eY7hWKhix2Q$aWB{-I?J$#RV=R+ZMDbhEwX^cJoJm`$SZ>0|NjTT z@xZ&_yRj=W5>zuINz*^rBM50)6V;lka8V{%TC)(5pq8M!1e_sD3ADw5wBrdET$>>= zK_;p?K9?v#0g 4XOv_ qa&bjNpu$9R;- zd8EgBw8wkI$9&YsedNb}^v8b$$bb~cfh5R+G{}S0NA@tSbtJ`w9FGOS0I`wCiKNK? zinPd!#K?@)$c^O4j`YZn1jT$&n< y0pu?#LK({0k`DK zzVyok5F7T0JiGWw)F@2TI84OEjl_(_(-_S12+FXO%*mw8$~?-h#LUdp%+2J?0I P0-lQ$B@nchZIWC z6wcuU&CWE=<3vu(Bu>y2&9ZdO=UmIxl+Nj7P3W{vwS-Oe_|3st%-iVA&-hNy2v5!! z&&AkIpbXCCRL}KX%H(v<_k>T+WY5WL&JwuJ`#eqR)X(X}&;HEL^f*ta>Q37nPy#j3 z(g@J+h|Kw9(D{td2Zd10Y*5Lp&;Gp5{lw6`v``EEPxMGoMJ!O-D9_9oQOqdO$vDx& z_|WcH& i^3EY8(gPJy#}v%;tkER} z%NcdjCzVPjZOR+%(dXPz{j5?S6->TJQOW31$oNt)4bj*L)4>SR?PyW|DOFRYgwi&3 z(lu2|D$P>Yyi(Mh(+%xVAm!3Ag^e<$3_fKIKMjmC)s8fU(?c}?H&xUaMO37e(>tZp zI+aUE#nC)9k24ii#>i9&0n|V(QqmyQ>@d_umC{8uRR|^3qO4E*q|{b5OCELAJGE5E z+|y4b(@tHDO-&44?Tb*wj!{k37d_Qsjn7~m%2kckWL4HGomF&RAZ1y=_3)_X X=vmdaYOW#Mg^8PJL}o zf92SY1x$dY)x9WF1V{mc&6;TB3x%c43OHEW#DEt-S-MbI0e#q9ty#~ASn8Nqimh1T z#MqzR%!=Jtk0n}HJy-F-)WpC58BhTdz<@MSLcma2y|@4w;ER`y*}0h6-MU$ag;vDy z02nyaoSlxHjnbZlQJ_^@t`yp#E!wwbR*-d8xv&8Tu-m)E+q~7=y>$Q^pbI48+Nyhj zjS&bEc!32v+@n!}4v+yE$RHJXfylMmE@FVewUn2=0LX=0$%PQeb=-&$Tp1{p$c 1&m~~xrYh7Jwm@G!!3}RWBI+F$l02SCUfp`J`p%GsL9@!99%*DuoyNv;OP13Af zVHS4bJFd#=b=w){W70fYpqz`k#o 1!K1OCgmRoccS;Pq6OqybCdJh9uU&S4W6Nuy_c47?R z=J}=N^_tu+*0Byq-1@CzxbPZKz5plIF% <()ns;PxBO%O@JL$309+95;eq(!Z-yO5zUFL(6DmGu za5keCc$dTl>90uTF>aXf^^+r(ymx-!%T47>PUDE^5rS}HjppaWxaGm<>A)CSUhZY> z{AIQ^XroN%q?S)Tj^T%P>a>h#1r=DrSlXt2T8A>=@-=}5mVx#aTuAQdDQ@4b7+`KT z5RF!4oL-@-P293BU;uDpzmb7<&S?{n0jEs?Qg&cdmT9G%+=8{=3NQgIL87OHTzz(n zogQ9)u1&-UXuFN$f%awPJnErT>ZD%bV}5F N1 zom>*|+^RzBOzt9sMeTtI-RCh_l3RiQ7pUK@-EGm$=)HD{c%JES?iJo{-#>!fjhWe5 zR_wy~X`s&KzS!lvb%9 FfE3F01Y_I&sNv3W!LHc z=frqy2Z(IRChDNAWA47}I%a6_c4+aw4YML24QNJzU ^Es#UI=AyX$MZbb z^F8PDKKFAtpYI#Ua~N+98P7~(rE(0n@+-%3qV;gx2!R=pi}c1fE*}XaKk})5ZzgZ@ zPJi&iz*`&u3_@oPLzhrQO>` 3>~;z z8W0RpUk+1;&*fD3m*?5aX7z@K_?oYIiHGQBm*|fdd5|A@lK=U y{g9mrD7yPwlc%u}}xkvoOSNz3~__nlr zoyB{@?0en(dde4!fd_WNF#6;``oZ`7Q!RY4Wc<-5{nEerwS4@tjeNd`aIUZX&=}De zxLa>ed9(lg+b7ol&^Joc=l$Lv{eRV7z36(cZ~eU2d!M(~@6~+U$NlC%d)+qx-+`2hkfmL3E8*X94L& S{_~$v=%@bmXMdYN%hYe))o)`?KYrxz zdA-1VyFF3zKMwOp|NjSw00IXRENJkcKm!UFGHmGZA;gFhCo*hc@gl~I8aHz6= 9u+_{nNc8pZA100om6ZffkH1g!imosO6`Z;uptfy12Zqaq| z>@;Q5q^*6W_wNA0izolxe0KCJb4b3SmAm-(0FF1WZ~s32{L%OGZ)p8LfFofiAA#`6 zq+W3d_NL&11Rm%hObU7coD1(kSm0*)X}BSW9h%i2h#&?yB8k_bbYXl3LWQDB4CdzI zi!2f)BX~i + zI_Owu8j7ZxiRN{ppS5v0qnwdSy5yaNsi&o69`xC$qkt0nDX5?xIx3=ys>vp&iap9w zrIt?0W2=G1%9nb2QpM+{sbU6ZsJ;3sCaJ-eYHEO}>KfRpHNGn2th9RB>{jTx09>od z9=jB;ziPYfkivTV9I*fzdu^^ZK^yI|%s!j0OjA{r8M%#R%Pqb2I`=KUriDA*xbY76 z)4G%fEHJ?}MJ5@t{vI~3y$w73S-ugYwy$0NDva%$1Jih}Rvc&Lu~XzB0Gx2}UYwc# zrw^;V@>&wR9390TS$wil)>^5ty6mC|a$z>zNR@jD(;QpMEE|2aST8FLbIcdbJam@; z>kJ{!Jx}dmc$iXUvvE-CSTxdMi(SytWiw6e(_Zt$b=8PnjWy0JhG(k-xC*VdQw)#2 zx7cR;J#nIG<6RTmaqn#S;RVMuZKewko;TQhOO7;j3H|Nzsf<2ebH;DW*Y;7M>jo=L z?mA$V 4*c=kbX?)b6|~{!$H+QKqWxH9s)G0In-Pc3cO^ zE-{I<7vB=@zsrsIg}wXq*o2Z*Nc{AE9gqC-<%jLoSI Kby>JB _Fm3XGsd{B!o5up^J z7{&Rm5dfyMTNce2LKhYhjCL%a7|nE-CWa4 00I`E0g$%Dq6qlu7DZZ8k{;8fCH!H~=1EWL z+4G+Liz!qA$j^^ZR7MMcfJ-RA)AtFrs6^E!1Hsxos&vwpOJ%D6Q=J;swZ2Z8GOOve zFo4ybV)O$Sh>!>Jn%8T3b)bF~=;7{H9F{)LrD|m>VpVp^x2jD8A#e!>aEgHsY?UP( z_2>r{@YBt5wzHo7ENDY3+R>7>w5B~RYE!G))v~s=u6-?RV=G(I9`uT{eJx=JXV}9g zwzu|rWJjusq7ckrCJ2B4d=Q}5y>=C>Q|#+sA*8jsWhb|I+bwT>t6gp>F}QF|RR}&% z69`mbJI(!EEM=MA-q6hk+eF}5SAyN_ZnwU^n&F~`7GCch_fdRxu2D<)-1y*tLfWye z+U84N`!ZNm&&%)0E`Z$4szd`PB7tUgT3qu=ZNMj8Z-X}f1{^qkDZcV;YFfM4;1&1k z!5R@RfjsI_tbBk1DG4t|H5$?m2l#|x1u%<#IJ^U!SS1QxFpHBMsLQ?hyJq|^dOiGM zDHq3^-$Ag~j*Mg_a~W7=YjTlUdEP0*6R>8Mk37YLWvFR+%UymmkiLu&80&V-0xt7N zznUHPNanrr4fA|ZoZ@l9xzIvVT1M!6T|1u##Jlk`U{Ew&m8J;LZBDD9Gks{xInBvh zgff}+9BNVb<_0)|w2>_>=s^=&)2`MKr%hyOM*En`jdpZn3h4nfw3Zq8SeCGKb-0&mwJB8e)ca03+ortde@N-WVvI>bogufm2 nHLT=b_WdFh#Rd!1L_OskJq>j@5XDh+>iz;Q3_$8KWH z2tWY4XLatC^ZcJ*(D#=IVemPhc-O~XF;)b5^7HQS<~x7-5s&=n4`TkPhcQIICs+1g z?se^NKP$C$0HwoEWM5N&{N-PN%JCZj4&dJ55s|##wZvc1b>0Fp;8A>ESutMiEnokU z9{~nnuw9@A7NGJR;PoAl0wUb}$=?VXpYW{8y;)iXTHpp&ou;)Q462>$xZelf(6QAY z2|8fR-3GlmfTq~S1jg3_tRM@*psU6IAQH-;DS-$A9!m)BU y@9>&QOq9NU7MS-ahA(o2}B4Q$L zAcHlcC^}+WL1GO$(G7OrsHx&AW(IKFT`HDX7HZ)qf}(GYA}*3*2I1i;_R%IeD#p j`DTlN7iBzf)PpPWJx;AbNFMM0Hk8{p#)yzK)Rx2gxf*xUozI@ zLXIK~=_FK69#2Z-G@8pF3S%(FU9^}E@`X-E(j-$hrBj+uRF zrcH_>%akT=lH+}qMr!iNY6?bc0;gbRA_T=|VlEXu(q?ViX2ayBbLyglp{8F#h(+ZX zV@Q~j{id^E=3BaD3cbt6949>`r*eX1K61-*rYCd~3U5xQgWOb3?G#L4zzlpqb^<0l zW+me3XH5thy2vAPE+$jz WhNx-o=3De;V93==gn*4fXp1bD2WaPB2qowR=XN>;hB^RJh9`iIr-0gJ zUT%np25DqQr(2l+XkR#%OH=?)u_#?(mS)`+lt!tPPAQdEsg+(SmEPzLJSmoTDQOwv z+x4iA>ZR@pshOr T-fAuI4K4g^HTejD&G%g?&(*f>NYrW`!E7 z1Ad>Z&Z<&+q^;hnu12f0E)tPO1gSnnqas&I)L2Ul>pH0 gcg{=LjM|6@sbQ(dulntB1a;z)owmLd3jESFz%&o$hC) z#)MoVYqQoWz>4L-R;;eZt3({EgVd{WawocOo*>5LWu~h&iK(qxEXv|)!8(M-7D&Q= zES^eX#|dKCxhBbe(z;G;z@{wEis+}vE21tMxRPtbwqi@dL?OYV!ba@B>MWr4EY$k! z&t`1Uw%gDG;=*d4ynWoB2Ih{ctI4u!)Q+uzPOY_8t-xKa(T*$DF6_s}K-Ki=raG-R zlC9n5rr8=S+G3pAV&%~iZPBL0$K_~#4weeiZ9U$t;zA~SQf*ZNp~u?ny~3=+&YsLN zt)C+Qt}-qz=ayyOvh3crT;JYl;F509eq7B;s^QL}=5B81zV1kVZbP)Jc cE_t~ZPrq%eDQAYR@dPIZ{iLw_2OdjJ_PN4tsk~3 zt8#Dm#zZkDRSx 0uvvXD2sf|@cWMde@a~;3=vHtWF0TTY?tTjY zq75vo?gp?N4Pgz3@D01J4nOgTk_ig?u |@e%uLfG#l;H}TU#F&R@` zg7$E>y|40O@$ +eMu9OObaTts7&XzGApWm3EakQ ?xqsGxjdo(5E^LYS=_&T*rlXOX&bWcw- z^_FK5q4c}%u|Ny;Qn08?0|1InbwMNa_ZBc;d>j`8vnNq?RbRDF3$GaWtQ3zj1Ykf) zjCEPR^;xU+I7>BgctA0NUrw*iPFJ;6%QeL+t~#UaU4yk!@IXwDwN| Q z0>|l~b-5;XTr>7ulkHV^^&XFM1wa4=ctBo10C{2dQa5xE3wCaNU+T*5NLRCBgE47; z 3qHRJ+zID__3^k5ChDBdwM&Qd^c)A4Tu_t;){V-qTIOSV%)mR|36 za?5iY(>7)lc7;Iq&1vs+SGRR*cWJ*Xd>b=&kI6vG;%wVCP1p2p6w>#ocgT^lA-lJ4 z&v$%BtAW$EnRfS*V88=V0E9!hZ2vWR_cBxOMYHLIL30&46L>@?_;%|mh%0!I+P8Pt zOtyB^gpc=T2exkCw(|nGhO_r1DY1ta_=w}MwB|U8AE=4b2xV#i562=Vb04&tLG^ko zchtc3jq~_Ad#aOjHQtH|UWa!k=l6@pahAV^2UMXE%Xq&^ca2l`jlXx4>-d?Txf4sR zkc_g0@kDiI)L=Zo2XvGMtjdsgW`$cgaTN9?C;6UpqGFc$CaXD`2dSYSdfA4_C?kM{ zkq3P0RAs3I24KKXNmztZc#AK$lJ~?yXJ~X^_*IBDp)dBCn`xpedZ04;i5o=-q&VR) zC`@Q;2!V5*ZaSwI$BnXbfa7}CxDQaJ1O G`xL|?xIM>)xy+Im|1dbsxnP7h_E>xlkn012f3goIs`D%m))CwsGpcxleN zls_h`(@1Ow1(LeNRbf oeb9R@w9|+N)cH=W{iL^qsnUeE`a8JWtJOF4W!zr^o4dHLjs9@dw4caj zYy8(2I@uHbGZy}`6KIgQIoq>+O#CW^rNo;Hyk>d-z^kk3+#C7cYyL-jw#e$esOQZA zRlo%ld+GE1;B!3UKY1>$e&WaO;zxU9WGjuuG>%bLz*A4=$9&zZ?%jJf3T}8%0lNTG zkJqREHM>6RH=^=~JekHm6<2-lFYV^Dgcj$1sGIlQ+`MeKHtHk4>No#^x1jhNzF9&) zjaYu2XB76E43 `QQNnmoH()lsS`TO`A0rK=?p{ z0*Mb07Tgp%bY@VZFA*G7x|FHQq)nklmHAZvYSpMztu9^QfU5%=9+qOwI##GyvQ~|r zRl9a71`H4=xOH1W!v~xc2;|kfmv3LcfB$9_JeY7{!x}**R(P0kW5*K}N0vNUp-Rh_ zF^^=)mNNhi8e)F#Y%}dqv!l p4yC`qpN-01PKAbp) zyMU1=SFZPQbLY=3QeFt1dUcA@v1i|ynR|E5Eq_aeU>xS#@BnNN-F;p?`>N~R+k~$+ z2JQ6i 2*&$Qz?&AJpnw9FOHe`PtZUFg=MsBR!s@iEutM)J#B8(vh=QPk zm@0tay!&pNk3*zRRLaB@SIi0q+HlbSFU8wte2K&wS6i{b0}))%$K)mqQph2RED|yc zk(?~UB~jWC$C*O-fII*&_#lK4nQD Z4a>0jq>0P?4n>qV4{o3h2B{KtFVfD?EYvEX03c4& zyLdd%%}@EFQ`AvOrSr~HJJK^xCoQFtgb?C#uhN+&Wv|xoZpAgXt!Rtky;fn$RjpZp zZR$e+Do9pYWjXD%M^K?HRoZE(wGP#57gCi;R*TJ#*qDU%E!^D3CD%0 7}P78C8?JL)pvmVlpp0m>2e$EUmX54d<>hu8Hf4aSR*innHj8 zR+iW<+URGIc9ZG3>4wwkJE7)I>L)z}QN*jW%-UkXIs4jy8^G$i-80W73j*+n;`r^j zldjwH%N@Mi&b&2*yin0#0{!K{2VcDOwG8*Q=hJ62yK$MMR7DVH1b+i`bH^CUUH zZ11vlqM!nyF$J7Z)>|F_o9we(XtXQUS2w*z*I$Q;f-8@jo%Y&)%-#F%_uc)%-c|a& zY(It5fO?EcmmXN