From e3d7e83159786dabebbbb72aef1571706cccd9ed Mon Sep 17 00:00:00 2001 From: toni Date: Wed, 4 May 2016 10:32:28 +0200 Subject: [PATCH] evaluation stand --- code/CMakeLists.txt.user | 2 +- code/Settings.h | 4 +-- code/eval/FixedLagEvalBase.h | 16 +++++++----- code/eval/SmoothingEval1.h | 23 ++++++++-------- code/eval/SmoothingEvalBase.h | 11 +++++--- code/main.cpp | 48 ++++++++++++++++++---------------- tex/bare_conf.dvi | Bin 72672 -> 85344 bytes tex/chapters/experiments.tex | 16 +++++------- tex/chapters/smoothing.tex | 8 +++--- 9 files changed, 66 insertions(+), 62 deletions(-) diff --git a/code/CMakeLists.txt.user b/code/CMakeLists.txt.user index 8b9a790..43b509b 100644 --- a/code/CMakeLists.txt.user +++ b/code/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/code/Settings.h b/code/Settings.h index 839c6a3..7be540c 100644 --- a/code/Settings.h +++ b/code/Settings.h @@ -17,9 +17,9 @@ namespace MiscSettings { const int timeSteps = 500; - const int numParticles = 2500; + const int numParticles = 50; - const int numBSParticles = 500; + const int numBSParticles = 25; const int lag = 5; diff --git a/code/eval/FixedLagEvalBase.h b/code/eval/FixedLagEvalBase.h index c16f99f..74885c6 100644 --- a/code/eval/FixedLagEvalBase.h +++ b/code/eval/FixedLagEvalBase.h @@ -330,8 +330,8 @@ public: statsDistFiltering.add(errDist); errorsNorm.push_back(err); errorsDistNorm.push_back(errDist); - std::cout << "FilteringTime: " << se.ts << " " << statsFiltering.asString() << std::endl; - std::cout << "FilteringDist: " << se.ts << " " << statsDistFiltering.asString() << std::endl; + //std::cout << "FilteringTime: " << se.ts << " " << statsFiltering.asString() << std::endl; + //std::cout << "FilteringDist: " << se.ts << " " << statsDistFiltering.asString() << std::endl; } if(cnt > skip){ @@ -377,8 +377,8 @@ public: errorsSmooth.push_back(errSmoothed); errorsDistSmooth.push_back(errDistSmoothed); - std::cout << "SmoothingTime: " << tsHistory[(tsHistory.size() - 1) - MiscSettings::lag] << " " << statsSmoothing.asString() << std::endl; - std::cout << "SmoothingDist: " << tsHistory[(tsHistory.size() - 1) - MiscSettings::lag] << " " << statsDistSmoothing.asString() << std::endl; + //std::cout << "SmoothingTime: " << tsHistory[(tsHistory.size() - 1) - MiscSettings::lag] << " " << statsSmoothing.asString() << std::endl; + //std::cout << "SmoothingDist: " << tsHistory[(tsHistory.size() - 1) - MiscSettings::lag] << " " << statsDistSmoothing.asString() << std::endl; //plot vis.clearStates(); @@ -420,10 +420,10 @@ public: //Point2 p2 = p1 + Angle::getPointer(obs.orientation.values[0]) * 0.05; vis.gp << "set arrow 999 from screen " << p1.x<<","<setEstimation( std::unique_ptr>(new K::ParticleFilterEstimationWeightedAverageWithAngle())); //pf->setEstimation( std::unique_ptr>(new K::ParticleFilterEstimationRegionalWeightedAverage())); - //pf->setEstimation( std::unique_ptr>(new K::ParticleFilterEstimationOrderedWeightedAverage(0.50f))); + //pf->setEstimation( std::unique_ptr>(new K::ParticleFilterEstimationOrderedWeightedAverage(0.50f))); //create the backward smoothing filter @@ -80,7 +80,7 @@ public: smoothing_heading_sigma = 5.0; smoothing_baro_sigma = 0.05; - bool smoothing_resample = false; + bool smoothing_resample = true; //Smoothing using Simple Trans @@ -115,6 +115,7 @@ public: //Smoothing using Simple Trans + //bf->setEstimation( std::unique_ptr>(new K::ParticleFilterEstimationOrderedWeightedAverage(0.50f))); bf->setEstimation(std::unique_ptr>(new K::ParticleFilterEstimationWeightedAverageWithAngle())); if(smoothing_resample) bf->setResampling( std::unique_ptr>(new K::ParticleFilterResamplingSimple()) ); @@ -145,7 +146,7 @@ public: smoothing_heading_sigma = 5.0; smoothing_baro_sigma = 0.05; - bool smoothing_resample = false; + bool smoothing_resample = true; //Smoothing using Dijkstra @@ -174,7 +175,7 @@ public: smoothing_heading_sigma = 5.0; smoothing_baro_sigma = 0.05; - bool smoothing_resample = false; + bool smoothing_resample = true; //Smoothing using Simple Trans @@ -242,7 +243,7 @@ public: smoothing_heading_sigma = 5.0; smoothing_baro_sigma = 0.05; - bool smoothing_resample = false; + bool smoothing_resample = true; //Smoothing using Simple Trans @@ -311,7 +312,7 @@ public: smoothing_heading_sigma = 5.0; smoothing_baro_sigma = 0.05; - bool smoothing_resample = false; + bool smoothing_resample = true; //Smoothing using Simple Trans @@ -379,7 +380,7 @@ public: smoothing_heading_sigma = 5.0; smoothing_baro_sigma = 0.05; - bool smoothing_resample = false; + bool smoothing_resample = true; //Smoothing using Simple Trans @@ -448,7 +449,7 @@ public: smoothing_heading_sigma = 5.0; smoothing_baro_sigma = 0.15; - bool smoothing_resample = false; + bool smoothing_resample = true; //Smoothing using Simple Trans @@ -499,7 +500,7 @@ public: smoothing_heading_sigma = 5.0; smoothing_baro_sigma = 0.15; - bool smoothing_resample = false; + bool smoothing_resample = true; //Smoothing using Simple Trans @@ -551,7 +552,7 @@ public: smoothing_heading_sigma = 5.0; smoothing_baro_sigma = 0.15; - bool smoothing_resample = false; + bool smoothing_resample = true; //Smoothing using Simple Trans @@ -604,7 +605,7 @@ public: smoothing_heading_sigma = 5.0; smoothing_baro_sigma = 0.15; - bool smoothing_resample = false; + bool smoothing_resample = true; //Smoothing using Simple Trans diff --git a/code/eval/SmoothingEvalBase.h b/code/eval/SmoothingEvalBase.h index da34aa2..82c6975 100644 --- a/code/eval/SmoothingEvalBase.h +++ b/code/eval/SmoothingEvalBase.h @@ -313,8 +313,8 @@ public: statsDistFiltering.add(errDist); errorsNorm.push_back(err); errorsDistNorm.push_back(errDist); - std::cout << "FilteringTime: " << se.ts << " " << statsFiltering.asString() << std::endl; - std::cout << "FilteringDist: " << se.ts << " " << statsDistFiltering.asString() << std::endl; + //std::cout << "FilteringTime: " << se.ts << " " << statsFiltering.asString() << std::endl; + //std::cout << "FilteringDist: " << se.ts << " " << statsDistFiltering.asString() << std::endl; //save the current estimation for later smoothing. pfHistory.push_back(pf->getNonResamplingParticles()); @@ -395,8 +395,8 @@ public: errorsSmooth.push_back(errSmoothed); errorsDistSmooth.push_back(errDistSmoothed); - std::cout << "SmoothingTime: " << tsHistory[(tsHistory.size() - 1) - MiscSettings::lag] << " " << statsSmoothing.asString() << std::endl; - std::cout << "SmoothingDist: " << tsHistory[(tsHistory.size() - 1) - MiscSettings::lag] << " " << statsDistSmoothing.asString() << std::endl; + //std::cout << "SmoothingTime: " << tsHistory[t] << " " << statsSmoothing.asString() << std::endl; + //std::cout << "SmoothingDist: " << tsHistory[t] << " " << statsDistSmoothing.asString() << std::endl; // plot @@ -486,6 +486,9 @@ public: //Point2 p2 = p1 + Angle::getPointer(obs.orientation.values[0]) * 0.05; vis.gp << "set arrow 999 from screen " << p1.x<<","<NB0)()JMfODqf&xONyOK2NC3JNY64Zv#S=31; z#g$4+s{uh2MI49`b7K}Kwyl;jyWXuTm*U1BioNGOOb6i|mS=_mf zNYkJ{Ppi8r4*$}Xx~B83XV^1;7?+T8#Sng#{bTT@;qUYGy1!o$kbRX!y7j-cwoRU( zX8rF5*`u-r4UaDOd#eI|uUl1_;`Wv8Z2yDotYAv8IwGrdTga;h6^}>pU0xYd0=0^- zh|N+|XTV*WTfa9kF0Rh)E5Ce^--Ubdmu_9ZILjOI1l?Z0OZH?(t?MT)!T67i(4%BI%oZj2Y#td7UxHkoJ zqp$2w!)7P$Pc68-PWu|)UK=(wez*9+leyTkyZLD5bvA3k=;p~eC+!%s&zPqzEdRl5 z_E|v!duQx?W1#rBIF?&5SEA3&1q&>@*%t-#(l8J%tj-_3Hm`nvN^YO#1>;sr)|Xe& zMm7Jv@T_D#G_v`xlYg>GBW~(W7ugq0dUA@-rLyu+kg0xJBD?jEnfCgoUejiOfCNXgR0l>4_1KOTKorpamqecs<2={ zb}BAbDmyD#&<`ro%;tdF74CpvcT8Bgz#Wv!8_rLV8{XJez4N1TIZtyGPMzmt6>gPP zNBn_GwmLt5t>&1pph96)0Yz1OLB$nj!3xC~PIY^$Jc=6BZBG@I`2*gl?Wu{FRBSp- zrfp>k-mp1H8}0XDE)fjCs^kFn+GCEC;t47NtwSx$)1=Q(xvSMDRHNj*2~# zJwiyTAy=TVZawvg9CB7@)>AEI5GRteFa#}!Hh?Zxl|^Ki!rWf^qE@*T4}OsYifnMLIR zcX!OWvZ4JCiW~dGT%mxoVhzL|bW;Km`oZt@Dn33)sp9rB?6%^=*kwwEC#YLbyyA5S z7{7gdp$4W-%^doIfJaJXQF?&q7r$IjGdfWZK*l-SNnqd|RT9N8Vxs=5Lq}#`U{G zPRIsvqU>~r0`#Pic>d1KZm%2!XX>`rTl{5FTkFmAX8uBYstP(t3Ap_McIZ@}74=%T z)rTM5P*j>cBHi$Y|CWhJx=J

{bx z_UN`-7tsZevJ+xKI*?6W&@ZgnZrwiDzvJn+YK3izD1nCCn{wz@qMy6r={Q_d&1viQ zXa7~@$CLt!A(wn?C}$A0_q+Wem8p0uXz2t6etMk?)z3xT#KD_MM$xce7PdfLLm<)fH57?zq&M5t5yOSWbAeqrw5df;_+80 zE~uEX_soF8WX8KmpcpiVkM^67i-}-l2siP1n5+g2n4(MmLqUI3^8b}nSge}K5mgBi zK}?mVf>2;HmG2sVYYkB^q!QuELcvhLT%^BLRRWuKf)vDn&>52byJA!4xt;j>x=RUO zDnrV3$$qlh?eUOmS1bIHY9A)YRK-b8va9Ch)i-PMmpz8EYj$r8Teo`JsudrJ zwPxK~NiwJgb66%s70c!w`M|k@hteEzKP6wrmSX? zz>~0-k#u`hXN8i-s-d=^p-79d%yK`TBc2Pg%%0^+P|ajr#`JONpPrrxW`E$z)_K1A zrtXFs0L5TkblbFGjUorYCovlmwM|oLB!)q83$4~GyM5#%_#)UuC{1ji9Fq-Ix0Qj? ze0d%}ya~6;shg+S$_|!5vN3)bPgi4)$;M&hR_BjdOR61P0ILakG583B>(bAYpaE1j zcUR!1kc>$`7saN>VE5Q2w;GZ?+~ihbld+FKUxQa+?`s$dk1?LC+nyK*(J!414NEJD z+MXDM_v1Zm=90y;W-ne|to{1_$&z_X7HhW0kDCk?;mQb`6*L7-j@nB8@Eh6S#?w~v z1Q)o7A#jl@yhefkBK=pDYfMCFTBw)9pL=B=O*3jce9q-ghQL5itA0<2Gi0Q5aU^q$ zJ94=}IneNrFR>>Wt$Fa$!xmdp%0pLe&pX@=3xPSvok}Z$NNu|}mwXxa#J34k7sq5U zfFEH-)Er$}eo{O^@~8T}sGMzPOuu>VsRp?h;+OXv-XNBx5S2$Ba zk;pOaB`lxeif#ECOAtncxSPA`e$t7g61g!@AaBRc$jnFkTW#E0N;+S&9eWSL%DR^f z3>!~~ck1yg=VNMG{K^F~OWBO=gMr|LKvYp4tjN>iSJ~*j*wQMnE*y}cN_Uf}j#+Dt z<$)l3YIMis!-}`6LRQ_iaC-4nsp3;o@PK3TAw0kZmF+7@>t;NMf%Sw}GuhFS-a|;4 znnn;)aF_esDR7^Io*J#=>RowkaoXS^-yd1p8D1r8>kwYyUlCsYeB??VUP*Hw;#XOI z`=wKI;$z+;)MZ-`ECO$F8r}tpW7C4u;1Hi#1a2jMz?U5-UfjfFPl#?KnUOF)LY$H8 z$!{IZx-fm3wADt0ih!3ra=D=zq4!9IK@yBNklRa2k%-_Ah!xaBGFP(ID|TL!bj>70 za{(C~>xw2_Gui7WPK5#Sseb6&2$)k2)PS%3!CV!Z2D;r;gP67M*k_lcj(zb}ey)U} z>{1kui;Drf1q zpZvoGvIpwO*e9;@^!Ovgup%KmT(-3MBg2JnMK7=3!3}jTi!Mt_!@V&_fs`TpHTU6U z5W^=llFYW=n`i2y{CPn=-ut>iLD(`s=^mi~eDq6cjTY~HV|D)cwK*WD9As?t%D!Wb zxgk1`r6C_2UTm1DSyuS4`d|oVL=nuIqbIFCVS{)o6xfC)Y+z)Rk2<2Qs zx8WxSqr&|aA7WPMZxND_>l?M+zm}Lmx8A=dNLewJb)I%*Uy3(PJY{I zfC^f7jg(I;fL?AIV}!mvuX~T*74s8+$!*I-%r9eGqSjw>D85pa%p3+26JVL#>!b@H z#4i(R(kcsinaiz2Ox2}Zf62`<@5{~+4kJBH%PxmL4!~F&4-rEk7FHNontA<7!yp8r zv^kw&XqGVNGbkxQur&P3@n{o zQm8U=^Sp~HLL?`WccIt^nl?N=;8u~<;}D;RCGWBlBB_Xk!RtH*S2>sX%Z&AdLU8hS z2^fNWYDnI(-7a#6MI6&KQAVa<&V%HvLSFlWF zg4Ozb^Lk~MC2hzJKi1XNHGMU9HK3MW-CkkaW{+#0UEUzEzdb#HHLID{g&PI#mt+Hq z+sfYBu&@inn_Jm0V}H*UhB4~2^uk-)7jLYu*9IJ0$W~Y0k^aVnhg-A8WY^b27q;9c zuwRE~O$-M1R7ivqpY$x~xsQ)9bls;M>(R11-eVKI>d?bU*_u5ru4PhvUETILKHgXw z5AQU_JMLBbVUYI4DnUf&M(-tv=qYz;z4qgr_t`w(H2#WPee08O7ZEsN{#R_v$-yPW zQTWb$Auri4a$yPeqOHK4LV^J2*^j5f7Dw&JDd=KAHMrw1Ly+yq_q6n{Fb&khxd9h3^x-4~ z?^iD(z~OLJnMLaH;O`Lu&fWkcOyB_GG5Bo=NrJTmPs0B>*e?f2C1QACdY5=P0!gSP zZ1l-gf1u&5QRP4vN&gxkI0cT(zi~+z3$Lz#iO{8QCJ_?+O%Zud{<0z=sw5`99H4`S zm@@7ba+%DD03$M_^_xjTIt?m>s&qKkh@QHLhPVORi4O_BO#bD*I!&THK}KMq1Kgl} z@5^VGt9{t-0$&P7Dlj&l2}T+foDF;I4<=fZdLBAgrxpLhd1fB-ZXPP7Rn-%@hMb?+ zC1KNxCv5Pqh$t>h6bT#0b4b|WDkW@I{&cW2VIz%R*;X1L?*()s7o-B%GdwalABJ0z zRT)BBhUo7BsvGi^XA48l;b8KPgn5R?OR)yMgVHG(S`*VYj|q=R;b{?WQ=}n1$yqZ~ zHDE=+T7(e5=LO5SNhfO3kaXBTna7}HXB0q~v2eyDwTe4++bxU1tD5bWC8`(be^muG zF*6EJ9q6%$O_e}60-WX+Hrod)unCC@AL$1~8*X1}h#1k710V*v)HKBD4md;JO%y_s z71gAsOQ3;-ngsJh-D4wxoI)uHmZv)e6cB=XB0x-$VZgbj1DDC+QVxE=o-RF(>5)mg zvbaR+7(2m_B?CwnF(xcGG%%ji>`RaN{BE@-7D++X8>^0KX5F@QGGF=9DO}0ZbOUm^ zQpcKpyy13=E|s{{ZoQi9+sfI|+O%-S!MawGd+yEy3dZ_HIHlQ^PJwzSx&tC}%1AxL zz$Jeus7rZSkP~1a7wZH~%FA?C_z|2TS%59-qPgM2;qv;%~%45Cvgq% zqjv&al#6IeQ9cD>n&cf1OJ_iv099pDF0^rkXnH3v6u>Ttlv`D}Q6+)K29_N(AQdrV zvB=C(1U`@zb|R|+n+caoDtoA9fY52gD)n00%4BxsmJAbEz3fb-m3}*0X&N*JvP{R4`fDm2e@ZoS71{q)2q3;HTweB5HwSrd)mV!pcG`nmM z_ENX4N+CNKwXGt%#|UzZv;=+T)V6mI{%$p~VPro*Tlb{qq#EIP8`1keO*$H?(pM1B^}tkjAhSKq3teH;$vH zWL>y*rNJ;Gnjht4pgfyP!bujk=e2xRzIB8n{mwcq4N>0qt&0YTj21btVAf^vvZ0Qm z@yqP&tF7sCBT#Qbz@P&-%?Y)l7*_bbm;uMo;5C=r1RX*_JRadphM*LNm{eNH&usCw zex~z{q!^T=z+hC}dgHpR;-%S|^~NDEr%~&T>)kWJuE53#XJ>|2>Wh?eEPx;_qOUcsK@*7D{`7YWRJ({7&qQ@qI|$7w`380jU^7h8kdx!*e!MQtSO{4O8(=ONZ^jy- ze$#>nytqWVg*WXu@)C=H9R_8 zpVjHq0kZ8MP}yNii|J*zmLmD9D3G?THumc8M)orWT}zz*U~5r*Q}2aN2vF{~KQQ}^ zcZ9!Nnbw*$fjhAoJ3~C^fuvfW+`=W*`s4xnQR`NA2cJ52j)-S{vNnjoRzctm^#mOy z!|?}Cz<~^~;-z_!60GvybCfRSOlw)nb?~9l_0h{5_Z?~#oXEFB4gy@6DkBJwt=zmf z!hZgJ|FHO(Vh?jeJjko)(t!&C{DOS>f>G(f4=t&hZPIAy6<$;VuHvNc!oiu`K17s@ zd;|(XI@wRRcHm8bDh1nNc`WpY?mabYhjy_sXFvQ=pwkdJvPd_Kr}&um8t69tLBxtV z44QPq1kyfa?JklUB&Ya8PEoKz5vadRx3#p1gtHS`q$Wy`vSxdvXEC1cB)w(}xBQJH z3l4HPl@;7qC2^qGAV8op^a7Z- z^A!SKgy0#`Xhf8V7$cTt5V}ZQ2akPqej!R%nvy>+WCL$rlPJCYCi&ZMzrnWMJg`K1 z`|DVSnrm9hQ3G<*=r%)17=tK9e}>~nq=PxlVYJWoHumn#LkE}} z=cic^@k!Z|frSRo|2jPvSXlDs6S_qIXtY8Va?~gF_mHDYo|w!1_=a#cyYHswR&jYMmj8(TLpNn1HCgtsIeS-*DR8WL`87e<8&%?J0k2 z>1x{h-xNNa%~}zOi>!(ZIYnMQfCb>yF27f|UfX0uDpcVD^~O;c&3f&wmN~lh`M!sz zu&kD=w7B|-lQhfy_s!PgSl!|5)*L(-ZsOq+x#t{>;~);X8Ybbf5NXXeZo1qa?p{Wv zHNT^@63;4etUy|G>uf3oGbTZ)oa@hnOD|f~>`h$xg{DC}8n2RF8&H>o zRIgNdoRAHbwJ2OsJnWvdpk5EBehr}Z%g z-GpQV7ND@ry8Y(E7e5ML$bL(qaLdiI82io5t^lvq;ss7MhE{T;g2KOJBF|iMmm5Ia z&4&d#58jcHb>!6EY6DpXW~Q<%v4=qA7`v_ht#EuF4ICxn4KCP-ILP9Iv*CWj@B@<& z8G0iSA+u`w#KwAvouGCHfh19D$H2}I5AH$7RPG*tTu^bqXoWKkTY*8Ll*V&|EizZe zXq_^p+ZI&OR>Fnqf-7mZ1%B4QA#;Ioe=+btgqTv}_jo@ND1NSvFZLldsquml@d3$e z{GRg`WnYj<i$A_`Q4I>kv1t&ra?jw}^KhFOZ{U-khd&pA~B6$FzL3IVe-6ALl z&J4=eh8P9yU6OyJq@GKbv3DBst?73*r)h&MJ*+?c)d0;zXcb|_+tb6E^@l@H_7Pz` z0BUkf&a|+k_Q1Je!yiKO&Fu%5M{Rw#9vtw0vip=(P}wZ^hDu^AVa2Ih zldZWu)4Jt^fb+Voi~;4k?OH^Pc#gm+H=IS=wHBl1Cd(A~Y^vdbxkNM!eg)=8l@6VC zVaAi(rCP}PChkukey@OOHn7XWOMC+BSj^KvW**JH=q~WkZ>AoL-MLE!e-eNYdJ z0R^BzXn(rQ$tZLPsT4w(VW5x7Q+VYTq1W!8E@H)~&HZCpm{P4yDrdw0BG?gAE5hyC zFn&oXG@%i&35ND)J{Gfs`;Gr2#roHXi%+Xgz8ctsiXfE}|qB3-&;KL31Z$HEa9!Q41q z+V=RxhPC_LNGmKL8>kPwjAI<4f=ATax#g}b0-r0TU?BNi4NtLa^_>MAFrO%J({Bdw zd6hK$`DK*Aehpy~FjAC-hC{@4 zl|MoSltc+l`ZdUE8%OXZ?QUE)7)$CBitE;G$0~$1%86RHy})`zMvXQwPUAfg(V!w2 znH)&t?xOm=J-_LX6=f{DkGUd`411MQ3i+dHNn(DpLZpdw`?`UcM%2D;5PRqLfo1US zf^M~pI}Rq83gQ@*>Biust!S%h?}HU6;xz0&d_E^U2{Lqsfdl*t8B)BZDE)CNMcCpx z?W=-1_781f^SGUlTO_DEc0M|kprGD&EbCW&s54QJ6SY_W)r_RswmZ^MW*HM6f*dKu z1f6QE=Wvpiv|`kwWAN|Dvbs9BVkQy*9B0IZr7e^2Zn&MTAQ%s_ad~)sS?scqEdrbH z!_XHN#eTs3Nd3WaVmt53NFMpzLGu^Za997ZfyCpP{G-1A6@I54k;63P*USXx~=f+Y;sJaw!%*bU*w#o z?s=~jwZhP$Le3)0d*`tJ#>2l6Om1?HYs1*_JJZ7g1K=ii44gu|F+kHMxk!GjX?W^E z(C&vlH@6p8oy}@5CV#lF==_Yd7mvOa2Op0A-|qB!-Q(M5a4$LG-HNl>xNG6ir?5-) zTC)AUvr`CT`>^B7I?cK!cz(9UB9D(tz{B`|I1W!Mn+w}#7uGj9#uoBhrq=JZmQ@&k zf~a_EDlMhU=j8gPZe>*$UHa`U=Jz6Gx$2tQLx0Cg63;$-Hov{N=#wNS?)#_!P(dZ>AXj|Cr-%rZ}_Le>g=x$M%^P-Lm0;g;|Ka_-}jMZuR;0 z-o-^cPkHjse{IXk7m3fTKVO1;9sB*R9a6W1==Qvai>M)h3RmEklTJaw09CF`zIc1fTF(MU8}8L5)P$d|kMNa+#(7>U7|NHKFRw^h8uGq4YJgxRHViKZ@>Zp{-*% z7_$sjPjc5HcK3@)wP=!i3k}4bB~*PWD8HoQozDCoZubZ3bA^78RRo!&DK94+N&KnX z77iC21p~iu6(-8q(mff8_%Z?^A{+owh?IDBR~xI_=ib0G=281xxWxc^I-@xOG(wz3 zH38Y^&KVnCCk><8BfReh|zOL3JJNAE_jeu$oH6NZZ3d zPCYt<`I(-tK+l zMvrDFDdv#|1?#*b17Gn%a_&VXXz{H>2LFeJpd)`12%^B_Wa=i!RuLixUQ9&gK3!tI zk?h@}j_^uKHUf^>@hTkQsI=o>GFyz>jpT+JnIYFe2#kUjH0khp3!EfUhEh{_g_L&N z@h0(i3Tny>Du5okG&h+Toswm9Q#h&_aC4X%nF87m_!rynNef53GK4aSxPemz@qh`r zTuc>By7U#iMVBsp42=jNF*7Crp2KgC(~yQV0}40bZT=#Z)!hOZW_0EC>i(j#j&dgMBDUDo4x3b>DVEfsT*g zrOpIa6+)pa_RjI~DLynvPVNRZ8z54Ln(0I`(7$IgDaPf4>WK?Ri)tJ-nz-O{j0ehs zH1`c=#kUSdzu<36`&42fUe`*J27EMi*Nub(!Fi)tgQsaI2SAZ$>aO3#!fWndk^^YW zAn4aqp6fyRv=C6KE{T6F<++{|2Xx78QRRZ_1FdA0xH>}cZj6C58Dj;;~^@Ip1Bl2MCf%nrh!r{0GA)Bdrxrf$RU z=Ge^FWw&+KX7?U*61Ca*S5#7bU$%qSW+&WU$*=O(*B{?ajumH138&f=s_6?t*P?y` z>NP4Qyi4Vy?ZxPA`{(Y-lUa#oo6rv(fVH7%nv`%3Kp-BY%3XBcDG~T_gmxH3rl`gU z7|k*$JtSRB*0el;a!TA&iE0c9L?dGNk(ieBqTnC4cmEvrRY6}S-9Ltd*M;{l z;-7!Ie?+_}^J6Xd=UdNB$K_SC7eGn@6%+4A~}x)NJB|gt7AN2f8N?9DO6at|@Kn z!H-keiUa@X{uL$6@_Ct7)8K@?1|78&UMOpn5SpTdD%oy{{FWi#y*0Lz$5Q9r4j#k5 zg2#S(s{lMU-ZA0?zep@Lw!`g-u^5%$LU6!O-88A+9c^w=OCJ|c@jz)|ySy20Z*qRW|JT??LvgpK-r-X7 z-H0DMSJds1WUL7P8Y>#{6JOC=c7Bly&98TC{2wc#I$GrY2~hN5dBt$BkKWckqxAf& zjk`xCca2)qn(^(kHnh)h0^BdO!r`ezTN!#F$m>z%asiI=`X$lA3b%(BxsEyUMWWO1 zLAGtk#=#OMNYv?>@=T?uc|{-xOf2E_hoo;Rd#8NN^-anXpBVb4=Z+V;>YHKP2#$x3 zKuj7->?h&5PN$(fO-kN029l$u4++%|vKEj(~Pi3Q?uBb>gd|Ai6QRu0vB|ZgIVq z^~~FB(v#G3oraccYI%>PCgR6dgKCf%^+gK>Y^$%h&-|jmBS8@T-=7f|PFIkB2zOj}dK#ivER~_ZD`JdJXhP&1V#=jVDt13e=yt}*%1%e0- z6n7C9GA;hattbTU?5c!cCJg$?R9>vYvk^vNpfC&Q7)P_`#do2JiHr+%d%1v0K^?Q6 z8*{9@gm5G(bFa1T{Q@w4Pe2j7eobmD;mF>uj;qF@D)^a!?8XNdB}US|uiMq(`{z4s z`oRIszdW)`+LG!vLuc(bHU5w3@ZfbTe=F`9V$U_cW zcu><2KJnHPfJJ)u)$559y0ir&^9eSk9Dtc|H}Ie?d54%c=lF1vNkl`5kcl!%_ZW)y zP+I#Dm4*>tqn$`)^WhGWSOcmQOb4Tz*z!-5BKSk)716|&|NhN<%ywgFV#H03EXBHO(Ku377N+PGVJG4Xe&PU~7@+vF$xVu& zzXVsQ^O#o!lfie%NEUYlLJAtbsoRHM$FeYVC1LmYTO3Y;b_#^Y)L9qIHhNe1V1!!u zFnhKE^#tUsmQA9@F)C8Vw8eahcff@ATo;Mni>T*H0P#5Mc)Rc=my+I@w|vbufLnYJzgwPqi6S}dEj z&n#;%URl@lOKuSWt~`KQ?)oPC(6YK9?7i)p1MS5eaNTgAU0wz3t?B2V9>Yllj+3$b z=nLJO>YCF&vs?_+K4WoxxXHd@ex3XL^wwhezL=r5IlY1L?bD~^tt|W;hx@{s&~m+(?j>BFzL-%$*03vobq?425DucZg!1)X`xhJ=w?>J~}oW zfmcq^Fx3okr$8h;jEBVPbX&)0+KSo!N8M_wxE69)Q0NrIx`tc646Wu83j*$XQ;YRfe z2(&o2)bFa%ZKvKs!;f(i1ZHx&V1~#H0ednsLs8qQH<`b+uUR(CF?%|`=Gp6bYkQR+ z9dNd1uSdSE!siAb30R1>i2N|>%EmDfyx%+GM5$LNXc?mk(DG;64txCNkfW7-Od3(B z(kfggU=bC)-LXuI3!1v;*uI>l*x<)TCUo!iiO9$;cx)bLhQ`O{uw`le|Kmc0p})bO zjB08&g``2w%zc;&C+T*ASp#JPx!V468YAG@{bZ_)yUj z$K})fx;$z)IEHP`(-OzuL!P)XjsRlxn{$={ONc zcbsh{kOXGF{f%OtE_VBJP`zb}nxQKoC6FSzGgi?rL&D$NP5x*!{=K`&lgHeBj5R$u zFi{*gfPyCWa*rAOv=8aiL^`R+Fp5#>(*)Iz_W)KkY&0G<-pn_R6Wd>+OwDlh<8y_=ftshW`bB_K7zN?vl?uBx=*@wTv55sH6+OL7qWZlmUpU zJKXN*OtyBNmMB~p{a|+DuYEdJ@_3=S@|g?qLq>gwp`y~LkEmp^%Sx!q35W^%-G4nK z4gSYG_K*34^3#q{6(FCYw9$uJxr$%l>lIS%W-&$=BQ0!XO3g&c>!ngeU>#}@>SHvib7ftaJvQ@ZtobeKQu2fbnk=&*;66>`Asi(}jP zr+R!n|9tIuIscq~LJZV!Vg>*H$%)1MbK;Bh2Vh`x7mn@kvV{Y8ZDn`9Si zS^CoA|Lgtzs;unzOJdxCFBc4LO6hf)FJlH;V9-rKCyf#8oIa59rn$FGWgA~U5f;D} zZ$rZ`FK`;5mf8NN`>AG+_q9?{A9N02JRF|_{Rxm2p$DULgvJXJzDTqLz5O6>03uDD&#v(91-99+mtVoL5 z2VctT2l|uu>@ClSIZ8p%u8-H);Lr;< z^@x7z@BJI-;i$?^3rM54#NtidE|IZ)djj2K0!|T8hc*wVr!yq>kg?9u?aj_R@<( zdQk~stoIm{)$JeM%S!)ycsPBq)9hg4B&K0B`$zl43yc~?enOYXlpzHAcqTtPY!j;W z;2;_kg6pB%-tA%3@C)Tf@qq2!G?A&gCh9-9All9hro)>kH zsR;xO;c&sM@8<9@L+|K9#?oSWI{cF=Dogw{4Q7v!I}IiH0fdY>F7xA`w*?+@5fvgBp!pEbp}!CQmO^R ztEjT-TIy4c7(HA#`iaaJ%67=+^I&!8`m7YuV@z82@XwZ$SMkqoudn2v6|XPhpO3xHlR?yu z{PF8o@=KH6Sjs=^-x!_LBwmog=I|G6J#A-4!#&xwH)r<}^=adIdqesL5y7$@Z_YPo z@X4E=YcXFE`3+@6LaP2UGNw`chH|4&gCtfkD_Wa~KkXadFNp;NCc8Y0I-4Z>_l71m zXvhw~wVcm1;cYSF)o*+F_hWCD@z1gEh{e{uGl@4`AAe^Rzdq_+5foRwdj zKKtG>{@MS1!R8+0^XU6x=Mz4d%YR?~fp~uR2ZDpX`CtKSE68WFKb&JDHP&4BVUyLi zKV?vNmix&g#M&@EtnSl==AZ9+-FYyS@QW3{<-h-h5Yl|&&3JA)6dP}-)}KKUp=>ge;@Y6D*k!B@%j1}8~OKz zUrwQ{F7NvMQrvp_%lZ7L+^@vxJ~dwnzwwo?X7lTPzrK-w-u3m3VJr(*EY(84z=mrCSAXb>wWkHoa}Zk#5-ZM|(pjUA8r?`# z+bwKAYP%^efHj4hH4iN&x6=hV(WSc;?(B?;HT&{vey|Z8Jxrw-UceRIu`G^$8{;tL zn@cUcTcr7+Z+ckxHnn|Q#y@ku6D)WAcfV6W7Bgc2Oy5?vR}KaJboeYt<-rk*WqY!K zFVwMl=sWA^pyXNKtz)x6^s;xc-MpQh(J^A;o7s-Bin zl0_jn5C7`d)U%?0oi=}0 z+nHtNaUwW^qT3UTnqT>`#L~Dt-7=u@OUYtyp7V3>E??Q{jx_0~f(Sd`v5dqLf9_ap zSxA?5+-Y&rXQO1Xtl)pFwpb>0j?~y{vG8XbPgpG1@*8rkmX++2pDs@to5QNA@>u?s z35{2#TL$qrTgI`ke(cxyv(>VJ-|UtwYf~{kZX`vTzojsCZw9|1!DdXrXR{3L^4^DR zmbAvL=@v)hb2iH|e(M0cw=Nmbr~59F`vZ(rJff3IAhEf@L-Tqand^84WY2 z@%03QFzpG(v}Pq*R`Q$fO0{F=Z_~@D)?{XlP&AS zvPKusvW7H1o^0InQnE!6_oNuR(3oOb%ddQ&Vhp`F)sjP}t4p4^xW+>c%fQCQR7;JG z4w7%|(ao~QvYTH$@@h9rhQ<66pJrKUerc@jVR?%9qwn%>8sG0}xjIAqJtltwswc5| z6DN)VKq1DiN(TXdNwhe^PY;==LZw7)PY)(}FV2h1@Zjtt9E6?2*2K=F= zaPqhvQcy5qOTqYp90sl) z9ee-&KIUV+vCZ_@sovOl`eRxj%!9`61$BKf=hM$m_OWc__vQDstZux?ign!C*D{Iy z{po!Bg*eNlw#NK^mVO!kwiKpuUO!9T@{0=Jjk@=LTaR`0VHlT)c^nh delta 19356 zcmbV!33wFc{eR}zkU$`T5W*3TAV(reOu`*R2uC2?M-&xMC)r6dW-oSj2|?|8AnH%E zGQ2XovT8u_K(q=mVzi2_)LNxgyePFruvS~8o+zI1`+VP-*@U*g=lMT>pGPv8<2}CT z=X<<4zTI_vzr1Bkdg;`%@wca>qzLTrHKX>f9GD~ZUv*>qh};4}>fN)Yec`|dMY*ka z&kgNg4*n!9b!V%Qnv%lC7c6rw?FOLS|+q=oFp zt!3$7YqJ%551dJnb*fzgUcjx3&6%T7%|Gh_~J0uV;&A8{%zCbg$nZYSerU ztWNR8YgHBsDs`%x)hcyO@sOX*Q+;})7W79gIxN&eO2d|~Co5Zy?r7frQG-%qNHu+{ zeWp~C+NkNQIqnZOC8QeH>aw!6tWjlwpsK6Bkm`=GP@@{xHE+P9>LFI|4|B2PZ6Vv-FZEI{-77}kOTSU?Gev^tL(&+vrQpmA28QeucF->;#`6;A_p z7;5y|qiVV-Pc8JT=BV?@*m5Pd<7VgWi1|Z znIZX#tl=p=PG=pi+Lm;5Xoa4R8|HLF@fBghaB zD4|B3JyXB0fE8C=#2$aUCo5exY=JXY(C-e{fgPq)kx+b0sjCYI>3fAH-=KMw5Qt$& z72ClCvKe!RYZ;H{K65o>QCd6j(={5KCLzZPmSq{9+s1HD?Is*BsDcG!twGfm5I%Dp)8Kb{P4kC!rei^>9<{Upy5SD1rt8Enm4xfW6JEd1AM*RO zI_6gEf~umc5GUr2XnIKV)rCN3OHgzOHW&tpZXp_D6iB23DI_Axcg(>@Dlyez5F`u) zSv`4ei6P%{+boRh#@0b=O)p|ze~@z>qbTn6Sf}EHvY4)dHm@3L^t*L7)uS~*FQ7+Y z4urfpt_0o1q)q&aS(2^>+3Kll?e#zcO{uAZy)kJ(#E_b%lCEPpK@~eAQa}q-k3XQg zp=(VuW08iJlE9_r?^9@ z=+1~uAPAkVZFlBwG3CK`)V4tGF}xuUzP&yi3S)WxT3rpUk8{@PAlKmbN=E}ZTSAKF z(d{)hYaWj&T`$AJ=#74CtJy~j)73f>Xm&|;HOyO|$mZ8tjjxXHfZEGXXlMYqgq3 z3u&+j{`z>=0>S$DdQA^QnaH9xfpTD9&N55}embH^f@#VRpHUL>!#_g>XV+>zzAzdL zld#!Km&}>FWM!ps=5I%8s+TS?Jsz-6K3i1@LxZo?_y$sI759#<=DZ7d{NQJc>UK70x_Z2nv4QN8 zyI6x$3UU?paFXR2t{w*+lF^G$7dWe+KMs?{_V(!CPr7mrJeO^PIThI6%ZET^uUu?% zmF%V?E#M^a_VHU*!31i>Raz0unHqp=b2Dg<53&`qgujSXk^4nP9;w)0U#yd}uvhK% zyH$@V-}xJmC?VhZQg5=G0S~-23|S}`(YOYY&&0rRv9${5tA>J5!MaAp*Wef|GW43y zbQPw+eijPnN|7Zau0k(%Vwv4I#1@{Hs~5MIV3NXo#N=jsW!yYRO!1S2wYHf|h@ULN z8sPX9H!;{+05<3eX`!%NwQpEXmt|}q)8=r8sAIa8)_PQ5L#VODa4kJTi{V}<06FzS z3Q5TluB8g`7a)L?c4l1l1{xJz+sJLMy|h}@r)GqptIvN3UG7p#ki5~StqZHLSJLyR zXaW{pGa!=uEFqi7-uirf$!2{Ngub(@o{k_p0R;Jt~^Qu z|BT}*H5hLuGwfKw5F8ai02xB=PRTSks{UY_HFWeLw&IHI5qaO8ny)^n6bIpZync%X zfI)tkK}HrL*aGqMhl+LZl(dKQo`V=TrhuPYMFr;eqm3D=$IV4GDK+o`kQ!TPu$hnU zs%iAYc><-;1aLfSl0FWO)E^A^$?UmJ@xb%k0VKo&zaoKc@G8XtKh!9`Q1QTASmuaq zFtot2V>Vq$_DomBbjvzL=+aR&Tk;ve7u>^gOUUsn$ zni~qku&b5`6=5*jxB8${-AIXHBLq<_ikk9!4IJOWePQ{)u|d$rW619{UL6L8R=B-T zg0?erEI?4je2&%wB$?9VYq6W&Dh%HS4f@4j)WaIMYDkY?L8ccwutDFD_y(dqUL$;N z`%Qbh?91BaY(>`K_BC}21XjLyTKfsNEaGCwzJ@e0ec+KB?da$8tLHjl&Ge>f9@gB} zG@nsebEIjG6&U4t<_HzLGh8B%qiR4&`IaI$Z!qJQ;$+y6^by2Q1*;+$1GgD(UlMc) z5m&ayO_qT|1elEMw=j;ie;6J7?gipGx}zcN;r<=oTZh{qab^ucCC~`E($)~*!MAx} zLZF%hb1{Rm?a&+RnP20-bFuVzpnSH?hGioUg#h6lJu^b~QVZ%O_DI~`b5kpqdkHpj zu?DIDgemv%8?+U-o7-0KvxVv50JIFNiUVai&cGh7&Z7WizyOgvnXa3LbHR7rG|XCy z&LYG+1x^64dp$=Y@vyJS=V#5nA_MPZbv`o2MfQL^Z1WHxF{Q$v$ZG(Z^530}7}ELu zs$gcYG_rU_unCZZq$z-SP?+IUwtz;((TGJrjfaJNk@6LP#{A?cJgU0^{Ji3*gC3dQ z;tSDYp(@Zz{96a!5IWRSS;-6lrA=-LX?BDOk z@Ar6>CIlBG93;3z6)WN(C*!k6b(06TAQl;6+h+zCxfeUn$_AOrGMPe8U##lSb+(p|ixZJC!X=A`J@VDzY7#Fif(*nZ^=s*skM z@|{JZft!}C!jhXCwYo-AG!JWfLNwomf565nEOjGp`UvCM+GaU^ORo?MST=;T&e5`{ zEh3+6TGW#>qt)o&+RB8@xvb{qFVZ=uCV*2s!hYkLvEstpd4w%=vQ?YsS~m3F&FSKp zZ1?4@M%ANdPE=oFoay)-%wS4NmF6+d&K*G+0pR<#0W&4GEGv&anSEzO`s2ed%|aGP z`r{*B4Qh-n0o~(YfE9l&YsNh{!WosVwBRX{LcvBQ90;-6pc2MwzLMy!bmXNL`T(I# z@yrk8{A)?Eyk0mZyuwuAm+hZ!=E)Mm+0IyOJgW*&W(k8B;@KXRBpYtUN9x(+^T8jB zhu)wSgn?TDQ$lS0mLt7EXXvcYjd%6B#-OSJ-LVs$#cWniVfv6Qt6PoP&$XRkPu`j@ zWp3BlnExq{T-}$)B%L+nRz4~sho{7?|Asjlat-Li(Ga&Yx)&jIpb_gFYa%118_Qe+dfPZ0iv~vqte@*c9Izgl zG#}Xz#X~xcQ8i!hFiE9uimNwMh*YNq>%v~1JfXB1(iVoe`erud_8}3nk+f0=O=>>q zl;Sp12Owrhqz))jYI&3fsq_)RO&#z~jd6DTWQzNdRf6k;h9S^^{iO)k=ht*65Vg@C zA~yYQSo@@1He{WDMYcX-WporIHwaU63=>y_3IK^7w+3)l$bAiVSEmGn8d<&8Tm50+ zyG9N1nbdmQxvCDE;RgiO85#6$78>ZO^$xP~pcRNEA~|~S_Wa2A!kJD=JP`KQ4JmuB zq9>&6sxFg+P>=!=e4ec=(wYFkdDNomY7xRl_y``vVIkRbu@HOdV+n{llnsL;L3njv zsD&(c#}La55lf?kjI4mtNuY@w7ep1RV#QYM@Q$3w^)eYc_=t?`OOm;a(k6cp;+v35 zJuph$B?&-hYWpgyDcr_oHL`#;~ zL(zPBcXrO_?XN^-A(FlD3|A2(gIxWWsq0Ew4OjpD1rrM~@AD5Av5s2&zP!_|0^>q> zNTxsqBy4Cp?h$Nf1n>gi*!ELa2KJFU@1_Hd%eMUeJO!Q>zqAPtjJYi(rCv?xsSa&( z9f;!{vE>?XGy*3XHTu5)RwqYxpgV|}kh6z%V;>+H_iJ&R{JJ4$1E5ikgR=;Tt~-B| z1hI+F!yHdQ~cL!lv?4DrOiKV#Ss7XDu9p|$<#3U4a>G6{#881 zFvdJCcQnLbZ;J01`w)WT3ocb&4e2<*U_*TW61I~KV#gwb2fN;lz;K(cBZIYB5I{;F zK}r*@BZFcmMhF8UN7_lhfj@0HWToQCa&URpbYNa_^(`=O;_6$u1Y4`)K+K|w0^-A# z>j6K9xy;&+BWoOxij8~h(6#X~qIL5&#N-}NvBE~))ei}b#yu3}D<1ID+NCY9^s!BG zD+?pJGFO)YeM+tiEc8janS|uZf)TJJaQqxYlD}{R$x>>Vb-3f5HppZa6tc$y{a{$g z!({7hpU_cn$c%N?s-b2T&W$bKHaepMe*2qOA&yz^-plUXcF)A4lb`A=n9RZ3fZ2cM zjIKm}bMIff(?22a{RC^Et#=Etaog0Utt*A@~Syn3D-kt34KuYiJsT08#NU;h;0meSyNaIBK2ha_TpZK zxHrAi_P94}E$?Z0T~n_7E4wq6*Fa$uISX0|GHR%hK!<@RAUW_Rc9jDt6Pq^W#iLRB zffch-ELcFukQa}kPwPX5>AYW3>gT6 zognwYv#fGR0&s#MeZ`uO1`R{MDXX6w%yu3cMtN8(w??#3b7Q)A7|Cl}L8j zrUHs>rGSEX@E9e`NO_1trnEBypvwc@+t~}!uD~1gHslNDbOJ%xaufFw66J3ZPanHG zEswTFB!sZoBavUVqB8cz-Th~_^*i`&t8wM%=_f9!<~X`0nFK|YQ1}rK>IhUOdi(p4 z$U?q=jCf+)?CsBHl|LhwXbijdR$hI}DZ176s)J9Lb@!?T&-}QrkYTZLE49jVpxD@Y zO)-02HxrY({oX{c>niQAfpSsE6!Dxzyknl(ck9l5(^)~sB}Phg>NIG_BXf-u){25$ zQFMkyBP&+PICcmWX+SoVC-IDoV}Brz&t;IWTtof@h>~MnN-9TpQZae>={>iSQ>;(< z>}^_D^MtE)AscyLL8O055M|i)_HLr6!Y|ra81KZOcdOzo4#D4&&2(s6U~vI? zGO`a$Y*YD)iYv9QuUBw}pL~lWPU*urE^% zUD*|Dfwm!3xd^D(;R~39p(v=c0J-HVxOe0$wRuLoGF=VF5fx%ZPR56A-7&V_a5b)} zL~70|idnOIP3gHm0%c3jy-o}~7yi*RI}Sr|LBd1HVw5IOjPcvrO)(dr$w^$WAv;S` zQSXGcVYl92CKd$RpSypk5RpS?ytc{X)eh|U=K?Oig>i>fv|Y|(Zs4tO$r;y9Y{?Jw z=6MiQ6(7ie-fMpH7yC*(D)vn^bkfYI1r4auy z$9DetYC`|>9v=%ar58em^_D zX8^$L?tZ_C0ccKtatK@Z==KRbzcrQP%znR#^Eqp_-0?apqs4Qa%BU&*>yMNh_aGmY zkpA^Lo3UqPkwZ$*z?AR0-6}B>lAww%Xa^?=b8ZDMY}=kue8s=ovtk%l+%0Z0#pBcL zGG$RhJYKBz5%F&jUVjnzD_w}x^ zqW%QW(`9zf;ZYPBLlB*@%OB4h0pJ(X^m>F$xRV@kSHIuR!I)o8Xl0-8&1?Ve@#h4o z->d!E(@*4!=iknbKCvQ_^=VgX6n2=ZI3d5`$~s9*z;?r$-U$3E+wzYc1&L43 z%f!<$wMYm2J@N%2{of7TGbP%Vo|4M1FN*GxQc#e>?TctI{JapE@|28oZaI%CkS}j- z`|O7k7`WG?4|4-M1-Dv_k?US&hn^fBscJpcF%7>1puGymk99Ku< zmKWa`HG0(U?zjl=V_y6Hz7;dO-q&nD@4O$4?&@1#*KPK4XZB9cR`%wTgZ_Wk@C*{s z|L|`({i*b84 zdKBk81qS37>|0ri;ePh_n?1D&J z=HX4<^2YNUyP!itp5I`HyuLc}9n=kBcWnT3_|YV=krL==LDT9Tb>kI>keQnI1EOxf zUCF0WbX0DwHZdRiAc2T@2`)lr3wcFF2X1vcgW%=`6w2ZjDTDOwXiH_`b-$fm1GSL8 z9R+u%qZbaJ*Q!t%Y6O7}!uG?foTDtZhVUjt%P=AOcJe0~R0~95of{{%?wRZe(4Sl7 zE&)whtH{YB6R_h>M6n5R#};Q^^>KFa`H@ariC2MmQ2&eR%5QU9xivK5|U%o;NZ-699vJbp+t-v3b@CY(p7k1+6%q<+aFWH?qChxPKXCr zvd9aAnhf#arfw}^RPu4y#G~XSC+!iSnBWTtMRikNai$JIG>F0zSv{0ChroHTC*I5n z6>ZBZOC?Po{?%2lbj6edE(#!~#J^TddHSkX{;!xat!)Z_5i#Ys$lw0dEu?&K@Jo=% zHAP^x_~2+V9Izpwg!tg7X4MD%)~KO52<8T$JJ7i*fJ5Xp;v3NcX&7su9nDk@qp_NbwtTu7Ddy0O_)1F{AuHG_Yu4cz*M~eMs4u|E zG*Hc+azZ7-0Cv2wATr?Y&svR{hKjU;l~-7a_Mk1l%!LY2c`maUjT6u?$}E`ThfUPZ zm=Hho1j6XP!9ctj5R%1p3GIm_WPa+Sv%?qO%l+XT9fMjUS{~Hy5;arPl-U?CRhh-M z9vF%2nsNqN7K$(sy(RmvYI)lTVz-gsBNo7{$#!Z=**cH|#)2A!5yy5bsSySVYL3B5 zW<($=zdvNPI8la+_mgx4*qr&fquZXfV*RDhI_=2?38y`|CTiq#tVDi<-TCX>LD;D+ zf2i+MDTm~b(rE0!ug6m?0J^aaFU{jQPP9I9H(@eIqipG0I&S}RdP(_6_o_geKsbBteFYvEA0rAj;?9#rc!I7xVyg$GhoVp@lGdN@1@@@xpJd9Lo3mS2t*t{tpbcK97jjli#EqiLZQY6S!`zWLF);A$^ zobjbXQVi*>_eo2sMu_!CFqn0?0=}FF&*)BMPO9BWkibHN8=v#uEndKJ=BKqdUy*8~ z7(@e8D-c&{WJ+P9kTKcK0GXJU0KB+wvEPc|!~ zUjw=tcKf;DVT|NMv{J}de@$8n0yLFWhPW@W5-7=+4EgG>tfg5zhnfS!ZKlsY5%#gNpv4vRRtBh(4# z@ZnmQmda@tb#{Dt3c<-0I6n3N5NDls8#YT_bg%Ns^lbHML$7}3>RY)S`~5{OJl z2bPfxa)WVThQe?}qnJb*yW~ZjI2--p@NujYe6hJ%i?#&dD}p7CV{t=vhMX?t`oOdg zN2m4s@=Y#C%>1yLbNz!4=kcFaAI)Q#J9F8tkEZb7-~VV4|5@_!+``^DckquO)^>xW z>B>prXHAe50luMn3@w(QLtzE*hTMsOP^&ECe$Tz=|90BB4A(vP0Q#sLTG8u3@Fc!bL$KkmfqWsayj0LOG~di~$5 zO^M;Uc_rCx`)~}&y5ZXNh9l>;C3FlQKPP6&PfaXO$WKk`vWu4304ICVKX04Er#4mE zju)Aip~KTy8#VmqB_if5a+-;MmsMpLu;@^I6CeFA_O~NA?~d z1cz$6Q7&08BLy(!*KY>+n*DSC@lm7CrUp1mKBepKUpZ5{CNw%zp6zQ*xpy3TKnCu* znmvDN^fdYP_ma|Me>~x+{V{XC++IRo(lImOxV+U%_Dwf1E*tU94O46`(hgitBmg}V zt|zuz4uZE1{-+FCs>=?4J>=p+=O45X#and_qIhhM?t81d zl=8H&EuMz!zPH)ZZ#QJ`7f=FYF?;^&C(?&zy=tYlSnt!9PD~za zBXdeHt=sBYlAqSe&$hmQLxu`jF%~;r)I-=}!QNL-TM&2fcZ;dCZz-`UK70X%4-c1i z9j;{HG;D{*Tv~s zamBz}WF@E*gX97$L#KsRu)`t9gzMNCr{lsDFMY$R{ZV@+3Kv*{cW<`j848s6nb736$#QPGKB%q>!!zg!dD9K(!9i^5_TvDkvqFMW z+;76XqI!W*8gR6OpJlN9Ie3eRblcGg9U0-pGx+ticaruB#j5>0sDgt)zZk2xIw0`Q z)1Y)+81cH5{DLc>_w4oA5jV)a&W*85aosT9_RjZ#PDs=?(O?hgY3GO~?xe`?hj);ARocbD%p?K1i*3OH`0P1k3sh@ES;K)-~ z_JH@RAghBAtj`qiAtCjd9GjVmRvBtwqnf$Z5$rVLy_mvL4A*i$HO8lXJc!&4ou1C{ z_>)b6D{(SHC2R48hnoYV*Pa{6!{PTv&5f{)5_1Xh3mgSe*NkSQ z8Rh#Pfcd@3>?^opkM|T-^|k6;lgJKRky&hDFJVE~X@po~FTryK)nUUq&yhPnX)`XSjm@qYlgk%_c84{B>?2&tA3fAZ;5a$;If^?p>qC@4w zwskRpnHAMaD)@UEl9z#M%c7 zi);~w(TTZ+2ppcoE*S#(pgV0tgc&$#ao0hfz&`!td0h$YUTvM!6xG&gH$^=;ioKqF zL7KGmFZ?cbKwWs>`0+?r8)s+Vjp9rNoo#rjvKAHKjevLPD?*LL3&+E7_5wZ${{+Kc zyQT%RfddW_hDVFk=pIlxN)N|A9wJnBTX0Dp^nup7DNneJUmVX9>i9*~P*98>#fJ)u z_{GOVK{2{hJ`6OZi))>WmxqCdbf^Dts0v;9or_n83+woui$)03)7vucg1}-au^UF% zpS(UoSioP%%NO`bzgT0wz)@lBK)x`SKk6}3xQSo1;vyI0&%qyZ5HBgFOc%8cllUmH z%JYQmh=xNZ6qP%Y#dA75A8nh)q$e}QuWFj%fWNw!n|ABO59~N)-H@g|XB6IDVFhP# zs~Ha6koJIGHR+Stz1+;4NKTSf9DF8u&55SZ5YcGuNnpBSd zQbug|C}Al6nhO`jq5D4^C1eSlq^C#2@DacE-Z8?B3hs2Z$eHrt3zTrkPk%iG z#6k9_0J)!5hVw#a&lXoA-)>eF!g(Iv3`2l@1JCgD)E#SFP+&{CTC zUt@)9`Gu!I@bimf1;X^vyK|qs1x1h2{1ere0tBX{%=S~|l+t2=@(&1>9L*}Ur6yV^ z%(l;r#-1t?=0Stc776bRK!$(8j+aiXaE@=mhV;9nBDQY4Fl>LX5@C`cx23Omh<+cw zU%5aSAiy&g^f@!=*oEA(?l@bOe~^9Y&5mt7U#N{OA15r|Uo}op1!?5)P;B`{!r<7} zQXwaH)hr=3_IRnVG@YMqG6t?Z6%)&#I&`tT3|d7O`^$uj`9)^AFbxww_n|d}S}x@9 z``48VSMZBt<-)4i!D^vztZKY)zPvmAxxZPj-ag)b^?~uwEE+U-g0MCV7l8m|>(Coz z*GwUI&zE-J1Z!zMV$V*1m87@xCJOm5XZ-P{6Ya4A6XEvh>F=G3k&^_qC+?uzvMf2= zo=NumFHM5;r}uLw3v->(nkU;&@0<+Xrl)_MEUbuKHdiQ0ZZ$8qVTzDtQ7bydCeL4| z2&?(~)20gJtkLqa%hrCLUg!7tgChcdcuP)DbE>_}&!@sk(+t%WLb?4#EM9?;pO`K5 zh&@pOQ%;Y?X~G<5!14cO!1dFFM*iZ7X~LD(c1tJN+s%vBUnpepr!5x>s`c81HhX4G z7uNDS_fLnhqN%>0E)-c)ZG-52a*^;r*QWPBIzz}2?1k+A%S>UF^Gj^mEa5=xa3MxZ z`R4%gD^>E36XL&(<;)f?%dtcWzn7OyF5Fh{~W zvDCT3%Gd={g!!?D=LmiIt&X|Cb@Z%%m7ws84ORH~)(OIZ*p9hEKYr`QDv+OE8a5AJ zfG#%96NXqX?WuBJnumSTv)uVuD_u0t$8>z8J@f3BzL^h^q-R>SusY_t0Mh$TwJ?os z+In6rYk@Ffa6gZ5)7BUBrs1z=rAYq}pICRjaPs)Bl)foxvCsmcq;U2N3t#D#l7^@B jzpKuxw@mrE@`#XI-u