From b2de0a5b7e6f6be50d47472e90dc0beb0af5537d Mon Sep 17 00:00:00 2001 From: yyonghe <153747610@tencent.com> Date: Wed, 10 Jun 2020 00:14:34 +0800 Subject: [PATCH 1/2] feat: support alignment translation of axis --- chart.go | 19 ++++++++++-- example/bestof.png | Bin 148198 -> 148407 bytes example/samplecharts.go | 1 + go.sum | 1 + graphics.go | 62 +++++++++++++++++++++++++++++++--------- scatter.go | 4 +-- 6 files changed, 69 insertions(+), 18 deletions(-) diff --git a/chart.go b/chart.go index 874e620..a7e4385 100644 --- a/chart.go +++ b/chart.go @@ -122,6 +122,8 @@ type Range struct { InvNorm func(float64) float64 // Inverse of Norm() Data2Screen func(float64) int // Function to map data value to screen position Screen2Data func(int) float64 // Inverse of Data2Screen + + AlignTrans bool // alignment translation of the axis: false: axis location left/bottom, true: axis location right/top } // Fixed is a helper (just reduces typing) functions which turns of autoscaling @@ -674,8 +676,12 @@ type LayoutData struct { NumXtics, NumYtics int // suggested numer of tics for both axis } -// Layout graph data area on screen and place key. func layout(g Graphics, title, xlabel, ylabel string, hidextics, hideytics bool, key *Key) (ld LayoutData) { + return layoutWithAlign(g, title, xlabel, ylabel, hidextics, hideytics, key, false, false) +} + +// Layout graph data area on screen and place key. +func layoutWithAlign(g Graphics, title, xlabel, ylabel string, hidextics, hideytics bool, key *Key, xalign bool, yalign bool) (ld LayoutData) { fw, fh, _ := g.FontMetrics(Font{}) w, h := g.Dimensions() @@ -684,6 +690,9 @@ func layout(g Graphics, title, xlabel, ylabel string, hidextics, hideytics bool, } width, leftm, height, topm := w-int(6*fw), int(2*fw), h-2*fh, fh + if yalign { + leftm = int(4 * fw) + } xlabsep, ylabsep := fh, int(3*fw) if title != "" { topm += (5 * fh) / 2 @@ -697,11 +706,15 @@ func layout(g Graphics, title, xlabel, ylabel string, hidextics, hideytics bool, xlabsep += (3 * fh) / 2 } if ylabel != "" { - leftm += 2 * fh + if !yalign { + leftm += 2 * fh + } width -= 2 * fh } if !hideytics { - leftm += int(6 * fw) + if !yalign { + leftm += int(6 * fw) + } width -= int(6 * fw) ylabsep += int(6 * fw) } diff --git a/example/bestof.png b/example/bestof.png index 5ce7f41e59aa4079b64847cf3bea48627cd2790c..b25ef8097b2cb186a4fc8821f49eed91880c9af2 100644 GIT binary patch delta 50945 zcmb@uWmuJK*9E#PLO~G_1PKvAkP@U@LJ$$88S-Gl$CKV)oCDTW4o)%|=6NXK#W{-wo7%Uny55yZ+}p6pHRrINSezFXfSegZ>_Y z|9jwni6lprj!7OWW?YJE$cYFE zzl@uclP7-Xbo9P*73Ek~T3Wh3+flqIz6p`3mwY7ELUEJFI zEsBYW$(c}?;$~oEw6e02pPM^u$;iZ%$YW!urWO|yqarNq@zEX^)o-t)q7oAsIb=0D zJZw;+N<%|4JUncBBcgK%{+sRM9@l+*zpIx&oHBcU>mMFgl9LOQdH7i;$++ zHA}`-wLMC9)jj0b)6>gU%v-J29uc}YO;1m!zNM|8FgQHCSKM@-SElCbdRk#N`nM(_ zW@|o1XMbsMVL0tEGjpT;+C;iU$X_M{1B1@aPGS~q*VDr-2HV4Ln3Nqme7Mg4-L(ST zB&}?c`J>>ko3QSv7h=dWMMJ}XfByVgUN+U${h6zfjeC!ijwbf=XEG}*D?UCxO3LI$ zw-Ztl5*|Lji~UI}|4F?n%W36eZLMs%2Vwg9`d+@ivvm%#)^!*tgCV4%Syji;awos$3t6r1nov^6~H-1+X+OPF5AarkkpBuo4p! zQ&NhWv!D32;Qislx84LUTpS$2Djk#ur^VJ>8|=ACk)~RO>79VKG{k`4e)TR@YfFnB z{0hAuJnu6C0s^FI>ui^P!WAce{tRm+iiM2VJK4y~|6H4_l1<|0LC#$%LKc4irrL1& znel>?lk?lRZ&xsHlCkM`Bnh}gI;WtD{XbT{kde7brT^!9&^A%(Yi{$gC&a`t5FNG1 z#rfmMk1H!Hvt^T`tsvwY&-OK3TwFLfI7CHT!l)(G)zq-PMUDq_kh2PhjTv=yb%d9f z*WKMcE-sEx{Myy4yUW97t)Fhg2S-OoPgYvkynp|5aB#BT>FHTPb91xP&Odl%$@pqt zBA?Yvy&7#q!;{1Q{?{TM!}%&pbs-c2bMLr4F>hsUXxG|y!V$=P4y%^90MRhj)+P?i z*YexZ$%%x71pDeoc)w?!2*whetDKyE+126v(W+T@24o~g$9+6sg#~VEXW<8n>KBjh z`H6`MA8&6tLYjz9!NXryj@8c3&npi0eh6LkQ{wMZ*xB0B%6yKEh!B+?HCe^nVH$(G+YZA&CU@GFMSC*sCx6pCeI zq)@{v^oQVy^o+cm+_&HF8jqJ5{L?I_st2m9bl`g00*HNmeC$_7UTJ8Y49W^cNj@YL zkBW|F)~X%q>hkY3)KF8i82j?xY+UCHHFf%i|?5~bjTc^jxk%Y8Q*4i;N7R1=J4xRVgIz_-K9VO{*BCGVs6$xaa*!z*DZl82Wd;C zK$VK{x>4U}dcy1NA(R(?I|-aUt^a(#hJmr|$d4ch7gyDnFJB}=C=3h@@kNx2GS z(?f`Ztv~H9PEOuFKD9M9^Yil%AJcH8r)q4b>l|2^n9f$qew3G&udc1dFsg;e#i_x8 zfe?rLg2QA0=LphT05OZZx6>hnEo7I0C_}ElpuU@@UP*8Xf*82VXh?>A7W@gw+ z>zbMxg)C_jp7(zXHISVaImv`iM%y8U(JzAcR&2?d+7?s zlQ`)kVK)m43p+bI!Q|xFSXH6=7T;Scii*<7f^J_uE=dHFZSC$B1i(Wu{Q<=9B#+9 z%rWSsLh{tGUx45Ba1-JhcAFGZMkKw$`}gmk2j1Okr$pGvdtg=AIXE84e5SKvWoPf{ z>|7c}iYd>0It|NU`-Dzb%RD?#Ha0dI8k6u+sm!0>KfWy+hsA{efx04+ihge=C#PKp zpRO(`TwGjO-XmYyGa@act$5g3NT9N@PreNe?RK*?)jMvbUDmz|*>QDsyzB-MV=RZ+ zNPntmu~yx`)m27haecZjTLwuyhKp+tBuP(8W7BQ@lvT&Z#l^+ST2fhAG(85D4qnB; z=!)`|vscDaS3C=2BNP{K-1NX>)BBF&T-^o50E=qjM{+iuf8$l1ddCviKXxl415b~3 zwzmOH_~4MptEs&ZBBY?`d-Fu_;?(AttA$nX`)k7ag@tS=u1J_cPbl2n&a@kxl@t~G_3Rhz#&y=~FQdwlT}cx4 zY?(w;Au%1EQA0~hZI{>5p40|^O+z9t8K*yy$4G*-^Y+QzT@;>kt>D>=1XeE6u)DgD zj8ITgTIuUY#>Ub`Nu8aY&6}mbU5}5CPdBQuPdbcL`RQU zHJ#B$bn5EqCET;Iv}AVco!&Ln*4FNhW~zfs3R!>YZO}HyjLuI8AxxaR!WV?6&C>(0 zdyg(|N1Zdp^o7)0vmmZiq%PK%Q1RaG5%er9R?cO=TYQn7UasA|OPb6v=X7uYDtyO! zk^~a^Jo_C0a(@2&d2tf5D(pOqYs*l7e<;gRh2z#7_5~@Yx$0W)<;#}=VllFe4cI<; z{`~p={(e|k80IaChhAiS_N$Q7c5Am;Y}_H4Ee)_cBH7na#;+9>hrYaRS(J?c$oG_i z;pKThWa%R927p~PR({RX z07f7IZ+*CeX*pgxe=v(6M{W(x{vEp+57ljL+0V*6>KUA-^G{Dt0a&#&G~uC8y&?;= zi>b)_QL`b-+zTHQLqpmy$;A)u?9NW4N0UR46Xzq`DEJ*WPd1t+Cnh+_r2!R4y?n`{ zRV#*tjg9T+=a(u`(ci+O!*f?w_6Gt5dU4TMR#x_d@H;4%fHfai{o_Ij*Zp2zu7z6w zs1n7@Q|q*2cq9tQ=IrEvlKWjsQ_}_4tm_U`m}3V`kE%;~EDcN#sHuOzv4P`W>=%`g zU}k8z4-pJN1F#i=h)g0chjIUXKE67IY?<34GRcAhwu`T=5G$*vPs>aOv*5&4!N;-1 zt?sW)&LS6Q@f>E5FLoeVtWH$qr={sG_NPKbYE+u%78PlKdGjq9IagCtBOxZ1xEO+O zUKIZmci@BS2W1Jp&EGy=Q&v{qC1u#!+5+TT{^g4?0; zM`>vfoRt;r?DhZ%KqXrGwjgx2I|%TyqP#qsNh2#a7h<3hP}TX~sLpQBeO@Y&CM)A&V>gdZb=;5Ie*WC)a_*7+t;^DwE$fjbnZNO@SrbQ zNEWNJqvH)*+{DW8=Sn|KO%l^>T`e_P4fPyn1!EUbj)LS(KbiN!9x8+XuW- zlr6k^c^5$zt81-m@8Uf@Nz^qJ6g_BiQ$ObIc*q68K>+428l7jsGA2Tur zhJ@&p>SI&2j*rK=&+Z%?%vM??6c=yIwFMLw7FtbJLrJ`8WVGebitLr@;c)M&2HcgKW~^U)Gszc@eHfSZSS zLUsovG^#8i9n?cY^u9q1g{IW~%=uVP5U@0X2)uj;_~!9P*PVa8K#^d(f#=dq?_|A7Sp3a- z`}S?!lEXhCLhkeUIjF9T)gy&|5h5ma#f3~R4vxa2qTrB_m>*BkwG@~wukE6+&L}Mn zjU1ufLSN#2DUyLi z;)?)lgGg*?X|XUj|Lc~QljG><$lj18Eg~YaranMQO6rM$8~$U5g^n%-vvZVI$jhqn z=sWO$a~JxA-XuPUBG*@O0P}`#X2BvgogXuZ%Ryq=#k1wX@T4l;Hjypzp@VR-a#GBN`?}!WJSNL-nJWa6)@28z^6}GM;`!y-MV$FwpL;gb8PI! zKx;sLM-vCixJvASoUkxT;DxXIK~{`hHl1m+7q;C@`tiXA3o-}rah{R}2SX2jxIO?pXiquJwfg1e<`Rm-X&=Tm{N3!$ zLV%NaNFnITt@YwdpNOH*`C+>2nH^_>005Tqa`s$BsSp&6mvkcUUT4H3C=I*QTn=-W zP!ms%GOfrVJ_Kz3NheYT0g$q^w3L&R+qIdG(3sDXNt6;o9^(521_qi6JuEK8?5})6 z=Wn_xgl~*w$eXOiBqVLh>TpP9%Ga*nnwHnnDuh(g^pnObBO^oK$jHpZBrYN0-rc)H z>zqPD$v+nE-Ma_;qcizIloSaLMnq@EXiVm4X_QoEg+n|LqL`TM>}(?oi!-(x6&;v0 zPwoa{ED#{WYV=usRDd989zA-QDK8-*;cW0>!iZK-Q2Ra}kftGbo0yF-}Y z_%}^xr#{f)?Z@K4ig$Gz;72H{Ta3GCIZNs*Ktg`U(1e7Svz1j0$ zuSiq?75ZJ!U;l4v7yQ@*|33Yd|6YJXfjEZzf2w2u&)5I|^760p_W$PxK$ZYf2`6EHC@5oB_*uDUuFuN1_)U%%dnV2R6>8T|S;| zQEi)*4L3`xFUjq=X?&dNo&w(kO6v4^&W!W)J6tW;RKreAOcccR!|E>bK50211p>Ue zfcyfr*>DjYq*ZCMxC`Tri9hsXbrZ(?T zRfG0^b+PBqF|J*sV!2YNqpTdAo~}1qq$MgM!f8JCYh{HYN(v++d3pJs-d>=o;o;#v zH_7v|vZAA+?vRr+5d{eF^DpiR0427yv!fJp*F-cmSO5G;&&_>-bvvL9${fgO0A~S{ z02cjb~A(TSFetsooWf77O zA^igWQP>|ht@QBlfW!oFEUU z)PsfwH#qt5nH!)Er=|S_;m_IS>C>mjt|AG86A^46yZ{3xcq9Y3Wg(pA<-Z@v$nWNB z7@l%QPyN%dsOahG0qwc&E{1t~dzX}KZ8TlXfU0`zhB2Ju#>LHjSM4rP;*35%C(nCV zF)@)_WZZZUtfv0Z&Tyq#`ji6Jv}`uDk_=|=WfJFk7T|ij+5SB z%1+jI)TZVy;@{ z(W6Hgo&%|(m~hyh8ujf0Z~__U+^M^-kAmGe6!tR-NtyxKH<(greQiza!i!P6er$Sr zdT6M;zW(!%g_Y%HO8|#Zg2`?^VrAU|dJdrKVs}uM^=@{M>Dmht;MahrEobWE@YtZX z)4Ytv6M@4B%oKDTkU^x3oR;LCYBD?QEf4FKIBxc_~CX2xNC3btKgA9)5T`MsmF z^Ml{olxGTFrRm0*=uJ2|U7gn0oOX!2{6SGRgu{N-OD^3uiac@q+O=y?o9Owjd&F$F z5$oWI0DP0cl2cN8B`f>Li&3YMpNs2Yc{o3YMTe7veqaaPD!gdfpQJQdY)?oYxl?uAxyQ&9kPH zbv_LZjhntZK-Qkd^`KQRkn#SshZHv{0EIX|J7G~P)&JWO)+H!gjF!d#cL56pAoR#< zNXQD{7_=vLf6WeN%d%+Kb2B5%Md#SqI5?02HbG5gjOgSS5P(Apu#*26ID`DVkEk8^)iUQv^z^Nug%O>e*Tn)MiY`P#k3yrQ9%@zR#sBL*@a%pPtbWm|FoR{`?tSt3=S@+ZFg~=L-JNsjP&t&4p9qB z4N3vPG9jZrvO9O8j`?W37FSk)7XJW*%w;vRI+QyI95vFdGT!K9e+}4kesSZ^p&`v$ z+a-`0&;{qB{#6qH(c(ZlKLzCL2O#Yg6a?bQUwBC;@sGD7?GlVcF)=Y0$1BA;ZhLnU zH`PmY+ki+y(6tBM%U-4SQ5l7_>lF$aj!CWb;iE_GGc(%INwBni_fE3t+n=p!P0O{l zpuj*-f(8c%$;rr;iv|BH;Js}N0m{XFJnvg0(ykx5{@z>Jw^^|NyEXAO>Y=d4km~db zmj-f6Lq(-Z1=k+eIW-RAW-#QZPAL(i>isZD2w1oXsBR2lk`UUklNs{4z<@t|cm_Kk z)4euTvjb{UM0hwjQs-h>41df-JKu(gc7B(oiiZQXuJoFf{c`2AfLg zbhE`_)(w7$G(cD4@aU+av&FK0eeYg@Z((+J)%$s=<4Wi;spz=18J4XiSHZc~fhC2$ z0VpA$2rPjRdyk(AQo0auDUht70|J^Q4JF~zx6NL%LTBtyX>?pB%PY6!OkbzVPzSWV zfA`M#oeLaUtYV5)-(Pjji?RBYFBZ{qUth+{;&j#?3L<*iinP8&i>4+br7_ z+JpV16&j~!XDj9{hGk2`My5AFbF_lE>Trn_LfqFZ4qe?r=rA`g$j{FQ)>uE?*9QVZ zqnUHI7akN&@xb7>XBuCt{7wU06Goqf9OR~d+Zm~QzSc|1Pc?#!j9kIM!SfRXm;*(% zprC*skj^Y}0Ze~wb@lZ4k|+M}K|(YDBqbtITVLuN7*=}A);W}mLDpBSQH4RrN9VEM zGkUOeVQ9ov`@yfX%tE~;Huf$QOyDM(hIW{hizF6@V`id=xlUd@~>DPMV z6q=51t+MgJTm`vxQut4CjuV0^ zohEmHCs5h}hyfM?Nx3=xzplT<4FO)mDej{BDZ4i*B~ej%rGG9%{&%cn=c6YeAb?Ky z4hX^cB3Cb8QW9k?L0`$&d&)+oKPi#1f%&2+a$@+wWX|}DI6s0%$0sKzhlh9~&}@lj z(J4y%i0_BKA`9WOPANJE2<{ZIUYV{yP@igRkD*kuJbsLBh`>R)LvR=U%6itYu=%7U zGDKP#uEJO;J~0yH--GS#TA(#PJ{aP1O=tU)p;V%T1o!@XeNiAzNfYAi=r~?uQ~5G_ z^NAWZe9E5j{^f>Q_mefKz+fEk_xBfsqYaw}RJyJ8zt|}@*qHfPq(#u&(!IN@`rp=n z37~PS#wCvL@X*`?@fX3M)8X9_9PV}cbiW7=I50p$2;M2Mv8cf>u zN^+6SG_nY40-%-!SU5B&1o?IH&Ye46c;Hm<_=^6sUrL)tX;4d`6K7{XGBl{??WLN? zZ_@jR!{sM0{GLv|Oeo3s7GhFin4XF53nVOZA(Y1xX zwNJJ<^})b%0N38Vd)Ibj=FFh-M_(WG4?r0;1NxCLvkk%rq4<_#Jr^N8N;qL?HH;0Q z2?+01pisngH$d`+0&^F~M^_h}nmuATtY-8cWgmtjp(3;qhbQ+=w*xp5dWD~3XtzU4 z2iSuz4#`i@qQJf(OGn7r;3g^g37|Jrikg}u2!QzYxb{DG%R@`Ad~s0y-`P)W)Bz_n zd*1+p*4Lj#$O@`ezx(ZfhXDdj&}H8o6h)cILRQpc63Ny6T8;`CAy~rB9-B%0JVUIxdVK3Z&Vo7 z{=Pf6@oRZRRdp$xramL1=wx5*KJ^u=tI*WBeqFuJzOb^=9;9=S;-Dj!Feb>$t9~Ev zDh7tBnHhSszI@pP z6CREa{s91hBA?)3`}=oAJd)L}4mdg3@b&Tn)F`Z_)o`8;Y%!1+`}%d~hV-kb*IA?S zhKx~C1{|?Hqf+ZA_Lv3kAKAzUC3&^Bvd{NDd*3Y8A8x2cGUZ7l1w+eunG;(z-6LHY zQr5w$bupFKCA=;DaN6jez`@L<^FKVM_4SUz7kM5uw?1JIT%o58J%~GI!V>XAA2dx;=lK@- zS`thyc>kr5d71H$P&DW_;haAA_fSh&wdiff7CjNH$ zbzfgRm!+cltmVIj?CjN)8QyK%z{v1Yl2v(=+)`>pJ~A*6M@MHC_6gb#a83%Bf&k2b ztZ8k{8q?j|+Z)xX&r(nzCKm|-0hr|NTdL^1s~%N@-NEm|I`x5%=$1eeWvr`fIe`=u z7P)thD3%n%qLCfbA4w`MytB3=)}to6FHLG9FR*8AQ%x>P&uPnEg&RKVY-JNcKHXQ| zgsX4IlQz+`i>uoI}LaeW^epjb8If}KLeuh5d ziPwwRbByyBS`nP~6FIBZgb#Rl#)pSFAQVCPU|=u<)S9nS94+*i@H&^p1R*i;BP(k= zyZJ3gVDJD$z&^u{u(Dd)+gldcq`r3Cm=OSs2}mBWO((i=SO4yDrjV`{4TMjq%nJBX}8pBx4{^9l@YjV8aNCijM zs^e3}>omiHk&nJ`nEUA>>y&GGBcf&oTo)v|DJQL&pIaVo{>Jyquz$H`_b@Rr5s)fC zqGf&>=&&;}^+F3@R1`_~>w`>&?%|0Waav52Llff~*(H?lz5dmVK*)!u_5d$fG^;nW zL@zt4Jy!_g-Ca)^)B#7$Vab-sHeU^vr(&|p&{G% z@15h$&9WUg8CX#D725fxXnPdsF&FP6Jj%Fi0nYH7PjM@R#isdQ|*V%w|ZOP4>` z4$)bPh{VXH$LBF&Sw-`ci?Sf|C&B;tB-^1T&at0#FF-c}d^r-w`(Ql*LbJ28a|iG4 z*Bej9a9%V%TyLnpXUMhgJY`__M$PI=w2*q(>oEM#@CLqq0^$=;#_Fg^)s@G{G4dv(^};u{gMY9ZwrZ06<(VxWN2JXK{n(LzOLPN z28Z&F1uL$y^6|{BONJht4(s?cR#{-!`vsgqQNx2FIXyknU}3q|ic!o=M@7diSZ%Ox zkZN#yiNqw=WSp%oUEJrn;91j>S0GhJEZ)uAcd;xr>$awzPfAw0+uIxO+XV4pcRm^> z&;QdkC%M=Zr0j*PQe{M91$hrRq;)0|@dZ~&)?FlkKaei!zHU-dQqt1W(27pz6-4{){z3u9!ARf#+0;*3 z{b7`^){{)kqJ*qiG5`0b7Ci$Bf~`;W6AyVd1ZFID8a7Mf{F6 z3Q)~teCbsGo0ZDTqGO$6CUHkb^l3i|rJmg2awD3tlMpLo`~4_VTl=`{=5nD&rxePc znv!~l_b9T==tZwX4;LYUum(B_g@wt1vzMxEi=glp%%foEqlJ_(~55kZ$!&K#%d+YteN?nzg$iIUXe?xyt@%#JnX)#+JeV zSZe$k#}z2Lk({0MGkz?8yKiW1l#ThKDMUF&ZzCb-qn>qje4gK)aB>=!sJ?ysmQnd$ zbrQ-$Sc06jN#&)JCB!EA(~>=B$SbRz zU7tY7>u{V*nH+&4v1GoA`R|JU)@=l;6#d=Zkj3I5C7b#&_|)ppa}g|~U&00w2bW=~ z0BP!!Np$`F`xmF+2&b~FECCuVmX_;)-qGZ#To#Ikv-a9JOPx+~q@Z)l?$3`21zK80 zcX5?=iV=6dqbhP#3P&8*MoEN%tE41V#Ea82T<|m0T13_LX;lRuv=Q4r_xVo39ZHNB z3bA{73>NQx|9Yq88z?+ujUM9`7oXQ;XnPQO{sv=mo z7ySJKbG8+i_Ol(#U@>usJPX?`bEyH{m2`Bx7s1k6pO~G!PoKNe=tg8w)QV3-G}_nE z&wT~6%j;Ex-G7G(%m6=u=mC}7-r0F1n?y!R%IkXgjyY!K*RPaVWbB-Pgd`W-4NFHl z9~Q>OR6!ku>;=}DBJ~P?%M3cxkpeaF<5E8l#0zNi55A7l{!lJ*{ASxTO~_v?E-gHt zhUdhFx7t2b=rKVTg_W}=g$lFP(yxgRy?WWquL`9KrEsN{IOOKJZLp}0TXwxeyy7&T zGDJKc9L==xeTT#?_qvN-fgTj_+p2?>XP)8B%~COpzbnpdrPq}74wI5t%1i^fnV25Y zNZEV)g(Ted z#gvQnuGZSj#K^sZ`4HuYiWyfkVl(1xXU31l_ZfX!+Uv3XA31M;PQ04NP_oH^oK~!Fm65Rz zK5sq~B0dl7k^&g@uf8kN(Ai*ii-QnPUJESH-5njVU;={f%2G7+vtq$-vkAM$2UzLX zuV2tT!NkNQAc%mp0E~C0(ai-`K({2eQ(u={*I4u;{>P7hJT(k;h}4O~lER|nqnXP1 z)b)-34qhb4blep|{IP%IefaR}d&RvU7Ueq_Yl>7laBYcm^A+gR{h&F|&Y??+iQIlem{ZPy3gGy7o}9#UYkC7Jv?;8175-C{pv+#}=CWU~1Wd?U47 zHQYgRAE-2_exe3td0ObyAZYEhC~39;LN6gcUMBWQYH6wbfBtP}>wew@IYMzPbXNhI zeIT|nFfhP81DL}Oz&$du@f3W%dEVOLhR`mpxEB`rA$l~NgyjD&`o~AdOl2%0pWGYI z7rKS4N~RkGpn`+FKQ%wU4!m0vYq$vW_HZnSIABHqcl0w)3^i5Nsp>8B&yiveNO*0H zVV9sE2H-uw-#>o+6nZYu6cP2ov9`7S%xm}fj2_j$y=aT0rL#0?Wusj1L`HIP4$U*G zXHd?=u|^fqBL%532}>@UZ_b>hnVvVAN{gvoO$@+(a=m)qk)gs2S^gRPG7No`D;Eur z7SOX%ll2O{!=UVXvQ`E86$lZu{^6WwN(}a=8&+$s zL&vL4cMC30OH;GHp#fZ7>ChzXzkg|l`-gRs7oJI!qB2#w#$9uamkVtd75@K=Mi77_ zTp1bv3r7HrR2F?JGZAAF7t%p`r#NIUs1v)Cb{qX~5ivLuTNOfr#KiPnU0vl}!-b_& zePlLLKu<^aYv)Lld31IbTCv^$61+lTXaendhpyT2@iFv{fmcs{c`Hhg_ygpne?4*V zXEk7At3x&#R~8lyK(Ky%PKM$)nyGKEb69wpNtnHSj(~O}ej=1<$}b@ydZYN($C74_XeZtDrRz@){DPG(zo@mA$F89xu~g{%=ld z_jCG`-AWE(rog7k_~#D8VwA4>S{^HVXPXvvr;uGxDLT?a{kmHgu zW&D9&-#1SL69VS10}xDMBT+)HZ*Qt=Y6h<8GwU=;qurvZzQtCPmA&ol?E?eQW3_{s zmywYRB`XqE-B$3!LlcY{-w(PpcZexG(sJYSdAzv?s13?pOt?xi%Qd?$ysT>bhjhK$ z(&s}!@K`!oeySArQT5v&+z@h6vOU*bd_+)MQag6)k9-Ib|7GI~QjNd)tXD41=7_;y zuvRr&bn2ky4_O~Q;IWk9*LMImJ?QjM!VdEAI6<2g#HH(eVjc_n`k&6u23uOX`x48v zO1%~~topkKSy>8-#fnK4>PEtUssyEWO0@4T?6yB>?6++F9!~OfM%AhV=|+`bVM&M_ z7#+R%8zF0MVPVDviwz?-ylr`RenU$Z{JmayM~z@I2{+qxM?rKOuU zZ|NO*7ldNdX{G@?%@Nn=B(= zhJPIioXMC~jxkyyj-RC&_3|1=bmdVM9F-j^gEz^zpJYFW_NM1qeK#thi*m@X7uE zh4jhiRt-n3sD9c8b9tX$Lr4&1GU?gbh!OM~yB`WJXS=I1D(g}I1+9_Q410qA&VxRD zqk`@?c~2<|9ft(c>STlxzgHGA=Nje+XgK&-e04vbdZb&M*sC`<$=^Ul9WLS*&q}2J zkt?eNVw*am6WWrMFs}rL2F$BhJ0?L>14qEpLV;|007*0AXJ=uG)l+Gp1!o*#eTey<(JokT9k=_H?OU>$csW~}xUhCmCEQ^ZXrf;#G4YAB!@o)K8YInTS z|CF1z+OA_fX0Y{p-t)Z3PvL|w$22RsRiyRBqOzr`gc>vu(a$u7U+$U<*uNydRL%w3 za-+)ub7CTo^;|1x@ZiIl+#co%^-a)3BDiw*!RK$wYzU(i zaCO(FXWlH3-86!h1k9U^!SIylx4V4y1R=mhGC|Fg3~;kw^T+>} z;1rLTB%NE-=J`EtKUxw6C?7#gV`SMobT2QakvWmi>t)k1s`wX(Xxk4Ya4`ND5FN#{ z>iN{w)kQ=^)YG78g}BjOobRxaqs2NbgxAsD-Zdo14jRzAA%e%??yJzly++1dzc!&z zv!bk_gB=k?_!sS2vz&&bV`FER$YB-@Oa-bu0yqF-abbQQ`UF&9XzX`pKbdF-s4_W; z9$@nd1*{KrpthhuTBRyisv$*;P@G2Q75nj6hqI@hf$lskM~%=zJkrDN4;gOLUh(c7AfT_We5IG716&czNq3N zrtFm+#1Wm5ql#%90!V2o%mc8@)?{VTHjLnWy{D*}!(k#nQEffNDYsthCo)=5(R?hG zQ;_j`qkbniAz>1n*)WE6wm3iyCStJFf}{%le_Rr_t0W{qx-+3c34PU0tAyBC7~2CY zzytb0Q*g(2-+!6j`JB;$C>zta@JH68GQ}9h8@k9dz=6_7SgP7WOyY1COgV(Lu zH2dBhK3ZrbLr18>Lfy? zj)fZ+hb=`>kPT}4?betyl-y{fl}#^gG#n%$;4;Wl%7>`odfR-Jn3&kvx(Ixc;AK`C z9{_>G1{$Mk5CGr}S)7D|3{2GC-u^lk&dlAxYgx9|^R4uL;jY+LmqWB)`GgvE2lsO= z>Iwuwa1*^@WbJz^)buV8t+V|nvxQT`Ewz^PkWyw+`zq|Vdwzx zJQ=}slQFF5nE_oY_diq<>{^QNy903X639|KLA`R$Z&O!Bu0%vdHpAeyy9=1Z0sWGa zvM8Z#JL>WvH~=U~0I%vvv6?ESdgv3;!;lT3Vew&s;=RANE}YsQEjnl)i+yGoSjc}1E4llfQ#iFzWCD$*i19iac=GoX<&(D{B|2A0Y8)sH)PJhI3 z4O8VYU(o_Pt3)m*vQSgHRi5^IY86w~?6KCCPXZ4_W9p{~9}vIMO=?K^Zew4Nx8RC{iOw96i7q7?mFaavL!G(eWJcyQ zO=HutU^Zs^`^-##pX;Lm36;FBdKC*dT~oPL3b+(y&l%-{={8;`4X{%?WnqZBq9&@; z$_&xN7hnM(yNOn^$!@lHcIKv~%_UehE)87CcNXOxO z)J1BA-ZrRHO3HS=D+)b{3cg8qa4x-m9U2|24BwcVF2exxlMZqe;WI+wm^#O;gypru zu5M_8@4$59;qft;2$R}$Uw!5d`}RgU_Q^BWl5h83$EnhHM&OA+QduO5o+%@qwoI57 zNOnQ^&U;@QjG31s17FUq#LRw=HxIEWjFXRlA51RP{P;i+wU!|EprpL~Glv_hOfY2B>b~jvP+mxRIYWDi-)lw5|7Q4&|#E$XGC+c){jT3u%@4bmVsW&+PWk$ zak}1V2j)$naR(R@(giy>4^K~B!SQDxfr(l}LR|v`qbEaE)-&b|xv4UESvGpxhB4Sr z9_xelKrIoB_FZd@+d@f`>?${OZrQ_-O41qIn7zadDbljjQmIqPoFbvu&5}8M3rCOK zf&5kWf?d7^RtOBjfCa@;x zegu`XEglZ}GN~r>0RR&?^DAQ|e?Spwo6GW_zfz73VzxP_-m;?SS7ANQgaKtXwpTyo zOliD}Sk-dxfb<8}D6ro`G>-tTgW0}Xmjla0Ql#r9v>}rQR~hgrLJpcP&Whpr72t7( ziy&t=?$3A;fu24u)Zl6p!|IQG{6b0nE$K^d1HCsb`lnU+9Fw0yECKj++fIG*L$*xNa6N6Mkjozu@j=G*w(TbHxy{nU1Li$7B zPN_mQKs@lsgCm$*0vj&C2w>b6FvI8UY+=_(ffD8$0o@bIB|Ovtnw(2g(rEX#DHvVf zya~H)Y;ybb6JoG*ku-g~JWAYDgr|Zh^4*@2uW{ip>x75Q z=CJ4NsaNPtQ*!0{sx+B+VYLT`x8>;NI*&R9g9Rg8WTUI9JktX@KaJZPB;=@zVL7$` zO*GK%9(%mHZ*6Qr?AsCtZngLCOJCCs4GbKCv=5J9h$Ke{zvi2LnW}(~&hmRay0^pj z!<4Bam`Cb86rf|Rn)fu+)ZiEQ#0yVKvNSNLa6NjjWWaJ6_H2)Xj~*UUu>%j-a0Lr) z#XT4-U?jXgYy1Yq60MUYbeuQ<7dD@^opR$DF@$t23M|GA{7siv9TP)JEG zF2`52w)tf%cF0WL-eezEsxkb1TYi}eA9pz?6YM3RGdMDY;$R6n1F8zfB#BD$i5z8Z zKr@d=ar?wgacv_1Uaz_C;Juv1Ml5Sm{^0+DCiA?0906pVE_yctlwZ~<|gY)xQ>HLv3SdQfDI{#x1#6?EKjls+(xNSNiBn&y~3A(7^YCZ);{(F{|M zhFT;&YJ;5H>I%F+ytlX!kUjh^i=9)A* z1llW?*zbvl-KGvV`XNJ%m6873ngG8xkTf%YHD%efyvuIo+%14*PF5;m*K^?(l{Xc% z9wl}XGm2iEFz!=P5AwnjHT=`0&ohgQDM2)tc9`wdFCE=*g;5i*--Dk9@_7C<#l3rG zFs<*n`369YQvUf#=EH{%TYvsUe!^Jz)YK_xE!+EGC*tAe#vx_zn3&*YW?tXBas_1^ z5HBE4%gZ|fCauv?2Ov72DfRaBOf|aIftkvY)lYHz#p0vOsVO$?eJ!7T1_HwIL~MtX zwY*nM7o)GgOjt}6(M(O>G9Tb0w)vCtDY2(46b#V7OHb%BNl!+P*bcn(Ce>vkvn8C*z->(MrhznmN&gG~JW`*)ZM zpn~;lZ(nG+B?PScH<&`SpFRN<6KxQLN7#U)|K|%!P*sJ5glg4&b(^m^UaGwAvh*wS z)b)I;uAN1w{7qd)iH8{rO7NXjbDopz0regXLW zEdY`#ws-SHK!+_TCt$|)q~Hu3I=O{l7{*&=%p=m0tlxy2h7$0Eq$fNN|7j5kLY0wI zDk*rF_DmC(S-{O_Cbsj<`yus>f`9wgw%6`lTWKDR3g~L0*stIj{cLGY={sT%%{6iX zXE3nuf%zO#4fM3oQuIjVhmm5YXy6!K6+gGcPj&o}@rb5JFF%V{ss1OtKUYz{UWB7; z@3AS5Mo00oyo)8z6m{+PG8R4(|L~83wnQ_CFwGc*%_9ci85 z816suAkK+aN)8Y@2=3(LUFH>!5+7I^c#cdw_c~2(I6;{$FJGYCOYc&x-u5w96edgA zY`=avjqY*qb${;L5{2YNx)qP#DBW2pNFN?)&`^9gbnWq+2Uf=u{O79J4Em?Z z|0e29JUTl59XQP_xHZGWuof=2CFu0==wyfwZGYK56xeYf5QxaON>=7lytT+GyqlMY z9OsqSm*0=MKhQ<|gCfZnGRE$9cy`djctP1&!O7bf!cr=VN{VVao&UackI&04$y(r8 z^w9q!eP#l(y+3LB9vVBXRpuacm1yG`ud|@H@)A_ zah}I{9FNESaUVCM`F3*eG@N~^%y%&54G@>TN&#%Y>BAaf<5Or>t_d}?{#j>-mj!OF z;t`jEZX^uvd$BEoNV#!?WXyd1$Vz!CPm0xah<5g5Xvix^byDElakt}V;C=*31or%K zjEqob;9$6?Eq7LQVAo;j*{gho~O3pOpM~R(eTxbv>(h{ZT+m%06{@_m>%a zjMml*)86vGl}&daFlauQdzSXS?Kzu0QU@o;@7)XIV6VzB720Zc|9Zi>rnevEwh3%2 znS2xceDkxqtGoRwlqrg0tks&Oqx${5W!`hA4ra|JKX|VRQM&!B8=z@%hqMx{t=Q@^ zxhag2B41c}^Y@$I+4{gTs#VPNMP)&elVL1xZd0xlj0%7c5Ck!;yDidDDc4tBrb$d)y~~Rxau- z{!KQtw{tAF>!P8GI(^^ne$Lw6VD~Rq z?!9~Us+e*PALy;vZ*F+5D=3n}^bi$yk!db>j?c zL{k{oc!T693dB!eOh&8lVa)!oTcocQP8&rw4mw9WTU4E>I3Q5Nvt`4VRkJ>(O*$StXIRY9{uw4z3Hwb8ODxW_6C|TqkwX4Q;@42d*zdnm~o#d-b zaTZS6^sx2CZo$*HmsJmG-t<(kJrapA61HQ8g16ZF&VPP#8MH+WYRvR5^yD6g${Q#- zT)$rGsH$_jW3~c}=~K1q-H3=5(5;W~(yPA0%mqC}DN$MqCkA&94`}vp{GodI?5AJY z)Q(xdg&^g%*nL_+k+$v3vZ*!p2cAF&;v*+dcVj#@%Xa=<&msT{E7` zZ>eINqaN(0r{3gz^3}H8B0asm$5O;KXn4>Ha*EoEU&fJxvKIv&lxlsSXFy+o@Vsn^e+Z~Vx>$;nBI4O14( z*d##jEgb6TWoXgze&5u4ufvH)s{Z>%8LNja6JTs~=G?iw>S~##Q5LR{4xmG$2jx5V zn6#PfyHBq{q<21SJsOwOZ6vSeuew7w?(9RZalr*o<;2hkVV+Cw?h&!EVJYIu^G1BL z=Btyuoymp!Eeccxb_tPn6Qmvu>|g5KaFddhmNt3f4)K$@dH$k`iTBdVPvsAz-O;;Qn775^n#e6~%6AU8vg+GO^PKzv6!eX#@snrCHZ8Lq(}mzy8-3 zV1z^LHb?QM7lf7f;r_>k?~ZWvq4^bWZK?Vkfx2a7I;`#d1kwhGZef4 ze9x61V`f50>FJ-98a_HNVT6cbLk2e(TKQCwPy=-oDg^vl#$&5NXlQKOI0*9evonv5 zr5$EmTBQ`{Ypj_n64H6@cu3YwN5}k9yo|keyU5v--Y%a`$l*=Cs{n!qcelZPSQDJj zAmyi39>qmPlFMiu+@9c~+40T7| z^dM;mZ*Ps$7Gb-b?CJ0DA6%TgbScXdyMre~sA^CKnV!5Y-#UTp1c{Q@%4)AFKQHeH zSX6z|n^AdVXos#`l^U`wX)Z1mpO1W|up+{c^V7fpJdFzXRo}vUb{vF|2agig9a<2K zXrOH&>++W}0zcgJ9`Mq|+slA6ZMVZ{S24k++R5$*-akwn zUcPvNF#@VbDIT6+{Tx7V{Ah9frWS*R!{&wsK zB-?jx-~J7gL;@Z<5O{+V+CRMUeBP9MFTFX{N!DoA-o?HNlatbi*4C=u1yQ82pYPpr zz1^59c?-&xQE(K4gZXu5P$g*xK1ut8o=Ss7?pm6eN- z$kT8rPLGVBL4?I;fm#^N61BmSH&TWw|00SLXk1+b8R(*C5gM; zRITIW$b=;6X3O^N+hI(k2dwwO(G;>*M`Ywy{?@>l_#*?AAyr+)J5*I4Gs}INY<*x! ztQ$BuUyFQat8bDfZ{?r*Hgog%X7cuP4!U`C{0-}WYs13Aayx->@beS7Wo7i_Eg{1Y zhZXM5*pHPyJ50L4G6GBv1G_`lXB3#CfM$`kF%XWxNYh5bkv9g)Z0bzx+5n;IF8_E5 z-4+xu3!|?wp%Rw6zMFnsoQrEi{z1~K_SDo8hw-Zi3=OQVMf|M({=DAsO^YODqK^N{ z!agERp94ma*iDY`#sihWitmZoK3udc=u|yEd1hep z4a{nH?cd>RaQiB{MD>0xP0=R!Km}(L$&zc0sf4*Tj6C}^)#p{san@8 z^YT2DLN!wXEf^Zc15wzz6;$~w1Af?Qw6Zf8u$B?gwMiX+e>zq2)JKS>sd@KY+Ac$L z*IE8D?d2O~VN^Z0F~Pt^h3QsYO3D#V+LBla=u$BVaoV+O#ia_>UBWDL`#I z^qlb%TA9tN;jc%pT)EQf%JXYrz!DIQ^ljM1TsoY_4(~6Ur-7Iz0^_FIyt$ablMkmT z^agMv0}4sawJQ_XMnh8*^w&uYf!?;adtbbGv-^8blh=nu^vVMZ1IJzNow?G^P|5d2 z?{Do_*J-g0T761hN@h_)*>~?vXtgUT#nOs*NSjJ{MAt>s{b{Bl8QcIaV)IdXb$J<+ zBD`_qHOmYIhCSYdunJ{x!N+5^yH1_7>b=i?#2{)znJOo(BFr#R-=o%$k(RdI(hob* zr4ui^~Bwd zOzvyPYcvcFY@zU~#tCBkw>5T;#DhnV%${ge7`0+2KN+r*t>f%xgE|Scd{fi$$w`5R zt8pwTGCu68{C{->y^Gk`!%XzMxgB@7vvJqmeCTbKw3-y4A3&XXFt#L`xG=KtNL}9V z22J3#uO5$@V+oFie?CGh@IQoy_a_fEPtrl`{7D^|Kb?&C*PCvUo~K+uhvPi#}B@LXmRke9doS%Z^B zO3Dj;SsD8~Us*Q&)<2iI_BgPab&BPrjFDZe;FRFJth@#*H{*s5HWZrVm!nUHLY7VywA@zq1j%{TuASPD z3P(lV3^4r_;(zwT<&tIFeHUh|iNF2j`H^Gexg)~ov|0F$cxSgO}xz zWf9x8P4*9S^K;AU0;#g zKI28>bC=Jlh^S-{`*hP4NN25rRuoJ;j?gQ}QIaM454ZlvcMCGJNkHo!{_XHHDadTjx@);TjM?wZkh>GNkZ z1G7Nmv+N9t)U%9FzTTrete)08TI^b1AF+3M>MQHeYC~PEM5IK_SvHv-vF($4LMlyJ zOf`30KfF3VJ{T4z%+D01%5-4jJc;BX2D&YFBLLW``Z;r-YGnijS^-V=2X6%UlG;kM z{XX*^y6-+AiFRyzM=MK<9AlYV8!p#PS4fh-&PHCr4UDJZR)tm{i#J{VGLABvXS+8B zaVjdZ-`fQ#t)EFnOPNranDXfudF3XC zxRR7}P)Pf)PUQTW`vQkzz)v6yvj4d-R}~p4D<&3t;6UYW(Z@ok^rIuhZk{?s)u?@x zq4-t!d9mx!tX4hu`6*g-l;6QEx(*Xwyb_GlOjR!tAb2;Ol)$1gpqmkH1<@WLg6hz* zM^RC)(W-CR)PKy5s!Zc)^#(r*hp9Wim>6|u))u( zuNGavhIb*&!<)B8$Vkh`sPV#pAUBofjklwjrMJ8LAy|n$4BMo9`+ZM{Slm!P@6r3~ z3Zh3(=TIm|pqxp@2ak(`_GklR%IpzNWxM8YBBlnfZ0GmuO9rfzwZDkaY~4$rlaZk= zRi$@bFr@q25ol~zE)_9<^mqVRX`3#feUUW0!DGh&!1zj*pz<iH;|w9w%&%VEnEQ&vc@YnmoNrb3=ytvwy~V};loTH3 z>rj6DC^;J)t;WXoo->4c6U7AM9wxziH9j|Qe-ztw^SJ0K{gyT>d7Gy@G^{om@Ifa6 z2oILDz~Hb`qte|NM2ZwoEp!-=iU@HcG&HYWK4MaElF)r((nDy~#&a+pHKE`6!stGF zlLMnq(!K-SaM-DG4&-aF{Xx&r5IzW@7|G~F*wg_$d$4zp(pj4+H&(YpJQeo30jxYTW-Bke_ep>1CDM!yj^k zD4Z!ntNML~P2PG`(T_^U8@M$~^n>E!Q`Xjs*tXzTwajlE%*b$yJLEBtwvSKl|0@1e zqEb;Vs;{ey{o8P~NvHj;(#h|8wr$%s11h>-*W3B;-wl>%6QH7~z&-?5Ik*^C=E7;G z7Q+F93uu3hy9cwbhlXkpR#sLjDjQV63Esh_zW?T^gf!`KCA&gBt$xa&!`b%pE+RRG zIktG{Gar1rbfR01J=WN?#{KJ4&kGj{styl&6dd6dSTbD>{4($+!9#w$Dl#hSuKZdiob?}6qrAO@eR)GECmNQ*#VeE6+ZmBgPr8@Y_!a}E;7HU{$2IlJ}ax;4?8>O z;i}BYprgcItf=tmrv8_Sk&5~mMe_j8{WpfggFZ}tX=n%zZp0G;(SM=>6Q^iajg!@< zGl!b2?1;-p3TNL6HYzwWC{ykh+|a=V7mNI&A|_Yd4~n8+N{bPqTAp?5+R? zC}03-9=IE{q2rU3G?RlvsQaVD^mK3jg!-&YR-b;&ZKd8M9x9$uTB@wWXKtR9<#mjW zW^WizytV*ce%JYugc2I#Mq7pVou%FHhzq@0+SEz$jPMiw`O`D^m7_oqDKvD{`ms?k zZK`Z%U;oO;i-`IK+2aUoQ%4jEb0WHtfLoZ z8ehH~ii|8zOgy<`yPtaT`SSt?1awB+bTot?Jh;co`sIm#ZDqY;PRYT}J|9`8!TXks zjAL`3%3r@>OHWtil(@)y_e*$Xx#^x?b8=_S(D;6TI@)%7r|8vJuPx@kXHIqJsNf$; z``bs9-1M*-msS^@rrj@JUirI5{7zKh=46#L@BTSKIo96mb2(1$Xn1qXp>)L=^-M{x zQVSu`BU#6Ftm%2g;#L=X>3us48df7q-R*X3ajRAA|M2tbgdBx8yB&KYkDro916%AJ z|E1smpgt05<=ouS6f}BdKOD)VqW7$I&-n@=#YqQF_H$3v~ z!Jk*#4?HuJ{J;mtk&L_Mn#GDF`#ZXk@cWR|(XMLHJy(jJ_y&Ndh=oq-}AHhT4X7aGZIC?En zMFwdg&@SfY|b+tRk`x!;eKirD=L1JzGetBxO7Qc)e(Uiz|DdP7}tC<@SSUiw>+$~ zao#iU+9d(~11wj*y4B!>xjfO8jiQG3>3zfhyC@+8NRKH_7nZlJ%X@iF)1BWJ#}L*y zHL-ZEU!OZA_Z49xe#;~{yJmo8aKG$ac~(V5E}MQzf}-O^s*agm+Xt71SHIeql#8wiN(2@mTG5i}?;k%O@cz#s@9AlzbNWXzsc z0UVxHSCv`+m) zTjrPvy`)UkN&AD30|Ndm8q%*FJ_C9ku#!XA*s6tI3$B<&tJavP?OR~OGl>_c=Ak$s+!t50nmK*M8YGt%mUF^ zhJgLn-b&emYo7C?g_EnqW@4jPenI6&(H_Erx*4`~gmmC+=)m{4`;;dNK`SG3l z4g{a^sj#!+AN%_5um64x!x1%kc2_$)p0J>xw|3mE0+Nhe49xt$E@nSyU1Q*QF)Sr1 zb8>vVFVeimGD-P+0Kuv&Z=I~%@!N)vcIcjVA(d{N_BU!eS+;BG>0xd|R92Es4~zv^ zg|Z(YSK-d$u#l!xeprdk`p+)MpZGzIy z2Q4b|r>y$>`Y_XgVGdUadPcHeqt84sgn9#hyV>X~(9WeEJpCMVcmz=01qbrZ9VGaO z2_)ji8;2OYZnSrISFVJc>WRF$^}-y(JW9&KO*+_B_;~-E{hJEfj=4F@l5cj5?49G( zh2yKfU&TNFcD3sL@?!s9d7rVTK_Zv98+CthD*QNNVe)Bl0~hix2p=uZ+dF4!1~xb^ z#ahjsy(PW4ZIFec?f0|1uXFdew~=+G56wI#pEPQupo2n04qWB>KYT!*6s&GpxQ&9! z5)!8E4hG~E`rFw3cod}@pR2%k*81|wmT55>Ef(?nceEuFx{g_YjvN}&GquVf))}@^ zo(X6;3W(E#288&p zk_Kr^4N&c?bI)VCN1X{`D)e|F)=zw}{IiBF*r^^DJ%0QF{#yO_mN_B_$4!NGmt+2e zd{5(Y&9{Dx%AXRkRG$0nRk_P)idNzRCB9K9>)AKslYt@eH#^f6*5#?UP5JTd7Rg}M<5E$1^~H*UaLZqj%VRq1_l1d` z-UIMF>gFd`7SH31$LMw$6M(_bd-*ZJQ`uiDEmgU|_o7es#k14V2a8@QU(uja^<#Kg zXmcRMpgsMgxP+F1-}tr0bB72y*Z1$d=<9TZuV(kKBE+pl^VAVoqJWc zJDfNWzh}qaG^1^4D+h&nc|(*rVG}n6>t1;-?&G712^61HimhwuRF9=slpQ6a+Ff(= z9%*roo13cZ%x(Igt2Ah`AB2WSJ9a$crB75BXHrrnUmtU8>(5}YJDopYlJy27Mi?5| zP~L2fcN(aqy3zNd*SJ?IPm8|CmiJbnDOX%2Z>wGWy94M>Po6kYj)WvsA~>utH3@4U z`%k$f#!Os?kPZ`{yK>$xNJ4>mH$>H&lcvjY3cJn_rTRs~Y#yM*&3CzP9lTr*+;(qU8Azr z8X#<}7f?3vi^q>s+s+j9{9Gaj0`wShaBzeeczXT>J3T>x8_>m7nt?{-2auT-%A7C= z*GH7y5q^Gt>PT_rcd~~Akg9i8b)tFrT~3Z~*MwZ!o%{Ajl*4zD#*2xDzbu$~0V%{x zsGwj9j@n=qUPpSCg2;D{tx>fmTBy!!c73_jwfLhvajZ%awUtZ%_{2m6<(0_t($W=V zawz#QkLONL!?Mv8jl~(%{|}pKW#-~ z+aC?i7n@1f!Q4tuM?B-rh6bhEZD$TL1HIh4HKz8=rf1pQ)Q^A_G(z@))b+TF#wvCw!Eutnv=7?#2SkgNiPPXh+cXlp@z3O)j3 zMGW!`62zpX*%9~x>I0f$ye8Q^p`DiM`ZLW2fuh22ZkCx{6v5A2T(k&5fw$jAUKr$^ zu=w;^ttVouCIh-&`|`WoA(NA30s{JGW^GfSd_{wlalk#bd2*~uMkcnT%9{VmmXKvq zM?Ru$kX^B|x~hnoD2C8@a?2|!j4|PyW;lLAkpJw1A*$nmd=+?8wedJ*-I#7Hm3nV%Qkuv!N3g3lui&UpJ z>A(&-R9(EPEK-DDJ2(HaNH+hyR631dDg`>~n)QIt#s%++O5f#Wc~@tl5s!k33g?Q7 zH%+HDaw(Fub1~rjmyo!$xY#u4h7dmYK6UThD#2v>;UY>ln(QV;o`gVBfaM)qD$c#Q z)ER4V2L*WmC2%0EfT-x)$7<1|WSdsw?jTTwGXE%n;!0m6>1 zg`+T52wKln$mk_>jN+sW$7c*lJ=M8hyoYClSKcLA}WzIzKJ~+nxWC@={wK? zg90rmRr|u*rsk7g-1XYIgm^!u@hVdX> zj*W~Urcv*<^bW2BxKpR5=1*sCK>qHHO&WXJde5uVsfHiDw7A%I!SU6;xLgdwmvuR_ zKzA4hdj}1lO?f}WP)H`iR60<>fkEv6zI5`(>b$U>x?AcVY}&-XZ;b^QGUqOP@k5G= zpMfi)-}+AtOr42jK=?T9crSvMDnBUeXmy8)Ivx3xBdA#aU0*CPbSh2V$*BLp;25ZR z9g8PIOjhyKJJn*0*-7G{a6m|;9@l4j57;=G?m<^MtQZ!sR!Pd$(r#asVGIHtvv!Xm zc7HSoPRS!GSj%EMTk5Vg>99CsfCv?x8Z}rHmi2ySIQ08@CW%V}pVnoj`aggE3!@XG zNjLJ1Q8jkiBp1{;2ztE%sK4FaC;IL1$az5o?i#@a0S9y>{O4p-k0#>fx6+Vbe&J&6 z-=&$=k28n5)SB(s9PaqMZuxNY(Vc;+nBs3Htj5eMH`mr${&Gx{GdYErrU1G@Kr_Th zq`=|^TPfT>F#a8!Uk1Ug#PlI%V{t7bzz}dbP(oCn{ho0TPV5N^ARm(AjmE7@)bKB8 ziOR~$=~O`^mAm+DyEN-X5dX1dNk~g8f*AUz5l^ZzW3K*ylxASFpv+I)pO%mKkgNjI z6=SasTsvXTL^u?c73=uwQJOncwo9g)uRz>X;$T&5*vF=MI{K% z12|vdj;?&Ka|z0P5O=URzC5~^gJH2kFknrRWZ+{ahyPWJ*q^_|Hjz2Z)hXU@Q= zx!gr^Jc0#3^UTvN<86B3*A8H(_qAs%t$XrYsBUJmfW*fdn1Jn$X z%x{porY0xT75zUn5bH2$sPwylhF^cXbmo3Azn+L$mwsexP4ee+P3rl2oyG4QhQaug zRH5^K9>1{n5C$7JS{7MNC8kEM6@#zTTFk9RIAyhorq00ui}?pL`=H$$TMv1Us$YFH zjC-QJ(c_>jL3XwfBN{*;UMZ>mBHbs%dVP8M#S0f^AmbJX4$xgr+S||8?%f=?;{S8qZ)6PAIK7W%z5YV|Swn%6n|ju}R4IDjW`24hlgV%3B_YR! zUuOW(pJIrP91PXjGk2aE0?(PcMVMJT?zN(R+909A`K$t|Ik6KTW*gVpP5tzrxEK zGg^Bp`FBCTmzp{`JRD3L855IENS=!y&%+}RcoudVRj`#trh(4h{dgn2{pJtvZ*}k8 zNRu;KfAGJuR7xGbKg)@;sJxmSxd`dSkKGcf$jWEM^6 zGNbs8h}?cnnX{(0R!xJ7M6%CCpG2(x#gDbMH2^iR(@cE<*&~JolQ~Ep@Fy!PYqlp+ zW+$Kqotk20V6b;Ztl?*ci8Kl3>$tM;s`tHeg&fn;S2atW3EK=PxIo7nXluK$L`?T* zU20mMF1PjmwYxb+Y~F`qm))hIkehLIDpG>t)La24Zu)3^^XFYUc}h&$Wm>2DKg@kr zbfCD`I_IBw=agB%;;WhC^;!WBHH3`p|9znkYIRXy)sYzXi-^R$9tGd)FY;l5P{Y=q z^?m*6Mk+iYAoLU1h_iEY$ayq|hx_4>rJ+F?ttluf$^pB4AUWCI^%!%q(IDv969*{z z=Rat;On>v;^%KX2iDnX%LdewrAe+*oe)X5(iGFG>=TgI?*Uj`}n(O_S1Po)I{Wq7? z#8XTi=Hzd7vu7cNAY79Aq^wB&8Cyqs0u z$Ia0(HJ zqBv~lZbsXOCdDG3o|rum2_6+Y*Z;Bl10yEcyo&W|XLF=FzwK_@ooHwKZ{u9*n+-BY z9gF8+EO#pX-wk+(=6Th%f;Uk|cv)ub&%Ibh9ew@3F!r*p_apo7x8bZmGQs=xi{4Q< z1i*iJ6~}|loMo1k(F+8d^Qu3tTmJsLG7m>$13%ehw8A)XbDKKax{wM33>hKn?y+mutH(eEYwuRL4%A!TiC zkBqxgyO^9~atBJed4zwOPtG1Bgp;LGO!Ur_kVtC!N7Pk}>MjSj)x-rnHrXwBVXkzq z0Qnx0uatztVIgDSjX2oql(`&YvnWuSV=Mq&iKVr509-4uJ=l?j(U^5hvRuG01SD{9 z!}7*aH}6B*LQG5y6Qdc>2J(_V(ni%ciD%0IPzpUIpm+3+J;f z>)Ir;ah;ry-i3L(G-@;0=^%gL+DQRAZ~tE|a~e@X2^KMNG#~dqD6G`RS9!#+`@~KT z7qc&P7|BLA~+^G&;vG=&Bi(m3Q@mOXyct|<7qJm*gHt{d7l{pD?l3yoBNp68)KJW!}@)E07D zmEt;W&&s$5BWVT2Fue$d{^dS+uI zGBXDeaD_(%%4=}6a@U|}mt<+f4FdEtv=5ueUUBmEMY9zY*X^-w7OvYiyyZhcL@ubbjeq{_I|0i68&6e6I7a) zSFyh8^7&zd_neZbS;eat9VNQAcjD;rL(&8J!HSI~VsVIthEm39JD)#)1kEQH z(RFgUX<+u>siBu=G~gvy$#Ufr)MQ7>SAO3-St!2CHO@Ltg&M(G6XSpQfxsZur{+ZB7=k`tW{(v-HRJ@0qyJ@1ponpD{guJIM_W zd3Qzq=XuC)_Tazk&3e4H#%a&$7u$WT>|4mv8*i|(1(RPR7jg`=MexcB?%k8X84b=n z{fT5@}py9l!CMY*B_xyWZey-W3h{2zzNFAh-Z!v!-?4m|q!BQZOZy^JkQNP#4R(J9@lP*h0N?MlMLIHFrCQM*b>rGY6|^`jbMQ^4rBbib#H8xSKL!%E1|#5Uj5zKZO8ar~v`?R2|Fd4}Z8g*UVb%X6i3nFdjzTYR z|B2)pr<7p(eHoe_9v*7=%T+Hie4O&BUcHQwi}yE3{mZfzX7uX`j6A3jjv^{bL!-+fZz4Fw}> zXVGDq@47$)bo%|;J==V%`8zd-9n;O>xbnK@OJHFoGBPv!Km`D}+xB&8VC3+R6|j-! z7Z%D&N#6@mo0i*({8J=*Y=?o!4 z-pnlTyDskD=s$H7q)4>b|ErL>7~3?YcgOM1g2Ua2UC{|}&blYn`C#`^Z(>m2>3&43 z*zf6IDu<}BRl(Q^Yz`Fcd~w=CGtScF2N1r;MTLb{oG%95LKf$*17ad)ZnoGXH;#b* zyKf$lQ4Ka>z^?GY>32qoNmjfFFxP}Fkp%gCm87K!qiucv?t`e1do?pQp+eym$Xb40sYf8>_?~kC=g6EY@sVU;$qwDMcVq3+S1y_ky6*mGqDb5>A zalqEq)zxi`l)^7TOAMyk;Q_~7gixaE&wkW?W^Mnx_dFC84w z4&3D3@BK^S7sqM#XG<~9sun^~&}EDAWHjI{sj)?-zzJFAr5m%P~G9Y!B$15 z3Qp3djhPQ0Zg;|9xKGSTAhCT+BIPK~Z2VuLBnbad8oUpN6@0wB+LHUJBkHfi5D5Ek zauXxSR`ma^!Usc!{CchI!IuB8)+)<>A09B0{V0Z4=pS~wBK8iPGaPwNi#`#y(aO0F za!W=9&DGNq*16ku;|}N3kVQ45zz-Qxo%%*;+9Jo$q?tzDs~UE^*LmY%kHTdiAAVnI zW#T4omoPW?)%LL{^KjJ*dtJ|+>&J-4*x13@`HjuNWj{q}mH+9Gn^BY@Uf$NWtISIB zHlCWtjQ^fW(s|{7UIPDbD}kksKo7WIY0mQj>H#JD#GlJSWsc`6(@nj9%~~-; z6A}_|=JfOTC;#c^muqz1*?AgFF$^SJffJ05hSGun{}W@ODp28BSW<7@l0~f#+2iS_ zZhb(};N_&AZTM^EVb3# zR!h$UT0=$-Dib85m>2u&iyjxn4zQ2h?vGa?=@E`I4{76dv#ID*W zpNdJwU0L_%{rxMr8Ccm*hf;tyLjKIm%8F$Ip-ma$=^x(x{{1^Pr0BhJ@8R6i(lUV^ z&txeP_$T>ZJBE{;-ZPVGiDw%U#X-5lI+?5gUG(lO+2{ zP0GeNMSetm`{zxt$o^3QN)-}+TxKR$RMYvtyJMSg!##MZ2VUhM&HQIYF6S|#-Kh(V zY|r+W!0H?&Q=_7`y$^33gfrtRkU|7>LVx1|iQs{WtEjzGaI#3MBjg=n3(~qwxn(G6 zQ6)7Lp4Ga}OcwM5PMJu91&P|?4oB(EX=ZaCJ)@YQa3_dTpANdcAO`2xFRP)$0%soW z!9Huao()Y->TuHXet-b>967HYh7Z+ikJPr`D1l?RU;6%v#Xjml2QFIC)IB@*4RHgo@ zQ^eP&LFiHFXOLWs%?gPTDbTv({G%gp5#VZ(Q<6shCE!I6yZC@!xxsR|rKQExd<6U+ zz}7fA-r9>JY_%45F+4mRmy?VUps=)V96Lt%r*-8SuxoVN%fpylQNpfn&~s~UA^FWJ}<@912{S@4P@WsIA-vJtAWF$bv^73-SUQRgS8MZn=;E%qaZ0blT$*f7HR#*Rm zehrgvR|f|u?G`bu;0^&WgD(oX@^3mGP4K;N-+`I)gaH370qp@?Gn{}hibBU_HzQE= z?sZRhw=cQ?G%tAIpj>G^Qw~3|)b#YCS3!7&wT~Thg|!b(D6+2)N-VIEg9v3=uSp|B zUD1SfzkjcI@!L`0%#iAmjRqPUg@uIhCpL1W)p4GOXEN{IYqS?fxiUI6_4;2fEslb| z^JCPRkO~sSIv{amJOF*h6bd&8PH+%5IN{!ctc4uzr%!D#LCxBlW{GG&S15qFxVQ*# z9v~{%`CdEI0OdP;6;4`O3LO?l*l?6+{r9CM5N$>kzN@WL?x0z(@}^}@uNpMq01t|&!3CBp9A$Gc)xV2*sqDD={?emPhYoqa9T{;95O?B3Hk_fC@fY|WhF>TZe+0XIc5;fh%`m124n}(gvbf}hR#&O=~1?) zi>)mv*;&vQ+crhwTtjxL20V*GLyzb6AeEde1a90gfULt@9fkVq-*S*AZ|t12hhfP3 z8trlH*h5;gSgWYmpyyO0sA0Fe2}COM%GM7bSZ=f9T`6E(vw?z&f0>Uu&^dxnaF8yb zs(;$`Vg3JLD}gVAF+s9%bPQL(FxRvQwO%yhBl*8|z-_Xs%7o!^@ZMv*^rfM?m_br! zqV?`_l$<6Z;x|Y+<9@+JV3ml(!Gmt-$XI0v7pz+3AdGgLVoI~skQa=tgx;TSd9|7WQB8MkPR@gJ~4Fm^m2m{C+$B>0ulT0@+H-8 z6I$v`2tS=(h7XVQZQ;o~+PpZr_`lxf{43Wo_9L6k%*twJeEBa?n1}KCGTBwTFW!qg zE|;m{2C0Hqp!xeIdHNWL$L2B`Rmf*Qemr-P_syoJCJYPEB%$&^#etmcCR>afj@>#q zh{yIX?mW7ABU4k@vP_ng90Zl9?cU|3=@c-q;YdQO3SJdR9l$2=gjiG&&J$?0Q8L0( zTv<7=OmtQW`b8YHSm#(S@F_fh`t;!F=)3n0KnrfPkn;qwlc8wP!yK%)_vC3cJ#2Z- z&I7gHqU^CqoEN&=4tn!te}9FPqwJt|C@VjOi#6H`te~*HpqG#1h7>{eiEh`yfpEa- z13$?=wwu^~?Bq6cg<#jj|ESYs402H1m33hHfTXY^l;i29Ajqld=vhKA5#v`K|Ix051E)6OE$XjzAUvWLRc~Is%0)kJ z>I!u<5Uc2zn3w0puv{_aN`t@jACXf(<@T_!titgPX9`ycYKsrJQDnXCE^GSG{rY#v z{<7Hak0Fot;6Ylho}6PG4{u(-ejOr8MdEG)c0SZp#b)JHT#{r2K!=}XvO`&hG#b&kw5AXNeJ@R^F^X^#$^SS@EKz~Gbx#P&A3Lb4hXKRyBh!!#C*BO zJ?n;|4G$OR<+Zf7<`)<5+`j$Kba}h_40aQkrv^Y_1;&qG(X!GDtCPFA&sCDxIcZI)N%R-IYK$ek&9RD++2O%mk! z7-U9{(^3j9* z6jWirGoeOiiDu&9SZ|a00u3yNtpO!FTXD9g+`9ENV>^k0bEAm8?BR@q^<5J98{8H}w!g1IRJP+Yo0aX>`=bs;_ zA>6SIz6kZssnsd=@_|iDP0cd=22K{5que5IsgRjt^k!rfLYsp}B#7cZ8F zg*9V14Hr$6*r|z$pdWf;I!zTkI6SgGlbRc|0$!Ic z)%(m3-8pm-w0F4F`oYK*rEf?FenX(?2CW9y@Cx=dj57D%jCc*gk_CW5)Ih?*!pP=^ zTMA4cV5J2n5uGYt8%-gxwknmfy_kaZXLC@v>6PgRU3&S&Mtr0C0_O!;Z21Jq_Kjck zm}@v?pQ!keA16gk(m@}r2c8hHXJrqd#zY{jE8*g@pPC!z9o)7}A0{O+si-^ywPQ#g zbXROE2>t^oiWJs@+}x)V`0VP`F#9-zRt#;#CKYWR9Wasr_Y7G%W8Q}bimh)D%Lfo1 z`rX;03!jX2Xo2d##MXv1c^vuLyj@s_Zs`Y3Jop3F83&QjSlRXbxoSuU7L!{#JU0yZ z8Lo1o#HA%y?9CGZP%{nlP>L*T;p%|Afv_h1L4dWWXvmKWH8-|Z)l8({`7ISw1_n9e z{G=vZSon99dstlj)$p-6zUXQ^?cXk+Z1;)<$I}*ryPXbjJS7Nr@}(jCe5O7LBCQi*FZ}lYsTvKPF9-7rD zDku;X5|a0tWcYhrSJw%-AfFs&i@HD)E2qI~!}_on-_ww{c3%hMby`&xmi6C$)<=$P zA=K^>o!>u*{JDoC5&O#+J7RwzNKE^2@5YS|^e9N}CFeh39@L0jj31VyYmeUEUQQBg zl?;(&(iU|~x+J~l^z*p~WI&h{$h9p=IPh6!U7Z5fp0qR*7X#J~9bM<=&uFI6VE_l2 z-_G*nkSg1+MXyZqz#G%;u3t8Ek_3 z0q{%0e_rLpt#3{_AaVM62+}QpM6hxp>=L*T@4kINf`XEz^wQ-Yq0@Q)KIud_6a;XW zi`DcftiWjiXhBv3M4KKiA))J>;n>}&w{05^L-BzZ)uL7RP9#6BheUblj~qL;Q{6uA4u1Wm}GdXZ?NmH%n;NLSdC!6NHPquzz&k`~89^7s6 zaDAxi4k)PF>jX4rO1_x0te4iHragltGRkiUbOdbZZ8d7o{E{xOhij&8Gp{v1%t9SG zVqs;K(K=|PdTd;5?C4RWgiy!H-fHI;C`8RxkEJnWY-zE}sBk7sa04-ghD6CzZ8&cOl zT0dFWAx|;bG-vb1qYLW8EBeH?s$1$=wxk{otf8y1{L7pkg|+>kU49Jpj)DvU%Urv{ zrn4c1+f}9Uv(v5$6+i?Rpnm{_W43F5^J_56W@fcK0eYdp5Z<8w>M;IQg4MF6OC6wM zpnVvw5(G?m|9%5k0f_;H72wf!X*CEQGRM7p_VnMG@s&h{5kF)WN6`SdaUs?gE?!(z zo$+C16Fg^p{1f`S!f)c+6*--yOVuY#Fxrtr`ib&{RGX=os-YY!!K^K>XjRTaYV z6t7PNWYPTkchw!#G=(pmIkQKiN7bk1-hVQRWzEyPIF%Kj7A9?+WME*&biJ&sfr<>C znj7rfAathra^$6x$>2g&Ax?M7<&g5`2Yhs2aXBaP2IZLpDINF{WM?-tZoxV_g0yGI zEI)O7vLws`2i8uD(L!vgm}BFk30PFbd*Xr+rCG~b#nq!FUyDwqlas<}nR;LLmx82Yr0l2m|?e z7{wNgF{mU&5H40}wQ19)VH7CrHFnxGVHzjL81rhpMobmuo_gaNFad`dZN({rO7NltL7(4dx*|SsgcBQ4Hgx+u!POYffIb0tuJ@=_>>+GbBjo=+1 z8Bw0w>eA*$k<67$D@)G|Ue7y*?E$NB`dRxPD<4&9Y&vN~wwo};=I9b7rMSsL^+&TF zy}qYS;uU@qfesTDowZpfe!Yn2$s@vdaqlsx6+}oILDW&MtCe0}^ir8J#b(KpCsawS zT$zl)0vv%{l75}GOh31eNV6B@FgW(k#Vp_b7C z8u@FGGJ;A?lUDx4*Y*Jc0kdY!g3mD@$Bi*+RLaGRBh++ppu#}GXijH%C;I`Si{wV#@&xFrJUPl`^=vyVCjot@+@QgOzu*!!u)ZL4 z371IH&F5NJs2dyS`M5(Tj5G}n%=Zn=z4XT3(lRP6tcRA_;>GVVK?J_JCA8T#5$u~= zGWkICJ%3^2_3gP$u7aZCgHNaIb>iZ8?FvybWMYd+&*e5Ytzmcm>82csNy2IMn^M<; z%kr}#dP@)Rl1qvXmD}ntS~|33m9WW5&9|U>O5AlQYygV8dwsb--Uh@$n&z?qISK|d z?rVKm`+!K#;ndaB>wRral*!u_n|iZn)YOu{d6-PT_%M!$H6k@(Dde9H$Re zc3Su&OB6R-h^&*f==S>W%Ou2%SLmNVzJ9#?f4@5PKDXPro7DgN zp#}SThUo<1;Rvh#S>p6sTU)!vSN^}>-vz1--<6i;oV4!=!SuT5`Wfo{0KY5Z%jt8J}qtrDUaQUmfJ<*C~n^rGn2Dvq5s0^g*_zzuOMigU#cMzZ) zgFe{SZ9s%wY-3})WXY93M?8LTvECBal`v#4*xPf4Rc;tR3AF*WBqY%Ov^qAqu2w<$ zj~lLHpINAk$jBhwI_*DXB{OArTC~1@PXnul_`gq{Y<%@9A|GmT|6MdbIaHN&0v8Cj`gu&_5Z9|*FTe;mhaPQp7?w1Amw@goyNW4MG-|&2u zqi28n@(Flq5W|$j%IvEMgGBV1qUtdH2OCX%sgC9S5x;F=f{(}^)-+%b< zd`8BAbiA5>z*7-S;5^ZFG^D$yla>6+{7hz!LRkKaAwna;@qDk|YQjd;0B&M3yGfHy zlDRf(IiK(8#5jh!b&OcwQr2+KHtTp*P}RNM$4e@To2CY9I`})R z>iT_C`(eey%PJNZHBIfV{W{AIypc{lrsj9@nkK*)Z=cCNrh^tYle((vt=J88jHJMj ztCBqDYvVbgdc!(BrjN>Di{8KA&dzRb`W>nWLhmr?le&LGCB(+%q9SU3BJaRQG9{C6Ldx!PPXgai7@GQeg8^oN8H>L zm6S>~=b)xJI_7Kagg3^YE%0dZftN$_GLsmV0C3wfaX9xk9oyOFY#*P*qB9lbw;;Mn z6jn@~dLL%>?%g)r!9fFOYo9NCKQ@?Zy0-VvKAgRj7Vhk(5x?i&ljxnpq#XP&&TpSz z7n6K6O|wXA)w=sng4ZlDZ7FMgU)K68COPeJ@jKzdiu-p@1g{w^nYqx(sfHw+A-L2NLprEy!rW=Zb28GIX*7RTHt8DoC^=sM{(SeeF{P81|lz^v!_tc z?a~Zq=QLzwkL^?j5oBJt9s6{wf#^mM9PaYl=RPW zI@@NAB0e;abF=F?$J#o&wJ?*bA#&E6yk|#_t0^fzZ84J;hfuP6@)QR;eScbR7{hr& zxTQAIrQE~ATzb*C!HX8%CO>p`b=_R<&x|dm1R~`1la^*)))18(bGh(~7lYQVdj|+E zb$&01f7h>Hi_1t_J|laenO!X|HZU|?YHJ&`ajWw(Hru;*?@(?SKEB~c%Q1&6&vom_ z5e?xckc~kDTtF(uey4Kh!yYk4l_vbAU0mN8+MjZCPQ$w536i!OBful@T06>xuIS+lbn zk&n5UI08VlgnzJ#?yZXXbyyfU^ADI^ZUa7D_m2L4kqxzy6wg z{4NLn@#EoYV%`LK1$U;-9HH#dy?agHuQ^54JLo~@i#{s$I_KwR?s|8?PB@yVverxl z=W58A-;S1hsO>X7prKDCAPqG?VYMa+?bS=@1rxHo_4L`ZfE;cjnDh3Tv69z5AW{`Q zk0o`338{t&Pjf3o|I^v9+*~6owU}>HYRW51Q*ztj`v870uxt}@t6@9UC*642^OVp$ zz-s;a77QxHb(QH`#*7;E{&q!#tv9PpvG-RPPBw@SlA1v5&a)i8s<3uo5;7cn$#B{< z{`+U4(`kTY+UaCPB78O&4QvbnCg|32Lt(E5g(0G>fB#}0))myJ0|$nM@4}2y&f*Um zF=FSrKkXTI8ykBE*9=0UVSe|(@#FVEtrP=vxS8V@FIxs3Ak^7fB2yi@y;=;5P0TD= zQJbex&~1uK#5Rap`;G6(^jdRghgs0Xo`=TpmosPd!U}6*?qtq1o!S`n{82kyj$tnd zS@ducCBF72pmpe=^(MbdIoU+CnxGKk}tGl|n;kvM-l^7(es;W4h)woRQSW7pjq39-l zXRisQ&je=}%~Jnylr|uKPM@Ao>Kp;R6xea<%$Xr-x@#Yu<`_c4jn>w_RarTWjPiyn z&w{wYJDg@@^ci)H9E5`hb|?qv^bwNX547tl(0hS{{3I(Er6ya zQalIGteHAoZMV4p{`zY%`RU-nyZ`#D=;%uVBI09oWTevk?TXkr#9<%&Xg(#5C4(#q zl*r*xusb#>tC2_4ym)b%T&!HaWpM?5YdAdFija+s0c<3CAF@l6lB!{RQ6re*j`>Y{YRIq z%A#gNY2?VKw{8`r#^XZT5)eSn6^Q8tw|8y)pvIaSZ}J@GnXs%}otQ8W#)?hAxITC7 z+68^_Y$G8S)Q&<*c1E*5A^+I1`DFEuMFlH-3;W2*Vv195 zT3V<%d2;*5kL6`$wqk&@yWwDxyk4o zc{AK`P*Js%a4xzMzdBV*zyhkkuxbd<;)xq4j)h(B1bzYvETTsSQ9nnI2but+rP1r3 z!k-bqHy4+e+)mK2<1{tbqEDoxm~%lC7r&tQQ{iwc5FDl}#*{t3v4x3Uq=y3e@5sgl z*4F2;v-|bwLoo|Z)qb+FbEL6eG!TQ>)xupCiy>FIM1YM-G8Vpjw)pum@T z)6!xgQ{g2&J!xuN_^u~#4^D%>;s1+~lxRe$5WAUbfRrUrzY;?4!nSCH|)~k9|JWM5lyw zGD~nJkc?-~Z@%#D26l+KM7OzfUsHT@UU}HgscRqUD$CKZ0T$vYF@tmsJZ0K|yTxyC(WgV-!h~ELyF`5h7p`hLj;B8m?%j(!c<}i>12TF!UJY2ImptnNQhr*c))U&^K)qfcmTY9~`-0J6_UoL+& zG^(VmR4Aom_OTNuUW}pXD1&R*ZgNthV&IyctAK1^`p62S=$QnHYB;5+`XpM@Gf!*i zg{};hQduaN^zV;z^bZH)MGM{vO>h01G-sx_7bc!zCin9dKcihB@bOLyV9!h=m z=vgRbfVQBDo{}w%aG+c~3UYFSww~Tsu0%1^VVryYdPnu%TH_Z3jQbWgJvK~Vc(hB< zKL=8}e}5_Yp={!wq@>B}>POPj?oP|Pa6u_Q#OGb(ryZW&z`LCqOE%DcT=wJp*K6#0 zUcG%grqmf=s;{q)cz3O=?7f!r-@Ufa32aX7=p1%-nF5T&N@-zg=Lie3blOo^8%OFR z1h!hl`S=!Ywf+gCMJy3yen zvLdd3%)l1KLf^S_hlRJHKolnu-XS0yMWx(pt#D=A`YFzzH*ZtWGtkkTKLurXFR!G( z{;Fu0{`Avv&uXL0$6b;-uZV_Jn07o0SA-!Vfk0|4PX|Lzz#8l1Jou4&&DJp+}CG2aSK^&K!$ujZoj(d^`5$|G9} zxA+D1uk9f1A1bVKTIgzLfNkpF4K@d#nO5`qPgl=pOFekdPPatv3+d!tyX4|S6}=Z9 zy$h+%TGAZf0}&LvJC77cD|bF24u>17t*@)QVBS2jFAgW;h;@>~qD5IqVTK8b2M#=H zHQKxN1RZCE+uR&TW`8S2!_A?|`zltqx6^spC%VO4+wh zpAW+DcWM^>JBLXSBm^hk2HLnv6Y0dHiCN-FbYrqtp*xO5CFZ zYUZv9?knqMYx7)h912$W_H!S9i!vcapjUMf0DvR*;e+Gml=;3#wp%OO%D;>;Tk`Y9 zEgfyaYZi6&NgA4=o^oY$*nu7P9mUPTYv_*k{VT*FG)_kdI`lwv?JO@`@E;4S%K zNow=bitSOv9GlB>-dxC^s1_=#>VmO zhK?DBvGW@<$S3tigT3a#8&-4Y;x(Dnr14QW)o=QV-Jb42ziQTG-n<~kZpQP74xRAv zCBJ(?{Hg5e0rfr4y#+CP{Ylg)33mSZe2BYlRS z7(F_b+c|vU(xrPjIV3cUKx`+4-neY`gNmUt5s^Y1nLB22 zVBi;M3L3efEa!L*k1Ba%Uk?*VqOxN7a`GCkh^i`|fQLQfNm+iyl(1yU>0Dv{h0Wd6 zW~JYOpd^2P=&+=0G6&-6)2GB7WDD{UuDai@{87KjUG!aJ0Qx&6r6?|QJuIo7=Y0$% zK1Dj?0?W6_!34c}wKq1_#?g_%gz@woI@9E>Ci8bc&PqXz`Agp(5#7%RNJ&Dv;p3g8 zr8Pjb&wF?%#Lk(tdpDB* z_`JjvE+CuphYr;c?{oH|FM6(Axrhwt!dUJsnOn94WSBlY1~<5I_FLXT^Q6)8neKIeORn*ltIZEv)ZgUZ}t?u*KlUU$R|; z$`4(K5qnB%0J66F9Xpeq-G1 zGG+WRv}`0)kzdOyZVMkD!N>S)sHsF_6BSibW;KJu<(SVMWpmA0C#(=QaJGZP$V*wK z{_kJhH0`>sxzxhq2oJ^6eZ}ws*KGE^(PWPfm=^euCub@~zFDbA(-^<;dJwN9!z#vE zK4;(MG_!76zn+z;-Vwa`@R#>oyW|P+@yb1WZWH-munrW4@g&h*#*t?2$hX*uh28wo zgK(A+TWQephtd=_IOP_ha%I=9HMg~aBbP$6)B1b2K-{$WrICU8YoIJL_B!Sj)#V)MFtW46L1X;y6LC?A>MAEBiThywPuo zo~)rNgM%_Mp61T~RD?pz)kM>6umN_Cn>TNgFa(xXPNG!3ct8#-n z!tzC}!PMWb$Y6fd(9kfBdXd|7skOD0!b5FcU1L;eZ*QtVwCnC)?E27YK0~^(GCLg` zHca`LL8TQHgS5iC1*?g>E>H|ePUCVmHx4tuR#dbKhMJ)1AUHTknK`?-L`Fs7&Y)g& z1F5P(9q-1Jrw5zEY(y6~H+iYrrl!o46lxc00dO9xSJ&LUocqRp*wZp+jLh8W!>6vH z1Du&J0p8uuuLJ)3#mkqdEN3<~EbSF``||t?doARoqDl_%V5m^>TT*sLG`a{+EpPHa|qSj!=F))D=99MU<`jZEQ67aLlswZU|7 zlo7YBUbH0YBpjC;G$_ZvRlV*ibe!>p2-O`xhVX@e2K-j$<8*Zg*G&uT&=#uK1(k2x zg|*=vtc^-=huN%IFJL07Y`ZBIh2+SwRx(=JHi&lxx6+Oty+CN^aXl$2+Pw0?7L!hcaJHI5#|mX-}<$Id$K!oC%jxE9Gw;jX}E zI4iCS6IP#pV}BIGCYla!pe0LhdM5Ybez-{d+0iUpgqu7-%6sqQz{Q6HMKs8=piZ15 z-8^(C#3D6edcaxgB$^IyI5v|Kf}=+@AyWt5APrf+g*n!g11DI)jRTzr$;lPC&`Ib+ znuqeryrOL-tMmk2-Hj$vGv>{!xBU3|xk;V5oPq+yq$3!71raT(+{e3Xg>UuwzK1r} zw2ftDBr;pXdW-=BKDM?VWZnn;6GTS|1Q|1?2)JBvRB+(Q8ltGkrlnrUmh28dU0Lb> z`0QFzL%K8o+JFq!!n}D|=gyg8l%P@(u8W)SmI6coY0$Hb%l7h$Xm8;((FLx$Cakj`_j#&pdJL*rQK}#?oug z&JJKOe(YHCVCUTdy*zVGw=>Y3HSnDc>{FDkAm`yrtuQp9xk$jt8$(Pz+S zyl#1HXUJl0_*t)TNKpUo6a8vUyJXG6GYJRPm5hj2uQKJXU1xoi!)bwUDdyB9U84B@ zw&Y9HIfA2{^kMwN$t0Nqt7EqS8|vRbFVOBWT>a0Fs5F#J`+xn2qDMt?{UHeJ<>f}p zY6}aCmX;Q@mw#@F)w-?>Z_jl|N8A;#XeZF^D7WaK!E3Ac+?hl!&VIPXCna_KeO6IX zLHhg8Eo@v=noV|Y?o<N|TK3)axvHw_gvgw+405$XiI`!h}7JvDTHby}6kebLj5wF6y?bv(TM9Rn!bS%1av6R{!-18j3pxZY`y# zpU-?}LUYh9go&AXyvBK<(r$#4lT%M5^39tY%E~$Ccb|@bPS4F9@j1DMvL2Z4Nj28d@i^L^yThdQan$};|Hpml2wbu8@p1T7 z)AN}hx9>~w3kb+&_lFX(u^KmyPfq#`=BWm}3n$}4ezdeqzy?0tn)zhaGrx26^y$;` zl-9SDjy5(V#Kgavkc-Fu=xe_#<je#1k7XHD@CSCJcpB;krF5JBl6?6ElTeG=ztTmzS3}HlDw}eZRA-i;0nOQ5p`#L5i?8Y~ z&ir@bUc#lzW%p~NQ{KI+fKlT#cf*%YKp>%G4*M?uyGHM=X-O+9t6W=Hw#pRm-9^<0 z4<69c(z3>_{QXOXixD7ZVq`S=;>uMQSHxA9negm8e6kN*R=Jh$+1`k-*X}bXCqeK1 z)ei#B9uHGuVl-uBFeFvg@^_nYM6*)o78bOfjp43jiqb3!!-0j1VddhA%E%ik)E-b~ zU}h$`5$KP8%gM=Ud8m*`QnjzIufc0iO;xq8w>PbNY4p=VU#7IhM7!u0FU0t@cH?Ih zs&r$%D=FX|Thpo9u$rD;`=J59FDA&tJ&(?k;JZ~~!&3ZpsDZ^(N*0~kK2mbmM-?QL2S)VXjKKZ1*y*&tv zWO{aX5KdZrJn@?hH8r*4gN=>Z+1d4VC3hK&zLAmKsbE6`gY%;W%F#(zSJ&WMWW0W- z9xN=y*yMsmMh&(3%A%-8WK|wpre2>d6cjoGZxSh`iYQ`)AQ2IZ^c&01HbvZn@9V zHoR(nZVm}27aDGEzR%D93tk~4q<;_h@;G)TaKT!zFftx*cd$VVaIm*0WY&2X8>^+G z^Q%z1)M2cu;b78RJy%InO)U`$9$9BI9~akUae)KIOc;tu1?y&OYinA@FDO_$yez=M z!D03ztgXF0k^lKLoQ9{cys)tl6_qdMobU-tf5jMiex~FV6zHj{-XyxHD+Z|9o zJKi(nOelYOOiD`1$jG?0wN+MD=GrXevH8TtW+|FM{djN1eX*Cy-Th#D+sV~+503rf zqIH>$!iF$ZFh<5VepG`)LkUBR>>8Syb|nV)7EokfR7OYBXsG(eLPWb1Pt3CW1B0Ea zy86kpkon#bYAE_JUs00SJT!WffkjJl%$-% z8Q3}l8_;@rFy95|Ev2Z4*Y08jxe)p-Qts!|-#a@y|2793e}4AZk3EjfSW8_U&hm#M zNn>MCF0N0?sUo{%2wiYFI%i zl3h~QuLqYH*752eqPnE|bg8UWU8UPq2=*5H?u-2#%vWFf%b2T_Odaq+*gH0Z{us~a z{Pd_ie56QMyl1wjyW6r%2Pyy~6H_MTja#=Y*olpO_wJk}|IJg)q<^!$w>Q+^j~Ch! zjE#^}2aJDy?w>+e>p0c8ZJV8)P3gOPJE~0q8Y-nv@q11J$zr|AH@K0>$t-p?erJMI zH2nOZ=kb>`YLk-28huZw@892;Y^a0sSx~@u+!uoX04fqsh5B)gl#~>#dJerD4PH!i z^x$|JeEX7;5+40UAEe3eOoICM#5Mwz1Yc}_eL`N9!1oZ2$FBG%OMnPEG}K$iZpw8OuK=Zg@ptwsHsU*_z|6`Xlh0tC35;6x7_!{ZPXG_)NcDC zfn-f>trP!;>o^p>IClsM6O)n##4+X$H=A)36&07pU=IghNWP6uN9YUE(q0(dIsfwV z>h9)`SFg~HzV=eSH}*T4gMEZSHISot^Tv&Wqnc*ZGRv++O~;3|wY5;7=~-B^TUUEm z%9|!Vp$T3rzUQof|6thXb)!>B+xPET^J(#3((OM7?=oENl`_e~s{b=P`~3;~;+1>5 zF22VNZ*kR}mqtq)k>lmB{@2l7-s9!fqJDpPbksKdXlrwGaWH?NSigF)ZucENy8qV_ zDR(8+!LyTtB@xZS{KCSEtyW64d~Vp8WgJ!(7JVb*+k88ln>zI#TN8Eexe5tlICjy+ zTjz;x>*J%P#-hiCf3(*lcr81LN8|E#-D_O@vf3K91FaWZ5V&}PW5t}TEQxbVzyl}i zbsLMCS3Mq5oT+~M`^*-*EP=xeJ^6b21}x#&*w{dIWkm%XaigQ4e7N8G{dTbLL@r1L zU97tRy&CYFeEUcDEB4V>jDOI`$dWcUH{q)B#Q>T*&3BS`86J%Yi1PCC?pl-951^q2 znGkAf)5YHO-P|_l3o$7vtlrjJ(=FO12ADWFQ=hEfN>IaU#v%N|U|+@3(o#>4bb>Yb{rlTg=6lOSU)ffm$z_@{(bFHURZo5R z@WCj77WQv#cDBXSr|WQ4Zz+U-HzCM{ViND!(L!ozQz@U$?SzzQiO{gHtR}*DuC#^T zF#s-prPz7S5TT*cR2Rqp5#Cjv*Q-oqah+lZY|&!MA>8{`icR^xcaqoXVVQk-Pp0(S z^V1z=CMKq%uP%Tm^YRv_TS5cgrKP3i<6Yl@q-Tf_`^{_C+#oe9gMj&AK zB|w^{c7A}T$-29{h1^yT&km-RA~T_6MGFJs8>)7kIzKx(IXdz^m~ih&5zcICz2-rb zcHCb_{qW%_bPOm&iqm`#l8zDmvEXmV(2HLG?g6)hPjva&4%K&(|);@qD<_hRH6Cu;Wq=9cJHE*F+IlJeLN!j_hkmk-7wiG2UQ48SLp zJt$_EeGxtkTFS0=^5v)68o5+Mn;eIFy}vdF-OKFhQ>D_f?LS}r*T$-o5)*j|5LsDF z!$p^|Du)M3AAWXq0c^GR^AkaYnJ!By06f6)yMK0I7wiFoUS3`XtOx~r3{W9_>x=Uf zM=wj4df=zf}q^Azw7-aa5GsC;xa zUp==UVGIZiOol>_6`o1R6FxsaI*N3bDw9=*!{m^U}IBoSz?iQHh3TGZ%p<4eYQT?;C;CH7e1#% zr%bH-3Y-(Z-OFkv9Y)-z*5rliRoYz{as2-JcA-}Bn~)F^fULE($8fr<9H&GOmqium zX9Ky)(h?H0b92JbSHHfx7Jw@)Eq&|@xWN%{=;Y+&&O%T1$B&==&W>S??~;>W$G$6b zprAVVj!GO_-dEGI_3@hfF>=6==tbk^V2Z37pg6%elz3v@ z$wJyXIxy36Jth`CSn|~ey3|n2b2mUasdvua7V0w)T7PaLerYmCwwNa4#<}Ai1zZ zF(!6`ZjmkiMws0KL1O2)eJI0-{kTh>4Ar!g(BL!cJT+M+qCc zia0RY8=LkdRIYmo92) zeqKuZ;2rYfRs*h+(fItS;nf#zh2`Z=f4>Fp(vTldBpFF1XV6nprs{2|0#S?+-h!K4 z{uU4R`OM6HeeBMmp-S(A^^=2*gWcWL$%d0G*(lh$$cfCMJ?ol4RM|g@D>+ zWzoFJ5OiJEV2TGQ+Ni|tGVT5AqlpXcSG}7FXMmK-_eKQnc5nV|R##J_!NU|ri^k=& z>Cdw2NwKl9>2pt7{|;5mq+EVV4_c-xU^6{&Qa}I(1_spB)Qb!4bk*$&iQFN6dFADZ z+CAJs9~mtRoHPd$6#~r-Q9Nse22ZvtE-7VG*_a2gL+v`wgqo&ii)op;c5T4B@87?N zg<%26$H&JP7H&wKn1{yN+Db-Dd?|FK0R14wLXT?88i~suDUXq%;c+J=B8p2+F3!v} zGcnl`yjl4Zy@s7Q%xeLENRI)@8K#hsY(Qf)mw%CfR1oC$7jZahrG4Z7?+qD{8G_I)>Q-lP=q$;-*HbZ}siSL$;t<~e}1 z(OkKI74^qZYo$Cvs!4gccCy4ff$`$Zz|Awv-O#%3UGx>un_4~t>)2fyXffR?&@B9r zoZQvbbq6884ZnI6DyD`G|0H-Sw=IsEx@vk&Q`VJ!G6ed|_8wR`A~fo_c--!;Y?#(FdDMU0^u#)e}|x;oG?L;-$? zjy4BUZ*478O>pN9Xcir?6M>EN{nxwI7cW|Kx-J*;i5ty#!P}U3rCzjmy^DJpJBS|1 z36dG${fEz||DlplR%U}DdpyDTdtdNEG#xWpZtCJdsTN5jf1{^vh;v=1*@xsZ*NZ86bmzm zs}BBre;;-tvigeyl%#YOnd+Vo0-xMBCIJw`MFga#roMgq7K#qy;^G1o*VJ^H$k^xk z`KhNP&AWeBC#`sEpN`T;}4)>Ts8 zMVW#fOA@Q z#`hI!vq@gx4uTKzIoWp@HH0n-teAnD+PXo{`x`YkcXZDJpd=wWI)Fp-uM%wN7i9<-9zJ|{?;gsN#QLm%U|?-^_3qufuU@?xF4kXI zTVr`I!^y=3g-TID0dUmJ^fX8r8AU}OQc@^LNEq-!#t~r4d%~F+85Nb4KoRv+RQ}A( zW#{BbVcZUpfCUC!6)v9+bXi+lAT2pLIdFBwMMb-to4v!sbOFGr4eLEPpmzbCh2I9e zs}=G+-nG%t&;WY)-LwoO1K^r>e5*(upjCi;DdIGX@wWBm&6{=33rgb1LUBe0EEdSa z70AUo+RL;_e7HaZ6_sbO8KBAnh=;uoOmwmdNo_IRTOEy>ycB3eQhVns_Olc~$aQnu z|NMLg&`cvhm(fpFsY31%U!M&A4$GhylYyNDg)J&73V7EoEG)prJ(oObjVn#BtM27X zF5r0hJ1x><*ww_!`d6&f#HU z-@bkGJKd6onhm;8US3{jJi;*p@G>zm5hTk_sKpf((Q?@UQel1W2Yjxn0o9X)jLaCc z7@L9 zKud*+|#bROTR{+$3ba7qGap@=2$tsE8RwQnEKrhX}fx=JFJTXCzc~HApN=-m6$rKoM-?(cBpVAoA@A>!lkMJ^@u%Pw- z`U`|W%l@h^6H{SV65oLQt8@4}a7+wX58%E)>s;tby#W0RK$gCHE*yNgEruVTd2{{DXuw8tRaU{bmEi~*t?wdWN+JOD}rD-QfD-&^eT>sCgu*6 z1i;4TX0y5W7&yd9ybd7FkpjY{l0c-TTPG()7#WuVRc{>}0M=BNlT+Kh?8>MLK4YJ) z!O8Q-Dk>CFvZtrJekWaG`bic~BfiC<)?QXu19af<|Ei*@3Z$&Fl@fs+IN0Fr4wTI6 z6&ls|FJE4C&#Ms7#>mm)wSku3P+yOSk3Ujsj2v#7cyVC|i%%gcYHD}@I@5cq`CE_AqyaNKHj**dHMWPOKNllPa7d|z? z4XAD@7kl02{aimWs6c=bOWy==2-4?e4b=^-%By@E{oKvX2;_l`$xFdcON*76d3B=h0P559^z>qlJc$49 zT3W-v+1A$9#Kpvr8#iv4nwf#vEQ=ukjWIB=1tc<&lhse4K3!_!UJP zzfD9$bo+LCLBVejtYMkuTkPK?#m`azTzbX)xl>{2qd z_{V6iYoP|?*?f}Y;NT!3i=GSUs(_b=5Mf6+ef&O$?5RC`JUpN&u&}by1q=#P!C!A~ zZ^OL-kbK1>PalRDJ!i+QOd8z4e96V_RZ(1u12{a^<;Iw+@TWmxG-F zaY6L71a6IkTALLUXxs;RKk}v6xVfBWWsX&k-xk3(d)+b(ItF|`RKCy_Q^20!R)t7p zKy%K`CBnu1GP6}wTnu}Rl8DG1$g{HOnagmIuFC_^F}OK67?_xLc6YOgj-eWlg9MI% zUPZ)a^w8v6fS0=*#?ex4s^8(?V37Lvmxnq=MyeTb>i*V_DC*$oOG{gU$F%DJpx?3a zD5&}Gps*tx>IRRk>C&ciubCgW?%&UZw;c8sJKkRd_hc0M0BDiEyM5B-k2yp{M4&Ku zg2Q;e>M-#8ky_As!{7iiP&o9{@{@yu!^(t_qGDHfcZsCfrDUTP_kn^*n>1UOvym-No{npM-Vdbsh=5+1U{I;p7)J7AicPl3F z`8?H7t(BFP-$q0Lkau%(imY^B9$W%j@?Dd<*z2;g=gvr2gvo{e7j30;$*QigwAPbB zwGGb|-Qs!6y%gM=H$#E&gRFsm{rX!nzLKJ%Rj5s1R=f=g3d+o!8M}^kW03bhW^x)X zfnFd@(F;c@DSt9z(#BsoF`;kX;9>j&G!2eNNkX(L z!o2s@ACpRRbo7?Pm-(F~2fZXPNYm2p(b8svNdnxTla_W4bR4{pEU-19dPzxbJRPlb zL#5_lZX*?(+Q$BPj)&6Hl`A9i)lYf+P7kqCMHTv13 zY6_gt%j*~vgu;RX733!TKF#-VIy6_veO`u!AhRPQ&^t-s;-m5N73>KGML%he@IF?nQpVMdUVe^DDU!xX@RHu>w2%8M&M_bqCVLKXj6wL zCvbGYTco9pb>y0Emt06<~+yTiQ^fctQSb!Ln zX0fN~O3lHunl3J%lDegnHbAvIML#FXyx_Y-1P%*67VI|dB8{)hcj+V9gB>2HO|-%gj7KA237V65IF!>Yv=nVn?;2aQW^{R`LyS&OGZT43JR{K-P@UI zWqJ4hC0|r(DkUMI+X1pZF)}W4|Nab!w9vJ^=VIaiJG#65R#0H+S4klc!OFP+o1K-F zH30YJqs@g>gp)XIJ_I%q3PpNlt|Z+Ch(-IzNE`*ZsK@4?s0Ydgd3iraMd<0RL2U#l zLswS-eg?za$?FoM=rU_T(cJltjq2s)K1Rg#BqisdD*~VckmB_GIrw09DPK^_M4RmQ zHXlFfSnbf5;2swqSLiCTa04#5$qTnIkx)`Kicawu0M1CUJ`ow&%F@yifD}haXWVjt z_Om@|mD&Ypf3(~JP*XC8SrDLwNVPLN;#+_WFI^2nX6x=t{$+iYRMnH&X&Z0goRm|PU)xeP9SpruU>(%uCehw@5Kw$kHUZc`KNwD z6%9q-uODs=%22y9Gr@C`fJnfl@sQn4$k^zN(4$4aBK6N3a*T|)hw^|X?~ zzu7m3%Rh6f=E!6Qqlb26=zsI)xB=T#uX3W!nTS~i{|0Tj)5!1N%#zplxLR!3xj8vv<-DMs-&E+z(WxNir@6LKY?ge-D$a@&Bgxw%2}u+Q58r@qb|*(ld30<-}@69N?{ zzsk(I5Cs&fxO>Gf0E+ljjdL(=Ik?S$1|31j40s1(pTlH532oWqm-Lvl^|V_uLsU$c9ovVWB(ZSGUvMb-n6E(`3?YWJ|?0eK^H$sS~C_W5H-5 zMFHK26`^;ZApNfW!|~_jM>hA=fXHXWA7s6vPH&xd#dO{w*Z%Yx!av>JbOB%u_OU=3 zrCb^Wz|YXRz^eekaDc_0*BkT-KsSJRKt~jCS;P%)w#nN8{{*;J3^(vpoR1Zw3XRfi+(JmIb zg&mvESY%4yq~jix+3I;dZbe<2+>AVL**p!3e!cU(9lf2!gBZ3}=?kZk8xN9-2II!! zWaHO_$i>Nc?c;$bjH)@4%L38){F&d(Y(`HRQV4RgvK)MT+M0-F%)n7^x;Qv#$$_IE zO`3mK+9mykiJgEzwu%}ek}JyZe+)h zY`k`uowVRM_o>iPH972;I~X`@&)paL=Sr4bu--6Lvg-;4QIHQv7I&~&HdSo6V1<8u z@^N(gT<2pIQdKf`DW^I*UI?CzC~W=FH$r(>H4G6kLqUe1iPN)Z)=-K_UpCKJ?+sjq$-h#5Op7dOTubcD=~$A<3=L4jT)E4wN2Yd zwYE&mx7%#9+BuqpMhu2sAcxxo?k)x8(sIz26DnFMVy8w`(C0tQf7m7}+olq- z@{=}T5qqdurbK4!gBGE7Y%N_3-|JS5udg6)nD(U3eL;}_A=WLH*qAygsT|t2*zItn z^tBaUPHKwr2k~)=0pXuNFFU{Ou1o^pazI+x#O!Ic|IA2>o^FaODMd6k`t1Z<@4bf} zOx1n6wf@4i3kgplC0t=Pe;X^ptY{E#9dB;kaMtog4?W4GZe%~br@2!&!JfS8jLMrX zSQbOIQmse&zZ@G;Cb zDoyeN(>G=^n@!>K0jtzmuQiA@Bqk$hs`Xd-kx8nxb9X${pS8Zdm>*$(1q2HWn~Z?0 zmHi98yn>%x-l&RtDH;o)&Y;slIE?>pH`HYeDlm{u*@=1L&I5T7fak1Sv^=C-2tx)0%u&rVUTLW7vsOH1gs^s$FUnDy-#nu)L75f#?-g4(n4kDx{I?*(~ZM73XTa4l~!wq|9+$N@k%t4a=b_QZzAYaRUOAd(y6xgpC)>s zeg{bTOqQ0+&&*^ZB_)l(L+8V8BnF)jAIwj-gxW~3Nb*U$4;5(!;7-yQId2p`K^{AA zOp{AoD9N?c_V*Kgx<_&sU4LcBQ6h#U#-hw(8GBid+(>VsoVi3HnxTI&{p)liefH?L z%P;7tz^jW1UlA=T29>Dg!kr*k+2$ntWcDnP{*D>TZX~gW z)l)8RlOtkv5vy5=4QP`?bv@>lns?Y{$W@M7ZsJIyr+ZPA)+bBy@{tNal*B|iRSk3V zSp?eD5~gAoJ_V{mxt*?k|MC8=3`sZzsZ&*Sw9K?V#`Zp=A0I4nz(v=08Slp%NVzBX#f)<+f)5*zMf1JsJ z>w;`oH`lFQ)aC)YgJi+R#1vI216~&|*+9ybwA=r4Hz|7h+`LSJo@0;C!tP^NY(n-$ zypdC##HTpR$JQ?kVi>35lrcC`9Pe^5OEE@r#>BIDz$ps5>IE3W?j< zhLis;K2H%nNO=8pVN+n2x5rT?gkQPHK5hI}@DISW|dE_G~H6v z!ZWImue7{Hi`VCFm?FXg^>=@xbn!Fk6}a)JG#)z_5n3)TXNbfB^IV540(6`v_YGun zcGle4+2`YxFDrNoc-H%agUf}Is)PQ0IBIC>wJ96F{|r|K^{EVrx{kFqt-)RHT%V}9 zNtlHhh(}IdB_mOp-X`}glqmIV)Bo%C+<2q!QtZvB2l~av${05Io+NMwP%nl{`^3*c zrcHh5NsWsELf8Xb3=Aren!50jG5PJC9lJFUgBRhxKqiCbqdUr4>@J0LVJRV1z}F|% zwboi$8bAMg!KadlrlnTP_^zEXmO52TCr8Bb3o8OUH#-7_`ctVwKqB(cw>Y}+=}mLIi7`Rn@J zH4e-H#6{Um83CzK~x|TX6XXSH~&B*7W z$Fur6p|c&2-n7WquNSnns8zedu)@chnko=6BThrrMT5={xz1r5BnP1@aRv#@@~x{J z6aJS(utF)kksoqR&mmHt)CCNE6Vzh2)nAtq+{3bldxW8oUTHCH;O=#YKr?7@BEZ4m zC8wvSKn);9x*@zqKE z%-+Y|*6UTb7rHizHP%pt<4a+=-e$h?aSdmbOF%*FbwNx)i*4w4$q>vPJPl@z)%`Js z#TO`)ky_#SUZoxHCrelB%B6U(1^O5X33KfpRomC}w6t9JzTCT)mTl@22)KLdhTmAs zCnm#arRsR5Bm`%O;tdolRPS*^8!cKx`Nl8XE?hMS{VID;ppT$ZJC1*TTuneoC?zQw z7!}o zkMjgKTX&I=ctxmng@xHS5DPd*M|XDW$x7wSQ#USUxHwzv^wsy7d763W?WwpxZAO*O z6-%7}nr{95yLRbSzBCvcPoDg#oj*W#?G)mkn$jb94xj&MGL`=rkroj8NH&EtB z_9}IOQc5f`NktRO!^gJ5KMU?G$cx~Ua-N6yY3)jPH>j z1mv)=gHu{HqBf@`gCeKjGBt97^58LAz)@9D#kcm9PJpI(9^s z%piK&J&KnZI^HLs>!SCTS|Xg=pOFsb4c*LEp`bE^o}({*VZS>ta>QGUvO|(W6`e~ zv@dmkUmAo!_yJ-Mb)P?D5wm|89NazLBbv$jZn||DEZSdPf*{u7Vti^UTN5ZJZ^_8W za7ej-g5%MjCA*soSPd%b_O8#vCyxwdWcprRJLQdzc&{8CnK4*qwtu|Gv%~4t*0yW# z;2JuiF^T9|+pb>d;X3zZh{5I2mMj%YL8`K{F2(Cg(x}MDM5?R{m=!tSA9Dnep%b6V z9OR437=L4){99>BBP}2nc0FeGvA#|MnWQsF$(!S z(8R$>fPg0C{4e98KpfkaE+;KOaM7={9okzN0Rw(@Wd-8Xf96H6qbiZg38#_LEEsC2 zMG#pDiQxjxendS(OF4BL=Wd=*d5*>4hobK^o&Vv4Www{=W)m*cemO0Gjg1Yrr(DX5 zRCPyHO)aBIB0Mxy=-Hn~;0c0Gj7bHWJOpT&v`e@-Iboc@9*hsTtr%2-Lm*D?v^_}m z*+IJaE-eu?wa8@h*oy#OhJW$b#k`%%rL;g-`p(u(#cg#~M^1qwngqbnapvyQ{`Zy; ze`hT?Tjb$8H_O? zp!Wh45;*68Xm1O}$ycwOx-Ci8R0F8!^@^x7|z{`Qdw z8w_FT5F=?RDPHLiXd9a0!PwW)8%tk5a@lSfk3DW!*C)`w2Z`*#m71Oh zvQjbc$HIf`QWh`x@Hg%gB`eu&j78WCquNmCXRq1a%U2 zKOrGP2Wl5NrSg|kYu9F{++O?uacdHGKA>E% zSRoS_mzb#M{Js=i9tb|SA%sU67M7MEGSb2D$uK8eILyu{eBdtwp$ph&oTA9y{=SIk zwmIxX4UIvN$l+A5<~l>r$HHO`GEFqJw8`KLLhgff{(2%^?qcODYFm|t zm>56q(Amdy=9EF1|)&q zsYr9p)$|Re2vgJqqNKwbl^>YPnSWXO zdHwP2)L0sZnC}Q-4`q)wQmxIV%-VA)FBLI(Yv@raUN9u{#Xs=A!=20{;G@)^K@(M~ zsMe&c$*D0dD1yki=RN&aA5hU{BPi~oHj=fCzO|@L`R5i8FMX}q*I%F1L-mKk50RV7 z>gu@4EEp54Tg3AJ$`2h6v^~&eVS2-2?Ut*EMSHZe2y#Tjz>qIqX~}Q!V&7mrF~{6; zn3R(3tSU!-4<>f`9^q z=k5i-)S~z7&-akH`~7>HaqktHD#0Bg2CdEfFQ&oZr_+ZbK0NxBLC3I2gg^cpNBA#_aK?9>wrgSo>O?b*_{!QaTa^`;{lRaM zUC;QM2T{e%RifrSv#{m`S_OoKEO)q}h&*cTOW5P>7ZP$uLJA*BUJ z7%&(H0Ld3x*?ro?;IT(d@N#oAGck3vw~MLe41p+RdByS-CR!DG(pY#$-&}8$F3|b_ z)o&%~h5`>GzMA_-e~Ete5lujr1R>b6k^TGiZ_fo^;5*d-0^D!3V#0s-3P+58Til2ERcR*P^;LoUGNfOhePS@FN&)6ZE{;RR%YUHGOk*J5d#^I zIvd>1E42c(g_gy@r|7m4y^XJ(+)VT)f?Fi!;So|N6vyf=Y!gWlcXBe{b@L86GAK`) zm^t_)eFX__uAqQ>whbHX0H(|!007}jNeKyHmnqGE!^nl8G_JqFzJ>Z-+#Vkf-pN!s zK5uHNh{rR0$w6LlsCQs0=>k${P_OQUNT}y1JigPfRq``#y&Z16{cP#PD?<{OpzF$xCO@dMkfxna8 zCCE+#_34;%g6s~M!c8!&^mO850bhmkUThsU7PGpG0o!{n>3piJOqCxy;@B=n zJE4C=7n7@8YFAtjDC-bnIjoMo*aE_faO*Ci zM1D66?6%ay529 zqe;EwRv28u+vIL&sHpV9PzhV(;WP{}!ajtUOju}W5|5o0DDjW(skp#%1F+kE{LHJv z@|sbSa}2-}D=7bz#9G1&GG_u%yf9*pY3R5v76Z_ps2Bzkm#_ww*!(=PkD9I;4B8JF z;2E?d`0WBd*ue+=1~mTp=z1l3w)<>%%s6$;P1%PYohlUlmW}yZQ1=51^8C-AKffHz z5OQOtl7JClcxOQE0N>&7VOOMuR2DmpIL*^n&Wpj(&w94Bv;>1*U?V_cFdL#SkZy(Q z1s*p9VegQWqAIMGS^WnQ?*rP#uBjh4hBiWekTw`U`uyt-6A1*u^-$qXK7`1Gf?bJ z2E?cNhhUteX8ibu`;`jCt*w}u*4z(*nzM^}IhoDaH#kKRzwrznEAv_0>@0fM)%XTK zUs;KOqB0(WT8jU{Y^=+34RL-wW>$NhBq0_;;O-Fq`}5}yj68XGctF(Fpx#3ja@NW? zfkanOdT~<5ufddrfgTltmM84s!hw@3hH(VpFUar1yi)Z%CYTC|BS2meEv=a?52$yf zT$T!;c1VR0Q{lBS#p3j8_0E;Nz1tQilLrRsaSZ4y3I`i(A+N1(1(q;~88X#W@i}f> zY@Y|W$rT5bmO4T<1A@#jY76sSKH!1E8ro{AUy3iAky6GHn@6V*2&sV)Ot=M*!X$x! z-KG9e3iH+g59dR0AEh`w_mnfbkapj` z?2_yo(%Awt4&16SGCB-{nj^)dzpx`pvdU=$M0M452Q*qMEWL&JD|l^T<_RV``5Y$| z6cxd%+yEq{!yF6#e#Q)%H5xePcd-$({;Vq1bv>!`yRilO+=@D^_w2G^bJi? zh=P`_aIM=~Eu0j1CIIkknCx4Dp>~MI4)^t`{ugX4m4QBK4glW7Jrhj!9!JCdD**lP#0mA-6FFFpb=d@V%7YRaX0FhI-*u&TYrG7s!dp5H+)g z3KKf(eAs_(?LZXQ0aIpfVq#*T)y2jRLypzV(XkXVW0P8NIL^<}=jU%2IR*}^#H`fn zlQJ91jUalF!UdZGa=YBw|FbZ7sSCEt6}Lik0A%ZF82`bLRaE5R<1?;x$&bt!Ap>2z z7D7zGT8|-BA_}wGiQynF6u~1p`oExzSaNBs%;Vm}Wz)vcURglv78aDgAZa?;m>51D zc7_3>o!M0K5jW(s-erQF@2P`|h56yZmzA zP+3}0nwGb|sNkE7D#M9+%O&2%*2A!jFvlLmTVSg^xKjG^rn5YFumJlC2Birk;Xws3 zd~LG&tL$f$_?V_+jUD78UVUI3aoyo$vt_A#B_M}XJlw0_VwhQy^cj#`ns1-a^vrDC z{;{vJlK##kjS8%(TiDp^CmS1>NnN~re3UT1osgibzLrs6|B#Pw)S#p0UdQc-qBLORiQ$GP$jge8YU7mEE-M~=S_fhT@ zuVt?TuJw+kS)(7qFN4xbC5=lsN5;OMm<%^F+GyUSknqphOX1Dz!7{9jqhqb~&xA%| zRu{hKx~(~vm$(%FJfHS>+4HE*Zm-DJnOMwn4DJj9!bl>AE_34l=A-_uj zMoUM#VRcFvmf>7tleug$;|LfCWCc!LYg1Fpr=BaD&yI5k0&m`E``H_Mcs_fM-|)J$ zxL{4OE=d+!c15s6Tq@@d#FEnJ+c%A2fEi36aCH4O7=4kGZYZ%c^Yb~y#SIo6v59M- zcg@ewL#3}MFV`!ZZgP|Zg#;$)Va@@T7_$3xcEV;lmRU143!2uGqkW(+b1bzP- zV?ka{?lL9}wUZUZBS^Oc`Pkgw*HTk^6A=OVd_xtLcX4qekjj1t56yryMx(_OKw+wx zr8N-QT3BEAgLAQmtc+YD6e0I@X8Jtg2DG%6XF4AwuM+wG-WkZfrpzYXD1q}mukx1U z?;fJ_wfV*NmbsO0!xM6KdzA|#Xo`=$1uJ;lfBt-(K@Sth5Lkggas)Zq2Y&Qk!AgIp zkqpq~U!WwVxA1gBRu12I(3u=B9d$KwlhKxp{R7XYf%$(y`ZIY*3xX~WiIV#I(>0+f zASPgvK|xMR11mmsVQTahyaP!)6)|~8@d3PxYg6u zh0!t4j5||BMX9OL_Rdj%CI%NnV}QKC^KtsB0Yk#`f?^UA+h_ic*{C4IE7-%sbg;FPY7d)NO!_8sg5j;%D)orP3LbfE^+PtP(Y6=9QU%~seYT;!O~@j zUz?LvK0B5^mAI*}_~Wty$340SS?Wz7n(zP^0QQ%Ugs|zSDPp+lAXdlVUJN>GuWcmf zR?HR?mo`P4s2CFWc|Bt|(C9ngM`o42^sjbD;7daOiLp*1PA(gU2OwkCKQiK&BTRVb zPM@pZQk{>;1!x^ERMYlz_??Rg)uo z1c^Q^Kb>;Cc$#CzTRXPs_RQKr&+q(Vv<~NEPWRrGKgM*p-zZFeN?rRN*iOlGgI`7C z?j3^XY8AtJ`VS%s(W)33t4eI2YZm5tgnoKc^*T+h@YNgsd(@m^68DM%?r@$fJKM7c z;*yNkH!X-9U>Ykm?ogz8Y|nc)Rf|bWKVV`)LS<+gkqe43br_O+w3lyIXSZZn5>w(? zhKDKrig3jCO^c~8%)-F@)~`7JyCqdsZUD-mggFUj2HYvlXlT<5yD6DzrjIO5j=Fv(0=JbvaCu-WZXlHd2`ve^T*_qD zWQTjZ%~H&}EMnIKQ@lKuzx(6QYwXaT%SS)w!CP(m)RdNi>gXP4s~0U8$&*ZF?tf8e zror{G%M?3@^1IY`CWFDV{z2q7DB+intFi9A7ocKelke|;)!h8W8+EU`mHq0!joJkCMGV<7gD}{ zA^Zk|8r;0RFarV37R=lIUv#|*IF{?%HU1bXO-LwZo(YwZISEn7R3t;0GDb3on~*8< zln_EiC^CeiLK#w&SrQtJ88TG(ucy7=_x=69@BJM6*xN3i=YH<{y3Xr7*SXd@1C==0 z&x@z_I4J!p zhfhq&c^llsNZNod=@Oi}u?;rB6l{ zT#<{X{}EjAqHA%?MVggDV7Z$7^o{3;GsEa1;Ywd$-%m9wuC$I#)}YqD>x@*|-V2^i zw!L368JEw!Xed+9@l`K(9Qg7+x>4MKBXfcEHc6*2H^2IWg+>I9AON(~t*>FuJ0=$L-5tY6O zytz6$W{|$kZZ-<~?i1C`*1w#4O?od?b=51)#JG+wjrGhtGOL3fwrtuh5)u-SwwYAB zZRC!eA7$8GqHA1JM#3)Wd(<@gp%JJjYlP=OX_O@4m93ip0#X=!0$d$f#a$vo`<->#mX zH6+PMdvH#@P+U--y30vr9Y%FKyQ}n=_*iu?o;6rTCX4fS2x>Sx41Ry1IZM?D#sMk7 ze(VR4(N=i+VeQJoz{ihgH-)$&C;9Qig*G%HHdg1%navt3Clh`R8CZvsWOHV{@=A}8 z2G@nFz(R^!Sx{Q~x+Z^GTAF1VC48Aa&a}605)6H0q!Es{TGGkt^f)tKEMXJBK@b!i z63O6nXo5I6l|E~$D`-MK*n2R7GnoGbaZ@Dphthc?snf}^#~8iU-W}6dy{WA~vvr=P z%Te`a$&IW#P46g9GWQl<>+S245f|(2T*@u9*BhA4F>0PWmkq9vUOmO2?zjb?b$QJT z^}RarZ@Z0|b{#le!k|Q>K&;9iI#gFtaY~R8%xnQ%i~+lO?cD$T z&6}8GdECJ$!J!mpW@8ft8IF|2&Di-I?-U?>dG1S8MTOLY7kJ1JKY*fw!@ii7P1u|$ z9}`V$J1E8PTBR(*w8y>pVfj*%_5|fzN3}p|kOg16GLSEA?bl>c9Xv^9vJkg3GtE_1 z*YR58Ip-;neG96~p*Q>b`7=&A@l@ZHU+xnZZmRP}T#_I)rR#)IQq2{c6{*o^W!Ss@ z$Z|Tm+qANdTcd?`FN47M2|{uu=GFMk+yDzc&NyiO!o!vrht&_8)OfUk zW+P4}(AxjC^Bn9)6osJ0$iP5_lO8@%I~ZmB%HgWM0jr96@xovuzGwxmfB`C7v5>Y(+ zez{<7i&*{9Hya|70#v9ehvEG*2CNc7&Lch&72kkcsY;mq)k?3dEXL)FiX-BudJW|47yE*Ath}v=7cjg~0 zv>$okYv<_TAcqDV{8xZRGap~z35L3!jg?gm?nw~dFTc^ct|Ryd7R_>^v zH}UjnUvKY6mq!qJCnhFB=MBos9y#tTEm0-HpjYcgocr5-p>Cg7)~-J1x*vr})+OA_~00U6)$+!su9RS1m?Pn>YZ=0Im5CU^9wWfem8G&d;KHqc4w!grD=P#{vWM#D z&!VQ)^EK18P%Yl-ux*Lnd>621&6MpMyKuS3Ws>1K>s;gJ)qEy?_ga2_d3L*byNo9P z0i65*9Nr!kj3{Sc|ac$xhHA{vL_a>2cOqSKTQq*G@;3c z#P&;&Zo!NY3+YCnbJm@Y2TpBg^iy+3f%y3GV|Wp~1K5h5PG@&_a!Se`Il-*tU_x2q zqQ!?>sv(Y2#F#^A+P)0uWo0owcN~y z#MB0uMlASzsMunD4BsBEnyNZF5v`=Q-c9|VXbFM=`t1A>D9FW(9&o}Q>((vhKC)5C zQVQ*TZV;3ptM9dhYXkxB4p1dQ3zKPBph#<@-MSSVivM-U`Etf;u4aPHr#3y+&?8&yEMIc$;|e45;*|$mEb7#$%XVT9kZGP>3UMKJMn7cXFUjD(=K*GM?Y9N_!!zG zzX$$0tigg5N&LKnLydh`0YVf!8Ylw;{L)XKJXsEO($bP8_ZS{slg@?<*CC~bjf+{~ zy$&qd2>Ov3FCcYLxL2lMX>DztTUY>Z2M`MkALHWU;QH2EW|#2)sEEXwWn4cI*z--W z@Fas!SO*B@G9h=wF1&TV{Y1NUPwVclvKOXet43xX%|8Nq*TBBrB{=6mj9wF?&|G?p zwEJ?Ob#QEL^6HC{-ILe&7K_j|&Dpq}|LlMgS~))6-ch?GH%Wb>oa7zw=qYl)OHtvo z?SAykZJ*I?>~HrgouZ*8o*SC`b)gi&n>%Jw2q*Q!ZFV}kke`awq%r#L&eqeXP1A$b zbH4xj-73hPWySXB{I8M7y&(Ky4>nuPVx@0W=4G%$!+&76ROQqC<;=+Un&+HG~^FO>2 zM6WE%%l4fm)%Vou=kqCb>@z<};}nN-S6%)*n`ydePaNDrqR-LGM+3-e-%g|?;MgUO z+niIf{3kmzs&N1>ZF==s+qta|PUh! zHbr|;cu&(epQx#M-g1I(&2Nt1xRxZL6gp%86NYdO$m?=%-;UmWP`g{#FQ9%nw=h$H zAsoSm~zbmmtfK6dCX%+|>j&7vAiHo=8=cdYLf-i+MkIgSlTok56( z*U6}hbheHlJq?cFSu~8`DPlqnfU(6rwu9LjCtAYh#FY-X*%5j5$f9tVfz0`-x@T`} zLTn&c!l1wa%YfwUE*`O?CU2?~-&x)+g$`TrB^XH{nSz=I*E=A%uPsWTDFpvCkU?wr`2shD)cx9$4; zx8X9vWqABtz0tx#Z`k*=gVB&|AM{zbw8#S!_>{p>f5@3VMNt%`-pyewu$F z>c!exhSqyVdi!a+Tpd$1j^0HBYu&bAn`Vd1>v zWbI2p-UlwBoak3S70XU_aNGA0y9ZJ(w&b!p=30V#5Ta0g_ukXd9|oef`7{Avnp#_T z%eeA(U(`5pf{x3;(D2SgR&F>$oWBwjl!)N-_0<9sa__QJ!Ujw?Q*ZnSZ-1svfd$!3@bfDMfZ3@s|znNg-Yzvx1cI(*xj$*5{{oeBkJE=)84;*=~EedD4^WpJU7( z*HWIO)U~cHOuZI)EuZ1tuQc%V{v8e}i)`m@vV!xS_4)$r>HF^7*gIo>EB77+si~3d zV^D134b!IeK^M{ag1aHYi1mhbi6=fx7B}_^3B9_$lPe_>4}(Dzj^+htxYtu8|2+2cFV>G%sTL(s7Aw?lb__JjDFPp0}JKZ@5z80K@A~qn2sfBgaH<#QI z56%8(JARY^!J&<*=Lyzy)2hv!^<%kHn0&@TbANYFxASVe?i012w|`EZYtLE!_^CGG z=+9jz2X&nCox`!My#+UT|!nNCiJEz&APML0JhU22J@5sX5_JYZ>Y3d;p0kSITjxa)-TLFOPEm3N~-- z*!}(CW}6xX&&czQquXjZ^301bPi?E=iH)Nuxc%sn7eLOIXuvK?$JxX-6FXvN64h%dZx*W5 zzVb~TJPMNw;Ws~=rKIq&p=e(61tLI+6KCQVXuQj-H+C-$&bSDHD}9j>m-L2j}ct)Ed1k{90eS|v^HJCS zOimu;4yK{@`_955CHL@=SLi*5$0ak5cI>qwK7AJ5y^m8>cLzmhIGm#5)XN?`@WL)O zGc(iIPtXwz&b{_x{8)_x%fj*Jaq8)1Wz6@j@8o`La=o8ECYUr<*!h_2HaFWLe-ojv zlfj@`2+C3Cg-1mJ!gjxSaa+vOeh)Bfwb)+YQBhNiSLZD}Ifl~^T&lTWKOKNa5zE0F zln#c}4^K?yh=_b)2=_4cou){*N<=C7T@K>FBM(Ct>E6YgjDV5 zTwh4Y!1}E%?QcsR9T?c}N2uI77o$o?t)(R*^fKteJ#dT(9O+<$J$v?yNA23a0}1UZ zTWzmhq1+ybeT&!Fpmy>9aXUN`=^SpqlS?9lY@AQjNyh2Q9 zFdVAx-T?N?yw^=;&z}h252o90^R+XtLUTad3M| z>(k*d-uPn^Lqa7biGp+|+iVWK?XKwRurt)nW-5r+yyGr< zHh}DrrS>jOFS;);FC)E{zx3rA`8oeCxc}zzd{f$+uk#aCDXrG>mzg#4XdhG#85pMM z8J*gR}?%D}|arB}rNB&vhoivl7d&znBc@g3*qADx>`uJfxI=#|cTuXa3tYGjy3G!O+C<=e{hd^3F!OnR= zwBJ-tCL>L@>o~hWeD7Y3irwu^bjgt#t|w&E{jNW=Ui!AIR047ru)3lr8mUm=paiMh z33Bdb%rgL=kA|9s=v=RK(9kgDUFWCO5s5T1C9F?9Z0n9UT`v+}+e}Y~~ zfMxfIA2W8p7Kxo^28Vj<-_2pF2v>}u2LG9a<~8F~N4u)0PtWcQ8R_f0c$6Z1XMi~lB2fYE1Ih~7 z0disTjL6}fiAPFb-SY;29(BKK9{=iKR$TU%v?XzZjN)y$x8qcez!WM*lOamj+@8F95n5HFV?Y5t8BSXi? zpAzC8{uR^wv}b_&|uEccpDiSG=L%JX_`-@z}*CU~`+a`6wY_QL3`Ss; z#D8_gUhL%Rex0FUm6%8@qngGNS80`U2hXSW&unW&G`a{Ey}Xt_J{ug7qiX=C$6Ma) z+&QkGXFH+a!g@Y(%)3sb$4E|Q)9UhI?z|lHmr$$h7ZUo8wk6IV zWNId2WZNU~G{71LItdC3V*Ar!7eo~Bz+ladKnPC9^t(HB%EaBD=Sm|s-HiqWyKXac zZv;$&VBX0wC?Is{^D#qncJ5!Aj~DKLDt`5@G39vY&*MjESW*;<6jQqz)x#ui6xR_u z1nk5PY`3;@bB_;f47;6uNIGdH!@!Siwf$9pzwBtH`3tb}KF)Z7oFhZMUN$D=?s$i0 zaP0m2@82Zd5GEG&eHk;&hdK?4i=24ahi7_~heO%6|L|g?JiM5bptPMsHNMvoT%Eu6oi<_B5k+%CqCb=vx05hF92k5x9=E=uW37K_ z2!@uTqFaAI(K~7~B^})DwxZx7v{qkPJnn2^2}6&m5=+x`m8&UV{^cJOj8kwiZr^^% zP%w>d((5q=>uWmG%=5X-lMcF3fnQcW8vO9oyNXd#hnzpi%V>QV&V7aECt7=e_|VPL zzA4Yb%)DOIAh0wsk@cK7k)L1X?DV9wPv(^T&9s^ag(4J}uhqw0-MWW|VQcOyDlK2e z{Gu0n)K{Y8I__Q}uCy5&D;O2>ilx{&vU2(-RZAr6nIj{hrVKomx9WG`(^RcvpZJoA zaa5VusraKcm^*@-ZIMP$jf};JThR%D<_v~Wo7K*;UNYHXSE;n(u zh+q7?>DQg%b6>%yO0(zs@O#lTJybo%Z%@rKx0d%jDQKbvy8obl0B@gU#sM!=Da*woa&1v1JM9 zGHjHUpQGJ4{DDnyU0Q}l_9F?YV@umDtUftA*Xec^tDF0%t-rA(Xmlnjk6u~f@>Fxn zuEmdmduWe(xc2Agj0*ZE8RMooNbD*qDT!;e*chU`K4=Csif*>WfKA7=J}>>!W6~+? zWD@TSxcx56C|^{XyJU50kooej?mQxISe@59eG2anwz!d20@NQ$N>6cSe5mxB{_wi~ z=~1Q~JL-rvGfsM_5)q2 z;J5LITn&_{PW!(h@fS2$%Gtmhi@3{|JWvb>EfYrzGC;6%;TC zbn5D$6+^5;dj-zL30~I=DaRG3;QkF5pt@R?mDUi3CvXziBL=9bsOVUw_t|&CdcPEW zzjwr)6X=DZM7R>o2Xb~da57)~8UVj-G{Fdn4ULWYugyJ3`=nX3tAA-*j>;)!ni@TF zYR}ptq~)Cz9&<&*StO)>8(+n#>T;+g*XlP3~VozIF(K)FnNB{SuQx~+~-(Z zvOlhsslcElUO2!aZ{ewrXwo$CUg*#H^X9DKowqpjcT`nX`OUQ*?B(Y~AJp~Ir6V+^ zC<(y#K{>liD$DXum~6*z@Pgs9Z2x08bgXImqcka$@cA z|7XLwXv=O>2a@2aF?u#<=iT1Saax&*Pkw#`kE`VB%{JonnKRJ4uH=LUMz=IKgUxMR zVi9uJEDcWLg?bt+C|faa4`k;}A(%{+H{pVsUPdG?6W zf85YSiNmB_=e%XX=&m6xPEyqIyP=w z&cV0mcf9hrJf-HGHM&jly@Y&^!eZFqwx*_lsX}}l6i2AK{V@g)EHX%4li1>@G1La= z1j+3@TTSYC-@`kBfzPm32#gcL>PBLW;Xz?t`7NT#?I)ee1uY&Pcv$-4hgT8}mt2h& zEp5l!ue#5eRav#AQd&RG2=CgpNm#g8U$D5p-viaQs;XR3A#+@FGOM)l%-lTK0p6~IG%jHRg$eSu311|HJcIC9CCNc;XRyaBfE-1iYC zj-ZK<36MXJ3?Xw#CS8CgyT5;8c2?zhYsiz! z9NhGGB_$VAU(sbuw!ON74;E=ospU(GwFP$z`3#VOMfgF$TL9_jKiH%a!+>dmy0rIs zs|WsFBU6820)?WJ)VO|5wm5axL;jCZz*L3Yn4;jI&-zR;7}uj@^Iw+8Z_mFa!O3WC9iK5qM9#NSnZM3Dq*5 zIp;vJTZ_GC8*we%uH*i%BPYh41{jA9=Zm(V-WafOUC~cATxHk3vm|A*u_IR015NNe z474^(Rb7;34Od|xG`QoEVI(v?O;>(=EbQeyAe6J&!J(SBFIMI0#Ta%lt4gPT8an6X zBo{ov%SMO$x0C{{)e78GdcWS?iCH%z4dFui#OXd;2=3Qdq37Qvxj*MvX8HER?Zk*B4VPLXmVah8c0b&X$2D~0gL`3|8F6e9tj2-SW z8fARYic`0t+4jifHavZ7f1kPP)pbp!{T2;L%NkQBkyB&N3J^2&PeIm8e|8q{_T02) zB;TvX0pL}sxVTOswNfa=KA7Qy+8o?MtQE^3EK$H-lo(a}m|;T;2}>f741Fe;CimrM%>nG7)!L=fm0bZTcAPfbE3ij`Qetxd5;z7@vT3Q%3 zg~X=lk{T<)$g=ZssycTh((L$%zvgUofeawVtam@W9-}0{2n75dwlR9A^vXCOKoV?$ zjuGf+Eb-5qlkub-d+$H~^-G>1T#cJWlKAJH;Vs>W>=+D1nB`)OD46kQPq2jO`qnsH zL%$}Ej-#S${@0QFc|~U$<$jMeePUj@{%I5WQ*&<$VSq&5*7n=flp@sb;Dzu6W9VWP zOjz!kqFg>nrIC6en<&CUW!1IV?P#k@t+cowKZz+0Uj|d4l7k!l`$w%wrTwOs>C^AC zGo-olzDr_#3Ju=R20<_tB@L7sBgybV&7$qDH4i+tJru>8+z*%H4gL z?zcR6?;>rz0q{pYHEYT_Od_&w+Ade{& zGrdB1;fL?iFgbfh=^DLr_+Lp$@rCd6YaW*SI$VxUKesQ(UGIzR*XpvK#GIeE#|IJ; zOUlZC3r_F{l+d><97PI`#CA|)^y-WW0Tv;clLgECpPnwri8Wa+1{Ji zG#y~??2e&yVPRxiAe8l)Z|G=fAhiEP7OL8I+=A%@(!q)T^2pyO^!JgkRZa&t7Goo> ztlR9UifWA9nnl+M{zch3{t!6=ZugsQ7EsQ90Ph#M9s3+yhK_8lm1wJ##lK0$`lo8f zV|)lni{OXP)66P+8+ue<@>Lua`DF1aH{-J^pr%Z*&wbDPmF4tnUbp>077T#6yQ@n^ zPL2myx-v?6C>cSlfiI9hhI+s_0frVKp`o4^{Be0oZ29BsC&(r0uC13fb2_k}N?xw5 zOcOBZLC*CXTq~@1a{_9*pAPVKbZI-g*&alpG&(h*f?H&JUM&!PG|^0mjlLKT&Y{Y5%3W$j#h*fbcba|t=_^xRPR3Hw#boemwY*XCWm^~})BD_~HS;Cua zKb-6-0B1-t=r<8c|Yu92gV z=L&)5hDMq-$XG?@yZLTCJ}GwsJ@;y_NVqhJTZ6wFnS{2Q>C; z-A~)G=NW(PU@U@M*5RNAwndDzRmP z#95{`;sZMqqo5qka{K?>Xqmjq8k;-0`z$Sj*BqMz|LIq@99n*B9BGl~pXmP}-1*=q z(YHRn#p-k0Fqe1Y*{`3I{hKzBvYv&lbslk3DB-@jiFERIu}13Cr%%C;xwcEP04-f$ zM39jX=3C;V5oRHieNwWz45;LOK{=MF~A4@{olzW~__ zY`x%=0xF!QhK8>Fb-aK?W<*(y&5H&?;!RW7rTwpv{pjSQg^0hhS{E;rbw;-*_gY}! zVZ4-?8GDFwNolG5Dr2CMIy(DpZSD{yVf2(4>_D>YkY9oI00a#sY_IQQcx4?pppUx_ zN|WfqAA2oMdh+NxShpgV!BNbS!Mgj7UcP9>#(SV~65w&7xB{!>TJimQ1d{UDR;MTW zXf)pWK7QYP`S-#5cH$`OC-cci4!*K3bxH~aJu?=rP{XL=_wO0mX~A+X#noW;TzWcd za61OeL4^?T5+@0Gs;J~`_U)v}K39L0Pe1@5Sf!)})UkDSgpCcqaudI(t&YZ!BBwxh(L#sYdPlB3EEyma61`SxlktXBQ(;s6zB?fiCqF_BWb=Vvy77$v`QU?wI z#NP#1>*=~RG3$6NZLBGD)82J`|se-Pk=@SAb2}u9YQ2YqM@`UST>g{*atg+g-ZQWB*W;gAzGL+TeaJHvgkv8VYV*x!u0k=91v@q?gz*L!)#Vgz*E?jVg;@_@Ifa75@ zBV4JbthY>6kkNt;_X{%2gE%rVAdG@)J<2R`FlT3GhUb<+SA+QofR7~kVq?{QQ-bDp)atPjkuBJrs*B@> zmM_Xayz7~7+s#__q}4a;;orVfz#k>O+x2>?iEQggN|VbGf^reGG+VaFyL@~KT@(&W zxFTToc~sQbPoE?t3CWJ{^H+oD4v1$?kTLrP|v>8<@`3^Si=Czg;L775MY;+MK1AX|cA>RPM z0KMRC%Fvy{Mz8(_N?4dLxwFz9grgL~3&f^j=499Re};k+3w`H%o1i+TSAMD5e_$C$ zEp%n;>DaH;4`YVj7^hw870P-V~B*u|{jk-L7=Mr)k7PI{7vKr7a(V{^NzihNo#vBPqll%-Q}IWoVrb6ks&q-32x z$g%zZkKFLF*ZD4sXJ~`ibkL#e^LZSJ2ric{5tp{d?Ay6zrgqiedqZ(wy|h$N_m z=vs`-yixou0#(PMLqjIO%a^+h8xO4*y!g6VgZKTP<=bn^F?nNUH7|bcDZi_VZJ~Z& z)!y`-TlHiNGwRDG9l*NCadBK=>tSRp24KzsJKY|RsfBOx%48iX{Ld>G%$IO10zxFm z3!g|o@?xgC+hBUzN4F*ddpedZ5M$=yWynX4$UujNx9Cl7`rOHw0UuYPQN~S;gM&}l zxGD|pgAfga@AF@d*h+ zjK`qS#f`!^(>l~>D02bvNu?=ZFknS@CwVoE(UPSSq-wd7ww{CR3=VO|^Oj@Of~Vd> zjos-qX#ByKS5SS;lF&%)pRPME$&soskQJ%Hf@25Nllozdg@Se+z7^Y)Pu!G0U23HP zk^oRDn@%}Y)bY=-zVWDdO z+RD%x{MmdCw(_#ed$mKJ3GtqCwhMGxU}R#`Aq_^bScY#A1nF?>6k^{jD;#Gq z1d81Y>_P5MJdqWem=^Rll7qZKCA&`(YdP?1o!_b`_OG|xr7v4z zUJd}L$6CS{0syKkFGM#iK8%%Hz|+M6{s*RN*gVL+UVV0zVbzBI*#bG!>C=6%#ze~) zYHNfidgZ!5v&W5$u9xnmA+-;>m&7w{+8?O$cZ_L!)Lm1sVSbsH#7kxdlh=6$kVN=L z!J*XyasKo4)C{Ty%m2{C?aN5;PjsK>9p^n&*je{z z?fxhc;l#;r6h*0F^C41Sz;kq}*wbzyY2LAeR#gN#fS zj(?hLARNeE0Aq0m6ByNnJ!9|q-n3#78)pCGQal2%CwNC*a`=sop7xU8M0Ze2-9Id~q(|rSzRRe7|(jZzo+Ka|c^WFMA0}>?F1w2$^;c4(8jOJbVD{ ze;EbpcK%`C+VUF$c(W7)p$KANL97j}t(d#IV&2^)TU$Y8+s{Nx5(d3}bgi-yN3tw~ zv-HQux-~sN9AaprwAApU*!v6UklGCdQpC!Kp2#Wpoom|hUk!0`MIu^EK`PZlO$+uU znr|~<5NK3Z9)yU~%NJG)_&;*fq^YwrQHc{`LW@z9#Bx{FayC*^G82*3c6JaNfP&94 zBkkd``EL`qLv($PYJ)j)An5y=MB`mZIfqT1HlXZknoq4>fJP|#xa&BG~{c4rt5N>J^~)2Jb!)*6URzR-@@Ud*$PmqW8k%rkaY>o4bgCM zRpH(?&|ca2$V(Dfp4*;(Uw1viQ3;s{x0(x84pa~khxY0)i=UpoY643tM=4N<&Rbif z{R(*k%PwLU4x6{OWoQy%13UGVl5K{`s!IvXCqiQfIgK1ACnrC@4cfQ>#%`^z4}{nX z;EiyUnjCuXh*Hn*LrQ+>TObz}T{bH#Y>bq4jY~j%WgUd&^|LS^FlR z$L&f(Ph#SmDpVo&PKf_(o}f}GghLr(JItN8Zruu9CcXhHx4ydrvs)y%xSlmPlZm>Z zm(=$k021OnP$A0A{k*Xe(+{nXPWH;9b&V`3P5R;pT4Ol%f#ltr*n>UAhsn$B^bo)& za~F9AQ3+c^_?`^?=aAoGM#FiG2ZkzOVfOR!?+NLOemB%|(2HvpP$L;cO0#W$6Y-MA z_t3FJ>JWn^Hesw}o6W(Mpf_L9%>UY}j|F^IJQe+U0=8JNGiZcMRT%yR?d9Be-_iH! z1(h4)Iy-@pqlAI|C)7Ll{@Gi^m07+lF5oV(ap$WQAPJA-{D8xQ!+0MC9Ku_)Z(!hf zCNCIlpo`*R{JnXUVG;LjB0>M<`D2}>j)fE<3c?cfkAA>*pz8+9E30=C0eTq+h1mJkp- zuq>fRMXG_GGXDA|RurhzpV?$c5&z&6B+?)SueC%vPFF}M4m$QK<>?7%UUxzJ80Enq zznT+w=vc%*;UnWFRg{%&*}8QFFcrPBiP*vY`!8axKygLvmy*KV8&r+TG@{03wn&O$ zSq&L7Mic@RXnb)py`dGRW`4K>FyXkBnGgY+PQRJK$rmW5iScKtv4%A~H)ng(t+?Y65XW@tG?#Hns@!p8fkf z(2;5VjNEetawrCYqcm`^LO<{EKO>UCs|LLsy-h3eWh@pfjgKzUV2&a&MN@0X`EQ@b z;8ur|Z*_GQSj-Y2%Lj)sP(3H-66}F+F*9-4(c~rwwkD)-mvK@6|4^X~4FWP*dGFS( z5j=P@P$VR@aqHHTO1&7m{%>*Q#-UT2OSXzYibo!jiDZzT3&sCKNT)20(_!Q$lCBc1 zpSY`lUWc$Ge1SBR(_^2X_E;3Dnz!@vK4W1!Iyy$PE674oinM?ym>|m`-M+uY0gg;u z@b@ppTScwu2c6AKOx}ZXfLaSwIuAGnVUDLk9Aro#D}Z^i@9#h$9j7iLD7X_9HU=*2 z1lU*G^XyrmI$S9DaYNyk4J^KMXo%zTFcuCuiJyCOChA0eJM-b}OUu0HzKV6Fr3_s2AD>alW<;~?vudKx*14N| z?|VRn*t?z{Pi$H8m34IuBKbvxW2%zdn4!HmKR+>4w|0HMB|4yJLoKCMVG=ALGK_yE zQ>5`vcQ^AHIs#&S8RSWR$DDb?Zv~aF_su zR1D)!tc#bYbCoz_U9E7q2i1oj%tNi%mdTyaj0^AOwV&C%QR&RLsQEU&v^S^HfBq}B zBPUg)L27JR6NDn*;@IVo))0Y8aE`Kk*atHSICd^$pdf+yt8o4VT6UrL0oT5Lu^^C+ z+ul_4v&WFEFKxSn+p#bpFNN+2^^xafe;11IzaC+l92^|h=I`rr^YY-hVQ65$$jE3? z=Rb%vw7x#4s1>PDu8tsD*hmfWWKo9B60@^R-R6J!3fw*HXu?oWZd*HJ4Eq z_20l?_Om!M$ZcPMk}#OPar5TX$jB9~n@LIKR?Q3$?hsOGE8x8?l;uoqnwhr3T|jw4 zjy*??czahB7f*q11H+BXH*Z>6#3dxi8!jP19}FeWA-}KRzS%lDK8EJUk%2vC5kn%8 z*kZ?2KYAp8d11?d#2rK!*RAZN)a`dHA9U?s5nS=FSYvs+|9_svdjbP}Z$@g~kk9~F zb!GtkCQFQ&Lw1Up7xk#h=#{a)AbJ-Jtv_96yG_{^qaqNQdv||4dG8eV%Q)CV=m#;L z7qgYP5fpR;IY5%19|s@>0OMjQk@PLV{53T(6WM=z-?&s~HQnM_KWaPt6KU=YNu4+Ehds90L8g z>bP2DJENex1;Vh53~2l=-BgbxdCA{gI?4&#H=IXtDJgh^hM_`)zS)2~K+#;JBs`xiZg0 zFQdbQ*QCjYSD5t%?!y<3Ocfq{NRvvPX~Ln$FZ7sGzHYyH9EFOis?e<4*t%Mox6c-j z%AQHB9Obv+dTXIG!dEFNgZ1~&M$69+(R3PjZ19g% zBg$HwU~G@WUOV^)iuxboTa`wG8!bbyY=G_&Xf{|F_WU_3bjXinu!($-1#madBsh_j zJh^)g@&AxoA23BIbJ9QPbEFLgZ#o`?3AIWg6R}FNj+=4k&Yjz~aqYKT7Z3qiDk=y0 z7yq~wUz&2=@X<_%D+HSz?QRB*Dob~eQlU=-i1ZcM-iys-j$Mr{uZ<(d(z+cQ3@^pk5=d3`L`sc z(7!e&q;Dj2ofrHjN@gt|gzx?P%HOzwK>Q>RY2UrO_3K>8-i_4CDk{`bYWf}~rVKlF ze4Ut(x9=3R-atvRP5IJz?7x3c_V4dONQ`m;>kyi7ax)gG3aXRA1aWjg*yO$T@e3eMdY&vUKkqWP@AQkAiW9mJASMWId5FF*~+zPlN4Mwfi_m^5$)zu{pp=w71m zX>A247r_~ZoZIl^Nf}vL__V_?tGTy#31I-wM3fK_!EhEJcvaAnL9&3&jD)kWxcGx% zod)R_i_yQUP?4kb!3L7jo4Dpr2u-l$UPWj{tb?@O?7>+Ie{$lSCgmh9DG5I^G5DcD zp{b#v0e&dv#zQNhwPC{s*g)Vk1JhemS($tP{u%fIFB4<;?rUer;;^@|vMRG_+r^*Y zJ<$uXRVCU_uTu})foKFYc61bWF=s{Q827 zNGxDE1O(x|x?x6jRTbF`_r*09pa|qd^y28%>(_TG+u~1fkKh)AOjn*DRxxu{A+7Dj z<-g}M@C|Nl)&D-F`8F?Rp z;l&T6YF^r7+9*?LC zJ}r=y&|Ha4O4_<{BQEoKP4C_O{3sYr<_@A=3Dy^QX&<_JtH%;K!?1kt?4f-@ER0vr zMdCCni*k7haP5#osPi3FLRFO}8w+6=^LZv9Sf@VBDR1ccd%m>z9g8Vj^bh8rfM^ zyz$(n6^>524jt!r=CnU02ntS_D~J85ek+i+wv04IXFMqSd@j8O63~xe4+H0|PfKm_Io;Z+<{oQ(f@> z6U}fQry$CGM~PTQ{S-r-vul&29C!uNgV(tUtT&N59ygoN62r!NDpo!}w3! zL=DsSTUS%l5xW`s)!(>Bm5zNQkl9~`8$a_uO`-tB^{vcGYwbv$nV6V3IAZ7{(7TR^ zuy=4k5(^4?QPI{nSbp;;)*{FyhAqZZY zQMr8*E*~t>0!&Ioo|Kk0^X_5{(vchRB}_Ut`0)G*TU%RXeMo82Gcsy+oiofB`7TNx zQ*hvXGz4&m0fn+W+PiIA9J-yDc8#pm*?AfrrC|CYZRm9nqtL@TATDlUX-Q7^<=9|k zjN4N~)cl4uEV>O4Z)?yuAWbzA0gK51ZGIGMAOd09Z&M9JnPXomAY~b8X|S9|=;lcz zs>|d9EWke(Sqvg18Qi`PJ|L>zA0P5(@e1Uoe`#sF;aj+ntknIo`pB{HJ^LIY6*<1Z zJ>}Ktiu4mE!qm?0JEl?MQ!CDS9eV!q>eZa5U**_7fB6C$>s{!lFVR*I3=0Nqr0UN= zAlNDuv-R=;O(H?B55W$`h`pqQgd;RyHD_>!&Ck2R3dYP2WE^~Zg%em$TbdAD>aGJM zM!4C)rNSMDEoWtI4FjDkDUt*>4yf8KC>(pj&~eGk%nUd@JBjSn7nUB6FvmWrQ;eJY z3TIf_L1#Sb(NJ(=@Tyw$Dux;Se0;+)dwCg}+uP~)nsd`|OG+m7)MA=1Dv!hTKn|z# z?v0A)!2%(;9UTJ2wdt*-?C-1GS19U?@((Oc?}^MQ0SB zXqr8emytOQ?nMd=GZGBf0M4Kn=_MuM9QX&{*F8N@Yql|}%?6bmogvuuBSn2Xs?EZq zIl};!j4b|O+{DMpskAfu@pO*zJp^f(;A4qhmeZ!EEhv*abjyzCi&RBx?#|>bz!hTh`~?y{mru zv^UBNw%x-6LPSbyTWc%eB%mR+ckX;e^mUOrOb?L6$;k<3wvT_v-Huewj>RvJ0*E|= z91!uHsJkOgqVxj2aA^rZ)3fgGQ%dDE{GJJ+0^517XvV%wjAF?=WEL&d6I#zmi>mOt zU=Nde^x0UBXY2|-jJtQ&IP{1)J3F6?A=b?wqCPArEc`m{;53>vz`%hPDT40#xA;M2 z3z8Q)NsrveVH|%HjDIw-ckSMd4m}EsD)jMzJ(2yWVQ_><1bhZz0p8YB%0R@vfz<;O zDJq^aRDhmfPlJ?>#!x>>E0h;F0z!5Z#(ULXp52$2m#XaqZS0aG(GW1O!?(!-#Q1(^t*9;~3gw*7xyoe5aY>HEfu5Tddbp%O7s5$&UL zC`^PfB}HTjQ4~e-jZU^EWz9}Pj3h$)QMROzu?+2rAw_4Vq{Z_8d^5lQ@B07GHP_5s zMW^$A-}iZ+=f3afevaf;`hh|XyPYbtxG6KhY&J18G?eceyC&IjiGcl#^qAU zB0_lj^tY&}?>RJ(V^U+8Lg_iAs z);VkG2JCdH^eRXB_Vs%+UKj41H=sPGo4&QOLY}(HKlS67rLkq`J4KyrvNZYNnma;- z2AR=DrrBj`S_YmWt{5$K~*V}Fwaup}7 z7g+OYYQC$k2L8sWZ|aK$U*la)p;ehc7M;a{B|$POEeE8)^iKB{s_1LEm=%w!deSKL#cju;@z9$iPoV+@EAm&<`86l!Q{%i^H|&3Q3zYjKu_oSEw8&2T+ZP zO1ZhY0^o7#^f_}5;lo`W@I|B-jt87Pd-i!z(N2v$dZbfteR2L#`~qN;9UUXUUJo985i|0`$2dvNPKJf$-k)Uv zT2xsdl~o=ZAyQ%DOJ@-=0%{3FkY~y%BdIFO3O1KaLUsT%&4%SHPu$fXJr{oV%DN0} zfo4LY$pOVE8xJzPL+b@Mh8E%NhCo{qS#6uu`*1=+EukLaf{Ux`c3&@!zd>!q216^O z7%dGA5oF=OQ=0^H0o^QplhP@c!wIBxCpTA5%H@kdn2oC@!JpUA$mko-lRhG`=Ls9| zGDC00Es>j8P?cG7+r;6~eHDctPgmJlX#?eVZPsX0RaMn5YLO0FHX#-gCZ08XE*IX8 z6+Oa$t1$ZN5Kh9d>mv4hw{G7){V1&BQi^27s#Vyc-8Dp#&K8|9N%3n`*-j%{TkZ01 z3=R~jZ^_QTgb*KZf=G2xvYW}Fqa;+?RzY$dLDrS=y&r=E^E>)E`mnC;X9k+JA9z$} zbUV8>N?~6@)J`imXpU0@$M))+#{KYMiAJwpbcP{*2u!%O$b>748xfI+m3dQmg2(&P zLKckk1Cn(k`emOiO^?~uq#mP2U6%Ee>5Ns5EKc-aES*ktr=3V96KujI)fbdoI;9T# zQKq&%TcxCUvF82p3RTOt7o}T7{QHuMN9liG%8Ks${@uKMO|9Mk zeT!KOR6TVHg~yN88`Tsvy}8@N$Ns3eajDC!I5njX%D9*KJqu8t|9np;M5SYU-ND0$ z7uOgP+i-M~MqjyN!iV_OsQ6C*$6JJ4J$$&IQOpIbnsN@qHgJWerM;wIi$cZ4No@i} zOT?WkSFfIS{w{pK;ngQ%|G|Td>BZ!J{#u`Sj7kj+r{ZjnS9sQdslEmb*2>F!48H#C z*;mguIS2Y%9dn9%Oc|8nU%ftQNGB>q_8@!D+1Xh;!BV-teRehpEy?+a)K{+}Oau-j`?Z|`%_HtOCQs34-Y>&E*8t=ZMYs!(o2_)K z+to$I>Blq4o`^IM4#5=99;lUVTerTFFo4c0x4XYTL;3d8Y#frbyQs*GNdT*>?$UEA zHgpkKGVkJw$sWh+cdoyGJ%7U8DgKE-X)SC0XiaU%PwT0)IiL5BJ%8SkJ`)&pV@BM$ z7>x+o8>Uvo7)=Nv=q>UX%qEr0Ok>&Rx1#1%4Fsrb|(*hTjZ_dm$U`&zv5d(PA>Dzq4DH8+tbLT4b5S z)?U7FY3|mP!@nGnj=lTnj(NGu`@~r;^S6%Ldgj5In*;R}z7E`WYc;LZ*H<19>kkSa zB2iS7>bE2g%0~JFNc2jVM2zh1{5b~?Y_Vd|gfBdlq>I8x7oi|7{`0q6z zA%&VBw%&acyX2>tXX#R)TBQ-WzK9*qvv~hdhe34M^4zKPqjErA%9(QjOmxR@Wff4&Kn+;NeGg6C6Nljd z&k4j`SE@hdpxvO|?*h_8*L9q|25@P;_80Ojq$azDud>pL&Qm|CEiFXG_dANtAazBv z>4XDM`ad9YGXtuf*-rq?Qnhf&?tS}0J_+x+A%4w0%&~2#ub-Q>;oA1?_sAXpp6a5! z#c$1;`wt#~r~h(Ny4CN6kS_DRh6H=;%mz%5+(3k z_?4T(*Wp$NSOB+fAO8f%V6L|Ms&~(xqCsA4Eck!xCHkQt2hqK)hzYO7nN;c%D^JI6+Cau%)58DN|in)NZgo?A551 zOC{E#_hJ*Aq1ck)K5zbfPS4I8qj_v~35@e>o>(ongeC4VZ!Mn1Frfrq;%lj~r6rK_Lsb=*XWAlokRYmNJxf z`7;A*06Oy^`deCCQ?6bOcy^w`^TY{li8u5Ntc5LykS>{_OS?A&kDU2eMD}Nonz)G) z&B@;f-IyQ~{1=p_SuOajLtAF9qN37r*19+?d$IN3R(hZ_^?AU$a zz`#)pC*TU_=GHGPCpzYBeY+Qexzf;hv?DxB{3mJYijIzM@>~&SUIwol^RAi@Kqel0_4I@I(BS8#GM|~ zM<;n`cmI%Fr4Uit3x4w41o#9qwoM2) zw2Qm{FzpA_llhk0lyzDW)OoD$vS}pTb)!RMZzx1zt~guPggFub_5#N@SnvM89??f3 z=UD*i#mZ&HTZ;SoJ{8#Wcf#X1u{IW`EU4E}A1KE{&;i(r10{4R)bleE zp7b_5!X`(=?dIXJk^bk9Ya2PoBl@hsC0P^*AizaR3`2M6^y#Ow<3Zb-oF9|9fL@{J zY#E$e;n+!orv%yrnubOo*E*mfCHm&wgGPp41RivXXKSBuh=X=009vC&V8H2T2RM>U zjI>QmuE=Eb?5r{M7K1w|1s*|YC4vHXP%ntWiXb5?8U> zRIDqpSpxG+_F0 ziHYL8+Q?6&2m@?Fg1BFhH=qVM$nM4b9+=eS7$giCs*0N`o(d2OsA+ z^ytw8NCPDmN2jvYydIefFUmdU22`%oRJjYJ>?Z+AnHbq`h=o0&`ld~Sq7FheYV#dS z1#_CJCl+EXWMO}u5Lp^NOj-?fAUy(UVy*n9W6%uiL(bW*U*B_i z)dsej+iuO6K0Q0Go6xmu&%%2O54k!Bb1PSXrIiJ5f3PIwtL*@7Ca{j_M`Vi(Jm}TG zJNsp*rDZeaf2Kr#?;(&0SJz2u6Xwp_VsYfbw+ai({@u%0n;a_OnDP`^YFKhIHg*Bj zUs_r-0uScqxy_x6z+6L3tpa|an%!~gsgNAep-%WIIcfERO9AGH^SFvgMd|DRLOkFE zl$Di{$D{dw>u14=XFsDZL3gGB>mgt}O~f!lF+g%cry3#tl8VFok3#UBu4OaNu3oMh zC<}TNd>L)^JbXV%ju}E%`D}fi@79!XDc566jK=Xfes6_`$A~Wg>F{gu@$s##t(aRX zPuh(S2(L?01-mFwdxch%HwTRs)oUc)C8ecQ1@dAO_iZIkc6v=4=jQe>`1HN*uU`R7 z|M=rneEjFKWNvRPW{^`@^)Wd#=C` zJL2K&d~=bB>6kISdiU;NZZciG7n?9l>Q1T12J%I>N8XXr`75cL5 zT2hjnWfpkCTp2LrEayCoC)*kmxz5Z1l}Ax;qFH}9?IwIES6bQqsq3 z=5<#EsVE2qbt_0CUDRYpq{xR33y0AxePcEf2ZJm7?2~G;$7Mb~Qyd*@zV*$INq|jZ zHYJY|ky|TH734vi$Vo|0u(?9WT73KVU?Zbld5fU7(I{U%efl+bf|i-jND~vc^nhh_ zzC}iMJLVJ>5pm(tr5kjDz@SP86i%$r%Ahk$^q*(TfG4m|%vKhGsyu7<{flan>l7~~ zw4odLWaKL7V6P)QA>*b-BTeE`MQ8TubFa;czQ0;8h{i+zJ+Q$QAe`Q<)2!e|r01mic*Glp6DO(pXRNvYy;8#{RL zYtBFKLM~6pq?DjEhqx2IeMyUn`4f>dg}3p1e!E|socd^Jq$DTT1Fl(0T4c)=~cK#uP*k47bcQ&Ya5JWoAhYc=>x9|Y7cERJtgzf^l~k7H%Q%eK>BOr?OIvC$4eE1{{#AU zY@a&h`bc|+>)y*crw==O#(sjs^@hsrHoq~%kAYYS+d*_LUTDqiIXm6Na?O>~2ZYn1 zUG})`*{e77bLI9Hr`M^I3_BYt_P#p!>Y!Zv#!7K;O53YJtzchuhq1?L(XQyamse0*t0;e8#e6T?b}kPcs(gt;)8;MEn#6~ z%h+@2x(og!Hk9kAF*$*pO66E|t$KQK!1L%;-ZMV5_VP_`FCOCzo3V zZlINk1bX=J3lOb}(`uI}m)7p{U6ED1%+_A*HhhQm@g*sEV7RzY4ae@PiQ9O8bK%pc zlr`%}-idD_hI7G4sIb$_Mm(et`ly>(%ZCo+ST_f@Q)u7Kr=hEj$PEL3e@9oz(O|9^ zsrq*)5{Lp?0kc+DIbelE#}%I{%{_6;7Kyw2QPL0yc~C;gM0_FHu^?Li)Yo(QgR(WR zdz@z4W5>SeX!-kR!x@nwaQqVQG8E7%u!Yo{>lV-m>YUIV_^D*o*3jWkyvL9N5K0rR z-e|Rxh`1X8Ce9)9{kZs>OxLM-`_{$TnJPbf;bj_aEEsGsFr`uawb8N?XfvDpiJ|@S z!VZxRRcFr3Z`#*h*UG90a0|19L?O}1!(%KdhHtH(PRNY5mG~BJP^+k-GS5&=(lq)5C4x~*@rxHC(x=u!ZyOk_x&*qriA0yeoC_lp z_rT2Kr($C_|Cvfbf<(e9(}c_o7UYoSCSU))|&{h%(%jdXPj++pSfT?2B2&kQ~)qi>{{gb zgwd8I2@u zU+HM0#x8EKZaYiacF66ss0&-0o4GG4R}61z@8@jYecO07C8Kf5yYm)hT7)yJ&ozM! z{r2tKs-CTck#BTsW-jU7s~56N;Jf^{V%6s!>SuB2AVy4>r) z zC4ETSLWWk;0*yAJuKCv*10_-H+XN`= zKbV`S53{xt4cPHfF&cCNUxBhDpen~wI)`7ihOjs^#Rdg8nUG^F1ksOmYr%{R8@1=HrACJm!!<) zz%sOq6801Kfw=5|!7d)zo8|Tch*1hH8g190r{^DZAzWJ#L-ZxfAPjT!NxZ3Wsi>)L zsHl-BW}8ksW<_B+E&d7079lLK!5w!QzzBHKPYn&E0F(6VzX!fdGc`GsaO#u^9|Q>- z$w*c2F(GR|&H@}lKLRY%bltSHjw|ON4+M2js8jRxtxJ2Nlae1O4w)4%5iLMT6VW@u zj^Jt^o#RRJdL=Qjd)=8e2_E$M(aI-`QwvgOepsO2diLS|{rGl!;d>7|LNdE*CK5nv zk1Ca_-bN6hphi_w70459mX>HY{?utpYHAR;0wI;=g!hc(oXs5^V%ZkMH+A|b6WPSj zO}?Nu9Dd*qisZ>trvj%}lNmEB&BxR8q=4C0U7anrDl5j82AzRft*NQubPz@-J2=oN zxfr*#d6^cbrq5``Na zyZ^v}HfTzimFg>N{tE&dq*Je`xwUn)ri!YdO6x?spo|Xut_rfY%z@{b#a?0EezLVa z@n8wm0((Y7Lv3y6ySZ7>VM$pL6zm}`MCj*#Dd*66 zeKa+jUgz}$f>c)@#S=lywIE8|^a}F_y?Cb~{?Ex6Q*-mtn!jO&1~7zZsY|eh`1K}9 y&XoT{Tp#+6c!6*JOI+)Te~_27;yc^r`}dQHUI$-A1uYc6Hrd{3LZZZT%l`lw)yR?n diff --git a/example/samplecharts.go b/example/samplecharts.go index c742b3e..0f8b93a 100644 --- a/example/samplecharts.go +++ b/example/samplecharts.go @@ -278,6 +278,7 @@ func scatterChart() { pl.XRange.TicSetting.Grid = 1 pl.XRange.Label = "X-Range" pl.YRange.Label = "Y-Range" + pl.YRange.AlignTrans = true pl.Key.Cols = 2 pl.Key.Pos = "orb" diff --git a/go.sum b/go.sum index 3e457b4..9ce9740 100644 --- a/go.sum +++ b/go.sum @@ -7,6 +7,7 @@ github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGw github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/llgcode/draw2d v0.0.0-20180825133448-f52c8a71aff0 h1:2vp6ESimuT8pCuZHThVyV0hlfa9oPL06HnGCL9pbUgc= github.com/llgcode/draw2d v0.0.0-20180825133448-f52c8a71aff0/go.mod h1:mVa0dA29Db2S4LVqDYLlsePDzRJLDfdhVZiI15uY0FA= +github.com/llgcode/ps v0.0.0-20150911083025-f1443b32eedb h1:61ndUreYSlWFeCY44JxDDkngVoI7/1MVhEl98Nm0KOk= github.com/llgcode/ps v0.0.0-20150911083025-f1443b32eedb/go.mod h1:1l8ky+Ew27CMX29uG+a2hNOKpeNYEQjjtiALiBlFQbY= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20181030002151-69cc3646b96e h1:LpHV5J9Rec5OYn+RZFfNenrW109yUVSoKjGOgmKKhxE= diff --git a/graphics.go b/graphics.go index 322584d..fa1b7a3 100644 --- a/graphics.go +++ b/graphics.go @@ -278,14 +278,28 @@ func drawYTics(bg BasicGraphics, rng Range, x, xm, ticLen int, options PlotOptio y := rng.Data2Screen(tic.Pos) ly := rng.Data2Screen(tic.LabelPos) + ox := x + oxm := xm + if rng.AlignTrans { + ox = xm // origin to right + oxm = x // mirror to right + } // Tics switch rng.TicSetting.Tics { case 0: - bg.Line(x-ticLen, y, x+ticLen, y, ticstyle) + bg.Line(ox-ticLen, y, ox+ticLen, y, ticstyle) case 1: - bg.Line(x, y, x+ticLen, y, ticstyle) + if rng.AlignTrans { + bg.Line(ox, y, ox-ticLen, y, ticstyle) + } else { + bg.Line(ox, y, ox+ticLen, y, ticstyle) + } case 2: - bg.Line(x-ticLen, y, x, y, ticstyle) + if rng.AlignTrans { + bg.Line(ox+ticLen, y, ox, y, ticstyle) + } else { + bg.Line(ox-ticLen, y, ox, y, ticstyle) + } default: } @@ -293,11 +307,19 @@ func drawYTics(bg BasicGraphics, rng Range, x, xm, ticLen int, options PlotOptio if rng.TicSetting.Mirror >= 2 { switch rng.TicSetting.Tics { case 0: - bg.Line(xm-ticLen, y, xm+ticLen, y, ticstyle) + bg.Line(oxm-ticLen, y, oxm+ticLen, y, ticstyle) case 1: - bg.Line(xm-ticLen, y, xm, y, ticstyle) + if rng.AlignTrans { + bg.Line(oxm+ticLen, y, oxm, y, ticstyle) + } else { + bg.Line(oxm-ticLen, y, oxm, y, ticstyle) + } case 2: - bg.Line(xm, y, xm+ticLen, y, ticstyle) + if rng.AlignTrans { + bg.Line(oxm, y, oxm-ticLen, y, ticstyle) + } else { + bg.Line(oxm, y, oxm+ticLen, y, ticstyle) + } default: } } @@ -305,10 +327,14 @@ func drawYTics(bg BasicGraphics, rng Range, x, xm, ticLen int, options PlotOptio if !rng.TicSetting.HideLabels { // Label if rng.Time && tic.Align == 0 { // centered tic - bg.Line(x-2*ticLen, y, x+ticLen, y, ticstyle) - bg.Text(x-ticLen, ly, tic.Label, "cr", 0, ticfont) + bg.Line(ox-2*ticLen, y, ox+ticLen, y, ticstyle) + bg.Text(ox-ticLen, ly, tic.Label, "cr", 0, ticfont) } else { - bg.Text(x-2*ticLen, ly, tic.Label, "cr", 0, ticfont) + if rng.AlignTrans { + bg.Text(ox+2*ticLen, ly, tic.Label, "cl", 0, ticfont) + } else { + bg.Text(ox-2*ticLen, ly, tic.Label, "cr", 0, ticfont) + } } } } @@ -319,7 +345,7 @@ func drawYTics(bg BasicGraphics, rng Range, x, xm, ticLen int, options PlotOptio // The y.axis and the mirrord y-axis are drawn at x and ym respectively. func GenericYAxis(bg BasicGraphics, rng Range, x, xm int, options PlotOptions) { font := elementStyle(options, MajorAxisElement).Font - _, fontheight, _ := bg.FontMetrics(font) + fw, fontheight, _ := bg.FontMetrics(font) var ticLen int = 0 if !rng.TicSetting.Hide { ticLen = imin(10, imax(4, fontheight/2)) @@ -342,7 +368,11 @@ func GenericYAxis(bg BasicGraphics, rng Range, x, xm int, options PlotOptions) { } if rng.Label != "" { y := (ya + ye) / 2 - bg.Text(alx, y, rng.Label, "bc", 90, font) + if rng.AlignTrans { + bg.Text(xm+alx+int(6*fw), y, rng.Label, "bc", 90, font) + } else { + bg.Text(alx, y, rng.Label, "bc", 90, font) + } } if !rng.TicSetting.Hide { @@ -350,9 +380,15 @@ func GenericYAxis(bg BasicGraphics, rng Range, x, xm int, options PlotOptions) { } // Axis itself, mirrord axis and zero - bg.Line(x, ya, x, ye, elementStyle(options, MajorAxisElement)) + ox := x + oxm := xm + if rng.AlignTrans { + ox = xm + oxm = x + } + bg.Line(ox, ya, ox, ye, elementStyle(options, MajorAxisElement)) if rng.TicSetting.Mirror >= 1 { - bg.Line(xm, ya, xm, ye, elementStyle(options, MinorAxisElement)) + bg.Line(oxm, ya, oxm, ye, elementStyle(options, MinorAxisElement)) } if rng.ShowZero && rng.Min < 0 && rng.Max > 0 { z := rng.Data2Screen(0) diff --git a/scatter.go b/scatter.go index 45ae8a9..9ae083b 100644 --- a/scatter.go +++ b/scatter.go @@ -127,10 +127,10 @@ func (c *ScatterChart) Reset() { // Plot outputs the scatter chart to the graphic output g. func (c *ScatterChart) Plot(g Graphics) { - layout := layout(g, c.Title, c.XRange.Label, c.YRange.Label, + layout := layoutWithAlign(g, c.Title, c.XRange.Label, c.YRange.Label, c.XRange.TicSetting.Hide || c.XRange.TicSetting.HideLabels, c.YRange.TicSetting.Hide || c.YRange.TicSetting.HideLabels, - &c.Key) + &c.Key, c.XRange.AlignTrans, c.YRange.AlignTrans) width, height := layout.Width, layout.Height topm, leftm := layout.Top, layout.Left From f1dd9ba022232bca00f3d64c17efb467d544158e Mon Sep 17 00:00:00 2001 From: yyonghe <153747610@tencent.com> Date: Wed, 10 Jun 2020 00:32:35 +0800 Subject: [PATCH 2/2] feat: support alignment translation of axis, update package dependencies --- example/samplecharts.go | 8 ++++---- go.mod | 2 +- imgg/image.go | 2 +- imgg/image_test.go | 2 +- svgg/svg.go | 26 ++++++++++++++++---------- txtg/text.go | 2 +- 6 files changed, 24 insertions(+), 18 deletions(-) diff --git a/example/samplecharts.go b/example/samplecharts.go index 0f8b93a..9a985f2 100644 --- a/example/samplecharts.go +++ b/example/samplecharts.go @@ -15,10 +15,10 @@ import ( "time" "github.com/ajstarks/svgo" - "github.com/vdobler/chart" - "github.com/vdobler/chart/imgg" - "github.com/vdobler/chart/svgg" - "github.com/vdobler/chart/txtg" + "github.com/yyonghe/chart" + "github.com/yyonghe/chart/imgg" + "github.com/yyonghe/chart/svgg" + "github.com/yyonghe/chart/txtg" ) var ( diff --git a/go.mod b/go.mod index 06a3e05..937e464 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/vdobler/chart +module github.com/yyonghe/chart require ( github.com/ajstarks/svgo v0.0.0-20181006003313-6ce6a3bcf6cd diff --git a/imgg/image.go b/imgg/image.go index b5eaa34..85d69c8 100644 --- a/imgg/image.go +++ b/imgg/image.go @@ -10,7 +10,7 @@ import ( "github.com/golang/freetype/truetype" "github.com/llgcode/draw2d" "github.com/llgcode/draw2d/draw2dimg" - "github.com/vdobler/chart" + "github.com/yyonghe/chart" "golang.org/x/image/draw" "golang.org/x/image/math/f64" "golang.org/x/image/math/fixed" diff --git a/imgg/image_test.go b/imgg/image_test.go index 889ac31..eded6d8 100644 --- a/imgg/image_test.go +++ b/imgg/image_test.go @@ -1,7 +1,7 @@ package imgg import ( - "github.com/vdobler/chart" + "github.com/yyonghe/chart" "image" "image/color" "image/png" diff --git a/svgg/svg.go b/svgg/svg.go index 0723de2..a982bdc 100644 --- a/svgg/svg.go +++ b/svgg/svg.go @@ -6,7 +6,7 @@ import ( "math" "github.com/ajstarks/svgo" - "github.com/vdobler/chart" + "github.com/yyonghe/chart" ) // SvgGraphics implements BasicGraphics and uses the generic implementations @@ -399,9 +399,11 @@ func (sg *SvgGraphics) Rings(wedges []chart.Wedgeinfo, x, y, ro, ri int) { d += fmt.Sprintf("L %d,%d ", int(rf*cphi+0.5+dx)+x, int(rf*sphi+0.5+dy)+y) dx, dy = p*math.Cos(w.Psi-math.Pi/2), p*math.Sin(w.Psi-math.Pi/2) - if math.Abs(w.Phi-w.Psi)>math.Pi { - d += fmt.Sprintf("A %d,%d 0 1 1 %d,%d ", ro, ro, int(rf*cpsi+0.5+dx)+x, int(rf*spsi+0.5+dy)+y) } else { - d += fmt.Sprintf("A %d,%d 0 0 1 %d,%d ", ro, ro, int(rf*cpsi+0.5+dx)+x, int(rf*spsi+0.5+dy)+y) } + if math.Abs(w.Phi-w.Psi) > math.Pi { + d += fmt.Sprintf("A %d,%d 0 1 1 %d,%d ", ro, ro, int(rf*cpsi+0.5+dx)+x, int(rf*spsi+0.5+dy)+y) + } else { + d += fmt.Sprintf("A %d,%d 0 0 1 %d,%d ", ro, ro, int(rf*cpsi+0.5+dx)+x, int(rf*spsi+0.5+dy)+y) + } d += fmt.Sprintf("z") } else { // ring drawn as inner radius -> outer radius -> outer arc -> inner radius -> inner arc @@ -412,13 +414,17 @@ func (sg *SvgGraphics) Rings(wedges []chart.Wedgeinfo, x, y, ro, ri int) { d += fmt.Sprintf("L %d,%d ", int(rof*cphi+0.5+dx)+x, int(rof*sphi+0.5+dy)+y) dx, dy = p*math.Cos(w.Psi-math.Pi/2), p*math.Sin(w.Psi-math.Pi/2) - if math.Abs(w.Phi-w.Psi)>math.Pi { - d += fmt.Sprintf("A %d,%d 0 1 1 %d,%d ", ro, ro, int(rof*cpsi+0.5+dx)+x, int(rof*spsi+0.5+dy)+y) } else { - d += fmt.Sprintf("A %d,%d 0 0 1 %d,%d ", ro, ro, int(rof*cpsi+0.5+dx)+x, int(rof*spsi+0.5+dy)+y) } + if math.Abs(w.Phi-w.Psi) > math.Pi { + d += fmt.Sprintf("A %d,%d 0 1 1 %d,%d ", ro, ro, int(rof*cpsi+0.5+dx)+x, int(rof*spsi+0.5+dy)+y) + } else { + d += fmt.Sprintf("A %d,%d 0 0 1 %d,%d ", ro, ro, int(rof*cpsi+0.5+dx)+x, int(rof*spsi+0.5+dy)+y) + } d += fmt.Sprintf("L %d,%d ", int(rif*cpsi+0.5+dx)+x, int(rif*spsi+0.5+dy)+y) - if math.Abs(w.Phi-w.Psi)>math.Pi { - d += fmt.Sprintf("A %d,%d 0 1 0 %d,%d ", ri, ri, a, b) } else { - d += fmt.Sprintf("A %d,%d 0 0 0 %d,%d ", ri, ri, a, b) } + if math.Abs(w.Phi-w.Psi) > math.Pi { + d += fmt.Sprintf("A %d,%d 0 1 0 %d,%d ", ri, ri, a, b) + } else { + d += fmt.Sprintf("A %d,%d 0 0 0 %d,%d ", ri, ri, a, b) + } d += fmt.Sprintf("z") } diff --git a/txtg/text.go b/txtg/text.go index 19ca0c1..755dea7 100644 --- a/txtg/text.go +++ b/txtg/text.go @@ -2,7 +2,7 @@ package txtg import ( "fmt" - "github.com/vdobler/chart" + "github.com/yyonghe/chart" "math" )