From a1dc4e830dac3fa31a107aa855d2d2b2efeca0f2 Mon Sep 17 00:00:00 2001 From: Dan Lake Date: Tue, 20 Dec 2011 13:40:24 -0800 Subject: [PATCH 01/20] Remove unused SetAcceleration and add set on Acceleration parameter --- OpenSim/Region/Application/OpenSimBase.cs | 2 +- .../Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs | 6 +----- OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | 3 ++- OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 3 ++- OpenSim/Region/Physics/Manager/PhysicsActor.cs | 3 ++- OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | 7 +------ OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | 1 + OpenSim/Region/Physics/POSPlugin/POSCharacter.cs | 6 +----- OpenSim/Region/Physics/POSPlugin/POSPrim.cs | 6 +----- OpenSim/Region/Physics/PhysXPlugin/PhysXCharacter.cs | 6 +----- OpenSim/Region/Physics/PhysXPlugin/PhysXPrim.cs | 6 +----- 11 files changed, 14 insertions(+), 35 deletions(-) diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 55ba18ab26..9f9b4f04e1 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -46,7 +46,7 @@ using OpenSim.Region.Framework; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Physics.Manager; -using OpenSim.Server.Base; +using OpenSim.Server.Base; using OpenSim.Services.Base; using OpenSim.Services.Interfaces; using OpenSim.Services.UserAccountService; diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs index 5e2eeebc44..9964edc1c9 100644 --- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs +++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs @@ -232,6 +232,7 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin public override Vector3 Acceleration { get { return _acceleration; } + set { _acceleration = value; } } public override bool Kinematic @@ -252,11 +253,6 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin { } - public void SetAcceleration(Vector3 accel) - { - _acceleration = accel; - } - public override void AddForce(Vector3 force, bool pushforce) { } diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs index 9a6857bea4..0cab5d11cf 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs @@ -231,7 +231,8 @@ public class BSCharacter : PhysicsActor } } public override Vector3 Acceleration { - get { return _acceleration; } + get { return _acceleration; } + set { _acceleration = value; } } public override Quaternion Orientation { get { return _orientation; } diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index 8782e6277b..898436b133 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs @@ -417,7 +417,8 @@ public sealed class BSPrim : PhysicsActor } } public override OMV.Vector3 Acceleration { - get { return _acceleration; } + get { return _acceleration; } + set { _acceleration = value; } } public override OMV.Quaternion Orientation { get { return _orientation; } diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs index c2acf971f9..0587054c23 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs @@ -261,7 +261,7 @@ namespace OpenSim.Region.Physics.Manager public abstract Vector3 Torque { get; set; } public abstract float CollisionScore { get; set;} - public abstract Vector3 Acceleration { get; } + public abstract Vector3 Acceleration { get; set; } public abstract Quaternion Orientation { get; set; } public abstract int PhysicsActorType { get; set; } public abstract bool IsPhysical { get; set; } @@ -458,6 +458,7 @@ namespace OpenSim.Region.Physics.Manager public override Vector3 Acceleration { get { return Vector3.Zero; } + set { } } public override bool IsPhysical diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs index 73c1c02479..1363cfd0cd 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs @@ -689,12 +689,7 @@ namespace OpenSim.Region.Physics.OdePlugin public override Vector3 Acceleration { get { return _acceleration; } - } - - public void SetAcceleration(Vector3 accel) - { - m_pidControllerActive = true; - _acceleration = accel; + set { _acceleration = value; } } /// diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs index 94e6185e3b..75364b73fc 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs @@ -2497,6 +2497,7 @@ Console.WriteLine(" JointCreateFixed"); public override Vector3 Acceleration { get { return _acceleration; } + set { _acceleration = value; } } public override void AddForce(Vector3 force, bool pushforce) diff --git a/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs b/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs index a70179b729..ae534eaeef 100644 --- a/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs +++ b/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs @@ -231,6 +231,7 @@ namespace OpenSim.Region.Physics.POSPlugin public override Vector3 Acceleration { get { return _acceleration; } + set { _acceleration = value; } } public override bool Kinematic @@ -251,11 +252,6 @@ namespace OpenSim.Region.Physics.POSPlugin { } - public void SetAcceleration(Vector3 accel) - { - _acceleration = accel; - } - public override void AddForce(Vector3 force, bool pushforce) { } diff --git a/OpenSim/Region/Physics/POSPlugin/POSPrim.cs b/OpenSim/Region/Physics/POSPlugin/POSPrim.cs index 91ec3df6f9..e4fd7eb277 100644 --- a/OpenSim/Region/Physics/POSPlugin/POSPrim.cs +++ b/OpenSim/Region/Physics/POSPlugin/POSPrim.cs @@ -193,6 +193,7 @@ namespace OpenSim.Region.Physics.POSPlugin public override Vector3 Acceleration { get { return _acceleration; } + set { _acceleration = value; } } public override bool Kinematic @@ -201,11 +202,6 @@ namespace OpenSim.Region.Physics.POSPlugin set { } } - public void SetAcceleration(Vector3 accel) - { - _acceleration = accel; - } - public override void AddForce(Vector3 force, bool pushforce) { } diff --git a/OpenSim/Region/Physics/PhysXPlugin/PhysXCharacter.cs b/OpenSim/Region/Physics/PhysXPlugin/PhysXCharacter.cs index 92261cd19c..9216a9eff8 100644 --- a/OpenSim/Region/Physics/PhysXPlugin/PhysXCharacter.cs +++ b/OpenSim/Region/Physics/PhysXPlugin/PhysXCharacter.cs @@ -233,11 +233,7 @@ namespace OpenSim.Region.Physics.PhysXPlugin public override Vector3 Acceleration { get { return _acceleration; } - } - - public void SetAcceleration(Vector3 accel) - { - _acceleration = accel; + set { _acceleration = value; } } public override void AddForce(Vector3 force, bool pushforce) diff --git a/OpenSim/Region/Physics/PhysXPlugin/PhysXPrim.cs b/OpenSim/Region/Physics/PhysXPlugin/PhysXPrim.cs index c0e24fd67d..42bd119e37 100644 --- a/OpenSim/Region/Physics/PhysXPlugin/PhysXPrim.cs +++ b/OpenSim/Region/Physics/PhysXPlugin/PhysXPrim.cs @@ -207,11 +207,7 @@ namespace OpenSim.Region.Physics.PhysXPlugin public override Vector3 Acceleration { get { return _acceleration; } - } - - public void SetAcceleration(Vector3 accel) - { - _acceleration = accel; + set { _acceleration = value; } } public override void AddForce(Vector3 force, bool pushforce) From fa79588a20fb4bcc79a24214b7c055efaff97f77 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 3 Jan 2012 15:42:36 +0000 Subject: [PATCH 02/20] minor: add missing newlines to pCampbot usage statement --- OpenSim/Tools/pCampBot/pCampBot.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OpenSim/Tools/pCampBot/pCampBot.cs b/OpenSim/Tools/pCampBot/pCampBot.cs index 6249fae019..a73fcbec8f 100644 --- a/OpenSim/Tools/pCampBot/pCampBot.cs +++ b/OpenSim/Tools/pCampBot/pCampBot.cs @@ -112,10 +112,10 @@ namespace pCampBot " -lastname lastname for the bots. Each lastname will have _ appended, e.g. Ima Bot_0\n" + " -password password for the bots\n" + " -b, behaviours behaviours for bots. Comma separated, e.g. p,g. Default is p\n" + - " current options are:" + - " p (physics)" + - " g (grab)" + - " t (teleport)" + + " current options are:\n" + + " p (physics)\n" + + " g (grab)\n" + + " t (teleport)\n" + // " c (cross)" + " -wear set appearance folder to load from (default: no)\n" + " -h, -help show this message"); From 983b49c0c872e997576d7fc167319e28e6f970e3 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 3 Jan 2012 18:25:31 +0000 Subject: [PATCH 03/20] commented out "Prevented flyoff" log message for now as this becomes problematic with bot testing. Please uncomment if still needed. --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 3d1c1b5ce4..42cd4be1e4 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -2844,7 +2844,7 @@ namespace OpenSim.Region.Framework.Scenes Velocity = Vector3.Zero; AbsolutePosition = pos; - m_log.DebugFormat("[SCENE PRESENCE]: Prevented flyoff for {0} at {1}", Name, AbsolutePosition); +// m_log.DebugFormat("[SCENE PRESENCE]: Prevented flyoff for {0} at {1}", Name, AbsolutePosition); AddToPhysicalScene(isFlying); } From 6166a40440aaa505e55c5b9a71c8b7ba1daf07e0 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 3 Jan 2012 20:22:15 +0000 Subject: [PATCH 04/20] Update C5.dll to version 1.1.1 from 1.1.0 C5 is a collections library and can be found at http://www.itu.dk/research/c5/ This is used in the UDP texture (image) sending code. --- bin/C5.dll | Bin 272384 -> 276992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bin/C5.dll b/bin/C5.dll index 1234ce9ff84660be75d5d3a2bdc128797d698a7b..42093e5f845ad7bb7c07e4f2e64faa6f94cb441c 100755 GIT binary patch literal 276992 zcmeFa2b^S8l|TOay;tv5>QG%hRl^KS522f)LPx-1kYUI&1cxAW4+4@Mgn7_~s8bZd zfQev0RMbI7F<>BwVO=AOVptV1t^@;yU3b@2*Y&sSuJHeU&$;i_d)3u5!*Bih+yCeP z@6XJ;`P_5QJ@?*o&%O8537cMLIhJL)`2W;Xmi0-v{97;I9e=Jx^1$e)2CVxsU*GeS zeaC-&&r_ejxw-nXh2Wxvb1q$d-Z@*g1Xrv+_kz_6FWjrwFwx(i z-N%65c$8%w-{)8to|QWxtnJ5^y=Sg3ZCNwG%G1~_8{uCK|MQ6HdiC3iHzEXoy4E|9 zj`%BI=AvEeUtw88@~`8Xpk%hJ<$!w%{eXKn3DNy`t!w2G_vvT5*6!VDI|{G1EVLl{ zOC$WOC}dd^S6uMoD-gb7%Cw7Z1>W($)xc_Ep}BA#A_X_#XyKo=KR=zn^&rT^!UdNE z$Vgl*;4HA#EXsFyr8M*xI!Z9JTt7x18ead9>BI?g#HW>ow=T@q|}Q|FZb<-(Gy$(f9o5%-z5D zJLj)Ap8Ca?zW=lzjBl|TZ-42*53IZ5HOt>}!0)$z?a2T9$wvD-Uw!Yt?Y`$ln?KO_ z#m3K_f7^q1to-cT9y;XCyASxoeyKaYvHj=&`k_b8f8^J9tr_%V1PXfcDXWxR4p>r7#z2ovj~r6+l1vg!TxZn_b0N|S8H}BI3Ox2 zwKaTuM9Ni9OX6Y&Xnz*Xuo87I-$~ui(7NN{{jvE|AK0revo~?t^GoJ=dhY(Pb9;fF%cOi>f(eRy>W!puDsBxfAvo4Kho46&)2CR%g!#>e>5R|)((z=TOYSm z`JigVdP5zSYn)ooErk`cf2W-c{TNLkVJw4!s^$H$~ z(hWSo6}%RurxdP}il-;=iIqctuf+IAjaW}H{)Gyw&aT%TnTB$;K|jFCoz2>w*6Ztx z^be0`{krGtjO5e@9htsL)1ILZ;OQJyuvXS}j#`PeFs#Qd&Gfr=a3UbjIX7*d_L|Rz zcdO1~x!Q=S)N#kkb3?ZGo;1)jHUBJLGv^SkXO*>jU8kP)h{wu@_OOZ@SvRnPC`W8E$1FDnFRoi?koVMDwhD$Zr@tHZwDsE zQUd16E|@vjyN<*F=sgVR$Ks&fCzml}Wp?W{xT8q?bp}7mpn{jKX`dAp?a!1aj;uWg zsf?5UYM(8stlMtUue~>oJPfs;$Aq$?UlJ@p{8LPIq}MTF;}qsH=rRf&VPwn$ZioL zyNDTeLJr60h_%|x9YxH4jL5bb4>{{{I24;0qzFgX z2^JXpwBR&*!ok+$X~KD7PdHaTZ8$IL3FpO(9T*)XZ;}|nOBk_WSGK}+8o32<&t=UP z0$ah0S1}RXEUwB85K_6PDGXa+ur|^aju%`Fe`DnWR_@Cj;rInm_Oi+~h;9}{{1rYx z5l(UiC%6`#eC_OXa2-6^;l5$3^-}n5046K%;E+MY%NPM{R^9~j3rHJUSBEYZ*Ud@1v@1^R04RdVJN}T3v5ejS$@~S=9=LR>L@{Vfz-|PA-%ZF|-`xRzH^V0@)KbW5drKXd$^L$wR13UaS*LS`Cz|AmE~301QMpu{ zCcccVI4@mJ3UwC-!f!y?hFz+5VR@pVhATyaHwrSlg3B#Ea4|j6d=sIBfm<2CrZ;#q zJqOxPdT)WJ`BsJuFU07*6sgmu)zt;?$z_9mPnOs*!EJ!D0KUJh@-_nP=lD2zag)YF zY=XD5+K^-35f5yO2X2oC-WduV<=3*&+hGWA1DwOe#< z!06GTFXU{0m`UX}YsSh=G;~3i`oaZWQWYM?Pqwk03p(?1L1#5wEu^||L1&3@L8o69 z^gdb7kFhSjud|*%@<_Cv6BW{*?hWY5#ClGA?8-;*<$6w#F^Wo1*Y6>aCy#MbYTkuB z5T@FslvkZt_$#nNvx2}@bj96pG5OvD2TFt%-GJREQ%V&uC~rLm*YwXvnZE_vhy6pZ z_7C8qe?Eq=^bg3u{`ok<3YLt}{scZ+p8a!R?HFWXT<{*Iev+wni;f`B22Az}D?zWY za_tqVCF~VRRVdOcA7ZaCFMEZ+*(*{>8G%PZHkJr`g?<&Ytgv6syR*|T-}+Y6FGPm@ zLiYwvA#pj27}=Fi;mdv@&{)4nu+uLXg6NmOMjrMHDdZ8Z5I-DZ5|AO5T|r2nMlN*J zX9yS_MOQnDb1OQktDip0?5)q?YsL}1@qYR|!ts9k0>TPa`sscIwS1?a7^nS&p~!xs zBXfKE0Y;SDtOWhU%C(=Qmav~BwIxtG{lvWNCq}cMBsuISmI(Wa{$1-QB13x8T_g_^ zBfIiNeA!O~8tW$scKT^R`squ^!+s)#q@RTLVLwUWc7j2T5_l&A>uk63AUx=@FEb3m zM%)WQwy!W=f_Cs#_?us24y-avaAZ1igTL(&_w^oe-{=wdO~!4A!wVi-9QCcmQ4cSU z`ZlA`G~yO~Cm#52Jn+4E;QI`m8`l2=gxu7CJCF+gjtNP`ewfJna^@8Z1dlAv`zWJA zTpnWpqP-9;aJjT3A^(UOA}nH%f4ms-PZ-s6k@_i9&^L4k`-IzrCm09Fu{hzg;Ac$0 zVEs8<^!zUvw3MGl;SPeI?8+|@d&P|yvE1P@3k9sKWcGCb0{G#4`}at)TmOKs8OQYM zI0my~zWo)#GLA8mbH4pYgcWKXzV<)iqvbh{pIJKrSs16A+<#`Oma$t51i!|o{V$9z zw^&$`ELDZ0nI*!}On+i6+N#nsbSdUHJ{Z9Loe58_N>xjO8I2%fCe)j%89w#hkq51>1L|iSJ}bu z8K?8>vq0h$`%of{M*qK|j8R=o-r9Fo_XW^#aGGZ${tYfT=no8TKo`*y{4aj~ol&5O z#QaA*P>Tot$N=!=UW2?>=w-}I?wQWY1+pG$_M--Izq^^+nB(){5I=sicB!09pn+?$ag}*{SxL^!Y>4)t{ltO z14n(i`UPGvfK*?;v!^>c=E7F&tsCxfS6ic6(O?h-8tGCo|JeO~*kh{(_`79P_3=lUt3w|7uGGhPQeX^qiW6oSR@H2KKj^k5~}-% z5#}>M4^`ZY0{}CiU{ZD=6$3NEf&(EKa0@~JGoWDXpoj|V&vw*3#(*2F?OhmDaGqW8 z0szT6#+?u%e1?O6P{DrZu@6fKUo5SaUxE zg-m%aC?kkm(%x@9o-Ygm+)#)m`Kwr{O%@6YCW~U(;asqsFh&Zw()1u>3c2#U0IH?X zQ;)Aic7gY0z$*Y=LE)9F^b_0U5zTH{@w@UpT$5v$}K5a%J zf;n_BYNm4?OgC5T4xV*P?%k0Cr?H1?UT4BCO53*|Khx|5Ut-DP9PueXZMZ`a2q=;=_u?PCXu*Eo{+KdmGNJ~i06E$bZLHn{a z1P|%QgVBD>AwtuJ%-hR5^Y%%IsJmYN@fBV_^9KSLvkMH8v01SH>o`uig9C zI`g+0_!`-R-uV7?0^#`nbrN9(yB&mSPa&w~JNsA0>Hc+^sdkHw?q6pZQEsymNFA(P zr4FejlsY7}B~WCp5pC1YL*BU17pAx)U&E zN$-NUsJmVTH^;FnH9!d*tU-w!RjZIcRU6E+t=@SLdK!7xK8?Hw_sF}!pcp(8iQ3jE z>X5}z>lQ~H8bz@^o;8iO?-p-+YPb)(-}T6rPY__h9o8+SD96*>z_LG_;4plfhvUPo zr$o8I5m8)}?Z_x9?3SY#b2JN@{_5$3U40BQVh^pAK8v9UHba!!%GIom^{9C)Q+0hg z675@o_Bp`@MCNOd!yxs-c}QKpcN$CEZQcI5=P0e4g&m`tgh$5Ylz(VmsU z55zvW9T{}6U;;)&^V#@hJ<()baT~H?8exwF8~IUzeU-V~;HQVp2~WWsN1TLA<3`H; zVSM`cAk1(?no7P#w8C|EtyMK^+0l08WMrzG!q2JrU^;P}=5wMTaOYXa-f$u6U@dkl zry zf33qIJR)&*E-TX7M@&J<+DNM~S3{?;sI2oH$?k_PE(9?8dH9@ETM6=PY@GvtU!ZnM3w}AZ5nnA>Wyua405xFJg*3o;0Fy4e_!uymLIz+wfXS2xT)@c~ zIMOE1Iv4I$TZg*mSV-u<4-FJs#pot|y?%cCZ;aow>@z za5z96^vOA>kAJqK$?ja`1PtYE4XP0@>;?i{9GkB1}HCdD9kSp)GiZ#b( zSauQ{2R1&+Ha*}e{ZdN5FymA)^v#yT>X;)5r&HX`rOJQ>(OWm?>&rS^Gd!U5REJ z5FKmEOBOdJYRhZQo}Bjradu$sgT8}aikl4W!7n6RRCL$82{BNpun%*-eem@N`a=DD z+Ls3%0YIh-!fdsBHoCA`*VXFAYFOcgM#^!o#`Zbasam!8b|X;%@i?e9C<0xvV; zlxj}K(}vboI+>}m?`5V_PI|s(Dnuy`2p~m4f9=_9FJ=_zC0yMXhWn~j*89JtdI!#b zn}9jzKOC;3v`&_D7#a-a9BE44PtW!H-ee}DnWpUJm|R&|y&vl}b540)W(q4>y56r5 z{*;&Trm!~b2A<*m{vy|0Y%GGH!bmYnCd z=^8<*Ve|H%A8cjm?DDFt5yzrD|HAS{$e750Jy=%_f*?_LD=mD-&82Geh{$FFQWuvw zH@J#`0n5Q!aD+e&;X3u@PS8g37)qdus4&!S&>DeyPH;7no!}aL=M>_+8(d3>RbXAN z;4r5K;486b<6KpV+Fa^i3TKdktLa!S@5=6{=+zp~wLXJ@_hS6ub~YP_zY^MqkzQg}HrQx6Oi`S$e@XNtx30O501D8O5yEcG}6LDlcVQ z4X@2uYcC1sD#tn%?S+hvK87|ZTR$#b%^`9#Vszx}`m~p;?W^nfP@k^K`2n|{w$r{| znosLxbrBQ2)ZEOs%{B2~nT{{T_}5AFbvf2uTC-z%nleVRpP{JXm{68Uf>|90Be}}+ zhI2xAlz%~Q3*C&p2sZ@Hm*In%%By(V{or|rdd65DxA}^$OhxSDUV%I~WW$spgVc60 z4{&w^Zd{B+jL5mI>*3GWrW{`eOz=ts`)x0H72I?tJ<@zNJnh%u<7 zD$iGLLQ-uQNfG`fiHi?!FSr@GDF2a8C+xJo9>A2x7I(TAyv~4@ws4=avUYsc6hI~@+RbM*dtXw?YI?w={J|{wOA(XdK8V= zAuRgl?xN8`!shZ&f@>#s-MVl{!>eauCm_uU-ooPHn-3_Gun|v2L9-Cc$~|Mo`U&uY zz9-^ep>b{j%fw~PLC)eRLITf~X3C+L$DGV3)lNfH(kvL$LUvooZVTC0=pK#xIq!n< z{5EV0m*KPA^gzKitB!#3n7%@{Z>d5Gy&|=+6So&q=o{lhY3ZdxDlBb+(reIm3lHcf zz%WLc6 zAM}3UGy;J$l4pvU+Bt=cNHko|?1@wCf-B-=F&xJICo?LNBAwP&cOr?f$f_pF7vbAg zMbd`UhN&|hcf-whViLQYpRs)FT`1vA+}@*#*e0q|g=!PxRY21R5Y$yc?Sv{O%T8)> z75>ES6x2^f)?hn690OcKaFna^rI|;_k7aIfV$)e9Zc4{wYpWe!J2QAUa+f&jLxEIt z7@2bR`{k(4_r&Tv7h?c?+C2uqN_QYvyyBQ2I=^U=91$U|c9AaH`C2BOGv0K4nOW=8 zy5cK_Kk~JRmlmlmoyGJOL6eL|K#=TH7>G<&5fHE&x7IFKp@rK86(6t}e5py+7pov=tBw3&x?LJk1*z~^zNz5)ki z#K$(uvJij;MC+cjb^$5?yFQf6g$;ClAX#%7%-6img%aw0fCh%A+;|C^vj392*L**6 zVyzEwSD=PRLU$64PM1)Hy4?5Dc+{8=K8Q4##Ej?|%8Wl+H1V7p?(U3;gY8c9LyD5f zTAZ&BAWmisl38>h;YB45R)+gTlBnB0MkNR6gmGLGlN;*=&5#bxZT zLA@~<&+G^tBXz2v7~ct+-9aS4k)AkA;9L7}EE_4##gb;gK@y#>_m=6{eOJ8D)^!j)kGcm>PvB_N*U4UDaF7&T4nFNZ}5L>oo5|QgAmu zX0U{^ROKF)!Nos0vT!Q*GI*j55rjmod=#JL!4me`QQ7;FWk1Fs#~|)Jif%ZB3hD6U zVH$Kdi8MKAGa2dwj?S(6suVX`bl%Q}eaGY6PY{yEA05In`hpM)t|!Rg7cdwni}VIk zY4Axvl7~we0C>3c(ok&>{1p=90+}8I2A@KB9LTV330(e~xZD($a|JgosAZxDusR+$ z1K(#v{6i^Pwn&&VBW~t#Pc$UpHyKpKCTAlU+Y(n8%|DF)dpsk^RWG*P&jK z!G%tLj(Rgu%UoSdgw!D_<1tiRrS;7~-QeR|*yCClkKs5HR^uS*G@$uurT<1sFRJ7LL^tk3 zHY}ENxXtEQzQ~O5$aKIPZZZvo_^m&M)4q_S0q&6bZLZ+W*M>B*6H|1Pm7Ce3kWx*u zX0MMJ(n`57%?rK+Brud@e!Uiba?q~#3HI*V0sZI#L;qBq{@$9;1F{Yc2)A70ik_&V zjKDN82y!T4PogI1JDL~bF(ihJ=?Ehg`?Ui#Rl38JlJ3xMjl+)sNMH1>tZ`3N8L9&L zJ?#*9v_sJ6+99U=`lEYwNNQ1sq~`k*^@rUN&fe0cUEN{QOm}dO!J2KY?bR1#1ZWK& zgkyS?;*XNw)9K&AcyFOR|CDn$vNVf^W4#occx0i{ux2pp5=WFqtDK@Oz)rNYP$^i$ za3$G<>YDvOX`IUt{69U;Wit8y$N7%NdE+lR&g=h^$GI){BM#;`H?nZF%<;`WmpM-i zj_CMOeN(i+!JvR=)+Ms`c$Z-Qgcp1n(Hw^<>y4NTo*AoWH>6~nU%@vnZRCAfKKpCW za?E~`^D<_4RUu=WSIKBXMvoX|LdeL}-tQ+)`ORGjTw&pAJA0QeuI~CW8j!-cal!d+ zJ@6CxMCg#zF4ka)fppQfI(lEl<<--!7XN@cN?Nh9tV7t=j?ln84#YN4^Q!vy6BMMRTmMV$KIUJH9w)3^uK?BZH@{9kG< z3^y7gw(x4(-?Cpio0YF?H$m6vSXdgZb?otObK{u<|3V@`LDm zcU9+iRp;+!fG!;BkOopghY(^81^3QYM0HBO zD6}}I!PlT@+J+&-Hcbt8MUz@bpk6~QUSCV1pYB3G-GzQSNv(89t*GmipHgw|!xn#weu8K2V6=z5{f)D9N{~~H+BD%$DPf#!xzqoWnOJRNGNP6Ru3Qm)aH@$qqtSf22#J^a7q4pj<=JSn~L;8hR9g<_r`orC{h z#F!h$T#|>Me_NdTuyYkv12Hou)rHrmtjk2VwH6c0VHj4NP-NyYdY9nGC{op}QzO6d z0pzdz1W}Y`*w2XjZaj{>-M}S#4o+H|qAQ}5W}nC}{3)KDAefD=C?~W8vYqM0Y9bWW z^qDZut3s>Vfel=lqrY~Dm;)6+nTg?rCy?LQ+3KfAFJ;r=b=GuacwwcVOs$4;-KWec z)x;hPrz1~n5;DM^5MXxYXK?F|SL-X8^L({KbU5f}Pw)%GjEhgy zZ@d-1MM(~;Tha_rTX+KpbbJezvLLUD{Vm*~9g6G$2EPQL@L_6b5^%T3%APEOY8Wv1 zd*n2?r+$>Yi5A|Q+S3|4TJKFA2o(PT`E?P+39~EqoPu8=4oj5CwJYHs!8SUY#)f3Q zhP|vBzJP)*)ujC+%bmC^4E_^>m49Yj2lTZjsK9=WkkUsf)mf>@yfk+;p$j*II2%5n zj@}5WZd&-D^cRz)0hQmdOla@*w5xxM;8-I+-uxXs*D`42W?UK)-2@&AzYDQ=69JQ_ z^i}?qnLZ0i;hpfH!rR4Z;I#%99=(PL> z)s_3ZxIMKIH=wp46??6TBkdM5HcEE$zu-zK<0TwT^~|yIpAa){x0v9Wvt@}2FIc@V zdBMtn?t>CWDhZxs4Qz>q<&ZgeO2UNM37a=6r&?#;(>cSP!TfWSj2nU|t@{vYRGY!; zCXz4b`yzxm=Gv@o%5W8cvki1nqz^7)3z;Nfw+LnOFh#|dxBzn_URFq_y3=>m_A$Wo zX#>t^dd6C$I>6DfC1Ake{h^YLDG6{hAJr_S>C0*ZK!_a(2y|=-7zq1?2r)$<7<9fS z#n}HSMh6B7#0Rck zB3+uoc(g*6SE|SR$eI3B1P2cz^iJxSP`MY$_XztsBDrB5+=-d_q~6Pf7GM7CN*`DY zBiAN2Hds>H&vQm#Tz~^LEg5{1lWVbw4xDd zL~xmq3R;Aso39o@@HO+fOQi9=TUVhK)q5Ak*$QYH3n}ZC-CR}g%%X+dhrR*h6AKde zp&8_`TUmUu51l`X634yxKZ_h1tsByFC7eSx*^r*Xpxw$7Jh5)~<72{#p(MrH#te-C z?ATZpERGgp5J)oaSfvc9!viJ>5dZc7KB$b2?o0<6Q5Hzpg0cnW++&{y)^;nx@E!(B zlBaf6h-z4ofZ|%iiX`wn_LNkl758k!A{>?{ad`Ytg8+BOv!-@TAZ&Yi9!mi|nbIMb zQa2G&LhYH7D!L)2+!y{`4dB|rxMsB?oUUiv%MsM_9os96lLzqa-I%InAg42$sJ2%yy4+?}=vktmub`!_@D;SA zwgi@3-4eS$%*#`AM)MW4B+I>KbP`L1S`qqp#r6tOA+_i(vb{ol?8-`f$pZu#;{geF zc;H#W1G^&+d4N>%#B#zOEVY+YZmtp!E)I-}2lCWvdJeQ(d%`tO3o(^R2=fiy)?Unl zm;ZFG)Hpm8blN7Kc}xKFJ9UY%M~QnQF?^ILKtVUUiykHJgUI-!L@6j)TbV$OU2hZ(5?yZ;iTjdo6pu6T@EVZ-7r#+tEH7m)`9^UP8Fu_e5%O2B zH;PiQ^F~pEJ9?uiV0ye!R5;SNYP0otv?6G<+l*fH@ylrfgUU=e2Vq*V6$HyZ_x+zI>VOs(LbIuC^NhEC@w9)utT$q%q z%p$*2hj`*OEbHy(gUTtzsL8Ko{qcup!*uSO@T4iEg3LtCmgNlxV% z0+GY7`mh-$Sd7e=U4!Tb?!iEysvJbWTyU1eU@gMqa({#G>wXJ7Pb9Cj4o3VzKPTGa z4W5Z`Zp~*9;RlDnkGbz)-owC!91b8EdyQcYxU&a`FBfO`8! zkAPY57k*lmlY2~UW;HN$Z10YHL($mA)wtx7NvXQ)StdKJO_a2tBhN9}*=@ox zPbb$vnCPtsC|lqBh3Wyq_lD2z(Br{wdQevH(Bt(8DfVV&>WzK$BC<1wH6}wkg;dH7 zJ4&TYM5OY3H<8#l!!XGf8@7tI__ReW)_cTd>z*%bd#V5DUSlKL>j-7RqlAFfm(Yb% zF&Q#Sc(-3C%pxudk?4HX>?$8%f1cL<>pVsr#_!U|be+riCJn}QWNPIj3)WzY*9!$) zIAJv=U-F$IbU}tc`A(61s?5oEiiR^M_)hUKr0n>e;^D}_cZzg({hi|PK_lFC<38XB z6okWN70Z1ElYtHExNwA#ckoz|vz9Pv?6IQ6vDHcprGU%~>eXnS8H8NTBMIfGs6>n2 z)xhrB_R-16Qu`Q*AoO@C=}IXD?zqO3iXu%Zr}-=tYje7Q{G^X0k7WQgah<&q?#aS4 zgoHViPR{dZ%PFU|0e)B?7;s(n&Y$X4z1DGvt&hZ$<#j*O{4h=05ijRgQ(>HDmWBWc z-XT2>8%8395!vg{vx3FA?iZo&jMH(x@B|0HR*r(j8 zp4#bCOin_t`LSYJ@)gpJL3^z7Y!t<%SVAYY2uWrnnQj?EBx~tRQw(_mY}IVWRsgeo zh9zVg8N(FA$zWntT3R@k)9h0)eIPXm!nOSsvUD_yRF^8k8l|bVKEqwS*yan+VyZTh z@s#2MiBC*;n-CY(W`1E>tyz^-l5N%&1DvN#!dsCQnS!@!esuS9rCT!wC@wY7s6)Y@ z`LW)gS^#}d6Z(=$;8!}*d}(uw;}>cZ;w~UMvH8*6`yJC8qeEvD-Sj1Uqx0o&&c9?H zFOlXhIb$;(iK50-9Sy1Vm5VTm=hv=Ke!#g}!NXIQ`AJ-gE2QRXed)2HCxgF`_LLpc zqeIfqCA`_$htFI%g1kaz)qG}j^lWXM5tnJe4|e@BqeC;_LwRY0vX*)8QgCOkSByu8 z3ht))BDg|oaSBHY=&Vac@I`hSR31%qw^$_ka z&lU2U=7bMoV@o(sQj7fs)H?HRc^rQ-&;l*PxAAy?gEg7!pm`fFvMS%kGfv*dbD`$j zc)E7$6nukI=^YWd3=Ri99F~M5*+$yTSJgs%8y{Qk@ityp`*J{JdcTc-4vS-KsH~HC z8?Sp`O3|IS@kBw#n@G~P+Ld0pIMwJ_m0Y;XqPZvyKy47djh7(a#xqgg#!D`zavF_8kK+rHa)!V=dpvx?-EvIZ zxYj=G4W}y4MSRgU&+jv}OYmy&I5fHQV=f%z{z&so=EE837~FzCoR;loV}=td77VGX{Z`v8`SW@;%k!+79YCcTjI#VRe_YL;*ncP3D&FVi3%|Fgk({Li{oI#5wP6m;M3uGy z$mY9d8{ij)QNi`m_;upEiD$MEhbe1@PxGR~AozSse!>RH11Awqq`W zM|l`JOzNI+_mcy@c{V=S9e9;~Wm%y|DUru*p3{|yx{4I|`niN7bv5F)0it%oHo&VcEGO&q`scE2?Ed!+URhuRLUf66C43JVw->! z%ZS&eLQcI5F*VvIi0D_6I5VGmI$y@RIWknhe#IQKle%{XI5Jw$#g36F0olt?U$o;k zDp41=t*aec9ro6p>V#m1X~SCiX8uR0^Gwn;vR@#Jm8`e4UvN1nr%SThFZhHx&md%D zzkps@ysPZU1sxWcE)!~uK9yNcas44F|c$v5_)l>^AQH;S52 zpVTwIzNTjx_$mv8pwfaDG!YOv0tP48kLRJSXGPtHuZ=+@mj|0*_4 zRWo=$%n4Q`7x+1KsgemNgcw}D+;F@Cv3yvk1SOSl?jxd-$f6GAQ0wdtJ_29qwnkB) z;KOplw%wX)G?VS0{U_UxX&w~F3t3smn!=R`c3D$MMs=(yFrM@JO7KPz$D7ZKjXCM_ zxIG0shVrSA#ROty$9fSu=VjYyj)J7w24i&WLD=w9{I_S2BHfpf-h1pE%zooI@_aK~ z2YXoIsbUI?wNWB^Mv3Uv1`95tsYX<$D*D5|1WS_{_?RE}lNwh$T)NqN#msOf1Y^3g zkOdf6CXa*3xyAf&F3i|(>chQKM6$L*-qbf>`iCtm4h|1!>fm$+UQ;_yeGHx0D_9VW zVTlfzjA4nP!jLg6F+{@>LwJxQ6e|qjcB8NXgETBLv_eM#b}OJ_#39=Y1<+ClMFFLC zP!z(_CMZRE&*U`K3*Xyg%=E&@luunYb7DM762G)cxC-9N z03?LS9tB0$xIGF9i#>`fU|WLAwXsJ*uj~pSgr;NL1CtAvBiqPfgjU^F;6fAQy6sk6 zjX0FzJSKK4IJxz(TXF5q>{bwtGGzP_e=oZgZS>o@>^B*g{R1#6Fzkd3m@*8Q0s}hA zfUYtipbNud@{=*=4|`#uv?-KEAx{hWW|;OI^#f+i8|8X22OM@X>QxP|<}|KBQ^lOd zweY~4MzjWqtqT(wEfT|ai&4I)hhye6&Z0SuzrlQXIX~F-Uq@)}#5S>~k*ve*Rfis2 z$wFl6@T88IJ&onGr?IGx)Wo(bl)5KlyaX>rrDjdSeqQ&aX4xW@jXe!cEP_I~MKyXL zwWlFs(Bw1bf=g$PO!$ zGbhj@4oF5VWUNyd^<-Kz=hHC65ya3E`Mh=nE<}@2w3X5E^$&AcY+$p~k9{%vSoiBjW!ZOq}Mc#R8kf4$5r$!PD;3VHT2InVx!BbmD9n@SQH^txb=%1_E zg&d~gG<1X;kX*WSLTO`Z_y(tUR`iQ~{ZINh5ZILX($Jioa9@rugW(WZ+wnY-l71|-_*EZ$#L7;7D+UQ#hi1(7Ksvo8W!D@`m$7+-DkL;{Q9Eh1=dMK!VWhuv`+F$ zL6YY~xGNBsvGrga>aua9xa*Onr3AIgwG4$Yg~YTTx3SuE;#WYgp+n8v_xlM8-grM%~6hUJHm_ z#z0m?dzQ+5pb4)-nX(^a5N+jNisBz=YjhpaUP|u7;fyqq7TN>h4Fs_V!k*rdJ&+sN z&W`>_>gm`65io0U{U8DZdmtU=ag1^_#wd=lSn)|TAZ8te{6W1!2fq1@03OIsIG+V5{GxQXm>c&+s4W#Y>-6cq74#)9FKwQwn4%>kFNk+=unb6 zqCSl22$6&h68*^un8G>`*AJ3f-+nuT>lkcOeK)_3pEQ%c3+_kn+Ue0N6&sY2TZ>l&1IfsX#~c^I&G_K_A!q=X&JQ$cqB(!)^#e_I z<#i|+>k{4PdBN)ujWMq@o3U1(9NtZFt$ndqxR`j!B#qtOuw_@?fc&@`|3)~a>5KU! zDq33d!&WI>xdkb;5q%WJl?<_dy7DIY!sb5#I3mwzS@lY`qy30XSEIFvsc3S}K@x3R4g%1>dOGB?g&BkqPJ zACsSBv$KUY*N7%EX)(7@ntGpMb^ZOVgRMR0!t;ttto`298K1BFZ;a35%#K0ECoX&c zIfm$m4BqTh+%u>BH?!s{)%$C!yN|4LwjXLX`NL!-V;A!W@gH<4cYe>S->RG6+Tvbp z5Ae;UQ60u6ar15HjKm1@WwiD0z4YmWoSy5w1J5^-{uOZo75&f(gNJ(0u@MZEbnS-~p2<-b%q{sHBkm3=vmfmo zFl%_DpZ=xo9I$4nELwCIz2#u_cIAEe@*Y0{#qRM-kn*J3IoJaJE;ZkeJiN!x#;Psk z^%!3}k-Hju?nF}JLk>uQ5HqPmPg%St3K_E_>j+cHt}_=2AV(PiB%kigoFes^#Wof_ z?C8<+Fzxw~h#9%#jI(E6q7-@L-Y$8hG`$*3z`VX^&Tz4+aR7Mph&T%gp@iToFZLKXvJ&vdnIVrjw+=(N5rdkoYPYXij|1B1I}k0Ap7wCyplowP8(x^~$fL#(=<_815>v@1Y= z=ZSp69)r{wSrd@Z;+)ZodO;B+X8&WT(-C_NEEh)anmvXX`cKmygYcrER#@lLu*VRq zxTie^f)D9N{~~IrJ%)ITQG0@dF{~Dsj%aDFG?9~c$sR)t@t*b=WJo-Q9uclqdkl-> zI<@bKdUwqpL#*PS_817M)6Tz)JqE7#z3efhtV8i|?Q+aJw8ucq>Siw)d;o!}3XI+M z7}(EC*<;|?p`iu3Mowq;ZhH)jV>Y@nL2HR_dkloK*d9X!+vp*A)pRr?ca26M=}0@) zUh42wg=D43LfxfY=xnTp=QzSG!^7))jRAO$hG#X_k839e7CwMYej#1?DVT%iCj`eN zjJ-n`D?%8B5C$~9*BtyCXxSJ3F%D+UV~ElX5|x8JtwtEk--MiLA&TDRZ(OsmU&gv@ z_Z!iozGA+RFKKG$x~gH}JZ?M^xLiC6DSa2scEW9imK^-UzluVLo(Etpggx(1DKoa&q2s^cEYD2+YHFea& zKDh|yU}3OSNEsM|9dLsYxWOd2!31%HyugWUGzs9mAdO9F7PuoFu?-NPwQ)Q7jZY+)?a+D@Ndo zNpQtosG5;vH6tO`3GUb!=ZXf8J^dPo5vy-Ha)>0FC0|4UHu4R)aJ}x;=|^} zyilf19^#CVBJu%N<^MZ2dF}=hy5Z{>&bfz(p+l%g@3zUqhAd^1huij;O`caH*lm+% z6SJTuwaK#$A*GK}O6s)vdjwWf=o(F%I1G&Zcm*}H%=4#UNM{28=yRwiU2G1^v3)6L z!I)Ja25~WmqW~5%*rC9;InWT^6N^63nq4KiS=-F z!IewOZug)@JPx7lG&IL)db?NoDB*<$gF^STtM5a!7!LXvJ=Zc={RrN+Uk4A`M`vQU zWLTc>aZk7mExsR**?IW^P2+_I+il<-iwH1mX$`MkqLI-iFfkxR4;}+ZxssHtVn40+ zgI-9whxUW00H*z*kHe+?pijUR`$3<4wCLWSuf`#}P_uZn#+eZgn( zX|p97uJBS&@Hq(+W+&XkevoTjgM|lg@vu)9ZTPyMfhTHnP>z#&v>!zAzaMw$c6`Go z_Q=#I-8xo=NJYF@6JoaX%ep2{RD^Ab3qFr1n2KTF$y~0FLgfc9#N-h1S!{BM9R=8Q z?3R87_G%@l#>HWqx27Kn+xt?sm!^l<_kcvlmVoA%oDH#Lia_edvGD}~KqdkJI(AFH zg38_@DvXN(;21U7d_muL@qWPn7yBZdi|;}EUlilT_ponh!$^72)yFlMqeOwM`g#DU86k_ ztxD7TnZa%U4V_f`0Xnd2^hLO#U8B?BZ-0pi#;%b>JctM`wNgQgP>fw8f-rWCdZy8? zQCEW4HR_79TLOr7jaauVAxqjd`Z99h=g{%(Vb_S!al1xeML2HP=xYc|W$nL(&u&Rr zu@P^qZOkBcjR>=2*GRIFWYkbgfYhP6Aqf!w_Sf;jd`U+&(cfT1xlKsWM6(5vU84v? zvLh0iN9-CUDiTmNCZQq;?1z9>w1Y-0!eMz52ii3f1VXz;g5g+;Z5O*n^mObRF*Q_x z)4xl0jo5bT!s)7Lw4!+qV~=lQ|^V(S^SlW3|+L2zjUrCwV${ zjb0+-xSOr?ru>(n;pI(xb{g#((M{MjlHOFiMvgm`cH9|UgkA>mClo9~_q3~_V|GQr zC_0umb}fU|y$1U#-vZ2P$#G%hYof_COA>4549Is1qaiRD6d2!q8ZaO`DU4Zx!C*D( z7%BsU1JF~?ShAw1}qJuw;2=|-%r5UF&^Mrg>jU?U{GNE zAOT~?TnFw}7{>_=1_j37Jq;MRF`+O{5*Q2$j30JjoQr#Dk01!4*R4EC&yv(_h0snH zXbcK8sOe~5%B?(34}NQT0wdjanmq2DmPq`0A~b}BJeIY<;EJY8o7~31p;t0u*F!f&DEvJty#hDtVE2)YkQ!l-X2(8oYjYM7iAg&d|O5&Lh3 zz^3>YB66a%r_@!&SG6Yt7q!n3iTBB4;KM$|lR@5{Y?+LMZ)-B)Pp1Ch-PXb)8{-Hx&%T%iYGr z4raLK-+{R&+tW!KWI0F$Lv*2rx>(7Lhifv)7>XB|dbA0!ZOviEBzXd*L+nIrh2e;^ z_>&+E;=F>k&R|Qr0*QhTcoVjyD1UVb6TS>-?f)z&T$pabp=}U8QOKIvgQtuskn-qs<@hl6lY>ncr5~ zM>3A#%R5IOL}Q?wMo71Od?0MM#u1h+-$M-AEl9Cu`&)r8jL^nQ8fi7x-Y=HOn08eo z=(KD2)SjoXpy5O)ylo^96n|zC?Avwtu(=^-=rSUWi$_ow2x{DFtwFS;j++(qEUiA-=f?*P2C>VGptBsDK_MqV`!%La=G(-56TBYR-L#a08c2OHh zu@(y$wE+{1+Ms6|)dpP&E2=+S6lb>xsACz0MGP+y1LY*0Pk#?yFg&zBlI+$2_>zZS zFFeDL^3c~Md?3QYL!V`^)P4rSYhEcyYv47=iMP`%yA`DwEF>(%&?KQ!i@-L`DW_m_ zLQY}*sD`NN6*WO1yrL$lV^R*B!s50BOob%Eq37|b)G`4Satw=+V?uuU`@fI)h1HT@ z=q}$fbp~Uz_f*pRjTKMH)_(QELNP{>A{Oo;&Onx z0d|#Gz>9vc9v)JI^N39J=Kk@|6XqYo`{tu3>3#F2#x9{apxEXv(TZyb2u_$ zpkyiV;m|@0%0TYe&*hr(477vmRViD;)1h!?meoW#wsHg@)omEa!!g1bSEg&8B$nrQ0n|Jet4R!SLc6evvp%3>88!Gby_AJ*kjQQ zJyvWf*mK1$SB@eH%TDEJsjmpRfO^&IKm#=2K*lqvW0*}k$dQqowU=p8g*_dL36u}m zjRu)SrHbEh-;>L@c={qUU|lBvT#q`h75)(pX(u@3jEF-fHhO}SJGn|dYQl8Roer&z zI?Bo>+Z2qQvJLKRIW%_4jEq7?I)>BUk>IrOZNrFlQA>G^I6{dN$MFRT9FOhbxK8VI zrjj^15sr~X};$>!>Qq9SD`e>oH(#cGf zeJ?Yea??{9eWt-Wf318bW@TVx!NV2ZaT+~vry$( z0A?(au3;(sr#plHwF8~{7*AnY;UdTz~77k?1 zM53&GtRXajfqNGTyB1VJ!OYo-BoSpR&)Ns_`OAB?Ekq-%bEwa)JR9Y(aqO#lIvbkl z5<8F)JBsS8ubRn;rdKn$dUGa0cVSM>m_>7Idt)Fb-}T^7iHzan!9^}Db8a|RzmpuR zkDuc^^Zgl*XRtDbqZTcis7&KDDl_M0<|`WkK2w_B)6VFUkkQp7MocFYoPOxn$-cJHSN4@uE*sOHMaC7-m&wc-UmqVbLQmhZ{vR4zajBG1s~oc;ihY-uvhX zqTB(tlZ!kjBR6i?`-1vSn|a-|c8Z~*fPxK7X;3kR-$9obNs)c8f>+-QHgWU*^30~O z{OyZyAWZ4~J)u)apPF;DXpAcYCVs}!lilYHnJuEU9Z zZu2>bjC_X+8&nqd0@!z(RuW)o`cUkSXTa*6S;*IBiN&(Kc|qj1P6I$c{hqB90b<+a zFB>_~8`H(8(xh#gsY{uejOr4q5JS=|I-@ z<`(uGf}U)ULcLb#%w^r2SDG30OEb9FWoAkF?PgD?00o$I3E}R@4iZ}-yQpv(=(P$M zJ4jJpJK*BbE2p6#`6gw(4t2kpeQer7gs>p+t~kBR&w$R3GmHiyqv1Jmd{}uptRMh& zhFUmPr#)35$+Vyu5S5XjOpE@^eK0kBrhtzS*I6<&F(c<2z>#B}^Rdv~%xlC88=nM% zP>Pvh?-@x#E7nyOG)5VMleai#>^6EH?MOoFOUNk z;!F|vHH+!1ICr7$le$Mao*$frmSORm*guXuZJLqDW^bC2X*xz*ykzWao*}R zCN zp1cyrd>Ml%wjyAd8=4E)4uI<60#vKLB36Wr7o(U1#muWke+{(`+J$(LY-D51QZ(!& z0u_wGPcAoOzo63@jOz!V2Rii!has#Lyvl`uSlcUIPs4t&Se;PQ#cbkNoy83&Y+os>U)$rVq+Q9n_O;2 zYau05>ll=QV6|-h0WCXh^QpMfxS~;hJq=nZrL~vD)Vs+kl->d0#-|htyYA4f&>0sv zFS78ikQ_gTaENpX+uB9(9y25?HTvB*ot_sT zg2mWhY47Rm86kE*4QgQq*Td^_08!m%p;!Xr!u#h+`0$#DG(jxaO4uvU52dH*xV zSL6TG_^SV37+>Mw;@W-=#uk)*(H>Sd;60WPuDLQ}C1ve=ZBH}Z>j7^-MjSUw4$8=e zH9hl)`Te?-bujAd$j2p|R@U}Oo*S4=u$~*>N5|&$x9fCp&wN|XrEO~k;2c7{Rb`+U z+d);*=XjsMEDc=j z1(tl zZ!DaN-0>R=hA9R9%r_Jjqd0`ds^WVY z%cnClUydyyVl6^Wch1L?eR|{o5WjhI2-b6+P~h#TYj{DNiG3DeMC~$|3W}Nqe?$%Q z@i{^pr|8?NumgKH_uLVX?T0<~)#IcJMu>4*_E^ILnKwGRCo)9pTO z^{rs5-7=R`vihMi7pEL#7C%(x`bL=>Y(RfQNBG}RUAb zMBLM2jkkdpo24KebisouhDkZ55gq{M#zul2rpyCrfavTN((NdcSN*ra3o8{;v^jh=N)7~aTowW!q(@&ZzJDiMuI~GHVovVQbpK8+H+S8? z(;Lo)KUTs$g6o-i>dB@o^=?$IvPSps0$!}`x__sqH{t!eU_t1@7q&_(snfPXT_@g4 zHd)=Ug(sBsRsNL=ZTKi+JKjuQfml42#7{DErqUlwgyOD-AAV#+o276K!4VHQgZXh@ znX-P0x^M-DZzN0jh0_-zo-ZV?gqv=^2w%R3>~FsqzD)Zi_&Ul*cnwK@(izmPZN!m| za*{J~q}^ghzJ}ZiS4tT#!DuR8L$+A{DtyN678CFqvJ({^5%D!-%wVDc-N%C%RuZ)F z5v(=byqb~M;G-}*Va@?VJo{N^o%y!#9N4iwf%dmhI z$CiKrhRf|rHl`$i&3sIC;yY`DYK8yDw&5(h@_z6$n3HpX?cB6kFIhrKi(eSbR<1*A z^+ITi9>ny3rwlJexcM@C+5zW_Eq2PJxG7D0d6cFy>nQs4jqKy#t0>SUJlHm7VOzdj zzA;yY<7pc-pLyK-#p{+i8&%aiPB->O5P$A^gfB4xYklQLqS?G;%5X3oMw$n;&whrNhY&(+PZFO2U$#32#6GV0kHlWqYoApjK`XI~=LJ zn-dhz8XkoF0+AiRq31etI9YI^@3vcPimJ09z%!t`9cptJQYjC=YXJ3j<&B6aO}@k~ zq%y{j>syk`=)MgEJml76hC(KU1A~vE5nXdXS_c3jv}fMSa4#U(NEEYDrT__O&1<9_ zH9&#|1t&q>z%?MWT3k=Xul|{gxZ0-~!;1q9!8-d`F{jXTA&zNNdas@((5So?$QNA? zzZMAlK$_9~gqX;~VY_CYpdLwTF5qAR$}CA%oMxU74Iui6xEO6Bt+Z<}EY{gWg)v4k zS-ZXRxfNJJ z^s2lWZsny!jq}=zkp5Ptj}F~<0z`|pkZkn>uS{9m^3g#drd@dp$~mQrXLAdsV%QjG z*_N{}rLJaA&l~MO_na)8!ufPoBA`_By=|iH!B3|CP-8|19cOg)dFNcZjrTGg{`Ri? z?II30Z5|zhS(w9t1=_Bg%jv;xcfi~LK6rkURHag9>k_L9`HaN5?OxJ6_ zjb9D4-wr>1H$W2bd-k^c4jPfeh+^dIIM|Gy7IR8I4cDKc?udY^IxRwVG#9g~w+_Kp zLrm7J+$T6zKh_th`uRKC??95>+J-OhmFpDGklri*1(2~@w<9d~%D>N`-Fhd&f>--p z@U3~5#?s%~j!*DzeA@592YKndkZOm9{8Slz8NLQ*yx4zf-@%M6e)VAnE;6$M7-_{f zcrQM%f~^_a?_)x_O$4#0BkuY{K`;!TC`hUnSCSBrhS#2|7tWa_yl_sxv59&ZFVmR6 zKG2B&vk23ROA)M{_s{7rx_?d-Ad}(C`{x82yMHc0m8&35TW<&LOU(};4|t)?)^-G` zbHhgtQbY4jB(_P_>cHq=^T)4B^T_~C9kJIvhZ zWWI-)pR84RSNvZ1@n-49^&FiH#3R8CE88Dsq{)W@_aV4x<^kMcm&*Yve0~g(Xuab! zpF>$xg1@u%C+7^*8#}#y(?dkPM6yaWHU$njSE*Cb`)&r0}H$SO>XACX7$Un3}X5(olz60{Iwg?RO=!E&EQ zNOMY@-TDk7g3sd9{v1BF6T&PK|0*;Ug_t5nz1yFM516t7Fe?#;`Gn~tGJ7#t(mYyp z85+@eF8~QHUqGq${rL2*O!E8<^GIdOyDEDC6oGLLq)W>`#-OQetVO6}{kXnNPo^|= zyQz}wP=9f<`HYJ<{{e(+$MkAGQ)12EEs4?NkU|9=j@A7_Tv}2{8vY@S9qp0FF?Xte zvAu?0fNK078=GuD$0prHW0O_dl`rDUu}S!`u_-|vo2!(IFgCx0JRF;30sOQB>5Qvb z>}L;GX2+*rudn8#W3e9#<`rYJ#6?S?-yV%R;sHH7>^7` zT(U)wRY^QOVLX1IUdAteV0*C5FkXUgxrd0fc@pxyXmTGRs z`dW0OpB`C*6T9RS1*n<|DX{jityq<~8O+r2o3ZHzv_G{zKe!k$!jrzwb)EF_GMK7! zJ=G0o>ia{1-C(up+A!{AVT%Z(fi{#j@<0GFA|w19fYSJVleGDL6T!ZGb{*#@$D;%Y zr{`A3SV!Fuo?Cs~8vU;NAJ${E(sUY>ELi#VTjPz$z_d5&RDxu@S|h*f+#z1&`A#t^4pDa2r~t!C zbi&kHYQCw?tN>osEuS}Jr`#zAq<8VtYUO#?uY3>C^7ck3EDWNVw9FbAoid=JM79(T zF_}?n%VcD9W@G|UY%x6JT1JmQNQv&U}<*3WG3u91|F{1#4e`onstMshG|bGi8{X zEfz9`?0gZQ^11w7Md+*W+lqzE^e=5J%i>k)%G!$`k`+NMBl>zX0tzV|0;z-kAL`x& zPOhrTAFqDz)qAydcdENn)kz=;OSeTW-RTZOcaRVP5h6msh}}Vmtcs!qRiI9aihzoa z6M_rll5t!b)N#d8#C60b6D?}gml7b!2jrtvr91ID$k`9pMSujBBbKZ)NI&e1yt z$@l;XtINo&gahOxM#PW%vr8S)hA?1BC8X>3A_XnCdQG8I*fP>dhCk2EdYdX}YZ0?( z8DBGoXTq_slVdtQVn=HEx-x)(PSGDf{ecHFVD?z1wni+sX4@6lSUPKknQs9#MMDj6 za#(KS_GRl!9` zkSk1P^U1>Y_zDmje0HiSZI975v+2FS1-D5B%RpxnG={hcKvsF1IsDPAI3fo!JN5hD zMOg+S#L)~o20kh$r?AJNOTZj5hf6?M=tcmEK*h5LD-E;!yUTBGx)Gc#ZZDRTire!=5^t2crHB-9 zacyZoY4K&p7EWmS4m7STX8sjqnv5v(d+@3xIz>~QgW^_L_L3%EF;Kyd4cmmXvMT|H zCin&rP_?faY;U2?EXFF~xzAHuD$6YWmCcHz)P=&T!owF`0F{f0tU=!|% ze4yL~bHB3434$UpW24EjQCAmzj?U-VLjokPViuUV5=en!v0u%>&P-gLg>SIWSBLlMbb!uyEoe@E@WL3PV!?Z0c<|1^egpA8oH5GbZ?%~LI&$P@yF=b&Kt4`vGM&4O50KZ~VSy&M0)9AizXhbMDA~bo3 z83U$$LL?Z{9thA}3F5(iY!NhtU*|4!KxKOVcF0&ht;D_(?;~-NgjgVc$%s?zNv(@$ z;bE+)3cVvK+>9b@?f!;Yq~QZ^+!MLIXv9JK?xawV^aX;xl(DO3f$dKg-sjUCsPI;k|cPvmAP{D)j|w zjK`Twt-y=ENWh51NtIzq9aI@nW@FT5U=(~9-X(nK^jt$pcjqsbhYI|86!0En!XEkLN-TF6!n25e;2lk<4 z88D{W@q&!}T-VB30X(rK(qE6JC9F#u^%-VVP@lQD$pT2^jQT8D*$5vIajggD!dw(r zk4$GQ+^0MO=fwbU2o%GdmcXz1eq&n2! z&c=cA81Cxjs%P!a`Hz94&2J+sqP~Mi{eJwwP%9EhR~q?r{kx1$RxZ><3Uq^vXsw53 z@JLb~q6n(Z_+P$<&-lW}BBy$VnQGdk%)8CC$XEY9zEujCJ_;-e;$67>DwHTM&)>f) zp9Z_r%I=?u~mK)<))B>vbuRNpdmD|=u&*!FPIipovNcYm~onk{5Cd~yy|t@k%whaM+g%|&x^#psp`&@(!tsp4oFdOl207ctXL zL(hlVx!9#)(l+yei_=k%7hE4GT2u-KPP>W>aFk-_0{t!@zM@a^W5B1F5fvPr4^wQO%O_PD$oHB3}4E!+wLgT^5-1SIqLo@#Z z;53>_)mAirf@pBhs7$wGxI@GKDI!5?y0#*ozj6vU@v@Dl2Fh1(j)2=g!%td(wSUgn z7Jp%22WBPn*xmt?V9(Zm5V3~!r;+uM+y&@RlcU+txjE#+ezPBQ-nr+<5 zdif3BcNxtqth3L8RT)Ka`cXRXst(2{%h{=!X&c%Z;gg8M?8!PCbbVbFG;uV6FdVGhWv8Z$I?MI- zT|p9xOt$hetv%Ec!4_x6E!Qjk0k3goUb<{~s)w7zHWPT1q)*nw+rgvZ9vVl-j0~!A zM2M?IU*mX+gH0(;Z|!|6Eaa96tF??HEqvz3e&ynD4@YL{r*#+jgh zd3ldRmK_VLbU@(yTLak9<+MjPY}NPfC4h@T3^vBvWo0WkHy}F(y~Rl-xAt`vD)?zz zR;W^;P^HvX`81UG5P8E*DW5m;{ukoSAOCdT^lpvXDF0O6*a@mO-`P)YL{i4GH2>=y zFWD#O+^oNUS2;RWTV-S_Q^|xM+}bZIDgT38yUVLZ{Le&8&v>Ah{qdiH&y3@&{<}x5MvT6#xUYw zIE;c1(id=0OgNZ&V1}SQiqu=|`@liITL<}WcYgQeE`ff1QIVUoYTtr0k`6NWo~ae> zqGP@T=jCCB5CL6bN}g%(;f6l#CCpRs?QJ}h7rv@XNg@WLAE)H-VFh=l)w^W;pBt=6(Ru5H~&S!pEeH zI+?kDLtJst1hFd2z`jU6(Uh|~3=d1XBqYS@{fK%53^197;)?Xg#8RNV_~#h7+Lw)( z`{gK%-sPN{Pv$~gI?I_xInmEjjt{Q(W%w1|^dNR>hLWiyfe;nG<}$_ z(JP;U>d!6M|Gc}8Eco-@G_Vl2xw`AD6P>j?L;Er~SgowIN*n+Ox$_9u1E^bZL*dRo zfDJ;+t7q68G;357!nrfrT;k5XTPUrQ6CQQqJ&9WUCL*I&-Ye#Ia276wZDy)@?H* z*4zxVNATlaL)D@fT>Ire4dvez*3$rrmkw=2v(-nD%_@!I*C1BKVmw3;2fjk2t|fF} z27hSG;3HnU&!B0QRuaxT5adh+4^ATS;4%OYNpkT`(`J?AF~(xdj=Q+||10UGo}01H4MI@q0X$+%8foR!*$u0Jb8>PvNr33VBtY1LctAK+KHq^dsz8Cy2x_Z=I?|kuG^I8Aeiq)B z+_kz3XV8*cv`gOx9U!0MStt2e8a0@)bQpk$js<6lglCOyh+gCK#ReZ#C1N0(<4h*B z$|rBN8UuD0uL~6|i+nf59*)=2TKr5leoQooDrL+O-=3_y|HF9T)+m%7DSWS8TRY@5 zMvIB7oRHy4U$VX)iEZ%7OMDix^*-PSzevX3!KDLFT$N)t9*@k)(h*2owO#Dr`rNOs zR3XImi#ogDzNF-MZjT(?MPd%t8*?x$8;_FX%bhv=t$Zf$+{Mz&j1?eU_H$d=?ARU{ z$XcG=IBL8D>mg?-sqJB6G$}UId3_Y9i&n&{XBf#+CM1WP5eqka9~q%t=k^LHB{MGQ z6zs;sJBu?&5+JcO07tB$B=&m_2GFq^S9b!$ahddi0lRTW=Z7Ke&5`vrXq<}+6{Oov z6%*vnP5cp0Tuz31?N2_2;@F`=Sna%n;3C#LY_FWjRZjwRXJi0;u}eqw;YvEr6(=e> zy$Xt2CUq19<_{$gT9DyZtRPf1)dJo^YJuF~x(VASi4TAm&7*;M#%)gE0b^-TS}aXb zp<1o)!?<6X#FqlDol*5IzchXgu9qH$c*61$KL)H10+x0J^ZOArBil*PHF5X>heigl zI3kxY!_e*q6==GS-vORM7<`5J%0w9_n@sisxI6+wI}sJw+ruuI#z{f`!&gP}!|WS7 z0w$-(0@|)A==lB#*>DuEAobbZsbO3Iv|u4i9D{G_CWB$0kpCVj@r<7r!8q zj`K4ZNMNi=8}oA*_imHMpK;ucn0sOovrWdF;8}Ut2C#Q238mJyfD`xE~KB!#)Gz@rStMhOaR!gxrtcM|d9rj_FYhcr~ z<{T#BkY{aMDJAhbroA{z$CiYL@TMsCb2vCCsK^y$XjnW;PJ2!M`A2r!$Do?g)ahZr zUFQ3^EfuyykGobFr5jRJzP9*l>qa6Gg?E%z4N;iEwWjbaH>dHt3%pDw{srZHSa>dl zvigG9hV-3-DjW#PpCMaM;ztml5An zOOd$RKUZ+W1e3y}eF5H$h$wWmad322An@|eK7rwb}|e5U&{vquR7 zoivXP<60Q2^l*IB^P%vWa2(-8?`=eyp7nY>68iNz$M<->&NE8ubrWA({EgNt;Ia-~ zjISS&Iuw8{g3>yiXq|v}n15v3eDMl1>~C6{jL_<;lBr&f>(3B`?=Swks40GBO-0g* zQmb;DNjf2EQPYEMW`dnPD~Z|iPLF&pY8uCMnG~1B7g$>-GHsG|EoB>ksB2ds=G}b) z4&Mn?x?CZ{kC4jWj8Ck5Pr-Q_fd9CN2EzhB>3MVwE1YxrSr2`AhgfK8~QdDgoO|h z$GLRcAw`hli~%1dO-r(heZuR3g5bm&HLn4;6!3TlV5~c%fZrGeETGu&Roije7#F4O zu|TqNW?$O)IYQg2I0`&;F5LDHohwz6NvL`g`gUcz9y;f{96FEsgSZIoU@K` z=A6vInR8aK%Tg$Z_0Py!g0>yddnP`{eAq>K0PM=*%%ku?_LYoN!k)AzXT?_ z8m(>VCCFj57LZKZ(v1>aM6jhL$SV=^Z$1sa>8QH{pSY14Mst2;hU@eBvCw`ZA0`P2 zYG1&J7JsG15=pdJH!PdXnZFh|``Jin`$GI6f<;Q>t&T(jzEZZmlc`#gw#E0Erb)$i z7X7d|bF>ew>(gTUNyw_6xF#aNBA{T?8bydLu1(bD7HNDJ$+K}ZT8sdOXW5o8XQD;s zz>CC!a4D_um;4NzODIr>Kuzf~8eGJpjzx_kmhbJ0@q>CNGr@CKKYAsoZlcwD8-oQ+ z6IPk2ny{89TBII>DTX<|LC<_5ZFWuh(&1ccC=ddC%=m@l9r=(?E>+<7GeRatPz-n^ z7^dt7mdutgq)85MDH2=z1P5TIjtU8`Hz&nWs6aENP*eK^jt@KFlOMrq7J{G{qV&Oc z8#cQ625X!X-whq}+?5?d7ZF={wrr#M9D)d5%2X{$+v5A?zZT|&5pYf`QcQ%VR|CDs zCy0W`-i^#N5&06y1KHCY5kA0$oROkD3McqLj6&JmBC;8lwlNKnVR4m$&!kZ1MmuHh zG9;W62P{^L?<#ZS9WqDf!I3Uyn!$%6b6J(SY~jRDhcZX3sy$^+B`Bv7l`I@&SqzX};6jApwSR*=Iz1dfdHOX?Q56~4f&D4ci~ zk4y!nzIm6`cnFYjGa$L z8jhXp$KCQxmg)Xw(2`NeYOzzsu%y-#Fqrri@F50_=eoZ@4{KA1gtyGMu%+ekLG^Yg zpd9$p!8(5gahB-HRYNPUReV?>ANW~Rx^w`WQPsGF^-kC};P5ZFn))fsW!8&V@IBdn zDj!41_S5)u+E+@@X+K?_Zu=Q{>HuAPIDFR@aF=z;7EiyG_0W>k2l2ha*tDIjry0Nt z;d*YU$?H=p5H%n~tJH?PuXi$$ofv|xSPA{uZz&?3UJ?GIxz=2Iol?1a@Kf>pR( zjiw+CMh)cP=xc$ta6+c0;xc*KZKh~}f=k6rURgXdmFgPSgI}K_@6~Mi7nmt15%l%OkO4w1ke+!cbjP#tYdTvPBeN99dW(4Y9zjuI&mvr`lb(&I zStoHlIf6EYP6pyf!~|*cO8yz`04bHTj}xuG!mAF8eB+j^tTKu9{52doq@Ybj=>Y{K z>wVtSVVXpVGNH}4xtEiXN|ISYNe)T{odcpd7G^fX^)g;D4z%#V(26deZ}iARAnf8J zs57e0#jBK1IUaY}t?iM5OJPm1(!dw+1|+@95zwZcGFZs#F+vebu8q@YGsbbUg@^vV zHkq6E$|xv;E7_D%Trn&Y$lP~Ha2L8nW?lzK$*!pMPKN=J}Xif>uO^gmIp@TgL9nvC(lu$5&^h%|+DRBl@Y2mZ@ z8i`{Im)b7ODr1MWyy1z_69%Mnb$6<8dc&)Cq~DVJY2*W zuTMzTN@e!SWu=P3a41s6bQ7Zm6^p`BH~J)Qu!mF?6^o(;XSw5=eY{`xbeB}EQbJcv zjILHfSN9-vjTW(Hd8v|-r9-NMKBO?MQgxV?ci6<};ac9|y`^fceqCFp7D@W@>nN;& z`iLTcFVaxq&mAGm07}>48EBE(jEriLAc)j?AA{#VOJDmOq<}FSyxLxmw`(rJh?KLg zV{FPRt%CL&`@tK(i6N(Nz8jazw*w|X&qV@snj0`1DL$#q2aK2O((@SIVo9}O^LgEY zo%$W41V2=9YKu?1{(Srb2_N^*2<|r_GJ^Z1iaTS0`|4h}cjgn^`{g6f}NZ%hq`uKtL@k#n_#S!rM_Xn=>(ZW=oC2@U=7k%kuon4w{9goc+ey2X-08h#Vfzz?K>&wz%P zA`qqFZlU32h>g&2xzfN`(17Cs-86LO6B_#EyAU+o3SfRCSP>!OZyDcWQ6UjO4~gIh z62T{lcsZW+SKtRk__FkQq2ZN?jL`5DrGc@a0cyK$8and{4gKxK z7UmQB`sLdSx56yDMGUkzq7B5!=ohh5v@>)KNaKAEW9dKWVK=bwZfo%~# zSS{kNiRw#ywM)0*fmNPex?MgA9L$0v3E#jJKE2w9y%A9ndQBh3SkSvn-xuZ+di&)& z%W5&D((7p7C1Zfn`~^cZ(~#yj@#)k24+u2hj33a<4?Zb;ufK&6cImBn2+ePk1Og|Z zSrWdTDSVo>Uwa3lA~c(Rjj^D4nf@@$Cp7oV2b!7Er+F_Ch|v5+Lo?Hm<~#WGX?`aH z&40uXXyyl>X1>?o#R$9fZajqMJ0*d@322st?_mm`X6-}nLR5ri(}yq?G%wTlg!zQ# ze)&K%Q~ETUt^<9C*7H4vW~L#{@8#2{`F#j9-;W>A%nv@ze6N3i5q9Z=cnHlOk^}-L zpji_B6I1v!Yv2E2L`7&eeLrJC^D<*bm``Z#mk%^ErB8F%=PS)$GBh&{Y5oYGKFuFR zp!qTUfM$O1Y36(V(6(xEeMZR*Qi>Td*BvwfI?Pv88um6DN}IOPcRrHQ$>h z9|I;IKljWB@8=H6v+zK94@f=+Og?_zvxuU#ypw6e&RH9DSn!kRl;71jd^J(*mBnf? z$)0y$NEK7R^6K4RCVKR74(&$@iXmt}hPl~woC(%pQ=TdF5aYig;P#(DfS`iC(rSGZ;T>1BzlDePp>E;_khgymT=ll>Z{r&eX0bSf zk+%=0s8iJ|D`%&qXc!sc3J*>G9VDwx!7oxuBih7m$f?4}9sbND4Q!m>M`q_8<3BWo zLjpuLm#V$Psh*wIWbT*{(&m@SxKqXb1HyyY*Cotkc(;_?)Z4QySXsjolo7k`B`>oGFgr)%m`Z|YN`+tMV;f|AgE7@U`pUZKmNtE4Se zP7kQ8q=VN~bfXV%XHpYP`fd>AedcVu0M$l9meQDEB zROE~sikRpvD<)XG%4JWlV1qB?Mhm<2J(LGss(sYD=l}Se_pSZjNlxkej1s$+7b{u` zEBM-`)LG-ZAHbvj1N`hLF06mto2Sm-(PlHlEm7-HmCjN7Ud6xnpM*P}j{29+^Y14o z9hYrfh8Ava!YFLWHr^ftt<`N(UKs+1_yU>W1I|X3B_R8f!iMiyr5_@eJH)dV9OM-W zr5`aoW!b^|R^#~)pW%&FK3}X+zB4>0_;8v@YZnV9X_&j%FL&_4zrTHWp!8#4QH5_* zIjKvI5dJrOZ8Mkq=;Z#a!dvvlfm<~Om=ByD* zLDLNg94?3(5aXcYi*ODRxz#OlLACl~I4tq-bJQmU$H^(+uqnhrS`#$h-&(VIv$D1!8Jm$P^h!sCj0m^ z(U#uBQ%Ln>@qY?8AvNGO>Q-=fsrrdvS1X0pQgqMpRD8xKG3K}rTyo(;!!<56T&hUbqk}8sj-4o4j5-aGht5JwzZ_g8SaR7>FiL$-4&eAh)9l?Y24P#-jqVsuUoCDIodMb9$+h~cQ0bF0H`@-G zYf8B~s+ln$*lL<+{RF%fn?t^M?yQHcRlaIrmVDn={r6Zeu+MI=H|Z~u}}W9?t@ z(UR|B`YE$%WwrRZx zHTHYC$xFc9cXI3kYxzF|!tkJd6w%}kE1z9^ysQ(e^k4Yp9xq{H=I1LdBuIUXl~@6I z_oB`V&EFsm_jt)PmzM&=8RvPy=-_wx-1wtZzEY%8`?C)N#@8t~(jU`e>d`>dcX+NI zo7CaC@36_OOrZyf`#>7x6?yQ1W=5%6t|-2m^vs&y{d_jw{dn%q>c*7zUmpA#8W%0} zoNin(8%r%ZHAk0^1Vx}0dj3hfU4G3gi4!jO`;_M-*1g8>^PR*$fbsW{SC9uYL0)er z9aBd(ekjv%PIb);o*kXM>YdEUB6Hs8#01$U)^HZjFMYFVlkw**xB&WE$)nLGR{$U= zjF_wo@SAS@vt;6Q(PW9`=R{@CIb3e+N5@mZaRtAF8k~DR>KCT-8j;$EBc0Dkfy3e4 zeCjcca}P^gwOWq;h-)Z(Wm6KdT!KSMlUhnfcwFzr#@njAE_m=-`lggjzYRQN0bBi~ zw0XI7WUq9Z>65NOi^KjjXTVd3H$H??H6V~(`86Ey&}TX_SNI0%tod7@6I*DURe*~y z^1$1N>*)r04iP@)IQQf!f!fdAbp3Y-R99mcGl^{+T-*pL{5_(I3-v$XQAxS!qP&@9 z$2-g!h=+k+``I1@&B6w|STQJ@o9sD@L{qD;gO<}RZ(VoJ^<17cUy046>p4{{H-e^0 zE@G9)We`?=#IAf=<0nEkj;c9wDvfH%1N?$=xo>@;ok)BWnPgK}lCwIKZ0SmJc4v~)x{_?`Omb#d5@}IU?w;F~ z1Qzyjq8B=o)GgFZ)~(yDpcCD?gXiufezeLeyI~ud8NV62w*j`5g1dz7&#iliE$qX4 zJ%zVY8b7=N1TMEKPk^6CENxQ?@|093$eAcexGE*cR52BROobpvop1aca%cQ?VPd%V zirLq9;F>|vKCW538(iV}ih$D*T+<<7;F>9nW-Hs_>_5A2Fs-<5Nh_`)$f?~Ckhn*M zAaliZfNL%UIqK{`EuTf#l7;6hXd7m4-<<z@%jqHkB!yyctjfx)`SCzi@+QH-E#~kB+|~VXU*MH3WB8Mp1%o# ztjl}$1VPev&kKVfF}w!?t}Xd`Vn3$MG}xNh4YQTZL@hVj9OcXP43;mpr7Nxu4G$bB zuqUX015KVQFY{q+c)*b)=JR(kOqMkU=jFqVkKJQF^pygg!T!*1GSG(s-2g5yLkM`P zNjTRFn2>}bVUvV$zFf~>c~)VSRxz+u0}7{C9Tm}8F={P8hV+CqtRpDWu%0j1GZ=w+1cUux9?6d(%y8m% z6hC0f$EU2vf&gS9{K7d7>6K*sqSHe^V}YMTphpuZQuA4_;#+fqF`#6U&&^n;KMXI> z=#>~oNWD;mkf{I2(JyIrbsLd3aAa$30{?$M=LY z_mJVt_k^>Fv5}f*1+ku`Hh&kZ=V;*f3_!!oWN2t7L~}iY0jQhhTm8gXXfs1$zLR1f zx5Pq^WXQ+lH!KfENm^dAj;$Cs0_S9=B^9UO1@e0;!;oJ-#j{uQQH(*si~+)@F$m+; zNArn7B%z3P1j_0Bh{X}U^R=F5@8bvHL0_ok7rTB2lY(Xqjl{lbmup-KoZP72dWG+l5qO`h+zQo-X ze_#tjICBp2UW0mF(>#|@SPy(bZ9a}+>I0vEKIPler!eZ;Bak@bR#WIiwlfKK7o;b{ zEFY^4(Qv^7pL#ZRyutm4bNY@CqTkvd*8;9A!%3d%fR0E^K04GdVOzdWnU80gR{cCY za3i->e*#{lTV1C7#X~5+mY95;mJc42(E8Cvo*1y}3;3n<$R}*8WCG!q@1bxLAr6S( zu%s0ZWAYf`@FJ3c!#kJ~t%Farj`QQeC&q&p#DfQR7S8x#S zVxhOD`DEs!{PG3deG0=soKL%c1w-JqgrIYceSBIhbY(p0(_5ewDhNzpW<2hk$0 z=0{M)P`$wb_-@K?BB%lsV0aBv1fgpg>c?Ajp*|A?xG>=~GU1ub_7*U~h}g3bw(D(h z4i-21GFE6l8?o)bV$x^ElVT~%Xe@a163}_IQ63#JQUFW{O3E;=b79$0yKI(UgSm&P1LMO zt0;^tk3liOJQL`%B6;f1T|P_CJkMJ$50sKpX+9fwo338!==sQ5ev#E;#Z`y>D!2)u zNvj;GpuHvu)V_wa7j&h$(WHR}N7B?^NZ=75H<<)O0g%7$NC94uC#T|hKlo^0i(PRH z8&IZWdhG7fe6E16zX*Au#lcq! zYB&>XrOJstG5DsHhT9^8;t+-#j%b|m%)umlSZr3z#X0iP;V6gE;0{aW1r{X>s zlp_fnyoXcQ6^@RW3wHeh2uCWtA#+Gqx)$8NKPL{sW{m`rU6vPvTM!=8xGE zr|G^8Jt^-6j=B=+hbU6LK~~4NkesttnqcY02$p_IY3`RZ8qYqS6HD~*FCiSz&S(9l z44~>6ucu+e%k7n`ACGCOQa%5RzD?(3zA{~ z%_KvgB9uRhF}E>eoSX3w_}0D!HICu)1+4gU{qS`R9$0w=IIQQvPDb0I53RtBS7Y;9 zItha-F9ML}1D9rvlO=YQ)gpjB%ny%djngHzbUX3U{iRiamzMtZTBM;diTwt?(az=# zOtvI877AUAkk-HXlCLC6Z^SnRUVjr_cPx~@5J@;ZAlQfrQ*}I&7$1mG{T~RrP@Wu4 z*jmi2|Hch0_B-hNp}&!w@E<5LUmXd@A7zzKt_MRsGF?2p`s4S1)dl5FJej zFbC+*3srbEN!-I9SZ$2}Q29dD=-U`y-U3LwPyufxj!%V0BRma37#7K8In)Q?(EU20 zyZtt%j_9}s5)mDje1zoi>GMVmx&S^B=Yto^uhT3UkkrKG?S#I`vhC*MAy6d=%J_)R zJ%QC1??*0Sw-@`mcJm38xpyE3v^Advx^BCUU&;^esPNN+gC@PB8Sd!HKsyS~NuX=Q z`NJKAUjG~*HCa4d4-&Q|zjX&)jLYWVekZ;`jQxosY|8|e0WEiLJ%J`1*ls6roh+I z2LVHyg1kvn;F~lB85`~Z;Xm%+A4HbSS*9%ngj2j3SgtJuR5CFGz1o7`Z~~gDm{Bn> z>fpX1r90AcWbDO`x%yST6|G2(D{$&tkv9`D010r#v`ovFDq3cJ}S^E12 z0k?k}3*;u=0NBRfkBq(ASb#!zmVV7LU|Kv&-)0$5(w+X0o29M^#}apaE@+dKqCNca z+az@Y7h8$MPare9KZN>${RAI}Y(LQ);r9Jb^kx&+OU7>diRP-VBwIU-0GjK%l62Zn zG$*@~blOiet6fR9bQUz*m88>tqB+-!9DzV~4%;E1I_F0~wt#&-e2Ej`Hj^Ga%&UVhK*!PY)O-g8?JB#L7y zL3?$xyOz@}VJ=EmV*2UtsNc`osK4*L)F-X<7iNg~1V9HFB1?+Wy2z5^lT3sKG@n>c ze~LjYIzNr4=oZDciHl~&RDsgElb9S@G$zM1jcQ&!v0(cr79=SSRtgXSU_N1agud%= z*gx&PVuw}wXMn7)MTq^Cop>U;ou5h{E&zrU07{W0T$%92YJG;7z#AQ(_0QrbTN(B0 zpTi4Xnh<)MKY>Xg>GQgZZRA6$?2i7F5 z&m$q$bs5$uG#8ptEMINklvV6^7eL3)K*vbJZvG4M+;A5J(`tPIuOo^27xAbbJCcxV z3$b?(OlK!zLA57am>!PBE|xX^a?$eK11M#b!+z{>L3yywUO(oE_4AzG;75!@f57)ZUiQc?B)Kq0Vt723JMY$z&y)!^nND!`5B z0qjf#b0b!%7Uv35=6cMp5sbN)>Ry#?j*lwaBE9XH^qwC`@64{;X$BEqX$G4wtSG1LPaDQ`03kHJ$ZRj+S3J*0U86H$4mAM|Rp(d@F10^oFA6 zre~6NYO!KqAQwUT8^uo?U>r}DlA=S9S_1q0`Ftkc+_xAxV=5^442sie|xsk108CKIpID|n6 zDj21E!J=I1Q4VsdNw2MNB2Ob*dtx=| z^P`w}_AOeMM_Ox3_aPe$%GcVZZ}5$3dO33?p_^cZ&(4+I&|}Chr@0@&<~Q-vW*fu7 zA=BFuHT1zb-Me8=qF77wD}VT4$qa49MNNO4pZ;4cWRrjHsV%`H^<$xYm%c=A5Onq4 zMs541q81dU_Q~%9TmO^wB)0NBvPL?$Xs(-+EF7DC(tcO{E_Wt2$Z=Be>f!T30f_+fo6zJT%H*%Bh?aO39expWu2M`jW_v z)cddU>_r--yVIE6$S4VXFEp^3eoq?-lJC)`sVo>xQzA#Vgb~tKz-S z)Ct3JMB-Nw9GRr~eI!6f=$4={uc&SaRn(QvY5pLVkn_OjBi*kFPv)d%&?(G3xsa{w zKvM}jOHav@Ym0Gjm=Gqy{6oOJ0p|_YIISPyb;Pd!7!L^ZJ}wy+a29Bn)55wdW_UgB_il+H!YhHE6?{6qdV~ZC}+KlujH+n^8v1pj%voQoHmM#2_N* zG~D_v;0-V0Am1?m();rCT&VCk4znAAR;*ipaRkok2Zf{f78kn^(ho-Pe5l0j>45oP zVVz%Tw{12C5T7zcPn+UbbmtT{}oxLIu+40M^3= zu&!r%;~DPSxxxj@6D|a2#4iKQ{5$A)(`&d<{)A$tqfoDuhJ%#9Wa7;z@2@*$8XH4K zgvZav5ik;?Y``2eS2;b}{9J8*nBav?((mX~u1-zN+Jp%Zm6o7%qu%VD=wTInq!3x6 zU^VqiR8OSg)G-g`*0tKC{EAhn{UiHzsSndX5)=+(`H)%F3t3#zr#QN1!em0yIjToe zR*k{y%QThMf_^OpaqpFDVg8w(T-)kEIZC>+$u5nd!?OxXfsaQQg<)m+q&07F;N$GS zlr+?jlYp*;dtLsy@vuxn>mbo%?L5kce&9lU#0_;*aLOHyUpx&bA$_EU@<`p_*mPJm zsoD2FWc*>CFZu^&=dBd(Ya){aXcH4USw_e=%q-pz2J9HfW!6m z9eDmG;1BOp=ER%*l;7d37+}nAfC4Z7r24|Liw9`oYQUocYn!^3mYp2Ie50Xzx=Lyfq zdN|>A3V#F?f>x=qlT4IfnyEL>bh0?~00B|2CMW{gSdalA^|nlTwc8Xp<>RDFSbH1- znE6m@FTG6V_2|@5X;OJ0Uru=>OqfKzf@0 zonF9n0aBN5|NnmZ5i5x4MY?S25-(KLLyq>V2ZQy-iJ*Bzia^{~cwpq7eN zN$^owaX)zm?*i`JEs(PjY`a9}N?m)ip6t!mCK~J414(r<63ZdXHdu~$vVog-r)C-# zFPGjVj8rmaRT!>aTz@1aopdREok0F{AL$VTTW=b`{syKi;+sd;5SJqSvtXWson<9k z1*GqGFZCvx(ANFkST5BMhx2b+JP8)D&*UbqM4uYby+362y40${4(Br2lssSAZmPla zmF=ER{)|hvWMvDKu7|E_uR-6*TJ51p#^b4zF8OXs;IaY^+TI=58M07>a$XnEl1 z0i`VBSRX#Er?3w&hnGkSw!EyBIEGB*ii_M=)qFYT3l28b2NBeRO(AI6YC}*n=pY#K zO3JhnzP=ddn?ry>TU1NlO24Ey1?EUFaUI5Y+@+MarFXZbLZJMt;6`nB_ig4E(|*1{ zGMFBHO_FC76FA76hlhv)Zf;$Hcn>$S=J8CmN0=DbKn=D>@s@6n;n!9g)Nv}? z(2&#!$eudYYB6E0U^Q3bDY?um!RS}F*eoDWFXCs?YVm_xh(rM%thX|?H^sO74d?-O ztt_NIjvv8V!_8HUT#X-v8HR&Ceski2zw>Pc?8JLP|9_MI7D+E`ehb2tSs4G2Ls?Hv z8sJ`+T=e3mRue7q2R2H=CJ88%>5~*0+_i-S^)>jJ$VkOGGjFIIX@DDGYT*DYF0vfJ z_^>2kfWdl6*~Tw1V6*SheT9S3Ap5)j@6tez$!KFvVhQ8k|DY}k89VD?!gLr2_HH=} zyELuC@d}-NBxWsQs6mKCtz%Sj+=ByHtF<11X*l^k0#9fUjK+KtbIWL!BbmjuJm`{3 zN8vr69L&3;PI?rB!)QuCjlzWzrVN?!d>ZB%0=BAP6;eJOqKNB_;QsD5&U~gZdCKLp zquzL)W*t59Wup1uIxonVfrq70FXf$Z1B6ivNoiUkI%UDf9;S;&1K$*Mc%2*=98ZND zz-G2`V9;>j=vW4!e<(u#;9!0zpnvWU@R#V>8*R4=C#gZ9x)I^ykI-9yCR$)T5Uttum zjtUbNfKjnJnvU0z&}`~RXpYyBhZ$_Vj#!S?Q8IBeMCbt8lwH`&Eow#14kZuX=VNg! zEN2%N#?OcO7Prob8HQ;JnTehl46{#|%kidh`W4zxrZUZefJ8*SOd95ig$;LFwx>d? zW9ss_k;9$1k(q~xn^cg&ZKex10+Qw)$Blf$JZ0UA(gfes8}%e#vDF$m$oDWt;hdb~ z=t({agSqtec?O=FIG&U~gyGA<*7&Yb>=I!cBC{)r&>OK_F>bS*HhGH^DJ49LnTq2U zFNWfK_P3UMGdsODxryBa={rKZE5;VW8UQm{ZWiVK5#{1el95E|80M6Fk+&e8e+Ejn z@e3lLyZ-{XxN$`5EebOhLtaAP+gV1L(b%IV5uDTEa5O@sg(2D{SMZJzjSp+gE>-b_ zqgh++Qgm)i$JD?-nRqt(5;$GOILw~12A9iizE}lV&`{{HX(C_76*ZVJZ>)sx!Y|Xa z8!_B_MG5x(&|L@{P38+Wy)57bwu-S%r<|Li#`Liy*R)6{Z92^<^pIMxNhA_PysQ)u zq~KVoQVox}+gN~SuvYGvUe9D@lQ&)cF3T%TAy~QE;CH@1qUD{ihPkCdCPUL~@@)`p zwIbxFl=dcw0s3~B#)S+$-3^LXY_~d)%l|lNgjlP8dki|lC4r#D(ZIf;n{arHgBpbFZ_~y?UwQ*d{z8UA*WKNpH zQ#uT3C|dJdaKH}ztu)z`=|E0t90y^DIPbOhYylN?+p7lx)L}0bfpplbfczxtv=`hX z$do^oJ*Dxw5F{pN1s|kWObI)d^4@sTe~W|k3`k(lc3Hj1ytLTTLCVy&M(W4_UpgoC zfv1Ymqz1#(IP&=K@sd)eB)7aAN9d*0FCiUpBn=nF%8_&&Xgbajzn4Cxaeat%CZ7pF zW&)06#?uC5CJr(a1DOt)d~XO69!&#~*`g098!$N=2bq0HOr}>=p9Q&IOwL7^oQs!~ z3rk|hT)hl+#23FhiwjfdHntoUR45&<`ehBWtRS(e#6gx-T<}Bj(gsawl7xzA?thNw z9eaJAf*xliF)~ovgwK;6rW*pp4SPU{E5Vu=c6yi(!Y=0o zW-zc`4_FTR2m9Ki#gecVnnSq4`m8s8KCD$Q0HTB5$|)W_AWgGjx^xW(o>)+1UQxj$ zC=$g6Du&5ZVK%2TpLE*se8kz9$N*33u(sow>>79NZPys|vv%_l$TX2Tr!uAltena= zJ^;CCj*6L}>-dv6r*je~ekssjx?S)ioX(|Inwf!A?czA*J20r&!tu?U|2zD4aUC-; zrX9bawjHMA(K;c?u?PyW%oU@t*D;y7JT;PgOlB~Z%VSB&v0h1812poF2n3;;^{tA? zvgP=btwot^&Eae!$c5#^a^x=fu{{fB9Q+GjZEG`1(T*El!YYh)V_ z22C+}T5U`#&DpA*me6SWF+YwKlS{d1#K#@&H)1FT*j6uu3_@SuIR}sQil!$v=Y72S zuXk1(*{weP6<8OU z)*ne7%N{m{G=?NylBGrXDmaX#>mZ1h$|b9ZtDwqh{-+aTMG}_|(inxreQFoW38~#! zznJ2xiVW}<@7OqGA7WP8r0bkm3^|Ii#YSI!5xB*_H~_=jjT46iDV~T7iWf(cP@KpE z_Z+b|*C`J%^t*61{YHeItnHnHJ3zcxKfm$eSPhU5Q2^IChjUj@i^G1tboeLKK57nEeS=6!x-z zxhm>{`H-q;Gf3;GA_%ju>plX!!TJ+ZEEQxf#Z=qXr23CLo)429&zl;%(br;68?iD` zwPb-Puj&wLN8?sW!L^pmu*F#cmZzrC$SPItk%URV9Mq&qZ25BNAlKss&cVV1np*$^ z{>>co#hl%IBx2k0=^5twJ4{`Zn(gG^8*~+CSuG~B3v!gMehQ(nKhSyd&oEDhwSyQn zYYKC!oq7Dz^uri3S~Nuu%&}#z36H^IH%}Y(6jrsI1=ddu;a`dG27VN@IiV6QV2cwi z0QeZgccyWTp{`tp#LExW+!z^X&0D`0KRpexABDV8L+sNKju~P95PKi&_U1=!W`B%_!c)}e^<#86XD8XBZnJZ~xtr)g=zE3#;SGMQ zzn2L7j;_BgX9pu=`O`p$cHR%PP?H+tit8ls1L2tws z7Dw+g+|+>TDy}ueJy*VIq_HQeB>vXelW_fo6PgLx8!%E%2@qRb)~edoid0ai#&4?1 z9N&pc`hqJCX?;@M8D6MGed_BlhU7wCM$G69>r!*CA?wtz4|dp*+YO_JSVUvQQqEnK z8gyfcl_Z?b{f61LrKLy_xTW1$P@@j1fy3ISApa!>7B{;gB_wW9ef$gRt~Q z6{nEfUoblI&qj6R#d6B{U>QxEaF*(`*%mK`aKNuR$|X5s*)6wtg*^F_+?dPMW zw*gO&O3a28^-A=4~ zwZ5Nbx~9i~5z<^hIO&GhV*eh{Gg&*W$Kn@zKU2uSSKas-MJlUx7Q(Xe17#yOe$GZ% zFa6wxH$Nh1t?hFdD^PIb-c)n$MZgiM7%jrqK3B8xA^l_fad@j-V6_BZ2tU|1nrJZv zW+8k4l;mXNZ*ONru}zdQYLOJ|1no39b0_F=h?cJcqOf6~K}0(H%h}n(wFdLyZUR9O zrY4H2?(40T-2UbeA<5>@BVmvUb8$K2`Zhet8lKgU{#6ji{~1K$!963Q%RYlonUce$ z^F>IpYX^uRpRLm4@yk6U78Thuk|5`KdY>o!*7FdE^(}D^WZmJ z(!xN&F?Rsj^+jNpwUdo|P(o2Irp%=Z)>5jz10U$fS(A8+i`#i~-5Pgq{yb#hKMsY% zx{95EwEDmR&e*~y$a?IvKZyku8xKmV-%6@v{USzM#X;K*z45w&;SLZu>J~@6!e}Zz z|7y?(7#AaX{Sy3)4ptht*FXz`Ss5n_Uj%Mt9CdiLh@@#QCN|ZtP`C@vVAH;-e(Cn3~UzMTC z)AK{JF+Q3#SY5UZRw;NpY-I^y- zP)SNn2iU>0crjbdS@r87WpF)mJSzVNybcy}td$v$K9_sdNqWy;p@I6ffm_U#mXF3~ zIH{hb5E%+1kfFdSGAaMgquIo%&(yJkhLG>FT2DsxRS&mYPr=h_U4h@(VY~HI#(H+^ zX?T|H)|GrLo46JxemWB$sFdjd@ELfA^~}u_pEd*0$Z7DeU1y|8hYVLCxMTK{a7-96 zfw~%z=p21t<`VpcH6Dd}a|o>1ZV;wZLi>a1dekNgyYWrJ;ym$~vNZsDi$SU-ux11?8Cev#{~+SlO?g9Z!05J!ZI*>BK9!DyEJ^-;)@m6cq5cAPH8Md{j&aOKgxO6QjdU8~}y?}r(w z5XBMwn1CY5Bow_ZV6_@?kYXLDBZD%}ee!<>xZ}a`m`vn&%xBkl%o45AbMVXYm>?tL zu>^HIUJH0dwEsf$dZgia%&K+mHu(bAEv!Emp2S*|LP+18w8(?O9B-iEipN*aTdfAfxG))!lJF*y|r)vi`H1i7crwrIkx0Zzz1Mq!$;sR z3qD|oPobPDY=DzK3RuPUq*2Ko(&q}zeAQBMEM2-Vp=x9x#iDRhJ%XbY1=IS!0VwDK z_%L{-UNiSPwEQ4s@WJqt@o?pCcJ2Y1C-bDgP*hx;$m|27BrvuVClBYn4ynvrF;00x z8hcohMiNJ10yF;xh*>_>VinH6itn!0=g0tZ9B}ff?jm3~BUSF!iiUAm1+nr$s65JE zQ4(}gaZuy~GUJ?^oh;+!tbY#JFT=3Swy8{-kTfJ0ZEtjfFD zIj%)aw$ThhWcq`^H?prA&`3N^1*XB1Li$Y=ZK$2aLDyGS0v$+-v{6w@p)6%4bUVw}x-TEj+8a$X*WJW^bB$h?ST z!wd#N=9PH9`0;S~Ix#vdf}huiX-|OkC%_UwMk|V&D-Je^ zP0j!Q;~$Hd>OR&R9qQd8F$X;|F4#jc9_HOko9_W&rWi52W48chu1VjuhH#H053x{tdO>%OAz|Ej}lVI~Dmm$1q$ z_pLElg%?ZUKfLa-F5JYY@r3W^yj|RQrL_$+uWizJ&Pf(#j&aAN5n9`{+rVeHm^33t zkgmA6!bakCuC+~5`(L!@QxFx;z%pIATXu?K1{+LuvOsIm@k%d&B;>4Zg8>%l zlr;aewtcw9L9!%{(lVixmUfC47Z(juxZYIcWG{Nq)uc(*Ul`>$`6$d}8$aTN1Rvd9 zt}ZJE$})`N6jX6A<#q@Ij;zRlj>APxzqeGZe%8* z_7<}+RUQKd;$u)hj5?{vxNWey72b8yvdpcF()|oI>0a?-jF{@c1{c%MJYZosOya1J ztIUwePd=$Lp0udSlk+b`( z(lMoZ29ak_^T1V2#>lW)|1wW(@!P4gH8Q+*VBLxS`tsa?byw>+)SmWTy`U~HC}CqPPZ^i)03AXl~@M7jLF^FJ?g{iBCzG4us6qGtHY_= zAV(-*$kq}~|J0|jkKn|G_II=gl>V;AR9CmCbnn*=dc%jsdqdNu4!gCS@6w80t6Nq- zQaQk9KW$^r8vW_5AXeODtI6=pF<=G?`fNM^lF4~N1k+zjP- zmN9%1F8wXJr1eAlux0DVfB`N=f4uTLdb6u$YG}m5j;dX8b$eXKKNw^yDMLOfMYCUy z{?}o-YA4%QHbmBCU>(N5lqkI%h~p||wyr9?{?p~yEf5CiZwT*1G$a`wS#p}vhR8DwuA z93Dtxwbx^Uo(8wIC>BW?F!?bHz(tw9j*TYA;5g)0U=qBT$n+A%A_-)~L0xT7*x}Kv zSZY?``&UzaCQL=R6{aFh-19{$S5qwsTwQrNwY9bqhnkW#*`f|swk&ju(6zDrYSyGG z~ajYAOBN};U#Q^q7WgUzOs6I0qwz1&m3Px8) zkQQ0aETX#kqQU||t{<<9Dvh5z(Si7+=UFPM>3|Kg(Hlo0Ma{iNS_u5m;^O6A5pOAz|Pq7?kvAXjm2UaA0Rbw&c z%Q@o+nT`d6x*@h~YAWPLJA}bY!iPl4Qz*^uJnsFZHb$E5Rtj~Tkv?i?QmD0VVyJ85 zh4gBLc7F?-F8U88X)C3-UwVpZzjDGRPgo+RE=H|htmt6DpDeSWT6;antiA-IY5GO^ z&@Jt_oZ&dGg}_pGm&19j3hX))Z|Awgs3K-eqLbSCCmc~yQtxoz zQqQ$;nGy|3@DS78)4A$5b`AG}B~cSRk(7uQYM_M0Vd8|u{58G~>cfe%a{gNWf`Rf2 z^qoErDgUc`%c0g=uClh51H``rSvBr{`Th^@jT&J^{U5GQluz~TD3YSbg4K3Uxt9e> z^VNWi_C;k}b}Tn0H)5RRsWv0H1EX3?)iR>xnHYqIBpoVzbZRmP7dNUD68FSLmfjEV zvX)zhnE|}nctz;?MxmKWEka|Hg5C!6Ch>)r%6l^pxNs7HsaamNT~dRXGfR!J*JjIB zTlge>ekI`0tQSpA^Y4Wm-B&}|5yEf>=gM8^4WLD;Txtk(ZP;?X0I=cjrnaK_8e|56 zs!ysMi-SC97C)t2^9(ZdR8I}`RB1`vel2pOTl^i=T%tnDTIxR|uw#-}zyxm?4gLyqp9LAxXZf+b_I zd|s~vyo9_vTk{N%E{f>eQ4ST+)CW8n{8c@W>^Ei`x034LfDPENWcz}_{_H8n3*q!8 zGdY93E{9fsoWn_+nH4td2Nzci=)jz*e8u)QqE0knrt)dMQHb|Jy@5Gp;}fbb;&3={ z=r>MKne#?uVBgNPsMN%fA`e~o2K$#4?22+dZtISv*}*K}IxfLFi#52;F$eYOlQEd8 zWgRz-9TI1I-r;ozY3%;VtP?}TTOIfE?e69DC)dqfyYwbSk~Ukjz;W3<12Ewqklc)P zP+z#BzEGKWcvorSsNOQKI;-f_01t2MXN~FA0Dp$fMZmq@yvf z$CjI<-tqYk7W>CUd|4zOKBU6cjQ~xHUT4N#|`c|l<^zIgDwwiBdE#fH5Tkx#IqJmy$ z)S=>9l_`}&^=FHt%)R<0MKHe6&*Oa5#AYiQFL?KAzf>ivX^UqbRBqxX1fsdLN^b>R zUzCQr&wV+GlL2=ExCT{Bmm8e*^{F3~fZEr!mU2NY!HfuP@K2(h%4eT;dH)O1{g;IoYq?rN11@(&~l%PgExlW5wwl{9m~xk`I+h3SKo;CNdQ|pE4iZ z+Ak|9|ASk*%ZnWJkLsD##_`X>XGZa%SO)kga*B_9@bQrkhk(zs4uwCDI5>Y+rD{V? zY>Ode%Ey*r3de{)9f!^`Q-v6lSTTkX2g3nQ40H_O0QPpUxQfA0uQQZ!EcX2!2l;-- zLB7AU^SdYK9QutxMQ*a_9x?o2{v$HOfWOC}RK@ICo0#<{P8#%BfgcZ*uN|*Qc z5@H!Lv1wj<4>+<|-rqA#6W?&yl55k#Ecap@O&{iK^vY+T`f~#IJJ8+qlm)ZLS-J}) zVHXxE4;{T_eYtjLXqy2m^2$o9#DQ&)n<2U>jfofb*=HZ{a6ZrLbL0#1=&-FN?pz)R zr}W+ci5|rdR*r`C?E8=e_Ipsn!48BQW0NS_Kj|VTu-w_NE{l!M6%K_b?+?&fo+q5> zJVc(HX0<+mT$o~)K8PpoSqFbOhq)ThW2D{kyZBa?l&udTn86tCx%vvJbX)&~$og%V zK2Bt-574q{tj%n2$Q)*Jr!f0wtlK6GEaVtye;7ZWsBXkI(J%jLD8C%`8;}R>$VN0< z{UgX`l|G7JQ$}?*QdXvNLF{f;^M|M5okg|PJ zQHO@plC=6MWL*yTW|C(x|4Dhuu?Y9{)sqz1H@gA}vE$4Kdg0LxDe-N04P@SCv(imI zr}0eSS{etgrB5Jb<2nS_rRCfRoIg9dF{uaT?*rCLZc+Dp^?D^FdmA(xUKsi@eos?rW(_o&`C-G7D$6KgZ z@~g28@oRjZ*x-RKT?}Yrk8eV&e9~5{u}*jSsxQ#O$a7Qf;jDvCAw1dmG4UX-ipN#| zckpmZ>wrR}@V$0z?U2(LEhesVLS`#{$@+REwxO5s5}(A7jjbE{%prRO+-H#-U+&DIBC5%8 zlelE_l^2?su>yoUVcc&kE*u!ZnJ4@IWA5DJY^whMzxG~x?{m)F&)hM_V1~&I#t=hj zNEeqRa!r&dqzILak%{Q0C{4O3it_oS(*34VX{aQmB65j_Qp%@tDb?@&daw7{bBMm5 z-|zRw?{^-o+0VW1_xE1=z1AMzF!O{2CpZbN=>~ZzE>E~&^Cun4f)Ytr$(G5#o8Tnd z$vS^Ek}cU50gKB~P9Xf#*5gkf0z?8Oz+^kYrDgR0DL_Y$zxKocNsT=8r=`a~ zd!j`Gy}&>jHl?-1i~;yg@6TbhtwW9o!A|<}cXMA!ap#CZmwK=szbQY5?-}ME5cTKNO zDOr4mu=ySZ?Es^ELw2N%*EFh4z}6(1_{UN?W0xhKMIn#TEJ<@yNR&cJ8Lt=jT>9R7 zOOiF|VWk((F>X;8x*ADgq_wPV_tNEPcy=$h9Jio=iuO>DLvCQ9Thcvt?KY3Isb`uE z7#Xp;kSxrrPg+T!D|EL2?cXx7=%O4_Egj1*l%TwGA)H`}vwNj+OgJWaJnb7n7otC0 zHpa%BX^OL+HS1VW)|7wF=~_6~W~=bWxX#pEQG?9htaZ3$-Xwg2%QBeSyum>Nv68)> z{*t6twgEh$Ikn2kREDnlnBt+NQdx5(WeA?XWo<&?@uYAFeKL;j+hrSJM%m=Wlp`+h zv4TQzlE-c`2GBPs;5ZO*jZv7sM*-Kt$0P(EnO7IIG~v>hozv+H6-a0Z4U}V);0EGV z0KyA94{{ihV6oI)jy%~JG}5x?uuHp(GRA(2oB73*QEacL6n9=o0;i3+|qQ6C4 zha6xTf|5EkH{fsVy=26Ag~RPK4!3M8vF%Yk!8Sm366N+DxTOzV8K-&dmg+RF9G+;U zhUy8vLMQR%HT|G~cA3Fp(|D>;s<>@*O>6#CXB@KxM|J9QcwzTJ4vp*)D9?7~U(prn z)HA+4v|)sUHVivy!%vV<&FM~OclH$6`PGZy$N^%-!t-|e>sQha+&sRLG}SxwCGoTK zEfW6p-&a6vr+g=Zb<20*Pl8kaHU8@I-TcRN(mizDq={VyCm7ghfg6`NR{CahS+j)A z{>l*M*l*wl@7Z1TF6lhAK%HikSJPd)Y%iI-hY~H1zB8=uA}um=+w7mbhkV#&`^XvZ zpPbJ4En%67fiICT(=_Zd-_DE_-;ovekk;JBTp&ZtepsfLe~&-n1Q{y-0XNEE@-9sz zl6GkZYT`!WwEcmS8}WvWmLDL4ZXik?t_$hW%!i27RsJJfm9g70T(`)lN0b_bR#0?6 z80yLqO2Oi2U-%d`CqJ(Y$4wd?5z=Rrjki&_D?H32t z1ZthWze=Y`;ELYscKC|col1T^p|Ycz3w_C`{6FM2651HLK6%yu3|D3BwhY%T&Z7ux z5LIs|D%JGeUa4Br%{#tsQHY$6f*H}FHcO9A2|Fmc^u)^lh5VM#@t!CnT${?zJfZUG zEQILZN5}L2_m$7ZaMH?$Opo&h@s>$stidXDka_o8Gn+RNB;eqPl(ifLVAatRP!}~(kn9)!Qan+f0>2`{Ewkg zjLHamhtZj^cNl-o@EmoP2fCA;|0|i;JB$t&wRf1&tU1w?tcq#8OrLOw++go8#xbwS zOk0LO9<+HBw#zUm(XedZNYYElUno6D0q#RaPp1R*nW;$Sgef} z&;{Lpg)YngBm;9Q{?^Pzh><3%34fWtWr*SgnY0YapzU;JNU%`_u*=|2R(SL5G9<8& zK6e%E0(mel{&YyUA{}}ZoK543wur?v_a+3Ptw&#J5x=-w4p&Cr&!O^ag|g3Q3A;5^ zwrD93i7eFV^jObD;^DP2*Ju-yJ(++x$20*OS&a7i@sCDv65^)W8mii+tIdr zx@7mL-?lQ|A@TeOP>!pTN-8p{8@^jk&cp|5KR-wgX!Wl}N4tzmh_*}69h$kYgN3eW zV>)}pd>fTSgf;da3V>rMXyc_f&pwF@2(QLPnuO26OOOSm&xwHA4aMMXE@=Upa)g+h zX5yQ8G)*G=VHZ;)3NcJdO~<7bV_(3em1aH8@E&CNZ^=bs+TO-ioK=&Qle?n{l7kB4 zspn+*jxC@gi=#>mGdk_BLjq}&F9v_4ga-dpcn>sPSx|ahMq^DzWAjqtOh)5QlF@h* z1r72Do(ckgjOdM)C6RGYE+*Tkd+5nr+v&xoU=vJy3E2G11)JCel6#VYB_MFD1>ig0#o}o_u63{v?fvw0NmF!s&J> zFD1ix&p4I$(BB$Srpah#UP>*K(OM_TXl)Zk?SF1WJYk&Bi2NZVy}4;bbxeG8s#BJU zFN+&dT?2LL9FJ5pB2Ph6^q=s!@urq@|4HRB84r3fW=yp8*#*;(ySzD(Yf8|;89F`XcDS;FiT&G)X0U4yE<#+))6aAuq zSF{EjGqFAenS^z&pr?>PK|xP}wA>ol+4+e`LN|Kt-kTycrvoS9RwFxG=ZA3>^@2Ykjj#C1gr?WFyDAr(?# zgFvuloJZeN%!><*%_bMd6MybF?9`lmX>w8g8ogoT>>wWjbsxoB!tvs!Ga&^L8>i_l zuJy|LQGn^B#)+uYIcipgrMYi0E&bF9JFyw@1*HzX^@PiixHO3rm#%T?=Ebp^?C~nH z!B~DNEQxzX%39P|DQzel(nmR=-sx4UyuD9vLUS(?=Vc7!-cu))rhju`IYuu zaH9L;^D19RkfP#*nm$9HKt4VmKYu6nLiM55-~9ObI<=qkNn~kD?JP|iS8PN@BfWP- zTO+|u@10KjN>DlRX|#L+J->BVVoM(@8@FUgpQrFljIStp2npr-!Pn~*X(sg~1s_X-*ZG5Ar3 zGldtOj`ZgA0ec!GIqpEP=(GPRTqv{07o5iWL8l6{1qDYhZz;@y@gcA1(^F<5gH@YS zF+j4mQyQ+I?Uas-j`(5#GU*RPwD#ulH#OR!zq4XVI*l=Dahkv0j<>Ua5ek0odaQt2uQs6Hj?ILcXQ1CUS#-kCJFG+noCWUFgYq0Rz zNQu$2a?ONfYJzrkK(Qt-F1^JwBz%+ZDO_L!fIN;x9|=Kw2CyfYUIInMO~(MH#G2Sh zV)XbbjrM8qE|zwkNEX`OG64pcyr1$ap{}Mw^oN267pb$j{{$NDt5_BI{Gwf&5GgS8hk#=J!IZ zl9E7vEyRrXl`|-wGf>ATp9d{WgB%ZaHjXEl9+Y^3QSne_+15lyCx;**=3eBMH-LgN z$uL{U3FUy|U`={3x1Er0(zx)VvzlI$RXWS)V-oT9G+I!@526{(@N(v@x8IVnK0=x;tG$D?AD#cCb z6h*#U5NVZ#!%tZ!|7`+dIRSL2uSr1AB*2{5A*t|d(!A@TGyhe`nsVT;C6I(l+lO#o zAhJ{E@{9p|CTASfN6fLWfr1Wy+m~q0m(u28BRd$XbNSt+G|uK-3o|2BuijAlH|)|1 zU}U4>>&I_Y#96kzXh&I{%jeNfVDT}uX?;`rGJyz~-pLs(NDma^Br;S{*xWapHqF+w zh*0-LBp8#gup=X*>`bG*oL=-^&gQDyjgh^aF20TM|9d$V{=Y9LtvXTLJ`-cQe1bRU zMEQdcYUV~lTOn&cGO#)N+-ZDdfWk5Fx&x}PWn?d;R*7_<$Cya3!I~l+u4H5BxGObR z$XfYXG$=LV=f!2@ehT$9()HrjY}x=Fq@O$fp+tOR2Th!H-Xb;(`Mc>hbT|sGH200j z!w>dNlgIBSujV-H{IA(zfR04`yM!cO<;llLMMcTuGwB56Xx}k>Lcd8$@f=S+gl(RK zb0hgZVN8WGv!}2@}r0bca4fIpf!d;u_7yZ1Bwp@ zjI@y+*>)UTkQa_UL2isE1s#+XZ}}P!;*Lj-c)#&R>c+8jq*kmsQY+%p6i7ZjS{KmJ zK?*$7zmo%IXfo18ia1T7mu4LJfRvb$g_LD_Vqj^}lprmf;`^W?pT?QE<8Wq}@z%Uy zblHcELpm;mJ(yx|@iZxR(ULfesDb0{nit^s4@BWb;*B_5^Gryio!!sRw zR-5+5C6iJY=hK{6#t+a=@prTbAtEu+#zvIw@sFowt-!36K>n+!nU7BC8n53F61{uF zACqU&EycJig5cl8Kz{=Wmj`V`z4qp zddTx#W{YKEZE9M0ca0>{+o#C(OP01Hn<~w^P<={EC&(7;Hqu3dBp;N|V{0ET+bi*!dNM;ee;e)kZhI@hN##cb&u<>auX{qlx zr$K3=aFZU8@h2!{kzUSmm;{$2COWbWE~&<|^K)@Q>5J?I=DwIwo(E?c<&E&itftb& zp_uHL0>{gw)a&9Sw#kACDF$2osJuu-AZBc`f3@{Lj9fIvC;X|d8`*iuPX3LGg22Ow2XoDJd)oSDL?)JBae$Y zFP40v6liZN--x85Wq`CxxOg~Oo;)**#kfQ-2+f4V&t4Bunpn;@X^I_x4o!X&NIm7` z3G)Z3<42l2E{(i6N)C!8C>4KPa=7M9a=62i_=-$=CrIOwG#aU#PL?zC?EjBtw}{fl zy^<9WVMt2-()FuHnrLx>AzhDYolLQ8~RLTO^8{)EEZ^& z6%ZSpw?euSMsI9;HH8y#fK-$>g#&S68VY+xVYHwR<}sM^!24X^uDlsJD7eZli;4if z$p5HKlvnCOh=p~$aABm6^5%3&8Ae{H&miBVuGNk6=jZ1PV7hU`f!Jk;xOmpdQ{3?o zvX{=8D!BT8D{=fv9I2CKQj@&Q6O#87!mlarhfQ>x1xcP?LdDZcaGF%4Y^ABui;Ghh zH)%^mikPdW1-bq2bAga)d6}9su0+%`xu|tQF211#6_pEoEzmDyPGA|LZhp%t3VANv zN7e6Lqa;#168v}V!6cSesZC;yoMsYR`}o9er%!`(bHMR1%}+=s7dFbO`ApJ7LN$;h z)^o!3-}Ri%q3(hIF_Z(U8|XQq6++7hfB&ZEgosI9nM~+8Ac8m| zT9O;+IU!|uFQ*lrQ_e=;&fiNBPo!yx^kdR_Ql#f^bV_Kd;4kaQ(9thgn{(6#@;4E( zCy(&y#goiMWOQmi(hNZ9#q>QWGk}?H+MK@cY&tUT7LjI#5lM|3*bHn*df_!rT8xP} zF#(w1NGM{r&3cZXNfT4;$fhZCTlPYch>Ku_NHRfGLbW0(70%y5c6cJCe0A>AjYJu$ z0s6(!|LcpJ6*W7(s7-Mj+;PnJ`=}}y5>qMKhmqFj+aV{ zlnwj#QC;4(_?>RUbNhDfLUtDsPwY%~oyUwF2FLWHQ6#DVqc6vX@S^p%yp}4R>t78e z+)DqiB?t3ElotBGovx`Cx!#sgTR|$R{zy%Q^qlBF*2iumjwN@o^q1CY*$w^SJpy=N zM8ccMoH1-ile+qM?BlVXdXddH*!(K?UApsU?0zz1;$T~c&3rb8YS^~s>zDYta~xcr z$L2+Gu)UORNAvYmzMjeEY`*glyL^)GJjdpHY<|q zVHVee`AN?EIb@rM>tr_fH^%jarxl;(smGemY3ixh*!-N$U)fA(hWm}#?9ApRY+ldi z-E97w&G(uiwC|g3X||fSJ)o?bH&1NtsSDV=x;bp8v$>{dOEXU$EZRx(aCQsaZ`Fcb zwm@80@SSote`*Qaj;&z!XLDXFxLMBEpR>7x%_FUli-gl*jyxUiXRvu2n|HH0kIe_! zT*T&5HlJbhB{o;EncEs6Jj~{*)+o0PeBHGK_Xn^!ss!n;-4=IxvUvrYzqUmR?RGG8 z+aX_l=$e|6v?25uwDquRNPUDUCyCx^8nTr|)LF=38Y<*5O%@6=RSHoHC4b9=;+R$n zB`|FiN@Ds^D48k6GO?#JH4#cz7WINIL?KFNCQ~;ikEnv;8%h*UwwY>?q8%ATv~z>L zF$bC~RF_@OCW;}u*2+;yir%Y{zZf-wU9Mo4iE1Rf{E(gDk&L+xXiz1U?Y?E#ynlGGJM zohb)Du*(W^*-h1=?-eYf&=#=ETIv^)Q=N!W}iXomla$g(THoKUL z)c`w|mM#B7)IqgW7c>3N)LLD_F0n!35wg9^M(M^o4XMVusL@nDNh*)%F?BYN)Jduh z(Gx@yY~-OE(PX0QY~;_x-d7!Ex`e`vSA*0aQE3^X{)$S=P-SbR%%o+Qax_wH(lSZ~ zDTP$i6hpikM+=7Ne-ngKw4(TKWx7^nYNVx72y!{~DyH!&oBh2el*9hkF-=f;>~EV; zW48Mb(?nIkc9x6SC#t4wm&tUUYQc87LM_>@gz0+KhV9N4YRh(mm~K!V*zQW9Gudtm z(UE~b(vGsmTp&5Anyz4f4-sJuG41SOs(EXrSfq7YH3tLi7I=0x!{(iv*c^rO1eMVa*^>Z|@xH!)qx^p~n& zx{k@RrZdeX+GlC&7LMUzqJi}N&{<5c2;IT7QRr@_YN30XjtSk*lpHjnJmjJ_Pa~p! zYCY=Ol!un2o*tqv0 zbF5}ovWK$%H&b&fgXt}zZdQ@inrQ=3PpgGh%Cw89w^eKnWIDoj zEv>7Vycn8gtk%{uOld@etTxsQOs5eIu}Z9uy%3eeSwtO3$LSjnrQ4e*p0qH2^iWEp znA%&^-pKA&qMK>e>Q^sF<++gkb+CT(LPY;!>L~OqQ>mo`uzQK=EGsU6dU%5D z1rT2qQ#UJvX|qr*ru{;7nEoV6u)14y12yx?h1T3a%~)`ubuW_{3;J011<=ZqV$pgA zSo4`ug&tJn>z0DXF3EZXj6*7xl4QgS&=4YLk#nT;ljSC?DiAj)h!(PX0ZV9kg!#wrWe zj40PxQ<=<&Qf|!(qRh+~GQ+xy{h2Z3HtT+NX~vK{tp}n)nP)BG_@+>N3DyGZ>0nKd zd(=8Y3)V^Mc23J8B29JsD9P{f>Io|l0zJ?IwA@N$>P5#y#;aGXG^QO)Z&`JiZfXg; z_pSO&%b3<$jhRyEu`6DEYSES%3iA@CFRhkLwMbPmUhT5lM%nGN&WxfTt+S(C9JTDl3jqW!sDgIhAbJ;9lvpJctt)TlQ@iWNmM5d)y zBv#Tawl?WEGQXfNEm`X8q*yY4AhVJBgG`#%lGo6kK=NiXS0wHvvtjZhG%A?;FdcP9 z%2e8Ga&F39WcEpUg3ReD-;lXF<+PxqbSlD0POYH%I+M&?RW}u(71K5OA~UQiQpW}_ zoVJzkRI_=M&7afGqBQ~&{-0?Ge_sZtFr$Lb3;UhTKqkUT$h@8I)XKb<%zBxN$ZVb& z>w4;&Iu$XV`i{*X>$Hjst6%E$h-;*pWZX{oYh@v)*;xo7H)|FtCp2ZV4d3a)W^Xnx zC9|O#%h$`cR}LnZRZmn^|Pm zC*3f;e*4BM9 zA##n>YPG#?I9{tgWTG6tOh7r*Cts!LdsDNVfCN7 zS0=)|jm@Xn{Fu!j*$gMawkewzuz4+;_pG6#@}w$wzmZLf_i8tpk^WT~&Pnb!Ew&!a3^p5)X{qH|O_H@Lt=EmrZ|dOs zJ2EXgW)PuWS#KU)kEw?=-%xJ>T~DdEh|G$5sOvlVzRAV?^`1(m^@sXs+o)?#EhN95 zTEZs!7p=O~hY4Tw{LI&l>%&bm@W0sd`AowP$^5e6Rx;yq_mJ5!_Xjd3%Ry2ZP)QVg`m5A$~bJ3p7 z^^x4#)W=)rjiZmS_sBze_G9y6HZNmyG@IAuO(!>Hd9%r!Nq1VP`}5||^&@$vRbx*1 zjl$_SO*Mj06v*@?}bWNI0OE^CA_XH=t=X`UM2=!>)#>iR}wgDq4Ao3q(` zmd#Ju{GQCP`mNDs9x)E5VN6I(huI?C^b}n8gRP;WFw39KbEthP12 zD^On@X*`iWRva0lZl&v5nRCgkm-#4}X1+Vt_~}fHRJW2D8L56H+ooAC|2|Tgeq_>Y zX4{1P1@yuVJqxn{=7>FP4$t3TOVf!(Fipt$b)Tj%BjZvDeI)Vtaj6sCIoY_>z4nRY zQVHEzQV*sXmyREia6d94CDIY=CmWFv`;>Z!@%RzxzjOaj<48v22(p8-EbX z|JnF6sQ!s5-_)QBg=S{M)_DWy8YLW&**4|l&R6;9r@Pt2>}K3k8^}ld+|wK*VdEmW zDK5gDv)SxTcRY1v(Ql5Y@=v=d%Tw1D!JJlv)_X@0`pBNb&~ z=+UD10J+)I9IgFiE?Z@L>cQeK$o*r*9qIFGCr=N;97!%uYYCSvS{j$93iB;;Ij<$p zVl7QNPv!C#a`_Is{8(I`tTYh&TlFaRR*1d0)jy{b65zG1ARkU`g;G6rj<)A|s_E${ z=aSPQ>7BZi;`2@{`BSA6a@V!3AhZ2Xu}>(di5-&Fsngjq?5W+H&i}Ca7n=#K|2cO* zQTXZqgPUpeCgsf5O=zY*xAkpweL-vF>(nV(nc}IXO(1nZ5}^LodS1GxZlPF6H;Jy{ zcU|$xTiWL0u}c&F z!glLW4(hvRQBj zN~tYhcVe?E-T9|n*d&+sXP1|=IiAfaY~DfU`W#wNRMRu<_z_eZTbO1Njn=l><VmT^=Y&YsMbD> zAUe~h(K<-dYfXGX)yt>RI-~~pG=k_dpGNB#HOi+EMB{xLtz*?>pGFW(_i40_Q+N0@ zg2?=;-0t!B=y)}c?dGY0@edL0W7=g6k6)q_)K5$^xO5YIe{aP9o9rZ%_?7W5((`wO zK0A)8<6n=mJ4Tf3yG%=XU#Iv~K$PlJmxT42^qKir72k)5UZ4w&NZ6_~e7c?})2G`L zs&y@&9wMsk)3XT&bseAHA)=36^RFuY^Mqp>-$=o)D*o#P<L-MYZYWe0Vd zQ2(U2oHNxxp(~SCJDt^yOf%H=N$Z?0YOYVOIA^PW3Ee_2&s86YzsjUdPFMAaFGrp)K`M-wUBFU8H*C8<%KH{nVvUb5T_mT2Fsm($BQ40R~i+gZ@51%@CL9#RJsc zLhmL0=v=HGFr?l~I^DEwwxPBD128utp{&I?a;uk>jS zkA`Qt*BD^B+a2fA6BNS)pO%x$>!Rpx_XeL}3eyk?wg3uS$q zDmD~Cjoqe7#SSHZo4QO0^>@3PD1>^rLrwFk+?}m9385bDR!4lg+nuY5uwjFG2kK#- z8Y_f)pm(i4-R;g-D-4Cu1|L!%2%!x=q;?3Q4L+oP5<JbOIj5{b-O-{xy@P#|U83JU;XS5u=q-p+)fPf|T(xI1v;E`hJSIq1%gL@k zQx(PjuD4jdN^eLg2Gu=&HPI$RoQK6~mk{!>SRD{T9u}*EOeW05Mxl*D!Hl;=T}tm# zOqloRC2EQx4s(gRO$cEwQI$dna|t}ruPVN4c)jP7o1fe{ii(b-cE?fYXo~NV{AHBC zfyuk0Xe7~-CORtJ>xlm4)2&2L`Sd{Y&)(BMEg^cwr)P%^2%$VbS21mjOO)s5DpLsM`GqPFLV0dhU4&4cU#k90RSLavs~X0H zHvdduySi3f4oZ17utVL#G*b;vc|Widk#I_>){tA7Qs3RB9x?tX z%pU?@tK|}Ar})Ex-KwxHhr)exw>pohI)qSmtG-O={VKRy4H1`>DdFIrNPHA~z2G-K zJ($wW`9@u7TyiLTeLJ|^t46ckF6;4>je)&tqH$@#-(Izu$;b@f`u>oIZ`Dq=Lt2W1 z->DysKOSH9lNKTzS8?y(uM&mO`}eCXA@u(Js?dihISa#EP}( z>eF7bYwpvJ$@PLoJ{?Kk8AX^^TKIODS7>=s@_>1zm9>!j17?!*L#JDBGa2crt(DUS zP9c%qquW~T4e|Kd*5Zu`G@7C%x3&6-9Y&P4*5ypq7V4p`b)69Ep{+GV2=&m`x=RT4 z(AK)o5K9Sdt%YKTdT48{6+%6nVI2`dJ#?^g&qg{S7X(6QT0MnO51p*bgisHit%*XY zhqJ6%La2u>*26-mhqJ9MLa2vs*7riFhwhd-$Ha$vINwSULOt}f@`O+iJ*`3^)WZc< zOCi)lFRPsp>Y=yQ$q+xG^s#!19r|=1Yp@Xd^hMTKrYZ}4y00}}2z|P*HAP&aPxrO9 z387E-vog*#sYajfZ)FRiPY5enTr~L4OkWcQ!^!>qWB6jW+qOm?<9vkNq=CNyix;6d&(0HHbrVk8G zh*119=^dQwe0udbdMEvuuCem*{4H9(|xisJ`TgSqUf*Ctv-3-4$kd9rDQ}?z2m4!My;3{m(4TsV(#?)wI-S!q4-W2 zEn@ESsaJ+_YUtvOW7;S8%8WB=ToToaxjW*|y*lHZn7L8ZJ?0*tuFtqIW}Z)F8Kd=m zK24_>qG?!64c$pDD}9%DW|W6&XfD~^@7vAI7!%_YOHcD7cHHKDazDvf=R6Rxb2m|$ zJs2VOS3_uLKDnF8-$N0X?oRUeuoddc^&Z5E(!*8;Q-x}i`E1O?RwJfW3bODc)&*kM zF%vXY>>xEiV%;HjJu+X3dDMDWsBh-`F^jCjLW77FTZP>aUxgZ)`B}`9);yuhGk3-; zwf6XS-^M&;wd!tMj?DZs<{2y4!_c_Q?ARBrNkTVd7RSC~?Gu`sd1mZu*5>n#%X>2W z#J*`Q?rG@h%%QPwTk|e3^ls*a*!QesLZ4*55n5$U>jgWEQYGH|mcB4Tqji;)#8hSN zrMy>JSxgmbFZrvoHW|ARMuyeaZ$cOuR$Do}5lU4EBg1N|nGi;X)m8@~j0|h6bA(W1 zYplUS7#TjW<_lr0`^b9OkhME~HPJ6j)kG^pA6sYj;rJ}{%}=aeOcm)(8D)d+l0`=w^)UJ;j-F7FaFZ%<2D? z`yXq;P~#H){a0(5Ph())(nLYSR? zx0YO{=tupw*1+H&)<;ZLbTp}Q{<5|RLAw9T+9!lrTiM5$%rm93onZ*2ilrxI2Mj4Z zEh#%q2v1AO&NXCV&av!LAxKEJJy8fUk+$#jDG+k(?Lv^AJX>AP@mY|N=y(jD0->PY zUI;T+jQyfdfl#d7Ww`MNnJC`gJOWgqcBK6rn_v&W(%4~cOtcp>Rj8h|K!qcX9pt4% zd*vwO?_2VhWcRqr*g@tC+b=RzTbR|7?Tf}3J4lWx_Cg^@j;Zz7Mc>e>YDt@ol)ZWPi*>tpS zYVTvJ4E|B4FC8eZCLz_;Rw!#IQ9~xo9c6LN?LIzL23y!;m=NE6amDtu8{u!dx-n~D zu%*3nvY}Z-r`xxd8CsaNFs_Z=Y6=tidm*l!{UnoFck5`sCj?osqrFWC&y5}JpA2z3 z>uBfPgiy@WXGgoe5PE+{`+6qR`#aiGjUBJ|bhP1%{PC)0NBa)8L;k*T&a@wtQ1Hf~ z)P7q0VXdpweq9JDE45b(A!Vg@ZUu+Q>z}1|DU%7a)b1*Fl_?*@b+UW=cAv*}wlDVW zs^iYGhZ|yvrHehDsUp~>u5!BAcL|+cw=&qpUS^1;nX~OTn2a=YuDwU>AkCa>{~~sf zX3n*9ZbmvQRFBMl@#ooR2=&bz9^cI#Cp3uYe0zydpSly{d)e!ShGyOrf1zD6-Gl`*v?F2H#PHz_>p$%EJOEXS_xxp=T<}SX2vI6V=oqhq%+pezYTUq(ivyx-yWgS z`dYh$sX|SxTRY)edxg-nx~&tgv*YeGVa_7D-X1gC(1Ue5CEQ?tf0v=9M3d~Mb3jI3 zy3sCSGV;=m_D{x+<)z7X`doGyg1j`@ZZ8CRX|ml-2=dZod!P{Hr80Y%5agvYdy)|3 zr75;^j|mg<(o{QWh~=fJ_FyI>FHN(b5kVtJ|3zD5Z0Ql&jf2=Y>;y_LzxOO^J|KGll3 z-}W9fVM1Pdz|Qokd(4COc@G;q$V(5~D}*2~EwCr@OHIg2*Ci~l|9BKGjlA@@9kPvxP-cH!f233+K=!V>$m#h@w+^3qbf#HTSaOYL`=jJ)(Odz;un zUV6%IwZ!;?ytK?N6@t9@`A=msZ+i{sostUV6t4{@eJ2 zy!5WUkjcnP@7kOAwP}?FdFfp{j$fNrD9B6i*-M$KEXYf%?6_wTijkMzw@>Gns8tr^ zr7HU@A;?Rs?Q?`6FRiwF3PE04Z4WTS^3odn3PU`Pt+B5Wg1ofG{(d>9n&qVr?BH`I z50IBWurD&i^3sQPe<8?AAKHV(CFG?K?ab%l&&WL=*%MzjG_=<92_M;Wn5tOrS!-{5 z)5HL|XRZAQlaYJY+JU!Vx66Xu^RXQ^#B$F%J5>mB&pNwETteFP6@tG=`+ z7@`?{owL=x*{7<6ZT6!~Mhe&j?sFDU5m*`NIUHMOpuUvC+x7>FhN54 zf#`B3_zNZOvgi3^CG57BF+oCVnD~vo@*PD#NJz~RtL+}|8Jb13&+f6x(88>CiQn0A z?=z9VK8ZirH!&Fr>7f0P5af`9_KQN0Lk`+&3~|dkXdhXPP>h6h&`w=r2>tz_-IK}m z_k(snW5*KGLHlwh6T=bvLnaf$5ql#OVz?{uh`mqz9j!Z$=%CQ>lm`-z z+J}WgSxXXsx9OEX{Y;pD*a=J~%s=dOCWN^>@ejL@soFYP_hq8fg@&iRk@%;529rs( z(&vg@C~I}1(*2lB47MJ^WMZ)O6-W1_96h`*zCHxu0=G(6?2M6K@-3T1tp=;{ZV zOqc=v7?TMzp#RN;Fn>u5=#}E{Xx-n4J`ft7@>gO|e3f()Acwegn3a?x}GWij@BJSbhps(l%Yu( z`aYph)>TQh^kOCxW*xnZ$%I))zsQ6zuTQF@KNNpQ>rNs1RA_igMN*dDA{5G+os_Nj zF_|!P^iNDC%p84$31QApqHiC56e-U~h%$tRr#zliU)L21Wj&kJP!}?pF!OXPCKG0! zZqI};Ur)-@y~W?rx+{q;79w4aq(=HOp-|R_qRp7LE%fqtF|p~Qrn>MACL5)L=h+l)(=cZ>A5LXdZh^dTWgu|?Wh%Oyd& zX{((UI>ivLLA2EMg|H^qN;miEuh8kbqxgf=+(w@*1gW`=?!iqG$BZ_rFxbSq}WpZln|uY z&U&2?q}a3cK|?IXcF{+LAh&kWq&9>e7lKUNMW-0zRlhE}zE8Dc&elajkYdl(9ewH^ zbDln52vTe}JwgalY^^-Vqvi|MXs3qfw}p&#_AJk&!k6@sLCzJAH4F)`=s z_Y8&b6w*^y31OYDr~XV_LT>G)cMCyoy-*(%!W*jI`Y$28q3WaK*O|Tonf4-`Dg>Ff zudXA6Rloi^UkFlcf8E*;uj~!bZN&~Ndjs@2LXcDk=!=A~vNuo<6M`f+NRJbOBzLhc z7lI^rvA$gh^5DgKz7Qnb!TJdyNU@jbr-dNz4$&|AMDITJ8$yt9FVpY(6bKE|9|%Fh z9j@2=6bOybUkE{tyi#u$g1kFYe(r*btvYMnnGQ=A5lk}HD(3qdB_X~uZC zkOlqu>3X8Lgp_xSt`LG|+%0+zlacvm>G{TvHL_;uhr}h`1I^MeGga|h?pb<`_`_=G zEd7ZPo(gW&pBv(*g4^^KAv_h_ruT_UJQdug2W&t|nAOlb^c6yQD!5ZmGQ_K)cj-rk z@KkWOep(1m1#|Q}LU<~etJe$Rso-9{LkLd=^Yphu*hh4q{*`H!m6lEKH+9lRqy;oE zc%SYeG%jSU>#;(RUtZT!g&@DYp=Sv}UV1~nDg=3Hg-+XHV!(X+md-T9tA20k zi>$m&t9R~%Kdkc&46f4cc5x{DUbISICIl&HwVp48w?b=ltFMhqNMs-A z!9M*J`cThc!m8gj;kEiFv4gy{PIuXD{6St?r|%SkytGd56oS08P7mH=TtZ%2ucrw? zUfQ4^H^lPNM*Wl!Q8;D74xaC7J|I=nLgrE_n6OhuWwB3 zke4>=RYH)Lw&+W%VQ1F)w&-z8=Dp|^{h<)#r7!gtK9z^Q)ERqCn2?vY>Rg}3#B9}X z2tg*=rau&dO!SrBCIq=>yDr=(p^)6OLoa1AYk9l$I%CI@&ThTI5UFm}A z4Dp)W9_@TlZyo2-4cGdb1FuwL`S6*0_YUc1Y(7L0&qf=lsle3KGj>Ijqky z#B$GJJx&O6&k?=(5d2lBu{2v8)tQGuW;Fd>=P(&P$KQ1`L%e$TyKZlY-&+2z&lbX4 z%VYX{A-uIbruzxut>qtjh!E!DKlDf@^N!&U9d`t=o0<7f-IB?y*ZrwG2w`UaOP_0q zXJ+Me6T-}_oRQ)ZGqZ9wiyhYMY^PcXGqZM%h)b;3xlX;KChwS;J*TMjFmmN!V3DYX|E7J(EJ4SPVJLhVjvXa_4^L&a;I>T8hWYtR~ zP27DYcXo=HP-g3#&JG1nzbdzDz5T(neCkv0NVtnnL&@$OpEe}-Og`7At;vIu&+}<7 z*>&?NHe+ORcb_U#CMWmsX<+(#ucy`Y{;rhSn+gO@mSSP{S4 zf)4T!XARR_^;x~IlZQH+SuLN&>w1TiFLySxT7ET;m{&MB!wHfOM$9Xm?P7@Wk3a`Jr&gho4EGK?MOoH5Q|p8}z)oy|g+ zbH+OPybYk5^s@q?an3X*dV^EXNg40FSPP+$+*2woXH2efiTP-fGpUgw%s@9f`-IS5COet=#t!YJ%$atYA)}cq7WX z-TvjgD1_1NDQA-qb_*asY zNEgeU8<;B8Q#qi;Vuz7$xznQ^hoWA|DNR}KOgIBHQ>`SI&pXq68bK7qCn2asuFUC? z@`5u%=*yhmDK9xog}%-imhzf2jXp36mj`lgOnKY6^Gp-witybjtDKcg)%*ngzO$LB zLj9RDFXeq_eJNZTxo5R=gy~+@rvAeztDRdq!LCwutp9wZjZPU8X37szHae9|RWx^OO8L}zQ>c6V4x+5{5Fcil14QRAnRkkx zITs0Go#8X*VIizDeC8}mN{e6I-08m`n+7aaI~4{bYIqbAr7PChSsDzjWp@A@3cW zoz9a&SYz4gJZp%<-08f^RH2@4aE-guiNDa4%WG8fyPSNXRZQ)f%s9Bq8OdbQxyu=6 z?0BVSms2K$65QoX7eYzwa&BcpI-95Na$5E_@j=S_+Ud+>TI3#Q0F!AUdz|b0!=>q| zdz^(#rq%6no;Jj-ZjbYl5Zc5ZUw*;-s;=F`2)NuxyFtIBAo0Dru9Y}m7^>?R}Pj99E>0HWG5qz!TdTqP&h1L*h z_haKSh}CSz-6Mq6Y}a)LaSSRc>C;rt&1I?x?rm7DL+)UqBSbOoT;no`we47UsSwt- zid=%DgXQ{&xz;;&ZjR-NSLT#OiKWsfNA_GOwL#Oisnd$kZ&&r{slhEy?ylIkuK ze?4*!>I`>}&=8_bx7J`&E?7&i<+c#QT6%5wLPM$xg;K}8h6!zcw9a;~H+DpaQnTGV znM`fwxT}OvoAuqeOH2%?%?9ouA=G9=cM6lKzg+i4A=F=fYqoaOdoGH)Etb|*#Io$cNgWp}Q-+_!teIoGX`jnH` zD6PLw@OSZX{s#MYf9AGI8{$(=UTNB;KEdDcyPtygKr0aH~IvBWj?{*O>U#h(LySNXXf3QHqC9yWS(KCxh;|yp3U1IyxHw3^hRD*(sXy25LWqTxZ{OZ=7H`MTAf!JoZ*%XM|>4(UEaL3 zTin7ChHl7Iq1)V_gs@lPc6aaZ&tc29@Z9*YJ8>kZ%)AwHmkZ%3a)FyV+SuVK@)38OA%0`@sQbRy;kofq_fsLP zYA$p?7s7MnLU+3mo*Ngs`wX$9v&e0KHOIh`)gpI*A%0?CIZQ?pU+lieWHh7}yPq?$G)gXi zHZFP3!IQ3gEr-H0!jos}*-+5SCuh7e}-Rqo3|n9<*N*9u|Qu5$kr!mPd8O}){? zfSGxXdyWuh<`3M#OemLcoDbbGOjRLh8+_#6D1;}5kKCC;cw+d-z1I+H8+_zGCWQCQ zAG^;ALEGSC_e~*a8?19b5`wnDC+?R*&^FlM?h}H3!AAFx5T2Gkbe(rEL2x0u(;qDf~ zD7?cxD1_N!r~8)>W`tdCY#H)iWnu34+RgAO5ZdiF6vAxrjoaL(K&aY1LkP3QKKERo z0-|G^tyc%Ci9*v*;~$p(mj@*?5#BZEUbp6cP?0xE2s*6A-gQFI-e~DnFwInB8gFu1d9#IXBx>zFATFU1QsONUf}Te^?*$>~ zd7R-@Dc69b0W2$0J*v{Uw;t!e~oxP1d)rvXGJ0t|njR%A=Zoa_W4A5 zvEDC+_#H}5FF4(#j5T4sbRpJ+^>T&KT6=p%LTIghy!K3{wf6P8FwIoh`P|p*B?KLU ze%@dq=n(YtMhZcPpuabf$*djr_pWC$ZN9%Zo5^Sm^!FYRg4VzQZ;2t+8W`v;6@u2l zK<`y?39W&FUj7W^&*<}A?6nqx*1%w|vmw^!8{+j8g4V!LZ?F)w1}^o+2|;V%GH;3y zv<5EsZWV&oz;JIK6MAZC#t3gQlf0Sqo)bbJyTW_hkcD!&()&mV+6xKc)S59~oDj}v9plv!!Wpe&yyi?*A)L`V#_M40 zX!gw~>LP^mX|M6R3-KFGueVPV-ErPPA;<;ey-N+T?$3DdYO#Y9G~O!{f^0LvyG;n^ z(@yl}`&8~;|G(J#7Wk-&v+vp4Idfnk1QL?KCL|;w0hW7!08y42FKDV3X$zXyt{SUQ zM8&Pv8tkI+f(CDdfHu@cB1#)?HC1_yx=0jhqm~-)v|S~rC|*!h)QI2zdFDy7nBwdE z)_%YD`+ZG*^Ze&OmuD_#&YYP!duFUVgwg)Azp(D^X4m_EY5hSM?N7VZY7s{J)BeiZ z(#@{-Ewlb8j7B9j){D%{Y_P@}!EBkDG(FE(W4*_W>iV>dE35-19zTz+wEA9YYM1u- zywd7#81M0UrIjs=_V~Qo3JRk=KCiK62%|kdYpr92(H@`IS@VR^9-r4+KNUuMeBNM1 zgwYJpoAgpRoo`1cyS=eXzlDyG+o7o#K+W)iB%DI~IQm3=&-DmY( zZp!{y_CxmXtzp8d2CdDw-%gA11~7Y4QR>^RwZdpm^zBv~Gn4vu>(1*;`6%^vtA!b*UX=NQwL|=>22IL*#d_y@ zQwA#gtCr^mlisSL^2{ApKVj>@{$>T3nbZ^3OTsAigf;#~lOD|!6IR(xJ*n@sPGm-F z7pG_LvL3A?KeLXq%j#f8zxmpqy35k5$j@BqH?0B8jNhBqv?RaX)~s%}G;_CgYEsCz zt#g=}-!AX5e#OkJaqh8J7(ZU)++#Hequ(ySXKiI>e!Kj>mFQ;k_50Smddivk?ebo0 z88h?S<-OL8;zz$--fP_{e)QYr4=w*{inmPBZlfljzg_;sdP^An zc6q-QS!3c^#r66#tEQXH*PmN0!svI+omTi}6Ow+{e8BoZ82zsKE34@i<43=1cG+et ztYzw1yu0?;Ex#r|Q`cVmiEdVEdF^MrS-tkzf9+<)sh0f}GxNJ}p~3WOnQ(VKn;fW1qLy=%mrF-@d>w9{u|5dzhKuHTSna z5I-8l4zMG)n$ptmng`m?Ff;oXq}d+}qmgmC9gJ}b{H57o`_IB?yqjU~?`B^)nRf0v zqqA>TOXd)}nVH$mAYkj;j20UG2J91s(dai|HwvTCZ@|u7Z$i@OH^(j)Mx)TTx4$$M&sRLySbY!b&BoG4Mr!8cSqXA-E2{xk@ic% zXoNe;ep48Ya7Wwwh0zE%XdiQjXu$|~jP1FTnE74vIC~^Bv#vkE4jRV4Yo1_F7e=c; z6YSZB@tXfcJ1mS=aVFU@VYF^jVn5W)Y-h4PbE8R}R(Ph`VPUk2Q)*XtGwdR2$Ar;{ zY=*t3o7qm8UGZC^h1P8jx6_(T8E9{&nf9OWVn6;}bI7i^+k~W5oRFP)uL()NYo2Ad z-)H=2wDvu_^!J9*3f2+!_l404R=ItmFj~PXx916?HKcO8$}s+2^O5$xX4b+hLr2=5 z3Zu24BkfMZc=hK>7PCIwnUI@X@S%*-^7wT~1=GmYcy6Aa^-Muj~`7|k>)?DHff z%`__Pg!s|#laIIG6Gk(Q6Ku7K(tC|(8b7d$gwaf6jy+iz%`{H3XA7g5#$0=zFq&!n z$UaLL%`|>&N0`y`=*7%=_G)IP|2)~gwVUnEJlTG#o7L+|`z2=d_QR9)ANEWCNjWpW zPd?Rdc-S!deR9}_NB7&#(}mI7&V`<;ZkAivKdXn)TfLti6z{C=kOvB$@h<3QxrLco z3%eP=eLN`M;%>hK1;xJex>;^vLDrIP#%~`Fig!`B-+_V;GA{0BxrGz6s=FD*TXs;q z%ewsz6clCFbhF&T?`2)x%_!b=2gSR-+wVZZVcr|N8P!V<3l`4JT6s{sy6%t%3i5pQ z-HhsGbvFwZR%YFDP`qDv`yD8#%39mas9tXEX2HU9veq9Iud&NWol6IQGHtMv`5Kr znaTls#D3^8!$x8}@u)pFZrEh7$Lx2RnU);4Kka5qow)7ZOd-jyUT?P3yV)ICkK4t} zXjSa~j8=OoGqZd1Ry!t))+4vt4+*37$gQ^bankvQi`FBz+CvTF`QKJMUl`4&x7s6w z(f6ra?UBr$wF(J7>+iHiI(XX6;pY@d8vBi{jR`Fw5f3!1O4XXfq z+OA+`egXYwJM#(hGrxY@Zs!Z5H!<7o(Zc9W%yxUMVf?OjyZzFW9FP0K?e;!q^b5tO zv$oseKa!vM^jD9`!vR%+-w9v1o zUbW{wOKh2%SNuZO4*So{-f+=xss3(H-)=(EZ>e6h&l5(!rFz{?2&3Op?X>4TXF}3% zsXA=+JTWt4-(`<6jNj4jvQIdO{gjz$FT3oY8$WJ?yX=b(^1HH|m0G*(ST`$9eZzjZ zo5fS#vR`Cop7!t9uNcNp^mptJgwYdyk3IeclTUi0ziXe^&G3zp{gg0zqJLoT7Di9> zy|(W~6OX=B`p_;AMo;v8_PyQAc0RUGe945QC;F#$`OAjUipzexK^Q&5_uEyk8b5k! ze`fD6jNjsaZddLwe)J6g+`e8IJ;T4S8-&p_{0qBD7(K(ku!Dc)c#8Hj?zHbUjGy5L z?E8gLn?GPbU>LXg1NIBd%p07q>;yBq1NLPpJ@0QOFZ6tO>9W6@6zCnFTl-%#jNZz+ zb+KXmg|AzmEsWN5-1-A%^*Br9i!8T3=5>l!uP!OJhFJOnW;d!Ui&KU;x>5XYC{7#F zM>lkskd4KKL;CBpcX4{$UIyw#%;>v`xkCo(n}yvDHb_4yjJ}&l)7Bdl&$PNUo!QNn zI%&G7o7LOty5TJfNxx`4b4Z4MlG&4dr)KGW!l<-aI(N4TN#9Lm>Du>*neQgD^^43* zedg#6X6CzzVLI@>2}$*tr%OLDjNaf3*XJ>#?qs}VoeBB_VRQ#f(xFdGNcwJ~M6Y3HzMGh$b3Y|N`flRdA=C6zUzw0}Kg`f0l$-tN zH#{?Rh}j!1x^rgWOcL^YgLl&^(@(h#qkH8rU5ZmM$&cRr9IpLd!|2V=Ox@pS7~MIu z^f+ebyNU1VBZbkO^F1AwkaXvKPcLG&4Bt(x9&!ZU?y?qse^idQro_zqqa*Q7)1*K% zlp}Qj8?#dR=(~xd^li+{cN53xxG{*vaf03_jGm$= z=!!ljBz-Ayf^J}DzLYpY2m6|Q(wop9=oVr0CiEm7@*6*T6Z%8lDvaKQ{#bViqj#V4 zw6~uLN$*AR_DmSP2|Zbt3!`^~r|64>(YwJ)y+#mkDEONrBU0WX$We&Yjf5y!G66hv9AYf9bUkTl$cQZ5fa+BWA%zP{iR|2r9_?XGmJvM#wpb4fx;+-I-SdmW@q_B>-4$I%m{Fe{-rP)0j|-P z38N9<8hwRf{9IY1Un-y!%=dU}^gdzqYnU~9aG^<^PNiC-bC{WZ7S`y|%uM;#=#XLj z9mCD~>TbUYLvPlpBTNeP)V@_038UxOt$Lhc{2jxsx|Esuj^S3lLKuC=5Yu-Gqwg4E zy2Zrf6D?x;EoP>dis=uGAOBherz#1fnuuvn5$A=!=!j{}jLPu+p)q|wGxN3TI{i2^ zbB)&PmrO{$e(QBhkhGZgvR=Qz%(RL1`Xj^mimlgQ2%{^uUfW|R9{q;(w4v*De`aQV zcfC$ywoKh${4@A15=LvWx9h8!nRdNF-`LHt{DUqTXLQoj z@B#gjF#784Aw6Kc@uR-{KlNN;)R(vD8-!6`{-|yfMtyl)cM7B4d$TT?V6;%r{~_bb~PZRZFY>cp`-~J@htxKp6GVf7IB{nf<7TZqupE-f&UR{R3Ll_)ucxwq!)Cgo7v8b`YB;FLV8&zx|!{~qH9Y{JQ^YG(0W=I zvz@={I$<=@`MYkJZv1FgkkB1745N|GYr4G5FdEIgu7ASJjAnM~(}mG!W~W{#A!#(T zQ%8&+ujO^<;9;zVM~)qO95XX=?9e5~kLLj$x{8?@x9-yCi64zr-_W6%q=j}YaJ+Bo zOPHA%`)<8P7>zu3>y(hmHO<&}>k?r!*4V9YHjHQNyY)I@w35GDKhDgIv)n{JwsJndz7I>JONidFo!B{XL3j-X`tU z!ojKg zG8l8Nk9DjVUhr!gcN5q?Vf35Xk9DUodip}kC=TiD9Y?9B38QZjKh}AM@vm|}*2Ti; zo5GLvOlDLs^~g)xc#|IK{6z1VV07L!;d|C6x!zTc7G`VWjg@z1%R?`Ki7^80q{}-@(l2{8Xovuol+2Uk4@| zogYm+%)4I~2qT^Q^#sFM=YCx(jCAhTConTQ_v;-~dvt!L-zx3N=V$r@VWjgj{iR{7 z^D~X3!0~5B9-rx<%#6;@^t|akIzQJ{GkSD>t``X-ouBKA4P%|3>!>iw=jVDgGo$l! z-Tu8EonPo3M;M({_AhjYFw*&j-fI}^{6g;+MmoRHDdiN;==?&jS=^(uQ^(IWI;kyn z>ZgQ}&QATjVXU)L?+`{hJM~A*jLuG-yR=8=mwLygJvzVC9l}WGmwK;Ztn*8~Ul{59 zQm6ci;u)P^>UL(PEgjH_sL@Gn>41Jq80kEqKQ@eY9?+e_Naq1PXc@&bIuGdRJ;aR8 zuk@YwGUNN`D}App()pEs#4y(Rm2MSAI=|AdGBY~A()*w2(W#u~tvx!G(;|#?DrcKv ztW!CE7DhUi^CmN+Q#t#d>(S|QGN13!>2h*~kxrL0#xU0Da!Q1ePM32WGo#bxl)liT z)9oDdVvkO@bD}WP>306ZFxKgIs)UhFw{rFz<9xx)==32+Q@vPY-SdFg1Q^Rp@KgM3ax80qvm?;6HBea=2%q|@j0J%-{Loj#{{c8^ZWNjt&l zq35WJsl9l{e;0CK9_jfE+T6+> zNpBhbkS;a!JCZ3mr1>UDm&#+E#UkBse}5>s8<$hr{mgGn_gwh8)dK;F)noT4JM-&# zCe2+TlgskW?k1nT!y9*!Zmt=R>eqL3G?CrD#f?2 zF;j27uU!qNWv*iz>ooeW<DNgq z_UJiu$mE*;Hgk{O9v|64piC>YMXPxpga(!{mJS;k=P_t5mid*}Jw+ zLe5<(i^CXc?ug6TeHgosVOh-eW_*+F#${`-@Y!jk`Cjx$U3Wdzp<5aEiO}g*heLYA zW7;tEb%>ou-`}+TK%&u5`)8v|-OE>Pbu+J{R_b+wh^<#-ZBqN9lA$X5cz{)B)JN za$OFcw?mcXALsdDtS=+K-)Wvr-<4e3$+gsF|HoIV_tiYqwd>MDPXlvMR{|nhm+*daCfT;4sYB|n>kcYjD}?2Wcv@G$EA!+E_Ii^cMm|}O{+UpKVWLx z+_Syy=057uPuh}QO!#D9)3%fEf*)}W7?&Q|HTpW4OOz~4EB(4l^7V47UAT8V>TRAo zQ2o2P{#|MX+hfBhpC+xBd8Sawd8p#FlI`T;R*NA$>LT`~@NRyZn~}L!{f#x4GQP?7 zOF5(&zZv@#>|$E`KY!PoI{a7P`^%AMw=%uKD$aj$Z;;$meVd-4cMm{43F)V2_uA3a zBW>tT#q=sJ)yBPtk^k;7O#krzLyz&V>m|P4H-5Xm!nFK*xqT-07|rZrdJJPH`R#g) z2RLL4YcRb>vP-i4-@gA$Z9L93{4CdYe_jRZ{ggS>Xs~B|(lwq;9*rbF*Lp@H2ha7A z!}K0A^maMa7&7@OpR6-^EZuu-aH#P>@8@!t&fX)0f9&$ja|EN`)ZRZYlSljCW`(f# z>^^zDD|t3;T7oJ2kGO^Ov<)*t`0tNHUS>VJxYe0fVf4St?q>9xd^Lyjn1oyo9#JHZ z69PP9OxD~rUohi0lF4a(-R|P?F#0+krGI^_?oyv{-rPablRQeNJiAnK&U@~NgX@Rt z?H}DE#@)0BW2cdM@@TDV#F#uXH??F&=4NFexyHKMD(UHc2laL__mp{hn%S8dV<+n| z*F8CvWc$~j8a?^%eRr7B^>!y0bJv*KIMj$bIakJR!khf`u01m@GWj>*zpIw~&y1Yu zp2gMSl|a*e{AgWRhi4aaM^lNq+Pt|gCe}Ck9z6Cou}nVA^-V=8U8DUTyGIS;ww-)W z_4vBfe{J{3+-(@^$>&szy@*}LvV4t8O|uM_GUEYbH>;_=SE3H(ZrX-v|E7#RqYJar za`1YK8K0an+_XKafl0`Z2fxvzarI%Gx39M=w>pa5P3tm}-tV~8F&uX;q*wLlw?E|T zR;RFgm}7li+c(`2-*hjK9=G}_ex>J8=IzGGoYraG=^nh+)bpgqnlRUMa!$+>(8w-# zN_}Bco|D5+DsDw79{ki!zW2YYb-zPh>qEJlnmLbi{y$qY^l(p0^59i^Ge*6LH81U! zZnccb*6UGMz{RV~T-(ID3N9YFP`k>Pb z3F%QakY2SG(x2l*Qj6}%HH+VGw!Cypws z)ad9=PV1X|-TZ#D>-`{wPj>P08pSv3H#zUp@Xcvax&AvL&GYEn=rkcOD4_gb40-50 zA4=Q5+TC0WQ^SvxQV##Sc5^THJfpkb1ogb3KKN}l^*?yK!PoQwZV3nF0WKc)b*U%W z_v<0u>gn!S#_my%z{UIjMXcm|*4&S$jiCDcQ6WilEw-bFq30vjN%9lTj69P^yvd^% z<7;#tEPFrWOj^C&$t8IlnEd=bSZ7ymyPkk1=TsJtTEHcGk*~6e_04l+6DGN4%($X= zT=RQ?p7)Yih2vicB)eo3QQn5LG;c`1t9#I_pqde#c~XCAY~|wCd_v=0!bc4?7{QM ztIXTdz1)fpH4ZVkJ=9pjtcD#b?xEaiyzS!AMb{|KTx&D#`Xs4Uo0?4aHNWjK>6+De zTGjEWpKyJecGxq<>v~dC-`n-1KGYfxrR7$iccVNj@ltbN9U#~-#a*d&M&F@ltu)9@Xc1gB>b027W`&5pb$#Kn0d>Gr4-Azc6 zUGK!r6Oddy@_xUN^%QellPiVo|Bf^#KWCHevsiz! zOY+n9pI^Z0xTQJ=A!TB7H&n}5BJwRenm zyz=Y)Dt4#$VqL%IC%c(x{-f~c974~(*QHH8f4A$>$#a2Z`*$@HJk-4GQ0~;C-0I(J z(ciol{jXbjHrM?Z+(((a+w`tq?^l!i+pe+tp|0tn+zpGZ4y#DZA{aTxTd(*XI z-@6YqIq$tn)7#~Lwjx)}z2a4TU6N2f{v3mBVDIL8?ED1(Oa_4wJ>c>1r^L{>x#=EgLR5Fau%epF)(wWWi*s49E<) zWvWpyV`0c%4wHrd{xB8{X)1@wQbV9?2y_iWydiKO0{0>8o~?$e=`cAk17QZkq{EcM zWWi*sfI1w~f=NfHqhQ9uq^n${lZ$Y<2$!plhp}MNRi2sy(;ucBCJW|x7z-v{4Ob__ zjDjhL$$~iwW-Ls)Dnz_O#4ChfA^ZvvuMqJH;Wq+)Bj7gzek0&F0)8XlHv)b|a4&+r zi0$RTESPLntQNxbhbf22f+4rXFcwU@8mX4REQHC1Sqw7=raw$MOcu=XFcwTYa(p4o z5}1WB*)WS?=D_raDTm2|IUdG>NmrxQr7#!5EP+`FlMS;NW)4h$m~xmbnB!qAm~<7y zbqJzngSZYsT!$dLl>@V2veg*q8v}h~pl=NG#lSf*{b9;svS5yfv0&0st5?EY2(tuc zAxt*R9GLzv)% z1(U8Osaw<(_)mfV6!=ep{}lL7f&UcvPerXyMUJPky&RZ@+Pn_tN|*~_mcT58$%dH& z(;ucBhQb{WGZJP3%w(8rU>3tzFzMTdNt^?P-M zdH}xvsg6{SqE$bxj>i5($EZK5+3Fc}ton;OPQ9Qi)GO-y>Tihsx;jCja?D3L=A#_*5owJ`BKFTp4<(Q9h%ttxqBcJn;&r=Zo6ofwo;ZH&MQxN_X_?-g3N~BSVG%Ars zCDN!w8kI<+68b8kuM+wyp|2A9DsjCkalI;`uM+wyp|2A9Dxt3u`YNICKh!|iX=ux* zp)H?=wtO1gPD8lU5biYSJsbDO*+}nfq<1#bI~(bp&F+hVb71#)6hZ(6Bso}0gj6YE4zQWITQ!z_on2Ig9rT9_3`V+GP!fi$i|*y|AX zdgS4H*sq8E2I#y2_8Zt<4$Q)tkaJ-A!<54iKOV+{Nk?l~0<#dNKTJ7H7ECtGVi*f1 zU9CiYuSB?&2)7b`E8({iI#(jjO2k=-I4hxZCBm;n_&QvpI>f0%oI1p*L!3IqsY9GP z#HmA^I>f0%oI1p*L!4E(#;Xu-6|VCt#9f8Bs}Oe;;;us6RfxL^aaSSkD#TrdxT_F% z72?*T7U~hN9`WiCuO9L05w9L`>Jg_Naq1DL9&zeXchp|IP5f8U8oJ|7Pg8 z8U8oJ{}y$+>lW}^z<;fN>S|C6U273%E#j<2oVAFv7ID@h%vyw5i#WHc#jabyZv~I3 zC9W9kG1%9s3tj7AUkCeob*ZZn=60A3sD}-xhYhHQ4XB3=sD};EvjJt=fHG}BoDGPx z0cF~Ndf0$^*noQ2fO^<~df0$+Za^OHP?x!y)s-*{RWsr>!@U{q&4}NO_|4Gy01gFt z5NSM!Fb^WkgYbJ0ehJm$+k~*25Ox#t zw+T8nLB}TO*o6FTLi|k}f24XCZT?~8_hGd87T8;0Z-M<0#Crts9zncE5bqJhdj#{&#?a)_CLeE9ro?8Z-@Oa zu>S@2zrg++?9aje9PI7tx1M&`+hKnm?$5*iJnS#P{sQbT!2TlaFT(yJ>@UIo66`O* z{xa+@!~QbtufYBa?61K7D(tVq{wnMvvD?$_o(Al$_ZPdCNDOn*VTjT^#b)# zR;Ooynuwk47ht#FKK|2GacU~$gjAe)g^&Tr`qVtg$Y8SX98B(3>Ig{E(5dLG!A?bI z40b9yTX3B^3wungv0T9N ze8`8Li`l-6?aLvT4!s$&Uay11t{sXrZ|t@&^aRxF*eTG@`(356%t9FKW3O6L>b((9 zVSasDm5Srk)+)6%TO%Git2N@GQ|u!iI*m2rp;K6)0WMXF zPL8coxdR^bR^g0#k^@*yWcgysLQlE-th~eEP9?gJ%UJE9z4dD#^L(4wWwUGl_~n7k zu09i#x7IUf{4!6ir-&uhQmyB#@t?!}{PDjE)Ow0XlB6BIYCRLj_x06!j%0c5_`1Qh zp6K`zf32ruT#0`hYp(Uso+4G)iTizT8rNZ+r)|LJ-a5~_1N!>vJYTYWae&*`z;)Q* zq4Uk^Jg>ujJ8O6u@=VVn)O^CXNVx_+wi~&&8@Zkvxt<%jZX3C78@W~+ zxmF9fu1Yu$uZd23;7h(HXe;(Ld(Ol@dAnUT7*@Ac^U$>@rjvjQK?RCu2q9n&Sqzg#@^5H1eLQHJok@r(476)*#(|IW^v=k#3E5 zGt#Z$6l*xe8cwl^eizKvb>C_c+qy#bef zYEfED?}LW>ASwJ@??>rJICH(!ispI`;M|S|uAc_3p9Zd<2D&c8;9hcgPJ?%3$&1+y z+$I~iej2!b3b@n}MW^sZ6rHyhQS))GUqsQ#e-T9|{zVj>^cPWd!e2zu$$k+jS2mvJ4IaUC|pWtX>w@8VXzE6aHI z&AHq@Tlv0dLzw$BB8tu@Z1+-+x5G>4nsq?FlD-GN_4Yo^^q!(XP;5 z7hOlcuYcw>ef++|GZ*6OKbwZ#pM2vo`}+L8cQcmtN%Orul;rzEOZJ7MNWlZQ3a8c?37eDuXI|pw?nD;ZINaeH46@7!yOd9%T{hIBiR**|t z;-hD1tD>{h%D5C|T=pQBx6DW7E%(uV;rCsXIT0ydH~@Wux&rC8s?*Zu>wsuJJM#c? zduHk+@C0VWVX{euoWC~F61Tt3LiZsD}8i!dX?|Xp+7|JrDQ$Ocdjoh z(APH?aj)q!*OwEZbT7|1y-%l`PN?(yYBQFiX6OVpzi&*|^C;bo8H@S^-Bh}un|4_Z zx{V9%9*Q05``r)CcV+$rA*W`|*Aci-{@+V!^6rzniB81!`-)T7I<0)Cw<sPSElQ-$jA zoW)qhM<)zb<7$$7ED-b8dHV4+rJeh$xM!oQztB_dqcbY1eY7X7-*@+58u`%K@U=c3 ztN3_SC&1AdAm4Om#n0Vi%B1De(K~iA?rm*yZ~yPlEegjG6shQooOOj@_#s zFHzpT>gke;;7fJx_t7bGey#z(k9MBTa=%)#48BzMJib!9U3*KeDyZ`98(QJ7;!?Zt zdv4$qr&;$+r3Y&a1wrujz*s=*4FcM=8O{}3D z`P}7ghP~KVA$A(GwV;p6>(}BNlfBH-!aY?B_fajr;_RdPwW2jfd@a6{vLpT4xTk8v zotujAUu2}hWf$AuW&868)585#3;K|2;7fNwtB;;gExuE;pN4NVdrJQn^j+`5PCZEr zdN3DUu7Z0jt{sJ}$ovt~rR&&&o^4dWcJA4BaL?9)o^43Ki0{bBot}tq&g8?O;qlCV z&_KOh3-@vzNOz&9&DWOwNdFGsQz%!5kFLcYxR+WjEZfBWZ`o9qTe4>%WCz=i%&ylh zzNt8Sv&DBO+_T(Olm9+~^gryhptmeVeyF!>;og!;`YYs?PSu@;c6BE5a9-wP&`Et` z3-^sJzDV|v{!|-JBA=gSR`lP;Icz~cc{1Bet$pYxQ~PzY`#!!Fot$T{MX_-1JnDHL zUlG4WrwMy4DxKG&(slZ%6rG&^eSBTKmboq$WhRhYs*M)k*_pS(PCX~CFU};4_`nn2>`nn41tnqpMDy;KMQX#3YtFU-1ZBbuWfmEn%P_KpSp7nc_ zj(V!O7WE0pIeO+6?yp+7ub|ScM(L=hqQ2;(Q6xVf6}0vZeWia8+7_ZL)c=%O)c=%O z)c=%O)c=%OV*=?YV*z9(hpgn%6>wUW7CoUVEz)0Ny&TBvS7K4mQ({riQ({qTFR`fS zDY3Q&QsKKDvWm-F#pSKy@>Zd|7mTj5sOPD&N+(koDsL5+w~EU<3nNwKoz3zGEa$U4 zjpYKC=d-++mzS*}(Utr@)tn){?iEMLz40THWzrYkk*rYjP3 zKg5!1Ea;|l>Vs}Nuao3gko2sNAZ{wcQyUJt>2%GYn|hL+PA19Y zAn9DppqtLa47%yucao>Wh0eVsxfJ^8oXdcl+GNm8tu*MSUCj5XDe3KyAxPu|?JDS| z5qQu|&(NToo}ocE&0&LXdUglg)Ix%88ZTAxJfe!vdBQx7#v!UtN(SVBl;MyWDPti6 zY^O6Hs&MYoZ!r$PWzbk}#G;+UgKp~CsMJ(r)Y2jrjr1aX^&=M5RfO9{gxh??qMS!8 z>VG19FGMVQh6dazIr*spcRJ2{+^haJ`QFiFU+5uwd~`MRm%*3DjWyg(YPg-$a673% zJDHSPW9>vcsj)s}`4!9lQ^#t?~wbo$hsYNOujIL#EwXCg{wFTY%Gxra`)z6`;oRxWOY8}@=gGFQApqob5Xb%`y z2i-J^MoYk1yFoXd_ZxK6`ME(iotqnU(+RmWiX%IogD5Y_pqs|V0XLo38+22>HCprg z{TelML+Y|%&`l@JQutD0tekRp1e_Y=JXvvWBW6aXF9(Zc}D*hbkhhh=%yZw?C86o?GLFf=uK=yUEsiUp8uT$WbIU&BthYUj4MgWcP>|7qhE*a4SPYY)qP-7=0j zEA@w+aOp_xwALWEUYq7noz`uzcUt#C`t41qJ-_{M&UJQ{dvw3QkH~W8OzA(?Z$FZ= z7w#0&Z<~B`>g@|`>g@|`>g@~cv&Kiq7T7bVP?*rLV+VewPM&hARbU@IWjWkW zm{Q^o*i?rFHns2qo1Ov%(2vuak=6)*&|WqSeXO0Cx6Bi?YlorNwa4a>OHp3kz!Ez) zjO6W*LHnX%Yay$Lt%F>IkU`R82W@V*HqE2UIEQ7N!!picnSJM|x`AcLXM9kZea3K# z^}w(v;BxVly1`|fs}g%4QZKWwz#UX#(_FI5zJYxyw`H8$pnVqdP!9XHK_!q25wbt$ zlkyz2>Fl+jeRZz#me_~q{T^XxE>>bs&1)DGw6_mK%e1*=+H{6m(B>JCO{bj&?dONR z4jCKP40$`tuDQ$(Z_uXsOVHju%nLoA4eJkSW+LyUY=AHIq7|HGmUOnu02w9J7(O^f0|88J|eev*PAv<%(PR{~duUwMU58RA?=}b=pmxbn8111LT z2XjM%$Ub-?jW>qEC7ydG=2;I+nF>3d6P4$#^xzL$IP zpzVAgt%K&%IBo^p>Ex-PO>1|J_R)FqL5()`?Ty@?8|{p<*8~L6pXPxD&vz&F7v(9pR2HJc%>nUgb<*dJ) zs@!iyfyXmEgO&qex{{Gb0VDA|B z4CH*a(_Pbq`owxZ`Vc&o>~oNZTAM~wwVcmd&S%i3(N{C4(#)web1KcyADGl^w@P;w=G=fE!@+#aLu=HZMSf3-^aBb@dWd4Put`^t@O!Bo83Pz{mZ0Hc)mP2DdIUi zpWf-rg$&@m3BB1lC;x7|k@;0Vz1dj>SpfH(^oZx~{6E5dQ$D@fc?z->xqZ+Zgl`Fa zU&((JzHjE!Tb})pW#aBH=zx1x0ln)P1=+^2O5i&Ou?{bI7rqq*^xo%G$Z~dXw=XEz z>~FU(W=T13w=XRqc}3|6e}LZ?1QflKYPTu>?KbCM(fg@(oATdouPPw9t~4jTK*G}- zt9F~p1z*U3qPJJ=HkGU0ZYm)8SZPUmP{Pxjtah8qi}PV21B%{iwcAvpcDsdTd+D6? z5(!Ulwc2eeX}e7&4JdlU)oxSGwA;@VkbDRF%OpI#7i+hv#@cPFv4Em?WGE5pq}@)i zbWfX;UM}J39a+0gb=7WDT?G`qFWboXew+PVD&FSUv@+Jp_E!6MDYz4@DTU{yms`In z^bRbyPAMdpAF_Gu%?_u<08fF0Zq@4%JX2KNOc;?QtO;R?tr zIs83^?;tLX+{!H)k(OJhu{({g$}xV3L#{5oA)Urf%3E&H6QtaFrmzkgF3MC+xwR1C zJNQoQ;5)H{@5By!_%w1qYkd9W4tp%y%UB*YEuP-NcU%Xz>JH?sUhjci=-J0lnSHps z^L+bkn)8-h^t{`SmR~$&6W33N_wx}iVJ-clX`PIoLZfQc{C=tCZ<0r@ZDK zI(_YwPW!{`Pt!X&hhF_*cG_UCrra*Vn*yv8!ezo>KfCP3%&U3IK3B(DzvR{BxNaaI+)d^VGIxr(JIq~RTE1!Frd6BPYg(*n znbaBsJZ}o{yeYu*rU1{I0z7XD@VqI&>y{Jv&1o(2xy#$+9#b?@H^DwpH}XuX$xSn< zI(OTE2M2fXx@(7`xm$;#QAY_%v)A^-i+W}9=sVj%-aZ^Zw)TfKPdWWaEY776(w#OSCqJE zTv6ht5k-lc#u6oN8by>~?tC`f>1;W_i`PqCrw{ge$-dU{yJ&{!chTIo3}x>eT&{gN zc1Ahu1(5wS2SEO$2y-GA&B_BVnw1A!n+M~~CTk1eMAw&{fQ#nlB)@{Bxp}}vv+{t8 zX5|4F&Bp^SnvattUz(4TJPwlP;{g}V!2_HhN<9ndQf}*bmR+tXpB4IwqNy1{7rhG$ za_Y^f4ZOi|7iS-rQO4J(jNkv3;eE|`UzwVdI?V@P+`ldENz?P-LRYp7S2n_ODcs%t zewZ;=)0?aazj3QX>hIcBkP|hHovNlbd8!6IVK373#wVibZCymuTe~(wlLd zg~WH+9*f?O(>tSjyPe+zk-Q_TTHk~9)oT5FjAN@2cUwjcyVS5tjs8Q?9=KEu`aGkS z-D}ysmfdUhLq++SweX#kxx>4o=sJ6cx2=eJl4GWSFm<;&WBSKaKXV@_H~{;S>E6;E z-iP74O<{f8-=OywMKT-pfr9<1O}Ls@XEte?J2&a9%o{VCHQmuIn#R~on&!?;n&u$1 zGW-l&I*abgY}Nc0UeoNgRnwdICQWndCT-y?`6f*>>n2Sz>n2Sz>sC#(OY)r$JH4ZC z(lpm@(llOeLakDG>d)ICORZLxO`7K2t(s=LO`6tlnl#P6n>5Y1DSWBb4oPwQX0>FJ zy*PCTNnbnXvqSPmWA$dZQ>$yzwC2;K zX??Ou(@eZc(@eYx`N1z1qy}i#LoSPbd!XNwwMWx@e2=F2c&nxnI5c2Zj00$lb70KD`e0MSh1{CYP?0Q%Q6B7q86=G-$g6F7!S$&7t?#X%3w$pXShc@@Wpu z0@9rA!+wu2lhHQPoRN?P4wWM4(2P6i(2P6i(2P6ioHhQ2=|SgL)5&E8OPW~+9UA2Z zkqT)zkoz>W(W&=o4xM&iz$Hp^1{ELGC(X%WNi|uG^>Avd)GA2EA*m*-c|EzB-=kIY zN-Vix^@D4v+DEg_Y9F1MUg4%Sw-U~03Fotf^I3v?zCWYHp)o^=bLaHeCYCs{>CZr} zLY_+;%5w?lxrFmvjeCdkKkJXfp&fDP9*^*~uHo|5aCvLEyfx09qe_R=pwuZt zYaCi0bpJ{@I{Gkztp3xD9Rs$jqtp-FKde%oAddf!}dg7zJ zkj)4`0paPX9dYQX9dYQX9dT$iAmY%oJL1r@JL1r&AmY#yJmRb#b{tZtb$}KpGW@t9 zEe@>%v^bqPWal+uht>fi4!OzI&P(P+!AV8 zLoI8lWev5gp_XISvYuMjQ_HbxIaZTH^Xn#u=GRRQ%|@G8PZR5j@R{zd+*Vt;t+sMo zZAB}6cV?^e=Je7bt)7WJe%h~KsZMYTn zR0_#QOfwHiu@`ZG2C)ajDy! z_TlAlr?Rwh4YYCD+qmp)4y|6cahv^!G@=M8OVJ?##iY241aB6)uX$vd)0 zE_HT@o!U}6x21M&OYIJw^}1JGlJQBX-Jw%;+xZ@8=X<2xq4wO)_g6dG^E|aqJytR2VaX0Tno3a!}&34wZl1s zNz)piH+U#~5t)z3Ya@~dA!4p5gsrm0Ik8sB_f4VkM}K-Q>VYpv2; zANjS)bnS->xW0tU#mGym0+$V0?D9iax+zxJO|h!ng#)!Z+fCuCJ>(wsur?35U+p0c zwU_~Gb%W>EX;#{Ey~##!V(+VwqlpX54@ zafWLyM!{`@y9H-sPc};b3?S)S4}7O++>~uV%7>F`aJFDraJgViaHC*c zaGPL4aJQg?eS1l7uHZ<)*@9ug1%k^3V}k2}+`a@8;=WTjJ|AWM9w3Da2@ea#1ml7U zLEPjVFC-Wij0tW5l0JNNpw7Tuy8uY_wh>6>i3{!)#D^#BK2k6$csY=-qwtM_alvhZ zPKJq}52Wz3g)b1?D7a0~!QN$*k9;77KLSYCb2gB#uee_hr2MZJ+z6z2TZHcv+%4{& zEEC=VvVP%52+kJwGlX9*xL$Ch_-_%uQ*gJqdxjYO`GO%JrE`Svu<$d4M}=Q5JSKd- z@QuRbf?LErA$+Is-NNxXFQ?}LQoT6Ba|QFo{RqL?;(mtk<-%uUr%lTD0>L=;dLxcc zd>L~ELxQt`bX^j{@wqRD3kxO$cMHzWH~yyyE)a|gE*FdmZWDB{6Ds8+S8$}@0>R~i z+XS6LY1crC=Zr8oQjqqGB=?Pi+q(R*n;W?=5L_;}O>iX6{bYZ^ZGsMV3nBNBf(ryU zcDZA3D)OH#xKS`M+PEhs8jKxgFfN!7#E04(KO`6yj0q;X{AZeQVZo?iLQsW_f39Fi zFeaD~#HX*EUQ7_5!J7010Vs9;PmE|?HhzykJN$EEpGz9c#kH1;Z7> z1rvh!blB(vaDp+xxL`sse3qmm7!%ArTl5Qt1rvh!%$n;XCKwkCFBE-(F~QuQ zi9W&bB@#|BCKwk?2GHH7#Bg^U|cZw3JE6|7K{qU1rvh!FxBK=FeDfj zj0wgC@#(k;FBlSx3dRHzg6e7$J}ej&j0q+L)pE(VU|29J7!!;OCIsd0u#IXr*xv3&sTFf~rp92}T9uf(b!<8gBFph6JO6alu5Ff4vDG6^seS z1rvh!6x`?)j0(mD@i{pAhXlidalwQjJ_|Q`1jB++!MI>TFm{Ux9~Vpr;&XDNM=&H9 z7K{qU1ml7U!Q2MPuV7d(Di{-t3nm0ZYfZeUV4N|3VnQ(b8}iSe7-L-FiQa0$#{}bD zJZ9YEf(gOsZN@zzh)>;3IR!(4F~NkOYBb@Zf-%8_VD9b4KP(s(j0xu6W5(AZ!LVRd zFeVu9!aqnp1@URT$){jgFe(@qObFsLc@thRBp4Qq3dRK0LlRyvBp4Qq3C0Bzg7}=? zq{En)91|Y>PvagFjJ60D#OL%To?!H4Q$L9v#$EkY`~|T=3WpC1Mg>EE7k9y^U`#MB zm=FvnO!%l^OfW8(5LB;8IKh};TreSsOFVkpxQ0^1Ve&h!Kh$NFfN!7%zazZ5ey4P1>=GVLG_M=7mNwU1rvg5kAxEp z3q}QFf^orwVD7sTPcSMN6O0RDgB(-uf?>g^U_wy6FX05kf>FV^U_wxRAnAW*Ff14q zj0s{>9@8EL6N2gsNl!2;7#9q6N<6_>7e8R!qk=KPxS;w<^a_Rrqk=KPxL`t%_CTZg zW3FIGFeVrmObF(>O!$ysTo9WNv7WfcU_vn0E8zvBf-ynm6Mw<5U{o+B7#G9_N1RSb zFf14sRJQTY6$}Z61*3v7L8V2XU{o+Jm=Mf$B%EMaFe(@qObF)ok??}5ujETGBp4Qq z3dRKEf(b$8m-vDq!Kh$NFfN!7RQ)8LU`Q|~nCSBFPvP<>h6EFWD#gT42&w_1Pf(=_ z7YqqvGbg@IVZo?iOfW8(J4nI_Mg{TmfaB*1h6Q7S2|<-E;RNG@4NnNF4DlBX35Eru zg0U|DOcOpV7!`~O#sx!J5>7BG7!!;OVxt#R4#ALMSTHIW6HEx^4mI&Yf?>g^U`#MB zm>ZDrf?>g!U|cXEn42x(1;c_-!MGqc&@uTJ3<-t>V}kKvCR{==lq(##5^r}@p23h{ zSTHIW6O0RDlNOGbD;N?C3q}Rwf(bzk=1n}okYH3WCKwk?2;!v_#|sID1*3v7!MLC* zlyn3`f?>g^U|cXEs76RU!H{57FeVrmObDtX$)8|YFe(@mj0@uRnyClDkYHFaDi{|` z2&$11PcS4H6^seS1rvhU(9G1IU|29J7!!;O;w75NpI}HZEEpAx3nm0rP~r)O1fzm6 z!MI>TP>qrN35Eruf-%9kAU0<+`4bEYh6SU7alwS38Yl4tLxNGkm|$EmA*jYn{shB< zQNfsCTu@DrbOb|!VZo?iTreSs&D>161Ve&R!I)rNFd?WWnRp800HuDTMg$HI91}Px za6w>oU|ryafSo-v`xn{6aw>DGbMDXiOU_$4&am`h(}t}Ywr<#c!=4-V_hC7?N95j? zdw=e;xv%H$&iynuEpKXGMP5~2bzV*0s=Psa`7h?W;PT+=;Jv}egWH171z!zz1V0Q87*jN6(wJk$tQ_;en779a z8asMy$=D;t{&4ImV=o+AH+JpV$Hs0SJ7nCnadXC9H}2+fca8h~xVCYb<9|5*cjMn2 zKYYTt35QKMVM2JqITNm$P&eVh2~SMeG2zV#`zIVZ@x+N|O+0tvFDKSaTs`r=iS9}M zNn<9RJgI8Zg_EL_c2DYCGN$CmB^Q^hFWFM^bjgb)ua&%0@^OhhIWT#`yduzHjoglRZ;%rYxND*C`)Q$(ou!^;c6@O>LOkIQ0)xAD#O0)Q+irN{=l)r}P)4 zHAR)!$y1dfW8G^tY#f zHofnRAv20*Oqg-pjB94Bov~@g_8F?IPuZBV$z{JR+f?>$nSI!ahb=hl*28{#*dvGi z`LMv@=O2Fi;m;ht(F3NO}Pp3yp(##OHyuuygKDKkgHN|gX|r~_?nPiVSbB{r>5Ku zd0xuzA+Jt(;2*~Atv{Ggc`&J*lTSG@`MEov@?&!KNeRx^+`g#Sf!HHB2RqE=sUfNWF9b(mm%3uOjD!pA%R3sbeZNPFIR6N zrQJyBZKU)LQh67tyoXdiLMr=^%I8Ss3#8Ji>eW|Rg!8-BsQxbOv*@}_Ww^*nXS~sK|k-7 z#^vHc3AiN7-r9_>DNAxam^_>C$r?<^>U1i*3A2LjrgTPw31jlpJ4NGe!Y6ApdY((& z=qME%Om+BN>OHXEoUx>jQn#{f%%F5PvNR!+Q~X25MF<(spsTr+!DANSIOlynoa)CA4)mAb?9h6@-TE9WNP4i$lmo}YPGk!$=jpZREqywIsB^s zp>voTSeinmxRvE*mOEMc@avw`Kpx8@Sf0u9DwZ2r{)y#>kjZ5+S0wpr_P%z>ZJ>8+ zNp5@Je9xMC?tNX%b?jaLCj6y2RR90oc9PuoOrDe5hH0z4b7E3S4r$`{z8B2BM=ImP6wZ}M-nb>;TI*M}tE>B(2nw2U6aXA0dw8WHA=33)7Sm0+wHe+rF#o67<%ZI*}GLF z=iJ<7_2YZ)roIzD$?m$d?wa`hoG$xelX}7=yC>U|!zAlWwkL;AcKS z80l*K7s9x4(t-n*V$}z%2-1x)Z(q2K!mp$?M#+A-Ou_8r|Frie@O4$y{`fxU&Pg*< zD3GSNEv13Bq4NNtG@V07o3xZc+neO3x%B4VaPLjqfc!{W^@;cd6%_@asHmW*=mP;q zd=7xjGYTpWJa|47d`_S!zwdYLz0Wx}Nukg8{CxhO&;OV9tiAWzYfo#hz1G_MoO@1O zEyMeoYvJ)$1G7Zc0Mm+eE&ShFV76oT5{DmLk5n6=3qQ93m{oZAvKD?Z-YpB?c_QNL z;FZVWB_9n;AND(O_}7zwKNHY_7mPRg!oxlmm|^(radioxtMpPm8C z=R@Smjest^>zTlOG1Lsq7XV#&^(P^IQ|M&izXa&Q)1HO+zlLT5|7AcI?y_=-pi z@NIyux*Ge2xLO&R3(P7&S6zc0M6FsInGgILKv#Vf`w0hU5(|J|A6W?eIzU%_47-t9 zwK1|7m<@og`Z%~ASDPYBf!_@1s!w1};%aN;RAAl&=&Dbu(-7~7v;w~k5MSbx`PmU! z4$O8yeDz+P0h*nW6~LSY=&CPa#%k5Mk(I!l1L&$-FmHIiJ+d13Hv{5Z6F6PR8=7dJvT0JA5u5tu$e7jMtr1WYEf8JP0{ zUF>wWAfAnE1%5A}t6snxuH&jdvJLngpsRk1{a39Th;#y<2XxgRA#t^;5ZM9D1%UWw z9OSE3l_EQVDFV9K^PG+NVB{R&_W`;%06G_#{gLy4IRJ>Sx;bwK=Hm>f zAMhbS7kjP@;8bTX;0aDY;0z}Zc%pLw;7q3oILjFXobBufoZ}1uwmTOAzQws1aF=rl z;BIFGFzp-y-0!>{@KWcW0N;ggAGqo=eEGmtAI3KiAd}AJfLA+sLyh``^M1fj;+p}k zy3Y9!r0!FIuKF}~g!o#$b2Z|h5qN|1QN%y%d<^hg&c^}oa6Sq6ZRb;f_dA~fe89mk z_SM7A=KvpZJ`eb~^F_d4J6{6)jq|Ul^CjmN#9tKnTkJC(^*ih|UG-lAe~%rft0L|< z0Hf}=0AudA0graS1DJHb2e{O|6YzBRZouX4J%DGr_W^EjA3$xJUA!?wZ4!94`v~G) z?qh)6?h}AL?hgSo?o)vM?vDX;?oR>p?#}=R-CqFibDu>$`vG0`0rxq;54!&W%vJ7x zBK{$PA9jBY%+>CTz$ z_%gsxh5s4w)8WejzZrfn;J3o>2fQ=<0l*)GKLq%E_``s&hOY*6A|C~eMm`1@k9-`k zCh|$Z+Q_E>>mr{4Y>3NDDn-!#gT8J&r1L?JCSb#UK{xi;1?p_1N=_pPQdR*?go4yau47mk^2Cjh&%xJ zG~eW|ei3;D@VUrifGGJO%j2$d3X46!|G&B>FSJX!I9=vFNjaM@OFn zoD}^Jz+ z%taj+>ogj29W?+5s~wF17NRj=ihz*JXaex<(MrH~M5_S*DOv;gfoL7zC!-C3*F`4+ zemZ&#N__?p>oj^S;7!rv0dI~@2L3D2DTv=9@YX2a->PnlP6xa_Is@>l(V2jEMDgZU zb$@gg-~-V)fD>b<08Wn018j;d09+hf1h^!&1aN6=8ERezh_x9z4e+$s>A>J98S&F& zX8>-FwE=F4tpeN{TLah?TL(B4YX`hAwgK>x*e1Yt#I^wbQ|wKs;a#x~#4ie*1Bm&JWdMH{+Y10@fyO2dqnc4e;p1Hvo@Gd<(EK@om7#iSGbTOMDM-dg4yN=EU8ACnfFy zY)RY)cuL{{z=es202d`50X#MF7~pA%CjeI@ehAo>cnWZB;>UpN5_|KZxHIt|fM+NE6YwpGUjyz+ya?En_$^>M@jJlt6Mq2QoA?vpK;jj^3le_; z+?V((;QqvGfNxDWAy-|T2mu~UL;w#ZVu0^VBmgf>R06&yQ3ZH;q6YBFL>=G<5)GkR zoO_4hgYR(oW0sekh?=J2ZVVprd^Z9Q_qb33@PtqVe(ROtD!?nkm4NRHCjgg+iT_}@ z2JotI9pFd84S?5#`9-vU2_FM^ZJ1v+`$YJ7!0W>NBHE|JQvk0IPsP6CLDX=n`bne) z@X1Ie;Ey5+z^5ZsfbWSg_nAl?;LjrsfWM4P1pN2NF@VoU_${+vMfg3x7b5)5*>56K z0AGqs#Xh7d8iDust{CC_VwHeb#u9)ZjPXv(Rk0etkHqQ#uZcAP{!45k;I*-106!7q z*Tt@j9S`{F7{5GreQXNgXJbgYiFvj zsdyc~k5qwAs((#QsGEcDBONF3XyCuDCISC-byVFc*u$J$7r|GMRs!Ckb^w2e>IBUl zYA5Kwjdyj<0DMo~binu3%>=x+E&=!}(0@l&)JJe%r?x%>SY3ZMV14~8z@zG~20Xg{ zB*01aa{!O4KLy`6O4hgIPD>MLzNe-k_j~FD4qRuc zGcb3nt;oGwZ3E@qsuQ_)s~yPwfqDxtKTzkP{vW7wK=}i;8@WGFUC6yh^#X&tK*+sE zoe#=;R2I4Ss2pLb8BpsoVV1L}jIc|cu*+y~UZAooG_ z31A*n*CF>o^=VK(sIEuugX*)$eMo&7n1|F&$bCqC0hAA^o00pF`U-L%R$m3?VfA(7 zKCHe8%7@h*$bDG-8*(2}-$(8v>MrCyqJDtfN7TK@#V@Ck`>1*txsR$x>+g;|svbw~ zqv}cIKB|6%+{e^Uko%Z=24x>pKS%Ck>X*oUO#M4@A6LHt=5h4`avxW}0_EfCCFDM? z{tLNJs6PVpgnAjdPpChG@(J}Sa-UFtL++C*+Q4r}g&VF0bQ@*?#vA4URy3S~??_bx z^FvjO+#jlXQ2tOIh1?&iqmla~bsTbkq#BX?Bh`f5AE_jA@#QJxKBZ1X?o+B6xlgH+ zk^7XIjohbH3vw%P?lTGJE^~15(2jeY+o8w0p{*`Z7vgN@z3M8QWPA~)2j7I0-miX& z`<5@NKVh#Pb*i1CohE0dbBeRrS?;WLHaq7yT~5I{=)A|d()oyUt@CN;M(4}UZO%8H z?>awl9&{deo_2ojJn#I*`MvXJ2U}}*f?Mw%>n7c1ccI(ru68%N9qw+o-@VWsao_1) z;a=rl>t65Pf}=LzAzc z{LRUCPj;KCnLSEXVd$dKHl`%rn{Pc()3zW^OSj0?w<08DSw+1Pu3=n zNuHcsnB0@hC-)~ul9wjmpZr$x&ScZnSyR6|_3^3COnrW8+qBKoc1-JR;lz#;&zYH>S(^FQne&^^XkORc(R|KH zpE~LLC(S-^Lv#y_Y&#a%!dS%wc+0$lUIQ#n9U!DD{+2_wG%(-OFWpnPF z^U$29=KOKa-{wSHdRuZW?{4`_%NJX2ZMnN;&fL@HuAlqh+$ZNgGq--;ar4&AyJX&@ z^DdwN=lL@hXs~A z(z;~rlI=^*Us70d*^(QU+_mKKCC4tEy7Z)_^Oi1Ox@+n6OP^i(r=@Dy!euuuyLs8S zm)*B4acbSErBgqA>dU9CXkFjBwRLCf?$-X+n_3@h{c-EFt$%8Lt@Q)TKf3%^%cq@j z&KZ9^2Bzkn2W`3-I&%qD*s0Ke zE1>1hfi8oWf_^=M_8-L)1&_fecpU9Nf%cw+jr<|%{}Eby3Ra4LNp-vM>jV>?Xu@U_ zo~(|UKyKsPzqq%haB{5E_+GE1TTB|?*`2_7Xi+B$ey+jeo4JynZ_@KkdZ9@#H0i}A zjc?ux{Zf-&YSO2g{(J{m#rqmmlq}7X~G?*o*ky1ohH50q|Y&Q=b7*=CfsepE)({cu-AlrCd5}CrM;{P za|k(Ze0NpGF@W}vgpBF1Wa#kKNGW%~gcq9dttP~mB_)5@gkLt{%_jVc32!qYWK`%O zqY^?!CA`Cg|7OPhZ>C@07kn79$$o|*o4UUb8v2J#_^1gVH{p{e{E-QtHsMc9_>2jE zrUvTBho7k*$@qV6@V_+Svqt{@-K3v4;R`1GjR{{e;eVO%WfT6{gs+O*q?xEhe1n=yg5U(epLmr01LTLX%!-(u+-cu}LpA z>7^!ps!5+}(#xHvMUO0Zek${}!lYLqO}(+g`MKa%8vIIwUkQ8&`751gC4aT)?^+YC zH{qEk+-SnhCfsVmZ6@5|{9fwWiIDu=>HJC3=a}?4NV7lZIDZ!Wc?N%;!Jh{_`*R-N z4uk+F^terizukszw@G)IbeAdDW$--)-(&DSroJAN-)r)FO@6P*??rof&;UGt}} zc+NLr)`U3|7ED+&;XV@{FyVzJe5(onj|qoOc+iAzGvPZ-_)ZhP%gpb)Fu&y2yNtZO z+u+}A=KVb;{T`FP0_Dl~D@^)*CjCB>zS7WNY0@7w?OkQUj~M!onEY!D{$EUZtqDIN zVHo#3v^;;>;IB8~XH9sc3BO>%n@sp+6W(mXub8mI9l(2U6z(nPaKwafH{lme_?!t} zF=16m)7P1BiV63cFdx$WyugGn8vJif_=>^*#e{z~;n`tbZ_0#e6JBD%Ga@>_&4ld{ z-OdIRZZhEwCjUz&yv2kMnDBd1UG7d3J`vUR&WP!7nF&ufVY>;BjqCjBab13f31^yc z(Bxla!b?o}UK9Q}uJzncP53ht{=$S)6T05Egl=b*3D=o0W5T^A>^I>BrrZUUy4;`% z_nYu?6Shsz`P)r+wh1#P{HO`PGeP&`PbU2rlm4p-hpMzbAF9&&{_Xgl1LbI>TGxMB zwJ!h9CcNB)KQ{TlFyV71e8q%ctkLEFV#3!<=+tWbu_ipJR`YRIt=99iYIS?0tdpI5a_y~?zkx6mx?*Yq z*VFOyr*(vGXuKHlixJ*~>(=lUQ@@St>G-+L=SFU5yf1Ra)CX`yqE}440oT*<8yYKP z*~vG=u9*5cTyH`;l=$fa+)i5=#!GNbsk&n7R9qjbx}mYH8g;|JJ`2}Q+#x*|VZU1J45(9`f?DpBkRAm7tq8Be zv#lRiY53yPu)Ce6p2zhcxPFD}KXJW)>({t`gX=|HFX8$vuHWPO1Flza{TbI^aJ`D_ zuekn(%XOyV?lhj~z!kw2$CbcUfvXbN1YA|P>TuQLYQS|AuH$eWkE;>aWL!HRqeS_x{ym{*Bt0h z50oCL2j{Jb5R^#0YE;y}I_#BR=a40iXmm(u+{<>q{;jnqD7_257@)14}%nU&4v z_Xn$J&+SWPGd)`inS3Er8hX=UdN92{mFq$8yz!#ks(k-Isvw>A(CxWyVoMnerM$(C zfpoe@t;r4crwho>=T>J5noAamA}dqH^zM18y`wL`pB1Zip8-2k*+FKG!k8l4Qki0U zZN9KA-Jjo=#*lP}3#xr}M&=?_7}`Bw`3WgEUv13vmN0hREwqRRq@kkUjM|VM3MSh- z@&%Oft3th_QKoj3l-jnYG6kPq>=Va6s@+YgfdN)KCTqUhTF9R-1;*z3mH9oktg_Uj zatzDL+Z#oLF^y?-6iHwvOpRmPGZ`J}3kK7c`s5*INg55GWnKR62fc5 zG>1n`MQ0(ME}Mt;_FPXION~W0Vo^yIrBwG`MnsSi*_g@gP4}4W&H0|R+L|wBD3f}Q z(ghEpD8yEjwxx1=(n_<<@3Ln0e6?vXTgq@%VaaUCaa^kl`GFu7sP(C0ADa$zpfj~+ zT_Ha>pjP#zjF6xMOsu(J5bLl6g~EjfWXH;(5;RCKHHM~)go!Z}SX>3Ocv&Y?V`#RQ z6Y1m_DyTuPH;9kP-yS4jVhqK`d~T0d1ruW^wwIAeY7EWVY(C}pL{ejDR_6yHZC+bC zIhHEjo#{_yeKMUMLw8m|7HeCfkQ&0YN@!$T;#T%@xpaYXnfNkEr95YHd$e2^P{*o8 zkguM6KLn|Sd8go6u~cWJQ+tW9)fy?+YXW84x26k4u^}Z7$F;FCwFkLY>E~hHfmW+?XdunHb!ufcFRKn(RTMTVeTS-uD zg*`>q2h6JcAmoGf804yK8baUWp_D<$DhyyfYl|g=_1R-qE2{O^s441avBhFrPfw6s zaN2$ZDj~K#S4>momzOuBZ6zPg<=v5{)>)fQl?DrGwQ{g~Z@Q#9(=hNoZKYBn(=}L1 ztI-055}R27F2$%tj~t>(VrR$ZVV2Sbs@8GJSt&jzUC6U%tDx$}A@h{8&#y65^VN3n zz$o$8rCT?cDuAuNkYNDjIIZ*z&YBEEUzX>$V-4DrGyK-QVFpmvxR`oJFDrvK ztInjX74iBKa4!r_ufekA9`poYTZ2hEO{37`%z>^~6iiv=+tS^u@;PW3L{JOi0)Y#$ z2DG)nppAeX9agE`;{=L=jQP~#VQ z8fJYuH2^Zbazr_5RYk{-T9L|2FQmYjQD9Z3&^?$<73?JR7rXO?Y^F;y!6hH=0v04TI@jyWkzc zdn;v9+3Zkzt~Zm*K%>E@fxcE7^Lrq3ki}H4q`<8G&;~`d5+0b2txK1D)u6hm^hNKE zH$!%8U?*lPSkBB+XZir97CJSzXXRif+XHvTOc1Qjz6{e8D77bD+QkV7Y_W=hg!pFm z={;9brFwdH`2u3Bi7Lp3Vw{Xo%tZXS5=%k;vo%1kW-#v`qXF*|&K+$#fWs16C zq;(lDsSAuswv{}@_JJNKY%dA<^5VKEr>HZp*9n%KJ)KbdQ=Z5mY6ZT3uvl7)O{g8p zCX z?M)BC1uEZ?ZG>A21He4JAU0)kVnj=6#@MG#sRI^+7&&5%E6m)`R`|H-?sTyT{fZcL;@nCM8QmN`>9O$VG)DdQou3y3I%Y6u%E|=L(+~K6osMV>)SfkuWeh^ zxn-NmjML*WDBWK)J0?eY7}F$Wzn#Z1-Yn@9R{*3dzrX06LYjHEhmysWIP-vKKu>TC zrC%sOWp#m8|J!pJY*j=-%R(Qu&Gob*j2pMTUK%lK6pFrPcn{7Fp)u`&i};v9-_Sad zEdkH2b;I%&Dxt$jByxR;0FN&&+9G^`UBaA;T2W?5H+l~6IU724r)zhi}ac^JvheG3$EK*tzK|a_2e?b9n}M; ziOk?hv4YX#WE8Z)?adq@8;fl?skXj>#jQ;D<_qZ#Fg0rowkprkbEDW%?=%T*VPBHo z0?uY}jD^BdKeVmjP4k>(>!JAb-w&nRpD7gb1(xYBY%0QQu``A9{XOYzgE`-y(S7iw zwOg#Wa6`9yVVXL0yd8kqqqWFcE|s~i3eL~iecHHd5k;~rx${;vb}hIaaW))bl%2vFLfquTo%zaP!_6?+0&PGIvu!4ftdRUXTCR#1TjXvy!+v?}whKo-JR~iG-N352ls5-qauo8>seB*`` z%zv-g$}GJ|%WKu0f_~~z>(V&f)d#2OCeDk5VJV*atMmcbCus0=wvwWk*mWxRW@wzQawz)=&X0S+NcVh@Xi>QCWd9>SH{2z5gRaj;jL2gT^Q;~3$H`pJAQrv=qy5^q;AX^u(pk8(kD>RcirUraBC+OM zLE@}Pr#1B3#VQjOSrkDI%tt=kQ@~9lsy)#zT3=y$2Zn@Qr9XL>^oFeR2#=6@kMcKBED3(+BG!VX9~`P*4V` zH@Mt5YxSy6yo~aP#niC^&OC;+T`=bo7}@}q9Tq!}GVDQ+xoO5z0L-|y%{@5EE%MM@ zJX9YIttAI-#lZQJtq03%mv34uRxhn_G6JOL5Pd=^w^V~@J#dYd z0km<-{IucjBK_L8fIjQ)!{#IhLydEPD7kF5Hzju;plz}I zOMM9Y`k-ql!n|Lu1E}UcLkKm=R5v}HzJ2pEs@R8H1be|vF~~(69-@r`X2RT_U6se3 z66-l|`Ix)6MYVdczkdj_-^*hdb1xU0$iZ|Vt?zt*ZC%{kc1T;D(s{@_v?`FY_gT+{ zio`bQb{UG@#Wqnv=@ojhuCZTB!RT>Y%BN;j#+L!`3j64EkB^aUX7DkQ!Q30u*g`fm zo-OvC79)pE+7GhsZa3tyl&0TF_Xu93ewYgiJa8;G_LL3&n;i(0J?*RrLAuAJir62M zU-WE^X3_gvlaP(C(pz+#9_wRTl^@u(#+=47-k!4^S3Bpao%7Ys1#0I)mD6|C?eMmY zMi@`e=F9P0s(|x0-o@;O?bPd?-c|vQ8bdlw)^p++uW_Py%-c2Cg>h^jAli!quPq^s zwTbG33$d)`9;kSsSl@WcPVB0Q^8S@MxrYVbsBHt0tGsi3kw?f~9!~?>d(l{2IXv;! zA)<~I0$GwRI#2K+e|U@uYdhD2n{x{OGz_tk#Q_QyD3=XfYIyLx8DR`6jsZ%U{&b57dw!q;$5n8bifYSX$-g0qB~DjF z><5>X>ZR_{8G!&)MlhK;Y0d)P!tVI1->I=p&qp5{~e7m#~=DfOLrV z)1Lp(Txuj^7TX2qk|wpV68oke%+r94mT*+WMcJ2OKnY|yhI#n?1^TJ-aGpNpCJZQN zNRc;F^K}7#>bP&PMwwHihsxTOm1a*eWfLea8+)c}k`+@xZ!_~$X1)@y3r9O(UP>kl zadGs4fii?MJx>jQY@W)^S4G@ukQt*%!kVP5(S`z3*)Eb!l-LF4=p~>}LDOF%Iwq)VI=G)}G|kO6h6!XR1(n2%v&DzS~iZ~V0N)6MJkg_#FWuz^K{t`7N! zpDXU&HxSqXbBz0CylA6KW{j=qSZ_X$-oT zliFi5aq!if*@I`V*z9=O=zDHxYzA~-&tP{zk=fR`;gRE>v1K~pb)@@Kg}r05R$+4R z#Ms!39elQLyq@9Vj?_>`X3sdChH}E)_&{Z=Hg-^xWHWd!!*9Z<>D8Iko*aCjOgB89 zbl2dXJ)8-jOyeMEcnBR@WR!Aey=V)!v5j`u2w~?obn$@1ihgy*Dv%6WT^T;(>gS>w zJXw;tu)GTpSU4NG5-i7-Ua?^Qqdu(|DlEwIo?W}<+Rphp)_c;YCGb26_v7oz&IekT z&)>DH+w4Ba*$;Y0(f(GGm2gXL_j;|%=k3}B)dl-^!meFCdD*dMhgRa&8@NW4w_sbB zXLs%5gEJUvCp_9zPkWDQUA}PFt`eUFXkETw*Dl|hwo;KSU$kr2Jmf6dwTs$p{*jCn z5ACp%wu5>e(}ndJX#9ZGnBnS#V%b)*&JrgWLe4X}q@eh<6<8xRh`ai=P{ab;oH;ny1u;bsEV-+F~C22sz~A_Ec7~-8`gA zBK3HF0>@0;wQT7kH8ytM|P6<@IJU<+=xAn#A&Y4YvYL({_+;=3B=Bp^A2LCrGRq@&2El;*R4`i+3*PQ2!J_O9ozn*Bh@9Nb!q2pV^KuH zN2^t@^H`T&e98Y>TULvVU02I|*~C)yWfRMlcNxg$Zq+Jh(Tqd9OZieNYx$lwGY<83 zzD$W;r##1&B#g621eKE}fUKYuj{pxrXH$Cuju0F;dDxn#4%o2cjEzrp@P`xF8HjsS zNMk-Bu-J>YVw*PhF;vJ`iLcymOr^F0{DML_>O6gh+chNHk`|qU{MG(Mx@_ zcT7lpO0CR8b6`ES%GOQTpj!L!oD6OrF$GrOJex7_qKn}||54=aJY(>cju-2c1)GI{3L`Z}`C?4L42Z4CSR}v8ZQlU#9#Tob3-Al)6y9i*!Pkd~!J#s?%mcvTXbBfF zDVz#G_k$vdw;-hfb10R?KQ+VFM0^JLJ;+TdY_gH=!F!65c+0vI!c}Q05nnP>>d-X~ zNJ~Y~{N9zQ;D579c3?|c2bKdfhyhSMaQ_la(L&RLF4_(? z2fFnBe?*sx;05IyM@8rc<$#^Q`LS?g0l1MAKITQr$q+5|7vb$;7voLdN$~1J|A>yU zGi;9CA%_kiexw{@w>gQI|KmFLcX4a@vVTN}_G9|EIH+#y0^nlfqTuvWto1~;3J1;9 z4S(Pt-I?)(dvs^0xwK|7-8!ZjL(v*lYb#DZCUe&7N$Tl%Z(TqW&(y**c8*5T?eZ6z z&Y6o^y3jhAcKG&M&_fC&sisQHmu$(>J)aLV*;~o^NQ*NL3 zpileIBZ{up&3>PVQ z!>RM9dy!z&@ZEMay~xHL6ObgwNVev>Znm5!{$NJuw!lc+8e6=klaM+qYwWgP-gZt? z(5E=uVCY+v4~A-44S&oIWpr2UBH|?GA)2_Eg6VA$$CS#IL-xC6mC@m9`TINgwN7|s zc{GLx)n$#)I~d!HU1{{uD1ZA!`fSH3nf@Hup#=v(zK*Rm=nDNk+`YR~7KPumZG=jN z(?~8-eDL6cxY_i?^iaBiqZ(mnXp?Kc`skm~Ol%D1ebWTjL8J&CvTKmoGl zk3_z$JsM5>cMPE4_J8awC$Z}E-o@V|_$~|?Zzaa+{3LL8D*eeVicMhOa9a?QM_o5w zYe%wd$`?#Cc&LXxzEQp9i{R+71*RwM>Lm@*jSzOS>=VrM?My!2*(I~RHpLy+l>GS_%I zTXub%U&~cn4|g^GewSnPJny(8;~0to-XL!t-rU&*@~$*xFP%>j{of7zSo!gS>B5Bd3E?LR(T)HE_urM zH7D_g;w0Pw)qdohZ-(DZMN40wvTu27e3x?%Uz1&1c&-99aOY5h40Z;r@Eg=U{Qezi zl7|kQFd8l%e&~knq*8D=sam-7;X)Ff%%DUs@@OaYa<;>uz*ym=nqnEcp^Q;9#+ztg z;i-8vv=pv>P-^GK9yf8XHwPE)6M%*rcDl{ZhJIn(*b?k}5&wd{u&UM`c`=U$Ubm`d zb)bwE)5EpT0~7MfS@Nc`UUHo5562SZ8DBHbWxgNz;?4&g_W$NV+oBGPJ_S|710KCN z?TnB|Y*o(oFWg{lV!N}ZtATTOk8Hxpw{%DfDKj-{NLZ5Y!YaGZx~dOoef#dBiF zqaTX87Oav{aFp{9vj>A?Yh?XeI-HZpTip^jUAA64o@U|6PgqtXIZe}a=@*DqCZ71W6_a~!Y zw0x}laK3Z`N1#|o!9Z3o7MC+$$uUz$9eBsPn1 zygD@>)am1urM%$jbp#YDe>es4Qt5ntu{8XxPEy1+Qmdf{w)skj>HAQdd+Yqi1V?kA`RWEyO z*TYQ2C|ffjz0T==Ip2Fe;?j$nvFJG~S{`v9?RDDqJjZpTOKn4W?c2R^d5**QN$b{P zR=!q`yZAwzY7_!&;d$Zhdd! zj*K$J!=#OXzH6mx9k0DvuT!HMzLWxJ7bq2^PWK_EH@<#{S$PQ}r8g?$cZ2GW$3UDk zx|MX%X>&QWu|v|#GLxOL>Vl5Go^)%$sMM`Z(H=`5#E=U=sP6s2TRX%0$t?O+npO^u zPO;;)J@U7j{xW2q*$5reDLm3Xj6SBMbyhX2f%lzfbqW{Qk>BW3dD3&Fc&ZqD(zhwC zPh>q8?Y+|5(Oxq>ZmJ(WS6miU>pHDf3jHuHS5oC6F6W#2)%1;ML;J+O^3lqSJ`~Sy zRQgS#p0$eB{@y>JC-_vhig0#R2nIHh#5~drsEKw)g3Cz7S|IMYEjndvZkYs~^m_T4 z(rl4ubYQIH1kF_o6l-wi>=IL}%6&90;k_uKx1iGZY+~HeK`KI$OUQ#eux7eSgSfR@|Y`ONTp$!lH zxUo;gZ@uum9mg(w=F;fI`Z}jUAy}b<^$4ma)~|Oa)*b9~8}LaAr0U928~s##VtuC& z0iceJPJ@F0bud8141iRi+bML2c(qRT>j4?sCv^!y&BXcxuGhZQ477?(tREgW;oCrF z(oQY#?+ns2;|fD~r3tS=i0WsUr|D+f4X%6W)Qa za$@~53}yI1gG1jGhA{jzDlwyo>$FYzWnKntgylnkZ334$VTltib0QKaT;@b2PPoj8 zNt|$*6PGyQGAAK%!evf{#0i%Kd`u_@^2aq9POADhC6XbxK2sa7?}z5A8+o(>m11&ULcWRq-j7n4H1?qK zq9d<*(Su<`(IXdE9M#t?jU`=YG9(_ABQRxe1XX3yaly?yz!kST>3Z>6=~siQO`;p@ zr6s~~A-YGwVc!_CV+`3VP8_?$H2cG}bfy`dX+~#IdMSlt#^W^# z3zoua1`>+a4<4gJU>~NCNE1+yP_e~_!Mk{P3bbLZR6x^UYA~fWB7irgiHF8Qqp~nu zEpi`A>MmQahN16rG>|@9z7d=6f!?#JVE9W|3x>hwJ zwSu>-XaFmOvKkOnr72rGXU%J# z`EkrhkOHf~+)$JYgtoQ3dYQ_5flesq zFjkkO!4`km1c|uKGkhW!T$%F$C_*8{{MiYwr-d(X#&C({z$NOo^@xJ2Mjv94*GL8a zDn}+dtJNjl9k^Qj*lUL{owT~ZlsmO zCYx(pq?Ne1Cz%}6@yRfV=)xIV6HwmF1hJ5blFm$wRCQSKeLf(*FQbqV-(a7#_y#au z2dG8RAVpSMp-p1To-_su$;8p~)Y8b9kw!KPNn@a;k$Hv>9C<(*Nn=LH91>9)*~}y` z+v}KMOv?B1MDXOZ3Vkay_ylze18q(|*n%%HF zK+$wCL&$bhI%E?oksizyw;I^_Kt?dFl7)a7;izngWajCoNQpi~^hC?{7!&R32PrEl z>Ic13PP$O}@%Z>E9VAUgHf4W3u}%Ulky755NXgL>DLIu?0NB;CV>Pu-*qPh}siUHA zQn6b2K1kC?z!0?dkFr2KPBu|xgrbuZZZrW$ofkNX5)m*JCkBjS%F*$#YZT)M&rZY} zkeFQ?l7MS>v33-OK_og53qr@qR`TLn} z8`aE`Y%YJvhq(j;T{B7SUp2(gsjjX;+qRPG`r(nIlTn*=k(B)&wBAJVFr_MD;~Edn zyVaCbmYk>}*of%nY!&f%72Icw#Y9q$uSe@fCUn%Zb>i)A@+{-gno-sg+VL4dW?2Yw zJ)8?uDVT`=b*<704X$a0QOvb4{9Xjw3msup8$Xn10)wI{WOuzhuaMYm(3s51X1_j4 z-J{_e+T=5==uyv0Kd7xK#f?xWaF`HyhFYI6Fpnc4Yk0)Kh@3e{Bn%9;gc#y_#5Cm0 zHBQ3jyMFlXjrGHqHc}ZNj+t;8>qnjkgCu9L~fpq6Q;G&Po@8;7ha7pFHX^w?OIo&bjG z)l?0)MyrJig|SjU)DOn#d|4fKun{;hjylFXi3yuHyE;>1lF684p5SFlOfng(Ag5PQPN}=vJX>MlmF2!q@_Fhfl^R_ksEd97_WQf^oekgyZZ? z#JrmIhlJh1PlPt{69Mcvw6*AtXn1yqlNo;K`3U`A((1!Y(}+n}ESjgTLkS*WR_g-x zeDhe{FPlVFHi}{)E;L=NAq4fymi&Xz$-1bID9aT&q~j*SClNC5pMfzG#V8qi@G3++ zGwP>kMkQ5EqPXSSVXP@Atu;N!Sw?3VXhkj6h&4sbkAvB?sJ_SY!ciEv=7RPW$*)Jz=F*0xH9Z(Aif*0u^dU|Wqj)zr2jYfc5L&FR5k zqA4R3jB4vBSkF323UiA8+BzPjp)rMw&8a&S2Tt_7#Aw#R9IeX*!-=RHzI*subpkBi zuu@klrJ{7UklxnOHcw%L>fqmRSML1Xe|>#q*R4-C?0@c)>wDfm9RF@>YW>?^dg|Hh zufE}-cmL{-^&k7(BZbN}b&VH&^xldq-d%O(^3Gd6x9~%1+g1M&zyJ65b)0fp$G<-I z?A*F{z4p1`5B}~0o7eu}>KpF;^uhYOOOH8UKK1gSKlYhB9{O8;!}4kUTc7)v#%J%U zPF6%t_{FtoFS0py*?W6$LO6!_t&kMGRxpnbol{yiJixLwoQ> zUG(4`WLaelvX7Z&CUvI9(p4Y+8SVxgqBWC>C5AmqeFPRTTmdwww;~{w*ic7>`HmLF z+dsim?po>B(^ga9924tE>tOC3uk|ycko?BR#!3{h6#iXKiaS!qe_~44!x+|r+vH3I zV_1$DuY$4?6%*^vleLZ`wF;kRLd@6fJRjvb!i`XLkbmel^q}oy zv_dky${Sq2pDYC{Ye_4?G~I&+IV=I&UEVqH^1;lbj5Y!(57`lr3Rr?4@3O%O<7kh!-VRNY-jS&`&N6z8%x?_j>o~B(Hwu;`4IGJsB?E#-5Z@C-?*=J|Px{_#%%Y8i93dY((oLZv$Z*vbU4rmRP-X zlv0oWTH)7asG5nZ|DwjG7`-; zj-)v-5*?pt{!(osI}VnF7Bh4R2i;bH zrt{Xb$tusWoz}N=--+tc%)vcux!dBK8D&;x*0%XTOE^WhHD~~vD5J7D!}%cF*_cVBi;le6b8ZRiJ}7FNX%1V z-EWB*^?@@0DXPOOK+^zj1S^H&QsEez_B!b^0!rNyPl`q3uAk$_z#`~kb8s6oAy~yn z0OT;2J)jGcp!O5Y@>r!kye6Og;xZ0zw5FS8C73+0jjO{RDla$;r%c&#gE|>0*~&R& zC>S|TF$k{mVH!Aaz@lossKG>J+c^QfF$gW*+@6pRblaL^5Oi8B)N+s+1`okAWlS(N z281TmCC5;NVoqGTpzF~cKh~GH^7>qn1tG;y4$Vf>5EdFzZCQzs!?6g|8w_Afg&o?# zsKOD(fi39elifu4SsBk<*Va-;tbj-ykJx=;%&7VE-N^rXjh&I%}R1z`&v$CzA{ z!C2V~l%zj2ax7P!cQ4=snPIjJGW5mI3G{?3%-m(L3r*IWY|}W8WWrp8dh}jQ=9s$Z zY0*5QPIVN>Lkk6|t(cD6J(|eJ^QaG2m(~C^yr5f=P-`J#$UF(H`jNzF^+TjyQH*IW zF{VY1F;k7FkJz@=M~qLQ4jyLAa7ChW|3aj+N%Z1)`I0@G8*J(55d>PDjjD_43}s(J z4`3d|?wP9eAedqD$7?K*ZKzD?>0CkfE`*^9FoZG@KQ0EoXf{ilOeZN4kgKYys%bGg z6=U0|s?zj;TA_~`lvd1au0hR>!Py#zMSf%6EO837#^ucpJ)Mkc2I=qxq(yjm`iW|r zRAY=fz;6Nhx^AlICYhj7lj@61nV^tL>n-*ij><%zHg4J&M`5=wN}j@h z8MRZMMMvFka1af7l=?6JiL~a!eoFH$WPcxW(``U68`k zYUDPVeHlf7y@A;ZHXfXT(Ild@MXt<#>=KM?{SfZc zM==!Mmr@blwa0%ExGYE_7?BJWH~i4T3a_}uw4}te znUN@ZLNU|cuVBbEa!L|nE=HHZss)X=$t#WoRmcLZIv+Wwfcpi0K1H zoM1l#BNK-oRng<8e;fg;L{*Kv6@!~hi(;H8y;SN1uW66=S5OcQpVJhgsX)`COTvMp zA7jRB0=*ba0*hE~-dS0bgwdN4=YUG+;4~@*GjxfVf&rdV-|N~8C59w6SGL~=^@bTM z!#^y=fjqa(hKNnQo6HBvJ9UUOghn}4Rma3=7CEKhp$R1}yJFy~V;+`F!~NsR$^`BM zD?Invj=P8zkU+$+*b?ywA88foy$1EO-K!9a#LHbnkw>E3Xd`kDtw%Jjk9_RHAc_UA zH{p#sJhTy^UOJ4C;%0>FV|*M&-@=1xlSp~sWtXE(%9e>Y#S$1M&sycIi5$?fNvL(P zX{NlM(|9mIjarUIUHp%~K!vtaU9~aWy6+9*+UvOOG1Zq#oof;0O>Dr#*-_X?ImMBu zj*8(SAB>%Hj&AD_!C{fjnjEF^X>KfXeG0(D3NNue2Dz5`(gO?>3YM{DVWxGBmT!Kw zLGlymfk~~zl4ZfkrKD0Ag+wG9xpI)fTj3|i(07#OtaxS36w$vzVVW>b4{8|xC8}pl zw;|+#i)o5l%1>A^Hu5;~br6dq7VMU`{(`Yi0_kmqY~;J95w8`PVv}DU&=yKfc-lew zA%cmnSBtFZ6q2m;4pb^mpu`$=zlcO07n0V>j2U7R$VRLhdZ3znLhQ*J8yg&)KzCG! z@X@t+M{0iwpCRp&)7p_3?h28jA{OP*Hm9H#QHH3F&^VR<}-*61XB7-R)QNC*tWM6NZHrzgt6B!^qjbG2rbkNVb7t=HFr4@`u_;~= zJ7O?rG!7Wv4nAB)rE=>>-mL#msC7b3s#bOl;)Cnw@b!ehgeK8UAfT77pU~G7ztGA$I_kAccu%U+ zt!m5S+hUvWS*8p=gv=+F-TJ`@emzn@7{>2a25}R!eh>-rp%Fu9j#W##ez1N}-?v64 z{>OFT$9NNVYRz8*pHDov z+D}HHP4y@y;qD2h7B}t5ulh{2IA!MSocEUWvAp)E9dkbH!0h80Ipo?q@^Rilwf_`YZ$8Cz}UTH?nC}kTQD&iD{Pu20ze2q_7O*akvGn4@s>jWYj!h z)J_ULgt~**p@%c*kd*Hv1TX8zP-Ff3XTZ8xdG^V%3a&IWd=q#cQ5hT9?zMUfFbI<{ zI|#|(IIjVL>>$kerA9*=V5#gNq>yQnWgkRYHu5OKQ(`sf7uz?F8jOxGlm84JtP7+x z>qhQHMRhUnDFzn7e>U|ba_HjfGFB;q=hS?_ZzirMa;;Fl;8lCd*Tqt zF=Aj00J`7DCbY=Y|MXoGIg=4-633f09uKR;>TRhYITy-!c-jZk8d@r6FX|$DsSq&- zhjt^>hJ`U4F2U{a`s;TLj|{!%9CEriuzJ2%wznJ^y27H^r4aH2lwMjhU4!fOyh zU3kBS3+xy$(Tid=)zvg*QVs#Dp@YLNa4k0RB-wNWX~recciX`mXhlPeo9{klll*w} zmwJ%$Tn7i+;|-QEir`Bod;y`}H43o^$@9R0BoI(6n6zPeE(J?+c|G+`KqlQ zV}{rS{w~UNORF&w`V!&FCP@fvzpz6%p59!rXMsFf{p0~i4)q~CIaVVZ8dJiOf_Gyu zT2Zi&?h6ORYLth06|vQ^rZGij(^B5ez;0%o3|1RPWf9)!g-wRDCTS#en_wON4HqATEu;p(`Y=VTQAP)WP!lE~hnz56tAEJN7GgNV>7~RxPDj4kS`u=dcCME{=k&NF(S>7U_yuOm8BMdo4&!J^|USj#{#6(Wyy% zb}gOjOYKSL5beje$okT`VrE|&sjT^|YjRaKg%7(Hllb^^a@EFme5S`y$xeJBGl~DH zqt2^$SyY!ZO9@x6_ zbAS8UM>b#f%nw=OoKw&1UUXiu(0$&jMf{IX?w*IQr*c>wxxK)&4D@t?ZpBtSGH3qY z!g$iA%EPSzI-P@$hZR<5vzt=*RB?Y1pXp7fTYB&XUjDr{LnT*8?EiuPFLJ<9{Qce} zrH0FUCjyEW%Z$a7ZauD@yThuJzXddZouP$@?NA+R7vLJa(X#`u9@~QVh3-PQS*=B! zf8Pkd_&4r@bqjvTpDXZ>QmB`OBn7MnbWkhb$#eJ^~K5C2Y(Qk}@<3z>@Y zLL~c^7$HzMg>OcsIE}+QV)!mizFTl?O;-rbT#Q@)TZp&GfCuV4yc*0guTirv0mh4T z@jhw$@?iZkEWX@^?cn8xZ*pM_&B9N-ag*wl93?9^b~u zKJuNe`XxK0TcsAs+iLhSF8yL+zNARM&o$}2;*D+beV^oleg(A78~Y+YzWI_p;tP=Y zjz{}iq*ZwLA`~LV9S`(t2dMm){;)s(C|ZO^b8$n;ky+u3=L+ZnU+=aVkQ~$fZ;_W} zY0WSU4mk3jN4~H+D?48;`zU+8 zmYq)4E&H&g%0ADOJ*Z#XaieDv(1j*^C<)I*U`xK29?SQE(-DeOI$0N|>8F9y3<34h zW92@|-k@ctlXc5J@@bTPR8lr%P~~9N@IDGZntA@r?n&1zedE(8{TL}-WuaUC>V1@d ztSLX8u3P@Io<{j-@cH^@?dW)X8xwY>8lAx087G3`&D(A@I!V4xbTYpY^gzCTi%DOx zT@xOs)A;jD{Gja^c#FbaEvFB>xLm97JGU@mpd{X(q?-gkO>{y_Q z0>yge`HhAnYN!wn`4J-XdE3)+ebq?+usiQJJYO}E(-?9@eN`qsLm$9X9TiwB8mgmK ztaFoc+{#qRwWCddJnQVde9~*32Iozx#R}o5Db#VttFyzl_wE%y)0F&o>5{2Kw49aJ z>W$rUjzu`MHtNG7ZfEv9RV$TbDJW!N){9O@fI;)8J!mQ%-&%fP7Y?)#dK2PEIK^-@tCV)U=-CKpxYfe$ zis=AQ>23#5sj~|(_4cjRhjw8?hI?SHSOBx&dM_g}0Qvv}`iV4Xch53LO9?T~hpy?u z-v`c3x3UDz)&4k_(HF8`^+1Q(nW%NN89#RWEc~utX1CAAch#Qt1-sIr)6R$GO6wfB z@}Aw^f^UaEa6gCcbLnOuh~Y}U&VKej!1hUFfmHBMgpgCgSue)_^YA~s(O#yY6`t^- zGmHFoRl>vLY`aarFsC!em^KTt+jJ|dRw503ovn-*lZ@5;?r{Ud0FbWyBX(^Y5>@iM zeY^HNxE}YwOwyX8j5oiT=(0a=6I6Y9>-qTHgf?nh2O%6FOkMI`b?!vggu@X2uM;3a zKW^aJ)|h24S9ntjZwHxMzexuPwxbpA(!E2n*RP2wBGqmb4EA}(kzZpdjQm=)C+37Q z!Re3*UcHVkHd6yiVSNJ5+M|x;!8JM>f#5PkIiKI%2^KGa*LFnzt~|f8X8`{?7j(l` z<>J5#HD8;Nja7F0B7B<#yLBp zO^kZ=U60nW+k{BUFrg~oxIK(f%aG8Tff4o zObtO9794lhZeN9x=9X2!u7j3YjP z8B{QKbR(cO&UEy9vH>>~9vloQIL{8e=tW56nC}`P!l%J}BoXYs{lp)O4`7EBZ0p6y zQ1%V9;cy}tR%qF3IT!drb|e?Qgaw!A33Aoh=q7lPN&x=l?qV!e+=`w=VrZ=H_W)_w!w2?Isc5$P`*SbuNqesEy@Kg90;9yn^omNY-L+m`_^ zyL~f$*ZX$6gKyo28fLSq-GZMEgAl+J+730*g-)YvUtfT{Iwti?kpeTL<20?a#%tXv z6QdjL_I5-yyw*beF&kJXQRm@T9BGNjmkE0Z0B z=Jj$(UqSll6?7tn=?8T@z(6w#{2z4S+J6_VL)R<4H$or15|DwwZ7h}JKKADzMWSDl zQAojCwQ8%;F|+x8qY!pmW(< zKd&Z5Z2Nj3zQTybYY^07cq~MkLsFihDPswGEpubeEqpu@^#{|1rX1Oo!m+N-el`Lc zu2+^Z()`A2E>ysQr7m3KMokY-F*+dA36)iG^#4&+J%Wyvz;;x1sRGL~6~%xD>d ztA^?ywc9(0;Q>zjc6{yjPW(;{Iqlao)OXr%z_;$S-^kBi6F0kw?_lCRVcj0H+i!w< z=jB^(KMMTm(31{?3S7~-lYu53GQ1hyty5ou-J*6EoVB;`=WhJeH`tETdTZkSl|7b* zdV3dGwQ~3G#eAo|z3Eh79ZG=@uUmHPh4^nR1Z%0txJJAKf(I72!G1iyy|0pDw zJ`F!;NK9h4@5ArR3`4{zWNBOkd3i??En#;14-gQ&6F;3@_z5u{(r0OEL?S;wK#1%_W)_elen zEL&I+hNUa=e)#(r%a~L}_FGVFTjI4MRDx|H7Y}v4I%vZH9jk6gMv0`jj6YX`6+>)a ztv^H%2LBzB(sMejt><<~Qm_7?-6q$;Z77**TW=8!E}9yKue;TEKN7S_p89wCrk1AQ z+pRxh5|EtfwUelkmC!Nebs6jJkP!^ugF&})wx($wZMXgy2|AjAzm?7hn7P`aJZmba z!=huTY-pVi;s*?`eF$F+`J_OMGAW|IAnHUPhP#;EfUK6QVKSi`bgO4qOCtkz?ITE_ z?Y8z&I43fVoUcWNm-*u&G3df5IPm=mKJf7qZpt+_`eoN{vjuwh6aY+`p?7Cxj~%!@ zkRL#jiA-~_7lg?=y2~4fdaA7ZV1`{_wz4kkw<$fL=Sy=aXM#-gY#|Yyid~RVtc3_8 z16dZDSzPGC5~)MH?0wT8ao7rt&me-?ecs;{WD3)t*z?p=ei`#bsath!Jbw@9DxT3@ zy%qI-%QEjQ`vF=EszznVs=G+ajhWRCdX%>psc`C_Kyr8#~wGxE-oU-Y7(zm zwSASFanXI?4n+p@=c0`YNJo0gt8w_2Y&P^ICs1h@ZYlnKV{BUA=)FhVpWlGXJaUEvrRY1gaf`< zOOQ`GLm&d!OHM*4LIlu{0VoSV zX3&rh~a+!4Z&p=;Xixh=)g2=GD)ZfJ)wy8@dDoki z0LKPmT86z@0mg->=F?I_-xOzh0I%*=FB-Np?m7pgcMCv%&h=}b1+=2Qxs;Tc%Zk>> zsmjPnvW!0`38l1LPFiP96o_JzlRBm_%W*!EvAzd-EF(QcNH8{_G*%`H^Pl0s=ync; zbiM^%OP^fui`7!rTOdf|{}v#8G@ z;HJQDRtQC}>LxkjI!^N_J2( zEy-9`m?vdfS=5rW9bGoC>Q%9w@+H?2SFJucL+%K|uk7j+SV27-CIze=-j0>gTQwZjeKaYMpjBThP-Ccb`%w=cduTR`V;}5eT4&y33U1w5QXrJ zRYH5J_NSq(8mV{uUMWuh1wi#3#^265^cl3LhxXbJm*PSEhVB@BujAN019tR?Ux-JS zy4;E7Nmpu~i@u2ZVeZj)2%W7=Eg0t({0$-6TC!e*da!@Z8=48lzC?;?{}{2Jd!v~F z1azu#{~32YrvEhD8nL~mNo}g8Ho(cX5XCi%rTcu9d+F$h&{0~o zF9UHjXMu@jP9J^HpCJgVZiIL0zTlZ|J_S|=1xrI!8ga>FKj4|EZ0Vf=Vh0D6YF680 zy3K5WyjqS%NV9P_z{X*zBCT#@_cvnq43s_!Kohb4os(%GeC*9&1mGt;E?Y8VuzQNg z+?@jEdH`|6ML?;n$xOpc{~nB++ni|8Om$1Oo>APkgwvcmsa_AgtaM{#H*kduTBd)W z0mx}wc30pQr+-amn}-b&S`i+K{dax`1-GZ5wuzlv4rX- z_8v$0XeR%60)USoVk_KGSdFZHLr;+?W}CpB6H3geF+(U}Xk})ME=J~AnK4!|xR@IT z%LvrHXBhK$agFXW_}^J}hXw){GwXgcP!|l*(pV~MR?awPXr!_+TJ}cE{`7xuY?X}dWHoRrA#3_B#vY%A%ho3GL?iBg2K!{kRAmg;mi|okMvGr zMXW}0W*+Flv2SD}-L`;riJtwELQw)n_Sc!26!^k3zmozdnJOHI6)`uXr z5){<$1Ubk>un16OX5I>S zUn2l8zi1=_t3po`lUj}VdoecTDoYw0I1tpjg8WK|3q~?X->-;YOwX#WHjv|6N^E{m~YS?7)ID|7~>Q8Myx5N+9=F4EjIK0_Eoxp z^6t-EBp(&~=Thu@$(kT|I>lZ&)>8wOeaN@6d2w8~p+n)Qd~c$BFO{Bxyi_?|1wmLM z$o>)pSwINT?0+KFuoP>4Rhf`#btJ-Tl&VCKV@ZU_ZCIGk4a5^(mqUK(N2Vd!P~;e6 z_3t-^j1}A!D|m4+ZF{?i@P$sP25mLQ=Mxt=N9Wtk}*gv*U_% z#GF%dj|%8!VIH@aa%Ci)Y~#UH52h>6Zhajfi^g=73D;vw#itO`HC=&PEUs}-E^m)m zl@V74<_(U>VV(E}qL2kO&Nsh=DRKtJri`xtVrODDf}Y5m{d*g&V{cKr67hWuEo}e2 z;#>O`@?MW!8!Hm)n-`H*2H9-bfL*H>*`l4T{W+4LWPT>$7#WCYL7a$9V&7O`5)&?X z^1FVZK3Y;vtUQ0_^Pp%8bH+S^9>yp7OZ=2wFXhRF^Fc0pgyEU+Je?rGF2{iOqxc!g z$VcYZ&B-|C+Zw~qTp0tj%48#FQU+e@F$727!B1Ghm_lHQ7jB{QTT!AoUb%a}AO~`r zZIXQx|J3$`dnz$nOBEtdMsp%USaHfl-$jWq&>RrtwLZQ*;%goJHZhg$tcaANe*hZ7 z5({r0QI9LhQlbjV4b(8Aw~n-Cu8-}CpS50kbZi^hIZ*$Ey1D0qZRUXfvY@;!hAS6x z8e3s&-$UU&n;n0U-bJaK9d!+Vxm7CAt-&?ByDv;kK8PiG;GalIv$vJDwYgo()iqnQSvJ_O$U5s${H(q8D>rGn71OcdG!j0x^9`9j$mWMKBGC<)pD@0VZev%5RxD} z`4ex%X1@_+yEZnActr-hz!kZGZIwDEHnMp#zuN|St?ExNxAg-gH|9(tk|Np&%n7uB z!%jKksrh{RLtwQbqMvIVVuK0Hly~op#d6=zKjfwVPm$zx`9{wdx8+V)O=FE9ZXf2e(lG69_^y`vFTy?9BM^51j&2DMolwkH*5-7C zR|q$%qfydtJTxk0nA~F)wwP3)UlS$f!b^i%jYsmL6`jw*SmC!cPWq}PH2<+ z#D79$%eJPFHrOlwoZ3I3I5QIAGMkv&kX`I;73hEi_m&^5%Nf>9J#!vgMXzoB9Pn;R zZ!J3NY3?^lDBGWIMJGGC)`3k_=p>>rb({|Fyx2+vD;T#Q7z&0DI@vYGkmSXdrX&eP zrVzeKxd$E*Y;|(X_WasE!`W*{%hhdPZD12v;sK2^7L*KCaYYQM?C! zwsjKlJ$MQE5`ECSVTj%TLjYF@^M2y?o4;1IXxhi=fVp>>?}aQY26pXV05@(1gYk(Q zJyFB{(8W$#oQDMHL_EU-jMViPDV5&lU#Vaf_aRu>u3%vgBKP|L4z&4viZh_)>CnKd~JxgeNcVGpU!0ULjsT3lGUQ_cJn;5A)p!ulegR z8%KD}2mNL)S#C+M4`KQzI{ANq&!pl*vChZ%kasaY5)tDg5x)gKu!8TKK1c1FKKo^x zgKp2#V3#PL-wRRLPyOyVEG#oy=^+vsV+gS?9Lk`B=mK`^zX4Sn7$xWyMB!Uc{J-rZ z{@?cz58He%eBU}WF2Bzxtjfhv9Uyy^)_)>%|Iu32sk$Z}IPV>17b2i5Ov$qrcuXwO zUb=ZI@qQQI|3k#&FwuX}#i0MDL+JN%z(pM~KI}6-idVIZ$p}eT%gmxPMo7B$ zR17z&qfydtGD7k(LTVN;EYg)LjE*=$G9HYO;=KvYcbKvCD+VkJQ_#NSRUK=NVrEw< zP3Mu&ta(R!P#vy+;gm&J159H8OZ(>9A+H$A{4}P-R<&fjnEYe2LPk0yZl%OQOjyA< zc@v0@zeUhd*Z|2i6j!8wMo$W!>gb8?0oQ!gh-wJ@v?U|R*;4U-PH1Cm>o1KFyqI`{IjuwG?-S1p>Go9>O1>Q zEu`zkmYUjApvW8!qV;JQGSk6P@ed0r>0<2e)P?NC=FT=ckJ=g@<7GJoZ&VMC}nQX4^8^nn2N*`wKSQu#@wqzPDFw z*iYG_llMgvH$g{7MtzVHnsC7MG-+~@-Od0yrWrL4-}s6rdjY*7K(>{=1O2C)VvDQ2;YTZ`y7pe+*c2R%t}WY`Z4Ckz4wZfjsnu%gwT2K> z@T#5d2*Zb|JzprKWS>yfVTQLQtwwdLQ}nY!Gp=*{O0g96)agqK%#C&eI_x(5hz`zL zD+X|X2=H{+tklx(&YucgYr{aS7T{<8On6u2Zb!<2yjO8`Szb;Z)J71$%d6^g<_^vs zcX?wKe-I@Z-*R1sZu;||2fQ#d|1ErWc`M@7`^OG*q-NQgGv^;e5BBqN2I;dI1KsIM`jBmfVddqb)-s0lbzM^H3?xxr= z;9r?%(brl-@(JJEk}{5!go5&m4oj5lfcI95?t$-i6BvV2XykSuR&rk zmIM*^EIHKsqK%n4abAYD5id6nF?XEq}-5vlH=SyIqo1(m#2|LIkY!C+ovX7U(ruxc33BII7!6qKgs)3iA6;?J$vCXy zy`JDw`$^bdIg)D}1L*F^0O;b>RxUx6TrXAJwCMCJD7`OeK|vt?U}m2M8EW+u1Xk1D zw}QgF8Xbth+Clh{%ZAujNX-0KLG{|f z2q!Gxg7uR&K#V``N0J#>%(3B0x{qUEZ(Gd(5Q}Y0-iw_bcImM zKp7{CO!f+>Jc5mGA}ZMLjy*tc2Gk_~FVgw3?Ha2BCa1^(+O8=m@1+XrO~{6$cqOS1 zTAUi&WPlcSsFH>&P|@{LZ|O}Vto`I$cLNRv0ulDRgof4}pB;vD4h9jrPaT_UH%sHs zyWV49SWblIn!YfceGO`!qrH_2xmRQBz0zO(MAK+ z17X#I(?EnPYxl4)z{OVQ<2E7g&pm_A zHh&!v6hV}?N!1aA5nMaOx87>t_a@LhV*zKLX@;yxA#H+>-bFM8il~%GeHz7}7zCII?F<%d-yO*y=Fi000r|E3-H_cbTB@Zzw=ly8lp#W?Xl=5)AjkC5e zU4t8R_?1a&B9n~JqR)eXI0$~J-ImhY8xUxF;1pxYDFrEMA7a|@aFcXg(t^{a4l`k& zJDJ3Uf!ima*ZfNOOk46aOW-uPbtKbf$ZILv00gf+ff#uA2sp$Os;FG4MjRl_#~EW` zzOUeX3OfN)*coSp{k<5KOI0e8&c2y(i5w6<5)chqz_A9|<>p2Prnz~AT|0*9ozAiH z(RTSPCcDROGfbMEjEK^Hb{Vo|05_?n!tFM*){bL-^3%1>0zb3D&*Kr8I#>N-F#JLM zhuXKM(HwZLnn~>T3HY7i7+#&a3+^%$b7B%LVRri@1Vk*Xb25IyBQ%MiZ6c-h+igb6 z{({aaa6xOaBuGzOq{IWweDl*NhX|M&i!-UL<{n#^TM|)=HWpyXur!vZ0`Ok2WONG4 z{T7xZ@rtFKoMv5mPEIpm2Q0xWpfyAZgRiWq@WSTa1Fomy?DQrC^6WGzinG(K0M1U6 zoN@x2e2-4UPaS)F^v68QVS^8)JYa-dsxPzTsX8wfayt%bJRIRi0vrgJ7ggKlRt zzfK1doG7-l;jTmJFbO+*EGE&(>pyN)XLq?s^0f&wI)`agzx@P#|BSSUEeI@TV}_TwEp*+Yt70Dh&Qs z)-DHh0l+xTH{02UsF0T^NDLcLhpzB819*Koj$!$Hx(&Kuw>|o^;A*NK zjf)MMf@NGhYsmhCl?*bw!gW1$L63wEgp~=rIERcr%D(3CcbO7o{PD#Q+k=>T=2m51 ziY&w}tDv&?Nah$|LV-9Sp)7bv(HO@ex;YUQY->6C`!Li_AGAO?QZhA*wC5pL3b95% zQNf8bCi5p>WE^uQ2a8|J!zU6w2X2Z`ycpO>NGcg5N{dQWbi7P+kkHKFkVrrxPSfX8 z0uvwNnz3bB}MsORK6Gc zNlHm;jf14!*29CFB3pyIQlZT+hBcLx#x|r*QIBFWq;Q7%hzYA4gI_Er!?BnQSB`!h zVj{g1n^N3MQ3qnoiRunQ2lBEH#xA_#p`xnC||F0 z8NS*pGyL}N$L}%5y zLceVmL3~s5vo_JdvGq0))&&r|&3tARWZZ5O!3Hi!N~d5Qj2XkNlfqZvRy~B7RGj9m zjjz<&1j&)SGWlaFohz>fy^bR7)rbu104_zw9bYWYslZSsB;nnTI(n#U^-KpWHAV-l z^OARv`1nJczLIE|VNe(6&Q%P?iUf+V%K><$Q9Z-4@D?w{JiQx-uwVx_F}tfl&FTP-jr|5D7+Cc!XD3%lk7I zrucl40{4Ild;xDjhUhz(eS@lTaXv$8#FCq1Hs@rX2mlX_`yCQD@Hsn6;i^5N;EEoR zK&JnW74D17%xfeng-ZW)=qm+OklVF50qb1|kM6|+U3^|Cmbd-!azV2fmdfro9}17P zg&L-!MXhLYyj;?Xmikn5P>UGUih>ZVuS{|}lsJQ{wD2j!ro!05h1-=WCG3!vH#A-z z*7Al~p1_kXfr3X9Mxe0)nk(tQ0lO1o;<6k$-xg<-9+x1(b{v!vxC906o>?exBeB3? zkUPD(=lEDFCZCE5#WvzU9ygaJa8|_2vWlHR2dzC7d`rAkq z(~XxaDi)Ppi_vH0N`0iNs#sL*+<19RvyUy6J-0}z_S1^)H(p+@6N| z=~)&?RiZ;GYgMZD*YfrsFCU=g9nfE@R%-0ZI;|k0%WtNzCgu;a4KdPCM@5^{3UVVt z6PwnH;OVh~Krm^m!2T3#qv+ZfBgJ^LGGRknUIKUPCI;j?497kAZG5P+>E#vs{5sLi z41HQ~I(^~X^0eW+v@e|PPaDq5`og)Dp}ZduBPkLidN~8;?b<8w<&Ao8qjB&GNFi^w zeI+9?FP1Oq>d+3(yLW;S3l{?4hIobJMX!RpxnllF5c>>r8 z92rv`i~LUX8pIUC^Rv-w;lS~n5v%<=xVoo?5U_&*u(Ypu4<`RBQswzt-honHI_JVt z%_TN(O`q!EcvR1H_|}#4@tF>rcdNv8tKE*0HL3lcZ>$NshU-Eiqm14|&Q^{sU4+sp5_O0m+`8c6djBNHvk z!~&w+gP=ktU5qbnD=kackwObI1L1p-m&2h2Bt64W!<8)2+XNZ5*L~sg_CB~6PPFbL zl-TnQdayq&`U5%+xA%DOgrl{KJ|hd8WFTb*AP~kh&JeKVl5q zDaYQv=+6%zD0ScZOAv8B{)aDuVT*B4s~^Ot&8*Rf@YDG)L$RoYPq-1$^hY0I%tskx zxB1xtbFN-&CA91O38Tg&leutRfNN$klzz;vJ%B`d;rhqm;)UyM$1rwTciolTw@ygO zB$YPLgAfl0nD!B5|NGVnd5Qbh32z6Rd5TU1B=@U#k>oAnQqw%NC*)h_yT_s2O6x%> z*Y1!|UQc%g(tjL*P_~~S$dl|gzY*CbDulAeI$&~R`0+_ZrT7sc;yL&qUJZUQ4)pyL za|;}Dy7OsNTghN2rjwy zKH1{lMyGUjfEEab}<5x5jz7za9k2_FR`eEBj%s~tuPU+7o9 z{262HHb0`MJ6~bIm?SlP5s+=k67%J&NThuE8eB{Ag|L?33xW3M3t=z87s6X;_8}nQ zOBYS@MbPcx%L&4luS>ahhXfM72(4qjh)4JW4JaO?+Vl?LZ?LROv6J|laM(`kTllp8 z96ue7aDYX|#JCxa`->!weVi?4piZQIh#qEE!ox;8W>%FPK@nn&|2$gcA3-RtJ=Prr z(WCIG-D549Ao>I77)_B6U2kkF2AEU-?#Zhqs6AtRxAtuU_B-^cooN<%`KLf*2@!^|l>$}A93Ue9ON~wn=Gsno$258qf6tGX0y0bWaqebzt+us8O52h5x2%=`M z#5Ksn{snulbQiDSj|XH9ncsqbQ3GWUnnK!nxp->d2R!bh2%n+h{=3+riug50=HG^_ zz9#&EB;?auFvPI*sXzB%GBl_}e}!m0OoW}qjK(c0G0yZ>=LB%Py&v_&yKONI+m9nR z)<0o`k$a`FN5h)N9ty7YFbYlg34C+`c6Ta(kWCy3Gu!!LDv}|cA87zToxjFUc$%iS z+k_J@7YTHVf!$^zLACQY^j8G|S?3T;#w7tHf$220-Das%?-PqIGsVh4S{?%ywq`;S zUTdFr3iwuO{Vf7%!zC_W{Wpn`^zY!0jif)O8`e!{87+TL(uYlFTJ@jMm+AaHK4_zD z$<}5DV+dme&4L#$5eH^2%(T4zgGFI>n}E9JQ5S@<&ouSyxhLMd!ql7NLw zX^Y3eX3dUyF)SRyN@nh1B?A_+k`Td4(R;MVpDMikCxnuh#8A(tfydS+Y10cCqlVr4 z(duZ}WgRXN&cdU0BUV)`05NLoY=?ned+$ws7{r8?bz;*;H~Vw=#+&wpHcO1WC8U8l zz^Y@=E6c+Su(g6G`TG4v(>bc?OwzIeBJJ8l^=j|hKcf(%z1fdDc+JAHPLukw{KlYy zKsln~sTAq3+rMBe_KWZv{SrTgu_f`imxlN1GM7SizuRrhf%bBD#0wdyRLbMCTh zzeWbT_AyZlQgDJh?dsq;KXsVN{sjpk#COR|daKDO3a0za1$8m@1c;u;=}SyrVvQzR zSY@pCuYkmZOL8XDsK&?idnx;}4A->Hcv&^!Zvko!N`5UGA2VF42Yh~maxTKhMWu%iGH|tHPd)3uV759jqeLQ>X?d=bEIiMSn*5xeaBi{D_2fdL(39A|Y!wdxDd@ zcBMM>K8;y-a?o6xVC2;#TQ_1H>#LfwA_-Y7B;?0P+S_|1Ew*orS}$y?tP#iSdvUz7 z2gg&pIBwK3oprr9Ith+g8YH7lvIHXpr!e|Z4@PQl8MU5sd5n*1y&d?RPCmIuU4GbOmnmJ#{SHyvBVt{-lC%d-hW!Dz`tgGdRhv9}zLBz{VVa>_O zd5Uki!pW_x`d)4_<7DST0|U7TD!v=#4%|!P;$9M0?$A(S=Mx!_*Uxaa;X%Z(H4cf$z-W@Y-7J+!Ym$QZ#E%VTQ|sV{X>V z&DCkkj5IMN9`bBq7n`b-knc71p{3;ya0Mwodwjbpgaf<_Msp_MLLj zt#P8Bv$)mGE7ahsgfxmBLMv8k2FAOW*`5e_WoJENvLLYFGahBWZKvSkS8kkrPKF5WY!z^gKnN>lBV28&%R znTuX*BmA=C!t4RKu=r>UxzJ-_tOxasRT*gL-XOeYl}f5|V9VKwLE@%|g{2h8!EY!B z_lla90-f2sTk!CdBrZ)ac)rn+lNd1Ao=^dXBVh^QI*{c{@a5k=yMcbafYPTcX4*OQ zOKB)b`O8>uKzZk+>OzF%!WXUg*f!X@NImspj8+U!NjED`n-vB?-KG|+>a3@R7qw$a z0tDrBsLfks{HX`lQD6&A*vOo1`6)Q1X(h8QeC+4Z4L%Lc@0;iUPlCmpHq1`&f#|sSm6BzXq zhrnAF(^qj`fVxlWp6K9sF!uQ7(fO^x4%%)P!&jihr=OhEE=611_}3+EcIx9x;RtKE zOjWgI(Kv3rY(%lH!x~^ppQOh~h52F@g8p-9G)^CFLbf=wu_6H+?!UVhU;Zh5d8ZHu zkiP(sSTW#cY=o=?4q88Xe3kVzQ%PseHRe(G67AYmV)C zLY~438wmQ7UcN1s{($YuG}|@n%evgXujx@lqM#VrLq&(0*K=5mP;7(#vA4 zsH|~ZQNY(M)9pf7CM&hvl1CkzM}E=USjUYHVOc8c9E6Dei!UT#!324dkph(<)BFTv zZ&8ksjARUH-V}(&0Z7)dX>6@vf4nInnm~lSFKeD%I28Vg3ha4t0=)TR5=16$XB_7W z?wVU8lUs4LpF0-y!O~WuGo_!z6Dl%g1s-jroI7z{yt3`?Q{FW zO5M$4U>Zs#aLtPa?2>t94|wWXS78i&ZVJ~#7sv?e89c3%pvB#5^d=8z8dgE>=K54B?nGYmg>b0@zx_H6LQ^)a&sY+(4aqbiiF> zzO;y$9wA0qQ)#6zDkaTKa}6?!+beE9;Xoa42K#y^Ea`qJ=>FV(bWgY?w8bQuv@KvO zdWyCj$r{pPhhv(w-t@gBt?8`U9B~V#(ifW|%NgF1LF%m?Gp#kqNIS&_MZKo;OPUwA zW#VlnrEyJzaIpqxrIc1K2}F}pD7_cJ%}**67Jdvjx8d$ikQ~MQHYCSY-khNIrFb6= z8K{bc3DZ-GYrDKSZc93fIU^=hBJ*^>NUj`J^}KlTC?)=ikEhx<&KJST!v4^c_dK6g z+w$#bl9^LQ{4cjKX%xS&7ADR0f3by`<|TUVqW?GBSM&c?`)d6E(7xiv#lD?=IM#!c zdH7P@hwKEW#_Anw7jb!vYFAwtjVOo{rprMdnXqQ3{wjHU=}45<9UoWnm;)cuyKZ16 z!MbkXatxfF^*)NpB<-Qg0cVbQtI0q+JUc2#hd0H>NZqlIbnD}Eo;3%#+xmY)uipto zl|nffAj}*j$iQ7z6>hXVbbBQxgi-EFf-j_Xded+4sWf&FCec0>dta!{k5i#fz50Ja zo5#{d+aK+lz2$gV1U$#wXiPE!F)Hs?Pf87Z75Bl`n&N*TI9 ze;AmJVViWjm9^FRksOOla@BMJf2o!JDWp!X^c$fR_)~wbs9-m*R;DD|Yv|5OFCAYc zjnNNR!?1DSW`N5oUQ%veF6GKieKpmE&_Jc@e-|5vECAxM#-q`n{|bOGYI2P%$Y;$V z^WOttT;!Hi3+{v(x|soo8T3ZWe!C%aQW4ra!Hs1=i%9dF?kIK=59~*PA%0Zg?u`w6V8geU&xm*8#WXgTw zHNf9&+%Wb^vFx6vMQYs*TCwQ>S0U)&h6Ii?r8dWCbdSY%JhAxtFa!U4FC`I_i=GK7 zm3>bzF4}lNeBHZZyYH3OsSj906MD^&Ii2WHvHLDRzj3f5t3hG4$K;!`@A^|eHZw__ zg?a^0PNtJW^Tby>oLZ4PQIDVliKiC^%xFNRwt)`t-L_s0yiOB+O#4;ir79tf8Ejo( zfP(cRblEp>Kvo$8@Xn z!*q2x-_yDrXpNtwb-`j+bS%=xdo3JS9&C-Cg)pX%>pDVyI2y;QU>SvX(+P6bIj)&$ z+;Plz#3cJ2Zp@Of=)s9&h*KK+6W|i?a>4QBU zLMHJjl(okwGPZ<8=OWd3UKr<2z9&4$05`yN^&0zNNOAz<#}todXqe{D9NUUN&a?G5-6HpC_i14FHXx%C$GUyG7p6wsT*hS9mV(pUiOO_E)d1nX^da%N8bCzA#C& z6?`ao(Ka&ZXfJvmzPCIdKgzQ3mh<2qyZrzF;&r(dZx!!`x8e!1Sj{E4 z7P}zJ?(UO<0%kXOhA_aue(K$~Tnu!)=o0)kR^4(bK2@b-DJT(8shhc8dm*AtqX=9W ze&?^w-a7VRX;N%bGkqnRv;|hp|z` z#IkM=uSvYb@L}vR)|R}T*pF&6jeD?jZ@B`2q8)=_NcAFmmm<`Q8QG6eFCi!r>Lxn2)0=|XrgtfrH#4#eQ_m>s9wHhO zWP|_9Q3-7D@4(->1wWmaGUf_gX{<4>Mr}``xcA>gWi;+(NgU32U**5qv6>!9CPA1M_HcHBrm%aVyKz0^zw3~$35NXj~_+$WQj(`dl>7<8clpDJKs@` zUZDjLKISMf{4{7|a3)r90mt&_TT%e<>CmG{c+o47a>A@vjbeBx$RfkHS)niDr|+`O zZN!`=B(rSuDndyw+q^nS5Sh4nW95Y`u^MLC#zZR3up{EPtkc%`go2J<48GO%7@xB0 zUi2Cw6z)G_jZ00ivyc^vW7Cx`*@isw)C`x%gnxG!Toh|iElp)9B&P4BJ@ozkAy%}N z83wP^+7|6D-vNFvfQT5X%B(SYSPv6}?!$V8cs@N1;lqSRc1K~6DBC?LySQ$S3g;&&I^*p_61a!XITbDsPYsPY`Uu@Okj9LxH_T)4p?7fYB`Y)Nm4~6faSQjG zAL@>kF&gSwgX271*1^d0=(YIKc|G^nGfu^NY;O-5Vy@>{IHActC#Ge}0vSK^H+>&T zr|-XE4ao13uJt+;n{L*&QtsL;-i(rFXh?Y!Xh0H;*z#F>=15GlS&>am9n-Am08V)D zh*RxJw1eVpHvD4D&dQp%1vi|lWW{ya2+1SjaV3gw*W~kpShF&>s5h=_VJ(I?tqQ98 z0ADUVA$d>`PXZEWFMdSuc9d)03tYu9(P-etQP@ZVOBBWlc*hx*$S30`0{;X&PCXHb zJ*T9KXkNI9d5Tvn&u`?g6t%=9_PTd&x%H86#5NRv;H=sB4L{w3k5#%J8?th+6t2xJ z*cFJ~F%heSEA#nTi=82=szSF?++8sb9DZ$gKG*Qf^M=)W*4Wg_){$rE+?{O^W%4~9 zl*{Vq`6WI#A!7Mm1Yy5h1GRbtPCWMzRy^5@2uYwO7JISWnr}p7>PM!DH2F?sYA-SO zU1_^mVa;rb+l4FVr%Ye7xFwrzh6jnsO6a#K#Y~@Ei#G5H(u%<_B24-uZTCHWQqNc*#Nq-)$cv=8$Ew&I%0qe7U4M!%nqI8C zjP(#BHT=_VAR}#@_f_i_Sud>Psl!h}7P?xjl!Fey72B+6wdi$Ub3jV$2+23U1xfUv zQan{DS*TsFvECOG81w)h3y(14g#jDyeyEKywo3mPIa5~Y#TCoS7TUR!p;bwZlj(TT41T?T^Ua!`A8A3IyWk2p;k7MBbOB?(^qsO1Z@kSE=nDA( zD9Oo|-gyfH#-tFO!o_V&ik+mdtowi|l?31L5~y*zb~iHUiQKosl|HZj{0A`O(Ip^N+`4=t2SjCytI@T~tpkowy+HfreJB|Bw7ml# zsn>Skb(!GB7$IBZAiGTu?WF_aS~y7zF}LeRV6ND}2`z$@Po9nPs{rGB1s!xs=OH-9U5J}-$2X15ZAs-rzo^^(O9SORFKiDq#DDbFng)F=as6rOr%}=KD z9;p;%{UPMJQs~MQiA>O=GLZzQ3Ko;FL^A{v^W46mgP^ zGAL8@fLD;6BzR8+sR4Yt(xATN3#t^LFqjmR}s}>AVlLgZ#dqpG@Zu z`N37k_v5Q}eFyU*?8gT$nKF@MdQ^^+;DvIWL_m;c^zK`hl87=rD#}UlLQzg4Oj96w zD#~aI^r$E&!6{LerjSIKrod|L_%bNKra%v*22CLe-cw;@qF$5mq$yxL5jO=oYkve7 z+7!ekO@S_H3Sz_g5X1szwjTOHWJ#R8w1uSN6mNR=))talGBG{<+CtoLk~%f;kPkg& z7w=>r$K!-N{lKLf33`R$MdzKxWU1bGc8!4TvN-60#X%oi9P}WAFta4A=;LY6C(@ojO?y5`&xLXMpMuZDLnXM% z_S1~$MeH*@X(60>S11sDc5&LzF(}66A$krsg>bn)TmbnCOF{nPV#r@&5RVirx&`aY zi~(=>g^sx!2+AvrtY0cjG^%PG?EU{UBnIcd!o0MH>b)`%^@m=WfSHY4nZOiSNWgr8 zE*J$kKE4;tL+3+ZMPTY4p&Jmf4gbRyM(>P+FntZ5wt%S-%-0!OmB?@dqUo3ET<06z z^mdz`=$rWIe2c+jlEK_2B!D%e%oqREuKhU@>D=Wn;7ZS3?zkhFyAaY6a~Fc_KX)PI zCFU-KxA2Z90+P8)7fH@tq?Y;g+~r!(y3%@B%C$QrlH6z_g!)SY!6us8BjPYz<(Z8~ z5dgk@o8g;4JvySt`12hGLG&c#yJ-(rqq;HQV@%BN>$?1gu~hgi*?&z&(Y1)*-$&q5 z{AL_b`T;(Qh4A~Y7+UQxQus~3^80bdXnMO%kJO>_1cS#UgWe6oNq!5mJ^Y>*e*Z|ywL2t|@LT9D{Kj6Xza}v9 z{cpq(^Zh1_lxk>md12sqb5s>h!izfLc==Sgnc1g6)f0A5~>+C5hlf|B7F&YZCOE#X_)dnAH}}wy}HHLI>zeVAIE$ENr_rMpiAGvCy#SXHNicu@MA!%6<|OSqu->g`Tc? zG_N4NNPuvhSTUyL$I_-`S`T!b=UZzJSDO)KXRVQ)*fyNL?2}pp!o+)33$*^GgsE>; zf7igg?ES^>-T=gObVwVVQFZavOU~jgrl42Gx)t@oumWv?*hlXJ?%G&vecCRAY&bCW z0YqMpHIEf&%;ZSq5gdD;G+5=+q=0*QzrkQpR% zD9Y>Qj81F~B1LBiKe$>t)|2$2pBZK-I7M$1q&*|_K>Qh_J4#V`^|{frP@!%l9+*w} z200M!CLN-8dFu_-kLDwSlMd*O-kWb{fXjuFgx2E*&Ip0`42e*lxk;8&(St9rmK zPouHACu&7H>cF0;{TU_qh{hb`m4n?H9MAZqJ_q&W#k;+!xI^gc|*K#`gIc< z0<*@!Dl!e&D=0dW&%`(2hiRQVLh|x&dFu{s5x>VzjOuAbHTGb%|wT%BM&6bUCgk1whQwW^mOBn zU_NXeo8}kPyh6#1doV<&7>e`iD2~)bv$1Zi8K&=LA9BZtLus-Lmp%!bM$!An`}J!Z zka6LD{o0WTEc|}<>(`C~tau=6Hr3aTCbmZJufTUi`WM+^U)zW{vtM73OYPUM9m9Od ze*N09@GjV|UwamlpeIvc$H6Bj8fwRjEB%V&d3Nmt1Y%sxvo*G}^K#i=p?G<`lhJxH z>9h$qCgS+i4IrA0B^7L(2Y<1E>eZbH57A*Xl9@jTw!f;_{_xm_y(=4?#Nx0xqe=X^ zxh*`v&i-^2;JyTKo!YmtJd&5^g7KvEh~)~<3199kuYcBVI;%F>IuZ=3~wIhVSEx z=hhng&A(8RT+JldMR6J+E#EUx3=au1jn&xIdpZlM&bK60TTVrFT_&Q z!u6?C7fm2qWkO2mQhMsxn;G>!2H)j{!5i2xiaZ<&9EO&ay#Av*fBS- z-A3#3Q18y0Y~QL7844qip};9JS-n%<#!J^H+^BmPprN;bb><4vYm5)43mMve4u0x* zGmoDeHLRIM^EKg2V?5BOSXSh2Tv#shbzJ{>E+XUWKcxs<|H<#TY;{Oo|M^@5Lfh)~ zpC2?CB`M01#9WCNe7H%XdnYI~^(--Pqd9!AJImc%+X@$Y#Ye)47@^JWZ3q*zxUn-c zzNtF9#dSBgpNHVH+|78~4UY8>?<>=sWWret&2+xWbe|!M99m|e6TJYxaw#GKiw_t< zUO3;Pxf8Vr(l^MM3-NH<0{3W*ZCks)-6kY%94dH%ryc=yCV%OH9Rv#wF>xs@WZT54 zh^G%rIcME3!DG$|U=QGXB!RnZi)gF72elN|Gubmo5*%K1~j46D3H zt&|nqA-L5!9x(OS{T$d4Ue>~bmi1Bt4==(KAoTc@lMU_cB_*3r(rc(ZqdtY)p%b{5 z;C6~2v-aeSjR)oiz1oGycGjS4yJNRgHQ{a$uQHhN@4OE;d^q?SyZvvdg|Y3gGU)j@ zJK&)4O1E2;BPe=@AJb=koUHlj@Jl`t5E4!VGoGjI%z8u)HUoieS9 zfLC6n6K{h=7sJ~q%-@TKsPDztRoAOsf>792Gu)$Ly^Q(X4rMaq3P*9`jEwd3>di=; zn~}iY{Z=Z0jih~1FwD+N>=C~dK=_tAj<;88FJzg#TZ?7#568fx%Mj?!)-Gp4DcTXf zNrCFr;GUx6{dB!eTZ%SOPVEYT$mUmn#55C3%uSoU62VPexWifQRdln<*U0E<_$TE4 z8LrFy5_n=>kF3`qeCEeQTbxk@e_@(y<9>84+&El$BsH_^NduC$*TglmY)$U^BXv(_ zWpWDJQ?El%F;g0`Yx8h5i=69!6v6^Q8$@6Wfw@_^7^%ag28Oon{T)vlq59(6Z8N(2 zEiP?YTv`za4avz4vCxdp`l9D5k=dB_Z0Uw+ZjVi0s*IYb&8BMo#gl47AU!a_w_e_* z$5-I(p~pKA(51&4;ZvN9X6lbU_Jomn>6Fd2F`Z&66|kE@sFX{HRGnK$Bv!6(jg45P zYAhRqdukll_ak48ZB({(2Wo&pI}UJ)R&<2+=o08t4Wl|ysEn=6Y(!<(7cUitt8#!_ z3~HG`0=^&%whyg13xrgJs0+unIeZ(yZ!lLQcYIv4$#i^FV_D+x5Y zoK_pjI@BeYbE!$~W_nN(`&rn}tXGN5uzcuHez324eKq5>J8)wVFzCAKoZEsc!`rtY zv@x2FmYx%FejF$DNayqGnK(=nOGSVL=N-?&+~C!M1Dii|D+LoBI#I!mqx_U`f9R=B zR_K)-Z<8R<-28Y3OJBb0vv#)jQUuqbdKCS!Z5mab8{0P9VOTw@c%BjibUND++z+lG zy9nsmHijQF3ls!iPT@V<$q9lvr$ZX$dhk>vgb3?PcpHJWGMF;(p+!gvg|MZ!T6-Ci zqEi>xxJt@(_`ozV4l+^@#tlM>n5XA}p0DZh6v|2HB@af^6=a)3_IT}9IID94ozx=A zqLD~_fr~(v(p6LRc>-)DURhQEIE|orMU9MOyhUZOW@T1tI9|}?>oBa45(IE~m_imt zGt2Xr%EA(*s^NfX zH&zXAE4$gNXvCJkS^uiJz#W^tYTM=I49=@!wu@`S@McCCb5TFMUgZHpuE5I%nYp#t z$Q@*6!+|WHMrDyf)>CoFt{N73sFZWzAzq-Z#tU*Q=W?r7ov)QM!)1)nX3H3_ts0*C z4)RMSRJ7t_Anw#{it(!9z}-5B39Xibd94)UEQJmS+C0a4fEN^24fiQJIgmQ_1SIV| z)Idr$T*7_ABANidp4a@n9Pvh9JQMWaLHg&Nf+628jwz`;UUhIFfA2h|_6p=EyC5H? z|DYhI{~!pqw&RkYYLFo%Fx$kOp&tCD>TFQNLmMn8)wV?PB({u$y*SeIDAvI%wO1k)Xvsbqiz?Rbpd}s+N8k*c z7$eD8^<j_Fdb7-%ircWRwJ80h3_p z#ks!g>!iAh+lv{jgLmBh{#tk@!b#&d^B-J!A%lBg2lpmVXl6y91H7A*L9+DX05}Fm zV)B=}fKLHF{EP81ljSwM=90LFo@!gS_Bx^x9S?xCoRe`1QRg|c=5BeuDULMqr!W`Z zGMwaG>auxGn{e6u4t!**Rkapy34!vLv0j3<{Q87`6+V$bt}enCB&CKJFBEb1twNRP z*}gY|Q*E`K2rs+l^7veM70wWR3Lv^mzij0GXzTS%2TRE;zJWiImFZ@4iV77Sh8uVx zRB9E^H+!P~5w2Y>4&li_PVRfm!qkwOpvEWUUI$xK>V(`A?*YMbGxy;)aJBo*X&)50 z+A*#{XQk7A(}nABXAKJVMGbnsPHR0WTSo^vRF4NbxS5e79W%!Td=kzy-kv#b9OY$m zI12S`qhq2+EYQ5wOYU`p^!z)7->7+guX~(}I&b z>p4F^j!5FqfKlmD5$^%BIt@ld40qtmj6Qt_z9a9yVkU?+VmA2J8}WnLfmg#i07X{l zQNg#H#%;Z6K_c2JGLUP`$DlGrN!c#+Agyv>P*Tr=+rAT7i|E51LSOL1XKCViNbrke zX1A59Wp}ikX}uZg${CFF?t+68EJE$P1)gxu@rB-ULw$1RK1T_ot-Fz+^H%)$LRgre z=qbAGd+70Aa}T~~;pPf#g-X=40>U_T7m5gR zcWak^6$vx?)Kh(#Vsmm~KIb{OM{ply?+dW1%EjW?y|9{d8QP2XUdN^CwxAwb9Ol+t z=@)_-p^Zx|ugh7mtXpp)U11@@-fUQtrL&U$miO(y3zX9?SvR5n2&$KN=o7NJZ=X)- zyb(+@PQfXT45-DY$Cfc52A^!&;G3H*b44Q@XvI$v$Hw#Dt}?>^=<5m6LE8 zGa;{RQKIwS79|T@wRaPOjuyP=J@Cjl0=qHD$BR(cJ6Tt)Bdn~(D27Y^yR|DoboI&{B>H>ct5-t#heEI#%~Vv24Q7UDI77Jx@rYv zqYTT*UBu7aDj`%U%s)mGtG+pqLV1hfqAgssQ(T12dD(s0n1#mB3;Vd?UoK`}PPq5P z1<-yI*zk`nQI^A_=_GqOgU;F*5j|r>^ui$?KNqP|p(^_$zIZEZb8s;|j;=LtaoBYW znA}J%24h$m?0y<^#4MZ5vN=p8Hp=AYAQU63Xf=&%BfZ>hvYb}<|}EZ z&s*6U3smz0t1)ZN!KDLYHZ13ZygY$5g*-GI z@*DF1y4-j(JJGtIb)m7K^+#|;e~ce=eU+{c13_2pit+I7uHNBYuCaeE`T(-wI1TQ7 zs(ld78qAX+Ja~%%Gb|3Zv8bJNUgDQ4sIJHDpPU7h(d`C0Pmoyw2BF#1^uVOTQuT+B z*bG`VISz0$%)@-l8yUb&w15-%wGSfv;#P-2k2sy$ z#}SGNXr@s>JJmTIFNGi-;AL$CpY4@OtN}G7*_s~~53UkUtr!T|BznWmm@cG{R;K_< zVW!T70N9PPw&k1|N~?DykA6{R(!~Ij7LlQ)DRIuxf&`0Xi55vzfJ(l3GS*L?14p=# zHmKR4u+A4pXa@zT;Vf)~9oDeeV+u!jQH|NkD5%10kX!%hz!;CkYPDu0@ygKb7J*|b zP2;&HNEoM9OI(=;Ykg4EnXw?5)?zwl`z6{3_TBKQF-p8nR}HrZ?R*vWXOY8JSai?_ z#nW1^2*Dwfr?H4-`Hg3Xc^l10liH1Cc-5HT6sUq*yW4JT^Bmy}?551@#90QgYvGu# z&jElw`0REX%kd~L3&HD81kf!Lh&DV&E@848!@a4nNY)taEjbHap|1>m0$@Z}WVly> z=gyXBx2+S960K2h;&tSCqLhTmRteveSKQ?G+f)aplTu&0Dl_|x=ab)B)V*9759d?w zj{m73$vM^Oz%ez(*0pb#%jS>*yIDNh%)&h|l-f&sv>dLNz!U*fnNKpU?IThXad7`B zDM4l8M3j-5w;5}h({F~UGqbeK%#3rAw~LauakM(-)gl@5M4x7%zuoIX@w}rp&OA75 zBhxykHbHOljCt)d@b>QT$Cl$HuWSJB=9L}5s4M$#4*#~3_q}r|xf5ezL7cf$P9|H8 zLD=gl>fP(^1YRC_goYq_^jRXQ<!xF3(>lt9N|Qa>#!eC8B=Du-^T*y!QXU|^1j1SYIT-`l z`-T$lz>>8>Y`TmeMTjKc@-g<1yxK8Xu_vXzMJEe&3|6VWCa4#DGpT|rK#Vk=tr@{k0&BL|9OjA7ytJhLK^7lMkqE6>(z+R_Harvv9n z;P@=Xu?KmbGYe)K-~5gUSJDqUwyAtS+{pGYH_5b(>6@dhc?W)Q{vZ~h3bm1p+~>jU z$4GPjVD3nLH-1OTseT9vVhySM&u@Mh!5H&Ov-#AGdN> zkNZ;pf)BKAX$mM@9u|gD0 z>e$%Jz!G98NsKa>T0NYC><0W9G2+)EFk8l+5O!?yJZgHwYHB8xG}9!Om9rdh=7P z>$LVK8>XEb=dWS!F5>t_({pS_TUet;G@Z?eb^P+|Uz@J3w#JT4tzWd~6_=-ud}TB~ zaaQpMkI%=%$0y8y{8tRow;8C}4kn>U7Km~)5rr_mUR5f(_R758!aAgAZ5ci=-TDl7e~;{+NG>=VC1 z{miV{Yw1awbayjSf`lo|K=_ME-24pCg4%_uaqyuud4-2Z5ZpQRFuOn2C*R9+N0gvX zLY5}GMtVZdq33CSRyG8I40^NCQ;#4PV1eW|KZ_EU-6y3@z`GDJ8LpwEAjo~2pF?nL z9d|r@U?hHj>Skw_X~)tov6W1hrT8no*)QG237ZqaABLqvLOL5NSFlNR&=FM$zb4f zPqq22WlFl48JBm?0nlsYqBaBUotY{skA;JPRywHtxHo|g<@T455?hBZ@u&SbFLeT_ za6M@x>p-{Pny7K;epWH|Di@Vrd47y}mxCe|_1;Ic~&jpo))Hj9Ho%wDdPZYIK5 z@Q|y=!b5z5j)cgH{xQyltieRu;cWQ)EQSO zpIQgq?xVa^>dn$;*w*#Y>X-3py&6lw>JaWdv~NM^Z;)0&yf;9$c>k)&bffNuC zqWU7xANucW!!jjZ=v$uB;A>Dcbz3x48tMrqwN6I4YLkiLk8%?IOb_~*9`rLwYGo|7 zKCaY~zSvV{WpVehZzbLCL&1h_RMbxvob4$%+f#6sbR&36H@cTmBOB7q5(1?sC>RT0 zo;#$aNc*)XPd8i5RUzV#@b@5|>p?u%gLsaJb0kH@?J4Efnqd--0E9)Qb5uIhm$iNy z6$}-uo`Ul|1?PJT&a+@biWi(;>mFeXM#k6w6=|b!G@#O3(OvbM;Xw89S z=ayn6aj2uD+ijRXmE0I;E~#lS4U zvQ0`iFBIHmr-xb>AwKbBoxvRTWm9@VN%ia-&uzUHNe@x}#@9VGHc}-O#>^K#OhgwY z*sw9xF_H?}ur(Rc8?xTDiUk0y)0LP^>hPMbs1QoQv3ML0n2{7h!OZlNoS3)zRYVMD zTlL|PoACvaQWj5$05kSM1GqS5ODqDFc!cfz!Io#DtdeT%mb~fhtzSk^2TOxx6J@F} zh=FIFA?(2<>_H1Vy17lSLZdC|wRTA8)1aXACz=_>x z_6e;gj)s7F3Tz?_^wl7S(2$93SXj*JWHGBP)~W`o4LrTr+E@-t;Hfc6U{{XQvSfQh zjJ~C?m{PKsk}byL`Ge@Z3Xa18l#XiV`RI(joQCU@t#1K=c<-GuyYLe#zvFoXc}Zhl z=e!2^2=@#1O|A8no;M^JE;KNYADS`n&uD$kTt5Dt((5>C3`(V7%VjI~j-k>}PwyCt znsX>5z)+F^LzV!2d&h8TIO-k45xC(H+;9@y@B#LYkSn{RCG|V`|^;%We zhi26av&=tFHo56DYL?llehpyjt}hme^)?%O&Q`8YwEc~E>gz22h}NUWdiu{I!kdgt zb|T^X+|dl@YELpk2OS+lc{wX+tZn@%V3lG+#xVTa1{_=Er^i~K?H`XU3YZ6CoEtX3 zPV|u+(HDen0``4R!)(~T7I8c;8KE-36t|M!K#0Cv_)T%;)8UoPaH z=5!E3R@(nf?-qUwrQ1E7eO&O{L=1RvZ@UiPA=c5nO~{I@^ll-y)R7$oIb!LtgU}R3 zU~31#Y_%gwNtuqky#tdrplirBaZne!aYJc-)DLFySPUmVy{fd=!~Nk3H|W5e8&h&Y z`#zHKLTQGh07l-}pfGV=TEpHI@=JxM9qSELtQLH5M+slCrFt^b$84!a{M^T}0&mwy zUa_Tm9eiR&m27&Cv7l-nU$Wn`uKNyR<-w%y(s4b#Q@6rM9n}a>KYpgyB>j3(4|~E< z)c8ZF8a8;eD@26`JmH8tChVj#-fK9&3`a(nz{Kt~9Z=Mld}YZ;nPZUp73%pG(w%>N z&5^=czUFv8z8SpY_^tv!lSIYn+Sq1 zatDNu+=H4I9+{9YJpLQLlFK*=$LTN@FFcBh&JWzQF#sH+2Aezd?$wWh%m0sUp?t_qy%Y6^ zOeE}!Z(`f55Bs907jaf@s*{#ARlGyF%2;j-Ar>-ez2P$<&DF2%CYH6Gg~-;k5Q#ta z3opT!e@^vr*ja*e{fNE5)wLt;VR8RUmcYc=2(2!Kh-jug-#l;#^bAUXs=1K;Pb5J&rlJ(<={y=z&R0W^or zGs~7KWJ>QMp?;hWA`^ZQzU;^g0a8FD%V@BwUl9zk>;4A=)UTLG zRICn6u!Yhdn~n6Kv{(|d>a+zS9wOKMHGYtkA3?PH8wOOQWRVIJh1w;(&?G(QOF|P5 z+f#`&#=rSb~)i+dA9vr}rbfLbhoJCZ+0|-VlJN)S7Zz%iZ zHsoraKL+gG`CmC&1%;FoTM`_nT<`F&zx@?rvbcIcv4{Gcl4HhoYq`+3^hT^3*IB;B zF0W&OxImFzEVrT~aKMADsN73tECa2wwApv6E-_CWAHm1UPvH8fP$4jMw^-n|Xj#c4 zfP7aTk?MK+NpxIz_wgOlM+B#Q>vdS$wO=Mu_dbY)cL)tS;RH)+Oca0)9U0T`33R08 z6dj=oIt)qX(@X@ZluhCo$a{gtri?4^xc_gX-5WqV=m=pR`p?mhO$n14(w(JUM>nqq z7t#(DM$oIHOUMUz6cXBHNYc<38v1yyR>oi0cqS)X#CA~XufnK(3a50akB1%yUd^*R z{=WnNPXwF(0seQ8XyN7f0ncVKAezQU=P927>gTB2!duEV0ZZ!!u^ieVBr~f%hjqSq zwBF>lVO%$Ze6<};CsqJQOZZk*EGxzaOOdfbM<7+~W?6DYP!?t{xJyc>L+JB+42&MM zj^|U^7)=CqkQi_{Fk2>u!B~F`!kW&%c42djXr^oAhNKJ9)C{?L4s>T^s93%%25>a{eSpoj(sp9F75@r|@a?wX54QU6y4c!K}#+&RLUR znKfU4L~_RaIpo9Ki*ZEE%Ja{*Q=^h)=BYZ2%k$@|!w&VC$J>N#_SsP@2vWvCSWBDh z@g#GX+awBE!QsSB(oUb&`bKi2&S0}O$3~rCqm4SJ9pl5nn!+=Fm4>NQ;k~+IEuzx$ zN&p@DO28n4uxOAF`$~X#jv!%djJy&6N@8t@Y1q8=unKu&cI2Odh_mru-g;mh`qgTD z6m}Khx+R8Ix{MUt|MaWv{~^X`dZ$BAlbCgf89XK#j5T=y+>wk}DdZY>>tO_m)SCP# zTr1fACnVd)P>=XKbp+YpmOLS^U`w9xdTsv`kl2!skfbenK{iKn+O^-irSF!dT&GJS z`Mk7Otq{N_SD$Z`kTD5?4CNl1e-aRaczas)}%Iy%UtEre&opso2QXiu=sqP={LK#n# zv9umBF`W{ge=h)g&O?ks`5W*NB)a2pE!@aRr$cvVBYv7$^xf{Ea3PeRXK>lk;1fo& z013!P87{_2yPKG>!(ZVa4O}N@0Sd5r7@W030Eh{?hclugc*x{p5R#&WAarTYt(W4Y zOn4PD*?uH?B@F20RfH7hRevw-J%Ld2Dk4PQBijOO=FIj$fV6P|G1q0qW70qzk;+iy zR}NM=F2zFyxzHnB?37rHqGi)&nKlwJ9zmc;&9B%+Z&w)tw2tH#&ka_m;J`+=Mn6*W zD^I_)>kI*036aMt;At>=+Qf)wh92tAP$&C6(jVY~$gqr#ry1IF49ImE?z_!-<~Ymg z&|AkIgI~9~nV|;-2MQ{E;2eF>aE|E<=V1p8XQ3~gEe8!}YhO6W9yFYX_l0vDLt_ok zMr1QfW7^3&!P{=NVdlzVVhWnA*V597wZ@1AH|Fs`F1e% zbnCLUcE9&O<+gMFNBfdKp1)~`rd<^5#{x|7ZmSXPxS^w$Rgst zq+;CYRMzUf9h#bal*-dt<^?O3`6QOzr`Ik@r0`hn2rF!GV+Hy2fk4dOyqNh8 zc39ZVm-J?~5l>wy;wqL6?jZyQbp;2ZZjsczl=;|y=>T;vqaPIF*KIzHKGaHl&}U3U zK0V>PBAK+Ah`ci4yDFKqY&eJ(*=8haMPKu3dO&wm{xjg!4isYeOr{8Z&!TT7+Qx_= zz=a6ds;z53o7vt9BA71r9QfU)3qA*%w(1xux358Hx5K2*OeTd8oxu>IU&~k^PXNts z+;d&r^IUqSTla=s5{w&l&|!0@t&ojAS0MOuiFrL#Ph2+L)MF=@Hf(0n^On_&_@-$z#?<{@u+_0}aP_~vvvt*>r zgs_eN1UdP@3LCBtS&=rui{P7dreY1W%OruOxT)HUm!)~WNrS@z1@jUDj{&*CBp3{V zytF3;XhE8sgzx)7NB0@20Zto`vF%ZnWdimEeDg*)^FhNInS#25QnxVaFQfBHZ3m`I zV0y>>CgKrx0r9PrZ>4aIQbU=TUW=d0677#Y`_IIdsD zVpqz5$;NgGa6;J+_0bXGjJfQsj3W{FU-eeT%K=L_LMtJP3l*|?Z2l>$6Fr6TXYi^D z$Vxfm;pFjLSc1pDf^blGew#PbgQlm)ZN8Ge>DJzmGsWEm@hT($h(BjKfZ(_J7xVxG zJ#OHsq^jhV_v#`apQ?*|e5Ee({fa(|1E2J>^|WC>iiKg+DsH-_ z;j49g6;8{Phw0wLT7=2;VLAy5lgYz$5(J*YoK1O{?ys0JNzJ5>?SB+o9DDjVGx7g} z0X)Kd7ao2F`t|j0=Wp=EQ_uLFU*&e*%Fw{={4Kr^QoW6zeI{;1iQmq|duvk;Bxkq6 zjWba(gw&-c9_V9+=)Qx2CLJ=|2Jg=Kk6_^~>|M_%--$qUFZ?* zfY+udQ)3dR^Y{4Of{Qp%N~BW=Q@;Qbm-mFx66SQ?i-6|)@Y8)iero8!nnc1y>A>kQ zMuoKh02c&iEJOrmTAIYmHtLRk*#(1tM3$~(AM4F7@obG=3>g;3@SouCk0E1X7_R9p zLgE!ek>L>$jGX9h7z27`c&r?nK+dH%;QJ3~gL3`7tNiKitJut@u z2ig*Qv@6?xt}6c1dFK~?XBb288}YFo1PMnI!!94`KD$Y^!U_&1mL!p2o1 z<42j%q#W7fPgIt2<=NYDQv|vJtWS9=Q=ZKP9rl76Zb@=*L)$yuI78}8r%P%~z_xHbtMQaldwU69x z5K5{yvL{(R9QnuSBGv0#=FM{Hi&bNlST$CWH$Jxf6}lO2X0Qpj@Q5F8ok)8Q4d8i` zyDf?9hnGc3I2|?|=Kd#!S4qb&>Bo#GK>7n<2_Vxe zkX?tBjw`>BHQf+)`u>Z?O%3+R*@L&XahnVloNA8?h6nqPNZ5JWlc;_9ZUZz=1g{4N^TljQg>Px_43@9c^aHmrc*y5Ui-qQjPYVH5+v51i$iYwD`p$+ zNG;vI5Qq(Xp{az0<)#wS;F{>kFgzkym3ePCTZfIyOhb(M2hEEB1Nmegy*+70!KcQu zDi`@`%{f~?3c}SRS!|{@R8j*S=n%NB(>#TMjCqdx0Vsp(ff@UV97$L?w~m_#r@{ro zsm+8(rB1$4<)98ulE%NF?z{CQy*!5}%c|HgU^&-k3O2@jDwQgZ4vj5jKXoT)`cI&# zTiJZMvjeA#J7n;j4&BTn{Sg_2&JJZ8i1sUZ{6}VvFkNM7wTr~#zOzG9+Zg413ZfPm zScaARQ(onQ)lS-*b@4)i2P03FB`>Ic20fwR>?npQ5{cjc@Y{{73bET zTfaiPf5w;=DWE?VWVwh(6=1$iJ9a_o!v0u5e=L}11T)%)i^x;dJUOS7Gkw^+g~&XK zhY(lj!y5+1kF#$Lo-r_fmAbLg!D1}Or-p?0?7;T}{l_}5ld`(GT0^Pq$5v|;Re|Z2 z=V@2$vq%NwE`IecCife7`;L6=yaR!alQpgc4Q#b6bsPE-3ZVI{a5=bQVYi#N@Y1O> zQJ(O-l}Dw(cSCM?M3NgC<;PWiqu{79EMcwwR7L88^9$kAE@T7Xr=J7b2v4V6j05zw zmHBti+P7R-_!ofcw*=n$$E-u2MQ?m%Y!|=_0c4Z1I^5S%5f9MB=6zWyViNj@UBBrp zQiMvl(tZLm1FY6%_vvSDF$L%v6%Xq5EF|;6)}x`TkhGbVGjtLv-AyX#o`Uwr_SrrL z3~;H~`N}eSEHKGkObZP;egjIhzQGv>bJ!4>xItT$O7p`Aho&xNuoxsM2*3ByM!LzN z1>;qim{QeyfH;oUIJ)Y1QjBk_fQjdzZAy4hh1fSdGp*_nlKEOD;gzA1MjqdlO??n} zrpsq0dkxeRI8KzEna*j(NeQNA!f}$WoLQTPqIgC*XASnexY)$hEbrk_-rxuEX3gx$ z7HWH(j9>jc;*>9>Q?J3qdxy}AWUs(jWc3S(M$brS^?FdwA^0uN1KzH#2cM&z$E%o9 zXe@uVk$M{ z!>e(`4V(lQCAg-;5(Vql0vgk-a=q9B5-Nq%sO5O_c2j3tTqAo7vNso34P>#~>$5=5 zg4$XXi)7JQ{Fn{kl1$@xnqXwuU-%h_1SO+!b^)p+2Fp12T<9&1z>^+qPTei9+!Q5n2r;r4?L&A)ys~g-@ zJ>1d<7p|2AG~O)4W-1{Hc3NA$N?PQkj$1wp_fT@DEL~>^4}4&Q+lMm_d2HiSGLP^~ zAUYzpr&$swa#8&1snQYkyV*#q)ocdjCxVf&=-4S|=Y-g6x+;nJX z0U+Oo>!wP>7mkB0u9V&KXP9nES*_s>a1SNxAvFZH7YuoozEy;YnXC{lF{Y%FLol$C z6Tt`iWEe z^pu`jDjPBVqq1mv!e$g$N^kiH`?_+9EjV_j`ckq%+<68`~J<*Dq={+6@kqn&y?J9Uzf7PZH+Q)}BKP!D^r zHt6!WXy}4}XqC3J_pX$l-E^gLq9IRM(oKELTK!1TLxMlJ&!X1K_0VV45q3?(7bRkO zZ^tW4P-!*0F^}t7nFbc#jqc(O8|fmZz8} zYMJkEmU&Woro;9KoEJ7d}@g1>5 zSumoJbZs*%6+z4%dxQ&1dd}1JP1&3S+nz(7EJS4micRn*k=B?yYJ3D6!I-V1ppJKn zK81L5H~aY13D;R&GB?E=Dj(V>zIuTH?=h_lr8|C;v=9h?5wzeModqK~4@JjSO2*l^}_%u%<4q4sx-wTq&9zk2y^9HKe z9Hx#1wYJzWf1`qeLk!VRySzprdW zWB0}_*UGae#%AW))YM6l%}mO%u&wGl-eiN){t6&tG*K9rA1RE`099>Upwf)Ai_VLq z$6URUY2-x8Gf{+uBpV5QbZtvqk<|=svQNBf*2O}q5eF8DMLGSfPUa@&r?t^$Tq~RIH#N`dcW6 zf@t#SOF& zOREQTV$RjR;0Bw~CYmr;yR-cuVM4*C`fcXqo|vL8;(#%-;ygiN&Ucs=X_%I_p&_6_ ze^`cZcz($XYuu0HQ8^Z4PB8Hnlb&_tu?N>RW>LSk8pTW_@A+Arka%a7yeV|pEKdJq z)rl$MZ$1CwGyRKs9e+8=-RgH0NqcvBpJxUj!u?2Y<~1G@n2Vk&XZQi?h_T$S&l|I& z5bc>JnLoM(J5yJ-v1LVz{UIhqYp9!nNgBCp}hBc~(ka_C5eiK{8t>9HTiAP`CH_QkkpvUse0FTKP#!Hl^Y|pI& zlb1S*KO|yUv)~aLx)}6hI;7uI9{&k}+h;9cPsj?jGtFusb_@wkiW!)C=WJA{9c5%y zuo4+x)D(k8(QEiv4^$SX@N3os_RzEO7Ff^I@%IAk->~`HCqEb|l#2^FBsAw{&AnjI zv}0YKTNRD`h3~P+yzJZ$`$m9eEk7x zH;r_eIFZSp#tNLFewP`snWLxs8~g-UQ+y-(iMITwq5Mxr?S%fIo0=ib*8DB9Io03c z*C1A(k0V$+G=|hO2pyRDL6aFQ;*GBvG@a^R!nqY*u0`>o*bg7d1@U3;hfs|>8~BK| z^4M1c$Il3khR5PD-YeUK=zP~0vl=3m^4q^hmOM^Wu1DX%hpF-WI{_)#Clz%_IUPx> zQ4zfhK}Ki>6`)L@6pK+$oq?pl+1XnF7N^eqhz-+B3O2sQW{1mRr3Zap>(RiqiWg{d zRj5hlT91c!JS*m?VS*7)-En0h%D(be!5+V&XFk@bM%miaa68nKHNLfaNY@BjcK}{3 z-TE{>d;E1a^&!?_l+;J3AK$_~*Iv@aN#;0(ID9s6iJphf>xd zO?5=whr+$b-%v3aRiXEt6D#MaIj6ARnqxQ9VxH;%$e?HB9klB-+O>5U!qt>MXySqf zy1z1@jfT7Nt+7>Gs|q{I%U79!7Dk$za>t0E1OH^}1H^+C*%gl~|9kN8s%ueXtngiK zW5b}=g0aUdy@=RazjSjQ61&)w2C0vrUt#@1JM-pn*7xM7y5hE~Uh2wp)kU?8C168- zJlQEi1KKc^6$MXW@Z_Z1I;&3(%G{ZQDVc+QIct#|Z|=>ZT~w3TZ2=#X0?L}1p#sE& zV*Rpr0FUvwEil<6!h_ymT89B_pUQ+=(odP9K~u=1O|`WCxVE-oJAcs5dK*nm8-vWTZV zy)(HF_EWz`e}f^R&rTfq+X0^eGKHT1_0%p{HaOjYI(X$d zC5U51p)3Y1XV}H30M8(c6)}#9Wnm2SmL_`{6vhjfj`R^cNez9$+W~Op6c+QS= zmqAoQWq+t`L>fl8n-M0d(=!DJBU3M7RPt^e5qkUyNdjCPZUJsYX({e3Ui;b6#M&cw zH5GVHXA(|v&W=$ji6$dkxI03|g^$oiV~nX9*g@6z6F~ylK}Dyc5=$0c0%Mz&-MTrt z$6RTsoqF3T&mcWbDA3vAudAmxM3B<#B7(3|>kQ&M)vkl0*MQb(u9H$Yy+I$7LOKL* zY@rg0@RRzJosN{zS%o00+0NX4yfdL<4S##{o=K@^%Xh3zjR5F6-n}Xl0t2OKDsYt29?LusVZ^ z^1@mPzQ$qhq;oA38$Iq31vS!@qAFb`;uKV(tTLu&H)xpRhcs)s2*f# zrVC@#sSY8lUT?xpz+u9fZk>c~-sbH<%GUd~>j)Csb{(ZV*{)>|j^g9-M|mb4UhBdb~nmL2kD`3PhoSxBxGz5aML-3$9JEv&gj0H0t;gWJ3GEPr$;d3?;G!81m(PL`FNE!|~fuNa7>{+67{9$`K}*0qf5& zOPrNVGP2w~f*+HFhCnB4PsGKQ*-k;>Lj_*a$MV6vnX26Ood)r#72FnU{ppf-~;V z#js^JmmL0{SZL$JwHl0v0n(P7BPhpe5ABuVKtTn&C9?$>Ruq(FgG~%)pbkkFj$e;+ zL6U`k>}j%COT$EVw~n+iJo+{uv}l+tm^%^0h>H!VIb&!}3`3rwX!bT!)WEMWu%^ql z4xAaZ39s&L!UjrR_?9*y-P(j>2it@!p??#~Of{^)Vk!Mi{nVQQ;K(v>$60w%?#_zrpfxR4SDlw(Pm~hApTuJd1e=-$C#UUY%!j z?|obLa?W4YM&cKcw%ndZDDT^nANW%@IEIY~lM}85`+SH38`Bd!Shuituo3=*oOMJ{qNC9wp5TKKuyT$-U;I;;JN;A_aQGM6 zhMz&%cJ9O+NQOMe&tSSc&#%|rEMBjBlzjc}(fBGuZyb$>Fv^1-b{_J4Y;7Y}|4oX@ zY7EV~=_X}~H8>DXiC*^@Wab>iZ^XM?Q|UT-Bj^Ps9c!nx zNHr&j&WL0k)^P_aLXya``IJ`AOjuH5Ojx>hc^!$5KQPM$U1l^-R`mSk-||x_u=&F+U7VqI}D(WP5KNF?r>CXvAjH-!&K9`LKvCtXnTTqz);0) zpb#7Ec*4b^VH>_?(ZDqmbb(S|mVQaZ1Zk%uPSVe;o>)`8LO|@cTtF@?0Jm1iK{Y+w zcZ(S7S0rW0++{TuUPXeLP_ku{gRNgZ0Y8uo%^mM_ghCUYM<4`q2lypjxXdlI;ItM) zk#L(_o=FL{hxz514SiB@v8O3uEmz-^U_Mq{>+6j(O!&Ee{70pi!7qp^2DMHc z6@x`sA`ixU`&Y^KFK}K$=-0oZ-a|{S{aQh(pgrfBeRQHBt?SUl@UT{IxDRbdl(r-L z>_qJI2hxd{Zen;;d%@_Q<><3=#Xg;=tXPyCykJz(?3I#PAxe=$bwi zU8_Z`-FGLF38SYIg)E~yqn&7-mbY$V_z*4c5a~qg)w3S9FGiFjU(2o-?uexGj&y}1 zj0jKW#^{kq5^ju6geS2vI>qUngfOvuCMSM0)WeWEBrN0G$a8VxLY~_q&wVS_EmUf= z4;X1uSP2#&@u;aMb02aycE~Ud<5W)u$mTuVu%oBb4)!16`xW8QQW|cg^NVsM5f88F za5|?D7wkFtZ9WP=&=Cxpr^3PMj_|wuF{*_3--nxRIL^rd$FCW^;rZ0~>8kI!$EiLV z8J#K&3Inth9OBOT6~l)gm`v(yM?$OxUL}(-Dj*qU1L#@<{Gxxgh_lqwq=(b!MH;mx1a0M8d1$v&ETJiO?l53ex#vIlX@@fa%)K zOFbbh4|53Nxr=SA^?J&E9CFmltqa#dbSI6k4@giG* zWy{y2Eb2K#kfE+{29qg3F^8XXMm4MSBX`agiqcH!8WAs4@d))J6a#4&UmB|UVzdo4 zJ6U%h9o^KZ`UHcUm#P7`3~|fVHffV;alRns3*DP%BDvL_yLU?Z_6^9VeOr2OH_>~~ z4twwP4qqC;o7tcaRmfiS<_7)5Ff++!p?l2+^EOvBWmytxC+PBHM!{e>72V8C)z8f2gN&!; z*N(#FVnM{u&SPEdW_`uCw$9DYRsugemv%EtH3I{=2+Atg{}~k9JzQt^3_}4riu;CC z>*cD;&i&S75zf7t4h}P-!OIr&t`7xT4W4zz%%H|ulL_+ik|Fr4SH~p@X~tPU@Mm#c zum(1I-PCTt{i?tfYV1lNh8a!LM5!e&+|t*_Dw@ADh}Lld$bRl`Wo9wlvVmv;V@akEs<}E+bG^Sqv~C zX39M}NI>g->HUF z{bc=)kDOaS3R580yu{PYe$7XLR*4`r>mh37;C=IV85=aa%}6V|z5U3HCGACbn`Am_ z`=li|s4SVT=V~S$f82`W02Q*3XqATk%Hh;L2UW+}bRekjx>RoOJV7g>pg>a@%fsPa z9@yFOMMwb6x=oqv=0Y%*-8oUr$kJ2+WzfF31)~itH+s0GCx-KHgia0}LAlA51t0UW z=bqn);m9QICnEtEpCEQ==JP23@9=n?Rp@C!=1tEVDxUzLlkA2x)}rcor(#igz!*6}2f9Zh^TjSa9Om zz6dqza_Tl(UnL`?BY$kTP7NCvI=lSwEq{~M3XCF>&Pc%Qe)D1`yM#_l>k7)2vFcX2 zJ%F@n2BwyIi{Yv8s*Es}=F&cCaB#(vd4R>W0Kc4=v2z11EWUXeyqJI=1NSu!M3I;Z zl0jTGM@bboM{J46dPtQwr4;moU$7s%TKa*mb{2D9-p3^sSl!9{f#Jq;R3r6;3NYzH zG{UzDp+YHt`<-vxKGTiTCz_jd7V4MMP>|y`%{P&`=SuczXfv2DJa#t3ZKR%(0c+4g z?bP`2^L6-Pffo%)%jh${E=|ndgb5I&ZvqM%4d(w299F@{3Xv^}Q>i`;%@gDFYVr$P ze(=Lw^Kv$&@<;M@X%E962@02eEM(GnF%MN_#nCqlCgT(4sM2aSjlt_4KINeWJzWao z+mYN0^UrW{=@@cRIjXvn$*pF=@SL*Nz~Zs2hEZeLs4A8{osUvaIDUGH##it*A7%tW}xKb-VAwg#Ty$6l|Rx?5Aki`;I z+XIgq*tT-z{mqEq#n+PgRw07{^pFfjw-1*h{oF;%pg=<oBw@eHp4+v1y6? zT)Hb*B_|vaHU=`ws~xh_lQh#cLSI<1J6#5*G)fGvv7p5zgv=Wp1OJ4*#dl)3vO@`9 zk`>~S=qY?W3oTmn<;YOtLQKWN0gPy#k6hRWIMrvM4%%A79<}C#LDO1ijDZaYLm3@R z3m-=9a8KHw**HWiI~+xDcwH3TPI8oI>@^#j)0xwt^6ZZIvH#;%&v1ziBGdWCl^tATUjZ!)!Bo;X?Y%_zgmfE_CQ*6AgKaT0W;jSGEfXk?zSK^@>veqLGC$1DXp3z#LAEs0Zh>L4 zc$5ik_({}=YPr}lN)ZA2`i9lseVhv;Mbo0U4qHm$`s&n*SLtU|4{(<=g+?=K+oXW*$)g zpW^|B0buOYw#zB_LegR6G}fHUct3M4vR<2s+jIHKO7>iesoH|do_m&iGuW=cG^|4< z9&5*=`5bVCNvzdq^Qh&dQV?M9o{HgfT>e9fczEkVEVY#t$$cGV^}8+=PxUKEg+)z# zzE=Qqjn?}lBUb_@Bl(&-r3{5|6u66pP@bu@hO#U!%vHTtN`Nc}_JE0#uE6CauQAk` zN9sTUNy40pW(5BHXA~9KsM5+5YeyL=oj%FUbqSR4*OfBWYd{NtyB6Rwad2{JGCTjV z82h87QqN*9G!8k8g^8f!u&CgP3@+AsQY5a{vgGN*TVDoX_`+(z9a2My7@83JhaM9` zraibiYQ7r8nm(fSAjDFMCJ7@IcWIRzZ0Rh#4E<~fqAH?c)=JCHW&=5!ZA`SPhX6@m zKqPYLv8e(b3giH{Q}%v2cxp`ce$e9eICe0t z#(D-;*lwC3u)=m2;pUz&G#GZmL5bQMkax;>ST0|GZ&JSgbsnA>aitL&8*%&N6hwkL zRw83W?;2;b#ZI!da=l{sIWAY_Xgd_cg6?vkB6RYk>*6qVVPy;j3rXlmXVCt9aM9V70{n7gjfP{G$a#q}ic3vf0HCv{ATO z!bc)TL{JI#NM9XF()=3LjX`^2S!uFxbEf!U{7lg-y>xt>lUn;M>ws5Ri`HW1ZR=Ns|rkiJ@%LsJu{XkBn1+Pog0oA5K~bQl2}9#IhBL2Q$2{B`ok z-+&$I%4gb2s$>>)&D3%g4VJ{@Og0 ze@LNxpehZnQJzR>fk5?&^ns3&kV!lWWoDZq<49QZPmyXOCk^M#{Z(y~0d9b)h68|+ zqu z$Qr=g26*l>UV$`JK6d|#E?m{BzJkg2h@ON(Z{l<*xA83(d?8i6S(=Ezo3Dg(=i=07 zVhJ%?iH)iajKvZoLh?X|4G%g`O|DA0TFkt4sW=om?OtjJaO0o19S0>`nuaxWy>#_% zHwE4Ud|S6-`P1A3b};EpY+t(sJ27FU;|T#qrLCtqSFwsW@&{t(djJRrOu|T994-Ah zaJz=|Cytk)RD4Z^z+~O!EusK9d6Tuf+oGE8D6t219|=g(tnTet3^U@-UUc)77vLQVLS56S&O%1b**?l z_AuW^p6j69k*oXinYxP${Oa?7Jw)}3$hqZBSmOD2oeG{L!ObNE)=TZr`zilw9OSQ? zxSsi^{JS3Ao8+s@l5Foy@~ve_9@CrTd&`nMwl~Q`%aT02H_6YIC3#$Ll3y=Na$0W^ zTjf>uy2ARBpn) z8P5@w{XN;{QxKjHu6rHAo3F>uNb?Q&O*CWceKJfDTz}YgZ^TCd$Q5ya59T_;C}j2p zqjeuZ_|+${e*?aM&8zN$7Jwt&=X!#?>$=cO6i2iN?Q(@JHVUeDN~SS7wQ9iITV|gW z3r^8OVuiEu!joP|Dcnu5hYXXm6f%i8Ny#2zMwlKae zFz6K+Z;4<`w;6Z6MC}(Iu1ISgzc29U6?kur;O!U2tcCGIfkCgp_}hbkf$P z`N}JxV7dkVE1+%Qk8iy2>0SD8jHQ83FTg4Vokzhu{bB)&QhKl`?&Ui#oqDV5;c>4Q zg~@QX*9#iPO_6d@*S*|-a!+2)xw|gS*YKQ^X1Mz`Ml0eWrlV$aiuOG)kG}_4VH;I_ zFTT|YqQ-T>vk?CS#*eSQi4#~?NVf4KSa562$5#n4o$C9L&n;iJIp6wxgyrZJ=RQ3L z+2EnRKVCflyc|BI3;9_Gk5Vo0ZxNZ``0Dw4HDr91>yB@{;Jl~bqIVe21P=T=Kpb{m zI=*^(td-gTqf1r{I>hCP&=&$KR$+W~_48c(@YP}Vmp5b4@$X76yp)Ega8aA!Ww4sE zuJaFYLMJ8`@{b6C`JD3HlM=!I#NhN;u#>v}{|wK}!(f*LU!2ext(3_MY8``gJG1ys z0DX<>2jMQIizR>9%fhO*H=GerFgT5qy5ZbdDT^K|U}5BfU=>m+8=;Bk++gIItI+Zc zPEZSY)-4z-QFXdczFa&X48@1}a(EbR7*@KD#i|Ty6+}0qX{F+@PDjh%)jJrDbMjbq zgaXB}Ohf@Fj4B0+h60BtGD!UgWA!fS>4U9Ux$68uuv{2*=9Gb+-5{1 z*=AA_+iZIR0X8nr#S_gm)7wl^Z_`Yy_I{cvZ2!IuMciTyH5YHF6>^%U(wt#aA*XGs z>8lg%B$c)8#D3M&PEu>oC($%B$)=Gyo2HRECz~dKa5&jCEXS<%)2W-#bsoZaa?8iR zFziKc)Z=J=R(g&JV`&AqvN(1&u0~KTji`Y`vvZl?iDHy}!dyz8fyGd;Xr?m5fPkcH z2DvP*{*-6`4pxt}v+6!%-?)*)y||H@2Z)=rkil(k8Eyn5!#s%_2?rS z&WKz6IKFi}f~N9kl{@n$yX8;Nb`H!3N-u&n4v864)Nny?b1iZU zy$l~V-Eh~XGO<7{l$A4?&)Eu@f}sV}Ffre;pPOmM@K#pW3`x&e6q}m{XVijCBI!XK zjZOv#vg6E<6c|zpA`|w<@pVfO-N`}&FDIjX5-Bk z^Ps2^;eNeGglnI|HTNG5NliXdT9AQ4 zI&8ZHvyzx4VP)wtwxQ0g1%91-;F>V(sYTMu7RK8rcyse zoL#$VXS|BM5>JB5`mlhn3}ETF+7c&V(FrP%PkF{_;@pX?kD+naa^*6>lh(2;=dXKk z@~T1zxW+Ontu6Tw)3R1JN%boba8R3@ATxGJd17mRJOqhFQV24rSU|y8+JFp_AOiyu z*mIoJ&ohn=M;@v&y`!}|0?v0+EWVjaJgLDjGlo3Yoh&J1N`mo*eNY5T-LQmgNRezv zk!%uZHc1i7HBW2}Z44;_6AU59Tu71JSk_P^mjszhfXqfjzB~e%FXcm!`HBUU4~d*l zg3KQjk+Jp;ffxD_xez0AAz4x(Dv6A;ei7P;4%?iS#pyFzcSjW|mWp9nMV1vNHjP+h zS(QcWOO{qNrAZQs>!?&XR`Tp_gRf*_0?1^m_W%c6pTQO;os3M!BK;|MHl5muamYWz z%%~8o6UJt6iymesEvQz*r>IKT6P*a);1oP$ynCt5C}WIs0d%5=2CAP&^kmR5OAE(W91yk^UB zJs+tEXB)WO&w^s}d<~0|SP%y&sq9Zj*}UF-!dH{|h_g`#2cDGOb3gra);%!~x;w5m z=;z(`7m;ZqcY19^D=<2pZ$0)6eLLm5nudCGGv9i9b4i~T#OSUs> z7Pa$%R$SJe(k2$c-lh%_B%x{tTJhy@53b^0X2tnJyDWwI29&ISv+=ik^j)MT2=Pnu z4>JIjXLw*5XQq{FoDt_5`PTEpp_o3UF`|v;ZC9oxbu@g;hOuGrv;YS2$HJW0sdKD8 z8GZ0q`x>j0h7+5ojskh)H{RoQ{Syz-CAs0-$KsUGaPu)AbIA$U!w(sxZ1fZR6tjV6 z>lsadAuh6luSedC5vM%QJnOL%h4aek$UEa-qK^(6Ia7GV)em`ai{ZTiv*wF zd^GkCq(i*2%ebvV8R?QN3!e+C&RGIY5l#YTzK?C56>4k(jqxrGUB(hM*l@%%>>9#= zV9gRRiP3VHyrEx`^H7*;fB`gO;iGA*|Jb|gpA^>z5z$tQ#)Iel7f3JSz*foHqM64pivFB zwb$K?csZxonlx~AjPZ*0&D3ca?Z&-nPc7eZF(biNJ`tR~$@Am^)h&D@}k zSkefNeP8U_{DyUNyUgW`Z-inLfx!$C;GGXUIp3hK!{5r{O^0!{%XgT*3IDE33$$lP zXRy0in|89DZ^2#tHhyGvm+gE9P7TFkZ+H8<@b1ZW?#HK?ZG6_;(EKMz&Ikk;D%i`N z&cDLH^V04E_$Z(9se6+8t>CJ+A-{(>>L#%`gHf;>FQ8`Xm)9Pjk)knoz~+P||2~q{ zr_=R9MgzLUZP2UZA*4Y^gCM+_Kr_K6g;_mk@PHJNEo2(EdiBR=HJLvm73ngjHs;lF z?c*X<6uC7DNkb}A@+|o>80foND z>^vnksjK~KpNS<=5>%z$hq&r9_YnnMt=gX2sbMW^+0dD(kC>9;V7@8vHku{O^&n-Ad!iJQt3RTD+Hphoc5^We(UpoupRYllt8MFr5vQ26Zl!FJ zM!731?XScg1mJ8KK|&6w=hkVj%^* zl3Xd5n{3ueh}fkfJ@1O^NLPzji5I);k8EEEr0`t#k@yVzwRL#=7-vArYNfD7hVN=$ zgfK)2@UMYNK1_u9Ms)29r_y1hWhi&@g~2PY_d8@#!g^u0i=$PCtS_^S&JMmzJUS}O zV`F&2EW6SZW=6KXHg&>Id!OKCP&-gJ`^Ywq#R2Sx#Kuwhh&I@J4?Xwuh_>o92dSw! ztC#P|IT@Z-GdxsoYGMk*du&t6w=!djK=3@{5YMTxYFil2_e zN9jXhe}~aD3dgUo|Hc*IY=kehp#$3Ccr002nU&pzuHl^kvYjJr`;54^IZWBek@Q?}A~8 zer+0~HhGp*%wj<^u(e)WQ-YoOVAGak0*zG;GbLHoKc<;)P|t*Av`0ES02r| zl(`pjKk@+@66C-@zNQ#f&aG$tI##%b9}dX9pjztKi|sgmZfg7%%V)jR-=N2Nq*bnh zC7G;BH=2oldQFopu&UP;Af7^ZWw91A_EFX z>*49gw8jq)Pbhc{gjjZR>3KX1GO49xJrbgVFBwKZ-7o>aerDFgPb)AcEh-3QLG1e zS|9{1jUVDf^tXtuuk~TG8@7vm-s5ln4ndX0=3abi86Uzgy3A7lR*^xu@{TQ@DKb2{ zJnL3!24!OyjVm|qtTxKdYSZ}X*UO&BsMun=LfYYq1UDSeYv3A``gItyxv5)Vm!^Q5 zQqbC5bZ}qRnutob2Yjr$5L$KMfQk01i?4*1kx)YqAh*Zd2aqmpN+DK2*@qV>2Mk4j zA?=UD7ZWu$DNEzybB)8`#h-Tq75j`QbwV|R96PI7{9Xz;o?peISGfLmC;Ln=p*##C17e5(5JU~p-(_Hw?PDyXP$!rku`4Uh)F7Av&cX|7c#a*$mk>m zx|B@E3m*bq0Kh_f_`B%u2ZUzhb87PfOQVICNIqJ#5G;7{Q&2Z>4G1l^_7tFN6XF0_ z6IvUW^aX^TSLk_*W5(p()HeqzRnQCtY>J2d%rIZ3A~4>)#h?)j9JXHb-@%U6M8hBy zURsf8MSlJ}Vgv+CinJld2uSS)Skjk%_X17M7Hg&<}>W%2}qrzog; z+nxo^rTAR{l(0X;xImA~)r!*VSD_G~2F0bBAEFcHYq(g(f?cUFxUqQjqhyN_0cHZ% zVJ?Pdm|GXkcAxaYrr!zFg;^E~PZ9Y$Xk&jR?+Z#(>8v79w_jjGe2MpVeDMS|=3C|Qc{xJBo%&7*DfKF`w_PxFWkgRD_-YCsKu>$y^ELdS19-4* zhl2;$_Wc-Cqy#S4JmgC}!K)4d6yG`bY43YOb(lD8PpGMlFi1@5j?xuVSd$psdrFHn zT`H+{aUCsGOCy%b3-#^vM432;;3VcRX&Y?-PO_f1I88cuL{PAsq+R0jRKTQyf1wxu zNtL;x3nc3Wv7ara(*6?FgONX-+JtnZYgqq8Sy1EhGd8)TA6X8!j60nIkbM4Wh|f#^ zVvXBn{9vZ_<+eD)XyszRxC+B78 zjFDFJ@5c+hLNwMRNWBu}Vi#cMS+8AT!J4!@ca<*&G|Lbp-p%EgbQ7_}31xOMs#)^# zm16A#53eTE)MnPCR3uHxw5Ci?6q@$|0~kwe9XDVFA(?y}x%V1cckf3+idTW7m#QzL zUHmv5%#g@gvwub~$G(4bZ@xOz8W*u>P)fv(%nb;sp8+6cyQ$e;7!AMxhrwI&p*=B+ zK|DLlUzT_Bz=~#G_OE1L_w7khvc9H2*Lu?@>uR@@N-9BA$IN7JzOa6Mv!Fd(+Pm+? z&5(5EJdeW~p@@Dq8uB5PVy4Sy*w@|%;pUQ=y|Xxq^&(XOYMV`$DtX%b_97OG$@(~+ z<%B-FH&M*jV2(_dyM;^^dvFE-wpRr@HMGyVwl!U=F}&M^D{Vm$4T{*urbJ5QlsP!6!^puLfxdI;c} zV4GI0l^INe>Ux&UGn*HnoK>YQ zP>O~gX25GM=w~8)IJfoG8%EsxcvZ_$Rl`zQIMzO-GYTOU;)VN5z7}j#XoDCs2%l=8 z+|{6iOIhAXpgRso4E3Z{Hp8Ir{J-KxP#H%qD#FOE5!u;Bk7Z9$ax0D}zdSp&jRJp4d?H zmte&^*56IrEWyqQ2SaAaoB-;60DAj(B2;cKXxZ1H?3ec``@$95fpt?>)n*ZUj@}8BRL&Hlz>Gbi4;3D+1{yVuSBY*o)UdBP?eBv6oLpoIQnG zu$O4B(It<_dSTM;HOLybkT(^S=OEPST_KsQMs}hKaY-9|j%`2nPW0JfwuM?;Q*3y%7&3;P_N@hfasJ1F zt~PM*SciAMHc`s=4DTYOR5I0b(YUCr4T)qJ-;H6M$1*LiCl5BI5=3mVgLS}^F~&D- z;ZlsFs|$+02z1!&etq1TU3fjKoE+?sh(b@@tWQH>9AtT#ede$@?TtxX7(><_2^Xp5 zxwqq`C0qiNC2Ek2o2iw+bXbIM%e4vc(5|qUQW1hYb@5^^?mU!o^ViqLZF<96Vt8s| zgW&v^kkHU?v6t~U8M8bE5_WlN`u==s{z7{;iKb7`1WlgshUbBsnx;F+a|7e zLWis+t}!^qA>>;aeb$=3j@=lrzGy;}tF*-WlVnal(9@5ac-f`IWiOZ|-_|<|c<|4z zY3zF;Y@e9*d;=WQpR8fDP0h<>ih!1HZRmT|!&qlnZfCcvuSM75W7|X#N1tBv<8bs? z24vfLsY8Lw2-g;p)(%nhwp^Q1MV<~JNeyyIXu09haD=(lN&H?7>G8TQ{jrE6k`cSn z8T;ixa2+L7p3>z9uXx#H$^2SeW0grhzV}>Bf0jl-sY{_Zs}_qR;V|eyjbmMxenC$o z1bh@h^!nv6<&DMA>z5zT)&qQm-tP>0Esdz-=80tU((OhDPgYD3nQKhsXc#%@wP(U; z(zq5?0$L{Py7WsWG(sv7MX(b6a+pf2ja8ywel0Gl#BZWXFgYtB*-(i({LO|%W*QDd zYUm!V>(Vb+YJ^}JMG(t=ISiH?Vp#Ue??~nd%U?!VGC8r7Y!=HIiws7b#qwfeNxxvJ z5rSnDaSPDtm&0H=zB-0xKLB{b8}K7Ee;A?32%;(3faVW;hHnpGq|87c@0O z(2OF8X1^R3&5bcM`vGtycZB9QA~cztXi7GV=267Pp8MiF7px2mn(omE#!2fj7T1Tt z5$6r`OC>ZyDj`fmBDOmne(_v6esu(sADsbyGzxx%d+!q8n1x*tq-azezfpAd`di>> zZ^aMHtT6&_n#(WU&131Dkc`VPxigGNVq(ex2aExFH~cu3i*A9Mdy-tUxeFlC|FGkpU(cOFk111FaGGtgULUgN1 zWE7RCUIOS$Boy?YC^=+7Aq-8jf+Kc!> zy%=HZMR#+F0TTk-)GI2J^-?U8$S5jNy#&xs0HVsv*#ziz|A-&2dk#ZyXgwfWLiCu; zETdx=7ovPm)_mt`zVQieg6T2&7~MDD3urUT>%I^lly{EgqsQc9^o_U)JfIgP9?26A zE={1@a|5%ytM!T%v%oSeb3-F!T@?#PT9)oS1$gv-BplCdpNB~M%(f)Nw8HO%=tV+1 z`&zF3a3Xs?0;1W2T}!|7atz|CJRPu*Rcv==@!xtdKy^7I5w>d#!B>8|}{T9QmpB^oS= zNNq+Y@O;W*&&GEh`euCZVRkQO8!>kF3?6%BHXK;jaAZxSRpj8#{g`+AiM&16tK~Bt zmQ~2|c*~vrF(fgx=kf@Y)5RXq8$EL)&SjnpdplIXO=oU)kq&3ZS$`(*GG}IU*?hJ< zQ_NoE&t&Mo2mvC>PeYV{7oV$?y#e7J0=#(!;#Dt2iTSj@y8t=LD9+L&Bycbu%>TGn zfdHX~yBx$FZzfm7)_O4ekjROKXEUjP0lf7F-e6h)7Bb~|H&b&m7Zs^zU_z-7Ql7_8 z4JY&$;S{r!o_SQ-aR<|be)TedKON_d-k3-{#oEJQI=J~391Obn8M_H44%b0{Bq$I1 z!R|e!ppxE!U(GnhoDm!VHDG9jVKD6jOr`=Oa~T7MmJe$3kL`jSkTs^fr&G?t6Kz0E^%xL6;p|qcv&~sS3WQShI)QyffoH z$-<|`)BlIPcaQUGdjG%I+Iy`%?>V1ms;Q=$DN{4mbkISiBtUF&-9c~5-4-|zjq@B8=o{c+Eu)_XtqI_|aB zzSgyl+wJs;IxNkMUe){{`e+J_oZ`m~W1ny?W-4hVFMUiZfy#kCg)8GXx$2osZtN1z z`&7;6edw6yEuIiQYztc1f$($B!$ZVAA>WoKbato*6Zrwz&frVx@Edg$K3@1Gb=bO( zz`HnNALWL>KT7y4GaimUi&5`U;^{Dz@O$c9g0IzlB3itM!H;>P_fc*0~Z{3JS8NC{aIMJO?Pb&<{lH=%$>@=8(+p%9{r@30b6$J5E z=M=%>dros{Kx+u7d8kcwCc4*#j&zWBqU5637oxaxbp>ff`{u?_B=QyZOyoTM$8R$I zFHZNH(+Aeak_&ub9ltW=vbttPbf($B$ZS;t=zwsJkk%EQ5ySNK$V+z zI3VFTUO$1GS()Dshu6kjN7np0df_~jyN62ZS|ZoxurP6#?lub(+B@a8fn86|X{0Tu zXdEu+p^!iK(XW#kNK?n#2}M`vMJdBQ{*(l&V~J#9fH26U$o5+|U z9YVwEnftms3xMd?-6<^WnWv#e{&VR%_6xkBXWGK@Fdt`f%!hT+EYKIm|2{ z7HAdoI~B03qJ6LO%sI*bDb17(Xi6F?`(ar4VOU`xlGA$tt1_2Cg*d~m&0kXU@2YscxpMK1j$+DaSoB604+>vHB9 zulf&cS?l*?gttm64vqJR_1CXa)-)jy7MG|Q@-cPPpPJZ2+U0i{Jqd?d?(m&Kjps*`=6gdYHbNk)ErYGq&kE# zWtPUP=jj=mpd6|D`2(6OCkR=V~U-TAPkEL_Y>GUTTw0tuiv2epcx6#!3 zPS=xfrqh{}=h0+JFo6}$2}rZk@)P57vguT0m;VpMIUS$+ATG}yj*tx;KO8BVK|d5W znwOw_CYjvuV12VuO(^}xQTnkSJbb|tsh6Z_*8FyI+gv`weg|EPOm8lJqD4<$!>o*Y zz4KVFVMBt)#hHX?JMj@GZaDbCW4_cr3*MvKaIkjVl-ImP-?MPh^L@OV@oEpHs|aNw z^%pVG`tkSa!zJ!J?c@a+T$a;1H+qSWJi{Ho@%*iJc0%toXS>JQ?s2x)aeXxO=YnCm z=h5Nax!GjUBrjeRx{_9hF@Sv?*L|bCR#Yk+3$plO+DIpbly1p4mr}Zo`WEC;qwx=f zP2xMIVubtTX-t#<{@d2;pBgXuemqjeA25!JPD7&3FSlftxm)LzOVN`)6j5WeQcYv> zm}P`+mPLJitkp#w>$rqcl|>3?sL#-6^)8_`mC$I=oOvzIraddHPG-{4d#4z3-5&EOX|j# z&mnKLS}&kgjrY)HQ6WV@fPG2y*)Y08`;MZu*>RAQ8CTqgmUBWu$&6s18eg))f;Fdn z5s=Oo(5r%dM)W=5qPgUl{Gf|OJM3KZPMvyc)zF7`G1R)C^^yQ z;BaEZk8GxNdR|L)_5Iat?_SEQW+)G?At?bC*rKkupy(4;DFN+!=|P7*-Ai{%vgu+T zU8J}~vUXbBp!#OmwUt|OtbEg_aWIzD+x9NK(5C~V=#>AwYhW}^8h;;!7PNTqAEJoq zL{&%OMiW>amM8*_0>f1_@_EWU)C>0jv!NW z(ZPukXQ8^u1(Q(Rz^CmAC|9>a25)^-A$2Z9r)=|KZW!l+m^d$`ccA$1?*LV$h2$zW z;+Sh1_6vn%7AtYZm%BzgiB8d=FY%(%Bt=THrLB*|rf^rB^Abc@tBc@c_hD%4P!xn` z=<#z(=|zOCQvoUL=5uj+T`1m@vuJRuYrNC)QQ|Zz<;X9(A4o^9lqBLC-y9olreeQ@ zNF&akr?buDOCrus^Oba&ZsOT(Oe`FH^Jy^&b(hi$3sd8~i0@DwNtNd^K1gL;LitTf z3rfwYkFvTc#p8{`NLZRGPVz|(Mb*q8DU!v(@@Ct(lD@?W9#sYB)GNt0E+7}E3$Ep7 zUdaW4&q?&%)B8~`nnp9bR+CQw{6l&^^J#Od=bljp%c21&+TmOh_$Q2}Apox=t)?sL zK$oP{j5$J;Z%iS5WTE^4dOB`L-z%%!%zJP88MFRx2tJf=u6gj$Qv z#h|4}N#)(hj)j=0j!~U)*WU!srP1D45G#1qv8@AX#$4CD7Olf9NPL;w1`sUWV_2cE^T+|ZpTz+Oh9v` z<|m4-da1bv=I<$$0a5C+K7@RpE8W_<(nw($j6bFU6<~Qol(2hQqPkR3W2yu=nt(Mc zngas%i*ElYdYD2i|A|V0lrZ;Q&4gN^9#+(d!i(`+0EC=PqkO{Ha5PlX4j)0%UzkGbNzVvVua-6dCzEAGF~9@l+gC2>R{+Sfgp&fsQ+R0_$|?4 zhw?{}7Bma8l>OhtP5xmmd--EX3#~m`K{*7q6KQiE%h^xNdS=w0D=5A63883TpVGu# zBodinZN`jGDDCK495@vlHJcp7>f5x^GA`gsOmaLFh>`M2N)hXRh_`~`h2HKG3hn*> zX}mG}*IZ-5B^FIelbEE)O8uDh7)3L4iavuBeUG@d<0YzofMb?=^Rld_RK4hUEsSCp zXVB+rmQZfErJL?u#VYGC>oVgy&mC_^g!C zq{8E5O?KSUMT*A`u$Y3^qAolH|Rav8iyw>73a=t$3Mxe~Rj z{ysV6>m(|Z*8lS|p}xB-0N(k z8B2Zpgp%#fEspr7o%~V|q7}y#w{x~!9O8?M!xd|6_+bEC7XKVs^Jl}zC@RYSz!eBx zxB{UvXSp0rY`32OR3P?m1!B)jt`UEJ?B^O|Lgahg~|W_p8r?xdGr6B?|I4p$?v(x{x9hDUQWAeJqKNVC1$Da+!`H3CbTq%V$c8=sZSP#Jed576|by+LPmI%<{`x z2wKI0*0#;EIR16LzIX@hnO0mt-gTq&v3|l@XwA{ZVmj&r`Qo0{cS}}yEB-N0yaQvD zo~lD((YkyZ~*Fn_@Z~$D^}CxrsWog?_os z9KVbl#e9S2HnQkILmfD)4p!dyXUHt){*Jq@)>~4GGLHw>z5D1B1mWj*hil(U%H+3l_5#j)9k&Bc)NcjBHJi(uxf#(|M$>9bs zfkQsf!&AS5gLe7g&Xc3jHabu4d2&hJ`-w<$&}^kB6Hy%iaYQGzTwBibpS%&3wye>= z96s(BDu3;0ETwBdRS8(zb)Vamqq=(GDu8(F>B)sGewjZ=7^^l4>Nm#B*X$8d1;hL?f1J^iqn>eRZAJ za>YIe)^x=_3-K}0#nE|g9O&qiQjiCHU7Zm{(ja@*~G2KT_y6uY%uAl_a5cF_`RMZ0 zFyZ*PP|buV9FuVR=1q0@C(}=!x52r`JR75VJbGTXSCeg!bPw0M>*Ei9z)btJ~kb|8; zvyNH@}J*@R?C5?$l(YQH4Ip8yR+K9Eg|krJAXzB^5g;;|*1rAwdi<^8ls zS&58^l)p&O%yny;CyjoR+!xWFgal|BC}+C&VeCEB?dG)P8ZRflITk8i&UuTZ(SOA{ zM-Xs^UmiGcKFHa{=`k@O6pCq0^j^>mM^c7iQ(AGIT-*ig8r(wH_!b$Xhh-eIAs44; zLmJYt;Tfa%!0jAPW=ZqPyOK*;*|e+XDzWIAriQ9_ujXrHgjAfe*<&JGVkUt03Ao4Lg0o`;ioo!zVO*DpJY zYY2;aPhV?4sYvasq$*%Ok0QkUo@biV zPIxptZiyfbTw@vlHzs1DuG#tI9v8IujJ@TsH;OBd&iW6Pk&Ybdhc*ZlWL0%cA3#Ccch4cH$fKSfCEcw?@mcaHKnejr^g#+XIfSOs1mPZsAjx@? zy`lWc8-Bd;&a4?R?!|b^J+Ji}Tz`G_66M!_m4B|X{-2wFQQ7j~G0!m@^`Kr@4~$#j z*_bo+pK_Q^Ye1EExgJ|aeydesI7t!f){8dgT>hslr&F)oD-ve8R2^Ec()vZWW|Hjr>vnf@eX44S$a2*_^#ta)1;8*uFta-4$Q=D_^}h;#ZQWv_#XY*oL2QQ4T41y z6Su>{H z?tC>HGY@?YdP2y28e@<%%|9RqF=v`jBL|o`?hr>VsEY<`5(yt77z8?T2W~ia$!DvW zXMlr_&{Ct`kRRwhvO_#NW_B2mxQQQ;K~C}GdWj$7MlQ$9y+kB|&i4>M(a_laa9B}j z3_}TAX#Yj>{uWWKnh}xs!2{5Vu!;PraXF>8a`zLds?q(#jcBtP?S3MuJobWlzfL6o za>jf@x6t>*17lpqS1rh{Gt0(f%ipbaBYlI{y5UKwGH`tg(9!Gz9j~=Fp0j{@i#g4D zjy}RI25D75 z2OYgmzdbrBRdDv$(N|o3`53rJnx|D3O;Q$|bGB;ms^+=Of?nsG)`RRyiA%bXUH7ZX zFNI_JqjgAW=RUYHF}^;*Z@P`51)Yd}5dHsz{&yw^55-fs^#3!urgW-8x<7-IA-JPF z!5J_-=0B2trxPcVJ37yk?cfIgPow`h2a%L8IZGiyo-$BN6CX_s)Z2;6$vlv_lg!`w zP9zEUs}$~M@^yX^uA3*pO`eDAu6%t8n`g4^h3xWjz8=rlbJ<+X=HqNGXLAjko7jAt z%^hqWX7l{ye#wCvo{TiCONDt_I?M)ilzpJSu7&Fl>cTv!5ax;^nCsZ=-n5`;pcXWr z-aJsxvH1?0-?JIl0{0uR*@?}8Y?iY*tp&n)w#5T2)~JnC?E-bE#r76~%4!L-bxYWu z%I5ge2k6e?(z{CowXGEQzbb_ruNAIK*&NUcagE^XC2VeH^LsWUt>LmBn_XJtxq9<; zaXZ{^%Vy7Zc$PtIUe9+Xuz3rc|6=oYHs`RpfX#>4T*BruHVfM$C9T*zyFJo5tpo0? z?FcjO1jIOy%@J&-cfy_8Y_=kkDvs0`ydM<}(r7(IBYGo150PDCJ~vd;9Z*Z5fL(Sc zLVe3uhTaIQqq0=<`?1|MWS2p8_)PY93;Rn^gPGwq*Ai(P;X@>LW}C zh%(eU>T!)H`jhs0-d?%44vg%TGjh9FY?^#40iN-Kpz%*1{>s655<>U`59L9ONVVb&;X_Ol8 zA)RxWu2DBLJ;O9wO<~%?G)7Hh`iW_*n!!}tN0`^DJDE-*s-vz`cY6_v?{uP$v>Rxp z7f&>RX`ImcOgE}EY&V!`qI%uKvtLG}RE65+A?I%-x`}ANhw{6NWU^J0mG&o54lW_P zSLr-Vl@U(Xmjiz_w779B}JxTPrTCJut zy+X8)XoevXptcg7Ms&MT4bs#XL{_~=$km|M|QbU&1O2xv>8M(BwP4< zOQ<2!+iD)$9ZyuH-cbvf&ScuE9$>nX=zGfTRZKIO-cxIs9whovZC9T$JxBD5dSC5l zT1WI7m4vp4{Uf&fP-QZGMf4|?#6YHBh&=s?x_~JmXruzYQ(encNYqz-s&2O^+jc^C zFr6hdi>X{_Hq&iFbC~`uG?!_$&^)HCLi3qE7h1^lm(T-D1#vDdi19E6jjX4iWpXt#UoQ{hNluI+e;rBcuH;Z|CbG0cVr>8!GMDK%O~V`% z!wRAgXvKbIfOq9Bwky(avcDZn#riF#Dxr6n{t%+>ib_*y5yViU-wRL+>Isp0PBFA* zYOX(Kf8B(3vcG{$E%a{oH$>=j_BW2HrT&WjO%?i@?G`eX>hIX@NudL5w~ncm{)z40 z7W$d(K4)sJkFebVq2Jlg#N!#-=)c%5T}a2_8JaM))iw^L(pD&r6wEZ$o9TG^9uS_r zOemS{u4ZaSXJ5i@qEIG>Iftpe&gC!{3)NRSb6s7Dm4rPSUK&H_; zfj(eCZ9mb4v^J_K(~V5G=whZjnWpIGOpAz?dQ)}F2x3@Cbcyu4Mt4o<)XZldLk8$~#?h<47xjs3DzSg~&9-*G3Rp09~nLc6qNteaA zJghHfT1<(5iykDT@yp8-Z-YF9pNwAyNSt#QrDXjpRoYkN z<}bRYK5_b9ldk%ur`j_owa>tv?rfgJ=K0xA1zHWsUP0#YY}k&;eub{bWxqz|#B9Vh zjql&h*9)>Y2Z0)v`=JTc6}fN4Q7?@A2I_G(5qqGn&V>nIff~!#lXKzbHu9y_Be_44 z3|PX~NV8T?Q#e|!BsbA`Um;&w?f4Jw@2&M;`Ff!i!e7H~-eB_`HeFmF)QYAdP`hg3 zS@yE|YppX#8aOw23ayTEI9_d}EuPKv+VGplW|P`ylY93RefW;cN%t%+g@1pdvuckZ zUr2*d_td7hM=hw0lDZ)^jjo@qy_QUOAEr?&YyUy!>e@(;dzNi{{UMt!wV&2brcaW% z(#g%+P1lX`z9zFM?^iNU&qF=AyZ-KkCTd=Ng!4fC3L2t#jLm2H&Z}e=s4Zl+Qh(G> zwXIYnA7&Pt?btk@%`s%AtBU-us75`P|3V_n?Q9;TFp&eelad6p6&-H8C4WHDK(2L7 z)VBP$;+m-K`Q=G9uMg(W{l`0p^504_>eu{*^Z^OK0cvS#gD2^_L4yy;Y||h;MXT}# zUC4B9T>fuqfE>upo0f9sq?Cqx&6$&O*{siIV>V0JY(u8YAFaAJv~+ZSUp80QPND1E zylgTX<<%#%D6fP}m&04~PoV4b$Zw#AG_t8QPQoVM1z(M9w3qbtYZ`4zi(aF=d^MTe z_-ZFSO~d()bz^Xg=i-+LRObQaQmluJGxnf(}>)#akqqZFoA%gJiHqI{f$l3rRe>?C|<211tZdfpjN?NGjLKt=KbjdCp9R5S;A%~G7;Ca z>Avb!a0azOLmJ_FIGOOZja>FG*iPn9Hb<~oPG&UBaRp~b22R?ajyI*E;7bZ^X2Gvy zx)Qu0^)I?c8nn8%0HrxSEkdhIo+zk8=JN$5WWHQ*BAHtn^d~bn?>sW!C_u^&6imYX z{5fR0IuMm(FVLNua%?T#`A0dHajYDBf$lt>4b#c7ni356qY`We9f15#5)84A%SMbf zCD{Me{ePBMGcs9TQ5r~Ik@-*Z3bFjJ$*YyQ$EN(O+OJV)t`%`YKsKHHbZKxc=Cr~cWQ)?rJBv4ZI-8#rHp%r>6`PQv>FVdgmUM_c1`2m}I+5CacBWwmuXtyM{ zw!W&}1Ziv7WCDeGdK0|S11PVMo;7p_&k_y)wkB(Gqi^EfP4-e;^VnR(<`OoaW^*N* ztJ&Ph=0_=eDaLo`n(9E4pUBKT?kJgM$JL@E2B#d?l+2aKwI*}_ah=GlSA@5?fKBJV zsHoak*P?2_1B(!X^LtqlLU5stD?*qqwA+e0)oP-$ve91LU$mDbq`MxTit9&;AT!C*}#kVaH%dcbxDyg)R z%-T)oguWbDb-FcVHV?%D$Fi_pwAe??}5dNSxuaP;N?_A5~R5tHygS0)s*N@RP!uhCC zb&Pu(1*&1&xk-U4Zuf4n8$cRVlB)2@KdPigxRx%s5+Npy%x&8Hhdwxf=R?YQIr zZkwDCsGY|noNw4X%w}9W&eZr z&-FIl-^#W-+5CphpV>4WU1+iC{GCGk&vmI?E289}U~@W~cTxC(dXTRl`-ixObO=LeSG=Cxx9%8^T7D4Oujp%(oc6l^kB;77m+MwS`oopJbtHciFaGZKT z2<1?u-Vv9dlFO!Qzu2KPi&b8M3lpVTqWUsz&a@wE zQ++9vm3EtHqp}MT<_2AucDHG#j%S*p+N8}l9aP_tCYz3Gm{50e*-70h{?1NYWV)zF zLt0|Gs*OUIQYhWkZlSBwo;4>UGWv6MsfPopOVxzB)I*)xm|berr5@@TA=IUwij+%) zqEVN6ssTc%OTE+*A=IT)RpdD55_PG!N^0r|wdZtP(x0nYeH^GtgZI6UDixP_i~Fcf zLX*;7HfN|)9H~iZ>&%(z3?}#XpQ+Aeno6?ZW3s!`ky=kVah7^rXmi>q|7_Kv8KQ*0 z1LkZs$dPK1e#8t=K&n*(wo`~)PAN7 zdRBTHJ4hW7T9`h{zfk33(FWDXCFzw!`HmuZi!W5i2_fe%RL#WY3+Wx~g{rmK;qAW= zLC~Mer3+OTw!5oV(^jX|4ejjy^xovp{Z%Ian0|IOk=?~Hl#p?R!tBSPxSY6Hohz}! z-{5E{>~F9-pY8VO%#7Y-H`KY*2xYK(JtmY()ea`);7B_}mC*R3QghY$=@acRwVkO_ zkIdNY4_8^Gu&dO!WZZ3s0ywJBCnx)pm$IBo4Eh@E%qEMZ>~4smDvK3g_^Y(*(;m09_MHDfRd!-Xw`9&YH-|JkbD5nK(!$J9 zenm(RlU+5T7Tglrp%zrrs?3O)9NMj`L0f9j_E<{(Eb}K@?eCk+su=o>=+-dIxU4Gs zuaN2xO%JI!>!_U(QhTDAA)Q2Ydq`&z-4W8oS$=S5NJFx6gE=9M%xVEd>EQaP}%{TXjc8jwXnfW2DB)f%CN`5P=LvVjcA7s7l<8)p8Rg&F_K}dFg z)+)OQ7W7wXe;|6u0TJG@heN_U_DD!aDTc)%+3X|c(U6YIUS%H(sa5v*!IF@=klhm@ z4avGRcrv7sStEm`A>BZBPlt3$_Km@^kosoN2%ZV)%m&>amc%30A0?G!ueQR%QPlyr5Px zRVwI2FR8skXt`ceb!nCaE?>`1jC)DFPO}e6?bDDiuc*uuKzsE2+4Ie-ssU4l@^h-} z8db)$Peb;+rpD4rI`~5^Sf`dU-KFAka^u#k)tzBiK}!Rh#cfinPh^+zkae5Y8m7v4 zNVm;uo!CKUZC0;4(vUBkRbf~5ry(caRC9zNC$^|VLXZ=0sibbsWjVb$Z>yq{96?TO zRoz0WvfI>ZA;^jMR8n{65^`d@8p>3m@^ae8eW2#CDpH|}b54r;NG;~(f1ie&_(XYq z;jcoSlmn{EL{gum#wTiv5M;(4>eT*@P+vY%=m} zZ`GG-0#k+RpEEFSpGrH&#g2Duzv?W6_vmXifvG~3<#Y(D)S`iKS)ne;xhU=%RdTNL zhj;8d^{69?{lwsaTFq3c(4rqyZ!o!*`Jmb+E+GdGs-2EBr0GFbTIRxpG(D)MF;%FM zIiSO02iba1^*PVEgls*i7Bf|->)B=2`OXfqmF$EdTYpk*FK~8{tv{<5g&k&0b2-5U7H9-iH_II^V2(tC4S}g>r@rODf1gY_-N@HbbpN7;>x`z;?sn$0$ z?a>vqoKWj&Lign~3OqeqXgS##y^yIwy^(W8oYf^4xpYF7$LZAp@I+tGjcz5q-@xSIy7;GOkqTuo~v%ZX4Y>q~GG&=)0Kq#jnqe zn6`R}vs3TnR{FGNkd?B18u`*z&tlp@WFl?#T1RRRJ^S(c2c|voRg{+F^&gIOcCAXX zvm@~gdvuptaGAw~wERXcuX4okwbM7T!sgP_PS0W5qZg9DcKTIE978+(rr05dcKSUb z#L!OfVw%h`w9~&aq3y_swAT&Gk(Ns3CD$W*eG~|-ObOACOqCI6{eC&?Lr*4`{8!03dq>@m?VM!jsLPy7*4aDi)l9DM)Jbn(LOQ!gI_XSSI$i8t zb$ub|yIpk?A;jKQH+96VVOKrjdQK-jQ5o6I6M~fLs#h_&v~<<$oE>ZTUG+Omt{l4R zy^a)0x|=Q;hcIDR7U`x}FuB&Zr+!li@%7a2IpQ#T>YYp#s8J1&P_`avP&L@)iA5OSiIUdn`Yj*0Zr=icbzE318e zaH_tH$2^%LxKbwruTDxRz@C4ZV*3A*O|m&MqVPiOqUA1o7_77a($`L zexl)eoRCiG5r2h#LMV;sO1)O7SIWTn5&B1=GNP+=q(af3(^N<5Bq5BLjnuW7Tt9rI zZs+XcQMOm>ZjMNgoD#WOPZB~ojM8;);V?Dw`WoFWq?M7;x|v?RxcDg zh)CpfDr2Szw~k;)a&Vbts`!ort7yH@q0U6 ze=LOecDnvb2=DE5eaI0>u;KC3wdU?2Wb#;|6d{a6P1i^>m7hf$H&eG}e-+dpm>8L< zYqLwd{jbO0uCJO3m-{qAxkFE5awFDv=s8S~wC|GLBTSHIU&P<34{>)CvF|5Jo5u0+ zGu)}`3E>&;)XjwO40r10OfJkjb!TVCGI^Gs$(>q+S?15uOB`{Sv-AofggHyE6GE7? z^gB#=qESRULpoq)>0d%R7=M?}x{cGRkS}v|SEdbmJ;~NNx-6t4W{#dCw7K@(X0ATW zggWmf%+rN4I26`!=j-;4xL2@H4{)R~0=ZC66Fa=c3$-`X#g0~Hq0SLP?`)y&cDu8~ zvoF+xn2<|32@CanXU93QNUsz^PAt;z2q7mH=`S2{elF5U+`V`CxkwiYA@)Uj0+VYy z7U?O@j@zR}(b|*zW$lQmrUNzTaP3Np4{3&k)^$vzniA?%`VWP6=!I0%V9L*jLpwaf z;*jumgv8@g)db1#Xw;>JET|@oS^Yb-gM3*M68brhhlIY&6Cu^9Q<(5%NDb@EH&2Ds zoapJ0I@D>Euq>ogvb!Wa8&cowGZLPQp&<#&Lt38}F)KpqUMH6N)u8k0OiZYDc~PC| z2`_~Hh7r9OrQ}g{?n!tlq?_w(_N(bO%K4D&+&T|dyCj;Juqx`$F0AuJ!s-}WmhehQ zkJed{uqLD@>WuQ&hV&f8P=gYx>1A^HTIllSI(vd@T1$58Lc6tfwkCv>j4^@rQ9B+P z3d#OS<**@YXZ^g0*%&4ES52sAA=$XR`KB`J(x#HXP5Ke8z$qIpJx*{>34>Uwb*)*b^PnSUvz{e{(eo|(B_`?@=Yif3JB+h$ z(YwX2f6glVmM**tp;V~yyjAvXeFf771!?n+9xHa^^X@j=^j;zKyx-Ghvz@=Gc}L84 zeN<>ZrSk(l^KNIig6uxjr_OP-IWIZ!BfUuI!#orDM3?d4o|Bk6^(7%4Fgx{#klNT! z^$j6;37_fPm@4BT8FuSug&-Mr>pen{47>FKAxMVZ`cEN9hCMoNE>c#>;}d&y2O&s? z&-Fb*7_Hc==Q+}K>fCMi>g`PXhzb+->8yJ>6peRtzaBi#J?#N{_A0%KsZ!&e{#Nf1 z!aMz)u63XDhqw59{k#y~;sbhTNJA2S&~EUuLg~8Mi9hO5^PNAu(}(m1A-vOvbkYK6 zhj;pr9xQ}+`jFl!gm?NEtrj|$c&C5W1&-qJP9N6ALU^YS>o!7orw{8+;t%iiVSRQ; z6BCZ;%Y^Vw|E|Y{v@GGM-YSH5`cK{Ceiu95>A&=DrhOXk^k4c1u_H?OOZR@jxx_oI zymLd^6DaRqA-vPtTO88X1nqTt(D{Sh^}OCf7*X=QK|+wi##<_cQ6uXWErP!aW$PX> zab7>BO4b15y)zvt%tpj}7YkuFBHp{&5swxocvFNhTA1i<5W@IilD9LYDx2(`_K>2# zN{x}kRPRb5j25POQ$wn<>E2Qyv@4n3;gG6qmRI($3k9QoIo{SsKox3sW@%!s*W*#P zQ)szrdCxo27!j=HmGadLV?g(Rmd0v?i#sKSjlY}q^Sl3%3 zgfYOnUfPo`KIj_tytPZ2c)Ycqw_XV2t@XT0M?BhF&-+0LBf9myvZvv%Le-^m$oJ+k zIW3`~w}`2d`}PgJrya4j*3et+NJCyX^fn4XUN`dI5`s)_c-wCNAYEKEBz+kW}*A*z7f~N+b=G6 z*6p0w#4CFSVeX0d>h(x0@-7o9tan;sQ*WFj-Lu{qiN)T7LPP2eNG$Q561tV_ntQJa z{hR!?@U{w7);lk;)Y~PruU;G5%KMgSpPo^FNMdU*^;yL37J5+j`wXYGd1Z z{h6Qv-kI3m>;D}5O;#V&KVmv~S<4;mB|5>|!8A8=Xa4-e&R+KyV0V{VkpBqLP)9uT z+Qr+(RKa?37w;n`_*XPrsDE%69Q0FCvtEdSkv#Jke{(+B3o5r-|LX zzTy)8x_Oty_&dp)#^mOGPxj_8xlm5_7BV4}-x5#uo)dovGu|Iq1*D(A!I5LJYN&dV7tS-1GJJS_vVB)4j47e|^2dp})>aeZA{q z{Pp#2jq%sdTgv2m$^E@&m|WTR_g)F<0DUF(!;rj$Grb=}Iv9Vpm$C|}cCv1um+pw= z*+8#I2=eS)Z@3WTS(!I2q$+!!N830N3d^$#yoN%MXM?;hAywH6y+J~dXBT_>L#nca zy=kjmD3E8DdJ|r81PM08+b#qNHpE-F#@Rt;4fV3tGI6hGm^a6fh6EetZ4!b6yUg1z z1POMTw^s-f>@siYYl{9V74-Sbz5R|@f?eT#BLoR{h4;N9mS9(SDeK_R%~xIN)ndYY z)sUnS-Ylj{p0B#f8@t}cfIinqukJ=i=yQ$qIyho!GtwI;1Zg_bqeRgk%63X*q?g8o zw_{9Fxwnw1Qfy>PBv15J6wO)Uw zeH#7uYrVrlSV=O@OL{#T`~0LEy+S6$zBp;3_XCrQ{U$H+23#Wc^&uf*e82CnOy9Xy%#qllzkepPxZDi;n}w(P4m7LyN&suCe8GIe-kcU?6-TF zTR@2Y`=mR(dO}|i&GJf^T_-eUJD_V<{Gb)5K426cd8IdbB%Y7 z5K426cc~Eaa}AvdfP>onD^2)oURxa~iyoyv^&*G?gU7=Hz$7Qt6vLG4h^w zfwLojyOOtiSBby<>0c+m@9o%z_%Lp>KmL915Ys-MHF@9D@4^mmj(9}rBd@yD zLz%zJo8ySnxyyS<2A*{tY=#>d!EzVEg2qDZKAEG0doIk9>IOI(c zLQVeJn<0dn{EIhR2sQbzcb_BfWgYSUEp`}NJK{Yrgf{#)ZxfSSiSWC(SqN?T@7{KC z2~FU4uk8+(7HBL-y>cP+vi|U{6N3Kor#CUAD*Kl=MF<*;_Gg4tMPDtSEd-6l`1gfW zWv#zR2pUA3|CkW;mx%wg5cHRLe}xeAmw10QQ)L8WjtTx6XUDomg1=4(x<-P(QT$CqI1T(vA&lZQ z^y>&=^rw;EPzYl)g?^C`#%2ormO>btDfHV3VQi+*KVJxAGfn)7LKvGl&R^t+$7YKB zB|;dRDe_kcVQi+zUnl-BHdEwp4QXORQ-7Bb#%7BB??PHe2e2L$!q`j;KWnFZc8txm z^cxCcY^J5(qM8y~`kjR^HdE@K7Sf)e)IV1UV>7M%p&@NeXyuP~#4CYX`_~F#ola|i zinzqMO^X(6n(YwxcX!kA76f4vaKbUON*g|K$AlmDR*)=qZv zzjVa1r?bCb>@dR9+5cGxBRrjb|5KMQkV{?sbRo#46a9Q4^ewvjB|?x(UHy(ikV{?t zUP6#d-TZTeAeT<^2MIwgb@zvaRAo>0uM~n@I>o;xq$=CfA14I4bgF-INLBVUf2t7V z(&_%~LXb;+{5e99OMU$XLXb;+{f8a#`s;rFqe2)V@8>TO!dz=Ve}xdFR6qYkN8BUo z=dTfhBs#;d6oMq`?;l~R?-asrfgygC5c-ru{a=NkD-QMJb|F72c}KwIewHKd zWnJzUFzwTrox8#>6~dbJEBvlZZWL~W-^x09X61g45Jt>K`9+R+#B8*Gh7d-~ z#`qTsVZ>~#e~l1E%&zq(31P(SdjC!#jF^q{?-RnVsT=%9nV>7)m2!i>mT4~O-cO|5 z=-1k#=x?t2puviioBWfR?oxXiyqZ$sj}^Ob8mv#b#lPwc=kl)x+f%0c9rl9UxXo>T zPo|276~>SKP%erNYm!%tJ6@D~ZKrIao8 zcL+_*t4e*^-~Y99IX~~u)aU#iRT5@iLfZ5GxNjU`{%D1NlnL6!0khIS`Yr67#`1!n z^qq70X2aaH7yMa5A2w{0_OieGduR6<(Q3cj4~`BtJTdJRf9*j>e-XXv>z_cCyoPR# zpTy+Gh1d8SoE_^gYyB!A=r3#iv_tGK9-7BmzrGMOkF|btA!r`2`R#AdFm5rU?( z&fg(~S*Q*EPDeZowZSj_88J8=rP9Bdsgh@*UiW7*RjBMnr=@N7OMivS3UwfFVA@;$ zEG9Q6wawom1a0PBzwTidCUmLy{B9u)N!acWWx_1f(6kTyaYx{?l2*|~%ntvM5Hy_~ z{-EES9W}0Haq=3LeP75`pcO1 zX=pk-{Y@cFO!(CQ*tyiubawgQhO{hUw_o=!7aug8&;40K&~(1=Pt}?%D^z}?o72AV zw|O8pC-t?zo2e2rR0&`EJ$%?zYUn*x)Xqd{Pf+F4fo)`Wm+I2!fwXV@KbR^tw4m?( zB-&#Pf0%Xt-k-~~&#h1PpAkFgJqP_r#JPmt^P`_71l{H*f0z(-n?wFoCO2R8i@(&_ zDQG%}{Z&HHbPoG(2tl$R@#)khN{f@_M|?VG2`O_uFn_E{^4&Gf~NDA-zUL^0&PZ_p&?aSZRqeojsea(_%S$#m;{$fk@{&y>A?R7j1}A@z9nVmum=hfF zYM2z$T?p-TiW!v2E_wDU)r@n*+Ec38;D~#JX=alU^sF?qMO;F&N;A{woC@SbuST@z z)$FC6`k=EKtxiifsy4^KtGqHyp9YSw@+iZMWO8#^8RmK+w9J{N!V$O3S!Rk5TIMXX zNL-?2&N68Y5vFUIb4-09w9L7t)DgGLwavLgXqoGnVM1t`^UMuGXqoGpX+mh3>zjLp z&@$(n#Y~gcjg5w4#t zUZNIebrVPH8udsoH4~0wB7YaAw=oBp+*;!HCb0;1t}eAVg+kCO+nWxKxMsCCuQz3v zT$kFLy+U~3+nf5$VCUZV_NEC_C6Ac3H*JKl0)@h4s^C>7?ag*3mrL!t_d3D1>&bgBj~cW3IKMiIlKQjk(qn%ri{;c#if2)1x`;_G!$~b}|Q<+-l`cCen)i z@e_42g+h3uPG$g;d!kNekh9}j-pNpa^jB#y#@WeqY>iOx49}X*=2RxPez1$Vz!8t^ zbuq(*puu-B*9sx8yO<4aqG{P5-^J`^a$$BcUyEJe>@n#lnjb^EN$Fk9@1fnS^lpY0 z=~G%Js~s7u(oZtogx053rgt~bAJ6IJr#;zhbwsHi<)3VJFrjA6Hz%8eq1|`sJq$j0 zg&f4H|5Hq|Bi<2kim4-Z(92IT$1%CJ(x;e?j(BDNDW)eAp6Ke7Q_MNy5B-Op=5lcf zUAU(y4_)p`?rClom)J+!%iQINdj-AB15B=u*ULO9gg#y`^P;#!AFr3G5<(yERD)0H z&=bX@k9V4BErdQ^Z*!^;`go_C8->uv>tkjKp^w+stP?^Xub+$n@HkL%4sM=UX~H;)Tp9OZhmQV8w)^=7>zmP^;0 zt&UhPxZZrojna{)yn!pX_OChxHH=3hND6vKvH<~2+Kmz0h#?Qu^NkSMun_&3B zf3kz-IMF2I(*Q)!94DGQrb-?YxXCmZLVdZ(bY^n(Ws>RP{PEjA$@FqAc_es}xrhmA zX`3<0T>N+HZ}%rM)9 zFvBs^d@h6;j@!*ILYU#0ZA=&Uw3y+z+hhu1hT|U7PzW;|b4?2&%y7&#CkSDN<6hHK z2s0e>%vnO1;h1kO62hLs1!ja0W`!1*>xD2Yw7^Ue!mQ8&Gs_Xr3N0}AGr7E8U>;?v zbsYG`|XAuiheKPjoqfy?PIsEFtXG zd&D#n!hX@krc?;~MISX?9q~%a$4p-)x6^ZpIX|>JF<4@*7JumHJYgmXp`Y`lxlIWD zoTX;25c)Y!nTMI&voAAGFu7-6W?o~$vtOFA%zVoPO>ShyGbW)cKN0uQmz!K6^wF1_ zLLv0gmz!2X=%X(;U6|bL!1Jb?*g>~>-t-efAAN;6UtFS({(`yO*>NBJ1#@*sg$Xa2 zYlSe6@Up28LeG1(xt(dM`k-KudBxl(^aarx^QgGQ9K&noSs~1RtT$_f&|}|V-U?|* z!bY=G2z~TTX1@^n=$p(TA@tEV89E%9-*@!UH<`9V=%c@3h6|yOzS-R8i2LYonumnY zD}U2G%~TnW9{Zc-W$}kT`kUsnkR~QxFHuo{Pp4)Eos1SN?d(5+rxaan{d0q%Tx6jQ6afzPW z=cet+cv{zU+iSWDq38Cc>F0=hZeN-6h0t@`Z-xt@=k~RkAcUSznXJ}pfemc7lpJka>NW1f?n{uxylibvHWgs5Ibl=zngyvLAN<-?h(RnvOmn? zkk&;0GRuXqn@rnPA#IEJ_BA2wCJXHALfB0fvG0VmEs|hA5Q0{cY`C{q9-M%+NMHSwUcf;2w~MurtKw!RXf>s zpb%E=Vy)LBjan0?`A&v4|*nfpIKCXqG6%x(++Ib<3k85ck3W;WV?c*Vhk1Ms$g+w#G zc2!8@<67DEA&v4|+c!fRAJ^J$4{4O&#_kMhd|Vs*Wk|Gh-F_F+__((A7bZ7ra=iVG z38$C5mvOv3t{2J(r`;u1Q051VzS zt69)0PqBTNaC*tl89i--vs_wmdP#4)<7{@x60@)Ugvp&=(${__cIbiiwR;`$IBj3s zZGejby`_Hk86otR&ai3cI6L%~`rD$As_dDz!$4<;-qP8&e@In!fZZYl$v4o}J=eL! z=_Tjdu}tptlJo3Qq2io`%t3bXVCNE2@gnP80&=I9Tx9DqQ4fXsP8ZoNLg-0dY!?r4 z{vaa<+pM9Epp9N)_X|NAz0_6>b9U%c4z-Dwf!vy*VYZ*=V~%2z`suw)9Gb z>CP(|Z6`79)97i8w%di!(->__MmU!^uVl2Hz_gEhXQOS>RW6TI3e^`D(q4r z^v7g&^nW*p_2BK0dGH9^1napI35^-N5AZx_fM= zu`XpeujC#(oN1rNc_sJQv}>JRB)4JaJ+}3AAa`ELy|!CO`@+u=fOayw@}U_0F4?7HTjmATk`6YMtdc_k}t2PQX;xze8Eh|hdjY5NM{%!ieB5EIfeCv&BJ-Vw+5 zg1!G{j*mx5U$D!W+<7H0*iRktc_lB{DzU?PB`???g%HCFmOjx!DMO3?VCD<<3??^r z|FS(_2;+k<+e?KoKKQa7=7`7cU$*&USUgVXm{MGP!d=*4g`oa1O|N z`=Sue0arO(CSiFgESy-gHCPOP_?Ldc2rwiXkfVRPnsyPk<; zB%K4Y!M@An>I?289HFqFBwc8(DC-@a=b%yM>r6|}MM+0u|` zH?AEnguS^R*rdChOYF_vVHXNvZ|+C7Y__w*-rP^@GeTHf@u?ktH|*S7{F%Kbqyy$N zJ3gc~c9)$Vl9#aCKFQ?v=6-J96~c(i=hmBpFe`ag#OF3m2qP|^+k7Fciul47386Rm zg)I}ph|6AE_Z}AtMqKvUd`CRuvd>p+{ATlnFyiu?EfB(p%Wt;W5wD8) z&7K_6#Dw4NKp~8{{9%WOv@GFIyH*GzE-Gld(4`C`E;{&{$*qIX!C|q(ItU${b-#0o zF%~Zv9MYb^3pNO0jKvSOhqN`p52ife{6Tv%!QDd8mu#?D2>MbG91?~ATL(U&`;f$atq$-;k^bvwCoE^*ysmkUAhlQZi)(X}>;+_F(7HS6*9_283Z*HC7 zup?fjP$$^%m~)9$3VFe#$6f5ue(MH%g`nZq3yuh3)}(%LR0tYw{lGlo{9)drevsyf zPA9AM^Mgf8*^YY?`N1PXn19F*mN?=Why0+{Q!W(rR~iIMp9Za-eViQCxp?hl3TCwB|H6$lf% z<@#iu6eJ0KL3DCZm&wg3o)U}`!kpr%!AvHkWlzvMSS)rk>R+05dax$6qm{+MyCEGg zeS-ty@}>M&lKTbzO2m$|jLSMBsL$l`?98Avq&>lzLAQ{;3C;>eg>*;OfM5}m8yh`0 z*v^F28xLlk8+3mOF}U5o=LW->P)6qm=LR#GTzuyRb7Jhy3tow_yCB#Y(yFWrg3n`I z4hjy2v@z?VfIg`!Wi-kk97LGhx{|>`8WU2sHEVFtgb90rKOkx;v@!patV@F9nOv%e z1Sg5zjQU??4GH=)xl|7e%9vaX!-By~h~dYqVZn9c@1^|1L^lg<%>N_nvfx&s8TI3{ zhX-?*T$on|3z=M)R|boj5N1~PmBA|U_fmcxqV+->^YgPu1aC08RF4ea7rPnti?c@t zdzoAe<-xa1E{5{p5EEi(mt7ttyzJ`4OZlCNGKDtgpOif+s4X<3e&6iTK@pP+b8Jw` zqbYMc5W!Ynce&X+?{ELXr7223TB>URnLZKP;%d@W!u3~aw-Vlssa$(*OOkhHo zH)h`u%ocwyB z%3nzIk|5SEG@I8|Yb8_$tlM8cl@Fx?(d@*}+khMCRpRW?t6WW-+ zK6^?~AT*=?JK0l%)=VzUX~79hF3f2`cP51SarU&JO#Ho+znkb1p^f=pW={_;7n)K3 zAdSad$K=Ai{r_U`ZNQ@{uK)4b-MjbBg$;QjuOyI7SRg=zKq3T)5^b!aSglP}Fz71S zVht5_v1(&oBwAmht(sN~RJS#)Vks?UtD>U*5I$Y6-Wo)SG{;{R`n9 zE_L#+vwtPrHKT^-|IogdIivFi`$6W6&KvBl%#qGf`8U`}3AeE{1a7x*50{S5ztP?+ z+%=;P&i|3E|1j{}-ehMnXLR0V7cxgW56{2Jp2QqIw?~1SF5JVVU&+7Ot~cS-$)Sb$ zEA1`JZB`3H-vswObDPv+=3Wsu+=k^_X}{UeMe|nLxqqazY{pGl=j5%j>xDZfbawtv z?ZwQQyx(G9+0UJue~TTsKb40I@^7`Fg0$c(Wo^a!Ia(PS;AkyqfTOjbevZFV9^kg; zw&V|R;i4<^f7Y+FYuJzSZ|moF<=mG4i+=8+P)q*p{aiG(KL3t>?%v_|=ik}SZ3FkK ze(phVYx}t_aKE;jIe+F|ZJoW8x#jBG(49lp*`Wt0@5|NA;C^E#9yHu-p=$qc?WTte z_Zx8Q?RS_nCHOo0(|+zn`*-$`O{o&B_HVF9_H!@g$L%WSs7+j#dzXDVbLLCWjrJYF zQR!~96T(sHZnOgrlg__-sB|~lqYcM<`Wx+u!qJ}8MthQQ^qtK{dkS-#`Aox&_6*@@ zezwuBGd_8Kw$Wb99IY-1%dod4IO&2uEjm zJ!j7o?!qy|MTEO_Ott?xJNPWcw_IH@=D31xJNM6q+gSFpKWXn0j{fERqTTQuxtVlg z#?;U4wO+KF`Z@2Am+Yne+}m!C9q6WT=1uBVJJWFdw)Co9A{@Ofy=GSkM{i5J?OFZY z>;Bj6M&amfX^;I4;plDYP5YvL?sfm)>>Grmx23o2b^RR9#^%jU&Q-$Enp}=^vv4PkJtr^MX?~4-u23}ym+u628}4v$g-#1|SOQ?BbP7ki5tE#5 z;b<3XveUT7#6Y`HRnGgu(Lda#I#q8PH`+s~aU#Oe9?CT5x5CjLO0Ba;INC#*>6HA< zgri-PSx%#Hw4+kzTqzvwp&a6L3P*byhdOz0Q8=?R@+D`KaI`bh;8X}lJ0o9qrZD$c z>}#LqKhkLsj`kvtbP{iy*lEAxD5v7@hNJzCInF)8(SFA-wMY&lTMFtyff*v^qTm1XVPi!=dd&Bye1s)Ogicv zOt zc|bT?VO{9F#GLuh-XiA}2}dh*i=4j+M=Nw^I`0cdD|Fv*qMw-fXoc>Z&P&Xh6}qz= z`%`i=D??{HSngQ|+1ahMwd6MZ%3A_XFQj=RM(OgFDyBQgkfI3QhkgKhK#i9Q~vGeCL~n zQ@_ge7e<`celAe>9p^T1l(L26R{Fl{bP9JKxEAMW<5SZ=(JyiOgrk3=f6uA(aC~Ze zW?A8-&Kz*0<@#~I^7Zwt#H0;d}{h%daLtu;pl(qmpe}yPCXATS2%km+(YAj z;k(MwUZb-M+|^DQILaUW^ZgoUj&StP_crGu!>PT{a;@`Y3HR=}`+Priej}W&xX*XJ z^QeTQ|H0qjyd@m{5B^3c=rcL;WR(@RJBKi5`sACOBa9nHl7_;YoKwK1YV#)!-782O z)#gekW_)sOu5vyRj%stYQ)L;SRDVBp<_JgicZ+i&xK#b!>O3PH)nClfeiM%B=x0uu za8yS>ca8@~;i!&obJht*b=2V`#V3{LFPsmAqw@TvQ(+I3=k3lF!clqN;oJi*Rhw&^ zCxoNgywg#R2}ia0E9X?Y;Nult01 zwcl-BMXYdlKewY|ZQ&dJ9EIDvPq?@G-6-7O`#B2N+s{$B_nohp(&amxK5&|tGw&TA zIA=3w_98!W+Qp5&5C6#N5I5S3{K(lMZkLwrDeQBcAyj|#efWokpEz~GT?@{mBf|Z( zY)Fx%yM?1K!u`5(s0sJevb-X#TZH>%*@U8@`uKox+gfyVQMOJ9x3TQhqFh~-Vcf1L zKD#Ji2ZtGMW$~p&BlI5OeqVe|QHk!(6fMQK76o-fmf>ihvP?h99JRW=R=GYVo7_yl zG+Lj`+-9@mpcgSGI}W-ehkTlS%8))>INGNS>BYj)Kf^=%0^w+%GNdmTj`k_X=<9@| zQFM&%5RUdK$LgeTv`<-~dkn|>loh&eIK^)EDJSS_m@{8*SL&OYGhc5{(pTo1-0m%2 zTQo(##+=!;JXnYFI1e7$wVb9S%>9-3DW~h3`?-ZfYIP@bv`=|&(M)}Oz6nSBlyy2G z9PLxq>5>BDM*Ea?x>Y#Zr>xTrg~pBcDG${b3P<~tv-Ntz@jhj}zF#=nnXK232uHh? z_4;Y%%-7rX`ptgsk|Bp_Rb*nIeabKCtbXn{LmIRiVcck+^2<6R9PLvcsd4Zux82h6 zr;Co%z08?i%VV`Q(uAX3%VYIo;b_+L38CLDc()1<3}qkn`f&<)I)nbiV4*SPU)dx1VqeA3t33-kivXeV@mZZ;gx zy-(Fw3P*GA({!hBG}{jAu72)y|LJ<{Xp;w;moL;u2}g79Mf%i!?sfl}x>Y!udw)~+ z^>eTL7wfi=(L!_YZ|UGz;>_3EXX~}&j2rzcuvzb6&ipH|Sw||28_m+2wVq(Y(Z1*s z-9FK{(VYF;x{o>Y_4YY>b)|8m8T?ZHnsBrVaIVfe$hgrA{#;!v9L?a*)%Q$dH~xD2 zJiXa)ye4p-eq1>E0`ENi+GO_0>tN?=tIFu46S~gVQw_&6|A;@xjT;pqE-3-mnkN#6%tpwAGF{s;dZ-OQZ%>iawT(He@KzWUA?@g3d6+-CkK z*M+)rnn@Y$u3o5*WzOubUZ_tJj&@fs(x)4acULdgi-e=y)r)mheA4df#riFA^Wp^K z7X68Ew7YtV&YDi~y~y7VT&kxFN4u+0eS~ndySiM@6OMLQFVl;Kqute3{T<7Y3#f|1!zZ@~Z(R||8eZs~1eXgrmY5lyP+fnh`5x4bo6z-S% zguA`pZCypHUenL*sOTK=tA38c{brwVzwLKJe1YHfb2}=wj`)2)N8#?>C)|DgZtE(Z z2>hX++fni75fAip6z-9I!adsWwyr{3Tl+aGmjSN3V$X+=;x?hUh3z%D+-HW z-6z~@{ch_jg2k`*b5t&W>*u;F4l3@|f0C9(C*Z!LUu4eAp5D<-Ed{56kZ$Rh!diHk)()qqV z(r~QveSN%er1O2fKzx$U_w~1!Gdkbb6_*d_{6O~@&fQhL*!@875jXlT;|ID|IMVrn zuDQa*PC7r(hcRb#exQ$MZn>IPv()#YzQ_3FGXp-<&EGfSep>Ug`=O2)j#K@iZV`@R z_)vF>Pm19~y@fdw!-skobIa9V5yMCN_$vqU@R7EzGBM0NSX&?IfZ;fXk94kZ6vIcl zQG8MiAL-MXGckOmmom3ptvGn8uTR&t4aCr=v#&KVP#f&iMTX-T`gBk@ilI-Ji%*K7 zPfupf#L%Zpt{c$#vFH!69L ztN3(W^G|J$TW>i2r?$sEmN^rH$8BP6x$@THABt{cjt5bgJb2y8;mmQ}dfghsaUQ(x zEa4~*UiT33NqO+PM>A()@VbjD26Xz|RpSSA`rO+L$2xuPox+h$pSxCkl1`tykvXH& z=jKit&}q55ss?mgZqjh9({f)Gj&xe?Zt+PvE%#mKj84mKojRb?@77ftom78*x503% z)9=m|j&%CnHt|V1{q9egGdlh59n6^)V!L_1r*^l9PtvK~XP7fOwcEtIw!?8}+JzhA{ z>AEL~PtxhSr!i-Ax^7i+Ae}?p#b!^DTk8;asq8S)^DxByj&P)NhfXa|FE6srp>D!(oX(-{Bf^o+q3#y(NjitR&oF0n;sC8fXr^j(2Hfdp zZpu0X?rg)c&Vc)6;Yeq|JxY9%&Vc)M=8VpOtCUB5yMXBHm=k!_`=CDcF{noc#{YZh zT}7n%=24_AhjkVS^+J9Y$8IFYvHZj@j5iEduX+MHJ!-)2Q=KeHPcvyw`8;sBN#|hy zMo!erCF7HnpBN&E$;ALo#cTW<`I(&ZC7infyHE0B{Iq9Lz7D*^Ot}rNyJZ}gsmH5W zr_uj9+qV=Blnm9rR~dN=hq@BfCz5tfZ3ok$@dNc`{128Kh_+PiQ%+5)Obayj^t_wc zjeM}rbop5Ylr~egDf#D1e$9DF*Jff*#YLeuik}0q59A^hFG>EuWwiy=r?!JyY8R+q zJUto}UNx5GCf9~i|Kn8^9JU73QfG4i zK(1aji{(k?^RcW`qXkrEOiR(esv|cdE-hFpGaZC6WD$| zr@WnGzp0;^@yMe{;#I3yek)VcVpBe;294|IN%nP3_epkoI&M#kaX`=heWs702V!5v zc{I5&{!K2@Q)}c#vR?dC%2V=mJC#OCZtRqcb!oZS*Of{;75lzE2jt{u@MwE~CCN>C ze#EIV)a2-H#OPHCP@giAhgtFjrzCy;V0;c9qo0S)&uc{{{ie4!GYun2^*ofS^zk%Z zZbCiFDM^GD%l3v2;rE2Vyl2jgz|AFx(RoW(YQ}SkJlAc-<%Fw~(JXm5%-i%zP{7uQH>oK*E z9!t7?I+sbh|CF7czJ148le@ukl9=(=v@tW^7;H~z9w;T_$E0U)>D6)CO!`gO;~`1C zeHghZc~f_06iBDW^|KO>I%X{CIg9J-Mt%$E;4#AJ+*?j5Y~;9_I1TCcZ?MFq=ez7@ z`4>vkTf3>F!C}p;eqhG#QG+D|?KU;TPw$J2>);apyt(v&)}yH%L(?_yuNN|YjQ{U* z$z07Pb1l;wncl?mTL;+(_rvLLJpa&g#yzfMct`ESyE6Gqt7d&hy8SpzbBoULGA&*Fr73n{k-?1 zXE^0Vz3O?k8#=f>WFqArW$N8f)82wCe}%*TgQ<~M50an5d4I2z#%_8NEqO0C&xq-b z56o_!pwH6(yLt5&*OzGz=}(ri?@Out_wB1cUt)UcbZvv5ZX+>tU`$WF8@|sa?8h9* zs|t##1P1rRgGW6x#~2u4Q)?{g<7s-1%qTA6H?lkDal|MUD8vj4$)OsS@i)Tvo0)gZkOnt7eE z`=rfNPWP1MuA^&9esTnMp4eC{g!>3Oj0cxqEAn~&wTl|i!)X0~jek@UGS`S+@0I8|qH zs?O_=#l+=N=kgrMP%}>(c)CrWka}NBpRuPu@9EF@fZeBB`s4EQ+KZ28_?F01PZs5x zX3?p6wdrBZy!r~(u)k+~a4#`fB4xtma4jfSlRzz=H~M+rXv?~gnR^?$n*INb{Tqpy zjqfidgL{~CpZn`=QYA3BZ!xWOu$&~OhcP|L{^sYV-%jZ#ZRrvd*0iht#FPHne$}fM zqK)~~Vs2^so3Wdg{7aNM-UQjFnX8+%&2+n2ak`UhXG6dL&wCT6dG%-4{Y=>s)uV~t z%NopDfw4cp5_+3Rt*;vUa`xZG)XY`>^*-EaFex!5W7-ngQ?+&+)~HkCtf@yszqmiY ziPM?htD85G&(=2tYz2hu;d zS26JtHFGwf+QQ{&T9NTjG}U995yzB9dXJr6K4izf7^f}WZuFRPFzqe9mo{&y>AhUK z&cXfgV2SCO(>0{`!0G+%fs{;o?Ei^AZ7-LzDPa@WHoSeLzw4#SoaXtd)mKw`sW(At zs{<>vsg+6dUYU~b>nGhm*=ct1&#w2Ho{ip^D76F6%YoVV&0{LR=9&89_gQ)hKJPto zf6vq|Zh`+gHRFY$gWr10DD&SPv4Or~ptq#9vA-R$^yhTn{%W8_9axV&(7&ZWv-|5a z_a~>Y|J?<{ZXL>D|GQxSxqYtmH>`hs<)2zq>J8oW_W#`rFr%UA!T$fg7x2Gx{ojn# zX6|IhXtT0y)+Cb{kG$%yJSwHzzj)Sd>T3^&{Rf9NE3_Z7JzYL{Y`U9g4kX7K2+wKL zcO}y8>L7Yv(k1D3)32sW((V6s{Z~rkLVlx+a7`KeP_By{rYG>MzJTpSQ**)sd|#D% zgEMkd3+X;-^zBPIW71s2@5Omz$dx3} zmrtp>5q3+Z{|D)R&n}xuxuK>!P0A@RK2^p!GHbas4yOK*V(QVXntqY%zUv+)lvznI zBM7~9rglgN>^?P(YazXa2V6bsf42Mj|4&6VdpK(|c{Hu@v+XdweWv=i{mt(7C#O_- z_}@pVH|PVKbEeNxQ!Qs;-b<47Rf2!lKLcsaYTsDWTY^dX;I)*&lJpfn(|!h8(dX$m zu3tutc-2?AUQCaX9=nkYp4FS(8S_LBrt?|bV7ZZytC#=%oBH?cXC)T@qhtU7VK)9L zohc1p9M?bV)2s{}h)&~kB>(SmH0b`*ygzOKX}PHjQ)2O%l)``3PNg@n*Fbht`vd>q z-uJ)UW|n?B*YaX+3F&D#2NItmSC6`o>1Ta<)usKRjNPXwl=c5asPvxp|87s}KfN1e z)<#UrKal;Vf!@QXR$xuiQdjZ1{osA5|L!Z9vH1UmeWmnK=0CT`G!V;y?Jk*CoxZO$ z`2S!e@u~yaS4!{Ms0Z`zw+EyDJK>+ntoe(3$bo-GrTo)>uKuSUav)Ud|5TrqSlq|@ zzc7XPuQkVYJ80_PQ-k%;zpDJK&EBuJ|CYv{$yDS2J1G4F->Wjvin39!HcSRg045tX zISj^z$$$yKWGf9`gLmQPLgqr|s(ct5CPNKTqhN-?1YojZ@?mV43^f#PL*X_QZbRWV z6mCP|HWY3F$OEtk*d738!{mV*3p0$R8IWbLYy!}RA(u%oV`1`OCcun>p&x0?hRKJq zVKP*vnhG-sW-Lq|%mkQGFvDO1FxfEqFg8qv%7Xta_|Jm>EcnlY|19{=g8wY|&w~Ff z_|Jm>Ecnk>(_m)8Oof>QGZrQfW&+G87)lZ4jDGnrHcW=fLAV@*$w8PLgvmje9E8b1 zm>h)3L6{u)%t4qOgvsGBBh_$qILu6#FT+fOnF=!rW-Lq|%mkQGFvDO1FxfEqFg8pE z%t-h;8isHTT#kkr2{T3&s1smLgvo#jz+|gJ=qiM+Lhyym=L2n+3{?cTBDfX7tq5*K z&{71qBDfX9tr%{_a4UveG2DvbRt&ci#94wkOAzNsbt=pmFc~lbm~5Clg#H%HsW4~2 zWWWSqs6_KrDP*OP1=R&G7sHS}0F$lC5N8?UDTAyGvNFiZp{pFa$`P&{@^Z+_S)Qjt z&=^9P5M&|9LP%!_;Y08@2IV{kUgVmid0T^oW>tF&f*=oA_9ZUcwTh*eRYf;X%DCb&)sfE0j z<#}p`x(nu8FsH(t0h0j}fXRl*Lr(8iv($qy7sF(zL)7Ci7r+EyvSA*Cxfmux%|^_# zk@DF{_iUtlHp0(FT4y8wvyq3{2s0aDW+VTzk^b2TQ;+!T5q~}6uSfj#EDHd$Ve-^r zDDT6Nio>AyFz7uDdJkjyDBv)d08BPaKFmm%gJ7n>Tm~}%#)ipI4bam7Jq^&)06h)R z(*QjUNLvH+G(b-S^fW+E1N1aNPXqKcKu-hoG(b-S^c<=Ff~RB@%rKY$Og0QXtu{=C zItKN94C?(D_&ElCj)9+J;O7|lIR<`?fuFf3zqu&0xoi&rvsEKPHzM9fw9c=?-`C-G zBEp;q`-!lh1YIY=eiGXQz-)Cg;y4-dlM%a|*(of-t8b z%qa+S3c{R%FsC5QDF|~4!kmIIryxud`o$)MYeLyKA#4-EHX&>i!Zsmn6T&tjY!kvZ zA#4-EHX&>i!Y)9aEkL*h2)6*?79iXLgj;|x3lL@j!Yn|T1qibMWw!uzwg7du0Clzi zx)(st0_ZsvbwWMXsR(l_!kmgQry|U$a6c99r=k6w2HR<9f2T1Y0A|DFsW94S817-X zhv6QEdl)*xa1XE<+hELm4hZ z87_m)Wzczn8sfP~4TA}&i{SramE-xY%J;OOd|FUGEhwKBlurx%w!lvd{InpR@2OFq zOJSlg%T>AOGBwt-LQU|rs!5*9)l|S#}!`ikdT zb%N(Qb)x47YQE=(>QvA5>I}~f>KmRL)wewD>f4?lsq;KPRu_0~QWtw}R^RiiMBY{+ zPb-n;l}N`*q+=!0u@dQ6r7rWVg8M4CuY&t3xUYiyD!8wL`z`7U&#fq*TjA$c__-Bs zx5DjKxZR3!xD{b;MVJoMcL(aZ17+HQGVMT^4ut7|zYh58K)H4xdM|1KRBd=-U8&8=!9k^lgB? z4bZm%`hKsj_S^&ad*FT#-0y+=J#fDV?)Sib6L1sb(ZDeIUx?*tfvG6@IqDz7_VzV1Equ$6((E`!?9O!M+{# z?XYi${c(hS9QMay{}b$gg8fgh?|`2ju2{R!Bgg#Ag_pM?D>*q?&^DcHLZ zwhQ(y*q?^{Y1p5J{TbMwf&CfScf!6C_MNcrf_)e4yI_A7_Ge*#7WO~G{%6?#4EuAi zKL`7BuovM(yt93kxEJzhf1}!!v(jo-3v&zXX0;@@9P}dC=ctEp^1~dy%W;l617||a z;Cm}APhW1e|8#YA$!6c_Y70)DJ6+u~tZwK$wLP~1G+Zl;LYe-#`d4?77{b_7ZK}cPa@jXadGtY*ETq8a@$2#Jp6OSW4 zI=4FFqcf=^K03=d;^Q-@K?8*mADvko@zGhu5g(l+9r4kr!Vw>xCLHn6na~j*o%bB^ z(YeGCAD!gUDlJ%6a$>TC18H@U}Z^X*|uCDY~$RBeVNzv|}VHebiW~<$IXVy;8 zdzrRpJ#MY$(p&ALa}e8ow?h5^hpkb$**!=(mF*Tta6>r0g?ZJg!8e{gRt@gxx!3Qi zqA5MaO`N+Xz9Fz#(cQ^4xOL1wbgrV?RxncH-s~o{s5Sn%icV>4Qgm))2gkeCcjoZB z^jcrIs1>wp*j>6ty+Hcar%Y#Le+v8j?BV_zwF7C}tqz}ZY)Os!N_HkBbTVxN-;vs) zzMj(qJ4qJtIiD@+a7bFzjO-=;7HGJ{|19Ss?z<#!r`73;6!che-<5eiuwPw3k`)EN zw>y0uc|_NM#(n4K{Q>mCyazxR!{;U+-F&tUbmh=E(*K6t1^OafZ-mYkjy>+1pZ9CK zn`^M!H*CW1VGmUO-Rbt-Uq~_DoA(hUmrr>myGGGj!QEVUoxX1)J>9o>NFYfc@zwQsIGqP496rH9S_t6dOdwg^gN3W0CYTQR>XU2VWFM8bPx(MQA%RJlq&9{i2LZqinx#NrdWhfCnFTyivj<*4c>%TGY`svp)o!-lD?Cnr zpk78fH(R(13zA;cNZd#FVaI)R9_$C4{$|dv$D28IL@@5t1xp>W2ZKb%g62=1$h11> zddEzi2|w8d-*sH?{_Is?!|~$w-x-|iCEMFL@avlBGz4aDkIh%XzdYe9qNwKjNab* z1L``099g=^d+gMQgAr>N{J4CNb%fhb#G(@pe}dS*>-6|YbB~WS_wWu|;3gi}<-{Lkl@yw^?%`Z?mX>YvbB!vrZ^F8*)l{ z8`o4D*HjzVRGUR*+h)<-Hf>yAZCo#HTrYhX&9mG-^`jz>+YbE=h3yuN;O!QT;O!QT z-R%~Q-R%~Q*XagfEWumY9SF^msqUWN+qA{z(q8?@&d_L-SSac3@pXwTRKlIbN&Z}8l zhefA46MY@@Oq}A}VbST$L|^xJA?%ZGH`6}MvM$km>aOZbbPptrg_OdM@(zn`DBEMv zy+xheLOLv(|8y!ky|$B2t=+`EVz0HnDB<>TUMxSgJM0NSsXw&*6Kmco&-GK! zY5B`)ejKp;YbHNiZu#k4O3P2P0?SWrpodGW+oF;WvHwceRtas>Mpycut2qqxshVfY zE1}_>K&79~ovdUHm8_wQ!`5)98iYD~bdCSQgAW5;dhoO5H3+rcsqxcUk~JKvhC|hX z?zQ?5J4S7`&+Vsgqa{#3u*ag&C*ZlO=wmnFd8p_E%j0?I;QL0C9VZmRzI}8fLgfz$ zcsh%EEb5V78%=aC{A|xX)NbNbH6c|QLz?{E2jltjzrplf4(SV zNTZ*6hDQHR=xp@UQ`zW$0`^6$ZIM3{p%y`>6I#S!7jf9Qr=U1FB<`s#-s+2c%8Pdo zY390!aH+;UbTdHQLvw?;hi)#5d+5gTxQA{%k9+7A@wkU>50883p71!IrXNTDMv|j4 zyvQTbxaXMSotTN`W?gLsJamJ3NQJU)v~oR5NBn3=u7}Qk&-GB7iL*V z2D&jS?xEA_;~u(GJ?>dO;y19)_qod6&A+&2PqAx~n&jv?#$hQ+vtZbOfI{3Rb) z?a;XrDgRaGg_zON8R|8P&Q6CmJSjAnh`}d4S#iF%hvaMgs}X9iwc1auq679H3|;M~ zr?SKU3{Hsd@Y6ZbtNrv8BNm+e9^f0zR{Lk-Eb`TUno&^OICo6kQ-U-EJUnyYQ~l!} zI)^{*p|km^!&nq^DQrZ6*J*)PTTC;tsX8NI(E0ZYg#twCYC%i ztzhgn-^Zge{o8!GrJ4TSYA?I`rk6mzs`R#@+k6`GZN6zt&u2fwrw@hee3JNoP?{LJ zTOB(6>tnC?9zFfEvD^H=E4_Q@HcpAF=&oZI@iq?ag1ifqa$Scx{~CWcBySJxX35XI z8%r-3+r{(Y9>|9UdRX4zS(3BW*WjV^_xC_PC9sF(b3N25=6a}A^g@EZg6V4iw$jD` z*}X%EqOagK(C6oV*iY@J50qMqkx=QaW=S8njXpp1>bdB3S3;+8<(a2_RK|L=A7B2$ zz-sPk12*-mxXZlil5qih$#k->nEq}sV1IXd59k>zq2424(+RNwo6lT?o@)PUeh*qL z>7@QV*M6cDGg!N;6f;=+;nMTb0Q0AA9ruJ(l_-lKu=e^R^88wLas9|+B%_{3`nori*G`Fm?X;xWh)BLc` zrW?-cY`)pdrW?)bY`V9!&Zc{<>TJ5ts?Mf+tQw$gLq?rV_ng()w5m{N)2c$9O{)rZ zHqU8ony1y-bZ=RmP4|`6*>q1?gPj@tRYnVXn5DkCb}+azqmfIp5hZy_MWapcs*N_i ztIoBL&AUW5+BC8>+VsZS$Yt2bWmu{Hp8Yj{8}z)8(azeM?CN0luoAAFCJtM|qhtw> zkBc~#MTq5wibeK=(_hJ6WZyj<^BLB^$fgr;7qR|DtiK&=7pM6`QV_1-%H8X51ZjUPcS# zmBYIDJ-UnEqgx?aZ*}oaXf<3fZIE1-+w3{3sKaizxrIaW2HFYH4%lC`*9!e=UI*m# zo*swf`eB{+wqSBdr(IBd<*>Nt72MN;@q+0Qd554^KQ`|;rVHT*XYa!g-BJ?w(Cs8~ z58Xo&_xyOot+4-?M+drLB<`WRMB*O0Lxe{MP`Vd{MhBvFgGY=t(4weM zi1Y1|aS!$3aS!$37BxcUv=Rf^ZsGoppOiD33U6gH$l6GeE|9_ z+n*msD=>7gL`Yqj5%D#sAvquTI&EqRlp`tuo^jbUI&|99$9CG(&v$Z3cG@)Jz(3O5 zX^$8|a_a3nZ5ktJR9)(OLeWU^gvzSDVZ6u7qlR~6?H}+aRZ)BA_!m7>YyUW`%clEk zx@}q&>9%PlWRp#~>*09!*fewNwdtL=*QR$~>MQn+x156FyiCiPSBCkXLo*7?p&5nc zY%86a8E|OL#By#ZTb!Be(7SD}v$)(3|Hqd3Az8@w*=)bKd@jN+ zg&dxFI-NzsGTZ&NwVQqI{v&EJ7j?E44}ng4_p}_E$y6d<^v2G)<&R`lI!ns&Ztl=r zs|NDD@J}>X9N#$TUzbsn~ zJI%E$hn}o<|0!Hd(uxjcii9GXj8 zD7V*9+Vn01|6K2;RB3I;a%f)H3JnKkw>mVpX?30%RSSC$(+A5NvfJRg*J?xV*7)1F z&9pi6G*K;M^yCt=L}FSL^*`+njl%6tpeir3-8r+?4|-lLNvI!gN7!or8t;v@-=9pg zyK5&~4vn^!b3%D1@^xf6-q{^`qAiE!a+X8Ssl{oae36}=?uc_;c~4e^Q_|{eKs#)8 ze!-MxXsr&-&|00_N0lN+w}5uA&kokp%=$aHR6AH_i?g>pFSEsY5*k_@dV^@;cGBX| z+i{EYJnEvwc@=am=WZ=>cT?3`=N{y1t@9A_xR!IbmUFk-M|1MkzFufs?fZ}^&oO+Y zZME-H)beT{y%WV*TO8URx8lwYXp1}DOy6KiB^GzyVY@YhTuD!-qeq{e-RaO+yoohz zf`*T(HaRp>Z*pj)-h}j=6WHX?7`@4%dCn#dy9qtsdTX1ZkgT-2kl*#$+t9X&E(Yyp zo!!tmZA!N@YzE1X9DSVbcJgP;hGf)??M@dzr`??EZr0r6EFb+!c9*AZ^n2Mokh}>y z^(|e9>)XTjI5e-=1NjRX-5yGR3GV`w@H#-Z=c3F{vwPv%fIHo2C85`$m4sf0RuXz0 zT1n`2XeFW7p_PPQhgSG|9a`b9$!j$d@14a zrG&?q5*}H~c%{9Y%cRe9)9CDBeXth|tK+ezk7pe{o~yESP7}ZNV2>H2Ta%*xze&;P z)&!j|V}+br@?3rw9Gi}% zSLQS;niDoFniDoFniDoFniDoFniDoFniDoFniDoFniDoFn)Nj+n&UMqnjbbRni=*& zXH8C@bKmGgb6T;}bcWrEou(zAv_9FYXic(J(Q0I?qIJktMK|`gD!QpRf)$TiP#X2f zekknJ!$cH~{(Y#aFXvc#Tkv?$qcWC&78K6|-7s!o?Wt0>{`Qs))5>42Bkc>-Qq z=jq~_?Ly7o1v{-B1)$-UoLo&a&t{&3l_2&PGD4t5!)UD%D=nIKC~7qAP*iGK;jhuO zLs6qw6x^LtqdW45t^uvov_ny;FU(88PV3l}(DMc)G()J=G^ef8)R)%jVH57osnda~ zYlhe14mt99Z(a{1hs<~-yG~OtQKM=8P^agxgnEfey%4c9Kxg~#xlC(7v8tnK_o0T< zR;g+Cp;FVnLycZpaLMo*ePh8lL3!0((~d)>rvATD(_TZRrark+)BZxGcJkjr$~*F& z0$szDMx07bBTl8JJ%vg=F@MPLN=+k9rKY#GN=;8qrKWL&^82FQ$h3*m*2E>##Cd6C z{f(T9MkyZ}Wh(WN`T5XEEBTdN*Oi)9KNdm5t&r1GP^oF%zEab=eWj+S38}>sRH^Bi zs?_{6!T+z}pPmc&r+ch5Jr|XlR_rS^Jsp*ro(|*!Pg$j=XQWbNtseQMwfcz0T76DL z(^`E*W0f9unkiLkTBWblG}_`GGn9X&)&*stwDw-9Y1JJ%3l4&$x}XkpcEJhk8ikzJ z)hjic}YFg`_t7)x!uBO%Rxro=&b2Y7^&($=So2zN{ zyMZ+{u!aWK(7+lRI8+1cX<$7K9IAmsEz&dsF4DBJy-3rTwTSgBVm+1othI2PTW=*Tv&DO3btul6(sowSg)Y<H$2HAD?N$!$(X`*)qiJ88cEhnpU{mkf;HQ0uHk9fcc<-jZi0DiC zn|xD4zqU8|%0smN_WKzZPT#F|%(!Iwdhfc5D`0Zy$zrv#q{4Oux!>9@EpAp2hTBrWY|?&h#p#Yt)_@>!+_#A2B68Yt+ut_0!j@ z1)*=|Z}eu(d|>)UZ{f^GAfa6J=_^CK@-25o`F7lF^Ow-r0?WM$_C9`6`uORv+}9!R z)Axlw%K39UTzY5H$KpMG%o{g8Aqr9P(*{r{Vg{3b;HZvzduRA0F+ zjY_$0plV@lu3J8n>{U!@B+7M-{^JTX;(aod4H^xt&&S;+oaSpocMj>(H#6lH;=B`@ zT+rs6I3}Fm=8PDFT_-1x>7`@vq&P#_UNh$Kf)clAEV-UPCYo2`(s)+_otHyiHns&C zW{#N)dIbCb<`}emhg+sYGwn7f$Z~$}Fnf91rB!Y`cMgqBZO#>AjziduWoY@%c=!x) z9z$*|@)bf(SIr2yw4xYt8(8v{nJon&m+~9p{8n=AYFrxEYFwH{)VTC!*T!!#4`Aki zRaW@KLsB>#zuX7Ivo$DSm_G5Rh+laPT<~@6~Q(5LcbLJ5<=eoy^ zy{BL<`VsL$J+^oU|w)Z+CE6&E-!DyxwSFcl1L6q+PF2TPD8VgGly)~35 z^VUG|_ByjGh|-PVA@M_R6D7*LO;CDzof9jF(mmmo;)mWcN|brapj7ob->4u;w};n= zAA0*JQReM~a?$HtSV5HT6t5FM^j1=$%v%ZNrPsN-f+*cI-XMPHZKXuf+sa0MqMO~^ zJdAzrPb)C;vVD=eI1_v2Zb9)Qg%Ov=qlioM!-zY(?2m;l?&5Ny^ejYNYV8sCSe7q@ zJmS)NQN*Pis9R9BBS%DB8fzjh-7Ot)=}zg0TVA}Qu+^neug#^IL&T-MxrnPBytTZ`|b4df+CP zW@4M%=g|%~xvzrua87%W)56(3F0GvOxDO$}J)F}X&grx0Cl8sug`WkDZwD6pwd(eK zE1*@S_tjxqReAS-)_C6rt@XYOTIc-;wBD;Swd(c$JX@>xy|;t*dDns}-=1OkR>k*h zwyjEh-Jn6=3!ow2OK`39k^d^+?U2;_mlWWi_kQwul%IUg^}hsqyniX=jsEjNPxfB` z+T_0oGz$M(UFjzcZGMXJhklB&-A`$|*-vR(?cWVQF+ZiS!%ykI!~eH}NlK}Y)HBlw zhkJTw6aGUzz&P6Dt0(>qaerB`*z+N~PxJ)X{V{ba^G~T&jL*SeJ;F^r>h|ojJO-~4 z+%4$yDs_tWy^=XV^0!d<+k8g;kl=10xsSID&JkP)r0`b>f1B_R3BD}2Tiktq<9|Gm z^tra^6Ff_Bjo@ygerZxj9@!Ix9+0TXVwpqpX%@q+b&VZpNmZv&G4 zHNtNZObWWgM33NEg0}%V9I!g)_UtX062IV=h8y>Vg1%flHdVK0uK-fG+k}5e(8Wna zq~|IimHQgOErKpiULpA$!G%E5bCvLG1h)w87Ibm$0EMG(cuD_m;m70j6OxAo7Xn|N z)-XFN{0iVKJj1sMCPe;_@JZoc7T$*wr^$a1NP0&LUoZTZgkLDQLNF%ow+a7{U{d5S z3$I2Py*?nvBm8LL>xKW4@L}N>3co@yCi2^ae@HMX@|T6jCv}_;ACTf3E%+tDu(&T2 zJ|=uZFe!-7@mNn#uwF1Gm=xR%r1}YtH2%YaQNg4jJ{U0i1nUK(f-%80f=R*Mg80Ob z!@GiW1lI^A1e1ch1@Rf6iC3^*aE@SDFe-SJU`%k0U_vk{xLXjP6te#Dg7t!7!Kh$N zaE)L>aEoA4aJL{nNi=!|!-8iC(kTkmUSon=1e1&n!QH~E(d4foIGz#D6OigFCh|2R zPYCW793L|J=Lnu9c$HvGaE)L>aEoA4aJQg~)0il|;{_9fNx|KM_&A0A%@I6HaE+il zPV@+d1=k2}Nx4@TfAxY_3C0B12qpx#2qp#bi6p1P6`Ug&7Q9L@Cb&j0A-F|wx1c*g z(jyoaq+4mYK7>yS?iLJAl>7?T3x-pCm2r;>#sm|B__&AjQ7;%3Ob8|ggHy$yU{o+B zm=H_~2CK!tU{o*(q<&|4jd70&CI!O>i(D`{&G7hSl+zg$tQQOm#so19WPf47s9-{{ z{%~;@j0(mClY;6?#$UZ)R4^f!6jTk8F2Sf^OfVss6jVouf5CdeuwYCuA(#}zhkT}< z1jB++!GvJ&Nbx5a7K{oe1e1d5C`pfCy9)Ulm?3c!KB`R9`cEP_SMwEEp3^2;vi1 zjwdKsFBle#3dRHzf=R*pubc2;!Kh$DFqv{c(fErACIpj$_{7$vL$F>jESMC;=eEY5 zV7*{iFe<3#i9f-5!LVRdFqV=pF#e;0F~NjjQV<_rn)n6l1;Y!CJp3(#$?q9dmx_PE zdcmk*OfV@Jj2iz@!I)q|Fu2^f*9(RPqk>7n;AP@ZFqz_4h<-uUYWSdFye`UInbF~NkO`o8!Rj0(mC6N14j#h+kUFeaD~ObQ0C zGXA3}yvFb`!RWPyPYU7#QB&`N^(p=bMqV!%6O67i<3aTIqE|2}h!1&LU%g;hFd?Y! zmiPqg1;c_-!Gs__K{e?Uj0z?MlY(la_!F!b3=1X%aS(w?pI}rlCYTgd_lZ8idcmk* zOfV^^I*tE?U{X;1LG%dL3x)-wf-%8_U{X;1QPL|I7K{qU1QUWuL3O_g7Z!{OCK(%o zDnafI!I)rz5%b6gOt^$#GQ~e=IK7sQNe^@ zQZV?W_!o=`CIpj$!KcKZU{o+Bm=MIL)h6A7^(lUrkw*n%DSXz*lY;fn89pJHOkuZ? zho2Wcf-%A1UyQt7Ff5o9R4*9!pkPceA(#{lCq=(tOfdMO=od^1s+WvBCYTUR3Wi@6 zeS(P|S~q-Vx_ZsXgM#&fVZlVoeYfZrOb8|g>t7fBf>?Ys)}L}$R^>jlGtF~NjjQZSe+=@yI$CIpj$ z^?Bk?Fe;c3ObX&~78Ac)}te+tM1Y?2;!Qe!R zPcSMN6I7MPJt!C!j0z?MlY+s6M4w<(FeaE3!~s9t4(bKNf-%8_U~sbd6O0PR1e1cQ zO8g0i1!IBqk;*+q+oEW=oO3##srgss#^RBh6Q7S2|-mO@e9)Vl1kO6 z*~KRnpI+Qt+*bVC;(LqlFWy=FQSsMHPA@sP7LSeOZ~yw!83zP zgI5Hv4c;95S@3tkt-*q_va-X<&MG^hz>%j?T8DlZ#-+UV%$-;CZo`lZny zk1h$qOeh zncP14*~!7G=~YctmsZ_T^}DLhs!df-S3O_#YE{;h$|*-rX`XVyl%GtwZA#yi{Hdo+ zy>RNfsT-$moBG1kiPh2Sc=hwuZ&Z6~a%xIzX4HJS=G>Z=nrmx*QFB*KqUN!hWKG7w z(+@uE;IAFL;NXW2-gWR>2kU8h(}kuUT|Mo$)BZGV^z<)JZ=Qa`^o`RW zoBqV~J=05SC)OTZdt7a#_ItIr)^4c%L+!TOztp~2`(bThM%j#MGv>@#Fe5snZN}Oe zcg^UUp=XYsdGyRPW}ZFsvYA)TymjX9W_HeedFC54duI-vRXA(ftfpDtn6-4)#j{#x zT{r8FS@+G_GV8Ci+`3V9)9SubH^1)cy47{Rt=m-hr@G=p<{$EnLslNL_K?koJaNcN zhrD-4@X*5#{o0|+4!!iy^@nac^tnUT?D4a!XIp50e&r}St&vX3I|=7U-mXTfJ7{5D zxtZ6Yc@}5h0D4g7k3nlQSArgqc?;+XnLh^|?8mqopD90g!e?>jI?#hMe+PO*=3So~ z_CWLx_VdhGN~cLl!8l5-N%P6$D9tA2t>Y-oCT(|(qg)t0uZ^Qzm~x)fDwzHC44h z%OzNbUk)uRa604VIEC>FoT^ACCf=YLa5ChP>JL~J{-Zhur!>yRnO}`K)9XaF71|%e zvgHmnPd$N?{dVG{zFjzR?^(4#bz?bkH%`8LLxt7faXMWuPNw@9r_p_iQ|COM^D*g* zDA%)04fR~2M&dNLQJz*+ic{QzIKiz9r?-{k;Hk@Fyum7FdhxwH< zdQ{Fl*wd-;|3(glGCup*zIHgpW#Tn{HswyXmCDVV16q_vuDN-~!EVxHG^B?e?9*sC zrGWCXxX{%~EiJ^KTK2II&aX-B{^a{}P1kSom7CX%xJ+IyFM1jFtBdx4USISMsL5}7 z*_u#BKG=V{w!vvT5Q!rw&!>&eC;Ew=#W|sTCmk z7^X*onv@LId3n)|8A_SfVyKbqudeqeH(`zb^mcAio?Zf`tkTPQaNg6~{9v8w&rW(P z+F$(+E-@2oUOClKdfL)cmHteb6q*`0wQpLKNt>yc^rv!gjCYp0*{Pnv_%}U_DNmE0 z^!772FX>NNdZ_*NUB-{8i}ZR=FFg~B@o8!>J=Z3W2VOqu&xHv)xE#{+c;J0Sddo~N ztN&adXv*Y^YvKRfXZ(&_dZJ%s>dWJ&o9U5E&tiHx)7zQSf4uH2eS>L6KG`QTJrOij z*V|w>{5sWc3XaV8}P-roMT=kdf5 z`+pwiR1J)n>Gr=&waQW>X}Y|j=Kb=Nytn4~(JA}&2Y{e(S|t)&-^e34Gv(;6{Qh%y%tF9K2g-%zMqL`*eRnE@T=f($c&*6V!_tu*=*K zNaz*kJ~uuK^Ir;A4(i36I1_&8w118Ha26zoA~c=*p99HwP%q}X z!(p#PoLQJ3<6KkBrRi>fD#V~MQ_hEE9%kNIm?;-RG8Gi}>|qYBF>9nb`gcHaFDqu` zS?VHB3FH@odNCUw3CVXoqae8$)Qh=sDI}M8f{?U;;uaCi*|XGbzH&%@4(i2BeKhPH zz7XWU0QF+_JO+|q`Y0c_gL>6@nAPJS$G!?k)_{6(X7hMR?)1@(2EPKu-FQ(pQ zT|=wA&Y_UJ1?pAXQ5#yl?bJi^cTlf-9Pc4n>Rsn>$ln3=sz0eO!Tz4p0Qvi%UiGRv z0+J7%FGKPXs8_v)w-)?Q+&K!8k3qfaEj0&{Po1M7QTk{|{((0dtvq@zBwkRj%Jv)! zyI+3=atqXpw~yl>arE(!*q~m#dwdo4q51^K1E5|t+4D6>GIS#(!$7@iis$Q)Wa<+k z$pZDNTF*(a=jf9m&j$6X8J>Bt57+Y{&jt13{OVI+&(}?m=Ye|hZnFUP0(~mvg`i$_ znCCRuN9Zu*MWDEa&vQEL#rh1$OF+GN8(Ij-NWBP>QJ`LRl;=!HO7%A&34(fYF7`Je zDbtG~`9JM_37B0)wQlWw=I(TNx;r6+bdt_QI%FW7fduG8GN;W*x)VUqaMFD`Ip*}~ z=A6?>8c;hO^a4&OsHmu@s9Z<9my7tE@S*~O3hR^Rj)oLoUYUR|Fx?2-aQ1+ zPrvVd-+M{+s;X71s#dL9wQ5z>&OWmN@!NV{9&oRB7;vB03wV*&2Y88h8Q^~G+I;M% z25=6L1@y76Ittk34FY!KE8fss?B;yzv0erEO7A$}tMHX>-yFv`x_$Ex_(HdD-h}US z`{vE~I=64G$G5qCa|6E2?U}a#`sS_pIyZiu%)1`&?cQ4e-{HLt@Pppl0Y8LYpKosU z-Uawk?EZZ7G4H*AANSr5_$luLfM4)F1bCPCkAPqFJ_7g^?_+@Xc%J~g*ZU;e`YLve z_yt9Q_haYinXh@D0_FjM4|<4^v&U{|m6k{~_Q(|G!bs%l)4qo)>t`|0&{E`acI8 z@_z~VYX4V&uk(Kcc%A<{!0Y|r1K#NW5%8n_p8-GSdmeuO&5r>-?&GtJ=7&B$i(`J| zX8_Z&YQWl94PafY4sc?u96u_p~RKQuWX@JXP(*ZZdW&&=G%>vvK zn*(@3Y#!i+vH2c;vku>;hIR>jS!^LN`vIX{vBiLe*qMO6u~xuhY&qZ+v6X;V##RBo zI(9bT+hgYfz9Y5<@SU+20p1i_2Y7RA1K@jOn*cu^+XDEBSUcctv2B2N#dZLGIkpS% zE3xy@?tQTi#P1dO&DdVVpNL%m{F8tf-`GWfzl~iC_`BFkf&U*sjCE{3;(v@~5&wh0 zKgGHbuZ!mZC&mu~*2nXJ&GEy4XT*B}*T?$+x5O_4+!`+f?v4)to*zGo+B)Ndh<6A) z5WfQP!|_)D7UHi0?2R7>EX7X%mgBDmJR1K8z+>@i0AC${E#Pb7uLt~x_!|Llh`$N& zt?}yt-xYrg;Jf2*1AI^X?SLPPzZ3A|@pl1!BK{u0&&S^jcvt-WfM1M%0PyknhXB7B z|3|ZhS#Ag7fBtD0JoeJoi zsfjNjJ}vP@#7`60l(-x5#fdKiE=k-2cxK{0z%_~c0kzW{GZ z{1EVt#D4>RD)AG*I}<+zd^quQz(*3l1bia#E5N4`zXAMR;&*^G$=?GuB>xCFCHZH- zsY%cG&Gcjpa7Ho#I5U|7oSV!5o{_8uT$-!_Y)#eyE=$$}u1q!pu1-z{JU2N7uq`@WSLQU|y1(1I$GNFHX)wypWs^*qdAcSWGSi97-+*d|UEN zz#EgTfbU8!2fQV@67U1bRe&E#o{idW1@z7R$#Vf8Pp$#{x8#cezk~nd3=5Fl0Qj@y zCcs}Ow*dYj*$(KZwgIM7I{<4_y8tJp&Idd#)d9FLwHGxnPF;ZbB7tY6E<$``>SDl6 zsh0w7PVEQWlF9;ZO?3h8OyvM~r49n_PUTUL}pNsX@ShO0|-l-z8>&c`YnKi>9+x1o_;&vHR*Q(UY~v!;78K$0lY2! zUcgVL-w*h?^alVxpZ*ZwUFm;BZC?b$`jY+#;A82J0Y0Ao1mHK*p9Fk5{m+0^nSTMS z$$Sd1KJ#h7Ntw?8PRV=@@U+Yq0H96^nXdt^ z$UFqNI`atNxtVVOuFX6KxGwWez>S$F0k>qH0^FAQH^7~lZv*bh{0HFP%y$4U%6t#- zlFWYrUYhwKU{~h90edn(0nBH93RuYe9I!9*OTbd*SAYYV-vAC~eg}AE=J$ZF%KQ;< zIP+(~S7$u@N42XnF~HYm5`b^WqyXQP$pGGvsRn#orUvjGnL5CCW$FQM&NKpY*H8s- zFhP&s&j5bcWBd(X3b59%2At^g*Tgz~{ubCipTE>~q0isPy40TxcmViQOgHeSU?pvY z7k{~*fEWJ;z-i`#fcUBqXqwFb0!@?oENEt$jj}p*@WJ>rz}w@b`FeaN;G@{~wZMwb0em7p5Aa*@`G8Ny7Xbcyd?Da7@x}10UzSM0 z3vNlC3D5V<$rRvC$%I*Fu1n1Xd`)T!;MJ)V;I*l#fUiqU1AIe@zf$zd6e-`Fngw`6 zY7XFAQ}Y0COw9*;M`{7!O{s-|?@sX-jc!iG%trIk^gO_u(o+E6olXJXoSq8!zVtM} zThjd9q7SCgb8~BY7T|}|a{%|G6M!F2&j-9My#Vl^(hC7^PcO#pz<(ll8?IIoxE)xO zsRLY+X*7GGhcVm{Tn_w2=8jAXyQZ%qezExz;3Z~uRRTMr4_EOQcivnz1@MNd6yRH{ zrUKqrH4X3`Rs2n!o2q64zPoA`;LTNY0N+rn10AE})4RCc$0&r)|Ou*eWvjF$h z%mM7I;VG{9HZ^OsSqED*UtjHs(udOYwG6#UR^&Q@Y?zX zfUm1x2>6Ej#pX_P2Wt3|nb;5mtZg_Su%V$Ia8kqdfTuJx0-oA18Su1*I@|)y2L8*Y z88lxubCLUHb2@UrY+8`}6|)HVub3qbAHYq_QsjQcEJN;B%nIb*W6nX@d(3Lk++*61 zdyiR*+Py z`^-y_`&H8o%va3;)c;j;DJXI8gWRv0L&&|~6oI+l^dt9vQv&7vrh?r2%@O22U@k}Q z1LjKPK44yn+y~4Mav#7Kyy~zoeGPKIX0Ar=*UYuZ{hE0la=&KYfZPYoTfxtR<_6F_ zXl_LAgXSH`eGuORtHXZvgTOpwZUN0h=6#@f$lQwDhwv*Lb+|vf4VZ_`KcVJ_&F!Fk z*xZ5Khs~YHeZ>4LFprqKko$=FJSZPAUqbF9<}1kky7?+FUpEgR_v_|CP=4J!jNGrA zuOs&x=5geH1HT({J>a*H`wjCna=&5z9l4L1|3vPi=DXnPQS*J|K5Bk|+(*riko%bV z8FC*pzd+f?%(KXS%={X;kD1>h_i?k7eZrgy%oFAmbaFoMdfU7`-bLO)@2Gc;cfI#s?^f><-d)~3-h@9;12d;F3=n;mP3Es3p+wZ%5Zw#Vk;w=!15+u|GJ+vES7zAAHl=6#t@W_C@x zV%mvmw@$lv+C$TRH0_tuu5Nl`(_5R~-Sokxk2ig}Y4Y@@>2s!^F=O?NO*3}R`1cv# zoAKirzn<~O8H;AFnEBF~Z=CtPnICDcn|1cAD`!10><xJ!{JBd9#<#UNif^?AOe` zZuUE7e`NMuv+tiBpEGgJlsPlzoH=LjoFj8yH|MQ$Zl3e4Ilr1SaqgnIXV1NM?x*M8 zKlfL2y?L2=ADVZ^yu0T;G;i+dJ*O8>zvA>)pZ>4=c4y7`pBZ};^N{Xi-#9qv*ghwzglwfnO`~c zjHNd({o2x>FHN>Kwa#r_-`d%FNo#lOHLY)Iy}k9btzT()Bvx))`M#AOUiqn&ZD;K~Yxu1HIm=&Fw`$s|m#)gKdhe=#T=n#-@2=Xi zy0AKa_AO`s?riUz#pkR%XU#d6pYyhJwx8R1?v3Z(eD2TA{o}dAZ8x<2pzT*}e{9RF z`TUxnuIXL-;M!R)iVyMK9b6m-e{k@N-FNuMGdJM|&cMS-;Pg>{=aawbIR(#DJg4E| zTL4XfGjY@3jAs^}xi}}JH^JYCq(5;EPTbn?ti|&pJnOOIZ^8<_8P66xTk*8xc`=^z zq5DOwhkbbZ@mz+dgr|(B0(b=L(NR3d@Z5yoHhVXoo3T2*7ti}KM?QcR>2|Cg|AOZZ zJfFgIC!Q~%4_^kaUjg^`fctyF@qOU!AvaJCKS+7Q1FC-t}3@C+L+vLSwjQ}XdEoD$+!I3-+R!?SF- z+J+dn3Dl2s%(=LCH5@}px7jqtQ_^dZrrxYIYlQARi$BlOt+(m*HoeiNH`?@O+ul|i zzSxG_ZMf5hyKT6~hMhLtXTu9^_!1jlB4HesRQq|U4G$n>zYdtIh2L(Q?zZV3OZRef zt@Q8Z=Ji5Xu;~KQ>~FzbC-|bp7cIUBd<^+TbG_vE+y3_3{+4XIWYZO!uGsVu%g+&; zK4$Ze+4SW$AHP{D_2U<-gwHE&`js~QN}C?C=^>jQw*9-xhF9D0S{uI3hHtRpbvAsn z4R5gFTWxqFLdx?-TmL)I9+H@!4C9!e z-f6@CWy8DBf8$M&h|Fq$EZTNi~{=kMmvf+j*;X-4X96l0IhB$B^dyJm&pO@RwWs zIo@Q;z1ybWZPPc~dT+Mr_t|o{*zkikyw#SwRp{d8!IHWJCO-jjTg=*zhx!zt7q53pTvl*7uPAod)vzkgxXp8@|dV75fC<>Nh48Q+#7g z@&6Lj`SR(Q>d$9vcy?Uz8{&%JWWy~se2dM0rw!j@!%y09Q$owP+i;r=yKJ~Wsri@L z@YOcF#)faR;ir?9FB{%(@l#V;ez6T(ZMepUA4#d)K9*8F`B+NpiKVq%!iF_z#n;)e z-iEz4f53)=HoV@3Z^~#rAF$y++VImh{D}=4tF-J$Y9;?!E z$yF=;K^q>n;p=VqMjO7#hHt6Xc0M;j%iS|U)A!l%ej84$(fpYl#eIB0E>#kk=In?!@^rq?G!;{Etnx4Y52G85^yc17- z)!oy+P_=3L9})g@_1)9{jHi79!U>?SVIB2r25Rn}HVdB4a(LorVTE69K4^xJeyuqT z@5-K!|HfT3Z^UyQo}2J|4bQ`PzJcd)JU_zo-*|qE=YQk*DehE%hVbWjeu4Ne5k8CO zH+X)J=MQ-Pi04mu{*1?XMeKr$#>W%G6UURllf;w4Q-!A*&jdU*cxv%9;AzA&1<$E? zrs6pb&on$uc&6i-foCS3S$O8+ndg1bJ00PCJS}(@;5h@&LOhG`EWxu3&vHB~@T|mh z7M@jjR^vGv&pCL`!?O<0dOREOY{at(&t^O?#c zr9HXcz9YGHg~HZsvAd8fnXm#&*}gGfLXElZuw}FwU_*M>pra3SY)u`x%La1Au3WdP zdDF29T=rAzvAER1{dYGEmAE#>pY7 zLUkJ_57Nk$ILPDVxyoOXEA_Ew8!#l}kOd&RKPOPC7QE8n7qVwV|(A zt{6lhO2Xv=S3uiDiAIQeG|G-5Mo30&cQ#+r4#~vZk?rr#bvw0*OqFG3cd75?GJ(eC znvuoAjz|+=a!lD#Bu2R$r8d<15q-I!BCQq9CW~$5Qx{}Myn-q+G&o8n5xIRa{Zj^(CTdWu3`bx*{ud) z-sU{)XGi|>+<2LLiv_WuGP{q!l7{6%a;!-Co;=1OXph6UF<h!zREgMhnS56G`rbKj#-65-_d9l?M0Z`eE05BzOMxHB=S+46;^<9;Y1A4?Zqyd zyb70>ku7q1bmV9{RqdnZGCI8>+Gx_5uTki6Y?F?WR6AlC1~mlM_2igcU~gltkUI#; zM5s0#%38C-wHk@h&6|$(gJB6xjiDJq!o(N~7>1G+D;kp27@EB!i8MKe3fk%Tr>2g{ z-y0=hVhqLhzT&~43MR%->>WWOsWCL03w_y;6G@Gs+1NJ#Z3)`auR27VV@lY zyhYt;3nO}m)F#f~&cXg1S0hcWFZ7A0fMw;_pyWFYXX(0%pw^WRmdO+_8~O$?9<0YA zHxzQ&5+NY|$`_Etc1H!@`fksgpVi+YSeSUg1bu zOS-NSqDQQ1>$)li4;UeYLj|~8;0m*Opa?wSGJ(qlDt@Ku%)zznURSA<@&^VgIlM{G zTkh&B74ip6#~`wL&8`Dn=WS|9*wONmEjcW>`7YBQaSSkAQY=asB{1!9&wH~K@wDI_ z7y61h_3_oxYCLpdIb>l9R~GwlvC_`0E9);V)?=WC3}qU%_G!$%F-ysX_;t6CuV;E^+!*;+?r;7$yv4@!-zf( zgJ#n)2(xT9=ZoD2OFh=FK6ngB7hn#tKN=YGp-}r z34z*y98H{9N7HpE*LC=Ue4(HmniBWUk=751i5r8qOzj*f6zoKif)OUev|}#71iS~B zkY_=`IABreJd`hM!$@nHAgKjLCD-9aA-nb8+use}B1o?5?hfKwlta|nr}M;g1t#4b z%?2uis8jgffpTRtjtX2?cGxtWQ64eC1VCygkD}_EazACtm27XnDZ?8zd5lYLloc}h zy~V({c3Z}AksVTzjFhZJSZ8|sVWxvZV&?K?@yaVSc_>lIcZuCA8yJhohB7D=!CAsy z`o4qGju{XEYFsCU>zmAm(I(Zj2YokV^44Pue-yhLwJ+h8Cya5{Y=^<*K~Qk|Vl5-= zU0dhcC1E97*L7^&ylzA1u019{jsVA?RD6)am>d&etOUr1Y-VI0lOs)00^+}y1CQQz z#yR-q_1KWWeA8#4w&9_Q?S&n{1fxahI~pw<))OhnX0VN~Wb?(cGc}sRkZVNe^4?+| z=L0g^#FvR|M0vvFh{*xFw5vpx?3~a*QNdh*Nn^nvt-cS^)fqz)7?0lTq%K4iM{ zrLw`s@eqs^PYK})RKPJjI2a6UuJdL1P5Ew9MxMA=g45~~ z1QcQJ7-Xx&Tn%z%?!R*fvIk9fpsF?o6{WS&2FXu2=qJHb>SId)+r^oWkSgDsJx1X{ zhUAMwz8zu-WNl9pM8GcIn=j_O2e4KMumWt~1+V;AEZ7>bN{U!l8%GhU8zk%!1?_Mu$;gCbIni;-gr(=|}S;U{!! zpu{O$fD=)W9&fN2JD|rq>3w$F(-P_?vmQ26LnRmF>i0OTc4# z)7R5O0q2hOWA{VOsGTwoIMXUwQ#k}7!3*Np!ga#h&KT!|qS`m_5(YOj!mRdkaC!#= zDD`Qer8O?)HAFa>~!wwiL zltenvL9}xO_b=E=maTnafPK_JPY(_;w0&t=dK2wQq&?eKyEU=92g-+VVbPB*Cf4$S z9F|TE2SOH)fN{JXI5<*)$Zbd@4rULfC?h6&whAsrFzsaG;%HGVL&3Q-5Cw-OuR`w0 zAESKA>u`hP+-!$ipMy5%Iv}lr^?hO0lw7k^=!Sd-XWn-D?}Eq*IGRUcsXuVQ!{O`2 zn&mupttnUs9U6-S2YQ^TYtJ2)$T5J}Z&@>7_QxTPEIndvFp!u!he~}#$f?`v-w4zT zsD$);xWIBif`o1gpQpIpLXJnpWmkEmH*r#mU~-?7g6r!^Go3$oa*B4lnx3=@9mkVb zV0Gi9}^YvQINHZ9`)NQ}!Q zA|japttrj`amh^ia2}Vh-Ti&}BF+PJLFEMCwM2Pcv0JFh@U%GHd1Gwyk^N^ME`hLQ zhnO*Dc%b%aYHOx?BZQmPbxWbOA?qSCD8)hQ3l({ zO&{?u1#~{a&zGd1MdNcjlnt-_^Mq46}mc>SGZHU z@?qByycQ6kLixbP!FHZx-?%TjZ`5{$(Q%X^Fejm^wQW-;^(2)eH{6uwdF@!h)RogU zd#(U4Y`Z!IJaP*wmL*sS!z&bX6vHZ3yU=$a56wB0m!P1g9A_c4=!L$60iAdqWw>Pd zB0RAiRMo{R*@Fjpy{W4_E<0_CHX}@R*)63ws;0Y`@39^Rb(z{gM^4m&_rZ3J7q74+ zmR82xMnUZw<*JUj^}>6w_X>01jfZqlbJVXV&W;50LRKZ({N8-2)K`+JV>?#HL6BRD z@uJAV+@67AS^XiB;s2B5;4Sx>&Y;Kr^udaBO39LI#Q=?ohYfF!cqUvK&HiqyvIlYNGL@@GfP@cK7l9kbJgK7;GC6PfF_sWLnzy2u;^>$|CYU=!k681-&AK-Pf51EHaXXQ~dU zDe7w(&RXpnjWB9|T)s6GIQZh-Mi(6M^YPWiyxGuuv`ZXsz2h<+@X_I>(G}-?Al`tH zy&$~0e(a2M<`8bG1mN_GXBkX0iXGyCfdlB*-hQHkIPhxL#pTne`henS>FtcF7LHGO z%|!*X(H_0$vJSXQh$OJdJ8Wdq6Lg7!s0~2zu0uFZE<%OD59%%yda`otk3B97L*)>{ zLx-@PqYmOa0vqH*mI8B=sV?sC4joyRH|0aP9XQP0F-=Mt`hm(z+=}bv+lD?|UAU>q zQvrK72f+>W_6|aBJv?!=H+5pnB5Bn)Ts9n_lieY0bqd!wO@&edDPA5|5GJtg2EQXv zWEYdbU_)8z!H$RpN_`#lxz*_aQ3 z9a9J9MK?|;InA(`*h6o7iO16+tkUYPKt|ZP;kHZ6REUNfBd6*xN5O1%^+2-w$70oT zj*}4~jog!r#g47Ol5>jbU8CIJM3S~h1S3(`H8MH^5v6xTBnW!%N(6{Vi2%nEwlu`# ziiDU*nGo5}Yh38)2>WOyDp$NwL2JhqEge|LAq&%vl@Q}j`9n<5w4&5TZN>!$wL>)T zNZ(;>0oRr3_UFoUnIyge23HLF`rN^M5pQ*n4C{xD9m!{LK*0OB1NJ@+6R*N!0$hNi zExnUd%a19|`G(~QZVE3jtfPW;u9EM~Estb9kn_>> zkojWnC?#TG8YI+qBf^8_3^W$b8}{vZ3BxT&+{WvArh}w)paVDts^GXl`Q;SF<94<@ zxsWprhd6*eQUyERLwOub;a##4UT$?xVPMQ-puOoE$>JrQ(TJ zIoo4zcMPNtbIeMy(2AttiI)3m*n7(dO|DeJe}>|JxAf=as zBOaQfe5=VX<0%Js&ZrKfhMq!lVvHn!ui2GF<#cXog(=?vfw-7d@%_P&2vZit5?F)c zgL7)Msv}0)Eri*EXdiR9B1$=XTp;ld8fv&QatHxy?#|f2^j?&(2O2n;0TGXrwHaAd z#t2$Gf2smH3%JZ2YcYn__Vgf0ptwdjxz-nb>7qk8FxdtJ0|{qk#&D2`2L?+Sj}YdKisWuw={!Lb>zh1~;P5rgJh<6((x!pD~Bgxiwq&6W<2&DwxI;)SBI z8T@ z$E)Xo#a4ufW>2n=JtnboSe>=>BtzDLJYQT6b5RZ4`~2l2S-=?Lz4>AVtHG`wacIIf z1>5umgtguK_b+wKh2}kYdnfvK3D45DjCjGMZSAuC`*H3s=l{>OcMdOwSPACBes`$e zwzhTue#{}PX>Dr@`}cEqg06JJZ_ReMcLTX%|NaVZ{M*(p-@iXx0oyna)~?*YzZE&F z_V1_hScYitejF=f_f!~M{zCeNJq}rN?C7ZFN?Y?V$`K{Col~~BBxp>|Mr_##W=FP& zdEOm#0&i<}U@4OGjc^E@4#)`u1Q2=8itkSZ7Xx955T%DJOS;6>x4OZ#eXH&(FicGG za?oPzNzD$--drhE95@ckAvKIhI7HNmvrL;Tf)wy7)5fb0MpsABXXC|u)vu62t^O!q z72&H}@P>KwHjesH1v=F#+SgroVWk$O4{NihC9oUtdAK`;VW7y@cP7=#m zq>?STfo@%4+VYaKQYzpKmn0NJ@z4rX9N?iD98XsKh4W;e8>!EWQZ)(6^ARO^`I(mak1Krh_JL9|Jd@JZ}oYF=Jut^;LQ1sqKW@2bKOz-!o^9qfy4hBUnmF0j-mJCT8$ zY>Tjo#5<5Y2{HmOsawx7d^_6)u#`xgwL)+R^#04((QU@O|%y0&^j4mC{MW}JX2&X51P~ORuS3ckr!C+Q+px0;CqdPEqn+sVuZK%#= zGOlv6OT^Y(0j02(^2WlBKrh}8#X*=I0tq>p?7V{bBdV~HFE!H99Xq{YC)|n*8{vvm z<3mk?(u1Rs#wrVw#I_HFg{X;PA-ppsZCd-^L4Uh^K_27YF>pXP&}Mg*x3C8>;c$AS zJ$7B+RdSaUyY1VpnjbZbrY)ye3DDw*Fm{N4jB}kF1!+}Vk>hj(l5*BlZ6*#u*)d2X zsFU{B?pCb4t@1))L(=9`DL`+ZOoibP!s1kn=gE^WIz70 zlsA7JI5-F%dnHZ29sf9*K^}XLx|VN{_SmCV#7iTG8?;2}xO#b5q;ZCM zNDcot7qM=XIfir*{DjoF;}vd0UYbphaMp~Tjg$&TEF0F;45|U?aUV)FgC~v-j;s(5 zYskr{QWjmv=|&#Mh9icfD3s0%w?|MG=U~8@m6Sv{%A9W7vW|DfXi%82;9kmg<)DSx7HH zZL1KP>h)$jzL~XwU$RW?k#A?2HO=^1C1s5l-oWiSXc4cPNm+8oy1FD4@zoSrRYcQ$j(z$ zLaY-&C=v=6%*}7Zho_$ZuUU5nJ~(y;_}YoVX5AbZHwf&y6H6YsZlD&3;8ZMTv5K}C zT52b2ri7htXoC86xMw*RCKc_mHXbWdT7G?_0`|y`z zrY4m&13!!ALN$06bi+|C31xQy%`kO}CYG8^Eg+{fihUSE_6%?IpKSg$f7WOmL zIQ5--9L2OwMY4K~@(xjvSX9N`pF0`EXIE8B#ZnW3C>)i9yGQ-uCxkjLfjPP|aVs z#OzcYdgI@ZvA;@ML$CdNFmzN5ylyLA26lDfb7|@tSukBWGhdZw>==!r+aJz+%~=YuxsA!m+gl_B1Tl9a=eoE+*bd8&q;PKT=&gV|)1V2}8i}E4G(+!kT~Yajthfom z!RIkiH;NvFlN7pMBRzIi|C7}c-OspT9w}{($#@KYrW0F|K4kIh=IRBEl`4&#%9~yR z_4cS}tz(=TJ+^Dn4p1Hb_RQbcDU&H|+BHIkIgC^sst->FxPRonNW0Pn934H511)-V z97c9W*?zvxM5+E7MfrkL6dv9Dr5f+XfePfxzYzU)7H~A}U(tbccShC{Jrf)|XHQ~( zdR^bgYDjp(8g8q@1($>7CKBhIo{92=bZkw`XTR`*76zVc!dRNQ@Ef_CV zGd+K$*|Uyh$5`Inn#cC_tbF8=4PI`|2{)#T{Iv2%7YQp56{ zn4VmPh#UWqR3-1m4W7wGoig3GNZVXFTfh}3s~dY-nJ($8D@6>CFZ5X0Elm7P6UA5u z_C>qkjl3M(u%GM)WldYhz7_GSC~OVy@JV|-(xYeIg^;N0EGSVoPBPRejaKIybv7fwqz z{nflU39oB3%JYNm&0BUSmXSz(L8B>b8W;3q?KU*)*-dJpzgwq_YFL;W}7r!yci5=sY%qH@%1*?ezdYBp7ixXw{+2T zm!&Md7!R(iLBn}Sv+8Z@MU3^1F2R13@mF9$h7E)hz5l8J#zyYjb9U z7jm3W-m3FQv`N{MAHDAg4+mTE0c)D9qsSL?A35j=`Jg$aAEUO$-4s3F#j%;T6)jT7 zoq-FNR5O2ktD!SGLYLowI`pPS$BlExaX_mUb+NXa2`aw6zoi0cFrn7q)ju(0LOX<9Tb}xGF zcBA#Pe}6%ba^uw;E&n%>+u(Dx^4CdiA)J#JAi0%WBV!W!`O)J^XJxn+(K5hBZEDBZ zMQNfua?XWg%av>V3xBia`D*D#Sy~c&rX90EZ3Vu#A*(50`_NU;n|!ggd*^~iEj@I; z+F=pjvKbudOdER)93I5deWd-MEx8z$bO~h0-Y|AH=h3;e&72+lFPCaJPG+sfSj%(i z$MC?i3pJ{iFUP!XhGnIjsCnT!$9A2A>Fo;TNqdQJl>~LPfJff*@TSMrLf4hGGKV_g zZpwrD&Zn!V>&-~d$ZKUwdn*J$`8-G#kCdGUfBY-ga(=pDi`GEDjD=_%ji;jP+q6f^Ot8o?AT3r zJDIV&80=Z5bb=#wpy*ce*qHkY{<-V?r*CQe_WbicRP~`n8>V?{P5M)pU$SrNif67# zPHxC}jRrwlgNYhU(x6#`CJp9l(4xUo4W??aLW9*Bv}tgj28%SgrLzwDxi>5P*bCqp4?DDm5m+%3ZpX~0(6Z5`b&ai zLV)xFRGpgKF!VYb-eAKUZFm#H>d6f&!OqaFh@;3F4c2LZKC@m(fK06;-J?=@olQLv zBQK49y-hzI*K}hngLa=0T9n-6IxN*;JXkA6z?%rFANy8LsE8~;Ak4;)NcOYQY}QJV zHhS#W%_v~`KaScAxH`TRxlZnyb}5m?@lMd8?D0!%*loi@HZ0f>T$oy+3%En$$FG#e zU87Hf$O=YATEs+ghN(4S3Z2@70ti+jNHB;2t`WG>i%XnvrI(O6;Yu$lal(~eO5%ho zy|ly$S9%$V6Rz~CBu==}tCl$7N^gS130HbG60Z?f>h~g8U#8+vhpTt9qcRkP=zs@p+hqj!eU&xX-2 zh0(jh=)H)dRv%BA^&Q`uYWBV9U;!xvw#pxXth(9r(a;|-CVp+RAH*jLbNIRLX7E8) z9T8rW1Apu%nPW)K7?Lf9drUw8S*V3*6~=K^z#is-+%vCF9MYd>|!hfc)38 z`Os>T5VepHa`!R9X$&}q*cRc8LIy?J*qi_*XBsjml60aErP0p7GB+dFQX1*4%tm4` zipXR4(im((v;+u@oD8Q_MH*X`M$rhH*a*Dq;i*f>@kVfLF^sH4Qu^2iN{%8MXSf?- zEIB=$PEOYZk%xe+WxdQ*s3Xo&br^9iuVan0PEjRHS2xF1K>kF(!Ne5{gUhGXu9 zUJT_aQ6I_`qoDkW6alIc8Z>2N+IPw12r?I14RJuQWP*rV>QOD#u(q}aP1{;(8wMve zCvC!S802u^Us^|r1%XQ|7B%>_sMtp#OoOIal2T6imTAXVdIB^$=m_Ps9o48{7$YNo zyah!uYn!T|NOm0-ototga(c1~%;nm?PH2v!N318E_A!565l_}1-`>!iv{)LOMi_$a zY`73K%or6Aft}-?(`B!kx-4qn=+!UvRpX`E8Tf%JAB(otWtdW56c+27pc*|G7Bq*Y z5Q`#Il5BB?PK-pnYGQ2twcu)n>tdr0 zt7G>9u{L^GHlqzN8L6GgNYzY6>ZMR&v8}aZ4D$+-k8}y^4kadSHbS;Avsi;^)8a{4 zA7BVIP4g+v5A+drNECw#3&7M3C;^*i#-B_$@Aj8&1DFUkDDFH?qbAyB-K+#4aWaUsz-r_}J3PWQ3Cdzg(T{>Tp!u-J{> z1Pmm)tB&zx1H%_2Tm)n^vEYc#GAuf2obNnUi@0PY2gPEr;kjCjEMn2#MAa7Ore`tEL}A$$t7A_VN6OQVoOF? z7hTXz%RIFhni#=$bjj69>0yc#qMb&w$2oG;7FZ=r8aG93MwN;CP3ktMO{}(I0(`%? z@zS*uCwg&+c_L<~W;aaqiKzHoEffVCh+ksnkKe}Q1ejbVK9L{+z&UYz5*ts7M=EKq z7=h6^9;9eAB*m3t=xQj8En8!?M{BB+WeAI|)Jso*&W$9*rb&!GFRWR5dU{fG%;q8i zheonzVhu&MtHXw2ehp2z#lkuu<(jZa818^QI1q8N&TiU(Mwe1nUZ6iPen_#a)0*M` z96vRrwN&st*cDgEMoA~`5x5cmNY@YBM}K^CigqwQ=;Czf9#xQa+h%N#o^G62MrNo^ zp>?c=+6qUIY&4417)dR|*@R3ndB+)3n=H-R)-yCT&hJHITgUOhtC)GxMHF1x?ce=V!IAEiUxjmjF{A7~F zw)!4y9rj_ykBh%7dr@hOG4jG`NYTLEQN#*_Izt&F$?5>Z7%{XHB8(nQR4#}{vS{ND9JB60Bg)u>K`zhXmplr^> z(9u`QN%Za|%E={#WiD{~ND4f=sMQ9dYird_7aF+Slf_S$RK!uAB*DjoIrgx$1=+tUCZqXWL3P;!>%D*q@q|X&7)~2LP0RA z=*U@*lwJsv;`vB~3ifJXtX?q+-zy!9#gh%gX_#|Bx?wT;im_NCO#~_8aZ*eaiixC% zlOi4$iixC1BuH_pP@GDN1St{;p*WQkoLmjV%|g*kiX$uMuVukYcw`>?XwoQcRd26uU`LQ$vaih2la|)R3a4Mkp?X zJl5WS3%lp7E0z>`eKf2CVD}RE85bMl+b*9OvN*0^MUs zlv*!mQ^dn@WD4^%%nJ&MEv3h%nbkaku<;Cz1?q?Uf#8nY>J%Em6dyhYEUT6CCY#1e ztj86y5(|l~3CogLDZyc8)ejG$JeLw1;{n9*RlxblnhY!iSoV2B09IhF(rKz z^fnOYHAq%D2$rq41biFG%Zc2`&N{%*BqOQ z=H4GR2u1W=xk0X$^|bM#Y(uJY6`1{m_{b8nxe&L%(2D z$93V8Tr7Mz=7GkjK2WQ4^i_|*CY0;-O?Ax)$>ENX>H6kmkZwew*EgkTZ-8S+eZ(nJ zBc=+^j-<>rP}xR%K|>TJ%D>ff84Z(@l<4XkUk(#M$}@wv%DS5{svB6cS5e z8LI*w2^`9HB@G(hc%^rw8q}Y2khEHY_K|TdAUvln zV@fa4|B*KX{#-FQ~Rq1$YDmxd=M zAw=I{S49*|qVR!ufZ^rUPte3KwD=RP9-$ zaI~zeFsQ?cE37_B9?p>&W>%_78z8}`!B+W-R^bMOU7x|}AX7>ZyjTFf3Bmjn`nH`z z7}Uc!i(nNd_gswAoH)lqb(soE;j&B1HQU z4iSxOfdy$av<271jFgQ<>D>UsH4_FzJHc_SXpE+iM6HKVt7sG>O~MglD!)nOf+MAL z3Sl*BYikLcn&QT*ZAzJVE#gf{W=to}tHqR=-qh&fOBx-uF?`K9-H|<7!Oxx?!mhPp zFa?K#C8|S|vI(8cdAAU4sNS1Q_~ZJO1JjpP<&OZDFhqQ!Pr&);Xx8Y(h9c zRZra*+2}Y3t&t_9YZN|e>UU|5`ioLCM^^(ujO;AB1Kjv%F55S|>4)PwiZF`E1RE~s zd*p&3iQ_bkQZ?w^jtm6$a1L{T?=o0vF{RZo=FjkEL3LP&$)NNIa?H^yWl_c9c~wX= z0h7YD=JPd$tElp*ykTg_#bmbP9tZs454czwmQPj*RZx4QA9Bfxa5m|xuZEzNg+@7q zfwAy;1r+3CD6#URP@|fD2}lM1poUV6W&_X49h*F)4OFSoi{l!Noj5U9*rQBcTnYuf zJkb&%&^Y_f14XIe_>U#VF%6E=aeKr1EK!w-@%n)`5STw{xE2#kf|xWPs`Aiv(5eKc zD0B_P7-URm&Sdbk2wAF=jM4B2HM5omSwT$lVBNzT6xeojTW?b)(ZCJejA9Yw6tO{q z9@Y)iT}LV&W3N@K)8M(%D!v*LChpN^3Ly~SZ9Cb>9e zz|GNYzVaef+9oV*WE>`P0!pQp5~kR17{J>L(;Eijcvocr?ry^X60G!gRN9iNm2|@Z zUXqX-DP-bbT7xh~cl~&KZT;~bxSVcknoflqx)U`p{47Ek>~s_5tanO`-7D%2d5Gfk zhBDOqbX8!Q(o<7>TY*x=8m%)Jg{UHH=?;kCBRK(uEQYRtDx@y>4%a~cO^S=}!y2ch z5_H%dg|y=mU=Z&_xfGS!HZ_83Iz}0Ui@+}Xhrh}zp`CS9HOS?}3WPc#89OxnlP=#25yBC7VHWo@tHD?6TyOTt32vKm%tgE{6aZ8U$Pg`>ysv5 zKp+d;=(@1LQ8ct$kgcrXwkkV+vBI%4B(TAFjYhIVVoG)nm#t`Nq=>hH2=lZQh0JzYHDnObXu1B(VeRf#-Y(Hr4^1g?V1c43z$;9lI2=VAgZ;? zw!~CkqU@+|245UK2K|%zW*E#4r$ZJ~qy2#=iv2prONN_o7(%lFLk$|CH>AQLjZ^~3 z>`F~e`yr_omGT0fBOPfVLQ0X#wi#zfbTZ^3(Jt8%XE(Vm$cS@Hs4?rk&(>lT*i>tDf$W=!6rqV8lPM8M3)< zLFXsP?pTOrT-+d^${9@6bX91#aaqNw8_j@gSbuyjD6xjxn5)D#29d+L;NA@xwx}Rr z&fScmOkES9*$P~P*(vFsT9l}|TP*}3S~;;1b?Bnb7w^cYDH4hh#B z$P1kU$P0zXFAbBVzulI*Q^OPFOJ!;~Jbss@pntwqPEwDPSo~K;P)Q`9CQ0^4v`ul2 zN-n41xP&WdW%OKhM73y8w3I`of5VCB?6lO3IXRjKq8!e)x-BL1ktJj{Fk-X*;-FJj zHVTq|Q9L{i6{Xkd2O}!eFbr)sLl-_ut?M=`b^RPG4jn&T2=Bx~*dpur?TAInh(Td4 z95#1g$t|?)CZuYQ2t|6TL|;O)s$CJeSOZK9u6D$7M{>nZKY%=*cm|cj8jdT@K<2ms z2f@84r%NqkP1-c0$fF3IVXa_6} z@?;iM2H@?)B?uR!>eQU6^19l>eg+twIxM4>g`Hpz9}X~-(Z5Y@YY9B>qfp5!%^KBVdmy9t{ETz`d7b!^gdHNy=74axyI1Mp`4}IZbxY& zQl%zq1-8iq4$Sq~<2D=@LND?Dt{&dm%_LsE#=!~p>c=la1e$?Ine4D86EWHLkikgEvDA-U50l-mj>_K_6n+`DfAzzAnZN3>T!Rz6o(= zs?MIh4<7@X(ij=xphxf+zeq~QZ@7Yz^{L?P3OQF3S!q>zZXlYd<_QCj?pr<@PF#xO zI(ZmtPSrwi!(8|H7yG@yrO{X;7fPuamjX5>#RbP}4u?f)F;+@!NreD8HVM-fblP@D z<)iO!Ou}&wD6axHoHH5$GDujQ>|@6u1OHS`ro`yartuNSa)wA-&Vf`3o$bcSA#NC{ zO4xMk{czAU<#r{QK_w@;5vtr6~YTAi1qJIO@#lKQetQa13ujs8qKH zF|I<2`)m;VQV_c2#%dq2HrXYDyd6J4RttgL-X*o<8 zXil^&N57E{iL@N{4nBaRI~6OJ?%qd9fc>VwHcX2S(=Va5_7>ML%wBq47_(bl zWj$<}x))Km=&FE;5RA4h;50|HTlT0jXtGBYHfSa69#wK8Rm%p{A|1Ys zl;{O`>BvM z{C_{E8Z$Jqw=ya437D~X(rv|a;dyb>$^S!S|8&MyAhyqRU?%Lt_doU^){f7B??k#C za5Lik^SSs>|3vekEoh8*zKqL1)L5O0k`%BJ&_k{Kx`=+12fw6=FNN?UL;N#WN_8Ta z-w!F{OC}x*abY zf#GK$S@&w;cb9FC8bL1HI50In-z!8e zyHSpxZXA$r42_n~XxXfmGV8!ArOl61>Su7DuN>I?+y7Y_$Ez{MG_U>JSN;EM{J&oU F{|BW|up9sY From 0ab2289cdcf2417964de5ba36b0d9d4b512013d0 Mon Sep 17 00:00:00 2001 From: Dan Lake Date: Tue, 3 Jan 2012 16:52:08 -0800 Subject: [PATCH 05/20] Access to these static methods to serialize objects are useful outside of serializer --- .../Scenes/Serialization/SceneObjectSerializer.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index 60cc788dc9..bca49f74ca 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs @@ -1263,7 +1263,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization writer.WriteElementString(name, flagsStr.Replace(",", "")); } - static void WriteTaskInventory(XmlTextWriter writer, TaskInventoryDictionary tinv, Dictionary options, Scene scene) + public static void WriteTaskInventory(XmlTextWriter writer, TaskInventoryDictionary tinv, Dictionary options, Scene scene) { if (tinv.Count > 0) // otherwise skip this { @@ -1317,7 +1317,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization } } - static void WriteShape(XmlTextWriter writer, PrimitiveBaseShape shp, Dictionary options) + public static void WriteShape(XmlTextWriter writer, PrimitiveBaseShape shp, Dictionary options) { if (shp != null) { @@ -1492,7 +1492,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization return obj; } - static TaskInventoryDictionary ReadTaskInventory(XmlTextReader reader, string name) + public static TaskInventoryDictionary ReadTaskInventory(XmlTextReader reader, string name) { TaskInventoryDictionary tinv = new TaskInventoryDictionary(); @@ -1538,7 +1538,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization /// The name of the xml element containing the shape /// true if any errors were encountered during parsing, false otherwise /// The shape parsed - static PrimitiveBaseShape ReadShape(XmlTextReader reader, string name, out bool errors) + public static PrimitiveBaseShape ReadShape(XmlTextReader reader, string name, out bool errors) { errors = false; From 82df5de5cf91960ff5f50d0f0568ac6443516960 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 4 Jan 2012 16:15:05 +0000 Subject: [PATCH 06/20] Remove the pointless LLClientView.m_imageManager null check. Despite the code comments we never actually null it. --- .../ClientStack/Linden/UDP/LLClientView.cs | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index b37fd54b9e..fe28ba3f28 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -348,7 +348,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP protected Dictionary m_packetHandlers = new Dictionary(); protected Dictionary m_genericPacketHandlers = new Dictionary(); //PauPaw:Local Generic Message handlers protected Scene m_scene; - protected LLImageManager m_imageManager; + private LLImageManager m_imageManager; protected string m_firstName; protected string m_lastName; protected Thread m_clientThread; @@ -499,8 +499,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP IsActive = false; // Shutdown the image manager - if (m_imageManager != null) - m_imageManager.Close(); + m_imageManager.Close(); // Fire the callback for this connection closing if (OnConnectionClosed != null) @@ -3940,14 +3939,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP } if ((categories & ThrottleOutPacketTypeFlags.Texture) != 0) - { - ProcessTextureRequests(); - } - } - - void ProcessTextureRequests() - { - if (m_imageManager != null) m_imageManager.ProcessImageQueue(m_udpServer.TextureSendLimit); } @@ -7479,12 +7470,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP if ((ImageType)block.Type == ImageType.Baked) args.Priority *= 2.0f; - // in the end, we null this, so we have to check if it's null - if (m_imageManager != null) - { - m_imageManager.EnqueueReq(args); - } + m_imageManager.EnqueueReq(args); } + return true; } From fc391d4b10b5f05be4d0b44db5be0f2133b74434 Mon Sep 17 00:00:00 2001 From: Dan Lake Date: Wed, 4 Jan 2012 12:01:18 -0800 Subject: [PATCH 07/20] Added EventManager.OnRegionStarted which is triggered when Heartbeat is started. --- .../Region/Framework/Scenes/EventManager.cs | 24 +++++++++++++++++++ OpenSim/Region/Framework/Scenes/Scene.cs | 1 + 2 files changed, 25 insertions(+) diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 4f71915fe8..fd35c62cc2 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs @@ -401,6 +401,9 @@ namespace OpenSim.Region.Framework.Scenes public delegate void RegionUp(GridRegion region); public event RegionUp OnRegionUp; + public delegate void RegionStarted(Scene scene); + public event RegionStarted OnRegionStarted; + public delegate void LoginsEnabled(string regionName); public event LoginsEnabled OnLoginsEnabled; @@ -2243,6 +2246,27 @@ namespace OpenSim.Region.Framework.Scenes } } + public void TriggerOnRegionStarted(Scene scene) + { + RegionStarted handler = OnRegionStarted; + + if (handler != null) + { + foreach (RegionStarted d in handler.GetInvocationList()) + { + try + { + d(scene); + } + catch (Exception e) + { + m_log.ErrorFormat("[EVENT MANAGER]: Delegate for RegionStarted failed - continuing {0} - {1}", + e.Message, e.StackTrace); + } + } + } + } + public void TriggerLoginsEnabled (string regionName) { LoginsEnabled handler = OnLoginsEnabled; diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 0f84da970f..027ec969ca 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -1194,6 +1194,7 @@ namespace OpenSim.Region.Framework.Scenes try { + m_eventManager.TriggerOnRegionStarted(this); while (!shuttingdown) Update(); From 3a64522267352d1c68ef99ac76c65bd3c4f9eaf1 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 4 Jan 2012 21:40:15 +0000 Subject: [PATCH 08/20] Minor formatting changes and commented out log lines for future debugging of image manager (udp texture fetch). No significant functional changes. --- .../Region/ClientStack/Linden/UDP/J2KImage.cs | 24 ++++--- .../ClientStack/Linden/UDP/LLClientView.cs | 2 +- .../ClientStack/Linden/UDP/LLImageManager.cs | 72 +++++++++++++++---- .../Agent/TextureSender/J2KDecoderModule.cs | 4 ++ 4 files changed, 80 insertions(+), 22 deletions(-) diff --git a/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs b/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs index cb9692a77b..185a909ecb 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs @@ -102,7 +102,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP { m_currentPacket = 2; } - + while (sendMore && packetsSent < packetsToSend && m_currentPacket <= m_stopPacket) { sendMore = SendPacket(client); @@ -114,17 +114,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP return (m_currentPacket > m_stopPacket); } + /// + /// This is where we decide what we need to update + /// and assign the real discardLevel and packetNumber + /// assuming of course that the connected client might be bonkers + /// public void RunUpdate() { - //This is where we decide what we need to update - //and assign the real discardLevel and packetNumber - //assuming of course that the connected client might be bonkers - if (!HasAsset) { if (!m_assetRequested) { m_assetRequested = true; +// m_log.DebugFormat("[J2KIMAGE]: Requesting asset {0}", TextureID); AssetService.Get(TextureID.ToString(), this, AssetReceived); } } @@ -137,6 +139,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP { //Request decode m_decodeRequested = true; + +// m_log.DebugFormat("[J2KIMAGE]: Requesting decode of asset {0}", TextureID); + // Do we have a jpeg decoder? if (J2KDecoder != null) { @@ -149,7 +154,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send it off to the jpeg decoder J2KDecoder.BeginDecode(TextureID, m_asset, J2KDecodedCallback); } - } else { @@ -328,14 +332,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP { if (m_currentPacket == 0) return 0; + if (m_currentPacket == 1) return FIRST_PACKET_SIZE; int result = FIRST_PACKET_SIZE + ((int)m_currentPacket - 2) * IMAGE_PACKET_SIZE; + if (result < 0) - { result = FIRST_PACKET_SIZE; - } + return result; } @@ -374,7 +379,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP { UUID assetID = UUID.Zero; if (asset != null) + { assetID = asset.FullID; + } else if ((InventoryAccessModule != null) && (sender != InventoryAccessModule)) { // Unfortunately we need this here, there's no other way. @@ -395,7 +402,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP } AssetDataCallback(assetID, asset); - } } } diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index fe28ba3f28..eb1a50e4c2 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -577,7 +577,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Add a handler for the given packet type. /// /// - /// The packet is handled on its own thread. If packets must be handled in the order in which thye + /// The packet is handled on its own thread. If packets must be handled in the order in which they /// are received then please use the synchronous version of this method. /// /// diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs index e3a881f790..3e31b7d9cc 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs @@ -84,7 +84,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// public void EnqueueReq(TextureRequestArgs newRequest) { - //Make sure we're not shutting down.. if (!m_shuttingdown) { J2KImage imgrequest; @@ -99,19 +98,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP { //m_log.Debug("[TEX]: (CAN) ID=" + newRequest.RequestedAssetID); - try + try { lock (m_syncRoot) - m_priorityQueue.Delete(imgrequest.PriorityQueueHandle); + m_priorityQueue.Delete(imgrequest.PriorityQueueHandle); } catch (Exception) { } } else { +// m_log.DebugFormat( +// "[LL IMAGE MANAGER]: Received duplicate of existing request for {0}, start packet {1} from {2}", +// newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name); + //m_log.DebugFormat("[TEX]: (UPD) ID={0}: D={1}, S={2}, P={3}", // newRequest.RequestedAssetID, newRequest.DiscardLevel, newRequest.PacketNumber, newRequest.Priority); - //Check the packet sequence to make sure this isn't older than + //Check the packet sequence to make sure this isn't older than //one we've already received if (newRequest.requestSequence > imgrequest.LastSequence) { @@ -126,11 +129,34 @@ namespace OpenSim.Region.ClientStack.LindenUDP //Update the requested priority imgrequest.Priority = newRequest.Priority; + UpdateImageInQueue(imgrequest); - //Run an update imgrequest.RunUpdate(); + +// J2KImage imgrequest2 = new J2KImage(this); +// imgrequest2.J2KDecoder = m_j2kDecodeModule; +// imgrequest2.AssetService = m_assetCache; +// imgrequest2.AgentID = m_client.AgentId; +// imgrequest2.InventoryAccessModule = m_client.Scene.RequestModuleInterface(); +// imgrequest2.DiscardLevel = newRequest.DiscardLevel; +// imgrequest2.StartPacket = Math.Max(1, newRequest.PacketNumber); +// imgrequest2.Priority = newRequest.Priority; +// imgrequest2.TextureID = newRequest.RequestedAssetID; +// imgrequest2.Priority = newRequest.Priority; +// +// //Add this download to the priority queue +// AddImageToQueue(imgrequest2); +// +// imgrequest2.RunUpdate(); + } +// else +// { +// m_log.DebugFormat( +// "[LL IMAGE MANAGER]: Ignoring duplicate of existing request for {0} (sequence {1}) from {2} as its request sequence {3} is not greater", +// newRequest.RequestedAssetID, imgrequest.LastSequence, m_client.Name, newRequest.requestSequence); +// } } } else @@ -142,6 +168,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { +// m_log.DebugFormat( +// "[LL IMAGE MANAGER]: Received request for {0}, start packet {1} from {2}", +// newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name); + //m_log.DebugFormat("[TEX]: (NEW) ID={0}: D={1}, S={2}, P={3}", // newRequest.RequestedAssetID, newRequest.DiscardLevel, newRequest.PacketNumber, newRequest.Priority); @@ -159,7 +189,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP //Add this download to the priority queue AddImageToQueue(imgrequest); - //Run an update imgrequest.RunUpdate(); } } @@ -176,7 +205,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP // If null was returned, the texture priority queue is currently empty if (image == null) - return false; + break; if (image.IsDecoded) { @@ -194,10 +223,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP // written. Undecoded textures should not be going into the priority // queue, because a high priority undecoded texture will clog up the // pipeline for a client - return true; +// m_log.DebugFormat( +// "[LL IMAGE MANAGER]: Exiting image queue processing early on encountering undecoded image {0}", +// image.TextureID); + + break; } } +// if (packetsSent != 0) +// m_log.DebugFormat("[LL IMAGE MANAGER]: Processed {0} packets from image queue", packetsSent); + return m_priorityQueue.Count > 0; } @@ -219,7 +255,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP { if (m_priorityQueue.Count > 0) { - try { image = m_priorityQueue.FindMax(); } + try + { + image = m_priorityQueue.FindMax(); + } catch (Exception) { } } } @@ -232,7 +271,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP lock (m_syncRoot) { - try { m_priorityQueue.Add(ref image.PriorityQueueHandle, image); } + try + { + m_priorityQueue.Add(ref image.PriorityQueueHandle, image); + } catch (Exception) { } } } @@ -241,7 +283,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP { lock (m_syncRoot) { - try { m_priorityQueue.Delete(image.PriorityQueueHandle); } + try + { + m_priorityQueue.Delete(image.PriorityQueueHandle); + } catch (Exception) { } } } @@ -250,7 +295,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP { lock (m_syncRoot) { - try { m_priorityQueue.Replace(image.PriorityQueueHandle, image); } + try + { + m_priorityQueue.Replace(image.PriorityQueueHandle, image); + } catch (Exception) { image.PriorityQueueHandle = null; diff --git a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs index 7dd90874b6..14dee84c24 100644 --- a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs +++ b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs @@ -103,6 +103,10 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender // If it's cached, return the cached results if (m_decodedCache.TryGetValue(assetID, out result)) { +// m_log.DebugFormat( +// "[J2KDecoderModule]: Returning existing cached {0} layers j2k decode for {1}", +// result.Length, assetID); + callback(assetID, result); } else From 0634c3850563fc38a4026f70a7bfd64a05198fa3 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 4 Jan 2012 22:22:46 +0000 Subject: [PATCH 09/20] Separate out rebake request code from cache validation code AvatarFactoryModule. This allows some logic simplification and allows an external caller to manually request rebakes even if textures are uploaded (future command). --- .../AvatarFactory/AvatarFactoryModule.cs | 72 +++++++++++-------- .../Interfaces/IAvatarFactoryModule.cs | 22 ++++++ 2 files changed, 63 insertions(+), 31 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index e8aee3eafe..d64a0c170c 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -156,7 +156,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory changed = sp.Appearance.SetTextureEntries(textureEntry) || changed; // WriteBakedTexturesReport(sp, m_log.DebugFormat); - ValidateBakedTextureCache(sp, false); + if (!ValidateBakedTextureCache(sp)) + RequestRebake(sp, true); // This appears to be set only in the final stage of the appearance // update transaction. In theory, we should be able to do an immediate @@ -250,15 +251,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory return true; } - /// - /// Check for the existence of the baked texture assets. - /// - /// - public bool ValidateBakedTextureCache(IScenePresence sp) - { - return ValidateBakedTextureCache(sp, true); - } - /// /// Queue up a request to send appearance. /// @@ -292,17 +284,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory } } - #endregion - - #region AvatarFactoryModule private methods - - /// - /// Check for the existence of the baked texture assets. Request a rebake - /// unless checkonly is true. - /// - /// - /// - private bool ValidateBakedTextureCache(IScenePresence sp, bool checkonly) + public bool ValidateBakedTextureCache(IScenePresence sp) { bool defonly = true; // are we only using default textures @@ -330,16 +312,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory defonly = false; // found a non-default texture reference if (m_scene.AssetService.Get(face.TextureID.ToString()) == null) - { - if (checkonly) - return false; - - m_log.DebugFormat( - "[AVFACTORY]: Missing baked texture {0} ({1}) for {2}, requesting rebake.", - face.TextureID, idx, sp.Name); - - sp.ControllingClient.SendRebakeAvatarTextures(face.TextureID); - } + return false; } m_log.DebugFormat("[AVFACTORY]: Completed texture check for {0}", sp.UUID); @@ -348,6 +321,43 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory return (defonly ? false : true); } + public void RequestRebake(IScenePresence sp, bool missingTexturesOnly) + { + for (int i = 0; i < AvatarAppearance.BAKE_INDICES.Length; i++) + { + int idx = AvatarAppearance.BAKE_INDICES[i]; + Primitive.TextureEntryFace face = sp.Appearance.Texture.FaceTextures[idx]; + + // if there is no texture entry, skip it + if (face == null) + continue; + +// m_log.DebugFormat( +// "[AVFACTORY]: Looking for texture {0}, id {1} for {2} {3}", +// face.TextureID, idx, client.Name, client.AgentId); + + // if the texture is one of the "defaults" then skip it + // this should probably be more intelligent (skirt texture doesnt matter + // if the avatar isnt wearing a skirt) but if any of the main baked + // textures is default then the rest should be as well + if (face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE) + continue; + + if (missingTexturesOnly && m_scene.AssetService.Get(face.TextureID.ToString()) != null) + continue; + else + m_log.DebugFormat( + "[AVFACTORY]: Missing baked texture {0} ({1}) for {2}, requesting rebake.", + face.TextureID, idx, sp.Name); + + sp.ControllingClient.SendRebakeAvatarTextures(face.TextureID); + } + } + + #endregion + + #region AvatarFactoryModule private methods + private Dictionary GetBakedTextureFaces(ScenePresence sp) { if (sp.IsChildAgent) diff --git a/OpenSim/Region/Framework/Interfaces/IAvatarFactoryModule.cs b/OpenSim/Region/Framework/Interfaces/IAvatarFactoryModule.cs index 8670229e8b..04df9c3723 100644 --- a/OpenSim/Region/Framework/Interfaces/IAvatarFactoryModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IAvatarFactoryModule.cs @@ -61,7 +61,29 @@ namespace OpenSim.Region.Framework.Interfaces /// true if a valid agent was found, false otherwise bool SaveBakedTextures(UUID agentId); + /// + /// Validate that OpenSim can find the baked textures need to display a given avatar + /// + /// + /// + /// + /// true if all the baked textures referenced by the texture IDs exist or the appearance is only using default textures. false otherwise. + /// bool ValidateBakedTextureCache(IScenePresence sp); + + /// + /// Request a rebake of textures for an avatar. + /// + /// + /// This will send the request to the viewer, since it's there that the rebake is done. + /// + /// Avatar to rebake. + /// + /// If true, only request a rebake for the textures that are missing. + /// If false then we request a rebake of all textures for which we already have references. + /// + void RequestRebake(IScenePresence sp, bool missingTexturesOnly); + void QueueAppearanceSend(UUID agentid); void QueueAppearanceSave(UUID agentid); From 8fb70a2058e98dea63e7ee7c5b55532668fccd38 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 4 Jan 2012 22:45:07 +0000 Subject: [PATCH 10/20] Add "appearance rebake" command to ask a specific viewer to rebake textures from the server end. This is not as useful as it sounds, since you can only request rebakes for texture IDs already received. In other words, if the viewer has never sent the server this information (which happens quite often) then it will have no effect. Nonetheless, this is useful for diagnostic/debugging purposes. --- .../AvatarFactory/AvatarFactoryModule.cs | 15 +++++-- .../Avatar/Appearance/AppearanceInfoModule.cs | 40 ++++++++++++++++++- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index d64a0c170c..9df0592d4c 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -343,12 +343,21 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory if (face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE) continue; - if (missingTexturesOnly && m_scene.AssetService.Get(face.TextureID.ToString()) != null) - continue; + if (missingTexturesOnly) + { + if (m_scene.AssetService.Get(face.TextureID.ToString()) != null) + continue; + else + m_log.DebugFormat( + "[AVFACTORY]: Missing baked texture {0} ({1}) for {2}, requesting rebake.", + face.TextureID, idx, sp.Name); + } else + { m_log.DebugFormat( - "[AVFACTORY]: Missing baked texture {0} ({1}) for {2}, requesting rebake.", + "[AVFACTORY]: Requesting rebake of {0} ({1}) for {2}.", face.TextureID, idx, sp.Name); + } sp.ControllingClient.SendRebakeAvatarTextures(face.TextureID); } diff --git a/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs b/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs index 1ce24f1745..7e15718c45 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs @@ -114,6 +114,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance "Send appearance data for each avatar in the simulator to other viewers.", "Optionally, you can specify that only a particular avatar's appearance data is sent.", HandleSendAppearanceCommand); + + scene.AddCommand( + this, "appearance rebake", + "appearance rebake ", + "Send a request to the user's viewer for it to rebake and reupload its appearance textures.", + "This is currently done for all baked texture references previously received, whether the simulator can find the asset or not." + + "\nThis will only work for texture ids that the viewer has already uploaded." + + "\nIf the viewer has not yet sent the server any texture ids then nothing will happen" + + "\nsince requests can only be made for ids that the client has already sent us", + HandleRebakeAppearanceCommand); } private void HandleSendAppearanceCommand(string module, string[] cmd) @@ -210,6 +220,34 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance } } } - } + } + + private void HandleRebakeAppearanceCommand(string module, string[] cmd) + { + if (cmd.Length != 4) + { + MainConsole.Instance.OutputFormat("Usage: appearance rebake "); + return; + } + + string firstname = cmd[2]; + string lastname = cmd[3]; + + lock (m_scenes) + { + foreach (Scene scene in m_scenes.Values) + { + ScenePresence sp = scene.GetScenePresence(firstname, lastname); + if (sp != null && !sp.IsChildAgent) + { + MainConsole.Instance.OutputFormat( + "Requesting rebake of uploaded textures for {0}", + sp.Name, scene.RegionInfo.RegionName); + + scene.AvatarFactory.RequestRebake(sp, false); + } + } + } + } } } \ No newline at end of file From 97ba3c93467e865d0434c0b2f0f775efdc0c354a Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 5 Jan 2012 08:11:52 +0000 Subject: [PATCH 11/20] Small fix to GetWorldPosition to get closer to Avination sit behavior --- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index aea47e6407..51d35868e2 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -1960,19 +1960,13 @@ namespace OpenSim.Region.Framework.Scenes public Vector3 GetWorldPosition() { Quaternion parentRot = ParentGroup.RootPart.RotationOffset; - Vector3 axPos = OffsetPosition; - axPos *= parentRot; Vector3 translationOffsetPosition = axPos; - -// m_log.DebugFormat("[SCENE OBJECT PART]: Found group pos {0} for part {1}", GroupPosition, Name); - - Vector3 worldPos = GroupPosition + translationOffsetPosition; - -// m_log.DebugFormat("[SCENE OBJECT PART]: Found world pos {0} for part {1}", worldPos, Name); - - return worldPos; + if(_parentID == 0) + return GroupPosition; + else + return ParentGroup.AbsolutePosition + translationOffsetPosition; } /// From da6c816204eb3364a4527bc086d27e79cd2af0e5 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 5 Jan 2012 17:10:38 +0000 Subject: [PATCH 12/20] Commenting out DataSnapShot message "Registering service discovery capability" for now. Please uncomment if/when needed. --- OpenSim/Region/DataSnapshot/DataRequestHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/DataSnapshot/DataRequestHandler.cs b/OpenSim/Region/DataSnapshot/DataRequestHandler.cs index b7604546eb..93648d6430 100644 --- a/OpenSim/Region/DataSnapshot/DataRequestHandler.cs +++ b/OpenSim/Region/DataSnapshot/DataRequestHandler.cs @@ -67,7 +67,7 @@ namespace OpenSim.Region.DataSnapshot public void OnRegisterCaps(UUID agentID, Caps caps) { - m_log.Info("[DATASNAPSHOT]: Registering service discovery capability for " + agentID); +// m_log.InfoFormat("[DATASNAPSHOT]: Registering service discovery capability for {0}", agentID); string capsBase = "/CAPS/" + caps.CapsObjectPath; caps.RegisterHandler("PublicSnapshotDataInfo", new RestStreamHandler("POST", capsBase + m_discoveryPath, OnDiscoveryAttempt)); From c201b54b8524033310c59fe353616e84616a542e Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 5 Jan 2012 19:40:54 +0000 Subject: [PATCH 13/20] Improve "app rebake" command to return a better message if no uploaded texture ids were available for the rebake request --- .../Region/ClientStack/Linden/UDP/LLImageManager.cs | 12 ++++++------ .../Avatar/AvatarFactory/AvatarFactoryModule.cs | 7 ++++++- .../Framework/Interfaces/IAvatarFactoryModule.cs | 5 ++++- .../Avatar/Appearance/AppearanceInfoModule.cs | 13 +++++++++---- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs index 3e31b7d9cc..b53f0afbbc 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs @@ -107,9 +107,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { -// m_log.DebugFormat( -// "[LL IMAGE MANAGER]: Received duplicate of existing request for {0}, start packet {1} from {2}", -// newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name); + m_log.DebugFormat( + "[LL IMAGE MANAGER]: Received duplicate of existing request for {0}, start packet {1} from {2}", + newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name); //m_log.DebugFormat("[TEX]: (UPD) ID={0}: D={1}, S={2}, P={3}", // newRequest.RequestedAssetID, newRequest.DiscardLevel, newRequest.PacketNumber, newRequest.Priority); @@ -168,9 +168,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { -// m_log.DebugFormat( -// "[LL IMAGE MANAGER]: Received request for {0}, start packet {1} from {2}", -// newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name); + m_log.DebugFormat( + "[LL IMAGE MANAGER]: Received request for {0}, start packet {1} from {2}", + newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name); //m_log.DebugFormat("[TEX]: (NEW) ID={0}: D={1}, S={2}, P={3}", // newRequest.RequestedAssetID, newRequest.DiscardLevel, newRequest.PacketNumber, newRequest.Priority); diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 9df0592d4c..d68d28c345 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -321,8 +321,10 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory return (defonly ? false : true); } - public void RequestRebake(IScenePresence sp, bool missingTexturesOnly) + public int RequestRebake(IScenePresence sp, bool missingTexturesOnly) { + int texturesRebaked = 0; + for (int i = 0; i < AvatarAppearance.BAKE_INDICES.Length; i++) { int idx = AvatarAppearance.BAKE_INDICES[i]; @@ -359,8 +361,11 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory face.TextureID, idx, sp.Name); } + texturesRebaked++; sp.ControllingClient.SendRebakeAvatarTextures(face.TextureID); } + + return texturesRebaked; } #endregion diff --git a/OpenSim/Region/Framework/Interfaces/IAvatarFactoryModule.cs b/OpenSim/Region/Framework/Interfaces/IAvatarFactoryModule.cs index 04df9c3723..39a760cbf4 100644 --- a/OpenSim/Region/Framework/Interfaces/IAvatarFactoryModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IAvatarFactoryModule.cs @@ -82,7 +82,10 @@ namespace OpenSim.Region.Framework.Interfaces /// If true, only request a rebake for the textures that are missing. /// If false then we request a rebake of all textures for which we already have references. /// - void RequestRebake(IScenePresence sp, bool missingTexturesOnly); + /// + /// Number of rebake requests made. This will depend upon whether we've previously received texture IDs. + /// + int RequestRebake(IScenePresence sp, bool missingTexturesOnly); void QueueAppearanceSend(UUID agentid); void QueueAppearanceSave(UUID agentid); diff --git a/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs b/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs index 7e15718c45..39cd4c992c 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs @@ -240,11 +240,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance ScenePresence sp = scene.GetScenePresence(firstname, lastname); if (sp != null && !sp.IsChildAgent) { - MainConsole.Instance.OutputFormat( - "Requesting rebake of uploaded textures for {0}", - sp.Name, scene.RegionInfo.RegionName); + int rebakesRequested = scene.AvatarFactory.RequestRebake(sp, false); - scene.AvatarFactory.RequestRebake(sp, false); + if (rebakesRequested > 0) + MainConsole.Instance.OutputFormat( + "Requesting rebake of {0} uploaded textures for {1} in {2}", + rebakesRequested, sp.Name, scene.RegionInfo.RegionName); + else + MainConsole.Instance.OutputFormat( + "No texture IDs available for rebake request for {0} in {1}", + sp.Name, scene.RegionInfo.RegionName); } } } From 50e459d265ab2a25d41afee82e475a530f0cfd5a Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 5 Jan 2012 19:44:06 +0000 Subject: [PATCH 14/20] recomment log messages I accidentally left uncommented --- .../Region/ClientStack/Linden/UDP/LLImageManager.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs index b53f0afbbc..3e31b7d9cc 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs @@ -107,9 +107,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - m_log.DebugFormat( - "[LL IMAGE MANAGER]: Received duplicate of existing request for {0}, start packet {1} from {2}", - newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name); +// m_log.DebugFormat( +// "[LL IMAGE MANAGER]: Received duplicate of existing request for {0}, start packet {1} from {2}", +// newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name); //m_log.DebugFormat("[TEX]: (UPD) ID={0}: D={1}, S={2}, P={3}", // newRequest.RequestedAssetID, newRequest.DiscardLevel, newRequest.PacketNumber, newRequest.Priority); @@ -168,9 +168,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - m_log.DebugFormat( - "[LL IMAGE MANAGER]: Received request for {0}, start packet {1} from {2}", - newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name); +// m_log.DebugFormat( +// "[LL IMAGE MANAGER]: Received request for {0}, start packet {1} from {2}", +// newRequest.RequestedAssetID, newRequest.PacketNumber, m_client.Name); //m_log.DebugFormat("[TEX]: (NEW) ID={0}: D={1}, S={2}, P={3}", // newRequest.RequestedAssetID, newRequest.DiscardLevel, newRequest.PacketNumber, newRequest.Priority); From f2ff6d5186420ed4bbf7379ad6dc92f46b7907a9 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 5 Jan 2012 20:31:46 +0000 Subject: [PATCH 15/20] Move asset commands from AssetService to AssetServerConnector so that we can harmonise the same commands on the simulator side. No functional change. --- .../Handlers/Asset/AssetServerConnector.cs | 127 +++++++++++++++++- OpenSim/Services/AssetService/AssetService.cs | 124 +---------------- 2 files changed, 129 insertions(+), 122 deletions(-) diff --git a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs index df571fa925..9960228d42 100644 --- a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs +++ b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs @@ -26,7 +26,11 @@ */ using System; +using System.IO; using Nini.Config; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Framework.Console; using OpenSim.Server.Base; using OpenSim.Services.Interfaces; using OpenSim.Framework.Servers.HttpServer; @@ -67,6 +71,127 @@ namespace OpenSim.Server.Handlers.Asset server.AddStreamHandler(new AssetServerGetHandler(m_AssetService)); server.AddStreamHandler(new AssetServerPostHandler(m_AssetService)); server.AddStreamHandler(new AssetServerDeleteHandler(m_AssetService, allowDelete)); + + MainConsole.Instance.Commands.AddCommand("kfs", false, + "show digest", + "show digest ", + "Show asset digest", + HandleShowDigest); + + MainConsole.Instance.Commands.AddCommand("kfs", false, + "delete asset", + "delete asset ", + "Delete asset from database", + HandleDeleteAsset); + + MainConsole.Instance.Commands.AddCommand("kfs", false, + "dump asset", + "dump asset ", + "Dump asset to a file", + "The filename is the same as the ID given.", + HandleDumpAsset); + } + + void HandleDeleteAsset(string module, string[] args) + { + if (args.Length < 3) + { + MainConsole.Instance.Output("Syntax: delete asset "); + return; + } + + AssetBase asset = m_AssetService.Get(args[2]); + + if (asset == null || asset.Data.Length == 0) + { + MainConsole.Instance.Output("Asset not found"); + return; + } + + m_AssetService.Delete(args[2]); + + //MainConsole.Instance.Output("Asset deleted"); + // TODO: Implement this + + MainConsole.Instance.Output("Asset deletion not supported by database"); + } + + void HandleDumpAsset(string module, string[] args) + { + if (args.Length < 3) + { + MainConsole.Instance.Output("Usage is dump asset "); + return; + } + + UUID assetId; + string rawAssetId = args[2]; + + if (!UUID.TryParse(rawAssetId, out assetId)) + { + MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid ID format", rawAssetId); + return; + } + + AssetBase asset = m_AssetService.Get(assetId.ToString()); + if (asset == null) + { + MainConsole.Instance.OutputFormat("ERROR: No asset found with ID {0}", assetId); + return; + } + + string fileName = rawAssetId; + + using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) + { + using (BinaryWriter bw = new BinaryWriter(fs)) + { + bw.Write(asset.Data); + } + } + + MainConsole.Instance.OutputFormat("Asset dumped to file {0}", fileName); + } + + void HandleShowDigest(string module, string[] args) + { + if (args.Length < 3) + { + MainConsole.Instance.Output("Syntax: show digest "); + return; + } + + AssetBase asset = m_AssetService.Get(args[2]); + + if (asset == null || asset.Data.Length == 0) + { + MainConsole.Instance.Output("Asset not found"); + return; + } + + int i; + + MainConsole.Instance.OutputFormat("Name: {0}", asset.Name); + MainConsole.Instance.OutputFormat("Description: {0}", asset.Description); + MainConsole.Instance.OutputFormat("Type: {0} (type number = {1})", (AssetType)asset.Type, asset.Type); + MainConsole.Instance.OutputFormat("Content-type: {0}", asset.Metadata.ContentType); + MainConsole.Instance.OutputFormat("Flags: {0}", asset.Metadata.Flags); + + for (i = 0 ; i < 5 ; i++) + { + int off = i * 16; + if (asset.Data.Length <= off) + break; + int len = 16; + if (asset.Data.Length < off + len) + len = asset.Data.Length - off; + + byte[] line = new byte[len]; + Array.Copy(asset.Data, off, line, 0, len); + + string text = BitConverter.ToString(line); + MainConsole.Instance.Output(String.Format("{0:x4}: {1}", off, text)); + } } } -} +} \ No newline at end of file diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index b3af8e3015..4f4cbf6077 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs @@ -32,7 +32,6 @@ using System.Reflection; using Nini.Config; using log4net; using OpenSim.Framework; -using OpenSim.Framework.Console; using OpenSim.Data; using OpenSim.Services.Interfaces; using OpenMetaverse; @@ -53,23 +52,6 @@ namespace OpenSim.Services.AssetService { m_RootInstance = this; - MainConsole.Instance.Commands.AddCommand("kfs", false, - "show digest", - "show digest ", - "Show asset digest", HandleShowDigest); - - MainConsole.Instance.Commands.AddCommand("kfs", false, - "delete asset", - "delete asset ", - "Delete asset from database", HandleDeleteAsset); - - MainConsole.Instance.Commands.AddCommand("kfs", false, - "dump asset", - "dump asset ", - "Dump asset to a file", - "The filename is the same as the ID given.", - HandleDumpAsset); - if (m_AssetLoader != null) { IConfig assetConfig = config.Configs["AssetService"]; @@ -218,111 +200,11 @@ namespace OpenSim.Services.AssetService return m_Database.Delete(id); } else + { m_log.DebugFormat("[ASSET SERVICE]: Request to delete asset {0}, but flags are not Maptile", id); + } return false; } - - void HandleDumpAsset(string module, string[] args) - { - if (args.Length < 3) - { - MainConsole.Instance.Output("Usage is dump asset "); - return; - } - - string rawAssetId = args[2]; - UUID assetId; - - if (!UUID.TryParse(rawAssetId, out assetId)) - { - MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid ID format", rawAssetId); - return; - } - - AssetBase asset = m_Database.GetAsset(assetId); - if (asset == null) - { - MainConsole.Instance.OutputFormat("ERROR: No asset found with ID {0}", assetId); - return; - } - - string fileName = rawAssetId; - - using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) - { - using (BinaryWriter bw = new BinaryWriter(fs)) - { - bw.Write(asset.Data); - } - } - - MainConsole.Instance.OutputFormat("Asset dumped to file {0}", fileName); - } - - void HandleShowDigest(string module, string[] args) - { - if (args.Length < 3) - { - MainConsole.Instance.Output("Syntax: show digest "); - return; - } - - AssetBase asset = Get(args[2]); - - if (asset == null || asset.Data.Length == 0) - { - MainConsole.Instance.Output("Asset not found"); - return; - } - - int i; - - MainConsole.Instance.OutputFormat("Name: {0}", asset.Name); - MainConsole.Instance.OutputFormat("Description: {0}", asset.Description); - MainConsole.Instance.OutputFormat("Type: {0} (type number = {1})", (AssetType)asset.Type, asset.Type); - MainConsole.Instance.OutputFormat("Content-type: {0}", asset.Metadata.ContentType); - MainConsole.Instance.OutputFormat("Flags: {0}", asset.Metadata.Flags); - - for (i = 0 ; i < 5 ; i++) - { - int off = i * 16; - if (asset.Data.Length <= off) - break; - int len = 16; - if (asset.Data.Length < off + len) - len = asset.Data.Length - off; - - byte[] line = new byte[len]; - Array.Copy(asset.Data, off, line, 0, len); - - string text = BitConverter.ToString(line); - MainConsole.Instance.Output(String.Format("{0:x4}: {1}", off, text)); - } - } - - void HandleDeleteAsset(string module, string[] args) - { - if (args.Length < 3) - { - MainConsole.Instance.Output("Syntax: delete asset "); - return; - } - - AssetBase asset = Get(args[2]); - - if (asset == null || asset.Data.Length == 0) - { - MainConsole.Instance.Output("Asset not found"); - return; - } - - Delete(args[2]); - - //MainConsole.Instance.Output("Asset deleted"); - // TODO: Implement this - - MainConsole.Instance.Output("Asset deletion not supported by database"); - } } -} +} \ No newline at end of file From 7319ba62dd1791a3dade5b5453e369d955de48a2 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 5 Jan 2012 20:51:49 +0000 Subject: [PATCH 16/20] Move simulator asset info commands to an optional module from the connector. Make them conform with service side commands. This stops them appearing twice when Hypergrid is enabled. --- .../OptionalModules/Asset/AssetInfoModule.cs | 134 ++++++++++++++++++ .../Minimodule/Interfaces/IInventoryItem.cs | 5 +- .../Connectors/Asset/AssetServiceConnector.cs | 45 +----- 3 files changed, 138 insertions(+), 46 deletions(-) create mode 100644 OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs diff --git a/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs b/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs new file mode 100644 index 0000000000..9ea63438df --- /dev/null +++ b/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs @@ -0,0 +1,134 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Text; +using log4net; +using Mono.Addins; +using Nini.Config; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Framework.Console; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.OptionalModules.Asset +{ + /// + /// A module that just holds commands for inspecting assets. + /// + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "AssetInfoModule")] + public class AssetInfoModule : ISharedRegionModule + { +// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private Scene m_scene; + + public string Name { get { return "Asset Information Module"; } } + + public Type ReplaceableInterface { get { return null; } } + + public void Initialise(IConfigSource source) + { +// m_log.DebugFormat("[ASSET INFO MODULE]: INITIALIZED MODULE"); + } + + public void PostInitialise() + { +// m_log.DebugFormat("[ASSET INFO MODULE]: POST INITIALIZED MODULE"); + } + + public void Close() + { +// m_log.DebugFormat("[ASSET INFO MODULE]: CLOSED MODULE"); + } + + public void AddRegion(Scene scene) + { +// m_log.DebugFormat("[ASSET INFO MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName); + } + + public void RemoveRegion(Scene scene) + { +// m_log.DebugFormat("[ASSET INFO MODULE]: REGION {0} REMOVED", scene.RegionInfo.RegionName); + } + + public void RegionLoaded(Scene scene) + { +// m_log.DebugFormat("[ASSET INFO MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName); + + if (m_scene == null) + m_scene = scene; + + MainConsole.Instance.Commands.AddCommand( + "asset", false, "dump asset", + "dump asset ", + "Dump an asset", + HandleDumpAsset); + } + + void HandleDumpAsset(string module, string[] args) + { + if (args.Length < 3) + { + MainConsole.Instance.Output("Usage is dump asset "); + return; + } + + UUID assetId; + string rawAssetId = args[2]; + + if (!UUID.TryParse(rawAssetId, out assetId)) + { + MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid ID format", rawAssetId); + return; + } + + AssetBase asset = m_scene.AssetService.Get(assetId.ToString()); + if (asset == null) + { + MainConsole.Instance.OutputFormat("ERROR: No asset found with ID {0}", assetId); + return; + } + + string fileName = rawAssetId; + + using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) + { + using (BinaryWriter bw = new BinaryWriter(fs)) + { + bw.Write(asset.Data); + } + } + + MainConsole.Instance.OutputFormat("Asset dumped to file {0}", fileName); + } + } +} \ No newline at end of file diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs index 16cd7e454e..a8e545cc06 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs @@ -30,8 +30,7 @@ using OpenMetaverse; using OpenMetaverse.Assets; namespace OpenSim.Region.OptionalModules.Scripting.Minimodule -{ - +{ /// /// This implements the methods needed to operate on individual inventory items. /// @@ -39,6 +38,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule { int Type { get; } UUID AssetID { get; } - T RetrieveAsset() where T : Asset, new(); + T RetrieveAsset() where T : OpenMetaverse.Assets.Asset, new(); } } diff --git a/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs b/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs index d7b2ff85ed..e4c3eafb77 100644 --- a/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs +++ b/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs @@ -86,11 +86,8 @@ namespace OpenSim.Services.Connectors m_log.Error("[ASSET CONNECTOR]: No Server URI named in section AssetService"); throw new Exception("Asset connector init error"); } - m_ServerURI = serviceURI; - MainConsole.Instance.Commands.AddCommand("asset", false, "dump asset", - "dump asset ", - "dump one cached asset", HandleDumpAsset); + m_ServerURI = serviceURI; } protected void SetCache(IImprovedAssetCache cache) @@ -328,43 +325,5 @@ namespace OpenSim.Services.Connectors } return false; } - - private void HandleDumpAsset(string module, string[] args) - { - if (args.Length != 4) - { - MainConsole.Instance.Output("Syntax: dump asset "); - return; - } - - UUID assetID; - - if (!UUID.TryParse(args[2], out assetID)) - { - MainConsole.Instance.Output("Invalid asset ID"); - return; - } - - if (m_Cache == null) - { - MainConsole.Instance.Output("Instance uses no cache"); - return; - } - - AssetBase asset = m_Cache.Get(assetID.ToString()); - - if (asset == null) - { - MainConsole.Instance.Output("Asset not found in cache"); - return; - } - - string fileName = args[3]; - - FileStream fs = File.Create(fileName); - fs.Write(asset.Data, 0, asset.Data.Length); - - fs.Close(); - } } -} +} \ No newline at end of file From 5b160f5b7b2abf41e518e3974098b1bc82268c2a Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 5 Jan 2012 20:56:29 +0000 Subject: [PATCH 17/20] Rename 'show digest' console command to 'show asset' --- OpenSim/Server/Handlers/Asset/AssetServerConnector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs index 9960228d42..61718f19d3 100644 --- a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs +++ b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs @@ -157,7 +157,7 @@ namespace OpenSim.Server.Handlers.Asset { if (args.Length < 3) { - MainConsole.Instance.Output("Syntax: show digest "); + MainConsole.Instance.Output("Syntax: show asset "); return; } From f06acc0a854980fd66426103892742580e057974 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 5 Jan 2012 21:05:10 +0000 Subject: [PATCH 18/20] Add size and temporary information to "show asset" command --- OpenSim/Server/Handlers/Asset/AssetServerConnector.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs index 61718f19d3..5dcb33badf 100644 --- a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs +++ b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs @@ -175,6 +175,8 @@ namespace OpenSim.Server.Handlers.Asset MainConsole.Instance.OutputFormat("Description: {0}", asset.Description); MainConsole.Instance.OutputFormat("Type: {0} (type number = {1})", (AssetType)asset.Type, asset.Type); MainConsole.Instance.OutputFormat("Content-type: {0}", asset.Metadata.ContentType); + MainConsole.Instance.OutputFormat("Size: {0} bytes", asset.Data.Length); + MainConsole.Instance.OutputFormat("Temporary: {0}", asset.Temporary ? "yes" : "no"); MainConsole.Instance.OutputFormat("Flags: {0}", asset.Metadata.Flags); for (i = 0 ; i < 5 ; i++) From da0fc3c8f572adba69e52e1d7f528946ab1f6f23 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 5 Jan 2012 21:11:32 +0000 Subject: [PATCH 19/20] Make "show asset" command available simulator side. Actually make the service command be "show asset" instead of "show digest" this time. Last time I accidnetally just changed the usage message. --- .../OptionalModules/Asset/AssetInfoModule.cs | 51 +++++++++++++++++++ .../Handlers/Asset/AssetServerConnector.cs | 10 ++-- 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs b/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs index 9ea63438df..a5207ebcb0 100644 --- a/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs @@ -87,6 +87,14 @@ namespace OpenSim.Region.OptionalModules.Asset if (m_scene == null) m_scene = scene; + MainConsole.Instance.Commands.AddCommand( + "asset", + false, + "show asset", + "show asset ", + "Show asset information", + HandleShowAsset); + MainConsole.Instance.Commands.AddCommand( "asset", false, "dump asset", "dump asset ", @@ -130,5 +138,48 @@ namespace OpenSim.Region.OptionalModules.Asset MainConsole.Instance.OutputFormat("Asset dumped to file {0}", fileName); } + + void HandleShowAsset(string module, string[] args) + { + if (args.Length < 3) + { + MainConsole.Instance.Output("Syntax: show asset "); + return; + } + + AssetBase asset = m_scene.AssetService.Get(args[2]); + + if (asset == null || asset.Data.Length == 0) + { + MainConsole.Instance.Output("Asset not found"); + return; + } + + int i; + + MainConsole.Instance.OutputFormat("Name: {0}", asset.Name); + MainConsole.Instance.OutputFormat("Description: {0}", asset.Description); + MainConsole.Instance.OutputFormat("Type: {0} (type number = {1})", (AssetType)asset.Type, asset.Type); + MainConsole.Instance.OutputFormat("Content-type: {0}", asset.Metadata.ContentType); + MainConsole.Instance.OutputFormat("Size: {0} bytes", asset.Data.Length); + MainConsole.Instance.OutputFormat("Temporary: {0}", asset.Temporary ? "yes" : "no"); + MainConsole.Instance.OutputFormat("Flags: {0}", asset.Metadata.Flags); + + for (i = 0 ; i < 5 ; i++) + { + int off = i * 16; + if (asset.Data.Length <= off) + break; + int len = 16; + if (asset.Data.Length < off + len) + len = asset.Data.Length - off; + + byte[] line = new byte[len]; + Array.Copy(asset.Data, off, line, 0, len); + + string text = BitConverter.ToString(line); + MainConsole.Instance.Output(String.Format("{0:x4}: {1}", off, text)); + } + } } } \ No newline at end of file diff --git a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs index 5dcb33badf..9b80245267 100644 --- a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs +++ b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs @@ -73,10 +73,10 @@ namespace OpenSim.Server.Handlers.Asset server.AddStreamHandler(new AssetServerDeleteHandler(m_AssetService, allowDelete)); MainConsole.Instance.Commands.AddCommand("kfs", false, - "show digest", - "show digest ", - "Show asset digest", - HandleShowDigest); + "show asset", + "show asset ", + "Show asset information", + HandleShowAsset); MainConsole.Instance.Commands.AddCommand("kfs", false, "delete asset", @@ -153,7 +153,7 @@ namespace OpenSim.Server.Handlers.Asset MainConsole.Instance.OutputFormat("Asset dumped to file {0}", fileName); } - void HandleShowDigest(string module, string[] args) + void HandleShowAsset(string module, string[] args) { if (args.Length < 3) { From 5ea9740f1b2cc98601cfb15c19e190471c4c42ed Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 5 Jan 2012 22:40:49 +0000 Subject: [PATCH 20/20] Add a "j2k decode" region console command that allows a manual request for a JPEG2000 decode of an asset For debugging purposes. --- .../Agent/TextureSender/J2KDecoderModule.cs | 18 ++- .../Framework/Interfaces/IJ2KDecoder.cs | 9 +- .../TextureSender/J2KDecoderCommandModule.cs | 145 ++++++++++++++++++ 3 files changed, 163 insertions(+), 9 deletions(-) create mode 100644 OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs diff --git a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs index 14dee84c24..349d3ac4ba 100644 --- a/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs +++ b/OpenSim/Region/CoreModules/Agent/TextureSender/J2KDecoderModule.cs @@ -137,14 +137,9 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender } } - /// - /// Provides a synchronous decode so that caller can be assured that this executes before the next line - /// - /// - /// - public void Decode(UUID assetID, byte[] j2kData) + public bool Decode(UUID assetID, byte[] j2kData) { - DoJ2KDecode(assetID, j2kData); + return DoJ2KDecode(assetID, j2kData); } #endregion IJ2KDecoder @@ -154,11 +149,13 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender /// /// UUID of Asset /// JPEG2000 data - private void DoJ2KDecode(UUID assetID, byte[] j2kData) + private bool DoJ2KDecode(UUID assetID, byte[] j2kData) { // m_log.DebugFormat( // "[J2KDecoderModule]: Doing J2K decoding of {0} bytes for asset {1}", j2kData.Length, assetID); + bool decodedSuccessfully = true; + //int DecodeTime = 0; //DecodeTime = Environment.TickCount; OpenJPEG.J2KLayerInfo[] layers; @@ -196,6 +193,7 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender catch (Exception ex) { m_log.Warn("[J2KDecoderModule]: CSJ2K threw an exception decoding texture " + assetID + ": " + ex.Message); + decodedSuccessfully = false; } } else @@ -204,6 +202,7 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender if (!OpenJPEG.DecodeLayerBoundaries(j2kData, out layers, out components)) { m_log.Warn("[J2KDecoderModule]: OpenJPEG failed to decode texture " + assetID); + decodedSuccessfully = false; } } @@ -212,6 +211,7 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender m_log.Warn("[J2KDecoderModule]: Failed to decode layer data for texture " + assetID + ", guessing sane defaults"); // Layer decoding completely failed. Guess at sane defaults for the layer boundaries layers = CreateDefaultLayers(j2kData.Length); + decodedSuccessfully = false; } // Cache Decoded layers @@ -231,6 +231,8 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender m_notifyList.Remove(assetID); } } + + return decodedSuccessfully; } private OpenJPEG.J2KLayerInfo[] CreateDefaultLayers(int j2kLength) diff --git a/OpenSim/Region/Framework/Interfaces/IJ2KDecoder.cs b/OpenSim/Region/Framework/Interfaces/IJ2KDecoder.cs index 856eb119ab..0964276077 100644 --- a/OpenSim/Region/Framework/Interfaces/IJ2KDecoder.cs +++ b/OpenSim/Region/Framework/Interfaces/IJ2KDecoder.cs @@ -35,6 +35,13 @@ namespace OpenSim.Region.Framework.Interfaces public interface IJ2KDecoder { void BeginDecode(UUID assetID, byte[] j2kData, DecodedCallback callback); - void Decode(UUID assetID, byte[] j2kData); + + /// + /// Provides a synchronous decode so that caller can be assured that this executes before the next line + /// + /// + /// + /// true if decode was successful. false otherwise. + bool Decode(UUID assetID, byte[] j2kData); } } diff --git a/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs b/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs new file mode 100644 index 0000000000..b224132fc6 --- /dev/null +++ b/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs @@ -0,0 +1,145 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Text; +using log4net; +using Mono.Addins; +using Nini.Config; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Framework.Console; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.OptionalModules.Agent.TextureSender +{ + /// + /// Commands for the J2KDecoder module. For debugging purposes. + /// + /// + /// Placed here so that they can be removed if not required and to keep the J2KDecoder module itself simple. + /// + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "J2KDecoderCommandModule")] + public class J2KDecoderCommandModule : ISharedRegionModule + { +// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private Scene m_scene; + + public string Name { get { return "Asset Information Module"; } } + + public Type ReplaceableInterface { get { return null; } } + + public void Initialise(IConfigSource source) + { +// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: INITIALIZED MODULE"); + } + + public void PostInitialise() + { +// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: POST INITIALIZED MODULE"); + } + + public void Close() + { +// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: CLOSED MODULE"); + } + + public void AddRegion(Scene scene) + { +// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName); + } + + public void RemoveRegion(Scene scene) + { +// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: REGION {0} REMOVED", scene.RegionInfo.RegionName); + } + + public void RegionLoaded(Scene scene) + { +// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName); + + if (m_scene == null) + m_scene = scene; + + MainConsole.Instance.Commands.AddCommand( + "j2k", + false, + "j2k decode", + "j2k decode ", + "Do JPEG2000 decoding of an asset.", + "This is for debugging purposes. The asset id given must contain JPEG2000 data.", + HandleDecode); + } + + void HandleDecode(string module, string[] args) + { + if (args.Length < 3) + { + MainConsole.Instance.Output("Usage is j2k decode "); + return; + } + + UUID assetId; + string rawAssetId = args[2]; + + if (!UUID.TryParse(rawAssetId, out assetId)) + { + MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid ID format", rawAssetId); + return; + } + + AssetBase asset = m_scene.AssetService.Get(assetId.ToString()); + if (asset == null) + { + MainConsole.Instance.OutputFormat("ERROR: No asset found with ID {0}", assetId); + return; + } + + if (asset.Type != (sbyte)AssetType.Texture) + { + MainConsole.Instance.OutputFormat("ERROR: Asset {0} is not a texture type", assetId); + return; + } + + IJ2KDecoder decoder = m_scene.RequestModuleInterface(); + if (decoder == null) + { + MainConsole.Instance.OutputFormat("ERROR: No IJ2KDecoder module available"); + return; + } + + if (decoder.Decode(assetId, asset.Data)) + MainConsole.Instance.OutputFormat("Successfully decoded asset {0}", assetId); + else + MainConsole.Instance.OutputFormat("Decode of asset {0} failed", assetId); } + } +} \ No newline at end of file