From d1cc4af554dc0a0f9310aab867f4e9b552b3704e Mon Sep 17 00:00:00 2001 From: Suchintan Date: Tue, 5 Mar 2024 00:04:36 -0500 Subject: [PATCH] Add finditparts example, update readme with screenshots of the debugger (#27) --- README.md | 21 ++++++++++++++++++ ...ern_visualizer_debug_action_screenshot.png | Bin 0 -> 301519 bytes .../skyvern_visualizer_debug_llm_response.png | Bin 0 -> 180476 bytes streamlit_app/visualizer/sample_data.py | 14 +++++++++++- streamlit_app/visualizer/streamlit.py | 20 ++++++++++------- 5 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 images/skyvern_visualizer_debug_action_screenshot.png create mode 100644 images/skyvern_visualizer_debug_llm_response.png diff --git a/README.md b/README.md index 83f56de4..402fc093 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,27 @@ curl -X POST -H 'Content-Type: application/json' -H 'x-api-key: {Your local API }' http://0.0.0.0:8000/api/v1/tasks ``` +## Debugging Skyvern +Skyvern's visualizer allows you to debug every interaction Skyvern takes on the web. + +### Tasks, Steps, and Actions +Each API request you sent to Skyvern is called a "task". Each task is made up of "steps" which are the individual actions Skyvern takes to complete the task. Each step is made up of "actions" which are the individual interactions Skyvern takes on a particular website. + +Every time you call the API, you will be given a task_id you can use to find a task within the visualizer. Within each task, you'll be able to interact with each step, and see the specific actions Skyvern took to complete the task. + +In the screenshot below, we're navigating to finditparts.com and searching for a truck part. You'll see each action it took listed there, alongside the reasoning behind each action. +

+ +

+ + +In addition to the actions suggested by the LLM in text form, Skyvern's visualizer also shows the state of the screen at the time of the action, with a 1:1 action to screenshot mapping. This allows you to see exactly what Skyvern saw when it made a decision, and debug any issues that may have arisen. + +

+ +

+ + # Real-world examples of Skyvern X2AclvVp^u<`u0kIOE)Hsa!|RY-w#Jec?!M40RApR0Ld@0)3rkZR zR(7BtKgvkg+%I(NC){&iGOUV;k8R?12VqO6k^G;S+`ryArSs!~GAArYn{@ntJ_W@F zL+`zMvFfqL_zUx&E%2nb>F+l=ML!F<%SD;g{r%4WI`Hs+_T`wz;mr)vUzM$Yqj&#o z{qajB5qQs&-&>*m|Nj_|AoRbcbG)>Mdx9kv_yyPPTGRJo`-E*OMs4xMdqvtY7S`j_ zoKm&|Jti-AG4ZdN1Z^`|(_aQqU6}R2Uvh=Wc(78?8@aSKRngJ9j zQ3B8V`xV4On^U=-^_2cr=yfT^KCbWx&7B@LJqjXRez%^B!p{lX6waC}T^w=%FMbl$ z^T$&Zp-rAc{_hvHsthp~zOO&xo02`5D~^0PX18q*xs<{Fe=Q*KK3u;@aBn2e(ifwm z^E+jG8x2yx0<#_$o33tpf-&o&jc4_@;VZqP-<>mwU0)nfVsds9uW94g0B2AP^Qn+m zN>0u#Xxoaeu{R0u4 zEgq+DPq1p+Ox+sq-e_bcW%$Ymwi@B>uL|;1fdr>N>aZGD%-X+rmC>0CM8}w7q@+3k-Px?qzMFiy2a^Dh$5S8GWI$G2WuKh6`qKn_!D|}bdp_4LG@M#>+vzhxi$J<6kWR5{84jGJLHn|6i7*TF;F_eNV3NiMi* zNO44jUn9p0A2mH_er}%zYFRr@PrxN*ubt~81R}3FJl2xWZlE|bh8F^vdFt{X(`eK7 zgONAfkXA8n%h7@=;%%!@mMcBQC9GrbeC4&H$?P7Ijo}R05i~up9aa-e=fD`Uht*nS>joBM* z^aT_Oj1XMAWCi|wn3porLA1iC!Wv5jGDV<^I1eyJd~`R^+GnahShecdSZ<;^9b=G; z&fGl~1K){e@x*R%+HSrpXlE6%pNZv<*^GTLaN&=iczR_6y#lAZIgSR01Y?Q`kn8#L zF>hc0r&o(-=lc2_U!~%s`l0-oH^yy=k6?XKQ)c=>JOw9D8zwUxQ&m7Uso8-Ihx1(a zN)-$O5Ge+%to{fEmaXGO1jAd6!R_kr{}Re_zN2gcdi*kBBzkJ%RzG0eFWRh{#M*cf zViz1q3abCQ@u!rks4UjsGa~%QX!fGQh_iNA7L|;CdUwI9ENQDjTCyL^O5b0ndOu!o z95OZEL}`}uN+WxfUHi~oyU_DvL*8{d6v`k<&&i-nKMA_bE~t6DV6TUiS-iFFz(D-Hi~icm5=_8$Xuf%wx_TA&+j1i^Oq)u zc!k2d>4EyvyShcBp=WimFE*tl-D|r=y`e`dj^`rvH50|EqDMPpn%}G*Hez4naox)T zdAhPfdw)`R)#Vzz=j7Bt;OCvCeme~unAh!2#}az(zVLYGt#nWXxFFx7t6%Z#FIi~kpuOJM zEfk4PLNKpOHSc z`1oYypT9y9fqH3TAq{oF9bL)hb>BF%;Q>W-U~8Bzt<0hkm-e)bYVi^okuTr8G@6%U zlH!N3t1CZYuFfVRl)T}&$)esl)OnLRx3kTflrq+(J>PG!x^4@^CnrhQ)thCX{tT*q zJ7qswj5p98kU{kn>&6NuBoj#j0f)RGa=(&sd$KN)u0ZS?C$n$*`UAn5L4AHPN7zSv z>C~78B$F;9gG0fM!Sgc(s}jWSEnLe!^W|I;TVP?5&AGQf_M%b^g|ZsGiiTcV@20ar z6dBhVswaORyD1uFFf2zIB7i@_dYh8a_OoF}W2VF1h1Ras*}VC67Q;u{r%MABcSiTqmIUU7PVr& zn2N_?T3IdtBv)F*A^(pn*$xwE^c1!8;gb4ttc)6kNpj_#tdC$I60q|AesGX1X_mXa z^9Pz*!chi0*}L~M)on;Nr>m#N8hQSgKa>hyLCGirM!Ax6Lz{{N4Co2pP;m!~7ko~o zCfz3Q^J<|O00b-LLUCiHM~2U&I^p%s^}g}kr=9ttj@1J{QND#|FxSdjRiMU2XWBHs zsMysnq+MF0&D6?fOq%H;q=qB8f)RSYp$FG!?RBsGE%e;JZ+g4$$@$f0f!`(08 zE#}!m<&yq><>`&(`cJgg3f-nl?j~_JhfwVNf2RA>402#+JZ*-b)`Gr6-O|L`u;#`k zA|bl#I!qK8dWMiAxQMa|X4T4ZXxe*~CrIOV$VmqF;Zl;za1i_MZMvi5xRF>-v0L^T zia(hC^g;5ikV%6KWDl1e?KkvjZ?ak7cRjE_j>@1WiT6={w!){3RPUDy7u!e@;*qr- zPy1^1k;VJH((^H;CSxe7`gBX2zkg=?t{=S;F#cv0;AKj8Jdn}MBGuU_Zw)AzIqGwv z*JGqV?yU>>EySmvNFVJ~rQ_-6BWdomBlrBTwVM-{j0((v;#C|SV|nfN8agfF(|46` zE(jTjut>Zn17@@mQN6(#YVGu59l{IaP@I47kMRN+L7uXAmsqf#Boj#OwHr07iLr`c z2!vwXX>hnkq_6>7xNjUZp^HXu!6wn(X zRQ>^Q-=E}Rtt71@lsF;Q={ON|c@EWB8@ma7k#HBML3A3;V!G}Jd=?%i!og~+2w9!P zNk-&=Rr9uR9mI`r`e~_YK}Htq$MiC!?xl+-tbh+^nb6HN;K=YF% zgloI&MRe$)m{~J6pEwp364KP*d<7`C>q(0aG-q}i$qopPNIA^P4t-<5Gs88mvK95| z&|hjUZ;jlgJrow-3UhRG>ryQVghjfHHKF$AWl#HLs-KOv66X_(_0Jyt^M^qjLF1wlpLi9ZFDS4uomErJx(~#W7Q*%{HIM(PYGUiI0?U z`Jh&XlrLm`S%}mh7Uq`zsh<3mP5-%E#E-9f(?%%wguE`#`|hQwu;?CrFYWf8Gcf14 zsS(&SFCeWUvA-&9zdpDDa7m>;K!gaMRaPyGtx~Tu>B%%T{86c5J?}g62`0EvEmrb28|X2^hpnkFuRWHlU!d-p)3GI+zy&R$k_MEScWYr>+-CzJW-{y zwtgSP@O~{Kko^Wqja&}`*E;4!hf7?9#}(syK4$En#^*Z!=4N=BUPlT%e8706RpE_B znWC8kX^Ae!1vsp4js4nXy-85U(L`ea|CG=Ykl%BB%eHx*#Bp|_LLgM4T>42&^qABZ z*1>ZNy+#gnSeu&OT8JHLJk+0SK_k@35zPIVv;3LrPaTRBgc(YijLsckGqx`pG-3GZ zViJx3{I8B+N?JI_HfY#qP>8?Kko}8M7MSrynK{w#13EreysZ`pE|6}v{O+@vWBsQ7 zz6|g^))=P!rB1iFBw{e~f9vYsdnytgX+ti|9^OG8EXS$TyB4?|unr5XF+W#f;KVO8hj!45f${}4XNMobRr*TlHOqCvM zcbL5Dje#3c8#QaBS1NCGlG`{Lpc)zgAv7f5d>337y-k!U=Wz|MP@Xw%nXV*a;B*8f?o_=vh_BoRBckBB#*ff2>mZt9S<@uk3 zNL=KNVvJI+g9+3$r)TBfyVkSSK1RC6?QGbFFgr0jDMzN@h9lk?Uc`j|pCt5t_&Dt< zT<6N@veCQ_s~|nam!Jlp?2+o1BpkP7gFyCLvtWAX#M+L(G?W6Vsy46gCEkSm+o>`N zdEOI=baSPm`03t=W!Z!-6w^L`JyVHs^6z8SMN)D7{_>2jMt3!*Gr!)q84sO#KpUIn z^L+2qX_MKNaE3CdAa{H#=4Uw}Mw>;uN`u=MCuJOCph=n0EK%dJeIwZma5KcSlr>v| z1I*%t%0~0IT2RKqwL2M=IY=j1Qah%hj8-X=^5{-AmQ4Jd|Hz))&Lz=G^E^a%poFwh*xbH-|;1rM$6R>48wv^mq{8qat52v&uK@ z&?uvx@La3u#8Cz*Xfw3)p@Un!OFHsokq+6#zRp2XDnkN=JU)fj)nSY+aFO)H;lwcX z7w4tXUjFz8Hgd7Osge%_w&vRspn{}4*>@;2aw!jS)6`ic*;RIvANMUMi&t6YUCG%f z-%;^ec1e(?xn7&Px#A2}JY6qsqz!+J(pQFG`&V2)Xct{-*91#)dYfl_Y`W)aq6&Am zAT*OCHbaJLaY~yOCf34G*y$k&z>B`YWDDl6d|bd5>(^}i=HM=iAqslJI3Hr|aFc4a zr9)gQhliprV4Y5BHv}ucQFRI2_Ct3Z#nBK-oIhMDh(`>20#{b(s*2` z)dG)c7+PeK^*rk2-{X_`2nl6bC^MwV$cQ$LG9`>S`F48h5-Wh)uJ8N}uBX zsu%wKg6;=rkzkx~GFc?aYOgOwm_i#z1Sz?KF-1EBXv9_c6werrCjoR(wUzkZ$ zYb3$krw&1Xg+40_|C7qgD2SI?eGX_viiwHoxVK^9ar7mj^Oa7yVBf1QlW0%s41g~7 zS>9UE_mqt`!HC`@7Bg87C~+{e+tk(R7B^VBg|CT>nORZJk~89^m!c}X(6&P{Os{T<~5ZJk!0TA)-&FaF00>cXdbFQ?Hv(R ztdhWtX+8x{GTZkuN=ho^YS;+0EY8N6r?!s`XHdRD4De7l<}S{ynl~i!6ZbT5T5JG3@DRH{=Nikj zt{c<+{avj|z%NMu0O`iMJRj@b`PfeRX$#^}jOh@)!$!c)Qk@c_MxAA~_V^ycF8j*+ zy22Z5N1c7uaGthbb!V4Hj`JltCOg0KWjLJx8pK%L-*GxYXjArKt!tOu;Dm_@WyF+s z+^*;~NHOSlA5SjSO#U}oG|ms-aB+Fyu2-_szG-}U|Io<2h%()i1;;%5+?-OA5;~F zTs~UBh1DmW2EZXL_%@4&cOn=2WQ#J zz4V*v-zzZ1NU1pc7P1Wqi3U(+`;iphWQ^yh*=1?$Gak<6R(21|MXrLHetHb|9%O9y zg(dMfm@+L5)2QClWthv@#76LhPSP}QH@Ves&R3YEG;*2xTQKlUPnRrb{t!s!JcTn1 z2;&7eX^}TRj2S~wIZQhd_-53gq(C&;dU$0f zWQj&xt_vdA_jb;&l`52xu`(dzpk_u3jCwN&k6Q9a+l^i$f+CR%%ATgINkWj(<_vKR z%c5~(&~r8fsOx6;@&G}eCq6PbKxN@%HR6R$`lA^faBf= z4l0zN%~ocZivphA>dXnv71d2q_rSif^3fEl+_^V0*^d3ok`iZNd<~%^uQVNUv9jsW zvUQ?mw^;b(dN^kks6vC8J}(|Y7?UUac0e`3p5`4pr*JGjhx-WTUdJ4oQV;JJD?@~> z{fR=Vl!y6)nyvz@BRg?jcR>~8>BJp9z)1+HUKkp)hnVp9+PPAlBUpMuC`sE(F^f&) zP6U@$tcPK4Pb8rhbsQ`unL@QPQ#u4*(cZ*j_3wMQoIF(}j?Iq_c|4ap!rj6IKdkK= z`6m6Ohd#bI^Up@2F#%Wi`Eezf5v?rSvwe3U=&Yg?1W3hYq z6zg2Eq8*RS;afb{kP^S0SPm+0F-c-V`7@yObCP|=ROO>#teiteK8GmcJQUD|NlHqp z9pj%4G&DeL@{<<(3hL{-RG*^nv#so{v>$z?QN2e5JcrVB)zNv;x8BWG+W5}q9P+Q3 zdZFRexh{Hw)||ZYV6%S{!A-(4*d8R%E#&Q*JdyTo=hChx+~&9HYPzF0EfTEUgNa4 zWQ!sPnWqy*urhT0>)TLqi0SF&N*lA122*)^Mq?50uHrq;aFY_(_NPkOVJ)~+_g=0! zlM-IEJQlmiqB-(eU7=|KZ4%@N=I=`OTm1qQMG*b(4T5|GP~~;28{@Eje5{*hurtm&~sD>T0^ekm($x7Qm6Ds zRZb`{QODORqO@6+CG9VHpmVZUGHfoJDk%sbKTqMQyOak6ZfE*T4RVVv*#W&Kd#PO zw3~K#Z7RE!fjrga^ds|W{E*|^*Ad_2B1bR;c^pEA5*^A0rk5XxzmD>`-oInM-xc31 zpde&h{WN8_Kqk+}(yqXYfYJ10@q*cG%8mSpyC1qU^$N7|Ye*wl&(`HDbJRc$#t*4P zL(MibRgzE!&|b~7&E545LS}S*C>N^9hzVze+(-)JQ<^UUg#T1o#g7`sl7GasqP|Ea z4Zu%q5_omYV5#(sArdi-Tl9BocM~meW?F5$TY*|PcImH~z~GMLrdVzWKilk+Uq(xg z|Dtmp%1L)O7?VO%s9azT=Vj+#Gl}MINyOzmWAjViO6S+O{*1tLzuswVmcZm;e}X}?nV)~C zD{V;0p%dv zX)VT)hdHIW=c`rbfB&$*6#h>cJ_BGb4fY}1tD1iq!GAyN@5(_h5RNi%dtSIF=%2dm ze?9AuKjDO-XF-gyiNQ~{=ab^WpSc&AEqMW?iVGJJC4 z`S&mSXW-{8P0RzR=3xb}CX@`3!U>&9aL>H_zXkGh5+sg5SuIekY4=c+gpOp)+fX_-idx0$4UCz5 zMr_GrNz~(1S+o*Ggymb&6QL>A+J=8U^2y|UiTtgcN*^jDsy>=8XctafC?cW5yK%B3 zt+YukA|#}Mwp;*xdvVeq9u6!@lKtInkIe}FuZNM@(<5y>f4@L@b(fWlnk!jp^&Jsh z_pFTzh3GkteLLhoICmg6fj|DCIDFNeQJ9G*f{>mq^#9ZmW>MmgN?IlZVy>9?du%$C{$?ohIMLWJ z$7teuodHQz{2El@^M4!ff7KcP(87)PFxwJHZr@g>h=V-7BBv-yAZIctzGTQj%xIAP zqqGzW1v>tZLJZ(HM=}q;c{yn^)X>%5SEr7bI6Y>R zEmB&7NnH)Spf0@Z$kZfDn2dakuFvL&aTG>@Di@^3>77=hL}lTREvz4Br9rm};YDBe z%a~)|ZJq8PG-=r=%FHvDR?1RiyMe&OMg=gEL65-Fy-~0M`3Z3?FDj#Xhu|22HmUCV|l4~}z ziL`Wn${gbB_B&pVk254rJVbMM)BP=Hff(VzuoU4LBf)S6Vi=&lv|s@rt~OoatX#@` z6(m2;iSKN6m*3qrDna!6Ed}jYYFA>t*kxUalf??uk?TsiB43NWITS6!otM!Fclr4+ z-bXwpQYt-EvHv~-y*V#MD!3F%&4$vJHvv*)E#pz5$jiDz%~Iq$^WQR@7@27USDsSC zLRWYr>$j++p<>c8rX?)ns!%LZo!B!U=d0mIGD7}h&d;W$4rZc%?new-zYNpis1MS< zF#(9^1MwyE<2E>$1~JI%;_vKEMn*nyy6lBDGCEe#YBo+pv6GMpExAKf3X~e+i9tt; zUdAht;=h?=$>kxQE+%80-c2lIw&x(DF82b zpra{S+r5R3901=1>`;qvY3&+w`K-0$`3@5v^EuP(FNex`S0AsdXu?H1%wIeXr#U<~ z6KB8qz86o!05;M3deDtR+@p*E`r3B(7z*NxPDeja08AI7*6v2J6rjmlxf?XhMaCO2 z+n7`c!}Zkr=~49acaVHg1Yoyu^At@L=q6^OLQmaJo3FVwj+)5^10~BF+e z6iJffOecD)`9Ce)Pi&mb>Xa1 z9H&3}*T%y+etC9Fd0TkXw|XB#<5KzRFBj(53P-Fe9Lwu?{fTk595Bv<;XVWYl=V6)0IQC@X*z5?)|LsL@LBI$WW zKn7)?HzgcEM|12Z6Nf^D8>YP4%r8+8ymZXla(`7Oc9as#br>Gc420og+s zZ3Y>#k5a^u)1^A&CAAGlJM;q&>Z=kor7rANt|6G2^EF`FdF9s`JPwUUyrxHuO$`gK zR%&=$2UK-=lc>yB3GmDY3+7asRbRFE?0Gy7YB_bGZ1DD4xaQBbp?M!ou5|wPp3OWN zc6fpfFql}QeiF(~G)a$3J>XWG|KaDjYl*_iEQx=1IzpU~@de=(SETQF!|({DdJwO> zOYM0*kG61S=fFeER?v7e$zj>#!!j`Ujo^aKhkv2Vm}Pz!bC~=M%V(k$g*)U%B#8Mj z1oT9qvQ?7tSEbwh2~hKEm(^bkLOs2X0TuRKzlVi6X>u_a`CX+nsd6m;5d&LW8qdx;R2NzT?xdLE4P}aum-^N)f~-IYExj}ao8$e|o$p7osz#>?hQ`HH9URt47)=ch=1b1mM-oj>6HHF9`IzJ+|;6qX5ZdW}!hjUl& zFb-gL*Vm)zbMH)mf>+7qya%9k2z_=<3@Pk(OoY48{5z(%7YSM_$_?jvTAJaZbaxqq z8^6@zTHff5nZ$GV)BDtvPOH6fz5%jMI=;O;uOGJ7Xs!tjM>=`?(8=!BfvSbaLwPaZRr>Bo}nFORw?}SrC!4f%4JZKn`oCVr2LQhc$LAC=4dT}TW5}d}$7rZj5o^XPV(O_`g zw63q*lDADzXR`L>P_%Vr9O5~cK~z*!_4C})MLMt7Mr%OC=?mxitLe)ox3Y9*@b-;u zFo5|Cg(mIm{=x1-sy48>vc^PmJSWe#2i|B?A*Rr{ccn@6@lB>l|3+wW6={Pj*wu=U zACwd=YSwADSTmH9ylXc(s?0Q$OwpHwB_D&nm(} z<~x6$%IBG%=tNgHy^99Be^l&kcKDF#< zn00*5@c|BcukdrYER~hp{nBWo2u?-5yL;)Ishk5!$^}v&1dPzL%VsmD+&^%Tp-7M- zT#<=>NlWbrQY&Er(ojTwbb*!HfhsCF}b@WaGc$cJUu3r@BL*UTzt;J zdI9ZjHiZXQrw^k|pNU4h31-6P;-Brp3iVlLWJIj z_FE7P^OrD78DsvQQ(GO{o7;7+1Y9W^q*Q`7Y26q|)t{FtJ;9n?^$9odA11b{BA^RR z{8@kzE}U}@sqUd$Ycu_h5GTzCG6Y;siO3y(B${qqlN?Hxa&&Y89v!u8qX8!mV3$z`FicjSEQ#LO(n@n|NWm$V4W{U!6TOJ_Gr%O zkHchcZ)gDExLn1JucOPg3sVj=LCD$4!ptVE?VWmlI6k1j9{I&AJ6qtOQri>XIn$Yb7{b@eD+nPn|*aA%#BXPq;JwO zD45s7;6`U>x9naCQnlF8CLG+q@GwsuJ_p97phqMao*f40Q4_6MEZYKF&YND1mM;MO z&)(eeEn)tl7r$TpDKO?HDCwg*RBfz@A_LgZTQ!rtmyl0))mnPHW&L;yn(K8n^Vry1 zFgp9f(>PUBL%)BIy0p>KaQRk@h^wN(YR-Ls$kHvNVzJC7>*#nkH2o#C@SvqGi7qaB zL8iv^u&TLTOQox(L`z~douqGISxE)EsAZwi-|{Y$W!zw{S~8~iuwgJDVWGuR%cSG| z!m2BHkM}Tj5UX9+;_aUryhn1pbDnR!$EwzEfhAW1v$8*B6X}01w9B7aW^Rc=7sJpZ zmJTqjAAB%~k6RK}%GKt+ATP6Jb*tqoKFP(Cm)6y7#unh)ON=S;e47b5&jyy53<;K+ z97X79fW-;DqE+;W<_{T0|Wn|Y6%0mmx2f(7 zX0sh-IBFU9o(c>&mQ0%)=r4*4DZ@!wam$hnP<$_m%v53TRHuDi<29FTg%*-PgYNjq zx_dI4>)4}~>j-i{c3kS^V8T~zJ}GgVajad2xD@c*DiyFcXJ=5wGmw9f>MoHTGBbQW?TPHQvy|)5J_1p@Qnto z1Z|$iJbzKsx?J5S#ql|~1y{v!5xj}A;QPzz)6Wquyep&J6az(IU(yx^?bZ4^)dA9= z^Qe&gusC-txM@XO({U)hApXs6LJPs61*7Mw$9fJ}H?2hPjWc;P!XS~yk??FC&9nlj zd8AUSKGlAMa(AqtMB8a#{BnqId0aEE*G35xuVTgCcfOt0QVTb>J&T2w;1hJtdZ?CI zX4{=uR*lmi!{9@Lmr{xEkgbG#D%`LbLY;8} z(-fd}f_S>mGTh7}K+t1lO43v;;i@>viwH1(h=1@s0)I(w7@vPiJAd{RqCL;ha_Pg` zw0$rbp9JQ&Q>ipu875*S==c54Jg6S^KI{Pj=BXVp>nUx5gR!Yv7&aSRCucrL9M*M&w@n&C$7-;cyYM-IMz2z~=;)-Xd8XTGg9>9|4qv5~**fZE| z`{5m%Cy^b$#NF;ffl{^0fs55yDf-IbP|5A>WZqCXouRR~;Fklcf}zm|g7G|$FzoxO zg^kyLD~MkZu6@QH#>NQ;|7j8)ZuKDgQmzvBXr_%0>}nfVwW>vd<8UCUjDSxaw)(Uy zh!-M(X9v?Zpk}6CnddUknNL8~RPPomF1w-yJ4L5OHUP*^rB@o}7d&#`aVas3Yi_Df zyhH<J?_)KNwH6HS6C;FjpNtF3%&#>0%9$h!{)|R}?mP;j_%*Hvi`x(3g;#$`_58xR) zHh<8kBI;z4FHigs-iXF%kzG2J*~MUT@_T&G-{{dn8_r3P{FGZdBP9hogR{+m9Vj52Ig z>U^M`$yks(qBrEwDG|?XYwA!HL;G$-`2(owvW|?^hNOUMsKk~PTWXv<E-TCB0ufyfOy3nYCs`K}kRqWKXrV8q}}YonR_ZP;;|`LflZ!c{mA8*bV~wj=A1 zjp=azz}0Jax~OvS_DGEesdV1i^%e>qlvZP5S*+d(b4>H7ay&Ghjc*z_+}yY7g07h6 zw{KE8Iq?>%S({5Ptj2hMdYiZT0+ptc%yyU4s`XJ?wi&9MGB?n>@@M~}e_@KPK0#__nmlqLvXzB%5nSp2{M%%jEwEWDAl zwH@flFW_8)oQvO_feX*D_6Cov7$}AukEntpMpN?!<1T6T z$ZEEF4mtg_Z{pB$iA6$``vZ6=<> zkw_AY_}NELy3>i6`a(jnWu|y0DTus2Cz%`!era+7vh>sp^Gqp!K*24GjxZalRCG%9 zY;SX1+7(a2>ngiVy9d;4*Xmp>*DBVhqc<`3#=kOo9L0zOM%{TZ14#}@oGr4yk7Utv~Vh#C+IE^=AE zRPPKLLaFpJY)zfMG#+=;_SpK=u9a*VL^pXlpS}p(f4Nn}z}aODin17A{^{~*ZZt__ z#CwL5T)n~lhHH9g>Qu5PjEzc&OG-RuxKpHKb2WeYtZ*HKF!W&wsHVnJIm`X?z{6YC zXAhQ?HPdH)!YQmnj-`XU@5M&T^;AL}de;QvXVqS5I{?*ohC}Q*3k2siPI48!1v$Ta ze4`!VOG}32ERpda=A8N)#7X)v+eDySjfZM^K+G*!o9@t|j#-VBRGg@(X%oV75w(|# zJZ{=3WUoQ5LB(Rc@QdO%ghe1UfFxurbh%>YoYnIJzZ2I%U85i;>wTHv)lnYvRGa>@ zCI8r$=1@xbNK$RH;h<7l&H5?J`xet6w~Qt(Zm#-^2en31B)9!B-O@VeM&$IP=msKG zISlVcNtLm3A1jZ&TzPz-2Kw08Sjlqa*ZVTIKCRgZ+pu(8l^U>PZ_V|ZhOda=wC9Tp zKvg(Y=3?{E8E>6Ow4{k+R-Dn|nP9yVl5jZA6FnTN-9 z(v``c4XAgEZr)_$*mp`;vYIZ9wX||+`QcjJDLprRXxfpt>dKK0vCH6pRT$z=0Rl6_ zNM!~K;fq{W+5tcEQzi(NWYElg)Uyyop-(~70FK7HcIe)$Cdkuc;p5$GZt=xlDa1^Z9f0_$V^m z{3R(A$$)&vg&hX9eLbaAvN-e_G&Ix3>MZ3w_g24>EFQnyUw|x&=Arnsy3M)DO=hQi z0`w+R8yfbdU_wS^&E$nOP|HJI(x%N_N8s@5X=jS`&9%z#YX4(5-qU&zL{qN?-o69d zOx?nmFk@9F#K=zCEc3B)a4N!fe0G2C>amnl`urVCG7Ti!DcsGA_$NgDNw)JuNdz)a zkS99Ajz_Xf7k_o-aC#_}Hr`0mh)O{*a*_bYLT5R<^{F}pcOuVQozcd%svAZJR{$mRY+z zU6`nJs|a-Xjn6S?+z;$BxZd4cvDiYg{hDaitHyHpsiGl47u9Ts+*J`8%j-z~`(mgZ zfU|WXRpNPH?H`>i3J8h8 zzPB;iAdeQha?=p2+i;eih`8*bay{?6BBPcTl()ud-bct&#T)X?soO4z;WsJKL(@L*fdlG2cckY3I%C8mBQOU1q~7a!Hu0k;;s@aI z!ofjBKI3ynJf@roqn2SyIYxBJg-;&EM&g_8_wdr2`5Cw&2&0JTJG*rab1tZ+dS<6l zR?n_y)%ede)L>8FvDw6p%hbmc>Ts*OB(qylKh|Bpj-hE(|ET^>V%7j=?=6p;j|GPI zS@=F1stDrPcA-nkW^aHvhhyQs%&s(ucWE#&JVEb4-4a#yyYphr;$^F18a!a*{oPkW zI|e(S^QI~}>1tY+lv{0wRY~$pT}o*++h2vd0kjn9%&NYLR|$geX)-IoyO6)4C{@iO!YE@<x~P9xkW!>X zL8K*=7AfhG4hiW-1%~c!Mo_TkEyACgkGm7 zwIcI9LxrM1*qh!%P;=~voAdS%PGwNOr4?y{yQcEm{ocFQf_38p37nad>O0JQLh9`0Nm=K`smfW=|lCa-{Vw!_}Gs`(`DQ+)p%uo-DjH zn^ULQMQ>ZQ6$lSX9qry;)7@OBBGMq=uHqw=#o&RLSv_z24sKcge zRh*Mfx#v{_C;yn52F3zi3NTeFn1olCX5mWS^7iP_(zrUZ$94DsS zSY}bPW%AQNbQX*};#@zIb@k@ouI=jk}?X3%c`US>sAp&|WJ` z47DB(zeEQ=V%+A}jYjSgUzgA33bEgR_>>b4i(dpOphRm7TntN+fv7^@1MGjuktCI< z3Cr!S@f4I?8+?X_MIt{_w!&}Z#do+~_2l*bPx_@n$CNZ`>4dSWWnikRJ+en}JoaHo z*AFE-<3~y0!ev(SbJWg=QoDta5Zo3EBjQWGgosh$jvIA^;ftQnhU<49;^X5)*TnMC zXWyxrr73R{$h{c8kF_16R zMdM^&eL5FX{hu<8MRBa9HP9OC`1i&YY?-oHYcLc zX2AgHzWqEFqBsOfIM-BzNZ(gZkh;3p@`cwR>(L)FAQv2h3r3EL(xhhV;mjcAb#(c# zx?8dOX|_EyXNA0aul)OuA5jK-pi;D2Jv}{xk!C}QiV}1E!}>kf;$&hwm9mJq3J1+K z$dQDkYy^ORm0IdI_8@hTfP%Zb+b~X@?8zWjHQzIQE@txrAV(;5$F@lX7hDWNxiLLG z{l2Qjkdu%0=&pHBin>B*Vqm#}iLG&Xgoe51p;gBAZVrurPL1sIXXmVv zBuqg`*){ik;~h_hH_yXn4^p7eAQTwO^|;TaSRyc75kcKLnA?8eL~T3ZVpU$CUW||T zX}&`X3{jfzpLV4SDL%p$O?AW!*9wx}}*43Z1_y@V5*pKBJ zSTPwsKGgvjt*3{@lYWWQ!oGJy>mGMyO)R%ZHjte(JMdT)YFxz=K5Y7~_(RGqmZ?-* zM+dyv_9?;R0RG}3E2U1F)?-;0I~nNarVWGVEa0Zkd@>w&B!*61BRJPL5RBVuC2nuo zP2;I$VmQw}pUuACRCu#>dg1LDcN3;GLrO*)Z?UvDP9)M51%&$w*jiz`+K_e@6;&;# zB#sy!uDoy2FU)@p0B6~jr)xg5>Xb^}B{h08;XSjnSM%urGeVuME-%I=`Z>2}td=Xh zFupIx9!vjsmI)C{x^!#ZmX?GPNX9bfRUHQv<2DrhZ0veHwG5Q=pxc zCBvS;ZiK!*Sb8qVd?s4@M*!L)x%+B;i-WW9`93{RqyU6wnLSf}wS4MyIy#d}-E+HU z;a%o4!Km5xnCAAhQ3QD`b2Ztb@tRfh?&~h7DR)B~T0$AEZvR}V;B-$h_Icsuw-`?( zT+4iMWP7tTB8}8|EIYGu8~6g?)F|5#&q>|;#+JidYrx^F{8o|KqaTe?Yl}a>se9mj zvcr-h87d-a8uhDi1(TMHNmP_ZK|y1-1o)CfeQIfnh>r7|>C)1-!}Scp@mK?}JG6Pd z%9VR@cd1Vu?7o);WR5-nxncd?qncFHx!oWh#tZ6C(yupp?=_8(*A(a+nwMMF9DUcQ zK8@!k5w8CAWl4YVBjuC1MiztJy+RVWciCe%0Ee^w#&-InF!n8QVbR-5&b)?>c({7lXN6 zEtq?it3$*|RYg=3oV>{Z++S)+$G{L;1I@M`)n_8S3zd?RvNcuTg3QgVeL@XTDeG%( z88hh4T!-Ov-BJ0=d=!kRC${Z796_diUpQ>$@fsxoWK#CfWJAL$TY;(Bx8R$Fb4QH) zh+7dOBYc7;6{_6k;2pZ15!1qVSKp%V1};XPYJ~J$Ei*GPIP%W+;$w$=_d$u;cz3G17H79>9ioRk5&+G!HEp#Q z-GVMX-;%328nS2mhY2qYiWg`Q6R?>R(sn;HD7#DSF`W;?qdbDAhnw-AU#o1JCO_?7 zi3DXZONs}Ftj!+HgwIucd8O^vpRY1;bnh4pMXjKYdTlR#~F-Z)^rO6 zHD0N=l14cPS#+{UGM2Xq2_FJcc$*9Np5F+#~f))@kycw|MYu8!3ZFG zO$xVvmA6WobFGY7uEx~AT3xhRj%W7TlKs>uOQi2h0u4A~xldh|*wN2zs|OjVwHOJ-n zoi;v(c;`@Dx2+JlD;Fb2v-l(3TyQ8N!A;!8c8jz^414Y2S>)Fp@AfD1gRx}8OGPbQ zC+;G?OdZc=(MA)^VH%8Co<4mu5$$hK&@6q@Sx~&$4BaBJ=O^qCoO-k{___Fb%t-_X z)rhU9p89|*^gp7QPYm*c5G%H~C65K6pwdS7g7gfv?U^in%W;~wu4ahsXW{sAL=1v$ z26JXKxqv zvU->q{MGo#qw$@wyJ--v7Sm2isw>QSE|?;~hrdwjJ}Ap}U<2+yKB-ADA7=0^Vgbz! z<+<<4;+n<=*hKtF+cO&MP40j$)#5r(b4c60x0P25sGlT`9z=dc9G%iKy7pOc^y?Km zHk-TubAdG!1al)IiN-f?RaGTv!kBf7-6VU z#35)kXhihn_4A)DiIgad(k~~;1)F~f&Z#&M>cx;)wBs5^JGpCLKRmPfN!owHfs;)a z?slVdvl&j-EP@&-5rh=hj7Czzfsb+8iQJ^4qxI(`p8@EO#VY9w7vuca-;YC@?qa;47};wZvd=nsuSF*|_6YS$wW0g? z)Q8*eLoYM^m!b-yXhRjcgTZCELM2;jGF10??xhn(Ddv8qq5BAYRXqP6wRx`8t|3oS zN%cG?RC`e)Dr#iU`8Z$nhG>a_KxgOqMl=Pd`1E0*YQ_{t6h>!CZlc znc2=(XPcy@rNuzgAt+lN#?hNDg18(SqgS0GB_Svd-!M)(;3Srcra{!6>?sxnt`t(0 z_>PV}0i1uiGBnOrP3YWu*NK9>Cl*#T-|=DO&SgOyR-_Rr7q$<;OROSO-ts|U6RpxU zK?OYyXh*c~=~5B?bX8hY9&gyITB%^xJO>a!4)K3RP3&mjPwG4r5I?+d5ODq6Ah>9C zSV4xBKeHPnPjhste@cD2ec%@RjQysO)Sa`H^?6z}*p8Y%Wcd3o^18_AABdP#wYk;b zE%QrQR9l<4+iRwK#7CZZrKHieR`pmwJK}izGIPFQW83rG(LLrANvQr&%Xv;T;QhYf zW0+HnY%d2A^FZxDH66zaPx|vRfKPM^Cyt?R$M?GSR1L0b@9_>+p_!gfTZ24WZXbSf zjF5C`#C~El;YH6|0~`ZNonsI{zlUzx=!aK7U34Q|2|nV5bWAP4{A`zu9i$Kvnw8Tk zdu3`|j9if4^+{U0c_RKI&LPf|{XSQedT&>L;~Z?{`zQmh3etUrwfvUzJa$c=&*wJ1 z8X4t1iHm9~oeKUGMA~CI8eD@OH0&wJZ9HPlp)y|V3i}>CG7OZV&}|g2@^Io9iVz6~ zEY6qBZoYi_);m-Bn>UfM=o0r5HE~B+@4?*{D{V=6)y{JTXm|FH0`g`u4dbC@TeGdg zID(TLA#2sqbcLRgG&gSC*j!fZ$(d14@SIR#8AItJcb)by9j_eHZG~G_Qs;Dclh_~b zF3^m7vMHiPM~&=uCyR5L!u=+Nb7T~01hj#Ik{*X15#N9GA8qgpFpJ5K)Fj6`fD9!AgTwD_Jp+%A8Qc7b zWbWpndBMz+RI$DMb7WCvi410m&TS-5EGcJ74<&~|i!6tF%_RVqvlwLRC&s|Kr*+mA^0cUaaODy3<$Dn~GDg5UfM z!b$0`en{pD;z>(y-S6p$sH;PEUfd9$E;CGPrNi$i*k#epmzr%mP)`$dt08eeYF5zD zpaqUA_{ylYAAFQQ!IISxDku1`Q$SES?RmAD*eWb9)_zsA-yvs7-6NWRV3^%;j3vIp zL~HHm=c<%+7$MdeAtB*_nqa@10}*dZ4x?J3w2I-Z^jkz`g-1(fJ`?>_X~sg{!Nq{F z8k2ObY{7DIb>E%{pJH9N>C@ZgP_cX)Ik~+C&VckmY4p1?r zCHGuU<2#z*SD`03&bC_dv~(!SVXF)XXiZH?=|zcQs64b*%ATs*ZcHF>M^)$!!Jm1_ z*5lf6X0km6eq zOSRHZ=L`{bb8@_JNqwjZu_8@ox@Uoio#FwnG3C0dU$Ge!o2ZL)xViGPQ^k^>ezk=p zk;CF@t#V!^kme$_)OZ~0oJ60-6-lp|RB6B@p}hn-)XgYArtojK`#K5aW)U^OygHib z0mnxOf4^g>O1Q+(u%)C8tG{(4=H<+1m1|m1QdpRI?cu`FWCc~pgFg-eNaQBF9B?M2 z{BBbKOVupLNkag%+`MOK`jA^$kZrzgO@fYh%imz7-;HSKp-jIyLx#gWQ>1s(l`_XoqHZSyQHP-w9BdvM8pT2 z>eYOE+jiW$K8iWMIxhWKu=n?)Z@V|7@ez$wy$xI(*XS>uzUfGsHH*I|k+AA)l6}Pw z!regT5OffjPdCDp8lDO%!ALcax%-eykfc^}pnB&T*6YnWiV4?mJ7NV)@YN@C?sKI$ zJDffA9poj~_s>%rcy#h=U&XPxodO32RkO92;3Wpl00`v4`}a5cPfm^xTe4XA8FC?8 znx~H5DQPJhI3txViyu^6!Vqg!^;uOPh`A)oof8dSzfKycerYy8o)A`9|S5^0J z@SXl**i2wx4iA;%(|JAhdb&;$+WJM=G#gLHtvP&idJ3myPuG*Sfi_h`ODmRdudX#{ zXza}Dij#O`Xt6Kc94a&nwr`^jWjSge05@4TlF+dUo_1TOu?Z&75XO2&7@MYL0-zk# z+^}ZFT!-bnr8?BP1SZ1-=XZSTKkew~={GC5Lzy~KM4O>&ga%O{r|hsu(0*sDV^b8m zKDJobf`yQU}B z=8hZhNDdsjIO*u=_FVatE^?T-pv2E8uL0m$OmIGy^7DZbPqORl_d*)KR6RkmsX$rF zMYce)+#}631rHHj8zAl2hant-z199?B`M~Slf|Qb**bK|wjJC#?&Y{2@Tej<<5EYf zGzo{wOkw&425>Iku^0~N5CSF*3GggIW63acO1k66v-C!}J@K0pc^Pvq!J0*_aUO70 z^`T^%fz6w+sC_#N$SfD3@ffvibYvo|18sn!1g!xciEeCy>uQ)g1YVrybT0)bIm4i@ z@t<}MYn!#xTE>MKwLche9~Of|nOF0t52h$*X21{w0?bz{ml#Tk5U>y2*H|EJsm)58 zgFJ2LdTCB6+JknL0cF>_TNbE%ap+~sukyQYDp}_}<*#H=(g(wMX?oZnehEmZP% zLDJoOrx!COoXZeY@n})~>9fBAXC#6QFR)!aHX}~zbP<%~x#TTBC&=Syywz3(Drk6v zhQ3E>ocA6GMQb$~gq_TM{x(2{&a~gWSZpL$#-z#c-O_U_tT%8(;A8rCm$}KGO(=DI zK>sKQhLMZ^*DI9-uPiULv>UP&{$B$xiQ*-3FHLN+;EMJBA7LLZACM@hEll|fQNQX3 z{&DUhkAd7c**n6wlz%~FmxG^Qp~wL_*>y(a8-FeP{~Cni7Al61@1*D}iF4YYKYFpS zT6{ko9mQIU%p`v_y)T0uV7xZu8ceq+>tNK?CcOXiF`qopJ=8jLBmhP1D&dPAN1bD@ zX&fI*|NgxUW7V%;51Kn$KgGcd^;;uk3b^&mQ%&@+HC_|!durSbiS1V4v0q^_=e7G3 zkuxl%uyyBsZ~(NsK!L8UGhCaufZDWGY^dl}>h#R&6K(ccS4OK>L02NS^RNdOL@|O= zM}ezDdE>_WZrG{(!cavGyK#4K`X`G4)vW#%{XBu|sToGW+3ICV5iG~jQd0iytRLvq z-bZ!Dqzr$!+nwfaxWHv3xX@h{+!=lUmYk$ap^k>({)wK!RQcV459j-?Vbb}{-(d&Z6pLA&Jx2eUb@4auS5 z5UU$ptNhZM_-y0E`<;62mZ)b3)ZR2gS>?m5*Hf_aD2}ov7kGADAQ>Avc3n(KJI9~@ zKJLIk3yo*f+E#V$k*hTOxSlfT>p7?m7eoF}(1+%vw321|b##opc72%FhWdh=bC9v_ zV8Box`mVWpaa2?=m)^%6cRck@QO@Eln1FH9%4gR8GPA=Zl`T_C?jDVK2086YQ2pA%kxojFU) z`5?ZRW^vvVxiY5Zcg%ZsDd+j~-S@Z}7cWlvWaRe5Nc+hKC+)W>A!+S`kN{E?; zSJ@Czn}37}w2%2e>t)K=Pgz-?k-5+79Gt{NJwf=YZ!Y)rR4vjzoCAx_YmO&uQib+Q;bK3bfJ$sT#gjL! zuepbvcNV%+3p*(}``EpY%{yfl;OPLc*z8itfheL;7OllfnLtDCc^=Q=Zmc@9+JQ@V z@krU~S+^>yPqIyM-E>3oD{~j*zbs0_`*w@T&mkl1fgmBF$~)795<+g3(}dHi+h z-!)Ci@lgdp8AIQ^5o&H4oK|)`)RSxeUdXZy(0sN7AzHn^X&QC9L@u!B3;&U$2~(fy zV_l8~0ZwzXwtin+lbxO2;<9{2d?_?g7L9>bCdPdHXvBYyt=H*ryDkP|mM3({Vm~1a3PsqKDjT*zlFyo#^y`S`c!G#LH=lCP z&Qr}C1<>-A#JP5e5OL~%&DN|L8-|92Ft(~@huC(+OlM4W*6ptFPM7em=6^X^>j$99 z-*Y;+bUhweRvpLl3D$EWM$FS2rKA)pV{MJN)W5nwj|$v;zc>77%11bSBrR)DP}8F2 zALfDvdkir)q|S8bD=QLl6(m=(JrwS4-}I>JnQk8CR?e_sd;HSeiw+Y~nRVUMYZI1|Qh}lMzQv&iF*Y=?#9nK) zz(&LE$ViF9w$-Ot7X>^3stQWfQAjrOlW*0jLcj?YC)2A~T*r5Q8pv0C4TgJ=Ju|QL z|FP^ogvd?OaI)a^?zc`)DG6g9H9ue$=9ga)M-)~*xXsinblzT7f5RwofNYzYjwwH4 zWoh??`FQmxN)Jq;B#KlUZgXgyE|D39>e1dC^PIe)z@?q1Y!BkAzx)|}prrYJaMt4l z0oqvWpreh(1mGj<52LYDt6RNl5zVBIqlEIX>lG<2>+wu9%pLrLE7b(@p-NX`(r=a! z+)j+VK-uU?yT$Hg9k4gNQ_JwJX+jKVZn3BY)$HeYkwbZ(PuDsg*)`@?9SJgGa1__f zoDPB`mB);p8HLmSbr&cUP~PE?z6R@aeLCyHW1ZeFeOkz5H~yxr>9Mg0{gx{)57yS( zQB<1EZrD<)C-jcG1^BILrpYEOs!8rjG8XW}DY1Q21q!=wRk-`gJ|lON!7@p>k1_Dr znA$zQ#MhoRYvHEqs^iHDXxM&!aqd}dX47j4A2jqz9DZE&;K{!9jzl6s7}qD6yCl84 zzbM09(yf=+9y|z-MD+-re`_BRvE!EDyk|IS)PadEo>j-%H@<6Q!9M)v>Q+HqJYq%(ix{C)3t8YejI;;VYfmf;b!>G3upg1*4_mNEyl=<0p3Ze&|-y`tkyAH4Z)PgV|Svf{M~ zNR=^3N};8Z$bSFM(Ik%A*|kMq&RYGYx#Cs8$9)u`r&J?R1ftN}_%XeY!zR{Bb}}cM zBmE?Uf89!ZJv%@;iBkBbvGMJ8#P0nNRnHQ5dlnh-Up`8Fh0?;%(w;qKlMv^5vf$eN zfI}I`x#(j>bRKUoWQ}>_2-1?fZD$s1DaMU*bKC6n5*q-ma4nJ#$yn}!-`Re0Hk$1{ zJxNIJ?9b7Z-di18fZyE21P;TQQK_n|baP(Wfz3>!r!~j(i>iEd>Pl+pP7QE$sr5HW zlTP5Ayi@k8KvE^fdc)dgW(L|c6UssmXYDakdLxLn&wg?^iv@~wjA(Htl*P`-d@{8) z7d={FG-|QMAoSMkNnxF;MMr3s+%nAp?KLvP+y+xYGb@xjpfi@1v^zQ)JtSJ(C%RKT zfNQ#`(g2=nEEF51KGt_Ld+FL{K#TrtUQ|JCitfg~)4iYj8J95tZWS_XrtymKmU@?) zf<32MyqVxe2-*v`xt(;Gnv!YnemTS*GqFB9hn>GV7AU@=ofM2vElU|l z79T~qh(g-<*@A|WQf@XyTJ1w}*b0yY>CV;WJu~Db{39yST$Z#4v>$b~yIf@g&|p0w z_#|vqJBkX@g%(dzC32np(jo}j@l%|8obU&kLy~U8$(f@8Ytv8nzJEhQ{Q4v+P%G^i zxh*Lz`4RlyItbmu#ET!^#>~QwWX-g*GY<4e1HItqzWM_p3XvYeILh^P#h>|a^*-J% zT(3~Qhj;FHP1Jk??25aJ$J{86i0(<)uU{cwao#LB_ufHqbkjv2Aqox}^>W9hN6p}f zj>-eiw@Cqy%?m%De#Fi7e0ig%wc+dKDz98+h(la3e7Nkq6ga4uB#27YTM6j8VUCWH z5)vP~yA`%Ly2?9Tf^QXmOBF)ss_JLF?f2?GFQOpbeZ*EK_v@F?USju`uwvbFC+keL z#UoQ9^zU0BN%3!3k%TUxX14BYq@?+Igzx5ww(9Q;-x>ff6=^|P`!e;gFZH~i5yX6m z8|%r*yG7VD*$CN-nNW@hFw`kV*6{Y#^UY&a3f9)2b${mr`Tb)0>M;dA=s~I7GI28c zwD;*n5zV)ZW2S+4rpCb0yj8YvHFhyOHC@*#W_)GGx_5dSgyva_!j&xz-EhdF_ zWWIyIcKCFY@a`un>@o3^BiGc*(;<>AUzBki{hMEnzg)&k_mHrp@FQncE?5Q^108aB z!w20dZG(1xG}-l`@jywj{q!zrh5pK+jDpg%+pwFLi~=bV3xseil4b*t`R~uD^xJCC zT1SNsTcUTOHpki$sP$|kRNXl*BHi(!c3rK;f1!d0ocq$ruV1tmP0ZCN(LE zGF@DJ_N_th$&Ijxh~~NR6O$^m?FD+mIOpsm#};E7gm<1)|L*7shY-^_{mvQv4+~+K zLcZSe$s3QP8!b=Kq8m1V{ez;(+)3c4}N>7 zjF-hm&hOJDNvua@e_yQuGoj-zw-5R3x)=KE*XyCuW++IwUlvS%<$|EibOZ zM!z%uf$QBdyo};+qK0HlL%a^Hwt4Qf0TJ0b_Piv1=KH3DT(Cft6A6>nUcsQUh% zjpXy^A45VE5MW@G&~NQ~mDFV^BblL;=>O*{;@&{U!^40H6A(fN37zv)ynF*xS{2Je zDM|&UdarmGmy`w)@(<{7$qq(8jd1y@ z+*@6^k+6#3hzIv{Sf=eRGFt3FW0~xl6(tihv(5kT1H6q@G*oJE6m!;2-WZE&UJR&= z%!6N9EiJsQK0YVmdH(Y?WUPn3feLthf{u<=38{UC$Ff2=W8AM*7+UL&Ml?uO;ogfC zHN!!nQ-5~bj}zkkBQPQ>HcY@Y3$Y*L?ja%_oFQG#U4!}&}`?FT&{ z`*c%I@*5KHQ?UPN^;h&ib2L>K#%mH%9G5A)(XcTV9%+^sQ7YzD75oq&t6XDto~||K z=+BaVnx(FK!RD`#)WzkFQ`c6x{lrjO-l$cweFSY3vXf4rYW`@*qhWtmrant_ zEJ4+&z{UPV*39Y$7V2lfXb3o5>V9AOM-mfVm^E%T|J1 zvv*EMU0`|@HJCVpk7WSu&?*YmdND=0Va;kYQoYbkEubQBWKb9u7TzjQ)t#d1QgBrM z+Lwg0D6W#9SJ+_&DzTNeVRHzHGuZuQCi&bi{MaSEIR>oz>Jyt9xnUp=u^gl(T}~Yqt(knx|@3fWaP;fl8&{bKTt!H;UWWIx?=PU=YR`hGp*<&*>mUFh_lo zl8-#gI1Ve<{eZc;akj$3-C~EI8DLkm){_&Cb#D`E5%(R%fX~){!SWw8K!%FJ+*V=F zt4_e``8LJVF?Z-st2PKs)AkPLVi&-+T{O_v)mReK-5nXOapwAW*beYKV+nu%fE@Gk z>^uM~3*)&THlXTJy>^F5Rm&sOY%G>;Z}ilUyISo;Z5_(Dy*_30t8{8)n2wI_(-w1S z@BLu3!Eukd>qIX%6VVG}T@HtAdh;Km_v&ldB$4oCd|;OeEC$;y1zNb~vs9QBto^!z zeS>_xeFpN0O`c1CRhUb@O31WNGktB?cX!707UfzcGwDl$#Q2Ai+#_Z!PY&i)8BeIb zl^|#3u9yny>_zqk23w={^A-Q~pc1i>t9BPDqXjjucjOvOCe;{xlyv;1vAG#rYnr3` zDvd8a-O(yXVQyxu%7q7P4JStE&l2`8+r@=ju#|C^Sv=d#HdpUv&-CcNIovpLprfHe zX&H6rVRXNUV$$IC@%SA(ZNuQJ_znzJ$WPR|b|PLuOkQYzwhnz(#3}w09CJ;C6@lh> z2j0^?pQ#Yr*bbVuFJ%g{v@offc7#HSC2$rplN!TtZpm7q5-VAP{m}XDQ{qXOMC+p# z@e{K!(?{(4Jnd}PSps0m8^bD4tizX`4|-sxUFtLU?d1IAtVWkhvJv&4m)jU3bX8Zw zKDl?Nh_cN&>3s?C_pSd%bp6~N2mDlKWJ)ZbitQ=2-jO$+N1U4ddA6QSiOE8w1Vu7u zi+x`=@VR0A>7ByGJa4w$pG2#r)<2<&7kb!-w{}tAn-3e+Opw z`qn+uN<&HcjGes16fg~W@cJj(dkZ!L%-Y$$O1Zi>RfT!(tGt)H!v^}eNj zM8N4YVKKgPCK?e|EQilq@5XGl)jwg-S32##ZHPS4f$KgqN3oR#v5xm7T2&3*xX1;3 zP^IvJSRJ!3BP|u2w8mP#;bGGMN(4Fr*w?maK`R3AZ61X_<`C~U11Z7 zmQ!>3t39#() z>5%rzZhVC+9vy}-WM4j5QtxdE5mmVKEK{10;U^`vLYU)nQwU}KDUD2YFZ1bVfqS-- zZxRev77h9{OFPj91gKcp-$&UG9i6@!RV3SsvLDq0fPT=n!+n||$6mZ{!wG>C*uo3j zhF{|{JYjj+Im#Vquu%&#@q+V`02ZZHAICszp`09at>&byg)mpIbZ6JNz#ZWLn$Fz;sbte`q+g`9_>ZbgOm441SO^l+oe}SPnUGFHPhEWoi0m$&JlsAY7+{ zsSQU>?5_isOISm(i)6}W`4<-VX1$;~_=kHS30qRtt%a_-VI6SCTBB!yLG7Y8n6u0_ zzD!Ur>933Pnx!hLn;5}!MU^P4=@k_OH$+a`Xjw7bambIq$1?VDqhZ5EoR1o!prD{?vDCr{XrCeFDGHT|VavG&TN3bu z@;W?+E-#yPsV`x@VApki{yckOoZql)PHkJDORkeC6#w~zF7-g$cE6ljd(3x9e6}sk zt#_s)Citw6cRhEz~i{Ww9;K6)vB^Wo$2iVy|E#NNIF#^GJ&DO!7S7~ zikMojUaFamt!1U*n5-wKq@wlEShGlV=G+d|i6kZ_%5N)cXVP7>5LDT69^gpd1LKQW zHYq5)##BMDp=}wrpj3`t-#rjDNMdoNd)$gDx>{XbGPJbDiDc>i;)>{ISf1q?;19yW z^DXBNl+mzPj1`u7*}tt2O_!`?EsoxlKg1Bxh=~>a!ozn97W0hwaT{_Odpy`>vdVjM zI0+2~J>H7hDRB8YzPa2`uDi_8u@~(jKPK^<1DnnBo9u5G%BaLY-m&M zYZl90%}jj0jWG#mW8ds&Qivn<(cEYCE#E#DYu5*cFXj67eKq54F-a^)D|uzw2tbrx z2un|v!f%c3b}o&W!CAMQ`?5_f#udwcIc3#7--GM!3Nwt8?nUORmP{4Mm(34OTC->U z)u6Z?$mqfRoUy(GiF)veIK{PNE|G*Cj}W_alLmO;FOhd1Q;m37(5lUIw5nhC3omqN z59z>$5xVLaBFc}ouZITxDww|?Tg1uh`SgqU*cmV|A}z?3veK1-~< zH3<$_jssHd$AM7|U>jd_r(k2jy*Lr*iV}OtE@zxZX73=zx>nrRq0J!49C8g7sY!}Vh1vC zGDCNXIWf?pn`NuX{x2{DI4KmGFd<+% z5iMG@a~vIpNDxR=^eu3ps_dBaobW<_aX``9Pi7mmPKm25MnMlCOT=dkW>U`C4f5{p z&zGeg7;+NNKlX-&y(7Ini-{Uw zAOG!E^!m0sT6UX|_+gdHPFQJa>9wE~`hU0zSL+N;vy;McAzKhBNO+b?D>}LR1K7At zDBo$DUN?}HFgu_Azvxy2GBXPV>XuT^o7nFCA}W1;(fSJ`t!lRWb*;UA7_t-^AFiA8o&%6K`FxBD*R^xTwe}V(;GsG|~Ovk_rfz5)+7`(u8>T zKW`9$0I&C`)Gzit4EbMog8G2o%&d}EIRB94f`Gsd+yQ#7ga7|t#zfw?k%QLb94Y>P z*~0_{kgE37X_0@p^s2zR0sVV>sdZO7CH}b=k^yJ}G7e}6{{NXcJxgn@(*W=(=uPViDQCAEkFlEmoirmO6W+=gT=)yB8bX2ekj?jrmsn=M8ww zfR(Icp{T#oXn&b#KDz>z0dm?ASiWq7zs#ZkzVfpIlnYc{)w2Jr;|ribb*gY&|MP|iTEIGebV2X_oc#K~NP$5if2JW8-3KoOSL7|| z`SZX)AOTdlUDspN^bB3Bf!q4_Kg9B?LEbn~Ng=yfI!GV$Y|F^EWwwEFMBHu+Fy+$cg&<-vsdDsXPADTQ4ti=)YGAGDng4pg_zK^q+j| zckhhMwwd=HT`c8)ydy9M2JlI>4|-Rb%c-wJ!N|@ zl!(xS#9FI3y!eli6q$5%lndTs|HuL42O!3k`Qu2jf`6HVz0?b>zW5_mWi1Qp^{WC4 zc?28>LY7Jx(ern3NE6;*6|d^A*HbB~dGSE!EFt%G!<2t^7UYBRokLQpnnUPE%j5Hj zAsKg?n%l#Bd+$WK?1VqjU#B=Qog6Q4-CNDzQ1FQvrG9$x%X@w+zd_VUJPYW=g@<570U=;g$R?UpS06&DC7!?klj*7$iNFBWFkf9A zOZxX$5ihSa(JloY9Wtb31HXT%F%1}@;7ZdUet$_p;g7e#pKsSc`|*2IFm#a= zl6}^SU+G_&_Q(@RhFrgP&FgVnjp_5{i3}v67IY+J6bxJnkk>Wf0vSo%$?MUZv&)O$ sE-pM!NhWLHMq