From 1eaa57c98f8870a43e1ea14ec011b6bd4be97c8d Mon Sep 17 00:00:00 2001 From: Richard Liaw Date: Fri, 2 Aug 2019 09:17:20 -0700 Subject: [PATCH] [tune] Distributed example + walkthrough (#5157) --- ci/jenkins_tests/run_tune_tests.sh | 8 +- doc/source/images/tune-df-plot.png | Bin 0 -> 157800 bytes doc/source/images/tune-start-tb.png | Bin 0 -> 159659 bytes doc/source/images/tune-upload.png | Bin 0 -> 25635 bytes doc/source/index.rst | 2 + doc/source/rllib-concepts.rst | 10 +- doc/source/rllib-training.rst | 2 +- doc/source/tune-distributed.rst | 239 +++++++++++++++ doc/source/tune-package-ref.rst | 11 +- doc/source/tune-schedulers.rst | 4 +- doc/source/tune-tutorial.rst | 121 ++++++++ doc/source/tune-usage.rst | 285 ++++++++++++------ doc/source/tune.rst | 141 +++++---- .../ray/tune/analysis/experiment_analysis.py | 104 ++++--- python/ray/tune/commands.py | 2 +- python/ray/tune/examples/mnist_pytorch.py | 40 ++- .../tune/examples/mnist_pytorch_trainable.py | 188 +++--------- python/ray/tune/examples/tune-default.yaml | 51 ++++ python/ray/tune/function_runner.py | 11 +- python/ray/tune/logger.py | 2 +- python/ray/tune/schedulers/async_hyperband.py | 2 +- python/ray/tune/tests/example.py | 36 +++ .../tune/tests/test_experiment_analysis.py | 1 - python/ray/tune/tests/tutorial.py | 106 +++++++ python/ray/tune/track/session.py | 11 +- python/ray/tune/trainable.py | 4 +- python/ray/tune/tune.py | 3 + python/ray/tune/util.py | 2 +- 28 files changed, 990 insertions(+), 396 deletions(-) create mode 100644 doc/source/images/tune-df-plot.png create mode 100644 doc/source/images/tune-start-tb.png create mode 100644 doc/source/images/tune-upload.png create mode 100644 doc/source/tune-distributed.rst create mode 100644 doc/source/tune-tutorial.rst create mode 100644 python/ray/tune/examples/tune-default.yaml create mode 100644 python/ray/tune/tests/example.py create mode 100644 python/ray/tune/tests/tutorial.py diff --git a/ci/jenkins_tests/run_tune_tests.sh b/ci/jenkins_tests/run_tune_tests.sh index 9368930b6..86b3e6a50 100755 --- a/ci/jenkins_tests/run_tune_tests.sh +++ b/ci/jenkins_tests/run_tune_tests.sh @@ -40,6 +40,12 @@ $SUPPRESS_OUTPUT docker run --rm --shm-size=${SHM_SIZE} --memory=${MEMORY_SIZE} $SUPPRESS_OUTPUT docker run --rm --shm-size=${SHM_SIZE} --memory=${MEMORY_SIZE} $DOCKER_SHA \ pytest /ray/python/ray/tune/tests/test_tune_restore.py +$SUPPRESS_OUTPUT docker run --rm --shm-size=${SHM_SIZE} --memory=${MEMORY_SIZE} $DOCKER_SHA \ + python /ray/python/ray/tune/tests/example.py + +$SUPPRESS_OUTPUT docker run --rm --shm-size=${SHM_SIZE} --memory=${MEMORY_SIZE} $DOCKER_SHA \ + python /ray/python/ray/tune/tests/tutorial.py + $SUPPRESS_OUTPUT docker run --rm --shm-size=${SHM_SIZE} --memory=${MEMORY_SIZE} $DOCKER_SHA \ python /ray/python/ray/tune/examples/tune_mnist_ray.py \ --smoke-test @@ -94,7 +100,7 @@ $SUPPRESS_OUTPUT docker run --rm --shm-size=${SHM_SIZE} --memory=${MEMORY_SIZE} $SUPPRESS_OUTPUT docker run --rm --shm-size=${SHM_SIZE} --memory=${MEMORY_SIZE} $DOCKER_SHA \ python /ray/python/ray/tune/examples/mnist_pytorch_trainable.py \ - --smoke-test --no-cuda + --smoke-test $SUPPRESS_OUTPUT docker run --rm --shm-size=${SHM_SIZE} --memory=${MEMORY_SIZE} $DOCKER_SHA \ python /ray/python/ray/tune/examples/genetic_example.py \ diff --git a/doc/source/images/tune-df-plot.png b/doc/source/images/tune-df-plot.png new file mode 100644 index 0000000000000000000000000000000000000000..1014fee5503e67bb42c9a1ab4fd91c737eaf5870 GIT binary patch literal 157800 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 AH2?qr literal 0 HcmV?d00001 diff --git a/doc/source/images/tune-start-tb.png b/doc/source/images/tune-start-tb.png new file mode 100644 index 0000000000000000000000000000000000000000..15be99b1893964b4dd152395a8af35b35565dd65 GIT binary patch literal 159659 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 z

|F{mdBK{bd+Q&>m)CxqU&6L=fUy3yG`w_%e5@X*lGLrzb*zDbe-i%lqh10TEa+ zS1-~+z*)dr#Y6PQvgM*?l#%5qb#!_RZ+1*FlCyWDu&lpoo=Q&3TS`#lMTsl>EB$@2 zSO{o8_VCapuedU|Ly!)T0!g%kpAkNmz4Po@0xNxNb~SLs91y=MHrYru|5ak_E}e^! zxNZAtjzKvw;utAO4OE?}#lwj_g&beH;#zWnm}}7?{iVR!6(n1d{%27ISKPa(12Yt{ zs_mph<3wtDJ~-3#`8KX?S)+)}bWLXAs@0i9wNLdPSp=#C4d5lkX*sH$wc|B^mBF|M z-eG4hs@yZ z@>`oc)M$jKaMTF3AgeJNT|#9qHOiSa4OeNeM|LCP?pBgQKdPq{G5eLtv`B@ z>f`jGy6Ka8?|AW~X+hDpNo&z#9qNSp<2vs*hpqMu7vCmney`k5K>{^uB3kiR@U6g)UWK+5# zV8#(TIdepqYX-8E+c&NudW{hvB#Ti1F_LKTFFe zP?*n-?BHxU49^zg>t)wR5jPm!EqQ;d*@?cL`f+RV0)pHunkGovubmp8dE^7|{ftap5wp~MjvWsgN3t;(?6Um;GzxfQJkS=7V`_zPb zr9FX#SkHdwL|ot_)Z}Skd5Yd0oeERdwCNhhQ{gjk9>>0W0)6E^@sTfr7RhLpg393f zX@uwj42@$K$}$Y5RHz`n5N5>!?1hcwt9!>4Im+R z#-#oqPL)ugkholkM8~9sK5g;;)L8^G!r!5APgRbXE^mhubJY_=UJ>(!%_`OZq1uF# zW6{A`-NOz5D6h2tMg0-w1gsmn@fI5IfKd6w1y#9((xeBhc z-2Mw)@IEghgNQ@w*k+o#A|{os2+kOr$%b%fgj63rx$cRaPLoG zKLCRB;>T(r+bl4e9RT+sA!R(i1Tf(PaNje{-=2a9t@yK;^wrr%egKwtt$G`V|3>W%QkebFxYkFklgQJXgx!2+z4@gTF z6s%kBn0^VTvyZet?58kqmEC?+8|IJFVl!^%(;M^(^5w?UVGP!C8)G)UnK%i$1U-B{ zJ`3Yxy}I6W-*b{i{m-TTO(FoLEF8Z+HVpo;$0BW!7q>Tiw-+>dCj78B@iud$9fK{m zb+YXSDyq+d-M1*OvB#+kT0p|4ue=^hMC*m(-9|W9=IR=7cplI{&;JL$%FK5+n1GFv zzUgQrVWtX|6l(1}|55y(HEAe!2SGAV57vc;DI;)h=nUu%=-nemaEbj2Ct5p___%>W z1~i41pwH6D)5CK;=rvk|DJ|QBSjNMfPOd#ju2C&@3w6Tyr=M%8w0sG}0TBsIkb86H zxnv8@cJL}F6|$Cqu&|s-A(_BRLEmz9u-H#ma^DGL4a4g!u(5z2w@}sfL}5+c2c4KS zYe5RFy#rHFvo5%xxZafOXPS4pkI3!5pWw&u(!52s>PF<2mET15ri|jgTuoNwZUD=R z51QeOv%ak?UL_d^2fYvalKdj0f%!GOnjouJbeNY+YXjveahcmHKL9k6v8v+-yLuqq zX=!8!xLZDeS@ao@A=qS3%LZ8oKEl1aWa0}NvtPk#El8xxi_qE^zN=FKZh(GxJ=MM0 zpk7iQXrd>aqh{YYBs~)M`RMo%gcIbvuV>O9IBxEBLO_B$q3N&eWPTuUo&p`}_Z?7o zO#uFV4}7H7;!%LNmo4C}PQ5M)jI{kGg7+ZFeB@NVdQZDfj1mfHX42y|fwKn0*BS3- z_E%}9ooboJ2Xu);0Dq0Q?}T{IS&ZW*$}PfiaX`+oMVvpX2YUErLOrar#$|U8eiuz6 zQKK?Ubv@}zSu`48|5UtJ^<{0&ET;aYrMh`pSGhp%SqO_Tt*p#Z1sssz{Zer?ZC3K& z7LX@q7{y@i>~r0Ma=BzaI z`SiFDe-5-6=9bKgbgHO)QuN5rC0BtXB*FetDgh)?VhS0UZ}z(^=kb@mFHLhc!$PLG zSUzKxOb`jnS$30~YNIL#sbHhVK0JcO{DR_5 zPRGlwf?XBJorgJi+@+>1uv1mTPX`m1*ReX-kTQVuswG7dSn*a+_;&DB9-V5ac5#V$S!O*(X0QwY z_T)?Z89S$=*em=1bb7ao@2NxB6ti%`7LKfPm~ZLVSLi-_pgmH;kIt3-$Ejzpb+{?y(jExV%d-F3uJRHGwNZZX+5RgQ3CQucXo1tl{9eQ_2dfqEGz1#3T z4CG7%KiT%vBs2C6!4NG0(|3C!jw`?xPXzQBKW(YDm!;hS@%8o6*IVbh4z{#V4-bjd zN|6Y-TlE9k%}j%l#@Y+OPDznEbKVdZg7i(iHbN}aBSEFq7X)OJ3L8p+p1t}Dk%Vf! zRq7chd|}R6>kj%4eDeGk{q+VMV{l7uXNS z(Thxe{9?d;=4|TAaGYhu#UWtgp=5m}gCWYB&UCPy!eygRmJeZym4)sPsslSv5$D(3 z(sLJc)Q)y&;&%5%s7eGues8nV(kM;R2NI(b2#e3G>9CEqBbk8%=#9{h*Dg+16s^Va zsoN6?laJYKqA8ZZGT61U2_Qb4&N*17ry(la z@@>2J(&sVp&ynUg3ZDA%o>Uax0KHzQMGuEFKnnroUJ9zy;5w)5QvjhT$07#D|hzJa) zTBe)VL1jwA|w)&TOhjrB>k-WmOt=Tc;<`el0l zQF0g%NjMK{c(;!Z8vk>t+YDqe&F7eyq)WrAgfs*}+frKhm)|7#H3%k0aLW)Ye)L#y zxdE!*KtF%9cBQ)7)~xdT3ds4XJSXYZ4^+0TpIjC?Opc*=h8k8)Ro89 z10~?unV?})jBqXJ%v0dl>HIuXHvw21Q$e)1L>DVmf>YmEqq)(UYOX3i)CMDI%gsq7 z@Yj$BZqk+`9elOvA)ZKVk&WwZ>P}w3kB0M;w_`Dy_`Em6kqVBIXqOd9;%U!agy}{^ zjMpK7Ba`jN6FQ`!Je$;)Q@ybq)*$e!?Az=8$~SS%_p9Kd<#KNC361xoqA*YnjH62K z@o4gZO2om$A6PY$_z{!icb+1TQ_okO`Wr4wk(Vq||Kb^DOnrZ-7E<5|=e5CNs%}m& zk3Tb*INJq}VR|#18i^;VTfOtA>^6+7$)Gkm%PKI<&1}|38GSCmTI>3vE5v3Jqs&Ry-VI;~^GqfOmNBMCGm9v7Q%67Th zCjiy;E*SyEXDKXTmlk~CMmoVKR4rE?L(?02n6xmsls4!#pfMkb6IShUOgqDx9>wbI zviSlMg!4Ff465&s{+PZ!=;Hm6X73@0=Uj!-KAThbpJm0jPTaks9Gzq8uMWv~^*i}! z#CLigq;r)4pmPKEQ{NJ|izoM&9XiZFj^0L9+W~^S?~GLozukkC38+5~F_UFscbv+zPOs-iG9PfB ze=3L8TWm!W)KXam%f9{<7~})7?auuUDX}&pO4~WZ%g?KIBWZ;!IYbi5zrR1u;<9_9 zZaiF+l)+>9Ok~yab_8qcFK(;^v}fLce;`mmx0~5N`-ye6X>_yuGX^)av3yp^H{S);nEM-UKW z3~iQRnU?M#%w|MleVm;kpg;3yW4~h;sTex6iv%&a3)*0GnM5>h(Uu&uZ6dZ&v=5UG^2@8_guY>4xqUiK?7_xTaLFwZrE2UigF=K*aIZ^cuF4U?q)7I=bvn8L^ zrP)BicPCjxJ086jn)9=2ffJYs4X%{F<0ibpsd`Z)Z&~ntbexVesFGlz8;d+a_RIr? zkSPz%*k^I;sY5EX&cLmB+41N1p_$WbFD66hGA~()mc184kB8AW;Ed#s2r-g`IH{iH zn`VR16@zJK*s@{xvj4PC-0FF%edlf4u#@ ztiDySO2zG*_1qY|b3Rq)AbiCv3$(wBi2)44MNp@zj(Tz7~k zUU@JKxjFI-WL`!bX_!#tjvhjjtF^GN_wR9NH-Zv9ly5khm+P|cs37b@4QwKXq#AYe z*v`F3!F@+Ymye#0aU{A)ug(cW8>JJ{1GhCOLicX-U<(5eV23Qtx7zM5K6LNpNLCD^ z^p=lkc!y22drPfs4%YnKpeFMw#*M~9-nVAc`tzTt7nC_CF8+N(y7bGmzsng1mwInI~s)bnYH$tbNkhHT2mJhX##e7rQqmUz;!d0 znoSeMqs$m&$g48hHRxa^@$b*1Xur{M71^QK zOj6O3GciP=bmTZdaBnbc^sof`V!t%RlX8tK)qBI_2pD;O z);xW;Du5oQNiO_claWS-V^*9W6^EWk#5oWh&#mraOK4CRV(*2hp(kakbjC$Ht%U-qd{Jhj+5Ojg^ zDbc*Y)es*}5_WpLo`F&A;(8M9iN-wHWnY)cj@M2MPjqxuxP<{M_aQ95wzK8VWc&I~ z+v2N?NI3Ju>(GvGeg}iS%X{eOP_|a}+dqc$ZZm8Y>PCFYwb*b3x}V`~)`x|T&}9$< z*}f=?`tTJtON);2;@M?BJLqQC!mPyO{ELyv;b;6@w9I?nL_}JJNQpYM4S8dp96~j{ zn&V)xrg!kt0g^R*bdyDA4Fgp+cHy#_+b|?A8ebw!iIdd1&-^!etyecEB=IVD-su9S zKdq&hYsVkmMUOrJ5wn*gg z%MKbeb^=e8jcFDootFo#esby8{pN`;d$+DYK2O#u*{p77#*m?*D=l&p)|YXC_k1MP zpqFw|$+Cd)S}O$BcRpEN6K*??rt(VzbZPm-IKhk4WqJL9EBet($5wHdDh!`{Pc3dx z_4^k3aw-b#f77x`AC&QN-5x}EoPY-%j$d)ixD@j+S&#UD9EcVH!KutoRlEx8s5fP)S24HM z6*v-x&($_eJymm8qTT15ibigH+Lfk4mPq!050>)8f&5%lbW|rEd0xs&nq_Rr7Nxsn zG#IEXUHek)l0x+69Wqb}4duibw(VtHmI%FR%cl>tcq|)m0pIktK(d+n2Dc`hb9#L9 zbaHd)U*0=~`E~J9rClvm-PA7eLSoU$;TxC_i4K#d@Gb=UHOMst;JMw1$%SF%nFV1k z+l9(1{rm4NAHcWWP&~1mK%_}0CdCj3aU4Os)zVIJ|5t~^5UW^Z=Wc>cVNh*uT>a_x zHBPj+4$L!;GOzSVYq2-)Ld5s^q*J+$w>!y;RU6zy`#5_)yNs%2UZ@>vbgmR>47 z3G0==e8d^+5h}OLL*C&}P$s^{g$`NL(`S$MgB*T5=-!Oerk9|nevUkt$e+RUQ&?%1 zVu3|bb!NDSs0)!ZX$(AAk!(7ZyjLF`(6zAffzI0(-R&vhmi=1!`wjvWErzSivc6Su zx3#xaxehu2bDo4i(Z!owoZo5vP0ZCW@%tM#;+cB>)Ne`qqULsS6lb@d?|yK9v$`37 zZm}JTNsK2jmKY2p!?FA$OV_fv=JCoEb^tT39ZKR?v{a>2B|01LS$RjNKswNXzbe+* zO!apW(6B5Ds3E~Fe#?@=WiH9dzf}A28fpugIvhYh?mPwE<>pINxRwtSC1{k$Wj2hF z_kg7Yn;AM+uT5JUE6HBqW2d89sOJRhMbgWqMGV&uRxdJlwW5^jrM?-4l z+y6Qmbf2Zj=LA|oB_vudI#%|rN*5Xv4W213Ze*9f-c{GEA%<9B*=X&g3;t2mnX@|8 zVgK=mq~{y!WpEexA@%ZmK7SKlyF?K&bD&ta*zqRTRrfvgA!R)Eg~iJpx>(;1_*0~` zupdxbvrL=^;JGFObMOZ72aRQ)j);WU7J=*foH>DH_+qnBeDCHk?w?fqCTp84yF}BE z1G|{STt^pybe=4xJtG)6k~)ys5OjauXAH={=91-Yo&kohDdWWQz;KRKi5c(CuAP-} zX{ul{$^B62MTvmwW3Yaz)V1?G4}IUv#|*}avh$fMk*Z_c(i<&ikecCZsNyz9>{-WmCqCTF8 zjc%URx+*GDqI_1dc42bxTNSu(rq51rV`uk!!}5=TaT)oDdpk&|2VSBPNPL0vjfijf z(e~99#{w5*5j0=JrBZb0C~*jC87C_Kn;j(~0)RD#Q&Q<6s`D2InKmGQJI?P%y7mXO zpWcBp!Rq9&<9l}PDj{RLWfnHzRrUTYXq;{ zgJ(7)^xbcb#q!x57RH%?w0)n@+3Gd zgk)60;3e1k9}w-9Xn9z0}t5gXhH1B(6e9Dj$L){bh~p<-W8 zQ}^DjNM=yA(DV#b9gNvZ?~8#u*4!5KfbEkZ{p!}!kAdd+RYHugG)?ITfO-)tTl9-5GLT*%U|+AxQ!V}s57+?^lX zfiWm0r<2B5f4h7^V>v4rkpUVrQ&0xw|Jp83mTyDLp=m<=LtbZ7LEgSYNUL7OG{K?j zzF(!milh>Eh^TtsnN}FRf#Mfcb&?y|*t6BrOrgWulQFa>LhKjPlh;Pa;JJlMA$rnh z%TpouqyneWRbt0=ch4yN-bQs;%21tqs%PTiA12MR5wIV=f}hI7QoIkxvWW5-`_UEY z0vfFqil3RGm?0zR{r0+q4zk#Sys{D5*S|6_Tb!-0sy?K6u`Xy(`C01Afq89+q^Rdn zNHteJH0T7ot*l82&>yu$f|R%6_gcO%fkhw#3iik9;v2|%b)G@&3=sjhw934)KmIL< znZ%xBr2%0|XrU(fpA~*QdnNG+rk5Zjkq)w$AdTbggXpRfW<#pwR@V@dQMK{Z=X4De z$QJImRXpjH)OepVpyUh5K-b&fWO|Q@D4cRG?pC6j!xXbWxPOlNYN- z#$Lzq$Y3+#sVHSMPamwQ3aLU@H|cX_b6dSkA9XISFB-JV+4~0X<5fh@slGyxSz%MP z&F%obArbPi5pfRsd8DaCowKsx!f&2K;_p?-X!u~=+bVi!Inou^pmBoMczHstW}QZaR+!3DY+&U3V_g(ujMSVi4LW9kks<-Ts@Tt2J!8h--6Sv3 zFsL^*(3mdXGW}J-!%PXxk32~AZ0&+ZPSvHGDJGwjlwY;y(O?rPVN%cb_px!@Vz3?Z zd0rqM1WLv|_l+YAQ=cnB+@WO-6zfae@eL>w6^comMQ0mSn$Bzv`~1$-dKPUG_(s37 z#V3t4NfX=}y$&{(>sXJL(qo?uc`W~hSt4%>?>A4_HfcAzOo(4bNV$swV|j~v+rsqt zrUYR>EWED2? z2ewaU?)ZD)1n6`Ox9xN^_4S&K{AyvOXOcJze01qZloNID{_Qo$p0u=Dvr&FxC-L@z z1Uy^GKs9|&&O!uza;^6}a$%ayr-9;Ln9WIzCdJ5)DXN9rj7F|=vwgk4nQJhAYx)34 zl7{@7s^v+ndC}m47P5|;#f&8mIPo~rbYV*4$No*1a4x?T-Ho!gtDQ!Yk`|t>{HaoL zCtrs7xA|?dV9_PKwsTz=Bbjl~M_T)E$Pt&)jg#c|dEc#Xz1N1Gr2SQ;(4hoGd=#tV zrn*ic#dCVXo#TS{H&;gEcZxZPTVR6l{*ID^m&RGD%Z!1G(zM`g{R5)1Y?_+VS)yvg znceAubU}AGg7rsvZsrUY%qu_BBqn&APWM|6)RrckOfla7LMNa{Yj(X4k7VZ+*M-Q2 zS6usX8U1iyDe5rDnZ1@6o{dn?n!xiL-yF>Zz<#jc+uZQF0e5fu1IEcm`c__?rER9O}4wVrg-ZIg#j|U0oOTOkCZpVGxupuZsbk<)BG=TJYh#LS7q%DX>o zzP}9Q@<&}$67B|38PX{6R?EY>8=kShQ6a$qb4#Yu2E#hg_LW@c=OCzf%8Pt-5?WFk z#T~1m588CIRjT(zlE6ZgL+v z-D)%6jNsK!ln8neI4wjh{L+q9+n8&VZ7^?u$XRF7v$Ns-@@gOGAqxJ3szvWj zez7lIY^|A7#;iLz-dSwcd(V*(XaNI6e{mKuvEtmM9r^rjvVJ`uVk%>#G5}w>3ptA8 z-f{M4x4Wf>)g6#OVe}Ksvhu#9TBTnslHN@zwTKiyaK8?l|U)7`6iWwkT6F}S$f#uc_ia!j~!>c}lsZU}ozbL%y$-vpgFtAnPc(e0^l4yPHTVYFZ`_YuhFWT3tUf*OH*akU zl3&V))|b%CTCbkJy6sKsIpd)9&EFX*3#%uG)?@fZIFM+ypD3(9hg6VUWTjKUYIMU# zZHE&zsn4thE9sLsUOv|xV|}frl{=RSTxoApT*YNJUsk}QI-?~u)T?RP<@f`T3(IG9 zLz(&QPf8qBMUEeIBr$$a|3-YA9h8NJbZF1lIrE^4bjq>?7htL!NGm-1f21*Ta6voaQK# zsxnI|+uXJ_&4&oZ4O=N}aaYPO&4u#!M)Iu0Ic8WY=pZRfHYAcoE);CR_; zbQ*=Jd}JS>B=V_1P9zS^&w#2(BjT#g5a7*91e~QBn!H89T8$H|(!DA9_`LIC_|2bq z7A9}NBL)M2lNc2bewvk-2tQd)Z zb=u9-PkLPB(@*{UhQG})@2ck!we9Gq1(tCS z7Ka^>C+jzU9(~U_^Q8l5vxhu_iOy(N^^we2?W?A#>iUy+y`4>jDWP{gc!|Jp4ewx- zN;Orpb!xwYz=#F&Qu_soy|OM<3DI@iZdRRpgi)x*ZWh{XrSti?r6}3N_@;!0&!|xJ z+kqau+s=}uP`zPfh{W{l!^7_!qJQrYa#&`Or*@ESwj3NCaY8N85Cyq=xw-!2m~$jc zWVgf0a!VSyk!UouP{`rh@U7+6>*ZPTiIK2@fAv(K1{CQVk*E53dXS#Q`dg7A@ob~1 zcs^Cs9rUq_P8XKW@&A_9dV5f7R%it-3jcUGgG5-IZRgK>)eH5O0#+CUggJe9=o=T7 z;&$MpK%xB%E62GTjtI}xCKbPk&G=Y_hUr27N(0zL(YONyvQY1OkzOR)%(<*5HZMKa zHljVGqd-#OxT)}->)c!0zR=3m;Jb*Q{{0K3jQgRan94O(t^CJ*Gl!M{6Uxw^Ej_6t zvHe#`L2p&CN!`rkh)w7NgLQ45ryY}zVR@p) zmC#=DAau+h`>BykRo>g7uC1P!s3{y$(jg!sv5M2F(Jaf8f?YX=}UIqERBAh{XJzRAHW|I1s zH}pg!2h&YIfhm@rl9Z{ic0s_ye%50(jU)LEi$eAmDwW^aLTT^e=uYaL65e@fEJMMm zYdgCGerw4e;%xSN6pA3fE0G$^*aSLlNfBmch7c-<@G7&I$wU!+&Omr{eXs$mZ>fin|LU;IJ# z0xFQ9@VnEQSdQrzr^#&nk|)gzdMK|&VJH6uA;@KzpAX#0lu4r!Xn%Rh!{}aXx~;~f z5uLbCap#L%yW;I7;asEG7LA`;35)PpuENZvx4x9Rs&k};he-yW`AURXnJE{oT)N(h z_nazbOt(YQl&=LWb;N(qsF%&Q264$gp&-u4a|#23 zUnR2ANuPJ`bZ!=Fs=(PK&An^68GVJkdU}XNVRW;X@D1NJ<4ecoUZ+goqUGiu9(yNH z;YtO^E76M!RP{s$08a27^y9O97*2?5RXm!}o>N)MR|%?GNXyd}uK3W7u&DIORIYa# zSgSZisJk63d>eMT4ZDeFmuapRVVz)tG#2em(5q#UY)Lkt?Fy&>gPjHHbUmy9q;&^5 zR3)A934h~;;G-P>2l7Wx*nfZncFCqLVA51dQmbF&v}uxO#R2Z&97eLBl0oVGZ zy2|jLFQm^W>fV;{7bhrwMCC^OTyuW1xG{&p@8TM|C+vWpmOwAvW}6mY8|9#p=)TjW z*(gdY``&7d7hQ&V+HF~+V@<2^T=UYam8c!1$pSr97DK#YGj-N~*XWZ`*cLq`0{%MrRg1Rf zv7#{=kGHP1K`1+Nt}w%gR{zIRT}iqla30r@=7iJ71M|@y1iPj6Ao6tgf!6uoI214Y z^=h714;^3r{2fHaWqBk#+}3z5ulq^Ep7h)nn5@~e-6zfj8D6^qS(3#zKpQ@W7Hb+F z@A0ji_1D%sv9bDX#rXSp9_v1Q$otU`_IG0J(3`L05*+*OipCWSA>~*rOzO^I?E=dx z5&8&zaQk+cl2|?xIVgINxgux&{Z*Aif>7Ja>8sR@CGRm9_?YPaYXJDQi-}DA<@bm~ zgH*4&>$+9AF7^El&p5++0s>xLe#dMVuF;UONtoDQ$^JRaVVr(1ut`PoRIE-yi6-tH zB(0_Lcq+EFN&Bt4C%@Lc_>Cm&Dv~$FJMm6CLDbak@8LxLgO#TBj(;Uc#gQ5xk$qf3 zT=;)wMZ?`gyB<| zMAdITUkO6Xu!4BXbsG|%cKrotq9BH~q|} zMVC}Qq+zCrh!tjzV9keHZ$g%rzA8bGbQNg48>;Xqx(XZb6U1^&&S77-*w5*SbM%y>CS1Cge5K+Vae*BFn-h`5ee2X zCx#hH{l+EH!2T(QYzry=jX3XUbI@?BL}Wtv)MR)l@lM)k0(|Jh;SIE3xZJ4PS&l4D zuUq4(4?rx3FCJWp!FxFE4G4g_2N2aWflA#JD=85&IGU4egWmnWyChhvrdKbUY zC~%Izyx-;yZ}5xHT~F|$0~@Wk97zd}zbVKbc7LT^-?Vyn8wQP27AaJ+-b-*k)2*|L zt7A$`{nD<@7;~)MsfGujA z=g7;LY}BSNZ0IuLN-|9zSu?$JPHU5fEcX7gt?#Hr4FkJWufnslEUH{*6BB451`GLO z6}(AG+?J7+Mlz;qkvt@Q`^i1~b+sZ#=Tv=#3WO!&4r^6M%{xLLU;1Tge-=CCTqqj2 zEc6}{-LPQY!8d!7aa$CR2vS!_DcdFJc>UaSAic? zLD!S6O>86}rgHq7dv+-v_h@)7*PT*9Y>()0HBdG6%;r9;4@{uJX0KsM8h^oFoZ47If0_kCw&7vjKikTw!TfDvm2zf=3IT- zyGz@>hzUfT@W>daDz3VA2~j6s{NwiDe+b{+|1~A|NRtWaRVc@#FyOvMcJ>O~LxN-b znG()y3&y#MY9e0wF!L`v-3$EMXmcz)s?NM+M?o^?OhZ|8hnREySpOc^%S#wdb1Tm& z&`2is424d*(DeCwV}84jWpaSXm;`2}P!K(|p>SH7s8?-LzXOIkIgbrTPVZg@`q4cb zG?@#N@xQAChWhIc#4X@&^xVEREXvKZPp?iAOb4Telr5z*v=bTKV0|yHUhVQ6)so@L zLpwnXeFIFr6j$s!jpqLW8JJ@r`=qxz%q+$(jBewIkR@_+er&zyKzbUybVgE5-?Ol*z z(!3t+#dUajF(Vcoz+X!#`?g7V-Ll98v<{rWq2U^CaA-qk%i=}$^DMecy>Kh;Q**DM zdF>K1XPvVH$nMe!VE%lz4)mk4YxK+6(2RqH8*bwFx?vP99^L5CD`1)kAn-r+r?J@( zljFA+w_RJoku53M&|@zG_j{ewi@gB=E#p3!!hDrX6^^8tu{!-FMSgRe9!RoC_ZFmk zB#%jkA>rrhJp1{5EQ`~w_=I$ob`(W1@o}2^8pCVeKb6vxYrXnh>=!{fI8&f4c{q&O z{v(q*P-%_O&(L~{JPUn%f5|`NDcyrCQwL>6w!bS`cpPe*qMEzth@1|~yI_sunqizwg*Gud`FIb8U1#3kFq52Ft(Px*Lq~Ne>>xh8L515`FQoyr@bWXUJtE5O_IvJ3T+U2K& zf&L!putAIKJnZ@vCELL|-Fq<4ehODM^2%YaKE|xND6wA%|6_E$3koq2N5Q!5QZ3&lx?Wfpb|dBa3Oc`Uyr)> z8K7<-@x``O39vp?2`C5@G~p4}^7CJ$orb~Gh;nM;#_3|w(1 z>2bN(1u7rq0Bf8)s>KdH1G&13NyeUPtX|gw0j@kDx}0^hrd0IvNks7!Xo1Mf5Qn0+ z3aOV-$}-uxN`4oARD5GkJ+5%$OxswF(C~cA8qel!s=FZ{0W7O1sj2UTlAy&*XWHM= zD5W{|DRof=ZUhk%wlO;{90R|yPH4Yo;%2p^^>|u%im8FSc0jyO?J)%KNgkd>ECc~< zPzdNLd+nt9T+*|+}cLlFWX0yFGv_vA%C)B1^_T1n>bID@*PK1D>QemSD3! zm|ec_6Qk7gWN0+f{c#!_gFdSGj;$-^W^1u&IvGb#I z#nfl^%L>1FPZgUaJmFR1heC&qIlTv{QR$Qfp_!~VRyT}}hma~odITC3Ua^tE!iAKC zSkxMYj#yO1k!9zGKeokuiC^Pm$pu(dVqq$YfvRUx#z%x8xP^R>&|1s>CY71y3d*k2Z1L5#0#Xd9OFtE9L?yr&A&$&-#p@DweV%^$OLTR}kOq{^_qGQGx* za~l|P6rAfEiDQN;AUENs1cHmvKK==@@;>Pul818bfLPojLs||lb+FXj7&54tyK=$n zL7o4j-|s^vKi~9a-oj7NCo3_P%W-nqw!DBTml#Nkw7zb-Ow5U!(&0ask?6>Gz-7cy zQ`79SzdNDBs;x451QA5%#d7`ab#B31;V)kw%7rxE|DBMRI5u`X9nc>)?HXJVr?*^m zbXw^OE$95U2_;*KqELN7M-uB#iC-EHasDRr5H2p!szLO=Szx&~b!;3>H^Ye~tvn(}7g&@|(9(YpcCN09o?c z0M_B=IK9gL#ER+_!P{iO#+~;i*0jk(QfV+gc!FpbkQ_3Hg&qa0QNtNBw~l4-F%|Mv zUn=LH2)+BkY7?d@wnOyN&A_kFMwHfOO+o~&J=3_VcVK@W6v=TUvHSY3qS_fAakPYokU>(+K~ZfCy_*=}kXLcy+_1X^Gsn(FT>xHhv$+ z`EZhTO*SAQFf!~@>vg(@B=C6sTnOdioVNtKyZBAorTe>rM~?B=z<|TIhpQc**vwwf zv2j&#T(_!N3Q>Pb(=SI`#MI_LZB6U z-%_ZS?CLF5x(wBHQyr>7JIFW4MDWJ!Xf>)cP%^&$EGQN$H%jU0D{~E2Tnz3HpGcL! zWs;r@fa$}JlzYqNUenVQ^~qmCa+itfni@h(6gnQOcNjgdT@j4mO1J*nBKr_xezx zxx+N-dSBMulFcE0&j@XHr?R7QZU498b@=g78T~1lB42ny5%z18$r!Gt(spNJ`)Xdn z#xZ039OQE-dStyXOR5jIARW!1hUPI7dGTlZiYqTb{FLmP+hL`A@d3t>N_0_@0Z1V6 zxGIFs2pn)=D^2pLDxb%@KNCYhGRCymMYA# zBuCeOS|%gwDWd%J4@j#I-0$|3k{J6vzaJlWwaRi`)(DQ;t`m&L>I1xrXeq@c6G3E>ls*ns)73aPf$|LJ#NA+r|TG`2W=nB zeCRt0aCB@$lUcoT!6E?* z=j%d=8#~a20b02mt6Y9AUs~OBCAB5IYm^ujRRGjY&nLHF|8WLT1FCuw-kTNXCJvA; zZ^(R0Vjz;dal8P;i76b*p1>%j<@B=L#I)Q0d=USBM>bVTQVxJsIiz#s0bDF@X54&-UjHUPEI1+XF#b3Ny+^8370pRn4P--o})baA$+nBKC2za9Y$PxbR^rCMC$J$l4ZRY_X zN;?8Di{)el+Rqw7s08f|c9Y%zKRW3*KUw?}v#wBjpFO*}Il$@r?)os3qrV;{-bKN+ z|7M`coi^>3Q9E8bjY?w$0>xnt2#UgulGR3MUFF*P%aF6u{0ZFwWZjb0MfsJpU193# z^=`Dc|5FG5?{`?Ff94h(RL7>b_A`dn$N_?Ch3-Usdn(6!Cm>x61RN+;jfJ?`s+0ulOEyVp*j!&O3MY zbiXPtiM>S)?&|=8#eK~MfJ&{)K|!4@t+u3f$$#5n-OuYXg0C2Cw?<4d3(ZDD@KkBD*;`U3#? zkqF&kD{tW~sqB4v=W1gV`kA#zKjPQ=$X7GVz^Tn2RLep$VLm)o6yf6UE*8RE0#iXW z)O4x*RTKy8*l&{lBM_jYf@xG;Q}Xs?qS{OlKvLxIPB*tzVB*=0$>?h4r{qSK2_6I< zB{q6hN8AmD!MZ+jeR|SIYDD}0Hn2olZ>`Gwbduu_T}1I-h5$R7Aw(z}))}*M8s)T+ z-|ckeDtfpxK>ydbGm*P3bAkp1Ue~#O3%V{T;_@=F*VUdu)3E-J4+gM0`edMnQr3&N zz&RYYJ#5%YYt$PKns#OO>~mHEWsiW~`V^Z*rNsS&exzR+^xpOKwK`Ac;qg=Fk#L;V zUlNkj|2ydadjtRbMR%B#g4!+MrZfzkO^pj5jDmKfP-{~$U4);#W>luMCSN6!4yA{v z00i^3kp%g)tVP9BQ23b$8$Peib>L+S%!dD@}?s!kfA+D{tB<@<)&g$^+xC^j!c~O@QINdF(B9AOJTOP<2OIwzLDGj}1O7 zUebCt{|~d@tS^#4>>Z%7uIjQbtr~bWR|{BtDXa>mbH0&&ORa}Gj0RaK&Sy$F2qt~l ztA}{!WP0M5lm=#3fWc&x(ZrUk0xguRbP&Kf^F%Y7eaM$u@C8gmx`3MP_;%HFBM{BF zY+De$CK=$3Kar=UeoyW)TaUlg=dvL04dhLwNHNW&dA@W_kXcYjxVG|T~9{m;6Rz@=1VSMB65 z0796%sY;ERmQ)C7d?@?UCiH*=8jvL5e0YR?@(03geR*aA_jBe0&pvD4o3=cna< zKDEF7y+j*|f<~>Us9$4Sd!x7t5hG!?A<=sX(J|cB?4vgsSJQ8e>_95K>T5x*l zuH*7kfGtB>&MRi3e&^nj7f-~Er1;KQkO8#62@#xTlGgPrzSm7ll~ffLW2_3aKU00> zTA6=QHTuppFMqTHAP!`mpm2C*ZyR7zx zjqZ?1l{qBh0g^tO;B^y!I$>k>z2;Bp3l1$=%?C|3cHNstFY+NLbZ24`J%Bp4J<%T^ z8IH;Sm=izNv(?#pzzLwkb^sAR^6418Rd3Eq(CDn%Edc-UBO74|GK&<>^ICsSue-GM zR00Xm$L**tVJqM7PZqf`}g zwaDiG)R*Z1AE6A0?m$WxW&0kP62Zr|0Jkx6hdA;n;6%65__KjY_#F}7qwith>QP-h zY{M`*#aGN*apx_Y;xJk~yOPc^N`0E$=la5R5Am47>6N0hN?BDhJ(OT7k?GR+zI$f$ z)cauE z%-+E$jop6^Z0ly*8y1t>nVJ=|cc$N0Q{v6=S5J%=INqM4Ah;0iZ8yWp;ClqpKBi#oKB{wfL^3+?rI{R@ri609m`6o@fr^7W^w z%%E&o!_L+fXN-`~0&zaa%{K0vH>l`ot2n}lIcA1FpIYb9yb5$*N}0Jo$hzY4KBM{- z@!)oY&WhjX8J6RlML;E&lznow^ldBHicoB zb=JG=3C(q&plFg4oG`*lxf;q9)2p^9Tlg&TsK4wv;GyLmo`c}Cecao@3A+)}h)R97 zkB^Sy*oO1E-Zd51>hxC-UC|4-Bk2_}VYBIm4m1bsaWiSHm2nx#3d)rl(EwpQu)(2{ z2p46=hlqmLmTFM>Pws7QmGF?Y-p0eTM=(pFcE*CYYMtR6DBWT2F~zI5^u#Nd5oXr_ zq!+Kg)g%_Y44l>K(2rvpgg#k=E>}-o1krtu<^q{toK))n63)L-&CjBr^ymmN08=Av zpMJq_0Y*GCm?dYQZ?XQNgwp{=a8oGYhjp~7BVoUPWwzHh7czpuFX3N1JT*?x^o0n8 z{(dp9>;asZr{q^DTW9TV2aES-TC-UH{5>3LbZ*^Q_p{{|0=?S`xT?_}(iLV>$F@LO z9YxXFC`0GHRNk-`XDK?)jVIvA)@V;Wv{r{jdJT`ODSdnLh^)i>hOFFEj@EE!T9ihf zl5#R6#AiW`^e-Cym&*5a;cu8|gt++;=kkhi)iq&G`V@&5^+5JA^(2i~Pj~|@J26lc zzk*o;5n_h114Meoo`Yw`TBpWOJOSli>EO4%@KzMD<`qpmDh%}Xx@*ID^Es?jN&k*o zRRunOa5c|lWj`5v2cy6DJOv_j)go=)%z9G*HLeI+_w(n8L$F4lX{@quKmY>Us z1WS7bs~!|v6Ih0A9mBH$Ex!&mu7X^va2oQX_zq2il!V@Lt7R!qOzVzT3Uo(1e^q)i zv40eW2rD@EIh)J3WF9*KP72Z9lKtoU%6!;O^Tas`5NpM6oF0qOmNlu3h<^O>^{#05 zM^%TN*pe5WL_3HCiC#`A^3Vt5K@}7_H2r@tBGY)nAhH3X2G+9crFKIuASt3tCZ{Vx z!+a(PXL;P{9>k^^E=$#!@{c7G2>)+GEk)~=9PARK`QzBw0~og2>;n<%g&0I2Ll&0! zmb9CG=XF}6@atUiuK9UBgMRao5j7GTLF{zHkzGRYcy4(o7Oh~f54PbZ@%kVuJw2w2 zII=4n7A4uX9Qa3ur}?of=?u{2RYd`;pMeAJ&U#eI(Z_CQ4@MtFxz^x|gf<@3kmF#L zPV&ALfU42LFi1G?UmMNgPViLv0v2pW@5-Otk`n$lx#GVSOn>}$fF6V2uY_)!sB_by z@tvm2tI@c!9<0@}4Jt?~!O+LU>+9NLYh?m{RYnZE01;=Yc4G#DbefXI@%G?6^I9Ru zN|2EV5nkX>N|hlrVPEh2j{n40J4M3yi01(b_B5G>19YJvIp=Y5%C|gQ6QIf)v4C=3 zYk@9#o13WBFS7l7kiGL_!_p-jYd3=j>^Cm6Dd{D{7U`a7SYR1 zav>mQ??yklfa^^+!j7hJeud^TS>$Cik|M% zA{q2*p6VdDYqi(3YWMjSzZE71ir=*3#Kx>LlAJ3-;N#YcZhsM+&Q2}BuF@3QLvWD5 z%rAK&Omf`js7$tYzA^+BI!{LA4(hCdHO`+_7g&XEXoCC>P%Gaszt^4O!h1tx6#En1 zqtagoXMrsBhv~g}-btMj$6`opMKsC2C6phTlHAmxj%&6Gj`I}(c*=LEoH8gTqInU{ z$*&h-@~XRBHvZ86ok^?sRr=YEDTa`b&%qQ{3cW@my4knxg}RVLP6^Ca_L*&GqmYj9VwA^4H2+|nmYdu zl^C$mdgr(JIi0OYT(AK$&0a7lx{4$yqBp8t{%e797(RXHVK7qL6DXICO7`4x(DXYT z#b7@zD=;CZDt@b5kBuH?4F|KoAdYq?{yPby(UyAj5FQul?AVKl`I5kO!$no-`1u$}ccPmUI%0;PI|xl%>=C;@zzz_F@}?L#)$8wPaYlh~jH z=QKLS$-=NN9&hX`zV65HkDex!Lvlsdf}ii?*zE@r?_tDau?*<+qS@uwZ3jRn2Ec=S zg6ytug}>AAzFFsxI{7f-#A1Kb6M61v^)dCAylDTE)v?$7{@H#lGdWLEv|QPtg> zq3KUx9vJu~`qnJc_OZ1}Dn=S}u+rw^T~RNUbn&Mk=w65Qa{$@tE3( za@!vn;ird`_t7}LpL>5)sIYtuy6fsQ3t>>tl(Nbm3^_3GV)`o_w?F%CSxBFFeo^2j z;TzWB9gOCz>cJ^m(@I*Q5qja!)T6Wg0M5-y7jw96j*n*BIW+nCnA2zWjKGo4YlA=T z>^}+1BQU55QgN^;imnF|qYMr0a0c8iLxumo=TrK51Ef2r&pt&)gh_yk+t=3-zJi5z zBCLK(tFH{UqLU+G;>}Nldok%B++e+@AHkzEOKCnb_)v@ijDP5RXM&ISMAFh6bTkRkjTjaGKmtro(l`G#NnqJQ0Xn&C%7DAT+f56x7V(_YYp zcmzyR)m(|*$wX$b&O`X%O;}k;GT$EysWqBWQsddHxkmfHHjlp~Y6?dRl3&6OHO?hi z6>_b;4<30Dw%XS;bz*Ri&`pq^P|{M03oXvi7Z1K$Grc%v=il1)$t*rzB*05}vKDJb zscZ5vO(GMWreiW;>Oer2`0jJ;bJ*kCCm8>Wx3`Xp@_WO*2?dcBBxGO^l#mioU}z;q zq`N~xQ0eZLX6SB^6zT3BLWdkuy1Q$r^YHzh-}}C6o%gKo`RlB`7XL7;VLfZ#&))mq z*Y&yNSr}Ck$xwVo)TqC&t=%o&xJRFwdWjDkXZ+TGhI>T*1Cxy>1s+z;WP`EPRd#j7^P}=Bo5 zPI7Q2f*qfn&RHHJS|_@x{gcz+KB&$W8*O)4&SK*e1|A_=>M%{%yBWibs0hv^wua=_ z6O=pPW&RjZ2|N@rnYdKtYTPXbJA>31l*`JD>~FNNPSA+I<+~*$VMoxaN`t1bx^AJo z49sc9qISz03CHe9rIusa9j_%^id?vOaiU-*;4?F$g$i6B>UY9;fysXt>je7KHH_ok zv!uCQ+;C96F&}9=(nV&a4$|6SriIq@PE5orXjWuVv|b=cctqe)#7*t{LvnQU3ZlBI zw?vMT;HiY;*NlU2dWv<@`PpFfYYMB)`+r3V7sYTK=o*drTHeD)AbPVI_YIhPkloF1 z8tI-#{BvEX{K57g*wnh_mRs(}E-CBBZjS6xfjL4QX?2#^j}w;j37IoL^68$HpOS)d z&LI;NR__I;RYg-q&ndL+{htxonG~orHM1AfEJq{~P$Hc3kD89e1*kUrW5PsDAa0Lu`~ArT4_~vq zZj?wW5}_`1EI6meoS#18re#Iny#5OHB`}fR?~R=DW5P{_hZ}L2xUO~Ucy*dcKiicc z8?nA^2^E5vWd={?=3|SIng@*fW{e|&70OX!uNnv9g0T=7C&^@LiF|HjAHwz~ALL5A z6uy~jVNN=eqI6zBZ|L$dVqJ)G47m_!JwH-9`kSlImrgpXS29n?Ms-f%aS_X8((}44 zg8T51$%UlZ!(tbtXNilexWgx6eJ-~Juh zX*uOB#F;-(m8uS7HVO=oluGrhi3*J8lVyZ1|K7048`^kh+G z;+Q7tp_jGB>pbqfFF^L9{Wvm_{H}HDSxp?1boe*d{fV;Kf>LAXrlH4B#BAGQ80=+3 z`XjB2$NneGOX*ImDrIio+Va1Rt zr?&424U%#oLZ@5+qWMypVxgNR6Azkp%s}Y9;G1+j9|sO`$(g;(`Aa=FTEd%)Ah*rtpwrc9o*RF zkIiXXpqK|VZj!{vR2lC(+WdKENCP>ICw$tn_h?qC^iav(+5|i8nub$LaQDr=(1$*F zps?^mU&hD3VVK>DX?@>F>+iB+S4hX7LZ1u^R|Z6~Z)mVWPf2*1el)CIyWIYsw3#v! zS{#xt<*q(*U+A#$iFqb^IiM)3?XTZ(Zim|NmeG4yBJMG=Yf?YFyy`!b?-6Q*Xj|}0 zm2b;JhI4IgM42~5NYHqk;uw*|fT>%=gbupw zS>$oGZG!=Ff&0rMbj)e>ZI|^nV!4CmE)w}v-ogXh*twYyDY>o02meg?#iduMMUN0@ zVU44p*k8A<>`{RMSEi!?l>ZSfwU)ElQiAiMdrB3X2VF)ZiI}}jE<69(_xU+6ge;WM zdCA`v`f?M^f_ZgrCU_pQu$vP7W!*%XvhdN{!R6K5jr|c0kbH-@e0v1Th0Y>oZq>uFFl#5G6-!?kM$@EOSWY zs(lZZ9US6Z=9B5e%{ZIX4R!6?Z}OEyJb(Gi4;n*{$+vXcUZcP;ReQ!zgIKSiL| zNW;AaAK)Ee|JE|?Hq(m9z-MM;7T#z?tJ0kev^8N-RqKzZZH~w-ycQ&c-{n<#%;SGC zEgw4`)I9?X|+G`VS!G+W2i! ze=MK%JVTFaXHhRH_CgI4Z}B#5@W+pRaJ^NA$WI<3|DU z%e@Kf`S1M(6VDvUhr~li-R6p#d~q>_CoZ#U)r>)v+6#GWr^ z>OjXWZhlB5C?05Y%Ru4^UNADLj^o}`qr$fxddlzEY>ww+{p~3hrQCz9tap9KT^CPs zCcxS!8TabG$QDogkL5W8>XDhgs}Fxj4pz{3x})0@^*Nz7^C#r^=^Pdwwh3gD zT-2b=3~AbvE>szDbrL+5@Rgg6|H|0^C@uV6U-ykMk|Ut(!Uni#S2azw3Fu9BGEvGq z9utGt3Q+fTiATC-l7Mdy0wd@@xbXT5I$z}(^V_p4ut&*?%PA73CJf=fR$LA9ym&7F zA+q^RtgsCC-o#^`{c)44&iKH^LnZ&{;*3oS#A6AH{enpOOzAw?$Sa7 zTbHQ_f%}!8BG2YWOZdR{sl&w%+%o?^DJoiV_~W6r7kY;L{mrFBb7tVGQ)JlZslG4%nlw*?}HEOwX>m7+_B!Wt{e@V zyHF^mNP1#j4i{I4)xR0If%)Y`>e86yRwYevo7oslgHK;HyZ97~`CZI5d97m8yuaPA zNsW~aU^zlkIO{?^l|JXI&$ll; z$yW7rdvs3MMDDhiCBzb>Nm=v}0fTtaTt^B)6#m5p$DFS~gPd)YVzH#KFbd~64NZ&H zGTBpaudy-c6*lk)ZXoQ4=C-<}#!bKR?;8_Gtjk z@a0@fVU>H`-hv4!p+a32s*$=NG?S_s zo2BnfD9Bp2Jo&D+Q@RGaOzYbUs&9u9qFeET65Opr*gAT-NEqlUtto8WpOQ$T@J>Yu ztW|7x{3aFwMZhmc&E=43eD^jN4k$?}Lh$(aq2}zzS83#DFX!AeM;s8iBSfFN>(<*= zs5I>wZf*=`d67?(m6o-_^sENhJruy>Kfp^t53HZiVje{5eofWH@wXt}V%otH4hWu8 zimkRU+iBF?Do)<`=j`yr2-gVDgE}buJEY<%Oa7nu1Hs>z9Y)z3a6o~&aiPI)|AgRI z7JBnE91$4?-%tP(T=|Xk*lPimMe?n4OoNU;poyPtWHfA>|5>=MIP1tUr@k)@TDVuV z!@By8<_8V|jFkljAs@be@-2>|9y2@}$D3ckUI1nF%i!O3iRhE;%oEb=3p6E`l8&hEihGmMWj+kF5Q_3rhOoBDyxN9c_l+iKvh&^cC#`_`IH+w6B8R4ev`Nr0p z0M8n!4>SR5K}ZmK_W8$szGt}Gmm`OE5jn{?8Bo=2dPyP0b2-li$pntAVetO#HdgbO zy=0$WHYXLMOf)75{&)~l+zrw@^bt}J7mqILa=*xQ`fs6Kc}LMj__yvBUH1~foRJak zdNo+OWbc5Q2?W`G5E@=HBk4aA)Z<-Mbh%ao9_8xYn?L_$0jzy`NDikb2qMb--iw_r z^pKNgYxc#&^TQrzG>cdCJ>TYx#QW-2o$#!!7rfh|1{mwdZ~d+U~l$NW0j5=JfGgaH{m#B8`jYkW@~ z<_vF!ZWk$920iw;2dAWIjHL(|!pyU|8PKifRYZ<%;ZE4^jh=xvp4t;2M*Rr*&3rJa z)5{9{Qjeimaw8nm8+o&NY*dJIKoHjGI@w91CenfKNAS5_g6o67Y#m=p5$2$#an}AF zz|Sc>CSJrNgtW%x@J4#9pa))~=Ny`+SkzFS$bh6zdf=I|&K9Q^ zmP{sY+(nYll}z%*y2k$WY zZSMh`R@2-{rvIEVR&a5lte}zf-sd;-wWBe@&>9_B+i-V0tu7T&R^iR;|S=WnE1 zvA6rvl=<>O{z#;JO+|Y5iD#JP!HRdkO)|BYj8p9@@qEKb=TZd+kPtp`SSH$Ln3J7< z3ZusB6|zfjS;d7qha*Qv`7)H=7y#m`i?rtx% zrFWWUm8&_ochVC=g7@Np`!l1HJ7)zlC_3EkyW4iQo}q353;Yws}spG)&LE1vght6_?Nk{Q{kawloiYK;hh}#K`WU&jBhE3zkmMF zFUI1^R>vU52F7d=u+t_@HVSe^yh!88#P4ho#!Xv2DaJn+>zC>!>;d)Acpoz8xUajw z%~kjK)+b4S zm;RVnt|?p}0B9A#Wc>*qk~5zMxyU#r7aw%mJQm{AJU3+)NX#Ue{#aKY7gxHi5naS$ z_rRFq?-=8QxMi+QU~A{5O>@Y`%5p|EX9%@^z|dv`JHP=;l9ZW+MLcZD8Gt+%N2R-5 z4nT2nV%`_0!$_vz5_Tve_F$2g=Fecc{;gp`<=)iRzPllIa0wo0R+ZgQX&jd#sOwqL!=T5+D6&7|WCBomo4C@>q*3ss< z#hl`Twl3W_PeKW>txrWDfi692rk=;D>LnlZ-QW5m`RqkDRZXm)ve~MTY<6d~wD5n? zw75L41JF+)rzPgnJaOly`sJ1mOD3ZND8FO%Rl(1zGt@|mKH&3zmPNHJsEwlKUL<+r zi1<+x=wUgphR1ccO{x$`HiD3Nq#o4B{s@rEO(t?c^0M+zUmBx$U7t->g;2zVtb_VL z>(sJ~rBmY!68zbq?XWbD+odaW63{t(t1_2XUoj60eB~CseZR@`=K1H46nx#`^Ikg_ zP3+k^mE6+^@2&!)14;Eq))!a4!7B>;Hy;}-WaWRZrq&kNwM)U>7|3jm11sos3Twu% zQdtCjcp&b4-$(=1@ZvuT@u^3%^|#$CfTuN|+ z%!f>^Nv(h5#zZD!4qoz^ zAUEejLkqF1{>vxRPd?425^`#WoW83T+VyVomvgta?ZTt=Y%E#o%oJA_psh>|4f&nP z5ouS#OnWoL&!Re>jB@_~v7xDx@xPfKUG0rOI-yJlLW)UXgm5S{hkLb3 z=~7JJ1ENPkw9@)hfPVxh-b5KH-qancIGB+2b%`q+HI@yKerY6Oq8J$hCQ451I^@~C3^**6_z5}VG;PhF)W++ z;*dh6m!IWM_)JwLaOn(x z0nVr1?M#xB`S?(#ZV!m~nGg{w1!$(CV_M1(T7$?X=`l2t{nr@Tp2G+7ms!dtuj&)R z1v!}-hyAiTpuN_0Kg|c19Z2Nj;8v?Pg8i5@sS+qO0Ewsn95B9lYzIN$oz2HXGoel~ z-plxxW8_w0*b54joO(e0txR~bei%o zF|@#pFw#^q&Y)@sR^18HF-4DXLB0)$ei;r~BaQgOC%ep0j(`S%8>1@u>G&1K_pu*T zjeU%$lzMcE-G!Eyd1Z(;ju-CpX_TSww>>6Upe92i!P96Lk$PWkvRLFs6y-NpRe(r$ z5-PTag@PkC1n5h)!~@}yF|tB#|NBbm#y&dRUAJAM^+VAnZ9C2_H(~MaCs}_o<(t<4 z*+aQv>`+23@8_0{>E6qRN{xNT;cUX@%g}|sKA@WF_(CCvF{SADSG0Cyv8ro|-~fgL zJO<_seXUHpo18=F7YBzMnc3jp@obS(!*=>UuM4f;(CWe3qIctBBy8Ff`0Vh@Y2Kbw2%jKz z^Kln3!dmC(O#N!qBP@tz!5$MR)q;7&j zUWMUUGJRW9*C5afs4>&T@b6Z1dFZ~r3*l|MBtVGQzVhk7ChseFsW5w<`7`;_tE_%( zFz)1JyVmbMd_7_d-BOTH0d-Opr4fY34KFeUl<^)<-GxUG`w<-zF*3um>x#`KyLNB?w=~tpE3qj_nVD7w`{-V zd^%J=-2#zVU;J_O5Z>v6$ha@y1wQg~GJl(d9`V84`$Wc(vh1}&P!-uiSUkPB3lnZm z;D$x)H)RN(5?2W6BJE$@lKy>@R~ZR^)I1n6dgIX;Nf0kniGU_U*G2YGTb3XUe%yw6 z_&5;L)PVb)Pbr?<0ZkjEw67(bvg54ZrXSg>eivFD-nwrGUPixEl?je(1 z!WvkvgzXU3L<|`U&rzRe z75!|T{Y|Gs%G;8pEHglksP1<7BF9Nbv$tLId#aL%go0g9HE4nF-RcXAktx0SbBHmX zFh*=U<*yCt>>2P$CN}cM&xxGqIhDN3&;cvOFprTP2A78{wUZ~uH;j4=FyL>nL?(5cO#X7=fX+IXK-aNW5Rq`r@#V^WBCQ7cah!yOY^mM1CUF5UpH8$Kc z)&3Ht{EMz9R+u8sH!;<&D}e4i@npkD_M_i$Zzki*qV+{2eT>G-aZY-QCHFKc%!Wb` zo^2R7bMR}?hC!r}wFFEhZ%(mBZ6t~j&$a{uLQYYp>PXNGgS*sslWC8EokrVAZErqy zQ4`~8Rm)YA%Oy&A*QgkK^yarXciSBWTmAicV?_M4X%Kzdulqq7HhE_|+Mwbav`rhy z{?`)YX-?uKOT8b_VQ7f?<3~^Ax1*@$#?$k*h3XOkOf~1?al`Kl8j8H+g`XDFmr4BCkUgXJlZfq+;4{?JYzprFbxW6y_Q599uxobC9t=Dc!_jo5Pfd3>9}RCme6q9 z;P?$Xfqkl^FMADz;{$|azJ(gUw0()}MAmB8Vf~-KU6sNWabLGdJtyS(daN<>yj#Nb zq$E(eN2eZhaD>@b!sM){q|*oNQ=A;Q-O);z=5sc&Ys-;Q@er<7v;rqH0jaxVg0xOL zYVVwka#h4{)TaYN)7Ld2qW>v^{!$hrl{z=6ef#fvs6gxk1$pY-ANGsL?WE+|?=Baz z+T8FV3_I3v5kGd+Q&GLG&i5sl?uI2DOFn)VkA8Wqf7M-gX>o%Oj5h=QY>t#SKbZ69 z3-EMj+|fpv<}Dz@?N9TCaIq`VYB6W}JD~y89fte@NYn-Cv~|LHr!`tigSd)(uQX|x z=y^j!PVyU9nmLv`BK7_u{eDF@>@}j*>cz>GXLrSC^N|HxQ|)l}*)mk8$Y{*YbEbEF zM#dGZx@`~6l`~K(yJ%fm@Ghq7-X~u)zpOYv1gfNpQoGy{aJ2Aq1-Gl2&KweBL5kY* zb3_u`^82&!D3$E(!$=uEv+BG-$0AkqFD4jJ{KXX)(O{HF94@YchUG0l_F5$qU&lQR zJv}m?uvt8oKRq&mk3Ib`%yewHAUl-BeZ@#yT=a5?|~FC;P|%3pT;@sapwoY=x<@O#+TgRh1~ zc3!y7cIBFZOTqD}t!N6TUd1+><27X?b?_qza*Pd;mBgkn?J%jVRJW_Qo2pzjc1Y@C$haSv`_Uhw|NkdzG{@P@GC2&7HS zJma8qI40~REW-^DG%wfS?@y`*rR}+Dxs)X&rtlNV5^gX_|G{Y*{9)gCAR4h2?K*C6 zVj1}7RU2Xg=CH$$!NzwtGxPpSvuxc&cHtbaZpxa=Ct*5Q9IP<{u{rK^YdlJ>oJ0Qx zl7mco3bABcRQM*?MUn+rLc)^w3;vF z4g^Bz1`4^(y&pxI z0_a2qqtrw`8zZynxC?m>N0#;wc`w&ZdK#<8N#n5@bFVVYJkoS~7*-}M*tTFw9MjT! zjyXB4lPQ8dY2h?oO2Wqasg6+>_0r?Jr!NdX zHJTf-y3$8k8L-@C&)F_=i)Q|H^L#Vj^{r!{aA?gWGHf`@kN<~X4Xwh%Hkz%Gwdb&I z)SpDD6`s(}CsZE(x+J%3FF6tMb69jAQii&tNb`R+Vzf@T`AMleQ~} z$>YmrwN#dw4WGiv;?hBLtQMcbKcj5T##{Fzp>rGN*N&ubn;$ygmNI-_>hM|ZMt5{1 zhn{*{(C|0?RitjADw}jESoyKm5PN@_bCijHtEX#cNmK84Q)gZ!XZ?G1A{iA0_9NCI zdP+e0za4l8bl9{Gg#TH{hF6QvFqz;RK0wd8D7q+0h7EMPLoH^x7MUEO4z)Tl`CCf` zYoOL{Zz}!eqAgD<9sat?XN;#d304}q7lRIDIa;~DJAD54<7F3mi(N;#Kp{O}JW=8I z*!xc+K?`BWPZWhDY|Ly`mKD;mSWTdBPhVEJo}Y41?NAWGuJ|^=6Rc5VqeOYWmDZX6 zG7PZpZ;hF`>-!Xieq}fE6+ueBl=~2}&Uw!E34cDAWtqs>3?v~>G0g=!b^kW1qcAg2 zWBDJ&Pv210@D-)hOWU6kZ0jjnwC=^_`0LXDUN5pM(Wynv#cjtiZGAqAulz zJN^GTCI2%q|NnoM_1FQzmHfZ{|JS}|HmZHQSpV1bMV@N)aH}dZAVmdTs$5b8AFI1*z|){O9J9T-8DKGSv`@h&TTCXCR#pNXdj&8D7D*$guRk#e7A6 zuKl%UX}|pySyUh2rQVvJqOJN1HS2-|9C2kux5Bo1J{9~wCj1>m7twk#D`8XTxK zs{G`c&wBpu>Sujui@Itn>a$x%boReY?)%Aa(08vB%K!VOTao(HYsE3`(&D0TR?l3L z4mYgG)$K$?a>dn6%Sw!y|Mh>;c>GVP)V{Y-!NzMrtRagm_H-JiZ>iB#nYY{i?FK;^65(_5T-3+_&DR&!&YmZIUu+E=e<#W>s||c3xqG0JgnYQ z`wkc))M^33!O!~)W+Z^TUA9d69J%E>(WqAqfCp43>JbiGBe(l^x2622W6D40Z-D+= z?%h@Eo!jZ%?fl)(wY9aPJK*;vfU`~BczG-4kmkG&>Hs9(Hlg4mw~7fKYe}YRBBu$Tc_L8bOTmne%q33AY&DbF@iU`x0>3KdUJwEhvI9D3!ifCcvB+KJ8oe_@-$Lw9zhWgQvl^rVDf$aKC03IP;be<$mkG}rBtD;Y_SBeYe<;Dp2h%<$sG{D zT-b8?=TmE-%}?#wqK32T(zKmMnKLgS;9d4j-tS~9fL-IlX4*^Tfyvl?AIGe@&eyy! z`5y~?Gb)jiCFZI*FG>wiU1s1Sx`sORP@0a}}RikpJI{sY$_0-$O3vsbM!=3v~Kniu>_G0kV1|ffH^0ft$H1hOJU-)$2 z^Jh-ca0rF3rUu6mTP4>TF{86U2x;;Ew9QM-1Bbvd1XjnJ?VGB6p#A8h2KJ4rx~?kV;mN|;1I)GKp&nWqTb;OzxjXlFVo!Ie|5sE09=*KcgP-8DDE!6t z!m{%@H|Q0CT;n~isQIei+Ab{~&y}*W0d8|0ozV0Hur>T5BMr`pZ2{TYvw!$|gr&Nd^4pO3vh{Ym)pcr&^}Wbhd4%rk_#uwXd4Op&iJ@eBB-63~@PVAu0_Bosb@9%GW-|duIAT-r40voY3={l|1Z{jF@%&08^)OLjo1Om3L-!C&MFeR zqyM-$rp)}!8y_e?B)TG|zMI|mbka-D+TC;M-NlBKh+=g1h%BH+QocDP`tI?h^K^U zT>0xc83I?z$|4vmQu3}!4)>%1)Ybf*9%q}A=9dh4lXLw+*YV1&4R%{#yEv6rv6*KN zeM=(3Kp}p!)~2xgJ?A49uDvLEzzzU75@6WAH>HOs9s0p|h0)U;1&ls4Z^~LdgW_>H z8xf)W!Pu|;JjlHrv-MvqQ8zp*N@r}k$EoNEFrI?6I9jid`1>UWt?7p4Ux4dRx3vkw z+5kbMhmr7mLKtNNHr~$tT0mEQIGwOZ-n8)WsiY^lw-u`}5#`te2-j@^RHz8{gH#XH zyIouf^Bj)>lS$ZS^NYSGJqCCecP=p=={a5*wmC^YB+NYr_KNpmR@Cd1k2~j?>PxI!{~s5&VAp+PHH(LyFh3)yd23C|0?p^e2V2knY#Zvc@`>E+{JvIxhYUKSJ zPiMW^HyYeth8VNC*J;?&sjY=6*W12N0+vl_i(0yT0>0oY@nqLI;q$O_Uf{9AH8-Sp z?4JP6A+Lf{O>)S~3$(ySTAuiYV&Rh^vA7=u8XGC5Pdp=VX%^Nbc^ed)gIENxsCzIx z>vB3n4G|q3rQ6NyJPFGh#cob2^6x8;e}&%2lky@wz(zQNv~=2N`?H>)={+?_LxqCx z=u@cG2Pl(x|ek9bOr!?+^& zw+goGGN`D@wGE{Hvo93{yz#0(Eo&-@EH6rb2`YcSL~eL_S-y2@XI5tG$3A6eDUKoP z?B^u5VVVI{mx7zINk77JlgXjD_r`e0$LHh$W*p!q&eZ!LM0Ne^r49OY`bn?5o1Xx1 zMDNtYOa)0OaGjEylU%@s_sYAkpGEI5gr6?ymy>vjQK~XwDzk;Qc(8SM63CA|;45oJ zx&^QvJNP%?dBI%TIDbdsSHVd#F1pIaPVPPO4!=3!W14nb3Ce^{Ba36Mz*ne4k%lY6 z8}A5<@aZomRiP)jRLcY8))^q>Hl3j&K=d>6iS6Ckid{W5Em}i~b~AJPijOxKu7#Ty-PrW>nr%LN~q- zA2A@u(w39ZG78pvmBU{gmX@0P$JCd4p8iB)3m^DA^a$iJvQ2Xn9~|OJEVvy5H{O~& z58EB60@x((%Ucp0uETZV!37K>mQM}}xXECX{H11Ii>p)*HyU#ZN^+uJg0^KaHoZ2W zHSL%?JPS@Fk#KU{1(DWa%|g!j7V=U2STOy@LF zCNWHH0VdhszV4k_m>aDZux57s%CtfuNc@2yo@31v!<^>H(gr z2~}YBI<~x1{(4yXODJ&T__=(;$=eO9>8bJDh)`_EYE1rq-LIp77L*|qZco_xgNS$Z zf+NFR8%%2rx@4OHdF2b+2w;1=hxl0>J20o%j4)gEgu`K2+dpd?O*lE}NB{mUD&jxJ z1dcR%Cl(2GZxw3rbruY%2uLUyzAj=PY1Er^$1`DP<9D9xnkha5VevUA_VVR2KsYq{ zZi-wNK!)4dm?qqpJrLjJO6e)F;h&F8r!hL2uso(&;xkOSR_fr-LyX4W1z^~_1Gjrc zj4y9ncIT*H$_6~d0iy3$)G zU<^U6MT!wn<~W%$TSSqB_jd(ucx}D~{b9w(QT;(Tv8qjpC1vTi@`7`?+VmH3!%(}Zghl@YWp0#v$GN&W8&3~jE?C!UM^ zd}GqRY|u}fdJda+dn;`)XM|lkw-u+<%vL+n>(v!eqTL7CI*IgHF2aWf4{ilwWC3_elC{z z<09yh;0C@^dgIi->@FQ1*Ri~8U``&=YFdIBE;@RhTRO|8W$!>~od2dBn~yij)R?xL z>S*=Eg-mNx**DcwOs^VzhQIu}!X}~dZ?5Ew@jSj_ORbAc#tC(8H*h#TeK$o#^PQ00 zO1l=j!?xjqv_o+9+@23O&5kZ^Q*7HhsgzC|SIwf<8Y3<_M^iG=RQ}v7GWwCb09-;O z_*`rer|M7IhwOXrdbOB8n*m?CjRN;12907bnK+C9r}pXLCqB?CJT43nO@wn7{Z_`a z7t9&MM8zOO=7K^uCl$YzGjs)uWimv=M`Hukuim0WZPP{kcK098`eUvK6bsfm-`9tq z)JrsCxQlMxJD}9Z9QYwM7mESk5lrw%u>d|SbXwP!>wKiVw}x=Hi<%Q2F%o_=Tr;=} zd|b)+37oEC{-p??(t=>_uMUfY@(SDSiCP-V)NTZaafk0>zqq($jr?8*|N02^(y*1& zlN`)sSg%4li1J*Jb3KXHZv!f1>cS+rVdKfyj*^#ziRG@MbDGZe7dpne$0FIA4t4 zk*CcqwIWMy&Et^;SCFOYH@+Bd>>BmsMFV}JgLB=zU`MFDasZm9!4tR*gq6UJ`foW& z%EAY%_i2&>qu4(ZRLS^#a7bL~R&qJ`yHAp>i*eM~wau|%=XZ&o2mB4GaQmVQNr9S0 z430DOWyS^EG(EWt&LM|)zsr@#Rc<99Wx(s08+aWDb3Ex;Vd>9A2h-&XOMaD6B5s;U zl+ZVPSHQgS?gn=4K12$y?YzI!kLVN})rgK^OqiD&P&l`o$6;&=+2ou1`KSDFfkV{w z&(s!nj#rp8kfQvdX;8Op_<{xM-|=m5q$T@yxhU<^W-F41A+3P z&|PXo0?qXTwmKmIr&vdhUXsD$vNhF5UOj3*t(wHmre|Lbl!j4x zJI3@lFK^bXU)jy)4l48dVq4nAq>P=>A#}*<>`?e7hU;Z+!M8XUf2ICwRCj9)uMXZC zbNK7XfAv?Hk***Loy=>)^pnB+BDTJn?);&^^k_$0f=oM&u@tJe8%z(X+lD|IXRxhq zzB93KzVH9Bq3^Y44X7!|nn{G*+tATJi%tUq!&B$>x2aRX_S|{L7KDUKtHe z`Cnei&e&!2t`2ScWl#w&Ed8FB<(YaRg&|2Ow^wtvb)5Ao_N8h3V%W>~3=hC)NV!kR zdGiQ6URHnJ-z@o*h!<+zoES>picsCG#y^q%t;s9Bd_NGnS@>S+f*%9XAKg%dXAKi` z_e}TiYqjzS-qPHfeS+G%LH63lt`4>?bmrm^hYnxJA)vnb8WU9$;Jv-V&BKhj4|E9B zsIA-39f;W{PW{5X02_MFv;#Jx7r+WuG~Ak>rzkX_U91p)h)x08O%Q+r>A*k z_FHF;_``LLG5^}q+74zv3;pJuy=>Uz(9&aEC24S%Y)qtMzM3nm6iH?A8-oltS2!yo zZqdP7tJC%dB&%;7uy1?Ob+E13D}9QC!VBfyu%f>4p%*%*AdBN209pxPJ4e1>Rpe08 z%)s{oLH05`Q*Xx|Izl_Y=XibChtI5>G47l8wv)FUe4matLJyR1@jRzwY2N#Gbz?Xn zm2vd;ej?j5*#@$G$J@HX;`1No$YSF*zG_U(>%jz9PVcDJ${M|+pm|LTRh3KE@g(dM zShUqT3H$attKTl-nS|3KYtGH;$xD0zONwLrSn9#|3ls(SVdu;6=$S*mUi{T6HXiYc zKW;w&e+YOV$tbA&kJtPVd3-4ZPJclNb@Lan(Jk>GI3)b!B*0d9MPb!Z<#E+?uIOAM zocRAWm5W8pl%woD0y@)!%&x6A=&(yG2m74oy7NV;o+h&W)78D!1E$_CbR9#_ZIsy# z;&Xf7FkAW;OhUa}+@`&RHBty%aHh3nD1r zS4XwMRYUFd%64M(q<+6cUBdd!VzfFcx-ok zd15oXHjfsAOtV4>ZRd~mnS0{`S7S`G(3uCUuyQ@^r<-pii9iWS*3Ui>h%{Rqo!ji{TyG3e^XN)Kk`Li;A}L3tkWp87J7x< z5<~v@g88G3_D^hNzzMN6gQ}}_f_#LA7c)m6$WTLzU!KY$xE+@c!^5+7Ejc(G?(K!A zw>`(~9_fNKihrD5AAkXSEucQ{=-k(s!PmW20D2P{JxI)yzYH78$_8@^29EzUwvSz> z1d6Qg5{tCXla<$OF>c}#RPE+(43<_`B0Lscrv~)Y1Pa?jjsOD(y2$lNbH*qX`y>ZX zCm5v}p%;(WUj_=B1CBIQ%ORYF+qS|;J~8WMKON_m5-O9iC=2fvi5bTIXS8-34)lHa zG>4ecoyUeI?#BrH{~Ey`kNwHnYWgc&m$tq{btxfmep}Atsm!B@PcbA*%%5tCt!sYg z)Zz+Rz-;>U9(w@EoO~zXX;r(Xb2Hyi2_HB-Vl2#9wzWa?2F`Mo%* z1Q*=gB()JBJi-0x?&*z3$=LIk%X;zKY>TGkICAu~Y8<)SuDf&@a|y`@uTVdk!xPA3 zFpr8N=&(nIpUVMLIQ?~mr`sF_VOmdO@fTbUTqoOfUn)SU%odm1&~?B^ZQ)>D|Hx!$ zGyIggMty*p$Sy2sd=g1t-A+xjyl9FHa4=XRoMoncobgbqZM)4X;^R6mJZb1|(WzHj zB0GxxVSQtk(na2>&QWy8-;)-KnAu2nveV!II5P-yIu^&1g6(M@vi|4?VFbt)0vlej z*tS@gi!Kwqqn>_wYgs?XQIlFHyu~lK+Kc0uxP~Tc5w4Th6O!kyJI~yaaFQiRH*eWk zHJl}!n*BfedJCwi`mb$R8UYzfKsuCAS|x{&kZz=VRJyxCN{JZ>>5!1_Zlp^(r8|a> zA%^-6_x-%j`+VQ~{y)}PXR%;T%-Q?w`t9r5f3KdWCIJwlvz>SYk1^)d@h?sZQm=iu zgsYBy`0$;bny{qp1X{i6NtoXfj%<^n2%Tt_=8h9j4ZL_Mp~by#)Y7D<}U8+^umX z5jmG>wOz=`GmejAok>;Ad67|~a77}cXN>$;4c+U73JO!xz!Z5~Ie#|zk;uR>vnIYf zNB>+k>y_VYXrzU3g=h(5W8>vdlTUk4TH7lBeop?t>3bZ$`_=eg5O-E_SM0(Ync%9O zT1xMLM)9- zj?0>J(k=Rxs{6#VgwA@pv_NU^HN$<{{{iZL)vu6>QgpU53E0r!9j2>&V6yx~t+3}+ z%*60?nnrQGuj73qx()c)iIhLYFF+RX~N-W{lJ3 zBnaZ9TM-Z#`IQX5_o!L&gw79j@=rJ0FEuf`h#`8Jl&&;yC-f$t z_{E*a8)1A*`2KJ4SNpQpA^Wne8}s)hb%E`var`t1Bkt*rG(kl80T7Ip83o?>+ z#KN};J>Z;0?(7qZt=crsUsf?qVrG{5@{=enSDD%g_=f!!ge~KC@#ETam)8kOa@Ewh zA|oMp&yi0OH_(bxJfQRDxru%nAKtKE>;jR+5I?{GyZuNYz`|)AwzSQVBCr>0Y{ozU zPe-nZ-9OOUBAfI^G6I(nC2k)cI8d93V;vG3b`0iBe|Jfl+%56v_3BT zDdC2jvZa;FM>=#|^EHT%?jB(+R#@>yxPU@~`*;5f% z>>di#_Nv;5VmtfQMdp!#CA_=D+cq=>&F66CgLFS9D9l}xzzl((3fy*Ej5Z$~2?10F zWQGsO)A2e0d5X_%>m?wu=tYZRN6sI$rcNH+^5xYaP`OY#{rsJ;OSQR)da|TbBEYne zjBwc7niVsRk5?ws{b}`zMX-F}lh$iIHIus;YJbymUp42W5Hey)V5Fcj zp?QOe%qWTP2~5FwN=p5= zyXCwP0&^je^B#{2{sIZ#m(56X1*4aW$zWDgjU5+iabE2=zq#eo+xp%=Cqi$ z>8nRA=@f(a@(C`cH@Vy+YW_zLYjB>S`1rr6?1d>}YBi`ep_zZ3hrm_#N^hX4z#O|0 zL-*(yBYtXS1&)SZR_H4LiTWFrOxg{_m!>9HNA4mze&TX{pWcg3N)!w+2?)mV55{#x z2}tg;PCZS2Der!(otVIZs0nYjvl2q$;}cr% zOyzgOzwGPdN^~3HJ5A(~^g|`BAE4uVmym`=cG%_A56m&b$RTkaB+1vmc0T(Dvape` z$x0?$gs4$fh+oW^M`ZjWzF}OgEU{m3Xj6HOQ;Kh?w@*KRZ~`>AflV3@mVQ#yAAVSSD8LmKFK(A}vrEu$fgo?t@-@wpY|>DQrA9sioc; zP!@bFyI1{qS^Qv|y~X3ueNy?Qt!L6QWxJ0k0v>F*%UQ|V(Lb)-q5zBdDb-e38Y#Qv zG{m{XYoljpAhDLlLpBH>pBv5~jd<=Hh!%>^vokmM6SswMG&rj(t04o0x%%SSnA;DB zBgYgJBWgE)Oe(=6`W$(%&Gfa32!!w+{yH}Qar)ZDHw>RRPvU@0VhZ@$l1x=eGk5Qc7F>}ct=bKtx60W`2D;*un1_;#=^-04Gjbh{HUr+BJX z@=z}QY9`mYp#UUdN4_9Ou@&R2`9OK`u~kDDsh>(Z*$2y7F4Be4jSbPcpF-W5vRsSg zrVK#aI&#eKk^vO4YfzdZ4~<)XEr20T#S&pAY^edSCXdw`=rjd{BFpRx?)`IN3k#aI zbJyC!!mv|TDW_?X^l`fs(gj>lE5s((dF8{^_rMY#pRW!=*^s;?c=|FUUGSBoIq0aQ zR5<{Qku&_DtUR!IFG)l}^${eDC~@NVM$GsO-TvIMN|JZcH}-qU5A~;=r``RQucQN? zoSi?*))3ur%aS^5+T&f5eNfG0`vS152U+B2n`}lD4-ad+tsDv0nbu& z*?Xm|)Im_Oa#^Rm0;EUy5gabPQSY4j^?qG_U1dtP=3#pKzT@)KYB$3C54lWx$)iX7 z?y{2aG!mZ`qS+J`H}GDmH9^$nD5@Q;E!MuyiV>~pylp1y1@$cc!JA5;`8x!%tasVw10Q^YyxeZU#@+7GON1{4;Tyzk_c1W1D!-)|F( zywAVmMxNQS8s6@GaQzen$q+I!g<6-!K!pQ(R%{8zxOoY$@az6ef!^PfZ#fTH6_vhB zJ+0d%f9D0?vqqx(1l}F|Y+(eZUpAfIASzmnl}14gIzi%o3azj?3gO;;kFa&1TL_ruH{M_o*WYKXAO^7LxU$@X7V` zOiO^`Ta4SCoEqTxW6+>-IFiyo)J9u(D6Eu~L4KkC6$|=UisWD9TPa<|K<8L>nLG|| zNvNH)4{`{@yp*aiEqr2+L9j%)gVvQ}^W)I~y8+3Vfbdi5mY4(C+-J zmsGG5e`&KlampUQZ8ZILp9dlhpqt@h%{3y_Yb&Fc>=5|~igQw#Aa?bz-dFfAlL8d> zah4n;!v?VNC^1;Mqk!J7sYL zEZ!QHjFh?H;JmWj1<-MHio;Bg&y`}Xz~G2?oAEKFIFZUM}{Ixa^LexzVQ>hJ`;KEZh^Y605K4=BAd zfBuTFUi1cdOL$50J5@Au#C$F^VwzvsKq*66NY~!JQe}IYxM+gcRJnEL;$Z~MZJWWi zJu_{qfNvnRsA7-(ccoe(Nz6W*YhSw`+c&&6`1D)a=)1izz3}pyl65@hQm?TB zruT|^oj0CpJu3ymQ0o%DMk$yGQovO^CmOCMAK*6UpTk%NuYZ>yrP`hP!L+gh@A+;5 zqKnC3To~^;$iOoEwP(xF|M>Hl3z`Jtj;A8(ly7zr8A$I3sM$s>>{pU{&sgxVWB)~k z>6-0a9rYO3jveeMXHc8GGcF9pF=kEu>&naFkS(B-5i~sRK_1_j)u3y3TQGZE&ImEL zr7@cI{i*%t`?C2qu9H(%@7QZ;LR78WEW4?pooYe+;)mH|!io0)W4*TW#2XKnwfA4& zE*~eOBr5fm(~`4L83l}?Cj_koeKPJ+0sJuarlPORv<4JJ<%5~ua5O3k#HW7@U6YTq z0S1CgaZ2LEUY+`fHL;ge+5RWlcr+;v$ko@c4y9>4J_@sb+T}Moob>Q+8RVZdwC3E! zS&G33tyB{ zjdxRJH~{EeO@7%+^QXU^+-7 zpYsfj3QeR|dbt5;B+CclOfpKL4!4_%t;pTzggZjPEvy~>+B6Vi#d%7gR+4Pxxy^3w zfxlGR$kkr9wt%j7_OJ|Ta>}C5x~$8QmC;{p=83Z>q_|%XAWijK!iNH`nj^W}_x?f~ zI!FBQyev56tsCfi4+OtaHfa0s$hBOC|-!X zx2Ji9jD)>DQ49b|#4V$O<`IuL8{!-=sE6uq9`Zvd$6BfoA()3y_X_{_s5DUj1!%-z z9)H}Ux;J7QtTG6^`Q1hlWCqTv`yZQk4G#O)8V($h6ClzZ+HeEpG9%Qpy0!Q5T(lJ7 z_9ix2H(q4VfwLKR1b2{B(d!}pEJO51w8Iuc_NY`DLHZ-24&qs6AAIW|LEwW33%z9- z1T)lZJXD%>phrwJEAD*Lobj%PMyhAbZW%-%=mHNNxLHz*ifLKXkW)&se&KdBx)*W3 zZJ1)dO+;-(%HgRbA<5$OP$|AIi*k^Be5tZSC{2}-?s6ZFkSDra=ix*N{D<|BN8@!`= zZyJzw91C6LF)4!stHCYhs|~n5Axb}*G7HOzzh?k^M_yniPvPqkbQ>kI*3k<;puIJ- z=UMyf+F#c*3lvM`SEfs9Kle!To;0PI%%+I=J**y|WAHw^xFqmT@g*K39%4=`4B^ta ziiwz`SB$wc6sYJse$lJ6d|CQ>80-Y*74qE!uU`R_Y6tu3_Tb7UyUL!=vIA`WtNe7% zWAnY(iigkAF`nt+yvN5M zS$U&+%s=vQzK}D-BcMtqN8=$)sDof1MaZ&YG6g=5;Y^t!7nXFl0fuF%h6YHtycNKc z^m3o1%jNOGef4QT7Jq-G=X_qpgpv;27S*vnxzqKyJ)86q7A7a1CpGLe`Wt39Ei{6} zKUuayb3=U}Q4aHA3pQ3#p$rhJ@2cJzp5t#i4*GqC}0BQNL4Ew~P& zGlJ&wDlL0@>fIQUw}-2g(t6R>q=BQg?N{#r$BvZN67n(MemCuJkMS@jAnp8QA!X=Z zH^%psKcm$(SifO`_3v4E8m}Nz)Uk#k6X}r&i@&s^OxGE#|D9X3(h#tIR>=AJ>U2h! zP~EL*jT%x4H;cHSvWX5eO|LRq?+uZz$i@aSsvE?qdAQS@KOUZz!ZcX=)&H3KQNHtv zQ#UpP{B0Zl(r)c^8>1;gq$!iqp63DlhbZK*5f@*daN)zHRe0Z*jtX;B{*~C}MEcwz z$2hqNn8Kw{`Q>rhCv$l!H&!v4ZA#twv;D3nh$;;Y${jU~q-6#l1*Yw6CXXXsu>Vuy zoSb<62-1OM(Zu2886#=?(O*lI=0({B7s3_T5mNfK-nrwZCp$dn%&BBZWn7{9!*06} z>TKWC%YthO^e+~PmLwrRB`aa%3TeMfdGJlAFL{2$a*mT&y!TNv7gxTR_LujS2UUfV z)<8ZY+o=zOUr|Z8PfIc$Qj_Dlutkerc)?e3otm=JCTbt|GKYFwE|Lx?>+SYN%v>Km zTO*)V$LgKyIUuFYsJ0<|&8CHWWaDvt=CK`5O}RR_!$&`8BjTSiFic%5(ZGCLjPZ@b zoqS7&g1C^d3MfN*{Buk9*-DOO-TlP zi&B2`EkZowb+46>2j21g-*gK0{d@Xz%Q7>Tt9TfLpSCQ?vi@^%UHsoOAH%AwpPF^S zN(0qtCvnj*q_I^eB-xB7Ae{i-^r;Fo>8E#!qoiDC|EQ~TKjR5V6Iq z;(I~cF({edvFy?=du-f%8ebnuPFF5hkrP)FX8ER{4K%zoQ?Sd@c1A5qcq zsE?A8e~`pdr=>zlC|WN+#w4c|bpqNuJKLYSucykKCn&i4X0qEWR7`R>zj27;-CA?m z5UA)4^=QZr#mp4F5@Q{y^<59>aTISOLmC#*WV`%?*|*R%nM4J>cI$g(2F*L&mjMwbF-?SaJ6Ak$!6 zHP6ylKxMdU!S%HDhuAvVmZRw-1WLs5Lnq)VDMg?1I&;s*H`Q+Ht=n<{(@q&>piNhp z^#`48LTBTdVUOW2FQFg08Bq2WKZ2Dse=~l(N@Wa`%wwpfx9J6q8uE*17ae51#uvRg zYM@To%UBvY{!)g2kjE5xDIfdH@sB&}LLj)3KY|!o@PR~-@e}pJ3>~E3UOnruN9CFl zRJj1!{zPUu(rigDdS64{@ZvaI#-k5EGy5iE8XZa<^m^^FvU~fNWmJYP9czs$a_8#@ z$mpr>2FuGZ7E$Zx{;pZV-*sGHmt9hSVam&XQd<*hfzaD8=KkJP(Zg>gEE?x zU!D^DDMd3QBCpA@nAAY20jj>JnUS(heL__E<1Fo~vh{n6pGPU+h;K78`BI7-w5$E7 zL{5+W@4^(jXF?Sz#r0aVOIx?4I13)gd^~h^UT-hVxF`Md0)9<8!diRllPE$1bs5P$ z)a1fye+-AT3Q2Wb5#Jc=<7{yp5u|p2`vM#SAx`b)E@O3yghE2|$M&2pmfoiq-Wo}Q z^=XVxIJU2{(w0`DM&!ZgLx8V~IEqCcgb`i>0t-0Jccdk)Td1MYR-ME)Qa z8F%bTSMcvwX?g1}J{jmJRq8~`YVY~G+O05>L>91{t1|{YTQyZ600JfnA#Hd8> z4g~hZ;M{Z>(qzi~`~liy36y;d2WN_1^EGW+B$zqI2{(*Ceu2M|0K#+P*4Ql1gUrJZ zlcgC1o*fx#yCB8lP~oS-GB{aE0+^%W72NQBs7T9Vb&Wf0KBU z>4pU3tJ3H}?W7}}myXN|J$6t+6QLxuih$R&Ep;8e<9H6rb7d|u=1h-r^}<5={g$h1 zzFe@=_9#wc?@*=nZ11SI&fh(K8`A5P=TM_17BK|i($Fpehq0`+c zt%Ef;enxs*7ol)v5Y^wGhy86MKd|^Os|z28n$8ij)`Nfg*nb(jAK6im!H9w5bz?D& zKXUnbYcDq9n~|maNgNG=;hFdt&t_iJZR{A!_`1*H8?ne{o~F(ObuLB>Q-2qC#DN}; zSnA&ejOF?7?5IAD#*E=2HS(XgDbK<+jIv6oK&a_zzgN@uUiCZF%WU*{l-vcKei3yI zs1uHBmo<2XYXM0aube_-ZI}w$vZ_dNF8|T=L_^D3FeS~Vq4RVI*<#fyIju^2rWx-m zYjlt-eOtlVYBpGza^elJLDOu-5)Wh@M_!RR;WGS?z;a1Y_DtJ~Ff*71cb03nK0AF{ zzwm|>Bx^J+0`mz>jiNYpLMoY*eS@H=gNk}-iISOH_Nd1<4O`SvDGiKQtE^br_9{lu zj%741Rvo%x_ldaoF*;0+Ecg09!S57A5FD-_NIYZ;HH#*v(zJ$q(UhIhL&sNkAQzH6 zM66JSP`Vp1vuPlUc4mMRig#vl;Z2mZpTVh^QGAW^WY)K>G%U|$0lhU1PQRsi%q?XW zEGS>CUqCAeB&AHu?z6j%(C)ubylvn4OxBxy+kX7x`fUuFfy;X>;eA3QR%rx5ia0Hc zZqea-ouVl4wGC`yQv?a0LQg*^;ha77x23SOw#$Ib9|4 zGsK5cxh6)zP#J2?i?21NUDS7KT2htKuwtX57e!9A4a`DhE{NGxF6FESl2%HY`elzloSl%$>9xkTWqNkMI*&OD3(^u6pZV% zu+r`P*}TF^%R~swM*z4uU-?9y9d%oT+TQi1;~KcA;y*E%(`Y)FZT-&ezCCA_?9M+Z zxOvjN{)$Q)N~IkJg_j^rxV)?d(t!mc(ZLSsa#4@a;&%RLv(!!T?7zGly1R+TOr=9y15TWO zVEjt&n4RB8aXn4s~{A~RGRu5t4 z<|kf#SIrwHgdtAQsw{k$V1++nIR8mc&4MGlS~>Ez2)-B)Dcy!cu}_FuUL!UAfa9bS)h#g&rS z9^+s+&1rHfeoo}yPFW&vrg|N4B3u2~gR4K0ipMznkpP5&8It<=7egix-Vd!Ode&FY zTF7pExK%q$PLrUNi?5MI8FFFzh&oF}6SO}!Vc0+LwzKE;%DM>VQP6pY0t&J7`aJWd zXU~tSbq8PMbbz?4W63kp>BBhQs2 zsX&EgCG?>XKM_&uC=eRW;@_8%z>4MmBL|Mc;_rL3NLVi$gvC!lSK`mWw?MFI-41|2 zeGOxO;dMSKX_cxTOj9nJYQ4JwVF%#O{+6hE8iSTA<7} zC6Z@o-Qtnw?h8&2*<#2jE+?%|1gS7#Anz>~yBD6Wwt{r25SLPx(>H4bhO%`R2c)q( z&wfwsS$?^Zw@Sk=V_2{&hGQUmAT-xt^tu8~itn7bhWMu4p|=htC>-@j%gp~Y&4Ek^ ztEr;ZW5{DC7VB&6e8&>+T#B;^wfod0FN2L%Z^o1PG|-*tu<>gKt05zJ0gH+I#B`df zK)qvPg(~t~`B?qzs8POIxOvmCeZwY#z1JIqTI0XD5QMNkhT{D?934E#=v79w4cJAP z!ah_hi#J}008{xiy$%EfBTYy)w4it2JMr8Nh^ZzurkNQET7*0fJhQ zWl~P9x7A0gG*>Th#-o2B+B~lSX!FWnd^yH}q z$;i04l*Bt6^qqVHan#!{*aR%Jr!4Ky>F`XE2Ww@vn&;IpAMfG%3w|BFhUuP;w6x~^ zThA**%@A|HUf2SMZ^KcEE9-SyO$;ZW6LzPs#41heA`M)<^VQ$7$UB+V?0o@glfzF| zf}-nJ%HFHnPi?2JF*&u=X(al&suY_Ke{5;}ZS8Ln^V_1w;VVX;l`6Fv&Vu?}ZPpQB z2XrxwxcH1*zGL4sh4pbS8!6mjei(OYwz8fk{{S_x46Z3}4e#)rf%q<%S+fa4n>i+i zyELZ0!M2CzG=@58G0Uihuo^Yn=6>(z()+aSiXk^Hmp)VGv-!jqvg;9J_2=+4%$syx z%jwYe&wU*JQ)pE3q1hyZ@^VZQakuLFaj9m&ft~;r*d{9&nc0#KWJC22bH{p2VUufo z6zEIxh186U8pB%?RDmk{A(iT4)?JUJAH~#`08P_qSs-Pqv`2)q=!$$_7M4rmHjD4J zzE~AL5xQW1T;?~WtU7z5jsyU5W{5d6J58ZG?US0@jTx%O!na~`{BM4RkCx^_ewAwn zY9n*qiyF0i1^HOqNA1_foC(*-pRN2-+2@mTcUrwI;i}R%)V$dK(7=ZH?oY`|R{l41 z8W)UhsMRX)a<{GAkPOC5m<~y@6`MJr=_eu?xH&&qXl(D$YA=Y-4X51bJpI-p3nmL@ zl~4caZGf%`9(t?j@C7ST(xY1bFJE=)rQ-f%=MS(sVqOk-6lHWH0hUHS^wDE8mkD)hMbrXBQqbo-PMuU5}3_tSx*C8&PT(x`z$B)x8lYW z@2b_ys4-}#>n2lmBxI>&+2zRLThr4f{9na6kQ|+J_GDP$A{m%-Px!7((f#|OjUjYA z3`@S&tgN!LDROJXHy^AsRJoXac%fe5bGtauJR~4O{~%uRpQ0#{!8U6_xf2(_T(Ir@ zv+|gE8X@~-u^`Js`^r0E*9?ks47>N8ziU)*@(-RAYArP?c^dxM`k};ugI#;Vf&ed! zaGb8!c|7~6xYNMB`^oy+fMV$c-{Mr0ftvf(F5Dv?v*FO{Rk)oNAgFVTWZE7(Jl}rB zYb6|-*22N2CK_cI>CR7$lIp|L|de79haB@F~R zjpt*31W-zY*WM}yofjJPx2equ4Arw55^F6@yPl>;=V z+<8@$v9Q@vMf9nem1#d4b&8lc8rWLSKJNHLMlm#|f9pDjJ(=HlYm_%4*`RH%sZ>}Z zslRX?7$IeF$ZWY(ZxM$3)U|2?u!SAF@iFmH)6= zS!45(_p-jfyCp2pGEH8HeJr=UQGFC6Qa36AqYb`XM7t)*lVbpvSRjfxSV- z$-6vP@)$LyWGKveX_6{wxlL;eN`~^pHVxeROeG!!pMhvanpW+HxSQfO+KOFS?Vweu=qbrW z)~oQjH^re)J3Ya*8i==$O_|TN>(az-?QC`tbCi}|h{fE5z>od?`P(0J714?ai`g9a z!s4v4zK541<>BSX12Uhi{Q|2p*i+xZ&Ab*@P|taJ&kb_^Bj0!EY^jZ(dVO`|r9oS( z6n8e~pGEU9TjU^3g$JK{eN62k^I1!ZHJX)ifKpS{Z(fZatH=rTdL$K{Jc&G;&-%W)>Z z3c1JgbfHl{mMA-8`jIj5F+tw_z4`i&_fwBg%3Oc@t}5~HH{#jwi6uuYWMJmyzUr7V z60%NKAKu+=B@|l;Xq)3L#^~7<*EvCW#){95IOapwce@34(fuX~0+K>OMCyMJZMKga zXaDT39(ya9ax>F{4nAb^Zui43ZS;k0d}Bxv;u>+-!{@STReOh&{5?l%TbQBwuSw2c zGVcPGYEx!Tp!COOE5UJCDUn z*3!0-7OrqXcY!2d5PPzdd4*Zh$q6rK&rZ%-_28U|=EY+x9lJ@iP%Pwgl;kLcUCUL@ z9l79z&S}|rtXteem|)L9{8hN7+ICTvivM?yy2V=&-r;tda24UL*EU7s)!`C0v>qlD zXp&88G8p+00Ni^=#KM%E!P{$OzB#7JOkikT2m=^(Uq02 zo9(DB-i>Fe#;tMFG6lfA9Ty8)YpQ*Gj$Yp9m&PMBD*o~FsRkat0JqJY%P8&arGN-b zFiiR30jx1`?I4%e%;#K~&u8WkBrbrt51D?9vWJ$a%2NMBDE8nV0!r z@vQ_ zZM9o&54s&BCW?AmxA@9znq!94N8w|^r{=c9R7MTjwb$`R%wJR%K3-m1*(y4n)Uz;^ zDWJ8FKLy!Zy9j$6L*$R+-rTO+@wkd!?^Vj}k4`^&VeqWRH?YmsL-C|hwyAUNVkAT2 zDI$chEpnLyL}9=((BMh&>-&2kV*MpZwDh-3>FD;Cy+Wgka)j*{FDkd{#Obb61hXUf zw{be2^NBzEmp46x?$JFC23HQ D{LiXkmtv4F8zkZtQ4s5#vjkmp^L~MZM%f^$KoA~=K5^kKBEH$gf{>TTHSK6kNF&x~ z9Me{1Z8kHF6H9aM=@d^gg%f=-4{bJAfjcvMNrY-0;;s?zgLTNXshh*z2NRSbq2;+Z z@(?**k(4yD?e4uE;A}0re&%u%-Z1+MEM1+tCU0wPwFalrr^5D|0;QdQeN6GK)4M?>D1m6+QF7D|7c+UQD1oa zQH;^p^XSs1y-4y;3uYW;W&c31pn-l>sm))K++rFVKJx5hADgQ(1H(iPe}u>2_+Pqy zub&2QK48oZR4A)+tX>}vh4`T3IW*-64`+F4-f8(%o2ez&XBcdT^Y>v1ZR8i9d4KyE zmK!BfGqd&iPrckavm)7=Fz9~2H0$zQq}2dyE0lJMjxQKL!4WfCyZ(MQO{>1OiJN0U z+z`9yV02x*F}BBw`jFkW;>90Juk>F-a}{YcZZgk8YAmL&x&kp2qgFpn95M~(cucB# ze13*X&t-^eFpX84%QRWBPXRxM!1lpIuj>bBoaTz1sZ{jp3{+>WsK$BYDuXvTartM4Vo>==GOz{r5G47UYh?SAl+GQ3WXBd?q%Fiv?{$KB@} zq^c864E=t!aYl@*j0cigp4ia(WAHbnwX2w^XL((ZQb zp0hlGGs3)WtaiN&_BZsKOJ5lb84O_{Xl;64Q`_0W^)TV`*YTgWwEOYx;QT>PwqEJa z4srkZW%tY(JkVkTcR;2Xr3|0Rdz`=WrR*r#jaUWcXRZDtLM2q65>R;$)MuvNrfA#h zLIDCZ2|Y?hr}1|E`_$(8?dNz<)}-DuzH*y^WAtQykT&sfN0pDsSDQB<*?KS&YOD=Q zPaPQO_d&b`@(CHx*Oj@}TiBt)RQJr>+CrhNwJ==+r_usgq|=NZ#`f$4p&! zgZBrP@+?yTbre-c3YTKyfOn1#vobkhZzWs&=AOlAZz2;X^aUqBL9e`F7XtHo`U8hh z)wFV5G*d>TpSrk#%@m3BTvLhFXqsV9&do&J%cbm3>i0P!mSl*haaPn5OyjZdtj)dP zs)iuVfgDg^3D28f8T@-zmg79oi+b6uX@ZbXhKjo{?I^c$`2Uguam*_5k(H9itxciN zUisS6Cdfm+3v?aGUiZ~L;_Utq7bn>g3nk7Zop^=KKnK`o}%|x(h zxAm$L&Wv$HWst>5Vl2~j6P3@f^6HcPT9G#k>+bK89{*cXIc4Np_oVeIY89^WyT9{% zIrxOL<#JUNJJEaOVAiTM)hImeBP(Z;N~BDrws5hEaQ0vK{^9XE#}dt7!P2dt=1V#fjC4L}eTu)c|e^*r(eAFsSa_xpnojC0>qJ_LW6luz zPZ0jEn^brXxJibzJ-h%_qGezFTt**_roLpK*r)Ot5=Uu53}f+K@J01wgMYJ&eUOeWaR%e zCIJ2?_x-29A^sB!&`e>vjqe2H&rk**!@Cxnz1*rHJ@`wpOaF=hSDfyArYyu5^NU%! zPfgl47(!=F2Ti^wS1wFKW zU~vSO_pNDhsET5ryJrV2GnSvb2BXGn1ePh{bXe3#`1H@~+n3y3s@cODjNS=B_4&jP ziT(fDrs4omR&S)viyJSZ*QKvDZQj`q#Ie5;`7C^R6XW}@Z9M}7sW`lMcYRoT0MMji zPmX8p(n6YpEx%1-Pm0`PmBNGpMlOW@*sWCz2V#Tf4lTMkf*y7cl zmKO!xmAZ?Q0C3I;F(%LX0YHfAB343aIsEV(lw_i<|9LR~LpA^Rt^SskS)Nc=F8+rO zG$+}%z_uAN1^@GUxCq0trQ_$rHQ?mCFErGt(Jk+=k$I-9n!AkQU#D(9i}qA#=(Fzz zopAo=CrF3xNib7pBH=?apqR}2fs)U*C_b6b&X6=`V2QB6%b(h@*AsU#R_BWgt0tqu zHSMZ%5S+d^h5vtQ*Z=4D7XiE(6r&UY4L1<4Ab9j@#MHEUUJlMlh->+5m$`>(qYOLD z5+=$>CCl`m?`!!vJzYi;ygy6VaI#3gY)T}KuwZLKU`j79N0%u7DiV9J!Ana%VTzY} z?f7f*zefK*?0p`~PnoJg)-g&$sZ#&c*>MPzkOfE)7O=9lSH=-#$ve!} zPGil9cGW6g0TIW4I2rKw9>VWp`;>%PFEp)oP^-^-vS#xKk1iOnCpDxQDmkx;MITS- zPCJOJmRNcHlYsuGGpP`}L~ZG&~o`LIAgu4-Fqg4yySHc2AoH(f9pt zMfg9oBc&5vKO0kG+_PC&-S1CsJX^F%F@;?AXM@(cxUiUiBpnuPY_rjk`(Ol2c z2wY&LPby`uQg8e@qWBe9fPPKux7<*Dt<8zr! zgg64PAocnG&n3i-El~*za^FvJiU+}cQyew^^GhX$Et!|5PWx3wn7NEm`TVf;zGTsJ zw|Gd`dcLmwG=b{BWmZ;$UQ)lAR6WR5&(0PQhy`+uV?Wnt&iwCBr~}mn-nSL1Qoy-# zH^crtVGRtJFEo+?-z{w|v8~^TQ=K^fp=FpqP;WC=W66ew8NqspL8i}z)1B^%v_M=R zwra&2`ChT~UjxoeBNRki@=q^3Kzm9dmAFF;j1_-hZ8cq@8ha7W*^&pP5>VU!TbVms zWij3!e+59S3tEuyLU_~ZP~i|jL>tV>iIJ_G;yP~BSV}^z`IRs&1-izsEScL&^HFb%V(S-m}z~^R2PV}jC@>N z08SK6>%tqvv=PFCKjat*6TQo;H^njmu{)BFBec&uhf;+K0q?`fGbML^^i)f~d}Jfr ze#!UR1_2CJ`|!|MUhT3w70kgYH~<{0y}#JpI9u^)Ks??>;au<{x%Kv3?`_B(g_m_k zmBLkU^2rzP!lkh5h%a|K;zq}N6XA?r zIhf4H=^fR2e|HTB`VUJ=iMP`I?%LzyQOB5-L~qaF{jW-?q&!w|&HCl*$%N^6n}AO~ zy)|J2eLZ`x5d@byGzeF1LBqn=z%F!K^w=^b$@@iueNfthv~0crxOEGI3*scEeNKUs z>a->TPmQ8&3wRjC`*eF5QuvStnt?Pi6{#Y_bvm!h5K3F^bQC9XztoUh<;Uvkz|7=8`HW|A5k{U)PUBuB<^Vx)rUcZVZwK{wFBCgwaGgz# zYW!)ovVOhAZ}B~nnWo&ss$*Qy>hN3Ko9SnDfY$BfcOmbPj;=8%!oX-U=WXHPFMsYf zT1$t7g)XHVysd<1OfMiBVv`%kl76d2N8ruSlg-246RqyMErK!dxn2psH45cfobi5) zz!NH7pPm@*oO_DNWdy>2_hJONa?Ud|jMt75cy#FdB#b~@7(_0$@b!Z?$=dR5&VlXM zh~ze-e{6%@X_o~xQK$8q2Q}EAlE42BnJ+`c=TbonIm*FI(eoy3W=k`IcKOJ{sM8_x zqrBwnEtLAEi_7I#o>GZ^17ELoy-|-u!w=^Pb8T6* z-zU7w5@CzBJE-Y&rc3)SrO+5njCesNVa&4kePKBH_4$(V5p> zZyI5QcC(u`sEy}aG9vtQAY>6a%05$6IQkPohvY&FsZ&^I6#Rpi-Dk{x^&4lYMXy%c z%M}OHi-U2!KSBWKHR79pzhhC1W4f|__w3->W~fCk z22q4(ys+>M*Y9l;m0PZpmm~!0kTMR9dZG2`xBd+Pa z50N0$kPlVqkt>hO(02Y^N)l6g<3!?|zoAhP={iDmb98Mf%5H{=j2?}I%kycGOKv^b z71B0({H2r3`BX8F#%G?Zd0$Je*SM247x+S#@}6g64<^8%Jk!g)DtYSd`~R};Trfe% z?=CjCKK-bstK|Yc|8mV9bpMxM4!d?hjyBxHHUApUEiQuydyzltyz9>>SA2y(g9IIG zxH*+g8%pI;%m{a$(!6(k8?oWK*)6-<`TxD5hg8JF>j~{- z-b_V#s$U1J@JxU5&W}ORHs4oHB4ZwiY}$=|7A~KX!%a?gCa2@&cr#HC($TkRk8Vb^ z+ssyI1ot?7q*=GQ{1|Ru+x;dg)xD0S1Ai{=nb1g8q+HfCswt9l$39X^u|)zm_}Fn*2pmo}^CLE3xP8 zP(QTZuxip2~W=gbcw=sAvH4x=Be*xy@0ophuF}qYPmCO7g{owYeG;S_zDCgi|hjbJmmwCa;P8}4V%sbsp{t)cwcx1rOIVn8uLCn(y+U%scUKlSI(AI46cs#)cVi9Wsc-n zRh#ek&6^q_;Q>ecpBu?hYraBRX|$&MFXYl^?9o+Xz)h^5{vFN5%M2}jnpz#jb|gy_ z9s53mS<-Rb9F4V33eOkVT2Pn1ar#L_^MpW#_~oc-mRDsIs+c$Jd1dG(Q<&X}NNsLe z5gY5;S}+dQy!XS0Qkrla0qaU$KYEPM-Nkcr^g#HHq5Im7#2uVl!UJ2bg_dRxx7mPb zIixU%mGjKQ+qb_csi>r$F^q{5?ELsb-Kqhem#c*#-@D)0XEGh+}A{Org;&|yq0^)Mj7=K=`6 zp0~si$>LkmwY}p$6L#5)*e$EME#0S>TcQleJ|N+*RzgeF24e@$aNGf)7r-hy^mvYm z{Xf6_@Qwj}2f=VlCbyRV_X`}E-y)r7%Z%1e0BapYA^<4{6vvSaEVk~WN8bR%n6tzG z+Nl5T2a4j>TU+!!xsk|fUh`mUt;0?O+OhS)hut~sR-MB9!gYl$_1L0a2XLr~GVn`= z1xc@cfXn^&xJdC214tCgB@abP5=GrTB@d|VwvOkVWkSMN6WvExjVKZ&{QA~1M+&Kk zy5OGunOfeV^};_psxxvazYg4ZLD07I1XStK4$g_i+maCi>!aSks7NeV?JJJC(JwP* z_ijk|Wrb9@k1b=WTI`Sue!-)H{g05X`}YU{ zfke={IpbTCcmK>5AHJPt&Nq3FtUh*Jh#@)6V%?mZ)bDcni#eXuoJR<)opc{YVfJSb z@vX0@`Y9&xpsrkEb@UeTJ4{i}*uAr^o6)rR;^^?YT}D@=gW#r(c*s;~nYiPv_ z*ls<0Ef(wzdq>Fg}8-JQH;%|SbdYANmiE`g+aK9X`Os^U7VqvEzh z9)1jw1dfLx#p7UG;>T-D9~FQvK#F)`$gTDgG6N5<0_vedm%c$qr;A@|a*8suZFlxt z0mSBk+6;4oK_58;1%&_UJ0!dJ6BR)yXaU}$J}>pl&)(=S7yTIxoDcygfc%z=)CQ~j zmB_GR@z@8pJkm31`lGN}TewPc=S58Fzd`Sy+WRRd;p~uuXBs_E1s1yU#NF4Zw`kjNK%;ha- zGSAqU{_M@)b@A-J3ANzCbdB(@o|{calG#He$`5{z-L@+giKJ4bo@`yjE)2vU1J81| za-5@T3u-<2yh#gMSP~K*48b(w1Nv2eMXsM=hV9$d>nBv9NNNzG=nZWNLDc&C?O4L) zu(hj=fABwIk`KZ;24Rb<;&Cj!WR{{(&w8X%6?3Bcf?Q>sVDbx|sVQ8eYaL`h5-<@! z@D2DcjKB#Bomg55X%5@COh)f9CO=g#ijYV(0 z$B~SCFQqpJGZ)e<a~g@sj7gNSop?gcOK!8tR$NUddrqC^bEj-r zI5a91H8i9s-ve$PemMvJXGLgs%A!H7-^ufZxu~Q;`r0m;>)kK*qb z_PQMGG@(mv8dl4RWhi19R*!k&{^4WF!hBIZ$w^F^Xpi4VF_7veX7Y;Ure~6@L!hZz z5^av%#DwW_jA=Y;XEMtc5l{Uw-lexhkz&duTpv$Kdz`|bEi+o} zb8Xw_B0)g|ULh^GKnNpn;pk<(Y0xG?voKTU)gDwFE33Ezt{`%UCcLjIrTJ#Re`uW| z4huD=E+>JRY_RnFO`+#h{B+N5j(dou;&0Jy8cNmHkIt`4SSc08X7p6RKk*Qv8slai z8N!tg)A#eGiGEd>5*m%2`E-dE65^IsLQ9xiTe4e-xNCpjQ~KWElI_(o*l(R+6%A9=;-X+b(O+zrW5U4oz$#kw6pm z;r{Aluf)?PE2RHA3?M?{L`f8xb>Y2*JIaKQi|mg}JQs_U>74Kk9DQEgSQN@JVi|v0 zzIZ+!Uiy*quAmxK^}yS4v!c#?D{>OwS|ZANH>l4#DJZuhd|$N(MVd$nVT3_|-TAK5 znU@iY%-pKArrWZK;v1fK?_I7H+6oZ2>?Zs~wxB3@1@CqstlI!#wsiPU-)RxEFu(10 zi>+x0Q6*8?(P?E?=f`d^gR<_qqqL=`iKVP*2N*l0_O&Lv0Su^jSisq?k&pvWpb3`P`Lz=G`w2;@zop(7$3Z}R_j!R#okGC}K!oT=Q_z3fxzgOYzIr6}s zh)qix3BcYsoG}|oPNNqHy}Ch{-(N|05#EXvw|&|vB!tq-BX#*~f5?QQZsZ-U5Jb*5 zB-J&Q{~hDd=2RTawsIA2*2MPM{b|#XprIId$>Ut*5X=JbX)~STKjRCevPXRjw=D|C z<+D28vTU70W^!+rowH3Rr+vtzD^&Cavz?QD-asv;D)zR>A0U7waUD}~>o#T>U!gd! z;bj@_6~PEVTfSXn0+Ds^14Vz>CpRRdUn?|XJoOW|bF|L=-szGXX;GMvjM)xs z*v29h3TlX#k;gz5FzgxpE>@t3iWULxyJh%{;D?Oa-#!NRJ2Ja!7mVo+LGsGd^El=4 z?xU<^?(?z!%HEg$cZ4B5N~52){DdhDnYGb-+xi7NKE1D*yN^3ZS-*$a<7zQwMQZX% zD<&X*hAhSgTXM)H>F|2W zFG$Zl7Q^55_YNfLNDivuzEuw`8A#F2Fhk;4O;B2D&_qak*iu@~1XObt70bP_Q_^L9 z;bm|~tUN2^69sHTS0?3lJ}AG{cp+ndq2#$+Curs+>3{}q#lvTq1`Ax>iZ^_5p9_KL}OtRq>g|?{G~5R_9hnQ1BBk?cMN=l^H*dv(vCODWPp7 zv8rFJ8k}LK*70!i8$)`u5gm~Vg8n?&#YLd5d+z@S)8C(9wG2MXw7;&JSkF*e;gMH% zPV#slwi`iYB8}M}`B|&A*oMWwW(9phMAb*BL3_PM!SCWOWaNYOzK#Ay*N}-EP-Uu5 zPkGqJO1I;lx(T5OD#C4ikquY3tP$R}EAYkjsk`g|&TDPrF!sjWK#2(aE_V_$-jPEExtY^i{g8fGNOTC86 z@AtkXMZc9~ca)#Y@cdbRzbluA|3y^9@RQm?i=7zUAlAiPU=?5a6;IVk&c{)$H|w`k zaU@8l#Ia5=nf3A(NytPfeA0nn3%+0CNmtg&lkOBhl0fz3{^(z#&_c~xR5^y+pf?QO zUYZE17CuLYcm zZ#@_Qfk;p@00hdVxGA5n2}T8F>{1sx7zP+gaYH&-g>{S&HD(OAN`$;kFCB(P*aV^R zch)kU$>=pDTWUCPu-BcDk2mQL=@Cp^ae|~4j^StbFzC+H?-w8Dpqr@Vi3Zo7l)16STc=txCf)NO^ zGu|CUErYM{2QJF;62woO08-&kNJtS7GCTmg$vnQua*ebJBxB8V!5}8}$ZD2nGih#ZGjTCz_A0X>x1p{T$8$s5(k}n|+u@gz z3u+&~ou-tTXaZ^*Yiu~}mj7CAD?8k9ipL%o+IqgXcgpD+sS;a=c=^TI$kmRaCm zBeMTo&#dBj^8GVs#;-*Rn+Who87mG1^LEDjT#zE*8Usu*)2yCSoC1^I|c! z51eK?n^)fa_FuE-D7v8~1X=1E==0e9%Ma;}CO-K6(>;_K&)N*%m+m#HbwQg42S9)X zbOn_s(#5x<{jSp?OXI#=oe@{FYoblx5AK%IAVzTO==WYR&YwI(=*f+bUnE-9iYT63 zfJaW4B4peS%Jx0#!Dl>oG$GLW#q<0R+_$I6yPpptfF`U@kUIt$pL6$1>J@$!A8B;6 z-V8!5DyQ;vI&a3aG{g5%`7^2DN;*zEzF%xF$3K4kbVT}G!-pXqbz1aL=6ksN$=e((hRyET#3WkW|hUU50#%^03r8!f2q<-iy7 zPX_D!%3a_+4-)kO6HyirN<>|ronOhSu7~ZKi=g#2?re%5TBqfm(q>tWXNjtYQMXaP7oEWp4Gpp)57|?{yZP&Inwx&T!Futzy zYB=mygJYMkfJ(o+uDSb;+yF8&Be+-&L^sa3bSEiNz82%fo;$00}3MDU))> zsgk>bBwTtjw5Je;QPs>wFHZ&_ivkOnJ=KMU-v+!LkE4_~X7J%01n2NMX3YKxe2#`* z(Xs3I@=fQOuzrKGMZ~6K!vzy{ZSuqUzt$a4&s<4RPo@S}-MPt*+(md-l58&USA=BW z8|?{hKcS=2#0<0`6Z+e`%D?h(R82+@VU?HKI5d;69&yP2>Qr=e)8E~6Ggxm@1urWd z44S>_1c`7zH%`k;o+bMBzsn%V?d7g(n((yn#S(nralWPwg~Me~*NNwlXt+17dHm#+ zhaZZNsOcYbK~~_dYjU6CjsjuT>jQIIFfKyWrV;8Wdx9m`ANE@{lL`_;xUN4OtYGm* zG-dwuTy@?TR9;Df^8r!^Qq@|lh)|<-Ulk}CWaNK5^ivlORWIew&GyIczg3FJKjyqE zwk`q;NSDR*WV%W7;svkbky+oGpbw=*o^%o~t!@l*4qWM$48g*Yg22wksHR^Y2H#3D z4?tK%RoPcv@Pho|&mZQHsIsy?lvIX~y1M$x3WC)ok2*=wc134qyo&}0gF-_?Z=j~9 zwXosE)z7JUv9pD?XsCh{;=A3Phva(?s=;+F`@J#~NnNYW)gR?#I^Yaa&GngC6DunS z5ohoN|1QIupBN82M>IdL92O7zQAi!-E4ga4QaX{=)6(f1bMLaG31TR4>jz~t3^IttJ+ncCSd7%zWV1M;3PHw-79J@|WF4@GQQ^<-ejK3dX4BrP-e;if3s!IQzJJ`0uAY zCD5KIaoGE0Hnpv-4Hnt@p#0ehAk?ccnBFlEDSk0Dv9qA&%uMyAUss*T%KhN1mKx!? z!k!FA7Uah@I=Iq@#*WSW+2UTDnO$pHdB0tu1FMwQ?r zi&6M_$t-1pkCl`zp~S!<2Fq9#(Kf%bt|AT@8D8)OgS+Og3OZzR)YuRJB#`ix9LRlL z6(=XB+1BTLvxBw}WgKIIwyCizsViANEf&Q3b=oe?z{c$dRGm`sf*q{Qhx%SItI>ySv$v2B> z;Udw;&|)l9xErIc$__98uq7P9KpG_A0i5ZsK{U)GX>wvr4w4xQ z1h3D}Fy|Enx(eTe;IK{H{3N8}!5dUDAPPA0cwqZ}qzp4*8cJ@${!CLvYp(n_gKa{M zx-6PhJ4@GLVb<2x>p?tY*x`J&HnJ|Zef`W&v(k0v%6WvxQNFzIvGuM85JV3S?IM@m(yzB%X!QuVQA_qRnl`BJG}!J^fltPf4zu!1+#xf;)7cV;>4E*lZE>t?_n1`5S4qVxr z{laWOTPgw8gn+v0%z!87Vj{w0IzPn0eoSXXtUby-IB36%sH}5~$m8}~0n2z9&k9aK zTOizvL*(U@3zpIM9{T1Rp+Z;F3gIU}VhOCFantVqRtLf`gOx4*Dn-hiO4GcIkh6xo z3hQgS+XM&Q+qiD%k^^rgOj(&@#O21zKK(STn7+z?iy!+HZ$%%RGg69EZ4`ewA#Yg< zRmYGQarb1Oyr4z~&m`LVblzV69Dlo@Psm14>5wPyy9(;)WpUZfUlWcq#@$xfP^B8p zY4mjIp2mR=B>DNhW$1SrY8zCtYji~|_amSP!jn4n6)5jy3x0m^kl&-FPk@jiQix7qQ;OF2N=Jk`%KYhr~um;Z60n?!hZjI4 z212NrDm`xq4F#tTjR=@AlfJnpYYlj<$E&R`M`Urzk@M@WeT+|Ec}^V?qC1#5&48z- zN*f*kI*p)g#mD8_@$o-*-@&>ErhCQ?mkRiIfM+}}bw-5-3rIKMRX;~Wx_afT001ut`V)lKLhmqmUBVrbOQcF1_W zkx6(Q>oh~K_j%o;c6iLtDq_rb2oP-lAQSYZ0uo{`L4Ys#7E*ce0YIR;!MN_1kr)k| zPm8DKO7s9_;oW*$M6jEQp>JqzO+BA$=hFiJ&owLITf<}mxpe< z@T*^=E3#o_E2WumWiE4pHAW%d=qKHSiHj`f{u>n~b4WH6$Ka{hz_K;#nbjA}j$sy; zX`Y)vB+cDJJq-ksi+)+&Xg6O}P{JEWmea5a{8p~AYIEpt)hnNYDeH{{*vo)m30ZF| zM%L5v#n+&Y3G^$}nv){WbDlE|75k*p@^GRKA6D{&oP%3%w%rH*#K`xeDLXI%cKbIo za_wRAXd>F*xsY%*gIm8QmluF_eYrkS+pn<^hYb{Wh!(Ry10*Jc*=$yIthH8Di{7=9 zbS>BB^cnK0a^L<9jKqPnTYk^LJ>Y zXT4?BUq{nNwQ<;IO?ubd9+raE$33qcqenmhWDd4(Zfaz7^bq9wa&UJk({cuA3rn~e zB;2ud`o`VH_UGIkCQ0M&3Zy5_9iej4wUHz}WJ*7D8aW8OzT?a0dXtFeVN z&C^p%+^jwBL0oNz_)&<=yn0woSr*Coc56gQxF1BsSwx3_x3`RDMf|Zp81y*zZj6A` zY385=0l}%qb*wYVFE&XkUZDw38{!mJY@N)xO^qv5k9AxB1JPrf{d+jW52MK(m%MdMUmD zu_3cJ7pR=EUovw8$bjww?G_Ehrp_4v($-$A-$5=3!Fo;9e;ZI4NO`N}WCV{lg~!sE zS1e_idhXeYP(vQdO^&d`l3%lnaq)}^>z)d#MS)0Che0wJsV6r8jY zLtguG&jij%%Rt)n;P9Ijg2sWu)iEUx85epN{%) z{+eGMYBfsadlC2pCfn?owAG1xWP38AscWk|&zfQi-dbJsP{fO~TEb`zIN3VQ^>Lo= zpk}5lh2$IF78bOIOH=ckJ(yrAw%N0b6{5t@sA!~IP{reGP)u*i???d;xmDc~3yTGe zd`HQM^ZlXbnxV#x*)(_Kh_wLHNY#VE0vnb}rR?f}YXxY;d?0nVa9iABwfS~b_e~>i zn~#FeTT&$Qep(~&mS}LKY@yXUv9(D{tR`aS64)NY*SPDL6@&L zKom0!3%fg9G;WyCI_&#F{=5YFuRvixIU*x9gVhS7p6VkBD?}^NIhkdU z)&Tw`+a3w}U07N|FE34bQ#3coUfbvAkCyol{wMH%?X~&&a<-dOK;!f%Su6rch}Og3 zPloIK@<6`>+oVM{AMMD0#Q@-|H^Z5WyOI45jRHQDIKF6gQ7dN7Iy33T+K* zYa{ZfoFUv~kxTGVGisPj!fs&7;ZhtS=k#5{SC}NxIYq-%k?;;Ud|VxV=u$`h zJj3a{Ejm1RMlXLqRo0dOUmdjVMrmo|ydWAQeuZ1TJkxg%Oh0xHJ|)Mh1LO~|FI-6R z+KJ@%RKspTWM)W^PU(YhZunYk_l$hcqeD@ZWy&m);f2kXg;e<3 zD1tG%=!xsubCOg0zLrM`I{@TsJAl?qB#7dsTk2>E5B}h*W`gpdDf6K8L_zmnJycq#GQBH~hG_k#-tirxBPhU*BC&LsDPLrv_itZ{FvZ!KO!AE+Bsl4_qiQo!XAF|$uX*j zo2Hk#xfsoLPiK(YjWT06m^i!7fgofeqI~kNci;%e7n&74{)_a5j=n}#DjZH`p*KUA z%4cF{sfZ$ly#S3e>QS3E=_1;l>+Dm1x4nOn*Rp(9MzP`k{(+2-V0|5Ep zBFGyMk{6V`!iSO(=%|tH4yC_0Z+e}sZ1eGd*v5ZF0{9@Yf0t7(tlz4cD}zw*FTAk5 zpfVwO$-ff7!HNsl%T8!RcWyN-{k?S5J0wI(o9W7Py{kp}(K5Qaozu$%xZdq|PXWO@ zP9u2aFuSUG@31i2jE8ob<8=O>ZqHd}=kE>0S*it!Q&XOoLA>fhES%Ivmsi}D$cL>PVQC0@{T!uaJzXa?#4GziWl+%w5D2DaChc+Y&n~9(IL+9wno=iD4=OOCj$=g)91OxVJjSmo@|7hn&_qpv4;C9}@Kt3BeSWpAum@phNz|84;7!?R7a2~RQTf&$P*8>p+qfAD~>#yozCNyDiMXs_Q6OT%r>s&*4gQDWzNM|uiN zo9D@C4dS#hzgQG5F)?x4gxxL<*PLCQphW@3wW{v%jEOy_v_UA;DHt-_o#whm#%<~R z)}0%%{{Y>Kx#R6pKNIku`;Bf((Fm^vjI6hCAnm@j%<#2g1;*&$;QeMM$v3t^+~bJk zNGu1P+6SQl5Z3EM?0cBf@9hGxrAQ>B?Cv)pJp2!v_)O_-P3w<^S06NF$+`~(Qtg$w z$DDoMNEq4D6YKo&^sEw%eUsk}z+iA#T7C9ycuDw3Lr^Ko>5Zucxqg)Bo45B(D2Pw7i{-otEBZ?i%vW(kB7;uE~@lr z+^}X8Wv*FI$a_F9c)qG{h%=&(qZ|DR7-F@McFD#qF8;q3y%`b5y4Vk!n=XF`tErTF z9m3^l!O}#pQ0w2MpT%v(7|h<=#jju z81e!2o5t_PJ>ReZ8HGS;V97Z^MaZHKRaW17Er8Wh)Jy{ke0su3Nt~?Pq$4U zSlF*Osapl08y>HEmL7c$5*IXvOI!p1jx9gHg##PGlL(sjB)-Ar5gWjy&f5r}A7<}p zyqVdSqX49&iDR|=0?I0q`1u^$5O4uGFW<23)8^TXOjwOHr2UuEvx^rdQ{n#+1NkS^ zOznBTL7?F#xrvHeYUOkBU}Z1vGDFxq0&qV_XT?CvjB-~wx{zC$e4b1inZb{xY$#_s=Y6+0j7+5I#OO97y~Aj@!V zlg)V8la53dW3hpJ(e@nBbIx+S|J$t8{a57=p~8<=JY6^GHuDKyM;(LWFG%%e-5NGQ zg?8c52*g9sfWEjCd6LElCK0aXm~;qh%3YA>jRwiAB<(W-efeX8N;WUK%8`b;i_2<< z_W$cyvH-lK>9-&}ZOK1TkbW<=0o@-)wRbbg%>Gtn-Q^5{kOgi8)ZD=%vDIUUQT2@_ zboNAlxMLy7-WpR8y6S;K{xE-&uSQXp$`#%t-$cE!2?*W6RhS;yc2}#9KD-7UWO)L- zUUkR1Gh2f{&_VrLy-0%FSxzBy+hoe?EQ9PB&OoOZX&K>0h{EjoH@Fcepzo)k>va7p z7sDZ+fnLGfNa%Jhv}G)2~*$>8TFx=Adib8njeJC*|o}Z??mB?gLD; z05RdmYj*?c+3(cs*&p41t#~=I`a4?q`L@0F_JVpb9-9Ed6!hRry85u!NNRP;5PdZ_ zCvd!KK+?P|52d$N0@$$?(nTAvr0hMo_NR+n20StIlS16Z;sEjOp5JYK`*vJ;=M7_r zw$N>e9hjK`{NpYm?(c;Zzue}vf5e%haj+*Z6Ik{2>JTKK7AG=> zBw^$g!Wi9ExeY`m*T?%T>@4rI=27E#Lpb7}YuD;BK}H}QN4nvd{Nmkx93=pNLH4{* zSD0?t-IlvO_mH4z3cd^;&Q0Js2O+?lkADMruS4%Lp~Kgx(an|2B_8m@v&meCohGb$ z@B%<2J~m^-*%&Zu4_RBh>p(Jl+l@efo-NMuvK>7%te;YaqN(x@^lEtzI1~+9$Ef(x zgErv}DQq-2rKv&SJA^VzM4h0lv(WQXu}$p77Yebm^cu+3W<*v(oN}S|WjMQreMH_M zg%Qj4D5zdAsYThAI4x;+MG&&l(J%R8>nU4rZ{{29f8y`ejmqn^U9j7g8Dn&J5Rzk(gss52+*RVuM!kd}6?i!|6giF<{c$16rpSq`VL~D8pKg zN?fM-8)$0YTD#{;dq1&)kY~xW)m~K-);5X3by_2#jvzniXQz}w?Kuh&H|ZR<${NL` zXq^SBD3}tgXWHb8)avZ;!Hr2Vhno01=;!`ugc+0`;OKAIK5i@OLVBwOA46wp>|YEi zX*js%^DK02ocpy{5L{Y4YK|l2rn2FY(&3hcY|>#)^RfakHIbnaa1^xW7y1DxiXJ1N zE6qMIWand>$0LqBL8Ud!~4qG*2#hH;f>X?+l!?$bX&aMS{p#ocJfv zZnZTke%ja?BUmpjW0YOnQ3!Cza4}JCm=CM7Q^@;YlhPZaXVMo$?gH=hHoAkrV`!DOdoM_eR z5_B}fD0V$ecXqyL|c+!5=QU=*e~u6 zO{P;529_@0*VdxGIR|NaWuGmOc*>EKoP@*P(6Bq6z@*O!pqG6AG0YSIBBY){u)-?M zit;=6XM*1L9|a;EB>d-XoOQw{n&x3^bC>%Heb73sMIZhUm0h=rsSQ)9z69`#qwY)} zK3)3T#Qnn>hbNgY=Se}(4Mnw~Ei-2pk5pa^4e_5%3@>E}^2A*TEa=e(TKxOP_`bR2NuIVnwsgB<8XgZuf+404=0RFpYJ~8`6go!b~yNnOP~WlGhS0%8Uuh zYG~zo5LO)%O^sT|>|6(?3s#P6L7IvRB7qfEj;oj)Nwf3P7BDlLb zE4&XK8(1g}2K1&w71@qLH88Qlzk`T4GWYbf-GBUu*?~vNX;EOvq9-tX*0%`p#O) zqoAxg%`$u}GktO6t=rEh8Fj`e)V(HB3AF+LKBlZ8MsL7O-zR$@Gkfi1Pvu|EC<{Lc zS-F?({;U40kXrXw%<$)-ut#M=ZF|HMVHsr46_MxJTAQ&cF8oJx$v<_>XJ>&bw=rGH zWm0XeE#AxYvuxmtRO{0ciJOL64@@5|n5p>;eE4j%;9csa?uTKR{ac-cbg!@oVg2b0kh;00;;DVKs*YU8 zfE-+giPEO_H2$G(3`>6+t){yMwVDKUbMvsM zlnCEAd*VuS7q!xh+SRP|Yc%ulszau7dn~CtdI<;=FEaI-$|p0OWFivg9)drG&b3X+ zhrF$w$IsunIlw1#-X>BvM`#WIDm1(J$vkt_c}>CCDLBB{IJ;V0>V06Mm|@pO8P0qB`s`!4mDJ!cbR~fG z>soXs$ax%IP(gbgC5clx*~XW?WlzrMINHZUU%qM z@te0UB#6#YptQj&KkxH{FpyKgoS{KU4hR7NXQVGKGnk`b|69XKg#Fa0p z@dm|Ja6cV&h9!y(Kb_@RA#jN@*O<|!5kYzriumEj0r~Dkgsx|QH#{O(Fb)p5{rJ5# zw;GvU1T@-l#!TNH0k%N%4n}#N`us;F;}=2MR8%7`eBd_DvBWK%Pig69WVqFd_a_4k z^%c)c3I8f;!R5zjZ6OU?gB?N#h0keB97*U%Aib8e(EfK|6;P6W-9>NR3VvE=VITA} z_yF3r$6^VHQHaIc3a>0-w*yjzj`)v*!dXnV-ZtjqY>@L&IXg5TBd7e+#s{SOjANk8?(i=?o5ZD z81I@w@*kHp4*LN%UE+ROvV2)_s_a{fOJ~NR*wX!C4N``TEOzYRTmO>_uI{Uk^&{}s zJdF3ID`nTW4oBcQ-sbdlK`th^=zCZ5@8#$FB%73@7&rD}N;Ut*MRvUtv})XM_+#z* zQ?5cPvaf5gce-YGEb9I32GzWER)6_BmNgFl{YVakacOF1asO_u!SK5C-@MI@AEl}0 zE^Tla2(YI!omW12XGf*x5u+tSUwdygj9& z2b@8ICnFus?1sHernFFAL~z>-sH~1$pAOSzXt>2XHR$(|W*(Wl0$AS%F91DzMVOnr z1ORIf2$&oo$-Xta2NRr3sj!K8-LqE=LDFnK9XFjH^XUN3<%Uzi-BZ8Sip?V@j~RwK zMAGa|^!3XdI}80oF6tG1(R?a4G)1g2HnXPNz1A$~YOO>tBImpjTegLj_76U45A*wP zMMvJXJJ*&*KHg?KE<=ua`Cae*eCwbR*9-m8#(;FRYaM!cBD_Tfy9We)XC(|U?3_jm z9KaBN0+=E3Rdbq0$yF|xZ?o)7+5SCu#rZ-f<<%aG@!i8FTFA^z4*Ndf8Fdy+U^V}f z=_$i}`3x717}W>CuMAu&!{83qN5;RRf?qm`bY0SVNtKUr+y5=X<&xk+AtMF*EK^l6 zuo(G+8J2uwJ*@iBBmFs_2$*#Al^j4Do;*Ib`RS64*q3t&ORFt7(r;(mTGc)1L)8;F zS*f}srjD_tSmhVHgAKk?BvB0+Vnnq==(-~wUSHE+yxbQ`bs|6#rtkvjtNsoP^vj6P zRMji(l0U0|uaVw>7x2tRmTm{1eP_P z8Jh}Ia-2P!1pJbTu=?WKv2TK4@A`@12kHo4kKQYndK5;F0GVHU4`5_;EXzHyC6&9` zPkF>Hu~+2TcVWxXkoPu)H&eu!bB23CI*%8=I1aueM>~NWVr6&SNa-lI5D2<}fomHO zY^QZ117+@Fld-?BiwD+JFDUw*V@`68Dv)!Esj7j2dw!)185qF>coFEV7ueR{%GG6+ zFZ)k$E?8a8@&761%EO`V-aaWyWyzB4lr2jhTakUqnvkN%ND@Ue_>Sl z!?tax9lSq+v_tHUA_+}znw;<8WI?f*#eLJCw~Dm+xChl>XB@q_>>vfr<(rDSX@S`J zUQ(F1x*`&O>9rpAs9RGq%(XYPGs1^o8p^pd6(EkYI_K7<*w!R}SSRt+!nzLc>4fZu zCS7knuP-r7-~8RjHNhJTjc@d}=2Fb1#851M@0WiP8(i(7xfWtKuiSIbMZD+$lX;kO zqu1vJ{I^n2F4R4d_QNTccv-l0FnMglF5=gDfHNcJ@VS&ZzBuVeoi1-E0d-Yu^0tm> zE6nM0<`5#qYFu*)oqedadWtgiBPc*8NLP(k&oi5hYu$MLT7DVm z?#Cai#&37PGB&=iteMHxzw}q@@qkx1bo!o+ZOHFVaj)hz>dt^rqT3M+mEnriW(tgDMhb@w2_2@1j1Kp`B;*dW&xkW$3tx#dGz)etR1oRMn zPh+%zaw&DvF<ke#Q!KA`-f67x>9{}Gl~vzVm40i zc-8LYG%0th7qQ#hiUyNMw#5xpdJ<_a*{FQcOD^-t;x#2N4U+qIhr~!ptFT`QR>Uz?a7}zOQ38%rHoC063|~>E<27*Vo1v= z}o_tZXQuo0e^DUr4UkX!C; z8BGwM87`VAudZFILaaOFSKVN*p;F)-S!y3J>=#N~!gtkHuH*2vYGdEng#p4D=+#cQ zXBk%J#biT4c7}NV##|#R02+f$X5YFBx5V1^`1D7U-k^X|agv=zDz$|nD()5@dF(nY zdtI1)ZX|qaqh`@#k7Jj_UTULkD0e?bPiv;B0+o+(&&u#o^7|4BUIec&5{-V_ zl@8>3;oA;@>?gXCIS-0Hj!)ppJ3&%&Yw`i7>U3!7Q{6 zVOR?XjR71DL6+ic$ZNC2-4@%32VL)Iy4OCu)Mg`oy^55>2nd>P6IZ=xWLY1zbp41R z^}GUg!)^Y1k7z`T16JtrixKK=rOdq3Nxv2aSPxR^HpbU$3o@Mbz0Y{xH&FgacPRA; zH>^P$gz~S5Dxk`F#E@rmGrIb}Eg5S3qvdR&%hO_XB)i%mFH;pm9ha!ahIpZmLYBU`NxK zN@FOA_!N$fizi^cKIU82;L)4;ov!pJBK z$_yz8_SXuH%B$yht%qeFXV7HwUGlM4PAN_^0koPKxCb9(5Vyo~Y)Bsrxhy6mqM;W5p4P!Oy9%*V zh>}Jm7~>6oWi*E$r#!o~pdOVAf#6l%_wsUxP^tQN?-+@%3Lf~JYr>@OuJ6@4@n^7} zc*F4MQxKsPoI^9I zI!1fw8oSrL-yHPZA48k71sXQ&l)f=fD|jGSKhhXq#l|N{6wuZiFe}Q?EiwhTsFkt| zCyn2u)ZBmRyYs`31*kixVrWyRK&^48*No;Y2j<+n3mkk@dHuU8GU?x+=nJZ~_Vm85 z8S3~z(`qAW_5&R>e%NwiRxB-gY+kL1Mvl!=cKg^`4JR!wPvz$pi{HDojmJd5*H6J! zcOBpx4i0UZ*S8iCJy|7q#A5Xvs3RZ~Tzs~( zX0_hG#|IvBI9m!C6p$TZ$UO2p=Ay@5v@ASz1qX)|TEo8xAY%K&33e^O@ejg(=KMd3 z0zI_Aj`kO*2IBu9(1T7E23ci$=Ac$q!iI#>h=GsAT5EO=`gr!yJU{rnrqZvV>Cxg< z-E!Eu-?q)zc#4}@3I0iShz7}^DaCDcLV;Ex6+-PKQPYja; zr)AB;ki6lb$ZD+u{)#!&$QT!Dv~ua>7liKSdh)S0POVNCk=3oz;LH3qdPW9Hp_{5z zmMa3K(uw4*4!@;!uWN2z#OJ!``)ChUqi##2Blq{}@($f6kud86nm>QX&ls_4kD#$2 ztJ2|=s+afjQ9uJQn1eFsvf1YJt5 zduo>w`q3UeEq}BaE;;rQ``ORog#_t+2VsJw(&4ADXq4Y^TT*-ACjFiQq->5>h+uNC zk8scFG$3f$s7!2EQK7}Ue7ff;&d6!Io@-Y&hz@Dt=-r7CIa;@z| zk!v0Jy{6{|rJT-fVXS$?+-WBG1$XiL^lKoD=tDAGC4;PW&24e+{aA9=+G9j}Q^LiCqF}$YEro$Xymh>@(C1sz zUhaD^ftEhe4_o#UyFaE6MV25!at1Yqz91Cvb!8JB<^SsOBO{3}7Aq41HH(X%93;8$ znh&6(dpmLIMH8714wfDzU2}PuhkcE2*;uK|xou)jIgj>eI6asvB3#LAS_Pn{CRcf} zsRa%D@-c)>LYDR2O$}SLN)k>i5TST=AE>_z>=!wEB0W?iTw&LkmTP}x|W?$9R)J>m#3iWXl|5_*90n`cI(MtLP zPZ`!nil}M(_zCJ}TyraB-3O*1SW9GiFxH3VQ|v^{IZTsbfu6`g87S6l={r8F;bW24 z)+9#9ci;iO#h--Du(%Lp{q-3m7XOS>tJ)=JPIU^c?R&Jur7u1{_xW`Hm2)A#RVvxP z;0iRTIBxKCcUwP_xUX$K_QqV&X4Qenn0^0+|Pg2=)7lbo+zg@=Zi7z3lWk z)u!q;*unr16 z=+^$N@!M>$7*y1IY=Uz($Hkp`xgu9)`WT`@JW}HZu;kKih`@(`5NKC)w73Eg!4G{@ z|C{jV3hzG&0j~e5g(~~U9tTD}sZ@dG0$o&yRnr>Gh9 zAduMYk6PzfZsPvoVU6&lWy;a_eF1JrHO9>AGBsNcn0Y~t9Cw*>=V9aavi}j)FZm}a zo4FLHbZY(^G@p?oQ4`d2mdNaC3bWe@#;>y{#zBI*DVa!=A6;jm?;v_-BukQqQG@V| zZ;Q;#(bC2IS_?YEd^dLlHnzPR!Fx54p*Kh;@VdbWLp`|K4T%)GV0djJY=c>^=4#Cr ziZkyo%B&LNr)Bn>6(v9wmlXBlZPRk|=va=9--#2&6!M%>xAw2}5HslHXglebW8M5T z>=4}79jiyKEZ4asi_*2k!rC_xeSMheScFM6KxNBc?UtI0NXec2RjNnkT;D+C@xccX zTX6{0r+s04(-bsi_Ge`EWXnzgMO$aO-5xn~cXNR!w9>b4vubOl?eQWwSsQH|#4*65ftoH_5H*O>fV|-xWDP+b1myK`rQ#;IXqkwIIh%_L6i& zb$buieK@h3d8=2^Nv_f^SSj{K>gHmb^J>Cl=9FK-;R{e)`B?PRID%B#pc4s`x9KIh zhU%6o_Bqxa4~v-?(SRQS{1Ty* z-7Z#<6`(%9@P`?&jlRkT=W9M)_Btio4MH1_9m~_q%866UuKvAN-(GJ24ey_xTIU=! zM|}G0EA)=kwi8izF0Lv#S&#f$h1@I_3h&4a8_8uxI#og3H$GJGJI6DHG2ia?QMDZm zkS-e?CA?e=`?^>~{HmNuLXfRHJ8JpFd}H-qO!@Y-YD8%$dN#Kpo72%+3Cd44mbefcJPI?)A>~IfFts~ zRrr``OLs|Efz<2KA=jdezovimBDI^>0 zi-aZ>oAjsPrugoLEIMClN-Jx|RTGa`7u%6?o7ta~otN6tOc6oGR$xX6%k32?0a3q# zusZbP0SV&7R}mi4l|ZY`4GPvd?!F*^rUBDToHPsa&mm1n|1$%G&V{$Ayz4?e4Pm$I z)#naxFvNr)M;a6LD;o3`>K3aa!`iU`lmTh;Ts)~2dAm$nH^ra=V}ZcxN(weErgMz1 ziliu#1ig|x4@QS2XkiWFUl>bS6F43UI$+d}fFlL&DX<1rl&Wgx%|DETAJ(R8=TPq^`>;Q&8 z;0Jgm2x(A=IXhCG7ux1=!MPoFqigzA)F^rUUUAtVt{oD1h+Ex8+Hre%)jwqIeZ-ZK z0t*5Jdm*!DApeRP0^9DnQpM*_DsNFBR6T*6vPGQgUvdlCxmc9ef7gWir3%Wx-gna; zSN6f$7W0_T$2>VrHc-6c1?;QeMd`wz?MY3{TOBQ%i`=iqJtndsYIjC0vg-@C{dXMM ziWNKVg!nF>J-y&O>V?lF*r}90c=6rZ{6>AF`)RC#GNG>74iYV7d76Wu+@D)*k_;&g zhHA+tEW4(AwhWuzYN>j(xY^>yFWK&zmn*eimDlr;b3lez$8;HYDy3uk&nn+y zcUJnbqKDX(6isDL|oKF@&J&@8aZ7J4ny>p?c zv2E5>z{-DM_x`sliGQ1#BLu~45lqPU`7cX#)6|dL&naTwzevpYTz+u#dH!`H9P=WZ{zJBb!;4Nay6Eib%SNa7rw zS_}$kSuhV28{UZyNtg254oVfaBuM%-alr~jJvQ{c#Gdc9)0yTblyP$-cTSkUEm1-- zzPrWSxIX1nF5=s2`1NkAmn2)23+f$;N~nm~_D+gWux`nqr$(_q#tIa>bhswG*mjz^v`&_fyNCI142!f(cGPiO6=!31`bG>- zw&i?%t3lPgsQkDk8~aOp>jvhb=AnY0D-5%Sjq-(}+biw2D*9L6&HWXS=(qWnun|z8 zNk4|blM0(=>~cF*9HF|>8e_Pv9sc-6i+KgTI53w9ch_KTG&Xl`8!hk?*yt2 zx>x^0#QDD!rBL4bbywVsautrjS>gZgNxY(eW)FA9>Bi`T2B$SrZDdSy)w7!z4EFK} z*WKuo(-<%8M9LlcQUIVr7T4c}u%Ty9?ecMf1nfMEF*v_%8{k7gR6WF5B*vhRkC;<)@?;JwDt#f{St2xJC@lE7lIMUZNW)e?;NolUzu^$*5d_L}NQaT*Fv$Kf^mLfa&wH9T>aysBW;CL?nVaSY#ea}4 z#D?42M^z_*(m~L;BwNw^G?qx>F3pp~l{^=49bP2HJ+*!Sq@D3boguIe>XS5s{#!}q zNW~u`6ewM8?2p_uRZcu>ez4YCh&<3_orG=zyvdKrVlnl-1DZgWp?u_l`__ and try running this policy on a toy env MyTrainer = build_trainer( name="MyCustomTrainer", default_policy=MyTFPolicy) - + ray.init() tune.run(MyTrainer, config={"env": "CartPole-v0", "num_workers": 2}) @@ -250,7 +250,7 @@ Suppose we want to customize PPO to use an asynchronous-gradient optimization st The ``with_updates`` method that we use here is also available for Torch and TF policies built from templates. - + Now let's take a look at the ``update_kl`` function. This is used to adaptively adjust the KL penalty coefficient on the PPO loss, which bounds the policy change per training step. You'll notice the code handles both single and multi-agent cases (where there are be multiple policies each with different KL coeffs): .. code-block:: python @@ -604,7 +604,7 @@ This is how the example in the previous section looks when written using a polic policy=CustomPolicy, env_creator=lambda c: gym.make("CartPole-v0"), num_workers=10) - + # this optimizer implements the IMPALA architecture optimizer = AsyncSamplesOptimizer(workers, train_batch_size=500) @@ -615,7 +615,7 @@ This is how the example in the previous section looks when written using a polic Trainers -------- -Trainers are the boilerplate classes that put the above components together, making algorithms accessible via Python API and the command line. They manage algorithm configuration, setup of the rollout workers and optimizer, and collection of training metrics. Trainers also implement the `Trainable API `__ for easy experiment management. +Trainers are the boilerplate classes that put the above components together, making algorithms accessible via Python API and the command line. They manage algorithm configuration, setup of the rollout workers and optimizer, and collection of training metrics. Trainers also implement the `Trainable API `__ for easy experiment management. Example of three equivalent ways of interacting with the PPO trainer, all of which log results in ``~/ray_results``: @@ -630,6 +630,6 @@ Example of three equivalent ways of interacting with the PPO trainer, all of whi rllib train --run=PPO --env=CartPole-v0 --config='{"train_batch_size": 4000}' .. code-block:: python - + from ray import tune tune.run(PPOTrainer, config={"env": "CartPole-v0", "train_batch_size": 4000}) diff --git a/doc/source/rllib-training.rst b/doc/source/rllib-training.rst index 1bb77aefe..b4c45d58b 100644 --- a/doc/source/rllib-training.rst +++ b/doc/source/rllib-training.rst @@ -258,7 +258,7 @@ You can provide callback functions to be called at points during policy evaluati info["trainer"].__name__, info["result"]["episodes_this_iter"])) ray.init() - trials = tune.run( + analysis = tune.run( "PG", config={ "env": "CartPole-v0", diff --git a/doc/source/tune-distributed.rst b/doc/source/tune-distributed.rst new file mode 100644 index 000000000..e521e1b07 --- /dev/null +++ b/doc/source/tune-distributed.rst @@ -0,0 +1,239 @@ +Tune Distributed Experiments +============================ + +Tune is commonly used for large-scale distributed hyperparameter optimization. Tune and Ray provide many utilities that enable an effective workflow for interacting with a cluster, including fast file mounting, one-line cluster launching, and result uploading to cloud storage. + +This page will overview the tooling for distributed experiments, covering how to connect to a cluster, how to launch a distributed experiment, and commonly used commands. + +Connecting to a cluster +----------------------- + +One common approach to modifying an existing Tune experiment to go distributed is to set an `argparse` variable so that toggling between distributed and single-node is seamless. This allows Tune to utilize all the resources available to the Ray cluster. + +.. code-block:: python + + import ray + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument("--ray-redis-address") + args = parser.parse_args() + ray.init(redis_address=args.ray_redis_address) + +Note that connecting to cluster requires a pre-existing Ray cluster to be started already (`Manual Cluster Setup `_). The script should be run on the head node of the Ray cluster. Below, ``tune_script.py`` can be any script that runs a Tune hyperparameter search. + +.. code-block:: bash + + # Single-node execution + $ python tune_script.py + + # On the head node, connect to an existing ray cluster + $ python tune_script.py --ray-redis-address=localhost:XXXX + +.. literalinclude:: ../../python/ray/tune/examples/mnist_pytorch.py + :language: python + :start-after: if __name__ == "__main__": + + +Launching a cloud cluster +------------------------- + +.. tip:: + + If you have already have a list of nodes, skip down to the `Local Cluster Setup`_ section. + +Ray currently supports AWS and GCP. Below, we will launch nodes on AWS that will default to using the Deep Learning AMI. See the `cluster setup documentation `_. + +.. literalinclude:: ../../python/ray/tune/examples/tune-default.yaml + :language: yaml + :name: tune-default.yaml + +This code starts a cluster as specified by the given cluster configuration YAML file, uploads ``tune_script.py`` to the cluster, and runs ``python tune_script.py``. + +.. code-block:: bash + + ray submit tune-default.yaml tune_script.py --start + +.. image:: images/tune-upload.png + :scale: 50% + :align: center + +Analyze your results on TensorBoard by starting TensorBoard on the remote head machine. + +.. code-block:: bash + + # Go to http://localhost:6006 to access TensorBoard. + ray exec tune-default.yaml 'tensorboard --logdir=~/ray_results/ --port 6006' --port-forward 6006 + + +Note that you can customize the directory of results by running: ``tune.run(local_dir=..)``. You can then point TensorBoard to that directory to visualize results. You can also use `awless `_ for easy cluster management on AWS. + +Local Cluster Setup +------------------- + +If you run into issues (or want to add nodes manually), you can use the manual cluster setup `documentation here `__. At a glance, On the head node, run the following. + +.. code-block:: bash + + # If the ``--redis-port`` argument is omitted, Ray will choose a port at random. + $ ray start --head --redis-port=6379 + +The command will print out the address of the Redis server that was started (and some other address information). + +**Then on all of the other nodes**, run the following. Make sure to replace ```` with the value printed by the command on the head node (it should look something like ``123.45.67.89:6379``). + +.. code-block:: bash + + $ ray start --redis-address= + +If you have already have a list of nodes, you can follow the private autoscaling cluster setup `instructions here `_. + + +Pre-emptible Instances (Cloud) +------------------------------ + +Running on spot instances (or pre-emptible instances) can reduce the cost of your experiment. You can enable spot instances in AWS via the following configuration modification: + +.. code-block:: yaml + + # Provider-specific config for worker nodes, e.g. instance type. + worker_nodes: + InstanceType: m5.large + ImageId: ami-0b294f219d14e6a82 # Deep Learning AMI (Ubuntu) Version 21.0 + + # Run workers on spot by default. Comment this out to use on-demand. + InstanceMarketOptions: + MarketType: spot + SpotOptions: + MaxPrice: 1.0 # Max Hourly Price + +In GCP, you can use the following configuration modification: + +.. code-block:: yaml + + worker_nodes: + machineType: n1-standard-2 + disks: + - boot: true + autoDelete: true + type: PERSISTENT + initializeParams: + diskSizeGb: 50 + # See https://cloud.google.com/compute/docs/images for more images + sourceImage: projects/deeplearning-platform-release/global/images/family/tf-1-13-cpu + + # Run workers on preemtible instances. + scheduling: + - preemptible: true + +Spot instances may be removed suddenly while trials are still running. Often times this may be difficult to deal with when using other distributed hyperparameter optimization frameworks. Tune allows users to mitigate the effects of this by preserving the progress of your model training through checkpointing. + +The easiest way to do this is to subclass the pre-defined ``Trainable`` class and implement ``_save``, and ``_restore`` abstract methods, as seen in the example below: + +.. literalinclude:: ../../python/ray/tune/examples/mnist_pytorch_trainable.py + :language: python + :start-after: __trainable_example_begin__ + :end-before: __trainable_example_end__ + +This can then be used similarly to the Function API as before: + +.. literalinclude:: ../../python/ray/tune/tests/tutorial.py + :language: python + :start-after: __trainable_run_begin__ + :end-before: __trainable_run_end__ + + +Example for using spot instances (AWS) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Here is an example for running Tune on spot instances. This assumes your AWS credentials have already been setup (``aws configure``): + +1. Download a full example Tune experiment script here. This includes a Trainable with checkpointing: :download:`mnist_pytorch_trainable.py <../../python/ray/tune/examples/mnist_pytorch_trainable.py>`. To run this example, you will need to install the following: + +.. code-block:: bash + + $ pip install ray torch torchvision filelock + +2. Download an example cluster yaml here: :download:`tune-default.yaml <../../python/ray/tune/examples/tune-default.yaml>` +3. Run ``ray submit`` as below to run Tune across them. Append ``[--start]`` if the cluster is not up yet. Append ``[--stop]`` to automatically shutdown your nodes after running. + +.. code-block:: bash + + ray submit tune-default.yaml mnist_pytorch_trainable.py \ + --args="--ray-redis-address=localhost:6379" \ + --start + +4. Optionally for testing on AWS or GCP, you can use the following to kill a random worker node after all the worker nodes are up + +.. code-block:: bash + + $ ray kill-random-node tune-default.yaml --hard + +To summarize, here are the commands to run: + +.. code-block:: bash + + wget https://raw.githubusercontent.com/ray-project/ray/master/python/ray/tune/examples/mnist_pytorch_trainable.py + wget https://raw.githubusercontent.com/ray-project/ray/master/python/ray/tune/tune-default.yaml + ray submit tune-default.yaml mnist_pytorch_trainable.py --args="--ray-redis-address=localhost:6379" --start + + # wait a while until after all nodes have started + ray kill-random-node tune-default.yaml --hard + +You should see Tune eventually continue the trials on a different worker node. See the `Saving and Recovery `__ section for more details. + +You can also specify ``tune.run(upload_dir=...)`` to sync results with a cloud storage like S3, persisting results in case you want to start and stop your cluster automatically. + +Common Commands +--------------- + +Below are some commonly used commands for submitting experiments. Please see the `Autoscaler page `__ to see find more comprehensive documentation of commands. + +.. code-block:: bash + + # Upload `tune_experiment.py` from your local machine onto the cluster. Then, + # run `python tune_experiment.py --redis-address=localhost:6379` on the remote machine. + $ ray submit CLUSTER.YAML tune_experiment.py --args="--redis-address=localhost:6379" + + # Start a cluster and run an experiment in a detached tmux session, + # and shut down the cluster as soon as the experiment completes. + # In `tune_experiment.py`, set `tune.run(upload_dir="s3://...")` to persist results + $ ray submit CLUSTER.YAML --tmux --start --stop tune_experiment.py --args="--redis-address=localhost:6379" + + # To start or update your cluster: + $ ray up CLUSTER.YAML [-y] + + # Shut-down all instances of your cluster: + $ ray down CLUSTER.YAML [-y] + + # Run Tensorboard and forward the port to your own machine. + $ ray exec CLUSTER.YAML 'tensorboard --logdir ~/ray_results/ --port 6006' --port-forward 6006 + + # Run Jupyter Lab and forward the port to your own machine. + $ ray exec CLUSTER.YAML 'jupyter lab --port 6006' --port-forward 6006 + + # Get a summary of all the experiments and trials that have executed so far. + $ ray exec CLUSTER.YAML 'tune ls ~/ray_results' + + # Upload and sync file_mounts up to the cluster with this command. + $ ray rsync-up CLUSTER.YAML + + # Download the results directory from your cluster head node to your local machine on ``~/cluster_results``. + $ ray rsync-down CLUSTER.YAML '~/ray_results' ~/cluster_results + + # Launching multiple clusters using the same configuration. + $ ray up CLUSTER.YAML -n="cluster1" + $ ray up CLUSTER.YAML -n="cluster2" + $ ray up CLUSTER.YAML -n="cluster3" + +Troubleshooting +--------------- + +Sometimes, your program may freeze. Run this to restart the Ray cluster without running any of the installation commands. + +.. code-block:: bash + + $ ray up CLUSTER.YAML --restart-only + + +.. Local Cluster Setup: tune-distributed.html#local-cluster-setup diff --git a/doc/source/tune-package-ref.rst b/doc/source/tune-package-ref.rst index 7788ceed9..c2c24f396 100644 --- a/doc/source/tune-package-ref.rst +++ b/doc/source/tune-package-ref.rst @@ -6,16 +6,15 @@ ray.tune .. automodule:: ray.tune :members: + :show-inheritance: :exclude-members: TuneError, Trainable .. autoclass:: ray.tune.Trainable :members: :private-members: - .. autoclass:: ray.tune.function_runner.StatusReporter - :members: __call__ - + :members: __call__, logdir ray.tune.schedulers ------------------- @@ -37,10 +36,10 @@ ray.tune.suggest :private-members: :show-inheritance: -ray.tune.analysis ------------------ +ray.tune.track +-------------- -.. autoclass:: ray.tune.analysis.ExperimentAnalysis +.. automodule:: ray.tune.track :members: diff --git a/doc/source/tune-schedulers.rst b/doc/source/tune-schedulers.rst index 2f6957f3f..cb3f1aced 100644 --- a/doc/source/tune-schedulers.rst +++ b/doc/source/tune-schedulers.rst @@ -35,7 +35,7 @@ Tune includes a distributed implementation of `Population Based Training (PBT) < }) tune.run( ... , scheduler=pbt_scheduler) -When the PBT scheduler is enabled, each trial variant is treated as a member of the population. Periodically, top-performing trials are checkpointed (this requires your Trainable to support `checkpointing `__). Low-performing trials clone the checkpoints of top performers and perturb the configurations in the hope of discovering an even better variation. +When the PBT scheduler is enabled, each trial variant is treated as a member of the population. Periodically, top-performing trials are checkpointed (this requires your Trainable to support `save and restore `__). Low-performing trials clone the checkpoints of top performers and perturb the configurations in the hope of discovering an even better variation. You can run this `toy PBT example `__ to get an idea of how how PBT operates. When training in PBT mode, a single trial may see many different hyperparameters over its lifetime, which is recorded in its ``result.json`` file. The following figure generated by the example shows PBT with optimizing a LR schedule over the course of a single experiment: @@ -69,7 +69,7 @@ Compared to the original version of HyperBand, this implementation provides bett HyperBand --------- -.. note:: Note that the HyperBand scheduler requires your trainable to support checkpointing, which is described in `Tune User Guide `__. Checkpointing enables the scheduler to multiplex many concurrent trials onto a limited size cluster. +.. note:: Note that the HyperBand scheduler requires your trainable to support saving and restoring, which is described in `Tune User Guide `__. Checkpointing enables the scheduler to multiplex many concurrent trials onto a limited size cluster. Tune also implements the `standard version of HyperBand `__. You can use it as such: diff --git a/doc/source/tune-tutorial.rst b/doc/source/tune-tutorial.rst new file mode 100644 index 000000000..17fdcb3a6 --- /dev/null +++ b/doc/source/tune-tutorial.rst @@ -0,0 +1,121 @@ +Tune Example Walkthrough +======================== + +This tutorial will walk you through the following process to setup a Tune experiment. Specifically, we'll leverage ASHA and Bayesian Optimization (via HyperOpt) via the following steps: + + 1. Integrating Tune into your workflow + 2. Specifying a TrialScheduler + 3. Adding a SearchAlgorithm + 4. Getting the best model and analyzing results + +.. note:: + + To run this example, you will need to install the following: + + .. code-block:: bash + + $ pip install ray torch torchvision filelock + +We first run some imports: + +.. literalinclude:: ../../python/ray/tune/tests/tutorial.py + :language: python + :start-after: __tutorial_imports_begin__ + :end-before: __tutorial_imports_end__ + + +Below, we have some boiler plate code for a PyTorch training function. + +.. literalinclude:: ../../python/ray/tune/tests/tutorial.py + :language: python + :start-after: __train_func_begin__ + :end-before: __train_func_end__ + +Notice that there's a couple helper functions in the above training script. You can take a look at these functions in the imported module `examples/mnist_pytorch `__; there's no black magic happening. For example, ``train`` is simply a for loop over the data loader. + +.. code:: python + + def train(model, optimizer, train_loader): + model.train() + for batch_idx, (data, target) in enumerate(train_loader): + if batch_idx * len(data) > EPOCH_SIZE: + return + optimizer.zero_grad() + output = model(data) + loss = F.nll_loss(output, target) + loss.backward() + optimizer.step() + +Let's run 1 trial, randomly sampling from a uniform distribution for learning rate and momentum. + +.. literalinclude:: ../../python/ray/tune/tests/tutorial.py + :language: python + :start-after: __eval_func_begin__ + :end-before: __eval_func_end__ + +We can then plot the performance of this trial. + +.. literalinclude:: ../../python/ray/tune/tests/tutorial.py + :language: python + :start-after: __plot_begin__ + :end-before: __plot_end__ + + +Early Stopping with ASHA +~~~~~~~~~~~~~~~~~~~~~~~~ + +Let's integrate an early stopping algorithm to our search - ASHA, a scalable algorithm for principled early stopping. + +How does it work? On a high level, it terminates trials that are less promising and +allocates more time and resources to more promising trials. See `this blog post `__ for more details. + +We can afford to **increase the search space by 5x**, by adjusting the parameter ``num_samples``. See the `Trial Scheduler section `__ for more details of available schedulers and library integrations. + +.. literalinclude:: ../../python/ray/tune/tests/tutorial.py + :language: python + :start-after: __run_scheduler_begin__ + :end-before: __run_scheduler_end__ + +You can run the below in a Jupyter notebook to visualize trial progress. + +.. literalinclude:: ../../python/ray/tune/tests/tutorial.py + :language: python + :start-after: __plot_scheduler_begin__ + :end-before: __plot_scheduler_end__ + +.. image:: images/tune-df-plot.png + :scale: 50% + :align: center + +You can also use Tensorboard for visualizing results. + +.. code:: bash + + $ tensorboard --logdir {logdir} + + +Search Algorithms in Tune +~~~~~~~~~~~~~~~~~~~~~~~~~ + +With Tune you can combine powerful hyperparameter search libraries such as `HyperOpt `_ and `Ax `_ with state-of-the-art algorithms such as HyperBand without modifying any model training code. Tune allows you to use different search algorithms in combination with different trial schedulers. See the `Search Algorithm section `__ for more details of available algorithms and library integrations. + +.. literalinclude:: ../../python/ray/tune/tests/tutorial.py + :language: python + :start-after: __run_searchalg_begin__ + :end-before: __run_searchalg_end__ + + +Evaluate your model +~~~~~~~~~~~~~~~~~~~ + +You can evaluate best trained model using the Analysis object to retrieve the best model: + +.. literalinclude:: ../../python/ray/tune/tests/tutorial.py + :language: python + :start-after: __run_analysis_begin__ + :end-before: __run_analysis_end__ + + +Next Steps +---------- +Take a look at the `Usage Guide `__ for more comprehensive overview of Tune features. diff --git a/doc/source/tune-usage.rst b/doc/source/tune-usage.rst index 35cb8eef4..ac0ce698d 100644 --- a/doc/source/tune-usage.rst +++ b/doc/source/tune-usage.rst @@ -10,16 +10,6 @@ Tune schedules a number of *trials* in a cluster. Each trial runs a user-defined More information about Tune's `search algorithms can be found here `__. More information about Tune's `trial schedulers can be found here `__. -Start by installing, importing, and initializing Ray. - -.. code-block:: python - - import ray - import ray.tune as tune - - ray.init() - - Experiment Configuration ------------------------ @@ -30,36 +20,47 @@ You can checkout out our `examples page `__ for more code ex Training API ~~~~~~~~~~~~ -Training can be done with either the **function-based API** or **Trainable API**. +Training can be done with either the **Trainable Class API** or **function-based API**. + +**Python classes** passed into Tune will need to subclass ``ray.tune.Trainable``. The Trainable interface `can be found here `__. Here is an example: -**Python functions** will need to have the following signature: .. code-block:: python - def trainable(config, reporter): + class Example(Trainable): + def _setup(self, config): + ... + + def _train(self): + # run training code + result_dict = {"accuracy": 0.5, "f1": 0.1, ...} + return result_dict + +**Python functions** will need to have the following signature and call ``tune.track.log``, which will allow you to report metrics used for scheduling, search, or early stopping.: + +.. code-block:: python + + def trainable(config): """ Args: config (dict): Parameters provided from the search algorithm or variant generation. - reporter (Reporter): Handle to report intermediate metrics to Tune. """ while True: # ... - reporter(**kwargs) + tune.track.log(**kwargs) -The reporter will allow you to report metrics used for scheduling, search, or early stopping. -Tune will run this function on a separate thread in a Ray actor process. Note that this API is not checkpointable, since the thread will never return control back to its caller. The reporter documentation can be `found here `__. +Tune will run this function on a separate thread in a Ray actor process. Note that this API is not checkpointable, since the thread will never return control back to its caller. ``tune.track`` documentation can be `found here `__. + +Both the Trainable and function-based API will have `autofilled metrics `__ in addition to the metrics reported. .. note:: If you have a lambda function that you want to train, you will need to first register the function: ``tune.register_trainable("lambda_id", lambda x: ...)``. You can then use ``lambda_id`` in place of ``my_trainable``. -**Python classes** passed into Tune will need to subclass ``ray.tune.Trainable``. The Trainable interface `can be found here `__. - -Both the Trainable and function-based API will have `autofilled metrics `__ in addition to the metrics reported. - -See the `experiment specification `__ section on how to specify and execute your training. +.. note:: + See previous versions of the documentation for the ``reporter`` API. Launching an Experiment @@ -67,8 +68,13 @@ Launching an Experiment Tune provides a ``run`` function that generates and runs the trials. -.. autofunction:: ray.tune.run - :noindex: +.. code-block:: python + + tune.run( + trainable, + name="example-experiment", + num_samples=10, + ) This function will report status on the command line until all Trials stop: @@ -86,34 +92,53 @@ This function will report status on the command line until all Trials stop: - train_func_5_lr=0.6,momentum=2: TERMINATED [pid=6809], 10 s, 2164 ts, 100 acc -Custom Trial Names -~~~~~~~~~~~~~~~~~~ +All results reported by the trainable will be logged locally to a unique directory per experiment, e.g. ``~/ray_results/example-experiment`` in the above example. On a cluster, incremental results will be synced to local disk on the head node. -To specify custom trial names, you can pass use the ``trial_name_creator`` argument -to `tune.run`. This takes a function with the following signature, and -be sure to wrap it with `tune.function`: + +Analyzing Results +----------------- + +Tune provides an ``ExperimentAnalysis`` object for analyzing results from ``tune.run``. .. code-block:: python - def trial_name_string(trial): - """ - Args: - trial (Trial): A generated trial object. - - Returns: - trial_name (str): String representation of Trial. - """ - return str(trial) - - tune.run( - MyTrainableClass, - name="hyperband_test", - num_samples=1, - trial_name_creator=tune.function(trial_name_string) + analysis = tune.run( + trainable, + name="example-experiment", + num_samples=10, ) -An example can be found in `logging_example.py `__. +You can use the ``ExperimentAnalysis`` object to obtain the best configuration of the experiment: +.. code-block:: python + + >>> print("Best config is", analysis.get_best_config(metric="mean_accuracy")) + Best config is: {'lr': 0.011537575723482687, 'momentum': 0.8921971713692662} + +Here are some example operations for obtaining a summary of your experiment: + +.. code-block:: python + + # Get a dataframe for the last reported results of all of the trials + df = analysis.dataframe() + + # Get a dataframe for the max accuracy seen for each trial + df = analysis.dataframe(metric="mean_accuracy", mode="max") + + # Get a dict mapping {trial logdir -> dataframes} for all trials in the experiment. + all_dataframes = analysis.trial_dataframes + + # Get a list of trials + trials = analysis.trials + +You may want to get a summary of multiple experiments that point to the same ``local_dir``. For this, you can use the ``Analysis`` class. + +.. code-block:: python + + from ray.tune import Analysis + analysis = Analysis("~/ray_results/example-experiment") + +See the `full documentation `_ for the ``Analysis`` object. Training Features ----------------- @@ -151,6 +176,34 @@ The following shows grid search over two nested parameters combined with random For more information on variant generation, see `basic_variant.py `__. +Custom Trial Names +~~~~~~~~~~~~~~~~~~ + +To specify custom trial names, you can pass use the ``trial_name_creator`` argument +to `tune.run`. This takes a function with the following signature, and +be sure to wrap it with `tune.function`: + +.. code-block:: python + + def trial_name_string(trial): + """ + Args: + trial (Trial): A generated trial object. + + Returns: + trial_name (str): String representation of Trial. + """ + return str(trial) + + tune.run( + MyTrainableClass, + name="example-experiment", + num_samples=1, + trial_name_creator=tune.function(trial_name_string) + ) + +An example can be found in `logging_example.py `__. + Sampling Multiple Times ~~~~~~~~~~~~~~~~~~~~~~~ @@ -202,23 +255,29 @@ If your trainable function / class creates further Ray actors or tasks that also } ) +Saving and Recovery +------------------- -Trial Checkpointing -~~~~~~~~~~~~~~~~~~~ +When running a hyperparameter search, Tune can automatically and periodically save/checkpoint your model. Checkpointing is used for -To enable checkpointing, you must implement a `Trainable class `__ (Trainable functions are not checkpointable, since they never return control back to their caller). The easiest way to do this is to subclass the pre-defined ``Trainable`` class and implement its ``_train``, ``_save``, and ``_restore`` abstract methods `(example) `__. Implementing this interface is required to support resource multiplexing in Trial Schedulers such as HyperBand and PBT. + * saving a model at the end of training + * modifying a model in the middle of training + * fault-tolerance in experiments with pre-emptible machines. + * enables certain Trial Schedulers such as HyperBand and PBT. -For TensorFlow model training, this would look something like this `(full tensorflow example) `__: +To enable checkpointing, you must implement a `Trainable class `__ (Trainable functions are not checkpointable, since they never return control back to their caller). The easiest way to do this is to subclass the pre-defined ``Trainable`` class and implement ``_save``, and ``_restore`` abstract methods, as seen in `this example `__. + +For TensorFlow model training, this would look something like this `tensorflow example `__: .. code-block:: python - class MyClass(Trainable): + class MyTrainableClass(Trainable): def _setup(self, config): self.saver = tf.train.Saver() self.sess = ... def _train(self): - self.sess.run(...) + return {"mean_accuracy: self.sess.run(...)} def _save(self, checkpoint_dir): return self.saver.save(self.sess, os.path.join(checkpoint_dir, save)) @@ -226,11 +285,36 @@ For TensorFlow model training, this would look something like this `(full tensor def _restore(self, checkpoint_prefix): self.saver.restore(self.sess, checkpoint_prefix) +Checkpoints will be saved by training iteration to ``local_dir/exp_name/trial_name/checkpoint_``. You can restore a single trial checkpoint by using ``tune.run(restore=)``. To test if your Trainable will checkpoint and restore correctly, you can use ``tune.util.validate_save_restore`` as follows: -Additionally, checkpointing can be used to provide fault-tolerance for experiments. This can be enabled by setting ``checkpoint_freq=N`` and ``max_failures=M`` to checkpoint trials every *N* iterations and recover from up to *M* crashes per trial, e.g.: + .. code-block:: python + + from ray.tune.util import validate_save_restore + + validate_save_restore(MyTrainableClass) + validate_save_restore(MyTrainableClass, use_object_store=True) + + +Trainable (Trial) Checkpointing +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Checkpointing assumes that the model state will be saved to disk on whichever node the Trainable is running on. You can checkpoint with three different mechanisms: manually, periodically, and at termination. + +**Manual Checkpointing**: A custom Trainable can manually trigger checkpointing by returning ``should_checkpoint: True`` (or ``tune.result.SHOULD_CHECKPOINT: True``) in the result dictionary of `_train`. This can be especially helpful in spot instances: + +.. code-block:: python + + def _train(self): + # training code + result = {"mean_accuracy": accuracy} + if detect_instance_preemption(): + result.update(should_checkpoint=True) + return result + + +**Periodic Checkpointing**: periodic checkpointing can be used to provide fault-tolerance for experiments. This can be enabled by setting ``checkpoint_freq=`` and ``max_failures=`` to checkpoint trials every *N* iterations and recover from up to *M* crashes per trial, e.g.: .. code-block:: python - :emphasize-lines: 4,5 tune.run( my_trainable, @@ -238,8 +322,8 @@ Additionally, checkpointing can be used to provide fault-tolerance for experimen max_failures=5, ) -The checkpoint_freq may not coincide with the exact end of an experiment. If you want a checkpoint to be created at the end -of a trial, you can additionally set the checkpoint_at_end to True. An example is shown below: +**Checkpointing at Termination**: The checkpoint_freq may not coincide with the exact end of an experiment. If you want a checkpoint to be created at the end +of a trial, you can additionally set the ``checkpoint_at_end=True``: .. code-block:: python :emphasize-lines: 5 @@ -251,11 +335,41 @@ of a trial, you can additionally set the checkpoint_at_end to True. An example i max_failures=5, ) +The checkpoint will be saved at a path that looks like ``local_dir/exp_name/trial_name/checkpoint_x/``, where the x is the number of iterations so far when the checkpoint is saved. To restore the checkpoint, you can use the ``restore`` argument and specify a checkpoint file. By doing this, you can change whatever experiments' configuration such as the experiment's name, the training iteration or so: -Recovering From Failures (Experimental) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. code-block:: python -Tune automatically persists the progress of your experiments, so if an experiment crashes or is otherwise cancelled, it can be resumed by passing one of True, False, "LOCAL", "REMOTE", or "PROMPT" to ``tune.run(resume=...)``. The default setting of ``resume=False`` creates a new experiment. ``resume="LOCAL"`` and ``resume=True`` restore the experiment from ``local_dir/[experiment_name]``. ``resume="REMOTE"`` syncs the upload dir down to the local dir and then restores the experiment from ``local_dir/experiment_name``. ``resume="PROMPT"`` will cause Tune to prompt you for whether you want to resume. You can always force a new experiment to be created by changing the experiment name. + # Restored previous trial from the given checkpoint + tune.run( + "PG", + name="RestoredExp", # The name can be different. + stop={"training_iteration": 10}, # train 5 more iterations than previous + restore="~/ray_results/Original/PG_/checkpoint_5/checkpoint-5", + config={"env": "CartPole-v0"}, + ) + +Fault Tolerance +~~~~~~~~~~~~~~~ + +Tune will automatically restart trials from the last checkpoint in case of trial failures/error (if ``max_failures`` is set), both in the single node and distributed setting. + +In the distributed setting, if using the autoscaler with ``rsync`` enabled, Tune will automatically sync the trial folder with the driver. For example, if a node is lost while a trial (specifically, the corresponding Trainable actor of the trial) is still executing on that node and a checkpoint of the trial exists, Tune will wait until available resources are available to begin executing the trial again. + +If the trial/actor is placed on a different node, Tune will automatically push the previous checkpoint file to that node and restore the remote trial actor state, allowing the trial to resume from the latest checkpoint even after failure. + +Take a look at `an example `_. + +Recovering From Failures +~~~~~~~~~~~~~~~~~~~~~~~~ + +Tune automatically persists the progress of your entire experiment (a ``tune.run`` session), so if an experiment crashes or is otherwise cancelled, it can be resumed by passing one of True, False, "LOCAL", "REMOTE", or "PROMPT" to ``tune.run(resume=...)``. Note that this only works if trial checkpoints are detected, whether it be by manual or periodic checkpointing. + +**Settings:** + + - The default setting of ``resume=False`` creates a new experiment. + - ``resume="LOCAL"`` and ``resume=True`` restore the experiment from ``local_dir/[experiment_name]``. + - ``resume="REMOTE"`` syncs the upload dir down to the local dir and then restores the experiment from ``local_dir/experiment_name``. + - ``resume="PROMPT"`` will cause Tune to prompt you for whether you want to resume. You can always force a new experiment to be created by changing the experiment name. Note that trials will be restored to their last checkpoint. If trial checkpointing is not enabled, unfinished trials will be restarted from scratch. @@ -270,10 +384,11 @@ E.g.: resume=True ) +Upon a second run, this will restore the entire experiment state from ``~/path/to/results/my_experiment_name``. Importantly, any changes to the experiment specification upon resume will be ignored. For example, if the previous experiment has reached its termination, then resuming it with a new stop criterion makes no effect: the new experiment will terminate immediately after initialization. If you want to change the configuration, such as training more iterations, you can do so restore the checkpoint by setting ``restore=`` - note that this only works for a single trial. -Upon a second run, this will restore the entire experiment state from ``~/path/to/results/my_experiment_name``. Importantly, any changes to the experiment specification upon resume will be ignored. +.. warning:: -This feature is still experimental, so any provided Trial Scheduler or Search Algorithm will not be preserved. Only ``FIFOScheduler`` and ``BasicVariantGenerator`` will be supported. + This feature is still experimental, so any provided Trial Scheduler or Search Algorithm will not be preserved. Only ``FIFOScheduler`` and ``BasicVariantGenerator`` will be supported. Handling Large Datasets @@ -323,21 +438,8 @@ The following fields will automatically show up on the console output, if provid Example_0: TERMINATED [pid=68248], 179 s, 2 iter, 60000 ts, 94 rew -Logging, Analyzing, and Visualizing Results -------------------------------------------- - -All results reported by the trainable will be logged locally to a unique directory per experiment, e.g. ``~/ray_results/my_experiment`` in the above example. On a cluster, incremental results will be synced to local disk on the head node. - -Tune provides an ``ExperimentAnalysis`` object for analyzing results which can be used by providing the directory path as follows: - -.. code-block:: python - - from ray.tune.analysis import ExperimentAnalysis - - ea = ExperimentAnalysis("~/ray_results/my_experiment") - trials_dataframe = ea.dataframe() - -You can check out `experiment_analysis.py `__ for more interesting analysis operations. +Visualizing Results +------------------- To visualize learning in tensorboard, install TensorFlow: @@ -369,8 +471,8 @@ To use rllab's VisKit (you may have to install some dependencies), run: .. image:: ray-tune-viskit.png -Custom Loggers -~~~~~~~~~~~~~~ +Logging +------- You can pass in your own logging mechanisms to output logs in custom formats as follows: @@ -384,16 +486,10 @@ You can pass in your own logging mechanisms to output logs in custom formats as loggers=DEFAULT_LOGGERS + (CustomLogger1, CustomLogger2) ) -These loggers will be called along with the default Tune loggers. All loggers must inherit the `Logger interface `__. +These loggers will be called along with the default Tune loggers. All loggers must inherit the `Logger interface `__. Tune has default loggers for Tensorboard, CSV, and JSON formats. You can also check out `logger.py `__ for implementation details. An example can be found in `logging_example.py `__. -Tune has default loggers for Tensorboard, CSV, and JSON formats. - -You can also check out `logger.py `__ for implementation details. - -An example can be found in `logging_example.py `__. - -Custom Sync/Upload Commands -~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Uploading/Syncing +----------------- Tune automatically syncs the trial folder on remote nodes back to the head node. This requires the ray cluster to be started with the `autoscaler `__. By default, local syncing requires rsync to be installed. You can customize the sync command with the ``sync_to_driver`` argument in ``tune.run`` by providing either a function or a string. @@ -457,14 +553,25 @@ The API also supports curl. Here are the examples for getting trials (``GET /tri .. code-block:: bash - curl http://

:/trials - curl http://
:/trials/ + $ curl http://
:/trials + $ curl http://
:/trials/ And stopping a trial (``PUT /trials/:id``): .. code-block:: bash - curl -X PUT http://
:/trials/ + $ curl -X PUT http://
:/trials/ + +Debugging (Single Process) +-------------------------- + +By default, Tune will run hyperparameter evaluations on multiple processes. However, if you need to debug your training process, it may be easier to do everything on a single process. You can force all Ray functions to occur on a single process with ``local_mode`` by calling the following before ``tune.run``. + +.. code-block:: python + + ray.init(local_mode=True) + +Note that some behavior such as writing to files by depending on the current working directory in a Trainable and setting global process variables may not work as expected. Local mode with multiple configuration evaluations will interleave computation, so it is most naturally used when running a single configuration evaluation. Tune CLI (Experimental) diff --git a/doc/source/tune.rst b/doc/source/tune.rst index 2674f5b06..63b69f4dc 100644 --- a/doc/source/tune.rst +++ b/doc/source/tune.rst @@ -5,91 +5,98 @@ Tune: Scalable Hyperparameter Search :scale: 30% :align: center -Tune is a scalable framework for hyperparameter search with a focus on deep learning and deep reinforcement learning. +Tune is a scalable framework for hyperparameter search and model training with a focus on deep learning and deep reinforcement learning. -You can find the code for Tune `here on GitHub `__. To get started with Tune, try going through `our tutorial of using Tune with Keras `__. + * Scale to running on a large distributed cluster without changing your code. + * Launch a multi-node Tune experiment in less than 10 lines of code. + * Supports any deep learning framework, including PyTorch, TensorFlow, and Keras. + * Visualize results with `TensorBoard `__. + * Choose among scalable SOTA algorithms such as `Population Based Training (PBT)`_, `Vizier's Median Stopping Rule`_, `HyperBand/ASHA`_. -(Experimental): You can try out `the above tutorial on a free hosted server via Binder `__. +.. _`Population Based Training (PBT)`: tune-schedulers.html#population-based-training-pbt +.. _`Vizier's Median Stopping Rule`: tune-schedulers.html#median-stopping-rule +.. _`HyperBand/ASHA`: tune-schedulers.html#asynchronous-hyperband + +Quick Start +----------- + +.. note:: + + To run this example, you will need to install the following: + + .. code-block:: bash + + $ pip install ray torch torchvision filelock -Features --------- +This example runs a small grid search to train a CNN using PyTorch and Tune. -* Supports any deep learning framework, including PyTorch, TensorFlow, and Keras. +.. literalinclude:: ../../python/ray/tune/tests/example.py + :language: python + :start-after: __quick_start_begin__ + :end-before: __quick_start_end__ -* Choose among scalable hyperparameter and model search techniques such as: +If TensorBoard is installed, automatically visualize all trial results: - - `Population Based Training (PBT) `__ +.. code-block:: bash - - `Median Stopping Rule `__ + tensorboard --logdir ~/ray_results - - `HyperBand `__ -* Mix and match different hyperparameter optimization approaches - such as using `HyperOpt with HyperBand`_ or `Nevergrad with HyperBand`_. +.. image:: images/tune-start-tb.png -* Visualize results with `TensorBoard `__ and `rllab's VisKit `__. +Distributed Quick Start +----------------------- -* Scale to running on a large distributed cluster without changing your code. +.. note:: -* Parallelize training for models with GPU requirements or algorithms that may themselves be parallel and distributed, using Tune's `resource-aware scheduling `__, + This assumes that you have already setup your AWS account and AWS credentials (``aws configure``). To run this example, you will need to install the following: -Take a look at `the User Guide `__ for a comprehensive overview on how to use Tune's features. + .. code-block:: bash + + $ pip install ray torch torchvision filelock + +1. Import and initialize Ray by appending the following to your example script. + +.. code-block:: python + + # Append to top of your script + import ray + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument("--ray-redis-address") + args = parser.parse_args() + ray.init(redis_address=args.ray_redis_address) + +Alternatively, download a full example script here: :download:`mnist_pytorch.py <../../python/ray/tune/examples/mnist_pytorch.py>` + +2. Download an example cluster yaml here: :download:`tune-default.yaml <../../python/ray/tune/examples/tune-default.yaml>` +3. Run ``ray submit`` like the following. + +.. code-block:: bash + + ray submit tune-default.yaml mnist_pytorch.py --args="--ray-redis-address=localhost:6379" --start + +This will start 3 AWS machines and run a distributed hyperparameter search across them. Append ``[--stop]`` to automatically shutdown your nodes afterwards. + +To summarize, here are the full set of commands: + +.. code-block:: bash + + wget https://raw.githubusercontent.com/ray-project/ray/master/python/ray/tune/examples/mnist_pytorch.py + wget https://raw.githubusercontent.com/ray-project/ray/master/python/ray/tune/tune-default.yaml + ray submit tune-default.yaml mnist_pytorch.py --args="--ray-redis-address=localhost:6379" --start + + +Take a look at the `Distributed Experiments `_ documentation for more details, including setting up distributed experiments on local machines, using GCP, adding resilience to spot instance usage, and more. Getting Started --------------- -Installation -~~~~~~~~~~~~ - -You'll need to first `install ray `__ to import Tune. - -.. code-block:: bash - - pip install ray # also recommended: ray[debug] - - -Quick Start -~~~~~~~~~~~ - -This example runs a small grid search over a neural network training function using Tune, reporting status on the command line until the stopping condition of ``mean_accuracy >= 99`` is reached. Tune works with any deep learning framework. - -Tune uses Ray as a backend, so we will first import and initialize Ray. - -.. code-block:: python - - import ray - from ray import tune - - ray.init() - - -For the function you wish to tune, pass in a ``reporter`` object: - -.. code-block:: python - :emphasize-lines: 1,9 - - def train_func(config, reporter): # add a reporter arg - model = ( ... ) - optimizer = SGD(model.parameters(), - momentum=config["momentum"]) - dataset = ( ... ) - - for idx, (data, target) in enumerate(dataset): - accuracy = model.fit(data, target) - reporter(mean_accuracy=accuracy) # report metrics - -**Finally**, configure your search and execute it on your Ray cluster: - -.. code-block:: python - - all_trials = tune.run( - train_func, - name="quick-start", - stop={"mean_accuracy": 99}, - config={"momentum": tune.grid_search([0.1, 0.2])} - ) - -Tune can be used anywhere Ray can, e.g. on your laptop with ``ray.init()`` embedded in a Python script, or in an `auto-scaling cluster `__ for massive parallelism. + * `Code `__: GitHub repository for Tune. + * `User Guide `__: A comprehensive overview on how to use Tune's features. + * `Tutorial Notebook `__: Our tutorial notebooks of using Tune with Keras or PyTorch. Contribute to Tune ------------------ diff --git a/python/ray/tune/analysis/experiment_analysis.py b/python/ray/tune/analysis/experiment_analysis.py index f501d57a0..a34710972 100644 --- a/python/ray/tune/analysis/experiment_analysis.py +++ b/python/ray/tune/analysis/experiment_analysis.py @@ -47,38 +47,6 @@ class Analysis(object): self._trial_dataframes = {} self.fetch_trial_dataframes() - def fetch_trial_dataframes(self): - fail_count = 0 - for path in self._get_trial_paths(): - try: - self.trial_dataframes[path] = pd.read_csv( - os.path.join(path, EXPR_PROGRESS_FILE)) - except Exception: - fail_count += 1 - - if fail_count: - logger.debug( - "Couldn't read results from {} paths".format(fail_count)) - return self.trial_dataframes - - def get_all_configs(self, prefix=False): - fail_count = 0 - for path in self._get_trial_paths(): - try: - with open(os.path.join(path, EXPR_PARAM_FILE)) as f: - config = json.load(f) - if prefix: - for k in list(config): - config["config:" + k] = config.pop(k) - self._configs[path] = config - except Exception: - fail_count += 1 - - if fail_count: - logger.warning( - "Couldn't read config from {} paths".format(fail_count)) - return self._configs - def dataframe(self, metric=None, mode=None): """Returns a pandas.DataFrame object constructed from the trials. @@ -110,6 +78,58 @@ class Analysis(object): best_path = compare_op(rows, key=lambda k: rows[k][metric]) return all_configs[best_path] + def get_best_logdir(self, metric, mode="max"): + """Retrieve the logdir corresponding to the best trial. + + Args: + metric (str): Key for trial info to order on. + mode (str): One of [min, max]. + + """ + df = self.dataframe() + if mode == "max": + return df.iloc[df[metric].idxmax()].logdir + elif mode == "min": + return df.iloc[df[metric].idxmin()].logdir + + def fetch_trial_dataframes(self): + fail_count = 0 + for path in self._get_trial_paths(): + try: + self.trial_dataframes[path] = pd.read_csv( + os.path.join(path, EXPR_PROGRESS_FILE)) + except Exception: + fail_count += 1 + + if fail_count: + logger.debug( + "Couldn't read results from {} paths".format(fail_count)) + return self.trial_dataframes + + def get_all_configs(self, prefix=False): + """Returns a list of all configurations. + + Parameters: + prefix (bool): If True, flattens the config dict + and prepends `config/`. + """ + fail_count = 0 + for path in self._get_trial_paths(): + try: + with open(os.path.join(path, EXPR_PARAM_FILE)) as f: + config = json.load(f) + if prefix: + for k in list(config): + config["config/" + k] = config.pop(k) + self._configs[path] = config + except Exception: + fail_count += 1 + + if fail_count: + logger.warning( + "Couldn't read config from {} paths".format(fail_count)) + return self._configs + def _retrieve_rows(self, metric=None, mode=None): assert mode is None or mode in ["max", "min"] rows = {} @@ -135,15 +155,9 @@ class Analysis(object): self._experiment_dir)) return _trial_paths - def get_best_logdir(self, metric, mode="max"): - df = self.dataframe() - if mode == "max": - return df.iloc[df[metric].idxmax()].logdir - elif mode == "min": - return df.iloc[df[metric].idxmin()].logdir - @property def trial_dataframes(self): + """List of all dataframes of the trials.""" return self._trial_dataframes @@ -189,9 +203,15 @@ class ExperimentAnalysis(Analysis): def _get_trial_paths(self): """Overwrites Analysis to only have trials of one experiment.""" - _trial_paths = [ - checkpoint["logdir"] for checkpoint in self._checkpoints - ] + if self.trials: + _trial_paths = [t.logdir for t in self.trials] + else: + logger.warning("No `self.trials`. Drawing logdirs from checkpoint " + "file. This may result in some information that is " + "out of sync, as checkpointing is periodic.") + _trial_paths = [ + checkpoint["logdir"] for checkpoint in self._checkpoints + ] if not _trial_paths: raise TuneError("No trials found.") return _trial_paths diff --git a/python/ray/tune/commands.py b/python/ray/tune/commands.py index 631935908..5fc23e573 100644 --- a/python/ray/tune/commands.py +++ b/python/ray/tune/commands.py @@ -148,7 +148,7 @@ def list_trials(experiment_path, info_keys = DEFAULT_EXPERIMENT_INFO_KEYS col_keys = [ k for k in checkpoints_df.columns - if k in info_keys or k.startswith("config:") + if k in info_keys or k.startswith("config/") ] checkpoints_df = checkpoints_df[col_keys] diff --git a/python/ray/tune/examples/mnist_pytorch.py b/python/ray/tune/examples/mnist_pytorch.py index b791f7415..be64b977b 100644 --- a/python/ray/tune/examples/mnist_pytorch.py +++ b/python/ray/tune/examples/mnist_pytorch.py @@ -4,8 +4,10 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function +import os import numpy as np import argparse +from filelock import FileLock import torch import torch.nn as nn import torch.nn.functional as F @@ -22,9 +24,9 @@ EPOCH_SIZE = 512 TEST_SIZE = 256 -class Net(nn.Module): - def __init__(self, config): - super(Net, self).__init__() +class ConvNet(nn.Module): + def __init__(self): + super(ConvNet, self).__init__() self.conv1 = nn.Conv2d(1, 3, kernel_size=3) self.fc = nn.Linear(192, 10) @@ -35,7 +37,7 @@ class Net(nn.Module): return F.log_softmax(x, dim=1) -def train(model, optimizer, train_loader, device): +def train(model, optimizer, train_loader, device=torch.device("cpu")): model.train() for batch_idx, (data, target) in enumerate(train_loader): if batch_idx * len(data) > EPOCH_SIZE: @@ -48,7 +50,7 @@ def train(model, optimizer, train_loader, device): optimizer.step() -def test(model, data_loader, device): +def test(model, data_loader, device=torch.device("cpu")): model.eval() correct = 0 total = 0 @@ -70,11 +72,18 @@ def get_data_loaders(): [transforms.ToTensor(), transforms.Normalize((0.1307, ), (0.3081, ))]) - train_loader = torch.utils.data.DataLoader( - datasets.MNIST( - "~/data", train=True, download=True, transform=mnist_transforms), - batch_size=64, - shuffle=True) + # We add FileLock here because multiple workers will want to + # download data, and this may cause overwrites since + # DataLoader is not threadsafe. + with FileLock(os.path.expanduser("~/data.lock")): + train_loader = torch.utils.data.DataLoader( + datasets.MNIST( + "~/data", + train=True, + download=True, + transform=mnist_transforms), + batch_size=64, + shuffle=True) test_loader = torch.utils.data.DataLoader( datasets.MNIST("~/data", train=False, transform=mnist_transforms), batch_size=64, @@ -86,7 +95,7 @@ def train_mnist(config): use_cuda = config.get("use_gpu") and torch.cuda.is_available() device = torch.device("cuda" if use_cuda else "cpu") train_loader, test_loader = get_data_loaders() - model = Net(config).to(device) + model = ConvNet().to(device) optimizer = optim.SGD( model.parameters(), lr=config["lr"], momentum=config["momentum"]) @@ -112,24 +121,25 @@ if __name__ == "__main__": args = parser.parse_args() if args.ray_redis_address: ray.init(redis_address=args.ray_redis_address) - datasets.MNIST("~/data", train=True, download=True) sched = AsyncHyperBandScheduler( time_attr="training_iteration", metric="mean_accuracy") - tune.run( + analysis = tune.run( train_mnist, name="exp", scheduler=sched, stop={ "mean_accuracy": 0.98, - "training_iteration": 5 if args.smoke_test else 20 + "training_iteration": 5 if args.smoke_test else 100 }, resources_per_trial={ "cpu": 2, "gpu": int(args.cuda) }, - num_samples=1 if args.smoke_test else 10, + num_samples=1 if args.smoke_test else 50, config={ "lr": tune.sample_from(lambda spec: 10**(-10 * np.random.rand())), "momentum": tune.uniform(0.1, 0.9), "use_gpu": int(args.cuda) }) + + print("Best config is:", analysis.get_best_config(metric="mean_accuracy")) diff --git a/python/ray/tune/examples/mnist_pytorch_trainable.py b/python/ray/tune/examples/mnist_pytorch_trainable.py index 9ce36e97d..65b756666 100644 --- a/python/ray/tune/examples/mnist_pytorch_trainable.py +++ b/python/ray/tune/examples/mnist_pytorch_trainable.py @@ -5,12 +5,13 @@ from __future__ import print_function import argparse import os import torch -import torch.nn as nn -import torch.nn.functional as F import torch.optim as optim -from torchvision import datasets, transforms -from ray.tune import Trainable +import ray +from ray import tune +from ray.tune.schedulers import ASHAScheduler +from ray.tune.examples.mnist_pytorch import (train, test, get_data_loaders, + ConvNet) # Change these values if you want the training to run quicker or slower. EPOCH_SIZE = 512 @@ -19,155 +20,35 @@ TEST_SIZE = 256 # Training settings parser = argparse.ArgumentParser(description="PyTorch MNIST Example") parser.add_argument( - "--batch-size", - type=int, - default=64, - metavar="N", - help="input batch size for training (default: 64)") -parser.add_argument( - "--test-batch-size", - type=int, - default=1000, - metavar="N", - help="input batch size for testing (default: 1000)") -parser.add_argument( - "--epochs", - type=int, - default=1, - metavar="N", - help="number of epochs to train (default: 1)") -parser.add_argument( - "--lr", - type=float, - default=0.01, - metavar="LR", - help="learning rate (default: 0.01)") -parser.add_argument( - "--momentum", - type=float, - default=0.5, - metavar="M", - help="SGD momentum (default: 0.5)") -parser.add_argument( - "--no-cuda", + "--use-gpu", action="store_true", default=False, - help="disables CUDA training") + help="enables CUDA training") parser.add_argument( - "--redis-address", - default=None, - type=str, - help="The Redis address of the cluster.") -parser.add_argument( - "--seed", - type=int, - default=1, - metavar="S", - help="random seed (default: 1)") + "--ray-redis-address", type=str, help="The Redis address of the cluster.") parser.add_argument( "--smoke-test", action="store_true", help="Finish quickly for testing") -class Net(nn.Module): - def __init__(self): - super(Net, self).__init__() - self.conv1 = nn.Conv2d(1, 10, kernel_size=5) - self.conv2 = nn.Conv2d(10, 20, kernel_size=5) - self.conv2_drop = nn.Dropout2d() - self.fc1 = nn.Linear(320, 50) - self.fc2 = nn.Linear(50, 10) - - def forward(self, x): - x = F.relu(F.max_pool2d(self.conv1(x), 2)) - x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) - x = x.view(-1, 320) - x = F.relu(self.fc1(x)) - x = F.dropout(x, training=self.training) - x = self.fc2(x) - return F.log_softmax(x, dim=1) - - -class TrainMNIST(Trainable): +# Below comments are for documentation purposes only. +# yapf: disable +# __trainable_example_begin__ +class TrainMNIST(tune.Trainable): def _setup(self, config): - args = config.pop("args", parser.parse_args([])) - vars(args).update(config) - args.cuda = not args.no_cuda and torch.cuda.is_available() - - torch.manual_seed(args.seed) - if args.cuda: - torch.cuda.manual_seed(args.seed) - - kwargs = {"num_workers": 1, "pin_memory": True} if args.cuda else {} - self.train_loader = torch.utils.data.DataLoader( - datasets.MNIST( - "~/data", - train=True, - download=True, - transform=transforms.Compose([ - transforms.ToTensor(), - transforms.Normalize((0.1307, ), (0.3081, )) - ])), - batch_size=args.batch_size, - shuffle=True, - **kwargs) - self.test_loader = torch.utils.data.DataLoader( - datasets.MNIST( - "~/data", - train=False, - transform=transforms.Compose([ - transforms.ToTensor(), - transforms.Normalize((0.1307, ), (0.3081, )) - ])), - batch_size=args.test_batch_size, - shuffle=True, - **kwargs) - - self.model = Net() - if args.cuda: - self.model.cuda() - + use_cuda = config.get("use_gpu") and torch.cuda.is_available() + self.device = torch.device("cuda" if use_cuda else "cpu") + self.train_loader, self.test_loader = get_data_loaders() + self.model = ConvNet().to(self.device) self.optimizer = optim.SGD( - self.model.parameters(), lr=args.lr, momentum=args.momentum) - self.args = args - - def _train_iteration(self): - self.model.train() - for batch_idx, (data, target) in enumerate(self.train_loader): - if batch_idx * len(data) > EPOCH_SIZE: - return - if self.args.cuda: - data, target = data.cuda(), target.cuda() - self.optimizer.zero_grad() - output = self.model(data) - loss = F.nll_loss(output, target) - loss.backward() - self.optimizer.step() - - def _test(self): - self.model.eval() - test_loss = 0 - correct = 0 - with torch.no_grad(): - for batch_idx, (data, target) in enumerate(self.test_loader): - if batch_idx * len(data) > TEST_SIZE: - break - if self.args.cuda: - data, target = data.cuda(), target.cuda() - output = self.model(data) - # sum up batch loss - test_loss += F.nll_loss(output, target, reduction="sum").item() - # get the index of the max log-probability - pred = output.argmax(dim=1, keepdim=True) - correct += pred.eq( - target.data.view_as(pred)).long().cpu().sum() - - test_loss = test_loss / len(self.test_loader.dataset) - accuracy = correct.item() / len(self.test_loader.dataset) - return {"mean_loss": test_loss, "mean_accuracy": accuracy} + self.model.parameters(), + lr=config.get("lr", 0.01), + momentum=config.get("momentum", 0.9)) def _train(self): - self._train_iteration() - return self._test() + train( + self.model, self.optimizer, self.train_loader, device=self.device) + acc = test(self.model, self.test_loader, self.device) + return {"mean_accuracy": acc} def _save(self, checkpoint_dir): checkpoint_path = os.path.join(checkpoint_dir, "model.pth") @@ -178,34 +59,33 @@ class TrainMNIST(Trainable): self.model.load_state_dict(torch.load(checkpoint_path)) +# __trainable_example_end__ +# yapf: enable + if __name__ == "__main__": - datasets.MNIST("~/data", train=True, download=True) args = parser.parse_args() - - import ray - from ray import tune - from ray.tune.schedulers import HyperBandScheduler - - ray.init(redis_address=args.redis_address) - sched = HyperBandScheduler( - time_attr="training_iteration", metric="mean_loss", mode="min") - tune.run( + ray.init(redis_address=args.ray_redis_address) + sched = ASHAScheduler(metric="mean_accuracy") + analysis = tune.run( TrainMNIST, scheduler=sched, **{ "stop": { "mean_accuracy": 0.95, - "training_iteration": 1 if args.smoke_test else 20, + "training_iteration": 3 if args.smoke_test else 20, }, "resources_per_trial": { "cpu": 3, - "gpu": int(not args.no_cuda) + "gpu": int(args.use_gpu) }, "num_samples": 1 if args.smoke_test else 20, "checkpoint_at_end": True, + "checkpoint_freq": 3, "config": { "args": args, "lr": tune.uniform(0.001, 0.1), "momentum": tune.uniform(0.1, 0.9), } }) + + print("Best config is:", analysis.get_best_config(metric="mean_accuracy")) diff --git a/python/ray/tune/examples/tune-default.yaml b/python/ray/tune/examples/tune-default.yaml new file mode 100644 index 000000000..877ab1c11 --- /dev/null +++ b/python/ray/tune/examples/tune-default.yaml @@ -0,0 +1,51 @@ +# An unique identifier for the head node and workers of this cluster. +cluster_name: tune-example + +# The minimum number of workers nodes to launch in addition to the head +# node. This number should be >= 0. +min_workers: 2 + +# The maximum number of workers nodes to launch in addition to the head +# node. This takes precedence over min_workers. +max_workers: 2 + +# Cloud-provider specific configuration. +provider: + type: aws + region: us-west-2 + # Availability zone(s), comma-separated, that nodes may be launched in. + # Nodes are currently spread between zones by a round-robin approach, + # however this implementation detail should not be relied upon. + availability_zone: us-west-2a,us-west-2b + +# How Ray will authenticate with newly launched nodes. +# By default Ray creates a new private keypair, but you can also use your own. +auth: + ssh_user: ubuntu + +# Provider-specific config for the head node, e.g. instance type. +head_node: + InstanceType: c5.xlarge + ImageId: ami-0b294f219d14e6a82 # Deep Learning AMI (Ubuntu) Version 21.0 + +# Provider-specific config for worker nodes, e.g. instance type. +worker_nodes: + InstanceType: c5.xlarge + ImageId: ami-0b294f219d14e6a82 # Deep Learning AMI (Ubuntu) Version 21.0 + + # Run workers on spot by default. Comment this out to use on-demand. + InstanceMarketOptions: + MarketType: spot + +# Files or directories to copy to the head and worker nodes. The format is a +# dictionary from REMOTE_PATH: LOCAL_PATH, e.g. +file_mounts: { +# "/path1/on/remote/machine": "/path1/on/local/machine", +# "/path2/on/remote/machine": "/path2/on/local/machine", +} + +# List of shell commands to run to set up each node. +setup_commands: + - pip install -U https://s3-us-west-2.amazonaws.com/ray-wheels/latest/ray-0.8.0.dev3-cp36-cp36m-manylinux1_x86_64.whl + - pip install torch torchvision tabulate tensorboard filelock + diff --git a/python/ray/tune/function_runner.py b/python/ray/tune/function_runner.py index 1e27915df..2b99a5c4c 100644 --- a/python/ray/tune/function_runner.py +++ b/python/ray/tune/function_runner.py @@ -33,10 +33,11 @@ class StatusReporter(object): >>> reporter(timesteps_this_iter=1) """ - def __init__(self, result_queue, continue_semaphore): + def __init__(self, result_queue, continue_semaphore, logdir=None): self._queue = result_queue self._last_report_time = None self._continue_semaphore = continue_semaphore + self._logdir = logdir def __call__(self, **kwargs): """Report updated training status. @@ -77,6 +78,10 @@ class StatusReporter(object): def _start(self): self._last_report_time = time.time() + @property + def logdir(self): + return self._logdir + class _RunnerThread(threading.Thread): """Supervisor thread that runs your script.""" @@ -131,8 +136,8 @@ class FunctionRunner(Trainable): # reporting to block until finished. self._error_queue = queue.Queue(1) - self._status_reporter = StatusReporter(self._results_queue, - self._continue_semaphore) + self._status_reporter = StatusReporter( + self._results_queue, self._continue_semaphore, self.logdir) self._last_result = {} config = config.copy() diff --git a/python/ray/tune/logger.py b/python/ray/tune/logger.py index 9118663ec..54a79f43c 100644 --- a/python/ray/tune/logger.py +++ b/python/ray/tune/logger.py @@ -52,7 +52,7 @@ class Logger(object): raise NotImplementedError def update_config(self, config): - """Updates the config for all loggers.""" + """Updates the config for logger.""" pass diff --git a/python/ray/tune/schedulers/async_hyperband.py b/python/ray/tune/schedulers/async_hyperband.py index 0370d03d3..d3e56d305 100644 --- a/python/ray/tune/schedulers/async_hyperband.py +++ b/python/ray/tune/schedulers/async_hyperband.py @@ -45,7 +45,7 @@ class AsyncHyperBandScheduler(FIFOScheduler): metric="episode_reward_mean", mode="max", max_t=100, - grace_period=10, + grace_period=1, reduction_factor=4, brackets=1): assert max_t > 0, "Max (time_attr) not valid!" diff --git a/python/ray/tune/tests/example.py b/python/ray/tune/tests/example.py new file mode 100644 index 000000000..b6cb1f885 --- /dev/null +++ b/python/ray/tune/tests/example.py @@ -0,0 +1,36 @@ +# flake8: noqa + +# This is an example quickstart for Tune. +# To connect to a cluster, uncomment below: + +# import ray +# import argparse +# parser = argparse.ArgumentParser() +# parser.add_argument("--redis-address") +# args = parser.parse_args() +# ray.init(redis_address=args.redis_address) + +# __quick_start_begin__ +import torch.optim as optim +from ray import tune +from ray.tune.examples.mnist_pytorch import get_data_loaders, ConvNet, train, test + + +def train_mnist(config): + train_loader, test_loader = get_data_loaders() + model = ConvNet() + optimizer = optim.SGD(model.parameters(), lr=config["lr"]) + for i in range(10): + train(model, optimizer, train_loader) + acc = test(model, test_loader) + tune.track.log(mean_accuracy=acc) + + +analysis = tune.run( + train_mnist, config={"lr": tune.grid_search([0.001, 0.01, 0.1])}) + +print("Best config: ", analysis.get_best_config(metric="mean_accuracy")) + +# Get a dataframe for analyzing trial results. +df = analysis.dataframe() +# __quick_start_end__ diff --git a/python/ray/tune/tests/test_experiment_analysis.py b/python/ray/tune/tests/test_experiment_analysis.py index fc026cc9a..ea9ee8cbb 100644 --- a/python/ray/tune/tests/test_experiment_analysis.py +++ b/python/ray/tune/tests/test_experiment_analysis.py @@ -34,7 +34,6 @@ class ExperimentAnalysisSuite(unittest.TestCase): global_checkpoint_period=0, name=self.test_name, local_dir=self.test_dir, - return_trials=False, stop={"training_iteration": 1}, num_samples=self.num_samples, config={ diff --git a/python/ray/tune/tests/tutorial.py b/python/ray/tune/tests/tutorial.py new file mode 100644 index 000000000..be5b5520b --- /dev/null +++ b/python/ray/tune/tests/tutorial.py @@ -0,0 +1,106 @@ +# flake8: noqa +# Original Code: https://github.com/pytorch/examples/blob/master/mnist/main.py + +# yapf: disable +# __tutorial_imports_begin__ +import numpy as np +import torch +import torch.optim as optim +from torchvision import datasets + +from ray import tune +from ray.tune import track +from ray.tune.schedulers import ASHAScheduler +from ray.tune.examples.mnist_pytorch import get_data_loaders, ConvNet, train, test +# __tutorial_imports_end__ +# yapf: enable + + +# yapf: disable +# __train_func_begin__ +def train_mnist(config): + model = ConvNet() + train_loader, test_loader = get_data_loaders() + optimizer = optim.SGD( + model.parameters(), lr=config["lr"], momentum=config["momentum"]) + for i in range(10): + train(model, optimizer, train_loader) + acc = test(model, test_loader) + track.log(mean_accuracy=acc) + if i % 5 == 0: + # This saves the model to the trial directory + torch.save(model, "./model.pth") +# __train_func_end__ +# yapf: enable + +# __eval_func_begin__ +search_space = { + "lr": tune.sample_from(lambda spec: 10**(-10 * np.random.rand())), + "momentum": tune.uniform(0.1, 0.9) +} + +# Uncomment this to enable distributed execution +# `ray.init(redis_address=...)` + +analysis = tune.run(train_mnist, config=search_space) +# __eval_func_end__ + +#__plot_begin__ +dfs = analysis.trial_dataframes +[d.mean_accuracy.plot() for d in dfs.values()] +#__plot_end__ + +# __run_scheduler_begin__ +analysis = tune.run( + train_mnist, + num_samples=30, + scheduler=ASHAScheduler(metric="mean_accuracy", mode="max"), + config=search_space) + +# Obtain a trial dataframe from all run trials of this `tune.run` call. +dfs = analysis.trial_dataframes +# __run_scheduler_end__ + +# yapf: disable +# __plot_scheduler_begin__ +# Plot by epoch +ax = None # This plots everything on the same plot +for d in dfs.values(): + ax = d.mean_accuracy.plot(ax=ax, legend=False) +# __plot_scheduler_end__ +# yapf: enable + +# __run_searchalg_begin__ +from hyperopt import hp +from ray.tune.suggest.hyperopt import HyperOptSearch + +space = { + "lr": hp.loguniform("lr", 1e-10, 0.1), + "momentum": hp.uniform("momentum", 0.1, 0.9), +} + +hyperopt_search = HyperOptSearch( + space, max_concurrent=2, reward_attr="mean_accuracy") + +analysis = tune.run(train_mnist, num_samples=10, search_alg=hyperopt_search) +# __run_searchalg_end__ + +# __run_analysis_begin__ +import os + +df = analysis.dataframe() +logdir = analysis.get_best_logdir("mean_accuracy", mode="max") +model = torch.load(os.path.join(logdir, "model.pth")) +# __run_analysis_end__ + +from ray.tune.examples.mnist_pytorch_trainable import TrainMNIST + +# __trainable_run_begin__ +search_space = { + "lr": tune.sample_from(lambda spec: 10**(-10 * np.random.rand())), + "momentum": tune.uniform(0.1, 0.9) +} + +analysis = tune.run( + TrainMNIST, config=search_space, stop={"training_iteration": 10}) +# __trainable_run_end__ diff --git a/python/ray/tune/track/session.py b/python/ray/tune/track/session.py index faf850e5f..65301afde 100644 --- a/python/ray/tune/track/session.py +++ b/python/ray/tune/track/session.py @@ -51,6 +51,7 @@ class TrackSession(object): self.trial_id = trial_name + "_" + self.trial_id if self.is_tune_session: self._logger = _ReporterHook(_tune_reporter) + self._logdir = _tune_reporter.logdir else: self._initialize_logging(trial_name, experiment_dir, upload_dir, trial_config) @@ -60,6 +61,8 @@ class TrackSession(object): experiment_dir=None, upload_dir=None, trial_config=None): + if upload_dir: + raise NotImplementedError("Upload Dir is not yet implemented.") # TODO(rliaw): In other parts of the code, this is `local_dir`. if experiment_dir is None: @@ -74,11 +77,10 @@ class TrackSession(object): # misc metadata to save as well self.trial_config["trial_id"] = self.trial_id - self._logger = UnifiedLogger(self.trial_config, self._logdir, - self._upload_dir) + self._logger = UnifiedLogger(self.trial_config, self._logdir) def log(self, **metrics): - """Logs all named arguments specified in **metrics. + """Logs all named arguments specified in `metrics`. This will log trial metrics locally, and they will be synchronized with the driver periodically through ray. @@ -86,10 +88,9 @@ class TrackSession(object): Arguments: metrics: named arguments with corresponding values to log. """ - + self._iteration += 1 # TODO: Implement a batching mechanism for multiple calls to `log` # within the same iteration. - self._iteration += 1 metrics_dict = metrics.copy() metrics_dict.update({"trial_id": self.trial_id}) diff --git a/python/ray/tune/trainable.py b/python/ray/tune/trainable.py index 04ebbf527..5398e6f77 100644 --- a/python/ray/tune/trainable.py +++ b/python/ray/tune/trainable.py @@ -459,7 +459,9 @@ class Trainable(object): Args: checkpoint_dir (str): The directory where the checkpoint - file must be stored. + file must be stored. In a Tune run, this defaults to + `/checkpoint_` (which is the same as + `local_dir/exp_name/trial_name/checkpoint_`). Returns: checkpoint (str | dict): If string, the return value is diff --git a/python/ray/tune/tune.py b/python/ray/tune/tune.py index 6f1913bd1..049306305 100644 --- a/python/ray/tune/tune.py +++ b/python/ray/tune/tune.py @@ -266,6 +266,9 @@ def run(run_or_experiment, trials = runner.get_trials() if return_trials: return trials + logger.info("Returning an analysis object by default. You can call " + "`analysis.trials` to retrieve a list of trials. " + "This message will be removed in future versions of Tune.") return ExperimentAnalysis(runner.checkpoint_file, trials=trials) diff --git a/python/ray/tune/util.py b/python/ray/tune/util.py index 06cb4f0eb..c6851f26e 100644 --- a/python/ray/tune/util.py +++ b/python/ray/tune/util.py @@ -180,7 +180,7 @@ def deep_update(original, new_dict, new_keys_allowed, whitelist): return original -def flatten_dict(dt, delimiter=":"): +def flatten_dict(dt, delimiter="/"): dt = copy.deepcopy(dt) while any(isinstance(v, dict) for v in dt.values()): remove = []