From e2bcd7e21bec3320242df4fe4e407f4a5d1caee6 Mon Sep 17 00:00:00 2001 From: Erol Haagenrud Date: Tue, 21 Apr 2026 07:21:46 +0200 Subject: [PATCH] =?UTF-8?q?F=C3=B8r=20sammentrukne=20bokser=20i=20admin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-04-20 17.08.14 teeoff.no e7e909d79195.jpg | Bin 74918 -> 0 bytes 2026-04-20_214654.png | Bin 0 -> 15278 bytes 2026-04-20_214712.png | Bin 0 -> 22440 bytes backend/main.py | 267 +++++++++++++++--- frontend/src/app/admin/artikler/page.tsx | 2 +- frontend/src/app/admin/page.tsx | 16 +- .../rediger/[slug]/EditFacilityClient.tsx | 245 +++++++++++++--- .../src/app/admin/rediger/[slug]/page.tsx | 14 +- .../app/golfbaner/[slug]/CourseDisplay.tsx | 84 +++++- .../golfbaner/[slug]/FacilityDetailView.tsx | 1 + 10 files changed, 530 insertions(+), 99 deletions(-) delete mode 100644 2026-04-20 17.08.14 teeoff.no e7e909d79195.jpg create mode 100644 2026-04-20_214654.png create mode 100644 2026-04-20_214712.png diff --git a/2026-04-20 17.08.14 teeoff.no e7e909d79195.jpg b/2026-04-20 17.08.14 teeoff.no e7e909d79195.jpg deleted file mode 100644 index 5503803871c39aaccc5b7ba2dac58855845283d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74918 zcmeFZcUY54*DoBTi!^CM0wP6vZ=ot6O`7x)K#^WT3q_hDDn0Zfz4s0wbP$oMgkF-+ zJ4g`_5D+=+y`SfO_TJ}vzw3PeeAhYG*^?_X>%M1Z&C1N0-^{&c-MN~%S_Du$R#sC6 z;NSoNIM*M*)iTbEnxf*oQM%qdoL>6|ZUQYns#UPxSLY(N=CAzm<==E+YeV_WG@@-@7v44?~80Vw?T`>(IBgKHiD06qo)aAW^-?|CW!(D)7jxP$r6J+>SGfcz~0 zfE@nMz5n!yo27^4@9gld;~TcN0Kj1}06=O208otp05>7O=Uqqtjcm-(l$2DoAUY~)1{zArJNND|Ff!h~dzXrig^h)Y4a9Vp={F`g*HsA#2+4?u$e5@p zshR#ihpP_&N}?MOyk1-!7QhWk99&AAt4{#N-_!{o=QmCKcObyQ#lt7OK}39=Z9@UT z!NtYFB_JTfCnO{$z$3%~+_=uByiIUVh>(g}UPu29i)CEGC=H#ko}v5e_{7|TvGHXh zG0)mMT2>JSU09c>xP-Mw{t_G5;JH^`J>na?VsO&O1L8+U-S?HOyx$g0TsH%{ZXfqr zh(C#ebKML9J|WR{t`a5S#_yLzc=)(C2ym}uy}qQxyM2#JNM1+R(mihU8$LCS@ax># zE&>*jB?Y~_u>)E<*5@9CY@)&OAH@_O)m>o#x2`MRpv0vFJOG@Z(Z=&!aPJr~l&}Pf zc~J|9jG<=b=tAOgLyf`xtnQ$jGw5x$a)i#LdbEcj~lj;+O?;oHPjse=$-NJv|vnp0K}>=q5rEH8z@Xku<7(SxVkdSEdv8re&^O0qTN* z7v@(tla_eprSZJ;;uU-{^2q|It;Y*!J|f1AY_3!x1-Y+1)bx`MJh%cFl}i09RXhRO z^YHuJ;aqDGE{h#k7ZcN{6{|OUW7gYZO8}VqFz+5DO&{AP+4Rh*FrAtAyZ6P)uWDV- zKaxm~%m%@oHTJU9({isgNQ0{q&19WWMbWeHLpcqZAgwzLBCYySs27ZeJy19v){g1R z`0ixA)ARDY^cu%~)}x+KXNYcs04L^+#e+R>oXV zm|Rx&VzKyLh?-5@QiavS0a*Af064(SS3g_eZ1B}8WU2>YIH<0g*v)%vP*YnokU=1e z`E0t<6r|<0gh`=gyJYP6aRn%!$oyB@aLQMVF1HaQ)%YM6IiD*avh}14KJF z1^o;r>V5GJ5;E?*)^eh4nl^IWT2PCiVWchLZm5OV} zgY9FEKN5bsS8Hi~P8FCC;bObO;EyM|(H<8dn7%=q$gTD7vHe}XP6ZRHLj9tQ?3y9t z7|xTIA-gZzjCU)_f*!MJ|0|iA^)9#B zoqFuF*6naTCS{efOf7z!E5Xo*$(ymQ>UB7*gfH-ICd@fkkV@_m@&?)x5?`bU36C)S zq`Z<{gv=W<6m;i*(*%eFk6XE@?UE|DJfM46!k8myJmdJCaTPU{ftngAR5VE__$djy zgTH$pAK^VkZzIBvzl@X46f{7$E;}taJu5zZ(&N#2&9o>^Y%iRx`IGfGV2I%|`bADv z0hNl8W@Rn$eR#cCFDNS0{QW{7h^FFJ)n8Z{TD4$Si^MdVbvgi-1cs=wIrCJM$g07K z7Ivh?r;a+48U*`!)WIi5zkBzcHyuudL9C828AhF2p>Vz3`+$mxBkV zEyN?F2p^=qZqPwS7B=jr;H*GQ0kf|fGIGTKu3>E*E#XNOd4V?4j#U zGq2;cFWE7QN!#qUW{~E4BciAhi@%X^$|6Yt5`ut zvHLOS?P~u@#!73m;>aXXPEviXDAAw3+sidjx)!OUA^Os#GGWy&En5PGJEszc5{&1t zE}YE2R93&y9hlcL{s|%`>qVN< z8NSLk{as*1N=oV($_wt9SP|^!yJD>?#f9gg+DE7&%``2#H&6B*@ANM^leAWb!LIQS z?ObYZH>52VjaGPuS)z(VVwimDgxb63z;;0c%oHMj2OgM!D__c9_7$MU)&u7`}$-&+5htCN9GknReU}ymeL-sSNSqC5JgW;b;?XQVdat|s>`hV_ zFpxmj?Q-_@WfuZBGc^tXK%yz32|&ydjM8!Uex5O@TG|Jb{VUivIyLE;<#!D@g-+_P+b0qH^4=&4=E=;5o=Js>oh()-2hha7d zqToMz4=~j_v-V#(0;rFi;^I_z(hH)*7Lzkqs_}7Pe-&Wuc~)IoUQtmRy_ovr#ewt! zI2!`&zS0y;bn~yU^}jeBYqnvRMjI&_1&a@s9}jFZczkmGte;Ynu4722itV0ySgC+)6Mh{bKIj0wf9| z?r&e&C@p#`&kF+Dq9+;~If+{VfEh1U$@6s-eHk!nC)t)Ccb` zU55||#1*P>Od;`L_=|<2l>;s_87|7LQ+W^K9h#Wg*0eJ;mNsRHfD{BIP4LC4m@{Wa zIaiPaYFpF}{I&c6xSQ0E9#X2DOgnChTfplK#P+jnRUKCBXHP{*KONtS>l|!e6X2Tm zEAQsowuB<|Vdl5*g-h;2YRIzcFQ$yQCcBo}ZN?JwC)!LqyDjo*B67;PsnQ|?_FW^@ z3J+>$MxV_%4WY(K-6PY4?RZh{!76v-?ARGbs-Iw{L6Wjz96iL+KwsP12IAv?L4cxH!w}qz5@TCxD!0eSN$c^S)?$ zHL-`b1X>U(^%_Dt5Do^B7*IXxFHKtI%T>mf@{k}a>&chqG|aqDfaO|;prsp|RfD3h zVyOK-fqGyQc5Zm0|02<~GLS2cZZ$-O^?7WNT6Y*=kD20y!ybg$4&(1NW-0|VXJm^t z(3d00*xRrUfA1s-=ZkbF1#NwfG$kPL@iXJU4S($J$W@$T?ju&dRvfY5bg4S}rYOVU zd*`Qfm*^sf7UQxU?~+1$n09P=xq8j0CfVSqc%FpvDPgC22oafohOks41yVvPS4H^@ zkVVR%;&M#r_@lG0MG{7Ce^1b5hb>^mE(m33xVCWx1mO__N9 zD51SCd=a1v&2&nwKUtS8tb(#V3>K6hq4i+CDKcnYwd8^B)wF+?Fk9IWYv%CG9}%8; z>vgZpF`cMn&hhP=2`o2ct+D3sTZP~u2kQ7HFCrdum*R;DscK0!ep&`i+j$FhmP_8e zJ3w<@4i*1+gqWP5!W0(dhsCbpt=#iWi@3><7PigJSz46F z!U&3gG%fkojX5s1jsow|LwWD#dHxoY(4L~K^nyvxrm955x;%ZdWR4XX@m#bAy~LT} z;k0*$`jdT|6L(~bvhqep;p9O-5PtEYcb~fx0Tigm%CqUtJAe18`#3gJ7%zkpWV%<) zBuH38Q<{jCzws{%F|Sv#+^pZ z(lk90wG#!0wRj(4g^@>|U1PLMGr~;{4~F)#V8AcdvBKmO)#1wzrg2whgTi+jK&P5{ zF^;y^OG?^JN&8K!)M)E5aT8Y0c-c^Y`E{!?BC_5*_gLz#7aMt}Qvr(^-!0CEGbkuY ztIBAzp72VPmGLBg7c$+W9*&QglQprfQ&(QUF=M=O3&|xB2cJQGLsT~*uK~1xZrR%8Q!23hU+&sP7 z?s9K}D}bvPu!IHcu$yG4GNP}iJ76mo+kEtyH!8Kh@%_jF=iM)0t298cXdI#(t(lwO z2vr``-8ok3<+-q=P8s0N>EVHBgIEi0EZuL)r1bYKk}YVmQbS4Y|GBYBy5y6Ul~<+Y z5IGClbJnbRZ`)JZPN-!>RR2Zhc63pUa1E?hg%oJ9CtYKi;NErM<4*sj9V zm*csQp!t*do%c(kHQiehZe>VBYJ*Qjfc@iH_?pd|?Z??*j^CTZ2esbbLw4T#*vE-* z-Wzr9nL_(U+N`&BspLe{hoo&VBd%NTT6cH-eqhE;8y}M{N)Uk1(k69jG1D#w+h} zLxz?1E6%zkfA1+CiC3~6ti$6ULdAz*CFN<35vJkv?15~>g;Jz0R>B}N)&n1xxxSm1 zgTwB0Tuxk8nYGBJ;gE+v8k(eNYufWP8t-A67WcurRlh4C@gKZZvWtU`jt^MHvF;7C z_^20-^y>JxQ2yH*%F421U)?_WH(Bq^O|DuvLL2H$?CmyXSxQd{jPyU6jkvdM9faW_ z9PEE2=Ks;Pu-|oDsW_`Ov^x7WU3~l@w{2BOgrm3qBrGO^PGLJNDCVKtl*Y5B4KUkc z4ENL(fMf61CvmdSpBuH+q1xbKZ#!~a_rB(ZnPRg)kD2e8ar)Vh*~pGzQ&%yC9J8mI zvQFF(HnQUN-b^VkC(z<}@ppG+(J8s*g76{|+dK~Cta zYw_nF4mJ+0JnwH{C!M-k!mkUlI2;^IHP=8JTi^vbxUqK?L{a!$0gRVycP^dq34M+)tS9Mm87C9bRbP~OTI+y^|z?G)3Sw(&88UrsT&c>hHQ(~K z&70aL^YaVKeI>_kEANu=X(xMoaS=Xqc#!^Q2)e0Pe=Tk*XB9Ma0^Znu0IYXBSCRUF zay53J%QOwSoY`La0Ms}994bbGmz+ZEPQ%3jC9l18C;wlQSj&_*aF7jGEqGbR1{b5s5?_yg;9)Luq{Ev!Dzd zlY*n6p^V?usnb8O_QbXMtXeas{2B3sf}O8trJnro#RG(o>7}V})|(ftx|=KIhAmrO z*ISX|J2J4AfVMxT`hP8FDaI^V<4UjHf_fE38k)T=kNI-;csf)8`Rpz|`} zvttZb0Jm=vj(0mHGkcHd!SsY-MsI7fzlsL9E1zUrE2%biW@Uu~nExu$C zu5a!SJbVB)_+x>NPquSQN{aUPEpIZwZau3iDs3LSx#3`AfQx0nAQ6)f@X$Io(2A9M-VYUhA!y<`X(T&y+q?Xu*n zs?DHTkee9oK6t)`@GoN?q>pv7!I~75y$H!K7Jh7+ZE2giOj&#js(v?593)v-g&P@; z@^Em-i!!SynE86WMQuPePf5k?l1s5MWb)%$JFq!)-OG918oUYmGj88_(6G+w$Xo_L z^>bWTUcy(Rq1rZGbbr6xYq7bJelRXt7ep^Y9SBv zS^+b|7dOI)h-5Xzq*3+Zn86h0=klnapVABT)5of5G7^%w}ZF=QVYZq91A6ra|o zgf}Uy-vPceE*jS&@xbTy^zFrfw;K&+jopg!N;HgjBJQxbBnwIhU9O&K9ajGV(El@> z8kP+oJ@anzn>3eEeA5sBnG9`e$7HtFcr(kC@J}zK$|JnINs9yV{AIlxw+fSUXUEO1 z0Q3nTHdbBvV4!(IhT1*-truB$?7~O2so3GO#wVe;htz}&Xxp7^j@~tYX=7Kfx;jOz z!L)UC{uGK8YE6fO`BSl=3_5T_dAW0W)jqm4AmxC>rMlQ^8%yQZtEy}^+O|jE>vxdk z9X;xppORUC)X^KbY|3#W&%jR$;>S7HG5%`PiQz|lQxoB4*$fgY$Z`WGN0HT+oTa?7 zcnZ>$3^C46NO$uWLoo7#h<2oZ3DR3nPCOnl6yg~G44`>(XWHJ;k&e5m!jXa`bQsD9}_CkMbPo6Suyv$cwx;`ls zPK`{l?x9VcXGZp6wp|N^U))}aQC5TY%#q9Gi3p4>{ENdpBnt6O&Qfai;*3D5emE#fe-#08FKn8XQ}E+vCJGB$n{APUCtb)n_5DowrBfYa zCDi>2#1E^V;?B&$ys$-IKneN?-f%9 zkpVa)-51HzjLV2Y#5Z|H;Pz{_BEf0(%-(acjpk2Popx37##DYz#MAYOpTKqEiDt<`sNStSe%!Ct)}Y>iBvS1E;ST_ zt9Un|`6TUAk|`1%~O*B{%i9vlg?ODm)Q_;`5dkO7v*?dg$qU|%ON9$DQ z1=nSp@w_PvNs)av$j4hyWMm+9^z6p?xUld`;Ssvg+%3Y#LO;U?nZ8bIy3Xtzn+Kp6 zW@vPEe-3f^f7W~vz>lzLPs}UHtyQG4GR2fyCl`4mR)y89J*(_xpV7r-v+(5!Wcb`= z{GoaHZr0m>v+ftmi~o?zsyW>v(ynh8IL-U)IwA#@IsQZPvxSL>Apg61Z~m$F_pbb> zOa3SA`ln0&>5|`IE3{O+jYh|G2iN16R!x7Ld;r!-|t?q30lQ@`t-CjEy@l;W$yyy1~=H+a_c%9ww; z!7E7=i)#eY7Fj8=VP!%SQfOsf0Zf0)ly$^)Kc-B2bR_L!K|qzHil}aTlF5#WaTZh~dT*LwI~QrF-*};;ut5$ccB?nv9h!dXTv6nD zQuuC&$%AeJ(=84uPd9fF)S;mn;EqUzNXce*8a`q#tT($KwNGXv9rl2q#s=JFq4h~T zt^##z5a-rt#&<|yG%_*P^o{C~NjBIRtw+zrllM4}w*_J|SSII@7F=Ze$|3Hy%r^UP z6?+r6w8}pdAxGr~w81A) z&J&Z}JLPqCFy~K+kL0DqfwfJvC_Fe-ii^4UP%ZOXujYwa86w(!3@LL482(Wr!0E%# z(q7#ZZWmj}73J)bAM(1@?I~HMnKBO@H+6B6lE*x(k!z?&+8DJaV9O^B-llXaFDao4 zJ<8aDdkaNbsWKM&%>=%##Bf`h%RbD@;~@35Emp(6Mz1}YmPDOuaWEG8v{uB_9~!YG zs-y?#Yu<8O9^1L~(|@uyseH*nuaMqC*SnP}F(t^ZvMz^*en@;nm+osbL#H>Dm+69?mci4IyN=D6{t=u}^!zT&*w%f1(TdF7V zp^cTjeU_z2j|VYQ#%&`UbR8K09zDXL{O#P3k`kb#QS^l7zm5J>@R9!Djgr#De@9_K z*RCMfzPi_ky4Pfp9_P)xzeRt_zIGZ()yTQl3xnU9{4b_7zl-yGq{m6F+Lnhq_Ae3t zlkpc}|EuPonEcNqQ|_|Oltw3sVE{^Nz2)GNSPM_}l=?JES`2*l|ZoafbZyX)hc zA9AUej*Ok2u<6shfRmOOb}W@TABn(e6J~Q5j;DPprE)xnT_s6-(mm#sQ@n)gpYlar zGq7=K(yaBsRK&iKe&3%q@@<4ZE^}ibsklf;IQZS2&-`}ftKpT>raa+v9UjHIvG1O}oA4m*Nd zo*1YNBu@A!lO+${V4G(QZD{k5$#w70+DvuBLd<0@ zyPg@=F9;x89Dy=73}Nq%Yz^y!<~~(HcO4p5t^jMJm-n(7y51Q(KlZAHX=%Ult`iB4 z>J&wfAR*A53$qow=22m;B0O;}!F9D&!Uov9p0~d9++=m(guSE3bJQhaW!WV;N2`Mx z1Ycj2*E+U;y7pskdYI&{-Y?Uwbn%{}ef!&rB1DIF?ncE@U=1@`CZD(89Z&1o#fU4a zl|3#q^70Fi123C<*}|howJDcauK>rtxF>C=EXvp?8MRfS{NFFz1MuVg?_H4EdOjGf zQ$cEYJ>ZC$YOjC(l?|b2PHM*Q8AT@4+SBXzdhuo9Oqu0urkO$2>R88`o$FjZb}(8} z0qm;6VM8>i#Xr={wja1RU1zQY^?%5(gv4H$$Otp?rK^%fWf5}E)#vXZ(TLf_Ezxhc zJ+}xUssUi)JgsrHkkD*#V`MT*fRV}j*AvUQj7+SI@w3G%S__Y`Xe z6G|s~95nj#DS4F@l+}gXhA8xPzPFrEv3T6re|K9tbeHvq!g@ONmyh`?$5;DLB}g~7 zMS3R-_HCwK{LqU`S5Z3oG;^(vggXbN?Nb|yDs_i*+z!nc@lVq&e9Wu21qFS)-W{3l zLu`J9Z@;pN{P8|3?t37E7?-ldPt>qQmtn^9$*?saP9Uoo^|v0Yan==>>0Zp8E>;{5 zkFXcj@*!R0-S=|?ee3fCb!K&hBi?z@(Hr3F+_+JetE11%{cl(iVE40lg7=8?#{GX! z@ zM!ahDaBkSQa!yd*jcc0HnL$$|=i3j-D#^TV9-Dc;1Aa51!r0Fnt?s;vb*b{Uucp0B zt1Qb+lk<>#PU?+32_n-@bvkji7EiJNT4wKz^owXI(@9+hh>h;|ep?oVwUX58swn!P zt2B8yk^6SMhsL??RnDi%J<{_2#P-kTweBdBf#1EdL8jQa%;tL}7(4N4HqP0<6&;=B z!3P=GX{C@_2jhluu)ZMVR;%rQI`9jvf~Y_@&NwPzRHYOhyd-pD*c?})Tx6Yqj!0>T z6Jv$loVrOYT8KrWf5dcI>P?7pKxDaxzfOI+B93;5o4AT} zs4=5V38_Aur8us7AJccz z3V(P(C(5XK_RtuCrD-q_GsKwsv+LKJZJlcZO>s7!_g?$BfnCAo35nzNM&@xH^ZQ8` zviK)?cY0)%qJN(C^z2BdZNr*GpLwq!ta$8bC!HtlIFOq0p$?nQr;c+OA+)pTCm&~+ zx>oeQ>|6oF%HE=k&L5ywlxDv4wf*=FD3UWUzhe$tbgOW~| z?o8aCGE8os{Vd4%x-T3=_iVLgqh2Os=k0L{V?lBBse6@^c5RVVUk{!DDutjErm z^-W<29RZK4dl@V8l(QNcXVnZ@FSE)t0RpL3UEx$eU1`v$mCjdj_|ei05XJ@|?~FNu z*0kK8gH8F2fy7M3P@YvzDOV5Pglz#%4L)&hh_roPgR$Sv)MweMF7+>9j`93P#3VGE zvwgGfoenwmLmN}*aS9}n_Gg*2HL+ zl8H8T&S%X6N}e!6zJ9(A_{4Ho)~eSySu+SL zJvml~bw;1JM5J-N-+nj-r0P3X4<{W?;8q$iADmMf=;KUGO8SnNr17K>PUEt5x-0Ug zp#K>MKPzjfW5S`kk$s1Ul3Ly9TxDX?M5CSl)QI6MDU}OFtlKE_LM!v$aPz}>JEl%k z{$yYQvbBdAVGz4wrW-|>xp+dkMuN-j`q`8AW?)NPt0aWR=3e334&$$Ii0=^CZG)I? z1>n9&eNX2=7qJHSTmObsY&UUR`y=Y3Iy!h-lw z)9Ugspyr~KV9=Md?Dhh?*FGj^cv!`l$(_r+_%5|qrO08Ls>*dKzZ7y>m0PQ19r^19 zFNZBs?Q+|s=D>~9gO)`lec`NK%m}9Z*cT@PIVW%IC8aSy&FO?~Xi)@%DyIp46RKB9 zje5j794OZ&Z331KQJF5C$*e~E+p+oc)f=6sF+`ZQ48AX4vHs#Yp^^p5%T^r#fN`_% zK>NCy(dz0oKr1~24e$YeNa5+@7oY0&g6A|Wdx;mKYufb>1CgGM=T3MhH42h^#{8`(Hhd=~49>ykzw>^H=&&+$B{?Ve}Xr^|je zkI$_}M=G`H4pmMVjT-^nokHPk(FbNew`}m^zKEw-B3o_IcqyMrZKz?L>F|AfK3Ge7 z$!(lNnk3)VX&2{{)T&0=jIyGmcbF4_>VYp4#1PYj3sXUtW39$QWN)x_Ka$Gzz5@QvuunYE9F&R=6z&_whz1 zz?&27+OutkjDS88sG}BTb@29Rrg87jC99p}Zm7#-7w^RbtJ10v*22R^bz^edVhZ9z z(yz#A_4?_#_g*j2=H52-9i>SZ}fdHuW zgBMjyyGzj6Ik{m)1P$$(B~t%EdPtrE1G~@V6D{+Dpw=O#nVoi{ElP+t6!RuW$vTkd z>;2SPB|RQfkh2YH!gAuFL^m z%2?r8C9|*u=b9A;JCEJhg4u()%}nzHFq6Xq!lFv0lVaRAgpPz6kIk&K)wt8n@RlVV#%v0F511m(+X zPnxJxbI2mONatb^-z@S1GlRfXZ?afDdJv!MPG72cn_^9O6PpZl!ZXhOlSe%1#^YDs zgn(~rTN3elM3Qqrpn<^*8_6DW zy|RYZ1hbjlIu>(CAo3c;X7lvZi><00EDk7o`fLom4xL4AussqCFV*hx+Q12VXRT(o+WTf2w{n}{;HhYkHcnI07_#iz z!Rk2f&{8ZKiB+=6uL>W3B3C1q_wMIc^{98K$$Y@lC!E$nnkqA(Wl6K4#ZKpdh@RL- ziHLLa9FYlCVZjag5(Mdoc!C|S`+YJ^96M7Jn2D*(l1xyh_JaNrIYqOR zi}!QdA0)siSk%wbS`lGs~pl+@}qIG98wB_X@c>nPDUED{; zXKlz27e|$cNX)>wbTJs9b{P-eScMRs&^cLmc3axS=gbxr)98$^wPaE*?twpUN^{WU zJNPoSIGcCc^LdJWoA=Xa8ko50E_&yK8%H%go0T_pU5ew$vtO|_h9qmvQ|CN{3W1O^ zhJLoVN=Z^*up~-?xwc!p+zOd(^Ohe&!e`!|aGNy%j$g%E0=Bm6uXh1u?Dh~0r(a&9 zwY18S}ac}E}{306eW_e@_?I!H69}=h{ZP4 zWv#iO%UU8HCllXGs%bbp2?9=ZKkPE5@=SIUdR{)LSli+g_=&R8}*By;(*T1KP z;}0qo8~399etp*>u}`WocewA~ZIv0#(GQ{vSi8OA(dZo2$fNN(;gRvOXXuN!i@%PK z26x-ip?qW`J3ne>=TRvjv+?&wmm)$@(c_rnaeecx>CawtW!p3>EoNbaNVzGW6Tkb# z|4J*X#yrfuip%_W_G}D0os5tGh?@AV3vKsKs%+eRLs%> zIc_gNd-`O05~<20&qw*XjSo(DKV3(MnY=K9V8g#4*5!yBI@JSDZWtY6f2vxNr7#`R zNNSHOoibMZKxNnJ4(IxkwSA^E`c68Hte6>W#%cJ7#zIu(LYQng<|pk`zU|4oC}`V6 zTDi9}uJxEH&RmcDvVUG&o$~Uu=qlxe5oG29D?mH4(RA~DNGjyl1McPTNG#FG_jq^z zaY(jU|0T({zOr*Ix#DoB7SADK_r<<@z}V^!Zw8>tkW_@xeD#sgM}lq2P{&?^og|W0 z!vVLZVH1Itq_e(f+e|h*Yb-zRr_ZF>twl+`kFKA|Rj(e^-$u#RLi}f&1!m7)h4WaJ z>K}tRTIqac_jJDoLRwLM*9I+~zZta51!5me7?ERCzP%d~$Nt=F`89C`n6K-)0-P}{ zkk_tk{i=XV{mFXO#Qmp>toN6ucTWRHD)%2P<~}KV`_yeyChvRcTYO3*;)$h=VAAo^|9B&;{O$ik^iKc3%-_~;$K#4*b z^Pd{|y(LPcn-+X64LH#lBdl)%)lfi$a_&e+O5A}%Oncb(LR{CpX5%({X z|Noj5{g2}TykMebiFeFZSj~b;q#RbyefseUfn>%wfvM2zSdoeR&H7AkF9ukI_pGAY zKFNfx92byH8^$yqyPiQ|lxTWez0xcns)+}Un(Q;|-Mf(|tAY}I*^sI?STsI3B!mpk zxB@tW)gGK?C^;AQZR;Hz)&&&FXbxkOzy z5p}%rkjM!GFMR{jlKhfnVo29P6XKm<&YGfQsnxCc$B)~*hOb@hE($mw^OjrMPhF}O zDZaI7r*fRvJ1NR7tQ}BO&uX$Vbmr!fQ!kv!=K$3k4F=1Z3qB`ot3ekwg zln+rOx870Y< zxmw1;L+!GfV(mS)RZpFu_e5`WaG+pnMH-|E?%e@<^D&MgA@JV34)5B!;d^miK_S8Z z!nJWW4Ae^!x;#ehv3Utix?i(7>C!`n<@&_La2>L#toW^6$v-f|*Jeiiv*2<<=j|LKQ+^x>a*@edCCg9HC};lOC1LU?Kn8P_Be~Z*uu9Hxz}GSP@eH1J=~C^}jI&_w4S4mmYjnpg2|K&NYj-ee zAJL~AKb{R=Kdt|K^>g;u&E&)EbCu7vK0KO0Z`q{zep9Y0Q~0O8p`)D4JL@R-XzBVH z>Sng;Z|9x$+{JVo!y=p4FY>wiTD|;yC|UnA2c89mRILN-hiqTdNmFI-eP=WtkH(cW zEAA$^{*NK;YyXe+jc+;wT;TT2jO~G=iSsVH;l^tZ9689-`~DJ0MJqH5L{T9tSRzfVo}+>n~-QVJ|RHj z@{x7Hn3+!?@j1WdxtzzxUj~_e?^?d_5awNHUFgHUTyrI zkOD>47-!ag$t6h6%g>~v;`px9{G(4CywwY9R<^M{bDAqP03%amrH6Cl0*(hbw%GaS zJ>EE@Rh<3#mYe#e9yX0^xgDG2l{GSeAd!Y??oOpWhqU=;9See>2 zoa&3y!KcQ{FIXK!o8O6!2gKy*m=>mF7e)k1`Suc8N%krmOxjlLn21h}DD|Fst!)nv z6b?$Wi`7o2f6l+HPL!S&of$g&)th+Y#TIVJp|Y|s{LS~)@~vIyg;kEI%d4n!?mRYl zdv5g|-$R?`LvCgFggO@8C-Z^U5pv$2?UX;h;v4D;?i-bQs@ipWXDM2$zEvBvx7^{} z`7*^Tqxq79ZGm^FQ;Xx(z z6vJmoMPvNOA1oqAwfbWD{9`*eKm=Ox;9INvrWQt50M#>Z+(cmXpoA6Lo%%WJ80n{; zYBT7o=5>@%ImjaMziY6)#Kc8CroC$t@3~|M+dI$HzE5QEWWPUx1OW6#kK~H8W(nS z5oRSr{0ohRJ?I^PB83eYh;dcwj-*z;*1T#meD?~o#RUKt)5@0 zIah!>=3kPAO_esZrwcoSV;v~^>?D0?4^72+ju~&SAZ|4&mLfNuK=GPH}^4{gyjt zU0_-6P3Mz)la5HUfLjZ#D)pbXvx}Rb=Q-v@M!zmEMZv+$l=u0>_qc- ztb$$lMk@X+L;89M-6I1z7pmg@)dq#m4xJZ^29&)6!?hI)|T@ zE+pZD_m)9zhF!a8TC9Q;ic4FpXmHn3+=~R4QZ$5MAvlH7LU9TdC=h6iyM*9YTm!`+ zxEFVqp1j}t?eBZ{%-KKA%-(b6oOyp_CeKVJw>|e-_r0!bUF)h2KJ@wB6~)iGv+u<3 zQ_r>oDia;4fhcm+oBH9WQ62}?BFQl1e)}t$S*l^FSmWY@BOLoWdB-0ybrV!n`qk;d zx*E=d=280>lYm=^z>!^o+i0pg?xH{QDp*gjV2jnBBe|n7!$yCcAb10+JK0@4m`z9y`i9ME(Wf3&&mkgBpFCda)&YbW|KT^7&QseNJg$KDcR=@3+{luLZ{oh|3Z`UE}Co5C2gL|fH0qrLrFg!^< zzg+OiNX}>%f5|x93t+f1J~Bn6xjY;A3t;BfKjo=GdgqP`z4;S$>_4MaL-^tITjJ-O zmo zz7#n@E=o8 z4TLr=67t<^@2Ot+L3K$y73iaSonz8!0dnaLU|vh zDjUu_yi#aPECgKy7@x~@{sp8=XkW{a+=!F~`B=Vi{|i8|b^v&X1_K){1Dz}{(`~SS zyZ9H-?s#*(R!W@EpF2A0I6OF?V^?fX^Io7HB2p2aV&f!%UqW4_lAni{|lbb3N4az82fMEw&MuO!qM@TsmgF2;p_c9|bR+LXb9^ zdeuJ&i4Rg+FF)Cn30C?pJ`9RakETdalK)7i-^i|DQc;J%Ypq8(;eDreF!%H%Lr%?6G(q9mlZ<{qv<#H6Vs5t`pm|afWdEa%3`7saRZpvzSGt|r!*gWC&IJIqC0ygZ@>MW5E#s+Z))|Wn=YWA z)@(F1=7%V50hKO#zv)ghpeKr6FZ$$mRK{g(;m*F{-rXF@oeAi{EuD`&(%sUo;rAR= z^wGwozJP(mw@M-+FttROrNiXTAbOVjc%2|U*M5%U~SHV)M`uQ*#VtwKi;r~4BJ3pj`Oq*^!%kCNfqUlT7;T!Vf{ok z$6>Jp5Ip#h{`LI4r|hNP75S9o=E}IaZLr#ft7wvlF>c8PifljnX8?sx1s#=+Q*O03 zl1>(g$A#GPwV$!_c#}+DTM<$VW{bf;Mg6RrVFyC7@`3rA&>bslu+@j+kP`8Jc|aGj z)(*U|kLuHME$X_({ZL!VmgiyV`JzA8*ZogEz|k|%&J$)I)zw;gmZmJ5m+?o)t#uGQ zDC~eE*4yQ$HUqTTe}`I1+UQuw)5b!-e*qPle*v9|0d&33Z)SE{&hBCNJEv8^G*Lo} zfe7*%d8S^XZp7>~{*_eY;I}FfG4^n#I=9AUtLpM2s~S12DzB+6Pwzj_7(p_G#eg9oirM{L;rjc2lt-8C@W|{SQCTyoK74 z=``UXH3LdMuROczsYH+I&R9h#**tMwN0EL}xroRawen=zwgk3qR?JA78}s9vM5NgW zs2t(ngCRz=7V+;o!HPAMwU+C9b_Ez9tfuddjcLkq#NKwlW<~@pS2-D0$YmEA7cbTQ zv($~Kx4klCVa)M!!tKYO#i7-a?>rroatXqjQt9*w{hbLI(XP&N3_n#3lItgZ_#$Hv zBth5=17Jq2QyFkl^3#`Ey;*yzN8&1nHiM5t{p61xTr|9%egEaAQqR4h(lgCAv)fXw z-!IzMZ=J{$azHJ#$<~3l>L}LB?0&88;6y2%nMp3Xt%x`BP4Z1dDSqEXL+C44F&UjE z$KAAh6Nj!Jfew4yDe|uqz@=ch%H5Rbaq|2?yIRRTtqzWZ~W7r zP3|t`RH>U>rD=55g@tjQBN|sPAzw0To(Qb0aUN+4x-G{C;wDdJ=3VOgjb6`QRG!#O z_lHg#%{i4tq})<2fOev7N}jREW!L@47`Xw69qw>knFr?WV$WxGX@3E{wAc0RHkC%~ z^+YkF@{pYI{B~8Xsc+^O`B%7?2F?4}ZR1_5>e{dqIyB40+AXdFf`%GD4+8XK7axGL z{D_r^nR?Ig@-HCRn&2{RevlOlHf;(bPkE+qlbwew==6A%evlZA#@hcU z=-j`5`%jeef9pIbDn3}F0%vEVbAw;^&I$@eOHPrTDt|3?GI&Yt=$zfB<@jg^vvAfn z?ilx5c(5oR+@2M-2R>@}ysr}xqvK5M_UG)%sQb;Ax{WQy*E&9&cPX9vfr)G8%D5GR zeyEqvro2kGT~1uCdv`zk?qOx)l>P!5fBvbv&5PVbra2;dKUXts*U#M2-5vQ^%{P>^ z47cpF`?8@914Kl|#S=)JBq!lDSE9G8XYEa1rh!?3^KVYH!OK@p&_dY%>d!MqJ5Q!& z^w%|{%lFME7XB=pC(IC^&Oz^@{{npEho!MiS5y}aeEY8k+5W2!pELcmsYb1#dMSMW z)u8tO=))R`!dV7yZWks`!0KN{lkq=>*!L`aSISZ|x=PEY{l6RhuTFfGev0vKPNVzx zp#N*)|Gm=xe!c&_r~hrp{?#@7+j{@M?y_`dGcAIK6#wCO*PiIR_JguExk2OWJ@7(P zAK+P6)48cvR^WoZRMvd=UqE7wujuV55ocV`hU+YqeiO3==blqB=S0%FMgWpGePRyl zf5&_36q*}1GEGr2&CtJq00msAPxj8>AHM#pbUI|}%`HcyWmkV! zHm0c;&BhKV@}@}olQBB^v|r_tSiiItWzaCAl9_+!lf@gdLgLapc^J~ouxD5(ZktsA z)f9?}utR)CEv~_r0wlxocrPt%kA4#E>z`N z1{6OE<^Bw!Mh)diDYHNQN3yws{wvdh#PU{_p>uAq+eJ{{5@=k&zyJ;6=wI{kYu0U$ z8L6#qb$hWGVa$K5wyfTN$C!qG;5v>Ft0|NtrAiZP`)9iO|CeA;DHxPTeA^-$l0t{8 ziJQ=v@QV?fDujRd73QzG1aSb>KAz(22$j2~2FvIcJysXkXwaMMF6Z9O=|`ER`N{1V z#QX5g60`b5B_piYOh-eqQogAcPw?=;%dFlI5^{z_W!S^?iz6EHc{#IJ*L2>*%lDo_ z^3O6JoRTuU;urHzd2aL!KJmd!*&bnvGFT@03rLL$oPS)+w`b9Ra5B^0$NN#j^{C$A zEG+Uj!$0|o6eM^c`PO>{nAqd@E7#mDzYHnOvm9m7*Reauzkr8k=04gTvIWHLAF1|V zghdX~f53_fm^M`R&p~4{DYzpkVhF?0@0GOpNbD&PB4ihkIr+kb45!y-utpPAhV-9s zZc4`9PPsYoVbxt~vi|x7sg3EjXRrD8yOMa3b~^TK4;an!=-rj*nF+Wk+xb<5Lm~5@ zRF=1XFrFLIxUpPndWG>7{9gUs3sND|a8J8KqP@ooC(E?hJpW7{*WXJm@0I+pRMv#u zAHfe_1}cowsmHJ`1PM+R(KGlc_R3AWY?bTh&c!pSWLHavH=F-4HGcdelxp89Wi4j~ z1t4BiIeU4vU9?*o^I+Y{e?>j}&|-E4D7I^GN~rZcZo5G{{1F1v6o%ozYp~%J9yREs zv$D$k(#;WfL38B1@E1T4?Ka(?NR*VZFK7)1Dy0)!BbAhtly%WdMM~nc=AncBjV0?p z$s>xa%g9g1gxo#ed)62Vhl@JXh|e{+SK;@W=d|?O5QS9fC=W7dx2t=(5Ih6fe=N-~ zB=DPAfy~r8ZS)K?#bM3_j@<(Ez*iz*dp^}d4e$0CQP=r0^>VMNZN_Xb#f_H`#H@M) zQI~JyPZKeEh0N?9JH1mwag>VO1*_L!#;~3#@H+EVMW5j5(pzH@-CeJo{QO)e4XEUR zyNDrWtr%fk6noNRQW{%VuZ3EtJU^phrnwQPrjgvX>lvT0P3lQW0a@G+-8hfdW^76) zdNwWfh7Unp?_xDl4r2-T-W(*3G#j>WG&DvdO8gugNL3xHU!H2aW&cdbf{mM8HmWvs z(umI@*;bFi%wbIxdTPq2#(cfUi(J>TPs?sxv@&OC5n=Jbsx*6^Nz+d#p|MV6n;ZX^ zP0}03yAh|H`S!M3VtSf`<+L%Kqq^ zElB=o>Gs4Yz`|7JdDD*@&kNHO0-k4&mP=nIbhdW!xvl9D0v*G}Ive&FUu&8($wd0d zBa5hsfZ=;*03y91WT>EhXW|rQUJg0s^eyVmYU8M^VA9BmEMnWM_iI}$jLO8*Nzy^W8BRRYgZU-%D20( zgqzj7-C^E%6;C*9siy@)?d2zK~&j$2KFVJJwQAZ6r^Dv!um1L^6GuuNJs<%z^8l48-FTHXTYysvO10 z>Q-7J&n39Xy;AC8B41cJC$CL;5ltBnJvO02Qq^rBxmi404a0%$lOdT%@9S1sbgVQ6P*G^LM5(Z&(k#7n(ppR zrMGXv%jHwgizCh@meS$i2n!zx%!`MA0dad+C5F7Qszg7aM{arbDI5Q=8LiUuWbbYq zPpKl~MYkstZyc~hkUat@VBaMrSZ9$xl{Q8t zVd{4!Dy=(NFQtk#DDK$(vSsv{jXq{u8PlG}`YW0#aojxs^`*_miBB_jtDAisYf^UZ z`pnB*(Lg#Yhfpo(vSHGf9oH_>#fnFc#Kimg$!cIsS2*R>HIk}dn7^L!6o&|f%?{c z1!Ii~O)j*ginb;ir%!Qa;bce?93{XnqhinGU}Tcm*HN>`-<9T8`UqzW`Wx5feB!l_ zc`TKJib8X7n-72Kv+%O4y*4CEkJ`<+4RpRO%DwT>=@PaX`4H;+WK8OovUE1PyXI! zNM)gSNU|kgzSw!)!^Cvl{X#*3z^C5S7=|3_a2tI6Cok%Z^2_^*xT6xv-?ITRYn&q+ zlB7eL16Y(Vy!*KY<>00VWnU3~%{$J70ogT&*5f4waih7a>Ne@k?_Gv<-4ju)8FXXI z-@QIooNTEoMWxQiU&U*^*$5p%R%HTcSpDm@B>F!``Tr_9mkj7zLwfcA;jdFY!z^qB zD3^XVoQM2aE6#{?q7mc$va;$p3ngk^bD!$Bl`eXdPv3v~PzZbv0s9`VCz)ub;9i{- z$I{HZr_rKQc4awmh^pfDoZZ=d87|(lz>GL*yVvgNUwjftq> zWiK*pO_ZD%8Q$@27DUE-dRfkevD)yt^^t3oNQ3iMy?Ihqw-W{ZV(QCkF~NdgLI^^a zEfWm7py2(;w0%*ffhjeMzZP6x9bR=oha|uWt`VIo6@?~OjZGnl8h@xscyLTT&nlHoo4vmGoH{0Lq58T zC5z!F9KU{Jn$_SAS9M9i$;f;QmewM|eJ(?pob)>2V+|pKCj2j;zA|J0Bf@LXrP^Wj zTg3A0@dKHbIMDc~3i#&Oxo*^ZlABblz)?cM%Nvcz3m~Q`8BEPMit}e;-qf0SM9#|& zXGZISRP%1=dZhA8F5Di!+UU%)S9NwTJ?DIBG;yW<2?kP7)B=5x4V?lH?? zT(A!tt$NM7>3+rL+)nZ?)nYdjqDAkl`(gdDV#Qg1Qyz3VrvY^Gxjyx^*$l37+JN!UtJ06B1t!%D)?DSbqO|`R0R5+h`GuzD}iQ! zdX88PlM+1!O_J!P?7sleFiP^AL}Jq2MeRDE@Kj~zvz#%r;Gxjl(oZ7=k0Es0%~zR+ z=ZW>&Eqad=X=WUzeIHYBsaq!yvC*L_>6!&pxMaV|9;p-D{-oM7YS0=+A=2bvF40ni zWDP4W5q|-PvP>ALFrMPxj7=(LVxVU$GrjxGvzMY+X|_6hF)cXPjOh+$r{z*09!-@D ziwRXczd4%T{|o53!-Y2Q%+7(c0}$R)Sb;C8#@Df&A4j- zzMf=kA5$7(J>20AzL)36&@Nd6FIgY2&caMD-%xXzbOp;12oN|kGuXIwC;F$RIZhF9 z+!-YJIy+wFP1sU!aIoe61(X)VJyQuB9KFU8fxOL$7wil3W+bDR_9C;!+9vo27>ucx z`B%-3CthOhfPDU~eLOY@&%0FpbrqFP3h3FMeTxZAOHW#>30BN$DnFaYQ zfteJGW&Q?`)iJpaU^(N_DBRqOexf#&i&y_)epy~gY4`H6;uWW5J2D`7^jyNQ`TOI( z+jYfi!vztZ@ClRLPLLWCYibznbX3LE{JpmI83?@2oCljqWDvutmgt_VlR>*Nf_VbyHtV*BgBm-bM;MjZ)h=@)H2vu<7fX19>Y zk%Iy$i2_l3IJ|YU$>-32MAw7og7r}8I6)=n`&-8!A27CYM^!O{e9OP@^&MAf7NU+I zI{_nx|qaQRiL%{^48pmg{Ex_wD>iw_j1OZV2@6D|an! z+%2Lc8P$JZYBjY-5kvQ%KSfLiMtm{fh8mNUy%=;9cL0kTZ-{Kn4HO1_I(1&%YP8 zWAR?hcRt5}hT#~gQ~0ikziDl4n(>DlXVq7#M|&Fie|8V+PL&?G{yrFOpqW>BJoNIbaPi}Z!789tZMDeBXoKNKS9FJ7#< zS0|+^KDTCMYJL~N-qMhF+v@jL^iK7_-)HgDrB?pX{)+&|Q#kqgo`yrg?uSZsw0!6m zj-M;NfS2>ay74k2=hs5L+_FnXXJ8SMX`ei4r>qe@!wakYeuj{3Gc2kCY54y%-ptBS zY6nWyuMkU^2f1Ny1*TAD=7Q;ZLorzH%2U)vKH<|1MmsYo98L#yszdS*gMY*!rE2}M zzTk_Umi?6ME9!5{Z21cyH_j_G#R8{e8~!E2B{L5n0H|KK`R6^-vxRM5GWw(TJltVq zU)JgAljFWeD_rVlaGW(egO_e*oua3+O$C^l^QHx6*1v!PyXwM2*P`;7T~Ru`E})YJ%hhxOYMwN%y13r|sx^Ts> zd}4$jDW}OFZ|I0agcZd1hVzyejA?f5X$w6!FRhvSnqg48X5Od`B63(GPFy5Xnt8!i zL*lsMr+1gIaBU-d`}l{tl&*UmE}<)L1m^ZF+;+Dud{=A8{4XG>tnozql0-dZc3*6e z#$gF@c*H|*!z$L1zU(LS8rhIfoj?Y}+$hghl0}f%XJGtS3{K#E zB(~bLWK0L9U}NFAC}9jinJRJjSQY{~Ha6M|b)q2acs32kmqJO-9(GgI1TSt|vQc8r z;&Cb6U{?3daDa9mu!zJOoqRH-7VRH*2&)`*vsxd_zP%ta(TYd8F`)heRka5 z5qL`V%?Tv3IGq(yC_WFrcQe0I6iBhPE#$m*AB|&17&kh&LHz4g_a4`u{MvV%;#?eB zBHK4bt;ydT0;3J| z4A8INWGPrcqFcxKtLIFS$PsdNgVOXnj?wU-jr7#>@xh(9` z=W)X@B$J7x+F&Bu^Ao@MhHG)p)Rq9x+mw>x;QH=fG#t3>HK8vZYi)+s#sBO~<3<;> z(&Vl<#VwSWWd5-<*5R38uKdpH-GC;1)07cI_V!V=jWQBo38^zRHODIIv;X0q1i&^)Ctx zoGw%Y7NL+5hRV*RanXD!k5TkN>sz=t{=Q=}8M&DVl^6L*jLaS?)JJpB9kFGp$T4_T zMJKt=_?Up$_d%tJo>$f_C<2|MVuxk+*Q8NDJyW5Zr40?hW5KA*%uy4hs=8Hp!~1?X z2zQ{S7sSjAIYmi-6l<@|D7m!YrW9M9u`?~zC#z1}PnKsPvCBnCQcH%@1&^qE)%OeO zsl!U*jl%hxMr-Rn9kvdxDbJN6^}BVi(;<0Lr1YU)R6@_h#Cz1>2M1qGqjzSO3c(K7 zw41Raz|^fo$ldPHY<_FYUwDmyd3O{j$K!`_9P^}hg-wVG)NQQ;*x7r|fNuly$9 zi_}UB;xk_Bte0!o4m>{{3bl0#R>Rb7SquklX7j%Av?=4$AN$p7jHgf`V6Yii?Bn3) zhgH8b@s4mS;!t~-*S-Q@yegGPnC(L!8uZFr)h}%2uU7IO$Rd*N+kc_t&w_bL26lnw zzExvN$*azFz)m>{-Q+@c_J6`8Y5cwln;xm8R?=DrlT;0A5F0NZdwcs5rYS^RQ0<|m0<}8X8pu(Cs4A^31{7C%f z{IFjyoQb`0(=WRyN8gFKk9$;UT^)!|ZJW|rOh1_5PshQE=S=(@2MJT?N%*F$Wf;1} zD<_NHNy+f`7v#s7?Un*2@+Ln**YNn=)xkosLiDN=_>s7z)b_BOaD>yI2%wIHYi+z?+&l z>Gd+f+abJhZcWawsZmZdEyVjGf{7|Z<26%ts?Pa^k%$;Iks7g%DmNwnL02wYkMglM z#$adO!rZt7vXL&e?kCDtV8-@7G2j!!=iKqa(f+ZnZ`i5NasSo=ClbnB6iXxwkQ z-*~@po-3oU(b%X#5W~dtR8JCnWwV^Y=EFx`wC%bcnCbn`&lY6|=bJ;Q{WibiM$-Gd zui=URVVUrhT|xR@xcJ!k{2Q}C+k^|X*)P8PbL5Swleq`nyr< z{49g6;3Jzo3&-su$2F&Mcp?QEpH&%l7KT?@_Kg0NZfWk@%%up|(1o}Y{M~OTj(N@9VL5+Szk$=8N_I6n`^7ks6DCL7;!+7 zz^V%g@gIxIPOZ*W^R!mbPV9{CCcN)TDZma(XmIf!80a>4j)|vXa4+Wl=)oh{z`xfW z+2Xm^xoTF*gqny9F)C!nclN;?w$oN7Mnrg4E_m_`O!1sM!We@$O-bX{jvVq~@Y+K* z0-vKYt)}^OE?fBgqRm^zQeobHxs{LKUl=`zC{ZX$IZsG68>rn&7Ta1dWauhMBqNkD z7+5?fZi6NK@=30?;5kfr%u|IHNY^EOb6C7WBYBR%3l6XPE}~>V(4SW~Td)}olx{0! zXFzoHA|~h$XNf5=kLQ+ypS}CX9GPo4eO9^ntUH;>InK0~echIzq>ZGw70vV5%1GRw z-L5+5t{?Q~eZ2{z2rV~*NT@m|h|27G?~Egs-Z4dIUq%h|LkE{JdkC(rdILVY4fEod zfep?Yx}3h1yu3+${m|<;=3boT$3&!KX~r%;#lH)jGMIztXHQu*#*VCMmwl`&roWU4 zYb>sn0ER?*IYxZ#w!f1nmOoAf?#_H(Upw9m-( z($*15P&-bR-s5q*=rtH-)zwuM&1Bk}5MY*(rnEGOxAv9&I+w zYqVK=l?j9p*X;%770J!=b_r;y~xPvrt zfBO3TR@D7U?-pVb;W;j$-G~@jcVcR`$c(P&^u`v@riPg69srIA3q{U-AQ|g(+wIxn zJ`}wDHP-KMuaoY-#N?@-M;)!(j?C`qf1&1Zrf^kQR<(hNm#`epK00-7m;(;L*qtea zcHDX)EH9qUgnWviFbSViJ&*IW88d@yanTt|LlqJUUsM~asHeqHORFfy7amM0%u%XIuxXvczMn1sQv8r?<^+NCa2=zT1bR8-wQ{+@#h0o3HL0P==Jv=$Uu?qFdwRqf0*daDb5^SL zHV_V_#F<-~n;AhMj*gLnc^QdAqZwkovrRH^bY|91Gp&E4uEOzyHV0AvYh-xRRQ4`hm*`Q~F56zwhUQ{MVMKCzVOeTyLM-5Jh zkXiD&^L4W>FP@3Lts3Wj5i3!t=wAD~Vj!~?G|J!2<0L2^lrb7yp(9e+bS#;WaxAdT z*e+79+hmcuA40-2D|U?Vbr5EhaBe}J#}p9j=O1_y=@_Sg|hlt+e& z(+Ub^YuKb$Ao>@V+Ul*^$ZpmiQ~bOyo<7BrKozH1Uy*hcMPr$Uj2I|soiu=yYDieH zI`H(iYFH_tDs|DPX5=)#h#nDZxzP&Xq8N@&u zC-hT=@^ggF`;iyp-JwsNr4Za(^F%r9cf zUw4$D>QjRzI}Nq4Aw9d6+^XqDm;^^02-cG^MEyQefPkT_@SX-sLH5KMnmo@TEgt5knnZiBcldp$Unx&a<7I!uM znBR+T-J4&%*G;2)fJ9a{jB0vsRn00XLsD@~r?`W~HyxLYa>{Zxb=o;14I|WRpDc<# zo5yo`nN>5a=wD(D3{^6KY1kZy4}{mrusb;4lQx<=J=>o*5lTCrS(J-Y z^NjDY6fgXM8uM_|Rj@cG0>b*`egRzE4E8-^{737fzr1EdDT73IB`#L?=w`j#R2K`C zWp8=r8cy$$4DEVGI4Ju}s?32D!WzMjj&(K;(d~wH1md_>#zp0IQTYXV#o2}ABlmR3 z71pH?@Sq1rAx2A_Y8=N0TDJpE^QNgny1Uua6X?L=h~Ugn@sB<|e^QbfR2&BRgf_yv z4AQG#W5nzWYKKR9b)HKS>L%NwcUkV^`y%!A+r~bEOXmGcR_oohx^gHdZL=~nb}$lW zLfyKfPb~t^U1ZkU*KW6&`k^t8(n1tRp8SChxcWQKK4&~MS&%t>(%z>kbmDbkYIwxN z=RWHYrv?NG35!6|&8pR1BvpC_-il~Q>XpM*?shmue~g+iHmZViGYYE>1u_tj^(>-U zEyQZPFS4|}Ms?kw>SC{{4#sAmv!_G~tqza3d&pWLGtT^hV5@zWEKnj_?o9j7R0|YVKdH+bvAMLnuyY0~33sI|p+kNPkSHQycmt z_bsnS42y8xuOYIH=S(N))Z!#0HOCg%HYSrzop5QDAMHZgXhS;nIwZ6J_^!0^f;8?x zD6D3oxBA4p@HVC9MD;m39LwqOx!=lD?ga2H z#_Wwk4H-wl=BXa0*F*%G z)BRaiIZoqdJ4ByCgO`%&7f*c*faWoo8MM>BAeNHM-!IqaSAtifh^AQJ+2vKt6fC8w zwLQCmG9JPzHRPs}riMT%H?+p6G=BluujgLS;_8aqY~c*K9S5hmR~D4Tg%oyWVY2yP z@Cy#Cp@tfC>ev|kDYYddP+lWqO<$^0;mdJ_=8qLK=YI1wJZA@>zMfMRs7Eih=P|;b;wVAE2&)TvT(_D8YNN;RJSrw$N zLu65E=W0fm6!pbjfTSmC`d~?@xo_CR(N+Ai3pr7nupCRpBU%5|x5UE2|B%g|StY_A zSP&PfuYYp3m0TYRes*rJ@U54)hlY(_pi1akSSTt>VAkPn00gJt+qqcX>M6abS63M~ z1C~8vi4LD`kq*B_lL6C#Iq?!oAhSPz=6f|HSa^7No+*9&ux2bQDXfE=FzT@-&h^$R z?qmQKiTaS3T4&Dl5hE?$qvycJAw!87bR$PiAD_9#3ylrQRX5tXWA5vHM$ck}{ zbUJ+s_V+-FuZri?^_R~r92oIW*I_&-^e1(GBYm*&)5~Hp)ZzgFz_nL7Bp(Gae{XO| zCvLKyPH|-@hX*m&dr%M(bNFpC>2qup9C$KEyi`e%cw|zLZ;o4RE4Vl&-llbiNXY-t z!ioB`%Y^Z3@Osd-*8wIU367!N_CLnn!cROaw9b(^Wo}=^h`J5D_P5${i14IzOu)+( z$mT~=n5~FRdUaK?7h?2+YMU0ZX<*BMS{a_%vP15IIg2}wL&mUN4+E9W%qC?bBA~}f zBGAU1^~!`AhDg_>=by-GP{h-eh8csLgFmeEDY(WPEwywJ=v5v)%Ly?PDri+b+`Zak z(w_w_q&q?4)ObadwJ_qF)7q+<4AmTLDJ$~A^k;<0&m|_bZQ#6$^p<%t|>swGrp0k0g9e?Ed(I`-l?We-8F=_mXiQ-)GX9%>%Vk&&&p0~)LC_20;>0Iy<6n_8 z(aoM$U;B2zq^e~T1~QkhZ|a&ZKk~jQ7oZvI!>A!9zg49nl)#i?|5I)_h~7=Fqc>eJ z!$U&U6{aPcf9e?Peq1&!Vxga%rW8%NnYxRZ&jWiB78|CsRRgK5nOw4`6XI_yO*d%4uyLKk!@`?<9E=2a2*%7 zY{h!JAx+86dLk&+D4_>nQDZpIqn3U}t@MZZN~-4M)d?eKiY$r51)rE{u)TT4(e=1F z=UIu)OU$Tce9Lb{RBYxKQQJcC2|bCW*PLr%>g2Qtv$GW`k41X;v(8v`t9TO$-|+1M z4ow}VRB^LiU6(Ge`+%cF-iOALw#WT7MLsk%d5Q_}pGh-rsi9u{Bd>RPxLKlBie7LR znP;eN(QMBdYHDiYwA=dUOw%j{-5csahHz-2l9mM;)|MfpE_9U?NJC^QZK^U-g-8Lm z%_Lgxwh-ODqE9C?Z*{8Gpd%1hMp_LkQ(uU6$44MMm%v+9K9s#!;|6l6P*oJ}ODdJ{ zEzqnOl}AT=vjmL@h~1bMb$+*7rc%~5=PdXXoN`o;U$?d+p-LO(j4u|KnDuMipoQ*+ z8&lJhsHHXUzt8-jW(TFM2mKkGh!QwH)yC>LQxVAGut@|RDyRD)F`LX7IzJ*Pg}+Na zX)m40&d155TEbY)V!nj0E6<=j*WQ_>Jd@1%)iseCV{Y}O_VPHkiL(Q^am;DoJ@EPH z4wr1+nB?b9I~ILPbVYh?3CtK`>_&XkxpI- zCgQMKNrQ*;52%-}lLGLnQ;V#9F70x%VO-@~;U=&=+&dR}fL3lruKu1Sjn<)3EKv2?OlU)%kw6w-2vW9tB$( z@{vkFPwTL6N1v=zJshc;Lqc6-(+tlE8`ywgn1kIAh<8tAs;(b$U% zWe2U-I>TNOa48DX(GOX(I7LIkNL&aA4{40`vn1YMRgis*IqqZPj`&Xs`hNc3dd zj|Ayys=p*5S1_*e)MsJ}GC@3z!gC=g|3`MGAxIn}LgQ@Gy2J5t3N)@&mFp?MG*4m$ zdMnYjT*_G!QIzqKNjj5h1>bY%uBGN~oa!(Hv$R;7`>#(;mP`Ai-@yx?&W*j9a4kM< z|Fg8wqnO3Q{JjT6|9Vw+_!pAb(f6=GU53y2yz^Mndxkjn9?uG@f#7MLCVQ#EZKAln zM0&pAn*dhIdZ&uDy{qT2B#heX%rs$_f{@>QviD|9_4`|!bC*+Qi> z12xE5=o}a4N?vF|ar_(ui`7ycUY@w*g*8?>rQzAw=%eX=O`9h}>f}mBL1ap2#4qe| z-L`ee4ZN=gjmtKU17VM{6Y7r}ekJq<=Hlm+mDEnAIN0Vv)~%JEEsK6gN6%r@+G-3< zE#C$dE^mGN=;$lY5`rzT?TYQqbJ~&2tS)^QbB~&~^Q$lGGj$vVEha^rT$^hVg`Bjt zR@PrQF6zGE&8uYODXwQPjtI#A> z62;%m2e-AhkE$iakJ^*G*gq<{&z{8T9%J!*8UMoWegWjAtvYxCLM|X);+)%X{mR~3$HPP_z@Ci_(sb)LIb1b8 zr8Hs!Co44F&5baX7!jbonJBTP6mz%{c7&HqrRvM(6h040pEA6}c#MG|>)o$?(R97|A&@_EM3T z)%DSF2JMPwT~vUHy5B0JanW~z@1-c-r#S$}oO5#WZ1pxd3f7~f(GGqKY!-q+G9XGt z7t>S&Ri5X>7QS_OI(dOo=&U_HY>fkGYdoxcT*987h&B6OLm&l9erb(4kgC47UPFI$ zygdi~me-1~OC1(0>X|Qb!tzDo9hsQYO8o2|+pGKIGgit z(;snPPY(6#;~zZ)XTeg1>-Oi(lw9#aOQ_#yO|6aDQj|;R%Wf8-U9in3!uuoIk!!R1 za^zR1Q24_2MG~fesJ)f0#>~Nfx`%xOjukw%^^e zF|iHF)~?mim3O3O4&N{sU$ym$`K406raZA{qEQR{Ivob5m}=E+sO0&1e4*L|tIQB) zIh9eH!cvf;T1~E`WXx>YRqKv!f^yJo@yCZ~=9>=p_+AW{eBA~4pkcf2i+=!m|z2Mr9aDvZtVm9|q$miuSIRqZ z`>|=|=?N;hG_@)|)v?y6rk)#O)$=0Ad!L@Ngd#7ZKq5`mW!#@(|J26b7w&USRuphI z4UJ#W*1{ANfGt_#Rn~>1_hIT@qLQEcs;YgjNWq0wW*Ud>f-~Ii9lw{mqi0%~Uxef- z@=}SrR5fFGk!+Hq`H7Vd&^PL@G2TUlLSycu@nl3N!efqAgGvGq4)ku-lD zq|S$A$_6&Azkr31OhuVGLxE(r_Zw~~Psk7nuG(gGaFDVt?)Vr_e8nlgnm5Lhi{6Vb z{T1r6tz^Lg3|SD?bM~sYS7{qnrTYs=BkmGRx7a{gbH0qQ5Gno{w|85z@tI*Q(U?h9 z+ck8lN`$R#nwAkNMLYrMPxXrX*lJN$hMFnj70~slnb1EjcknZzd1k&szrl0l{D`|- zJeI^d(romLTq_>^hIr>7>mVCTLSrJ>+Lj$PQPR6`x0>{cGuppdA$EF8b`3-{nfCo# zUU-zBN3=pHSZpCi2DH`do0;`V!~}B(LBQ6tg?5rSjQS@X6w)z=OHc2zC)7R$eMSr5vBY$9~n#{)8tJYnvk~2rPKB(Ce@~^*> zK^CT2#7S|n^kbzLM|>m}uVa|Tt=TA%*(Do8_hF}WxrU~tPYqPPlIm$VUv9`39ITTt zf|)<-7*vO@XqvEZ=BM!GW_?bz&h4t%?`5O=+)<^1Otf2yZ$&qp{sqMAflwY4DDt!V zKA$;71}<9q-{L*%4$OL9iys@@+FA>Xf7Yf6KaCoQNN*e%@=V&}9h77FPj8voHDMT#fh#KiZ@dV1%ewRv~G&4*QEFTW;X^HN`9aU3#+eQ5hn|dpUmrhNl*{=U47PRAT(9`i~Z4 zyuQ?3K}fxZM;p##qq!HM;PE1Z!&M`l*%AtUgMAxcYqlS>fRJdI?OSmimT0!Yte)b- zak>WefIHEq>zk>ly@})Y)~6(Eno^asM$_B*)&==b+l7F5yArP$(SwH#`NgzpYl4e) z9rk5~aDCEl`h?J}e)9wbLwjXJOlEdPA}f7a5zng^d=zEyATq3@1Y4uSKq^bow3(Adz?M?$Mx-bKF;x!dC&X4uHQ9KcP3KKENebS zZgOD|ic#qI_8p(2Ne!Ruk10{ll`2|UImd=8)7uo*C65f+azK#9)tS>=`c^cl^dp+8 zecmIhhfe~b6FnhruKQ=~@%e<`yWgbQ=2s#O<$U_BWPm4_ggaDQUp<*-Kyqg0(|Q#Q z)+M$I0@Vxmaz}?t9-3>#{)H$wi_c>bz8%6JM6f4s&u%GH0_&HU* z`mZk1pJ^*UOFc$~uxnu*|6lF*a-j&-h(ZpahX2Oq22WH~Q?q7)8g-yoFXK#&D{2tO zRjrE!61BeR@gQ;{dqw>B>7Eff<_{nHwi;QQ8}@1$0hRTyd1d@!l&jxokN~tCz;8B! z1%Jg*TAaHYQ8(0ZJz~QE=(atuH1Wxyeoc*saQS_{l$+ptg#kTtSytPb^q4qke13N+ zB_%~tO1h?bK7Tady|nLgoXAa|XAA?(6X4)LETzfuuxEtQIU->1W-}F=krA^VnkNs5 zl2a%I=l)smav^hi^>PyITt#iuH_<(8=$v3-@gO^iB~^QO4wTOH)p~6(Q_nAjW@e-z;n#=;)f#HKx)|h7af+e=N4~yc zz|VI3oU=%mucfBKATAE=MSekR9ez6cTSXsJUxg9W*tiW8_o`D zR>T(m2dpHe25)0Ou(H4Tn}&!)4lU>8^H!5Y+?DRw1DI5n{~@+rd2z1apMU-@e?ez3EqqMPNJ~Zk2ivTu z$2a2SCd@Es*^y{!@^UwPIMrm%?HykI2F}$XS9OG)^3})*o!fuahF%o@A_Rax&?>}0 zAHU7&C4aOVW@#nr^4n9&JfPuwe|S7lrslXfIT_U)e_gsbb>=z(=p1H64d_HeLsj|s zA|SIbZSs*N)J`{PZGbd>zNW2tbivELrrBhDBhSAX3s@|iFFfFw>y=qkD5VfKy&eEt z%b(!VVPUZ?za3toQMmz;%p| zJEAS-$3*=U>Crf)r&O}w!!;MqkZP=6Xzj~xXlaRudwC&Ny6>##hwbg2Wo%%V8IW-j zvnZSK6A2AWCCP1KdPuPcHvxco6u%Tm1^(Xq+xXD|N5uZX^n3u~&eUdRgHr7y*Fgh5 zHGTW82b*y0kcEFG2R&yT&ea-nAAS_*n5o6rsDc%@6Bi9fTVyu`IMJ+0M)Z z2+;FCaX0sbzTHDN-placBcm@7y{&s@dH`cPJg zREm_nLSCy#&Z9sp2<;*U^)t!61x|eQQ(#e*F)T5mT6d8$^pD;^@r>(dlOJ(=rwJj# z?5DTpDZ0$G;;EmLeT~`&e-q^kuI~|Nsx#4J8Y=(%3B`JnI{BIPfX9WLY!j!!WoNr> zBZ7tK!#xqlBGp>Xunq?tCPbsoRSRp|SNXSS&%?bf@EoC+`@@9r!`jUu)>+oMgX^ic zci%M|5!Q9VmzNWXS(t@$3Jax|A~Gi3mO;{i_^{2B$YVhg2F; zp1UQo2xhona%gK_a%e2pk()*jWBQ*M)!%RABpPw#0ss{h@Ue8)qO}hJH1qC%M+iis zD&9?axiGzg_vMhc8(%P2kkyQmO;7dxVI4JNW%rd0O>I+%o0V)cwBzeoV%VX)G(e0Z znIp4QfmH>|5RJ)&Y7|eT&8{JnxLy~0`Mza?RXi;Fhi>oc>OL_@(LkVia&NKyx+ZRC z49^Y>_#H^EE8_IME+t%mS$)r?S+Yl)+bE^4+)PzPCVO68>cwyJ5=~?_H|0%T(uUK_ zG^d31)?=4aEK=u_^N-&9N)LCR5qoo9`9}JC$h=bmy^bR()vVC&AnMsAic0T?FUl+q z`Y@CrJf6t`e61>c#_ml1FsuKRbQ~*P%GI=cRB793bMbz3*XdPq*4!#}tl||DVs8le z5=fYAL$c?-x@Dwe%RPgTAXoT`p!A{MzVpBVrehj%1YpHy*Gf;%$lT}jT3L~Bu1Ihuk>7xOW#2lWq{4THMRtIydS*{Aa zvEd_R2(cd>=@M!a$xb$UV4~;rJ<`Y_LZ>u7t-j`^UnI`Xm`3y+?X4Y&#cqdG{nxJDSJk$hl$$7fm3DSeJ zztKoBw$!ootDVGyI&N~QsIgvZ^$}r|ptHMsGKYlTI+I+MFIIw9BmOH;Y{9GzUMJeGb|+(h5r>85Fs>&@YNEj-*5N&aX+ z_xDXNchF9iLELYp(3QWm@%!eW9=SuP09)!l9lkxn z7Ic@|KubEpAVLKBnb}KL(1~TC&GQB16$%yDq3j6^58l>ke|e4m>cdi_bArb zQb^QwG}|O!cw0529Js_(bkNbJ@;*QMrA}Y1_HbE}z}wrFzSAu-5|gtlVgK0kIb$5C z{htM_z$R+)^>h~GAVj+dATBDGu04uU-U0>-`#?nZ67?FrnI*70s3iTJrAOvn?Z8YMFaRJ6oZJ zy1hSs+G!e>d+DXPoC&-05oY~QL<}~dCp>71Fy?DqAhXu-#h!x?dw@QFxVoM!;}P z@w;0YE^MP9Q0}nO&aRv=y(OnVexP4kCO`XF(|2BdHGYKUfJ(gFnmEtGRxaEI-tS<6-Dbr``&EQ3JZ^Z^O-6 z?~l?Na^db*3zgfY7wNZWZ6jR&0QeZdNi5q%n9_<^+y_8Z#k*KCO>dp0{cjcH7T8OF z4v{U)_BQE}qq7>D=MDK4&DBF(j>PHHu1h|1b>V4Pf+jq;!jn9FtmBLi=gu$l;(7v$ z7TUtt*f93Re%0e#HBUO4%i;0r5HNwWWS8C-za}(_T>MakEZ$`h^lliYwSm5h4HiO| z`f1uwM7_T!^}NR%m1Q%4%&Y@20VH4S-wkuTDf)GCc1L&#U5bfSv=aWly)`&Pk^591 z_jf_7=f&}xGTMY48Japp;cM`mzDV}j0Km~crkC!)z3(GIx)3P@@__nGWtPz5CxB00 zXp4CLP(ud@mXAf`TCVl@^^6-Tfkrm3c?ATokDVqnGnxDj%do&`d{k7@fqA{HrVg}u zb`_I=swhs{$l>cG{}z}utQ8BoOsGdh)w4o9nQHXNa#CQ2NQG_xsfi;B7lsrRG>sEXdQEve3x@eq9`dnS4AoAWO_)hV!wd3L zTZhFRsH@&i!s|o|(N0`8G}2N8JtKUUq@RC}>9_N%IdA-I6F9mAff?nzr=_MmapK!| zY5;nrG@r)v@S9R#CYT^3lYVh}&700@wE6j`)P-vyC`}RU)PwG>od8Is{-M-YU!H&e z1q(Dg9v|5fwnwmmyHngKgfv#xM=bVn02y3a?$Y>%>0s*V)`FHL8)qn}0gB;8=g#xP zs$HnV4AO?*6mUwXhG9{-J3b|IwwOhkzethC{0$eaNvt0CbF(b12uqu?)NzjVhg4~YpX{Y$n| zleR?>W%u!2my~bLiH`8hQomN;jaZx zjI;!+Q;mV$qI6;94l^6u-W2e{H4)w&2#Pw#UxkyI@!DaP^i`sTjMf8U~F@NUJITHKULpY+mEhOCIp9l`+9ix*G#jk^kGHw&40lNo> z^`8y?`XyBjig?c-KkPx2>xpV2efW8rLB}qlD`Mq1kDv-W^YqI8-1K(AvDD7fO{g+JV$+3RWh+0)= zfbtx54H_pdukw}YGUxG*VDIi{ak*6}I9?nvX{U&y&8s0;Vsng?uG4o5Oxd7z zjf_c$J>EFenF@cV63m@DnXf3>r|GZ#k?ZBiUsvw{OvkEb><*FxoPmJ6HQLqdAiPu~6PK(Z08~;V z36;bYcjvW9{m@>KJBcBMu+Id&!;ej9u<=l~@s1&+}uE3YsRQa#2hERR`X*@xxEW|Kd9DV5tqJg`i@KH*tRz zd7TV}4oJsG2Qsz9>$D770}V6gay+AB)bP8l07I$O31uwrA7_7o8C}KO7zi7uXj-pf z!4E4cL2~bf`nvnNR%No0QWmR;nF)6^?~_^gD3NRL>|KD~;LVM#-5`%$MYgv$p?nA} zSTYUf#@p`639VCDOkwA^UsmF}r*h4P^JM^B{7G?5HCV33-6Qm8qlSJk*zi$d+O?+9f#$=OL!wsF_tUhuM<=4r zgbCRow7Tr8p7E#mO@IB)kR0I_l(%V`&pLOqEus66<+e4~;4kOYf`;MWD>^3XEM`o_ z5yuF|217*CL5fc!ne3{3b?%UQ&u!Y9T&Aw1V!*?$o+++RKfR?74-GI0aP|b}ab2Aa zErq+nEbf00ZSWGhfQ8NDB&o=stB% z_54P6x! zZfzy!!_nK-Ku>JQt@qP$anW3mM_rVF&HTu6Vf9&#R!+CLs)8w8C06NJFqOZRlaed5Tr57PJZU zVjKM!;*y+g!|51PJ#)cVUY4+G0Op*imeco!(1y!Dm=NWp{OBoSe+%j=>Q&feYATz^ z8_=)hAlU-a`)T+a-W{VX<78s&<=+%|>T`7{HBjks8JOngwwdrqkDsAhL5lTEB68QK zW9NHcG#-|lhwt{n_~Be(nZulsL5$PsBC*TP&BW^h*N9UlmGEmIPGANw6 znd74z)G3rd0b$jIRam7sxpnWz~y(vBFeLb$?ub!J*RlzCpF1?5sH83 z*K9eQdfXN%%$SXka<^Iw1R2JI$XfyjT4%*Z(QT^kWd!m?iTDeS8Cbh7!dl#AYW4>} z#>cEp(RE4)1K1&3id^wsxwYD@S&ryuUO_pVX^_wI@LE<|;Ag@TDw2i$^SMZur?!iR z)gKbzDUx*^DK6b$b9$0JROts!>=PfwVP{#z5~_Z*X8gMOhq1k zY`m7umPqp9Ujh`?;_AoE#}X3wEV;ypRUg;WjU3@L;-iVH5=p6Y%rNJQv|rF10s4}9 zGeg!(lMA}k<;KWO#%R^~bX`9o50r<>CA4#7=Y&4ZMdt!Pu;A+XWA?S5XM@>sRcUQP}(^8cV-diZTsKF}WY*`>Lf%{jatUDf5om!y8{bX`XlzD$m5 zK$?QOHVu5Ck?@y#(}i)p^l9C8a*Ba_*1k`d8S_r1v&5zUnb%a=8}Z3L2`D=W0WDU1 zmRTGio}Vq4t&~C!4jcB>-8=$?F)n8KmlK23L9J;B2Gq09^|oWQE`MuPGIJMIn> z$pm6J-aeR;@_kOXM`&JU&GYP4?wrS=TsEqtg3I|)jX=fUzFy`ibC1fRoK&;1QKst9 z*rs>)!)!24I>AM#>P2IqsnO`5nlyFJBMM)Iwa67Za7#d-4`^#Azkvw0$G~UxjJVY1 z7M#mQHttJAu6|u^;yDECQE3{IKn7<}Xdtw`tEH3@6V?_tu3Cfdg*F1M-AHK1sH*0B z8{2dfyPRuY-y4FehFN}0fW=bHfVXSYVo3qis{P-NaJBm3w?-H2an0if0&0bR`c9^{ zcB_tGU!5cc2a3f2J=!qUXL^iV82(&s+YSLE*?tu34c8zZNA7Z*3g{!cxas%5WQj(l zccWZxPm3*B-tnkjA!XoYql<>Q0X@7vFjyxaNBX~HuPT+-(ys1XVkFU>D5YqGp3fL_ zfAz4M(c}7h))*DTugeRY#{3yKrgW>g1|do4%DicE02UHWrj=Z4v)F<+m zbb4!H7*K^5<^01)1HYCIXI`Ot$kx-QGz;eh+1%{G>$q5bVIrmWMrMwnwFor0OuDapL1L8v0t(eP^tUZR^z`WMe%9( z9R*+!_!qP40M$C>opqRwUr=16Vh%AZ5gIO5GL52kJdqeR=N$b&-^ai4>3OFPM?=mz z2(lS7%cf>HT_`PEp`|FXT=vf`Do*bvjB%1|yh{JmGmZ*Ez-N1Nrc7r&Fx}|bq}r&C zsqxG6;Hs~jH1P9(JwO8VeW$FCBQg3=dC-n;x!q&u_yGM4b z*f*BKBEsSAzG7n-Ny)9F6|V8~_ZO|_hb?mZ3k`CAvN46&4|(GtBOOk6pN};lDp$cE zE=w?b-|M3M86p14{NQq!jbR^&eN*M@1}rkHz11DU53R32?hg(>cwQP)pl?=-jGW)a zXJ=nL>u@rnqRDh=t^0Y_aN?RJV}>vqWsrL`I-%#<0G!>%U>wUFQ$9&Hzm;hrXXS!g z>UdUSbAFl{kBXL`c|fVe&aaqC%0dO4YpdsBMWqt`B8!Y9Fk8}n#N<7rmluKM16eWk z%e!?d(ykMK@8G)bPeB4wB@=MAV(ap?y(+O#6afNPxTDAQz)Khw(**Zc%Y zBjZXCr!RT@U>qf70^XLyo8{u3#8|CU;5eL?e*wFdUqnx6iC)LPFJ+ZugS0nQ)(s3$ ziCiqNK(}xi>{Fk`1ZdR{YvvW@`^ozciviWECY=H*wE9VGgIR3jlD!eM1E!wn(%fDs z)7TFk0Gm%*4Uv_`kdPBJaf91t=dP03ZG8MmOITI!mv^YE`H21sXsJ~Uv6LL zVTY>u-_u_F=52dw8)P57{|F^NguGz=ws`~HmE2i-!4$h{qh{%nFs)~2qz7`f7ysDz zWBR%0dG-M*ZF+s7HkSM2m+8-~g*%HXPxXEueA3W?Zu)SvOwUvNdikT<_~pe`=F8Jq z5>NIf865|bp9Pz)A&q&Jheog*hC1*Eo3%AJ$Clt}D^P8@$f^l?N}~}u{iwW+`%0Is zZPo|c!uesc7?doS`%>PjS21LjK57+i#d(9WmOQ=Kn)yBmgv_yN=b8)jTF2&O+k8EG zc#Vm`RM2-QL2Ni`(u}wp_9^zM31TIiAiy}7RFV{Jwb7-`!|AhBuOwhf0|s+xsDJ6; zb`sX1L{cG^!KXP$(KN!Or;Y5bH;S07}D>IqGIEFL?@N3{vm0TuiRg3 zHMS7i(AhK{_SX*DsBsM!YHjQC9wSn%MUIaMBo~iM^!Q8AUhtKPUJ1bK+X~VT3NcJ3 zL&T@fUzYyy)|T%bD5`t$$mQu&qox`L}ZAA$@*~k^_i7>($(8teLK*8SJ+|(rPvZ~AWBnEmYG52BsmPSCsG~S zPEwNX-W9G2XgWqF_FY>?%1{OOzy`8;r?E?^L5%_FNndIUX@-9qZ4){JA5@8Fd$oUF z{Dud)pY$L{X?t{oJ8d^9Ycd0mUwOk)UaIKPp>l=9(*5sx=pcB%eeXMF?O!ZA304Bl z6iHRS-s%G0gMCB{Y!`;*S9ZpAkR3eZt#Z$0anD(y9OiIJ`^h5FNU21p@NMUNVew5_ z<QiI|#En{SIc==5A&O^d8Hy+dWcj|~rl~9D(5{WE z-eb9_@E-%wWPCj_jM7^#!+uDmCaO_y5)B~h$Jjr*2&L|P?Z0KU%mg& zt-lp*1j%=$``C*H!n>@wR|O|BMzJoPB7XfGiPlQD|7eyF%JVyz&>qy3PM!-yCvnafZpp`%8PSfg9Q(Le@-RW*kvyCNajRx zgfGFQ*F`;f0)Ggv^I+0wY$>40iU|jXyJ0aOtlzWFNB)o}qa@4Fo!$o=5hvU>op@Tb zzs*VhrDkK!UL$1foFiuK>6vfePIU3CB241(qco|p6K21hAwCpJhQ5K`R;I;@6+f=C zLuD_k4PHMn?b#{`GvsN4i^(sinx~@zX)ULCdGFCX&50eq?AGHSNlGYF9~#%`)Y+Nu z_3Z+Ew6@6<16;Fw&^K5#Y&buTnf6^g49Y>xu>MBEJEuT?vUjG1^2(%*U(Cdk;`B^< z6guUXbcr$$oogS8Z~ZRB*sih=oretO2Ko+>a{5E*=ln{ z2}Y_URJ|(}MMI=orn)pT%)L;^Sa`LTrURBvGWJ7S(bA@Gm$AIOl3oy`<3I0M^|V(e z@%>z9;fAHeyQCbexKWpzU|@CircyysoRXTq%7{1ALPOLWGIf&ia4{+EpD z`&AX{d=yD<;a^%im_7{ky|%w*l0dEG5kWUm1}(g$?<`gRsrd{1-PykOp7DVD(QmH{ zkdzGZ$jVg|BYd$fM9O<_m{4}nBqimOy>C%gtkWBqwIxTP4&>n-ENmDCYFL_c6w(wy zZFqbXc(Q3cL6~ibkpAleJ~pHzpEMEw4cn+AI_&m0?17JLK$8=TjZGT_az}BRiw$0` z+;c;L-HlsbO5UIR7gq>r4! zPUjCH3k$0vb2QFJyHnDgC*9|P`~VZh>R40lAKTMRF(b}~5`jM8kXAk0`3R9e0MUHG zCU!H847Y}1U$nn6U2>(nXKDuG7Q0l?&Ft4}yK%bvJ-njLJ7E)k6X^`iQUhf}X|W$t zrIW9ayt?Azqd{NPHB7GM`~UrK{QqB)4>tbS(7#osJN54uopAii&^*K;hlL_v@DWXDRln+pyGs^uepC!o7d^-bj?a_31Nz zSKTjR6fl#^YH4SwVQ>w-PJu$!Le+BgW#m}hmOt-_+^v7HS1aa3p_yt7`$SLYb@{}< zlY6JKPF*A1J6EUMLmPQbN&3B0ryRhTvuxwBK$;0KtzQRCeUczjWs|Y?$p5rCk^ERH zq$mD&#KcZ%v33jS5L&l!cD&Bf?+j0LDaR#5=j@j=$Ohh4MQXlZ)t2v5I#2%10vt;N zb?{F(Cr_kKXinnW-l>Vni<8N41})f-cp(t#*KTDQ`p?E_UFZ)+6Q|p&oSq)~2PbnP$#EqcB+gV5sGnLgW}8~C~s zWjWsGyDljiTzdC(Xq8R_5`@`#2KovBbP_Vn`Yo*dF-7fmSWjkuYXZ>B52kI+BgMrN z;1Eq@#}u5~LY&3l-JmDJSUJf>~79X$zV0ZgAdjtH52R z&xqUl3otZC-_ctS=W65G$}zNOX8H#63}j%3MG-0KsO@TNE3whDHb$BX(`6SkQ4|*3 zB5_Z6JgIfWJRA#*#jFn)?>P}3D)ud78@PcX$Q`f|XIgz=Q)Se|l1f*s1=W*&z~_Mv^{jOacUR(YE#_Q$l#`yq#A#@dpVtFeiGM?=fJ_A&kk4_vs(rA zff`D~BFfHy^B&2l#zSrm+SuUyyZ46quNnLg^1C2zD|GTHyeH!jKaB_48R~*&21M`9 z?6m;SQvuP}rL5gzgV#XizbNKp{i-S%rhv=a;si;zn8P`)dlBj$TGHH7WNz|gKS%p; zBc$7|UiaCR!d_^1E2MlbqW!Vys4#3la$^;KN5}xyh&O91xkLK2k-C21{{G4N)f?aj zgf!hW25?f(KBYkw3EIlLG~7AhxJj)ki*GTwPVZot7$YRlXFO}Fo9XH0XTcmY8S4S{ zFvc9@YT2Bc-f~`Gi>$GjSU6(V$k@P=gG*_VEI7S;L4uH!{M7KyL(ya1zG=~Mm8xXP zx)FYv0J`op1HbD|HajHb@{_%wBAXC7$*eTt9Yoi|%kA%c(y$S@4Rpz9Q3z)f=1q{* z;*gD%AlBuPDUsdjhr?0GRqu(ZP5%*#wXFR5ysEr?PpVE>t}q84TWzFYHdwT&vuV@% zFWJm$?_hUmQPZ5;BLoCOiYrRp(2{*YJ?ge+)%)Nk^Zf_UGHNoOK0=fi9e638XPR$} zJ^j0EK=bj}fv5mHB@3S_r55tu!jw9+_^o?!y_$O|JmI$WYuKwB!|ZeqD%lj4yJ6EC zr~-2XkkliJ3shI-h`mB0o|1q%Ng9VW4w9dsiJ0a5ggLp|{hbPvBS?OlJ- zamK=W#RCXRRXsZ(h2cuyy4VAgY7!>nIw)4XyQ;A@^6PSiQa@J=r1c@|u&(61SGi4# z3~8}39Vh_xzGB$6;k)^F<#8UOJ~vNF#cZg{C!^&FK8f*PGK=VX*{K2mOZ-M*Y=Tt+ zdxoLIJ2|D+G4lR)Zs6_vp=DU+H+=-Z$ZsRC9K~9A`RNk|>wOb#{_yX((Hr07hgO~k z()U*4)FmfY8sugVCs%uS1_Bb!cCJdV7|uN=A_jDIx!+P&?M5BpwOP3#eV)EHE#_AW zX2r5Iq$`*}V$qO@8W$gKFDmAfLh?5TD%PEa{GoEJqjA>&dY03Z*h6)jHqezzYoO97 zuzBQs5io$;kK2%P4zLQn7PJne^_m(efAzYyrpF+&nwb5WQ4LuPq1LIu<~?IkrZL5L zw@mAWW&3#Dd~VLjLHNjnN2F@AOfD7dbO54Wcf;&P`rO{pe%yq;)jUYyO0+aE2O1cU z3z3`?JR7RkeBtIkL%K<&7MX2rHJzccv%x9h5gLfCsS}B#oX-SD5dx-N(3ks5>9Vcw|>*$YRbC@-I&*(}0mD{^~O2iY%sHrNGp{P_0x#inEXi0Dv%(o|TD> zsblN-mb8|94fu&SQYPHJo9iav?dtl($A`?D<1+n{BRTxGcLA=fl0=4R~u-biQ zD}VOIP=BcZU~H~C&~Vr;O=SC8Lt87_U?MADh+^b48JB3vA5oyV2YcJ8a7`WA)%Sk7 zYDP+Mg>Z0jR^QV7v9U(>f~e}-sH*&-)5e&yI!XJq?>b94=>&VvNQMrUhtf_&S*`Ta zBXfCH(dvh~rb)OaFbV9M{UPkZ!del?;CI%2*T-)BSR^(x{d+o`{>zQx{KjvikU6Pa z_<7Q$N;Ql24r|)Pa7yybQ^18qnT#cyfe=ra{`s0>*S~s zC|7jDd`$J;@4-;YAa0tM%bI>(Nx4@ zVwE+f#YVVLa>5$2Ztsbh99p@3lyqPgG-WxhGP-(U(z0Vle~Y=+xdTTcf*7z_<_ zeoWzOT>IY7*)i8OX9WK_^#LzomO^s(YTq<&2@|dZx8(42%$|MD>Y3cpwAXWTUrr0Ef2oM z7`sI%S|D0~F-lkjDD&x4;8tt$kbT3NX4zK1PKSft)@!`1FPipSlXd=PN7 zP|ecfwvGz_P-CE?^f2v6U)#|>YPL5ys?i0$p6@iUG*C~t26UMLn$@$n3GkuQ;QOcn z(#()wa}!BIhjT4vN)RrE1>a};?xQ=|maVe8Xz-K^U#H`?sTQtlr&=S!Y{n#EW?-r` zt+W=Y8+ea{`?h=^SmYg3K>Z>~$aPykRWZAZKfdx_)88$cQdl^O@rb78pPPN#egFAvrNf=CKpzL2dq8)8$-?csS zoB=tPSPwi?Rr6vtCc^0DO=@WDJJ3?F^S6el`N_>q>gy+_k+oxZoG+lZyt@fMQ73QVzFnY*Sm?h(m$fnz0C zyMJ${1D*Ug*4l1?Nso}tsFWf?rCUQht*@MPBVVfBYer2yt458DIG==1 zDmdCltLB|gaeU2cVS04EG3)japSBefXwRhB3`;Ijq`#Vb z_boQ!+(KU5Lqfxzoe9}BM421Q{Qg-b693UGAeIP$^5<5Ah9Bm8XnOD79?>4ZeT)T4 z8UL8^1WvG=e>(JrJ_Il=weeUYB$j;Il|H_PZ~7EIk*Om{u+iBSyZ~_H*N?C!1j0aX zwN+;B^aI?U-@ErpS6a0fAnpcc15M#!kubl@ncq*>=grPxSLYuxLu49Op<7J)CApEq zJdU&!Uu!^lK}p=K7NFB^bC1&eJP#RW6{hCvJa5k9UW!bLPyE61-o}Pm;L-R?8!bh) zyl2^pwX3Y7&Wh>F0nK-$HN^oooJp{-o!ZqJu3U{^hlhfXh*xJewQcuzY&0A|v%mL$ zhOZ4kT z7vZ%GOilG4DC;|?VFl^%gjAf#BF1g^*tAzg56X{W{1x@E|Ik}i*$`BMDF{L5sOXOy zh%~nDiwmxcaB2kU-jO7oyIK`%*OhYo@%kluWkew{ZkfX*+2fcG&9(XgP!bH@6MuhWiV2%8{CHAiiejd(tO*Bmmx_rcD`!$T~;qp~z}6jw~% z`|(8k?n&e>>E+BIZluOYx6y2fT@Cd>h=-m?X$;bE0z)n>Fxh6C%0E+gMm;M;v=U3x z@y27nx!2FY4dL3R#vmKJ2u8OmnOZ{NhL%|eADCm|zaAk?6udpLk~;V%kPj<1F8OuO z6gtb6NhH4bf$x4F*GE!*5ldCVc)VgB?++nz`nxo!V0o)Ieagqiu_Tuts-8_c9edn% z!bwl1WE_}1Oxr!te`n*85C#l~=9bB5FRju^j_RIY@<+=fIcsi*4FQ{V4?UU_5(pI% zTcm=!naK^Z4lh^2oJk{AT4ZE%1#gCInqOj0HL;&*e(-M^;#4wsZQUv+bzMI*tMp(V zDI+$j&B=6Df)1^;IBr5qc5#)^u=9n{DleH?zHl2Emc7hkL_$LL(~$VpP3NeJR0$>T z1^Fec5{Hp4Nh!xMk8OKu#2w}HG}7?w7Q>DI@EM;8XsD;j3JInke#rn-1oJR6|6y?him*#Wc%E_?p^n(x3{}e$`OK}R@`4d=Ro6lUir)wz~=U)2QHi|(P;47k=+O`I+anBf9IJWbD2dBUVXJsM=t*_8Md>p z_T(C~Zsx3*m~34xHg0v1t;%hjLmH~9LtJy##LPxZlh)Ik*6K?8m?0|@+wLdJl}ZXh zzvI)*2=TajWNvsy-QZBKIhaPe8HF%{2~B=oy_{Mt#koO*Xf=mkj&gC(>ZgxOsd4gf zm&Q3JzQx9@l2=*xudsdMynO@SPWAS8Z<)oi-d zoS^00Ie+nXo9MSX&`zwL+sU7k5KO!Xhex@)uPUUHUW2L5tht!}i;O}?mkW8oNnLy^ ztA*>fSnUZDA*~AE`jax#+Gds3q7T2eRKPGQQ=W_%=9^{3b6BsaX}#LDWSZ1V2S}Eb zR-$7WVEKsDr^PwSW_%{5&`_h(T_>iKmUXXu(OiOFAiA=C9N%GNtYxe1=T7^GQi<|C zm$Dh;1i)o*s%F6CZ5&VGPG2kI%2DUJqwHJ7W(n$F%c(Q1w^U_N)>g~C%bEKXORe}R zZdh|{zP)1RNk%XLBD63V@%b5ffvUm7nM{w0YLhH8;}48Ey5nT{)IW}1{1>`JeC>EB zxsHxUNm(f_8D0ikVqp8vdej}SO9yI}4A;kx^B7DLYf2oQs!WGXxQy8N*vR914A%>a zo2}7q^F{`CrZnO!J-W}2Z_b*94EU5lRdk7 z9&iCPurc1OF_ql>m#k#y{l)ObVN2j?IY`A;tY=$nPGv41r1$>80|plz^|QHs0~U;M zNCHT6#$ujBkNx{Dn@(>^RJ-xOsC{W}1-$xkQ^r#SI+B(s)qPX)x2}FD9v?^P`o8 z*5=uPDxl87oH-%*s6V|Ki9*+_nzCk~>h<`2kWf1BfP?#d=9ay-%wo~gcD@bqueN>T zo!k*mqrOP)(Fp30^Q1mMDtn2=(#3qoc)wzei@$s9@VC;XuW~rBd00dMxemJEJEN0U z5}SXUeAOTXe~Jnm>^*q%mm{I4K<7~dcnxvI?Fp!?EOSR_QHZ&Y6FXTQtmb}xTRlRj zk1GMW)RCL&n|MF>YSz7u5kXD$0_(Nxlb@uQ0-t8<#y;lIH{2<~uX0YM&-hFy{X7zf z$fw`F#*(zD{C(5)qBv)|aV8*CRe6R3$lDIyoXW1bzi$P)h(F+&(n=N@0RcUT&cWm{V_@fovr~&!u`^& z0@2lGphIjONfxES)|CuVA&{e1fSXu%?&>(NxNq$L07?lf*IF2R;#xkg&5Tsw4R)+* zlY@(ScL1Z=N?}JY)IW z{o!>TzP=SPtB!*&LqF9k*it#Pj!3uo?w?R?4*m_A-Ev3U>evnMzIYW2iC2HA!C%dJ z&HZc4_L;jMBlTs>cs8I76?=bJ%*=Q|*miG-Fx&#ul#ZG)Ji*99jK$)!*QOfDoEDU= z+l>-i0`})HUzw_VMOr);Ii?EV>W!Mm7uasZy6UNq>9B>W&EkrjN~73F;0v*UmT;z% z^kGbymp%e@do@*JximD}JMcoH!CX%T&{MB)%>QwszK@!1L{?DSP)!xqAQyX$6wsHD z`p98qBSUg)eRI3IXdyRnDyjfk<06*QD4`?z<2y-55b=1^u`+&$FCf1$nr?k#WJh}U zthZCmjL*?{O)YSX9fh?( z0g()nVF*JI0ZEc`97F{{a+EA6X<$HL$WcL}r3xdA*AM|*Dlp2!h|qX9Ews{?WX#IL6>zDY(&Ckw)A zwQH$)`%%&SYT=B^+~f#8nXNoD1qfGn7S^F?pkx?48#XWc`D z%~$&?YcBtAD*x@J+O9`Df(%a}=s=m`h6 z{k6U=8qj4q@&U;S2|~lf8f)|Yq(#Hm3(sM|Dn$Pnu(NxE=*#&@vtw-wBA5q~tbQtBLb@#3~q1_zhXKSWKh$)2Ge2sHli z>L5Z&dNJ%?sNn6eZ;_Tao|YEWL$qG`MG0c6a3we+H+n-XC+8-U3sr5c@p%vN=cTXLumOK{uFAl`B{GtYUuU#(8)wvA}St#1B(-Z|SY3DOl7nP6gOIHW#h zQr7mPQ%6FX*;bG8^4;}a%}!^$XNqLAan(We)xgfA#Jo!0mI!~>-RgGEL(?LK>lBw- zr+`qry=ss|kHYy)I?<3Zt#)ghCP;q^zAFWettBfP-4zp|miCe~q*H+UCnZT)C0sVS zoX`;K+MacW5gJQ;y;Ryv-WY?L$&~`aM1FkKiiyjoPE*~&D~c6|m9B*(zUya|P%PI1 zxbW*$T=XlkpC3O{-xtvc;Htqi5nNT8cwY#ofovGXMcA^;xbr`+d4%pBSx*MkYfc!znOJCG8(f=^3h9SD5WjI>y5mPxi_^ z_Xft}41#N~O5&b{&SHkmCwFEdh$4o>uyq+tWtgZID7rp!1#W&gJRr)H=4#RkmIsq; z&H!*8(9p&0xb%QXiHFyq7HG^P%tJIN)5WX?98ZCIq0?AW*%v0``9@rop}c{`}z{e=OjwIGRp+i&>SgCAd=gYa0L|z_O5#Fg`;h z%mYJ0HXN)z6}(!>>ma+;)7!wIcsX4+?>xlYYI}?BO6UiAyY|=B+-lDO9|&DAY1*ix z^JAE0hs`_rDpBtAMyG(xh?c-|RY(<&IC9?cZqq|Q`EIK&UBem5(6B#7e*A|xkmBFt zK%)NTIFSE*tM&g%YS+jGXc)L~JDPFMS*U;3|^*|kg*lgR|5{c;L=FF>)4XR|QRn1VJL=-2-Ay7{C)gol*DmFH5b z|FOd*=s$4({}UF{pqO@ohrtOC-V|wSwws{`XJl#IWz{0$PLOz%lN-~1jY#@ImZ}b% z*^Jx&lbQxo3^DVsp9@rVzWFudgEV7n=0y_S-&@%M3ifI%yjB1JYOi+t8VkNRoI$(5 zjE{fmuhB~Wt=o}*cy-Hw>@eUHH@%3m+53pm-Ltrm5+af$C^S_RleOshCbegwO@|>D z=dzetVYvHw592jY-f2D{@G)_SMs4fvE>Vw+X<}H$o$Ku0${_D|9C%qdCU32$VzX52 zuVD>txgrLoeb_XK;U0NZbRkr+5wkte-32lqZZC#P#+Z`BX`Yh8BR~ zhA1OUS!Xw@Pc7*K|F)RwbCYrda`kJfcRYTV9s zB~foEa7J4QVe(9w-a-g7U`Aj|tHJ=$1d*ro$|kz;atxDyYAD%6t-YjCO&fWhVmcSj z&HV87Jx0#9P6EF(MrAMV0&KE=Jh8hgLitw1os@#>U4&tZv5`almIQLNH>QhUccpkc zg_sL%b7&6dc{|_G*g0mfp$SiB^RPDfB5Tx~Zk%hRi}%+iS4<4WTPmdXI$yPFl4BS zcjo@oB#o$Ohj2`8BgevI{TxIsxGXcSe?XXr?qSS(5ea+a2Disv+Eu}1qdpX8ti7v( zwpsYmBU`!XS}T)8%`erhT<92h6ayk>MZmQQ3e~ZM&V?`asdXObJ!yy&bW*xPVRr#S zhiPY;9|0Sr6*i#OJ2@+(R0fKI_{rj2X@vV!pEjUA-Vy-{!T~#hIG@cu)(!^(c3j^e z*f=3O7-W85actRQY`2O+<~+3FCn*K;xsP46g?P-Z$Ct)#KeW?j1H*{-%mXsrEKhsd zs7xJ(PM+xxRR!c0xK&~>nw~;q%lZZ?c*{~BQLN+A1bS6t#C+LRYo;+SI8I%+hGiriwq0}4%KS-C)3$)?mJ5cg{H$QL1L=nevD>u+ z6KvZZ_xF`LinO> zgK5h(4VV_g>{7w#` zoFX~NbjG4dO7P?eZ-4gM>9QNG(@$E?D^y1+%X)8GlgwLT<+qF$6)Oo+fBdhJt$NT7 zQy9dM8WWQ|s{o>82^+K~@BS!|A{Kx4~U-xcr32>wwZ`$tpYI6-CJfhP_x&Yi0xg?<+J(RzfcsZzD>)@DXm(olPFrmC<{O*8H*%}_Ftpb15n z!+E`N#ojFkL8k>KT>$eP(vd73+mnunn|n!{b!Q?__YTMtXKBQ_9Z}>O})hT zB*=$Hi^L>(P!IzY0l(aDQ?w!T#+(#pTl0KKGGMT z5ID$F_}iPTCxacg8vYYGDcv%_yfe3^+N&f;{wi^j(A(S(5@IG`k@r5@D})}}9vU@z zmzG;>n8|`vm|{4MlO92rxBy5`X~UGifImV#RKfRDZ(XXQVpAI5X35p+1bQnfb%e`! z$|wMB%ZiQ})%C%ntfgzHN0GwE?v|5mv&=n+yC+;I*`RVHIto%7`iR+29&}lL90Y~? zM2|8}6UbV}%af9g52bP4hWBTxXIB!R;A68x0pPPp18HqZA^+l3IeO|rFNd^OrKV#~ z+^j<|JeipoLqz1A9Q3cr=vyhe9BJ7*~B~aCNJxfLy2F@&S;m^gAzf65p zE(6nPGI|?!pcP$QxevbTr*rDVDuQAxd^C6(NeNF?NI>xx3>;7kL_($X&3Da&9kS7} zSQs)Sh<&?9tvTX@y$r5NW~Y213qzB=sS<(CTE7Mk?ngJFF56YtXEI@TVU(rQ@H@CP z8U{eG@XQ$yzAv@<(8VG>6hG|IVbmw+NuAZxXn(ae|CzbHI%I>b78w&7Bg z7S`>l4Q7|t6iPGYA%$Z%Zb6ew_f+jU3rkdmKbEWK&M30xZU0ceO=)lJR&!g55NyYW zroa-ov}JaR!%Em3^1hvCz~u&^#z(DOrGa1wbk9g}yw*8l+vv+ox-N^|qr; z`eB8dB;{a0oRw{~hUOtJe@d++S- z=FvrtTtT%U^9`cDtcWy!hODE1JZ6hQM(?P@+9(Ayl)bgl&Ysxov7)=K$EOjUiX49B ziqGP-V%I$|o0_cMSc(OLs?$plHd?w;4tb&Cg5u>?atk&d2Ba4e#{~+#Wq5u88o~sc zL5u2cvtdFMl=a$ZYK$*UFB&NyGsH^J~3b8h`L^<}JM6bKci;x%FMG(9`E8 z0$}(@dBFrM#xR{(=)^h~jvFCGCR%IoBl)VtsG0=B?@mmcIZBFRyD%VrM z{=-PMAqigTGp?8>jEc*O&hZ`?r+fKB*d=O~USp-&ZY#B&X3P4lW`dRCZQhe{5Qw(t z=val}oHXHaQZ)09dkr*?#Z#c@tJ9Xk?Sat%yAM>HEqLsN=;~!;2*MO;>&f|=G2F1m znIug!FTD#8k;^t#$&)hpYNyv-n_h0cz>_#(2#&;g~&8X;I&BC2(YF|7V zP%+D7t-Q5UC3C}9X$3-JAY{lmW%R0+6i@b8***(FsweMQzv<;d<^Q+k!>_jFo8kfc z8k-@SH(}iiM4|;0roTq@(*^=AwNIaK)z|9%;Z>xU#UtwFt4H_KzU)tgjg@Hbc4v7H zI$Z9uNoBDYya_wWx!hK!Ixuc+^7dUw8*3oQ1&?X%THe*5y!&pMwM&M{^O#4KU58{;ytXgZeBeeNGTtU&uK&i7c_oMs%jy|460CI7ob8JX# ze>|@+iTI~J%o}(*%x*+V;Dw$8y}VbqzUqva*zQxmd@=0Tq?upRl@U8!g-FjNt+YZN zzcg$Z%|Vrx3!zCx_R2xA=oi-Ez*?T_ShhSA(_IjpEoC>0E~lV6F1X!kdqdvx_3fdm^?3`(^GO=#4r4aAG`^WjV`q{Aui;cu!m zdmA4m=0*sjv6$VaY`6fK&W2mPSP$rj-GwSoJnOBDQrWHA0nUWi>up#|%Vm1*TcM?{ zvqtt#hlzO~eH?VmHqYXpb`9ol5w*jOcpCa}V{*QIriHn5Nm+AcA$TIcu2x1%GZSN= zAk6Azm9zk3+>zyM%<$mleastZo-Ivv*GVw72}iTaDPootva6h&)lp?5dQjXeL^m`$ zS>DA<;GuyYrWOWC#kq%we%)yU&zoanKE}s?2tZ2xmBt2UA}z^J*QC<*a0@NDH0pCm z@WjB1zL2`32UhEwCK!g3r1iHn6Kiyr>Tw@UKif?q>+fYW--4V(%t`47?$XrH9iLEj z*%&bNS$vLoAJHC#c(7ImpsRyi(7jx$|z)3l;`QZ zz8Z-yNgp3)Pa9$4YF&K)Gb5f^le4Rmlv-NJiJpws*5)p?;PJtP-ZBl#ee=g<*Y&jT zuOgafX^5QHydx~aeKCcyOHROMCXQ*oBWF3~P}>2OrD2FbLhd^!!x_>6m*q=e4vz<} z-ZYHJV-_KfgECadlW*2{7&JBZAZdd3GMUV)-Rk+Qp)Lqpl3pvq#n_X*tTX#EMa#Tp zR{scDnuYOB_HMje=or$S*xN6JG@zMwktpq}*rm(EHWMV}Y;KbkOXONeSI_m>5i(}0 zF2{`VA?z$C6^aR9=fdgkVrIUbp#A<9wMck$ z_CL`Xpf%hQX`pwQPQB!CMR%HOkQ1&zJTzRd9Zp~;cYG)C9R(!>fH_?^w=tp`v@Wdd z^AM?8tLro>wD0u230<)~s`89fVmF9#BVKN$6Tdki!T))!ZfIn~75aJjB~47-Ti&jh z@9oDaFx&_hR0kk?%cdck+VgHIP=sCgik2rWx$b}q{Z5{|rMa1H=;oK9Yzx=EH7)q6 z*Qh7UTpmU21(?s8}33(gk8;6#5WKI0K61=-8p4|CFVvX;kRe>XE6?t|aij}m% z67wnfFqd?BDSVx9K)v+n0z`aJcLCyw^rdL5;?87hn`AF!U-E*F*w_wiHZ3PPl=5E# z{4PELc&2%#Z{h?X!@F)$RA{5}y&-!9eqs#lhqm&C3c6S+j^ebLb9hr8079>S4R>kqGmRG`wd2H%qo`0U$0AN z^cKe}T(z6{2pQ0FirL;3&;*PqAyb#}E(_%GcfKuG-_BI@tXLN>9_aKdQ<(5u;&hH6 z??jrrt{<-Iqlgvzv@~hRIoho4rVHTvNBT?gZ{Ba`LNZY+chagqL1p6waEHs)Mp;j@ z^zOW?RWn#o)Tb1&VD^X?NeSu_*0bm4st$*ckVxr1DjIZ9V9x$Jx!~+6-YW=`ZMO}* z0Pz)6Sau*^>u&BN5=R!=%&Zqiv9sbjHRw2*$iH;;dBINZ4o=MKx)erL)tT@~y&l>I zbzuOuA6EDyM!_6gMSs-T*pRc@hrUd8El9D~*yPBU3XTdX>8C?a$}BU7ExPyhX7@}^ zH7nSzw`&l$FlYo;Z|QEid^0ANe{fNU1RcU=L-e`CVxqz-Z-%!(PLhh2z05H$K&}^{ zX_k-sKlMjQ&KB!8gCo!XlvRJFCSFZLx}+0fD)~-%5wm8if&S7KyXLDBv|t^*YFY9` z_1u!!b*GAnwHWQVqS*1BS>sj{Q#M;KHwV@A?2&3Bc)^g2>qX9+OA1M0*Ru@~Be=;`*CTQChl(PObwQSg0b6@)FDSv;k8K$IW%~P( z@g#Dm@zh&l_bT#<2pSZDyL&-1Ix~~wxxB@n&zu18_p|JZ=skqVvZt!8eMU^>k#yW0 z7A;Eof-bRM-!bwRW(|!Q20fDeqQ3d35Ani1qj-#6ePSOu;Cy;BCuPP36%RuJrYIG%S~8g zNHB))w~ZfmW$|sBA;2{}i+W+In@A@tR^&FfTis*Q4rRR_yvoDv%GFioNfO@UTom;_ z&hv2Y_oaEuI!{uVc?UEm^mJatvucIaBjZGP$wiEKA?<>5W<2A={I{`$-ELG`+YUqg z(7TYADlUnX`&j!xkwUXf(UYrb8$cZBBq2w(^MYORo%$@JQHw}B*sqMVw#~in1K5^QawXoL zTlxhk<&68hU+R_Dzi}WuSAiA4ssXl7=38NTwRoqS%kle(^w7zwXOeIMU|iIvbyvGkE?qwKwakvFv|?-+P~Eg_N(3ej&tIJ6M^S$yB#M=H`z9S zRqz+Ll6abb+8c0GD(NId3{Y@d6emCE8T8pYPN)+1-)^zB~K{ZW4PEOX$%ZIoH zazVFe2GyeXgtxDBwxKqe|E4cZaXgv20Bua3GAIa*6iP{d2DXQP{h3W|!#V-i;&B1y zss`oUTQ(v?-kS3FaCZOuw0HlD!~M?|E<#O~z6_EFU+<@18@&L*;{X;M z6>u3aoj(05OsBv)+u{GX_Gvgxq3x8)Wl{L*>;03g$Za;y{Wi0Qjr3l!kxgt`%BJHT z(xH7;UQP9)+48xYH&3^-g-N*8Oq>%_w>Y|)e&l31vzul#FY|$Cj8Zk;4IBjddOTRt zZ~KRW2|bljugHI7D@SWgFdWVEq&qPX3;dv)awoe+ai`t<{(=H4V0HSIEv%&C9={mV z_2P4k4(dntPrfPF67CjN{mA~w_jk2^_ty8J_j_#pgCr&;+>#FOvl96(!#M{>-=s6S z`F=)GpB4DrC{;^XNw&TNkUXiyZ-N~h4g+LvnTYBF1PFKv&Np$4RNLG>-AJ30SN zXp_H*HuJZ#8t*i{PU}UpoO!;3h`ZiDeB>j_uFzGkx z{y|#!2L*FU07Z=a2kGn|6do*@|I^CdhyS9-TzltN^;#dW`bPh#^3Svk9@0O|7nI-T zDPh_L!$8Y{>CF03*Qp|S7T#sSvj!o0ASz29hu4JTL1jz3V@@8^q?GhWTGrNoO)bH@ zg7L>wtg^{RJfrYwi?%2dBwpw{cKVva86vgtQWL6|!O5axcrAj|{(;Te~k8gCa!lo6Lh zIc{PgcL;7ChC|Nj=Jwb>-EP%WdQ++~zD%j2+8;7sK%wV#|7arWgC~kLZvq-(tv)K7 zKf6>`{tDNpOcKt+DuklLkZl)^%XLpgn#<@u&hJjTTT#vV@)d3Rzp_35v-d0i$vHfc z-Z1zB!qPz$M9M5%GRC5z%VGxL_&p0t#dFJbHvT&3aI-^6zlMgXn$DyxGq>3d#bAjG zDy9enXP=6$zLou8tg2CrrAzn(*F=U46GZHF`9M&V)gGzEx3w;oB6wG(1u13l7}$z@ zug9hN4?2+vy6EnXXa-^dXQ27O8++&$grk95rS_l z0(7={#eT5{KP`8|wv(Dvp9G4(bG_4?Chdk(G-u)SE8Pptc7t#ts4lY(C@#0A6ejNML!m{A_-BcUYe72Hx2&dl&XF)GJcToIkuc-7C=&Oh&ZWgDw>=tm7SM2@ID&C?vRS)ocgnCv~}%_%7z#r>z_v zu5tYQ+;(+$F?BT{kdUGu?Vk05TAqv}v?ucBb5h_hwfrk^#7PM?oSyiVjDv8CSb_Qz zmh)W8XYPX`gv}gKbxoAZUMdQ)0Gjt&;5iuy{v`0hbVxa;=+<|`Cdfu0X9NEg- z**tNLBTB-;G3PZxBM%`^u^AU{;5sB8N}cqE`#JY3?l;`Ak=A@}@HYW#TGK2^3By6r zu9>3Byz<~g4e11znN7_O=V7mmht9DbWE^5_acVRQG|Dt;G@6KCy;OJ_>!0z%DqpSQ zereAxN?*wMRyd?Nylj@$^&_16yCn^Tyjq|hcg&jFJ}7>xtOic%)z)UapCK=q2z3w< zu@d&;4E>c58mAC{&hXgd%ekaRlk2`LOwy*y)g*R(5fEGSwtD=Ca5gG=6#*WWe$8pnX;vui);Wnf%Wb}sdT%QGf5 zoXM;9*GtIKhY}Qwe_3UFjYEx@#Y}doJ{MT?Clb0_%Qt*qJP7S6Q2$gQr$3^`RBnFp zeMR&WNc(V>IeM8ds6D%tGjvu>wK@UTYgTQg?fUaR?AbHB3M!g9M3=}p;F&6oOHF`! zHq_++R~j8*k93MVRCkxI6hu-`%Wqa@myd2szFtmZBd_UzmDUKFe)dN*gr7TkShf9i zoTf*Wm*-b=$4IMUbwQmGgxNJU<|5FLKm5*dMs+BjM{>A9Fj?g{za2{xr_EJ)M>m68 zd+cLC6PMCC6ndlI7x`rlb^8?^_!68fUGZHbA~aROvcCGFmlPa=TDbXxO=whlLF@sW zyyKNj?B>R-V@vButM3lykE}rSOcU6go}={Ma0gO}MKl@m8F7)}$G%;H$&Cz2p^j@W zsZAJnJxaS`pY&p)QZ^$$*w(JFx3`W_Q_Dwq9fz62*ielVncAxxn-Dg^MO1=a)ERll zUI^P4JSRV#ds%Tq!o6_QZquNyW0pVCl`K6h#@K0BGD4LhKgOjr2p{i}9sKo6RV9NB z3((B##ZY;jXhA^qrX!bwP@=$J-WXAr5+3aBdt?GDf%FHo<{Px83dj|-(frJvImTt-`Lt9#7cYfj0NFB9&ZjA0D zBXtLCVnsAsOZ57#KAN>7jCyjuuuZdPJKMfys?k^^g4+5Ds&0vpLR%W$=RL^V3D!pg z`(EsRviCRHnXla=RdV9VZNl$4Lf-|uCB$f@@xi!q*a95s4)-U8#R0`~NNz&j{P=D9 z*5-hvct<~=S}3)8Qcr3*TE*j>B783=0lFo1yM~27v&-Fx-|-M5VDC{tEKDaid4Tw8 z-kBQMSRW3DR6QOwb+U@h1v=0lqx%pp;RdF8{|IO7n_rbKh%D2HIdh34G(eSmZ;=w) zInvrT=P~rw<7OE}f!IB=^q*Vjt1Go?tzMSkfnE#pQ&P)2_WOmnaXzufD`{12#9`@p zN;2#ddMP+U&-2vh4zNtWt{-Ii?dxLKuNLAa(l#GPEgwSglO*R)DZ^iL|9*8O(^y{; zUMkfG;s|{a`?+6$PS0N8_wM;1JOoocT#hz=As9-{9D6RK(S|2RS{BB|w_Lonn)>di zmK89A1*P6EKP%K;JqS1}2Rp3hD+OLVVttdl$=%5P8@44mbFR~wVP?ev4>rJt*?=zY zd3V5qZ|+iBn?VQRB`{NT$?;7+#7=F%d`5)7=gck7gOf!m{IiEwtm4mx*0KffJFp*( zbbEPSu0?xjAN~GWH`a0K@X5VZzVpGwMf=`M&vG=EE*%bRArQ}$TLQE~slgSUuk+FS z_UfNRd=PPbPFZ^S*x~Kp=`j4^e9PkM*4AdVugA3ZN)YE;i|S;#jl(gje%RPB+tIAh z`MSg^@wJ20a&P5BoZQiFVH;y4^~F4_Nqm)0oQPKU$QAg2U_83=ppfaeQOH=@VUFDI zYRml)!|^-6u`Izn!3V%Mr1XPe)*i`1s-ww|7QY9!)K;B}>iniFf|liu`y#4Q_qxNW z<>w&v(xcas7F8aqS)I=V=ECcJ+s77WXx-XQ-3BsPG;{p$sBTnt!)CW^4)Zc-DlU!c zc&`kWyL!AQiI;ko*CS^K{OW$9C_vH#_ylG^cmg+4JekSeN|FS$9-06oM4n-mA!TaOKhc9HR{DT*e z1l6ET>7BE(eDY)n(}DV$`fvH@n*C>_ss|Q12UEvWn$fkpbHVet_MCyB+rMqRgAe>K zL~UwYXt5Qcf!+%pOs(_=$(T7qsIe#p?61KmC~;>#=|bJ_5zC;T3qo~k$@szJ zt+?N7)*-91sH=ym$ME2xuOEnO$54b$^ceM9?|k4eqspu6@D|rTCYdJXSS)wkvD*5; z@=$l(2VoF~gMN_n%d2yrXly!vA$YJ}X2m;b&ii=VJ7`B5KNx&WH4<4*mQKC6wBYMc z4&M$dx>d6+pl!Lk0W1{zQNhl9MZ6m(xWI4QZ%$5G^e{)Z03DPN_>)Dh<3~e>htNR^ z@B&)GCAO)K?dCt#Sw0G0)V4H4Ua8#=+-eB^y|?`s5jgwSQs;PwUGC^Y8RTbH(Oqv0 z_GmdRU@=Z^XKN$F23|gBcf2!p(?(d{v6isJWLocMTBfzvbi9)^csKZSJX;|e4}OL) zG{g;B9_{SBJbq0f2keP1eS~IV(NVl}{P>|uu;h;w?c?crB|+HF`tFy6rNQ7|M}xr` zbp)%Cv~fT}&9WumAuh=2C~nS;n< z+a36G%j|WP(nbzNTS4E)X}w$(5QoX*dkqY=_~eg=3#cj0VaxB=6n7bj^SxVu-m%=x ziD2!AuSKvQj*mlv%>r-Vw&wqVt&+UIuUu5aHZ65U-cgVM)vi0*7Ygu~9gv3e`%cwS zV*4*I)9tTV1`9uQINYoZIuw$-x;N{4nE?L4coZgg-(M#dXjr}om#d6>S`4T|? zp}G#;MSgjJ*K893mVRhK5%=P{Wg%Cn&h-s_yYHml<%9ycgF8*1a_vXRIR1Kl@G#M{ z9#@Lp6M!fotjly^<)+J8IeqXmpywP?-&Z_&^tg?X?Md+Yt z6yUW&^esRj4Uxw@&iOGn%KUJ~Oj;W=enU>4g$ptlchQ;%Wf}eF-3RLB8~r4i60BGYjm>k~A&6fkKn07YaJB z`btguhwwo~C4J6lD+*9{!sq2T=X8ytAl={*ORF9yQEw1P{{iRq#;^+}{l-i(oqAD% z6d?Vau@x0o)$3g@h`9O;YhzDiP)~X<1S2&J>|zn<^y@NSmrI~~RLrRIP`x!Jjnb+6YoQSnlR`1z%tNB2BQ0ZhR+d>L?89v@}&S(&A6_S4?7JQBZtM*wQx>rCL~YY zRK!SAKH~DR1L|4%c6pn2XFy^P5Xvmj=Uz#0h-TNYfrTQdhn76|8f~cw&N#>D7Q;nM zHs~YYj1_IEJ|H=NNIo1)0ZQULLpP1TxYutSjDt3n`)Z!Kr_KHG`KalmB)EiOfq^rW z;d#Y_EE;HRHiexV0t6c7Ji~KaoE={Np`)x4P6C>LeJ-}Ke+f4f zQ0X?U&dPZ9vI?A zsE@+B-y3^WuuNsy*-`(%!={AbjXl}9Sj);_&7j%6!-kj0UKUtU?XB@&zuL9O$L82b z|8AXN>42^Xo>rcAsX*D(O*Xl0`Czig{q<${idHfE^*K9te@|=;2JODefC7C`$CH5I z+us+V`@N=ezUwpI_`2OU+zVwFmTlInjwbmBR}gFJ;=D~Rt_KQED_q$MhUMpiqGjCrR zf<9t_SL_}F;fV-bzNZejoSYXA7KXVVL@)4`& zaOSkiN1*&f{Arc{@{uY}eAKgTtgVurZ*0eF%=>D3290TB3Y$LDjMy4$_j(FgTJX(O z5lJUjKlf@k@LbQBt8NbN4!HcOIJW zJG8oDYGuwCug@_1XrLxW=ltYp^8i?5_WqE=3jXRUl7cHc9FC#~#HQ*yyqzo^^=7Yz zM0xjo_{(`Eip`Ge^g(y(i`{vyidMImPp&N9JaMeSr-Hp8}o`6uansJwRX z%d4zinbfIWd4Da$SXT-@4dBJUu9X}0;+KW)ei6E zVc)%ce4D@B2#}>nl=b`qRX@`PwP1W!WD_tOtWQ$kd5zd{tBpch5@PbsTY2URTY<%+Y$Yk z>E&+_BvZGkfNa_(CJXyQlG#|&Fx6Lt)6Dn#6#4E(UJ;6A?l&%Kj#C?@;{ZpY-xOC? zVM#ndiO>@H-x6`?NqR|UYihIf7uG=WaXW6T@D(hR=H zl`@v&a=4;}0$gPYmkyAlK1T} zjrq{WoIPl{097`Vg%h~Yt*sT^6_+*h^LFd7h2_{QU^amfa1IVhwVBq)SVj^@Aj-^S zSjQMHgO*s4ehx;uBH-nag!loi-6c6rizwc$A(4s%PTOOKwDI3GNh7nH3>oQRtj;w82G zos^o9J6*0aa$N&)lv4rg1Za`vmS7B}C49-w)6>OO(OiC$oz?8jtb$~rpugc@e2%Bo zd$4q3?<)*q5G*a{i!?`=KPC2CggI|MU@tO&+rpt3o1Y?cC^E3_1OJr#zO71=etxD> zk{s;`59D`_`h81|vB-IHhA{gmv+$~g;i!eBiN)Q>hvAP@`$BpoBn;1sn8=owI4uCX zO5&@d0v_vvK%`-C9h*(9rUa-X+)EgYOQT|Zr85cV1;U&A3$B`s_PhBnq-jexM{k!8 z6#21l$aX*^%TZU>t7^P#%k3ws5=(+y9krB#s&?Gl4Ed8o`mWGaB-GxG1WQ)}hLHFR zZ!tLRCMoe3?!dQQqSFIBZ#6h98&ATs7YlZbxB7$Qj_THr(r?EXmz85MN{AYj9+T#6 zP584#tJgEa76u=#CZeQR*WU>35*&*5tR0Wh-lR(<4v%xuwE4gyrwk13wwXrBrj49V z78BC)wL+@7hms~2brIUkp{6^{WrQI~TZh3*%knsEj?XwyOfsZ#ad@B@Pv%>+HK9>r=Da#mCuwiF+;kAQ6lVM8pL*bSMjE{4V-kUx(98 zXu)>c%COTFWw>t^L|8TqNqerl>^)$Gd&y^9@s%!ud%10RohK}f66F^3whsHOyaqS> z!;#(%l;Rn6y9W&Wl?yy;eH}*zR~Bb0>h55$5n!Yf0?tPFS)G5;ROvWuOwZ8yvQU5I z52xz%vHPz~eBGc0xq;+L$9S1x{Tf-%rtVO_b}K|(GO8*q@$+%tTMx0pRR3U=Woh0o zp5NYUulKkFBVVU_lQpIwVjtiMgk70A0k{_loPM?( zJ6Wma7z|S)EZOxNe;5Hr%mFXuiKZlK7BEG>@rlOFgFNJy8Dwbr@y0}y0H{)DML^eX z0QC@ACTCK+KLh$UpAL7i``MooeL!v8`$ruUZQj3>Dk-3j&;FY>W|}>*yZy!=O@2!0 zI6OcB_MmEuel_~t74=i?equJHy+@To{?ocFB+=n{Ik@6q|I2bvUHuZ@B+X~rsCSzl zuuRc_Wm@^LV)3j(wRLG`tcCZF0b_f15Y@)Ln)2^Ik}O!6#*ERFpN)x4z5!VFQ!Du) zd;b-D^wH+-oZH>EfH~~}EWV58j@xTM;;3eo7RBH8@1un```u{-t%&u)4SsQ=Ij#2~ z6i`=;zBI<)NMFA;#S1;P*>5-zUOU@9$DvAM`L_Tg2-u#2$9zBOoiUd3*DU{wvG<5j z#4B=GjjU`-oVpbLVk0Y2Ef_obiRL#Wgo#tn#MVS$C*!RTL)h1s>{ZKuYEtD@^ivz; zZZtCm*Q#BDmY(`j{`65Vm_L1}z9?eJbKb)71_#kn1D=Hed)6?4gmaOiW#Yb)v1D@q zU^7o1u*rIt)u7@V>lLr`HCEl8MFMh82Btl#=l@mic7OVN`!N3-h&ye3v#%7>GW(BK z*0&phjtRvQeT>XL=Z1|8WrB`s$E1ZCpVmgWly&c18h>^3FfGwJF#=|jG$-#(OaL_B z^axXdbnAHYMg@AsqmlD=yVI%T=Cwpc35Ta-9<<2#d~~z+U8D!!ELQBi0(f^iNz^C( zyxRva@0eo&^~9~D;D!XlDL}*L-MqI61u9BpT$awHruJt*!cxTi6L&$gx)c!g01u>- zT`P<-Nr=%L4>3}*XxFU74zOri$e+Z3zWL}VKg8f)pkE3k&b*7z^zSMR?O7LF8qYq> zRsj-UszzOY2>9zJYeB=f#tWbx8X#)BL5>_kqK&JQx<)XeK-|dG7f*};O|f$*vo}Oh zneV#PG`cJhW%*rZ#q`~O{YU|Um^s`2QlI0=ZXUUiZGb=}sKv?GYh+cO69mmOei<_p zxp7+@fA=#G>K;EnTW$6eehxJDxdV5tg?SzTcny^8qw8d#Um1EgNu>s?lHlca_-k$- zG#Eio?L|q)K15TLe7}bTLU!0YP3~4xP>%qNC+T^C*avr@51Qy{?vi)|>ktx_1IST+>8Bn%H#?Yv`{mDaT zBL^U_Af2q)G9}=a2LknF4>>Xxe+bq4nm4on5P;`EB+cXDbt`V!6O5?>2@4D_V}nFu zL?UR^&g9sO7od;Mxn}8H&+JQ7c#a``dgHrOMU>BIyX~oPU5EWBiRdz~DW$U6HRiKl zXY>mPK82SClwQv2AQ%%L!Wi=o19O_ApdhP@{Ws~j=wsdvqF zY@4CQYaoyy1$oNDf!MW$?vC?j_8&cnixiYmCX(2Xx4;S;`G7zPO4T@#J}2_DBMkJb z-Far*P`wgzpqF_T8+6m~b0z(GPz>dOmhz|BC!OzptPgg)z}c0d&>>L+SbKE10w*(& z_yEQb&dI^08#6i*^QVeEK=m7?Bd!vr zG&g8&(Fg@a$9;|dLGIoXI&{)XN3yQV*48unHgAkZJhXb{PM1Aey_)o?m8St-;t!SL zM6S%e@4irJ^X*dq(2*F**xlCi_C}UZ_UD9lMOr2%_|;{;EArPra%*s(U@UH1Zs%`^ zSVSCnBrO|d5+5n(CE=2-m*_M4V?05ZueKV1eP?(caYl32bFLG|Lc5Y#Pz(3^+&|l~ zWme1^qS>6^n#-k@s0buUOoQI5WU2t%OQlugQ!7>t!FH=me5CNNiy}W_HT0F(qT|}G zh4%c|h*98Fe6BdDC~r@r2w4P=2$cmDZ6O8Z$-+403=TpQ&7OCuA(j(N>IV04085mQ zPP-ZOO+&E0v=GflX9oO`c0!^d+Q32k<`;k%rwWP|*%uHqF$InTL{!=JnwX3FhX$S` z&UGEG02y`lfAPqFeVwyCFAV~*JS3h4I02nfxfC3Y_sv=RfvnrdLQ)iZROt*yqw8N^ zqDbUlja={C)^v-&Db)YaMR>Iq7AQ`<*WmSmF zFgg$!hkI6SnF(=8Bj7P37SRGyIKLPY3Q$bca3Q}g*E7*@J!CLqD*}ouXDLhCAOTsu zf5xw?4`jk|NNoG#_dqHY;O_%?*-IHXDBxtV zSa9hoUB{;mlBbuW$|t*eu@4Y&kGKpA#Eor0Aio~RG9vafpMh^-uZfT{pWFGRaX3yn3wWgENaYlRHbfIJ_3x-oGM1%a1a+%ynS zM+i}XJ~9zxh5^#oSAceQ9w^+ndBW#N6N$tS++9 za%y4D?Bo=>3Yw2>?EmqS#Zk}U(1x-=zyP)*t%a!Z1_0n-un(7jB|yh41APyh4CPez9t~s1gBLY@`v(bS{sTV+@xQ8z z3U}E3*5f3{{d%N>ZwF4T83ycXUj}`i|HH3r7on3O?D-!tL3N|aJU+h$w5QV(2FAy$ z0%0Cw`+KOdpFW2R-LPQ4)ey_0dAi*uOPP(Uxd4T0lN>+FQ=1-ybqwx!S3bG?4@oP* z9!;RAEQ0NXO~b}2rlp1IJjT;F9OVMc1Ao;WSzWg%8aJex3ECa5AI#w800GErS^#Lw zXX+4mIDzQ@de$PfcJKb4PwLg9CxH{*Q-bRk|3+*2CeXD!h6Fj^LkqZ1`NT46_$#!& zp04m&gyl|Q8$%JMCeAzjUt|zJJhbruez-UzDY=t;#MS1F*IBHv*q;%CjR!4?m&Gq$ zfbHa*JI_mX^6x zu(pi&-is(dD*Jq}?<_FLA~)_zTLi4o$?_maT>l#0DrxX1A(Gp=C=wzaHD0+$WSzwS z|0ha!<`e>+fV_YE_&3x0zvI3CX!sw15g?HN18W?rEJByP0Q_-jshz3JeSG0Qmdo>@ zb;Jj>&CQII^QW$GOVbmxzWukpYhP~}rcW!+;`2g}FoW4y=6m?;NKVu_OC zw17B($PN{fTz9-i4`n+13EyNotGsF2@0~VJU5)zTDYxG_HZm0mf7B>eT!;hk9pKV0 z>88Z*uhtoOev<`=6^NMgj^)U3 zSl|Pp|4_!(@edjsSaPP~hyMUSc0L>t0op4vMF6r|fe=7>ZQ>dD!PRd~CI2FRHRdZX z|GK*sFYi$h zty3-geyQa(00duJn$9u$T6tSr5yFA|1TK0Mp$~x3GT%? zq`m^s8RHps1n#2ECgJ;cTvx8>hYCqUL&>NhOri42<8UZSKnUd~l2 zf$cqlQY_#G@xT}=u~=0+VP@AF-~(QIaL5+`=e!B(t5(UL-K`iHC?B(-+BF1p1i0%j zC`wQOh1eJhR=}un!)~!3^QN-DXzfDgkk04&$R3tV-k{Q2cjpE&J3zignw^MtApG47 z+^{?}Z2=lDIkm9bFrm!A1)8I2^5jd;5J3vcF&q*CO%ECH_v_G4P>U-{P zi}4#DZQksInhyzM8H%vmdj_i_Lu&>t7D~z$1CV|mv133fTWNVt5lXz_uD)ssTzTjO zV~4hpp(6BVOvNy6hzQh{LIJJ|4ccF5jVp4!b3yciA*Z&`e$nSATM>qZX5j%&IDdaB z7R#8IwPXI0Qow8)^y@in-J6+SNGN{Of}|ab)fjLsxhK?JqxvBWxoE2E(&(^T?_)qK zWGG3+1>ah$n%v&|zOnHrQ|*#^($&!N;!2Tsy@cX8O?7tQtw|p+-tf9hSUQ+SS)>Xn z0cfWIiB|TRTqr`Z2e7&iq=w7vE(?s;l{usy%xdn|Mdv_19X-$v@bH+ZCj?TO_I;(_0(BK_#`o{))$IbgMn~j(jAXpMe*{ z!^mNd4<^1H;6{8gED&s33R{VFauhvp2bX7Z{0A}R33+Hyo&S+U{!7-@PQVd>sigD3 zi(r@Te5P}A6N`Llbxh`m-|xTA|7BNPf2rSiR}vF2E%N$!1jdo%gv1&(|axnW^IeK!zw z5)uj(QjIt9T=;=d{%+JxIWJTw`1Uu5FyisUuY#xo*cNt6cd(*AE~$Y+oXcz2&C#3s z6C{;|h2Poo+s~R5*43rfDTca(j<@_5<^uN_$}S5ED7~!U{jJ?Qo^-9QLgw@4z_3Z3 z(>$QXB&LaMSQ&vxz~I_9N!x&}d~UIz`fyoDp|)ovdZIvXWTa$b?Cb0h@+>m2{BW%7 zsBv>W~^vnEQ zndFm`N8tDz%4#0`?(_><5r?z{L$8H(-`Oyg19p83+icqiQz3fuT}74O-EKfYO#zr< zQ^#T5jIXp#k_+zT3=qn6?4%U%h?uM)x*dQrhSLL$|M14GrrYHi1Cf4!mNwBvt)&3u z`c$8b0$HR}O8K7|p?}x#|9e6R1jq&t3;}sazla@`e@|tx)gz?cGV1>;Sqw_??79ex z`FDs&OmLZXOcF6*-iZ|=nm2C^@1n0G+_wKyzDzR#NMZs+b5pgwE0#zQfrQ)=nMPk= zBY5TW?tzEoKbE#E+h4K?khsEYo&&f$Csa~dr>L5W{lwP(ij7P9<1Rp6nXWY4T8-`T zdH00&4;xgD)~fdR#{|oBF&o66rZ*v9Vjfe7Z%uS@+KIFG-Kp%+ zZZ8)+H`DHkP!=uUZX;{){APEYxy^ETJ>a+80+#%F-@_KwyAn8oVEl+dg`Ki8clj$R z>uAQAKh#uu`{j!&u$JDD%~cs4$zsgEoXv;VHOWr;nYI8Pnc1WS&8vB13DAT_QjqJ} z3Tb~hgqtfgTBz)~01!!iV5QNa(Wik-Wu@?*JV11no8AJj*vZL|_n(=CX0pv37NdBD zI6(8^=lW%ELrOK+(|{5<$5F21lu0q87iKeg=AQm3%e1c{2BxL5|_Tp^(^6 z9B?e8z`SeLmB=w;BAwJVx|9(DbDI#s7NRJ|v}l5}FEom9xCqq(?m_>$5+s3 z-iI&)@%l+PPGj70v-m!666cf7Embkqdr`9DK;RA#HiM3K7Ns`(79yPNjo>BEEzYse zF$19CaHK(a)@I5NQc#kP2jOm7k$M;(9;`zjuJcXnaH!A>Z55QY2He63=H|0;f6qHhNE*RL|69I`bj;fKB!ov zk%s(@iT;9f8Tsh--%S8I4gx24$YH&>i#FpRU&)8fisL(niXWEuEvykpzLq*xNbk34 zwBJ&@PMVSwXBF!++6Cvn$s^pdSQ6qp63+J!!L}2*{@=k%HDNUwFPgT#&Fw~Tb%MSx z0$Cao8dTTITQcA_nmfR1VFR4fYR8#~MaRD#sIM-#Zs?{ivyzDVOn^!!#$wz|ARl|= z97}y0RF+qz#ocVrg7iN^@&L99(9iUa_>M05`;)rz8{gpNM)}j7-z*9_d=UZ{P-sZm zg5+?l@n}>|3=_KP+gZ?;TilQJjP<|e$O*C7CO#|DXe&ZfhO3cxUV{&Gk0{;b@g2MQ z7s+f;&BF~AR9su;_O|K6-S z!ec}pBE-9%R?7WwT!u;{t8jnP?GOX-&WGzXA~fP{HL`yc&rk%cJ_4h7V| zu|vKeT$h*j`9*~{<#0jvb=VQPsGIGwb>(b7OBW=k;Ym1%`j&R}m_3^31YS-u7?ZPx zBd&RC+$sDrgByYxoSvr6^MRMgw4Hl=nWB2v}L7^BLoUT*H4Vviom8Y8(U zTy+zc{5O;}*zsta3mLur^9y*Pv@wG?3oJ~PL*-UV3(k`P!J4B zFm?*NbLp45Ypq!~or}m1+k)4T;7_r}!12@K8NP6Z*XJS{BSJOi6(P3qHTqTV=3Fr` zxtA<}1Hh4<18WGnDppJL`Rr3<1cm8xXYn4K$_EA zwdv#@@kX1|gwsTB*%CT|`w}H7{PBWn&Z~2Ldj9}lzP#-X{I{V}wt$~YR(KQDGW^G6 zHBD=kJ9!fT2KK2+$t3utZBn%LC;GBT*-07RMEHv(Zk-2UafAqe&B#dh_n`@X%JZ8N z2<)Du`=!8|GXORIGG1-N+8R}{Q#=j{Bvyyp?)12T?aXD=bs&7y!X1BXKl zil<*jp+%Un8Mvz9lIsG&g~Xko0$}@AkpICF96k=r5>nE|1kfh{CuWv=|#>nx~)+?#is!Lf;*2P>K1ZEUIw7 zkQSHzP!X<>zo^-xHUH{tC~&{&=-K%(1%W<u+!*8?Z~w)g%Y&u~q7eI@RV?f2o4B+!E_sF`A7rV+x)iI1KlU<*g(IsnXrh9t^@}V)-zi?>&vT&77+(CN!!k z#($wC*j*FT^YaUFKq{X)EpH)b?fPbZd=)QJUo7F;ET8V~-BWim_IXO36hV6a$l6%< zcJ!qW716f~pYKZ3(Wu%;rVe$L`?cIQaa9wLcZ5Vhv*;@P6d~3E%-VdH-^gG}#m@sb zT%6_bgoI&@Y~7o;Svf=PYg*L`vbJsNHzjDM#hADd1{72@vs2L3$o0bjK65Bq{St>5 ze_t_;@%{zT5*oYeCuON>-&{XAxJMx>Di4iXs)cjZP>)JAVl03ga+JW`JYyQOnsX5? zX#e8R8xl0!k0>Cz!=CM}OUq4O`b}&wnKil&Z;>po!tWCN1Zww-g7PXa8!i&>0CFdN z&uXAYu3U*(Ug32O7aIeqw^~bCIdsO zPn$+#eP~s4&{V?EHF8*E1g^4t(^bdk`^v^NHlLK&GysQAmEso-`~-# zz^yCVYX7i9BVRd4L`(8|=*=&lW}!WQ(HW+d@|=wMqW?aPK5f^C$`=loAs#u0897Ni zTVOHe;&m2XcD5C(b&2;R5B_?8=e>@eG%`|y*JUs7W_^}#G!N{G{Pc3;;!<=9Tcn97 ztnK(IRB%=OXa~r{@gUjn6YofdM1%PS;xUS3(G>{~9WHnb7|OW)f5ly{F`%Rs-*Cwu?g<@8Uk>ymiA zG5LP}p|X(Z{mHTYF~30zYX!NJr}4}B>d@~&rw@{W?eyt||5y3E7W!sY!d2>%NAU?5 zVRe51H+*lTH%0NZh^?G*vPMHxA_ZLmrT3|0hi8g5BS)jeh$X+I=U{3>N3!q>B zKmFS>nBp|YOX#nnK4JeX;%^CmFY-T@!~S06FP;8T#eXXQMWvU}w7;2meE=Si&rweI z%Y=IBskT9=4Z-$>*O}9p9Y)r=Kl7Tq>Z=4M5zd_^OxVBK*(k#%go6K)*Vg9wKjrl% zfDBb`ja)g+^X2Eo^;sKqzgQ3aR3`I9rzqor2&sYM+FvmTYN+vfC|24+@>ipNS+#O0 zlV;i8`QRbO|;)1JnVyvcR5zt^1YcQCXKodys7tysk%f#e9UK9PTvTDywUMw|V; z(7r{6#b5pW^5qifXA71=e1-Zn^Os}PK(`Vau>N<}+S=N&F)0gYx472PVe_R0P?;N& zm5p0x(phx}L?exTqb@qRskRfH_N&LwtqMb?Rr*jEqeDtc=VhjDMHZBsSutk6*q_t45;KjF*z;@+#Z*jK2lT z8&YaBq6U8*R4SqOd?GxDvUrwkB-lT~z%QwLi+5i)QxpYV8kmF{ zR7K1U>AWP7xOC#(q@=WADab{LnvcWe6LvKrqz80F*ENCFtmi=vog_+|FiYXN{wdb* z3EA^IK$Atdx^lra5kTHIgHcjUAWH^8^6NNw)y%nuV9+kIEGV@I4pyX`4W8GL^06HLfYf(c4oPYu8_Xg9T3#)WKJ%qpFutl1%D^@iWUQmM zgUrDGmVz}Jofb--e0~APRfw%Iws@}hs%_UpV$vwqz}fYU}{#R+(&lgZL-LsxnXVuwK+o7AjPB_m&>}HKi&vzChB{VQ&tX)UC#?!0H%57oa zC9K_4L5KOEE17!4*6y&?xh4!huRe+~aTj)wJaj9JA`q22sR^LKHoskmR)KoAgw{3C zAPZwFVYO6xynf^&64yQc8`%@y+FJ5VR<=F21mDT1SSaH()LEL;6*w!UM$NT)2hV*? zl;6wII%psM9BX9cC#WdAkW`Wl-kz}T`pJrvw{<11y?W@iW`69Fpr;edbhPJ9t>@T^YW=FScBa@^sZwbmOKjo*8k8qd5s%i8-v`giJ{WLayeZ=8H6(E*ewJ8w(f z!R@FZcUwm4T5ICLR{=Q=IsZYs^;yW9c1YIEJ^N77gzYghfgfV)`u$UZCvFOBjeQ3p zOxUsrtj<-KzP4-V&Y0gaDt`v+iM{*!sDi7Y<;G3#(VD4pks0r!sZTmo+f^M>YF<&( z@2&1q7m)AWc*8HQYr4Sl%~}O!X7a@7fb2H?LgZ0*o6&W))cUSx_?5*JtU?(!v&$v^ zK(No(Ku^9AIUoO%vuh&-3mU(WE4d5`lnBols%x0=8dzyYXq1l68+wn726y(Pj+Z#x zQ+G>Dcl;gFq4Rh^4Rya%r&hdSq6I2!SwK28ylAL1Q*%f~3E%JfP+ZrD>3{^q<^)oe zU<0-W&ur@uYO$Zku6%@^y+~hCD8e?Cb+a(8mU0{lsqym1OT|)O8`N8*W0n-xMK40T z822dm(uw|*vbw`6fd^afiwK~CI6X$CIGeICD>TJj7dcti&&j6y>K`g*vh02bcWg*g z=3rIl2gr9h>zwq(cI=zppDT#?W}8eVXdu2oP3;J>q@k8}SuE|rmkvg4lG?Z39RY9=fzuk?Esj0O>+P2KFFIs5D8f=YEgMW2K$tt;g z^1h(*^cPfS*EkJxIaqQTb45zM{${bNx8{~Zd1qVo)oV#lGV}OVNXTm_DTZ1@1G^u1 zNZ04$E<3%&bw1s9pIE#%p+@wsybuWI_Jn*(4N+9bKQh_hh z7;QUo<6_BUxYjL#>_{u6^(?S#}aRYHiw(eQdDGP+I^N}Srn_Vqv4b;jCZ!G^xguvWMqFHTXVoH zAX#W2GQs+)zC+aG=TZ0|kstV;a=$Zgkv-~v4r`y)A~!Mewb$7#F(&UOs;XcRkI-lC z(NKEI$uWs^04qD1A2r808t^?GWrh)UNS~y}7>@L>$j|qRCXAI_sBTUOT)kbTBrTR* z|6*+B3^S3m#Yzy{?}bywUD-@M^fXv%5TJ~uG0GpZh)4#etiv81NnYXA4-I|c=UWQn ztC1@CF8bF67%jWqy6e7tq2Z*QY@$rT*4V~A{P|npx%2qaVLVk5k0yR=sb)Eik-f7Q zPWHzGdwXNcxOgc}xyGK4#3GE?1f>soICQfR!@a^ZA5fXhH6yyf+L^mBSv)Ac?6=xgqZ9Vuf4gPoGE;14a&Fz zn}DJH`NcCQxrfRAP;zslLInhgSD~}w&pNmseOduw&Tcl!GBrpU=yb?(hFYN)o!nrZ zCD#nMibu*47faFiK3>uo{8)DDwzZI#H5IsHTc!QX7hSX1&gkcuOF%aRo!nsoMt~rB z^;WfQ{ypEQs+d{1P-o{-XuN~MSVPei0dJw3CijV*^R-@L~o$<|~H zIe>}9`x-TBk3>v;tB9B)3@p9H%g?&u!JgH`?GQU-9ejqlDxrS~|1B;9Gv$`fkqz-2 zu?`90<{p_@eeSKv&9_^zpmW zUaQnMkOEaBa?&lcSuXuF_WZsv)>q{!-zV=Cn4Q)(+J6@+{bEigf6`ug{dF9au>oWB|(kox; zT3oJFy{!HQsYz)bz1o&*&S|e}-_rDGk(Ac1xn5pVb}O{@DRq7S(QN(}ZoKN1&kEzg z%J$Q5zl}KY@NIu!HcxWfk#6PcfBf@_>+GQ2p?R#Y*DV&Q#OW#udsvKun-;gHbMKz3_myZ^D2% zY39JI4ykXlgWP@BR*B`{DZ=hus9tgYUh_JEm1!G*?GMP5dgOD7xF_AszaL^)Ih8(;;ZGB35y#R8lfJOaUi3Yo391>j^x&>P*Rb#@W zXmv3TJHlL+RQk(mGw2W^?lKa?N6`-w*HiOqqmIKByniT~H1xvLuyBEup6?O7EOR13 zhXZhqJnOQ!HvipP?D+!!m#ZLFN9Q>8TUOO-Fcjj{nVjt%@0l%tMva;7BJ)cVRTQy98M9B4ORkM|VuU*{CKoEg3JIt80fSM8%QrBmq%51~lIUP~*# zYfm?7ebc(+5H}JRT?gw+%H4^&S0 zJ6ZPjaTXSryc(XO`zXD>Jc~g%Er3i|FnN-$Ifv1#Oz*=gO}UpLTE51HS4;XQmxbon zOLwLRomQo-bL(iU)xg)ZJnPF@1PWE(JF0^PU2;GQrF?qii|iQvS&Wm-z;1N}_o~qm zH$9k7g49dE4?5RV`~57=#}LUe*iqA=;yj^e`B#1(>n~$4BV+ZjPwh@U<~P{Xg6&i5 zczHy4IxHM(uP}wl5A4?ftP5@S-8AsiZAf$#G9dAV3~JPumR?T zCia0~7+WVg3pU2skls0FnW*>z*4$(rHG5d>Igxm$62_~+U~~;9Afaq#tz{fCY+=aD zCQ+`m*dnDLirYMNaeUuv;-(+F|0zRRuhCR@3zNelP!9|E8nj{pleI~1E6$P%zr=`pU(*DLh_71 z3T_Vl;2O7lX`nN+3Hh+S3mUn@BTAP{x#qFEDcb2`OptF8m!WtG-F&EKaxe&V*JIy1 zD}@7Noi%xBpRS(mj2#g5S0fDN@2<3oC2y8qc!UnC2dWXa{uxJfSc&g%x|!Lt2vVmz zN_fFSxS0ZlNl`-78mG@>-0(|8cqX{L!voWtgBz|jWW5#RvV4L4{F<^x=A3q#lXgX| z5dO8^c$aDl(A@Ke{qJ3j=00IMFD*J!jkqr1E+P|J3^!*#KivKvH~=4ySle3jsgXyq zfjcx&UJml^uR150iId%bFvOhDLkl1|%})`;ytfil>n2nC$M=;Cdf>=}=UF~F{n-0~ z`57}Qv&&6Wd0XBKAP*7A6;+7$apYp@QEHI#S#=vY+F|U|p!(*1l5YCC;oB(qzSa0emjo`aY>e@2HvU!tS0+gs^Y&27 zD`BVcE~jP^gwH!`aY_T7tuF9E`pXA2#-7byRv=GWg3W%Sov{f@BhdA!m%gz9)N$T0 zap%~Gau`)w*G&=&N-OAwlK~v%dHi#IGnF{^vHkU7xPY9@3!|fnRS>pPgxO6?OWH3G zaMvZ(H6l49G|Eth%j<)V@!qyc^NyS&l57F*gW@bhAE1eeT}Q4jk45JM-t*^|EzIhj zJ=hlBxi{4pB)OX_E!)f%@pFdw0wn`h(`BKG!x&wA+Q%Vd`y?-UMoOus|LH>PBUDPq zC#ccVI&L_}Iq;ffU9E0%z7d}v%w7g*B9}D&+)9HpH-74{;4DB00YL1s_C=7PS=&V) zF^!S5XX{RswA(Bp&K663nAseN(zcS$J1>K~M$3~$H8n?dYwz^c0T0`E71Y%d(IK5n zI)q&JSuub1Rd0&iOQZH9Kb-Hzs_eaQSXoYwLqw7}D!DY_0?aJ?(7h)T53&~+z+#9_g7aT+ z`JxZeXS(4*S-KR>ozw{r(`&a(qYvLwPTi$o5^%r0qm`eJ>09?aPvUVUFTq+MpgEde z;?a>Oqk<<##%uSsSJ!Lb3k95&yAIR{7B-W;AMzy^Ab}m60YypUep6%`=AObYEaS0z zq075)Ss#}a$`qSUqg&w8K_QXUEI*~M(<32-f}o4*W!OEnN)wGh(hc$Ca>ZXdsV2g3 zI2=TASqP~&2=O1uY+kAwSV@|SD!;<5eHRh+UbV_~6krmZ{etQYey$LrOIY3Xy)-fi zkB4_@_gukzJ7C1bC03tZ%EQBe(OKDHGfJr}M@crv38hnKD4&{T-A9V9WyRO$U9#18 zJsIw1K#g_WC?Cz*g>GRPYL2+&~rU%sPzimJLDg6$@=VY@% zLcCIrY*;LXai-dfP)Le=2RQa#XJ;uU4$<8(DrmGw5By;toH;Xv1zFK9%f2WSyH}dV zQZ@0Rd4_@BA72xeTEoQC7v|aJojhl~ea?75BSEk6um-ZNlLx_!qoE(FHnMQb<=nm> z;(k84w*L70C;aBY-lGPGWQfVs!CFoEL%)`QG5Fyj;x)yJgiCaa662ZWG8(k*sWqDJ#S$mVZK(iP6pv<8~JtGVtwN?1??rqIFG!t)+=!= zJbm%rJ~j$d;K4cTm_av_-Ztt>=7@1j`-3i&pySG`u;G4=wVEpZFpJThUb9mx-F;@ zJ2TCk7yiXDB5er%Dy4;c0dyCMqkk^6(C;zK9n&#dyd)Z>uHH8@oHUiUpg>-dQpE;~ zadb!%$C?c-bx|dGC9qhFF4*!2#A`f72wv!}e#hBmBU9s6_$1FpIP7c4)$-3q^Aj%x zz7qJpV;7pY_{hj+kqH%yGwU@6x!VMYdcuNOqeOmEB7P>-J&Z6Dl}))F;z#ju-`BJj zJIp1k|6pUfjoGhsCoWg{XeY60h37(-<=9V|@!yeXk6O=MUA32IUJ6im@Nu=b@Pm5jb0ep*kMz&=^NWXY3Shpggh zY*7OvhJL1hjG(3_KTS=h;a1-p6o2*o!i^g6!B5XOR!;m(o-e|B4~tJVCvW-2x=3o= zy2b770q0fhXBI05SkM+5v>FV#{5a3YsHl>XUHp z{1Rxfvw){r1+DD1qB#;klSbDO*-SGN72nWntB7CRlu4o$GBN#L@=dnua8hY$5Qz(J zSaO{=o=b5_*f(u5h9>S*)0CNs|1>LkI9zhsW2y9sJ&OQQ4UsACx8TB=J_+Gol(lBfyW2Dm&iiJk*6K%*>5j&tL}Y2(ivf}HZg}VFMU=wn=F+q~PJ?B8L6Cv8 zMw%?NL-|x>TjV%RCvdmf>L8 zp8eq|y}C2~cQUowm0#cFagJSOPS|mb#jZbBF4!%@Hap3N zDWN;uUB4Fb#HbO*2x`5z32)@#YOmcA29IAT5U-a}SHIDpaMM4G^k5b6{(u}A+2U(5 z?nLgZbnml^Pbi-#{Y4k4ua4UX^0;peUhPz;A>}a5n=v8JtanYyip!`maX2xHGw9hY zm9lOo#a)rB;Jb$jJebW&PIjGDFX3np83eoOYb;g8$2Qz5Y0f>-O3DRYmR*n@3peyD zFi@A=?1P&pCNuVs(|4Mm$3YTdF-{9+ULL;s*0HbGS7qjZ%c0Ftu;gn8VH2Kj&E%nE{(`~Q&i>18AU_v#ki@v&->Co>ZlOC@HZa23+ znWN?!VG?Snm$lXsi8$)wIp$qnJKU_f`mjjKXxDNitLI)9JKGAnbIic5`Y@1Y4`w4f zpx3!VgEw6c_hKrcAoii=OpXrI#m2-2-B_vz>|wY>b_i;sFtAV6LcYCob+LQ)p<&$Y zj@#Q5>BF(y$dB)$PBr?n0^0u?*co@0K!vNf%=BEG*HC%K8aX0bbaYSQtp%_8_lEo@{cbvy51}B z9mqs{AF{nCgTxW@m^qwm+dNx#r(C9z=?@O8=glPVy-*@#gVjclWEWu8AOAcH;IpE1 z+zG%3GP0}PDAAq~uDeNH{5eCCZjZjlVSMzzY-ZTbqTQuMpg1ot;iA_1>JN{c4wjAm z7=%`Ldu*t>=B4!lSY|h!f7B;Q+?V?pVqUyfUoz+I-Rk=|M*4XA34Wr%*-!kw_2x#z z*MN=noi7~wGa0Ly%9y;s_KbWQ(Vn^0zFwAFxWt(@ht_#?zY%VCvISCKqPpx0+mS~x zxTY3MP0TSM>=1ZR{HrQ#!nI?;M$S%;*zWK z>SzDhl%>+I8oqg!>=X8C4@MKe0>4jx)>jkJXc5sjXhWb;GO99MbgJS-Wxj;w=nzyx zM`vDW+R9gBg?y-b-)97NT9#Ev*OMM4v|-t0s*#po+*%1-! zphdkM@0Int0vhr7@lH{fkhDdxG8L+vC-3p-?P4jP&S|&~l~Nbjq0?Ma%~zneQ(G_D z%GR0wV>Cp~cgxWup;QRQA5$WGo@`mPP_(Vji?!W>q59;|Fr}^idfhE@ph@1Ij#j_*Tmt$ z@MJ?lhY*o5OY}W%DvStdihjJ?7fp=82gReIHqMZ%eL_MOV{`ng{s3oDDb-f>aH(K* zL+JV?GQsi11yBz>NL(qe%?^4ZP0*ht*!F4q`JeBJH}H#h->v-#r6_gN?s*QZRoajoSnMlltJKcP#n+t z&b%Wj2HC^!OOhfm`?VBjeO;s?qjLzGGG_d}t|vkhs*Gnd6B<5g&(L{LUD!!caIvmIAFaFA$3aKj zQoczq(K_#spX)-2PDCcZ1|Z`s5&XtRB?TD(+ZaxeCba-9c0bX7?3{45nz-FzO4XyD z4N7k0i(cCmU^^iXtJ*}@$gsP#Cp!}Phm6tKtfY@Wb{8J&tMvH5@ssbn=7sm=tCD`t z3nYKHG_EUS>jIO{t>^N!&D;#U43R`8)UsTzt?yk4m{QrdZ9u}_N6ZaU33*?q7rzq^x>di$ zQ0tn2_Sp4VE6!fkvJhla0%$zOljS;P7OVDx&vM)QCX(b_-W9V~h(JHAjdaKwski~5_pXiHb;X4+0oSi+#WL40qrd%QrZ!`{B<8kqQx}i>|GvYem zy3B|>(-l!#fNoP6nB~wn4o{IhOfRflx~0t_tb=zsSA$R(>sO7#e5tDh`r(QJiGkYj zcZ#7aunWd$J;t<@9o3KA=pU11hR>Ql*1mHPT78(TqNc~#aDzJ>#o?xztWvrq_5Cpo zE-klGk^6z6o+F~Z0ArNIltZm*C^02f+Tat%3f4&qzI7 z>n5lF_xmv!=#P~Hl5e0YHPJ~{t=GJsZv|7hmRn6w_o7!yr5(uxGjxLz>k^jRw~F;s zqQfl*DYqV9SS+mz9R4h8sS;X#esffF9FnI*V1P@zCbV>%oZljkV_x*kT{dH7la^0+ zIk&8p_qrJS%oLg(p8Tu{=(w(DBjH}Qd=(B0wvIUtcweLTY(^K^g;F-d>Z_daMROGC z%T>R3=2rNJc9BB<4g9-wj3rjzzhSnqP zbTq|LHW_l`i_2SDm)n|V&EMbEi;pc5NrtH16K+eVi~S-P%;`DYrM@`?pSmCW4U4bZ z->;^)y9lS0>1%;Tb-hx7Bx&6}fbnX_BD8ADI&QZ}y{)xQRBqaIPXLX)l~hzJ=uYND z1P1GOspF&04=`zT%tM_=PW8d|4h{~Eed-h}L#B%9T9qyxsQ!;2i z+2zAr&wDob&F%ewUifdQyIjyssqu~n%lf1%31pKqWPe;L*}=5ob9tD_}Oje`aN)^hA}0L!;O%+{mk-SEQ>LSAX`O+qg_BR|(W;HmvAr zuRcd682f#nrH_Fv74zuIL5Lm}E@-NR&3ch}ePQT28JQW>*cjNVuPjj+qMH;{l9Q|K z_5?%JzFDSSi*NxraWb-3f#XK&OV;0@m&|N}zSAdw3e1eJdY7Nhzh7S>{}6HZQjBA= zRRz5YntqXRb&{rww1}=yzIAfG@ulNeVA_2%7R?`3(`I_jPRX@xR-uM9H8n~#UuaTT z?Z|;fdiG5h7;q{p(cP_&PL8I%bW{XR54fpE43C-#1^d~qEL?Z9x=J0BgABze@2Cog zaL$tM;j8*jr*%NTlZp7``MZ2N2?G%Td4Br*;st=(3(p ztovWfe=p*f`VW3_CxCK)Cj42%e=h%DoA=k|`M1seT^)UTH1*^(b*izsB;xiPipISN z!X9IF=z`k1%tWl`R^}Q{AH-RdEj2m%7#9|_AhQSphXG7Fu+1X}5Uzj}NJInDX&8w5 zl?F(WP}vj7?C>-L5I%`Yb3S=<5hRz6y?VmO>-wE$0K&3B)B@8<+OLuT2{e%Wmx?%> z|E%aF`9IO4)8xPF5q4VX|Evd)_TTkL#|}lDnAn+ueFtcEs`Z}+|D!PHzZmsP&#ORF zotpTkQ9uivv|b0*Rykwnd5w2S{gCpyloWrUUR zSXQ-;bUR$X++G18o<16lsV*02%V&CD*Js!v8LgXMGMdw-rm9@=Im$jgPD0X9cf4+B z!8N?%GnY2D^M>wV>RxkjMRc?&Y$gbAYbtbdD&s(GK9u2+;7Un&g8C+$$ z=W%b`&uyg3vL@=@=yz|+DV5bb+7R9Y<6uhl`rW1if_n1K(y>ZRoNbVvq}jJF>FT+4 zw5m7!>mS#^6o>XdWLqNQIB|HNg16h-s0w1^^4f!b3Ha`&I#Zloj+c`u-^kTP(3Vwe zN`Hx8nR|oBy6a?-Ovi5jl#WctQPHHYQ=|1H$+qY26=^jAI=Z9D#EcE8_XYXk2X$2| z2cr8@#mN>WT9Hu37--4S!uSP`mg!=ZMteB7in_A67wa6b`ZxT54OAA~Keqj`zKr`q zDCKwAYmJ`PTN<#N>`WS%ni8tr^m=hmf)V{A`*JRHB%0o*sB~9}+gX zX5U`MZ#^P=MJ8j`WGbLOxq>_MEwth3VkxKA;BlOT2B+hi)^K?K8p`Vg+<1y}pjCY+sJ@7l@GOzj_(be`cMuEhG7&AvG0Dc&1$P z^&SkV9E=(`zJ2UI>d)A5c(^wu>=^f>YDpj&I2iSF9tS@J7HF>fdRk|C;he=ee2KM{ zV8!uoP2WgyudymBm^f6JN?R3+73xMM!P>vaWI|=R)Rh(39KA6Tdz}U6n%&+4t&XC( z>#bh2*V{FCUJo5?w4bcQd0;%L(gO7&qTKxWMm;*>p!>@17KSQI7X*&B>g^>%^+YC( zBVwzLquc9`rW@U;qI==uV3c;LN)5`Yax8A}MdfBcR=s_WGfZKz4G{~qsqW{L5qruv z?#CJ15rky$#Frl9e0C75rQd>TqY)7MMbKn`!~CJW_OPAU z0By2&VkAh@7A?Vac$PReE^Ckji=Es#xw&+Rh_GcctIQO6HkMYS=2QN>CvU8i)5xt z=5|TYeNuh~WYeR^ZBq!%X&V)Y=m}PQimO+?>XJYNnq;3?p1RcNX1r&-YB9d;Jvtq7 zyrW)!(BkL$6#Qx3&S$aJFR{WM^T9;I@1RxS*p?+Iiq30sm9uW=*ypQbg!od66e$sZ zM2Z{sk$?6fqlR_7+i0-_^U)dYbrU*Lu>AiZ%`v2g$=L*qY9yq$;$m zmkMn5)gf_*IS{eC1SupdKk3ovAI_19b=9A#%Axy5^?r+@NgPOhmBZS0x6JmPxZ`~r zfNByiD&2YrhZAKz57(Au!n=Hm0+8D0%?+F(LqtAeD<&@1G`sO0NgDBzNwjt7U5yW#`~o*J{q=+>LcEn zI1@<(@ZFGrVIX!z?1rthb3r7uVPY8s7Y#4nGMzLYkaq45dn3Lp`0atz%F{Ju2H6Pg`@+5Lgt~*g`g#K=XCTf|ZRD+cTu$QC;#`JVFXFPrNCpxz8xg_X=QM}gp zO5yF1{sAaWgyCp(g2Q}~L-njl&tx7+l(7&CD3m4Zp|crsH)N`=H0k&T6G~glM*}Q_ zc&O@9>xB-sMEM*FOjTMNMR-NG?@p^58LY`e_87Q| zBjZPNEFvru?2)#8cqMlC5rf~=J+&&sZ48y|W)OX{rj+-y{>ELn5;{eFGw6F>*>l)N zZL>}F@x7!d($RR@e5YKUKvHt~^L+xiWtzGE=lMCCCU>4xLHBM$dA$VU{U%@bGe zPXHsMr)diqDiJe|!fkyage8@mBkVJ~^iiawY^y?Pn@`Z3j)-#T<~<(h0ez&i@I`Qk zD9vQ%5nUDVJ6^yIyy zWYp9uj_LQ5k^y*g@h+^BWX<|3+nRF+07J_?% zf)+Uascx23UZCz#?}Y=7jsoCD1OY1s8z52QPY%_bhEJkS(*TJLIGqDX&3o9B3@2eA zN@2bmkbrxTN@!LX9 zS=CSL?}L`IYI4;#YD^DK*%VFEo`rvIbBf4M63E2$b%jLt z!F|R$!XiYpM3z2R;pXz|*8Aa9y&6rAM&!_y?q(gDZOP0FAac+ZErDU#wrngYkV@6p zV({&Pq?U<~GIZRSP9eCBx4lOkiK`C`kwu7J5wU%ij_q#pQl`8=cU|AjwFYAicUSG5 zg=|~5U3r%FlO|5D8Z(-L)n0*C@kW#@-_W`_oSsz*<xF)2Kv`t#2Q20Z!@Jk+~!?Jc>aL3n{#rkA3 zMz&0>V0U{EjVUj$9ub0p3Nye;^#cV&BQ?T?806*`-=2E_veQsE%@?Njc zgIvAAnTnabf~NbJ2!7FFNZ1(=`CBNgkas0;s-a%T6)j<=WOQd42MvGH>z+`Qon1DV zGQ84XcHRsP-`uu)ENQgt=~r7`r&00LI}%!=msm#{4i-*2JdC6e=!Me31TBI=GQ_8N2_6-ERe!g3M0pif}u2N5O%h6srLIr&@Q9_s^W(01L z_LcX@PtD*eaNTO&VQ6Wsu;1oU)7R4OLMH#DDMg_V&O@-!SMnI3|)H8@)c_6lt+*b zc-=dR^?6X|b|8~3tLA8e?1r+PfSlxWGhh~zT>_zZ9}W0MYpzH}C=Gp9Dw-;PQxJ1w zN2nw|EEtI!atY5?Lu0RK&lAXLZ4i2|pn9l*aeY`pLBBN*H@Avk-_6%q*cmcsXL}1i z)ZEILR6X^#Wy|DPCF5RrRyVYyqu%(M8#19`7d|Bpb2kb`v_i5?KOerHeR{IgZ53f{ zH&+M8C3Y-}1_sPQL(Rj`n4$CC|14 z{f;XB=B|d@J67hsoZsAZV>BC@<-iDXu%b?u6Zl6FpGi@LO|?PB2PocqYg)FfysRuO zXRKS(qrSK_mE?HUg<&2|;V9UV*w(uU(tLoX9hY<~XfcWRN)C$C7%7tl%d16cyvuWR z*JM_|A_4mj6ixx`=>)*yRzc#>WB2=y4J=^!TN!&x<}G?VeADn`qnYa>n%ZdE6%Ui~ z#MBam#^x>R1$#0wx<@C!3sBGYvt(Jd)(Nb}7nY>Z#C!RN4rTTISI@7EYwAgO1nndF*TNx_`g3PAU(*f?FSg$1GmZ&foj~mCBE` zGep>|_al|RfEj>u$glEHvLxIr_OVck_CAlhzD^=xC4b)R$^P@pqMgcJ;CwF9>~{L#x=;cqNn1 zuv#B{7NMB#9bZ=VRNgfBrhv-kj=)%ONRv;*+UM0ACLOvh5e)b&32 z;d!-hOLsMx0&a2CGNtr#Sso&`;;V5TKE6I(XV>@OWs8u}E+ZASK_`?=r+Ndx3oQ7M z;E!yD#S{jWG)Qp=F2ng;l-pefnLo;mo~n6q3fS63AL<)nZE6Bdi&mLYNJavqvW`|vh@%6>s zbNlUdMZO&K-(d~FTK!_Y7C@e%|2_E^%lH415c{v>;@{!bKk0D_+WrN(c=FZ$71jL- zAODGYJK-MxMj-wxV(x#Z$0<1dlOX&%$^|sP-wjq95|ESAeB-pl&bGn&I_PoqI_Lx^ znn{MO1C8AbK+S?F_mHz#U z&3~!uR}cQlGyj#}{nfjF1Ne*{?Zm+@Cf)Lx4!Swzx^hohgNI>yDZoc#b#g2Ct7O<$ zIW$)h7Mz&KKvV;6r=($~*>&>wtYDrLsDLx@v~u}0IDBj8-P|ACl@kU|4@tMu+I|aj z^A+cm-jY>jKVce~x;rflHDsO9_`~K*ue+5JapzV?H`lCW;gLI54?SK-B7%P4OW&Rq zIM|}o81>m~Kbzt5>&i61h%$X-Ng7l@b7f({Wp_E0N^~F@R${Xu92u27j5$tfOA{#qZvHSAGdSHNg%eZ!pHfmGj>q6qj5GjVO)nC4 zYrz!`j_VU~IC~z#wwS@#aVz6Dlxu^wj}Lmd>Vb2s*s6r&UUTyFCFmR_H0QKRX((6*2dp!>-2X6$E4H5a{=p8m}y&BQ&A$PIAb;7)~6fjx^o ziga5_i?>t_nGhm2pjvjY_y@G%LCF*1``R)Ca7UItSL{&ft|g_p>mRw zd~u4sPBOIhqgP#uYBI|uxt#LWwvI<#qMnLq4mn251`Z;=d%Td6TkH8lEHAsf=z&R# zRQXNvaO2qAMBZgwzN+B8Y^)~?Z{u4502R!$v8$yhi>z8LT_^Q<&*Lz&M@c?@e8M46 z=QYQ@)%l@-phW=h3Quv!l<=G&$nEZ`sJ&MX^9EYM(;K)OdG6DJF2}cd{qAYoR2n<) zynKfcW@j!`21dJO!HPby8Mp8;U0@8HhyG_s`PNPJg)Oz6z+u(s{UswWe48qJ;`JEG zi0`u$u~09QIQ^bY2m1GPm#WL7*rP>~2D0j4F7-=K^`5vTi2AK&HcmI?Zx7nwA^wa_ zbc>+GvPGL@l=$@UPnO{|V7dDvE3@vAWZClEWek)j^lF5=Hy#;BTowt8!mcQ%IXG+4 zQa+vcr0Rt)KTfrhMTCi8jIAH3#eNidVRwVdXB1|d4KdlxVhbD}nLBywF}}1s$0j%M zp&hR#aCWfjV}nUfLxXm~CE5$vM-5KVF24Gh>@*#v_9~WUGqheh)^@;xm&P{??Hiq6 zFsg<&xs6Z3YV!Ddxe~tD-n?NdBe+peser#{Ff$V)cFR*>UhJEc^8yG!o+bYS@qcF4yLeQjZe&2Rh1@-c{bo@E?=7vRdMYv`lLq&Gr>g*hZyJW`4?pKUcO zRAQxTS-tgg&{)AWh?=xa$NgsR)a^^#HP;Qz@`^S0ud`QLW?tN`K@FaQ!N5K^<>%?x z%Wcb5b~(j-ByO9>SLo1wl35mJso%ha9!$;+U3S7W=+Npwsop>)@5wAO+6?y1)N#DCXy7e`D+#nW;HkoiscxQzDXqu~%l<6lQ;IKbw zY#D4>a9Gw2&mxF9^4Y2a;{f;_p$eB>=+@{(!$EgDV($n zcg-11O$F3(X_9gYmk1TNv`BGEE47qKM^gmMNHG;n5cg~fYuqi#4NP-QBt$b!a+@DE zo%8I?d*{u0=l#Vwm+$ZLyW9)+dq2P5@5|TGI{iDE?vktaQ{}k&I|ua$nzZu6mbgGsHWrdZ^H zp&TFFD#FAtjFp1&h+>=UJ1wi?vbUMT?Fi#HJ8TOjt$l2-K&R_F+cD@KLyZ`BI`)vH zI&`dbXPR`J@=H~ zuZZmbBvlkEB0#WDA?pJteF9nki&U-FqrVU{DMkHT#ahKw9~DcgZJS8nw6^Oxh|5*(0GM~)o!R&b2hp*}gMGK9HKKS;e2SAR}rcSx`Ls@_WJ zaK-;VqT1i>&j0IcS%rHaKofMeL^ED`q^luu#Y!!}VXRz1pIYgMGh_h_5;)|a=j)SW z{`9jxIHXiBS19!(p8g4%tISrNSh*C^OZBnqi}a!nV+-`jl83kcTX|el?&y*32)Oa( zi6>tmXhK>dX&rPRdpOw~v5~(4B$jDUK>E`J63S4SM%C*@#BjY|`;{P#`!+$)sO)xQ zL?{^1UVN++;bH7hREp&KTy2rhI1qd#W|}k28-uMq>qajd9!{#O2gMtV-xQ3&GS_-6 zz~84XNvO8KgpQ#D>uMX?ju^ccKhrIcxSS;`=_g)9@k*Jbe-VtsqBE;+!Hk=zWF2e8v%bZ!HsDBXL^fIm&o|U z+??It&gd`ieA`|0pznrNJ5p`)w7+YlzgLu{SEo2vW~1e0pRke_fXuS?FX9;rp39XI zK8lTyt0JL-QAW4AQQUj~;C6n|^py6#uJ~OqhC4voBh-+oF4I($Z4{JtTD#;#Xf{D%TL2|pD&fkq%Qx6f z2u_F}1jFlD;$k1)XBhdz$mPZDe1(JHS;613)F6Gf9m!wAOG%~-uHhxf4uspiHs94; z7M+YedH7pG!Y={1SGr6A=(-xiknOs+#6Ag-QnQP7-Gy+E&4EH@=X$R)o!sYD3yj6V zdOlrw+mD=`B(Yz~*O`B?GTc>~#oYoG=|!`HSd_9;e;T&-?UwQf}W;@5LE-7`!0 zfGBzpZEnT?qC_l3Ka=@+byasTPWH4VPBGu#cg~b=+9RZCm?^T6{;W*RI`obqm)VgQ z;vepCgFK5THs$+s`a<}oQm-9ngPZN1-q!y85MhNdH|qSm3ksWiFz+vYp;{i;T_F*5 z6~N1b;vSudiF@5yc)&4a#{S-yuff$Ahl zC*?$yLxt+Qn$rkx1X87pC`Rq`=JWC*gX;=)1d7>>u6sJVm9->RfKI#4mZ?H(xTSt% zKgHwBlBapi5=g;Dtx`})A!_8|?vb-@IW5e_CrLZUOXXwS$@L|U#kEYV(n`1qZ=u%Ga{(hMYCuWC!F(g9A??7ekvn@wpuI=h5daFbV8nf+|cQ$ zmQySjjO;@$CgkVJN_|!uGW6X9wf`Spvn+eNJKErBByuDJEMRi>>BnOHVP_^5C%Y;K zy?1HqRK+6abFlQ(SX0hQCaDDCfSZQVb1S*sz0OXX%H7D{dB1Z(+aty`x{#U)1fUJF z%xSKyVJ5xdu3j6_X`0wrGwXvI-B4ZD6slCU#5il#%W&2|K-Gg7i)L?lz{v*(B=s_> zx~aGI^%^O&0=a=EH&bxY=bgzhs2)l(mXFv%rR=NgZp`e28sl4Mf6SoHPn)IVvJ5*Slu363efZD=5 zBzJQ@IVr^7?x*i2cv{Ey(Ye>z9T5c(q1;K)jsV?_u$+hjYzsL{57at)|H<>u7?p{OS9jfk2s5iQKB53d6FJVQbncbL(I~HnLJxgNEA&%=r zN}7p6f!E4ar}plrdv>6OD)xa%GAT3k_*rk(hZdR0fvhncZ)l$5)cT$;&@Ioz$DDH~v~}4R zAo>Rgvu_F%BD_A-h^M6DMK0hmK5+0>|BTFG4V=yLjEG4h6`pgu59l3_7 QDV^MEV~IRcWbS$C5A6G3jsO4v literal 0 HcmV?d00001 diff --git a/backend/main.py b/backend/main.py index 63513fc..fa5e6a1 100644 --- a/backend/main.py +++ b/backend/main.py @@ -569,6 +569,10 @@ class QuickEditRequest(BaseModel): field: str value: str + +class FacilityVisibilityRequest(BaseModel): + is_published: bool + class GreenfeeApproval(BaseModel): facility_id: int greenfee: List[dict] @@ -893,6 +897,24 @@ def parse_optional_datetime(value: str | None) -> datetime | None: raise HTTPException(status_code=400, detail=f"Ugyldig datoformat: {value}") from exc +def parse_optional_int(value: Any) -> int | None: + if value is None: + return None + if isinstance(value, bool): + return int(value) + if isinstance(value, int): + return value + + trimmed = str(value).strip() + if not trimmed: + return None + + try: + return int(float(trimmed.replace(",", "."))) + except ValueError: + return None + + def sanitize_hero_images(value: Any) -> list[dict[str, str]]: if not isinstance(value, list): return [] @@ -1318,6 +1340,7 @@ async def ensure_facility_columns(conn): """Legger til nye facility-kolonner ved behov.""" await conn.execute(""" ALTER TABLE facilities + ADD COLUMN IF NOT EXISTS is_published BOOLEAN NOT NULL DEFAULT TRUE, ADD COLUMN IF NOT EXISTS footnote_updated_at TIMESTAMPTZ, ADD COLUMN IF NOT EXISTS golfamore_url TEXT, ADD COLUMN IF NOT EXISTS golfpakker_url TEXT, @@ -2113,7 +2136,8 @@ async def get_facilities(): ORDER BY day_offset ASC ) w_data ) as weather_forecast - FROM facilities f + FROM facilities f + WHERE COALESCE(f.is_published, TRUE) = TRUE ORDER BY f.name ASC """) return [format_row(row) for row in rows] @@ -2154,7 +2178,9 @@ async def get_facility(slug: str): ORDER BY day_offset ASC ) w_data ) as weather_forecast - FROM facilities f WHERE f.slug = $1 + FROM facilities f + WHERE f.slug = $1 + AND COALESCE(f.is_published, TRUE) = TRUE """, slug) if not row: @@ -2163,6 +2189,88 @@ async def get_facility(slug: str): return format_row(row) +@app.get("/api/admin/facilities") +async def get_admin_facilities(): + """Henter alle golfanlegg for admin, også upubliserte.""" + async with app.state.pool.acquire() as conn: + rows = await conn.fetch(""" + SELECT f.*, ( + SELECT jsonb_agg(cs) FROM ( + SELECT id, name, status FROM courses + WHERE facility_id = f.id AND status != 'finnes_ingen_bane_to' + ORDER BY is_main_course DESC, id ASC + ) cs + ) as course_statuses, ( + SELECT jsonb_agg(w_data ORDER BY w_data.day_offset ASC) FROM ( + SELECT + forecast_date, + day_offset, + dry_all_day, + dry_daylight, + precip_mm, + precip_probability_max, + daylight_precip_mm, + daylight_precip_probability_max, + confidence, + source_updated_at, + source_expires_at, + calculated_at + FROM facility_weather_forecast + WHERE facility_id = f.id + ORDER BY day_offset ASC + ) w_data + ) as weather_forecast + FROM facilities f + ORDER BY f.name ASC + """) + return [format_row(row) for row in rows] + + +@app.get("/api/admin/facilities/{slug}") +async def get_admin_facility(slug: str): + """Henter full anleggsdetalj for admin, også når anlegget er upublisert.""" + async with app.state.pool.acquire() as conn: + row = await conn.fetchrow(""" + SELECT f.*, ( + SELECT jsonb_agg(c_data) FROM ( + SELECT c.*, ( + SELECT jsonb_agg(h_data ORDER BY h_data.hole_number ASC) + FROM (SELECT * FROM holes WHERE course_id = c.id) h_data + ) as holes + FROM courses c + WHERE c.facility_id = f.id + ORDER BY c.is_main_course DESC, c.id ASC + ) c_data + ) as courses, ( + SELECT jsonb_agg(w_data ORDER BY w_data.day_offset ASC) FROM ( + SELECT + forecast_date, + day_offset, + dry_all_day, + dry_daylight, + precip_mm, + precip_probability_max, + daylight_precip_mm, + daylight_precip_probability_max, + confidence, + source_updated_at, + source_expires_at, + calculated_at + FROM facility_weather_forecast + WHERE facility_id = f.id + ORDER BY day_offset ASC + ) w_data + ) as weather_forecast + FROM facilities f + WHERE f.slug = $1 + """, slug) + + if not row: + raise HTTPException(status_code=404, detail="Golfanlegget ble ikke funnet") + + return format_row(row) + + @app.get("/api/course-visits") async def get_course_visits(): """Henter publiserte Banebesøk-artikler.""" @@ -2608,7 +2716,7 @@ async def update_facility_full(facility_id: int, request: Request): 'guest_requirements', 'scrape_method', 'scrape_status_url', 'social_links', 'footnote', 'cooperating_clubs', 'membership_draft', 'membership_updated_at', 'greenfee_url', 'golfpakker_url', 'greenfee_draft', 'greenfee_updated_at', 'scrape_status_selector', - 'vtg_updated_at', 'vtg_draft', 'footnote_updated_at', + 'vtg_updated_at', 'vtg_draft', 'footnote_updated_at', 'is_published', 'golfpakker_draft', 'golfpakker_updated_at' ] @@ -2682,49 +2790,116 @@ async def update_facility_full(facility_id: int, request: Request): await conn.execute(query, *values) # 2. OPPDATER BANER (COURSES) OG HULL (HOLES) - courses = data.get('courses') or [] - for course in courses: - if not course: - continue - course_id = course.get('id') - if course_id: - # Rens datoformat for PostgreSQL (håndterer Next.js date input) + if 'courses' in data: + submitted_courses = [course for course in (data.get('courses') or []) if course] + normalized_courses: list[dict[str, Any]] = [] + + for index, course in enumerate(submitted_courses): + normalized_course = dict(course) + normalized_course['is_main_course'] = bool(course.get('is_main_course')) + normalized_courses.append(normalized_course) + + if normalized_courses: + if not any(course['is_main_course'] for course in normalized_courses): + normalized_courses[0]['is_main_course'] = True + else: + main_assigned = False + for course in normalized_courses: + if course['is_main_course'] and not main_assigned: + main_assigned = True + else: + course['is_main_course'] = False + + retained_course_ids: list[int] = [] + + for course in normalized_courses: + course_id = course.get('id') + holes = [hole for hole in (course.get('holes') or []) if hole] + hole_count = len(holes) or None + course_par = parse_optional_int(course.get('par')) + course_length_meters = parse_optional_int(course.get('length_meters')) + valid_until_str = course.get('slope_valid_until') - if valid_until_str == "" or valid_until_str is None: + if valid_until_str == "" or valid_until_str is None: valid_until = None else: - # Gjør om strengen til et ekte date-objekt for asyncpg try: - date_part = valid_until_str.split('T')[0] + date_part = str(valid_until_str).split('T')[0] valid_until = datetime.strptime(date_part, "%Y-%m-%d").date() except ValueError: valid_until = None - - await conn.execute(""" - UPDATE courses - SET name=$1, par=$2, length_meters=$3, architect=$4, - status=$5, is_main_course=$6, tee_boxes=$7::jsonb, - slope_valid_until=$8 - WHERE id=$9 AND facility_id=$10 - """, - course.get('name'), course.get('par'), course.get('length_meters'), - course.get('architect'), course.get('status'), course.get('is_main_course'), - json.dumps(course.get('tee_boxes') or {}), valid_until, course_id, facility_id) - - # 3. OPPDATER HULL PÅ BANEN (HOLES) - holes = course.get('holes') or [] + + tee_boxes_json = json.dumps(course.get('tee_boxes') or {}) + + if course_id: + await conn.execute(""" + UPDATE courses + SET name=$1, holes=$2, par=$3, length_meters=$4, architect=$5, + status=$6, is_main_course=$7, tee_boxes=$8::jsonb, + slope_valid_until=$9 + WHERE id=$10 AND facility_id=$11 + """, + course.get('name'), hole_count, course_par, course_length_meters, + course.get('architect'), course.get('status'), course.get('is_main_course'), + tee_boxes_json, valid_until, course_id, facility_id) + else: + course_id = await conn.fetchval(""" + INSERT INTO courses ( + facility_id, name, holes, par, length_meters, architect, + status, is_main_course, tee_boxes, slope_valid_until + ) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::jsonb, $10) + RETURNING id + """, + facility_id, course.get('name'), hole_count, course_par, course_length_meters, + course.get('architect'), course.get('status'), course.get('is_main_course'), + tee_boxes_json, valid_until) + + retained_course_ids.append(int(course_id)) + + retained_hole_ids: list[int] = [] for hole in holes: - if not hole: - continue hole_id = hole.get('id') + hole_number = parse_optional_int(hole.get('hole_number')) + hole_par = parse_optional_int(hole.get('par')) + hole_hcp_index = parse_optional_int(hole.get('hcp_index')) + lengths_json = json.dumps(hole.get('lengths') or {}) if hole_id: await conn.execute(""" UPDATE holes - SET par=$1, hcp_index=$2, lengths=$3::jsonb - WHERE id=$4 AND course_id=$5 - """, - hole.get('par'), hole.get('hcp_index'), - json.dumps(hole.get('lengths') or {}), hole_id, course_id) + SET hole_number=$1, par=$2, hcp_index=$3, lengths=$4::jsonb + WHERE id=$5 AND course_id=$6 + """, + hole_number, hole_par, hole_hcp_index, + lengths_json, hole_id, course_id) + else: + hole_id = await conn.fetchval(""" + INSERT INTO holes (course_id, hole_number, par, hcp_index, lengths) + VALUES ($1, $2, $3, $4, $5::jsonb) + RETURNING id + """, + course_id, hole_number, hole_par, hole_hcp_index, + lengths_json) + + retained_hole_ids.append(int(hole_id)) + + if retained_hole_ids: + await conn.execute( + "DELETE FROM holes WHERE course_id = $1 AND NOT (id = ANY($2::int[]))", + course_id, + retained_hole_ids, + ) + else: + await conn.execute("DELETE FROM holes WHERE course_id = $1", course_id) + + if retained_course_ids: + await conn.execute( + "DELETE FROM courses WHERE facility_id = $1 AND NOT (id = ANY($2::int[]))", + facility_id, + retained_course_ids, + ) + else: + await conn.execute("DELETE FROM courses WHERE facility_id = $1", facility_id) extra_paths = ["/golfbaner"] if changed_field_names & membership_fields: @@ -2737,6 +2912,30 @@ async def update_facility_full(facility_id: int, request: Request): ) return {"status": "success", "message": "Anlegg, baner og scorekort ble oppdatert."} + +@app.delete("/api/admin/facilities/{facility_id}") +async def delete_facility(facility_id: int): + """Sletter et anlegg permanent med tilhørende baner og hull.""" + async with app.state.pool.acquire() as conn: + deleted = await conn.fetchrow( + "DELETE FROM facilities WHERE id = $1 RETURNING slug, name", + facility_id, + ) + + if not deleted: + raise HTTPException(status_code=404, detail="Golfanlegget ble ikke funnet") + + deleted_slug = str(deleted["slug"] or "").strip() + schedule_indexnow_submission( + collect_facility_indexnow_urls([deleted_slug], extra_paths=["/golfbaner", "/medlemskap", "/vtg"]), + reason="facility delete", + ) + return { + "status": "success", + "message": f"{deleted['name']} ble slettet.", + "slug": deleted_slug, + } + # --- NYTT ADMIN ENDPOINT: KJØRER SKRAPEREN FOR VALGTE IDER --- @app.get("/api/admin/scrape-jobs") async def get_scrape_jobs(job_type: Optional[str] = Query(default=None), limit: int = Query(default=10, ge=1, le=50)): diff --git a/frontend/src/app/admin/artikler/page.tsx b/frontend/src/app/admin/artikler/page.tsx index c089cd8..3aaa6b6 100644 --- a/frontend/src/app/admin/artikler/page.tsx +++ b/frontend/src/app/admin/artikler/page.tsx @@ -191,7 +191,7 @@ export default function AdminArticlesPage() { }; const loadFacilities = async () => { - const response = await fetch(`${API_URL}/facilities`, { credentials: "include" }); + const response = await adminFetch(`${API_URL}/admin/facilities`, { credentials: "include" }); const data = await response.json(); const mapped = Array.isArray(data) ? data diff --git a/frontend/src/app/admin/page.tsx b/frontend/src/app/admin/page.tsx index b245c76..ffa80f7 100644 --- a/frontend/src/app/admin/page.tsx +++ b/frontend/src/app/admin/page.tsx @@ -336,7 +336,7 @@ export default function AdminDashboard() { const [dismissedLatestJobKeys, setDismissedLatestJobKeys] = useState>>({}); const fetchFacilities = () => { - fetch(`${API_URL}/facilities`) + adminFetch(`${API_URL}/admin/facilities`) .then(res => res.json()) .then(data => { setFacilities(Array.isArray(data) ? data : []); @@ -1813,6 +1813,11 @@ export default function AdminDashboard() {

{f.name}

ID {f.id} + {f.is_published === false && ( + + Skjult + + )} {isHighlighted && ( Trenger oppmerksomhet @@ -2163,7 +2168,14 @@ export default function AdminDashboard() { handleSelectOne(f.id, e.target.checked)} /> #{f.id} -
{f.name}
+
+
{f.name}
+ {f.is_published === false && ( + + Skjult + + )} +
{f.city}
diff --git a/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx b/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx index 549c3ae..268bf08 100644 --- a/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx +++ b/frontend/src/app/admin/rediger/[slug]/EditFacilityClient.tsx @@ -157,17 +157,21 @@ const ScorecardBuilder = ({ course, onChange }: { course: any, onChange: (c: any const herrer = course.tee_boxes?.herrer || []; const damer = course.tee_boxes?.damer || []; const initialTees = { herrer: {} as any, damer: {} as any }; - activeKeys.forEach((key, idx) => { - initialTees.herrer[key] = herrer[idx] || { navn_utslag: '', baneverdi: '', slopeverdi: '' }; - initialTees.damer[key] = damer[idx] || { navn_utslag_damer: '', baneverdi_damer: '', slopeverdi_damer: '' }; + const herrerAreCompact = herrer.length > 0 && herrer.length < ALL_KEYS.length; + const damerAreCompact = damer.length > 0 && damer.length < ALL_KEYS.length; + + ALL_KEYS.forEach((key, idx) => { + const activeIdx = activeKeys.indexOf(key); + initialTees.herrer[key] = (herrerAreCompact && activeIdx >= 0 ? herrer[activeIdx] : herrer[idx]) || { navn_utslag: '', baneverdi: '', slopeverdi: '' }; + initialTees.damer[key] = (damerAreCompact && activeIdx >= 0 ? damer[activeIdx] : damer[idx]) || { navn_utslag_damer: '', baneverdi_damer: '', slopeverdi_damer: '' }; }); return initialTees; }); const syncToParent = (newHoles: any[], newKeys: string[], newTees: any) => { const updatedTeeBoxes = { - herrer: newKeys.map(k => newTees.herrer[k] || {}), - damer: newKeys.map(k => newTees.damer[k] || {}) + herrer: ALL_KEYS.map(k => newTees.herrer[k] || {}), + damer: ALL_KEYS.map(k => newTees.damer[k] || {}) }; onChange({ ...course, @@ -401,9 +405,14 @@ const getMediaFieldLabel = (field: string) => { export default function EditFacilityClient({ initialData, allFacilities }: { initialData: any, allFacilities: any[] }) { const router = useRouter(); - const [formData, setFormData] = useState(initialData); + const [formData, setFormData] = useState({ + ...initialData, + is_published: initialData?.is_published !== false, + courses: Array.isArray(initialData?.courses) ? initialData.courses : [], + }); const [activeTab, setActiveTab] = useState('generelt'); const [saving, setSaving] = useState(false); + const [deletingFacility, setDeletingFacility] = useState(false); const [mediaFeedback, setMediaFeedback] = useState(""); const [uploadingTarget, setUploadingTarget] = useState(null); const mainImageInputRef = useRef(null); @@ -423,6 +432,60 @@ export default function EditFacilityClient({ initialData, allFacilities }: { ini setFormData((prev: any) => ({ ...prev, [field]: value })); }; + const updateCourses = (updater: (courses: any[]) => any[]) => { + const nextCourses = updater(Array.isArray(formData.courses) ? formData.courses : []); + handleChange('courses', nextCourses); + }; + + const createEmptyCourse = () => { + const existingCourses = Array.isArray(formData.courses) ? formData.courses : []; + return { + _clientId: `course-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`, + name: `Ny bane ${existingCourses.length + 1}`, + status: 'ukjent', + par: '', + length_meters: '', + architect: '', + is_main_course: existingCourses.length === 0, + slope_valid_until: '', + tee_boxes: { herrer: [], damer: [] }, + holes: Array.from({ length: 18 }, (_, index) => ({ + hole_number: index + 1, + par: '', + hcp_index: '', + lengths: {}, + })), + }; + }; + + const handleAddCourse = () => { + updateCourses((courses) => [...courses, createEmptyCourse()]); + }; + + const handleRemoveCourse = (index: number) => { + const courses = Array.isArray(formData.courses) ? formData.courses : []; + const course = courses[index]; + const confirmed = window.confirm(`Slette banen "${course?.name || 'uten navn'}"?`); + if (!confirmed) return; + + updateCourses((currentCourses) => { + const nextCourses = currentCourses.filter((_, courseIndex) => courseIndex !== index); + if (nextCourses.length > 0 && !nextCourses.some((entry) => entry?.is_main_course)) { + nextCourses[0] = { ...nextCourses[0], is_main_course: true }; + } + return nextCourses; + }); + }; + + const handleSetMainCourse = (index: number) => { + updateCourses((courses) => + courses.map((course, courseIndex) => ({ + ...course, + is_main_course: courseIndex === index, + })) + ); + }; + const galleryImages = normalizeStringList(formData.gallery); const setGalleryImages = (images: string[]) => { @@ -536,6 +599,30 @@ export default function EditFacilityClient({ initialData, allFacilities }: { ini setSaving(false); }; + const handleDeleteFacility = async () => { + const confirmed = window.confirm(`Slette anlegget "${initialData.name}" permanent? Dette fjerner også baner og hull.`); + if (!confirmed) return; + + setDeletingFacility(true); + try { + const response = await adminFetch(`/api/admin/facilities/${initialData.id}`, { + method: 'DELETE', + }); + + if (!response.ok) { + alert("Noe gikk galt under sletting."); + return; + } + + router.push('/admin'); + router.refresh(); + } catch { + alert("Nettverksfeil under sletting."); + } finally { + setDeletingFacility(false); + } + }; + const tabs = [ { id: 'generelt', label: 'Generelt' }, { id: 'lokasjon', label: 'Lokasjon & Kontakt' }, @@ -561,24 +648,43 @@ export default function EditFacilityClient({ initialData, allFacilities }: { ini ← Tilbake til oversikten

Rediger:{" "} - - {initialData.name} - + {formData.is_published ? ( + + {initialData.name} + + ) : ( + {initialData.name} + )}

+

+ + {formData.is_published ? 'Publisert' : 'Skjult fra offentligheten'} + + Slug: {initialData.slug} +

+
+
+ +
-
@@ -599,6 +705,24 @@ export default function EditFacilityClient({ initialData, allFacilities }: { ini
{activeTab === 'generelt' && (
+
+

Publisering

+
+
+

{formData.is_published ? 'Anlegget er publisert' : 'Anlegget er skjult'}

+

Skjulte anlegg forsvinner fra offentlige lister og anleggssiden, men forblir tilgjengelige i admin.

+
+ +
+
handleChange('name', e.target.value)} /> @@ -1008,35 +1132,60 @@ export default function EditFacilityClient({ initialData, allFacilities }: { ini {activeTab === 'baner' && (
-
-

Baner og Scorekort

-

Bruk det interaktive skjemaet under for å redigere lengder, par og utslag.

+
+
+

Baner og Scorekort

+

Bruk det interaktive skjemaet under for å redigere lengder, par og utslag. Nye baner lagres sammen med anlegget og blir behandlet som egne baner i detaljvisningen.

+
+
+ {formData.courses?.length || 0} baner + +
{formData.courses?.map((course: any, cIdx: number) => ( -
+
-

{course.name}

- - {course.is_main_course ? 'Hovedbane' : 'Sekundærbane'} - +
+

{course.name}

+
+ + + {course.is_main_course ? 'Hovedbane' : 'Sekundærbane'} + +
+
+
{ - const newCourses = [...formData.courses]; - newCourses[cIdx] = {...course, name: e.target.value}; - handleChange('courses', newCourses); + updateCourses((courses) => { + const nextCourses = [...courses]; + nextCourses[cIdx] = {...course, name: e.target.value}; + return nextCourses; + }); }} />
{ - const newCourses = [...formData.courses]; - newCourses[cIdx] = {...course, par: Number(e.target.value)}; - handleChange('courses', newCourses); + updateCourses((courses) => { + const nextCourses = [...courses]; + nextCourses[cIdx] = {...course, par: Number(e.target.value)}; + return nextCourses; + }); }} />
{ - const newCourses = [...formData.courses]; - newCourses[cIdx] = {...course, slope_valid_until: e.target.value}; - handleChange('courses', newCourses); + updateCourses((courses) => { + const nextCourses = [...courses]; + nextCourses[cIdx] = {...course, slope_valid_until: e.target.value}; + return nextCourses; + }); }} />
@@ -1068,9 +1221,11 @@ export default function EditFacilityClient({ initialData, allFacilities }: { ini { - const newCourses = [...formData.courses]; - newCourses[cIdx] = updatedCourse; - handleChange('courses', newCourses); + updateCourses((courses) => { + const nextCourses = [...courses]; + nextCourses[cIdx] = updatedCourse; + return nextCourses; + }); }} />
diff --git a/frontend/src/app/admin/rediger/[slug]/page.tsx b/frontend/src/app/admin/rediger/[slug]/page.tsx index dafe776..bd4c2e8 100644 --- a/frontend/src/app/admin/rediger/[slug]/page.tsx +++ b/frontend/src/app/admin/rediger/[slug]/page.tsx @@ -1,15 +1,23 @@ +import { cookies } from "next/headers"; import { API_URL } from "@/config/constants"; import EditFacilityClient from "./EditFacilityClient"; export default async function EditFacilityPage({ params }: { params: Promise<{ slug: string }> }) { const { slug } = await params; + const cookieHeader = (await cookies()).toString(); // Henter anlegget vi skal redigere - const res = await fetch(`${API_URL}/facilities/${slug}`, { cache: 'no-store' }); + const res = await fetch(`${API_URL}/admin/facilities/${slug}`, { + cache: 'no-store', + headers: cookieHeader ? { cookie: cookieHeader } : undefined, + }); const facility = await res.json(); // Henter ALLE anlegg slik at vi kan bygge lister for samarbeid og arkitekter - const allRes = await fetch(`${API_URL}/facilities`, { cache: 'no-store' }); + const allRes = await fetch(`${API_URL}/admin/facilities`, { + cache: 'no-store', + headers: cookieHeader ? { cookie: cookieHeader } : undefined, + }); const allFacilities = await allRes.json(); if (!facility || facility.error) { @@ -17,4 +25,4 @@ export default async function EditFacilityPage({ params }: { params: Promise<{ s } return ; -} \ No newline at end of file +} diff --git a/frontend/src/app/golfbaner/[slug]/CourseDisplay.tsx b/frontend/src/app/golfbaner/[slug]/CourseDisplay.tsx index 7ae5c42..9bdd873 100644 --- a/frontend/src/app/golfbaner/[slug]/CourseDisplay.tsx +++ b/frontend/src/app/golfbaner/[slug]/CourseDisplay.tsx @@ -2,6 +2,8 @@ import { useState } from 'react'; import { STATUS_MAP } from "@/config/constants"; +type Gender = 'herrer' | 'damer'; + // Designerens definisjon av fargetemaer - Nå med kraftigere tints for kolonnene const getTeeTheme = (label: string) => { const name = label.toLowerCase(); @@ -30,7 +32,7 @@ const getTeeTheme = (label: string) => { export default function CourseDisplay({ course, courseDisplayName = "" }: { course: any; courseDisplayName?: string }) { const [hcp, setHcp] = useState("15.0"); - const [gender, setGender] = useState<'herrer' | 'damer'>('herrer'); + const [gender, setGender] = useState('herrer'); const [selectedTeeIndex, setSelectedTeeIndex] = useState(0); const allHoles = course.holes || []; @@ -39,18 +41,44 @@ export default function CourseDisplay({ course, courseDisplayName = "" }: { cour const hasInHoles = holesIn.length > 0; const lengthKeys = ['lengst', 'lang', 'mellomlang', 'mellomkort', 'kort', 'kortest']; + const activeLengthKeys = lengthKeys.filter((key) => allHoles.some((h: any) => h.lengths?.[key])); const availableTees = course.tee_boxes?.[gender] || []; - - const activeColumns = lengthKeys - .filter(k => allHoles.some((h: any) => h.lengths?.[k])) - .map((key, idx) => { - const info = availableTees[idx]; - const label = info?.navn_utslag || info?.navn_utslag_damer || key.toUpperCase(); - return { key, label, theme: getTeeTheme(label) }; - }); + const fallbackTees = course.tee_boxes?.[gender === 'damer' ? 'herrer' : 'damer'] || []; + + const getTeeForColumn = (tees: any[], teeIndex: number, activePosition: number) => { + if (!Array.isArray(tees) || tees.length === 0) { + return undefined; + } + + // Older/broken saves may store only active tees in sequence instead of the full 6-slot layout. + if (tees.length < lengthKeys.length) { + return tees[activePosition]; + } + + return tees[teeIndex]; + }; + + const getTeeLabel = (tee: any, fallbackTee: any, fallback: string) => { + const primaryLabel = gender === 'damer' ? tee?.navn_utslag_damer : tee?.navn_utslag; + const secondaryLabel = gender === 'damer' ? fallbackTee?.navn_utslag : fallbackTee?.navn_utslag_damer; + const tertiaryLabel = gender === 'damer' ? tee?.navn_utslag : tee?.navn_utslag_damer; + const quaternaryLabel = gender === 'damer' ? fallbackTee?.navn_utslag_damer : fallbackTee?.navn_utslag; + return String(primaryLabel || secondaryLabel || tertiaryLabel || quaternaryLabel || fallback).trim(); + }; + + const activeColumns = activeLengthKeys.map((key, activePosition) => { + const teeIndex = lengthKeys.indexOf(key); + const tee = getTeeForColumn(availableTees, teeIndex, activePosition); + const fallbackTee = getTeeForColumn(fallbackTees, teeIndex, activePosition); + const label = getTeeLabel(tee, fallbackTee, key[0].toUpperCase() + key.slice(1)); + return { key, teeIndex, activePosition, label, theme: getTeeTheme(label) }; + }); // Kalkulering av SpH - const activeTee = availableTees[selectedTeeIndex]; + const selectedColumn = activeColumns.find((column) => column.teeIndex === selectedTeeIndex) || activeColumns[0] || null; + const activeTee = selectedColumn + ? getTeeForColumn(availableTees, selectedColumn.teeIndex, selectedColumn.activePosition) + : undefined; let playingHandicap = 0; if (activeTee && hcp) { @@ -69,8 +97,13 @@ export default function CourseDisplay({ course, courseDisplayName = "" }: { cour const sumPar = (holes: any[]) => holes.reduce((acc, h) => acc + (h.par || 0), 0); const sumLen = (holes: any[], key: string) => holes.reduce((acc, h) => acc + (h.lengths?.[key] || 0), 0); - const selectedColumn = activeColumns[selectedTeeIndex] || activeColumns[0] || null; - const selectedTeeLabel = selectedColumn?.label || activeTee?.navn_utslag || activeTee?.navn_utslag_damer || 'Valgt utslag'; + const selectedTeeLabel = activeTee + ? getTeeLabel( + activeTee, + selectedColumn ? getTeeForColumn(fallbackTees, selectedColumn.teeIndex, selectedColumn.activePosition) : undefined, + selectedColumn?.label || 'Valgt utslag' + ) + : 'Valgt utslag'; // Formater utløpsdato const slopeExpiry = course.slope_valid_until @@ -147,13 +180,36 @@ export default function CourseDisplay({ course, courseDisplayName = "" }: { cour
Kjønn - { + const nextGender = e.target.value as Gender; + const nextTees = course.tee_boxes?.[nextGender] || []; + const nextFallbackTees = course.tee_boxes?.[nextGender === 'damer' ? 'herrer' : 'damer'] || []; + const nextFirstTeeIndex = activeLengthKeys.findIndex((key, activePosition) => + Boolean( + String( + nextGender === 'damer' + ? getTeeForColumn(nextTees, lengthKeys.indexOf(key), activePosition)?.navn_utslag_damer || + getTeeForColumn(nextFallbackTees, lengthKeys.indexOf(key), activePosition)?.navn_utslag || + getTeeForColumn(nextTees, lengthKeys.indexOf(key), activePosition)?.navn_utslag || + getTeeForColumn(nextFallbackTees, lengthKeys.indexOf(key), activePosition)?.navn_utslag_damer || + "" + : getTeeForColumn(nextTees, lengthKeys.indexOf(key), activePosition)?.navn_utslag || + getTeeForColumn(nextFallbackTees, lengthKeys.indexOf(key), activePosition)?.navn_utslag_damer || + getTeeForColumn(nextTees, lengthKeys.indexOf(key), activePosition)?.navn_utslag_damer || + getTeeForColumn(nextFallbackTees, lengthKeys.indexOf(key), activePosition)?.navn_utslag || + "" + ).trim() + ) + ); + setGender(nextGender); + setSelectedTeeIndex(nextFirstTeeIndex >= 0 ? lengthKeys.indexOf(activeLengthKeys[nextFirstTeeIndex]) : 0); + }} className="w-full min-w-0 truncate border-b-2 border-[#7ca982]/30 bg-transparent pb-1 pr-6 text-[#11280f] font-black outline-none cursor-pointer">
Utslag
Ditt HCP diff --git a/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx b/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx index 40788a2..780544c 100644 --- a/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx +++ b/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx @@ -496,6 +496,7 @@ export default function FacilityDetailView({ facility }: { facility: any }) {
Drivingrange:{renderValue(amenities.drivingrange, 'Nei')}
Nærspill:{renderValue(amenities.treningsgreen, 'Ja')}
+
Pro:{renderValue(amenities.pro)}
Proshop:{renderValue(amenities.proshop)}
Kølleutleie:{renderValue(amenities.kolleutleie, 'Ja')}
Bilutleie:{renderValue(amenities.bilutleie, 'Nei')}