From e4c144851549600ffde5bcf875304d5edd98e2b1 Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Sat, 9 Jul 2022 10:44:30 +0200 Subject: [PATCH] fix xticks when using dates (#59) * fix xticks when using dates * remove unnecessary prints * Update climate-stripes.xml * fix lint issues * time column may not be called 'time' but Month, etc. * add option nxsplit * replace image when using dates --- tools/climate-stripes/climate-stripes.xml | 11 ++++++++--- tools/climate-stripes/climate_stripes.py | 15 +++++++-------- .../test-data/T2Mstripes_with_axis.png | Bin 18663 -> 18201 bytes 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/tools/climate-stripes/climate-stripes.xml b/tools/climate-stripes/climate-stripes.xml index 95452c9..0d4075d 100644 --- a/tools/climate-stripes/climate-stripes.xml +++ b/tools/climate-stripes/climate-stripes.xml @@ -1,4 +1,4 @@ - + from timeseries topic_3855 @@ -9,8 +9,8 @@ python - matplotlib - pandas + matplotlib + pandas @@ -35,6 +38,7 @@
+ @@ -134,6 +138,7 @@ + diff --git a/tools/climate-stripes/climate_stripes.py b/tools/climate-stripes/climate_stripes.py index 969dcbe..5f84ff4 100644 --- a/tools/climate-stripes/climate_stripes.py +++ b/tools/climate-stripes/climate_stripes.py @@ -72,7 +72,10 @@ def __init__(self, input, valname, cmap, output, xname="", self.plot_format = plot_format.replace('X', '%') def read_data(self): - self.data = pd.read_csv(self.input, sep='\t') + if self.xname is not None: + self.data = pd.read_csv(self.input, sep='\t', index_col=self.xname, infer_datetime_format=True) + else: + self.data = pd.read_csv(self.input, sep='\t') def create_stripes(self): data = np.zeros((2, self.data[self.valname].shape[0]), dtype='float') @@ -86,15 +89,11 @@ def create_stripes(self): vmax=self.data[self.valname].quantile(q=0.99)) if self.title: plt.title(self.title) - if self.xname: + if self.xname is not None: nrange = self.data.index.values - n = int(np.floor((nrange.max() - nrange.min()) / int(self.nxsplit))) - date_list = self.data[self.xname].loc[::n].apply( - lambda x: pd.to_datetime(str(x), format=self.format)) + date_list = pd.to_datetime(nrange[::int(self.nxsplit)], format=self.format) date_list = [i.strftime(self.plot_format) for i in date_list] - nval = int(self.data[self.xname].loc[::n].shape[0]) - ax.xaxis.set_major_locator(plt.MaxNLocator(nval)) - ax.xaxis.set_ticklabels(date_list) + ax.set_xticks(np.arange(0, len(nrange), int(self.nxsplit)), date_list) ax.xaxis.set_tick_params(rotation=45) else: ax.set_xticks([]) diff --git a/tools/climate-stripes/test-data/T2Mstripes_with_axis.png b/tools/climate-stripes/test-data/T2Mstripes_with_axis.png index 3708164cf4e084cec89eeee98e98c93a300bddef..e8093410d82d81cc2b83d9ea37777014318c489e 100755 GIT binary patch literal 18201 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 literal 18663 zcmeI4byQSs+vo>TQ9(*lO2I@Vq;pUyK`=lfSYn`>uKOgG}VrK7q-}lwm?;8JyO0s9qoIis?q0ZiulX{Fo5zfQ+ zt*1`He_iL=9>D*O+ugaRatglOPCfU7pHExMY1pAqWO~TI1R3abQ~0Hjy|lW$vXzm& zlb)?1%0kcH+T68TaJ_+6OyIejN}{@nDGjn-gAr$Y@o zetWJm4<|7fwP?c1dV%%tSA5~F2w76l{qyzwG)I@e-#=d*FHeY2{PXqx#AnH? ze_vUMqM85uN-3K9W3hi<*?LSp;oRSsYM_Yi|8-5`XaBhkUwnx3l~tsZ)$(=bM=Oe2ss$(9&c%v4 z$?UGrB$}QdE_vb9J;;QoE7xz5-} zNm8eepFEj#@52@KTDM)pGSluP>G|;*QFhfFzn3pjDj5$6-1oMc4iEN-wLReaCVd$c z$BrE%r>6GtA|ztv=kGV54{!4c*Ks+`Bw{bQ(31))ctb*O+f6sy5$!9wTu!Kze(wGI z_wyrVT%n<%VxNRD>z7`6d#{Z-O=vrg`1x51MEUvUdtYG1r)!j&(~CI#eyy7ORIe-H z_BHKFzF-z~@J-FqXH#E%gj_aE-dl2AzI?*)d)VzN$EDR#J8Z*(eUehF$SD#Mj-Dm0 zpyFb_OINPAv@iCg60<+adTrX9hH1ANEnf>F=_q6*B|1sU=qGG9yCV{o-IJ!sz$orQ z1)JJpSa(HKlwoacE#q7rPIa=6x_?)38r=ak1+5D~d zE%dU<&}Y3w>0e3G0bR+mWcEwL)FI+qbV~6OL8s4MnH;UK+gU1`upY4}BiPC2I^%j! zcXVLY9xX_AfZrrU{TV4Ea~j87)i*F$>rvoJR4>qv5VpJGu`@;Fw%M;XKU6S1QJQTz zR+*t*z{>2ldi!g0^UtotyAfiTTS{?a{vFYR$?_lBXA5trdhb^*=Jr*f(C zA1`rn<=5MBhG(~yeu#{`Zds-|kgItW^{WUgaih>d_rXkCc=+B*-Nc~YDEaR0Zs>;( zcGCF;BTMUF&pn{Ra70E%O4oLNfg==uocpw-?dg^ozC{gA{}TMf&VBU7z4CFYyzPYh zHZ>kUG^B1i^f|GmTHJNZuW{-f0pZF0r7Z?QOOC|E#L)Ne^*R>^^W%@7IPuN@+|_nW zMMcHq%*U5ARWf@f@|2~-bY2KKuOEx^!FZXdylR_{;lIeBTTXry6~mjEcU|>bluzAUpA6mC}hdDf?Yi z)Z5U@3Q-eRv|EjEV#Q`rZ(sp5>YM@sGzWXzg6VS|(L{>9pKWL4N$9vypavkQQrI|g z3R+qs6ryK*ig&YBb5SVGQuEs(%;Mw>3<02aaNJ48*f=5k`G;OhOrnk?-b7?F6}B^z zD=Q%p5p;;OT~&(V4!@_M(1^pLL(WjM*H28afL=7LPBp@9Y^ZDOZ9qltfX-9U)1Lqe&GtA>eYR?));rBqz1o>aCYTYiOUH?blEK;tIsB&Tj1v!l-39x43@$?_=FEMI zm$zfk*x2}PFQ3@aJ`RyncC|bbxZ=|iGei@7wy>~|!LY8Ky}e{OvCH!WA$iP805f)hR#9 zpS!e2@LW^PQTG~}ZI2{W?0pv#W8Qh=NfuS5z(f!Qk+_ z?{>R%FE(=5%w2;1UjJJw*U2)puM?X0!16u53%@_Mk% zDr`Q`3oj3$=RFyfrq>e8G~btb?#`V%4 zv{l3-QPC-Jwn%G_XJ`dl9H0z zF&-Ws4ssw)z=98h(b*viOF9`^(j}Eq{KRl4Q4d?fJAU6Q4z_axXWA{b7$K*n z^##lR48O79_xA0Vo>T=MFk&&nb|;f%L$=fpcjw||M@lW$zFm!fwlZGhJmo{%mHvR` zxuIbqIJuoaMcCEF{JNhr;kq*Zl$TeV8LXVEJ;3RmA|`GOyRQ5&N1X>Gk5IeHu}MwW z-G_+T8TC>pX3Sww8zQOtlzSf#6?Iq~nEI%u)9{{6mfLm9Jj6jMTHq|dSzo=TRgKT& zmVQSF4nJ9vvd9=GOmu>OS1%`t|G1GauEEZP?k_QP9yJ z2lw;mM-fqeEuK9~CG!=papyA-cB2L{r)4d%tsw&;%zBE3xht)i&*lRc7rb=YF03R0 z%nO}>IUU^V&DwMeDDYuDSKYq8&a4>h`TaOCdN4W7U;WR$|M<~oP}h^GBZ|M#s_x(o z?7gH^SDv=0P^=QNo|*3-8#9&DKRYfxjRET%>R#ctYg?|xS!_9mUlFY(2V0CnrT1z~ z3WLQcGRFRFea|*)xI8}F8B2_!6S98hwW(tsi+cC&-OEacMID=J#A?~v-ZC4=G3^{F zFd#xDfPX*nDPOy)ba($_xk?>a88(n7&hWNr+btwiSpW5{wY639;lnO!s}FwjEFFWo zQ|BlS&c%v2$p8HL^Y}{?IU0>N9WKtS-Wq;kd$^AYF(hbxefr#)oMgA%^`3lPv>iS< zM1m64Q)V@BtS#?pi9D(m^v&a2`8p2Qp&&ouv1eg-2wLzJi+wcu>bx(Oe+f ze7yRH!Qs!QfD

_Lj=RN4I=99sFI}KHW^c<8vl7E^e8}bF$uxl8Wk*si`R|Ya#3o z!NbX(p^JCloI=s_n}xOPJ1!01yMI4WIQHYm%cx62LhA6qhMm~9whtgS^572JF%UI; zfSa^|4G|lF2^H%Drw0D#R4#Nb|+qP=v1pqNg<1ItkTwT zo;ndS15V@ys5{?wBVgAnm6m*vBDMrJr2{atl*;=u3F(rtr8Q<9Tk zK>gaD@Z_?O1%aWYr@!trY9s442d?@m*sl|ZZc}+x%ao|~0Zpp|i}rC_TU$`YE0i=e zvpi{m9ut)gFT4gfmPXX>+`Y?H*$JLJCFN2#Uv7QshN#mrUr2oVgZM4yN>AB5EU3>nFEefsnUE}ryaFb`Y@^T}%T(S!^-PaJPEX*}4T z(0z6Y%K1J#e2%9MEE4ksohT!z{o=q`QO7^rxMH|NvBe0@qeqXJc}lD%m|0)(zZh`N zDYBdE^ck-=Yj}0S1Wfv?SFa|mg(m0be0OnkuD_D5@tbs^3JMCCai2J~&s2>C>(sbl zic_^JY#}0SzKqK-J%3)n+;4l_l`Owz>%4%)@az5k{TsoH`UiGAHLlxR5z9Y{u0kG? z^&}g$zq#Z%QR^-~OhrZY+NdKc(gF+wm1WhE!2MVeYA_fAU}0w0uAT`G4GUA5Pn`^J zo3fq+U~)}{Cd+L7%UFt&iAH=2+LIOHMKT^Hsv|HN=Y5rBe`8(L#)%dKb-C~#0j#G zA5$V>3Rpp!@^-v@7^gPAFnp;$o7Si^#vf82{ie6nJDY>L1#oLA85!0aH`=r~k=&&1 zQ_ZhRr5GWv*RPL*0%7)vPoMVk)9UplrEQ*atXi9mwxSv8yh|p29Cf1f95eGW&(g|@ zXZJ4atC$$ZkX;|@3(eJieJWr=Q_|9Y!cw@%mAy}%Jrk7qnenFjXB3=(4BWfmS;H~& zq0a=-f>y}hiQ7I3I}ZD*TRU2vFCBTy5QPE-$&;<4ax^V(o4Hfxaq!uBO&>YbrIE62 z=kc8jZF^VyQIkkSwpG!_56;bgd6XV@=8lxqaYSHGo;^P~?z$pvZT)%os_02JvcVU1 z7g-B$9iA1Tcto*=!!?4*Uxiq1WZH^9R>{~aiQ?M6BDeMK#A8UFNg)7kf){WbwbR*o zC@CpYBc^gPskYAeUB|rFPkl<!3|__Bp?wo8|e6Vq~j6Z@gI=VTQ+WnF8P|s9o$1H3#C6vLf`X*)+7xV+&$|H3%=0!OR&Ebitc*w5w>IWUJm>wHTl2 z;meie3}zI51vam=zECN>sLP7Tz`$V2w&JthoKlfGB?X6eA-58{K*T~$he z9akHA`)ZAZMS}5$YEJ!1-O*v$nr5#2O)xi699ALZGN ziUu+YQ}$=8wLlIGX^w7!bO6mP)~903l2O8q4y?{sC^q=Y1fADbZbxw&G?NsY|Dc58 z5)>rFypXI3;u%Dqk*xFM4K*E{0H+Gn$41?^$D9{Z!;#cre-3@r0M=j3ciAvTPv6ZL?f~+M#!?`(6@6 zch2~Qbf_Zu*4Im3x_nu0X}AO`Qd80a4TxMBv;@zCj|Thw268_0(Q*nyZ z&b0<279^;K@FhdH?$EGheyR5Xn%`5Rt31H9@y*%p3Oi$zWPjEZ9>_wFoPVgsRdBe} zB7pL;`~_iQ`e*?Q#OCU_EL`4)3K5;S3m=k{fB$%+5sO8v`&Ur0?rgPuh32lTCpQok zL&_U)U}AA2#ik#2?Vi)q(+k=BJWj)C>k(o@CRES_%qSj{5zp zs@Xi*;7x32QdDi{lf`UYuMj)3~IXR@Nh}uDvwhG&&2W1I53AggybKbPWf;2vcbe+qE)@h|GBS34Pa~Z7eM+jZizkK;}>Cz=BBpQau@7iZe3dlTzTOlDy zQOSJ#b8hY`4-e0JD_ck_QvWjS>FqTHj|_D+{KlbEG{K2S!Q(6zwv+0i5a;s9n8> zE!Eu!K0+VvB%|Iz%Av!T2W}k%JSdDq<1qx_DUhn(f+D~@Ma7!uuAEd%Ozzz~#8nJO zkZ#<7stQ$l?{)C#VG!L>MTH<%&b|h!3EbhD#U}5e)FO+lkemDAa^)iD?#^@waS%V` ziV!4gPX-@INtK;Zl=_ADB$1SovNtd^HfDp)1oSEx(-fm;7p*hM4VnWRpl}k5o5QjR z2@MTSJ^LPZ9g@S7q%0EVjrTk=irOoRodr-@eW93!uGl@w%i5>-3}#5cEUh@DqwGYYx|>q$C;@M*q{& znfTu{YDjg7CLOB~t$z28+$0K?|F^~Cm-p6ha(@@+=kM>;;W#tlyH_pwKwkb16jt4s zPC^s_Uyt4k+5S59{nJg?rhFX6ifi6dQpFJBa7Tn+EJYg{{fFeZsSxsIxW*s`SE7UTk4G#v67&KX9qk9LMTbx zV7hcu!U^fc-qYy$HlH`YL(;JsrZtMI+k-4M`6SlFDjeG zInNIkCfD(}3YR~&M)@x82@Osz-^I>&uGyB;m97LN7Kh02;+IV~QC+@fSAC)AA)$V%*;qCifpY+CNoo(41 z961oz@43V7d|%-=smbNV`6H}EE;`(E++gJMLd8JL6npa+exF=i=H`XR@tsfd&mA~~ zzE43LEiCq{cwAbFc&c>NO?b2NlZ3@azNoIJ%1Ey{socQ5khx!@7u`iPSwf!vIEmly zb=}w%*1%6|)Wl!D7b4BuY~xaC=FQ`%g0^_j#lmFfR9o}rFd_%vo2GyNiMwGSwqEjr zC<8NV@`lBy7ilflX1=v=3vX_uF={1p8UMPb>sg~JHc*uN%`-z?VLl|1eM_GJzkYdR zqU@u09mZ03iFbim^%&|^mK2JUKhA7%DU{8Hv$&^ur*H7OZ(jkM_+3wl$4oblyEDX{F@Pl z{SpQn%2E#Q!)bH!#401L3fmD@j6|2EHz3Hbhkt}h4I&) zcziXbOVv!DlKXJxoJ@e~p3QgFgSCy@n@{`ej5lmde#sCAb%%@QHRrB#M?i-pKyk@NAYFYJWSoT<-<5p9)K(>2wipVF!%>Bzugx|9#o_F>bgfjguSIrBQ z&9POPkU7+F_jEK|+#?Pyb*rw=FK%K)P<|sXo+&$jlmNw^V6JM zcXf503Ef?1cgV=R|DZFlRoZCPR+<{|r!BslhPO5y8q+#?=Xy6}!$mCV=bG=kPuxzh z(dl7npO&IOhzQR8Ek>EjBHOXV(83-)D9k0!bS=%6F7aol>d3kp?m;$PEPL72&?h7= zp7aM461pybTYR zHr7xkN+NNlJM!Nw0BLN~MvPBbcZh2u_2wZ@Gk@RI;QUehITwb}UA#?Fd*j&-BZd~1 zUF8Yvdgpx0sk%^?V4TtdkI|pOK|Qq*$K!jMLz|^1)Oz;ru5XxX2C?H$2IAzS4w-K% z&xjm+j^i?3Bk%Xb?_N1_V@6%rzJDdyvKt$HsN}Bsk)_+tG&tb*@0yHZY%B%d^^{s# zZE(ARi>HrDZ_6FWLJ4;l-|_qg9(=h(m98fjB~@y3ph&52SzpM9xiZGJAtlGG+B%|^ zPp>;3uvlrdY+@Gf;VZs>%$?&)O7qYWDth1%HG&oa_^M!3w^c>R97>9-;m<3FQ)Hrf-i5BF2w0 zf4I~gX3jDg`<8QyH^*>@&&mgFj2frTyN5>RgQzCu)?!y#`iFs^p-S4^Sp+datPH``O=j_?R7CWUh=4q^1 z?IY7Mnyipmt^PM|{K2tahpkk%^K-3PqbH_)cnX`2}qODEi5(p9#?e@z`%ADxV;KMs)&XrfD{UAz<#6d7qXkP;U1GeUixaYl6?o z?6k#ReKo7|L1e~($HuN*3pyq)*cx;7kbMP{RWp9Vg{MTT_HD;d+FGKwONBCd(U@pG?T33*V0I@wkX+Y-Y$o_?3l8{64@Tb0wc1)o!em!mqO(&Hna6y~MFiX`$ z3ZwnPPyPcWw6t5ox{EXHE#;$_g8HU?Dlw=Xhdqfb=YxV5b_IyLj0<}A^5rJZl; zt2LsUPi!DpOK2$#iZN?0Y_1K{$&zY!uPAI9WDMuy_Q4ip492Qi4c+N?If(JF7OFX8 zzo`|cyu#({lB?PDT&;zM%_(ubh18*)CO?MW;v0{CTX&hUVDsy!_=QzQwnHWK4mFOw ztH$nGU@wV#t>(>@^nu7}>TDT-pWl3e^&Ta`|T5= zN*P+rK8pH^$WT=!#MbMsklFRS1i3dRrV$2hhnO8S1qwKCCKu?GExkIX-So`74X(4- zeXXnCR*9|bWWGD;?@gIH28(my664-A>v~^}1e;~@&|jBS*M`OLT=hb-y9_O-+=Z)n zl=@27`|R_E$@oi{)1ye&o{qPtitOXFHyNh8bK|(1Nvx+lO#ZOBpbtv0^NYoq4#I)5 z{1cZ2K!T~GJLYxs$wmVQP0dKCaNjGQk_aD?9?#ywXFHsq=5BeB12W{IliC`{|Mi8~ z`2#b?587rTa=C*-rO_<}B{2m|=>GVNO6Vdrm4bj~p4Oj&sV8 zHP9LkDoD_$DbZmIzOWf5F#Rfmakj8ht0Zu(S}}JdG0nTbxI5m6q2EP|{ffbG;(+l+ zxD&%cpFv#r0P*kI>;s&|_@&^#f&2e!HtV0O{?A4KH)+)W9q;x(d+O)+KO*)2SETBv z7Ew~iQSTfNt0iLN^3ZzNUKSkhrmR}tVT9U!&->V}aO@+jvGGC(Deb$+zre>A-&FDiZS(betj7(Wb{b3CWqGu! zE_FQE9uhEjX)&odoPD9fwy}#Lz(3C`und2zSaMyV=}$VQn8K{uY_5MR@X%o{dsBGx zhXB!~8;#S#c1&hD=NI4Ee{5sK9)9EyCyP?6JK}d#(d@8EPb22Y$J|Vx4LIAXdL&3! zaUU1hK^J0aFy>g2>-JG$PkJ~@xWBZ&`1h5LsS+~!K8X);*&zgKs+^OLr@#FP*9tK$ z=MUNCjuRZdp|i9-PSj^_8CwHTqp06H_&D#3JF0S2Iu3i|DAgV-Z_w zn9mEij?o`|JRB|aR{XhmY-{QsYm4@`?>M{9=MD_Z1wre-x7!Wip}u{Jv2=7I|kavKv#Pb@PYlsGyBDk(1xREIF>6qxB4 zTxtna^lVoVcKYSql%W$J`+*2e?LFJI*R&ioStFp3%d6I8hF$-2waP`J#d$n! z+e^{mGm>!1;+)+p+k!^jusknt=SP|)^vp+u9F4QK=5)H0P+ffm1M@_lCAl2@v8L6Y zDvN@_Q_Z!8#oyHPMF-DDD=@L`+liMNsx58cmSr6R`E6(TCPc66?8Vp|^5DlzqRYP; zczjYb-y&{)6S4MtL`kqY&qdKO&nB>oh4+c4kga%&Vw{4N@|%$*p4`ki{*vlOlhEPK zKqRJFD#=IDF8jvq`E5&l&qsUGw6QY3IwF)d_p2dI zzx~!0O9^MV3)j@f@S6fIx{6l8;ZM^)1j1b;wqG4k?z|wOTPg3Ge=}&p8788CRKi&@ zL66hc>20p83Fj@%#fZlzGY6F#WiCC>iU>O79r$3=P)wm*T9H$GKkmJzLHi4QWl?|e zFV|p;q99AGz;M5P@YDEi-EoWdCn3AE8~!$Kw|f!Q&qolwc*g7&BK-N}?9{s7sm^#bkf9OTE;U$U`{>HRR48HJFAni}^X3*2O}*F- zv)!|^?cOUqL<99=>V&vS*LE*{ZZgl6r?t+ria-B`S$_YWmLCGZRH%FI_Rx|^e-`|JGCAUq)KB|9t(QVfXl!DYAFu z@2L@@PeVhamejj-PKz@<|8BYIKHC}lT8g5RWg|lZxb941C*)eAbI zfc;&(dGoB@Y*ZkhrTyaQkeYMy1ZP_Awbq4J<}(E#nV+qZ9{cJ#iL6pm7e zU%W_g^J#HCplWZ&Yh06|QMI!*V)g#hr`g3W%j+X$RGx!AN<1~Ay?!^Nhyzx%H1`Z_Df-M=3OEd>m;cnt^hv&nz9N&_HlAZ8oRR1U=LGC%*5U?$Po#(7I7=-O9- z@Y#rE0i-ClzuG7f_M|I`m#f$6E!i>aLjag2da0-AD>VPq5ofi014GK@J?A06)P zKy!^?wKrmM0jL-{?q?|c_DaZg<+KFAOiV`0d4QqxhcniL{+gVU(w0MnU=7eiNjfzy zbUgaU5q^q$UNj?*7lkw}~>5Crj_ zhxBkYDdZBjFb{gdRVi?0Gk6?M*X{s zce!B#L~OH9*?Bh7m>Z#5_OBes2w6{}00#uz$QzMq==tvefMAW^F#R<%lL(I=Az*PH zwR}#kJ)MQj8FR2Xc=^heW`l9iM?=8Fdoq=;UVoAmmXe;ncdb&h1qALn^dx6Dvh!=% z4-XG}KI`4he4P4LN>;WFfCX08{nzU*Kgw;A5we0A2by{XwB;Q%>ikdDHPui+hf7@J z^D{3$zZ}gnrSmYN0NuSQ!39C}GRv_PXfdxt_gxM)?-#uCBXmStL8n-q#vH;`a?~He zxCO7ZZWm}0cg7iX2$pyQpao>8LQ1NxSVTZT6_~h-;2GY* z1d77Lhwl)mBi_#sS^Bv9wzlpY*ESg9i3D_6rxySF2J|YaDc*yfx(DE$JL8Xz4xw^? zXBtM(NRo+D6DS|*aTpCL1fb@aw2P5Z8ffSQo3RR?t({%R(f03tg+Go}KzV7v%!_F! zwzc&gpqt;IWA9G!QxPk42%|po&_>31l=@Xyi(!CJ?;vYC3r0H}aErZbS(*Vh?Sjm@ zu1oxx4-;R(tMRvTqQ_GuUW1!1;_zyuc-6?N=J zr9}$HVt)ExC1+$b*ZFd}`gw+&p^?#-B}X)mpobC%QK=`e;^J4!YKOyevE;LkV zj}blxPOAEw4MjOO5!BXhv$)J(blaKo&Co2%YuSfc98kJsz^EnswpcpV;z_=?v?!RE zWWd&%j+Ph1NVq?h0wmP-*HD4MI?%Fhz&v%#^!D_mfIC`;>7BQyxC}Vh!QK4BM}yIk z?&ZVm&V&=Y-I~n>P~evN5VuW*R{LFw3U%h{nVFeyfcjj8xxKa9VS;7g=M=!7rU2pf z7)CWB#a&AgT-t4XM|Et;u?-w*3NR=LI&tlq98j{qk~6F%d}j1u_hxb9;q0?>bHEg8 zKL>P&^^4uzN2{F;IT}UnH^yKL?m578VrX4sfRn?3cB%klo(e?%g@r?s?DNz8D2Z5ZQ#zJ0-4TerIjECr5+V^haUpu2bimFK_RLw_V1fkE(?jNr56M zf1fyBoX1B5WYZ_W_vO^pBh1GtH)YJUh@ZKGZ2b@iW7HT-`9Gb zcZmq`4={i<(F3-^L(=xFlRn3Dj8S;%gd1oaGb2j)_R*>&?Sdm(T$L=*%lu)Z*5fef3Kjk^$| zkRc$HB=FG?c=-TTgoNf20eePvsTl5M>S?%Umdf?`CU;)5ABC6U(0yTz$q=xrms?*P z$kz>lQ71waOp~-sq=es4BL#|PX1C&$_B~PveYveCB{?)pNno$G42O=)1@Y&+zHsVI z6d8wn{rZ(^hvCk+%^KbXa9hL<0f@&AF&;viX%s&9hp46vg3lCq@>>8lQ*_%+9c){w z@a6H5scay=JXIlFU?tddf5+xDG4TfoG<0BO>n04kF{7=d23ux+O#!*XniPMPv${=` z`s_0Cz-NyG7nnX7cUin?r=z3?;X%HphEwtXWEz%9HX^Y-dD^0Ge; zc`w2wuiMkVR6M|`? zLUFt8SRX%r9M#1&&F^t15#(q8dOoZDO-#A9XJYnTtoPn>6&Z*?Gw@>EF9tXenioHx zjEw1_CgF&Xxl({<-5GZ~eEumAY*SKFc9mLaf{eiY5n%+MDP^V8N-)fw(*VkK+sNn& zqEw79TS|D6MAF3M8iX;&U;q=4DP3RB-e=4?Q~DU^-Vy`gFh??0T^mHlZRA{ra<>?4SdfkK_SiF_`A)d>TA{S-LGTc9I$ zk;HYe?i<~*mjwj2T;A9#RH`#W@Mp-$Yua-O8N7x0l~&LX!!NH-Q!+Dif_vQ1`z1&V zHHI^7w_$6a!=T{ot#LK>!1Mg_2x|w!LxLis(KP>5G*)7T?PSjLnOxwiUVXKzT$EqE z{uV^$8%%&)0|}s{cpoBxmwQXg#R;t1N1$WnK?IyN94Pevd0Lb4>Ix)V+gcvG!5Zgz zQq-jD0xasMYYOWZM)ekl8(r9VG}rc+Q#{=LdyEsr*4G~;y+)$wwEL0zoq~s@7@%hN zYpPkdoG{KX$So~3@eOvJQy^LqC{%XP_>W+2bbZ`=^_bmO9t-;g2Mert>8TeP1p#J# z9|ljI1&3I_{w>!aG7Cno4NhEa_NeY?`v_6vo@_NP+*~CPu8)Vo80OWgtCXg%qEao&C3qk3-vTl^6_aFhUhWa&K#?zLwAq+{1i^li)kLk_g9n11w_2PP<>XEUyl1tqz(4@R z)jr5)HO>gM?!OkVW_KS_WqQP<(Oi=D`$vC7z=C*#)0hNov>CGBDQls3@$qCRIv9yY zxN7861cbgvv*4bc^$hog-$Y@^DIlLO;^xqA_wu2d8C)B8+KU6*0#OdA*gKo)W`sn= z2o8Y<(*jC%2B6GpQ3nbGW~8Q9lifk!`S|l+gSDgM;!>HCn)By9$i*gI{r&x&=M#OqAW9$g*js{; z6$yZ{5f=XhG0h~*ib_IMiHuM~Xh4YaIM`GJJa#o)1w`RrWkwn`swam~q(Z_uKE)4E z=bj|BFfCplLQdsPbuE{_tQX?)2ZWx3+y3G-Ah7I#7gJZ z_7`F<=jzkttH#DKOKg^Lb z5G;!TJ}v~@5onSD_@Y{p?X;$U)pHxrQjb)27Zw(ndtru#O0oABc&Ttm-~IhOyrW<$ zKn^A@A!n+*CZM46->Sz*`F3IiqKVz3(NQf53M4QG8_{A=0ZtNkwBP$Gspa1#<4x*s zW4gc*qfp?;1ftK5RXO?kB>>>w#do&RmkcSMSWngyz>%Rq#H0%}*1!Dwtx#q|r;%uQ2~ri-x-Rs(5tANeZttQ&<{IC84QwOA4Fdjz|24Qr^8`y#Ael^`Dz@!lastcYST<6~!eNZL0Q^5dyz34|z=B#Mv;emF*leDDx?y(AI*9d%L!emKtE1uwqv j(u)*+AoxFf%MNNSLQaNGW%?Vu2X#+cNh