From 1c98566e9389c04ed881dd538e4648daf02b5cd6 Mon Sep 17 00:00:00 2001 From: Floke Date: Sat, 21 Mar 2026 19:23:31 +0000 Subject: [PATCH] [32788f42] Fix font encoding for PDF generation, compress empty slots in appointment list, adjust layout and checkbox positioning --- .../backend/assets/OpenSans-Regular.ttf | Bin 0 -> 147528 bytes fotograf-de-scraper/backend/main.py | 64 ++++++++++++-- fotograf-de-scraper/backend/qr_generator.py | 59 +++++++------ .../backend/templates/appointment_list.html | 83 +++++++++++------- 4 files changed, 143 insertions(+), 63 deletions(-) create mode 100644 fotograf-de-scraper/backend/assets/OpenSans-Regular.ttf diff --git a/fotograf-de-scraper/backend/assets/OpenSans-Regular.ttf b/fotograf-de-scraper/backend/assets/OpenSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8529c432ce34f0bc582e409c420f6bfa6ad0198b GIT binary patch literal 147528 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 z zmkzLii$6ZDC|LMA(8Z6ubXKXY8@7rCgGFOPD^QYUpd?%tg0v6pr9llTHN!XviJJVC z%R;Oa$G~MF7oJj0(*b^5s;iTQh-NtL(X#9MngtWtss(mq$kT1x9sBkh)}(r~^6Iy< zj`r+zbTBmEemY08c+I5zqDfCNuk3YNdG6ism0f4UBi065Sv2#g{)Q}7;3yHD_61}& z@_=5dW^j%K2}UkoB!buJprTjVA`%J+)sm#D3cS|3W}I)*>0FetVN<*9QLV7=WEFN1 zQOXw=4b2){1gv@;!tb5_J2uW{7%dr;cTh&kK~yw`+zUJ=>b_W|eE!~B%9rc(%Eki+ z*l@4)%M^~KHste4z?X>dDrwGt{j!0zW&{~qec-c`FP=K{x%il4i#R8E;I7I`ZzBiuW8(Q)RZG_q zKIJ~?$e#mGRY0jIQ~;j3qn1o4@EEwrSTC4OxNk!~J|@>cj_5cjHDaB^!>pFDgzyAJ zwfbrxv6xUT37#N<@CzXZAVzP*yMTT%9?&xSx;qHGz$W2x*bt-m<;s zkEePsTQ0E;N{w6I=#D5#)1juV;}13sx<~za_6yU@tAY*i$DsrZa@qsMHmja z_XcKV6cADuCeJYe0D$0|bfp);p0Jr!$N zAC=aB#JNRXi@SG=iJH$1;smdQ`OaDGW-$NYr@>Jnw1wvjQ27*WS%5Ksb5oqDuH&g0 zB#%Pati|3}HX$IdM4eQll=2)j=(R5cFaep4A04mJso=Noa2lSqKTBWY zjXuH-~ry+7uiZ(+?7QXp{@g8 z4MbzINMG((j)x3IVdkS~M$j|kDdncVJp$gUe5!@+vN2GPRE}%}(0UM~$q`qBlyVr3FufBUq`ddwV zbS8LF>jC42_uxD>#^Kp5wL&}0oX$WSfc6WJm%Jg$1s2jHH5;zG)Nnj^}CeK z(m3gKOoavH%|_Yxxvp#6Xa+E3FS7HIN)FblDED-Y;$*D<8-Zct|=nPU-nRt8Br zDjX32>ljv~nuUZI<9!Z@Nx!mK<#Wf5owpaT2*%DGfA;K_7oI(dYUgbNl#l-WUHQOI ziDn;pEdOQiT^4I%FF2kz-Z*#e@4iycnuC5fPoMpO=4!*Pq5>%9+MlofFt9M;J5`f| z$@e7IKatxpT+B2_xtv4CHKn7ZuT=TQj+#k(#kPB%L{-pfgk!NKd9QurK$re-hL< zSAmsqNLLo>s9LHjYXG72RE3PhLdYB-VI_4-xL4L-PH1-tGun|`_WoJu8l@)BQNyM* z97!ZeRpW<|JYY{HejnOr8N4nLc~!}U?Sj>dBo81`u=xTqGx&S?ql1Sr8jctcPq|7E zC?4cKo#C76_7=;sZ@zo=8zoBFBV{O;SypA$V(enets6Ez3-EOuQC1cW9o$*vH#8NP zgFENq?vpzB_zk2EidiHc&fsN$ZvgtZ)k__un&k6<(4o%4YB{`@C0)C8@nf-Q&)rX% zar)XNvz1#kk1bDbM2Y3Qrxx}tAJPR}0p0qJn1vg_0(6961|*L*0#g7VS)y(M6cJW4 zX(SjgX@y0nG8bdRdb6%<=Nq3WroCdp%1Y&BmNU6poTpr-k!qA7U6kciQ8X8Lfa-ll zklh89Ml>c+S{NBP>3C3S1wsp&#%V6Nc(S{w$uXedMk*Jgw6HQeRU(-rUBEQz(pS-b zXj$37#VvAH^xgNO0n|UibKkBO%d=9NZ|}b8*4!n(`bC7T4vv2Qg~f;VTKpGVtrY1} zu%~slMaqxRv`(=5PkR9SQ=;kr`1KI+LQ#SXDdaOIJ^h@mi?#PaWaK%tVZX|SNgXKqlU>1nk|hDz3b3O@T@Si$71C-$m`0^^ zczTAxvdM21cfi6va;6m!>EdMhtqKk#%Pgg4X>hB^r4yj2*0jZ?f^oCX7eSn|@z&hM zKW^x;rFoNPi(2eDXcQA1@9Gci>$fVq`BJ~hcV4=rOg4us4h(;K|Kh)$i4I;J7D4df ztmY0n*qd_&+c5cIn$Ph!=oIYcUjbwv$Rv&D$eQMCN4%U!T%wln70GDtsYPnsDX|8E z4H@eQVV^iddV+*R{E6LA_Xjvfu#QyM#v-7O4Wgp71YoKm0Rj+g-K-SEjBvj5O$hFx z@<;bJ#PxQzQ~jr1UF=|O9^RT05^5}!0*)KONwCNs5E4w0Zo!ri3sw^pZ3SU*Ck)$w zu(G(xYO1?Lq9KFC=x;I)M!gif~acpj-yo<8a&bdRF3Gm!FAfk15nIlvoF1 zPNFRaGG#QFC{P7a-?}NvP@jEp`O;U)07Zb>TxRQk{(0uQrI=dt&7g!ZxOn0B40gG0 zR)7&_-bBE}HylQ|jKN|49Vg6>WN5s*mKj1gk$-{>YBRu;-6AFG@dgy97=e=G(5 zwC8`oha3hH*Ck6q> zD};vtYe;KNLQa0oF{v|sot>)8o<=hZm0n`4q2Y5Ag6#p|-&HfLS{|MvVkwT@WXpg* z6SQSEkC3t^Q~lzj4AM&hqnKt?;jzQ*=`A663;F%n$u0X)>%-ZLz6$ zXlawF{&7+6nv(&el)Iw}jvZ-_)#fUHuwlaYuuW?P+uckx?)7e_GfyJTw9UU6gTgSZ zv7#;WhI>@J|FouMAzqr3?T;KQpveXhUdLO+qx>x<0X~Mrl^_O+ESof4clfEfo7_ny zMboAbYFLMKR@wlo>lg8;e|(htQSZ>Q)Zgg0BOW0oshX38$De7hZi?#{8V@@o9{I1v zb8VB=^^3Tj_G^ZJLX`W9UO0fs{x%Ek+!)2dcdqUix*6C*@dLhx?yfx)Pu1<=9Kgy- z@I?mr?t2>CbDm>+?6KTM&ND9NVdqNk2lVya8Cd0$(S$|&&r)M!R8)?!tQmPaq ztyH!(dLdak&I*%XXaqcdEBx*qSr@)LjBQtn!_a#Q#;eA7{({}E`et#DW5k#tS3fiU zX9I`$sRR4FhIWmQ2Y{wxWqb13BxNrvvf1c+(%EEs7RzphZVORnvsoeALQx(mIBa_u zt5hoSLje=Ogs0hER0aMBdl6*!$Af!v2Si8Fm~b2idqP4_RP57J2Mm}>U*dOjMvs|2 zYdl%$t84$E*$FBV3#Fj|8Qdt+PsDA@2uj4yp|#)X)ta{CRbYjkAX8{1{Gwv!roMWk zr1kSKN$wi0`v@ppnL)#b`*6=wZ^=udd^n!WU=T~)Ks6}=sME-h@$jB73L^)U+8@T@ z2YcI_|EC>6%qH`(b)_i8r<Ze{hR z>P@Sjtdi4f-m8)lYkt|XWsi7m-R9~|t2eBc`mNivj(%~xPmja4Zr!bU{l^go8IzAz^0V~ZgY)yLKz*B~a>RU5lOQS63=u+ancJjEbq4_JJu z2Lk#SJI{JMD|f=Xv94Sv;R`^pgxFm`Fs2BImD!v4$&`6m)NH;UCtaB2L<{)TMdZl3 zBhIc_y+RsI_C>UYoFEp67vx*eTy{b9666F#FU5ls_JgYk5}fexC5Fg+#>P>gfAg}VW5`m~G!Csy<=keVYB_sRzXrrdewp*~i0ENwSPHPf!OX~HL^-c=_=iu;-l3s(` zLVY$!C-g=C!Dw~lh~)2BC3bW?$Lz|B%xAisQ0@3>-RXP)zp?Q$q5-Q)&C$4;x{;Mr;~_CUuhZQv9U+mw6L%3F<~y-tPI9iS!cTx zR3i)?g(Tyb&TC#vw#*H;&0KM8`q7z7S6VhK_uI67=F#a(-}xRVy%iq4pJ4Y4;F^BY)hp=ZYf)x$CrjwcLb$GS0K$k4Ucy{)NkqzlQ4RL@0;6^S;ViN0wKn&>38p6&n4m-5bD(sYE z$-ve~i<%r0ZH+QVsFF8jdxcMQW7gQ2=oKErxJU#oJcNM~zt+j#h$^uGc6h)P0a1n^ zd0pJzuGxmJTQ0}4KOA>)dl`E}$+fuRppF5aXe{2E;&e0Q1gC~%#sbP`<)(P%Kjq*;=*65IG04NOHg&Web$+Er(Fe5{? zC+p>IAf4m_oN7SWfygvsCAJ(YK_H(0q$_2iXok2-1NT>POfeLx4{Gc_rZhy&x2Fxk^gDi|1XQ??%K|8_Q)Uv z+Ba=Xp4;Y#pwJ*F8KH&q04ji!hliGe3hoQ6R)Y&bAFb?B<;B@&>t4CCA$@49C8m$< z^^>U@8k35jT|)x!U>Ormo~st$c!ix#5mc)O^6)E4TjqZg0mp4 zRDvi$b0H50=K!g=h%*qS=!qhzLUdG6fL@D`2{SWmu{sK9bmrblPX}eCj81B-7NxO3 z+?YvaC!)oQg5hq1_3PL6T-LKuS>v>l{Gg;&5ty##t`5+a3o#6k41cLgff2=nm; zaZ3lvs6~JVCJ7V;RahUOD6!bn%^hf6FLp^tupsyyI;7-;OF`{-62ss~O9dX4afxzQ_0NJ$7vGzT;!RojCrV z6DBJ&=g!3*M~Yu+=3{k!@U+jf+r157p5PJWu19)5ji?b9P{glBBlMx4f(GvH(2sTT zhj`^5=I_*SqqARt(bs6ulGQrZ1V3EzzsA62SqO^U&Ix zG8BTa*+vN+?d>d~NR|}f?~R#@6odl}qCA}DDPjfS2EpDIf$DIJkR)^qLF7(IR7g~0 zI3*%=*9*ZcSP#g8Q3!rbn7C%``%79caU51QH!7GmCca=+fw+|U$8~9+qChdJ5prs8 zYkt9QQ+@e3Ax+2?me?Ub>m`lQ(i$is2O5~`DBu`M+X;to?Fdwt2ipar2)4@rxs8>& z%X;vilZn^1J**Xi;~AB>LW~4TT*>lG8NpOh8R@=8l3CJoGjbcJM1&dReB&C_qo?$x z0Kxle(Q{0q=9^HZW*xZ-Y9*dIfw*>DH*UPNA(<)u_=XocPu3unY53^Y%ww_m^O~*w z+qG`Hd;GXfe$?3DVn+IaBvXQ4!Jtz$YaM&% zj_Wf(*U9o z$KrfQmgg2xSM-H56AQ7EsvAF9rTo>i2aw>VKnnRU-~#6{H+%W4k>!&{PMS2Vw3ppJ zCbLb>vOz1WigLOYKYdghv!bR-im!TV0Kv+*aoc<6_9)#qUxk%kEsA;pR@&$H7Mq7g zOli}*prGxD?s>WPL~Gxaj9FzpMwoOy!+K0w=eS6~Oxi?Ys-xj~+j;0_{6ozvqbgQ#&{PYx9lL51YWM1usL6GmM`QqwiX@#=_aujEI< z02Ln23#;bI;!yGLJA3eZOn_B)s-gBw66oD@AT%QL#mSBSsx?CIft#t1rWCS=W~K(XIl6Hp4+G)m zMlBk*NQesxFhqGop*XrbbgD?bj3e=MVP^)Fzd!r0xBeR6`3)$Yo+0*8o|5L^rnTia zZ3k{z3Ei~9Hf;-fv@Gh?uSZxtR=zV~P|Z*OB{~Lu9s;?yspgVk5t;~{>>ZFI942B> zY7_uEEg^Lf2r`6TUVPS>U>crnRD70|BBv1RW{qM(VtiB+Ym=}LKVO5JU||-b&`>Ob z{D?fb0~m;tYUKM(7vW?;jG!sXnG^{o3FI?hy5m$~(!kZP%~`lLFKgPx6$4i%179oO zWiL-}x*=!K;-bWXUzx;5cd#i+3Whv>+MjI#cTq+JA*kTHpr zQGy621|M^S9~eFp@kID~Rql77=8j_2?f#>`&hrn_5$3}y;|AVE8vQgt6)}}$#(`-M z25*GF2=G`(PzelY7$+ zrL+;%HIAAkFo)v zRVWM90NhRW2w0VH0{zvw!!e{PCO;%FH>#w^q4k!wfdMVegSsA7{5;$i>AmNS(S)6U z+D*UI&1>G+KfiqOAmFteb=uGq^r}<^5edw&^?{^>lIY7u{#6vgAxYE5 zuwdoDTz1{@^}MO0l&@LuSxTblrxBZdy-@jKq4JN+FBdZ3g><{hYikkMOSR@Bq1)Ao z34-7lr_NR5oU3CT&GnwPmcMR`ZHEtl++6b#Km{np9s#Wq(w}4NajlpzpYB)%b_eo} zuLOX%kb^k0xgoMn$!0HiWapKfXx3UetGp@1)M& zNIU=+LRBF>2pvE+fQ64-lzd6Wh-*g=ocHeDN^j0|`M{3i6K*LjBKv!V2Wqr_M%$S2 zDS@%0#wEdP237SC$2XU%5h>pEel}bFP@JJP1HYu7z>E3lr0d1#i0R^^lPuy+qcgHC zRy=al89veB+TDgmxiMOEVASX*l1#Bjh2!S2YE&}XHpcJ8_ki>3SF>;zjLpN*W^Ju^$0rxol4C`1Zu}qm~B6jE5 zgS+yUrDQG1EFL>*NJc?qON;iU5#MO^E5OQx5rfmaU$-J3eJtCDftzE0sxU*XkYGnC zWI6=k5J7wxqJ?eAXp}u+>r}agovajOzpt_t@Awl0{WkDxn$%WYt9^@GFdGZa>>1G! zzEHBjwgXf|*PF~Ypgnw@M3p7hjS@U2#*;bF6Di|i`*&J!AR2JVKt;4FLm0?qL!!-T zu_*S%u`T^>V?&(G{X!?RKL+fbJ-2h0;tu(}dlRFteXCyPt7qtjliU}~B|v2!m-`?B zc7wx4fY4K!4gJgyxVHxQ|5EkVP~eS3aC7*+LSx1wUkAKe(+z2Esk)|cEhO~k%{+}B zo_zv*MPo>im*f#<^cXG#XEL*Yuz7d{3kzqVK4GEdk%6LrhM!6DiSqXu9?hbx%n}o2 zDQ}dV7$?WtY_WaR-(qbgEgQE;X`a+9AbmXz7y0^A^rqxM2Rwxija^nO!++ z@{GwdrcawXWm3fx6DN!xH@19C`REbDh7KA0SXpUF@t^@keR}oiQrNy-UT(|$?EDtZ zQj!wlqNB(pM&6QsfqpQI`Ivl=^F=i`YyTf_?*SIo(Z!A5xqI*KQUw-RdRsaI(os=Y zu{T7)h#eIbQBmw2E4IYgYcw|OB{3Siu_Z>0(P)Y>F}=O%yLWbG&YYP!^>=UaHeJ4Rj1ojMdsl%*tH(HNpI*evRy9)rM^kH11T-7gc@9bBI1|edn>nSL9o) z$(X$l=K-5mQz) zfW`GMF7Drd(TdjpgSL<6caf>el;T*?Jl2Uc1N zmVzVVwOB_7jZEjX&6cFYX<=P092j02yI^LGqB&TVSJhkdZESX*KIeA!KHjcp+c_Dn zTBfz_n(d#PmD#ITW>&7&v#NL1Q<{B`5|dk|c9>bTWJ9y)7sC>oB{u7j)?$2*=F0aS zTea%gwM7dxHdO4T4M8p7qd2}%1Fm{7k0i53Js~;^OpbfW8Jf&3Z770V#NZKL;3aG z@*QmhBSU>t+`>(RQVVkfhmU7dMX^e`xqRQz0ewe)eZlXfHdJ{{`FfdmX3)FJq02=( z2j=feYZB@1FxlN_WRLa-`VUwnmiRRF){MV6t^Dwk0X=)n?j*kd11&86NagZnSX>9F zak5a8nPBvEH)$LrUmr@z&_?Zf14v;hY4;!|9^uUs-$QWHVS()?guV>DD|8sfu#Llgk zl~k8s-n4PbwQKX9dG3`tRV3dcl2kj2*Y^STJ>>Su;$yfJc;^V-xum6dOeEN0c9S*W zUOX2pcR5l^q!3Qe#a=9xKObnhtGR*P+en^!i|4{?_*@hwS?-Ey)$?$V{$HsG)00<( zSuhV3VcI9BX1B21Eh`!}apI5>WrNKbOV6bbDRoHRZdb?ymcBS>O4f!7aw z#A~0ENWx$~C96J$KAXf}dU#4sJ!h$1lpgit3k;nH}A^ZNR3{UeBD4YrSL8TMs|FbL)fqw8K$<5p`_I z3zT~TF$p9Js!E0t^qodg|Q6~0!)S&1YBZQdvPiw z+LBU9O?7Gz%6^6BBd(1)Ju`LEZ?6FB^TPwLUwi$SeBzq>#+hD2c8vA1EZ_XgGPUqv zmy_4uKB%FXB%n&lE2Lk5K2Y$opB{N+e7NMC1wt*{Rxm?QRddcCIE5(O5$66nAK{_> zbPCL_m}sC7Xb3ZedsD$5M%m=GwZjmlj_5Yv_NUNnnIYDx=<4#UQ@KH?NWf53!I=#7}&{Sq)WG_x-}2T@bJux znl?{Y-q@-|J8m86tQ%?^d{85Fi_5;ZvLGW^a;T)V+RYUE6sjCgo$NE9?`|ojILTRx8JpFG`wi%o7`r`ee{iWutOX zd3VAe@XIY!23eexx5qJW7BsW!V;Xl9PEuE?GptS+cd*ezCt+ETrV9o`RvU4Wnow>M zOaY#r2A&9sWOfQrR!5lP?crfJ0sf1JLF?*r=E#;-vm$?ApTDhGzsos)VpFYWQ{T3DjyW5j>%w|MGuDURgNmJRvcyD zQQ2w{PFF#y0*whH4H_J@HLklsQI!Q`Kk6w#1z7?*opvxnxwNrbTx(XOG!Mc_Q<2hm z6uFvuR0Bd%gTlq0QqHmLgKU@5|BXApj{Hmc_S<(a9ldz#wA5?Gy?ZN^|8gV}ppdMB zV^$r}HW@Lqf}dbEw?MCg7Df<9rqhc$6v+ksxQm1*iD(96cLEX20Ms9EPY*wXAKGD1 zNDy@AIU-&VvE6MsgB18ylPbv$vH{9Y)|$Qe<~K^{Z@;m3lv^yNe9LM%>Z4^qKDdd5 z$#cs-s=8y%m_$AX&_5y&gAgI?QuFdWJOEK>fcr0uIUp`VaFE~+eC(l!hmd9HR0%_d z5B#bQ1QtTFofRy^!9ge#sf;zDg_vXQUg8NFTCEK#goA+4+mwNZmwAR*ND%2fMlUy4 zTj6dYf<;hd=^)};1%glE_issu8u+0Y`j^3;dQ`)hR^6Qsm&fHl51?)BWZ9d-`+ zRQbbSykNlsX#N~}Ag{+!&!eoxJCXuTKbCkkx%SP*xcgQ!{*blqjcEgqaedR*85269f{L5y{iS{_@=h@uHn6F z&^tlIQ}^O??2Y}em#v$6^#HqBtal4Fwqo9`k|?DYm1Y9zN9s5+X;Aw1Z9JP5lBcfF zdcFWj*^%L%6)D1Y1d9CVbbz)(*rIjzsM15hEVe(+y5Kq#u&z@rC1kDG@3iv$noaAK z{~Tw2N*-WszD3QwMsb0;EGN$=j#K2IB~P^efOVIP6ZbWr*5R!WT1^3ENajT%7`hE4 zoae_!#}mJ8qeHq}1EaH12vCijiwrfCij>;0oBM8*tt-2^|CaLp&Yf)N;ogytIm_G>W7f(c{s^bk@@i=~$(c}2yOkn<>hPX* z&=|9k^WHxWS(>FB9XGRM$h=yW+SGesM&P{Nb3;4M8mk=D_#^fjh(Z^3heby?;#0O5F*0Sxd~Sk zmWwZ$3-Nt}^M^=d+XS?7x-6w{#dG~k%l0k{=`d;J!I6`*0~f!z(!Xhx(h^CJ?4T&OC&5b|| zM_nY-lVx5{CQd399W2IU(>Y`0td&5=0a^e}bGZ|1L!CN}60GOv=e!N$D7O#|jt&hw1-Q!eb>DP}4!f)`G(2;zlxj$LPS zUg(f(vOE&yu$~==7gF0+|8=7f*ZlrC>cq%Rp%jL-Ria@lL47;tQIdwG&X1| z3bKLST&-W*5;=b%$?n0CNu`M|UAVOQrPq+G|8Cjj*e)aT=1j`&JtD|^Ord$~jNXg3 zw7LG<^>e@8e(Q~Q-`-m>^Wsyzy1rPNGB;s*^7Pc`K1JF)4)PeMg0{v>%hw(Oz~+(F zuY9hTLeor1&2>62_Z{w`vNn5Sr>RTz^3%_(oMnUDOzq~{Vqt=B=$MS80TAYqPpHh$ zl*`?KGY+bDA*%N1*v>%$hqQ%YM^rU&s)DvprYgJ%b*KtF5#+XXZDY=A)-)p}DK0Wp zrD{*s^NCc2J;(~cUQ1LfP5&2B)6>OA!AMe!YBC~W`qSeE4SV+EUyDaab{bG}rgPgI zFW-Ji?cW?bVL^I_-OJY=+q!M#v=w{iPt9G^qq%unySUQ0X~|2+B+<#su-wzzIeS#|c4M+7DSye$IKh(8t zoW@Z+N%`)lUtxdl$V`ew0ZxR5BXSLf#7MYc{tb?`Nu9AGM$^^T$IIW_-^1P2vyo>6 zkSs7(dlQE@3WH#zks3&FNMEosZLIrbmZE=dtE;%$Wyhu+TOBN;^*ierHWpd_IJ&p; z#j46n$B$nE-;(6kp4%*Ynw`9H;v1dl+{ZaciT)l?mISd7UNjX*l%M_HTxFt9G-SR7 zW+A_r3(SoGK;c2+Ck2ZV;2gs+A=&|1lvkX_m2Bln>9daA5|x)OS$=$x^$Ab(aBmWP zFd?^Wu&I@gPZK$P(b`8}0D(4p#QHAX_KgsO*SwhPs$H(9yiEL&T1t7au@3KYG!{d2 zB2m+wZXte~!Paj34YwJ+;DO=6!YbheQ{`teu_BZM;Ai|3nuzTKJ_o7|gQLqfhnl0y zHWRLS;{f{680GFCozN^$vAnO0IK&(SfmG)ZYFuw>GeFAI%JZG_`cypt`c_!4*&%UH zw_~@9Cns`?Bhj2}3F3Gh9XiQNdQ-I}*ky6^d6LaQ1d=NJ%wEzE{0+`m3=UhYbx_l( z@>nPg?CDssM3_AjaLf=Ug@%#&DFL8I9BTjqa3LBeay7RQ;z_c$dxXi?gQ}z2qbsV` zzPhlA5hR%g5llbewtcUz|XaO1Y}!=ei2dFL8)TmI;icRu~%&D)=R{;pJZ zQqK3Xl=ocKCV6|FIOmaZ z!%I%Og|fbQ;3lG6nPSlI!(LMBIp~D`(jH8Vtf9-bk~SLqE15jw@zD^;!ax*QjTk)9 z3~?k_er`D8aU>`-PO$DFL8!k+aU@o>o5*k~VG+)a>)u9hs%{}_ft83*USiyID*cEU zUYNG2$c2ZdU3v$nGfMS>g^ZnX>X4Sw!R44zu~2!*rQ;d*?9{||?w4MD?V?-z#8H7) zZr+%fl<9wswYYwrHNEPenUIhfa8-Hj#_P(}*8(#UKN24q)i|1E{QMhBj!KBii&Sp@ z@~iSXhFw;@Ub-k97QErDO)$p=`GM7A!Vw4o~O#>UJhOp2dzGWd{DbdksVai8e?|Ub>bJw7IhmX7$6cgGp z_&tncHtY%e^k$%1gaMsvwt0r9LDY#|5+LYzP81#WEt`uDjs;BXAOl+yfm@WEgphi@ zqeD6II->dz{?iCsTZcJPIH0bOf_M`Uw(a1cEp&B56}m)i_i&RSJe8l*tz-K(<`!9W zQ8tb>^$YJ86hL?yVPOV@9Do)ODpHbz#1#0EAYvdr4fLJ~HxxN58>k%=!gSCd6| z!WTv6L<)~{SAj;g)?i=G8$?^JRy;IwOxC!v@@{UPWrr4LO&BySsYyy~M(e4{%V!_W zn)B`Uob@eQCzfO#JpcBc?1`xd(x$Y#{r35TElLtww^*OEkAWlmlH{`<)#?rA~1r!QjRCZu=7fr zxJ1?kX_nrsRg9@THtB?N{NqoR%1fw|UZ5Q}wa zABT15)hq)+vQk$!_Sh=mK({Re6tcRj(8RV1?&>Opg&I5{O6GLw)V58_tfrZ1DT(pX zk)iov`5qyL5QOi;HxK)!J9GD-n*l+JwJTvFe;r=~1SqO&q6t%}Uz6&|T}HO0u-SQe z+_kzcv=Ewr+*R9)JiI0xs>mvvKK)*Lo9Pp$HfeJI!Jpq;Z#zCIBe8dEdBu(uoyRoY z({yZ?726iijm}HVY%;Fhjc*>kH*t4b#txm(y!o_d&87#IjJe;oS?;8Oc2TYT4Zfx> ze_cf`J%DssY^Z;^x8Dc%u6&u=lyy{2H%t5S%DoT#jC1`%m3Nfyl;4#1dYRkg(rLx* zyE+5T@BwtrYnHI0dNyNjOO-3}4)S&B9pMu8ydIHeM@0(WV!}*dI(-VO9FLN-yX^So zMX}VlfJKqq#}ZC>jV2yAM?l`A+M;Td9NacUZz`4occJJ77Y;GC$sP7HI_@-`$KTCs z*I|EAAy?2r2J@}CIdOE^Oa*N zm34dZzl*I{cIBA8Y;V1w$aw`N^4aHzd zq6?i-mxopnw7)ARwqv2nq@uYLQ>%-Gm~09W{B zhLjE|9aB;~a`>>k!o0#k1N!yt)4P4I_Pug*x^?Z`F|%D}yX@AjT4pti&4|rNOG#>y z&^RC_ASNopglt(?e^-CXnDubO++4yu!lDs;_X1#tnR@k^IPd7{{uWy2GwUU3eY5Uo z|J1JTXBvNbSkaJCx-PnIsV&;*S(RK=R9K?xs_UBCB3t(;qt35?+kWeof)C~W^0489 zN8?@kRsZ)i+o!y#)U?j8mPvBaupuQ{Yd_MRf})YVGflx+%4Y?`N9EJMY=0}h1x3aA zO~de{XjC45$GKp5F@M|kxALDp!|Ah-=A29B=;p|G@h`IRo8Vbb6Iu!#gr_){05(ft z8EK8f+o;BV;vCPJ*dWgV-`UbrEw6^Eq5P2q1-DMa8yhh2y+chgKch zX5+i{aI6^BHG;v5oL?C-L^WL$bYz*VsZqG_N%Ho>#*d1ie~|X9fm}mJK~#iMM=zzP z^OsTQHA8CS7410B$bZ2+8~Msl7Qp@uOK`I@DdiQWo9V*c`(VosC(n;$^_R4SIP+wB_p|8BP#re zi^zq!ICB++SI?ts9to2M$O_hy7`XJ|hUH~4QZyRJi`yMHI1U*-sMPT}rx$;GZnvzL z9I9@e*#;Xe>Smn2vR)g%Zp+x5UZd7;{xhG=)?_zZ`AqVoWN0xjm{-n?lWzX~F;IA6 zeNrmqKpp`bD)caS3-A>GaWdQqRCh9=t{fbJuo3>vWHKl+3scci%%?`&cyWi*CWoOV zgT^^N=lsHk@?ElMIdF3;ioEo`d1{e#UyY|-zxl7jY?`<|Ykfl1Kxis;Zr?0+KH5Lw-|0tzfwy;@uKV(y`$tPY}qkLI>diwQG zq#@px(Z~j=BYPZuExgXitjH|Zfx*+ptx-Td zk5cY4^TW6Ad;>)6&Fo#}HcOhj=~=DkA9E~U5*Denbn3z=9;*4=sN> zF6(i?G;P4D6||mKL}8p&vBGq-S5#y~xU&Y=kgqqAT78UsbgG9hkTCpIdjL3-atdJZ zCdCr^3z>yOF>V#;PeY~w-2RWhgNk)1It_cUe{4W3@K)il68xB--l~D|L|CjpX`BF! zCcdR9YhXy=K|_4PX>Q`-`Fj$aW!;`7KDs757r*h_fV}ZT%R7~!{Pi=(QsSqMoITWY zSo_9hAxcYa@{TSg%9qL)2Yzb5rTf7E&F5FIhTi_jeQWpKqkd*k9|0MGwE?gc&KFcr z0pJW|U1(J!a4XviSE;Om2R6X=+PYP6zru-xXh+G>GLr36p4z`@6BVlx)>@{BOV)}T zs0TNk=$&D6eo_x0Cf_Fi+=HgG;>h|byDPVD1@64Ecdin|KAp?HpdPL%g7gq`2o<`S zJL5D&5H?Ee0-VH$pjJ@TQHNVcLSCkNnOM22#}Erl}mqnzTe#Dt!8yNdqt@dS2)R*xgdz; z7ro1N<-s+0V^{n5Za|#0_OJhf-!b+hile3))Cm!$m=P=~u|VK!A|FIX6(dv(Q~@kZ zc#-EU*DMR?z}m__@nqNepKm3j{*Sp4z9U2kF+jI6)vP3@2eFevZyt|F#{z5e6=v!l z4d;BLiLcG-HX%82a{EQkyl~Q#V*)())5Vz;l#E(NtMgkN;g7NZ?*olJ?Ty8^=Mr~OF<43j#m3wgzDO>z8 zOn&Y2mMiSRsU1bul2$!!g|6W6Xl~gd(6H#PPJ{bBJuPz?lbZgt_* zs$@Xvf4&a^^t1N}tbhJdWf7ZhgXu@y92>hXQn0u+nZ+ZA==6e%;Zp6PF#}Pr#IUxE%anf^H!$IZ#=Z zaIn-!wo$9}QQzPx+NHEf84t#(>6gngz1bLLwYt>2F2mNXTF)~xEl<%(Tgx*5j+oZl z1yg=p_=fd>4HDgkJ2!x1P|8^a9nGxTrYq1nOWF1K7Uhd&>>tV9kXk z*2*8WJ0Ye)+QAxf8ZIJ)EGi>p4GKbj#9%C{b+(t( z9;6zJ;tQ4>Ol_rDN~HubCqkyB`=gP7EK6HIz#jsBlx`^XXJ2IDpSzO!ZbvPLJ>t;H z=amXJO)cg?g&kDc7v~Oyf>D?mzsb=zb_QI(HuMSj$O+$<*W0WsE6_Y3K5}Ux)cx9i zMEd=yytv;Ys59B{_op;1;)5gL0~7{$LJyFx{#6f0Fb7dks5AxKznH+1s@60c_3RY% zk(h&ta6u4~E(E|eiMtlLT=*XXEs>i*wpUr!4FVAOng7bgzib~kE34(~_Gd2t^ktJNA$u*^`$306I^A~V z{_FRZ2W$L{8;pKT|J$GNvga`qbo3V-p&ew3#t)?~#yh z!IhSWkQkImt-~bCEqi&v(MgG=A{>|;Wb#?n2Z2BL22jzmgzn}p$f?i-VE;6W5@j7y z_5|4#=MjSKL~U1!)0edJhQ`S_;d?80tY0XZ>)wsuIK+xD(%rjNI91=f(9`|BGoa*tA$i6o7*9^r;b#`}!R2duL?z2|ee3(hk zDhp?hFWH*V`1x^Tr;|)I3$oS?lC|hIAXy9lQoU;}c_o=h!g1s>*gVctZpu7~uri%U zKeEX@U_Gmr3c+U(-c#isTX>&U?oo5VaQ2DM9#c}JY$fFoFOwU%apR*IIK08JF-nDI z1DM{4M-IXa%EX~0UdX71OEFY6no*sv#zD%3ICP-dplsZ>W4p2isUlUkNXA55E6oRg zB*bi1mt@%=fMC02?Es)Nn9fn z6^}B;Yi_FSKsAun2xF2RAUn}D!M;YgZnENYn$2emUsils6WADruS?NXSWM!FRdbuK zQ#Mhb);W1mZ5lU{Qz$u=jAOw6$5p{8D2h;yFgoZIYVaYix(wU{I;bEz*v(c`t>hyG z9W^LEWBy9-L*Ip^xai%|!+1HFa%Bx0U5*QXb>9uGTR+!d9F7ra!5t*0Hlh(wfnHb$ zAh@7p0JhUmb<(w>3$9--uG!>bh-m7hVV;t*ij+x8>2daz()=77!%AOLve<$H{LWus znJNA)p0%73J6JkcHuHNw3Nm?XaL$u^wijpqsb|f$Jmn4L###2XvhX|$Wg%ykg)DwE ziRSEr(ppRsjY?luY57L!58)iLA~ZVG@kGy9X;r=rY(Ko9$osCjGanOt}P5 z`we27Jv&Lp!Dd-jb(?A(S*obFJ&@f1?~C}%=H^UqEFvn$%jD7_v1@7xO2eZIH@G~-ertJMyRuv3+XkBjzYWc29znYQp1GmS0o1kX9JXh zGZX)Z$=x0F=(wuaq))%wzhv{IUhA`YNN?YO#*V0MlyLGilJM_MpAKB_z4}-`@eLZ$ zCX6TuRPh%Of$C?(h_L67j{k%qaXnt;Lw~^^Lo(DE65s$x3Qz}Sv<)g~Pu8S%%QzrGb;T!T`C6N?HpEMED@IWvZRfKk1UQ6XjriXgIf5O9I? zUZh8XYpmfH0t&s7z6w^UslN*ZJnliV7Jlb~;_Le+eu(;$2g+B^xIASagu)$hDd&$_ z&WMet&q#=|q|><$30Z2bMQDc51>_cmO!&83K~^$hzb!U9I)hVP$aey9fbdJB1q3W= zY!5`as=iYViAyLN;t$CIuR@qA|DW#`m;)oinGhWn9vcxG8tm`q zWpHl<&w?x@~d-M)m6_&*h z2IPPEJVc^{hJ`qmGp3A?t&_jn!tPCS{$Y0dna!0-D}s_ z@0G9g^Om|fE!Me|digWm%L}%-i0vz+zRFJzN8ETNB4TAk7&9Ocdvs}p+1ssIXz>r9 zE#A9*4Q^&|h*HiuBoep$TC)>zhymG!H7pVjZBeJwmQnQOBFK)U?d#a6+H7U+W3Q!0 z0==)->dOCJg93AKbQEwQVx!`t~+##xdo>+as(j6BH>b&$3B@teAy0$T;8|=+neE;fOe@Fgpdo z=o2g;(%r^5jS&hARj>@{!8%Y23El#5aImZ3RiUlK&Hk#et;ME_r`G`rQU0&qFEAS- zBLGt!7a8a76=nzv_cA!40x%Naq8{Uu6jZOZ<0Mdwitd4P#CvDn*Vgb#5R=Z-a#E+2 z{dcreS;rxOIe%HpE?<9B!%1PmqOxA@!np_M4Rn51#^p$OzVJJg676x_bl4E2v&!v$Mk z?G6{hNfC``t;%re$=qs9bvCUiDzM4J*~u>(e#J29Rm%cb-$tw}>+tNO=ljiR(W*T6 zMMOJ%(`j<-{{4x?DeN51*{7ItKzZyVRl@%11r#0wFb)i- zn4?KYh0dQ~k>}RbAW@2*esg-K(!_+Z+2uQLoQfC_vwJuDbyvr5hg9mYUm4Li#i%3q9ByG@j0a+KLwJv7NKn%r_G9g zg8*$0#2!oUU0Qc(>x)XHp>e#?uiKoFrgnbDrXj65#kqMTru%C=HjsH*4q2-lS8k14 zc6o%W;|fRDqAfl9vQ$>_4rbgD^zEI6_6YAXn7vB_uN243Tm`#V^|mXJxgR)A{_XsyPy}+B+XBA1(7W zuJ`f%O%Y>kc1gZdoOxB*e;N%4^S?(^#~)QQ8fnnTm&!VgX&g7oJY}Y38!VQE5YZmK z^8J_~zct?BC*ESOt7QwRoE_0-o~-I<(BRdTMipqJ=~*-MKm|CTRPhY7pg(S8DvGc& zDlQ{#jFkhfY`nDXsMQ+F*|63c%V%AI41Us7VE2W)PFjSATBJvf5W!D;zVcug@@=;J zx|)${BgOyK-Qi9)%*s<0`{y3988OKUt6F7gR?t+qY;L67HqsAJTbeW#=m#Q{6x{pZ z>7k^I@$CyCm_$!2zlBojUkaphEVi9~k|JF`ykn1@g0c^e0&n(eZ0dz$B#cj+5g#i; z*j2R?stVhHc4F7NO*^saf{$q@j}OA8o$TCVubrS?8cKb$fog?VJM9GPs%s3MN8GbH z5%L|>LQ+g54mgHM!!A7-0r~K<)@lHRL5CbPm>g6LZBPLkxQ*&+^b7PuFFiD!tyS!{ zp56QV()uggk7~4%UTGw|rY@M>xGE3u*=Fe#Re95#j4z)Z^Y?F{%3TN*g4>lN*m(6notg;>@?~p8jJV0ZL zwvH*Lo+P273ecE3(l?7K_)<}riag|j(0Po2Rf8k}5ezyPTt*Z|f=qmQ1O;ZWLRh%e zOc=2cR}!+c2%jv#-zUg7$P3`c2*LzLna$77Q4_d_U*aZV6n#~bVLUy=?TbGh)aTvj zK4%%*)+!&~dq??WhLqAsxq0WWMpg4(ku#D)w*<$ZRt|mnnR58lahCISTZIKa>dajJ z{6qN#t1$|?h%?PxGl9>XkDq8N-lCa7$G z4K96AOJ3E7zI_YtH3y?;PQ8+snR>1MykZsUHj_(BKC!)r+i|O;^uJU#>L+v;+{)LdG48~7cOHDH(+dm zumSGFo(m9GlTSpFeZdL1@PWEaGG&*eR0bmmlc8v%+9BdNwhj?)4r_(2e|n4iO#bNw z@|LIwA%HcZ>=N5-0o7kmiZk))PEu0Ve6?u)k2|NH&2D>T@{U)(x-x;?uq>52PP16_ zC9kbs`Qfa{(2XH!XSN^SI#CpOeR7V)p}mb&e1TRGg6;G5b`9AGhRKC^=ME-L@Az>J z;B7ev@V4NLH|lYK+LpM7+JXak-E|=D$Y=Q}kZk4Ho4loH$9J?>2lG>)r`pnoIF`30 zWPY)fkAc5MdqEt>e^01M#O9NQ6=mZnC*kxzksDCCsM5iLF4(}IWW*}7HSqQ< z5}^4;k{7HdsD=Wi@WV9#1Dr$Tp~0FG`AjTyE=y4+l6z+Cab-Mfs+?zME)oS#u(Qf5 zn(pFA%gZPaw_%;7Bd6R+TGuG_?*Ll;WB=sI;EKUN_dglvi^r`_nq$nMe8YyHSE({Y z`CgpF?vkfQiJz-D6E)axBrVNG{|T5sA%s9u#)t@{R>l5-(f}!$^j*lvR41)&Wi%b! zyP+Xuw@ptW1tkJ*NA9^5S1F(VUh?y6pY2!XzWvVCvoGDbH0`yiV#(i~SBVkNEP19J z`-Fx-YtZj{xDi=Kbda~u_rp>Qi zW5FwCLUw<7X4%Xs?4jbj_w9bUT?f7W=7Lwph-0g&7H?L5S_XG6uSld_fOx177;O+I z;?I~C`CvFXFic5ahyio73kvn-Ru0Nywi|g^r~rJx(D<-;d_zchxXHt$R^O)4yVn`K zEz^rCuc4%m6(=wQVa<~7z(pVJy>@ov@`z?fH^1@QuUE@AC%8yD<<^>&E7tE@A}-W= zKAOLHBXeWv%IViGj_sd61-0Xh_%RLb6kK9rFI&!jeDChvSFeWLc}Set6%zOiWK+cn zOH@0LQ%p2W4p0(d42EUI_8as_SVqVY6fDDZ0^Jzwf}o{Bnj}wo))Yd$;$DMDGLFL4 zS`N(<;XqG%vA_&;#Yohn3iLOktf4DHuvi?Iz17q=z^@`V0~#P#N4XIKSvQX%Ac(;q z{_yfM`(F~p(KDx%R^C2)@*|NwxcT~(Yp-vcGwr4B`MrLWZ`|0n{)n&M@5S|N=FM8n zt}BtRUb%FC>yo7#=1iE`F|Djs0Z{_7uzVR&6)}{D5QWu@ggp;*kR2gHA_}PPoOtOD zK6zMoabXToC(pp20BG`s_XFETh+#1eOo&$7jfCC$(_zP7c(1siXqsL-eDZ@`%KWpJ z9CXjDeRj&iEi)$MEbpF?yI1PJcInW`etOSoC57X0Ze=K^lqq|+7Y$t8V^GiBh_Ho` zk$hco!{5WYn&>nR1vnv}3a&YR**Cl{)=Qruo65%<)m!=HM*f?+bMV6ONl&LJ`?_!x zV#24tonQOHg=0I8|NOxlci*~KSuy8a&-}dq@+CL~IEiDcl`0Y#*p?OZLH_ZxJEao& zL48>0{9t1bqw$7-`oR>y0_x+MvyIj&QP{W+gy(UG6sXNpwbbzf>FKfYdRfOC`q*&U zrQ`39?muMd?w#9}YwKq|vv>Z)ybYaO1+IscoQd1}v(v?uI7m{x}b>S4^F=NZl$qhgWDS*TA;=#`vX|hQqe%>^gL7 z?|}$=o6l{lI6=tn6TtI0Kn5>PhC0*1Nntgi4zbPwmQDlG>d5-b@sw?Q0^_c0@qDXz z(%XBKMQ3g*m+Xz6li2KqbCH0WiITaKFI^YgJ#PI(u5~{yIrUX7zQA#0umv#92ySn) zGhlP_ht&I+yBcT#R6~Ip_Xf2UvH($CjeDzm^$^vqra|e~ab@Fi9-Wx@;xJ1T(0T5I zs5dL7+s>byBhRu7d;2J;2;mp@i;?PhO~fzYnsP7!yh$<*n@8rr+dc#vLrRpuHBnD` z3qduc&H^QYzp0KMwk3B^9VS0@^js{pUO#jorKQpES#PmRWy$2XcPSNTZd#60bROa* zEtwT_fdq+_BqHm8g71*W6RH^`Hd8)OPCrm??mWnHewq4J|JFV36a$#_ zQ#cuf=P&eDri#B5;0W9VaG!60sCuqR?5gk-4Dws$2j#@Hcb~=>N$NO+lRbdO=!!Ao z-fm!wI8SQFNX7}1ZH%5`sC7`*h(PO=oE9n`X4O^7Ur5J#$TC>;vmNa>j{CXsB4Q6sJT>} zapXcAe+W-hPkQ%8uFlYCP=kzQ(b`OIN{Avb1Dm|$r40=Ur}%<2a+HRP6&pV8+ppJ) zv!1Se7^@HEKiQxn)Ask z8_pYbJ_pzCc$0MQ0$4xtgCzdz*)BKhFPON6W)EPSPc=@>kLuVAB+rmKPb z;?(QZ_7SI*?ISZiMe!9d3n*oMT42R!3x1q_ly+xNK=q4F^*ZZ_nXP9J*dJ9*xdsb96qN1uDBY4#`jJ~b1}fX_QM&OQ79e^b=ZcH&GuV*A z!L~ZFkMtL}jFGk9W>ZtG{VVZKTf9#1Y_n^7$JSOeRQgP9YiCtMTdAdXj;$@;S=nIQ zVba5TZ4s9PFGFqHVfJnHoof0mk{;A+Oa1z4|ETG=NJ4_4ZNB;;HEoACJZ8-eom)-Y z;nK5eTcWLQh1yn#QfZ4bytD9?YJIZzkPyA8CIF{d6y5>7flp+VR@jZhvt}G4q;DIV z1HR)@%{WF#n;UF9Qu@#TY&%lgXxFw+O~1uYY72*)b-gvk((`t0kz=Ovie{AbdBgqc z9BbN+vh~Yp*IR8XM6qtTr%Qq9#Q77JyE@(_qMiJe^*ivc@UoS5Gx#{J;q%|gf=AvU zPE!E(VQtHl?UDg!u<8M#?|xN%pL>sp$MHVr@f&>Hs8UtK<0K0hw8Y~OUpS9nv1{Aa z)|TZ8m8vb(ZmoG+nJP?CTP@3-L8G|_TgoUM?GD~6IRBj5tKIIPmVG#f^Iq}J0p4qW zKH}Q8!=zX0wIxrB!LIEv>5y&2QVYI2)P9Skv-R3izu|m$sQng6J8f+>zw_OpwjC~= zYOpP8WZEdD87?7WhvrMG!gmMS^4)<|;k)B5rT^xLo46nydpt(XRuURp6t86U?^I70b#D3v9{1x;Zcdm__fJcYtBLmq4wt7i+?Ml%+IF~fsg|~!C(xF7f@n)T!RFLEF^MMz zbDp5@z`I0m*j+md@I_($Fn{e3js}-U-+|f{ed_ZS=Kck@suA-WW4Z549~~4SO~`W;#98wm4z7+Gt0W zE7Z1}FQ@b8pc7Spu)PmDy~dxP!gD{)_n9DLSblVBKW=b8getp#E5=_l_jv5WJ zAKznmpYw4JpO^g}LuCXhlk+ieTQe_S-+`}1Z|hn_@_A8PoBxGZRp4s@_*=df*r#g0 z+NpMJv)PLO**2T`*tMm#;QeAP3K|--yn?Rdno4eS9r&!qe?153BxE zJ=dx~wR$i?ENL2Fmn?N%q&@ZK$iIiL3%-ZnR>RbOd0V=zcw3Bre7!lU{zkg3s4Z@* zG@4pK!fLe;t{i?ajb;G^`DtQzV8IIxJ`RYpc6H&XKsuDcWzc$P zC|*?Xl@H2`k5X4PazerGkY>?2Dbo`VV?={fN2QG%EpO>P)yv#3#p|-SIwEh3ZwR)T zN~gKnKM>a+E{r$3BSKPecR-XRkZAe9)Pze!4-!6i8D&NzQWWC!4U zS%XAesQV3k4voUo6VRdIp5YD*u;h@@y5 zQ;@F)>BBsG0mVlNpG6Ps3bB#I2zVIrDol<*LyeohYr4PGOzhbKhBq$P0(z1$NZ-j0rf z;AnJ2g#m8mhdPh7_NpE%5@Mk#{jXr9XaxZ?ByQCUIXI;~y4;#vK0{m?!+C63xl zUd=|wcqjKae=_};h zPp??vK*R4b3d1+|Pxg)(-OS56{LG%V(d)F>AECl-1his*0L6_b7C4gg2xo|ljlo@G zAU>rF!TwRC*CI_E=Ly1Ys77fBy$072yzwAOL+_bmsR_Z$v2yGtfH2Iqdsn03m7z5- zpUIkB1mXDd9Tn;s8jRWyl&eZZWCjPmr>IVS?UvGFPpSM`LxD+WJEvhkHE)^G*cj~+ z#Fp0~gigDxS#ziOfesA;Hd^iMq1>B}2@U8~g>0Jlk7NbPb9%zk|LnY>MyV}PGe z&Hi(K;{G$#S!d--+I$1B`5L=o^W~-t$d8O^?9{C8Tpb5aOQyXyH909cMY%U^`I4D= zDQP`1nI=k0HWn6k523Buk;1Df+KQsbsT7JED1ohn_^KheR(Rx;m-P|e;suQGfyjCm z91o8$P|~RppsX1@rJQ&%jW*KfUE5B|Djr!FoaGmq8I}5Tvnggx2jd0YJI6?5F z$glCJYP$icq};Dx6Wc+?VkQ)kHJZm=QxJ#MR^!Ip2=3OvJ3%i9i~x9%r*<`&ztVyW zeGb;Pyjj^G8Dl1xHrkxioFQ$Ed2c(w+h9?)N1NfsS8FeKfr`Hav@u*H$!nN zx_$r%#KXbKRRB{x&T|}hOif=Bh3{GLl>4ifzdlO*T{^XY#Pd(}+QqJ0&ankgFWM^g zS3XvLdO=a1p84^b5wF~ch+G{WW+`0t^5N=gTa7D3fIx3t8rTECdTweF9(-2m2Npt9+}oAJ}EIiEK{5A zo3*Q*SF4>J&~1#St+-YD7Gg7ulue5Pk&J`n5fP&(z+a*bvYCQ24DQZG7bD=gotP7^ zt;g8;M=bszW>A2-3RvX-hFW2 zZrYI4`*!UeL{LYOl^!l9oKhkpp&(*WArfp-s(OHIFyb8?-*u1LzyKzgLIa`#qr40_ zWMx8=*7K6Twt5CSj%3D(L_=*UB1wrX_k67EVY^IYhse^o&9wT!@%hu%RW4t4CaQ41 zvCo*ofjx%y(cW<_(>wKE-M?|xiuup%ym)oQnU#4;w}H)iEG!({qd&%P!uYpn-?ok4 z0}=2P2M!;;I({|2hhIBtRJ!f>!ODv)w|4wSuSPBoy4vw$#FUy+lbK@ThbIB`+K)ef z>A9#ud*^jc_imFkZgx}IFpCp2&r@RuY2QA3ZN#}X`K}Wkocpco6Ww~% z!i9Us4(y*>IG|ZS!Xl`Czxq3IweD%e148yZXSl1A9FL zW3tzGIcmhF^F^Qxe#K!7u?m>DJmQf1@wr@V{fs{qMVTBwZ~^hpkqO5gKv)SLsSQUz zcL3Q=Za54nCLs*jq~wHEA@d|JoaLJNsoerXauU)DTkJZu`e5h%ivk@oKAH0+bHAs| zaCLds!8vAFAI+Vs2gY7sQnge*@%oUNzbI7^ubro}=$bM|ZiTa6%bfTOPlJNLVTR$t z%;V&^BGHm21_!>X9$~aH&QlIzM$j78f6~4s5rtR%ine>1Zg8#Y=Ng3R@<{2LS9y>O z;xQ0#NcpsIs)jQp=Ahaa3L@524zk?^^$kAx>bpnTD}3f_#kcvymBw3sT~4C!An9%KrtWFTAl_Kd1mULH5y4?NEU~QC zN#h*WkRpadav{aZ5CSQ!E5zki-CXp}8XSK}EY|5Vkol+zKQZ;10A~v6rII-6@dk)Y zd;IHb-o=;Vy9?;MwL^GAowg?=y~uErkI@lIU~IH0Av_@{z!>HehCoPMWDeer-k6Nu z(^U^)-FiIhbhV-`Qf_6t^OHQ{HDKteQLTdZ^eYpWuWK~QwWv?GF>Yhsb|~i}QvsQd zEAXj^R6zfvrD^vYlLoZ(oYLpBW#ig5NpCrB*)K^+DG3QFsIX}Ly8+7HGCKlQ0RQ2v zw^0`4gr?$TuZh%9me0CSC07Q7MJr_+Xad<8+VQBz8<>-x{H{t&owmTb97BlIx*FP& zf^AP*2X6;d;&W?+`tCKfRaJ?o$2195dxba$ssdbx?n(Y{Haw_h^uV%yqKn&(rM2`` zrh%}LATZkr!bXC?x~E$XNHX@B;(24-GL^i_JNA?%3WK^O;M(fFU)URwHSdBSY_K&VV ze=rvDm-7DN#c%$LnJ+k@gUF54MwLNKbV4sAlq5`F#N5GLBkiUlXHZNDHfa5~Xrhu_ zKqd?;nPlnT&f8{ukx~Dg+3l%1`|IhletWT7gwTXn5<)u5yFx05<4Zj2!KS}$mWVLRzWcdXD! ze1YGYcn)7>?eng7&vkasb84S!uh%?}Qoje^*Hs>3`#$Z-20qWB&q0&Z)!)lc;iifb z)~P^H27ic>vLB9VMCt(DjL<~=&5u6?Vhu$n5ONgMbsiZEc}Z5UBwjvQ#GNLJvuglG z5j$Mx4Xu_}$rUMd3UBc{j4EUM8nH2)aEC>)D62Wkh*EWrCBwKOPLFZrf&*ay_x{1_ zUneQ=&%H5m)JI24PIu3_)bHpvW&LErXbnRclZ8+}V`GU7pRBx9be(T>37%@M5lWY{1~3(F~rGqK+O{-ORMVZelr3(>m< z#2G?E=oq)wFGCSllR-sJ0E_-=u9&tSzk^tAURqysSyh}1!q>!XO z7n|@MAwbV|k^v-Z z`$v4rNT(N34i%bNh&hmunvqy2q6i!rMv*OmcMvh}0ma#SlcLhTn4 z{A%P~H7=TYcNiO!G^Tm)Y5T7k1C7sm`V}vi+B~{`>vft7S;}+C3!~Y9Dd>dk>c8uG z3TR$a?B1CyJX`M_Ty5fh^6;tO!#Y>LT<@J`c&Aj?+V&1C5Agky*8^TptGB2cT7r0) zJZ0AJ$*o>m?|X0oiREPdu)fo^`rUf(MB<$_y52SKbgRBs@13WVmb6~#JH!pbQNHSR zpJUYr5T*F)>T+wovAeLdfp456d1A%*$iR>B;(q>(SV_$yP95+k>@=N))%DwA#JS|} zQD+4|_L+MAo~M-U_9KSx`X%~)%A3_>YjJL(?JvBCUY6ghS6e+wtF0a-D}N%V6l;wc z{fqUm@$~;u8!O+Ujk+7_^oxCR1S8Bxq!$cLF#IuwlIpyey1Sd`imgEj*7=o{cmXH! zvw)7HckAx~w8FK`_rSb5dw`D3$M!&6O4op3b9CFh%9V;|BgYCyr>?`KzaBZQ-%E5j zg7dCY8w?F@HmBxK_`SQ-1HZ54bVAh@WTha6M{}A^0WrOZTD8W=R8LtBJr$-$*uJYZ zj~0N%kDo|8@V6)o#0hf)@#~48`YBcN@H66)^~NO|f|8N&E9e_DEli(K_He~K{-Ip^ zA#NHnna1E-c?oRjlU$)fe5zj03L(WX#Dh~5JRvr51d-U9cePZjlv_G&ZID8wHUv2l zd<$DR6Ef42o5V(=+J>(u%HqJxk;oD`ZX=h@GE})dJc3eA=n~>(g`j{!`hm{H(VF1a zfN9IXf8oX(v2bKjR^yP!b(bJsIG&qc+Ivg;l+Le=x^jM6h~6{SyP$ATSQ9t@rd#*C zvA1mCs?$o#VSQWAO4DrJx$CH2pZ!c(a@g$1^rIIo#vT3%hF;I+4c5z}bxxXxI{oC) z1N-jSLDVN(r(NU^PG)ZH5R!0?&#a00z>fY1yakVVOY(?A{u!&-3oIo>DFT5${pjSTPVt=6^D7T)dq0;dRbC_PdyWMI6)S{ zv52_VViJ*MGU)Jl>KcO%6A)MqS=h&$syib8_#Gng`$E2HeWjIxGDs#7RXK% zdaY%;`OnF^XXN%NE!thae0*=K;^?@r{KkX&GB@R?CBZAEdM6q~y#3m??KMJtzDGu< zH&1)J&UZ4*nBQZbrD*dJ@XR>auLfwTW^}CJWA=h+yfZ&&F*(Q@k>Lp<%IKizwnSs0 z3@l{klT=Czlz;+R>ERk%MODg3i}HL+xxF*1e8ja6l<&V<`Dyv}^BpF%-NQyK>$|<^ z@P_S&_G*Jx`Np+1H*V1;x$xIZUsjKKYvak^G9$VU?J#;l4@-aVfxG8#eCg$#n~%{B zfBY^ft8Ok{5kG-93rH={+5n|VHp3zkNQFX-c{oR1AHhKdC{jJl5UF+ci!-=;+APhK zs)SRFl!=F0UFg(KzJNYGgjjP_ zBUdM61we%+IUn6pkCYv%_6WdpgNLu|>`NVDbHn$W0b$;x(ZLk=p~NKDRKs_3kgbq1 zuc~(mdi3{c=kM0S@C}O9Rj`asKh*RnJVcMS8-n`t@cH-u4<-Co?5bI2Yns9Cm(5ag+5YEC zO8~95|M}??m0jYh0m&KTn}3tZ*kQ5{ML ziTx)H9Xf>F-@k9);jCC=8(-xY&B-D0t@EZ#_MEkF<;00giO$*8iDE0vDqKLt1Ylr@ zen=tGkcAxqG}hA}!zC#TY+WLBkBE&3ldySYbxdkuQ;Y$LiuQ*Q!8Ch&i>)@y?=mJP zZhFfBy}FGUF=f@1*5i`Gc5|i6A5@cHrsF`ea2Xbj+VpG(4{L?b|KpxOOx2p2!w8iCVFtyE3a~3yfhr z>@jU*Cn1>pY-HK?c7Q?;1q?Pp7-GvY8lgisB!-J(NA7qH7J}W4Mx)ljFD?aju`&?C zlEUzpnxRVeXy~mZA$hrv4@%0MQ+<+M^7qP2+@0Ywur(7;DOuqKKECYL0V~_)2eIcZ zJ`QeS{`v1q;cfeO!WPLv~^W2*X1PBQP(tE%6=H3*VNk~HP zRg@ASKp-TLglc2O0*HW!i0HajL>IA_WnE=mU%M`ATXj(pyJA_}x=L=o|2Z?yO+?@Q z-uL@`ggbMd^PD+n%9)un^Gq3D-4Yy(*x_p~X55l7Mn}sR&D8`&C23A&B-%W@nVvnM9z?g|xcp+OY;S7xO)B2DaOahaE*&;}%7FfTc5hM9 zYgYD(3=6xgXYaW9QRTS{hMoFq3+a!y^9Q*PF-WF40y@8RU<`~Oo=}7W(cA~LXrxvk zuC=4cPETN)62*gE5blV${P;9{$H&};^LYkej7xlolQt*A-1qq>#8p(^IDKG}e@fN7 zS+g#xDbBgHUu03?S>ZkQ_Sjj}UMG%DUmSaR-{HBJOh1+W;-tK@5jTw2)!Qh$7%LOY zDWK9Agd@&0SwXqulo*{U9cM>i)S=4@hda|3Srm|5me4n+u%lAl>zg*9KwVIJ)}WyY zTh8g@%NoA?)FvnZMltw4m5gu8iPoaZNRkmDFrAKefwpuGAaV876Cek0#Qc05ld6;& zMKeKI-$huA3uv{$>F>|1j7>;DktHT14jKsd1FHH4!XpMy6hp;EO63$?KRy^)J=ECf zt3Ts~tBYsnO}fCd>hj^kr}Q6mYQh0^)#{bKqN00jgM60@tS6l@rt#Erm3-=5 zW+I=IHJ}o!v!Kruj{1&{+t|$jfuxLfj4GcQ#w0u%enn0eZyoIvv*P;K1L zgn}c@;s$BtcucQ2afN~h`uknTCLH4Uv&^B5$XeTb-<3FZ&JERV+c|6QXkJk~yXgE$ zt}qoA78W}oVPfUz<;a(-*0uITRsD(X$GjD`&~B7*p|w(v2qLkE7gJ%$Fp78|udoTh zd*5lm5D$eHnDOJ{rD#%*G}c0q57b3&hH5DCZg07#N=r!`h%a~%R-q`QYC+RDnCi>o zjjyNSwvU~#CUZzmRv_=ZQ8{_# zfx2`3E6S@p!#6LF9h96rzxI0M;%_=G2)_KAB7d1@%zNjoe{)QQKVn-%VoK$u*M9%> z&ikfRA?-Jbm&I6=Gb(E3AZmH_+3!5_H6ACxYT2MLKJXszj&;j^;KK1(%yeHBj{SXPbgT4GbW)tl;!vQ{GaQUN-Uk zqA6MNqx$)#Oj*46{_={9Y7EOC`BTgAjM9j3%)0E1iH@!sl?by4m9*xtRb={+bTanQKz zoR;DDG~YdBd0M3085NBWjJ0Lu6E8b*&+X?2rX~-^K_J2^MO(JhooGc`6CS`OKsM-T zv0OZsBw&?GS35!`C^s;1v{-=_2$%-Oyuh*);3BO^99KeBCADu~+RT^Q4_f=eyhl66 z9gz3_ah~`>?h?NZezT*aJ%~@*lGZ-kvr!9rVbuhBLVS0`vIpG}DpM1o&SDmlSp!O{PNh;R76to@iQGeZv?WPpqnqE+WR>F)pV_E2#v{)D#9Q=M zS=1o+mqr^%7Akx@x~2dv&c{KuQYXf+D* z4dht@t$ZVEAquq;H4>1v7{Fek1X+OqqgtkC_2%|8kV*?Ds0r=X>dsqnM$c&)V%M-+oqHW#4cN5p8QUTa4C(xPB51UVI?4vu^YOv*uBWrW-xpz!!W_EFe%Z};SZ)C;r@#EKKc*=`&YR^JCS4^8w zTs5(3)V=llSIrGfD9lZr?Qe+f?b;IS%PZJCrf_=6nU{~KS(uodmzsaUh|%k^hD-Z= zDLqAFmt5I&C@^fu*fUyg=(M)IF=5Dz1X`$QDfEmj(27_qy)vaQ(uya5Zc#7z|MT$q|lN}FDzwtW} z-nn6J&X~;lvB9=QRP$+ueG}pkj~)bfQ(#@<&+Ks;%#ET6M;m8B+V*IBLjV3aXLw+L zY@0@y_}=})$V4|<*_TX7%rS-aRQ>u1S;_~rN{gE>TNISJh@nqp3BYrVDfat2}W^{mR zfe{mT{at;Te4uH$w=%nZUD27lhpi*Ka=<`!)tXhkB2*Zbp1NUePpl+s8`3ad!wIBO zm~Fih@UxoBm4QS*!|F6I@Xp$uSkh6}QY0 z#le>@d2D3Oq*xI=e$}O0?v&n+7f#$W>yo@wWCpHk=saaFMegKSoAiGCo>(`5s!BEo zRo8))K;UNR5CTnl77cvp!VkT~%hX_W<`%ZZqEAafg5CHyjy3saQus6yUJ8(wgk3E- zmM#JpPxAyQT6K&PX^nS)t_9&{9hDpZY0}PVWdxi87A$jaZ9F)HKgFJ^4rea7Ii z@dFMtHx*6DJgYP{p5dLj6yp5A&6;AfrXU{m4i78a z&QnR9YnfL+@aj#wSUcB(6w9@lDa~(A>dv)Wm_ln0xc@v1iJ>s7I@4&L0x@}p2d6Nd&ZMR%G!aV+?wrV0LNXw0kwWIfBW^01zMvQG76 zkRUc@Rsa;wX$tGd(c z1%DQcPV9xGQ7Yd5Rlg6LqGL(hYY|H`vcvno;eD8$Colhb96JA^$3LKWNmE!#RO;Li zl_odLI0rP?Ek|6$OlS^kiIHPQA)t80P|Q7z!dUm9c-2r0{dr6rdlwXc*A#NqX%xn~ z1H~JL$BfgY7~2aJZyFx+f1aa`4FL*#gXbI>CSpu_V@!HY?+u!_49%J7OZ0whWoS%) z0~-3sMtLGT@6@>yEJix5! zC?ZVoZu<=}*`0zF8e@WU33IByeJt4NdJCAzKRwAbuj1^F0+@|Bb2qq&G0!4Yx$7ff z#s}9Crt^ANI1WKQ0nCI>wBF$S0hV+nxL$&+WgW;}&}7 z5mSP^+9G%tFq1ewV}o;GH^`qpz#guLKtmSJFxqKS>5Ger#FRhG9DM78eM?$KfUxFK z_i0Uxj&U9<7#zGYs5;MqoNSI87NP--Q}tk7 zb7Uq9+=xj#L=@Iea4h(9BkUY3-s-qMZ}8x}{K4Q-T2>wil$Vu4N?9=0LeA3)ht7eV zPiF;(Tl?{)8S7{|BUo;w{r6z8yBupS`?Fl^sFJ+oaZQ@QH$)ah-!N%?A4VVjvN|ej z%I12#>%Me7TrqM&`hdQJhGvYy9mgFt;N%6To(?B6pGHH-n*0!_Sl9&^+nFyBLGS15 zu>Lc@tlIVPtwTp;4jI&UKzdfrNF@B!OnXD9Ttr-<|^1X z3Qaj?I>RFs7~8cutw=T-Vxz0)$%T-ck&DT7s}b1{`hp-5wTN3<)a z*qf8<6VJNx3(v|cvA-(t`Mv(!;^KvYJc`+D`@POHTyG#|rJQ5=wEYifVxhcHP?F9f z7xhpg8@tx&+|?-lw$(@AYGYGyD6)R(dY6MfeX%q+t9kvp5yiu{9ct~PY)@e?MD4|c$zCNX#e4mBR%d4OfX>V_@M zB~Uq$K1N2{Q8Lm6uGl%;ZSj76&+r~JIG&uEGN6C&7>Yq=dP;U`cH+SP$peyc4rP4r z`0jD)W#Z&AaVa^?7v?$D_`wfqYwP}j-ydsg>Vi47wIjt?K;KU2_AeN89x#G?38_ft zRM0H=XwI|Ymc$Bue4@h9WcVP362ppDS`m#ef_6Q&xMDdpw#p&$y?aIX?a?O_nldH$Iz4b_k%IDdU}XVQ(>-qg19Du>g`^F0wPNvyb&x*d3(RC0s%|)cB&=gNJqxo6|5oV*Otg+EJ3t6z!{_7GID? zPZ&R*^1m}J7zrtkK968IpwOS%oopqhV ztou55pn1yTSfEWtGO=0$qgpgW*ky~4J~)8FWZ5LdwC5KNjxAVJC~K>p=o`Q^cuXQobl1`_}1 zI?o#E?*G3iWv6KoHMJvM=TRw8x{uhOV7>cA{|i1&j@r-``xDJab>?(@Zhg>sE9*;q zs7`lPWn3GHb})=az-WfM>h%AuJRRM18c4_A4ONr%_6E|Ep4RN}KAmQ%a(9 zYVeq~qw|l*7o(?r^c?d4PdzPND~7HM9@{x_;!fniW0(}G60hQ;3C$6419H0E6e%K= zJ1(DM%-=cs#fr+_G0908V&0GhEOAd50!uiz^DBA1Iv>+QYc1>4L0Hn3eE8HsV@bmr z74NDQD$F{^c`Lf!`p`|csSEJ7{a4;*cK%ad&Tlaa)SSD8?T4@rs5TWQ%bd5}9DFRMd{#to%#(p zuXo-$vBGR&8|H}1unU8BXHl-h+NwvUV+$mGG(|gxb!ZtGSc(#skS}6nD%J$zesElG zC}R4+#iA%I6ST{Y2RptyIq&7We)#Ovdsp0k`>q`a@4Q^T6}&dsE-n*`KNFK42(|{V z$7JSFtb6t26xNd9^C)5ZR52R%bF`IOnS?KkG&zm(!F{YWW17cbKBKMZ1O*coABsxL zFe4R~jSHc~e%nqi%h^9uTy~iqJ*%lar7-o9Rl@rt*3a=QY&7=T475Czg*~Ea_78Kv z_yB{F4<$~2fXU-IdR#u6otZ<{WJy2_m#}PU!G>9B3xgSRv8nwgic42qHQ~y&%Wj@_ z=FDT4KJ(exx2_C6E!yp}Lfbl0yB1p`lBb=a zjWLA!__i&F?h1YrJkkDNv(I{M(bM-H`^yzq-uw9O3)b8@b=ss4cO5@&*I#+h!0@>H zcRlt^X8v`BCBNIc{k-k_E^Jv}Ti!Z+_H)n)55~SLU5}z3#?nmy*qa2q9QrU0N3r0G zJnUp^DdMT`lFqXyMB&S2RBTkN`PzxwvJy~QsR6pU3+sOr6&x*A7V_JUq4Ez0|M8C- zZ96=!azJpBn7U29b1HvN@J{iGc)R(UvYbWf9akdf&PUG0LoKwA}Y?}H5rRamL&ym%g@f@&n^S9iR#QJlQ=mR-9R?VeJ*Q?9yI_`lg65xJvB^o_yK4vlI2_~rM4 z|Gq*b2ag@Pd*^LJOue9L)_v=d<4BA;jvRMeSj7XIy4zQST>f5yqi>;@xLKihZyVcc zaPJ1p8u6N(b?QC!*N%g(q`ez|#6+dSDD|X07&(%FF^8YN8yClhVOWEjjp=M%0kKON zpBFLmq4p&=2Q%RQTz^_huO4(c3JtLI-rv$P9%G`tq0w;|ZBMgNT)OmVNo-%8C)u1Q za_+~crf;9#vTxO2&OP$={xx&<%nJVWO3T%|&t1J|%y}dC?mw_2W9y#Z#{Tu;hO3$~ zhu*oR<=V;j-G1?bA^A0PDV3tKQr7h#%XdL9SoNSu3vWyV;1L}mN4dhC>PW>yB5vcRz&w2D`MPU}Ne15fzi zLdoo-@0f_EBeyZYw$q314t6}1-<&>q=^tO6=Z-EswDr*s+m2qolxiQ{^D(>93n60x9A&x@wOkrKH&P3 z?i+t0cepHwF?(Zgu33{VG& zrFAiq&i;r=O~FD)IrXN$FZ=P!oBqE1yKipX7knc43}ZtJ7Wi@p zhdnyV7%~R1tL|63N>_ZU`r*_ZarN?zgEyW(^WfB3OWxV^@GGOXE(-o#%4;tbspFO` zteM|bUE4Nu{GC_L*>+Cd>%7urNN^u^?aV`8Sy5SA_9nyk_;nsd3`rx%;Li&#&&lC0)W=AH2ryhaEaebjII*-{ZoVlA?h| zWz_NJ(?Rh6O?PYBIHwHAqH?<1{C|jE!G8qXj?~Tl(}FvmdF){2wwm!}@|}){vd?If zeO`IxqfZNRt||6kd&5m$R3!D+XQe}33}TY%f)?ddYYw5xb^LKdQTgVK4y(rBr1x}E}Yo%N$^yUs51_) zdg0w~kKOiGlQ_BK`l~LVdG#DIX1iR0V>s`SQIVI$2cHW*IcLciFTWG~<~ETQ{L2Hs zzjD8jlQxbz^ZvES=hWbx>T~3Cw|*8C&XSj)`tn!te7^ZN)X(r`qWqI`HqK! zce)~WE&K7W)YC3OZseMtwuIK+dDCL?nV2_bI87A#B4gCUHX1Y#pW^cdW)I57jX0*O zH3u1T=W044)9vcLKXLKg7xC2~)G48}m7^Z}=C-wSubvhB@$VmZ%-BAy`Px(;+^?{+tHFPp+0?y2IHS5R+TGZ;3rv=#*S*_o(Q zRKi&69F3lqHuI20($&)%F)X+)Lrl7N|UZ?0k%_zWsdOD~D)w6(%dwH!Z>FYIS7C;Sn$0aYffK>r*kAhgl6% zdd)X#eYrEtZZ!?1*N#qvZ!Y=v6+kOc9fNa!u$uHy%556xiBe`Uk{30yH`9{nZ z@R`j|DQ?;3d>kBT&H#K}Ks>GZHn$Vf1?ZMP#TwmFvKaE7nO58BF`^2Yb$w>>& z+E~A6;ew5`8dUJ0=(%)7@T2SY20vK2K=eb|O$sg&m&@B#nB9yShAmWfn4Q={Wd~`) zAnhDT!wdtYQN7jkoAhpCKb8iI7-y083B+K5XdiLTqBDQ9XyH@8IctF}?hJm_*dmgy z7M1TV4Sot)!yxM%mW9tpzmPRb?u5Pc2Yh|Q`YX1{XJUpJh8kLrC8&aYor`qQ{472M zV&b%S@30;?OoYxE!~sqit@aa{Z@snXt+(XP_ZFQvu?U~Cr8NqZ2aD}Gd=yzvXRVBqNgXF-l6r69!gm)f zB8?x_IY2HJ)yTEh(^JB4FO!R{zv6A1^A@u>kR(V+#PLHr{Y~psgus0$c(OyUM9)l9F01bPf5UdB*IYsoO1^sjw z5HIw>2@-wjQE#Zh7$xeX5_wKtac>L9UBJR2yu9@@n&A}0_2mk$C$0m91Z*Tqa z1-trG)q&rtFHZIO&0p6cUaREaU9Y*Gu`;m}dtT+)vluW)$WG zMfbsdHt&w4p>!AxrS&c;3?VanV+|->K}J&&3V*csMT{8SoSD0F*yQQcrurI2>|8r^ zX<<^s9g)0VBeRt&iR$>;CffUT}CH#{4L*#14X&*GTG!9IU!a$nEX+6DFTedomv zSX$~$&cykb%X`Ydbv!Tq9mV4M_yvgsrcaLz&O)i(1(nDCdVH?{gzvg$zdfGsrurw^ zgF|F<=O(CT-~oI+Vq2d+mqznP1zKW$E-mbe3_Y&VOO@%Hw!$}US3fM&OAic}WwJTa zQdA+k&wiWhITd}%;w5|lZv(Kl~u=xak?9P6du(#lx{uLoC&d65FAdUX@ zvJOL+g-u_X58|g`Z2iKMh9$lfKWbow_4Cgg*tXK>YZ!-hS#=`Az-}u=EHiMJb&J?) z;BYHX78w|~*2-B1jTW~&X*B!p?PmI1$zLsg;QXa{`@@bo^1 zxwRu?8??F@e@h^PC{|kwtRjSJu~sm)1<(?!37i%KY6eXk@DwkS*=8i>{z@#SfMN;w zHG!rTv!q3cxd;9bYb2;A!W|L{<;1)YtB|^f`n9zEoMHy(DNT(WyOf{FNkMGe5$}3V zeG5|8$SI)oufa(#MOHa}evH-}Iscn@G(u_$c$1V?_=^ye6`a=Pz_mbb3ewn>e?;31 zsuZSL4}Sqdq#!J%n7FlbS{j&!Vw!?-pwzV^q<&t8l#n*Gfu@nmR;RlS=@`#B&;si9 zTskRO@Idh)-pz37xfx-8jj{%EC=Zvg)Mu4@DTuMIom$`OtSYQ+Be)%TlM>1&r!Kc4HKZjg@t!n; zN~Q@u)&3>O*NKSvxKJpayZ^H=lA2Sr``7U~!up|`YoCuU02A$K#c)|4Mu&9XbOdG= zqF_1oKpWc&TT*(X-R+CH2JCadoK$~|krFU#GYDgiB&_gAu~MxxE8WUKe~VRfsHwS_ zY{d@rn{XOWmS zJ+lDiuoHUp9Q5aD+(zu?hEdVKpk554Kb){WK$xPf`2^&9J?^@Vj< zL}4nS2kutvC1R`&D=2!4KBBLPwK~xs_Y-lrzE@zW_W+TAYkUWZMBFo)EK)?ONE7MS z57xg$1`ajJ64^NQA{PV2d{KZ?W{U95%OkwFq_f2O5nsOoq7)YtmWv88SPT(E#V|2k zoFOVjm8iB(Snr7uqDIt;Ix!MEyhh{Rma*8iFdpAECgO~h$v8LZ9x+8s71P9YF+MqMVn|BtE~@lpVk`Ov$R&M6YIqWagI1woQE@dUbo)0-o!bx$E>%k=svvJ>qJyS6n0ZiEG7m z;ZkD7kA)nvV-DIaY)=H?iTlmd&Pa?e(`{KP&{N^ zi>Z}Ah{NKK;t}yD@u+xA91(xUZ8ComPl*2#Pl~6+)8ZNNtawg5FJ2HYioc4Z;&0+5 ztSNp)yeeK3e;2QdH^iG5ha3}ciMPc&;<$KMoDlDc_r(X|L-CRL7+;@06`zTd;&btZ z_)>f&{wcl|--vI;cj9~TFY$x;xA;-~BuTho z{JVTzz9HX~|B%PzTk>uBjyx{kl_%tT@_qS%{7`-*KbD`!PvvLwBn}MtLVhW~lK+%n z%Wvej@;mvx{FnSe{#*Vif0CzUhYZS2H1GmrMeM)9bqH>Z@WWMvid0c5TJ=ypRWB8T zbwhnrUlptRsW=s{`l|sdK@C)cRH8~!$tp#qsx%B;GE}C@QrRj;<*GbP8yBcTRfMmK z9_3X&RigYVph{JlDpwV1uo|LeNVVVjZol2z)i(08xsaC9lXjiM%8nqTf&Gl-7ItS|$&cm9F3)DueMYvFHQWvR<)g|guwOMUZ zTh(Q1o4QsP| zE$UXaU)`n-sN2;Y>i6oPx>Frecd5J8J?dU{pSoW?pdM5YsfX1ctiP+n>W}IX^(XbH zdQ2Tre^!sHzo;kFf2k+cQ|f8;jCxi*r=C|Ys29~=)lu~~^^$s7y`o-Kuc^PQ*VP;9 zP4y3TOuePvR`00e>Rok0y{Fz+AE*!2N9tqsiTYH1rcSEQ)fehZ^_BXk`dWRXzE$6; z@72H559;6QNA;6Br8*QA2xB|9z^3 zEN1QEaF>9emh{7+GRL+F&CDC`6qV~@4R+2e5@ z+eCYkJ=vaOPqnAn)9o4dOna7nrajv}%RbwlW6!nc;iiOodx5>sUSv1ei|r-&3espV zvzOaV_6ob%Zn0O|tL#?0&2G0>+iUE#_Bz}svcWzFw~n4?pKo7aZ?u17UubW#FS0MT zFR?GRCrlqVPL7xowz|2|!yf(rzz=Ki98RFurxT8gKB7i-QAI87g6&ZY>RaulaNMKY8=Dq2xEt9E8*Sp;XyQCt z$GK5w%xDw4M(xYdV`Ss9s4-o9qn35SIxZ!p#xILrzNEFGp}DEPc~Rp+_qh6ntJ@pg zP3#$xYU7V^kJHI+V$U8&$!mh+o}fcDcMIj$rRw#Ux+myR%{sH1>sPk4wYRpcT-u;& zo0q7D<|SbhP4Zey@+Ru!wXoM?;?mX4OX^!!uV|`Y-QJ_6`;&W$mfYG+a=;`lQ0AVZ zCAVsCs-|sYFKTL6mPEC6!JJl~x61g{?rA!3JA3vtDxh{Mpy|4RR_g+qZc?z?q+q&E z!D{wg(_0&xm$+7w+hcn7`1e@d{V8m^Dah5@kDA#Puc)=%;4{0y>$_n0Y@Nal>_yH- z(HK?U5CUCIEzL{XBC9AanyfwqhE>%vDy+VN{ium;P4#U{HQdq#o4hGEeub;OrMac8 z$D+oD)`qsmHhzk%YFfFpp23Lv=9cz`riRA)=-QQSjfeoF!)x2k`_YIeqoOCSXru-} zKTPjN9651C!xBx@yAk9+ljUMrc6CF0y=!FsiWT)7v62dZn2~4C#w!JRu4zjF*(A_4 zwtnTxdMNyg1&iwC_|m^rlN!~Or7f&@Dybh=|S}N)JP^tMz*)C?j1Q-d+H5*AhycYf(c} zdwrPUWpBU>MK9YqX~fL6oRikXNz;+69wD1o%XN)mEjoRwb!m%!Gs5R;<3zS2ktPCa zB@(z0Kg7q?LOCBze4TjpIxU{jhN&(#^O7GTIWU7P&F}FVU$=#RkM0Eg9>2lsX2b8% zmDukoGkC3ReouvY))mz6(T$VeGs56&jbEpIukMEYUL)6Qby){Ojk?%F~eMY{|$Txj}-)H3ejC`Mw?=$j!M!wI;_Zj&F-OMt;D^ z4H&rrBR62=228q5r{ND6xd9_LVB`jj+<=iAFmeM%Uckt!FzK!Ex@RtFt%vclR(mtK z6?Ly=FJh)sl_J(Uko!zcxSl=A6`#i&=&`zak+Gf@EokboYBgF?vWZ&T8Wy=%G&WOb z-PW+MrFl_A!@7m2@u1RS%jzQP7dJL~$}9X{_sWJgG!b^~>Q=7xKCg$5l8g7eP+_=VpquUUdX7hqM`8=gP7Orn? zY-(y;$emvdcbp4b&~oX{h{!xx)YH2gu9cd=1`}~E8lR_3N6~|WNjNjgxJY~+4`(ra zE?W3pwD5IOJh~~tvk9-85+0&bh~aD1^4961^;PSl zFR9V0RZ^o>tE7fi*ITQr0DR`-t<~{`ujzetC9a7}TUwi4E$mKbcQv{8(w3IxoIQRW z$m91Iy$%??3Yh0o^IU55yVU4+snPFJqu-@Qze`QMDmD6DYV^C*=y$2n?^2`RrAEI? z9eGC2OO2kF8Tn;KewmS9X5^O{`MMB2Sn03Rr3(|!Mt+%*UuNW&8Tn;KewmS9X5^O{ z`Q=7_xshLPO{3x}$5BVRY79=~Zs{dGpZZe%?H)6NA<;~3D5Iq+J3z}STW z-IxQf$448H_;L-8}9-aPxu@3{rJ`5Q9FrfQIZ>_GM z@Hv0rbN;~R_`&D=fzSB^pW_Fg^9MfX4}6Xve9j;E96$J6KJdAG;B)-obNsxux_-hp z@^$^hvyrdsC!URbT|e<`v0XCq(NPdpp>x_;u>$k+7~&qltkpWa$sKjEA7>-vdj zlYU)4@odts>nEN~`gQ%pvq`_MpLjOu*Yy+6CjGj8dTVw4gm2QX>nEN~`gQ%pvq`_x z3G4a^ypgZ#C!URbT|e<`v0XCq(NPj9WRpYV-*T|e<`v0XCq(NPduCa*Yy+6 zCjWK)#IwnNT|e<`@?Y0aJe&O2_0wCc>nD7Z-?~2H+2psbk9aoe)%DTmsjBYVH9x?% zC#;<_lExpy2fjFw;nJBr0#69uj!#bdkcIhb&v&U+fJ^jGKzXXr+t@j9K~&v2*Hb>kPJV}9Y7A1kVF zYWF&T&jCt$anwCth$7N*^9&>SXV3JWlGXjaes;2cUQ7Fm`qt%Y@w~+@{N^>X%VP*{ zt+rOG%5-Z3-_LTqCDlbuEeo5*SB=uo{y^y2Ow#i6gsK_6%*<)%+00djp3Rh(^Xwj7 z)P@wh$FLVQnl;P7taJ>=jP6oaM)Vx*45JJ!D;>kpX71FyUQ>Rqx92ij- zN}A83?QZy{(rUXK&)m+z=XMo7Hxcl;iGZ)0h=8&00>-`z82c_@?7M)m?*hiY3mE$@ zVC=hqvF`%Lz6%)pE@14tfU)la#=Z*}`z~PYyMVFp0>-`z82c_@?7M)m?*hiY3mE$@ zVC=hqvF`%Lz6^FZ*qAA`^RIDGEM;B&tM zpH&Dx=Qn)LXZW1Y@HwC18@YP^2hT>Hp6{uv*7H5^4Szk)gJ;86&+p*b@YnM@csBg~ ztPGT{qSiI7&7>KWxNZ+6p6(C+ZV&#F?hikEQ`Y@WMfZm)euxP5WD%h*j_X*7#}^Um z$P9+Fj2c|?%w0Y;w&q#)S|!F5EitBOi7`EK_GdII#e#;WmbFf&g=rDP#F_Ui=koCQ z%e4@HIp-&yweWx$zXi)Gt0#O`Px!39@L7G~vwFif&9|AR3Fu)5 zY%*@X@ZR`(+6T|vyx_fQ=JoUt@a9=h>-cNnVaZwyF#_WZCCBs z{Ips@7FLF=0lYz71bD03j;$0s)DFN{^#S*4bqn16>LA=hSRF60mg7FS52{Du9#Kc& zK7(@x1=dUyW3MFE768WD0;CjMSCO$X`1$dp`zc~%z^tJ7<;sa%teGf63Aj0LERLhp zu>Mmp(L5hR?ij7S1iX0PRn4)m%Q#X(*Jttv9dQgl)(B=+%}1on=Ua+ zW`M$_R;?+MEm6gO2r`q(>I(Q3C6cpY(S+`N84GC zcCa4pWIfu=dUO@*(H_>Lt67isvIc#@8uTS=&_7v&I!J@Cei9la0;D@)H|dVJigZWp zA>9%CNO#2bq&v8C2D*cTjG;T?bJ890PtqOHNxCDKlkP}bRn#W0A+3=&kiOuQ6ljV( zNSY$=Bu$Zbk*3H$k*3HeNK@ofq$%=g(iHhO(iHg;>4^NCbVPoMHL;d|Hh%LF(I4S2 z#;*xK?8Nb}!|x{iupZZc5q?|E^G^7C@Vm}D3#j}g&CnENim2tM`cp}n(1614@cO)VumX&yZiaYV5M5Lm4adA^3 zQUTnajMzk^!?IH5r_4@7Y7zGF%w>rO60wsg@&3faiANZhka8&TNrKXj7Hmy?o}iSM zGSd=YN_-t5wq;$H_%`8+OVf@ezR%Fk!p9R&C4P#x*Js?4_?5;bexG=Xpw!_7Ta&0J zSQ$MtVw1uNDtaR0?xdbcvEb5Lye=t$aK%S*;*wGbO3Esjom4~^G!g-``tA_6>e~F z>8BhhB|4>#rc0iic1%NQa|=1AP;Mcp@I?ogyvTv_f)14SMLwq+x%Or;Yjbxfd6|Pt zUgRA62AARFMoOMj3Mrltt~7)j8p2gOxZ=e{-)b(!-xqVcg)2xyI^I>jDWg(m z8)*|l(6kUVKLx!C{Yz=eTxOuw6r;r%kEfh(a2GixowC)@gOreNr0j8U9_a};A+Afg z$v_8E4rwTBr*Er<(vGHbJIJln{Tf%WCuhG2aX6FP3cNj%^0vXfl)`O1hj`w>h3L@M z{V#FvJ2gJ_xRbWx(v(j%7f;U=qZ=vTJ9H_h9J*AQYEoHTT0GPVk@>A@Sx-1EL(vyb zxuwQBxYPs(*VVps)tS^3Kld4^6OxTIHw&-3-w!Rvz#_NZLZUkq%Cq<$Bdq7re0>b(^hJJWJ?*&Ytl@6m3Cp;W`o-hv~M$ZW$e{Bvd9e7Gwovyb<-wTRfJ3XHhXXO z^@a{Mmxj7>@nZg5gL@_8O#>azFl}AN$&9ZJ?uY!%1`7I&US-<(X&RRqnHgiC zIHyITF^Rzqa(dIuoJ?b1WuMIPo45YV!5X5`iNRIonG|K#7*G z!OhAv>BwB<*c&-Vow#)Ac z&CfC|bykzp`(?E{z2C3m)`jTK57C9jDP6XAmkn2B@*88sJx*Q7x+&{`jzRJ4tV0I+ zH0yo??R5ILtixGH46ZfHv`FZ&&(^qZ*r z20EGjwSj)f4r(aJ&WSY8pqw-V#pJ~O0+$mSQSEcA@cjLb7UvAksWc(#a!d=HGbLx1 z!OhKCq@ldWbCwz0${bT`bI#4V(BL-bY}Zi!F{l5?+3o0a@nWZq&AGveLC(RPdrjDf zowvE)=bkdSqdBJ5<~)(}YzX(7fsW;zFwn<2Ul{1yoF6rWE$60{%5~?O+L+rXx4(W{ z^hBGc?M@J4~(omxuyR-F8|)#p+-h^?kEFI$em`O*}3x#v^clPK&`p!G?drV zY2|az_Zhj}aC>r%eUQ5~cc%%vC-*u7-IQx;UhW~MSIfQMX`gcs=N>V1Pv$;vpqFxA z*HFm~xo>NzxHb2E^Y+u+uM8B*@jRIqu5o!i^I{E@ke6bhth@pP`SQvQG`x7efohz7 zrfU|bYX&24MxLouV_W2HEY^&zyh}p3T_N0FClB&&aq=MV zZl{mWd(i2v@*WT2Ud(&N#Pm(4&B;6NXi46OA>7v?TxbTUYgXe|Yq#yRdigPqU7SD2 z>67zwoE{>-$gu_T{Z8ASKRAR7&2;3~g>a!6k^EVX=HxGOdb<3T`KAu$@6SJ1r!D_N z$3Dp4?(}r|`|@uvZ};aPG|;{I4;$#w{3i_btYeqtzvlF?T{XFDrX&B0d{fKvzjdGj ztH7kQ_Bi63XHZFcnVD2Di~T&ZRkc7Ofb+ir;jR_U$EHVnhIJCw65TM z16@?G)j&I)KBdb>FSx0|)Rcll1y0X2yD&?KfIZ|hVGldHTX4kD-GV1Wxaa>P?xhgj z>mjxCWUY_{v+<}5Z!_h-O>=QIfUEb#09ffPF%Ki%_tS_ zGBMp*XliKDu~3M;&gir7`Vi+^LbyBrBkt}H-Gd>zM?$!#L%0_mxrJ|rpLq^NOpBM;Y9N;%Np7&AQMxDuctT@z!GQpNsc+CKq%up1o`KyleisYxcKm_RW)kr4%V7xht%vz~SP-0tX!{&v38psbRWMOg%HG z_4X|AEcG-~kK@_k+2z^jK^x)O257J6dO)}MNyd`aFDUTC}b z3%vc28epH>m*k7~^#Rl$PzKq0K98@|H`Iqd&o|09!8gq}+c)30*w^H1rBR3PeBVXC zRvsuB)-+J;@m)u`hkwHMxE{2GOOk89ORhZ5m|GeCSpEZey3s<&1>~w9`0W99|HSxj ziAE$7ERu<*_yfZoN(8V+KOgu6Gv_EYQ*X7>zoaWV|T zx(+htI&#%LU<`Fuafxf$uQijEl-A3!EI!k^En5obrQ0| zok}k5N+ftQLTx0uvYPndGG2PS#GMFt8Pl}8UIN_4xpcAnDBucLJ=}|3kHFoDJN|@< z=D3Zeuz)84KbCS5FvVo7I|c4>hH;2D;Ey?0)B^~)nmOatTfnQBe=YN06*e81TGvN} zXP&jpb2#x)!|5$t$Wmn#Rt+bfsw_AJ^xqN2-uMB2GTPI7G9xkOHe zeGi`Pq(9I!(#&?2_z~;FJ;YNbu&iMOOTq9Ij@vs-Ifcqjyu&#^h2!uJ(TL9}4&pwp zzhgK)U*SY%A;)kkHiu!gm8=Lm0R9_@n`$F&$VrOBGLvd5wNEH@DwcCKocO4#8Q#Tk z8^f%1s+HkZ#xG`gF~KO=`@wS$VdNgdU~L(@jJbo|WlT?Nxv(0I-CA;03gN9>rWwXH zah-b=XcE}Hl3eg7OdCsC$GWkEIqasi+s#~OqZl7WX~$_iD0jKo9fz==b9sFpBo0?H zelDkdE^)92GMu4Z=DC4sHgFzdT@g5Z$Q(Xo4%hPAYnif^4oWq zLlMWvM|ef2@go)7N-Q%eLMYXbVAY>Pt>PS5!DY0AF}0jCy$Kfm2u6*&0QB6mC~hUx ztAtmtGW}Ofzdj6iz{t;n7qUdWl{j}8?oNKYg57?Md6a0>eC9BKL($2@LLOzzK88Qj zF4JGga3jP2W>@zeyBI%#-EXza((fhMPSq~a+gS`}aoES0@-c!{6T@4`72hz8SG!C} z_p+i@abwMuT)>!doS)+up1|;gATC+JsxT^%e=ueryH~lRfFHxKt|?zK{3VAyhg@`i zaiD=!0r&*t-=cEIaqQ&AG5vb&vXuD*tDV|q`Xl`I2*FBg|;vSN%aiVKf*LS zJ6;Co3U(VQR+7e8LVm;UDh?G%uB_#_UB+R#O;C3bjY{RTq%!^eT*~(|yw#PBP+JLh zB@*71NH9*+f)u+4)7-`M_cA<~@s|?DzLYTPDdzkXzx{wIKVWzZQ@+KNZxIG3ZxPRQ zemmVwB{DrY5o!O@#cuE%aPtto@(_)3x%-gIy1`b8+{9^&;570bzV^$^|K(s`aGt^Z zXAmrRa7=b^iE~dUz9U%m44X$T*P3g&1h3_?o6qGtpX0WY!@|A>pElwt+emN4VaDv` zw|j&1HkschsGp^L(81znpoNQ|jcKjDM45 zO=amPndTg(IVTuRJUN~g)BKL{zhlZLIqZ{+Z()23#Z%qP^fxp92gd)v^cQn{DmXqD zb8k|?HF^WnZ{W1B=3ossrEwM0*E0RnEb9#B_7#WyifPVZ4s*DDn8TQV5=Q=$;pv1& zO#w#e7IixFnNDxTzlfXo7i)MV+env@jie%(TO@P1jJaJ#Fzgd*g_6Q(G?Bz_m+{+W z3|~Tcc?rSdN5-#bo`UVJ^%NFYcTwEdbA4RTp#;~;C;9D@jA>z-7KR6MYzIprRvL+2~3&5ef?oh*I~8_)-!%R!}*+h`3z5F{6r2rfbncW$uh1%GnoHw zqEWjEqcBE>dktf*VYq}sVdXvW@&e{|0hjnd<~ERH%VPw^V+6%5FwWWsy&XmLb`8sc>uVu@8700C3O)*);F{$O4tO}=?)N)Mfne!@+Pc6r% zo_M0~Lt2EJVCW>JZW&a+f+jG`bzGig_#?*uhT#CYg6&L|#PAHt zPcehXUo$AxVg{uG7>uvQ42nPCN#MMcIV`1^00W)DThdkT`{XE+0(=!P6`bA*PJ1oG z^~^`oSPxo9`P0t$Sq#r37^iSjDa>PCn#cM-kH?1foWr|lG=%m9u9%@?&gq(Ik3p!J zEd7M2K}p3jW`K4Xe}UYGP&W}q+{745UJJ@WOk-=8@$(3eQ-9&Y4C+HJ;c@8@VVE;c z*(OX6c^%vo4!cRagh$v+xEC?zBF5}yS>F@J`kuo^Dp;yk9ARJ;vrBj}hj@yAGKTvg zv4}BWF^2mrF@m`bB#hjsU6!(uBpfK zYnQ_=p|EleV|4#GhovMiW|elCa)g=<%6W{L$C&wQJmS-rFtGXAWm%ta{**B#&)bLy zffmM!XUtOVGKUFNYF2*^8`Lgyn9e!ShbfP0m+-Di`xR(NruZ{Lz3Q5S_-x^~TbSGJ zaxd_Sgt79u{zht@B(1}(syE^^dvGzknJTfnWsIObZ{h!8H&ZrlP0h7)t#s_p%C|Cb zqHU3ti7_A^;HC)=`~!0%b}d=&owDenAZ ztE|pAe$IW*y}i9ai=`_?$#Pd4W(e~KvX0e?Ep&-8ew5lVsR#wSqOQYAK@kgM{IM9u z46>~;X2~4!kL`~wi>N_mfthF=+3y&Wp~<5A@dpxux=kcp?mpk=z4vW_3n_n%<~)7g z^PXS#+;g7uyl*+@qqXYY(zVvVQ{-an zIqhjN(=R=v=erE`d+Ji>PIfmV+Z=w<1or01MwIsNQHFC139^a$%XJT-m(WL$g;y9L z43_k5{N72Bz1Tz8M~(XD3(rax&r8w=l2yec#C%dbjP8rSCVX0C#3P9*7T_#s@8)z% z`LgsPPYcD5ihpFUR@}Svp|dxXg#)tRE~VK3lXL+bhxpS|GCko+b73A=UA~F>C${@A z<$~?{bGAQGdmkGZJ=&jG%Xd506BqY@Ec5tY(6!dIQNoW2y8apAmxLDxuMmzB-XQ$$ z|2CqhC8Mt0m>b>jCf2xq2oFP$97f!3_z_QXroAux!aR%JnVZmOXv7shkYvzF-;;hD z-KPhTsq}k_*Xmb1pZ+a+R_|Hekh~rjX@xBOM0)WPt%QYFGxL#0Odd-=kN)TMU+EQ% zqFm~=(09T9&t}{IdD!-Up49$NKa*Lay{M_BU+v7hHjb&t(|+v-wdVuILQMI%JkvvI zRffh*oVJF%mm`2&n)*t-kU+WRwnRz!moI&M`Y?g?H@d2huC6;>@1l;LynEs<=`V4J zNZ$Qp>GCCcU&mP~dEef>d}-cqN?MYhK*^VW&fElgg?U!$!$}iJJ=WusCy;uq>?v23 zy7sD4Pra(t*IXfWejTT~xYssp_|}j+X7Vp4-#2;E$m897rz}j&+i)Ex_;PycbJ2L{oXA~zh7q-_@^1VvE7b$Ps_*15TjktanQ;oUG_HC zs?fr?`*@0WFDB_|jx}-ZVd+R}tdsj9s1S_Qno7uDkK7W^dd@<|F2FChhGM zTpqPhOdj27HW}-)Oph%=Jje4EbG`dK>%tyr24~a)3gZa?*^?kw$i#w|`Y zxIqyWu%Ux65q@L51Y;q%krE4`%v$&%`>1~eKOyEO94xUHV(!9z=n6lGUKFE-UDz+f zV0a1&!#+3+VlTujh9lZ_&A#lTqBMjZ{(9dW9jL@6pmmGs*=D?nFTg13yofs_>X3*- zPeL)-2lM9*7(vI~JMM4pJ@sQieDgB3F!7Vj(bc;-2&VI9|&Dp2cRjjg@EAJ%_h>6e7{P)P9B< zCqoKqga>}>bDAm;3aj`K7moadn4{0hR&VOTbA z!mW9W)f{#L5_$rX!{S|4^eFw+O4~$W*uZFh9J0f0P#bzfKUZ6zJhVY@xHo)*tE~_p zZinWuIt;K|{7cXu7C?5mFKpy$J|u`cpggPz_q$BA4Jt%C#D}%v0q%VnLPQ6DyYCAR za@7hgVj(1mb>W+&d<=5LBB&7S!ys)M4qKs0PLE#a#D>x6r^rKLgp(YM=)w4!7M3CF z!*b+jLKm_jtUyi=-N?ppH*!YkL0%iahP*DUM9vIgH2IXPkhg_iWLvlwd3)eVfzNOs z@{X_u*&fy+J6L&Bv~eABQCN>`RlVe;Uh+~ed8wDY)JtCKB`@`omwL%dz2v1{=C2rA z4)3;xt7-Vrk<0Tl#jW6{#+~NugIdT?lQ;*WH7s&<5Hh|_n^#fuEVC~vL%B3oRukqD zWOd@0#gtl4d5R0jF@KhGA7YQrd^x-nD?#(Lj-H2O!g&SaX6)cj#yDIbYUD;=q@2>Y z2YTt}E-iW22!&6c_ zcBTif@_zMEbb|KJHtkfRok_G$6YXrGolCSrqMc7PPW`a*syTt;_t0a+jwx|ts3rdX zm>(|7Sr)OK9feebE#+=Dv2lz(j~yGAqXu}4$Y5AgwN{o+7VN?lFm%j5D@EBR+E|UB z#B(;rW^p%VR6C{8I`tSa_|fP*>y3-!uUf=Sv6#4oI%2X)qZc2R51wzu`{i=WB`crK zzX_}u`?OkEDQmIOSZJ#!E;-}>!Sq`3!6Bc(vx8A70X_cwA;HEcuFgm&0J2& z4v3;U7Pmj#lGu_aEJu8Ip^X#A3@1G+cR7A`DgHWolK+(!>`k}D={w03Pg;CuSW28c zAk8=u_79+djC?-8o;}f===00yh~0s((mQb9&+CmeGj=L+Kbd&^4ux+3cVG+VsZRM zBk8HBE}amo4icZnR+asou~aRtu_7HS_R%inVwo2f9iXg6^Rvp{RO~&ScIH3fFAd-; ZJu60E;vtPD?b6uQYUF(fEseif_dgf&dl~=$ literal 0 HcmV?d00001 diff --git a/fotograf-de-scraper/backend/main.py b/fotograf-de-scraper/backend/main.py index a4fa7164d..b9b05dcbe 100644 --- a/fotograf-de-scraper/backend/main.py +++ b/fotograf-de-scraper/backend/main.py @@ -182,6 +182,7 @@ def generate_appointment_overview_pdf(raw_events: list, job_name: str, event_typ start_dt = datetime.datetime.fromisoformat(event['start_time'].replace('Z', '+00:00')) start_dt = start_dt.astimezone(ZoneInfo("Europe/Berlin")) + num_children = "" has_consent = False for qa in event.get('questions_and_answers', []): @@ -189,11 +190,12 @@ def generate_appointment_overview_pdf(raw_events: list, job_name: str, event_typ a_text = qa.get('answer', '') if "wie viele kinder" in q_text: num_children = a_text - elif "schöne bilder" in q_text and "website veröffentlichen" in q_text: - if "ja, gerne" in a_text.lower(): + elif "veröffentlichen" in q_text or "bilder" in q_text: + if "ja" in a_text.lower(): has_consent = True parsed_events.append({ + "dt": start_dt, "name": event['invitee_name'], "children": num_children, @@ -211,6 +213,7 @@ def generate_appointment_overview_pdf(raw_events: list, job_name: str, event_typ min_dt = events[0]['dt'] max_dt = events[-1]['dt'] + slots = [] curr_dt = min_dt event_idx = 0 @@ -230,7 +233,8 @@ def generate_appointment_overview_pdf(raw_events: list, job_name: str, event_typ "name": e['name'], "children": e['children'], "consent": e['consent'], - "booked": True + "booked": True, + "dt": e['dt'] }) else: if curr_dt <= max_dt: @@ -239,12 +243,54 @@ def generate_appointment_overview_pdf(raw_events: list, job_name: str, event_typ "name": "", "children": "", "consent": False, - "booked": False + "booked": False, + "dt": curr_dt }) curr_dt = next_dt - final_grouped[date_str] = slots + # Compress empty slots if there are more than 2 in a row + compressed_slots = [] + empty_streak = [] + + for slot in slots: + if slot["booked"]: + if len(empty_streak) > 2: + start_time = empty_streak[0]["time_str"] + end_dt = empty_streak[-1]["dt"] + datetime.timedelta(minutes=6) + end_time = end_dt.strftime("%H:%M") + compressed_slots.append({ + "is_compressed": True, + "time_str": f"{start_time} - {end_time}", + "name": "--- Freie Zeit / Pause ---", + "children": "", + "consent": False, + "booked": False + }) + else: + compressed_slots.extend(empty_streak) + empty_streak = [] + compressed_slots.append(slot) + else: + empty_streak.append(slot) + + if len(empty_streak) > 2: + start_time = empty_streak[0]["time_str"] + end_dt = empty_streak[-1]["dt"] + datetime.timedelta(minutes=6) + end_time = end_dt.strftime("%H:%M") + compressed_slots.append({ + "is_compressed": True, + "time_str": f"{start_time} - {end_time}", + "name": "--- Freie Zeit / Pause ---", + "children": "", + "consent": False, + "booked": False + }) + else: + compressed_slots.extend(empty_streak) + + final_grouped[date_str] = compressed_slots + template_dir = os.path.join(os.path.dirname(__file__), "templates") env = Environment(loader=FileSystemLoader(template_dir)) @@ -582,9 +628,15 @@ async def generate_appointment_list(job_id: str, event_type_name: str, db: Sessi if not api_token: raise HTTPException(status_code=400, detail="Calendly API token missing.") + # 1. Fetch job name from DB + job = db.query(DBJob).filter(DBJob.id == job_id).first() + # 1. Fetch job name from DB job = db.query(DBJob).filter(DBJob.id == job_id).first() job_name = job.name if job else f"Auftrag {job_id}" + import re + job_name_clean = re.sub(r'^JOB\d+\s*', '', job_name) + # 2. Fetch raw Calendly events (no date range needed, defaults to +6 months) try: @@ -603,7 +655,7 @@ async def generate_appointment_list(job_id: str, event_type_name: str, db: Sessi output_path = os.path.join(temp_dir, output_name) try: - generate_appointment_overview_pdf(raw_events, job_name, event_type_name, output_path) + generate_appointment_overview_pdf(raw_events, job_name_clean, event_type_name, output_path) return FileResponse(path=output_path, filename=output_name, media_type="application/pdf") except Exception as e: logger.error(f"Error generating appointment overview pdf: {e}") diff --git a/fotograf-de-scraper/backend/qr_generator.py b/fotograf-de-scraper/backend/qr_generator.py index 3e40091bd..4f4b4edbe 100644 --- a/fotograf-de-scraper/backend/qr_generator.py +++ b/fotograf-de-scraper/backend/qr_generator.py @@ -149,6 +149,7 @@ def get_calendly_events(api_token: str, start_time: str = None, end_time: str = has_consent = False questions_and_answers = item.get('questions_and_answers', []) + for q_a in questions_and_answers: q_text = q_a.get('question', '').lower() a_text = q_a.get('answer', '') @@ -157,19 +158,13 @@ def get_calendly_events(api_token: str, start_time: str = None, end_time: str = num_children = a_text elif "nachricht" in q_text or "anmerkung" in q_text: additional_notes = a_text - elif "schöne bilder" in q_text and "website veröffentlichen" in q_text: - if "ja, gerne" in a_text.lower(): + elif "veröffentlichen" in q_text or "bilder" in q_text: + if "ja" in a_text.lower(): has_consent = True - # Construct the final string: "[☑] Name, X Kinder // HH:MM Uhr (Notes)" - # matching: Halime Türe, 1 Kind // 12:00 Uhr - final_text = "" - if has_consent: - # We use a placeholder character or string that we will handle in overlay_text_on_pdf - # because standard Helvetica doesn't support Unicode checkbox. - final_text += "☑ " - - final_text += f"{name}" + + # Construct the final string: "Name, X Kinder // HH:MM Uhr ☑" + final_text = f"{name}" if num_children: final_text += f", {num_children}" @@ -177,8 +172,12 @@ def get_calendly_events(api_token: str, start_time: str = None, end_time: str = if additional_notes: final_text += f" ({additional_notes})" + + if has_consent: + final_text += " ☑" formatted_data.append(final_text) + logger.info(f"Processed {len(formatted_data)} invitees.") return formatted_data @@ -219,6 +218,13 @@ def overlay_text_on_pdf(base_pdf_path: str, output_pdf_path: str, texts: list): # We need to process pairs of texts for each page text_pairs = [texts[i:i+2] for i in range(0, len(texts), 2)] + + # Load OpenSans font to support UTF-8 extended characters + from reportlab.pdfbase.ttfonts import TTFont + from reportlab.pdfbase import pdfmetrics + font_path = os.path.join(os.path.dirname(__file__), "assets", "OpenSans-Regular.ttf") + pdfmetrics.registerFont(TTFont('OpenSans', font_path)) + for page_idx, pair in enumerate(text_pairs): if page_idx >= total_pages: break # Safety first @@ -228,28 +234,27 @@ def overlay_text_on_pdf(base_pdf_path: str, output_pdf_path: str, texts: list): can = canvas.Canvas(packet, pagesize=A4) # Draw the text. - # We handle the "☑" character manually since Helvetica might not support it. def draw_text_with_checkbox(can, x, y, text): - current_x = x - if text.startswith("☑ "): - # Draw a checkbox manually + can.setFont("OpenSans", 12) + if text.endswith(" ☑"): + clean_text = text[:-2] # remove the checkmark part + can.drawString(x, y, clean_text) + + # Calculate width to place the checkbox right after the text + text_width = can.stringWidth(clean_text, "OpenSans", 12) + box_x = x + text_width + 8 + size = 10 - # Draw box (baseline adjustment to align with text) - can.rect(x, y - 1, size, size) - # Draw checkmark + can.rect(box_x, y - 1, size, size) can.setLineWidth(1.5) - can.line(x + 2, y + 3, x + 4.5, y + 0.5) - can.line(x + 4.5, y + 0.5, x + 8.5, y + 7) + can.line(box_x + 2, y + 3, box_x + 4.5, y + 0.5) + can.line(box_x + 4.5, y + 0.5, box_x + 8.5, y + 7) can.setLineWidth(1) - - # Move text X position to the right - current_x += size + 5 - text = text[2:] # Remove the "☑ " from string - - can.setFont("Helvetica", 12) - can.drawString(current_x, y, text) + else: + can.drawString(x, y, text) if len(pair) > 0: + draw_text_with_checkbox(can, x_pos, y_pos_1, pair[0]) if len(pair) > 1: draw_text_with_checkbox(can, x_pos, y_pos_2, pair[1]) diff --git a/fotograf-de-scraper/backend/templates/appointment_list.html b/fotograf-de-scraper/backend/templates/appointment_list.html index 32aeafca5..ae431933f 100644 --- a/fotograf-de-scraper/backend/templates/appointment_list.html +++ b/fotograf-de-scraper/backend/templates/appointment_list.html @@ -49,6 +49,7 @@ margin: 0 0 10px 0; color: #34495e; } + .date-header { background-color: #ecf0f1; padding: 8px 12px; @@ -57,6 +58,10 @@ font-weight: bold; font-size: 13pt; border-left: 4px solid #3498db; + page-break-before: always; + } + .first-date-header { + page-break-before: avoid; } table { width: 100%; @@ -64,23 +69,25 @@ margin-bottom: 20px; page-break-inside: auto; } - tr { - page-break-inside: avoid; - page-break-after: auto; - } th, td { border: 1px solid #bdc3c7; - padding: 8px; + padding: 6px 8px; /* Narrower rows */ text-align: left; vertical-align: middle; } - th { - background-color: #f8f9fa; - font-weight: bold; - color: #2c3e50; + .empty-row td { + height: 25px; /* Narrower empty rows */ + color: transparent; } - .time-col { width: 12%; white-space: nowrap; } - .family-col { width: 35%; } + .compressed-row td { + background-color: #fcfcfc; + color: #7f8c8d !important; + font-style: italic; + text-align: center; + } + .time-col { width: 14%; white-space: nowrap; font-weight: bold; } + .family-col { width: 33%; } + .children-col { width: 15%; text-align: center; } .consent-col { width: 20%; text-align: center; } .done-col { width: 18%; text-align: center; } @@ -102,7 +109,14 @@ + + {% for date, slots in grouped_slots.items() %} + + {% if not loop.first %} +
+ {% endif %} +

{{ job_name }}

@@ -116,8 +130,7 @@
- {% for date, slots in grouped_slots.items() %} -
{{ date }}
+
{{ date }}
@@ -131,26 +144,36 @@ {% for slot in slots %} - - - - - - - + {% if slot.is_compressed %} + + + + + {% else %} + + + + + + + + {% endif %} {% endfor %}
{{ slot.time_str }}{{ slot.name if slot.booked else '' }}{{ slot.children if slot.booked else '' }} - -
{{ slot.time_str }}{{ slot.name }}
{{ slot.time_str }}{{ slot.name if slot.booked else '' }}{{ slot.children if slot.booked else '' }} + {% if slot.booked %} + + {% endif %} +
{% endfor %} + \ No newline at end of file