From 5380048734733a88c0d1d8e12b384633c2d08418 Mon Sep 17 00:00:00 2001 From: buttle Date: Sat, 17 Apr 2021 22:18:36 +0200 Subject: [PATCH] initial commit --- LICENSE | 21 ++ Module.php | 16 ++ README.md | 22 ++ asset/css/archiveOrg.css | 7 + asset/vendor/wheelzoom/LICENSE.md | 21 ++ asset/vendor/wheelzoom/daisy.jpg | Bin 0 -> 84256 bytes asset/vendor/wheelzoom/demo.html | 14 ++ asset/vendor/wheelzoom/package.json | 23 ++ asset/vendor/wheelzoom/readme.md | 77 +++++++ asset/vendor/wheelzoom/wheelzoom.js | 206 ++++++++++++++++++ config/module.config.php | 28 +++ config/module.ini | 12 + src/Form/ImageViewerBlockForm.php | 45 ++++ .../BlockLayout/ImageViewerFactory.php | 18 ++ src/Site/BlockLayout/ImageViewer.php | 86 ++++++++ view/common/block-layout/imageViewer.phtml | 36 +++ 16 files changed, 632 insertions(+) create mode 100644 LICENSE create mode 100644 Module.php create mode 100644 README.md create mode 100644 asset/css/archiveOrg.css create mode 100644 asset/vendor/wheelzoom/LICENSE.md create mode 100644 asset/vendor/wheelzoom/daisy.jpg create mode 100644 asset/vendor/wheelzoom/demo.html create mode 100644 asset/vendor/wheelzoom/package.json create mode 100644 asset/vendor/wheelzoom/readme.md create mode 100644 asset/vendor/wheelzoom/wheelzoom.js create mode 100644 config/module.config.php create mode 100644 config/module.ini create mode 100644 src/Form/ImageViewerBlockForm.php create mode 100644 src/Service/BlockLayout/ImageViewerFactory.php create mode 100644 src/Site/BlockLayout/ImageViewer.php create mode 100644 view/common/block-layout/imageViewer.phtml diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9bd6b00 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Neo-Inspiration + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Module.php b/Module.php new file mode 100644 index 0000000..9280d3e --- /dev/null +++ b/Module.php @@ -0,0 +1,16 @@ +sqM`>%6m^DH}(_y^` z)l#dvK7D_`*XIxT+~<0p>pJ&+uCso)pXYv@$Nl%+-%n&LmZlb_WaJcNWUzmQ?C%j7 zt1-em@G%)V85J2Bna)4eF&VP~?12}Y4EE}uhWzgzGHIKK;r_w?(Qufs*JEKzTNATj z{}6wL$jC^=fQNA3|1}i79|Zs1Br_tTp`xRwrlO&yrlDtIWTqEjXJuh!6y@b(6p$2? zla>^dl#o@{QkB20sVE_%Zmywy&(z$)Tu9UwWMd98wy-q+-yr0)w6x4j%zUh@d?rfL zN+#z2uk!a58S4#-XH;NHa#1o0R&q*K^1l;gf@EYA6qMxToHHJn~y-LIEE z-{87q40~{_iCJ&XA0Pl8XADNs{&dGyGe`KMmQx`k#%J zf>MM{*}#s9UDPv_LnYqu?*4ApZd0~Bu4zXtW?brs z!;W^xgLGa~i8O3?Yta_SG071soQ|$Q_UkwA?p#8BpNr)?@WQaJiQmfi{+p3|QQgSn zJ;m`|^$W6A^uFnBDf$p8#H0u$RH8rxlr9p%0NyA3HC*0= zrBgr|(ek%tgA83^x;?DEkFbUhSNVv2pxp}Qu{W5vJfI`kIN4Ea_sFu6_u>t$A#8^x zfzsURKLSukwT!8m=Et+HT8zt#Hme8TO+i!KmU_t6A)2(Z9eFfX=`ee1wJpRnMz+Ov z3`~aD2)*&6dl1u{P?TWRHiY1N_QSVS07at+mkC(FmeQ~?(pff?`*6RRSu}Aqa-R28 zcT$>B>DLFKTB;@UW>icXW=hPo+h!vPQx-88m#B9?#hZ5{M>343XFFP5=p1R7YMYy~ zW?N?d)DJytWgNP{<<(iAzTx!hJrwfBJ5ly=J!{@Hd*XTZK`_|YY%8*&L4LpR^teSV z_5Fuq(hO2QxS-u~KIO+^9LF2Orw%gX?9h%9X#&cRwXicrJV5X-8AEHOgOPT=ZO`yx){QrZ&*>a44uvdOKDNr7Ea>x7TVr(QDQL8D5^~d*DEGfL9ZV zd%L&P5BeONT3L^-m+D4T$7M;q(3_~~&MuHMCSj9xd{k4&sEyZ_}^H)ZJ zV~NuDZUY)9f9*vsvCnx1%9eVHNa1)&k1{~cKQhY@O?yKmQvbr-h3%r?YUt|N(R~y{ zBz*DVkIE~peUU?I%Yw=DX$K}k&@7FCCcmI#QCc`g9 z!e7Wy-v{8+V@72BC;}*2&N?Q_y7Z`6+0f$G0Jd|REh6>!^YGpg#sj0Kpvt3z%niSX z9IhM+3t1U#5nzsAn2>z<>#KD7k`~S0oeS%$@D@IU|A>!92rg6JcNAn0N69;;$_san zy}mUWs7cJKF9ix4zArfmrx3V)R#cwN#+)?M5fNo0jDRG2fZoWq&Ith9qcW3c&N>2k zc}S-U!)@VS+oi^v#DY7|y@?dGS&OU@cF1qDwQJNwop&KsDei$mLnrc6pmR-s>;RXd z7=a$(yV}PK$uHUo`DlY^KU11GHNDkn$j+i0Q%@2LNPU%7c~qLMw!^g46wHK$I)UHp zX$(suvd+RSEKu0|qBEu$0de5j;C{ShC;CZ~x=8Sa+1tCZ9^B#dC>}F2$8+|gK3I`K zf!ehcm?yvaN6B!VES!YPUw`wYm7rqxNNoKKfdcY;o>~Zko?n2yd{T6t`0$T@< zzqZ&87KVW1Shr%hNa_cckErW+3z`*%66X3ivgRDahIi4`J9bq{01s@qH+nDptQkH> zy_f~i-g*Fg@6h$K*+b$vm3dX1U8dV}C%luj?FlkyL$-85^r2&FLHJ8VS#o3!I0thd zHh}=WKV)$v-~ZXTqpWstoaWgrq^4#D6`7(tTs}m{S!~7+~)bxpzI4!^AcnC3tu&+0(nPnPd!(? z?CwC`i^kFy!c~G?B#mbruCkg3mi{UjageD|c570nsnj1~1yQN0M`!c`ZntGrTvIv7F;z@u{g zq#$T+L)r*RM^=2@z>!1YC|TU;s9iiT5)fi;tQp&DUU|^$D$XL{7%%5FP=IEtpm498 zu5&|nd?ns+|6SM#Bi*?f>LS(?RKp8Jeu>0eimPb%r-$)(HDxHZ^JDTcwJMcR2bNcJ zxM~cNxb|@1fQC~9KVT>~9Fn5te%uO5n{VAO{^io3t-^%OGf&v?8z@WE$_58>ygrSC z7*bm8JnDCq{4c&P82P$8F7I?w_0RI~>}h9)2#a%3UD7jeMA@85OJmXJqkawin+;L$ z_*?`YSk9+$29f=t5rxuBFSL6c!+;r_FK2VmGrevVzjnz^*ib11P7xk3Bk@4B5L|wI zoalw6waAMKnJ>Kkwv!k_z+{c#&Ugz7hbHDJL;$AMBk|66L`$3pfDY!8AL?x&3_W`4 z7H0DazG{(}K5f<*da&VjW-+=J3q}rbGrpR%+}*W3Z{OnaV(74c_9;aNH%BW5n-_VRJ!;l5t9fA*K(TqzA>E&blB$FYp?C4^+H)irgs zTx0yE>hcrC_(!t~qZ?u}2vTJ;8+t8j^Xa$+0p($m#hR7vo4vnec16{bGeKzhph>wa z(h4O6kl(gV`m~(gmORVCjKoBvkK$iMx2-TZuqu0s;vHXOe2iBa9L0jJ-4B(P!;g<4 z-F^di7MA@0k8;GYO>L2sbAp=t(H^;sHJFCZ&qt316nl~v9Jmz!k|6?Z#FRf-u5SN& zvFh;MqH<-vAc?Y>_85AmDrq(E*5Wn|D zb3u}PTD$1f@+rqhz}N<&7ISXDi#!2q`+YhZ-0_t!*nH;80m1>ASE(LOP<^q9-kQWN zZroYFts1qhfyC`q&TMcH@ z{+IZCOj+0dew^7$1j<@>iqHppU0e8tpOoL!l$!a- zX9a6oR|@P>V2f>gZjXgKlVlpw{mu|FV%d##0LNK|5sh#ypM=H}t%MIPIm$ez>pcxJ z%@$>(8VBn=H-yu(V=FZA@+?r=csU^0)RK|FIiG2HD%m84;lfVS*wxw5+Yv0KnH zFqx?GeunU;$LX`-d$aefH8&lw!+Vo3MGv(U36)XZBdEpQTV9&GRe!l2z~D9r8fx`1aBLsivcZzw+- z(_|KLtHD*s9@(z|r%T2OA^0~j)lSwnRn5l!W~Z$HA{Y5A1|jpJUnLyVUr&+A{#po( z%TyrH7}mt9+cUA#Xj}krwcYBGuCzbwm|{dJCFt@$0OWf(Wl~Yl8$mnihDl;;NfjMv z;o6|*Vm*=e`qXRYLUNk5GLOpRmbx+yj1+9g3{;4G>ySP#Aw8-Y2w|sv|fq*@9rAONBc)&aPS#*XNe! z$Xe!g-AZraAvugT)!OVf!@5sAK-bl(PqvZ9icW#K|4lbNz|t*i)Y&7rZpN2IY7 z#kuS1>yVt7e3yo;bWwJs{8h_>ckeKI7Ih7|y}P4*+{~4Im+^ud_{wm*Mz%`U>i60k z88crX_4}CpYiV;B%^Iv;wfyNS5H>k1+zT&InH}kK?T6Q@E6&Z@)6+Ir?uSv{gBb;J z#Ax+#4Je%1;|CC`>zMe!VHwc}%NGVS>u>g-A6Rm}UM<@z(356E>8_?7*ZYVBVjfaP zD&wW>nSr>iAV9qht@2q*5kgz(T}-@f{Srb~`S_9{K>q8vvGq(3A8yBc>8 z%JRs&K&ufMQMT-Yek}!52N|xOpY=33+>~V7(>sjp*^k%M9VYmZ>m09q8tVhCXCP9x z7$>Y|IBzZ_A9dep{o%IlDQay16kZU=`DJvnEiEk=(eVowNO$eZQwpFIKn`z0cKM2U zS?{fKyz5aGv(S>JS9wcxO^nm4>#bm(?qcuR3a+g);)iWin`{@ErLmDisc_&x7A=mfdvUGC~)d^1X9WIiRQa(D#!n`_h>Udx4EJ|-F z0Aa-rH>;C|kCd&M)hE~#DC$hH*&;X`7%Ph%TGV{-#p-7F#DDlkAY!TTETnk^5J@SX zg`4IjgAHGUcPV`2A(B)l)~$YrF5UjTsyT72D#NhjL?LJC!Z1}akQy6e{~+@VQO1(_ z%j!n$>?tk}^eQRG38O$LlR`M#;4@UKH=Gpn5y82zhCu7xGrgue--fcoRNnt)T5AO8 z*=kFHyBCE#*0cdMe`%xTy zX`^Ua4c74^L!JLKYl5z|2`(7oZ2N(IC%2KR$;4ct|6tHNzkDQG0s8KmJzh*8&b7V< zT}(!TkKUiV8V*376_2UOJC}u2dB0UnzJTQ_D|5g$BETi1F4Dg@L0*myuk2=^Hn2_> z5p?X1&kv^oZ^a_VN&lJp85x=_(wv0f5CZ;eSX;|?W)Qc0j2;_&ny0KJHGtXI4yg1! zbG^q|UOd%YxWF|I+iQzfOOIv`Kv6X2Mf@czN?(}k_TcGr@R3kv5dS_=pj>I0<~;OqE4)nf{BGW0s%AE+L_Z0OjBYnt3nO94{XhOhn?#K_OW0jP8gBA$ z#k97l`ntW<(_LY)`Vo!>G`+28+b`)k9@;0}@No15*cF^>-M`gBt}rPfFFLk$)Fx3> zLBB2B)JnsewK3mP*tT)h7V69780;OG+HA;9DTt5FRQhmKwL4o`+5}#)5Y|nGJL+ZH zL@dcEd;L~yPtV;@pV_B0x6%dv3*5?88MGhqx~`b3xN-xMDXkXsyFag5bDmq>^|f@l zi*I97rEeS;vR>&8I=*gKd9o|!cVO?$D|nB=8=imnBWz2S@%JiRU~;XY=-E5L!Yz5! z(t&4mNJ0$eVbE_iqki!X(V}jUd0D^!kLoeb0XdPzQS5`Q&!8&j7tA$5m4U6&vd+WZ z%s6Vh2Gd9f^MV78eXKoY5OzDkwTQNm7){+(<8UL@9)uRpt;orhQ~>PIRE>b#inVd< zk(@OHibfBSrpsR-8_r?UL)-i!o{v3;{Zf>*UjiDbj?m8@J4{Mj05=9jxKiK4TP!eQ$zh2Ec-X)*bWj zxqiBCk>^iUg=y7OZ@Qt_(1#j(7YJ$e;JLPhcg!`*5bVgwq4Jw{x;*v#2(r5R8(O3_ zR0Q$Pq2e_LbQapf71es{eh(9}yC^k-U3x)u?2^ki#gyk1yWp31u9uz$eNj@T;^IxC zlyzwx%0TCJ!+^$A@~B<1dD|yPZogQ4NTUbag=(h}%_sL#Y+t2F5Zl}T3il-&JSHiJ zvol~}&n1`MCQPH_)a*4?XeRq060f@>T;6QI-Kd^(T*Kv_^^Z;qT=JBG!H=fO5EQM= z4UeHGcEF0t>XL11i>T=v$$(_TZ?yJa)koI3ttSGFp?)jefpp@v2UFIpj}xdq*}wyM zKI$T&6K-~54;pi|WuV<8D_~%%g|2QCfVmc{<*zg01=Okm@D%%48>E_H#4p$-2T911 z30GQsq-no8z)M9Bq975zjS6bCCVTT!CB&3V0U9WLwl}M$pd>7;t+FQiWqGbo@Fgqe zBS5{`2}E^(uEO&}0W)2+Mz!Cm%go@TJ|n=)=Z^o8XQJrD|7%o{KY`L%Z4-h7pl42# z{`7XcldFsVRUw29=i`Z)VtD}5q!ySH9tqw&ZkM*O)WIYS9Tl>uc=`THiQcSk*4a z!u>w8UFei+t%Kc-mkx4G$v-ibin3P<;KxcwGg3gs7&)&%=5)JkEM|?#iCRwEPo{;Z zL}$t#q$!Wyr_fC~wtI zRp4qdY4t-#l25LZA6rc5d7#c+`dynWS_AsZZulJ-B!w))7OF$P9`~~c#GkHZm#uAq>N^4m_5xTpClG{H0@s_ zQH+xjd|yCWtG|8VV1Ns%s&{z^U42Xb$8LZ_^3qO1Ik26D;7<$ZZ>}ke6;b1>ogx|9 zC4CibflRC!-(fuJLt3V4-XsNO-*E1^G$x3M$?F1p6(@-_A@zCLVps?9z~&%XZE1Ei zoAIGoOw)DYHq01FGM$Yuq1vKkxXwRk>8&U@4X6neqwhWVQz^sNAax0)XKnl7S!4)0 z9>>^vNlSi(uRi-FjpHeXXN)^E-nBheXq6s|j1$CvG0`?(T+T)2kH75<=uv+dsNLYd zhz8O7eH4JM*i8iz?CdZrpXGz|`kS-eb=RH+#YmB-d%g{kL5~R^x}?v^L@(_nW{4Z# zEWZ0A!jgy1jW;BpJK?$+a7*P8@0xCJd)tW4gLG=DJ=hPGu%QhDyk)lXxR1+K2AD&B zh1(vJttOa%$9p!mK;VcjSxad_Ykz<6j1*s>4O{3pYe>@v8BahkYdk%Wys-ImhxZVk zG(dm4NI_2{UB`^b^8SSR7!io`R^y&5dY#BGE|KYcifvP3U`J+`CtW|3GVI$l=GW#Y zkX=-gqyiN&*rxE(|bzfYGy?kI!?PgBAf+ejHk>r@ArHM^28} z;mvRPKHmEKFFaT4FJX)F6{SaYj9R8a70ym-EFzH>RM{#;__@MF;gK|Rzjv-R1OUgQ z*|mu|(n4v3QZT!e<$7Q`Xxk4KsDf1Ui44?k5}d$bFaqv0Y+Qh_>qtbttCXY{Hy--% zhvt$R7~7d5Kluii9%aeCMASg;vgGyy$f!{aqGWh_O{FlLS`vx6+=J7>)~!13E?8%& zq@4QP0IBoQu_BN&9G|uLFs~qz*8^+`vd@@VrpX~X>od-!v3$D+Y%6ZQpKnS5AMWMm z3h!uC1QVT+y^FKYSzT3deU@3TP_X2;7v>?g?rx76>J7W+dO7u=Q+hai&tLNE;DUT1 z9aTYs++5WAz6kvx)vaW;kgEbwe1e7A(=;mLDJ~7BtU>EqZ3z@NNY1;;Ugans&0o4b zS4bOa#HKFjY9b<+qoAeCT4}&Gv!4rM?b>T^5{x=>~$E+*XMPwb?<$bH_>6T~&pxR~yY^KeX`2 z*BFFweGZn01;rQgh)&G>FPv3*cU+B9^?IJQ6meXqB|{#l^8R*1Q{6g@ZK=@YrTx+- z*7??P+OP~)Q{aH5z3EClgyYEpduseOl=iKI-?ZI^^%B7R8pRm&TYhGeHhJhljbv(% zperc3B16)?^kM3Ch4XW@14~nD6hd<1AACZ)B&VS?>QCvjQzV)TKk&t{4w-HlMOr(s zmqU#Z`49AxQ}6u*aOK_D7>gI%m6S%kw@*2q!sIoL5%V7VhXfCcK0-0kCEzHw2IhP@ ztMe+9JPoh?QyCOVVGMk(+(MS(W~;E6YBRBcX0A(1uld!sYHK(R@&+QLm+znZqY4U< zqczDL`Pppowxr}9g0mR=8ZS)Od7MTEdBA_+(wCQNom`p;fmXA%qZV$?Ch`$FI<=9+cY-n~0W|^a3j=6o@f5`Ecp3u@9n|Q9atiR(!fB zD44J=SDo5X2o|6!r0zb~P} zsB2WQaqRFGPZy>J#alTA zJE&uo`dYKoyt8n`yU5mPak*4C4-@3lsSRfjp1EO8OHNttEYcD*HU;-$6u)lEy^YaZ z@aim1^;$^qe(tz(8n1fPdR0<3cBR_Py~kiRw$OgSpiB(y4V}B&VgF&azA=&(f?UZk z^ob)XXflGa3g4L^ie6KP1`}tw&YkGG-9~O5)XLe`>s#C|g|~Z}*c7zr`VEyseGlx~ zBGdYe>x-+H6*n3!V&e!-C#*eZt=VlSo&fyHi=;K|=vaqZ)D-%{iv9a@s;^RLT3hMI zMgjEYOAW5i>RiKS`FAZWc)U104HoS#^s+@#_2a*t?rHOQnc1|DpT?r z9A{W%w;=03L}n&)r<+sK7;bdvm8E)ntTAJG(pm^}s654M=jyU_^JN{er^!p-(#JwQ zi|~R_4Qf~RM)6!>F16sIxk>!Gv!mfj76HK8+zkmE2T5?1U4movdLPp$9;{?&CW(YJ znmdBb$c}NE_21X|>jK2~3=NMjVGmAV?r-sCcf<{wt_FCb>GLw<-$R|2l5#;B8Ka5= zll~hG+=Knl${FOR?zhXKQN9h{qNeHnT8Tk)Rm8{sb|78A#Lkg!8`hoO64Wo6cif{z z`q+T+9<9Cc-Jh4BW=QZm%xGwl7QdfI4Ci?CqvR|Oy!S-8QI>o-Bp;QoymV{V7q@I+ z|Ng(Em99RXyz7qA__oFHC@kRwKI9!1oEMM`m*bMh>G_0QOLc|%;^f5W`mIUua;2!M z8z+D~x`>{(%nm^(19cxAEBA%ks`i^KUqWmgZ&ZQWTTVVOxHyfm zszU`O6r5O_*?6WQ;8$lP3mX5?v_AYq_^%cIIvu(3A=dc0ula}1jD^fVRrqRqhhEQB zR4R{+@#ClUwWe$l#ZE3fkNP_Xd?J?=M4(HmT>*9FNNxkQ2MArJOUSHG@G?tU>HgNn z){L^MvflxbC&FGfnm#pA$l=PHqkt2^*mH5@C8GGdWV2!X;udrAUf?lVRuX zkP}{*6MtQl49Z?Q8e*2ZgW{6k$3yjj!aO@A&o+RExL><~^-NK!VOg_^Pi*`Rh#EXj z@VAVES8Cy)jq>*Oy3O32J5It&yM5Y2n(fVxv-XMGSA_-X`@qL?8{SJHF3CC_?K)huvVJN4w|w%g;Uos9ux5`s{wB$=s_ zh1pq+dzmsCX;cVJeVebXPY(OCBif%mR!L(xvbuEZREwLkSVdd7E7&V%$O)qwIE|Pj zReea;*$k9&D98Fn6;?w!ciTzAJ%?L{mzFDUmTtA>K6_=a+Fqfo6QX#pWgw>>b%&_| z43<*Z{Wz?fk6#V;RpNY~IFPr9$zIq30RB7=TG%uXbR)Es=B=$w8hN#m+aS+D6f)x&HP$NgF!SltFsMt znchrAi}XXxoUaZJ7;4FX7dx2&1eJbkY+hKu`5h;U8jL>=It(KVoxu3mOZj|6$au8Y zpBX3)@MF3qL!3jNXB3e36GWTxdf{Dvv2_Rlrgv26GD#4UyJ=rkx+x0j z#yeBK&8RN`ubA0om3_k$7Wb#8%DG|lA_NOXV>6nqB9|=q4{M9o#;plKrC(~h?jqQp zv~x}E`fWlv@_Rm-Fu+`zp_9nJWR8+%Z?$XPztnR5Y){+LYNqGwZw2FnpjE#1A7NfH z4mAP$nun{Ug>IJ?JYD}@pjn9J-7x)?@QRZ-R#h*!F|2Z`b}f28J|d17vWDOh{}OtD zso%2al-^?4$R@GB*)77mgScbslkAfP{y99HsWbk*lmu&Cm^kXmza>@q|xD1T3X%Rh%)(=uzPB5y|gp$$huvKaMefm2y`($9kDZpjmd1?j_rN z?{+nP$?vx_2DxX51ruK4F|e$WO|Zh}yuoB>|EGwF5saf~G0~ z9_`L)oL2=P7IZJzGdGcOJ!uF;Lr_&FO)^b&zox?w<~T1R3-blINl$*hKs<1kMZv*D zBKgsKuy1DiPdST_nBF#Za4+U=>G9B$M~oZky^ZQcWz@z)d#YuyoRXfS)`#+8@Zljh z=)LNByGPLEek+H5<*woSIFZ(X9P^1_OkPD5jHm(Iz_@D@Cs3NaUNae#rT2URtGp(3 z3@Sdyr+$YH8a-+u(_J(F9i$s}OeY_8DirkPbqVl{%_^j}JW5|iSbd3gjN6IHkaHz| zI868>b%m^Y)oXC4_x%CGGUGpAY2#@BUM=5cW{5}M^!WJjzmHoU*?XN$dV-$`sbZUI z?~5sa>7P7hJt_F{xZE?b*KV|`_0kRW@2~W=^%5HOd9mX!Sq4zV^)9SY!D=sz>v*TN z&AwpoIE`J+hNyW<@ml4p7&4I~x<4&5X#T;4S=#7F?0whzuf9-mxJR%$oFWr-1{Ua6 zyl~~|ilcKbf?C-ulkPjgVRoa%f5~7JX{9?`Y3#zRiRwGY!5shIM?U^84z>oG5`lvd-_2f3-~8|h zK8yDwR^jfQkeii%$-*h(Ki_M(7Li9w#^nX&*K-T53@n|46dz55_I^&-6KRNu6-2yn zcI)(YT&)HMBgC&b1PUflf4D(*9~5W$( zYS>T3g!Gy>UYW#zF1HM&JI8Gxd)sjfslNr^g^A^%&wIA|M)Tfp ze3Z5?bCt3%k%!wo6I?OjzH=vzRpyPuw8{Vgz5Cqy56)cF?`cCxPnp!aGf8N)MVe&2H*0W=ukM|5KJ(5qu-9NqA-yAzx z6|S#fmnIj8mcLbCrz>RA=}t1@Kd7A^(W>D}t}TX3&L1V&EY+$dp|i2rZjmeSloRm* ze>mn}kYMQI(M$-LkF_;dDF9jUH<}rwxl-v974_PeM&#=xk6K%)b#5d0Ql{@1JSu7w zSN>0EKiSAmJoy|Q?0~O6=4&HoWvoC^MQti9Au>+@-<8gea#$ag1=~L#ZE+3if(&Ch z&&@M&Nqt7j{(>RyH3VkGTst=Mo$Cm@BGgam#Nm*{f`Ybx;kw5vn~!r^`+##Fnn5rJ zLv=PT9W?!r-{JsKKE^(2V(qFwAyK;%HLq-kU<^525qsj>tl(iI@Ml<_(BM566{!-E z;0p`r5I99t91RajQ|h37tQ;MB%rJA?B8TmvFSzoWyI(nZ0(B{h8*(TKt{H0D3fn3L zB`UXy$kHaAnOoR<27}sMnzfwrpTG-ribHVwTA%@-vA!rqUGaB;s9cO3SK;m!gI&hY zhOhZ#?_u_q6I6`~A2E4)x`kB7$?VVCa`L$WO_k}+FjN-v+A+>w((gIK7BSHL+NqiA zcE>XZr86RB=@g$;QeCllfU=!@)lc&mdPd_U?DQAzcKtf8pTeKh8X^x26AZlwfs%UD zOORnXp!!1hxeDvF3OAh2Oq8JbumB+jl-EpPg(JvCnwao9gh7_NraCPMgJ_H>qV{y3 zOwljaNSao9xv+@&`!&k(Y9PaG+;3+N70~Vw^*uX>`LiS=G)AT7596$a+bMqW3Hta& z;{?KY@(N`m6TXWfUESkjrW{Yu7y$?k8y&E!4HH*=ZqFR1{t*hjcXDltTMwiHF6*9K zoGm&8kUWRorycJDp>p>pXGy`Jq#{Bm+-OoO%gub@OKoRmNrOB}iS>r}WF`@L;6b-p z94PGg?Z>X#?#$85dg9v(x!+#cxW8nq-R#=V4xn$^+N`ySgXZI~^Y2*&$~4O4YHbaS z|5&<-Ph5{P#TV!e-+91z%i=&r^_3*2z2|@$F?QFM1E35m@Ma>`7tD<*QnQI^m0Ds* zQ8wXX8*bR?Ny$blCR`97KRT2Ob%oV|NpvF#R8%CA=?hD^ds` z-u5LBdsp=*_Hf?Qlh?n!K#4)%nI?nBFxKq1=)v^ymu7`Gz&C3B#jvQ^TR6ra!8Kaz znsZpxUo!Yxg)pCpA(c78Fs4n@^twmnyW$VgRVWUH(YE0mcw z>nft8zCE8+w_TlHPx4?9D80{T~09{r}oEV?B&t?0i~i9P&%FTi(Ek zIDiC-*tcO{#B~Pnt7g|&jL-3*I?8HLCK0wC9;MLeAi>b)e522SY;qIS?wqD{X}O>? z72eDq9~dK56CsJWaK7`G%mHMV>8*g$RKUP`wj^tj@Sa1vS^ky!t$}q@~X{%L`680}Z2>+CSWvH59*$ zAkWOosD)YQVrd4JhycDyCFzoK7t#w7O?g+5TS;$jU#>*0zqjK3Mg=~@tg*IqeT9M( zzo>5EZzK_P*yM`xc4Yq-tmc1u^R+8#BeEtDidA@1?cO2!>_&A%1FV-%5DNKqj>w$p z=Gx9;x&yGK4RHs@wA^NKy2~iE5=OcJ<9SuL6q_aLb5my?j`S~aAMkwp!|A=J53M4E zhthdwD260BB@M+6D^?ca(6}XBjbMuPJ&@H<+?hjnBsH=WtD^E*S4hDSviL9PT6iSUD#TSmTzY$|`6K9ULUOm&P4ke<3A%~J)rEnk z2vZ_515S2|{TP?abaY)yEWaCGHx&o!>`*fpbrs!&zRf4Bb}UpsXDDj>UDp)(#5FX_}*+)fLXM36a%)#BH8%n&xs$4)|w%C@<~72)>=~ zGyW!6*U0xDuO*l>R#bUHV;Fjusp35R``NsCMR}iov%rXAqk8M-`^hLZX%2a#TZ)$s zZ^rt({O^Q&$6Kc0! zd<6jyYiS3!fL&;>qjJj+83X$HdtgAtj?C_4lAkHihnWj%>9)H@c;) zDKjGB#-?@`OByQ5*-pj{lPIr=(i}Ewllh_JLz*`4UjTzZ9Ybib?&N*RKP5!>WuR(~ zrFiCouK9SUMtk#LGFmT9Xw*PfRNhI5=oZbD%C%I^w|7^K#?KaJpKrUfH=^Ec({f)y zt~M%}92K4$k3LXN9sXV17-~Zc+;Io{4$KNa?4(&u)-PWU{?=OSRQr@hdZsERa~2;q zV1rnQl0{wV-mtIQg-X9!ysbtm6M6HzsV@!`pt!g^{eHA9nE+gm12+oy5uP{a9bC97 z`v^h;6dY4SnZj)Ie*_FvDO8eZAV=+IE=0D)bn<{N>3UH4oVT3%dBzt+85^;w(4q<# z{mXL|_b!vg`l96OLbqGECq5F($)H6lpuX&AzI{{PBmsqw{>66Nf5!{c)%cI=%pNw} ze&Q}-^Z5_AI_DOil0#TMEPVF2bJHKG&>0V^Z;#~;r^`Q@zbpRVVYRrOO&NNri&0ps#m zO!A!RUtWwqna^*Tt~9hzThP50efS&oS11R(mA(0;`fq%6p81Pb>G5mh)}fqYJ1u(| zwP8u`7ug%~vAv(3UFsEM!-z};DpU%IeXmjX0vQNvdAz#TiSz>5zmH1qIXLq&rW{>H zz(F2TJx%djQ1PS2U?GOzM+w%xf61_1@&~eRJjNeQeCzf5(hm!9llTE<oC@N`fkHZk_!R|19PN z5QAT(Tqm}^mDDTiytncKOU}T)-sqy$TQ`lisK+Y145&;Lt4VGg7_xu3u2b1F$CY&E zJz_y;ujuC0BHI+k7M=qq`PDHxCk2-Os3T%sWN)lydZ)pxVX^TAS%@&1aoP4$UWg0F8_#~{niLR-s--*BHzGReWJAObm&cIzl!wOij?W+ z{$96`zl%&jur(0{NI?C3hYgG}6Z!!FS$WmJVP*A#?cg@Hx`Dc6L=p2&Z-$aYw7iG|e^Rj5S)T(vT4cS0+fci5Ea<_huZTOF zmXb&EL)5rac{o<>%GqXpR0gxWltWnC+Qd#)9;DXI=tAlItK6ptW?}VuWevAG((nn_ zu8s*NV%x!m;ko@L+@4G=my8^AuL@%O^y$H7QYfE0x1ET4gRR+}5&I``w>7xtbfmSt;s6BPS zEWHoPpse&Z4a1^AE)qkDDH)J=VKDTN>T!(>L&8l9E{IG?1_EkcR}+;!GkPP1Vo!Bg z&bw>0v(_b)w+upV89C&Y3VbpBZXu|70Hfx$Gi7BNJrQr zI8=J}5XLGaYv^~14bjw0Tt2Mm%$a^=#xMWr{HD0yYIk$a`8|n4avaR2-J;tIIh;vr=UT70ADGTcIr`F34P&EOW3_Ty zrFJdS=waf%7oZ8}$;=;7EtVTVsEwLBl*yAZbT`7We5t$}2X1E1xsDOVJ@K$CQuSW8 zLQA~QT@{r#HkK(thaP3#o;_-#PP%SGQD7hXrhy;FAfVwI$~a82{_}>JTt^A{EE}oj zdlKL{HOKS&B9i+{raV4vX2PP2PT>Jxybc_mMnt|P47Oa4ggle%q4t6AZ$#!#$hhneXFw6N$>Eizp4}yT*ZWmGQI*>u*7?dJn*uDW+VDWCox634` zPsJ@mAJcWKDp>mx@>j9xj|7Mvx$UKZQ5r3YoeVaAF(+D{{sYVI&<72(3M?uj=X$d{ zU$+PNTTjf=NgDDurH~B;Tr|I6o5P)TI=)j)FXVvkPXMzUBC8pHGIpP6gE-y5{Uh;7 z4Mp>WDk9<}w8I@(c!%u08n>#?-qVX3oGs8MA3S)fPO=CT@f+T(0;ve1B)ZZ6&1$Du z-J-oog6XGK{D^jV3rTspicnO?O-l%jw=!14D64MTT-b6C)63{ScS5u~bE%(er7=9= zGGn;4Z|`@dV$1U~yg5A2uM%IjjPqW*z_i(Bwk=|2ymv>B(}PE(|%*`4A z(7h{6|3cE&UFtLVxx<`ARdQ`1$4*$As_TVWx@Ub-)V%k6un@sAAB+jy4?Z2u|MoHc z>M4tKLaT<=$Y$fE2ah3eVx!aT+gbP8!>CsiA>)B^1RRFyr zHx_C*2JXpgUn0KyQg3s*^LM7wI7su1aJ!Gc8cYo3F|~w1-uJ2ao^?FcEaQ7Y2pgVF z3uo$vEBZYL5FWXmstAPN`nc!PT#|ZcI96__ds!fJdwE|@j%h`70U)a;jh-p44 zgDR`0g{NW`_-~krZ7H-UJWORNi6F8?Yq<)^-&Dvu*ySrZ7qsW(q!fEb`6nG7YlfVz zus(Ytry6#8tc(Gx{YyFu)S4ET_VOk&+iRt{LAqV~P#onUd};3z%8AH_8YJ>}l2T6* zOH)DoB_1uf`fM^1X70Za_@`;`XI@7G{A!x2P0J)44&zg9%j~DsoS#+g!k7h zUt-eC=cQx{%R2IsPjvGi&aqS`m2_mn8F6?a3rAD=O_|%W;`10Tv&Os$Gx3qTsoher zxlfC0w=sFMX;bKSm$BBzC4)a}A8nRuN*TOe0~X1qtiZH$J}cPns?Z)1%)LEXNj^qB zPq-`ribhKW=F%sl{fGc}!wbNi@#Ncm+vzty(ZsZV`@&U;s6N+`kKs4YfAn67-K>RpZYWV^7{{W*vT)%9r<*TiZ zotZ{7B*xk^t)5K#tQ%idIU2*dfM8Cyzo~0>(Q41#1)~7pc^JBrbIG)sw)xpNyu zM2zvVmW+UI;2gUrG8S#pm4M~d8>C-C{+4@=E#zcnFFOGQa6uQRqzW9 zMq*0JE4y{N4M2=tc12B_xISX)F}uk5I#(t!$(__`W?_5{5vs7ZU6HKi-7gc|_eVRk z=<7_iD`MIqll5rGxnmz%jBd``Dkf#F%NBPZb&ABP9aOeeobrsinQzQK8!K8qTC5kc zUY1<@BW_4gTeFJZh%)IKUNd)2qvfJTq>G#IjvZamv@Xa>+R$lfwp@iohr?&-2eR}M zjg@U}G;{QuGAyQH4jEV#;f7XqW?cj7Rk6?wG4mpHTA5m#`h<+I>BuF;GGx;CRh&LR zs`MtgZr+s8m17YHLe&8gbQ_>n$W-tyAo#?TyhE3R*&SH~dSV4pU_C6UxE*Wp5ziHC zBeD9KY9_>9Xm&=YY)2AAjjSCj3Gq@dQwU01B&34=msXpokYA`)ZzfeeOa;lt?zxbs znkwH@uH3|(2qDf~?6Y{3%Y`5kXvI4mb`;RWj4{|&=QuTA%lJgY5%ng=LQ2=fQ-4j} z7o0kX^sN{)$neHN7h2dghh;#kt)={VD%zlNi`AmMm}GO`M3rn#QQ)qy$meDmIb6t# zMY<}tB5HY?RdY*Ej4vB4g$Rs|COWKh$*G6ZiMec|e_TB;b!`+D7SR`$A=z&z)h7;& zBX`Z3>eCUHJy7P1Oq)dLM~poxoZ!;H&1_jhePeNVOalv(X6h2fiLt)QP^AOldWyFJ zc^g(jiK8LN9j=KS!*`2IqElj1eIZ(hQf*XfUgNIF0Qd%qp=l`dB4tlJOc@g=>Ey|= zx{=1m8{H*UMJ5FKI=81R_EjZJOmBmyAiN{0&$Ezuishp6kK><;OTpYOIt~{sUUF@; zyTm^B{{Ust{{R%cMNi;Q4;^&OCsKMt75@OJ{_pV1;!ZnTQOCH&PZr{nl#ds&N5a_Et zQew+pK@GspF^!va)E94m-6npf21buYRH`ij*{yU--(-|Wri|A{2g&-ZwHBGnSJ6Xv zeO9;K)UL?^{vA+luca2(-ETqc-@0%XHn!>lIXh|n(_k+(@gMA&iW@ld3f~Ew=-gGz zEq2%YAYku(74(rXv!$j67TZ*H!&0m1Y09AS2L8%*G}1#GnG4xm@L2{q2uZ)X=;}f` zxWo)Y(R~?sJf3UMPiK$8I*&OHmDG4ft>ETFPx8vEi&ObodRZe0y)^7>y7$cQpH5s` z`Ex9Ly*1_lo-IN3Z4(pNgF#l&iwsOA%&V)Jpp~}OdU56^aof_! z0~otLx~4V0kGfhoq?UKl(|}B{eu7iE9jpn8DpCf1Vt6BKXet44_-;&Y>Dd58@nw|u z7ArawhC?9fqSOXOg@dU^qAcV3Wuhg9M%_frV2$qT)rA5x0?1zKQoAvAf@X-`W-Bw< zY~y#8mUGvm`lYOZWR;~5v!hc1Mqg31PfjJwVP-(9aseAUx#C4>h}no=rAjD;?W#_O zW+_MswNDdd>_D|F7#&<$M)<0pMsb+Q`L0=IGC;|;?5zZv3Qb>Bl|-IaE|<~OU{*2o%9$`O>7)vV>1#VJ^4N>2%8H(133Rgy zs|jZrBgu&iR^SW~YVLt4JDxW|q>zYkce{I~QFCX+G}7H^bngxEs%Wfi<-cj!%X7~52cJ%Dgbz}fXO zkoe--I+S*H)ko33%2vNs)rqTqRXfVQ2m z>d1y!zeKkQ zcTU56H&m+yx5~wu;ITjLpoAc2%^}IVL1`!BVUjM=r>i;yWtH*twY|C!fp3k*w(!TjG<*U%FS$G_hnm zE?y2s zze}!elZZ8A7{Y09IVB{&ShQI0$)8cKdDmr|MjI^BU6maze04Unva$&WOkI}eRgZ}B zLc(d72IHy*Zexow6%m^m1cUmg=Dr|tNUzimrAp*bFq%A~=EY}0Cgn3-X3x_rVGA>n z_H?(?3Wn;{UPFn%!l^1~znbSUBjfx!cQD1WbP0i-+Xq6djfNK|ds!n-S`0%GD}SRF zROTTkQ>zb4WY3}mQN>aWY>9)$>@4?W?bVQAF}ADD{{V~LBrgYWgPVuYjIut&MbaPj zUCm|?Kyu3VVcmRv{AS~m_^*!1K?|_b!y~YZKdt@U*7@4cUZaEYUlOYEHx!eJ@rtvO zQvHFwnY$_*S+-UjyGhrogz=NNGZtNBakQv>sYX~6tiYUhKs_BHIrViFt=UVm3Ccsf zZxJn?__|bImTXLzk?z?f7L#X7?o61G_p)E{G7Mdte;{A!RW$k=oAy`Gb#U1&`4tzU zCLeVy^wsW9cSigzcT1^XO;Ak(`y*c#(II^k5nbJ~cT5#+O=A|jqDiL7XbBXG%-3bw zFd06WrO2%&tmx;EhD<39izh`(x@WkJlVhWfPU@DLPFt|I?w<)VeJ=jXq@u%;GYdI8 z{))P)Mge=XSsruDI^R^BqnP?$=(R<0OyM^$8)eaOirbTEqxM|v@eulf{{Unva(E^Z zUSBU0r+*)R7h%R9olZw)y5)_Ch{p|n8C^#>%?y`+!mDOy9AyG_SnzX_#{B(llnN=1 zmR^E&^uPWVDgH?V~|C*TZq~24*I1pX$vK-1IFzke5N5A zv*g+(U~J!^KMS~e*-;dnYiYQzeO9R8JMp3sfX3;V?G1Wk{ZIy_HTR09v$q43oBrJv6-POG9ap`3$ zPDp_bOl@cQP*K-L6UC7}sbve^-C&YilUFI zYd>vO6j6YdQWIQLQ&OEgez$*%s$z~wCB)g-S3Rvs9Ylo;kn;L$k)RP7xnlY%%9y;U z<}+xOrX!B5BpEbaC$F(*@!i9WE;(5Ste-!m?2(#wl8>fFzuf>Bqz;)sy47MF8Hgpo z+ecHcJfI#}s=B9m`FS_$t%g|IoJf#V{{T?r98KEk*qqy@QP_^4ZpiVrNvWbH9*Zeo5ZPy>wOhV#vXe5zbz}gN<)SHViMr6o z(W9w18M{7~N7374xr>jbP8a;j0_enwI_{Ut7S)tQ?%F7gBYQ1q!K&Ty9;aK-_C_MJ zGh&sFOTSJ2%Ey+>+91dbCFxOx`9mjLvSd12S6CaNTQ@6}ln|=0wu+*mgh;j3)rD-0 z8*2J0sXnpu1+L1cL+S{`ZlzA|DB|pi7zr12z=J~CHmF#P0n3wDbkQCy{>xPIGag14 zXVS_N>Uh~v3C=6}RxN9a#iU;!g%M{I&O&Mi*6y4|@79MT%^E2OQck)&g%+6wilLvn z(abJM2xH{;QJiuemTj#_aAeIj4kSA&Kt5WvpmudYaxr1-vi(VrW^qc+7E&JKpidm1 ziIp8}q*+B1s_GG%I*g`~?5$YnYbc|fvc;V&FpW84BFUKN!yKJGP*D^a=#Z>|@J6aG zWLu=nn?97aRE{Vu6eCj^0lOq+pozLk(dkIvvMozI_~U!5)glyh5YNzdS2VOiN>~du zl5}twOfp?x6T5=c1;_+_Hc`8>42)de^h{F_kEz*dGCr_bZ_J2fAYCNMN|VFvi*aGF z8zup+sp%!mvATREw{@A(!ycZ>tBM`sz?nN!GYoku9xEp^(u!n4F&Nxp!09C#=O;;un9_rG#2bdu4)^(^UBO)6oo_%89YQ7&yD`U!$ z?7Hq18H=|tlsIb)Ch?MDvS6mZ1lLYL=xN@<*JOJMHkP`m;I#uhU2e+AtVG1g=M`uJ zSF@yMWAi<2q9u8}Pt63F*GC~Ro3ed~ zDwyJk2JS>wWtkea=KlcrgX2H>bHc9$GyQ4$TVG3eb@F^p(p-(*@4D!Ji~b-l9C)be zpl51m`eJX)-tYHZUo!#G*KR#Ib#-G|XBNejJy5;fR!J!y?u!hrF50fMr#i{+8)I#f z67^kK%1tHikT&>7N)}TU9hNMSKMUPX7r3}O7rM>1P;N~wgZP;k`k4c|sg8?;9#pbM zUDXud)ForV&lwmCXWb!MJi4g|{K~8F6)n^j&{Gs)CqcH0ebX5=9F8Q{PeUk^wf9v! zw#$09%Tu9wUFbsgbz3u7%i#beAZNu7Co<|y=}2cQvssfd9fh?>$JMhYd1URYqEm}n zQer(-tY#60fba3$b2RxjT()%V^(7Yvj*^@lP08{v_*&<=^sg8f7OEnUhC4HSD)YR; z#_ZQjMIERmGu=XsvL2^g_geU&8@SkA(@;J_ag(h`3@#;QqI?e|$%3J0Ym2(O;2|YA zM^R?w$WAS>#baO9dy!Om>7uQ><fSjs zJ#4sN3;2hJak$t9Mv7PbB)ZCQC;E(69?OL0$4{25^~*$2k(;EF84!vUSV=H8B<$;2 zv2IP1KB+>xJL2k^w5sEAFg%x(6|uZdx_+9TKG0H@avvF2YT! zl(y38IIJvJbULXBS%?)8>wY11t$Q+3nnxD;jG5;(^kr%>lQ?L|V)u2tuKKc-zYwJ$ zc5T^2gl65A<$IQlrMIQGQYaC$1&cEw&x^mMI%4Gds7gPD)D=_2#K;8$5PDfyR0%VE zJyzfxW9oI5o`2$+DJF!xypG=sm4WJ@f>|a8>R^)a@9?=kCr(sT8A2b~9P^5I-9LRQ03%nnh3Tk|BVXxZeBNZ)l?>(X7p#z~AZ@4D;wZF@-+cQ(~| zu~SABLJ{Sz{{VFL1anhMjh(}?&$RVO=Lzfb9$ zEqTCXC3JplexWA&Dp?>u!tG=Or;w!3-{B$BWF_f!J2p$6q#2@qr+pLI%EOBesFh;O zwb}Gq81=|WR&%6;x}&=%Xr;}%h1oiX@2U|Lh1DM#($`H5%@`P2lEu?)#Xz9n)!kh{z zzL{ofAmt~gZpzAfe7cf>9t>EEvobKESqo(7f=*bWNKcNfqo6|N33Y1E-CCmS{{UrT zSDDkkix9C`2a2CD-?|tI!ETkJY$Rt5&?-%mvNMc`(hC?NB^zd#D42(2wK%+K_{z${ z=d0qvZIiS;Br4jbF`PDJ2%{MLCkC94P+OI*8!e5Q7VP4$iq#Jz8Tqzk#Lp2&vt3w9 z3|`8#sn{mXW8+#ShcJ-{E*RZd7>Gocj}z&-uxhaWmwgp+$;_LVlCk5^$>sir>!0D# zOBC5o&vhl_QawLLD3p`^Ua?EaYz92xN%4B9p^ND|U1&#B9Y8;JNpVWI2=a$j$Av_I z8IHGEB}|ax%pR9Ss>Q@LH5DGH-I*H-i3`;0d=|P1{)L9>@THD0>DgC5szprEN>LBg zbld=K2h?>qW*@cr$rh;5}PAtSH@|Ufdsx_h$Lr2 ztBeS8jzsj4i_~Hr(sdM$(sUc6KZ!+63B7kTUF^%H78pIqxuE#3!19_P3+3E!W<5whN!znl=HHf6tpYk(%FMpUurWdm> zjem_*W5mCR+(MEW8N!@!zsqm^*14Y5%z1dWkD>|a+NRC1El?)ZmrERr{g#FCTP-Z0 ztr##9-Ai<~$bj}t6_Pf(p?B3Vdb1!OsZ>VxSfI9o-()h;(K{%XsZe?n#ztD=I#m^r zVth%HmF&_*9OL$Nej*B8w^|)t90Kb)aSdN(yi@d%wffUV2;-wV#q!N{=fi57bb5BZ z?zTaRJ<+4lx>rec%FHJtbtt1$KUT-(E z_D8CSLD-7PIQescgqya++ot1y3CGOWO6}~!s?G7;^yxd9>;VrmD??^>?l(A2;No-&Sx79W?@(vnW{8wAo5x7~D{o(@i@55} zh7F7;tmyQ|i?Ei+(#M2?QNP(%4cL{O5@Z~*ZF?>9%Fbf?am#CEzuhm)v*@J-%0DkF zJ2UO~OUaZnIGZhM!_moz^#Ufs`AnG{{VHo zwj94jCG-^-6BI{h`>#Oor;6*iFbrJoV180wPY#aRIavB2<0Y< zU&`;I?cy$LX|njPmS>EFfc9RO;C~j>aAF!-`^yi`;JNkV{x#2k*U?3kE? zwgA~OPS!mYNLjc<+`(J(0~umMi!^uHB~=$Y6Sl0NvyNsq5@yjCnTTl0rkVL2FREnZ zV)U}LVe#q(n%_kVa=coi33Te|i8!uBkvi3~bUg9tS)MMfSj%DAW-LRiGBI`aIvkb~ zN<%^EWnU~zM0aNWm6JzolH({LhsUq z^Ug<>ESvq1>thMWB89&8UAfVSxY=Zsk(>1}qH1|zb17>E2(O85x>4rGju-T9x;dyJ z%VxTXQs6)^ospi)ml>Beeuo*KiDLNj@2|SV$4*(Z z>F%*-60jNEk-!$V6{zI5O4Nr^kXzYn7IaMsVRa7bRS_F^M+Ueci#YdF%E=AtwYrtr z&}C=*4y0%0#xXvivAGzF8qev1cBpWR$Q8 z^6nNOG|7hNhdF8>=|u<#b81yE`y$k|F1+!vo}mf744& z6ZEAkVvc8dttHUEsAq^QhCMPk#l zIW&C?kf_R59oawTf!hZiRO7-&)sc|usHyzZH#KT_+L*(Z+AfYb#79K~fMmVwuY&nG zZZ{?rZ-Cu%bd^%mbxJRa^h&BBIG)V8E;+;GFn&`kcg>A+R25b1bwFVDROd#)07uAY}NPtAPcG=OnO6L51!;S^2;Qu8j(p2MojC<(@pKZDwMS7gkr|!I{{S<->(PJl3&f=2{xF7!^avnp z56kN7%;M3Pr^P*M&*b~V)s1Ne-O{J&VPw(u#0h&@p6jiQ!iB54fokZa+MyPYqR2%=SjBxf9t&7|4K^v&DTpK3VLXy1EwEOh^_aBOG^iy>r9`6aN62(ALN9 zn90a{S<~=H_-abBH?!`Ku;}ZgtkaT9W_&xLYEJ&>VXo|mJF#7Ag7OWG$&p}eht#(v zthY}1Gl;Uu4nf7YWwg8YlfnVQu!O`OXv>U?CTxz zs&$XDDdu+<$&m(ZZOmoko&)h<7{x)yUtO9{`ma}vf~p{zDHw(Jc6H~n$7y9+Nh3-P zXF$-OWw>J&W+5j>F%})w?6S;3qLv~+$RNZoqv)6mekCP*!XqMxGcl*+j7zC0EH5GE z4y;K7xSpFRR9&`pEC@?SK&f*4x~V4#;{9&6GB!CmGNhVGorpjl{gPz$23ZVl*Fklh z@p#70$^|&SJ2wsi$muO_d)J;zLMSxwX|F9*~Alplg)lE#@5Zk^ca7Ug?~=KNNBQ z0Py&uIJNj(g*S-GqQC1%;wc_8N_Ct#Id{0OdY+0(iMb^c>8m>B*5B5pk?I^n#1!xi zH!R;LSJb>nYa+^(+5T?1Uj^`rN!%o@C+3N0&bum(9Z$mEYPcI5yE4}r&q>;&o;??5 z+0^QuPHr^~X7^Mc7~_FgUnK5=CdrjG zJdD#6B<1%`#S0JB<~yy%L>MDrBMVt2E5jW?K{Q&v&aNri!GYI+L`7_+U-4(G$jcGdn2~D90>7dS7)qIzWy-Q|jBR8g^$cfwLnWua=il zEhJIDNw?~T6mhq$uF2br4^cA735%tT8x|CXh$E9B1kB77@%0^(QMrv1+A+MiOXBC+@L5mbk1}#w}5k zvl5^#xK( zJcB75tgq&kh&mZn*lG-dL0P$00YSt8jfxC_Q<_BSI)=oW zZIOAOtxlA*F|b6@0c@EzDD@q5Rt*$#Wi31ElAkJEoS7WYO=vSd>E z=$u8qR*{{QU9GAy2k@Yb?PF(JcD30HQ;Sz?y0L?!QFT^5Hcmq(!b_KuJNUYhV|15P<`z&8AYIvlp zS*h~_k(vJhby*|@5WbpUb<@+3$Rnd$?xj%x7``swWOL=p*Ipf-oU~F{*j?3}fZRe6 zjjYDaqx+=msfc7Ej7HnKMJTIp$BQ%OJ%0GWhSqyi%jX97HQ9Wp=ab*U*>Lzr*e| zPvb5M)57A?vvmd6o4#_o^V6xJpP3llJVYkUDw0^9CN4w0?4wR{J%pWRR@d>rN4k_{ z`BhCME19&@05c_f%&IN&f)Uv!%vxN;ize>Mii<@?IYwFF0kj_g7p( zkDmu4ZjIRkheC8v`FXBS?vJlUS>=Rd55?|@S;GRTGJ-8rvvZ502zNm$nYcb)V8`KR z^(0wptZ2Cr6f)VJSIX4%Ibb7~bbc>Zd{QY6Eq+&=@p`GK&PesTr*rszD|tAPN5x|Z zL9{K|bZ5qSm{ZMXe(bz^%}5n|;oo(WR}s`4k`GeG-P4|)tyFZh@f7sn0&lCUZWqMH zvXU_a7j@#5)x#wpD>q~8tUrfx)YI35Jc%4jzhwNCo}Setons+KjrVnXNFzNrWEkn5 zY8)lDy_6}b<)wt+Q{}oh?^)1!o<|LP%|7kO>H5FLZih^1@uj6GkuBveCvS z9XCcfqmT!eyQs!(4^eES1UZbI*-sMuR!-lmAhWIXoVe`i#IBYyM5bmxrct|mr*F&1 zH27N#Pu-Sqp>NB55o7BP*F}w(hY>AS$U48>YXBB>3%qluupgVClvx+qW|n09tZ}-^ zXvd_+`XWXwC)TIcnC)c90+vSwxZgPaP4-8`Wgf1{8kh^7CkZJSmT50i7`~=Vsp%sTr!INwx5C(JMnK8Y^2}JXtP!6QjkHY&7{)$c$q8NQ zqQq02GE;c=Ti7uwn@cQw!Lzbz;sdiF)J8`pcTm8j>9VzBa$;fAWm#11NIcs+**z%o z%a%oDxj~*RBxZJWT5zaTfkM(Sp;S0d4AKDp$!Q#E3BcK`fi$tmY~1Fz-BM9%ba2u6 z(fUJ^zp}gHbTCyy%rJ}T?76COwKjr<#w63sa9nZpz+@ zcV`^M+eOqv9DGDZshytevT9h3v2kUdWrq7wLob=Ac%whJ%DbTlH|0)0s>*suz=g%X zRd)*vV9)HF&_+1kl-mrm3njXyjmgUG>vtoi3s8Qa5JRco+UC_&k*qlwK&LjEUlGB(r))v;OPc z=q6wmCoal|_=#IfL*V`?Rm99NYjX45o{dowa^#}VwZ0dZ?1zoPfmc)PP+?j^z#z5~>N zGC00XdnRfI<*O#CqZva62H6`h*6B-`8*0hOhbs-zF-G*VxVFm53pi-&ooHC{jK`My zD~f5q_>J3TP#XLG$$@)pPj9yCI%3kKqnHJv_2^ zPMs@NPh)%^TcE`mJFpwsS;-*DYc;<_DQv(STFY86Gm9AdWNm&Db4Kj#i#P4MY9kRc zJzLq-Br#@eiLZ6JSi(fi{JU!Q6M-}OclK37@j!Qsv1|T|nR0mN>t)xpgFFq(d)>cf%yDMI zY?=Fh%hTfT@#pjL`nKWHl}ij}SF>rZ$u2iaSv_4a>G+%34~3Q8vA5k^jE@=MP5sxa z?dEc^K258l+ZSuPdyCVxJgrd>yNN!{*(TO@+xzT@D`T&z{{U4OnciJrx`XI1i#^j6 z+Tu*<3n-rvYo;07T~ZEKvMg@a$*#5spFm4S*t?cUlKM1t8f!3?x}vY3WNu_{m%4Yt zoKB;{{AMcp8C|Sewf#($F0y<3BLC!F zoPn3b-UH(Ecwde|R|&os>KpFM?2ixDN5!}`KM|rP#K!yVy!q|YbR_T>H<{UP7~Vdi zy`4LCxZ9(rvazBuGv--tn}+14B!7?bDbv5^Mj=2PL)|SSV?VO86Kr~rdL=v)gd#3v zU1@ngr_wsIcmPB7Q{^|QST)c2v!s-Hlr;&l;JhH=NEkgsqI zDd|LHk)7Co`j$BHZ`)V5Jp~6U6A=v^b3Q2HBT)ur>g?;(0K!-Y3u>r1lrnPr{>r1}>efg$k5TC(tdTa2dH> zW2&4^CDMt@>c{p>A=31L_D2?C>(N9<4^lpubSpm+GDgH%WayavJW9x+Vvn+jvvmR8 zNuUe~5LWEpD5ArTLX;5?;zBm%mrm%#9!k52$W+jrm^<6D5VE)C*=IgD$JKSpQE|Ac zD)|ybR{32VF+o!YJ_#FCOZ-P-kR%+1GiEsYQqa?k1N8Pr{{Sd0Kwh|t3S*di4cCzW z0O!z-qF9cA@B*`!{g<#!l#xg{uakd?d?K@gar*gVf=7l)T*cTf)^&Q2pTyMLo6Xpppwr$TYc8-k}f%!RFBeok9CQQwmE3A zc3_X8Mk4&mCe|f9ZlGWpiEm{X-EQnjP)POcp=VkPvOVmiUtCnLb%ysq+C?Lz?T1Rx zK0(yV3klSl&}8X!)K8LImgOFIMu$X1Aw7#5En{>-)E2L9%T)&$vn^B>0E{+%$W^0~ z%Sz5~Fz_U;P>{w$5pIe2@g`5wMlvhyl?M%h;mb06r7QAt^*ZZLArjeCaTvxj^j)14 z$mZpmNMZV9>7El+IpfZEPx7PuDz>(=o`$F*yK1s=(}NXUJMNVlR;B_WWX}qoGJ~hO zw2j72lCp0qbmRyIc?eCG>0%0Aq0wB+OwUqAJ1V{@7Cj_-E_0gIu<^t-l%GhoP@`gw zKBn8@QE=LVqpsy-?ke(1mJh-ATa)#j5b7A`7;NdO+@cJlYpVWqL_?6at10SvbCfcA zRbrGzVO1T=>0KWzKNANY1^SDhd8C zvhH}5AwdI>^PNq@`2&EW#rs+r;m>d^3K_BW$M+kL=Tki z`Fkd)LYIj}%qV)l(wlbuj4R=4f~Vo}0LuGpt*Yt{Slj~nC{pm-9&p{8*<3+P!dH}a zvefn{baNCmZOq=w0-)!1c-dIILNRqRrs8HW#^p}-c2)GGKYNoDtgLCBo!bXoBXL40 z#v%v0=(tr!IGNksXXPtWFKVvr!g{iz;sO-$yGYH7x^u{}be|HZ8psG8SfwRE5!BP= z8}?r~{{Z4wi8P#Ei^G)ibj8+fe($pNzZO=Hf;ddIJl4(q0e@2Y6U6mWab7o9#3~Kk z&P%(i$1mMu$=Bdg{XvjR^CbtM+zD9lk!quoF76sXvR1Y?j#3Br(f!uvbLES!KjSMv z_UR;D*{p*T=G?MVYqR1`ySNBC?#pGhzEm3RqLX`5vKJ4mAZaOl0kZdgJHg2EQKMUQP zS6n>S$n{qEXl6hEGuNzeN#p( z48})mi>U`iuymM~y0T&yzRt^?jhh0y>+k!b<#KB}RJCu@-3sIesLI4`%u{i8Ho=my z7BE4?%G-tujjX-AJe^N#=;0aTlAcXj*>b!> znCL3r85`{W>#~eoEsMU|t2d*MjM2R@+c$2K?k>7tQO)K9ze^?|W^1W&N?Ev95IQ=@ z-HEpU05f~C8$E@t$mRjE(b1!OTJDs+wnv9iS|*wGdpBhm#>K9RL#?cdmCdwo`lMnm z_AOicB`S0-hE2-)zK)TbS8WkQEP5WR+`sVU#@-$z{vE86;C`KUb>TBLkGi?=MN9DC z6HruxyINLUJdMZQSp9E=NZ*z}3n|H~DIlDG6m00i!|7RUA%0;g^ySowVBdu!ys~mX($H=jc#ImWnc?{!+oy*>avHrK$)%i9N-4ltqYpIxONfLxw9hLh~*WT2%Dk z%$0~$r=RD++5T3%Q^Ceuxd!aylHt5QT1Y}aSGvsDO7RmJWr%dTvEiopa;6(Mx>~1$ z)YS1RdYI*G8+KhMmKfv1dnN)L-a&s)Mo-huGYG7n459jes#BEkd#z$w$ArBq6*0Cw zW2a|TxERgNjNOwZERhB!t1CjNsTd|IfxoF<(mRzmFZN2ze?uJ!o4Y9+r+0w< z9Y0P?Sz=6)66gCO6mJ($-AMedDr5Br6r6H49ebv!&9dy2I0hf8k{(M1-6+8iN?-B% zp2}qXI4l5R1yvKfkEINmrOVlEOYos8<)f#R`l*8HzC>KUTw=_P6Xsa0`cJJ`l8+D! zHB-=(kjWu}{-IEsC};kpV(f|@j+Fxp&|GhbIA;jrh2<(};dl4PRm^y+!2Cam(PhFf z1izWK{aJbyMIAmzG@-6rr=X84c_#K)&uxA_K=Bs~;+_(z+r+*H;r>?_d1Ld>$v#gd5Xq$)xavX0%> z5)l%UF}ZG}19C$Wv1E&ozjPB8XG1a1rBBkP79@aa7~&EPv{H`jc_Q!WTN^7BDa0y< zl9=T;(U&_*;tE=fL?mnd*GX4OHL#pVv#xFr4^q=r^W%+?ckw#PSsG|ULD|u2Jqk3j zutqVC$kH=7a+QTkC^UuAf894sICoVQH1kqab0aIavOIDatm#^0zz5BBOIcG8{{Zfb zx7{8|MtJ#hI_G$$Ej(q@EwA#d1_+v~A*VLGs+ztI^Zx)dF+NO>M$uAABohAsb#X0N z2zsusj9(>33nHQEld|ZbpO^zEx~a@3ld_DZhe(rXnJBf;l+MAj=lF!4W?!;mI)cZP zBXqcdNj_GxQCUbrFQhvCksy$dra?!krguJ<(Fo#@Lpb%fWKd)PXB<%FiNv>cx>6#K z(`P`bDY=D8)a8aZ9Pw5p7{o+OQJ%)kg3z;B!(@FMMp}T4KpPWVWnDZBQd!lVM4YR; zs`Dq7q+NyCX2@kDQA-s$a|$-Qtfz9PF_JLpvbvr=bvtvLWQ5Kk7BM!9HK>G@Y*Gn} zzx`CWm2_M`h0nw)rN96#>bOP0%4jimw|>j#{{Z7ph+m6TzXzc^L=V+x^}4y6M^_x* z@f(gw;;u10T#oG+wSaH4FE^W3eHEEI`BHc8>bhS;{nu=9(Re|;Rbb#u&wD1NxU)2x zvuN$?shRLQva$kmYms`lSnH2^>Bo04DTfzlXWwO~Cvs#oA42$%Nn>E?q>1f`}%#HdjK$Equ?6dI=oo(Ak z(PKA7k}PPncCv$N`y!UDvLAc=ptbOzdcMkUy_ss-*$F1}=$aiHr7Z2MHM^@88xG(0 zUT^Y090~RDl72|Px}0!(D`PlBC3xAh zWat=^HYA}nJLR|Nf-n%f+173~HDEGg_>o&TWDtaG1bxkwId%o|#vg6^X$@OPtVlreR zPEEJEzBs2&j&XQ}$R7H8?y9RxoDFc*z7sUExx&EC&!*N(RmRcFrS{b_nx&~7?(BvD z&1~5ocfCtMhC z{nl$*B!u_s{{ZlVCs@6Ri#I1Nt zmKf|-*L!Teem9S*^v)U$ZASVlIO8e~Aql|=n7imU^)7dU)jWj_ByzC`o>y_TuDvIP zPBfKK&Ro)wpU`7sH~9Eoi`0%1Q{FM*1LFSx4Ux-A(bj-oBHI4!>*orn&YEc;m|ctx z&fd<;>QC`FrQ$7>V~nzBBaV`LuO|LCaPXv-n~YPyLgsD~`#bi3)n|+N)61FfYbIjT zEp$o;OK6x4MYT)^B71D;meWQ;kJ8sf_a{sh2e|I;m!8h=cI=urXB}D6lV~qyN>(w5Fv8;;k_?MrzPG55PLapcFG#l#({{XV;FZB9Js%NLZD;BWmY2jiqbD0QIAJtX!^$~7VXN96%3Jy zBJ`wWnW>>EBu|&8rE^{>%gTKbCsq1F$HidJ09SN##Zyhqr?uCc{{V;i%6@z~f%_}Z z2em~Rd3vb-09DF&b-T=W&@&WycSDreJsYKYj}KgzvNWzI3fNF_YL_DDjnZ_|$=4jB z?d<6OBMGC2n?e_M?2+Ns6%{aY>!~raFW8H!LOegJ&d#)Ca28}YNk z-{DCCGBqw}nJtNR^orTUKh+)9kkVn(^#14)gBV~tEfW!cOzi&30rc|bld~ul+h0KE@vo3y$M>EH7y0-~jhn7QUWkhhKFUsk<8A~syEUNjAFl0T6 zN*aOx0Nqqe$qYlNwsnz~T|=_0=8r4X&dVc}qz|T)u;w;smu!7XqnaGT{^%3W{{Z~< z^;y|cs~532!Z{JL&SYolk(WDPGx=Qi_hf`8B}8%ZB6jN4m1>ULEJqFz^*f)Qguf zUht~VF#-9bH@?Kmm6z3gGO`{oP0pt)w{}e&tq6TGZ?f@!;gw-VQUOoW`dM`RQ;0PY z$;^?_egNk{7{AQicEwl9=_6?xgzI+bsW2oP_j^KV=9hMbV#OW_DWAn6-54EG$otAh7Da% zAx>twS}Ky4i1h5bUPBywsdh?7!@?S_d@hWq(8mauSqi7)bR$#N4(p*KztghV4nfqY zE6sR~8FYxq?1C&%h9q}gH;b{PqmprUT<3@5J|!PJ7qVt(S4&b<@{e2o>h6yz;pPk7 zH&enwcu4Vk{gXU0h^gY`i7Fb^GffpX(nFFxgpRynuINXux6Bx)YSv{4kZqEgr zl2gb99e|tcs%q*UC&VtVr08QOA$Dg<)XB+bH!WF}bv0H_#4V$5@`X`V8C2kGjW}up z=R|b|-=cn$#%RUetg4Dp0Cof^DuNalZ+(>#=-JJTM8EEX5aSz+qyGSO2brdbOdnK1 zo0m*eO>9_h?&vQo{xorr@XrO3j)~iyJ3DXaZtlKVl-_Ac$h-dQs{Si+XYn_SYbzVj z#fUZbW?Xz)lIz6C<<;7Hs?pL5GOIr7#-pm9_wK8SHJDaLN2Dz|Pw%49wvOp{(bjA- zu4&!ChB+9mef^b;(M!a5drK5xSev(|&R;8@f>Ip@M{n14eMwx(A$% zWcbIc{C>E${JxacP@OZgO&K@nm-K2bt!rnI<|8L(XWVagNFOZj?9Sf{uaCa0_Z5&Tt2;f^ z5&TO{>T9X9UAJ3p)JLKYZDc^rcD>ci!OLeYE%sIX6|j;@f^9ZuP1ROI6A+WL{ktz0 zn%mc>v%`{m7y|g={>oq(9mSg7%Bm{-q-KI2)oOaV37@Hl?6Ew3S4-sPMaeS={X%9) z&siNi;scYaDdahKH{Ao(_g#7a03Z6}*ZCjEKsC-}{{TU^_gbE?h2IFpl|?(*vUQR^ zuXWe`9Df|Y-PiQYGn|vOk{i0YjF_7-B}qmZzIIkr-A*BPvpR2so~AB*)*W$T9HjO^ zav1tu^!ZGdpxQGk%Jz5J*}vsy{{V^1jbHMvw)5iv81_ zH8GJcJ$Sw@y!mHK9vdr*<^`g)B5C7d$+B(r-En}&1def*irRu!J6W}7)pESa^y@nO zGgV?Qru|=Jv}E(S$0$2{C#oaneMkpXqZV?s6&e%wPvQUo;g!fu-M`sE%Fe+X~XFJ-q9XD+AP_CpCCGQss{Tjn!qYJszLGM5A+dE}-C z3mg6|hvgQo#?Om(N`z$NB+(1t&dl%ab?D-}y~jyOBT?0y55!?CMfDeZ6~0xoaY@Rx z>)un#Ymw!pt!2SPB<9#N{>tW<#xV|ai{M!kWudpS>++6&7i+}0mK4;pQB{nEk3(Bp zcfQQ6d{JCgz6Y&`jn|vh6r+GR-#2ab?AoqICxeagDfpcq4{B;)3%KQW3o4#7R{TPx zgf7vC^x6La=jGMS_AWvq_rKj5E%87Xvo(=nc6VC`f%NG{9oZ}wX4c4}`)m5Gz#;4S zT`5xC4{vnt?DkNUavfQ(Wl<}im9HmHx_XwJi>k?yr(%;vR`D|oZGUBn!&~X=pTM#@ z`WYz-V#*Tq{4a3^=^TObZtLXF0`UnvJL0-&;gQ%6LSInQRN>1!-R`{CiOsIlt&4$d zhY5pT$k88{>fhln%#K`S=CHrAUb06Z`ZmkmDR>iR8Is&>&m6Q=^ak=%eQT#E>SKmp zLZ$wthxFF4AB#FijaElTP3C1L!@669S4YHP=2IIIzEkLBI&g@WMv1CGZ(fNk$Ykoh zk;Yu9j~&@wiQ;jS@Sy-UIP9tDYb1_Rif9Y&uSP+dEU~kqR0*kGTu(5ML;V@Ygc%mf;#!;4HdZ_bxXZ2OjEPY9Onr4^fSczo* zy)5W8L^4H>x-`)L0GaIllJW*U0#9~SB)C`&G4lpeXYQ>JB0RTM^fE=vD6?#`?ye-L z8hCnQyZa(UshU!cq+-*$+;WNX^3gLZ6+veXm(kfP$bMf|=>hT_$nmzQ5(&g(%rAvu z2$!I)F3MFAl&He0mEgDB;|%cZ}wE&YlufhM0FFMEIPZS7~*vtj$!J&7x=BjO1F#C zQ*#Rd-Is5~xa~D$1BA`0^B)<<6@5oEDn*sB;eH=AEM>}?m&r`1f^+lsq=xPEY3kr)KQ2 z7+*pQF(X6t`@N9qeJXPkdo3a4euS}>NO?PSEt9fQh+e{4EsxX$ok^QPlx(tqq;UGI zi+!lD<*|C5Lf0%&#>6|U0Cq~$0j!G~H?oOzirfyyJF5rda&)NTFWXgxc2Y`c2E?~8 zXVRtA$b+IWE4;Z3nM7~$p1_ps?IuZq^lYYzW&UNLEOP2d@rcN}>B;WOp1A57m!Y2| zXmpohJk+Wk+eBG*j=uotO3>bQ2HxxR&{$^8VQ z1;De)?3dz_JAdiM?vP?e7Lame;4=vHIy2^Osjh%r)vYHtq=37+?kEJci`+n(Z zYBG%jci`Mezo!siB~PON$OpnLh=-o+VIONbc%TZ+Ac~ z(IC-uaXx)fIype3iA=X=j*f40k? zJ@vm&M_w)`KYr6=Vr^8Mn`99NAik}tiMA%p_jT9g^ZZB7&!XF2TL^bTje*UYQg-*z zKNJzl#KA6>@1oT9FqDzWu~dtEWwIMWEhvPN>gwhgBZoSIA@tdr-`!TVq~c=Y+AyQ8 zWQJ*h5v7E&D|i0@Qm&ZFX7k7M}teFo>^uO+ssC|7u-(__{8LjzH#GGHH5^b8uUB^Yn#^IRomGLKbCwlx%i< zzAv)HnOl|?0_Nm$S)S+>0f(i(vS{OW^~PUhIir!~3(ZdM;05X50I#Nj?h`xXuwY#po*B+oRl*gle+ub`yOcGBSaT&rG z@85shbdyd_&l~{3?(Ms%137gYzwWxq`OgITryqx-7Ntj%=?d|A{D z{#QwoF-2$B{gX8PJ(42#{{Z~iF--kfz0)ZCSw{Zuh}L6llEC_Ih|buxthNpV+W4X~ z)&Bs)_ii)b?i*L0tsXAx z~F8n|4L<9bs_#Y^lJX z?5ntCVQ~=%xlgaU;d_$0NUPzTMx;bzo)cor^j(D;wUo5h%K zmX=$dnO4mUaiNx!=D7PSFAMO<_*nfJ6-7jTPNSO%IJ@r3R5fff978^;yvugQE_!zM z%)2cfK7h5=cMG4I9;V4z$p@W_;jvx{dPwC zIC!RE9E!<2n5sI3tg@t9SWgYokw*AqG4(3Zi@0t*dOJEKgxL30Fv;bzk5^4WBV*BwazGA6*-*hOlXZDH1^eA~g3W-e#f$K_ z%CR^}MiQvZx*b@>G)7p)Oita|PsB74a|&K|ISrQ+!zjza{K@5-Nux6AC;TfmEq2!+ zEXMx;D47t+>iJ1T?IZzH5wnYqs|sNG`AS%n>|ur*_fj_gU2~^5EOUsS?5yIbd1CE% z?v!r=<%o=mH6l`d8GG#Put{6!5@w@|Yg2?u-zKo7#6Yc5ifr zJWLXoHdl6X(LhNl`tcKcx(_Zvkm8cq_E#1ky|z%P5S!u9anA7!siWpEGyWn;HxS{H zK}tO&Hg)PVhJ4J=Pi4;3)5VwkD^@;qhK8t!x(QrU@VN|!m{(r4QxL)(QMHv18J?b; zbBfpO>luyvai_x}r#z*{P0}1d>BdnSN_M+$oZ>STWkyC;6z2nl=dSYfH2D$e&RZ?d zOxf*E!|4vLZo2@#b<)yst{qQKQt=wGcio>Pj~w9@l+@T$V-SCJL%_I!aQIFdvS%0fT_rymq>_`%fepl)U(B3R z$~7e&PxvKmQCG{%#jW?rmMh_!G2x{zF|dB?7cF)F08`iL@&sEcQ))Sqo;gdFOS2G! zuH;KV&e-aURv41XTYe@|#QK{gYq?{KC>7j#8Ad}WgnCs`p=WP(qcUXxmniy~6m2M> z3lTJ$~m2*ND5ZOaze+Q(~Bt2c>@t8xH63s3KCNko|oBI)W;+< zbhe7)m_k`01er)&#bN+knGaB<>R`vMS{5x9>3K4EH$ulbR^=I}(ib!OjIB6~Jjze= zDp)cDD9w_}+9r7W=(WpmF23k=`8f4#iY8JYD|D8~IiI4;NJw=?iNt#&0}Q>?q9WNI z{{VHciH2@qqH^$;KkSQZA||pC9hRVRkayKa-M1AmrQQONEr&djF4nLYiM!X~yv=#doSF|mVPp8dWM4lYe7Nc*c9 zTuK{@zKV*nvEi#2B#51nvLU~y3?gXkEvpfBNLAy>DM6fHx5`3-W0cxSS=p~-SYpy# zrGes`TQ8KqjFN=jFszOS=?<0kD=`gI*!o<5W%2iqNzcUmNQjx=o?q^sXSRC2oXKvB z7ugB-)lNOxbaPpTvAzA0Mx2BCM9CR6C$fqUyQucEmhS34>J_Keke!jAWfx^A3dYqJ z8?0>|?8-3|=*4f!$zO3Txp=+r#TU#j}e%JO|rYx&i1)A;O z*=_os{{RUVf38J)YO~inF~1*w9<^sv7|&Gvl7Dh1ZIz8H8B&yVF*6OWMDMJMmN^NB z8|i!7-CywHmZaG1R<*TjFtXv_JxLz#7kqbZ{jGUth$VW71(*e{_uBoHR5%@VLDMM zQ-?~-?U%pqtSc^dCTnQBMsOIO?bJ?_to1hbOhu!=Qzh!PzMtI}=)ezVz`JXv$$M() zh_x(T+h2alKhUXru$TKf<b^Lvse6&){nCzCZ5UKse{D#bzugK#LB)6 z_f~NFS56qCJLA;fs+ggZ*=@A;T?H~P)TTNUSqydE)ScPImY^J8MZE93rHHKPQpt$r z@U1{qo>dF!fBZB`CBSPbd$BK=Zp3*np}+9T{aiqQ%Dlcy?bDaOatE)PEbNrZ0jU~T zB4#vGsFFCO`VViElr=Hs&KTP#-C@&4mY)ejnm2SyG$W5L{{Sfb!k$k@>VYtvk>j(f zBJ;r?5+3&zTQvwnDfwX6-{oAu?@bq_EhTFXe?j!!G6xkz+)9s%nezG^v|a5V5ayg= zH%V;lt0dwP2dd1KI?7su&lYlGS>{Q%P4?>uqn{38HTx~{7>K!lWlu>{5mgL0wfALV z&2ci?>YYlk&ne)K9PXzU1JyYyY2_cMB=V43b!|r_Jn{6M+ud(tBVIE;&a`nc4qGbe zDgv5w9398AshrJK5Aw%mR>O@Hgg?;gw&~dFoM7t~zp|i$NU1AJnKj?xSji|=^vCa`>#9!3Jrw#vhZLfk{tcEwcJ&^(m>UOPCr?CJht0gp2F zOvfZ=(l@#cd5v`)R|KdDDNa@&%eyVZ#Ypmwu7JVYy7dX|%OgBpm!A06tV$w-g~S6R zYUKMOaeob>#9>w$MP`5OmWo4yr;{YDZp+RFYLWVsvpw?aX4=c3;S~*0nE7&&Zrxp# zmJN>co^e6x$X|88Fd=~D>Qx*Zq?Qqo^TCno8XB|ZMUzT8{{X2{rLURgKts$IRkY6} z)m+T3EJ}-y#(b~k`HW4gx}}%IFz~1fD6VAs-{l*0$GYgh#V7hXQOlQh$3=^Mw}kk$M;Mw6V}t>pbxTh{Syj+} zo!nP(2Rf<_cO>vuye67pF%p9zEm_mLw-uZhgh9!VnG?A#;)jOA0778^-Mx|MDVz)r zTenKJfH9mCAgak|JkK!y0NrsOF7WX27>wY=OXKl6^;xYLbt>_3r~*B)_elJF^IPFs zpQJJwW!;r+Z-*w~zs+TKZP(FrKbVA$JQ~Gox}&U)8tBdvD|U1jg@r*!Nhb}=tb43p zqbCKYD%hsQwB6P#A$uneyperYMzb(%jeS4%t2r}ui!1_HmYa!$ z(#(mTG_NO`8?BS)2+9j&ZV}`gq%#6<#Feg)pfSL#uRkcu2$tf}8 zXHfGbKDJi%Pzw%YWkbYbFT#|(ppZ+xs?0R`T$LrnvB_S-eLTFiLO)?2ORbYR3Jx7P z5o)(`RI0UXBPCN*$La!BMpqP#id?!~Xc3x8M8_?aj}M)v41JYBkvB3TWeNf)zUWS- z!zk{mIJ693P!Z_lyd-zkY~7`Rx|4%Q#`dMcH`OV_BRDD!V>f%Pgso35G6SZ0;V)Ed z$jEfywq=mA(K!KR4fjN(c9+uZm@PYgslgGA-_&S&oSW#iDRiv?Sh`z8G&Z7G+U&Q| z9Z6YCgt{F=B4N%&lMc$+Q@JsBPz*>|z7p{hn>&lyzug)uHjc_kH}z~TmZ+Ga17{Za zM5(Zaz_naw8sZWKPm}T4vY()BH^Z~qK%oD=N5mPE>DFuLmk>yeKl`obwNC_ zO7ztscI@b;8UFy(NI)XiZ-rUJ+Bh+3Seokgsz~CDWCmt`_estmwc>N`5>lFfKzg53v39R0dWX!F9OC_YU-rw%GKx1uh{{Z1Y^fpF?w0pB59+ED1 z>8M(7S!lOyTJDJ}WmAi?AOjZ9v+ZryCdP%fO+Jx6s3JX0_fe~StQj+YtFJzzH|!eB zqmz_w+Iu>U3v(wM3ux#)-9JLyux&S4p6RPv2s!e%EuGr_%cGDyyjVEfr7ge*mx&9f zxZJGKnK!cIQ9e3LFFNzF}z0)vi z8haqm-E*#rP9hkVLXd4;UDS?kqiU+9jDX(kyZHLom&?Xf>Gd{NV%BVKtLdyR$;NiG z5N&_idN_ILg!XsWvXpPDi+dn8r1x}aUu_oIrbf?e`zb!!*$uY+RvY59qEfysuE`0W z?DkWX#{%km_W4UQ=2<%D*G)()JzneR&-^epAL4R$!F=ydzM%gA!-N7J9IB};&Py&m zHyz)JsVlgxP=zgLE-#JNxGxVb9fnf5d%LcSB8D;m43s>%zX*{H5$$_2nUGET%K3~)|Tjj@}A1-TrBJy?2@cQ~*cb2P!nnBss)kBXH1O17z|i-`eKW!B4`f}U;)a(!ZPa@kgK`KxI2 zui@}WN0zM0+rl-6#A&eNP|2V9g=epIzGg+dH38&3ZFcU1#F+Sp4KE`ov$*y_;_)01 zoV4*V53*N)RsaX{5EwtUD_7P=W0wkg+7jkhN;WR*wcyNAQ)SM{`!lF(L2-*9rPGr7~wyS@~;-KP1N5*4lx~wPJb+A;!R}V4?1cmk{T*r;5;Haf2 zDrtnX?!1P&kBWGDyPe^>xn3sTH!t>GK3Q>#&+K~N9^=%!4xpf}k=^?XB!k6VKA>@f zJiUw>RbKBn)fBKew zH}P3i(Tyhx`fh%sf5Y&+_k!d(`J!?c*pu8~_*~E)BRIQ%l@G#|kqlqqI9JrFv%mITM;zdM>I0gVsIv&~XZ%agD(K{`9!+VxvueVP zHZ5qpMa!nkQDCJswMtsg4D=8H^tFA zjeKk98h#@kR046Bm%}8At^CeIv-VyG;mG*+hO7B=(n?_4_g>Y(Wo|VWG-=8y1bUg# zzlu6|CMkrozPlxUuS<~Vuc&~r^gG+S)qNa1NPnAyP}Q9{y*w1FIF%vIO&v~M zdV{98Z-`tYII3*K`#;ah^eWyO9(bjSCSGCV>L!l9GNY#^lkp1=tuvLbu0ARuODvKL zW#G#~%mIl{eMgAyL z!yj9+4R};Z^~BxT)9KObG#pS`Z{|YZE2^ihi0Sj^GVp3CrsbSf2L7E9!dYYi{$=#} zT7uWN(N7l;Ba0?tZM97D&ztp4c=rvKYC#F<>Mwtla|axpF^YR5;J!~qnod{KMixI@ zV!YnFjvXXO)s(~Se&yKSOXzUImea% z07XGZ#Ce=TNc2|H%JL6goAp(rsB#<}XqGR{hoW2{@Na zXzN(SH%lpUFqC?bjHEiS5zteSj(xRE7`8hr3Z|+;gpnxZBK5Y46|uRGN)0JIT?Wa4 z4k8ymWtDWdj$ERB6^%h=Smc)~e0?UAOllr4TUzLaP|fJNUP#@G2_ESzi#|{ag4$N| zA(*o&?pcJJy`48muBN0Z%QMmCQ!Y0TVkaBcO)7p3dxP-WdZ@+6m@-n`^8|eu?vlo?Dfy zmaLgs{mRgzWZRFHGP^15jniXDu{ChDUit=4(B+O4spv zZWB!>n~-v5)8%>Jh&)W@4pi(d?CP;=(D}vc(4OxgAV|_2#c)#&RN3HP;)y`sBweH>5 zr~d%t(h<(4xZUm9a6iPp7TgXRafsZ8_WLS&7HoODd?-GSrdm3K>#EzDVEvs$_t{82 zln-?#mdD*iZAmW5JG#Zb*HUY;*zKz1o+h{J0 z7fV@9K@IWJ$~~EF`iNAUQfGA_%WEjUqp~6D&t;AMH~T0A+P3IL?C9bBG&vgjr~>}X zqz!#knXcNY3uB^?Te>#GqLVh(LY3^d1q|NrqKeMyarC;%Gfdhxj;*31z*02ZHIqd6 zi!R*#GH_n)>Hg>@9ZmlLRg}+@{{a4Kj&Ems3fm#sn0I8Py3RNEO_q(8i9PB?XTPST zYDT<_Or#?0Z*{-K`o8Mog@B`OV6&`q&YN(IeJz!&l`$%sv4R$NA}cd{y0qc}%8l@E z`zkxTo=ooA?wC?x`)|iF?9Xl#+GcG{(_Dq|-vbv+=2Vr}<;g3f8bF;n7ukM8#^{GqhbRhM;mj3`8 z_0n+i$}Q9?T_Hkv5vH2bY0a6?C6S#dXPc}Y)^A4=cgwOM zUhQRq*4<2Pt=1YAFJ3F`kKnyLad;kslY5q~zBGrbQD1L=31b>>0`RPNc<#CP_SY+Z zHZ@Rkq~W42&$?zVXDocqId`(Kn3#X5qFx+%ghgv3^|J9e#$8upeU(*sR1XmPcfr-g zQx-wU#>nztmx8Y-rk+y?177Nvr_5s%#>Ls2@T+WyhC!0fkeXgzL&_YRU-c*O9Et** z1I`nZc1}%BKCru4aNpyy$5wRF(-X6Ib#wkFB=o~9krlg&rGp&@Oq~T~ngpEy&Z+sO zQ!HLs9~Ej&!XRW1cHK59L6;hQ=EDB$tE!3WAjUfjmv&tL0Pz;KcsNEpGc2FFN5J)! zUR#~Spe&oR$6aBQ+o;BBZeB9Gk8}#2VGkoA_tjaASk=SmvIS7*5Xg>X&rMrG;ggV0 z<%eZ$lhedS963L-tEc4v7slwcGh@yWlQG?v<12qG+(TzYwBOw7H(Q?wM-Q&mP4V~gdj z_F27O<5E0Ueg-@`ykM3x*JoW#ABXAT0iIiHyE^t7%4&b5=0IH8RaePFJf26EMcLN= zILxmqsiNW3v+}xJy_s85aJqTn86c!0T_JETALhP+5KP3ymj3{{>UwD?$O6x8?3pF> zuDFgF!(yv|fBiZj7ArmXQR6%xhg1xb!NagPcXk^tj+&}0d6fLdcHBs8i!Ts|`etnH z-BL;RKFIJY0XPCLFJQ*)Wak)-=qdTMbeR@AD|$(yj*p#B=^YV!LRk8+3o~}IK7y8>0D>>9LRR-s;arUQ;ta!;teUTiNn!JAh(>T`d3&t!)uzc7HAMzp zI4UkCG}4#UiJ#>fj!0)RA%XF9?R`5`QGFQkF3!4ZD)EXANlrB5^6M3C>jZpgonB<&SR8wIelu%xNjIr>G`zL5G=9FEg6# z%&I92N2E)Clv;U-`IPtdC1a-IR|z5s$=nR9zp1o0qv zd3CcsL-McdIJG3SvcVCHyZo;csG2Yws7=}Xva6@8^3{0ECJCuTpumwsPl17*88o}O7cm}30~rv#E^Why6I}_D2vSnNk6!{?tC%g zxB`?ywXEyN&aj*dnm1L|v5bMviQTW+5ZL!OY=FQCy#uk@Mb7E=;w@seQGRPjpc zejOM!RKm?~b?3ey@k0QVd_V1yGgjl&IJI3Z6c04jLN;x#yo<%YBNve4pc{Xi-Ff#B zuB+oUZZUHtH+`G3>pUUhiMW)})bX;kf00@-##U5Sak*S+BC&1$R-fHTwo+}B6q`=!O|oJjVrILcHrI79d~at$#BFCpZCdINuC`Kd zPKqfDUsX2MKy_~FV%qAX6CEE#k@Y&q+TROMHQ!Y!6Op=I-H^-rcV|sIWs|a8+uPYg z0v#I5TiwxFuGVD@ipotEg4R*9J2U*LHn+0IYYpzGs~@9hOCF{AqDuL8Lw2%8HEWWP zYU&@Vkm{hcq|x<#5#}4WrP36yVr;CgKwd%6wOu6`S|)LJ=`YzgBiXfg*$)?E$j#kk zukC%7phtV^$#HL~m9#}|TfgkEn$M=Fs#Hg)_3oojAp`pRqlmf5(|2ay;V&+eoxRaL zQn#d+nF$P!eLJer1}dJG?v!aBH^<#uPzNp+nD@4b@3YT3YLU4Q)GzXzXJUO4d31FX z-sq9Ojb-Px=;j+U%V%8w02X~;?yaVLS?s7Q-y(EIsvB2TauRkn z)i!T-YbvpQlh77Gx%bPb9exVWci;OhRQ~`?@^?f0N>jhlWu9lYy80>`_e=(apJYyQsFWs?DlK#BQ01g`Kl?7}-Ksv*O64NeR0sGu^*bCV#pl zZFbcPEche^Tg54$~FPQplhA~MHeGDJo>71ClhWBpE3$N2&E1mz;NY>J1S3V*BuDP6$cEsyXUE6 zqHcDF93q*o?5)a-M2sNC@2X$OK~Fa{^JDi`B}hp0a{WSQZp_KAGBtGtPt?xiqBTt< zb&?FD>i1Z5+?oFXp?7ZS7(^j1QS(C}_I0Xy3^S>uoQD4Zh1HcnwgeM%2HM%b5*#x$ zGIC|x@V~;ok~Gl{ILmC4vaxddL_L|(T*zr6mQgoTel)X)s&G}YG3qpLnS=qOBb?@jyoIYcy`cg*m zyBFw4Tyn5z2qTs(y@@nn!4M8*WR$TLXY|RP+ub&LQlUjLR8yWfz4l2*=U{}Qlt6{| zN^!Yl;gJ+W6N~<4O2@>!^)XXs?s)3#vvPgYpU7@%ntD3104VwR=**vzr~E^Q^ju`@ z>&6Z^Y52c3NhW#o-FiobE7~q+o3k+Ob&KTo-^bA0G%9?@)Dn3Z2iPOhc zBwVJ+R{0>R!a1SI^3VFnn!-stsF zl;2aZi!!FIjmKFXMDkMwLoqRGDf&v_AEiEw%bbdi5Ag$*OYZip;Q7kg~Fn7mB zF6#Mz7Cj=Ks+yze1nrWqse)Q+qn?s$iEb;;JUDYe5y?>j2#Id%&^SF$p2|LD!`%|g z4p^f&7^eEd*DL6wEPSd$2`Stkv$m_RsE#9!PDib~E>nnC!$5e}NoU&?p@PIk9U$^H z`BuC(rcpmGc)PM3A{<7WpA@Xu*WoP%&(>{|dv2J^q$x|5Ia3yWnPRTy$>`^6+14i$ z=WaE_qvB;ZEH&+-;N;*_m3Jxud$+>+cl<0Oo0%B3lfFg<`n;COz85LY$4i>|YLkRk zN<}PS_Z=KnUlMwXIf|aD7yXyl)ci7@T<~jTxxW#3S{ms&;>@~zK>3f%3~>goq;=&i zzepW=y>El?l1(=FRTSPI7v@FFe4A&o&&cDJ;Wg673CBE4?t|xuYxxpgnf6@=5#cgJ z(oL%_F20U>I=*3xrgkyW9MG5)5|dpI77TDEf7MmjQxQYveZ?#>Ps-_<*44F6>U4OQ zI~ycw@;Pxhzp|;0qN5;`Wa=H)LFR&@Av~FnyDLn>R8or;0f$Ju)o1wb7iFAEcPS<#CCAM>Tn@sM-6&^|d3 zzUUmsmV7L=BDFaU&Sj}sa>iYq4r9V`4|G|r%j;{ZGFv7Hc{fOtIZf)aV-_xz0*eA2 zU1(GMBw8|7$FEh@RV#=`>Sj#l!`&3au)E`umob~xtKpOC`oBav;gUfyjI`{DP8^+> zi<${}n=w_Ce9An$)VCGS_=m(ayec^&IWB#fl@q1n1Qc**IkPV!@h^ycon1scINtvK zk{oA`OT=rig}J#8NPMBv_*%1$P8Hlhnh|})kc?uBc+x;YK*{>xatPUGyPiwldhve|0-GGZafx|>99Uwb+}N8+g_ zyY(#)T$x;Xawhb@?uhWS#^OJ{wp{O)HU6tqHtNt_N;t|_(UrSXkb_yT`lslr-_*r# zi*BpthIo}x!H8zvzq)djj6iNK%FtoetU7(wl{5lQJmMX;Se|Te{VEwn+S)n|uj+Mo z#q9Dv1E*z3Z;LnGd${Xk%hbw=Gh0Uf>Lv2aa&-zDX!@;IBoX~Xc0iZ ztg~ZZfEfKv8FV1d(8trJDy7=eHva(iT^P0Kzth)2EGAc5~C+5uXCVoLw&= zV(4Q1Tdo!8hAK;^e#(}oQqey-WbUh{wcg89>6%hxq=||5N|vs-9J*pEhFOo=}7vUM`Zs1 z4{xa3TI)R?W7xldQIGyEaR`uDl2M3B#IhB305Bm}tHBR^;>*thsZ3 z-7Jj-OGsTYxW9K=nn#j6;M=>R$R!OoMkLNUJEf!kUIXZSpLR{t1M?(bHqyz6aue&0 z&ArrUNu~_Q7+Y;oDZDLG^;$y&;I=RYm4yE`jz1~B^Lueyy?VG#6p?x>u} zQpE;Y8i3X+~}x=A2%#Z0}1o?7xq_=kB`vntz1nYkd$M8g;yC&6}-qVhj#3bQIru02ETNE ziD3ceIN!4AwS&H({$dt)bzQ_tIHMeNan{VNrp7q2GJ7zpON~6a9xlbZs|vbW=j6&% z@DY1^E`E8Y&z>VC-)3R%x}G5@#6N|DvKdp2Y(p?rICSdlj;fAa_@t2W8d`o)kvVlc zjj;J$5L9I`{{S%Mma8a2kg9@{no<_mSNuPQ!2~8jZFl!r-mR8jO@GFHsAQNRs1ll1 zCfofevdKz)LSvWZ{K>u}!r~6SG}%OGBIR<57~Hp8_pID6#B+j#rWj)&R9phE%DAXG zVjx!`C1K)ol9PoWlBHsC(StAQd@e?ctoX18mF06<;^DTave;**dKD2!CL>Zgw)R}# z72%Y%HGX=aiOBueJHj|081wQ=JxpN4cl9pZD4aQ7YDbXAPlbK`#ZFRFkNAHgl15<- z*i^V}AjcOpCoG>=x*!PBMI^AoL`}OgB^=KUH$Gs*HnZ-vxXx&}N#^M=(oWAz<9LOmU1>s12%Jfr;-O412)H&%JzJEh5rG23)4 zT)LeyEHXkB0rf*wQRE|*rz&t}{T1eq-L9o8I1e%>ZUkw4YJ*Mdp7Ow}kkM!WASxMsX3xW#?5s9IJ{_j!KvP*Va5z zj5vVh%_jJ|uc_davJ7Ra=hu&~{{WWdpRbl<@ZDKLeq5d1QgLn>UBmwXtxYBU@n2<9 zaJp)7`eMmmHB0nNJfvnG_D?+ZKIrPt$oSwRtYH3$zv!*JIUCk<;H`+oz3jf3p`+pD z>wp-$wUvK}Dd_lpF@-fSW`4}I8F(!8vQof2idgqr{oUze#&wgIB#nuhMdHIK~BsqC=_xQj)*ce9I(~d46RjFFo;h9*&YfFGnL0Hu|q9;@m=`iqwBljs29J zua10AC3aBI6M%kY#PE7bzY^AR>42Y>M!v6q;dY=u3pN7TBq6QXW z_E)s3@K=Yad_VlfK{S(ly6yRw^*X1|m_DXwTF&23n3)2?rd%2B?6~eI0mft~WU3|s zeMO&iPBm4?h@y_NwycX{$5+8==_w##rie7}WqAXQ+1Z-QfuaHe6N01k zzRK>BrojDed)ms4W2%UCcW&!ZI~1iBFQ>-pmXff5@R{^h5mXH3%?YxVH7T?V?qj9* z_d}4wk&v>TV7$=eFS1d^h8!-dK;SW#Q@>=76^M$MxenJx7bb3jZ~Cb;)`*@_Z~CGa z6EqE1&8Dqv9^UJN{vvo^oj?^FDcq$N)t&upyRREn4ID*K&e!aj@U+jx_?T z%-)~6)tedT)l{~C&G5D@?8`yb7`VS>g}to2m($r2@2e=AUDh_fr&8^Ilqg-p4VfWW z*2?UyNxo7Q`dn9TE0=t!%XP8!EI(7N28+=1SZY0)k;m6&WW0J=(^2cIsYIEs`=W^A z_jQ6@wB1hmNW)|`iAwmh2(sO=8{1c9wrgDyO&D4CS^x`J-s@~OXLe-V5$7Pg?9Q8L zzN5!&_H)PsiRLdy|eO=P>`m%Rqg-J2hz9#RgaGvq$W%Ybl)8_d;+H2+U z_gfC5Ln3E=EyRf$D2#uS%av>@0 zfIsZGW45Hvr*x%5**z>$>45h4S{f;4>mk$OUnv$__@S4mx=@{+mqt_)74eVnqJvTh z`qBRGNBVkmucqrAS=3YECII(QI(K2o*=zlff2yli#^U-W9y>m(Z5`P^D9qxbCzZ2g zSCO23PKH9D&34r~FDBq7$+cy1O*CRHc5D5YIL++nfg_JewbrypQZhjC>O=dbW_ojN z4^>%CaTB*Okz|3Sb}DQC0M#?0VQR1#izuH&eiR2iK;iDMcn1co;_~53MJ$j0mFm6} z@MTEN4M!GX0Q`-*&9O-Izu-MFQ}}nCC*s+9pt#E(GQv;(WlO+m;^CA7PepE@!mlZu z5Ai!Yu5vm994{}@0{tA86kLz$jmu=*F@#ebhok$T%qJmXp#bc5M;brE`U zZ-0eh4z7PGA2t}p+a32%;Pu{Qzoy}S%8I^Gpr#>??mo`9z{tv&s-hOR_gTBDW;?Gk zSaPu6@g~Ljl4N-NGNGlwgl95#_*R27K3_cD%WEyl&KoBY_GMXHAjm&Zp3H$zC9`X`2~m;DAS4>xS;7eX`dvmMGrTYVKyz@UenVb)gAy5|HUY=LfgK7Gf0Pkh-ul&MXGn7j!zvv7bKP)Ev;N%Gg-5jrY^VyF7?6T2!N996!5 z`du%#*>#Z4)jT^Are<>Q-BDBhDGUnj)uX=aLtEnXKjKt|GLZ}ZW#rx<@bvsXwCgD3 zCvDxtwZFRc%AYX>Od$oN7uMa@Pn||}G6p?6EA2e%fbnY17flRYM>(PVMBb?W>$Rrh zfm;XiHa2nHa9neUQd99$r;c%q+xANhSC^;?-Wi7}w2_BQzE?l?<@mb)0H^*s^g25K z047}dy*b(0_FZ))O+OQd9+JOh!IeC9{5U1a+(>kGNX5^fD59jvnYJa@T&vPNwLh54 z$^ymAM_*CoW%{km?CTbNA8T4Ca}Dh4U~c9?XLK4+GLSih*Y;0K{H#(*j=yEBXl(6F zCQW;8%AQFHrz{20DC9c0bH&9WRVhPUA}-qQkCv+kq$#DSE^xauY_7rY9tOF?n5F5} zoi`McKtEI+(*o`>$TAmnNDmI{oACbt6!UyeY7(Z9aqi-}3-fxdW=NGOU7s#nr~#A5 zg55Y?UX(%{B@|%*dL;Qy`nzwtDB=uRmj25ncW*-?OfG+k@aT$CpH_c`QN)Hg2WKa3 zv|TS4sq$wS<9nrHk~!fy&YiU1MW2k*rD$Svq~^n;`zERHjuUROj;tI=MkZ!l-xT8! z!^AlT*7;huKG~B`alRuL2J5RXm(fFqRa0?q{XC8Pt|Rz^Ssa`mDM++wS#e%{%Zz8k zB(v%1e^S>sS?XB#IV1c$#kVt%I2E(b~-W{I351%aHfg zNS%E@Fi0n6(IL-xY9b6S+g)_ALhd9oUG9e+3~`@YWK^iXv-X-#}oj(Y6cKphr-1viuQ*g=y35;{>%gFpi$4slN%v6KF4XbJY|^ve@46sF(76bQOSiJODrb6z zmEDn}7G`jLzI!G`YmKRhp^46%Z>kH%QpL}+f6;dH#5Ux+Zpyk?0fD)VZ9jFKI_4yq zf}Zs?O{!~v%N+$n84)-?bj0*gn7a_(`+O?svZNm>OwQS8iS~aT)ijPw<^^$n$i!?y zBEZ+b?73jA7-Ef$t*)Bvo<1NF12DyMw(D%I4VyA7lJ$bp#^Np6YLZChh|CGE-L9hY zgm24}CjS7HoK7c?@XtOZ)iXVZvX_KHN*K;E3q;SOyY9Oaf;xtG8Fy9k)5jc+F6Q?B z==gg&Qeg_Y>;y|y5#vl)!o=3I-M38h7+JX@>)R=65C-e&3cn&g6 zU&5Sixkc^vTpWVpL?+J9?Pc%vafHOt#wPE7-Em$!rlbz3V**0Qjcnqh(J1|x9%*4ZW6_FOK{w|ST7IQ1rHx=V<&zP46Pqci-VRI?dbYF2D> zvNkrlh&9U0o~ahv$P5^hF*@~g*1X+wl_qN`4vw>J8Eu;Ob)kv3t(nts=j@x zhWD@|QbOTMBlw9~LJTY*O}2}Nen+E^7$X}>!bHf-Jg|2b?X}Svp7^tDq+-#)`nTC| zy*tiTb6w@#k~JEeUr+f@m6^)Kl#raCW?Y)FUnsl(0LQ}EGr4NW#>~f~{+`NFvopS_ z)-gEQg|zv%9wa?4eLXoqayLV4io)pbz zNP%sNJgv+YyV-p%eMir&Q)#+*N%3`B4Tq`O7$g>NQrx)BJpnlz;_YQ&Ah}b3-M3Y= zkCU~mu3p2+7k6}zHPdy3ePPZo>y+}yr2E=r?);6 zX?`gzl(jES12y)4gtaUsQ8R&#&#JWHXZ|R1$;xcLTXfA>j1f6Ud$W5huU>~g^7g5& zq2z2Ww(6RqHxb#FXB4AVOv3KlD$XX+gm2Tcc5T%;x^82NsAh81Qc_=BSus&Cy+LHo z+Mzk~orX4hyY^-3=bU*u>Juxwz0_>?Yc8jO@H*}>RU9$FhEM7x>b@WFoIDn&2a1+* zUrjV!Ts_y3a6S!P#oS7skgSRsoCj3#KB)*`(36_EsD! z5DhbjmBbq!!mW67v#^xby2zQij%@7hZ`l$sd06s|xBb+FqH`MGKsY~s>d%(gmngBn zbyqf2xbk&p(b+#j<&GzI_Gd;NOJ10z)O)(D^YFvO{I-2c>h66#Dwev6Kk*o=Vx?@G zcVtr*Q8(53LXskyry?ZBH|gd6>1pN~aWD5qejPGV^?fpbl$A>r5EmqMbf*O30DNHR zqm)Z6f6}k(V=9B`!pi>uz^5q3h=B8mT$w9XN>JuNKP=sq=OCc}0MlsbAk#))S5`!y z)2=UzM-4!SIvj7mu)3xH0R2>h>i5%S+gHXD)DTMpkhSzi(X&!d^fD)M+p-YzWXJhN6MNZZG?Dqj8luItv-T!Q@ql<{ z8mOw~amvE4m+@lbfYnJva?)1YLg{|iR-8;4wg~DWwcEPjDrOPo{W+YB+T>q>k-x?~ zl)gwzU#iTT)+x)RhFt2oQvuDynMWs@q#LU7FS=(~ zuke!>53G}h5%joaAGMW?^vBhV@!9>A2QwPVI=o4UWV8L9ca^j}*rTYY#~$hCiyYn) za=gATsH|6>Sp3dh{{XXp-C{yKFP-LjvyItW%OgoYTmFiVh1HEreKIym+!>qd5Tl-Q zH*Tycu{g_>zq0450AGk@CYDxpf^HepJ}$XzYJ#Br%U#=ATHllMx0bn5{usOzzzT zFYR?XrNidS3CaNM?E54sWar5s98S)wRv*57Wo5j-7N}uvoWa)Te0pM8EG#Ny2@F}; zYnCj3MVY=9sc#fz(9L~Of%^7kCkx`YlAoL9U^Xt+UR?+Hg!S^x{{S4}{z9^t+1!1-E6-}YKg7645HBqOnB}9hFQ@U0 zKBgn5do2`qz2;R|xi8 zR0lU1tMc#`uiooHcj8_*KNOh2&Doz}XHoF~00*0mOb1r(5w4em@LF10ZhdLwY_51q zjPeNP?9H;p-=?D9gU~_2X!%spwqEvDH)k;!8S?uq<~(J~DBa)ekDn}un-}P{k_~JH z&P~;&Jw8K;*>aU!L87TR`6Z`&C`-g%uE2BPhymChD{grh|H8FDlOI_A|HL4nz?I5#7 zeG>EsBozmoY})Cr>!P2oMwPAhvR1x0+=ge-_uW`@yEzezkVVyRebcf#^0P7fx3U9I z6H~c4-|UA3?JYaX7i;!($TZu??};;$X`sD;8dl2&JT z)squ-F80tx?)vJ1G^8-yfOKzlsa`hGq_VFf)Zz_W{m@NP%rXgBg`IPrA_pqS>LwQ; z@22Ug;}ED8V0OEHh`}!@h$R*vwyoVCeuBD^XyADuINHwIX}aTlUBdtYxR(lMv%ge- zm+ZR=;D&MY3{KrYvZRYB;~?fcWd5sY>m75gbJd?uHg|hCvWw~}`^40KS){B2XKU+a zK?yOp!t-7%db#dW)5nc;J4q_R0Zud+H)rzDKtum1okBbA(9+o(@@1hswCVvfVBBjT?~ z=ZF>UfA&=Ouo0g?4?{qr>6;yuNQXdV$qVB)7)bAI?c|m5YgwJ*>{g8Z3#2%uqQfGdik#BExGmb)_ zny_OhW`9#^xhWmaZGF}`>)U-#Sb7I=gr}MBb=LS&u;RlR9^ZA(aT-~_!y&DRKAo)k zCU_*R4KU*vzkSwxocz5XA72-w*Utr26M5%+ZK*Fm;RG^qi9w$z#qVpQ@s1(pX+Q=h z7qy+2Kf&eYRFOY-S@3wL6~8x{^&Qm}TL%;=UN#8rZ@Ratc&prFqyl&D>zj?EtF3v; zH^HpTH}+lE43ubF6K1p8?T*Z|=JEWx*1TSCgvTcxJw#JIsS6fu?YgR{sT&zQWY*Q! zeObg_N&J-)whZ00H>MZ6}m@I&XH>?YbeRLOZ*d+x9^%C(K(* zd#f%U1TH{ZJATSMwioI2-+OM9jXj?7JGLyO;?h(wixX*f(`3{PG0yzfX1{wW5Z*?% z*52yGR4z4#&3ii!{{T{Zs{a5?n@{etL2N=XX5DRt!Q92J&+w>|jz<3gGe5F8zvzP? z^kbjuwHp>#o&N9akZfPonI;lkDgBKLuU3AZ~ZF{!$bgCa*;xiLPF(5 zZ?d_DclxV)8U7Ou&&@2?=AdfRn*GzK4n;b#@=$UizFg9`cStNp3jJHB% znDH>aOrbQx7=3$-`>dJ9G3k+)75qb{t>ctY2Z#8WLSR>REv5KTb+QY~By|wX*#7|c zDZ>7~c?Gi3eEY|x@h<|T`m;-b{wVsJ^;~TJBH}eYHI>qsH(@&~o4-oO)v?J8l~Y4c zP&qd3`A}h{rc7YFNrvOl)@zxf`6MEtX^u^ z>MII4s->WkCe5^bf9k8~X|t;4#9Xifv$pPOczFK+3W@@ooXyp*PN)^ULW-mS=xf5| zud2$!uC!_Shmp^JYb=^EK9b#WJUX&yrHheK6oN<8*=uF!BOG;5bKxr&!ll(z@a)#BO~kQ-Ct}*A8nu`2F0M%=Qi;rC+vP1$EXdOP_`%*Q0L$qcW2{R~%Ep(K=?zcrCX z?E8w~D(Z`dNHRkcv9^z8*YJwct%f3yM6dW=YmT7mSfcS=WK!`MLWEtLJ=dUcE-x5S z$3;A&>DKGdxb-|oB$D7Q-L3AF;j}~*2RzcYE_Z9IyBU)I!?XOUMnYI>m#?dagt>JuYv{VHGDPG9i@(FF4;jf( z2Z{Q}Q*$PR_SI zia$`#>d`O`GJQ)jT0rW{EzwKqhbH=}AnG6TlH4pnT+w|Jq}^FvKN)>Km0(J1Kiw=~ zz#mZm0Jx7P)qm0WW`5F8=^h!P+Fh)H48+TTb1abcW zOhv8mwX9>qt2{5nr#!iBi>LfO;cDu0%4t|zy_dFgKh3(B-agAX)UH~CgTqe@V=U4a zyF06xs34^gI%xj@bz!ICZ?mFC9H_l+P41PYxn$6ND8o3Yc*skZ*sBwMU>1(aa&A~+M9#^@w6Igc2h!IU?6fq|LRr9CeUzqt zT%(ScM5H3jxuVuW)QT9}szwJvsHb;~xnkDrH%&^yeO6>RZpGDmdn*>Jo}I)PgC@&% z_CvYRUSqz>)TP&@)~ZV&b|7ngl@_ZWPccuNMY=x^V-mc~@A{%gW(L4p6kM|>XxiFp zoG4TeGNYPC?Pl38Qusi}BQ?L>5>pd<>XMrmh?(!ch@ueS)q__pP-EzOU)>V4z}!e# zh<@84#1K-*?heA_+Osz6bxtHeAbs|-BUna97-WoCM+bd$L#tscuxQupib4kw6pZ%1 z_Sq>vObp;pzUd0?Csl+`PcW0aZKCGlib{!INh?m*(Vx2P-qjSYapQJ<-IZzMBo-*e z&iYxlS+N|Wc6de_w#coc`=c~tmM?pDRkE~?%OG;wXGw9Yqobp87VBZV54uLJYem7F zicXgP$!R457hraGwvTPsDZy)`;uWsbi`v^OqmsbUOAXrldm~a+5;T#y$q=f>ue@yp zbj#WCmEfr{?R~wMwQ;t3 zeic+j{{X{()p(U#eOEDLTkjj^`xnt0O#>Se6y(m$XJ=IOay)%KlQNx&#_YM@AGb-~ z!8a_2O@DPJX4g~*iHhKFuVh(4!X}lSzFPY(vN7@;Tv(eV+;%-#+TZS~1Fi1vnunyB znVn~@TIZ)lN6U%X#IF9z(jvPtNXwXrxh~fxRy48>T*(jY*WG#V72lrX_VydyFC?7K z%$8{yc6Yn(gDJdZ_U^Meu9vj;cW(DlJ4bhWf6**cFuV0W-pM+OhqaiS_FA4g#qvy9 z5w)2mQ&KSlgnO#Vq%$|MTTgWeL7do)pJm&R5B0;ZKky2YI+-xL?y`m~jIa5Xfr#1h z7rnH9%9(%$HjjU6uFg5AlQ$@{7F?xXwP*KTRdKXbvRuConl569ImUWBqv@+Z5p5Z+ zuy;(p4onjtE!{{XE{uP-TwebOVZLtbpZgxMT6gc8Djcw0zMn3mKF#q zO`>u1Uw^VE{!QWk0O9O1JI43BlNPV=y#j_fj6xA^rfa{#e+-R=HgaZdbWfo1Iu8TF zd`4P|nz>${`VF!n` zevl46T`1`P0GoAg+$JcPae_S_?WW59f;SnYxpcnTY>O+o6A8O-`=uyGjq@;$MsJmM z!=oSv8Dz_g6uXguG99lQg zukCG=WpQ$DV_Qug$ygCTDe}SI{{Y!YS;fc85aWGY*$@jHa`!|Wo-_JoqL6biN?f@a z{#KeC3+PLyv$n~p3c?`Z>Oxqqvn0#J|~HK=_FLM!Sk6=KQ{>*nVGR zW~t~ngrorzvln$5nt10PzFph=siSY@v(cZkr3$PmFpi*I^3v_HQk1C=htzq#9epA=~&(%K(YQ7aXQVpb!EgvOs z%#KNl8mo!rr?MZHZdcR3n;~&4WdV0`MD)Jftp@6lH0?h z01K4jhc^t9n;juMecQUJQt?ToDrusqHxIJ%3ZDst(-gFPOyg(QU01Nx$xp>#lcN(= z{y;y&d0EIO^X!dS@S5Ka@hWa{Lp)|J-zzR|dTQD~sXZxSwoS77Rz3z*u<}Z{tlx(v zWe6ybAse^)mgTJae8CA+M;2W~$?hFq@Ju}XnX=Z)-)cM|4Hr)dsbSC5C1=TV zd~d=Pr5vz@B{6#+rPDjVqvIZJRbJB6XHO%L_RDnTHxlOI6;<)d?`_pb9pQD}9;oD1 zQNQ||R#mk5b1>5W%U?C{cXaof9(;329kk8Avg#o&F~Rs$Tt+T8^o;D+)rr@bQ&-ke zL{Mhz54$*`4Scl`1QKV9Y|L+O*%noi>!0J?VwxQ4kv^E2${t@7hMmgVJ(3mmP8DGw3)%O& z@=gKbP9q=k@SidJ59Vd*e2I9^4X3M`@XGs#(rsp!WI<2a__oIrS`J%|f<_iHYCtYnU#{8z)WpDTGI z%I^>Tm!X_qex_P!E+?q7b}zExYq)(+2CpgUh=$*X{uVl$?lmrYs;(PTHEh8ok~{mZ z(}Y$%XiE(EV;EhmxK3DkuQN#>DqqDH;rqA!6==yNHFUhGTst~ovFktL3=;V~dPsLz zysw`jda6AoqpVJ>eLY$ZQV%anC8nnenR2NMlWeQFaaGCIX3pNq_LnbFv)y*aAv^gA z`9dD9%FdYjj7^l~!12wjOrse$njptdbz-d$9yw|7m*M=!mO?lE6Ed+)m;<{ggAo2U zf0ZPmH!v~olB|GdkNPbC0HUxSjJkA7TH|Kf-B@iaiu5=H^iIsiwrAT~*%~ zglnk^3B|1a*EhnzAu^$q+ZNHTu_e>#E*r(n>LaJB#^c?WSIruzd4sy+=BA|@lgu^v zR+N)PL5TBO-*m}m*toeScOI3$Ffh;MPu2EG1y?dImuo)CKtf;CX1dTdqxD|Sg)4}j zGTpD;2bs$(GiA6WXOovxYkR1ngq+Qp+udaGbc}!vbYXEXLFlJ!zY?TmjPCLEA)YPz zrsca&)XikAPfUV1yQu?C!cuz4IBZOP1fgzFlw>-gYV&VrOh={uk4tK@GA9k}vhKn- zA!Ppm`;3qzk+gqMov*ruK88h}jW(-iYKf;waxPfA~8L$Q# z{nDC|n6eXMyKJK~kVYkCqj%?EM9!p5VD5||6pSV5d%BRyL^~)GvE$RLAkM@;i%+_d zmVT_Qbp|}i;TdUjr*!fNJSk@HN~b94{Ic=gtO3Z z-$dlq84)ybo2VJP$A*{x0A&SCR;0>D{70bst;#(7$~MN&x}1zs8@1Za+0tcsCOA3H z{U`&DPZ+a1xqfTzsp_i6mU4%Q(_Y&XGP0+pX`^W)k?*sz#(|-X+C~!l_EN%e3^{qa zH;&|;rL=)7)-bVOLT>7{z?qnNL+b3-Wx2$h3Nbew5d}G7%z0!PUsm@+sE|e(f=L8T zog_j~$_)&bHxGT%69AkfT+t$Tv$M9Tv1*^h@|?Ujp^UyXb>)>WjD#O6y73{DROBV6 zvo0R2d8Fpcm(_QZ{vg8LPNd~$v$u3O-v`wY>`iuMtM<&ElXtVWpWQGrWgCJ20QpFb zy$=5X_F8MRt;R2-MC|X<-}giZcGBn(^)o5n+9`5$44v(L6986bX0xi{C%fv1?&AGS ziyD<~5;%+L{m`VH+V1!L)oUNSy35;FbWTssnK?6ece;RFo$jF(x4L1SfwZ#RnB{tI zAh@|{`=W@%Xm4 z;7T&8<4}2q(aC)w!8y=V6eSxIGidhRc`t@SDoWU6X&6uEy7sCrWT6a^kKy%QdHj9+ zt#|VA@yG`eXzHjrkw*7%>St{ikIBU);apB$9bD}lkEHL?Ouf2rGCrbqAIt8z58@vH z{{S2x5Deh3}BQ zukNePm_vw3R1ehcuDh+z`eu&X`mW{dydWSyuj?z8F_eF9eE`l7t-5HtOGje;o`zIEL z>?T~dcDru0ap!9fe|?c>vqz{iUHA7i)@tBWG?~*}Lhw z(MHg@&m(Ex&AL2-&l^nQLO|!OKf`?27}&OwwcbTO4#J#kJGr z2OBJG0Po-5b-C|%*_+u$Lwn>P{_U>IA}28}cw+Wi0dqPCGHWAbGW#XuAmsJnqd?rl zJY-^R)^?mXAi3kqEnB*TMJ#nCwYyzvGb59zY>GwAGZ7t;R6PM_7DOz~-2$#LJbpF0 z+(LiU0vkW!Okn08J=r=Hayf}|r8ahblOv5sMwzlCmyEu!3o;$Y%mH&4Z~G$*FIgE# z9m3t#6UitJBro?*%4O)1&a11$qA@yf%N1CS<1CT=QG9)w3;~8x<_=0!)g2jBTz}ba zan7q8oxaI~=$!O%%6#Yn<0jh3^f9pI7H@v-l9btc$3{@Vd4p4?fBniM^4=flU-eKS z38TWIH*`t~xu!uhatSx=i&Zp0ez&?dFJvkKzx}xFx*XK)R3BFDWd8s%G3z_K_FBp0 zJUM06-8mN3G<0yoFFyfy_!Yh(MGq0Fil$7O+p}z}2tp~b>G?+=r|oCiSrW6!!Z`;m z+0#+N+@T$>-Ahkaf1=ezhY{+x!f-Gt+CQd2l9a?VeH}klC}eVz4BE)@4t;pClyWuH zVOK9zne}39G&Wr45b%!+uPEe>j6wUmFHA8UeyBdEcn>28&BbQ&b>y6Lz}z;bkfWuV zT61C0^SfW=m!5c&z?@%!#5KG+qAHl*xG$x6fUpmJd$OvIL!qCQJmgW4Yt#PdyFQG3 zx?#n*WjB_n;RlPA@@=k=E*Zq?VJe^SvvGZLW%bt+p&F=5938OHBf_|JTt0`&<6zy? zpCm&;#3jf=f^|B69mIxMhFCGnY?s%Rv@pgTx^cc<>V86=Zkmc{?#1d?wDRxa-w3D( zp_hnJ#uCTrCieMWsR$n@`K($005fWwsg5d0h^LeQ8+Ubs85BRu%J{y@=bRg=&LN2q zN9F`c^w&gL56MuJMPqMw-6~YD)m8Z(F&<1saX-lF9DkQh2O@C38!PodsAGz{sH+Z~ zL_lw^y60-f9wE#!iHEPIK`T1yBIW-8f{Y<+oO-vyTp}6b^2J4AZJn2&pZQ&`*VM-i zjM9&+9}>2EfB1D_I5l4`I*U2Kb!l5p@Jq`fY#elNl~*(`(baZt-}hZ-HhUi_TL<*uVjR* z(HIV1qB0@&gQeMQF)WJqbvRj{ESq&0 z++U{@B*F3gZK@FtUZ#CJteVZyiZm_E4^_~D2>zZqyRuHRhru>78@m_gWo9-A_jEZK z$}V22u(^7wNg8Q+Bqk50>0qVEqk>R-w$86<;PS><8@s1~Sc9xvF3U52i|IpCPdrdz zPiOli!b*y9=GDgfE~MWct6BY&DhHY(7`LT2m99pXzMihONJ!jIvTQlBoSd>3x5{>- zheb6!m_!XD{wsG>5YW#Vd5(ECx?aSIY&f)pq!1x8>iBhKMnusLSGwk*Ib!CS4o#1` zwW6H40$7u=cl@c9n->ObeXnloG;_~Hq%t$*lefa1JGh@tzZOU_re7!+^KunFn;VjclUT{!)yWPgiuYWJUcup+-&vk1_14 zDeI)D;&n7!w`@D0V&-yoAp>pDC6&6OyL=@L<$jqTPt26&Ml*Hl{_1NMe83PX2)ezL zMBaGFfLZ=7ktb=Q>5E@`rXUf9E^Y+R-&JbGb!3$X5fvPMlGU%O%1I=tiwT|nSy~=1 z)fm6Ks@dgmEW#0WlNteH=HM>v{gQr03FOYWE}rJe9NMspI)-N<;VVDFaxESRnlO}O zu?uX=mYa#yaH-_;JRVM0=4H|zomV9}2wku#GG|DxdJZ{9Qyv`m2Y$}pm17LC*3+6fWcKK){CjOBwtg}-|E+$8ITyeJ3q6f=O#Id%>Mv%5oqJ4#0O5wF_U6@wf_Kg z>WE$`&O&JzyE`DnF~KQ$a$$EB0)c{lbR%~BOqJrXwC)2;?8MvI^;8sllprIM;9rW! zbs715<0t#w3$7vSyZk=L@RN*PA~x@;v7IaiQN#65)%Z|3pwac2JGW%ajggF^m8t8f z%x&|cv1w_~nqWgtMfXv}KqTi!U@xCa5mh^%q54bNR`{B~lSjz2T!muf_SS2S@pPjt zW;D)D4Wm1*V_WW-tT%GT@B5{0u^p>rV(f-ZX3^C5Lp>d8GiY0>Ulp4^i!G|&vtWQ$ z-7&t(TrI{r_&MOt8EVeD&L_iY&CW_0jz4DIlNro%J@#822{Ta)l&)OBXScFPJHCwS zRM9&-EC#mk{gR~aFV$td@7*z#fV(s5%URhYcYVnaG~AR<*@`_IR7h{>c3DO*Aq|`R zr@0Q$@Az)A)JEly=H-a~EPd6TGf7d*s+gVImii$?8B>6ixr3IvcKJ<19JK^6QxlUu z*rVt;t}@w9BF}gGDNzP3jhCo!j}MDTGx19lkGHU{4~fP!9Ad7V9jr2Fx%YiK_~h25 z{{Yh#imDLGRcS5ek3Q$B(Rzo=!Hb_;|+??W*bcbhpG=^<13$}xN`UI$n-^|f*Jw{p{EePvs)BN$j!*~myZ-={FlJGR^**{fA5??&V`g^uWUQufIP)R9d^$dY%Hjpq z&t;H{Mr1(cueoTexsHC0W-Y6?bvWnf`k+^RuA;Yr+#|%zzScoGZZh=%gLicRkg*8l zcDs&@vmuxWD%f4V$p&fgjCULTluez$xkIb$m&=tlb2DMtnLP_QhdSkDNJ0){LN|rS z;q^ok%sIom{4Jc07=bg`yD63=_{SjMyD4d0Sb%_{Z}nM71)`5Ti(h>cTY-)AZ#uWbmT66ez(Pvu4rF4RD?`!u-K=Db3)@*;} zC~-*i#mTAy5*@Ii0Eut;7t#~45Y{_fj~ zU^QGs;8-@pdnDrEB9v9 zR0g1UkM!JfAI1LwRe4E|D16H`(v#E29EDREVSeitX_csqP7vm^Y3!H+5B;}$dsz$1 zw1iTWgRaibwJdqZ)-+RD!C{{V&5a1kB#S_+D_Q@L%-+c4LSIfsd{Doqh{`Vi0HVm` zjzZDtCtbjZn{77h3>0(v~OQd zQ3SZ#bZ7L+qv6~s_x7>MScvPky0_D%4(B&6Z|v8Z=VO#@92 z^D(=sb08sJBVAAGVSU)G*>F{rFHgn}ieZyoiwzf}Q$-yd9HPI)-BIyK`VL?rCiYHj zQ`42>P{MRY{{Y11GmlSygzQw+95lIgl7Ypgq!#}GbxYzRc;cn&b{=yzmuEvz64J*E zv2U|1-eXgwr73ZM%2v|$FNKMMr|Aj6OAg?%9@e4)200e4$r;*MfaL>c6j%VV=zX+g z*b6jXm%8ir%odXG9Ar!So zYNG~|u6^}U7k25k>RNlc$yl2S0i9GpBw~<@Cq~vjyWIk!K#$b_0Cbm_=Eoq$&;D0N zrJPulxfwe$q47OsHw59;74-**w&*pL1~QHS{{SqxZyfOQ@pU9r@Kj*gbt3-&;#ly? zsy;DBH54^$?E2`T#j7LWqY)KI*tQ$4bHh9n{{Sp=xpj_AW2=0ne~4lSM^7oh$70=U z)Dj-yTySbQ$ct{Pt|QZtsiBa{Id}R{{S;6%@mao=5pG|bi)&R?rwsY zn38cJgk9US*<~<3MI@rv_Dp2&9uW&S!b(nLlEw!C54+tc)?bm>ZTMXmm?w@6`#N0W z%M9A=j!=mD9ho>iH?Bj5jsF1LfMDc&%i_s^Y;i2~_H`m|oVR4))l|{Eh1O2~$YAnE zCR01RH^!;?1aQkcJ1veb8A^RmvOXtC&m%{P;`;8(B72@~r^S%)wr4Di?b#br0VrH= z_eyMlh4Q;PhFOO~nGt$&YoSKM-QAu3Q;SeBk;f(`Nyrb6RyX!eOVS#?sVb5BT*5A; zoLZ~mlX9_&COo_8q6gMz31oQet!2h>A(6jTOT_1T93TOAe71I3qM!2t2#-4LeY8r} z^-axzqs!YQwL!H^qElEO@1hM%4+NoB?8M&*4M;?Jl#r8u^C?r$7y(8?@AG9DhzY$e z&EHj3Ektk@3_JHyi*9JKVPu@uF@%OeExpwxeP@*pv9@<1u4Eu4UY*+Oo+q(xi$?aBS9HmYTD|8n z^|@$(LeqMqWvJu0V)TsOv&Ma0kiLMIr@;avX!h54t>A#3)#DzM=c^?XP~#7Wyn92d~` z`QDzJ;jTYP#c>Kr9sTvX?I}zuLzYq9`#SRf01eT@!lf@MO%M=;i%(zbyY2@goPLqN zX31_!%{)=b5lm$uV*db!-jxYLDJ18meeztpI6Qt&?m0)!k%`G(7rAv&&X?FG`lI z$)k3_C2#rtR5`H3WLSOOQebe`jY&JZVXepALZ+#smyqy~v+haJj)HlHY<#;rzT4=X z7jABYYkRWe_;q2$P;pbj(mU?X`hJS)nBA&Ft@Wo7Pi{0gy(2s0_yc0PKix z1jo!Xv1O*HGl&~z;@<^p=#MZzNwe?T_D%+>W6Ew|7OmR)Edbl5c;m~nH?oM?pCgjj zOPxaul8kncCz)MuPgv-Izx&oV1q#a|Dc zDq^jnk;iL;>dC1iDvW&OvE&;v0P(6?&LL65A*p7Nbh5gqsKTq1RKoo`ynphG&*{<- zOmNcUBrH#j#l`;s-4}$^O-%?N6lQz-ZkU!Kd5U;Nu3L?)kg9~R2xbi*Yo`aLolL`3 zhnARxOJZWz_D{ybQIv*E?~Siz&+zydA>`)5?X%rjQh_u=a#Ua0o$Q?$u))Z)?BA+G zj7C*4`6!s#i*j$kj}h8Z#z$su_eX|8knz#`*+oqpMNcm%q`0=lb#Z%BkEYw|rzSFH zGCnT*XqFQI`dKyGd%C2>_FAdOAL?4=-(-gsfxtkflEVK0iL}*QlyS&XNpbm5sDX~3 z9mT!%OC+eII#>=#W^?!Iy0oOI8i@Tms+nLM2w{uWzP3$J##G%}zi;%ZEaG-!63+Me zQ<#|gZGV)B!1V>pjNaYdA?D+VhA54m+9e}j5p^Bdi&ks?6&eX%n<)C6w|hEfu*x$N zCk!96q0;iser!S(?##+oAC{m%ax1sPqEOErURjvr+cni~Ok*}jj@vsD1dJ5LnZ{#% za%N2qn$IVxnJX&?FmPtm;Zyn2r>5rh$d`wU$25c$RD=ZEf0<^OxGbcp!WhQ=_0<$J z0um-?Zu+WXD#(nm55{RPKP8T_)VLu zYaq)ZjDJTbb}Kq@Miiy}GZ(Y_H>F5=aS6bF9U2^DjI#&(q^n{P>gN^xng0Oc9@n9& zpXq%&{>YF?%#2D~Go&b|DB>C9$cM9HrBZEGA3C2V_8Ti!Bg9J_zKzG>BTED|aU9Xc zV*6Q7%)C^^&d(+*J%v5PYH4b-i_E-oj^aUNUgj*W2gG~^TDax@XiOhqwxjy4cZgBf zcy5-KUK_-`#q`2K>WlSW#XKPp$uw2bn}4hQl~qh7H(UjQ{lDQ`zeaj^^n7QE4>yJ% zH<;zqug&fIEM9>v6rbXdRE*L808#JJ-|Vqo{{W*R#+sujxrD=_dNLUz+3(p?U@`#V z(phW%Wov`AHZjSrE2e}Z`kBKlI(wi@5>sc&{M(?$RS^I=LB_tv^$CgFeG@$XUIQ($ zF6%ay>0UC-EX@0+p=M~aC)4h=$&O>rE3qM*MHyktdv{c+xmlkMOoYg}-ye?YY22Vb zpt$@agN%Yv`=%^USNgYY614&o$PySe+hk&omK{1fe5u)r9BibGFmE@@O`g_@6i3DzP zb0#~xdnbe=D9TX=XMNIi5({*e`>lDA9Ew5FyRAV>SJDkkAJo+;#JGR>j}QL<4wg9C zhgK`1Rn_N&!0h(k$%=aTB?0BT-)CoT>chAP3*pU65JE&Q-HDZqQAJ7LT+@6mK&b*8 z+RJrk6m=Y;#ohZVa?Y~x$uHF#eu`7_r2H)QP>-ggJ2Q`GS<7*kIL)zjq|SiD81BxO zl*Nyc%WXashWQ>cwuo6eBjv_%HQMbww73IyxM^GYnd|lm8ibd0#vmnO# zxn0}g4yUch7kxHSh`CSoJM8M!g3Ndc2z4?}IR%KLcIxiPvp#>*x9FD^c8fO#x~NF8 zH^t**om+s%*B#lrqh=1=!qNTE<>k2Uid@$isg8`fu?rD?TOshe^Q)siWKP{$HIX>u zg$%xIp&RzQDyn`a)5=3&2Onlx{TSC4IRohlk!9JLC0G(Y9#8{jKZV^{)=766K;FgP z%bKX>$tfIjKA!3^&s6!JI3ZXi@Qut0KrC$J=r#33KwQVywu*vTFT1XGTIntss+TkQ zOhraz4?cYx*=vEp&6mtbH)d8`VrPAeL|{day_T=0 zXR;QujqIA7SOZiFanGsUYhcgD4y>dt)w13`%Qh`g)*(D(FP*eorn5_ntF9V1VmX58 zYRXb-z~m17mZfsA-4k;o)t^LT9$Wp9sG}&@@+Q0J?6nva)q@xAt4xLD7nrmsN>jg; znn9RfA9Z*_F}dVccG*@`GfNg^-(?^qosK`IF3_e}^65Nr`z82{Qb5BUJF~Oxc3HKeBEloo z%5-d0)mhTF_d}eXAi&1zwt2Z-ak(A0K$mvv=F7>ndi`Xu6U7Eh8)hUOK4D%COvZJ8Sn$@kpd-AgIx{e!ARFak_9*#Fm$;PTi96Zag{{VIEzB}-JCmAY=+DdVX zU(U|FFT_3?;v6V*am*X>G9lMN!F*9!!_FGfts-{p?fsWiOX7&Q!OuSsgB-gu@yb3Q zQ8;4}u#o;{vO@JdK3N7xNv*w_>vrsC9{Ud#rg?nLB(ebr?T&`5Dm+HiaYxOLLO->a z&vI3f#|cK;_Gh*#!_3r9G3Ig=hRt&HqTEtz-?)E>>5uxg5{WO%@k%vu zGdmW9&#JJL-ny7-A~DIg)7cNp$5$bku?dd%P^QM9e2qm&17q*1)D6i|%ELDk{{Suh zD5PUJd4Q4g_SseOXn9o>@6W$`A!e)r9x3KJ4nLW>o_y1bq7#_jbSTi_efL zvV_E~x~B$tV&zWw7G9?g%C9<#D!F6H>_@JbWNF7qO~j%JN)w9Dzo}kQPaM&IEW@9* z*9%chHKo)|nCjU66<;yQNnZ@nyrvE6ZJ+c;;g46QyZ->{8Jpi#Gl*(Pxenvg>az2y zUl2u4TMaEt6#~cavhQhXK+g~>v#XoNA+#({5emNyrKY2y6{nO<GMNM14sL1(Tn1=qs$eb60 zKLkEhHS?5z{3Cpre^m!pkkmoW7ePv0p0A9RDhY^rJHE+2e<3%}z17bn4Bu9Jw%&0!Gcc6FRaTCNWP6cJzQXwUdr zUO`fFMNKa-YQwN!aOnd*6VEPj;RM8TZ_KhqT_goGwSzcsDj2LEwXRLWvK^{CxHW~5jt== zvjZ0{;>5Kz7_>#wM}NbAN)%BIEojM4adO;Qy=u;x-a(LtTRzr(P|}79XyrU$90~Wb zv8W2jA~_(HpS7LQ;)*w^{-KY>w7O)4#64I40Q)i|RJRDL<{u`cm`Hm%wCS2o-=nI& zBpm8r<)Z7;zx=5WHV8B2+*^LHO3+zG4bLxDpD4ICeu2MtvO<Xx29X^tX8Z(>q~@gOqJCis8MmArnr zqh@#bP8ZYurA7Y$%IkFh0L(|#7`?w0&{Ts3Jyk$WN>7mLSLm2tPFPH24EJEgtl!aC13c;oDfA(0PYh#r9qgYzpJ-;fr zqq~Muy_r?Y4d!y{YwnwaAdInop38BY2j)2mLU`-4gw)aUheG+)KtzH}@K!LFGx2|A zLXiDDKndCL-AbgK3)lUWbZ*RpBfDf$2TIlfV{T7bz5Wm~8E1^*XK!{>DMkLE+1Un3 z0E6kjQqC2e!VWvS0XsL;6KA&UmkG1=vmy(Js|;QHsvx5-X!8c{%R>B&gg*9BCL+s_ zUn)l-%`gp3nb>U4Wko@nepHbUzrqD(G0B~uUxdZjhwOt>BM)T)vO-ee8Z&k#O4d>w zd3jqq5ZIaj01~zwVj&~Dv#Do^9A#{KItz`fqZq)Yn<&2M^OPs zX8!=X=D3|1KwOdPe$KO)U=&f6F=NktetV|q&QCM-soy=aQ>2B)IQ;BvZ|<(?@Bz#I zR?kwnUxA`>PI- zF~%-}`)Y<|nQMEpoZ6OdH-BXUE{z*iR1Brd9%Hrt08LhGL(ONhmM$hnME;a1x`UX` z+9)G-5zIeiw32;M5-VTfOCoXtab=Q=KdRUJAp=*^L5;ngkYLPb>JfJBqSVAt)Z#<9 z=(6lZnHIg;>pFtsEY&gc=Z@h201J)c^zqWMR8qv&U7mdMJW1NxAk{;hGDc!H@1n3c zh-wOVAxpQFn&Q^&}FS%p#8O7ovA zRO`*yQgrtc&Dqv@=k>0-SwR;nEidwejxy@5DTA9!%x1bupm1U=RxS455-O`tBE(%n zpFu%A^-R&-)wbr1)VZVH+1xofk%)#yS~~bVu-?AoE>6gYw7?fUl%5E zPY`1-M&q&<4~v)7XTG@ETJng%^mg`prp9$uTu&t9^j)vrEniDj`X)hZRfJVrg_7rRj6trgpcZE9Yu{(O>gYIBRgn%7j(GbfhP*Q#bTG{k zzoyo*zlIqP>2frEoiV~-ik>)W;*%>W)Yb(*5%NRRZMCw+>-cdxs#2rjg`;HqYN^f1 z;OiTcX|n2~{%&4G4w)!lzwKoz!{gYc*DbGO9@l( zKsWB%{{YJ1xOWSx;dO9F#p#YRGt%pacFnIx8GS1bhQXFkcHD7QB?bQg4&Mv6@x3w7 zLx7i4jhkIpJ;Uhg0$=|CQ-r|x#M;kq)pO?D-E`|W3eQAs5Xno{-*4=X!-(nTy+|du2}DUa!re_9A!A*$J6&+kB49alhjvl zmF6BAmP(p!F67<5K38?&*~%B{7iaFd`8cvS$rl_D?fdw7jAI zA6EyJmkc%=U0%sN*8r4Qo8w$vFG>GudIQcANRx`Ez*pfU`hEwrMk*wkoY?zx4Oa|`QhN7S~B@3Gowyw@9#PGV_0Z~O+h_mC_n|ms* zBf~1;&Q57r{{YOr`f`L1I)ZQcRQyU9C5xX7MW*b->P`)O&sa57a{mA~1DDH!TbfbJ z%!%A@*?W%};Sto(&2xJmqAp9y{6)cL;nQ;?b2i^(H63s8_lVP!zFM{bvsuO8OdsKU zhX$X_7z`NSm;V6M^1eroccv{f67I{;d?(@wID1D=QK)^^dG$??q#-$92rHu& zs)a;Q%@~^iIpu4+u5-g2QVubIOH>x@?Dlog@fveDib_Ikz1WuZoWeYt$59P+Ri7@A z#@Z>t1g%BoqAQ1MrXY@>YKNLo;Cef|YPBGc%l%ffXx2SdqXVLdgeH!lj>@Bm&`LrR z(^NY@zi-ual#EVt;U)T3jAJ+kK2(fNtJ~dQWy_32c<4Y_*s%P6D4dxNo<3;w?SIUy zVzburX32rJcO6L*kY)&BqpPEW-YerlY2yz+yAXzbpEr-x68aQc}-O8BP- z^*`dW?RbFmDW~%SR}j73tjo=KcN>F?AC;j9@$TeSbl}&g@O~j3Q5I9bN%~(!(bH7M zRRbCkHSv1Xj5EYqGrx9s zRdKas99lt@qvQ~DKF$T~>XJ&(q2qB>Oja2J*x%CqmtF+bA{7z{7-46ZA)`7v^S6$9Emx{nadU zc{w_yjoZ5r{{YH<3W&}hp)7x8tz^Ymi9^$;{{SlIxZOOyOuU4S274O?@mDiBk7m30SAJaTzQ*K$hBM&%hCa>*Zjh4oh? z!!HjQb7w4lR@D}1mkI=}S1Cv7d@jf*&T;@b11H+SWY|9{FzOtXBYtGu$r~$ts^3fX zRaN!*)N;n}Vb<=s@M$29L!^dFZH2GOnIVL)DZn4#$S5>`HQcg3qq+bN47>q6vHXAyLSHox^jkMsVw7jzeOP42Le)NYq1@EQY1R-m7f4O(04`i3pF^Hb?prf|y5#r)SJGr0U#*MMLihdE4Gj+v;XHOvEnd<is~T{#Q;p`CESC)5<^#mI*^%bF}q>0)wF%*uVITDM z`(IUw#Ny;`c#w^M6UMkryGl7 zIEvFS7-Z&588*A71~7=^BD>#JsN=l+z-DlCvr*YfdMtU$VYS3&}XWf6{lww-k?v>MEe63AlVr?cYsP5?-vz zDS?^a*-9vFQOeBRSrgkx@Y$xCmzYh}?PX&KvtcyXbWx0AE@WgXQEMIqR=U+?K3fDO zCMhbD8gS*r7t7&2SQn+`{cHV|kdU!t0@i)f_HV*lse|9? z+-%+KnK7GEkWy2N#(T40XHCpj$VXOg$`u&R1{}A#lA>IPuRDwOx?C*@;5loq$ko_z z`Uzwvd>i9cS>fu)IIwd$uI%Nvaa3t*Dg7}kx3lP@(&RD){!}Gq46w7Z)JMxBithga z7Fr1aH#gPl_(hQ3KJTg(rEE&ggKn6ezL))ws28~PT@F)V9h=#;QPqTmWV`*8#9RP` zgi6}0Rw0$cEHqj+$cr76@0c8>W*k?-mXK6tE0ENEm*Y|XZ80=O&GOiLu^t!20DmJUodW0SC})F+WnC| zib6r_>1Wk$awz`*4Zi8%XM{a0piVP3PFH0oKgDGkp(q~A{{a1}sA=S2%ghV=w(Fy- zfFx|J`tFh%R)~lj(p{14?l}%R5=ST27a_-1VO&QMiPg)H?pAO zl*VC;gOL9Kr80+@#LX$?P%Q7+G!)_y=M;A?%&jYF20DWS2^!xCng;;_$@+(~r=muT z2wSEnx60jgGBrOmL7)7qq~(jl&5fBOQyIir6T1dJ%Qu;8T=kK_j0Y`P#__(T?7B*7 zF>okeH}_{(^e~K*2*lUPUvTp9c z(iDXw4qpzE<*^U)=l8mj6g2N44LdeprmE(eiOw#s&8ig)anhV~xfkxN>5YKqHj({Z z%d)MhTf}Ja++X0A9mFDWl=8b@wU?)XjPPRm`z}|G4RokJCLBH}={0$fRyp1YAcb!zC2%6X zy{^j4TxXEsuH}@N-H#tjs$ztOzb;ISFSEG&DL`_M5{H*q78BG-l$}hq4?)6@nSmP> znQm%_iWn+sToD_4SJXx6iuc0JjrixlWs6@lM~W#OhW59mRZB$?+&Be`!XR@s*so(*Zkj!o@Om@@k_Etl+ z5a3iawPq1Q@0FhyG|apchtyBasNwMy#?C|u60L}81WaUSAjO@Z(yTnuPX{75W5fL2 zN}O~2Up}1oh&(I9&7P8-EqFc|oS48lZS z`C_^nTAE7Pq#8K^&9@g7o6j|=-%&~6fEp+y{{R)ChzW~+U#Y#-+_Oe0Nz^|SclkORa|6kO;gWz z7yK`Wf4bj4Ow)6~F+>$cRxbB%QqYvH1Iht+?$_*z0Ub&5q!%W~R=51E(MB{pxLBNn zS7#>FQVY{abhT2$I2EwaN$i;Bb0m)!3*+3DREyL!RuT7Nc10M-#~DO2?_suy4nCrW zlZ0`aivA^7Ma=v;>G7hyp^}uwKQ9~N$E}~Yd#&**8an(+x-z(x+pD^l3!smMw7i#h ze#LIj*=Fvw>l)(}5Y&;&8#zUfLoRcO@aCwd))vL~*T1suDaZK;h)zat^rGNR20~2# z0OhsQnjbcJzr$sb6*v}MnR$&&bMVT)D^nSCud}#~KQ=z7zxk}VUledKor6;D174@nQ?CVU3piE_$^fhRFVWY2iHbi{{RlCDs#f4 zPnDa?Q>WSdF0z-4#gsK7&E3B<{45FwinQj6SCC%)8G2XByf=u=N7qYGSNL_>a6c4F zOGV0=?nArf>P)&T=n;r$VmafGhaFs9^i5DpPsQW&l*C2a?Ca)l7kHw(kI^3tj!Yqa z@z9OEo!52z2dS)YH4SS>Q2^baEmLk_k?ee{77{yO@ax%AO$Dp|jE>jueHG;LvqL18 zcebqVmVo~Nm*@HzzYC|(2xKNWsOyR3FU^jY_FOlMd@sYeoV68Hu{|`dS{!9>?cI6| z@?q(--%o@Xf+<5e+B1KGRh3Hc=^nenb9o;YLC&Nuk*OVn@9erR0m5l&>VL(!RcvGp zt+M{h)hC83nDOPkv9UAi*84j1elOwLo(seaiue)meae*IqHpy3D#?D<+4SuSo+_># z08|q(Hr+m#RvaQaiW+`Q#4Z}^zwWqS3-RhsEn6oBMHeiHOdC)1{n3g*5a&~k{rZy1&oYuPrDtYCE`l7I&5A^8 zLE`#js~57|G7Pd2a>=cumt|?e2IM&1zkbNnaYzRwW&pt2i`&$eCVHBTcy&mQBd<-^ zlW|Re`FYy!*sr3>Zfs0QhBxW&eG>J8CH-S(zjR)2P9!gHe0@n-;x95mf22cp_aD(~ z-G|h5rm{5dgwf}{eRyu@N|-dgwZ2`~pK)1Aj-a`9EcdnB8?vRLui}w$ zig9#>uu)LJ#td@iA+3{OJt)>jd?FnTSgWXcTZCLWJ5*nsd#&ricY3oRKlatlg8;a|KmC zTQjY}==zp_bTNnObdLe%Dy2E6zA~4Tb|5axwzdn3bJPKQ3(IcVT_BO3_z9bp^w!W?^>Q zRbe5QG<>t<58CRMHDx45RNxRw4))nvU8NpmLf7ujk*#Bk>X12q{Zo|JmLW0+XYP^s zEZIC9t3T*~1T9U023Od>Dr*vco@0Dyf*2qE+u0~;D>OYl^h(sbk4`Ut%z?ya8fboq zIXCx9(NuZPS3xzj)z)uQ=+1B0^GxJ1=PTcBmbru_^)(>VPh^h}ivF3cbJ14Sob>r~ zh*{fW>}b6i7S%NvM0(t^yECe)o+nQxImv-+>HPff2F6%lH`tX#J{}n=;;gBtC-04w z@9}y=!#-kKs-Hj0<$fJIE}97WBr`@I*-oFA9Y>Ujp5v?O**;9q(mlQw@tq1Lc}TQt zIwWEx{Vm%^L$k1u-QVSE3+2%I_f7+GN6V9IU$O}aG~CW$;qsUlxAh7BG(xv9$Sm0V zSqYaJqv`LysuGI?VS_dPRJnYaLNSf8_eLRa#MflNuLd)v`s~8}lGNr*c;KF?u=o8g zm;6K0&GMv)W7#ps$(8sl{>atvXoJ@h25LFDJ4}IRMMPRxpsS9RZ>w& z!zaq4m#)mgWp`EvGJh>0H?cD+>W4W#y;Q_*$o(>U2C4HdU5UQS0p2q8wY}`4TI|v1 zm7RqkF2)$-;!ZcZ*U-hO)C7M|7jnk#r_5FDp z(>p^aAad8csYdQoZ0y~g4p$)nAS<}{vSJ%e5N1tp?wFbe<>pNGCA|(DotcZ>O!H^a zo9Fz<5ym*2kdyq4&{DfGbh{7A4c+A|p6#-jWL+`?w@%Kr8#!*;GKL|82<>NX{gSmL zP=8EVpSG#9$UQP{h9t~lM$e*_6X}2n3=tclJzj?+>Z2-wH(5hZD8`0O1I%nG+UvWH?7Jz}8Rl*hja* zTGxCTomCX57Y8m#e7ju^HYXgUW`DY~<%_o3y3sX+F&n?KEJP|?u=-&7d?m3f2%9r| zI<>ZCpu00}%PIg)6Au3XbYiNLr;b-IFa!FsrL5rb&r~zSEsN^^0Q6l9SpXa|%Fp>x zY9zRIbgEM2srY$CQc;mRMB62}v`*3g04pOHx8ZTscJaJqJ$n9$X~rXr#No>S0E_ad zTH*es6(2AmxIV1*MWLy1hfpSW)phXE3lEp4oUnbwwMte{3rT}Y*88S^;8Br;lKE&b zyXxtf$~u+`QOB4cir%GYJSsPr=|vkqyDI^p5DZ1#o8hdCB?b_dkn)6|rrRjP!*1VD ztRH)>jAGcD``YR48cvTF1Hd4HVS$20#)Y3yakDI0$AMCB77Pt$u zW%f)(9iOT8`A@|vsG(?b7~^3U(X7@_Qn1HX6y!VivS_0wV#jUNWvBB+7c@%ku8(CH zpCAc{Fl`kq+zy=TeB89%Y+K!QF}MVych&y@4fR8)b8`Au_`0kb=jv#xX{7?7jBVZT z**!{i5XmG5PS_N8Yr3+fo#&n^IRaK@+_AE@pa~#(JrYOwUH2c=W|*eF5=1R#77ax* zOce3+Gj=D{zs$N3glDJDXyX!Zl!ugzgOpJLUsl)Bn5s1LG_f7urTeq`lU`ur9%PW% zI}!vmaYW(DY;C>OkC%B^!$dRA+ z)U2#{cr+1oo4v1Womgd1aas_mjAA$(8}l=2lA@q089EN}?l*fn?Zw<<#-Q5&0R5_A z7{>guh>*%I(k}5(ma2&mUpR#I_Ijgu>%MjSeHGbm$>#v|_=jWK&h)T}N zaM4B%QaFoe?Dj{)PPtqrYCkb1CCeOg%?pQ2JVKm#a}C>JSN=jUdVvWG6Fr|)#U~Gn zD7qPi`)Hh6sikJ8EGlId2mIfKWiJnaDvBVgHi))s-}YS;ku_PF8|$L(+(gZtTl( zK5}y~7ZD9g>sc8u&@glZU9@d={nRCfrGx2p1CQpquo#+8s_$nl+p@|$N-~O`LSY~G z_E2+F4_!xIaMjB13zehy50%jg^Ci{J?mnv_@e4!|%)nR6yCtfP%!iUaL`}P7nEesL|7~uLZac^Wg^PiFY zgU02%iD`;UhYy#QP>yKyE3mekrmvZKf|0&7QW{g`(#Iu1u;r)15l7HhFvsEaNmO%Q z6Q&57@3&WEd)^LQtWD9l?fR=$DR}h^HLgX===WYD<9`iCH4>E@V|{I9@A4FJfMCYY z-JS3K*E3qfTTw7ruG@6LA#v``%I}YOd@Et|`~r4}oPVVubf4MR zUE*FB9KAsHlzT2dzsyil<<$7-;>#Y6*9dV{(#s)9MJ0nm==843!JZ+ThR8Wgcz#uR z{5+`gRn;{!Kt+&j?RDPqJ{7@yQ%TR7o;YO3c-s>G%4qL}d_hfJflpM|ea7px;giyF z3FY!NZJ3Xzx7~QR6YxbvEM9ZN+)1Sk*ktK1vpa6B{1sJE!RshPi*SiyFp-7wZ4a`| zv-N-D(PXEnq==4L#M#B|i0k)B(#LAPZc;P+wU=UG$2MRB&+m22_?V7@x}K^@2a&cp zYA&~anSz%PrIbdu{6?dbN_H>4saoD4Oi+DbCKlMOqK66cWncay!@sJ- zuAa6<>-eW8c;5%5@g*mcb_1(T#RsI&@R9+~D&+v)F$hQo-hxAuxoVe#ti#NNkKJh<>p_aN% zG2tq&BU|dYy`!7%-M>Va1My+-D&gQ?#40DJo3y)(&F-~1(YWu%Fln)c@MqW6s)Y2- zSTP+|ChghVMDGrsmyE;yC&TBCNSu94`Y1ygjaCzza-Y&{S4Lrq+#rsBsYv!MGW;mR zPE-LVHX%QaY?|d1M<8M{?|1yHi%A(qBb41A{iw6p-%88`XOkSUeI4!HSjJ=JAdi+$ ze^$Pf4j@4vH|diO?(L`Sh2h$|dg$Rgc^%??h?~^tCt!`EKc_1Q{#S4LTF#h1m8o-P z+W!ER7m9;VPF$m5_Q!Qy!{Hb}{-czw_?_(QShUGyMHiKdsmcEU3y@hQ2hCP{r*?ZjvvU)Bh{{W^IhM}~5E&HtT z?tPxV+!q_*kd!&n%^=9-Y}xyuczTjf6H$n9OtH|$-mCjAs=i4$T{MsdILzMp-xooT z8H1Qq!x4}*-%H=&*8c!m-%mmC%nAT$+td24 z)(OGz=N7J+MJp+_Fv?dE7w=^mix4r9$gl9ND+(clmy0_;yJ)#@5K9dQBqf#GBeQSP zl%nI*vU$0@g|0)ZyDCl>LsvH#h)$TCLsl&R0O57jl@1i)h!HzzO9_Z1cU9W zEQ@QY;pAN6ix6TS#NYCr=Z`WtN>I)BYpxLC;x#;CGlMq*-o;`cvSNCIfa&o8%ye?X z<#k%4w5TyTI!MRepKsk5agJPu)_v@&I6Y7Jlm*R&*_%(-?2E*C)bL3hF}Ztasa6|` zaPu-#X_$@KlP5M2Vg=RqUR%N`xP&oFTUjKRX&)E5?dUIA2+T4#o;r)ae|68t=G%^) z__A!P&J!e((}~aO?)K3)8;N>tsz-s7$xW1*e5)W~kTQA6+1l)rUpMJ9O= zHlFFJPd=~~%zGwszD?1HMHkSC+TEQuY@z0bpWT+}%P796I~F~WZE@+!-PWXMRp2in z<`J`e-5SIaVQ=n*{Yhj9$=TcCWU>rL^9Sq8p55 z@!8gC!gXhi_~QEZQHR%HkgJIXMeh#K$Msql4#wK z$}o7xIL7G20^Wx|v+SgXZ2tg>uiYohV$8_d{nI8ljN>TV?v#fbQ6md=X=OyG<1xF^ zoN=9>v)xu>C`JPz?fzBLaUl}JAZILeWkXz9N6azX+0|i(xO-&|1P;%Z>EU8%eHZH0 zQ&HW_C9}A{YpX(&Fv3gdNs5R7AbyPzDi}kkA$D%=wN5PkASHG!bwvVqGQ?l?WPqk; zc*xn^((=BTu(#gG^GT`l+eY91$aK;S%tHDor=X7^8%jE%~1 z`)HIQc;8cf6kq|2gjl-VjN-+o>XRdAB%A8n;Yj6oV3de#fJt` z>kJsmGm54`e$3yAHA))i6n42t(vx}NTuVg|TTSgl?ko1WGy{)a3VOfWn zPs=xEcKKLL;31RW;>d*VEzgmgLeUR(pYD{@f<(8N;BTf{h z3`B$oSrV2qX$YCsJ#{~xr;w?RSZ89pA#k$d(bbLNk013S_aU6Fc#K6&7n*q5!K-O^ zLE&|jwSXfPPgC}GPsb$C#Bx>`yX@`QSCx2@s$LJ`60D`8>F&(m?5~pey^@)^k;f)O zZLI8xQBQFCZvOxRsW?qw@hTd4qz7;?V%p22j!_6m7{1DtV!k$zBjwEymAfEwGH;~J z7S+`JNa&F}K6 z#N(@}l8~IoANN9zL*~v?FxYl`B)X5KP~BwXZ(>{7@^-sFb;rwI@HDcRhB(|^o3gaw zl@C@hm`icTUX)cAv05jSDXvfM$&Xxop)07;jzyqG&)Ew6$+CDK){&Kmu4??QH{txxwfOS)a)z=%aFcS@FEZ~k@`p7QXuTd z2B6RO*ZU&eMj^8>x7k94$)%T@9=)|fn({f57Cl;jmDLc^V}S@>-Sj}Bh+=MI1&b9k zk%9vgEn9a`kYCjs4coodaT|q(N7H0E;wGD+^jeHqWf@$ZpXY1*Cg)>rqkR*I4o-1> zP}PffZ7zgS426`@js4jaGMV!^8|`%o?=&OzI$M1ah=-SQl=<<#FZi-Uv~;s_t~!p7 zZAn~nL<9t%;X+#&hb&m_>?$r}h*fzisNsH4JKoPBGk(dMX(o}Pnx~fWm*WRV5n$hknRXZWLW_x7F$m*0Ulj{AOAM6c9IQP!_fo2Yq2k4j zoSbia_eH0IYFc>t5=QOayZqf&2&95(8m|htm_@(KcKfMud>$yIU}tXnYCocTjhoXB zRIJ%Qa(fNFS3e|tK=`CmJv1O2JC34E{r%DP_SSFE9$q@{tYs#imVF+|mTnx=`I#hp zH)pr@T@#uVI`j#2$Aqe~r3Cml%6 z&JJyMwViqd)B~3^awh)(Qm&dlRQ#BQ#oJeBkNe#ge^B&%L+N9dt#3=;1!X}|=Bf^! zw;q$d$-la#qoa&|u)sp@SIW=+%Cjn-55^^)I%#H%wk`2hGCd|)z-8;Hd|$ihk>a%D z#Ne74ft+7PJev3HxVoxpj}=w<+Ni1{CiF1d8+W?w<_RK#mKtEE=oV*U_W4!I1oc_r z%0hyVkyB51)t_6jvTlcj(S?6HmB=5k-$kwzZ$&ATp@Vj9U-nN!fmdJ-S8dTal3~4j z0=^08ImZRbvGmCsaA^>}O}cvMl~7f3B)2rIJ6b0OQ*t zzKB%e37PY4Z_3J+s%ok}VbzmZhas@^+wQ5j9Yl3Cg*P~wGS!J@cP!SgHa#MYA&()A zi}hp)|5aUyu@B8pMb_0hB?#`xQT zMdFG;Dmt!Hv3B0;&}*a0QW;&w+i9Y$;xu7b0i1FZJNIX^-4Y#eJ_zvbXAF$|--;!2 z&(n8yxBXXFQ^RM3B+a6bTTv$~5&PXAh11PPT@OBIHh*<}Q+CP-WEc0+_@Z*YP9{hx zZEyRa(b2(3RS_6UW!Z?oy6E{Y>Zl+uXBY4CxsEAV5OHYfCg_o_>{slx zmpl%5>Z7aV%)uZHm@loq6Tu_WV=PX^eP8_RjHco+RC8)&E1sm{Bl;`O3B+ltX!%#f z-?0smXpz=IQ_QBsn%>Opm96B{(-BW=5bLk}AzSq5#CoZNLWRIJeKYMHT zOjxV&C1G&dT4`uN++SRozui-D3eF=xm9C@ZmGmX5(w3iyM+I<5(7wfMeu~1C;*1KL zGvwo^Pk&`~?LqiY6Q~N9&xq5AIreAmvYlNeUlgsDqK-ivPVHmr{g)$GN_;vQYH7+> zmvLf!E%!w5?-r11K#Cc;n7(A>4eYgJri|U$=CBy3DjtgQZ)puTl!D`;V52zn? z=5<6s~I6U`Z50iER5@NF>9o+r7)wH%G9uDvpBghu3!8+ zig1$}o*z6@i=MaBMb>c13QA*-rNiB46XLXd5{PHwm2pKL+P{CY$6hJZr#?$Qj_{XY z!>zLJ-zvyUk@ov83Y(Ac{v}=?;gx{?`dM{!6&_@S21fXG+0LvZsf?-Qn@*Cot@5!d zF_6wh$?9^xchmJ{iz6OET|iC)YZwLFg4avig6+S;zFl%ved9~<^|T!--% zSvXJgBO5#B#*I9LM0hn@S^6_(6btY?Onu4%rtSET^FOIid9UXu8l_;GxOI@|a z^mRI_j&>sfzc*#SmNSmVwzfDVz{nfs=^&6}8KxN-`nx*eIMo$JTv2%`4dfl!Kf@ZT zGclA4A>T#IqDeExVivYqvwynLRz~I{AYZAQWUVZPEPTkFhW@6q)kF4#TFO_0a1eh26t~-hg7Z!}7fr{g+?SrezGcPVWGk>X*D8qFHaXwjF*;kxH zQ#l;6{{Up&KUn2Z4BcIjYQRQbc4cDOK@kv(7;gUn4`nR5XW7SRWh|`#<7Z~k*#`YV z98Iruq57lrwZ-;Egha#A&HAOy?TljWe)=iFi~5Pw6O!@&08Br!jF^}Zckik!j>aCR z^(-jGkJF5q5;h?{kU^@84!gCn)o_(wB&DOPl9L%r z62y(0ORq*I6X`Z}=YA&e*zp?Kc%2PP$N7baOQWr8oc(lsI=UV$OXlfkV-23)^id}+ zchV8Tz7if1;l;t=Ef}1&bz~zWA3UEO+w@1Z=?ahuo1gqKcSyk8WpK(wvPceu9cn8oeO88m%g+*Zhb zu5b{$cXZN(Z0#5H+RwA0NY3(L;?L8%Ycg^zUB64{g^(QT@~mxkc$jX8a~ft zypY`U26w*9rUA3$dvGlOhi$R ziNFLj?=P-PcVyQx!yWr4Fh?Yc25xLK4ibr}(VnfoiK3n#?fn&Z0)R#-wK z{*}>bGLoV!M^5^n!;#GlMdai+V&5laVQBezMp<=hWvb{StsX?}e}z>y2t0@>_@u(y zCwwWRCF$}QF5SaHN3!pw15)eF3%pQy^7QG_Xk!h=UGV+`T_#V>`_N72fZbnrOAlD2_oG zn%lcyzrrY9appuXrr-2TRnFJt#i1x#8yW7*fx_>=BZf+9c~0lE?muODBzQ!4S&jC8 z_*|WijuZq-as$rPIVsnhh?&9xf{>k~k8V{!-;`+aJRYeq!Uxh_G9z$|} z%C1A8WP@*x)=U9!p>U0OF=@L6#20?W5|G zlLszjX84xc=&~dFryNejZT0l0Rt_W*=LJlH#Qy;1M88mVXxlx|V-Yav7H+Gu6p?d3 zrbNK|_Ch#D#C*2P?!~IkW>VnH*yF2rx?F8e+_v5S01_@H0hBTIe7%&t3}9^GHJ!dL zm#vW74=W23`zTV$AVq}jXMgkEInyA3j#_-F3#iAlGxkx+_>96|dm$Dee8(rhwn&{* zx6zjFI=-m@aY+K5*l@CRC3ue#i>tOjiB5LS@rwC&(MrxUau9%HjHW$LxmI+}QKia9$!SEaq|r5lZfib05p@BU?jY8reh3CsP{ zB2F?1JG)&9unwSpoPxQ(hL?0BUL1PS~?Fcj6@!+ zZr`dc&t^?ld8upjrRB*O{hhzMynykfi#8+dPknys##|($=9$DJ+?nr}-6b1k5KYV{ zZ_2~!SmSKd)QDDctGQIeE9&fx->(7tnHC5q{7T0j9;ox2+fMpD@Xq#uSw9v$gzjyR&aAuozN?Mj$JX;zL&Eu4N)FB!7g~#q z`MGeWX7w+gKZm?(qJX2NuBdq+Va7YP`EB=g>>L)NlZsajJ=kaE++1I>&6YJW>9R)i z#ztlMeYISl8ZIZp<1(hH8JjHy;q-p2ou0lf5DULMyo{U3RS5rxaOF$0AcYSUM)isAeadOTha{d1RRpj-4DSD1AoIv9i&5P@Amr3!S zDm9ey!^7ktp9?YLY#-hI)w%Yu?m<%<#hq!z39$EeW#`^6;yfm%UR!*XyrirjW`BjL;^$et^!Gjw;--!Or}75p?($ua;nzte zb!BxZOC(g#W$Eg__g)#{3g{u?@eOosj$Ws4O7+TmsO94GQJk=tklcE$r^7CNPk9|V z`W{$ndERS?@f_pY%qSGJ@QD}+&Q9A4smoDK!>P<>sRE35>U)2><>BMd!69c?XMaHp z^xNHM<670#Q%gn%2n#*r{{Y=)>0FnHILvfB`f-WlA?b1tfBGt(ImJ1pE>lY&KA=qZ z#Jes=tfa4#32CtJd-~RLLT;mp$Rv4sOGncskk`rPNBV@!ZD)V(t7_@v2!>dym~s3r z{nC8U=0sAH5tgE$0OEZxc!P#Z^nuTC?fSE?An;v# zmlCDnbeP6YRw5_$FLekCP8}FZcXA(A?6a7jBjJu2m3Nk_;$;c3HHRDKy|2QQ6Y#lX zl(?YF7sEaO09IVxM+rJvVXcBF$k?AEwV(H0mje@yoQIimX!7)~dF`p!r(v0Se6s4r cV&f&^v4wOzI!f5ua*L)v#CmOIi=!|9*|rjoE&u=k literal 0 HcmV?d00001 diff --git a/asset/vendor/wheelzoom/demo.html b/asset/vendor/wheelzoom/demo.html new file mode 100644 index 0000000..8e12efa --- /dev/null +++ b/asset/vendor/wheelzoom/demo.html @@ -0,0 +1,14 @@ + + + + + Wheelzoom + + + Daisy! + + + + \ No newline at end of file diff --git a/asset/vendor/wheelzoom/package.json b/asset/vendor/wheelzoom/package.json new file mode 100644 index 0000000..8884190 --- /dev/null +++ b/asset/vendor/wheelzoom/package.json @@ -0,0 +1,23 @@ +{ + "name": "wheelzoom", + "description": "Zoom IMG elements on mousewheel or touchpad scroll.", + "version": "4.0.1", + "keywords": [ + "zoom", + "images", + "ui" + ], + "author": { + "name": "Jack Moore", + "url": "http://www.jacklmoore.com", + "email": "hello@jacklmoore.com" + }, + "main": "wheelzoom.js", + "license": "MIT", + "homepage": "http://www.jacklmoore.com/wheelzoom", + "demo": "http://www.jacklmoore.com/wheelzoom", + "repository": { + "type": "git", + "url": "http://github.com/jackmoore/wheelzoom.git" + } +} diff --git a/asset/vendor/wheelzoom/readme.md b/asset/vendor/wheelzoom/readme.md new file mode 100644 index 0000000..702b5f2 --- /dev/null +++ b/asset/vendor/wheelzoom/readme.md @@ -0,0 +1,77 @@ +# Wheelzoom + +A small script for zooming IMG elements with the mousewheel/trackpad. Wheelzoom works by replacing the img element's src with a transparent image, then using the original src as a background image, which can be sized and positioned. Wheelzoom is dependency free, doesn't add any extra elements to the DOM, or change the positioning of the IMG element. + +## Usage: +````javascript +wheelzoom(document.querySelectorAll('img')); +// or +wheelzoom(document.querySelectorAll('img'), {zoom:0.05}); +// zoom sets the zoom percent. +```` + +## License +[MIT License](http://opensource.org/licenses/MIT) + +## Supported Browsers: +Chrome, Safari, Opera, FireFox 17+, IE9+. + +## Changelog: + +##### v.4.0.1 - 2019/08/13 +* Added initialX and initialY for setting the initial zoomed coordinates + +##### v.4.0.0 - 2018/10/09 +* Replaced canvas data URI with base64 svg for creating placeholder +* Dropped IE9 support + +##### v.3.1.3 - 2018/01/31 +* Added 'initialZoom' option. Resolves #32 + +##### v.3.1.2 - 2017/04/20 +* Added package.json & added to NPM. + +##### v.3.1.0 - 2017/04/10 +* Added 'maxZoom' option for maximum zoom level. + +##### v.3.0.4 - 2015/12/15 +* Automatically account for changes to the img src, to avoid requiring manually calling destroy and reapply. + +##### v.3.0.3 - 2015/09/05 +* Fixed zoom positioning issue in Firefox. Fixes #17 +* Fixed error when calling destroy in Firefox. Fixes #16 +* Removed debugging statement. Fixes #15 + +##### v.3.0.2 - 2015/09/05 +* Fixed lint warnings and bug introduced in 3.0.1 + +##### v.3.0.1 - 2015/09/05 +* Fixed issue with src URLs that contain single quotes. Fixes #13. + +##### v.3.0.0 - 2014/10/14 +* Removed jQuery dependency +* Added 'wheelzoom.destroy' event for removing changes that wheelzoom has made to an element. + +##### v.2.0.1 - 2014/9/9 +* Merged bugfix to wrap background-image path in quotes. Ref #8. + +##### v.2.0.0 - 2014/4/17 +* Simplified by dropping support for having border and padding on the img element. Borders and/or padding should be applied to the parent element, rather than the img element. + +##### v.1.1.3 - 2014/4/13 +* Minor code improvement. + +##### v.1.1.2 - 2013/1/31 +* Fixed bug with unzoom trigger. + +##### v1.1.1 - 2013/1/29 +* Added trigger to unzoom image: +````javascript + $('#example').trigger('wheelzoom.reset') +```` + +##### v1.1.0 - 2012/11/28 +* Added dragging. + +##### v1.0 - 2012/11/26 +* Initial release. diff --git a/asset/vendor/wheelzoom/wheelzoom.js b/asset/vendor/wheelzoom/wheelzoom.js new file mode 100644 index 0000000..b19dd6c --- /dev/null +++ b/asset/vendor/wheelzoom/wheelzoom.js @@ -0,0 +1,206 @@ +/*! + Wheelzoom 4.0.1 + license: MIT + http://www.jacklmoore.com/wheelzoom +*/ +window.wheelzoom = (function(){ + var defaults = { + zoom: 0.10, + maxZoom: false, + initialZoom: 1, + initialX: 0.5, + initialY: 0.5, + }; + + var main = function(img, options){ + if (!img || !img.nodeName || img.nodeName !== 'IMG') { return; } + + var settings = {}; + var width; + var height; + var bgWidth; + var bgHeight; + var bgPosX; + var bgPosY; + var previousEvent; + var transparentSpaceFiller; + + function setSrcToBackground(img) { + img.style.backgroundRepeat = 'no-repeat'; + img.style.backgroundImage = 'url("'+img.src+'")'; + transparentSpaceFiller = 'data:image/svg+xml;base64,'+window.btoa(''); + img.src = transparentSpaceFiller; + } + + function updateBgStyle() { + if (bgPosX > 0) { + bgPosX = 0; + } else if (bgPosX < width - bgWidth) { + bgPosX = width - bgWidth; + } + + if (bgPosY > 0) { + bgPosY = 0; + } else if (bgPosY < height - bgHeight) { + bgPosY = height - bgHeight; + } + + img.style.backgroundSize = bgWidth+'px '+bgHeight+'px'; + img.style.backgroundPosition = bgPosX+'px '+bgPosY+'px'; + } + + function reset() { + bgWidth = width; + bgHeight = height; + bgPosX = bgPosY = 0; + updateBgStyle(); + } + + function onwheel(e) { + var deltaY = 0; + + e.preventDefault(); + + if (e.deltaY) { // FireFox 17+ (IE9+, Chrome 31+?) + deltaY = e.deltaY; + } else if (e.wheelDelta) { + deltaY = -e.wheelDelta; + } + + // As far as I know, there is no good cross-browser way to get the cursor position relative to the event target. + // We have to calculate the target element's position relative to the document, and subtrack that from the + // cursor's position relative to the document. + var rect = img.getBoundingClientRect(); + var offsetX = e.pageX - rect.left - window.pageXOffset; + var offsetY = e.pageY - rect.top - window.pageYOffset; + + // Record the offset between the bg edge and cursor: + var bgCursorX = offsetX - bgPosX; + var bgCursorY = offsetY - bgPosY; + + // Use the previous offset to get the percent offset between the bg edge and cursor: + var bgRatioX = bgCursorX/bgWidth; + var bgRatioY = bgCursorY/bgHeight; + + // Update the bg size: + if (deltaY < 0) { + bgWidth += bgWidth*settings.zoom; + bgHeight += bgHeight*settings.zoom; + } else { + bgWidth -= bgWidth*settings.zoom; + bgHeight -= bgHeight*settings.zoom; + } + + if (settings.maxZoom) { + bgWidth = Math.min(width*settings.maxZoom, bgWidth); + bgHeight = Math.min(height*settings.maxZoom, bgHeight); + } + + // Take the percent offset and apply it to the new size: + bgPosX = offsetX - (bgWidth * bgRatioX); + bgPosY = offsetY - (bgHeight * bgRatioY); + + // Prevent zooming out beyond the starting size + if (bgWidth <= width || bgHeight <= height) { + reset(); + } else { + updateBgStyle(); + } + } + + function drag(e) { + e.preventDefault(); + bgPosX += (e.pageX - previousEvent.pageX); + bgPosY += (e.pageY - previousEvent.pageY); + previousEvent = e; + updateBgStyle(); + } + + function removeDrag() { + document.removeEventListener('mouseup', removeDrag); + document.removeEventListener('mousemove', drag); + } + + // Make the background draggable + function draggable(e) { + e.preventDefault(); + previousEvent = e; + document.addEventListener('mousemove', drag); + document.addEventListener('mouseup', removeDrag); + } + + function load() { + var initial = Math.max(settings.initialZoom, 1); + + if (img.src === transparentSpaceFiller) return; + + var computedStyle = window.getComputedStyle(img, null); + + width = parseInt(computedStyle.width, 10); + height = parseInt(computedStyle.height, 10); + bgWidth = width * initial; + bgHeight = height * initial; + bgPosX = -(bgWidth - width) * settings.initialX; + bgPosY = -(bgHeight - height) * settings.initialY; + + setSrcToBackground(img); + + img.style.backgroundSize = bgWidth+'px '+bgHeight+'px'; + img.style.backgroundPosition = bgPosX+'px '+bgPosY+'px'; + img.addEventListener('wheelzoom.reset', reset); + + img.addEventListener('wheel', onwheel); + img.addEventListener('mousedown', draggable); + } + + var destroy = function (originalProperties) { + img.removeEventListener('wheelzoom.destroy', destroy); + img.removeEventListener('wheelzoom.reset', reset); + img.removeEventListener('load', load); + img.removeEventListener('mouseup', removeDrag); + img.removeEventListener('mousemove', drag); + img.removeEventListener('mousedown', draggable); + img.removeEventListener('wheel', onwheel); + + img.style.backgroundImage = originalProperties.backgroundImage; + img.style.backgroundRepeat = originalProperties.backgroundRepeat; + img.src = originalProperties.src; + }.bind(null, { + backgroundImage: img.style.backgroundImage, + backgroundRepeat: img.style.backgroundRepeat, + src: img.src + }); + + img.addEventListener('wheelzoom.destroy', destroy); + + options = options || {}; + + Object.keys(defaults).forEach(function(key){ + settings[key] = options[key] !== undefined ? options[key] : defaults[key]; + }); + + if (img.complete) { + load(); + } + + img.addEventListener('load', load); + }; + + // Do nothing in IE9 or below + if (typeof window.btoa !== 'function') { + return function(elements) { + return elements; + }; + } else { + return function(elements, options) { + if (elements && elements.length) { + Array.prototype.forEach.call(elements, function (node) { + main(node, options); + }); + } else if (elements && elements.nodeName) { + main(elements, options); + } + return elements; + }; + } +}()); \ No newline at end of file diff --git a/config/module.config.php b/config/module.config.php new file mode 100644 index 0000000..853110f --- /dev/null +++ b/config/module.config.php @@ -0,0 +1,28 @@ + [ + 'template_path_stack' => [ + dirname(__DIR__) . '/view', + ] + ], + 'block_layouts' => [ + 'factories' => [ + 'imageViewer' => Service\BlockLayout\ImageViewerFactory::class, + ], + ], + 'form_elements' => [ + 'invokables' => [ + Form\ImageViewerBlockForm::class => Form\ImageViewerBlockForm::class, + ], + ], + 'DefaultSettings' => [ + 'ImageViewerBlockForm' => [ + 'title' => '', + 'width' => 600, + 'zoom' => false, + 'wrapStyle' => 'overflow-y: hidden;display: flex;flex-direction: column;justify-content: center;', + ] + ] +]; diff --git a/config/module.ini b/config/module.ini new file mode 100644 index 0000000..8eb3f0a --- /dev/null +++ b/config/module.ini @@ -0,0 +1,12 @@ +[info] +name = "Image viewer" +description = "View and optionally zoom images" +tags = "" +license = "MIT" +author = "Hangar.org" +author_link = "https://git.hangar.org/chris" +module_link = "https://git.hangar.org/arcHIVE-tech/ImageViewer" +support_link = "https://git.hangar.org/arcHIVE-tech/ImageViewer/issues" +configurable = false +version = "1.0.0" +omeka_version_constraint = "^3.0.1" diff --git a/src/Form/ImageViewerBlockForm.php b/src/Form/ImageViewerBlockForm.php new file mode 100644 index 0000000..4dddc64 --- /dev/null +++ b/src/Form/ImageViewerBlockForm.php @@ -0,0 +1,45 @@ +add([ + 'name' => 'o:block[__blockIndex__][o:data][title]', + 'type' => Element\Text::class, + 'options' => [ + 'label' => 'Title (option)', + ] + ]); + + + $this->add([ + 'name' => 'o:block[__blockIndex__][o:data][width]', + 'type' => Element\Number::class, + 'options' => [ + 'label' => 'Width in pixels', + ], + 'attributes' => [ + 'min' => '100', + ], + ]); + + $this->add([ + 'type' => Element\Checkbox::class, + 'name' => 'o:block[__blockIndex__][o:data][zoom]', + 'options' => [ + 'label' => 'Zoom', + //'use_hidden_element' => true, + 'checked_value' => true, + 'unchecked_value' => false, + ], + ]); + + } +} diff --git a/src/Service/BlockLayout/ImageViewerFactory.php b/src/Service/BlockLayout/ImageViewerFactory.php new file mode 100644 index 0000000..946eeb3 --- /dev/null +++ b/src/Service/BlockLayout/ImageViewerFactory.php @@ -0,0 +1,18 @@ +get('FormElementManager'), + $services->get('Config')['DefaultSettings']['ImageViewerBlockForm'] + ); + } +} +?> \ No newline at end of file diff --git a/src/Site/BlockLayout/ImageViewer.php b/src/Site/BlockLayout/ImageViewer.php new file mode 100644 index 0000000..4608ee2 --- /dev/null +++ b/src/Site/BlockLayout/ImageViewer.php @@ -0,0 +1,86 @@ +formElementManager = $formElementManager; + $this->defaultSettings = $defaultSettings; + } + + public function getLabel() { + return 'Image viewer'; + } + + public function form(PhpRenderer $view, + SiteRepresentation $site, + SitePageRepresentation $page = null, + SitePageBlockRepresentation $block = null + ) { + $form = $this->formElementManager->get(ImageViewerBlockForm::class); + $data = $block + ? $block->data() + $this->defaultSettings + : $this->defaultSettings; + $form->setData([ + 'o:block[__blockIndex__][o:data][title]' => $data['title'], + 'o:block[__blockIndex__][o:data][width]' => $data['width'], + 'o:block[__blockIndex__][o:data][zoom]' => $data['zoom'], + ]); + $form->prepare(); + + $html = ''; + $html .= $view->blockAttachmentsForm($block); + $html .= '

'; + $html .= $view->translate('Options'). '

'; + $html .= '
'; + $html .= $view->formCollection($form); + $html .= '
'; + return $html; + } + + public function render(PhpRenderer $view, SitePageBlockRepresentation $block) + { + $attachments = $block->attachments(); + if (!$attachments) { + return ''; + } + + $thumbnails = []; + static $id = 0; + + $media = $attachments[0]->item()->media()[0]; + $width = $block->dataValue('width'); + return $view->partial('common/block-layout/imageViewer', [ + 'zoom' => $block->dataValue('zoom'), + 'title' => $block->dataValue('title'), + 'width' => $width, + 'image' => $media->primaryMedia()->thumbnailUrl('large'), + 'id' => 'iv-' . ++$id, + ]); + } +} diff --git a/view/common/block-layout/imageViewer.phtml b/view/common/block-layout/imageViewer.phtml new file mode 100644 index 0000000..693a408 --- /dev/null +++ b/view/common/block-layout/imageViewer.phtml @@ -0,0 +1,36 @@ + + +headScript()->appendFile($this->assetUrl('vendor/wheelzoom/wheelzoom.js', + 'ImageViewer')); +} ?> + +
+ + %s

', $title); + } else { + $title = false; + } + ?> + + + + + + + + + +