From 7c14ab74aaeeba4cb3672f4a980abfda44f793a7 Mon Sep 17 00:00:00 2001 From: Talla2XLC <50024798+Talla2XLC@users.noreply.github.com> Date: Sat, 12 Feb 2022 18:07:00 +0300 Subject: [PATCH] Add new align 'inner' for X axis (#10106) * Add new align for X axis new align 'left-right' for options.scales['x'].ticks namespace will allow users to aling ticks: 'start" for first (left) tick and 'end' for last (right) tick * corrected name of aligment to "inner", documentation and add test for inner labels * delete unnecessary changes * corrected logic for reverse axis, add tests for reverse axis and withoutY axis * corrected chart paddings for "inner" tick align * code clearness * Update types/index.esm.d.ts Co-authored-by: Jacco van den Berg <39033624+LeeLenaleee@users.noreply.github.com> Co-authored-by: Talla2XLC Co-authored-by: Jukka Kurkela Co-authored-by: Jacco van den Berg <39033624+LeeLenaleee@users.noreply.github.com> --- docs/axes/cartesian/_common_ticks.md | 2 +- src/core/core.scale.js | 18 +++++++++-- .../core.scale/label-align-inner-onlyX.js | 30 ++++++++++++++++++ .../core.scale/label-align-inner-onlyX.png | Bin 0 -> 8839 bytes .../core.scale/label-align-inner-reverse.js | 28 ++++++++++++++++ .../core.scale/label-align-inner-reverse.png | Bin 0 -> 13362 bytes .../core.scale/label-align-inner-rotate.js | 29 +++++++++++++++++ .../core.scale/label-align-inner-rotate.png | Bin 0 -> 17975 bytes test/fixtures/core.scale/label-align-inner.js | 27 ++++++++++++++++ .../fixtures/core.scale/label-align-inner.png | Bin 0 -> 13434 bytes types/index.esm.d.ts | 2 +- 11 files changed, 132 insertions(+), 4 deletions(-) create mode 100644 test/fixtures/core.scale/label-align-inner-onlyX.js create mode 100644 test/fixtures/core.scale/label-align-inner-onlyX.png create mode 100644 test/fixtures/core.scale/label-align-inner-reverse.js create mode 100644 test/fixtures/core.scale/label-align-inner-reverse.png create mode 100644 test/fixtures/core.scale/label-align-inner-rotate.js create mode 100644 test/fixtures/core.scale/label-align-inner-rotate.png create mode 100644 test/fixtures/core.scale/label-align-inner.js create mode 100644 test/fixtures/core.scale/label-align-inner.png diff --git a/docs/axes/cartesian/_common_ticks.md b/docs/axes/cartesian/_common_ticks.md index aeb3992a0..ccc98588d 100644 --- a/docs/axes/cartesian/_common_ticks.md +++ b/docs/axes/cartesian/_common_ticks.md @@ -4,7 +4,7 @@ Namespace: `options.scales[scaleId].ticks` | Name | Type | Default | Description | ---- | ---- | ------- | ----------- -| `align` | `string` | `'center'` | The tick alignment along the axis. Can be `'start'`, `'center'`, or `'end'`. +| `align` | `string` | `'center'` | The tick alignment along the axis. Can be `'start'`, `'center'`, `'end'`, or `'inner'`. `inner` alignment means align `start` for first tick and `end` for the last tick of horizontal axis | `crossAlign` | `string` | `'near'` | The tick alignment perpendicular to the axis. Can be `'near'`, `'center'`, or `'far'`. See [Tick Alignment](/axes/cartesian/#tick-alignment) | `sampleSize` | `number` | `ticks.length` | The number of ticks to examine when deciding how many labels will fit. Setting a smaller value will be faster, but may be less accurate when there is large variability in label length. | `autoSkip` | `boolean` | `true` | If true, automatically calculates how many labels can be shown and hides labels accordingly. Labels will be rotated up to `maxRotation` before skipping any. Turn `autoSkip` off to show all labels no matter what. diff --git a/src/core/core.scale.js b/src/core/core.scale.js index 97529e591..1e79c1d97 100644 --- a/src/core/core.scale.js +++ b/src/core/core.scale.js @@ -705,7 +705,7 @@ export default class Scale extends Element { paddingRight = last.width; } else if (align === 'end') { paddingLeft = first.width; - } else { + } else if (align !== 'inner') { paddingLeft = first.width / 2; paddingRight = last.width / 2; } @@ -1206,9 +1206,21 @@ export default class Scale extends Element { const color = optsAtIndex.color; const strokeColor = optsAtIndex.textStrokeColor; const strokeWidth = optsAtIndex.textStrokeWidth; + let tickTextAlign = textAlign; if (isHorizontal) { x = pixel; + + if (textAlign === 'inner') { + if (i === ilen - 1) { + tickTextAlign = !this.options.reverse ? 'right' : 'left'; + } else if (i === 0) { + tickTextAlign = !this.options.reverse ? 'left' : 'right'; + } else { + tickTextAlign = 'center'; + } + } + if (position === 'top') { if (crossAlign === 'near' || rotation !== 0) { textOffset = -lineCount * lineHeight + lineHeight / 2; @@ -1285,7 +1297,7 @@ export default class Scale extends Element { strokeColor, strokeWidth, textOffset, - textAlign, + textAlign: tickTextAlign, textBaseline, translation: [x, y], backdrop, @@ -1309,6 +1321,8 @@ export default class Scale extends Element { align = 'left'; } else if (ticks.align === 'end') { align = 'right'; + } else if (ticks.align === 'inner') { + align = 'inner'; } return align; diff --git a/test/fixtures/core.scale/label-align-inner-onlyX.js b/test/fixtures/core.scale/label-align-inner-onlyX.js new file mode 100644 index 000000000..a64157c31 --- /dev/null +++ b/test/fixtures/core.scale/label-align-inner-onlyX.js @@ -0,0 +1,30 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [{ + data: [1, 2, 3], + }], + labels: ['Label1_long', 'Label2_long', 'Label3_long'] + }, + options: { + scales: { + x: { + ticks: { + align: 'inner', + }, + }, + y: { + display: false + } + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/core.scale/label-align-inner-onlyX.png b/test/fixtures/core.scale/label-align-inner-onlyX.png new file mode 100644 index 0000000000000000000000000000000000000000..7d5b039b50290dd960b325613c5c9c4ae686292e GIT binary patch literal 8839 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 Ee+$01{{R30 literal 0 Hc-jL100001 diff --git a/test/fixtures/core.scale/label-align-inner-reverse.js b/test/fixtures/core.scale/label-align-inner-reverse.js new file mode 100644 index 000000000..d56f6a04f --- /dev/null +++ b/test/fixtures/core.scale/label-align-inner-reverse.js @@ -0,0 +1,28 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [{ + data: [1, 2, 3], + }], + labels: ['Label1', 'Label2', 'Label3'] + }, + options: { + scales: { + x: { + ticks: { + align: 'inner' + }, + reverse: true + } + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/core.scale/label-align-inner-reverse.png b/test/fixtures/core.scale/label-align-inner-reverse.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d8330bfed196377933fcecc9cf3c25310822f8 GIT binary patch literal 13362 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

)|Trg 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�pCo6f@|NFiaAZQ#BTWGE(Rkp)~Nb zZ6Nxq(%I+ef6f3?a%hU!$iesDB_WZpt9!sIdV^fm`su>K>w-bOB`jhVr_ra4siyYJ zudkB&E9G(IgC3QCcVU(Bm={|JH#T`T9(#g_U->4BM@MPhvrva>uOnT$OAj|<=oo3V zdb+>r`L8e4AI+L^QuEiD!d|OLd+nCli8^tNGUnv<8SIEO@h$4>J2w)U)S1tJNyw|a zl#rpd6?)t`fo#J+g2Vh+H>Q6W^366#^wH0<84(w{9U$=8dDXn!XS=sw@;bY`EjVyR zE4nf4-SZ17!(KWfO5G1^LEurHZFT`9iWC+W$+fq!du6R63&$xr3T>8x&1cAHbrTut z>DaDi8|?Aig=|t+h5SQG>u_Ua{gbyMk-y$||6aC!GGYRR!XBywC97VO5X`HXtq-->N=sv5BiCsaIBUS?%=3g*Rt-FoS4mfWu@@_0-Mt3jU zWF^?NnxoqFjjgeLy^CMk7pQdX)n+(AVs{QCobdf>lW*|hZ(S?jhkzgiBUd8$-ab^?f$s6~{cvrwCXXk

  • O8H^BdT9K=Jl|g}3vtFd>`U&{-K}qxO|PDOElg|Q zQ_s>cR-*ZQDX~-H&s1l=`*=&rl>WPY-XC^~^VMy)N@X~2jPrWj-A)wrYlY&}`T(@x zR(+FivO6trW5`Xs`N!TBk+a#QwJPKr^*0K`e=5Ex?E4Y+^?J!S+32Nv@$WFP=Ob@B zd}1pH{q^VMSEsb2zGjCNX-0lG5wwXi=f*Z|EmwAaOSQXi@4C2<`w~WUU--ot($OHF zFKxN{AVAr5x~q7dytw9OwY0_=u!z{qemnL1=jW+w*C1xU$`ti4w7t|b zFr%gDft%?|5+XkzsIQS_zAT4KckQ5wM4CA4#DNOUTM;fsAU^!*%ZlGH%Pd*({D{kE z>dd|td9^jgPxRCp-@$bEQN`Cnac{4y3q}J;P1kuZ(d(E~-KEISFiYL}^rlF9vPpLE z{?m|i^c-ksu6cS`&bhM~6atHW$l5da5|tTx)Y*-36j3x!>t)v2f@tqcy%l zzFjnFOL^$G`Lo`T$b_@kUe-*&8SCr`b>vwtrL}fd7p2%ycVsTw?zpmKMvx literal 0 Hc-jL100001 diff --git a/test/fixtures/core.scale/label-align-inner-rotate.js b/test/fixtures/core.scale/label-align-inner-rotate.js new file mode 100644 index 000000000..7cee63a95 --- /dev/null +++ b/test/fixtures/core.scale/label-align-inner-rotate.js @@ -0,0 +1,29 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [{ + data: [1, 2, 3], + }], + labels: ['Label1', 'Label2', 'Label3'] + }, + options: { + scales: { + x: { + ticks: { + align: 'inner', + maxRotation: 45, + minRotation: 45 + }, + } + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/core.scale/label-align-inner-rotate.png b/test/fixtures/core.scale/label-align-inner-rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..d3aca46fa5c9fc4adaf7c4159e8bd7dc8f905d9e GIT binary patch literal 17975 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 S6#~}`@8yR z3(CX!9+BpjmKd1YTc`L6ZH@Tkma~o}m^eiP+I#~F)vj3Q7r{ZZ+rh<{wjjnZKLLc# zLhW0bntpw*8EvFMRLH-nU4Aig_?yyHdMw`B$Vh_n?ljOHm2*igmqPOrXbv9}P$I89 zE@$|?Ip~~mz?|OFvaQ+ezC~_YbVb6oLJyGmvPn|wSOg1N8|0FgbWrGewcG49_dl4k zyB0_&nOn)PvXZ>kx;Et2p>_ZMhbu{^)f7g7yrF|E2g4alqu_%%<_~C{4fz6Cq{^rN zS)|2}BTykFMo_!uPi}Rx&w9$QBgEjt+&xE#?Xsg{j)TSefw%x9b-GT9VoY?jGJ>EG zhw|fR0z8((7q#Si=N&XwZ(y0EIc5kGt#szp<)78}kub7Mk5cwa!cSZ@@K_vp&u}Pz zZ?wqXP{bhnh4aY!uO@G5j%5Xg9=Ftv!O^i0q|K!qF}=Ha6HVu;_2C76leXhD2J6db zJqe4qb|E1IWQf>W95h^n#_YxtZ+p}BL0O~vxwqe3gu03krRcCDUB=JUuD_&Ss1cM8 zrZ@l6W2{}Lnb4B|S|Dl)_L(b4A`p)ENGszlxK2`%lx5%-#J9G#bSP>{;aNlEOQ_IS zjQo_LpVj>>KVBISb}45?b>NrWFrz7gqTamuOx_0s^3>kW#*MH&z_{X>vBmqgC@vGx zwZ(LP={93v#98Fstt+m`&NbI!OiK{sAh~}@Cn#N}CS9e$n1)3Y zd0=a(v%=H)eV5fM3Wh=oxidz&*pGl!ph1plraU5#-eqs2ua1MD0cmyG8`XbAb4lPk zNsp-)qziq8%U0C%o3V`cSEUT_FTCIzbHUVul8{jjo`8z0R^;%t*}WeqZn~Aac##)u zrTzW?ahY{yoEV{uiiuvK>JNl8`kg;!HO|P9MTv>;OJNh zgUPP+=2D!B{1!T=D^`rVo&cy}$J~b-7%cxuLCdnW05$`V{IrE8fy{xc9F&n7Ap;-ivv~0ZUB>y*m!aTpoVZbxEk(qsn5mp z1pRjDN>a3x#H7|ePDN2~nEW<`B+&rSG&*3Num!QSv|I?Ez~Ne&5(TSQN?pwfm0O$6DIvF{)HGmGxx@-z|Kno+A1<@40oy>3^gGL+2J&*Gql+7qViby=kV-c*b#Dc8vs`pTjf zo*ujXL=tda=9%^;z!&bo_0p@_!ML@h|xg3x#)R>iHVC&E>LKa{{m{PJfy()3_!5m{t+cnzQl*8XD=$l<%uaR z5Tu;I_CIbyrH@wmoYrHPhAUd1(6R>7LBr+lH#DdLvd02pdKrkCzrVXKIaO`nA34O8 zc+Rt3BXyj6z%P%W5L~RospwN4^xylQC;|qK`))MT;Qm__L{|E~XGzof;VSn%QK;sv zbw{#Z!TqbFmD)bSD;A#(fNadu(jrDe-~YN+VZkt ze2NM9q$D`V;ZscGfV{VsJ{OY5>q4}De7H(Y$+=bZ31mC16NuLrJ+Gah?a48Fg~XK# zO;XY#0cbEmWY$7o)%nMbI-FJYo1B1z(o>h5_Uvl`d*q%N^w5oi7Z8H}y?T^L(| zYW2QaPJ!(qFx!#BNjA>2P-dsX`tOtfA}xev_#rDrhjq$8(wflgS#G#`{JPJ-P>5?* z|FIxnK%Bro5WBodt)WlnBA&yV%iW!{JyC zb+~*NJ@$dY>LZpMAF25>06SHjQ48bZ_*I+3*7!^Ifv)OZ#&j&2UjKpsR4+0`CMQuG?J>=CjqtL>`AlkV|z3b;@U+mk|M@ zZ8N`j2y7=Bw#^45#Ic%NwR3rM;aA$7y-03Z39#&kb9!)13ctTSTh^fmg{HS3UuF3I z_qhqFjqa|^E<^uh=*(p!UYJkDCt!pSp3DbR5rG@&t&XQ@{WKNJZbip2M}O|>Juie9E9g*+1)9EDykv+k zP5pUGfeBpeepS0Rn_uMoWcKh39H`dYO-Yt5%$?m*dJ#xbRpfU#u&h|1LkwK0#d~4w zqCy%G$D=2kB3l7qi^FPOe&=`EL#iuRGy;kv9sPzHXH#5~ow+uoEp+Y-2pd-e!YN>X z&)A7Y^EB*Ub_nR@{_FE@Q$d`!qd=DXcmfh2`z;NXb$|8ooa;&piIX%>M&iicOhcRh z0&af?MraUl+NXTA>;ts~p=^3uxfgJN-hv2`)k&7Alw~gzQ(_KM90Rg9k%x_l?$G9} zDm|-l*=lIIUdBzk7<~@{g|DlKM>Dp2vwAUeo`%;Ca6~1F|sb0BI06DGOY= zw<>?-M^H!ceHXJv5J!Jb=GO{D!LbqRi4gdZ|FG&AL80+n^{-u*;kt85PLo!Ah%7iA z8E^(}M?O>wm&24vX9?fg|e!IES7oJvC^FLV*FbvZHp@~SY0mb6oJ=X8*hhgks z=AVAd0TA`ZGa;ASj*N#Gz)q3`Qu8v6dnL707z6SVO@Wko2kB@@g15dkJ^ zc+PW>tCL_#M~ypUSXB~z3Ue~&AbDlnnlC^VMne`e8^08ksmj5Wq0Y-vrli!>SAb~u zR=Lt+iuOpwhpX?`aqz#5f%OzbO(?bK-9>-@dpJ$8;CT2-B}0E&Q=;=PxW=7dZA3<+6|;~*_s!RgVO$P;0i!I}z<{pGl`J#+9Hi zIHWcGSV5tHbb$l*L&&_5(K6Hi>Ssr}`=7f*rLF*hYLUzR`Il_T`k!v`qRC- z1_h0Jzftfp0MiS>b&FRh2ms)?*WB*I7T+KnK% z;(sdMT0xUIevr%i5U-T`%iXiWkDgHCgmOIo+n~U6ohjro@XHE(4}${v$LD zB?_wZb&*NM&O>lh4DjkoY2(U|v;uWp&&&1j0VusExPyKGvpXD61dqZgfH?6$6SlJI z$n!1^mL&fD`}gJ=k^nOAC}2yEz#ivnIUScL*PB&wK(>9L`;sjXRsSE^7DUep6T|rJ z^;zxpnf7?dWwEI5RIt|4Asf^}%{J_@Zx^jrK^|j?JjS7L2X6YPFI!gzqQMBJ+8?Q* z(nAu)UsRLvYg(DNzn1@98aAQhln_(!*^J|MuGFPtBe{RQqKAMu$iccP##R<^D^}_A z$fu|wRrnTz726w+V$p=9ia3PjAp&k0XAKQe;2PuX_cyWO;S7Rktg@U9pqpQ~5XU6& z{WBqq)&8dem<)ntA${bO-du;5rJ~&y8B6f_Cjg-EUASqc$i6SZ?&l|wxT@;b6s78g zp|Tr(`$z33ooPGFJ%`<|aYA|emZ$~kGxLuVfW2pvo$6o45MUY=ECrP11RR&;tEaI> zs|PYHL;~+RmrK@+f#Dz~J3>r?RzMVZ+Z+c1lE4QSJA2S$a)xA(o1HD=UnqyVg;;9el6lR)j5!h5*M1~I@z zh5G}F023A`@hJm-raMAPF-W-T&h}9@3x{lm)zgOeXm=P3odm7qH3cht>&Q zws6}@hJN5QZvY!CKx2mwLDRD2%}ZqmL7vRExSefa3fJ6SMUE<|AmKQS)rSc5=CsSd z{DAxu+d&W2sUrVhtp{KeXn1LNSs|d7EWGWx?LzlFOGNZhq+5zinwpG}92A4T?t%5WX&cPDR>jD5laz=@pF3A*zh z3op((^k3)k{>>|5QtWW{P_RE!^i{v@I(J5O-|9xr@2^~v0k?3SGbE#F;WiM4U(x@k zPz6`IU!8M|0WkK>I>qQYGf!=A{r~vXnyLv)HlYoSFAzHcD1a~Cy@7xc4JS96@%>Adc6auQo z07?coL(!s1#)US~J7z%s)zLzNYA8<{iU41c+7uxaaEoC+q`B`XpjZ7%)_g$NDZ!_) z-!R3gMT`eQoH2KVxHal88AQh(160Q>0I6cCF`qN3ybzZx_5J(zgIS?Z-p@Dk`eoUo z-`vjHKg0K+Rushr^Lx`@8OF9WurD9K>BkX-(o2GK{>}vp^FUoR^#1GYcHMk~Bu$4){NMLs^^ zw9n`iVFXKFJRu?2(*Eg-^B_F|N5MA=KyV#RJ)Da-DJiM!9JE|bsjB?jt-Ut(m@)Vw zk`PbX7+I;DyN!SlelBb{B|i@b78edUn2hx;Y&Eg>X#Zgk*S0TtwP}q=#RxZn#5Yjj zc5of})h7%*@$4LnUwq@(wGZ%&r7uxU zIN&bdKLLmD*u(fNNCTc3@qqJ+wstIedmX;W|Ec5c?Ja=BT^ZzT?ztc)N-F@vgi!OJ zwuxBW7uZF4sUe#kILSUkl6FTaw*yuvCjt?^J98Pxj(}q_cA8(kH*Q`}J*$a|7XDnT zk*tsc+&nZIYO)E3wlC23!ytHJS_1l9JBW@oj)iEa1c}luJj%%Lf(KnbawW>fr&(NB zU^8g3TNrC%gJ3h*6wfW*4e6{#@4(SIb_IDn?YjeK!ZQ>M4j0rQ3)UFuKkshTM*{{S zS38sO@9;E7TCX;t9`^*O;LcucveqKrMvgRKkQY$ySHxae zoJ949y(x>u)uSrIC}PX>T(5L#5wy(E6%PNjS~et~leeNKa+7(*g#4UQ7oEp=-c2ar zBbp?>-&g?#x^hBo92BqhndUl1r7OJHPcyT1aF(VtP$n9}9>6+cI?+7+!E_57a-rtC zsTTGQazBg$;@~|l0Qq2|p0@ehw@@Q=XclBqOmgneQ-)uZvF*=$3z*Df6Xax?gHzM&?kgaT1YXBV$5u7!KNrGs{K;dIY)@|%2}|}c`AG;N=$ex zZQGeOdguK4^OxnS=Ralj95Ji#SnQD?!c9Gy8OiUMEWGG}fJa{?W^G4uM)UK<P;ZYo#dq_8b`o02gdubwJf%fLont5JA;fXOh$sSyl!& zm3+Z3;GWZ?a4)lQ!F{bvz4txOE3bb7>O=&9P3`AO-XLg@8d{#9NSvih8}?Wldg}J9 zC{fbfsk6+@dg%B`fAS<|x@vdnh8{x@l(^|)aFG{9F4@cH_S{~(_p939zn8Q+`Nt|h z*R<>lerwnh?)Qf89KyMzRZi)Dda|a6*3`^eO>=_1ZeK@r|NBO2+)A8!tA}E1ML1V&AL2#p6Lx^#vWGm=+Qm+`ouLJp{R{r_lCC9ET+u(NFsguoSy$ z{VW4rwC2y`Ht+M#2v4&{2Y?)uwdu`Hau}&JUaDNbCZnDU(w)reSm=>shZ=vwaxa+M zi3zGz4ZV?YWQu{?qN+V?zBg^+eDDM;)7!DrrQdyaTz>{BtyTbx3TCGtdSY%UFp z=6>CLS!nn3@>1#K5t-Y2K~O6-fhnxIi-VaSA!?X&)B3rht@f>3FPYCvB@HIr6ApO7 zjLs)<-#g8Y?EdkifJ4maIwjYCFKg`NSPF%lu{N;!bUa{-xp#N_iGBn|D1Z&ibZ1r8 zj`Jq^TXS>s?_UKOaS~>?sWRJadTj-Z&-(bAu8_lP7#S?iAgmk(^P2kanXYBOlBoiTsWV_$eG+Mo~ za--f$QRUf)d!N|@01TG_$Dn#b$gSSLRfgV~s%cPayw=dCMbue0RQKJ#3BPQjyn->> zE^+v!S2lCbrW1=p6JF`QRSCkck4qg` zyNj3WB+aYvJiO56`L8}(o9+A^#nsNq(#sI)*JcMl%3-Kf_b7eMiSdjSKfQ#fol;|; zRzj4>yoP8TmP+;Pn$VPP%;3KC=BcVBZ=`bZ-Z~obBSXhfLN)Jq$_4jNV}3`%n?9SA zTn7H^7DTxH)qC4%mp^iNXw%b|lb^sv`@&&&mKn)}$+(em?Nrb5=>DcGTneVnhnUXL zDEousi(`T>c8tp(X67$O%6o);yHVq`8mG~D1Q1K(}cgUnwy|3Qx z+W;SVkDug)T#{XtV07*i=y)^l%YL{!K2})AK=(XI{P(7jp{Zs-bEtPl z7ybJ6>+mxUHOn)#r2+jKp!bROVa$GJ|AVK~4vF3K! z(QKhtK1*dZCeNx=AWjO`MRs%H05JZ`*oZ6$RQ5GamF=bBik}nJ@Vgv^^sx-@_JLUJ z@U)H$Q>x&it=GgNA1eu>jw|BjsQw6f{GRX2m7H#gzqD|;CjW#7^`XPZ(zEx+`F<;m z&{vQqEyWSo+6MEZyO!N@?(;XPO!cGyAI~)S{4(1pUxmq)A%~7++llSF3#kxYnad=_ z#h>@?OM6IEE!_r*S&47A#^sxmSCdWehpVsRd`5vnc<;NrIq#9b@ux3KI&3(=KKEmI#msJg>rdNm+BuS3w^*o`*d~OGq@`rPLjsu0dcU`VMn(q;LuVuj} zV*Dlj!ln8<)&3MecIuTko+HtKG<5&$Xz+ciUlIa>)W2KGL*tS8P(i>VK07Hd-URL~ z?xgu+15#-`laxb$UO24RgAa30MQiZrdOQT|GWL^x)-memn(MMW5tkvUE^@&+=Mhs1 z@RYADjO@f|#Y@2q(STx{Qck_o@GMU=&S&|n=i*aV;bTNBQw~FvLEgr4Y$<8*N8gLA zFf@pMyY3hAUJni-x3GJ&N)+9`-8=7UR0G#*|KwC$bKFQ2HI%RiSg=t|+4o`BT6iX! zb3LI^@#)~c#JqO)Cj}JwtiQX+?Jy4UsmF|pQMZchL~6K^h=>V`Fe_2neb;ZizeFR+W5HlG#sJDGgzq z9cz!|Thy2?x|@=ReLR_W{q}lD@(-p$$=eB(!wT~uOHJX~K zV#9092}}g8aTno0XK5iG8&<9~_dmVVG88#P5813I(MaD1{Y0A7%8$C4si*d<#ms+i z!*1`a6XmhR^-MiMFzi;Czv@MZS!~~~g2^wm>LNn!2=NFJ$i`{-E_r~O5T7r56a=fk z&(1M7cjf@}=RGQbCNxALsA`|7$Mr`_NB(PGl*_88uK6APMP8=w1EUqeGt5Yr1fdncIK1gsZfW&j^t-lpOIMD=JgQ>3ihIcyp#lXy81|>^Rpt0S zihrrJdlVoTm|XU7^>co?g@j3+>@=x&&V4y%API5oqto8d`-?&l^)I*=ASF7QcW$oi zLDeS6O7T~yp;$)>LDM(yCZJ$xbXN$UeHT!~J6yBu07^|MzvnrvBq#m|jA;<>4l0cu zITHTWaj@7@g&94e=|YX4jyGIGBVL$3%EAB`HPVI$MKZbU{Iz9g=L|d_(UNiX)rYgb zLxsNpJ2mBnY7q+v7q+ph31a)-L~#(>6;3#>E#wY%JqI`xmK~^l!-Px%!%Y! zy2E?gDa+tq_iPEZoTc zQiQ5KO0H?00TgJ1H+51TlP{MlFKgSadfRtHpFM~be&urI_4@Fyf-CE?cCRa_m}(}R zE7P73;CCZbq%ft2Ycvri;aP^c2Au3f=Pv6(j0%o+WZv3Q*ve^%A0CY}_Sq+IAL_qQ ze+?Sib2)2R>|o6Pi&4Wvad1CayUUtk`A?N%!!clqz=lzhMQ;EV%{+fU2l$|7h~D!t zrN=ak9H_SSvY(79xJ9Gvy~jVh4WUwVRgR;KwNmIBUnZG00TJG@mGQdwsk+%FCD+PM zV)4B1IC#H>>b#qAcEngYNeBWF(iry5?W1DtZfzoFmaH5zKufGgV(vKb@~H?rxWAOK z|KLPg*P>j}*4_=#&i^t1$RyB=1;(mQD#85|8aJ=j?Ke*G&+|!ebyyvrJaVLTTqR%q z$>SjPF(mH zddHOf*-2N4K?{d>aEGxtfkVO8d>x5^&e^F_~w?lNlotIq#5A-}4h znCJXtcVC?liBa;ya}*x3VT?v2OiG-@gCa?`>^)@h`I~LQC_F6={b>2?7Ec{l(6Wmh zFZSZaiW=beJwawKEDrdqI7{9O0xybzN1h}kHlsQIgaGpX&yMD1-9)!-(zc1;%(D4U z3nv0IErL_>c3dDe{h?BHcgN@iPs4&HF%p-q0xdu-iITYyR9u58!=b2&OW0$)&^~2u zZqB%xyr#VeWXMtKLf_S<5EW`9oe0Xpp6VDng6>v{)1oNq`g)`eX425~8um34Axuq5 zeLT}`v8Zq77VC|5Pp?tSjYVOmr%VtP?onIKL^WX2!F{HtKn5V8eb#e``%Q@V+KC3N z^f`#l{LK(17gN~~b#69Q##l%g-~M&_WD+U_3;j7mftW!$DmFf4P=^3-=kLz=*BqKOW|79jf97799c_BlJqZ+>(bv2e0VJ%Q>cEgbwgJy8b3(I^I9 zi?yj{*&>^++O5FKQu}?~MToS73jHRADK{mb`1RB1WC;s_3CmYKLSDC@D6TfSNcCq? z4jIg3fudhKw4LAHp>&)O8Uc|#k(Dq5b$Pf=5r~42itrDpm04jeEE@vDoBHg;xNq89 zz|IJ53OtOphjKp@`Jer`Ek;`(2`zX4YM#eUgv(b_$lJWBmn%Vx>YHmrE?n9iA^-Us q9Gck6NH*vlsSSF4V|Cn~sK)27(~E^Ew*F5CnrCQ4od_ z{M8uK?uh)$!&qAlDsJcg13_5myoRc&x6OPCbty~FRwI3=%d1zS*xchzLSc*yQm?YK z3PmknY314Js-hd{>{%(ARKjA?uQD^l=*M#m;EXca?pHm3Va)VAmo;WWjONgCFacgH zYa<#EZ_fR2%g%Ak_VZ2jD6pxucO9PC91PqX@FVVj;C!xuL;w2;i^9EoHCuM>I4pqu z=R?qiu}^h`YV3@QF3C_Imc-@LGBTi$&r&D>O)#`GE5w8lkk7+J0vh+CD6=Az@b7O7 z(c;tu9tAHUW%39`#8K&{T-T+Mk5wDLoWGmzZS=e08$uYHrVciP4xSw0Ime+giy?_P z=UM(w^C7rns8aXe^$ndF>QcUIH=ZXXaK)YzAs1h%HqUdN_!2igSS`1`G4Jdz>$7sb zE%_`nyRCm2nxNfuQR?sDM^M3OBCYb*PZT_Z$e>5&+1?^);pI+0o@@zUCNybs&TS=B%U0o5X|2id+5HI@49PqtJzPH+u_@)@{#7yr4hQxlFwIJzG>v>?zdp{n`iX zziX_BUDAVgAoqzN4(O2T3CQ_74dM1!)77CGpQeY(cV|q`xDHh5Dzu606~cr>ad-0ubwdfd8jM(6`Vo zFXm8?gOgT27af$KxDVU$987Xh5n}y!Hs)2MgZyTOY856s(riCdrC+XeZR%2u*M^uN z&Kd!R6EG9h^(NsGmm92oOeC;)dp01DWUJysi(9UXJt{#>m`e3K`BC~H!8Y(H zcwMtK{)E)6UuOnOQ%%rL|FC=OiAo)) z!LKy$o&Xk=E`^0ZGLIZpvDopPDbJyR0x!58B*DSWDBG8YkSQaS7Px)$KJ$J~T40#$ ztzR7NK>^!qAJ2=VTxW3|+!%iEk@H)SWQV&z%i(#jx5?%6j)Gyg#ptjGNgGT;x!$Zx zASM_$KOUCGySHH)Kd>@&&oBSZu=y{PsDy-`OMe9&m#hmZR3tS-E0U8Zao38;V*kRV z0V)2(W!w|hY>)P{RCJtYPCZhSm8AH_NNB3YXoLe)y`9VI)k-7$>1$?Hu~^$^(BAXz z?T8EdFn%0@eYw)nxHYOAUn6U@5ERxrG;_-xJ>A!QKFxOb=ga9nZTcXC-8g~WteeGX zoV%ClR{;htFxE1utaD7pFzsM#^SbkoQv|s3tx4v_^UhwGPCx z1sQFw3gDsxzn69R>zBO4fxo@+X;03>B=r~Ky6CVtupVWXZ1&op5RT?26a-dltE6nT zg{p8h*SY)>M8(jZm|#UQ>YT^HI0|+20Q1O(viiztLbTHIvXbkn$4W$@l1;P;PbzE+RY9@2rx`j!*nI7WsTNE8+<2)AN9rM`ZrG3`rPhkou*p?DjA zc{$WqaqIH6Z?DgDoW1k<;>P_$huv4d%H*Xi;+ZMbLuO-dWrFr z*PJCSuOf$Sz3PFD7!4Pyv5iki@pc!6#s1ea}8o2^aM?(w-4;fGpU z|6$8ju-%@bFcxQFllLv`sI&t||3NPgwAzA$NhXRE*)*UQsK2tIXgsef{2eioF}h0PXMA94Os+*lW|)A`}9 zGd_o)K=}(5^2O3fK@%$i|3bA;C!Gw#pxVRNCa1On`PJ9ABSlt^kW>z~4Bxs9E6?{5 zf2tYmv!FsX9z{R!hjuGczOV;(f*r*~igh#4Q@g*JYUnTv$~UU@XO$%G()7$;wJ>Iz zI1bev?C&&yY~glcU)r%<;{hezH(4D6LSVlx2#FgYq9692ak4yu&c7@ixHIvHwkJvb zd-;b3E9kgoDR%jZ$}a!>d*a=1K@0Dv>?VsWN_a25y>WZ|sVWcZx;=|MTW~I83>5OR zv3tlAUC);P!%gDsVFFlok*Xp$!@P>E#AX)M?oZA$IxxviA>W@7^Blk!M4ekrH*BC;Rrf1zH1p48eLtDRT=;{*Se3dXromV&b{O z5YgGtB#;X#pvb@66Gp&XHw3Zf=kVdxDfBCDFm5#_D3IBFOTY+?uoS6=zaqgvcObd{8>Mi_iLDApgm`o5mf-`** z`|C;}vO+y8`|C*_j{)VE2l|~B+-N*&S`y?bq3gv4fkbC8nwOJWpQ=O~N}CLl2FEEo zoGxSOy+xY~Y05mi`v6c6Bx!wjmz%rt%_P8}zvixJVlBa-KdwZZ%+vH-mUljPn2=|Z zBRu54s^69<-F)L4wMa4{n1brsTwj^lOEL)QvHHW34M7Jxwr5=W7?gb1NJ^Un4+@Gu z=)&pllxF$@3}~>-*xcpwMtxNsG`)mM0^)ICG`ETp4RC|#D zVJ!7tcKco4q5SFnRBE_%hvN4Z5flRrzJO6+gdM~pv8AbU;MeEMl`N2&UMo{BWIRZF z7K9$4Call?$aEX7BTpu|0U@dO_C}XLk2s%&ZGenx^}KA`OPRwtDPAwj1aXeIB*-qy zAdjDLYk%G97|=N07jT<}%{creZk`?al<2z4_ukvm#8P4N*J_ z5oRg@sBD9jFfP|Be*5niv=8R{D>G|q2HaU{b{49o?7y(gLoDqt^3S91W7B!SdTHkv z7CQjBM&0DNI4WjP`wgO_c_LvSb(@x2=Db?ZC&eAdOJJZ0ES{Nt+)% zy5}~!%7;^d^au&q8SRWORWM#3x+qRp6BD8U!24qIYJ6`h;bm*C6 zY|y6x!df&$htj_1EpkBq@kk5W(SbBjmOG>SCJV0aRy@>_kY3ClYy{?xdFSJQ6To%* z{=4)?x)2LXr8sl2HxuBcxP$?xzAXMF_?tWfzXfZ>{umC-98$z7YaC{ zj7l9$i*?*6XfZYUtijyK*fA&Jgq{nji>uX2Ql^p}n-hKPDD~_cuh6(N^V#O%xLnZ6 z!!O*aXPU%J-K_46PTk9zM*1tB@4mx`p#u=;d?8TsxU;NdZQ77EKS3g(nEZalB1{>4 zGu>~b#1KpZ-Jo6X*KnpA)%yGnpKD}-p30N z?~dOtG-g9B44o#>Q>i#karpN!@SIKmYp0`v>r(FYf}1~?hZ`KvZ7gdl=`JJR+4ko< z3K*RN_&%hbVxgI+wti>Saa=iT6pKX}aeJ9dYLYC#mvy6GtKA>XeC4`&{IEM4RDEyJ z;8fkgw=BKLp?ix%JX2{wfm%$`4s9gxlWUFEi}M)-X#o>T#*ousE=yL18NQz!V@uz) zSV4d>M3B(-Tp0LygZw2+1-KN5z0pbGY|T8?6WiIU?3x zLnF_$a@M#AXA-Z%60g%_iK&bEf zOa^d8VASpG=rBrX&VbX)#=QO9y(C)nj;Oo_viu+^ZBEbm)>G}3M}Nf zDGSUBM75M5SF%JjMkAHr1?|f4i}+D4{2ud1ayG}F;;aP|suG=i587B5OsWEQJ5u@} zL;cBU{AJhkmzV4lt~?gje>w6x*5Gs$^@}QJk~V6cg>czVG!3Ki4ETB#2Zb-Em;0SZ zu6Oh(6UY0e=ntwAW{yMV#ny>cXfMiZ9aX}w#m#ek+^(V#Ah`zXkXcm1dT0@ zHAhpe0?!q|ofo8O0Q6u#YDCynQfWI*1Iq`u!*)v}A48?^P3b_g$#0FvMw?!zUc&Ew z9hi}mp2lGLlBO^HBRwIv3qW-axtoeDVB`-Ij_Jh<$+`|$W{J*zN#lD-OggF`Y`1?! z0a_@`uohsr2qOGFS33x+qbilV^Py1z{*Q@@o8q2XnAbuh3t|NS-{+xmJ)<80(*Tjz z-FVNfb|s}v76g(Rx>@GxTTBNS z-sTyUV5X&TB|7=sjH1`zMq!90zcPf%FXF>V6oVi>UqXO^CHNX6G+E#+2F-;&-LCrD z(Gs95z;FnR;9}{sU!pL-2!kUE*Q`uApMkdp@)tZx|8PLdDHYR44ff>Qw{HyqRHyJw zv}5&MncA87<|r|#g}yS1KP%!arCO<&hL8bHp3UM^cFvO))BST zA{Z@%WKZJ3-Xi6rR3*P_zuw*y(;`~42gw|a&01~uJMlm#l62h zt8w$D*rf`Wn^4}xOv;zCx5A!1dnQhhbsLI6UJA2U%uCbM#U6o4V2#rHr^3>rSC55t zH_dqMVyZS#K%7W$%DG0go~))_tlKFTr17%>Nh6YbT?c&}{pvX6bgX0Z=$jv@-o+ia z0#jEdLU99_Ds~7+ndT5i!BX$#Yt}(~>rvP_(AlW0Yd0Tbt_C&?CV|-d0`k}A4%VQ= zx#O^u@Q4A_mLx|{L3Ko9b763~4+8}S`7aEedt4oJ+377J`tB)Sl!isMe z{^{!Y45S91#rD9YMea~lq|v$v58woP@!GU=Pj!TP3#}d)q@4TRCf(5xE?E}>%-w6v z#FHgn(3x!wY%jXLjshf^GTy)$>nH^LUW-F1H~K41aLPD6EWJ0)VZX#SALT?`O?{_)^}p;O>fadGmZri- zBsWUBuXQQP7U(1|CFYwI$V=%6F+C2#eW+oAGS1X-9)oQdG2xJ1?hqb&eP=FHolj|d zqHij$$IPG`i8DGbSs^f)D_OCS0t`;DDh2|2iMChWEfC;hz4YQ3EDX|SDay1K(-4f~N8(eir@ZA! z?9`6p*i?ru!2TbkTS5zh?(`34MF5r?Xc~TqOk-oPtvFRF0`lmP!v{6M5N9ZXQCJZk z$$`>ERCsnop}9Q8_x}P33;#qiRaC+qpebKtN1i|g5E`h*!`bi9g#sQNB zP3IdU;bVa!&F|sA%Wv?!@m^akQ$EJXfO4Y-@OSgcKf@@h3;(2n9?wi{DHHpd)z?@2 z)7&Oam{5#M(SYuQT+H5JSm;odFfPM4+(9QdlMxG`26FjxQ3(kO;tR4efm6m?@Fo!ix(}{r1Tk>z*s;*hu_E~G zwLe<1z!W`k9sH2Rf}%RYO{(!(?IZ>T2`)aQW{zM-FVo!zKCe92i76Puyk)%VixTm>HM=XVRm)9W%U#-hN7Jr&|9)io z_6B3%X7%uS==xPgd)D9(#*wpu9#GOVw_lk6T{|kZ%4<1Cy2?8IpBqL6FiO9D$)x}T z)o_GQIU?;~cS?RHHUk9CB|ooG|1!q9IJ}@Af|)m)^ZIxBBwK z7iJI#E@f;MWf6wi8Ujz{y_c|B(Y%q`d;u&VRcjB|1(=wZ@IY=wufAzuAEL}6pet&wx+!}x4lgtlmygXUyV0ZN>Et9!0`z zf0KA{Z01LaTk?)!;^{-XKVQ}z)Q#pY0yiV)h2ixXe=2z7zW=TpdFgl4F!09sGkFPR zf~0wWg9X|VyrJUG)bOAAApdVvgl4E8udT|%1S|oFJdde%{QN1bD_MtEQwrxp zIiiqaoyd^)Sfu!1Me*)d#?}rZ%77#lJSem(cmJ+0m#CKU%uSUt>K0TO#petXiJBqy zhf%GoI_e28fm0OL)IfM?3+`gX)uHd!V#rz~{oElXXnHQ;%FkA->p-B}b1`Nz_Qe zXVWSSSq(siY-~TNHbD`S`1DQ)t^!TwG%O}NXH}gVHmYTUeqK`F(!_crwSa!y2?mrc zwR`9=$QR8Xz5w@7pCBPq&Q0J*dqYfG3l`8|0s;H*#+dr z6}@lGDUOOcEOSK={s?3eCZ6cT9$bTwe>9VY=MxF6OBVU(8KM6?(}^d1T(OuJh+z(P z0jk|pHJ%-yoch8~O)OGcQnN$LsGJe{CRpR23bvgCYr|GEUNV~$KMuB+| zSTng~-3S$wr26`{zTW?BWr;4x`X@clx$a!$6bO;)QjYE1F2gp<=axW@PuGs-^`1<0 z{M&#eN=5Cz8%XwBc;7T0G+R`8j)s7oT=XBP?6=@`(t%v48o7UXX}OtC5At@CkK<5* z4KjS`Efu#v^#Mb5>XPOyCX^$bc!)IG7#`_y;MC*Ik{C#3_vc$yQ~W{c)lU)r$Qj7W zL~B=uIu$iUr_QKjnC^Aj)J?ouxdd4c+y6U|7k3?)AVuL3DbmLWRJX}XR|_r6;MpG~ za{ee61H!*n=<7~hz6N5R^KTmLuFV)uAhLn#PhSGv@xk(+oyI^5&;!+zZF+n)R_yB8 zr4AtoxRr-Hi$uO*|5ds#t*y7W|KxC0qcXK3za7DOM-;`Q^$@LB>#QFgSOQje(0Tsf zvOHlEUDJ;OjLAb5BIF${yssLK@^w2K#~}u*KABnPiboTMADY!+ybZA`DBJ-gyp4GQ zr@wv6BIDFeDr@GI5Wy|dWiw@JVvlF|?qv(3M&z!>Ny0u~P2zpbW)h56|11|vGf$Fqg zPm%}z$A_TY#w0ZnvxE)P(Wc`aVCix>F#JJ;f~F%!Bmd?gsGj|cjj6j7yc~+*CU4| z++Ic!Y8Oa<>mr-i0Esrb1gtCNBNb++v+w#XV9z;erEQZ(GZVUL5`o3LaS$~W2{VT9 zBE^xP7fx(E#aV;h3TYF)^q*m1Q6owwaU80!L+;Qyv0v>~yAfR-BT7#M`zqDWSi$KG z&&{4-y!CK~DDPI2EX@e$|1XOC0oLn=X9#W$kflb4gHst5`ZO3r1ER_PWA7M*!Ae|x z^Z3`OLhv=Zo>@7|zt!EPRDvIB>Gu=9(XFYpW*|+z$&Mk#gD-Is%O9!uMxN=NRBevp ziDah`V=3K?Hwi7K2HMlv^sM7^sO4zNNtR#|<~keXw=wq-DBV*|-J-{B>$pQTX2v>G z6z+}I?JTH2Il@zF-^y0ARDYO5B~Y=rW<{5pK$^SU&6)%vMTBL{3xZfgk-GpX zp*CGK~5RKs|-6z zZejQ+HkYgdj~!4?r>>`!IWeGAFhJs5Dr+;$emFrIj)X?+tG(vyGt{3LmDnhKqO$w> z#{L&->61&NmGFO8O2oNQ^AJnaJ0~Vo3C6pU!oA1L;&)Ny(790xJ676r@X{9>&CBf< z<3op!1ji~_?Cd_n+n!R_fUz74`DW-9{+KjqdYDMOcot95mZHFpl*+U9lOl4UDvHjc z%W}X08Y)0rFLJ9&?gDYayQllVna&zBE&>%6?0!v>8_RgYtLEc#cBVV;0Wgdl#L638 zYA}}lJIkgFP{Jp6^dOB^8>b>n3KG(210->92;( z%36!%BCgAeC~R}x(vd^dgr#3vCzyjh5sxDa3)%tq&|v%LPwaJXo9|_Y8NL+KPiMo9 zLDreZS_qjtq8N;%`yopnqrv>%AQ-TY%9z>@(BqBKd_(jK0CtRudfdn}g4+5AH0wtf zCW!IO%a_(`$Z zRr*ev@ohxF98oApSVm4{CH=O4ah=jPAl< zfsb33LICTU=g*(l%B}U=Y30IuPHO&*)TEqnZm5{^toIaHi~;`nSQoGpH68~oee$YH$TO;~ z6O7V7^zWg*u?G6|VFFUz+vs;g$`!OH6VarRj}N50=K6GfjzI!4um3&oDkg8qripwmchP0`o_w>K(yuqE>{?>@N4A2(*-n7GAk6^+vv_wtGcO2nt zZ55FN)2IOJKORZ88NM>l1{gY(W*}|}rA#*Oo8M37_=!Ma)G7NfEXhIpTUFDq z!t>|YrZLzv<`%g_oi7B;>AH^K3fuD9S*THqUeL6lQMK1C{Q5zUh3(PZm$J8<6lp|J z3}koX+#!-a!z`r^)bOij#`*#^0PRZ|X9xG+LT-`toi#olV~a_$x8PMB2rcVB-Pt^~ z`Det@@So&I;hZiWbqGYE<%^3cqNm|4YJz7oyg}51So|%eOc$jf#zE#|7EEbi1l^^aBM1cHV zj+)>9U>^jiBxVKeQ$UkO{0&4(>oi?(lF!532@Nkx&+dVfd49apf$l)qAU3p z=sO52C@9#Lyw+B!+}dhH4m){vSn_{ZNawmIfL^Tc8_P0c7{U569DSgFF?T5DsK(dZ z;C&LSusu_-5wJ{{(6d#wK`xxlb?R)|QGy>_!YY8v47Y_3tL{#%W+rf_)ghc78qc1;R?m0TIu=fsf}0-a(e- z4s@5^IX$}UR?E6N)gj4-N;j%)^qkEtF$dy`lU{&92|@HvkxH0gK-e7ele7uiyNk%7 zTfg3x9fr(jo^!%|Z2a+S(}wJ2CC9gDiQGE^*NtRkoZ*Yrj^zvKCmDiYF!f!Vw`e@A zlE@TK5hMqv7Z%bAYDJL9%VWqf4W|Ot1u0KhNMzL?sVw_C=3XwQzClHj5w~Xv?qpbU zr5aiK{i%r=svNj;_=DGcm}9EXq>dzB2$KKlF*=ox2rSP&rm|=iiBMb_Li22T1!=bh zKvoAPQOXWEsYkAyjWtC^dIT*%$)4ZN-)4e(PB0S#pw7%;&$(Fbpk!D2^~Mt@YN+z{ zb3=5!IxrJZx8IUUz)D7$#pMpT;F3MMKOd*s*nB2`Zto1y85F}bbYt}2zk@Wm+ZpO2Lnk5bb z!w-ozmr;3(SZ!xc88CdNkXq=}f9`CkY|#e2rwqk};Mx(6(8@Wii9H3Eu|l4cW3M|T ztMPm{SN+pI`f)U9pGRw8RlvlymcRE1Frb6`kQ(A*m;a&Q$XvB`N~s1@M=4}GC?yJ_ zZwoSTp+;Ep6FTMryqdShyZ9>k3-=!egQ0U2rpt!lywCy%9O-K74vy{dA~(=xa)BG7ET=lw^ns>Y?~gr-sGm$ZhMv(Iz-EP1>~(LC3IX{%*I!AG zT=45F!z2D(h$%0+OU`X5LgiqqgScJDm#0$s<*wPe+^{VXmuV%OS-6K0d+|mgM^3^F_$|-r!wt zU=pG+51o4QGd!l+y(i)<1~3E@s9WD)rU>OiMJnIDRWZa}>b>Up{UUOo?tiPqWKGbZ z_v%-&$Snbi6Y!nfQl}? zs|R^nd<#mxH{?TJ`))W$hLVpEv{C-gOZW*&pNoQcQKA4p50gL~Rn2GihT_CQhK7{c zS{nKwL#1_=?Tz{H`TqCbRGepS5U81j(`|`?u4w2UuYvA4ctw6h4;mKpEYT{$Xxs-) z2(`V|3d0>knwTvkvD^9w57qjOeUT_RAUjR7Bi+7GWNyf{{(@zorbsok2r_@M+N)ed% z$mQM{HV>n~n*Y5wjfES5zfYH+E3^sw_cAw_Q}AKPdF^9qzp&o$>D@ni3Ig=6nFJ-0kzv2N!`e}!4iR`t#A+48?1GDoD{ z4SIhp-~TE-{hD&m8axhzn1Z}n2E;Xy{Uxcxj$Haq1(DhzHC#vdk!uAtn5C zKEtVi6PTd0m#x?-HL-=8?9sm_+f$s|9(~W&m-hN9C;@HE_fysR#0=-TY;P{Q4Zkc| zsW!t}2X0L?&4vL!zBN835nk>2=UTGnr9%&WdL>Z|-Se+~YlTN9`AjnwOArF@%Se)O zW&>{Q`dr1a#ZRPwXEl>0E2H|@h|Pra{$F3pJcdSUWv?}aOw$n9ZM;!es=XTZBx|p` z>?B3YSSGLLW1v;*r+iB_Y0+8?k7W|0MY2|(RUBMVfR^hL$NCiH4$^6Sf)G{Op}cb( zu!Zs%HMF2?iLL}Go$6}D4ok&OYt&1R7qQX$BXY@Hgh{kP4u4?R=jhKTAz%ov%2V`TF=3t0lw(2iJKvM3SjElCq1j(oJ@6MNsF{)8%N;vpD|X+HOqf9a=%qx*R8;gw z^;wFTlW_WbO`_NQrB8X$p;3N&+w0PS725Kbkt^3VV^)qS_VOH7%$iV|j02~ z$ny-P21y0^HK0unu3xAYIR4G!`?zk<75s{mAHIpv*xRSEhHhN{pZ`*WVL`b3cVdCo f-|UD