From 5c13878b617177da139cfeba79ac15b39b351963 Mon Sep 17 00:00:00 2001 From: Lahav Lipson Date: Wed, 15 Sep 2021 12:09:33 -0400 Subject: [PATCH] Initial Commit. --- LICENSE | 21 +++ RAFTStereo.png | Bin 0 -> 682359 bytes README.md | 113 ++++++++++++++ core/__init__.py | 0 core/corr.py | 188 ++++++++++++++++++++++ core/extractor.py | 300 ++++++++++++++++++++++++++++++++++++ core/raft_stereo.py | 141 +++++++++++++++++ core/stereo_datasets.py | 314 +++++++++++++++++++++++++++++++++++++ core/update.py | 138 +++++++++++++++++ core/utils/__init__.py | 0 core/utils/augmentor.py | 317 ++++++++++++++++++++++++++++++++++++++ core/utils/frame_utils.py | 187 ++++++++++++++++++++++ core/utils/utils.py | 93 +++++++++++ demo.py | 75 +++++++++ depth_eq.png | Bin 0 -> 3999 bytes download_datasets.sh | 24 +++ download_models.sh | 6 + environment.yaml | 19 +++ evaluate_stereo.py | 242 +++++++++++++++++++++++++++++ sampler/__init__.py | 0 sampler/sampler.cpp | 51 ++++++ sampler/sampler_kernel.cu | 167 ++++++++++++++++++++ sampler/setup.py | 28 ++++ train_stereo.py | 258 +++++++++++++++++++++++++++++++ 24 files changed, 2682 insertions(+) create mode 100644 LICENSE create mode 100644 RAFTStereo.png create mode 100644 README.md create mode 100644 core/__init__.py create mode 100644 core/corr.py create mode 100644 core/extractor.py create mode 100644 core/raft_stereo.py create mode 100644 core/stereo_datasets.py create mode 100644 core/update.py create mode 100644 core/utils/__init__.py create mode 100644 core/utils/augmentor.py create mode 100644 core/utils/frame_utils.py create mode 100644 core/utils/utils.py create mode 100644 demo.py create mode 100644 depth_eq.png create mode 100755 download_datasets.sh create mode 100755 download_models.sh create mode 100644 environment.yaml create mode 100644 evaluate_stereo.py create mode 100644 sampler/__init__.py create mode 100644 sampler/sampler.cpp create mode 100644 sampler/sampler_kernel.cu create mode 100644 sampler/setup.py create mode 100644 train_stereo.py diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..14d0651 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Princeton Vision & Learning Lab + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/RAFTStereo.png b/RAFTStereo.png new file mode 100644 index 0000000000000000000000000000000000000000..c382617f6779eabb2c0b0b010287e6acaa90c8c2 GIT binary patch literal 682359 zcmag`1z1$;`aX`sfTV~DiZs$lN;iXamx441Lzi?j7=Y3(-5`?E9iq}*0uoBMlG49- z_CDwAne#oL|9|i6(&d`9-hAFC?&p5i8+BDV0z5K2G&D2<1$k*rG&EdtG&GD?I9T8g ztEB4;8X7v2wUm^)t(2UUqn)F(mXoO&Ow!!(8B9~|(L*62K{PbxXfqQNO?fuvF4Nm4 zCSCokEO^cynjs-!nkE4~ZQX4hG;JndGZWq!7%beoxzK@z$whX@xAAKmPB!P}i@r~B zo%nT{nxV0Q2h=nJsvOJ@OifJs&?@44mGGcjR5beZEaZJgXwOK{DRIml(Lavf-y$;M zyLm)eo*YGENppq~)t`uI!4tUkQz^Lo8r1H6GY!q!yO@l)4`_SML0NfuuNmL?)8Hs- zvMNHWT>K?r8W!HNZ(h)G0!?-Z$86;-%O!v zZ(C@M3k+N)eAJhl7-$-J0|Vpg@vC=aL$2t4SV4X+F-oC5nP0iMNqM+#{=`7D{H5sC zs?jYER!$oBRKY?;1?>U2#zBLi-$ug#SLon>v|wvA%)hSD&=|qrXlRg3$iMI4l4oN4 z`x@gF;>TMp)5F7q!-I#z(bNO-Nnnn)zp*S!G-ScM*iK7G|a`! z+1km~+R=dq(XQz;M>kh7T3SR$|M~Clak^St{L_P~Cdu+P zTmBaDongZA{_{s0>$RhuS=Qy=#6&n8t!zsoP4=H3QLlb+1VVQ=IGSZpZ! zmT)M2J}7qF)h{s5rk7FC^yg=&=7-0HapQY?y_~%t%{nzpT6Y>YDK?C~*BNFGV|FRT zysL;gjYPfTy(DbLnBTm8>-;|8a9oFhmiAND<;iMBqE>;b&{!lXkL=q!tSjmg&P(z_ zey3GZ7j@4UbLFFHZyeIehDGsM4hW7#QcD=&k#KCOOW1wm67twdmAW8zY`Xs%?~e0( zYGK#+sS*KmS^l41;cAwfNCux;rhCb97}PDOUrp#cDqNnQP;O*+Z?M#R{?3-Vm~m`n z_u5}^dr!@69%9ho+MRWo<}nv7>a{00Mo1<4^qH9%<;J|Z!fl3Nvz4I~{0+$J#o{>>_to3-#=k~p|KaK^bhnuTT z#oB%E9(H6I#fl#9&d+BV@w`&W5TDI5I?K9H(5;%EzKWCSEL>F4eevRj`NmiwOA!MH zhbk5U*^)Z-?c21mOlt1$TYXO|L{FAtZyXA%2^+J7&S85?cu=V)J45P1G@s4X)O7E3v#g+) zKf~pssetWNXmZe}XK%Ols>fweEU`lG?OpZDsqo zAD(f+hIb_|#Fcdqd<^Rilv4Cy4C!XjcT}}6BdnR#1 zRQtWUWDp^B`koVzk^t$}TCD^iA^G0M7l)I^dn+l9`Jx67o_wG`70amDnyQpzR84(X zq4z+iG<9Ru>Ud{1W_tC#V*G>b`F)n&fiw}=NUj1)QJ!A4O`$)b6^*maJh{NEYwQ{r z>E79H>t6$?{q7u!xKZJEcJ#RQ_=8Rv2L|>HWv@EBnHrS?9}(DaYe();a|5h5;c;uN z?f3_VLcc-B=_&>BKMOD8`jygz-Etl0TW%bZ3pm6j@mLCvO%~~>ogS<&s<--Ic%Q80 zL{e;QPL^>-itdF-T})To!X}D!ZyXYk^T!!Adkc+~88z#PUmR!!pUQ@lb$1X-Y^k@} zj6X;c^Qn>Yi)B<<$_l1(es5gwoacKqWqIRJC51m8o7#6M>oU>UKYCE&>U&lTkm|iQ z3_`&%PU9AXmA)ji4gD&s`?HN69)dx5$O`6{N+8WV#oe4oC`!XuANtbgAS?c`{p9>) zUj~C&6aVLM+pDn`k4N;Lh?Fd9;h(F+2+W;i&a4kRr;d1Bd~Mo!t!E{t{lVYslx32P zEK1&sD(vqVmro|_x7BPInvX`O6ZJ%dYX{5+Mi$e44}&)N6-zkv3OWl`asnR}hATy? z>1v7$cq`j<7P#$h3Kddj=&3*P-nK2*&||1R(!$59OwXA9eVU|N@?Hw@jG8q$;+eEV z@4{`DCuajk^ZF5Lwk-$Z%Kbbgi=$*^jge}${%PBhm5bxMESA2h_7dRssc62Nuim9K zWrp^db+|yuVw(N@)FODQC_-)XOsh3mtC4zS@A=W6s?%M&08RYq@!i3y(?z>8Ysy`_ zt2D8>QxUih$_g5ybCaL!eCOsyxr>3`-;hPhuUG59ep)u*roh)Uh;ENI^2gR4eWDT=)b>d3}PaayktiRCq zbu!d3qxOn2oYiZP7`87bqkyI4I~JQwOzyV3OzMKcYl3emFEy9T24iw&)uB8R79zr9=(|?JKeFsf*BM#qUA| zrM>N!_oE8FmBiG_Ke@WcmLvW5a09R7-?WP}eQ@Jn|3-|j%@Xs4uLb>eOq9X?x)rFA zBin6T*38%uOqlq4vD0$%z3RER;j^4$*d|~7I}aR8tmXJU_5y{LkmR{xQ|~wb8nFY( z5cK%-XKA8eR5x!f9Bn>FZTC9Z0I#p2L-_y98!-qR<#$|?K?LL$qxS@zGL@6KWw`f# zeZ7+ue&p*>i_5R5tQ^zUhPJ=J{NrtjNYigEbU*idajZ}r!M#y(xar@XK~zv%S?lG4 z=;-K?Y#IFZxn>_SIgRjt77`88!U(mXGfvU?`V#rB5v$YQk^-rSd$HkF>-nA%k?-Rg zJKaWa4|{qBhU9#{A^A`&p=CVf7^UY57AX?vPuraFF}r1^YJF))BhLTuo2>m$$+>Cw zS?u4=%HI!ohCn?%>)7;blpPwk`G?zbAlLA^etrpMXoQ59atm?0i9o-Rg#a3%7p6kDEwY!`28tEvu27O zx5x0C_8|GyO~IO+7>YUZG&tSWI|tc+?={N2p$(9$i;P8ALNg{5Nrgk*aUU0I%DC@* zXX#Jo>;1)`mMVB(E|Mz#&!0cnGh*igNjMl44bI0I#)~_@$nM5tux7-)`c^sd!01AH zp&`Xbaed>W--@q89}vb3Wmj*PO14E)1{>SobXw9G?Kk;b?bPK%fq^s!R(_;Jzt)zj7agTh z5zy$#fC2Yy)JB&f=z;B;#Vbmf6!iuZKIHTZT|TQ3>8K9yzZzP=Lw^x&kR?x!+%OzY zh>wXG1cuVFpOTby%PEeOZvaWV{-eFx1Tb;<_rkr*iILx5ScP1i9>$t>1StTC)u+c1 zbjB~z5m0Q4)={HQll$lOf39do!CYX;5k$!P7A-IgKULIAv%zhXQA0z6RHFM0T__1B z2ZK^V9Pn3}2Ap@)ArYzjd%-!lf_uTb7GcPv_|GPO18U2BxBV`PTrD^Ux~vX#+t}=!A_CqVYjzni@_PTG z1}k`OSxU-+-2M_As;nI5y7f(?#$nc`w8e6e%6cRh7hO(>i^O2W4+6GkFd^aZ$^J4A z952%8jk+(j)XUj=u;efzfZT!8M_@xZu=0eEZ$fG6p``}(^lWTwUh$7h^q$bt(r#@u z*}uFlH^*7*bM5_ z_m;XB_wK7^h#P*5q~>H&OLz5}S?7~))9@C)td9f=BGp3{MeF{nw*?7=un!vWXd*8| zmn6EO>URBVdMr?eb$KK}N}SLCJbx1z>7jJC&ZqeQzgcQTvz?+mipb3(4kp;4_(@iB zriCunf^gNp56?mz)Wjqc^V+pHSQA>veo9*a;v8huTjZiF4qX2lkbTxN9e!0H`>N#s z3U+BaAmQW!3AOY7`VH>e$v<2KZz3;RlQB)#S#TQ;atGj~h|08)Il0IY-(O43jToLLVL&9k-YS$XoC`U@IR1w!H;)8@FtynC1amIOAF8ttx#3R)Q<8+9bWsN^on0=RDKloYyEAKBq^E&Cf1- zbscn>VLrl(i+*b_9=FhRi)xff_yw{d{(I%?G~uu@gF*#;s8gHMFQjSXbYI^+4s7YLB!>l6eaqt?GE#UN{Lf7i5&W-KGb*I zG>>*>IIC^Oqh4IY|F+?^m;`C5$<=%IEE`yPU4QA@M6rL`+uR91r%5nhoqw16$tml# z5*%%G|36yjKW0~#n5I(WF1ipU@}8gTnEd$k8fbZelV2T#%a>=ngBl^femQk#NVMYm zcMV6-H`ehjFy|AQFEQ;5+?jVnn5{mINC6^?VC!rTZv9z8om@s;J*qAd5RIy<+L>D0Wte; z#oXp`4G8sYJ+<*ya6v6_xVg z1~+o$^5F;x_qP^YHazd+%&@UAh_ z3qoH=bDHuolH@d^A5wJ952%E6v#ZcBA%mka^*{jhK+OK#?kA$ z)0Gg^Ict{|4IASnHg-f>#AfMTi@8m-wEKj!XG)3{N3bIM7ce2>oaNq!HgCeh;_kBR z$%9bd&%fz9%CRrS!-NE)3iLuMG@4ds>Ed`k5!gGIYzw}mhh|uTvg=%W7!i*`Cu&3< z@Ozh0JQaF+``KXfsm+rjMNiL%N)y@P7C!40cQhLwvlJSf$XZ)>o8(S3#7*ZZC7Pc( zwkmaC9nyR3e0R66_(2IFb9&t19WXle)bK^$UhF$3jU#qyX5b_>Kf5{n@J&MAX*#3-FS%n@-kpEskH8(_z!Fo?sXU5`Xd<<0VpT@Gt8=PeSvp z>v;9uEo6@iPL2sw--G?tL4hPUfO0VVogO^zc;Z{s9fn20=Qu6xzCFh-7eNtUy*Z(@ zsm*@<6_(fd2i=a_c2$q~9j9z?RTZLE`jb!Z#$<$loxzCs$%d}^@V6HmOZXO%9FfzK zrGRtAkK0ah*I(8m%fnx%aiJ2S^S8#hxsY|fQ*GOJ?L0>#yW~TupzF_%^Gc^KeRi9f z7Qcqa0=&v-|68gk4IR4N1X_0OTsl1f&Jq~L^rjk$1LepD3y4W4yQ|Wwy6II)?X38A?80GorRedsHSlrMoL`Pb@1h@rr8{A zPgnQW>;k-s-wpc)1()0K@bKRLphT}_h96@?*jPNPj$P*-7P8Vn$iFdSbtf&~{YKU_ z!0z-Uuy0Nr@l4lYk){bg|Ae_}evq0fyrYLMr$VMJV0iXxQH@@w)L^9PBw#93uhzzT zhD7^))Z^B}gj6!DNw+L`EjGn6ZkbwJH2yBOvDI5R-C)uep!<5h*Sjo-a<-Ijj#a>V zl`o2QE0q_V_R_#HO9b(go}zBT@2UiV*CZ{_mgoae=ezf2iSwkPN4Hs|7$cZtEQr&3 zhI8afg7^RSto{*sxEk=(mPSW=7m!aj8u}oyJm&(l^*p&|jk5LV?*=y;rTe`vpV<~_ zH73|MT91CceXlEELeIYGA|6iXm?3$Zp$UiQ#L)^>8Ww4@v#4jni}h;)(Y1eh-KOs!+0YMO9&i{F{DzQ_0H!J>OzbegpehDn0Y zvx!+Wr9q5uVIQP}c`lpzeDUiF&rqHcNh>K21`1|=>qU4SKI)=lIxEwZz;jHGSEJco zrn|M&4xHC!wsfg`>H{K`=Ea*Sk2HQ<058ewih>*BgAR$<5_5i5BolgfrNVZi_+eS= z)n%iuca{B2%}Blq`3b-`mw~;omf?N6QWovvcUJlnF8q#j zYz1l=2>>Weayj`g0ObFWbu+BP$ZBt8?>FRSYqJgn8Hp~D-6lGqAXGC_VwtW}2&&6Q zP_W#(bxUX}T-i7Uo})Z^vi0Wjo|Eh4`L*@Y+SVpf@34-h7Jm1psalswjz+%}etZ7I ztK%sW_rpO^kw+^s0|IW(pFgkg>eW7ZHlS1C`$bX6XD4;`qaEULeG^{i3 zpA9!iCu5Pva~SFY-;Or9otcKFjV;f8eT1RXAlZVs2LS)p8%y1>jG@sSS@{ePA8K5l z@2l;L^Yd$S7&TeVWk>`Vxo>?lo!iGo5n`Y?TR5QQ(Pe{Ni&FoDZD;@!0uE3&U8E?j zn%H67cehEyY(mQBJS*AP0Gd!zSC6W7oyy8!TzLOg={9h-X2rQFrk?*94{E(eafdm| zc%pQMMr%IhKG|mz_J`E!BF3cWOZ@!u{dybS;RI3U~CFE@-3MK{+4!8ro<)(bL{bNv7Oz}`2} z;JKq-p+-Za6GBY4z{$-nh(q4@=RXa>8IWYzS7xjNxF=!`w7K{)dogh>(_)VyX_9X!8`3qb?un; z81;cl>A7nW9J;1ysW<1jNU-l!fkkee)-nmr1&Vn+zshF3r)h&4WP;MHGBvXvy;h#x zTh@_y333(!fr@&%g_;bA7?48PRi4-6%?r2$u9dbrLDV=@3=df-{vbU4OPq`vD_b;k#j~&+cyE;bpv#2ynY@U#E|G~8m z(AO7wPODgBf7S1P!?8jKX#B0iiK2C9YdwpBRBP@#x-TQENtviVBSevLiQpBVF80b1!tKq>rqWgu-+t;3=i$#?kE z3})*efRBda(Lcx}BmriWh0kV;iw58lyzO$QirxM|=TyvpA1zx0ad>|+|3j^h4i~aB zacsH`$~Kc9SPXZX;uU*fjo;ZWW6CQ&sDhfH^U`~}xr!${bN~)rkYh?P zMe!*1AwPcnV0_sQ5{lMTR0*8Mb0@Nb9WX?g95!M}wigV~*(_zfFEIC1VZ!knvx0&G z2<6bH8a*(L)> zP9_4|xR%c{{^3ciZl#5SlT&#ZwZxpcnD>6afJ*ruQ-<#|{KpkkgRIEniwMYCn1N2? z9C%=coG%Jg#ogos3@$cU=J8m5Dohh~r^SwFWK?}eU98s3B z97v4@sSkZuTt0Stpu3Wz-)nT7)(9Kgu+z{$lXJ}UnK3bZv6a{>l#C7{z2K_{H=)Z& zH^K`3$K67MT+;pm{$?^X=hZ9B403LCIdOqJU8<-uYzo~(P5nmymki}r^~5!pk`ond zIr%a?6qMr5(nnh-qcIm&vE4?GbDc~pcdHnn)`!W}&IK^s>Lu9d3cF^lq?VW8Cux_< zhVfQ;awQSs!CL?)by=a!5gWe#tiew2>}WgBdAY}&w}+Xc6Isl_;QqXVMyZ9pko-@) z{P!9BQw8T+SR1R+S=wt&u{R43pJT<=zL8MTKNp|*-L%Gg?oSIGi^5u{$*%Dwh?!*HrLPJ@Fg^Wdl$G{mPPt|`*I1C05Y7LF z!JutL*G32hy+>|4@xFo6m8F}mitHAl%aL3qvkB<1&>8oK@-mZ|n6r5<@CqVQJH8$HE!AKnZO6}S}8_Nc{mk7GeyV??2$u5Xqy)1 zLDu~*0+_|VZ14S{)q##JvS)>wKRxl`z)Fp-00QPMOQA~8vDohCUW*tQi{B@zc5?; zsojY16wxY?&Xn0Ic;D=P95=wpPt z($Nd5^S+b5Vr(bGDxAe23%g66VXj~oXAX%_-8ujKUG5weUHJ0>3SX9hAGAg?BTE<@ zK8SY?5QmX^7t16*+XRHS#MF5L^u${Weq4O~*v!l;$lX-Rt@PcUgl}tp&ced&dnWq1 zdS{XJRVJjCDcuQ+v8A883+>CgmIDN43^_g8-?9~2F#VJu?{xQl0ANM|i~;*@u3P3O zxYv7F|30C7hLBqU>v3Ce?d%~Es&dBB3q!QdN(E&GBS(3$o9xF2MF~tNxbEAAIzF$6 zIXr?5Dak>OGVUEsK$*A30F|C876sXDntBKZeJ+%=@Y{+M?g04@>YG!7J*^}X%p_MA zvzX!Zgn}a+#6^1{#1BTr$$dKVnj{xA5ByJ7CrRjk_rQ8rwdg&Z;N5TC4EqZ%EEM=I z8ZG7JLj;sb{7^s*5?tW;)5<5KBt!;@1zp#oc_DutQg>?{ z1pa*;!^OOdD($kus=ztmo@wzaZN!N9PHLCS^QbM_aV}Ap^bWe5?y$?Hfo=KlNvIBe zKst0r(`F(;am-Wk?c=7&hHh4fEY0a>{uA4iQGaqL>GE6Dm`HMZt_GmbbH@SFhe&45 zpU!FLyATK|!*O{>Bsbj~-M7sF`s8o6u!#Xv;4{uJUF}>ARr*l)>0|%ma^L0aftOA} zllbMidIQQ?9HDL;Ut@l9PVEIv$1cvyC5&GArtzfx{6NL3UhYXyIOd#h;*0R=FbGD3@d(=!Ba!QF6dbhd>7cpQl!vEn07xE{oc zh=*TiJ63~ym}5Uv&d1M zKz~L88m=hZgbFrjxkdu6HB!6;V0=T9rLO1-lXeJ#0fULPmm!%hZk)7DjV_lIzdySV zlG3yFhm+AD>&C-Ftygsyzyeac@j491iHN^v1CNDBs!|R9Ks~-Xc;CHN(~PEe!`!`l z;#i!wzCB!@sV$S1mNq}&%@7$tBoSu*P9psNB6~%Ltu4+1OHqmWf6S;}g7nC3dJ@?D zUZ7^nGH*AD#^{*W2DR6xO{I@yIZMD6%f#Han-#6`YJ%-oED;=UUCs#iktgECwd5tj zF3spq|H!@xSBv?c@T3K3t=51I27#&+hIX%u<72o|RxF_H;@-Z%ei=;`xUfLO;_fFUlK&I-J@0{eCF7l#y{J|An9Ww$oD3i6ZL) z^W{%m0fTTxKS>%csGR8~SI0*zie*+KoxQsyEBI38*O9kpp#XtBu7BpSLpr#C!H{@u zHSfw^i%`ldi2QGLK&5&QOa&| z6);umCo1<}z81~G9moVc2c)H&vs+!c&#v)yNI&}|Q}5|*d1Nd~q%#K3$*#TL`#CA~ zCnqFOXY~D_UMCm3RFF=IY4wdT%)s|4gF>MLn8giR#UKgHZTbnb9?%D8y-24~*q($$ zG?mf8Dmb$!sub{i(h$DhS`RkEL-A=hg3%Z?9M46m`KU(%(^J@(Pq`Ie-8wJ{{uxaE zn}ogB>TCM%j%c5OC`UUng}u9_TSAoCOjHcNCf`~ztc>kajWY?OVmIb8aFd+kwdWkj z+Gy#08^|)}O1{Jrn#ShXIRU6R@lC7NDmm%p(im33vQ>|Css@>bt>|&*^*&<ds53mDmYo-gw1X7c&iUlYWG1P7&@~8q07(|=8n+-c z5NAK58Pe3-A~EyTGB_}>u1A4Y>)tGD-I1eH^Lzgiiy#Id6!IWY*OY+ki3G;fia)4l zmn0*;B9;#cJxVeGSyRdXnKg}y1>&}xD?W+5?t#j<2&Ua02qjWn<^et+6mZ$3oF@FF z>A6C#GJ3AFCP+mw0HKMAiP4-=x`Vta)YE8kv&N& z@FBJk&~`rx`^%{n`smRMgC4~`A!d83p1`I{ z3u4igUr|vv5&0CG@ei;i*9hb%(MfQN4I8x)nLguyi|SClTvFuY_6rN7?3+vz*65I@ z_6-+72i69`Jjidw1Ky#*bgiRfZ3Y4It0+`0AgPhiD4*oKCn%4!HA9|!cpMF^ni2?a zeK@5zku?CyJaK4D5N9C#g#hv+3-%C9vI_yT-IlY`Fe)* zz-)1Gai7B~t6n2}^Hdx+mwsI2`23$e;Lt1tLJ*u#z^}V)w-o3im59`ZQvn*F4HhcR z{Qr0#WxzOpq5vEt&YN@{nPBcn67uFvG=RbtA3u((C47DPKRGXdHM9^5Var*G9qq|P z8pbd2z;EB4)}QS(E(3aQ0!XLdE|%)Jqz` z6AO3;`x^4k3c-W%>FMd^YaM2l;n4uqmAFDIM9<~LnOM_m`e<``ITr$&T7Fl&W!;7C zP_+wkCkv!Nk^Mi+zj8n$#OeVwL!e`kpGFlG&-ZA(@4ePO53wW95ZXo>s1VE84M^U! zfHpFa`W1z-h1!H512`XA1{7ic>?pYM%x|lASzYQ&;sFP2A&D|q=l>jp_ z)a^vxXBwYtFJ8W6FmCa^O-7d7OtNBw+*(u)L{iAxjUxhO1gHyU!~${^7=UN==GCiL zp0KNRUgT9VM~F_6%OV@{DmXn_06cS5ivBF*&QK>$vrvdw{EfaLPNY|TrA=lV+yHuf z4UobkBEv#VQ3r$E-a;$lu(i4jb|KNboEqBzDLzjs_(pb8xc9-@eFU`?oZW_thD*;t zfZ1t2d-g0B8VI=*^!RM71wGZ6fiG4)8D;gMo`f}{_K=o zrY5XbJ?oKXos(%dINCJ^k)cQpq0aeF0Rr0=+6_Y{?$+Wj^(Ly#d96|c`fZKjX1tD3 zG~h>0*LWdyjs}@yy-7l1S&?Ye;ydMoEjfrZXK0%>Fg>Y^i^y@?&93**$x=fY@Or_{ zKL86755N@I!Q%+zOba?8$Zr(NVOjj^N0ybskHGVs%LtEbr-Xw&urY*TCKAwl-++8NaZw zp8x#sU|u`*`K`e~2NwlQU+uQjBvJ3Jcd3H@kDe|5q^AYt9FLhf+uPf3WYmL5W~$sY zc9}=t2vHVP$#E&jb#a3Oq^Chbu9G@=@Eww*{L)9z3f(tI1yN@OFT=Is`U;K-Y(=ip zyn9dy1_&LY;tSPx{b;^rd-0H-_T99$_UeykO`LK&J+Q9d-#JrO55gkXxcLhcz1f4) zsEK)=<0~o&%6?yHsEeY(cY?>|O_KFqvDvJO4MF+C3cwQ%YBzEZXHL{3&uqwV))bJ-6iLUpF zav;mtXt!!BOHOdWYS<8W;-VK zyXI=0zua0J7pNx60?2}q>!B7)4XZniOIcLMO8XWn41gxYXeIeF<{*8p$t(0=T|hlZ zl&5d&Z1}cv?b_LwmG40bVdN}{*ZYRiou6YiDMKYJ<=A^kjsngVdRI5FM}01oXXie? zJn;V`X+4u){VFJET0HiY)acjjBbW1LL+U6siF9lK)l?xDSwxaZJjX~D>Vb3)5R#&K zi{=~i9pVqjYJYQuv zt*{cYsWxEv#X}2O0$-aM#i%z-D6U7y`iMzE$zwTLrlXUu?5+Pnr}c|@ zpVCyWKjZGUZ{(|$Zn`wK-u&6;I+io{-8RQm4_)j;;3$y+(7;A?PHy*o%GNn3k-#go zz*OQoPy^VPE;dt&FXFKiXVzIN4zHMLm#x8D8+k-#l}&iUe0e`Jqfy&l zmF+@-YI}6XJVKt-D$XDe6ejL{>iW@Ll&iWuT_`SCBN9S@`JLVgkO$VsS09p!ToMpj z?)G_R!82PN+GP%u+~HGi%2Cm2&oW?u=R`aXDE_fW zfp#QA!8M@BB6O@+cho@trM~~^I#d1cujG}@oCY`11MVVH&)???E5WfJ=K>{~1}(;1 z#tzMgE7!%k#Kla(aC-!RCgud?8g_ ze|++={Mo^m)G|Arbn!z&FJEY@D+ZYzw*K6j*u?_ItaK%*ZYT%-Jz{B1$D-iMvgC2u z0N%CFPrfu9q_NJp$)%K%mDSedR}0>-9^6t%O;}3}1hHI<+}`;V<$c zD1ptKc%CREG&FW?&1$Ckrw^UEG_skCN=CctWZ=8Afg<@Tfq)pQTVt2xx;_2G$o~YU zzo3!KR1Oy10HmW2y(OmA5Lxjma*+9T5kLEU`#`6=aC7M++w;-)rhZB*Z!`M5RLBJS z)H7qWNPa9(-1_4%eC)ip#FF&TzM|tW@@c}OSr zmcy#?;Qgwc{H~E$SyF$O`=_fptFIgc$@@?LC$iyv~h>Kb(beaY!{%t74|dyAgXX&Y74|*Tzm|?G+;n>`FhLq6W_3xaM&7~ zJ$pva&8-QF3C-pbKeE+M7HTmmtx$4T=PkRJc)I}xS0rq`N<6#Ov1+W)P)Yoq_&D33 zSIK_tuH#g8l6~c~FL=(gZVYxaO}{D8FG`07O+)Xp=lUG)wD54rqCghwc)!%{jxL*` zRG#EA-n@I)f}0Fv_L-|^$L_=7DVV(EUAf&_+Ylbv8`KX}Qh42k-#@Cn_oU$m*68Ta zkUEj?&wPhbHb^0!m3qh4)!Czb}knM}~ zV5I~K2vdW~N@4;C8Nb~-3L)punB;zE+qEN2UM^mz>jez_{QMZ~Q`Fh$tcX%7i~i*9 z2H9$a2+reKq0g(U>NlF=5&7B_@G@vE0sYNQ@A|HdoM>ltB5dibE1$gc|GI>)E#eY zrdBPTl>d{vg5ih#W|r8kgh!RzeQo3}YWgostH<8^7g=RuFf2j>&VL7Yn~VWoIJFyGwoGL`CgmaciL++zJL(}<79YNhX1Jocg!34NZkh4LSP8=0f~hb!3azuA`l#Q=UeQrvL4NK z+nnI`{AJ>zmOI+snpOMnZvn{6aBOdCsfjTVkn!FmV0@rkk!!6sGu{HYPZMky$Fm;u z-GKbbJ*K0-=znR^3TW967w5`Zh&c?N23_~39hH34y-U>JCWnH;Vcz^ji6|!h?-He7 zW`PJi6QG3M8w;J+#l;T5sCth9*NfZ?aF6o##XMkwL?PRsubPL0+g3S0zbp9~PG;Va z7PnooO$tfo%l9mFzLD15$Nlt1cwOeRi&KKzfPky7MCQBqx$QFPhD|xY>yLA<{ThW> z+3%y;ao3w1=9+XT%8WTh+_wN0b~BiVS4su2XAtUOuN|AZ3)BI*_oK=5$Ls?oq!39Z z*5_AhV&nd^PH0m!a*D_`mNm}xrLQuFx?gV0qb@sDB&0yCuYUb{~eHU{() zWKdH|QKMl0aOJatd+(swxjLZ|R?{Pv2v>*w^Ami={V@W8$F4il5y*HfI7+{)5QU8g z2ScbuK4^hkH}5%gmyb9uWIpDshV^QDEo2#0tesJ7&Sp@?CwDKZ^p5a%D-D7fi~tsn zU9OS}AT!F5jg=)fSHYW-y6F21hb5|J5P!==<7-{&MjT;iy+x)p?_ zG*+TD^LJXVGw$N$u@9292{!}jhn6EP22Y2w zu;0j1pLx)o z*wUM40hH&oR1ptV0B>vd!{fd)iHpyfe;;L-8e#SB2i!>gmX~Vz9`Eckur^)=2OIC7 zsg)HaHSum5e|+}EZnbg0AHXVoyP=;CHe+{52%;nBE)kgB?6Q`&j`3U=B0c4qhajh3C(Qj=Y=p_{~nv+ z;8skS`IG4Vv|B@GUZo80?|WHLG-Hd@IIb%5SX1?ir7@~Bhb?~;|5Vx-d7|*0|-_|5lSWKMGZ~RR1460xZm57XN`~xJA$naAxphsB<#oO&-l1QTk zKE8Gkc-lZfzJ0{!IMK&I7`RQQVkwo_oJ|7?Aq_X|!eQ1$OEQV#p&=piM#~Aur@AB5 z+b<8B^*NSc;Wjk#KxLQ%@>0y)o{`NFDAs!lp|piD%WLqcj2CKkrsk~XKRHPD20hyv z^DxVtfogffsgGvCYZb=UcWjMq$KFSm%*TUo42*8_X^nqXN!f0gYIqWAI}kjJtNVRO zXf$(rDKJFWE@t${V{_5W5p;v?g#_5H$`;Nz8huyyhNy7!*-N$X%s z6wu@bJW>&UN-g!{<)%{gKZ3~3&;R_6(RTVVA8^G^?RO9@dN3qKn#|d6mDB0J*UeO6 zIhg+V$ASMnVBzBcQ#o0{F@5793o9S2j87<~`U^^stgI}6768V# zeaFa_>?uv;Pcg{J{;B|Bz-TYkk3K8sV9cH`y>FbIdg*bm1lUiidPKW)w!xGXh|>2rfS1{N&B!qb>szO}!6hM{83tpbiy4@UD_ zIq8f&HGn^>GCe;rQQ}ulUXJas=B(@3a+2@5F{a>}Q~~mXNy{TuMH_kTj|e5s%e!q{ zuP%-)yA)RsTF!Q2Ia|*)5#=?NmV^8OwL@oGp%$Y_+_1NOsX|&UHNKPP=GOdToXpJf za{xhE|MoElQ7DieaOpMN+G{mDA4o===U1Yc_twj8wHd~d+(W%PcrL#p-LDMP6T;NFq$m7v`KsA@^G!yQh7ej(&c8wT5xQ>MCebg|&ssDVMNqrrPcL zhY@IovG(OgZtmudN$d+COVzgJd*Sh0HEFX${Csr}*x34ZDoaUKc3NtS8201eXe`Qd)(*~JlD(elD6n^%fsHpahiNk$C84EOCbC4 zZgaueQGmhG`AMSPOqJ?`t6jYSy_(&|)?kp$)Zf|oE_0VXB#ysCAI2Q=b-ISL*#;V6 zarYD?Rr8En{kbg%D6D5{N{AmkmUrKsW0$x%h}E@G!3c5&wP-)GHa&tZq(&ApKn^IG zzvxL3BLeFLB%$O!YaWX}u0v7+ypcs-qF4)M@2!uWh%jo!mmua8lmjh;Z}bowif>mA zidSB{53B3o5H5f8dM}%_Q8QuOb^>ISur;+;{~WE4T5g@He|+@%I(xjOhvr*?{!~&T zA~VRRQodSHUKBN47Opf5NtvU~l$=UtCT#P*n|oEMIqJh-V;KOItUO&~%`Why=s`o(z^GKP z$S7|oZB!}r(Wg7X7Ys`AuJ2uH9wo}#PX16m@jYT&2gLCiv1W@|?<5gUP4V=T7F^y6 z3*QfV)o*=|06tM5NmOa~txZyD>9~aa;`BJfzt(l<`;<9nviNKa%%TH}2&xXMPrQJ8 ziy-}|UL(_8Rj(wJk(Eu(r12X!p&^jBnk-GjwHsNUDZLZ+%)a;ZL#ORsMuG<;CVADi zlgTX`&UVR%Yk}BQUBmTuqaX5=)6OHR8*3(my$^qPndHPNt={3Jip~SsxwONtDMYZo zI)SCn(HD&6<3UkB!?Eygke|FrY9(&`c5wTz5Y_!(A*#`cZ39Yetu8yXkCZE{mN}ajybzF&;S*N$%KuS6xjC|y+x(4}%PS@aw|H|HYz5op1c_MoOV#J{n%QeHHU)%ihp#wJRj3aF8!VE_6YA>f*kJIX{j1%5A zPFUEN>3aQfw0$LjlY2iCo$=PKtJy*CcO2`9@!6|`7v3$pSS0`&tjXtn|Aj2KAijtV zonQh=GCP5mOg8Q~UYmb@barD?ztw+y7wuvgDtFOsqaJlfYi6vbc)Q_e<5xq!>Z2)R zBP9^K2|PB8;X1MW;$Vrz&+qV^zV+g$@w=Y~6VJSLn)C0UGG09~Vvc=9oGF>pRS`K< zs8M&@J|bb#B$OqG>IscP8tnS;Ih$yJ>*jR&y-Jm4ftfvNt7H;;AApe`8`q-gfS*eIjW!2gl@YKzEZOofxoqh!J7W1QJOc1k^)1=^*v+mLz<^Ahl3=J zUv#gGRQEPpi(}R_-Xq7UQ-?~}mar=&GH?PJ<{D^8CB)?j~$bl zD*vmzjiwV+Tlf5C$;3e2R!jUpQfxR-a-T+|N9AiNxNi)mOB?1bIyG z87x(SfP*y+uew3A+f+u%jIBHxApJ}^J+x`)G3%z;;A$OQEZgvER86Ur10O&NEY|U~ zI6YYpAKa`9f`VYLe>b!+c3$DIYpPP5_e?4NLDB{YO2!rn{Qb_pag?N2G3e@R<8i^+G zT_|#7q2~s4APtK#L2RU(oVULL&zj^gq15{WTmsY~erP^o4Y)kFc*ATiaPed8l@R&v-2X%D#>)o@4cs@}S+wPqG$0J%|=e zWrQ{=as+pNu!(?j8ijm`*04_>!Gh#}O6$YfN@Jo^%b)8QIrN;0J~O_67z!_{=Xu2l|ZOX5vkV*W8e z00Qmo;&4ErkNnF%pu&g^&&xCk zN2_u5jD7%5d?36A&DjU@p5cdQZ%qcZu==I4#oW*B777Q`Gccf)+!+>3J`{pkViMe{ zXxteKJ=JD4Og7P8s<&*cvsw{yIlWivxPOo`U&?J(>UMOWg5r`RWrqFfN0#$7Ot;Q1 zEvQ<1ZvGH-M5qd3upE7Zlfc4>t0iJtC$m)@s;DeT-x3#$_km{fnvF*^f4ZD|TsOo6 zk#}aE_{?!xQN1(YdzT+;3Um!%{8iII9e*bl)IFRQW&r;?6}b!Vilda;hN^Wr(QT-u zQ%IrWIq}=iv7Jrt$IFrO-`dqNSVlU!w16H+@AA+KrSgJMNA01b3*tOl1xU%Wh>V9$ z9C|(HufKkKF$==iAv>fWaj>jE;!GO6-xwaf-H4|~;Ad*lj;a;$PohC=QUoXSrE?pm ztUQcTkze$FKzJog0C>BRJ^TneE`fjlmeGeM^B4 zdUVI&SditmyUW!lf&{(6vGqCMpIGn{`aZ=icX}T5d5#vl0_{>+|SyAzad-}s+ z#aHidb_-AEnc5h?`(Ga*Le4cUfv%pG)70bT^rM?SLwI(tQ!uA za$L9H8jlSdQ*|-7Z!pe#jeGac90Pd&8M)SEvOyZ+Q6 zza5^S0}v@D2OSFscld{rnX}zCO})7GE>QB#Vjy|gq)Sa2IbdMw`8xK&%;RUbf!9V? zGjRnb2T+;GLgWb1x1I660 z*??l<-s)C01!nSoFX~bSlAP*ExV{#{ z8njZ`{?oK!`NW_t0u!ky?tc+85Ggo|+2VK5zJde}>*c`^O!93gXzybF$QJacBgqxr z>`XpS6qOMea6LNB;q!8zJYo7oH)#YRnewAs47$fu-FVcNK{ zn?SH8h`e%i^oh=zu7QdyxN`JN()Ng9Jte_Dwq}zSzrDS7rUcqWU?SOC7l)LJ7&^5s zqz<4^Hk5>t^`fdD`;qj^vo9PkxgrUYn;?>GG~@7aMX*$5UhDQ2suj|`@2Q1ji?^tw zgvo>#KHA{_M@P=)|6@jxAWpG%bIq^S=9#AnA3;j}MH^gbi``h)f|;&A+r{3*pHVe! z{jnM=GA4QD_x3LRu+Ze5g5uMki9g;fF7x%#(~qvlE!VjtAI)>7pdA=XpvWt$u`hKO z3v<&wigH2#-`}uoVDV%o1}GJ9e{UOod3trp@BOPRZuu0eqHLo$)oQIlM^mHb!b`v- z2`ORB%I@oB`_G7SM61OrAu@9E0%!xwG*quq&eqrbcSf@*@<&WIWi<7-XqJUM=l5`m zAB6YMyrd!~YjOx!74D_lNb=CZ2i@&(hi+!r)Y|C{3C_V;8*)6^zJDN?H0>Um7Jn1 zC{Lw^_P`qvEkc>gd?+?ylD@NK#n5(c_h*L82>-2fJhTh+580KHUDpCtTr}6YC_oRf z!I&&Jc*yG(O=i;LP-}8Jh=b}a(~ZIRIzQo^(*CZdp#&{OOmpCgj+6aAyN94c;>fOa z+YVZ&F0?HJI+c_4Z9mmWjf1&A3L91|Mi_Z)#W=1}RXT+_69wu+k zg@p5E{iz%rBY9XZ?iCuCl$*|}n(I~hYi$o|cA#yMf5dxG*x%Mz!LfBX9S zPVdF)QgzX^E2t-HNS)%}yn{~XAheo=)(N}RtUQnI#Y_cdSk3 zACX3Qe^tjX?T?g_5`ts^`LG!hWwT0>o7dVS?bP}K!vg+x5)x?*PvI8pI+P?yr;=## zZTR`*k?-`LRfJoU^qum#zk>VdD^H4z_}?E=h2V#{ zYvMP-f1UoXYv~eH_nk5`61-#;G(7d#c>D$B{cE5k(2M^{2=dpi@B(P7KELhVn_A_5 zy1u$Zx1}#e!Gf2%THF`sc=Qqb)YwhM$gkW{Ex!pmDm;et3;&OE|9KT7626c~rlO?~ z_5XQ&ws~F5FF%-Jb< zHdQ)vbzwT_aPc>)eU~zgnj-437@9gRq&qAKU%HGI|{ znqNqp*U+lAsWlFq9n|&N^DdKBJC;I-T2e#Ls>*D2S^6^Dcy6b^WHl9$LRe8br

> zeq5trp@yiaCTYx+QKwj)Ig_MvHJ2ljblsF{Y{PG3 z6I!h^^`_%a$3e-RQ{&|gR;N+?4TgJYM3JI{2|p-<7@=Al*qQUiZ`8Nk!s3Z}+&66s zE|*gE93w|HQA^4(4Nr24-A83LvU6{B9J9Sy=+b1DRdo{2AJUJP=~SC6zH~|;DEhDpoGgkjJDwC^LzXwvl+3eM z7b2^vhB#@zskh;EX6?D{Up~DjcX{Z=q@OE1e&Ot#%eq^}nm2DOpD}+ep*X_3CEqiH z(_Uhp?J65Ath3fKNeGT8;gw5lo2(~RqH?j8D?_8kwc zDR<&NP#WIy5OUtKBXn#w?{CBpi|E-NnaVEbp?iJL^17)~DJ-7 z0`=?U)>3j$VlQ&p4UxNp?(NQh+-Y_C$vr>4jIPhumN1vUzx1zI@^9-N`3QC9 z?iQ|!wq9Wah({gC=*MV#t<{7(ffW@5Dr7~za6=i^1wbAPsI{A?>f={MB%; z<58Z?v~)NeSCPeI$ql0mj3@@g*Om5izP5r%0p);nK0bLB;ZE1_;=jh~3iC(o$#QlxTr$_tkC)~!{Aq)*Xf|D1ABIDRBZYaS%xyZSsGEUqNCMLVutjuuxBKC_ z=VKEU+IO(Dm5^xqqQC!ZKZ@5m{)oii#r08u47%$mC?%6AZugV*8v%4pn@_OG+RU8= zjrnFEM+%<8$)1(3GGpi>aU4j>?e1!6ybGDliMqL;BAVeQF*!4#+zCJ)1Sv@i^? z`|%Svh+s^Bv3%ab2_VTBFj2Ga2VjFMt+qHe+BeMwWw3~^9H`6(^Qd7~&}~*R9MMV% zYU&YGFbjdP&+TValkSPldPk4B;39-mM``x1;dWoa)?j?&997BysXH&&FW%Xy4n{BsS0>6jWC3iTeOK zbq45}&&yi<9WUEbkfo2k!d>yYrov0yubiv@WEcjtM8`q@Ge!D4m5BP2O01V}+rPbF zoO5jZ{`FM|gak4M!1$;yirW}ZmIH4>>Y0Kb)V+6EA4iHIP#f%048p$3!92_qa319m zi#ktlVP9$P+^v#~N}5T)x{874BDl7f8Q!%^pxK=d%%>$f~k` zbDN=nPUDYn$1@Cil@AEK(19Rz5xUl4=J-jWwfUpAT905me1h}q@&Xc~McXkWM81a& zQtzp!MTb>^Jt2jC$DmrQ0t|s|-TbAvmHY5H#vDS?{DW&^bI=cf@f8h%?570D=)#YC z#8&e0qit(Dg>$FalW4y@Q5duhP28jb1{O~=FT2VMi}9$nwzchz8LD7$k==zecgop6 zNDY_jP6O*{_KHgB&j$SC9;0^yT-v=Ab+4aVcEhE-!WuPDGKCN}^KBDDXF`!EVKqZ5 zTU$qIJH09+s$FNigfodWF0I9HU$ZG~OojURYPi(dtxz)XwYy^1Kz4%Ct8~3`Hx*d` z)51L5Vwk^{l>oEynK&%uz^}9#i?kt>++M=>Ttv^?qc#O9ftt~+u8K6@TXigG{>j$^ zDGf~65hKtNi1Nprpb^JIX*ONEX5VBNvNER!VcV1$S<%JU?V$E+{inKsX1=k=Pba4@ zm4Ajxu0Nl+u0Zj1oDV^OsLBxYFw#z8I1twZT40#L-*)kLee$n7vJINmWpW0V@KwFi z3UiVchG2Gs9KH>0oy~OJ=do_~_}q}^peX>_Us5bR_0jc7`@tBBNUkYVT|tV~&i3Mx z*Szx;%u2iP2m$VEzU&J}o@dc{m?e#(Tm(pAW^rg0Yqs&a6$S*vDxv^d7>IA4+}k>d z<;?8Lr5GLp0ES#y;`izx?|snSrv-Qjg{USou~dc$DJe}D+dveZ)ptxk9oRTT%Pz>! zOv}Aph|mcYjAGL@9JjMpgrI39Qp~7)KEm-(phT7o!BW>3UQn_bCP;*Kl;%@5ViEbW z@+lgE1S!Xt(17Sk--duT(zI>$qA(50nLRLaeYHjs%(DW4ZRSx+qehP}W@p!zHw+h# zT7k;`T*aiv*p4;!det@lw@X&?d+E>e((3|faS=6U0svBapk6hxIt(549-S-oG?y<= z0^#Xh=#0zeK~Y6@^=F^QMjsgQTBHJC?%cvc>I7^PE%xxu?&F3LZ{ukVy4RV1gs(FU z4H-n@djue8xUcPagT03j{kT69g=>z@s(rm1iC!aFCnX21nubb-U1gC~EzQDO`;yDI zKjq^xe0e+yI%iu*zBrOM^_$#M(;{DZC=cfvkJFn_{B#Ljv7|W~;}l>O5y#9H%h#PzDXdbxNI> z*j^N6=k38QJLeETa~WN^R`6s=C7Vy#r9vt{)hRF|zk?!t=xDQl9n7pRx)E3n*@V)7=`c~m{}x?X;@ z{1;>I-zE@>>}1Do)wuHXXn*w9SFN80T061q(&j#m|8e-dGqjR{|38PngdCC;r zi@`_oLsTPfJx;Lll*|;s5Wp!GwSk>GP=3%AkhORVNlIv;*P`Jmh>6vDZM-v@mn@7c zF#e$nBZ@l0(xuP>Zq+J5wtV6EG59q|8T(PxbWZfwOnf*O^^WxDrmKcc;Isz6K@(>oAaax*rHUi zL_bjz6#y3?Y)r$Z%&$vSW_rA@6s_fK@SS5`cCkw5jGHjV#n$T}!I`&7rCJ~?f0D@Q zq|T<2|zDz=1@;u0zlDex@JpXn&gU=!?GBJS5|*WRu0t z(w;gwfj;X&F}oaTxlRH`YJYvi^ciOBCVL=*i0&K7y!@fC z`81WU79Cc6lKVl~aVmAE1yrMaaX-b{=yXN!I8BZY)9HLX7`XpnCygl2ek zAdhXS@LrC^e?P#=9XIhJ+KxLmf{vV&j&_8mcw|`R3APevGL|=GxHRjiqn<3l;5=j0 zwpMM!yR|^>OYNjQ@)!DoybbM;KKTH$HvDs>owaMeun4#uliy02MrVnb8F$zuW@FQ2jJlg z5$BSEU7v*Aym-FpVMDXvR{$qiqCr3*B1P<$@QX13`+h;$4hhJAo?vuc--08X-7kS? z7x>Wg(1PQRs>SV%m>k>A!O3flr4--b@(}}rx$8AIzK|Q2&g6IK#G_w8W{N6b{dd;L z6$rmzSwVJW>LDov0T{#xgifE{V8R>V#nnl-jBqdTi=>={;(|&QO4$;}woz1F55F2= z0px_InIgki^Sro^BH%pUds{zLnA;}1UdPzs9CC*G!nbGKeA*k3pw*8a<85h#v&d-8 zuR(S%doYm^>2#LyGM5Uo!kP6htKUvbi_O?O{GeTbd@fGfkrkd{Uvmxou>555CHaF# z8kgiNpbig!RVQGAg>z1mpb6%d+KC7zq*$gP2kT4Txf&hLO07pDqis11K|w0>vUogU zTAWL-f^m5lOjlQ}WDAw3vX#Rrza{VpWqg0mEMyI*&-=}f->bP5r$sA{Sev0>5N zgFg@xn$LNTw!X{`92cXlI&SyI@!!m1^7_ZCrn)fzJCAi!YLeIM(q}a^`k};{;05%1 z)`wX#K>;`8*vCQ5gf33iiyb!dRSI6@#=lyAI3-1Vdy%hYsaheSAjzXz