From de754ab16b6f52f62fef2537d29e49ba625fe054 Mon Sep 17 00:00:00 2001 From: Xstar97 Date: Sat, 31 Dec 2022 12:57:08 -0500 Subject: [PATCH] feat(pialert) add pialert (#5530) * feat(pi.alert) add pi.alert * fix path * Update charts/incubator/pialert/values.yaml Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> * Update charts/incubator/pialert/values.yaml Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> * basic plumbing * add note * add some mroe * add all * dark mode init * subpath * general ui * add ui * rename contaienr * stupid containers. * update image * whops * move temp config out of config dir * subpath... * typos * meh * hmm * whops * no subpath on volume, only on mount * empty list * req * meh Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Co-authored-by: Stavros kois --- charts/incubator/pialert/.helmignore | 30 + charts/incubator/pialert/CHANGELOG.md | 1 + charts/incubator/pialert/Chart.yaml | 30 + charts/incubator/pialert/README.md | 1 + .../pialert/docs/installation_notes.md | 7 + charts/incubator/pialert/icon.png | Bin 0 -> 70004 bytes charts/incubator/pialert/questions.yaml | 518 ++++++++++++++++++ .../incubator/pialert/templates/_secret.tpl | 148 +++++ .../incubator/pialert/templates/common.yaml | 7 + charts/incubator/pialert/values.yaml | 142 +++++ 10 files changed, 884 insertions(+) create mode 100644 charts/incubator/pialert/.helmignore create mode 100644 charts/incubator/pialert/CHANGELOG.md create mode 100644 charts/incubator/pialert/Chart.yaml create mode 100644 charts/incubator/pialert/README.md create mode 100644 charts/incubator/pialert/docs/installation_notes.md create mode 100644 charts/incubator/pialert/icon.png create mode 100644 charts/incubator/pialert/questions.yaml create mode 100644 charts/incubator/pialert/templates/_secret.tpl create mode 100644 charts/incubator/pialert/templates/common.yaml create mode 100644 charts/incubator/pialert/values.yaml diff --git a/charts/incubator/pialert/.helmignore b/charts/incubator/pialert/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/charts/incubator/pialert/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/charts/incubator/pialert/CHANGELOG.md b/charts/incubator/pialert/CHANGELOG.md new file mode 100644 index 00000000000..825c32f0d03 --- /dev/null +++ b/charts/incubator/pialert/CHANGELOG.md @@ -0,0 +1 @@ +# Changelog diff --git a/charts/incubator/pialert/Chart.yaml b/charts/incubator/pialert/Chart.yaml new file mode 100644 index 00000000000..0aacd9075f0 --- /dev/null +++ b/charts/incubator/pialert/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.0.7 +deprecated: false +description: Monitoring your WIFI/LAN network and alerting of new (intruder or hacker) devices. +home: https://truecharts.org/docs/charts/incubator/pialert +icon: https://truecharts.org/img/hotlink-ok/chart-icons/pialert.png +keywords: + - pialert + - networking +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: pialert +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/pialert + - https://github.com/jokob-sk/Pi.Alert + - https://hub.docker.com/r/jokobsk/pi.alert +type: application +version: 0.0.1 +annotations: + truecharts.org/catagories: | + - networking + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/charts/incubator/pialert/README.md b/charts/incubator/pialert/README.md new file mode 100644 index 00000000000..137e2d8614b --- /dev/null +++ b/charts/incubator/pialert/README.md @@ -0,0 +1 @@ +# pialert diff --git a/charts/incubator/pialert/docs/installation_notes.md b/charts/incubator/pialert/docs/installation_notes.md new file mode 100644 index 00000000000..dafe0698b9a --- /dev/null +++ b/charts/incubator/pialert/docs/installation_notes.md @@ -0,0 +1,7 @@ +# Installation Notes + +:::warning + +This app defaults to host network **enabled**. + +::: diff --git a/charts/incubator/pialert/icon.png b/charts/incubator/pialert/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ee9947351111d63ea26be89342efcfb123eaa059 GIT binary patch literal 70004 zcmdpebx>Tvw`M{@kU&UqcY^ES8r&hc``{VeH9>>BTX1*x00Dx#!w}rvb@t{bZ{Kdc z+Im&He=SvvT)O*qpFVx$`_3igvw|clGCuN)7cWqyrNoq9ym&?W_ZJZkxT1<4BLuwR zIf-jJso0u1xf(f`z7Pi68k>?zLyXK#l}(Mn?)C$w{6LQ&OI1xLO?f$96I%$A(cd;q zZV)@5_lp<<+|OCf24-q{gP^mNo+9C#{|2q?TX-at#i77I`~SQwvKe4+m2f4+T{d z4{H-1Fu9N*DZd*pFaX5V$%xbq^2NrH*G+)@ALH@@pZ{KFCMW$z6DMl{@_$ZBQ~ool zsI7x3DF+iLqX{cJ2Pqd16Duc(ori~kl#PXzo0)~1nH9vy%E`;l!pp`+`mY~y;BF3J zGhSseiGSS-_$EMZ;pAk;%gpTR>dNE_VzPBGXJ+N$;bCTBV`gJx1X?gUy4yGzxiQ)} zQv7=aF;hnq2TMCAOIsV#zattM+d4Z5kOMRQ=Mo@x^78*Nu#Mxt1OyM$JD33bVMg)q&VcOx&o}zp5SR_GqJt%{ zDMnw!Y)zaYrZ!H}VglsAUzos_U|tZIlby|kg`JU=17ym`&dtHf$PMN+W(0Gxv6-;3 zahY*|IsQG)f7M@%g%iXo!o$VF#=*_XDlW_|E(Q`|VdoIz5|@w==VJSJUuhdhCnFmZ z(|_OF61exj`f~ms`|^r9m>N0RI;h&(e)+c+e73N4vURkuwIdZ3{k!Wtq%`tICYCmT zFVgzU<)DrhopHe|BG3ensKlgb8xUQf>@0}jO@m&T#UwC>}HJI ztUMqiBOWd`RuGu{U;V-VNrL~>RNxA*61#s-h}X!}%!G@b-I$Tfgw=%6gqz)n(b$O1 zgwfcT#l*yvo14R!6->?yOp*Do^86=d`u8P3L;rsKkD~#6`H#b8Y6F}o2jJ*n;*>kQ zc!?SyEhen$ws^RL;6>QmCG@z`-VSx%=f#q(p~7jt@q<*!gL*Mvkx`Dl%8TBVCL=?V zetr)}nHT#RJ$4*U+Tvw+wPk~S*Gf$_<4~-rwE9Wm)K!gV>&fqRj>vKcJ=e*TFu`YB zt;UwLw57YF;X{=688=$^zvq3T=Lh27_xDx*`|FFBZ~tEU&#(WjM*r;a-)j2bYV`m0 zc>k2Z|03l7tM&fB9+X)3$|ntgz@oYb8s`lLtqKiDnT9?Yv55?E1uMDfd8T%Oud2)E$J`W1 zPH#@*xgAVCDN&Uj3t!c-OR(;ual=2qs(8XRhafjSh;=Gr!o}NNe`A-O!cQGBj=#t+ zur@VQ{qo{91MZyE#%XAyk$+_`-L3z9-DgZB9n-S4kIl{TGiY8@ib!bOQAv*NWWLul zCGj)fvRcaBR%iO3oQ}?21y0Isk(zpn5;X=KI|}J|ZZiDSw}=deq@l;}n@Q0`VrPj$ z{W#7U+CF^!3eR%fwq@-zsv=p@-Q(GmYK9{tAC_;~>8RoUhQI|$pN_(y@^`Cnrsp%4 zyUhH-3D2-j+N%oaGt}?dfUJnB~neS5@Ub08z&`20h_TOiX&tP|4=+ zxnaC~`PNW(_k-6BZ{%y9bQ~__&=e+)vRKpO9gj$RZ|@x6U$bGq%39+waECt=hY`ZT z!gns2Dy(mB6|zuwFY-R3w{qRq5y(yEw!GA;wNnfe?ubZ_|2MhZrq#CE{ z6DK&Yb|h(}VU)TO;n6jOiDNNDN3y&%%}n8`QBH^fmnd>ejU;7o#;fI z=8;CcI7pL1hN8vgzEz*URR*rcm$D)*4W`I}wDtE8o?ZAxp3^}i9lnS1hwPJ$Tnwcwir?77D%T7B@NA2haTUh7pK^R;xX@&=1G9Bb zp(e~E_E&6(wb?lmx5KrV<#`KoA;z&{jWUT^K{_7*nfEaYQMIi>7S~TKdifK?a&q&1 zXGTPmK1nH@MV|1!+Yp@nMV7rwuI?By>_ydZ@Dez|LJWQ|#pC@~>F};Fs*muDcVRZf z1z`9+MBAt84H^$MjJR+!rZ`g{6}7UTUbvrr`mxIW2v}_{X}sm@wV%Q-zC>4vY-=9O z(5*}cm*F_Q9gpG&no{%l=C>07owa8z7*M{%!Gt$ZR`?VV=ob59RM?AftK6WTgcr+> zva3);MlrP#3od>R@B8WJbj9@Q!K&>Fxzz0PBOhoMAtS3|NZJ#m)HKBkf9}bIPOnR1Q<@i9Y$2h_^m|sP9p{E|s|2HYtf|>j+(Q{UJ+G%+nPN(==y*opQNA;8oQCJF-imKs zOKx3j3ae8jBMK$lj5OFz8$N#y+xx0nz0z>P7}nDr==6S)$%F74H;!MBnZYFEBx}=d zCySnUztU)wL<@2*ezXP04c$h1sq$vY^WdQ~{PS7Q8&5@xnXzOliY&zQ1THly6`$+u z_u^Iu7etam`?3X`Q8~wI@_n1Gz;5QGBBp0ja@p>M7pJO)+mi1}g8+sa$il`ap<_U$?m;Ifk< z8A5WdXzFxw_v0tUpVV(csTMg*8nZn{mgebiO`Uv`KTnpe9~yu$kytG#=P}M?X)F2t7fADIj3X>)L!~^ zA$)(*H|jajCZN}qzQ>lOxu<%{K|%3-1&2-fvGmVsmvhFS2j16}qJOv@~$Co^spq!ocDNEhc++?OSgm_o3@oPT^UZz;1;J~IXR)tI~&rmPsRcpPD z7vm>;7ajdKa5kRS)1o-I)LJOqmHHU)?qmjHXA=25gS=%}bMhDXLl$YzZDMw4V+v?! zd#fWQ=Lzw3A$^3M)kg9$6gGK+MZMpfA*LEVn%#azBC%CKTk z9!}1rG+S6aULf*$=x>~6i|mwV;XX9jti5qCqfu!q~9nAKZ@0hH~e*jLAo=5s&h zZc2{_lk5Aqr(a3`T)fxaVYzXcV0S+0l)**vKITJ!Rv-G52eYeEaAEB!pR@VzQNK-# zH})w=Nz7}sXg{|0nAO8M;J}fRptgODbl>%OdMS&Vw31?P10_CNZold&(-kKlS|@l2 z&bIV8B_XYUO330u#b0K=6VaadBF{3m|NCJU!W_BWBbh0uo!PBhGEBP%YvDdU^Re$a z(LvuqHfov^fxex!>-4aqqmZP3(bdDN`5tp}TWFp4%zVsJhg@$p>Nn)=G?9yf_K$W$ zLj^i>3)qY>O}=>OqfqZ%$8Tq5GVL~*XD9W*EF6^0$LbFXtn6ztzMmzJL=gb zqwQEB!wN=mr%lhSBvnkH1dWZG_+C_UNY9TgDLNL@*@lL;^?lGFn=HISbK=afYrVfs zRztTB?wq1JzsM`tELjqACSKaLj<^B~qhHR!80Ku&TJa?iHPLCkw*<5(=`u(PLeAye z1?T?U>6Dw>-o~V;wq;Mw{4_#?91Fns=-M}HU;|B$rCPKLUDxAZZoLm!=3ey4Eo}C- z1kR<+E@wzvd9E>_O4~XlY_2<9^)aVOL*x==fY4<1yxuOJTh>a<5r{C}bLfY{Y9KIa zXkxq~6wiYDIJHKsfAGziL>?+dcA;U5$F@~Z_z+4#En`G(FvfH1hY#W}Km3Dw|K)(@xJkLmQ1*1$oE1BDNXL*D`C)W=k1bMk45JQ}bR+iS?$-Fr1UHqul zpsWWuDt^nCWA3(SM~(AG*la}-OuqV{ye-p zYuET)Yl#fxayc;-$5ls-h#i~WNH(57D&y$2@(9kTO=W`W)Z&tMw{=rutrFu5!6$cz zK9Ao*dUm4b!oQnYI2KzCvSrl!Q}k=OX7MC@eTv6nnTFTG;W1dLnGDLPD zCN4O>oE-(jKd2;q=Hc*_Ql>85ro0Mc)2LJLT&`0JUu3uY4a^lK!b#& z?Hjwb(LNihw&{B}izAgNG%o%t-7 zooVK);h*GnCfb&Qegaxd8p|)8W{r`BXkd>63OjB-hTXy8WoC3`^x!N0(`@tKQ|6JKi3AZiPc=Pj|jNm%hOUbZF&Ssw=J2DzinGMDB(_UPZ%)V(0|x z%~3zEuM0nGRi3&WC{Y9DG0GbTYPo9;w<0W{KTp()uDD+f?7Aqu)Oy^3{OG zU9GM1RXo{T|Jdk7vMGY{DLYS{Z*J1jyN1#gsxFWeiez(056lJN?Pr=@S$A55_Po9G zFSQCW!b?TMeY0)Y6`koar;2cRcBhx~X@<~gGrs8ej1@Nyvhrf`g0BW?^N*}XPAbnF zz{Y6gK}Cq^vN+^sIfBCDK&Bi-1PHZ@~PRf*j9X2?cNzMj(VvALndNbaw_aU zy|Y$|hnc=#(SfpoKEFQ6$s%)F)L7@Gce5=+VPr+b$%9xV?L`V4CnQ3(^LfEkp> zqzR?_YLV}xG6ik%@tT!W>ptlAx*f^SdnX~=YP z7~(Bx0Js8irc#&sN%e8o=wwXufoLHve$BLO?0{Xi5IhuWX1%SOpj;zWDj(yZuVi9a z`6w|9ug5)LoXk-lJgC|0Sbrs%ZnLz*h-%p)gM-F4k_Bd{1dZz-M66uw(4GnSE@^8; zrYDBmNY9=}dJ;*lM^_*hl+LY~cW~<|nVWCarzcscc?^`JZ3gqE&`#6Ea8F)f3XBMb z7D!9z+I!xc!s3MCu#v)II>{Zx&+aMYD>`l=w&UbYl?iFIU$Yf@ll|fS4c;Pm=s-Lr zsN|MUDIB4ySWrJi9)`yuAxm7%t5CBdWorW;ug(3Ee|B4zO%S3B;TJ4$*KiW-%I(^C6h{JylJ z6C`*VIj2Uu_;4)A0=hRvkNTt3ZBI*y$u33V7}^+~M>jPOd`cEpTSR!G`GCePXpnBd}Bm`xlcNh!34|XzT8?t?@c29oBtC%I; zBD$T(Z{+_F8=3_Bhb*ZpsAr zT$V9t-h63dGL=mNPy4oJlCjnLm(v=*?3eOgy%;?yh))2^w@Icl8qIYa1J``*$&&}o z!S0<($yJEcO4Q0@0ber5V_hEw8#$`HYol-nRn?H5MS2IIEmg2@^Q0 zt&$x*nOxF=F_dR|N+#j7k`2cQJhuFcUN-P|7p8KbFHbgWRjEU#w+olLTM450cYSsy zG@NDG<%Y+Eu3qj;9ZxAqYiu&}(F6 zRaAbrc*&$|p6ZkGl7reldg#SK;8M_=da>{2VWo>0-R{gUU1`7m`eySASC^M)oh^v` z3YxXFUL^|ut7|jAMb?H09Q1kOa4bnJ-8<0!On%K4Ym(3oHljx`rE!L_!><~3TqsYL=fJ+a84{e?z6oIABRBA~k^Q?i#@N7R7hZ-($uXCl z-M%3Bxilai;D_-c*ZHVniKnT&SHHds zktsK?{rEgrf($=316c9EMK(^tc|%J9ti_5q7kRWaT)jmXth9 zdQ4$ytoE7L%P@uX!e%#{hb@B<6i;2vydn}_!HC`wOm9D!y{j{&B#YUA&24r{yIpcf zYTcg;IO(w@v=+Q~l)0lIsDSNdz~y_6k-_mGI5_M8vIr#e+FA&+OUoC28C#SemR3iN zwT>UXXU##55%$rb?*Sjl{C~xq`UJ{v0?DPsQ_AWN|DYtxl}v@PREx63o0NK$1`#2< z(o`ljkBui`$QVk9BI5TGffd2sk7qr}zpRv;0Pt>2lW_=TLy1_@aOnb*S^Moljs$iBzc49QQh={aXr*Ug%ZKA8#8ISFGeP)Q^W{g>pbw^xWtbiMsve>%I z`D3%T!<3?fr0!?T*xu(x#wR|?pj}S!m!a>1_)-j+MQ}rt&?~Bs5i3c))-{PcR*gO4 zu2tE|Fv@n%vIwc@9D6;uGOjrjq~P9J-&0ML)E$(yHX*9p>$q4ic02blRxyRf*RKev z!ujV-Ep7Xrb%6XUWZ6*Q85h8sk(2&LKM>vq3HpB?X6GDE8xwk#H2;dB6lCH*OGzZC z_o3I3qh}}9Nb~jTMdp1G{|rKUKe@C9#*U?=7Z$rbnO+1HN#{JCRSS7V{Mz;#V2cr# zOPNqlzIkUXXUn(K{IoaSyRWOFZtL8KI3dO;td#zFh!nHi`9UV?F~c=s70Fz`H45q% zfwKDL?^YIvDtY{s?2wUajh(AFPt(M@y`ff_eV(uKV`Gh)hcs>!7R?!%t9XFop9#e6 zAz97))RRra$@^P!O-F`h{_#sT&M}7uveo~(Puxct%{_`Z@s@IdagLl%+_Vp@^<|QEw-o8rq0KQ+F(7> zC<01h*uE)%(VNRb=-Pagyf1hxm3N6{Foe7jDU$RXI23R0dK5hrkk(ub%9{jGmsY|h z$<^xnvGXa!@4g@*YO?fYyc2W$44lEj>ud~b{y|!$#BvmK&{rHko%t0-B)*=bj={{L zbf4mvCllP$x?3)qIWDjM2v#77BLgXIyh~S4h=@~^md>$QSES-lXLP}IP}^mZ{H9-X z#wj4cPns(l;Q{*It`cqs&cZdN0)!(|O3Xos021ow6d(57jm)TK10^}}MDn(I$;A@M z8(WbGjm7SJm31|Z3VXFl{)fWX({0SEk51I%Wg-?4gq(x!U^9bfKXiTKwag)An;Qri zN@AADEyqVL6N94DoLbcZYii~X-@TH7N`9KiIKBXg36!@rAnJ{2Sr=q5|HNTy;`Uc7 zznu!4p)srHA86E_G|&N+@NNjFyf29&Be3YN}4qA&EuIy z5Zo$u7vVE6^7WotB7|OOd8t@EE;*By9X*!_xHyz^SblQ>mgh#FFaG@^bX!?Xu{J6_ zx2U$!IQnP#XHcF@(Ph~p=>)E3YPOI&M}PowJ9(lL0-!Y__!ti6q6P@Adr2VlYpj^s zyI<~$gNk2H_@Q($<8ev*1^PK$V5u|xetDl1k8U~VB2kc9+X&gIwpsL)D$m>!&a4di zrgxSz&vrw9!V)%VbEww~h~Dy}wTexfP*OtV;w6_uwd<0odk;*mi0_lROuSptUuknD z%mm*@w@{2W;45C|{Sp`&N8x}p`wS|tRF``{KpPIdYpKm+W4#K&F$xvkpWOL%9ds5` zOe&)LtOmxOM|2*%)%JQ}mu-zqZH3jF+jUBN+<3uoZJIjAWy_WnCw$VXj&lXW?YvZH zLN*nG&r@h+Wa&CIbV*8UM{fX@LMvOW=d)9h^;?K{$3>(8)_BN@LrkLc>{ee*LQv1i z4Y60@O;4xu7ticki;5u1awHHtyPrBkJ`Rlxww2=1TL^qK(er57tHiW*#f!Bv%Ggx; zEI;QZlPF!AjCspa=+0>~Tv-`Rv~l;13NBY%WGE4{>s>q9@X^%d?%ThD*NzlhAY7LS zcvY)zZeS$mC&QeJ14J9mi*A32hSqL8q~jDjrafHF+4L467QF1~c(Ti!GYAxB@Rg=i%=mCS*FH8_1&a0#hKLDkACcG zEsDoTkckdU28nbdyI5vg>K~YY;PhGT0vdzvixTO^^57T2%?hUZPCh9uU-G+7uv^l+ ze4;)vwMO|&&)E%&ry80h%5~?^MzSR+Oimrv)&+37mWbO`ChVlcG7OsOo>YI|prsC< ztHHwRD|7zZf}spP{bT68h~yMfa-T<0*U2Gz*ZYr)3TECbFsAyJQM z@BINw6q}51!s9v-NjaE*xDT1Glv`OY$GVz3Lqa(@RDj_uvE60wj-U$9;3&7Ab}7t#p^@Jz3;NT zAb~Yi0uq8ec=6Dm$7uO@rZ%(R6;MGQO{|MV=V`+aou8DaU*lqWR2fz+%PYzIJ;;%6 zZr$p7x8(+BaT}!RR%#T-#WT%f4S&{IdIFFHzKU0E^Ui%b)hjMmofJPq`WRAFBWbmj zesESDab$KVFx>`6v-FK$qFmQb?5sAIE{PbF$R~YlU$@p`Z>h}rb`wVJy42V{-h5%O z0^uMYz0uNF7>Ln(o*Bk+%{x$zv(=vLib(7^30#K2ItRN4vRAQQ117g(Brd<>7=mJg z*MBTQV%g_VNV$4dI!ei?WBHpwH9E=8#?>lHVBBumdDFYJK7(S7G{h{9(k6YTCeQud z9@&xKjfD8|&sE=(l6NMqJK|h<+wnOdHsyB6v$w4lr_hRi`<$R1E!!s(u!axMQ)s1G zN~|NY$;iuoApQ){F2Ah1+(~7dM#e?{*xd666VtJl`~=I^1UG8sLLy3LY*aTR-ccxQ z+XC6#TH&zn$fta1;Xwbd^hrCWUv)1+&2eg`^jCt7<1@PguIh5i6>lh$!`>oRgA*X^q&*tB0eZ_vooq4A2GXnUw%O--dq+x5WyOmD0}$kzVG0z z?7Ee?xZ}2iR?d&(5D}|93|hQnW5_@NJgkrC@84oF{G&I4?#`NfE=zaaTB(~OBy8{i z5D2pTHapvU<*duiu>>7aJ8@P$t_y)P9gL}FOSkhEK`v<=SzW>G#%{KW$@<9QwQGxZ z<(j`U1Q-_46oe36{`6&2Ul=nH0;eWJ`E%IR7mshoKsb+6A)6W~8Z1KojNogHX5DJH zzmr-+uI|4G2TUg>MR`M^V(6p8nm}9b=#tV2V`grQR9sV>WWISJ!xWIQJnVEXF%g2U zngfG2Dinnd9k0*(7_@4*_|M2RSQA=B()N7-yTxkQZl`B8D<)@4l2RHa)Ku+y5eHFg zJ=#3Mfqk9*RnY=6xzbCyzufGY@ee48GB{j*FjI6xGoX`g75(OdAra(UWeDcF_C|O4 ziEjvi3Afqq42P8r%2<4(qrQ#jqF#ALNT6xQN(I{F3W*WC3R3ZXW`jziI}>7`C`B%xbFEtuT3wY+1c^m@wSj+@@Mh^R&m^`>sYZc6nV^CMkV z0^ARPWqD2QzVyaGHUQyl{?%p;H-L2|C2rz{9UI8i!`?_&cRJdPYl(RiEe|Lj7NYTj z=|X5FB|ynp9B!A@H+Dz$(B$XDW!jRw`3}pvbe{di^P5pU*zvK=IV!KF1hfFaau0kg zn9}p{UZsHnBUSm7lj7w-!6Q}qN2hYwyqfw20Fnk|UZ>k2+Z%KXpZUaq86YL>?WB8+ z3DH$gONVk=1+LfUqL9b+26(Byl4VP3B?b<~$Ou=ak1A}`F7w9s^w_%QGLt%5CNhZM z)jSE)vaIM=m#q)*YaDqC#oV86MgXkCG_;zfx#}+O;Yu=Xth^l^3AIO|_dW**x<7dI zsT{ns&JPNUk=#<; zC||A9_2L63_tGE(WWnbQfGi+CPj3_qC)fy{&|I5LnGZ)Y$ukhn`k2u?_-Qfwx@GJJ zrTNoW44qN|Nx`Z`Mz0dBit!%gEhqmyAm<7HmbvYyU9w{P)M8qMXJ$lN_$v+5y-1aXfA}fj!)ea@D-#>{ z4v=+DY@M$O742t`Iv$Xh9z7|dNh^tF^bg!b*&gs!_o%mMw%X~H&`Jg^au^k~cvK3w zAV?yqnA@W9pDHjHd!{SmcHk@Om+74KI>`?vTj9JhtCwWeyDFTaaoz{m;ZKNiX3hPh zSxZBzHgh82Hug9K&I{>{Z*O(Grbt(8n*%S(r z8g_AutJL8RE{Jtc0!;F<`i5nR6PHGFD}gt0|Bg9V{Wr$ca-j4fT8W#}AD%~k)yemG z&p$HCV86x{jmKLPvsmSUsPG*(vbh!ZDtM5NxbQ8<-c%kw1>a^WPK?^}VeDD!V?zB( zr>}pYm^=DzFibj7yXJCsI;Awi#F@*_Z*RYqnECONg8okR+Sy^p;6wh_pfuG$TFGEq zfe&o#s0)E1u^TJ{1ei0VVU@qoa~}`^|L6d%En*80EjLUN*bL z1TG>(sUrh+$dp-1WpDMzcfeq?#GY&Qd%}e5T%m$a1;DnLKYiFa74q6H3iHAmon>gH za&AM#FTnX-dLsd=N(tPsIh=ux9PLG^Q`~5y#*YDeRU6u`K|2tSa@TUoCYjg3KSvhC zw#y~#=M9v=z9r`j<_N;C(&h94m~Rblj7CNRgJsAGvLh7($$93JK z*sEeo_j7w?F;< z7&thl&ax*86}GU`(x!i^OCsPfi#+?X@AwvhOM8&(=KT3bC=-W9$98E7Ph8c>)ee8; z&%S;g(Q;3fsvy4C?u-2*xh&+gBZQj_*@B_E%5&cPscmAxTSH??R#YlU2N7B|vnt2g z>Qn;E=2w+H?oMGdCm(7;G0VOTV{e2IaaPg~4wW;)jPG&h`D}|6XJc;4DDl_{9g&2W zeaRC*LpJj5`vh9|>~bT5mAE`-LY-E}Hpq9AXFL0B82$$mfCgL8m^$0ur}EHkevH-y z12q%?MN3jDuje*-z6oODh?bggHrq@g$%BUoZ1FVA^szVrsDfM~c*Li$JveOrC6?7d z4nf~K{xP}QT?hmq;}wq_UoY6JvFkW)M2!U2a?CqD!U49O#H_s~dsBAWmG137@E@hz z0xATNlV9Yz>K&~U8Z}a37Y}!ucq;6YDlDQaN(V${vQ3U|3SYR70pF2SO0{xH20oY#nI43%LfOT)%_--fJAG1Mlg%* zJ)>=%uh3{2;<^et`?;XJ0SWcOBn4b${76y?XOIuy+E*wixQuM68$j6ijEOA8g0=3R zyz&ytmrYNsPR+3C`ue)d%_CcQ589RZNs)e-()V@Cfg1&?p7JZAo}sMk_#`{Y4&Z}h z(3qxabk%JcYG%c|FNlR8eHoDN#7LYm>fidQqNyq6q~99w-MUU`;Iax(N61Bea+EV` zz62X2P(Q7^LDkc*tuQ2h2S}6k8>0o324vz|r3e(8mJ~g6v^1vjr(*dHkzQ7NIRc@` ztV$+nV+naynK)NL#ghx?$6Bk4CPx{%0wHd@(;~bKnFSn`BPcWgOIn8I4Ld zG&}$tV%)Yhl`^7lv+iG?IY#cud>uvk)xoA!>&pE zg&Ns7x9?RA%XindI;A&@{szLNrJC+jio^L~PAI$~2v1etr-R4pNLD6spglOUQ^(!Q zF2Hh=TjWyjB0B@oTtV(STyvUhZSsPfiYoA8L~wwLkK2lEl( zU|PuvMa992x9C+Z1i3s2vc;xxPVW-)XFB&3ArD-dZKH-LlJk;w+ILgI=>VGQfMsKYpFY6A ztWyjGL0!y~8x06_t_$~zPdrqEc{*-o#=#?t#3QYU(n!M{Yy-#Sm!5$umCl_vPM!wl zh~hC^YR(smj)2=3w}1uHX-1uHn=oEwwRD%svS0YwWXJXm{MF=ZWjygjvF6}|cMpi0 z`)%7_a}8Ux1FetAs@TjX;UIml#V@2?qxH0=7nVjMAqOV;PU_WcA==A85~8Or7>cmz z)ty729JhNUSU+|)YpXp<=nUVvb-EB)dO722ZoHbd#>}tp+0@LqjOT+Q4wL4aV^GSb z1aO!2JgJ<8{+mnWwHw~(p}~EDcMebG@?8PTWclEsLG^veN_sxke9pU5;~v(zJ<-TI zuRtaap26!ljaGkMPLNd2rx9HfsnEDfi01IFWnOuE_eg+r~s7ky#}-UnA@*Ul#+jVs;#0ZYNc2c6P-eN)%)TZrt`N4 zA6jd?x(ePmGJdY^F+13FkWoVtTsb-%*HoNF#bVcUH^jp=u_IDzm`0K}j0tBf6 zi9UPr_X1w&5jgsX9|e7=b^67`|1b?I69yk*$E5$GdLO(=$|$wnXY98jP( zN8}Qk{pC}FfD)k64q;~2G{a5!>XI2Z5t326~=+8fA0%~P{mD4Cl*H4Bj zH}W!=Of)eu7?mc7A^}7d<`jftxq;;R6^(Q8+^4!>c|rSVfL4u`J!F1IseKNrxfXeE zG!T}-Zjko1a_#`-i+h9P!;l`?k?n}oE)a9*-;I1pct@l`VNpr7S2A!A-hI8cX>tt@ zFcFyD{F;+i(r50fn9J;imL|aJ#79CT+APyqgvap;1O8 z@Tek{19masbc#Jett?u~A`@eb1S4iJWm?yLfc$8m4+KJ<@OdqsohYX>(fL6}Hi7y! zZ8YHPyyjYkz~L~RvPF1^gQ@s_PhzKQ><;!7g{Pj#9(lP;5>4eaw5R={u)&|e(?3g! z%dn5G2dL!hT0a!tKiSnQilf6L`*hd7en(%=hOP}Uls8Kmqk65iWf9u)N}e*{t$^lx z9Ag;UR_V!L-srUk>M~oO6b%CxK5=RRb_Ga2xfpsWrV~BXfwl`&+dfVOxm&9wRw&8_ zTwM}GHgjja&-Kp|++X}cMu^H-Fb8oIIOmn$6Y1){l)OZQY zc+K$qrH{Pc+fb7BTps`kLGy3Whr)zk1J%Js_eqUpdGu$Iyp>}_$t)^8EKlaV=Yb;@ z6nU&QQ_LK0gx|(pWUz|?yR3ph$b*rP3r(m8!bX9S4qT#T6SQGn(BM$SVoS5D&#K2| zZpWX(5meGW_b0^*77JoBiSva8GsCyjxjOd^Z!#(n85#AWq>uk<+;u}`uVkQ$IMioR zHZ|pujYEbx^hk1oP+mK;Z7rD|s5UFARZ*jJng6|H#H1E6d+cnZ^9O)8zl)$mWeLgW z6SQ~LZ!Fz&J~q^I{Sx0F@N9X!1`LU*4A$;y#7E_|M*gJ_lVx$nYK~v6JGu>@diyyiPm^WU&b%Za ziH!hYXhQGjlku!eg;NaEsI^1pyrt(uW4RFnsea98&y6TYRJ`OdV$-cO&&Kw7ygs6D zLep{+Q*L~KKU^>UKJ(1?%Tja4Y1Y#-)f;2S3gM%~C)IHjJr=zTy)q!QLEcm6P|8bH zY&nSHy(lc+Xi%Tcgk47O;2o@r=%=;^r?pWkWM~5H;}ix2VRaAHvMG_bRqz3b$&*$y zM`g}JzSrngIt4eXy$De^P{PiA@z*#*(^XW}enRO2fD9>rW>xtprS22Ga2UE8P$?L1 zdVh@{)q}oxJ)l7EYuqYt65d~PLV5Ycr$ip{SMDc(3RtG4^Y$2iAj7BE1-SQRC6e=| zW-`&1XV{jJNmmgD+&Y5q(e33cYXAeO{GCS2k%RjeiSLr*+>$p?xh?;~rJ-@mkY27- zRL$+oJ`g`Vz2%XmV^N7(UX6D8G}NJ^?G0~grH5HC{3I~Aj z-v1m6oReI$5QZm+L2VW?Ox<&oI`i>Y1*Faj>h&9dZ_r!IFs3jd=r3Y)lA20(!@j$TkILpH#bxb&3RVQSYvRm!_Fhc zbGlG@(pe3t9#b^SUY|v{n6elD@Cry>pbw6oMGqe`6cs>YRyc!}PV@jr8Qy>?k=aFa z9aInQxdQ@J)P6nq3G30dS~MQnB&K7MLyHPz_X*nIK%wfX%*;w4P9|5R1c0M~#Wj+0 z2U6+XOX2=J_?F)%@rPEI?axwYZbZLYe*bc>>=NfREEkMk+^Cv=x`A*0w!QMHhn4e9ktBJ-=cA zMUy@HG-2#Mlrc`3XOT8!b{)^*YWx}m(tW%Q^|l)%+A9sw4{K6;dgp<4vYqkYW~6f} z+Gj=SG<71VWBsFDw}eOP7Bsam0mq*$XL^Mn#2CeGa+dC9mDK~;xfq(Z2+j$6UDmC& z59-$ybp7r4L%UQ!o_Zw^G|guETa;P>kTi3ugn(W~m`9%9R#ITCo4^i+pj&}AY$=gt zJ37Xp6{sYuNq95eLxWN5f1=GPv_QNzUK@}@GBK=4DK8oVh?+8epseFl4s^s>vV+@I zGNTbt{Z`FlX(Od7B{AjRc&ht`agBkTQ6_yL>tYlzF#3&X)D*p0!bNNegx(m1@3|{K z*Y{^8(kl+UTMN|G_No+^T*jP*3Ie$~Bibf_jw-#%9hx11-0B^iML~?g)I{)%?#g_H za-p|xfjaS`bE1P{O#Fn zCm17!5tKiYFD$QIJa4pg>!wq5!_p`G6{qxikv3*91AY39aN#u%^wBwN2!Axfk|!>{ zkv}>(P%5WleWRn%cMjj(h1$Fv=khHZ?k|JyY#ya&%JFbwNuQMFu8%H5CoI*0+CU92 z0s30RMqTj*AiYBSQWbDB4-~%8cg9d9pz-MLI=^WUT$P^G^uvLZ4%P6cmle7UHOP@V zx_7EI(oh)1m`}WYAF^4r zd$@7X08iI&bGPi*tV(MHz=i;AscixVjC7A%E(7E9qQg!AUaGKpSk~f++rb!BRd64!6N+!v+j>^V1>7bWjQ&o$zZ*Aqjk5(F@&IfXOQbYt8mQl6J#aV# z;~a%?wFsFEsG{tIjT+aJ4`Lc?=&_0+R@-^6G8N)>2Vm95%;0Mk=Lks+V211V{+>ZU zFBH_XVjHRr#oT@KJ!914#Mfu$uptWZGry@0MikmcDYhalhqfm<&d?N zmS_H)4iE@1=A*Uxb@arJZN3En08^?r7SC%*^;(J0*TLDbf9++{wet>TnPBKayfK4% z742LK9{sAe1)fF;$ma6S;Fq9GWC2U(YPv;}Il8J;aoG(g;``>N1UmR@{>AB( z;oT0#E^0!RzUJm$#qR*cyNJ%r1;BHom_z^;z}761O4OGNm)^8D&;U@nA;})R`0?66 z5oYZ7ukhbQ3S<+Y_l7oZu!>}kv)rdq^!IDX~Xu7m8AY)B+rXQOY_4&#{f>)UANA+wsM5e#F* z14H358VeVaISi=Dk-&0D24{wJYGN?cx27!2Jf}Tly(uIvHk;_ZeZV7B6;2gd2=4h@ zXpAtb8I7)ZeO568gK7RkN0gwL8JpAk+ai{e#hoYP5n)N!TxQoAx^UDWvh(m6?W2Yp zQWG*gD)Le4FTTar2NxOo=E>&C#v#}5*nI&{DovN6vImFl-R+tAl=UNOzuwdF7Sf@;OdlZCC1$YmFtQ%lhPIn0~s!0;Ca}N;+}4 z;pq|howFX%&UnQLKse2{JJQ)LX=a*?D4hmG^qvY88X3P%Hhq<$Za&IxGvZ_o(5!N~ zUG;789wQJC)DU~SSdnO2k+AcFpRAy2oaR@e=pWnalWR#+ciYrdmk^&lMoVpsdzAJ5 znf}gmLzN=e&M1fjmLssqQx~klEIwW~Yd`rC&qvxfL+QIkfg&yXd#YrY7u7+;4Bzcl z#6WRcE9$IZ`#0aUdS%o@$$H$PX_IpRXwv^(r{pKg&*rXuZF|(sTH=}~ zbP8~7Zkyf*09r^8*-GB2Y(jgFx8g+<5ylRPelw|;rat`gy?MysM8GFls9%4>bxfx@ zHeI!(5h2Yqx_aLu_mompfED=s&i>Q7>K4<|U!bghtm`4Sikp~6i@zX)N7@fU zPDUKPPDVUCFrwZCv$Ykid$;Qh@AB08aQZL{KbLA&#`%MbeinExktX0JqZ&;pH<-S} zBkQl=+965=X&-mK1J9z4nW=nk0ru2nFk?{U+#C~xy;gG$a03_PABO;tVMu*{A`Ppw zPa$uV&@r3vjT6T`ptLr`;TeD}rLJ_ksk_Z_lXI|Y(%`sr_!9ogK7dT*dzO}RuAqlW z;Lfdp2!Q*|*tF_WNe`)vOKDBa`YbwbzM>yoBUFiG$bIivl@qmj>k6A!?`WQbL~Tcu zqK7``n{7L2@yg)7uQD8_Gj*QIyC-^P`WAZb;;*0d+4Hwn`)b9c%za~k=x}HzkTEV< zx6=eWa#ylInu)jGi;qyRq-9y~RducJhn=@rdZ6}SLG`6i9+qP}HvHd3ByFcL0IcN6Sd#$xGyd2kAe+kAbr9Ov)hi$&|iMl4j zm$Gv4=(PX#RKL`;*unhrN&97F!CY`n#JMb!y|{u`&0n}OC#P+`<|O{C0Er=ai8Xod zRhvsAP|I15IcvF#oSvcD`vgsgWFk_IO+h8L;w%_x1V%`BO^fJ_7fuUv68s@qr&^v;)qqMPF&lF| zW`J3a%=cwu(@ri7jkR}+F%=mgWSdethXOq-ZREcal)e8%jgR_Ji#&!~t%I9VN}!9> zxETb)i=YiDM>Wd;-M;}2Ml41{b`o))WUy6nL_zuvrqeebu3pKQT!NxDb4kW=KVkL}ez{Y{q*;ssySCyXO2HC&pm$UJXh>^>(+c)YAMWyiqcU*JzBP>#!wb zfNn_q{gv;wmT!i|`cd82JFc#W&$Qj?h^AOIg`faXh4=}+?M;eEF4^%|6$Yb1OQJ~u z2Xx)x3PAW{oJ;aqEdpth z_dno5D|d;U!U%ozX#mT*#vUdg7K@GH ztj}A7E|v4rftDpuuqy{j$Rf_osb9s&nw@%U zRfQqF4>$VnPa8A>Vi-IU?0vT$cZ)wrsg!G(UW*5|kn&@8O)v{p2$${w4c;r;_Il}I z(RB-MlBlNfn8eS6yl+<79`@&ejs|2UdbD--yyoJNMIyWXA$(eZr9s8n0SyBbj1=nR>?1bmh z;QUrcK_0r?~6+wt0PgE0EsCeQ-zLZ9#t&wvc>|pTo1*Xk61}y4z6r@` zj_yFsCU5}>93b2AnW6Fgs-+|bXnu-g0;U{%3(=fepS=&!3O`+^#s~-vxvmBDTvOL1 z#OEd;MXaY+DE1qL%G#4YDqfFu-uU0z>XG31vYn`XyhivE4N@QCDO0m6x#h>Y_-i)X zSDf&F_8GVm2nN==WH@beOUs0W;%*Q0SowOR|`hD`!3E?8c_aSyP*Ik32xkE9c; z3!8h*(JR*OI`$xb*+=?Fz|zCn@bKB=Mje1hN|fihL>k@2_uqi`u~T2Py&o-Ii~OL} zRs_n4$^m%DK6(NN>ujPxH>7lT#(oM%o15Hmynnz*Im;>bGYJ_g#KedBmSD_59NXIC zo*g_-@0Z!Yj^hP@siQ$TMQ#Qz%D#xu+~ zWkN(Ljpx@Ab6Fy4{*cIPWSp>9e&XU3RU6|UNR6tyc)N_RQl;?h`7w6cq{8MW_oC5& zeguPvp==k_YY5azP}#|T!M5}zE9e+ZBGGWpbZuQTIKPJiiUrl{uxgeKaw=j=-)DgY z5{*hkuJAevruY!J<+Eu;Zer9_MHa;|rt7$MZOtyT@kg?39+ zh(=zZQ$VL-ijTIjQ~v1v%tpgQ!#fK~l0R8GY0qRjn;$?dKK8r=)Gwgfb!v^S6&Pip z%ES}aj4csFFW_X@u${GT$NpWi4n^^{{O$p4t1=2d zH@V4Tn5QJ2QH_xJ${8&)uS;SlN^Z9lWy}Q0iAZ1#9vRAQQ_qV#=*xwK` zcy||{JPMhNVhwct%d&natfjC%+wCNs4I%a0 zi;FmbGoa_BbXjSO?1>(|0l*2+Qvfu{0)--R7E6m%gc@iKuX`XsDk-ALrFGA_s^(&1 zgdNzlGY7~|{_>3CRteYkH+L>cjh~0@<$Te$esovPr22yyqbhW~OLhk&q5$;;XeK1l z9VN^JkIB?zU7s6p$M$)9C-LS4$2IN(mJnO+|5|+l4+!_F!Fq zirYtvsVsq2^Bd^JzW%K=1YR!1ks|rfT=r6krxxY07-SOvKuj&IKfhWkFK;JeZ^79a z;+V+^wBzH{t*<+EY%p;;CrOy@d-lN0!T=6L3}2@KujD&%FE&vO$f}voSuugvtn~7) ziKAKO=g+=FPNZiWByQvJ6knKTFE@H8mqt2nVj*KjMBC75;|*Vgcu?j(^+SF`=tj5A zbh}#k_Z2Cp{P!UsvU7XquHdpajVM>G1qKMl#)|<}%!E4XfE@+wPjrI`$L@oZwf6?=m327074PRCVSn)l*2TM{?sHx zm)_QW+mc{ABMb`AG%JB>;%Is)rf%Mz@;K}#o!i2Hn;0Je!z@l8s2dF559fnu^>1Yd zzDdpl?iwVncG-7>{sta>Y<4y0eO$)(&w}d|fdP^I1*nwj3mXpR<$@y1c%{1pbT*(Y zkaTnw7;r%!gARwMY|-HPuy8k3B8Nnr(s8n%+Ye|cKYh*6TAi2fpG9-|f{coQ;SGR_ zFU+S9qUao3aT-@xJU!vAR}iuHD{PY$w=y#*y3SOxxzE{`FlQ3 zYd$|wHb4O}69&m4S%7>H7@|te=3C0EZW>bpgM!oJ0;7GQknuSV0lxamE3x8#(*oSN zj$3mbRnUk@l_d&gfBj90mn#}12V|-dH8qDTAk+BX#dHd!P8!=1kVWp&oU#+THi10x zC*oG#u6Jos*TT(+o^yFK5?B!1So7*&U>!QeIT{Y?xarKd1yE48a@^o(pUZ^> z8FMNmb0nWnp;jG-jqx~>L^6}|gf{ryo;FKN$xDCbzMyY;E9w?0v-|ixE4?r0{KK2a z3^JW9H+YN*P?IeeMf~eNks>w_M+ui2(zNjdfT5SQ_XN@b5_`p_BQ&pb=K*5t*&7Si zDQdzwI6{+Zb*WYy zgBc_y=y~TSZy`S%v^fGg)SX;gm(4eS$`bGXHkY#r6ScZGs{kopf(jb}FFhlpz^*J= zh9hRm0L^i;IJ>|C;%}a3VFXJuP{G)A7p(((cFPtC85zq@Ph&xRcCM>f+8)M}E073Z zk@zu*Is_6NgR1}V*ZN-Cj0^oh4aZ|?-N{@Jgjqj^ca0Od$UgS?EKbrrSiPT6f$rG< z#U3p_L1uVlB9`TRn09hh?jn(5|}>Rq~~O=k*aD8^^W z_18URuI7{LQ%Yh7oKM$Q7N_s-V6nz0g5ebyQ-%y?M}C_w42@#05Lm=bm@A?_&9qbut^$rI-Tghbqv>f8Da%+ZFfxJ`J)+JkI6^gI5Ks%!6XO(Gi_+ zm?1C;{r6=)KGaOxu}{1dW$bi<_gYoMvgv~Ec=2KC@}l?lO`=q6$udE@K`r?6dThy? zD)$#gSONmp*TOA@mED4lnOc5$YA^^?Flq#^Wb9X&vZz3tZ%Z0Ds2Zrdc}n(c)dv}_ z-BZ6&M}!%uW3y@o^;+9J*6!@C{+=i0utiJxjS36`tLr&(eixak7dG;r2m7h}=}&M7 z{Y@fa;a5fk6Bt}f^L4|nXT0|~0j;MOrit~|c79Ej*(2`6o;_=tl}bmVwgpEi!sKIz zE|;IeX=5*1yQ?BlV_fwqs~s3;t?ZBm)c)9#?tF;s4=AU{hVnSIkYM1jU_ze->Alf7 zyqRgT$Z}?nH`}T9Fw6Uk6ypYwIVB2+DKIFM{xXtCw!c%#R)0&Cp`X#Yl;V^r+zAmP z$F?t=hCZvfSyU^#ZJjoA%zr$N6y zDq<{QHqxCkJu0=FygRA_A~$N^b&$Y`BG36Gz8DY3k-H_XW0N+X2VVj*pF<&QI`e$7 z_r5v;j@2|dn1yYmx5l=!84fzNb?-Vd;q$s*j1^fKdJd+=%v-d9==6HU$$Wz3?j(LE z;%E6iFv-wN;y|77d$je`bR;E6EyJcJVR>aFno>AZm;7dML%q##@KdtkR_ zk0l*%HOAjDZTa4{&tA4FXitYau$%boFXtq8WcWxG5{fOCpEU}VF>lN~i`B~&iX`IW zd}GMT(KG4+%-5iFW$_AuKmy}HQ7E89ow zH{7P7NClM%-nV~(c*~U#fdj(#!o+)d-xPZam(A{*;Rxhu;^8FQ##FV3zLTIB%1`bw zs?$7fc52Ut{cS$(h-cD)^sVe5gCWUK9FB#O@)sHKSpTVL5)($c=pCHV!K3wvmZA*) zpLyHZFosM7%0MnE>N&(Wm4RmKX*K5%$x755 zw^Mv$;!v`&z_u$fgW(fg&R0O%!j%0^tyb#)73ssC{X45_4@RP8R`ozeXrIPzS61sH z*-64+%McJlJPe8?h>?4K2PdPeP-)=2KXmYxCn!k%_7BI4D1Z+-7E|3bZ*QD`5IpTH z3TpVN=433GgKn8tlz=p6H$&#m^ikf#*V+?r!}|NE4(uyUn~*={^NGpNNsrg*MI z+L`w@B#Q5PQtKpfk-cg2tXrk=3RI$HG{zNk&21;F;KfOkwDuVTBiZ&)3NAg_GE3%b zi){GT^`1^1Da7;MU{j&ecRYn0pZnMo#rqmEz*l7{y*7G&$;r%8clT)m4Z~calazeSDZBbL}X*j@`O^BlB1#$rgRISovGBGn3xR-@T? zoLz3v;bgI8)u_UXB-u6Yp$M9s>6<*crJAo$)(lN|uUSxAw7Co*p!)7(3y_DWyhk9ru40y515>%hf*RM{rm`qbMj0*3 zOlA{B5XF=E<<#yutctL-%Pj;53O#m9z*aW;QBQbndZttep}l!Y6q7a5Be|UF;|v&eA|AG*+H6RLC(gCJ=Imt2BS|>!t1ff5 z6dNzvVwY5#`}HQ|4LG>8csdRdcJSjiw5v{FQvuhQuou5SB+Pk}e_@*R;}Z}y|Afm1 z$q?R{smy__S6{>@mVbmb@KXj&L`XU88njcIwo=sZL7xR3H0;DAxy#5#Jl2G|Odtwz zWZ3-L`VDpe)^(EIHlb`d?nHEa(U|DELerm}G_7!Ftl_-Au6#t^tKDJmu$h^w1)S=q zMPVqY^p23U(}}Dhd%`--;ak?DdgC;hco!@oyvuv%)|9B`7&ROetV}yeViHPI;bL%6 z5>by!?^i)@WxRAXYE31-zE7pPXQ$WIF9su8?SsEjQ(@M$GW;N_TEsIehx^z`nNq)T zDO>z=&u;;HbXu3;7(?76Q~FNN1`hrexPV!YB4r0c%V82)a|>3|YgbK4NpmQD^lzUx zBqGy>OL2~^>=I?4VK-(K15G_`CXR|--1s|ket;0pO!{M#+}PO_d&eb?iY;5ztDXBf zpUlXHLLGk>)FD3Clxx(pqUknW%=KR2#l}K_eZVX)8~ekGSQC94`;r{jz0YSX_n~dl z$mi|w|G56jLQ6FD*FBvrW%4=N(?m){K5TDzIuo1Qvb<(~H)4rQY19|ib~a$eqKsIg zMZUwsN`H{6C>kidQNBJKSXf%n`@wxVx0r9mDFyZsIR@i-IY-B`#X{xh%gh(=l85@g z>suo!44lYV1C}#b7MXJQY~(#pk)L$;;ivDr&(mz;b@UO58PZux8*YH_e_t)`0YbtUe|H<+% zRK&f$>RSOCOw|1d7f}vwX>F**i-Wtl0f}-%{O{z60NG9p=#Sup{V;P;j2?#12ww=2 zaDEm4sX}@OStWIMoAxZ6aU7a!wq*Iwz2r7_#oR{Gu@}wTUXIP!Zr;OjDR53Zf<#5C zLWO+9^0r~th>nFl;`Xj$oI=yI>WBJ_!FMdS%{qe!rppQ;x=#Q9o>k_;z&jb%-I7yl zD>_u}jVfo_w~lYfKhZgbcCDhqSlXl2;&x{okyb)8uzkmjBKBmk6zq48Q&rEbFV`v9 z^~vW(x4WQ-e!o)Mu4KmXAs99I&B+VpHt9SK=)&)5`lp|+_~hOzeb=PT+G_0{oS`d9pxU`p@3)>r?Ke92?l zMwa2LFB_sko0%L6vESe#TbB;7uhbZETCV~x?SD#K41i)c`1HY)J~g7$fvANbKYOaYLu~4a&L#>9bVErG03Py@7|y-EZ7wb z5eV}k;9&7#N(4YK&vD)~g@(g^4HD6At%W!{8SS6eIMWJ|HON=ppCE+a!U6O70=95K zH3foCtvCs(Hqz>goS^fG?>ZuzX}5-Wx+9{J(cv&>h>_b}R_BR?xo^?m>ea9Jr@G>{ zryR+P->J->`j)N-5w{toEGgm0p|ii4G;lw>iHJS~ILwwas{x?9lPOwj-`|Ju>!&AuRbd@0n4 zdGQ0PTo4P>PKI>n>?-XXH|ovJ0y^B-t=#K*T-gH?==*Aik0k~B@Wh&Z8zSTTP3-Jg z(zAxOG(Pi_xE@10c;g#YuM&&*XZK&{m9~qngXz2)Hxdov7g3Z{>)}z^0-sys6fdeu z>@ZJelL?-r59Aw%8WOF$>nr|}E_Q@uko^C@hn#m_Ke5IaHkZ^`XPBrqK&a>LZc4_2 z!c68+zQ!k8>BSJAsfCcxS$9yOiqlq8ijH&Ww%uo9om9Cr$_f|w&zDy-X2|%Y^>cbO zCUWm;fE#Fd85_EnqQv$e7YGJTo-(2;HCj_Jn9W(0gflbh3dm3Wv8z-um)P^<^pVVb|M!&XO5%A;@nSWwoG zU_g0$7f}6=+>T!E9X3gM@vkV=orILj(ghe#RH=xPa@rJ?no1+3u^z83S#`^~Bs_l& zx%UkpSFhZar&gE*Tn#iQLF0P--$(2*)3OF_E;7CrWW);^_v&&~+4gQI$#<2qucS&J zFF?xrokR4%&>~42Tl4vn1U|0IiU(#X_XE|X5Z~d^Z=t)Ncwk$k6DlA~Hs~0Z{ zHy#4rz?W5|7x)1zqDw1_l17e>i)g)Oc=c9;;Z{5mjBb;Z6}n( z(tv4M+q=EQzc*FWy4`}7WgBW_r#w$DQsIw)vtv$%kIqK>*LZPVvrBJ(>5QGeJppJZS^huh{P>6I99(%BJv+lTN2T z=X#-}&0tYphep_a?RNUU8$NUS64qS1p-ys#oK|F4jSc&~=XPOjiK{ zfw~IOdPYIl(a=;o_pbrN!|T(xi9F^p z6in<}j2{uORvA3ovIX=h^1w^KPc+Ue^xbZw7{uvEq;a#~Pc5eS?;5kgz2lsZ8ABIp zTBjl!Z&HQo?OMMUj;!eDI`&oBp4=@jtMB#!_~Elv#)$%4D(*nMn}0*V#Y0OQ`~266 z-<*&~C+TT1NawYcdTdXXs?e<0E4vUMVdxK*|7TOQbAx|NZ1$L*rbEFY(E`eq$J&!+);UWR#l*&-tYJG+026x6AP|Drt$v_^e^o6hM#(j?xLcbG_JHOl5% zKhpDu-gfV>@3=JjI8N&xObN!W>=@!#H*2hky5i$J$k@m-3qLv>ir-Zc{NW0#WHNE? z-dui$D+ry8t1}%FPX{QL}r-9h%4rKQgLFZote(g;IFj%p$5guv*Z&?*Ps zb4M`X{=$Fim@p8H8m%`faf%P7tuMJZIj=e|6y*xl_#UyOZQ31kb$%+Ty*|L2T-9r0 zBdjHG_%v7{GT|JB=3;xH9x=!F5BI?-k(j7jP5*W*VsB)4(yR=R7!n$coLb%lJWDqZ z%80s$Z?|@>d0sL`ze#nZiO=c&lxjGzt5mh!h>7%T8K7OMzMRe@VxwV6L4>YvwyQvf zfk6ArsP`zcdCEK|V&+2EoauIlaUF>a%z_eP3H&>9&Vi`5V6Z>)02WG)T|qYBDw`l* z>SwY_nm|Rv^;W~HS40)bWwqv$yU5nO`pEq>zclr=i<8xhIVBRcs#rV${dJwhr>K;J z76+5}ZfpjoAt|Q6Oq(aYH(f!c=%1=BE7M;D+e-J3KtkQS&YeS^r-J=s!<8vgUx#aFmrh7bAUDfqHqPD3xx_?I;m@z~g8NkUVKDNBfA+1lDrc=w-@Z`Jh#yB(NV~cR_C4ZNFy=&?^y$C<(m>ZGe={&$W2VAS}Ym1S0^KPG|=r<(1O;`|2^ z&JR*jxp(Rp!c7Es($TBh#6_dZpTN@6BpJ2Aw5Fj2firp-?|u_?Yo14u`*_T-=L}gN zUeb7c6B6#*k4+%%M2WvmUYTR#$a95%u`0qsE-NM z8<{7rYPJll9fAy?x3EBD^GiS>{+&69u@f};UDB>}#H3YW;jdFlh zRra!H+%ZB-aL7?cKi+^lVoc$B6mK}nB^`$v?5R^zK+$QnDz0A!nas=wON>64-)_@W(bI3}^nfL-8sg&9g6vi#a4TWUtxEc1%vGR6k^=<1e6ZXw zf)C(6EEPsCP-e=5XO+TLwH#@@4r(d?l`^4R)34{#N$=yjlzxUN@&YM=FVrp0W?X_4 zWd(BsMd^y){!`Mn8I4jT8B_vOH(zxt^SHd=<>t?k3PB;+`^UI&dM6YSOVRRFfoR6U$qbK??ME$Z2v9$ko@c^ z?Qpf<`Z2m(3mI5Yu9>zdPvL+nnYy})&ZhX)!4RSzU-eAY%F7EzClDv%5%RO=E9lp* z2(r?G8TA260KZZqr)%@gI^wpCD96bAL57+@BnoGoK#_;6z8iu8Yb^swc6_@9gjoXpvcpIncfV+BN34aDH>DSQ`*ZvOjHgE3?yxK z<;)yYe@hb*4S15nPE5NBifd;^n5evzA{8M652@rkyBF13x1p5wOB>F>XtI&%&zB3CE~+|CfxuA04xY?s1M3amDr(qqxejaq|71so zNpWtBxltu%Z`571GFFKKj_(`CZ5_EnAD##!sSE6>U{~?*f?Slh!e^ zf$~|Pzvg9Op0Qf*>jXcHLN#K;(`HN1E?0JDQAkGSQ3%jwf4+l%0i#w0(|#fD67qbB zq?uEf7cOy9o7~~O!I9ng6wUe^WZeQSS~U>4kM$&3&{NI40}bWyI5Eqb?*FqwNll8x z%}+f$p6UiBL{p%I+?NnK`8Q`5znyxQRE0%9(~&ACs+2#tZ6@FLccG9Rkj1!&`wwA6 zHZ(58;-PU`gN;e3Zs?OJ9~fSwT~fNgRPvV6Ubl+)XnHNrVnZZrRJ+>hKG znnu?*2^DBAX@<2fW@l$tNj{3aPbVmCsC`Cmy3!Nb=5Hg(9aMVT%qqnFx{^@^2@wS22X_x)_n|(>zlI{f1o})Dcv+!AbT!g4ZIQ!y$}F3HZxI zNJM>>_A)A_bHnv0b5BNsIa^n5%8cjw3T~m3rGunOU-ZiGQ;^@J3g{T8PS3EMX1*Y6 ztcFCw3+=dcK0Q?D2o1@rRo7+Glz@UU3Lj>cC+l@7Mkj#y^RqWRhWXrJDaO}If4WZ~ z+PQ-X(J@R$OIq~jX1gScS%6Ibq*aq8TV&14i}UjpT`%yNq%X-1GANQNrixebrKjqm zYSY{}>d+_KGqnsBZR?|+2oV4oyiYsW&JR)LRszds!6GT`!dkx>92Tl;?L4Js*xw9G zmcE&SEkOsAK;Zsb`BJ~Xw3r%-cO9#7OfPvq#pi7rFxaR|2*?MJD@ zSFX+k=vix6326rb_Oo?n|Cp$tVbC`v#2ZziyQXK##<6U%$5pBTDFHP;oi;tau-t&? zbX2Tcs5f~Ur5mp{E_2T%wQ$uXu`>XJ*5wl&gD4J1Va4uPSBWzs>)ZK3D+$Tsx0_ru z6j0<|z(?S(p5VNk*|*TLnzz+E<=3++)bOg9{pU!+9-eC;B<Y;Ur&@;C+qx9t zed3Fn)&q0P!83F}x%JK(X|8D-H1lRteVi9notKo_=!gy0K)q_%Btg_ z>_w2=YOE^JFoX`vXI9TFAvU2Bm3)`bNQQAO_j(I@6&qHYQVnaha=-i6g#!^5t32kI zkm7!<02zvUhm%-IMVVnz-Eu;@fyuMM6De*qCS-%}JM|#lqP|of5FDyqGUBR8r`sD! z!ms-w8bSglkcbK|Rsf2iJ?Z4<|jaL?f4xH9mz5sC} z4z9IljQXYx`P(WHkDMscM72n`)S^vE>#nl}m~O94fteyjV#O_YJ( zfIm?=WyIKVf`*pS^Y8WiQ#0Z7KPvvW@@jwS9TvD>Ym z6d;FRF8fn1Q_eQ-e?+<44wfyg1vriaa)UClS^NV?SZlcO!qicCyxqg&j{`X1Sb+;X z`fYy;mN?b`LDg`;d!EZl9zT#u1~{ve!}>LX2wvZ!(Xrb@VW}8-$_1V^e5UUQ3l3&} z(4v26rNB#_v~K6WE+6=+ha?Kst-e{9D;VzvAL}z`^b*uS%7zQ;hkQRdiFa1gYlaCx zHM9tJV3rPUHvsZ5o!>{v`>ya(khfL2jP3_#LlT3K_z8-D2hT0B4Xijl$B{GrJ&cog z=WzR4)`rHz5I|YKm7S8HHHE}?2`Tzmm;FgLZc6-sco|&UvLCW#= z^7*OvoHTMryrU<6DBj}CnG4ra5_5`AjhM0BXF+XSok*EehHN%G#z*(;;{ej6b_puU z^T11Adg-1-qhN*9)u@)2l0)ZhVftu*)(Ll!8zs~$NO zPGVO!vnQmASqNgaH2J%sHbmX0A@8a(cQ#iLnd!I{yicFnGKmyyv9cs!K_yCE8RuHG z_PC#oAY9D>BK!|~h`bQL2gNByl8X2(v2eR?iwX|eOaWCH<=>hqUzmoM|Q79VT38B^SljdFd(b z;1x!0G8h8p_Z5BKsjKo|F3n7_7d-zkf<~&Z{DuA359K0#SiC;iIMHx=8L8tCO+=sH zajk#(?wQP7MNeACQ==5xH5p(KiWkR!Qf!-I7B4mJ@3Xb#V?5KsjwPri{rPpk#5t7U zM#iHm#1~Q6y4xsP+Vq{nwgzRnzRH9X(0R;Xdv;^2Hrr!RDxgvbQ&+As{{O)_BofHd zx=L_qn1?U%RQHC|H}^?%dZi9RY~0-9dL3)(rL~8630uTtqZ?7NBlYts$E0u_@Hp&g z(sFeys@z$A?Z4gv7Uvb$Z$_8>k04VJIVhU;Cl-|6#G)uDj}!|}zq0R+rP{-O zvAK^^ieG(GS$^HPGn(4`&UyoGK9Rw5`3u{p+0BUtZo$H*Cq}3bNqXP&$#0Q+qp3pN zS$C#Dxu>L#;%aef)4+NnZ^kQ66b#Z*FnDqoC+hpR@H#1zYs# z71kS{KmoqNEBgu%#UZL}MjEzF!;J>#X)kL5`!#Z2z(;r1GGo_WN> z8JhdDG|TB@)0&^1^VI%STmNv0kd)&V49K%!Sth>^g;?>3)aIu>Z5o}etvLz)USvP@ zpBl1xnhB^VZ(grYt4FquBIvB*jj#%Sq?H{J%`P}GVHMEtt0>-hmkU^TK+o80!79%= z#NTI2=sJ^vQFVDzDu~T*6NPlY)5hkY zh+7#tE@EyFY2d}c54$*2Rq|W+W!a3ZYHB@jpI=uIg}*kVRx;&?q(77SF@dj|*1TMu zPca7yaJPgDBs|VAS9q;V?A(cQY#QNQt8i|%G^S!ZH8Env%3AtJ82|c381nPlWFfEo zbeS(%t0!drb!QwT-j!#Tp``NtJ6j93GwR+y^)IMD?%C)X?RorXRO=NjZZISAsaUof zZ3F(V3@O)*?)+FVT;Zov;@`{VGHn&nz>E{!9CIsSCaLJaAu{&KuPj!7If9k$T z8r2~Q^5cqrVf7w;kull!^HenIMeGMYz;?}EqL*8Kd`WuI)r4ypHCz4|f5U7P!J^?p zogsgkSibhFaM47{9CVV3a`-)qhwFy-16fkZL2rHAj}LHGH-MHB8w<-ZvOG;VARW6S zoY!+DNyrCzsl;vggy2jhk_fbCc-nU`q)4%w4HAVvJ20kwRUz*DWWry2zcddIVHLqb zRwE)Ko3hTrx}f$Ct0b02<(yd&j_gMUu7LYGh@EWgbaLv$4|}}ilV)Jp(mswTE?AZ= z-(e(Xn}kW%xLU9+R)&R^rdayt40>2fFn}&-sOEekK&av3AlGT`0!XCy|x=3A?isyz-(Wo`4lY zZFym^xO7^}8*vuZ8!Ik6hTQP*e9yW0S~`tgZB5>IgSw8h;7bBVTkLZNk9*A2@4HO4 zI*bL+Mii@wGS*zK=s=ZY|ec-7!wQV<|ad#c=ju%|YxX z^^R4JG=SZr(8fJe*-~@Ql;N?|GOsld7fO=ZtqfjTHDs?v?Dh!FYSXcNbv=5Z`=iH33Y6wK);bXUwa%?&AwGJHS zZ)1NXZ|`9+-C1PbU*tV1mW742yqWl{id{vx6D};a*}^&colAdZ$$C$V`24ln8`|;~ z_w6!LaIKF8LPUsmzY*5Q>3l7uVMxuqMTgiWkw)yT7r8N`6KA4G;a5trKII|y;idIm zNwmbCr3?~o$GQvK6Yi$$cm$zHPGC^Q8nu^Th)JR!>VL3@U+u-&c#@7&?Ib76!^NeB zk-*n$Z+%NpB;m(U4z;@A?w;TiNOK1js25s>@E!>5c=?Wj_$A$5~i*!PTx1*JbG-&xCNYO*6T<29y^?Nh;jGzVT=jww^j z>2ZM51$QEp$WU0=HP-!h&9?-RE4ONtL{;C&N!lMFp+HF&x(V%@Q9Q5Vm>Cz*muD14 zW$tz5Jyl;*Y>X6+1&*i2f}L7a&1ygh{aN*xMtj*k%g-A~C6{fzio5a_K5526g+Xsg zfPGK)i!}=~tnr7xAy4P>yvOsq_c--EC7`CEO8L?#+psseo4{=Ln zFwNQw6qa<87MJXaS!4biS>WxN{cJzChJly>3pn7PdK@$ceB*bbWD^I42tt)+M0K1g z%jfq;U+$~N+l{-H*EIuMFT7N~opxI`DF+Jc1{lD4cg`AFEPku1sQh&)))NyR&N7gH zy(1gvEPyT#yz*b{US-2Cj(MNEtoRvRbd)rfNwL_VngZ+g4ilm7?_H))O=k70bcF@O zps17MB>y{wFrA_11?6zpe%h*dE8`Qc--&ua>D!tEUjz0dBUQ0VJsEa5bv#FWkue2 z9pDJrKMEyUU;JoaPeOVuFaw@zHpf)tOMB|ic9=mb zVIv6@Ql}bWa+o&r_k98-1`roiLw;_XpMf&5)+W~g_W%a#4U)t~=Lseq!l&@{Q88b^ zuT9EPX&@9|98qGIxWku-xo+=d%#yA8cf*PH_D4#B-^_S5k0pkND<$zxfIyTo#!c^L z`v;K9-ud`DhIh$CP9`_>WMP=<01(dhiw35_U%F&}kh}RvTGrS~zgHKC@0iq^inc&VXzWeW- z(aL@jQVLOSax+NxNai(+t0v|rQCm_pyV+dqYZqTd8O&qk!#J8!E&j?=dGp~xuJ-Zj zO#P2Tlj^k%L2-=oA&M1sgTG5u3DHAk+&LxQ``jXSRy~f+`3xyi>%;MHHHnDPcGB@Od;aYmtY>SX3 zvakC&Z18>R-#KME=$)cVNYC#vvo}6)g?D>y!M!ZDa1m&KR3)vJF@COCneT7`O96tx z+;q}*+o;xD;@Vxt6h+c#$fA_w1Q${G{1;+~K&V$do@GqhQG0@J)t4tUDWM`Isu^_~ zA9C!GGYfRw`)wq)wC3hhAEhCb1uZ1mS*n%xM$VcEMY0#x)4aHuTGI~41;~O zvvcMlRjbigV`<}EnY;LnG52tESI)+wvCI(quZZi8ZT1l#+IIcJtI+mBJ<%l*koqnz zSC}u(SDrGh-~RX=yI@_tSHStaF97JrnvOKiM#O}T6hAf1nP>2)R%s+y*$^(+kXyjC92r5?A5^Hyyw-#6^G zex5(Phot*?eK0(=OW7$}md_A`zgGR* z3tUw+{;B=Y#d|}+?;t@9PKDcM#SR@IF&<+>h34b0C1)toRHH;2i@5UGVQAZvwH;DW z&ZhS*z>RtD)zl868TTWD(tR>?=`24ui&CgQoZ_r>_EtKytn?yblWYc*PzStO z;$wXjs4H$d$bIY4s_Yyb#~<{uw}rkT;&y}+{vuEbjV18KK#b|b>nhT?+O>d{;J$dB z8IMx(r{J_X72@o_dbSqFjv~>CY6T)4>TKyp98PQWIfkS-tK)ryO9gTizr{kg{ZqW! zFr>@XXSp&pbQ*9audL6?4=RX^O?-XUKOT2|O}3?g0Uq&r{Kl#)Fg?3mc2xRjt8KDb ztwbwVcOGK$MO(%Cf+~}pQbo)%eXmKZ``Y4L&uILW#b}# ztfm4+Z@Zz(4@)fND`vKucHv_$!VljZcz~Fa6a-Z1HDWOTP?6DMsqpGO`iXj;Rqcf} zZ(d=(NBqf(&T=@Z@MblNk_lCUvZS(y(_D#G z1iNN6=TT?IF8Y7S{sFAe^gZ=|99@G$-G3MU)oRNv+qPS7*|l`DZClH>y}WGOTJC1o z&9-}Q??3Rx`JB(;bDl%PE+q?U;)vGDkvN$`FL&6|qS%v0;;=zcG^=G}EuReAfUp|C zQkXqV<(9?Xaq)PC4?d=Bj4Q}b1N#Q>m?m7v+|LY?L%Br+F?Mgu;L6$GB1S%R3nvD| z&(xpapXmUzLqwYWe|Tp7=BtO982<`x$UMa(0JfaLh9#H_kYtMajmd7%y6z8h0LQ+< z)?e2mUH=YQJNvw#a9LQG3evfjDjo%BviP`gOYM}Awu6-lj6)7gks3b?|KLyP@Fn2~ zK0lEG%0SBAe6q{%0e{FCvN@z^a>d`Fx z+YiLcQ-rQ0pFred)GL|>p}#b={39Pt_pLwhwH?y$Z42X>xS{8AMETmk2n;CZG!lnp z)4H;-7@?yVZmdLbL(CLt%{QTYUj1mV?fNe<0OG$McISc{6ZFVH$5q_bm?_=zs_&?@ z^*i?cbqf(gFP00<*&P)PHR|S`IxP74-@o-jGpHj#ySZMKT25IBPXi5+O^2crRi}6? z7gY-wIKg7U3%&$bvnud1iH5$tS$ElK&RN)V3VH#@h#d{#lC?vYlq1SLDqJgD+N=T9 z=6mQV*oZ>60_x~e3;KU8nV}pAf{{A4$5%%!o_pZLAZXJUB%1`f%JSEvnwD&NocYdz zS-=O|A{35t8;d6LWR-LjhVZv@B|_%oER#>AEoQr|XDlk@bNOT|95chs-Tx6xba1AdYQHOwK*EN;({u zp`c3fYPXzUnmPyaFN5?+yTseRBsAYv4Cr67M+QP&XXfokr z5TVdCAvsC6T(ni!iv<`3FWrI>hs>Yh_z(QI^pT?mrYYgFf0c~G*}=-#JV~bB@&w|Q zbOS&uwsx4351=7T0EV2YI;KxHNQoY^LY*GTt@cup{phh2GqQBL*aW1bsxfpvwo!R` z5FQUD)XxmIb!+Ocf-_ZoGSoI}D9g{rBqv$(dEVXg)OVzsL|O4_Y+5j*7Mirvb|ic( z=snkKeTi%=NRToJ0M)rc4t!6@vfutzcR?N=dR=8Mby5yE~k@0m<9xB4xK4h=9 z)fU_6-$=Ab!R35c`eqX6Aw!t^j~JKU{|n|jzHEDztZw@iUGzj^G+u;~M>Oh0K4A%p z&c3FD3;vU?ig#(yz!sgD?AMyTU&?efFcrq$c`MR8#5F+yeUnt`UsOry0Ks?2%N%85 zq@p#gEp$0jFE?3^U`_eW^$4h7VhR*J^YpwK#!7^2`Bgey*u7A$wc9Msj3CX!>2jiO zO_McLlPzo*s?FrZ7aSXwz$+>>^PBK37X|_gzc8tO$xp9n0(MfP2lfTM0v3821JC0q zu=IWERCPIIOcy!{k|SeEwiAE)QEWR--Jdl$Bve^*Ap#0x5Vx%Jaa*y`M zPcWD-sEqx5<4qI42@TxONn!kwK4MRp`K<^LYPn9PK@E|$t6DnV{ry}x00fA4Ap{4r z)DI#qG|zXv=CpyM=YQ2O3@WLP1BsC!^DB6o<*JK0$;cS$dcX+(XuMyPX@XhTwDpWTpO8g5gA!rt#3OLf1IxOg+#bC9#Y?ga$0SV=E6L zV$-X?$N6m|Lv<>)Yz7CiKA?=l^@u2Swdard)BE#_)G+NIe0LA(Sc|U!ue~?bF=(cLdqSI1=xyQe~CxJz2_F!YXFfI>?RSq6njQ;bxWdB#2Z|Y8>&ibfCy;l9Ut|yG@-MErO3C z{Q3FoluMJeCl7)TzB#BO? zGdG!gP#29vfmO7HqYE2knBVBrh3STTvvf%I+UiCF1YiKUcm+Lu*A0H$ zfBvC%5VVp^(C)0;r*#pVbLPoT*|Xh^txwNGAjbonlCZ2F*D!u2mP;vbq42xEDWneC zA94~RW|vd4pLXV@;X|0ucYU={5DU=>{gX$^`ucab4v_wMDoIN(YSFGR40xRcu06<7 zCd$fJ17wQ0nSOU=V21#p!4J+9$|(6!G=F@#L=fN=YkaeQDlUa#csk6Tou87YXNiNn zg{qED2#+ae#*2W?&yofu%Dolbd_-yzf6{pTut8N~fE`k7A#YUM+O3x(+fPdZE>8Z# zm+~_2die&9`7ET}eM^tL*K4K1AH9V}9=eoKAtjO&6`)etT4W={^aqVJ7*N{U`Of9l zDbR_uhvRV|Xe!1j=>oK8Of%ufdP>W=qX$LwpO#g^q(t-r!G+2(JdZt0;QZcq?FM}$ zb@Ig4cwQBn{(Ph_EZS)NF%<&%=@ks>SZ!1Wgx?`Y@yV8zr1D_s9VwxyLxYmiR_JWo z+*T{HGE_DHA<#1+hi{fp>g$8e(||PA1RHuBSPlSAlaHqWu^z*tJ;bG0wz;RM<3Y3` z{)7PvEfaU`%()}$+=Wv1N__b~m0!-Y+~Re~12{r|>2`cvDB^#WrAT)+1!WnyCNt;u zkzBEXg;Bu_wR@0xJNCD^xKJ2j#KQ=V{cN?G)&K1LxRWdc-mAwtG@b&I@gdM)> zm!Q#nN0%xsEE}pTPNoCXH=^uY^hVU<2$K7L1*=7T^OI>uU1ckU$*6%(O&mncp>fxR z_mfORz|_UXhl*l=FFbh{^EnhJ)q@IY=&(}8B=uxq>7Nnz*H#w@v;yc$Tan4Iavb=S zpcU)YSzBF;<{tugM^x21MC2aa`R_<;HQ*S{uuu?f-|deIhUYCLydJh25;R!(L=N;f?A<&(W21Y6ercnQuBE`RIY7WvXpoar%L*95pBh!^f{ZLi+c}%#DZuqe57dpK zDq4U}I2G!UHI? zGc_IEJcK2(m>JOF)2Sw0glr!yB)_j}n69l#K^K`fcM!R>cG?UIXV7B>e20Sv7pQqQ zq}ttytjetPgO1^HBtb8ISmEIdlvAj8V5eKfEdE2QNS2ySR^pp6B@J#A(*X-6EJcKG z`$Wfv>^Jiz_0AcG;GVK3;6Fdn^C9mL{crkApLbK+x!6Ozr|oXrY`hXfc7aWdL{5i1 zVo*{us5+`XRc^<^23g*}=zCNTcyj#uJ2@2%l7rdg__Y5YX3m1RAX!o^t=99gO`Ngl z#dL(HwcJn=T+Gj>MzQdfP_@e1(l5f^pLoYVG&EDT@HAy(<+kKK;WIV4JEOJ3*{T zy|5+!tlr{#d-s>KFEY_7g5m;d;t0SvH{-ZI79#TrNckWh?*A7T={x7V>$<-M?PPGiek~L&+pyk2`s4E;Pu} zBp)Wt+6Q2+>C63b0Q@1~KfG0Ok^7t8Sfms#|;6iY|*_mwiKJUDvRn4#A=*eJ9C%i23yt+FA< z=3-WCr-Vb5!xQ|NYds~{pxxO-A(oD*;%lS3Bzu%S2&ww()Q?bibH2cL$jPi0odxMJGwIJ4Ym@>^>! zfVSmht&yGskOn1v?`N-3WS1ZFtzPnWXbGhar$aFaF|f7k`gzM zxtcPuzyN<(#%(HC-@YC5)_?K3vol52x4UC=qc1ph6n0e-X6bQt&b@P9?6sg~llD-J zfss7GA+Pr8UBe26M`q5!7YRn@zeYijtGiD)fX@cl@3Bf;upIi9q6X z(m$0U4dgJ9-Ub)!5+nzL3-MD-r2BVPYwddD!tAllu-)VftWoXYCr{drE zRoZ^qeN_s-oxzA*Z$Itln+MY4mH*&Ba(`}Z%vJgYH-o5Yk>&E@(IzkMJ$U=x)eZ7T z1maacs0AOly?A&)Sz&(_bOYx)>h>(JMz_h9d(t>2jEcra1GJYrO4JcU0b;S)s_g>} z(p;J0)AArp*X6Ea|+D^g~J`qk4QCecY$7kJh*WZj<2@; zdUzdl^g1Z!4dSJbdC?L`=-xi2bzL}rUWynNWw-VE`UGDgS;6I+o$b<&sWVkncr&6+ zs0CwoRr|dZ9PAUL&O#}eEwR3tOiieA_IhZSky3XS&pMZ_G1Z-R-#gxpi)@5FqJA4p zG|y>I%=uot$4$o&vySLStfp44-hcuB_!Sn;!z{?)+VP*-BOHOPO7(Pgm3sZ*u;eIT ztb9r}P;k-|=Cjd=SvCU104yMH!lJvgIN|$ZD~tR`14?XEpgSwlWH*& znj%R)Q&G~=&KJ6Ilp^-sZleC=tl3CeZ6Ipu1?gpimW9g*F$eeH>^H}%P!OHQ7LQ=d zYo7PBEhjqQoUMuaAruVEuoX?~5J5RsRZ6r)NwtL4m{!*)okm}Q%r2lBEUL0(CMQMM zL7?L8jAUjwJW~XN)P1V|+z!pr-6A*h2Pk~b47F!opge{p52d|td%G2p^FzDHTe37I zm0m||_SVrO7w9DX2mfjE$uD(DI}$iJ`ZOsJLMf*)u_HY0P`cHhRYIt4t)NPJWk60)g#J2}MrIuIlk%VY1fySK9$Tl2(ayC+za9N@n-%I z&YINkrS&%34Rs7x<>Y^vsQS83R7wJYN&k5Rw`@-SRHe}@EMuXmLwAsBP|C3#+AtXP zOAO4G;6h{iCl@+QoF=b_dgnRN1b3|*p&NFyn3cTT#`0DRPS)cdRStpfmAptogBl0Q zl23xTwLxb6SL6Y2Xv#Ui3~06UDz$C3bNWv-c=*eU_Fa)CN9hyD{|}JV7JG~sOjT_{ zl|^z_(R<$UNV6CMxEW8pD5GcwEjMath+6U zik`GnRg8>b>R^v_?yU7F9y%;H%2ls9u}9d7>0L77V?$PSM}$deCDGxo0rXHmD-1X37VXj<~(|if+wA z!^8zjzD~NuDoc1g@Ay$T{)8qv)f8|i@2R&Yh;#;wSnrpxCKKEg3D`0 zREcqWK<<*+)xggRHn6Y6`2^3sA4Ji6E?)`CJlwx%5mI07Y$aRQ!dfN&a^=~(&Rg3* zO7A%g5lh&UP~#gTv$taA>aI=9CRv=_Bj*bPYb~iz#K_i~W@#fX6w1^zR?dLhyju^!9e|35$uh!)$k>Yi+)%-`5F+PP?F4Cg|2( z;2wZ146e$=%06BK@0;4z;i+7@&d0;Ojy)ryB`h2hNWm@r-_*YnUnk^i=U?{yEd%R1 z+a6bwoNJjQ*=8L)8wze;b^RYorOJQm7V}1_1By4^?`N=?<;jLq7_suR!P>uGgQCGpQ_LGe%G zWrxng`z^HF*4y-|C3j|nb0+{c10dV-&f?e$MJbLVi&wQRtaWVZZ&dg5}wUh3p(m~ zV&wA?#?{~;KSN_o>FXMO=l~*hPE8xSS`4q`I2U9vh{Cf$#CM;=0G^)Wn$<_qI6a4M zvYUew=#h+6jE;*h7cXn5Hw7X**6B=)*JEgC3?P^CEtdf^&cF!k>pVYEn3dp3jMmOD zU$b85xNa_F*mNLYoE~*;{M}N_kjf|jzmS>ZUMmUSd%o@0tvELJ1C-XrVclQg?Nj2z zV;sAcYkV{nBYeZBL#gMSK$oo>IY0IrSr---NUL3GHNv2J&KV!Tj&gKUXOXhG!h0F8 z%1IK12uq_V9r+q$`rsu_fh(l#Snl9qq(OGkZxIqhg(g`D^n#QT`oFyOCwG0! zye|wtgWSIuL36>EAVX5UOVs$3#TU2*A`X3r8gAzL=B4lsWz{jJmBfvM{uvYcZ7 z-+u4%(s?VUx?Ji19T{9kq2|Ug5`uOoVRJ!iMRA4sgP+CHa2>StJVqE7omVVejR?zN z0s_?yhI+^!v&#|qod}vS5u-srFPD6W$fo>5@d7#v8a>^C`rPMH5824T`og2AzF1RK zV%Y25v)BV1KtCv_Wzt7lnmnPL^}x8_(E=6%oX3g!2hxJ;K5ietml9c?!76}Jt#DiU z>n?PCj6Kyc??(nBCZ=Yn5_!1DuJ|>Y`g54yagQIRguITQs|H-=6nC`C&fd>UvwpRA zN3}Bsu_zxGhRUG@!|atON20QpGk9kRwxE4@i`5;~-N$qojn-C(q??QlDe)P{L~^WLBGF z=i5bXZ!m(d(jcnF;}+qi8B5{NGG5XTx9*I{7cLUbtgv)o$MQOU4jYlI#17W>y? zaD?#;nX9sZ!t-dW05Ojtv8msM_siLF{f&W0Xx723jqx8%88V;TrWVn^a8@PxPsKwq zh`a2t0AKXrcdPxn2viV(&3>O=Fb_^F1$?KzL~Qoi*}4|XGF8@w$_}hpN+CEhAA6Hu zT-EE&n+IkM9lMu5-1=p0=+?^p29`5cD9Ulixxd^^_Wh+Zq+I(;-zT`jET*JT`3!~X z0*ZE5I(k}Mcmk1DKq7y}!!3Uc9`Uj~J*$u+eFF>)}KHgohPOj{=_c=;gXbgu}jWNC*|Zoo+d1WN>ACpJ|zblD$U^4;Al@YL`$ z>6P1#3cXLfZ(WD}GGWIhJXyba!kF_K#Jk4~fG?CG3Zf5wiH6uDx0ICrVh7YUv=ThukbJF3s_z5hq>Ccm@7J5p zyPOtvAUi-Oh|s9&bH~R;%4lZr1niS@yCAnMunB1I!c^s$bk1taY0GHR2if+oICu3@92sIbCQ%+&kBKq*Z7{7dIeTS6s*VPA;B*`+;;bI(Y z9&sBB#T)izg-Lcrittg3e3A%r8;W~~Wi{GYW@v#-vv}sg;()#X01?MVAw5rIE zf@*XPeVQ5g3i52=aS113-p1p~q3Aa-JRi)xM7wvKTpslZXLjGZ;d!P_@>W&lyLxn8 z*e0^FE;pU}LeQlT3G7*To*HBnu#7gwoXM!G7;(g9{d zHo6e;@rgKzNn2eo$r03zD5{*cu95Y#wW7}KeB66@xDPA{{aTFXQ14ls8c>3Kb^N(j7BwKp|rzfj?bZPd>?)+|2Y@!>T!UX2*fGb{n*VqKlvo`{2!OUfJb5g)k{=mP@aMB>LNeJQccfb3|FI~~sue(1QN8cfIQ)!@@H&n{ zL1SUz$oV6Y0Dtvr+FgNXbn0OjnXB&HXVdHA+{f>sW9o&krCMDYQ>LE9hSMu!LU;Ho zXQiOH$yV#{ab8Pd+QCWS8@1S&BowB`f^t*Q(9!j^vJP~P01-o}TRXh?5@~j7VRy|V zX~XK*Z%a=4@GEbDn*4IN$g2K39s@ESCn3Cesp$H7?rx;xO;HVRV9TUDgQy#*T@F z*IFsBXZq$V0!kh3M2g|7lC)t_s3eAiq>~$?lcTMBDgBZX;S-IS>11tCd)rWSbtO+R z#kGRccdr#Nl(xS9;yTacZrzA0J{X@8jD?J%ZozssWu`rx-Db&5^dn<+CIx3n5N4ka zjI`5sN+xHr_HTU8POa{`%_s*j;GMxQCYdG!wOkkSqM8}=_y|(O3Ga<3{|%;AX}av1 z9F$@>cIpaVw)W~T=~?N52Uv{k5~gAuM+Uwe!%?*?n;P?84%UjCw8Q}dPBkEf(@F%h zbDE+K6u`@o7-Z6G>BS7~e_SvFfEnWGI8trorJ}f4Q(nciOI!2_;;|mFN0Kg9T4KDI zYVI_-Ekj4?&W22R;`yz<_lRqybSX?->h0&zQ`22PbWnw`3BXZb4?LVyFe=tc8uQI= z)!WV-3lzX04T-Aks}=6J9G@1^{FKJ~8d_`$ItXb&mFi<n0R4{d3-1 z^<};g)MrKp;s-0k?e;;y!>iW}EpO6VT-_(R0RT-a+2`&o8i;{5O%Ayu^_UK7*+5|Z!8DjuD_tNiDP3U<`g;&66lNTlp}EKhWPx~tk$Y`TQ?8-QW6{7w zPd}}#lW}(uefJj=ZuO-3rsTvv;Pp)~=M98`6-8Yc5}#V|a&Xp0M|a};cKd*##7;uA z%#t?14SRQb()WA)7kAdVBTr;wpBCe?fV(miQWb^)blESGHAql#y3w`;VvL{HF>Lx? zXa6L=eDeM~rcE)~3r@R!LfQuw5`%T={tU=tvwuAsD*h56P1RPgKX$Ql5fsUCQ*I_^CWJjV2Mr`Zz z699(se0D3r#Q}4&imi-LlV|1KdcPCt8f7LWoow09c&DcUGY-#L;8@K7xzO7cmfDC3 zc+}*^Ga(*XTRD7ThWb+lF{G24W+MNjx+B=i1$5QwcD~M(EUm+sx_DA#0aYC@9L1%F z0D%kk9k4=hBx95&49;og?!_?+WWy5_gJdP#{SLCCsNK5hejV!$e@lP#0aLR?z0cj0hyR}U5!kry&d?{w6}>bxu*H*fg5onFXJ{#tW$6-p6D z-F5^-8hj&aqieKZxWDK^P|&$6SUlPEd%v*uON;eZY<+(q$Q7jDc+Ee5JU6zI41vl@ zR)^@=-@I%sZx+V%w?MG5c?8Zt8qyz{9O)p^#gOkcE)8*_G1+CeVy!YO z;o0v1)3}VnU@^gf=lq_>a6?TD9&rBZIdO_JM@CO2sQ0lzH+AeEI~=PcMMp&%og*`kvy)Qc*;ZpDQbRR>i)y*KlL{ zV7k>}m6)!hJir!GFJ^9v_l>FhZQMk#ogU5wI8V6#euh*qv$PBxC0-$}AS?8M679*L z?m^uaH3+8m5oyU$&+Vvfqi#MV@_RbN-b8^9hc_+Etjsz1f#<2S?H;HZYZLMGytS;h z{yrw?ixnl~#Vk8IrRzC*x4O{DeF^IoV7ICnQ_3p0qVW9mNaWbf;}Ko= zX|LNuO;+Yry!M3_wxjAy!=sMdZwHtw{I@roc)~72O57Dg=OIh3Gdjp`C(S=}LZo#J zeBgsWye~Hf1ECg}pP^06HmA(P!2G=ihi2$JFuTk4h}mA6+gWsS9&A+efy!A?0@}1^ zB^oY+?@FsGksX%-rvX77-__QfpH#7Q2pZjSz#4qK_oNcy3if-`(n+}uO`9=lW7kM~k@JgvRc9aA>WuR3cBD9EEJs+KWDZjyf%`(AZ_ z@V?w~!vIwU(=Bk<=b?+sE}hh5iVg$yaS*<)VD-tg5_NOhX_0Ex2PwL=oZJz^?h zV{K^ihjNvNM#s{FO8CP#lzDwYn+_jmX1Tud^Yf~1b|rbO76<3q(RT*Af8uX3T*JBW zO!Hx(ANA#k&lBas_w36ju7N*Hc6}LCNuJj|#F`n$fg=GEf2giK@DO;7fDGU@E={jB zPYYH65;ZmTTofx1_kp-lfN*bk@s(GAiyJ&Wyy;}#)KfGAc#7CJ!mLiZf_6ePtRuhf zOZ$tTg@uifE?2qm-e~wPNCa+F@Z)A`Mn%ncNKe<{5s0P7>-}gi>NfW)2-~56ov4@u zEH}dhdC6ip6$7I8cPpl@?)|r_jjPm@*`$2lsgZW?9C;GLkF#8Y&;&ZaKN-jag$kH@ z-s>9|3%LS*NN%dyZWf}e*(zn~W4HhvxeQ;2slIYlEwyc`Yt-z=w>>hl17nGe+GC@) z?uMo&M@3(yG9DJjXnLvpTPFp<>voBJ9I5Ww*7v*Ak7k<}&hDw$nx*6&1V~ElPhW8J z+gp=7wEJz0tz6HWAN$y%% zI0H}JloK!w>wfZuCU!l~xqGZ${gh1Rj){ zTk&j0vBKHJm{-Br5!4*P(Gm&N*6VdOJ$KN=hpR?l#Fwh?@L&k&OS256!W@l61D2$B zPTR`F42R0r;`+<j zhaDshl&|1oA8HP}uwxr_{j1p%zRRFL8IY-`&=6-}#sh-(-@xgBaEf%<`M zM9zcib78BV-OBUAT&#GnJx3ZIBjVC_)3ApR|_drs@`Nb(<=%Y~RTX1r8-YvB0A28!*W*0m^V9fdY`6@n$fDZ(^DB1OKz`bi!nWzgU_l$GE zi@NoQQ&GB#VK(*ESIMqubb5GN56rosH6B-?JW(k(Vx>5?t3br0&h2-nTyED5x<6Fw zY<7J4!P~@lw>1Yde(Ls<9A?Mux|DfWR-JhI5DFx2(aTv>URuC#in`%(2R(N1a!?R^ z+##ngY@FbE%oS&&ipMpU zs)JDT6iDRcXZFut`heCBgbkerrGyeKur}n>Jy(*I1$1DE;<3BNQ?+Sy@WDRDek}u@bXb=5e+e8*bB8rDf5e-g3l;OYM)SPM%Nqhr+Z-hbKjBak8? z0tX;1#2?7Wui~^wXSx~OHnVI~d`>TC&E5AaRwn|R(<|0LokV0*Wtci%^Yk_|a+4>~ zEPx8WT>@U77B|}jd4y?&qC~}c&5HuEIv5Jvn@Ma8jOSYT!||!3WAvnP8sN(&X0v4o zzdf_tFOuc#=4dz!EHsyGq|DK-yT!2(^H^Eaz>$s5O8EAwbl8>4=dxikSEZih<5_{* z^!%23-uXl*cy^F~Szqs{tR==g1GW#8)QbT32Mi2?>gbV)`%-YiawTS8FT^)Nn+x)=nD&b2>cIXKVlaP3rb zQ@J7`SrebGeo$c1wwQP1^)jELc{Tf-tu&52OqiIn8M;TSTW}azHrZOFXi@R0b{9%2 zSJAfa%f4x_SZ~W*KwGP6|1JN`lM4T_M<4P8{hvR_O#0%MW}`QVYSRv(9V*1Y^>pc~ z?`GuWlj8LFtab;!i1qzOjegbLOxNzl)MLE(~@;U$^Atk#U8?$hvcUO?33 zx0CtP$uGT;3FJ~ET9a_4_X{xwM6>7wqbC#Qd#0eFz2m|u$xMDSH78e03aT|Sm&dve z5PY4qk$KCGrcN#W)KumQX+JoPoQCc}l<<+DRHzbgr9VaGBb+*^?#@X{a$eMNqoR_) z<)`N7&wjgT^r<}y&y+c9Wn{Z0<$PZ2lLY979B z+W)LmUHmb?4$+L5lcX%Gze+rJaNuj`e;G6&o$OHeG`?WKd)H6N_AH6`Oz)G#Tfb>p z)XAKh3?M6RlTD%2V|gn}eli=r&lkMwQ|@m6fHd4t}I zLODjYN5#krzzLcH-}cRu@6))RsTrA*fWBGR-X0npF&i7(M*H(K9pm!rs1=J{$S@i+ zqj}tYSwQA}p0dOWu(ch)Br1bdAF zO!Ro}>P%Y4jl8C+b=vQL-SrL=KI2JveSLA+106wooS|YL{`MtK;I$8+LvEeq@^K)i zsF_o?v%A2v>$qC%es8R*LTbBJx%GUz4L1Aw;Ug#qj_da({-C$zTVU~!I~-AxQqIWf zyZg|d*fa{Ay_pw_u43*3(57%JIjba25@o!rj8c9TNp?|YvwBeNEaYMR8Do!hG4`W}^54SQc+Zs+P< z|14O}T}jdS^M*-TyZAR$%NKg}9;tcxXWKiKboyDhho+_`EM52Q-B>|aF8t4rInAOV zf!3qu^+xc(OA=FDA=&JILsi|o)v9^cu9kmQrr$D7rs9yB&c!jsPC`rrc#>Wn;bQL7?XGflpD5$omOm@mRVnp6@t^^cIb3kK#YDEtfYjO+09t z`~I)%?CeZI@a=Xe8ZS>KG(NYQDaTFxax+zCM&bTUs_pUYCkc%xWhJ)h<2N5e8Im1x zm=w1dQBuOZE7!`HCMe0zPCKkKG3f)^eB-1t(Rf-pb96!cL60E6=mg{*PAJY4EEB( zLMTrcWl`RHYoqbsqPnL-wE=#z+Kys?jTGxsDhlo`tsFV4uYrx@aA2&pV%#MceqV} zp{>?nsMI@H88?H24N;>HL1uqKvRNkTq{7_*D>mYY)juf-qh9IUc-I9nHuO{kCOO(TU3G61FgI-W75uv-T}rC1 z&(Xb?ogKI7UR(aZQH!Ytc>&duFFyrqL}8+$)^`1R(p{>HfrjDpUmixOa_Q;mwZUS# zJ^oLyd#5hc&6odtQ8JvgN}+x{Mpr%ZJIL%*O@+&e6lJ?-ex!^s8`Vd0m2(&tFWE0% zyw2p2)-19W+9R4=3XVc}j9^9}u)`x=##dl9o1<_lkzC3QR82pRel4wL;3KaVYK0_t ze`zF89edK2#53rmGY4bZV*SnkbH`kOyWq){i3yfE{R@IlGw+#_Y>GZ6TEvDkg} ziZ@frNGDdwnSlLytNIESBleLDhP%WfF?AdUF{X>&&@nLOX>>Fijry1L(8i~SBN{|m zoFTE!sg+26NJ0AE_Q35??EM${QaBx-m6Op#=2BDcmD!pdDa~P#aS4S9-VcOsYF^E7 z`~xanat7h-AJ_zA9WZVmd}(a99Hzt5eSZcX+GsJF?vZVX{m1+tn3T#$aR-Zxrlhg) zu5nSfe)Vj+=*yb(I&jxlqDt6K`lwDqLEnYa%3M9uUq)fV!{_*X^v;1j#a`= z#BbX4C}jiGm7b3@4!8q_X^~a-ij%z`|8jDPv2^nGTl}*>)W@eD}RvrS@t#UQ-I}dFQlig$ZyWYq?2?wHRuD64f zA`7WAigSJLms{ci>s842*jR$KH_1Fl+nC5$s)u*av&n)4FT9p=tk<4rIfq5nM-JEP z0YIW2pG!vJ^xui-(S)8OI(v*MNJu=#O-_!nAmfmfIvyYKl`$DpgK;ILLK-)wmWQ$< zwHt6Zsl41KT1%kpwPy+{-`{w0TD;P-5r9es8+|`h@YryPVj*rj>OV093>uRG;1`n5;5e-p?n9+CJb zIskp7g!BJ{lGF=;rdBg1^m}y>$hB5(K6#HVPZ8*H%FX+B@i1eW_9c43G%_;scs~`L zj`eyNcewHJ3#&%{A(n|t{w4zxG1po~ppkn*QetP-KbrR`DGHiEXdxdbf@^8Exd0u~ zf9d7Cy9+-(g@ProBGVUd*6i;bK%rCTK5hNn#%8~B2d?Xs^5;TulHk64wikl3&d^Bc zZNMaN?XG7#B@LcNW^8nox|hI-eJlOes&_rSjoqC&o_)+)=^Bx_HoreGR9qH zJI=}s@hULOQZ^hjBhvD8{3i=+Uae0pyHF(!HOofZs{5T4A&USUFbx-fxJyq{{C?|6%dfAN(K! ztgH#V22mL44-LK|+&{;d##nyzXD>z<^*FM|EiRqhi&fg4DOSK^;KF*s14^9sRKe@7 zsH*MCVc&EkRLcPr7Q@R_@q&V0quDonr4Xgf%w98N0Z#5-7EPQs9%oyA4~^#ps&bgL z1vS!tCjpc%LD>IAeH-Y79P%GvE~Q+w;E5>fVd{RZ>+0(I^XE76Y+0ZA%lLD~it8{j z-cT%DWbZR6DYW4)LhDnTb5{^~L2OS_1wdZYU4DYPHTO>A5ITh+B7d03&cNRuVNr70 zj{eX&=2WkUK|n*z3y&(VX4YBL$!8V&*mB#(siUmN)FAw48@U^eV6{xTgPW=uFl1Nn zIlZ>Yyro_gs<##RvqVL|lbP+m-7lE*`reMg)L3$Bwht0SKIl#scfEwW!Bgk0=fJ=~ zpsIev*|_2lu8#i#SqO9ekj=`2+%|p3|MKVhzq_m*MQ<<)#~kx;G(q;|w~pMdo#1!~ z55dbno4C0-J2?n1FE1ComAV_qA7wkefV)!)R3AyXk%8@+uDr`Y+8-9r-)Xm(o90Tn^eLqA(vWVeR4?j*$=7KNJM} z!Shw&1(Z4s-d*ezRzb_D#Dk=_bSPESaP%30T{ckD;G2%>l9Jr~&PVBW$csRa{a&dvwaT^O?DcH9Rh~xh=1Ew6KH1Cx_d_`$ z?>i(NkwiBnEEG%u#ng$2snf~X*?ODXa$i(edg{&Uo`H@Q$yA0x@ zQb58C{1N@?R5`DCrH5a>T=n}h4Iw`$sV9F7!^`!U3jKPDv-xq#!7c!N@p^yi{V>%79==Ly zfGU7G-1Mq+M2>x{B||hcgcH{Mn+^NwoU|31UhBxKa^DI0^`}{!TT3T^)YwN$M4(jZ z((kPdHyDP_M2Q76Wma5#s>e+q3eW;sU zyQuf)-pqF5h(S?mPdmsHa=1Y~@rct>p02W!*Ims>baiSNMY&owLDjSrl7*ttyAhTO zDG`)M{o}dibL$JoCe00(^XOHCqLq{5S}$ZA>ELq`ylM4vb1x6+Ib}7u-Q19rDaM&S z**Z1=f_HrWwy_}Ec}&)~u_4)v?+kne&m1v3DE^7*0)z{jV$^b35i{m{xxjY`cx={s zGhM$lEnbnI2c@^Qsw>{H06>h3?Ea8WW#zE+oT)v!DL<)jR1{VP+&ucHqYc!yu%r)G z*B>Dh)`irFn_t~E^&35*XXcwjj?#N0^wqWPygYl=MgTWFzJJ!TYugQjycFPOEG!_c zDgc#PCze(4G^zvhr}uY_`}`BX`VW+b)X1_}2GtA70E$`yA`(U?CpqLfGhOzr-5Sl0 ztiJjlCuR?Nfzhav;<1FGux^tT_e+Lv)ejI5GLBOj=Q zli8*5VZi=2e6dLiwS-j0FW5#q~uUArTVrtOqF> zE;FFTKHE=WDSLELHpYqo&rV1E`#BSN5*0NN3lubF1-ityC0Aqp{}geOgpqi9kB9?{ zs@}oj0<`Ca|5_DaykYMU)GNP^_V+V2pJ|(GeDKU&vy(xEtfA)`eTX#T!UP{XAuwA? z)%F!avPUb~E*FjPDT05%i-+BZt-~Bp(5&EX1n$2v`Y1O!MBdLaRT-gBMmuABjIiLC z%79E=H+-s8|947%K5hoNSK~xFxGkNnx#j(x;#|Q^4}5BF=AlEA)7TWdf93n6y)%ya zu@N1k@O%fXRk`bNgwzL(DYIJm{<$h@;toK z%KO$FgTy1*Eh^T#0#T0m$%s1H+#9hh927^jyVDQa!RQ-o;HSGbsjBiYk`T_=32c1d zig22#%1*1efM`bKuGOz0k){^9B-}V{jDGu8^P1mXY9m4j6M?Qo;u!jnBp_L(e3a|A z-N&R%h#`LiEksy!SyU!>wXsU zFs5mzkv0}o#yf`E)wO#R7v6{=tjO^EWdm=6Tqqig0uu?U43(OSISA_wB`3f!lGP(Z zUaX+hs(3$lD3N5p`#V24B|tX1@ySyB7FcD~ReDiwm|MFWO@w4tCNpOh&m-{%927Qz zg&3DOrB6fCX_AFi&0WU)o8G?yq@LkHm*@8O8ntma&cDm0bB^+xo?H`MQXx|x9PI4S zAkeAr+Pe3TBv}5fi9_8rFQv2jp-(@d)5zr}$yTty>4Hnk8^fXqcUqM!y%vkXC67cn z2?tj7i(H6^tx~vEYPf$5pNmQS)yqhSPq(wN7?v(QUFbts;%^iA9d3=W&>e*;Ci?I0 z6Z7+bhNK3`HzFJkK@u%QWo$etzE-=*g1#RiMQ(x~^}A508~Kus+)~gCu`sr_A#VXc zj@%HOzaXKQd4^Id-KnG)+^q<8PxpNHF8bz>%;7@x{n($vDrrT4T^L#K{4&zNTd0d( zjwaT@$>EyVg9>^3I_TensZE`ugJsZ&=oT(VO_%m)hn*LZWpSIC(c9o4fpGbSQyA9% zd~%6AAkCoilk#<4nQBQjhPc|EO&W<*?`)Mm$pixm332I zinCCBx=x_>FfE+Z-0ousvv6NcTHE;WS}Ym#*{?Bq8i|x5C(o886`$Igi!xg^H|tBM zFo=SbO_c99pW6AW*gizd@v>ya_&ZwyV<2==&#rr%r?9A&Q3@@iD2}*IV~dYsWlh9a ze{!*lfS`vCoPUoQkuAeorv*dDUrf!Di^7dU;+k^UthT?2V(JRMh@l)_C7G&$2%w{V zf3P}_UpmD>tjtpY!m3WE4Z)Cj{snvs9CwDnEJBZA*NW?jw&mK5+4B8sj4=tgMDLC z{O=wXbdsy;ZmQF?T;PQ0OK(?;l^6^pNlp-JDpeq$X4z8ErYQv~s5V>rEB%{QwqFLp z6<07-_28fwL)uTrcD$|g6P`uYi3BYjA|cn>L-$$z?oW!ZnO%Y+C_;V=1)e+V(s zahRE>spEf6TIB;p)*`=n1Z;>pxk&dY%tQV7#QT7i#7jX2SPUE}jzg8nndvy4yQ&H8 zp%<;v=g0q52y(}D5WX-FxD*5fxdNym9$HcU(!K-tuR%%Sf*V(^Udb3PrS6pf-=-sa zb&${A9bB&G4S^ixQTJfdweW>7~7x`)?y$Z5?OP(SgTNL!JNHkjHi-eyXcQLtxzC z`@s!DN!&?;=qf8t*`lw$#q^yz^LqI9U7ByccWit4Hcp^BNENRrfk2a>!j0jm>byE~ znE4c!?t-hEe6MrR#;(^fuUfLaWS5uNHFdW{$Jk#?kCY6TP z4qEt-HL6)|5*iYb{>z@NN7PJX?isiaXmY9wv<*(B{#0H)rHTubZJVtDaSV|lQ4pn! zLddHnh)3@Ha8DJN|p_%*uE^ssL`-tMtFe)l}^AA znr^EV%#C0-VHy%Qr{m{}{fwb5uq=z_sn6lg>)=VhLTZW=ja zYysA+e>_ePJG)%6H>`HgS*hx0^F|i+k!VFZ8$mlRKLdoXrpnD!4ff^fGHl6KunQZ1 z^zm=X+@h~0*7&P~rm+L)1K$?QTydY>-%#e?mEZ>dA|k~YOfsiH#Vj;L0V%5@YVU5C zLr0BRjDMq zDKCD2$P{Iy8bukT$B1?)F*AtwCjuDLs!LwtH1}T9sD8oMoM89hn(FYdYGgGi`;MyR zt%JN_#|zsnN8RdvAo|JQbNC9-t|KA=%4wuqT@f&x_2*F zdnDX9EGBq#$gRbSHmRBD_(oO6_&naBcASkPwk&s8?(cWpq-#uC5|YfHdpWKGN8TNP z;|cLKg?(t!xfXP32DW~uOnw+JZZ>bk0M$C2vc70v7bOM}#_E2&Gm^U}asG$!yxl+C zxX}x@qwr;*m#1@I^y>HA%1h$elxn8j6Z=Vi`PgfC$ps$a8gpWBZbgmh!cL)^jc3!~ zSHILBl8glx{MCyS#)1X_f8_f2p+_kcZ8+&~ph(x*QI5EPn?q8REv%|I{*2(&EL7bf<4`E z0gQo8UDA;K26phq2SVghhYR<*jRU7M425f&~}SXw&~(i&D_U-Y;UIi6^jE zkPF&W7vM*xINO#-FM+J!(HxIxt6tH#NMYq&zN2?nLEV|9qEIT4}pE7w*$rsI0esn$iJeR@VZBe@(5d2NzAH=M3H>Pot*mmw2Ei8TQ z#Uy_X9A|5T#n@yr{`Jjtn5VdG7CszJrVtBVu$NGjB&dQzWE*GhIQSO5#aqjX!uwE^ zZiQMU|Ez*hR>Rb`=GOOtAUe0bq0jUR>hZ(BOwVid1tCXZD;s(EWI()AK*xV@{&G8F z5HgiED~9=Z)RTwH;e(wp2)Wa!<}=zqm5!)<7~0>bQ=}4jwfRXl`KvgNRtn}M3zwWd zr^vxi$Q72C|H-^7#gxZpe!?!X$sv~0RHT!Uwrb;cqeN)Y*IYKyt6SWOML2KbA#xW_ zwuo{n^Nyvhkq}Y!i~3r5$K*1^i}|sQ#f43Hp4o)<0`|yuozICP1O8`Yz;Kki^Dnr; zO9$x?ryaW*S$?bGGaVS)guC~%zP1rN8`j0k#2e{*$=qx)D?x-Q<+N{M zYQSG0i4vL~XMl@vLtwARDcY^RQTR@}iK{doBwm`c~a*3VzN;Is&PaPp_85aGA zV#2hA$Lth6br~Ux_ob2@kllOr^oDl+px_IzTz_{3LB)BKd-R)k<>l`hqucjRtf)DY zt0aF#?~`n?Ixe?8i&(9deBIv`;h9d(Z-9xKv3mj*+8B{3?d`rz@8ENCy<-*EC5;FW z|5utJ5HkEj$IbZ1F8U8Q<-gw>3dzNpyJk!=Q(L>a;~iO23Fjwj2=nz04XmdDRgKo( zmj%q7|LnEq5bYulj&WP3T0gro)cU%Hx13Tifw#eD^r57 z1oZP6FSh5MM!(+vblBOr>v*%62`SG1<(dRe3DTk8%%K1BN5|bkR#=t(A@UKOdAHKz zcmEhtl@09=>Ctz8>$_jlbD`cP^vemf6gXPGr_l6Z9}KiU``JZSiZtLq;t!n5)%ARN zFi5MKEi9s#kRyk>vDfmLUtKr0u|Bp5t16P5-EnE{of;;akzhCi(L#ZA$XzB55wqX` z@@Zc=O1(4r=AzXGwR8wnD|a4&eF0*VzzdI-mK|G=m@X-@-OlLFy>{7X-8@Dgc5$*fN0-*aeeX*r^mBNYugv83x)3iT zMD*3TQaQWl{kEpN`#fLHaJS+J!exF`S)3XuKjyLex50i@^x&@#>4uJ2Q(ElZZW9NE z9ciU8sa$YX8Z{lnxo-g;)GRoKLSX#hN8n)G2?f~b>N?eRp%OfFcg0ik$8aGs&nu{P z4_M#JtQ!PhSD1m~^yv9zWFFK?VX?6=(Ag#X!;5aXr3s0%#o$)O4A&Yuz_dnGO{oK5eG;L`3#1Lb zwf{X9hh&lgjb`^u7^u~C!y;XW5zi&b>YS_lwmxDpj^t0yGpk$EMNifg9g4F!iXDXjNx`ig`i5w>Q{%qT>6PD2j9@WIdJ z$Uuo%IG^^H$4x*Y?%U2%la68ZymtY;RF+AK(Pxb>lvDz4Onwyc{UtJ+Ao^4>C$#}sdm5RifwUO**W5yk286RLRv8r4%!B`LFBO*xWDPwamuj)BY+(njiqnJmHnJE1ew6Uq*kE<;TungN)ps+nyS zl1pZBy{lu+l?#m0ESH;yr60p)N1mQMz%ORQ(3-?#Ki#eI>sOr=Gg2cXA67Qu{1g9Q zwA+v0QctAA$(}DPaUF|J$YdBLktR0ff?htzV(r7MlI>~xu$3Stpm)%&hwzysv_2N(wHSgr%r;pLs|Nd#6u1D<7Na)a(FjiUDhYc=x zqUlnkbN@<=#0b%E9()~g>nJS~J-C>g4e$+92w>Af@QV!%5;#`>-h)4})>XQJWI#{R zR>Bv~osYb;qF=j8I(uqZ@F=H@14r?x8@j0x)Jg%-C!2^2ShY^0OG>u9chq-#Nbyd& z%JP0^-_Ls(V-pumMG3zViKhJ_CaGf?l#hA)pJ`prot8P6?#z9}W)8}%3BzsG@6 z;#i=~?s%)i>y}nJ9hU=W7BFSGre@>F2|Hg327Gs}J%H&zRad-*X8P+jdZ9MIF*9`J zQrct`u~az;eYh_morLcFkfh|-7ev$KyUc<8?Z1Lg>2fUE;mCehBojxF;JH$!Z%K`* zkrpn+z=6&PcdTxw*O-xE+@JH499(iw^3L8DyP7GRE~8+IL2YSqkp2wOA5}<6M8BEP zsJ)(2PVH-m;yqAtH%H=YZal>GUuzyXq94v+lx{>gS=}(n%w_p=sd_zwNT2+2P95g|ct34I1&Xh>&4P>3XIf`30KB4h=uju}(&7 zItv;$a6GuppzCpjAin-5TB>)tZ2yp>0y(eXDjFb9n+osd@5z30W`ycvE9%SQ=h5n? zkv)Dw>0*6&iH388J$glAn1e||Qb4KL7q>@!5%IGZL>v-5JhbipkCCDuexId95z@?9 zI@DmimCN~R^})tG>?A>%NA3_z)AS!mAsbaLeoyAlakB16$?>~*P;^mjGlo$#dxlsH z-;vy&W1Dqr)~V=;^hZA%SkNPvdvpE77iDJN^VLDUzgPkHYN&iH82t6}h7m;;e)kU_ zj+K5~d7f)nED_rvlvX$!c@IOS2u)zkPXDWjk=G`j9ldzZi1!#B`xhJ`_q zUL*y#|9qYg>J{i4`C#kNL2abOj^EQtSda25>wHSztrILD+@!jX&OjeB7R{!olr0oh zfSJrA7pg(a2$Y+C6mzlBU=1IO;4l31?F|~_5l~W{`dh(Sj4=}oV1v}Nvt5Q7Q+_|Z zOESGe$VcIQv06lwZ}7X8n5}f1Yt@uPRzC`8DH=gGPDD*!gCktJGEtx){%Z^N(s~e_ zEJr3vk6C~j|8M2H2rkqdm`HjTt*MUD#xWxKh543Hjj3wJEmiq}^ZXr{JoB z_M8H3eV+1IvSXO!<=cbh0{`QQohwI0{OD~sj7eSYuo)}vX+_LyfmqilL#y;STP0UF;brC=mC%c^qcxX}dfS%;oIL?o8sD=RxoN*)bQCP=r^hmmLe zM^=v|7g)Y_1)Yr|M&Y-=6dyHO~n zumj_c=Xr3`Q~BHaLt4b*Hi&w<3}lh@!LRKGGRn$%k75C?SixvxAy4gf32wB(`xo!s zwO6HKb6&>YJlQRlZqp!^HMf!8lg%1ez zs?J2zvi`6H$y2|2FhCNMp<@d?B3Rig%2*)AA1I~OCNlNTGQcUL{##QWmRAE+MJuPJ zyJkFldT%}^LowfxNwF^Vp%5Vc=3WYI@^ilfG$71%gl z$=`AL_7njHo5P1jNm@>2Y?ZinocRj`$;#}kup{_^a#NaZMfN-bPW~N?*&8*O0nBjN zC|tvmZx0)aGKkcwd@%r(EG~M>B5W?1(9Zm)t|?5Mf*gmOEl~3YJ1lG!c=CSml|tnk zM%*ZF!8fMv&*u*9^TA)i69vUQNGgnocq#C=CelW{KucHh(f5{XXFdr{ zL}#6#%t;6y93{`~_Vfj*lonb}pd#&S9_{DVj`omhUrdP2^v~S}aTJXj+!mlaeZ(Y` zq1P=ok_Vg7)n$jrWMrlGFQITf{{&AG4E1}wlHXs*R$U4=vkZ4u@R$6d{c?#3@>F2@ zKHD2pm}bGA^P!XKZ#ZRnC$tZPl=H6AxxhbtHc@lQ=~1%UXtatVX+$gHPtE3kR4Cx@ zk-D}R?PZ|^-L`u+FE>RG7B;7JYIh|6d448qzrOg=rYngA^U>|>6Qn;53D+vMxx6?vYi`0(@;jN$Zo$x=yQAi44Ku9KLixCK)mJ zGYJ~L9%Tg0<4WX5pIGqYbw!!II;+LNd(^Bt+mPrO))5=1HA#juw<~#6=R#MsN|E1Bc6RS3 zDf{r)_~g!UZ>%~>w3E7xu$Pd)KNQr4%j36~uCkwHmHAvx;iZXSF8|4rnTibkLt%1I z7-5|$ImD6Z)czb%cI!jj&04(uA*S)z{uKo5bE^N|VWh1K& zxFcK6lRc~TemKc`?g;&w6K21o>QVv|V)GgGgJH$AfKO!a&0QnK;PizqATD@U9~^le zC#xA>a7DAuYqYU%R@vF;e7#|zJf;*?|DAmh_a%SV-0ZNYpV@F5ZV@PVj<|&- zhlsWH^~iRaC>Z~Qm(>QVI8GTNxVc&-hkA16EECC&m+r0y8$CY=k6Ih>zK@&?9Wn*~ zQ}k~6?sAx`#M=QLPO+|ka6NiMmoBJ=savek{-bmCU4xg>Hk*{Z=TZ?gS+(WOh<*f@ zrvY^56mt0iB%%hFFn+iAvJUZQ8Z=44ZbbWeBeevrY}A!i4L&-zi#K9>v!!}EZ_3(s)f z77U%`3V;-he(qq%K#M#F3J}#pO#t5YD>_TPhFl6j;_=dP;>1Mf&Ci#^$qqP zFJ?HaAK{e;Vh<_p-^wffu1jmGvJ!P^yT|m(lHX04e^=i8H#QQOmgeN%Mh?JEC#R;MTI7FE z6T1v1PZ%NLZf|I>xY#&p*DAdENP|HHCi|!vxwUe~1L#mPyd~KMwWvapJ{u`uM0qNI zo-=mp^>`6H-hK|!8ruIhekGPk^|#l+GIe{9h%TR^*PT(UpB9g27IfIS-e6bNqlj-c zEGZQwgt3z9NraNFUY;J3$Ak$&PM$VDoAtF#d?$-&Qd4&B_qCt9t|WkTn++G0h0;?_ zE|o;SFayokd}_4mZCD@kuPMaAoCN)a4oJDLy#5 z&YneLm}Sa~1gi?lUF1FU=+ZhJUp!K=sj>O^l*71Ykz~s)S0W4|$iTN(j@uIe`;7sD z^N#ct>a~(9w58v2f62o}GZR&PR)Bt`u?gMe)ZTH3d(?4K8GS9Qgv#lcZ|N(JuoO^O z^Zqg2E>1jSjKR=wI9@-JsK`6#tZd`;ROB*Q*{`fd2k+9LjfQKG|6Q8V6E>O35Ejri zxH{0O|Hregk|8(9eVmc-*u=Z76_~QXtD{?40Lt5Mzm52*jh}pgsIER`Z4aD{ME*#a z@=#Z(n_CF~wjB?0+CpUaUOL;VOI^0h$}a)`8%&iJ|+`c!P@i|7;@Fb+P+wNd66b_RQr8zMheXPMmo; zC^M0p$z0f~mXan*G&L`hnx*8Oz46+&gqR|hElRWEpMcbo39-WB@h?bX^1}ET3*(YJ zGoM-@T&~n}D&rt-f#*m5?b0;-6ijopg|t~DOdHc!01K((rg@KLA%CMN{u|+*(xTFDw-)WHYw4B&k`pt zV|akLg}qbTle6L)E|54CRchWy(L$BxJx2HV_^8J!W>?WA>wgT#x<^EaTr_49Pnp+7 z+p|6zL%akW2Vzke-K$w{Ax0FZQ1DQd_L;D+MbTqegeQLJ;4qoo2Mwe6kpAJNl=sjq z6{p?HCCTXNAIj8G-B=isnVDC8+e1IiGG~-QzFYaQ{~x*xEO*pd=sHZ#QQFp0Ywq2l zYrM2<_*}gxoF3S9aPaluXZ-IsMoFlAk|1?5Oqj1u9Fi~=X*WiZOGa*<<+`IbFW1Zc z$|@u|D(OmO^0c|}PUR?D_?@U3o_AR#0`_b32+&1#1QpA}oqA6^W!pG#up61Z_zP(3{oOc}T&NyqH zhP9PavHkHSqJAuFQR7&=AJf=`!1&xTWi672)WIm3)j98VeP&lYu=DlL99E2v<%RG3=a$a>KLQhBP z+-3Kq(n%X7S)N&n|HJS8`}(jJcvyVMUu^5rgpVt3q-d)|QnZ0^R1YPZB$GQiOhxRX z+*a=yj@B4NVO|}KK=}-a1IHUmtxir@&Z80xYL}$(xO2?{MpS58OLP(eT%v#`of|41 zbFu)R1da1SlkUvvTFhXMH zGwyU_tI^(}w~8!aS`9nKl2uR`St(S;_~;*oiL5!$9wbSmxb!Tn?{%%-^cZf9V!s<3 zaKb38{Ri}q=GI2Y9h-v&Da=ZNQ~aVH6wuD!KF{ku!Gc(WHTLdfyP5;+Gjcciwg@x8 zvbq~cfGezNk#L&;lal6G2>IKen5J>+SCAsx?rk0>o2G|nSp|E$Q6Iq6h$u;7TMP$Y zqx5WNzFlivn3eqBzlF~hF<7UN;c}Pt4$gi%q%uAK;LQxsz3wC&N%B><+6aD06-H9Y zbh~!5of{#H4rPXUReJ%#Gz<^eeNJ_pqG=oL*p}0k1L+p3! zXJ`0F2J=XW-;T6ykrq%d+oB#_7@$KOvw^fUOC!yz%5psJYLgYV+q!IVr>}fDP=|E5 zG^U0b=u^H1sl&Tut^ zaxgw~nCw}UwLq(UFP78UY0^t7cBcw0@x>q2caYFCqB(6+xIgmn3(o6IyB)n^|XKRs5@!$;-c-+=u<_|jZCJMH=>fK9S%nkS4 z;_0?2sevOFc*MZrgToB8nGTN?Z8Rq#lkE5*gJ`yM4%aE>`SG&E5*gAzbjbfj$d4h$ zS3_qcaM?G8t}|kOO?}!?Z(J3%Ao4DW!R*H}Zl9W^hP0<8XG`Y{HI8uTh_~_Mf);y= zNyS692acf1Z`g#KDVv^)0$|s#*>>vrGgF!5}+Jml+-*}7>?u!8m1%xnl*?7 z|C1dVk{b_%o8fBse0>V}g{N9bQ=LF8NtIu?thpPK!DL46$YEMhCh~1b*7**pm{#NW z>sez($7@i1*Z@z$A%P~O+o1}LvDwCR77|{3hwR4ek&#J=M71iFLaw!il(mlyfMMAc zOGG93UxSf|IQ8fDl=2xwb{ix8i-BKVQ(dLqftkJ1@U+TKrk&EvP2xaP+Cm9vAjudP zu*I@H$us6b9;!@NG}gDCD&b_*LvoE82Nhp6n%yR6PvpQ3SWK)RqEBGu5#4ob2qfG1 z_lWqJv_W_Cg{y}gZpJ6fuC{ajtv09WX~cl3H9JI$fuZ1ow}OE^ zBQrm0xeg4hNJE$4yfDvu^%j@4m$v{-I9Zt$)gFtp*_|CxB=txa0v*uAG3dYvS;hlfGP z^ujy7)RL>zaG!ve?tWv8psGBlT1O0huE|F#yqL=&k#r^Vu((zn%+aA{pQ8sU_E%eM3^iE6($9 zRSjwA)Zk;MiJp;WHj|MX>Ei*;{&wswK%;ntMEt2cAL8(Le!CS)sRacBzk7%0H7 z{PQ{Z1^-|63O2aM$9WB{m_L!aR0X@!o47BZ-Jenz*_sl2?4UG(XHAw7&%+*>ho=ka z=}(UJQ=i$P!BPw=EQs~)Qr%SE@mqt`#X@MHD^5|*F$}0O1@;4p>h;kJw8iwSAdqB1 zzUApMem|M=x_~+_J>(S*u;nj+11P>;PZfYa0_Gsn^X7glYpUVYwe@mIzCm26BebF> z`aLHtP@n(-lHli!h4$4DdeV1N)6Tekt6+ECARvPUCyWN4y_M0Qs}Bk^VE21tg^9VS z@08?euzrTBsWuGu+z}C(P7Hf2`K+e$|D<-2`pH7ZQ0*_x`w67@RXzPw6N8_ox-tf( zp-+lVymRcBGkm%uZzL8q->v@w2asb(U}2pX&Om!67fLmE7XXv2D_XkPd6KQ1RNBnu zJr$%MK=D(UgGl=SM^v~1DUHjqjLV{R*V2T13Z0@Fs=Ox4LHU?{jmWT4J~Z*Vc~?T) zQjD*SGzFHegw^Wo_@Q4QsL35?^q z!C~MDRB~5Vmp&;5oPIcck?%PJ$NRlgK9-upz83`9kRGhYy~G%F4!o*5W(Vi=6{9Na zMcMcD4)Ku)mabQ&LCx93#3KJ)9c*uX$!t_=Bx~%^LYE%XRU=)Q&W6uo9II!Y`^E_q z>9_JNSoDg}x@gXlhvN(qEMVeU(>JXOikR6;Y?61=1JfB2SBUQ4lx+c%Iy%JXd+A1A zVSCRZJzgz0X{HOxEV+&|lolh@lWuvrI^;XftuZr*eqC2Ku^@&j2RoAYuKp&iVqnMS zdVTd>Ze)osp8a8qe&8ogB~`&M;_htxPm}ROrMXAaS4wX2FxfEh7uwk4G#RKU;H*ra z%^PLFb?3x5lMF#$75o|lD-pi(zOM)xO%jos36Jl6sBps2Qtg3pD^M`M-S(~4{%@o! z6vI&vSSkxVoEJ5W%0eup1NEE7-XH9PF`bA7om$>FnpX?#vi;i+{c%{9L3FIjPvj_AfBXP}VF%@IMh1BxANhf<2JkuaWaIKW zM@tMbctAY^4U^kReIk)W78+o*?H)|>)dN?m4&!?=L6a-Ko%!w*eOh8(Ynl0?pX{6? ze~;+^kQze2`9DlPk{3ZW>{4jqp~?7Qkdii0w1IS*Y>11?%j1gl+Z;Qu72!6;>FqIh zL_i#Xj!f<(;iiR4+@j9y^nfOd4nb;u2c0~Kko!PqHWg)$ShpeeoWdU;1s43%4*i3K z5q#H6Ka-pgGI>TLam5*1Qu2MhN~^EL$g-phMpqvX?mO2;6Cigv2_3Nvwx9#21Wi)! z`m(~UCt4k*k$Nkr<;VU}iob7l|9NHgyB?{CoXqKFX92?p*g3P?>!0cXq0fU7d|4F6O73f41-%{!$W?u?>|Z<0Ob=@=O|s8w z83}&3ql;aQo9FmETv0`;yY0pa@SHN(+uMp#g%7}PwSRq$-pVt*Bojw*nv7=>LkqGOH_N%9 zcWJsWLA9w;4jZx7k~jjj3tc7!$}#ZUMB2WYZ3`DM#zxr56$SYwn)}YOi)XQ|%{B2s z_;I z_)zA1Ygzj?H@?4hBlr374LxkSUD?PwP{CeG4+}ea?iQUL63k6>ngak&`oqyJ_>WEzQPsuQgx1_pygReu7#2`Ai-Y_!;!)@DuN*R;$YkDWm<) zobcatC0~-Yz66kO?c)qlfwho9@ANjeOVF*U=`PU1nvxZToc9(XVnVd;2V2Qf$52!! z%t`HFRT=3zNpjeB%_?&jx!OimE!N7+v6x7@(oEj`zM(d%)MYy!i=fy59G8rq@mG4g zj(G99+G^iQ(P6MgY7?5=0z7Oh?9^vj4aA07uP&wB(a0^Opcl2iq`GT)-|LD{T-jRQAI@CL$xDY2OOdQ_3Ubv&@eVVrYo}roCutzDl+~T$synuUN zUmNe}df91tc|VX8!E0qq8})0^r*w7b0`P;vAruKqia=SL!2WwdviJ!u@D88dF-fBX z(pTA>0tVBYR^i`7_6(Oj3)_13v^mLhf9>VRQQUq>SebUAszH?7PsN3f%myVM=@XZ# z+(7sf7*P8mE>%PDVvfY{H19r&_xHKy)C}JG@k)T*saX5-vmFpEW+cJkD&!uxIlPRr z#NS9ko;oi&vl1e81mGhJ1};6|xu?q0o*e3X_^glYL(Stx#gJ91nwb z!x4}dof{(1qnoAuqoGY=bLa9LpkoA2tun(^AH&lyxxrMyI8}<{D!<~@w&i;#E?@pJ zGG-dD6OIYG1Q~!rYrUc|vg$RsnaqNdsY3(So zm$)GM@hYSG%Clf?v4`(*d)GNV9d2m|br>+D`7H>q`J&lw$hg7?KkrQ@ZzTaYwHgTS%3Hy5WRVK0d{S>at*-3f43u~mMy1XQPwW? z^)Qp(Dfr-x3R_*;Hr;t?ef8Ck2Z*=cxmU7(`flSxQ&C&LKB{(}siOHDb&=MpzUpOp z$7mFj9zQwr17uUKH0Tr~M@QxHXY@48URn{=ukB6k^hz={RTpu(E~<9IImrAQ^u3RR zy-W|D>Z&i276d;ompJ*GM%X5#3m1rrs_+EF-MDvj0J%qSY_18OFz|%%~~eAVL)7zjUV%G`L{t zdxzU}-#cpj8s;v$*8kYxw&&XCR>q086vd|#@ph}%+3q`6hP%`rui4FD{5-6$m}%D{ zP;g+p`qj2Lw?IOwUtf=wNWNP3E7SM~e7aa3F~GB|DcpcIc_edsqO-Ct(+hPYVE2#EP{!a+JI-Nrg82LXwfN>n&8}G)r|~hv zVcKyJ4NDI_@|Ysiwc;4cE-`6dD!R>D<5nmp;k(UtIj>{QVH>%6?$zo=adW8{^jI&FkEhnceQR^XVu-L7=$eS7`R(WB*UtTG>WQ#3+3j9=USi4 zM6NsL8mTo^j}ac>Y4P*(>@t#QngYbbdJEKGR^V?H&5HX7Cqhir2`|>K$0MxN_?}b% zmj%w+Go{msEIvQ9w2rghrPn1|2mVuxSlFeb9mgfrEk!)&4`%73F7K-RmSs>9zf5 z$BTAhjZ!-MxsG+~I-<_sHnR)nVAWNd5Ypg#b z-r|hHII?Q<<7W!`91j>#@;W5|a;YZM*B>Rs-w5ATd+EoJh4<3_`@(ko=6D-8TsI|F z)%|-jeLa&F)D6m~rIi4!L${PdhotoR@g-3~9m_UF-s;W=@u&yCPU^BHA0(nE&bVgMjV8nDt zu$sE>fT7kzcf~0~I1J3+d6FJg@6yu&67p74sCYK63vx>Lp#ZaePM7RDTke~KaKpRm*-JSoQWnAD!H`1`cJZPA zF!=F2)u})=WMSeIG3t0Z{(Z&g!eBKftrc91%C!2I;&wgui>ZG4R%FpjRQyRI8a?uH zTkVVLX`xy&hu5iDc7=7z9tpk1$yDS!ce#oMSy9zlw-TA6az3HA!)vCKCFIAIQP0(o z7w~;&LNEK|e8fksfNeAjy;DQ(=gtBYD8mp#P(~tvx>zlI(0+OeDj!W73k{-UJ+Jtq zB#uaHRRoJp|6aS=oSO;DrC6^uT0MzRSwBh0S>HF7BQba4o&I49L>JKIpV@FQJOrL= zHFjVw?S4Hjjnr#-`pw8=c}Z`+FZ$o#6fPN30sC7?l;5x2w`t zN~0|uksI}vnrbFn6h6~uX^e`KB#dz>zWO7Nh?GfipS3K3Mjh&0YLz3c1-60jz(aH0+zH?HOT?E}(Wc8b#} zq~fP^E*w&VN>yXij5zpOLsBS7M z>eyWt7e{z{nOx;$zv}ZV$!IMuU=i?Hp!3SUlV#LzpatbrSmXq-=U%j%NdufId)Fe; z)#L8{EH@@)GR()hjA^F-Z_mo-0#|?O&;1%-Zu-d!cnLVe;?whv%xrJk-5mDrmHVYR zlO74^oc1|lT&nx3gn9M<;}cX4pLitt_n61I`mcVgCvsKv0$UUf7f-yIf9lq6`;WoS z|0a8^a-Je`&`5Xp{+^c9S>K+|=UJ?yYk&U3Vu2&K=O(`|GyQmpi9-i?MAh4GD(7ru z?g(!vX-hI#rE>l8y_G&Oj2{1Xu_j!Zy+|ZiYggjLO|ML^nef40@Ye=w z;2e67!{e0mhv%IvJrl+FGCu;@zuQTNXZ zA>QlqMYfz#UJL3R8@-7A`^9)-v#eW1$zE?Rr`3<5-$>nGRZ+>yAfW(k8%eC#nKkoo z;SG*kGru;zJAXoS@#mRpUe{MX{k~(?X%+VKb`4+Z%#+!;4~QDDeonubJUdxd`BTba ztDO(D&$UHw@tT(bDpM3MWV*$5$W(^g%S!y?e(0@wyfVg4>VNRbMDEk zMItxlc~~0++wOm0U;vNFfku@;BSAneaKH*Q=)eFT`vaX3f}{e}*(XT_*hqvKpy5O` zGw`ZFI16kB!dY;4;8y_}ZbYa+^BUL;yebe5Co6c+yaqCZ0?)fG{x6=upznFxNt3Pp QF3>0jPgg&ebxsLQ06)BaTmS$7 literal 0 HcmV?d00001 diff --git a/charts/incubator/pialert/questions.yaml b/charts/incubator/pialert/questions.yaml new file mode 100644 index 00000000000..f068e5ed8f6 --- /dev/null +++ b/charts/incubator/pialert/questions.yaml @@ -0,0 +1,518 @@ +# Include{groups} +portals: + open: +# Include{portalLink} +questions: +# Include{global} +# Include{controller} +# Include{replicas} +# Include{replica1} +# Include{controllerExpertExtraArgs} + - variable: pialert + group: App Configuration + label: PiAlert Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: general + label: General + schema: + additional_attrs: true + type: dict + attrs: + - variable: dark_mode + label: Dark Mode + description: Forces dark mode by creating a file in the container + schema: + type: boolean + default: true + - variable: web_protection + label: Web Protection + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: web_password + label: Web Password + schema: + type: string + default: "" + private: true + required: true + - variable: print_log + label: Print Log + schema: + type: boolean + default: false + - variable: report_dashboard_url + label: Report Dashboard URL + schema: + type: string + default: "" + required: true + - variable: days_to_keep_events + label: Days to Keep Events + schema: + type: int + default: 90 + required: true + - variable: scan_cycle_minutes + label: Scan Cycle Minutes + schema: + type: int + default: 5 + required: true + - variable: included_sections + label: Included Sections + description: Empty list, will add all sections + schema: + type: list + default: [] + items: + - variable: section + label: Section + schema: + type: string + default: "" + required: true + enum: + - value: internet + description: Internet + - value: new_devices + description: New Devices + - value: down_devices + description: Down Devices + - value: events + description: Events + - variable: scan_subnets + label: Scan Subnets + description: CIDR format is <192.168.1.0/24> and interface format is + schema: + type: list + required: true + default: [] + items: + - variable: subnet + label: Subnet + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + required: true + - variable: interface + label: Interface + schema: + type: string + default: "" + required: true + - variable: pushsafer + label: PushSafer + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: token + label: Token + schema: + type: string + default: "" + private: true + required: true + - variable: apprise + label: Apprise + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: url + label: URL + schema: + type: string + default: "" + required: true + - variable: ntfy + label: ntfy + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: topic + label: Topic + schema: + type: string + default: "" + required: true + - variable: user + label: Username + schema: + type: string + default: "" + - variable: password + label: Password + schema: + type: string + default: "" + - variable: webhook + label: Webhook + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: url + label: URL + schema: + type: string + default: "" + required: true + - variable: payload + label: Payload + schema: + type: string + default: json + required: true + enum: + - value: json + description: JSON + - value: html + description: HTML + - value: text + description: TEXT + - variable: method + label: Method + schema: + type: string + default: GET + - variable: email + label: Email + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: server + label: Server + schema: + type: string + default: "" + required: true + - variable: port + label: Port + schema: + type: int + default: 587 + required: true + - variable: report_to + label: Report To + schema: + type: string + default: "" + required: true + - variable: report_from + label: Report From + schema: + type: string + default: "" + required: true + - variable: skip_login + label: Skip Login + schema: + type: boolean + default: false + - variable: skip_tls + label: Skip TLS + schema: + type: boolean + default: false + - variable: user + label: Username + schema: + type: string + default: "" + - variable: password + label: Password + schema: + type: string + default: "" + - variable: mqtt + label: MQTT + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: broker + label: Broker + schema: + type: string + default: "" + required: true + - variable: port + label: Port + schema: + type: int + default: 587 + required: true + - variable: user + label: Username + schema: + type: string + default: "" + - variable: password + label: Password + schema: + type: string + default: "" + - variable: qos + label: QOS + schema: + type: int + default: 0 + required: true + - variable: delay_sec + label: Delay Sec + schema: + type: int + default: 2 + required: true + - variable: dyndns + label: DynDNS + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: domain + label: Domain + schema: + type: string + default: "" + required: true + - variable: force + label: Force + schema: + type: boolean + default: false + - variable: timeout + label: Timeout + schema: + type: int + default: 20 + required: true + - variable: days_data + label: Days Data + schema: + type: int + default: 7 + required: true + - variable: days_data + label: Days Data + schema: + type: int + default: 7 + required: true + - variable: run + label: Run + schema: + type: string + default: once + required: true + - variable: run_timeout + label: Run Timeout + schema: + type: int + default: 300 + required: true + - variable: run_schedule + label: Run Schedule + schema: + type: string + default: "0 4 * * *" + required: true + - variable: pihole + label: PiHole + schema: + additional_attrs: true + type: dict + attrs: + - variable: pihole_active + label: PiHole Active (Not covered by support) + description: If enabled you need to map '/etc/pihole/pihole-FTL.db' with additional storage. Not covered by support + schema: + type: boolean + default: false + - variable: dhcp_active + label: DHCP Active (Not covered by support) + description: If enabled you need to map '/etc/pihole/dhcp.leases' with additional storage. Not covered by support + schema: + type: boolean + default: false +# Include{containerConfig} +# Include{serviceRoot} + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: +# Include{serviceSelectorLoadBalancer} +# Include{serviceSelectorExtras} + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10600 + required: true +# Include{serviceExpertRoot} + default: true +# Include{serviceExpert} +# Include{serviceList} +# Include{persistenceRoot} + - variable: config + label: App Config Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} + - variable: db + label: App DB Storage + description: Stores the Application DB. + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} +# Include{persistenceList} +# Include{ingressRoot} + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: +# Include{ingressDefault} +# Include{ingressTLS} +# Include{ingressTraefik} +# Include{ingressList} +# Include{security} +# Include{securityContextAdvancedRoot} + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false +# Include{podSecurityContextRoot} + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 +# Include{podSecurityContextAdvanced} +# Include{resources} +# Include{advanced} +# Include{addons} +# Include{codeserver} +# Include{vpn} +# Include{documentation} diff --git a/charts/incubator/pialert/templates/_secret.tpl b/charts/incubator/pialert/templates/_secret.tpl new file mode 100644 index 00000000000..a92505cc2df --- /dev/null +++ b/charts/incubator/pialert/templates/_secret.tpl @@ -0,0 +1,148 @@ +{{/* Define the configmap */}} +{{- define "pialert.secret" -}} + +{{- $secretName := printf "%s-secret" (include "tc.common.names.fullname" .) }} + +--- +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: {{ $secretName }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} +stringData: + pialert.conf: | + # General + TIMEZONE={{ .Values.TZ | squote }} + PIALERT_WEB_PROTECTION={{ ternary "True" "False" .Values.pialert.general.web_protection }} + {{- if .Values.pialert.general.web_protection }} + PIALERT_WEB_PASSWORD={{ .Values.pialert.general.web_password | squote }} + {{- end }} + PRINT_LOG={{ ternary "True" "False" .Values.pialert.general.print_log }} + REPORT_DASHBOARD_URL={{ .Values.pialert.general.report_dashboard_url | squote }} + DAYS_TO_KEEP_EVENTS={{ .Values.pialert.general.days_to_keep_events }} + SCAN_CYCLE_MINUTES={{ .Values.pialert.general.scan_cycle_minutes }} + {{- with (uniq .Values.pialert.general.included_sections) }} + {{- if gt (len .) 4 -}} + {{- fail "You can define up to 4 unique sections" -}} + {{- end }} + INCLUDED_SECTIONS=[ + {{- range $section := initial . }} + {{ . | squote }}, + {{- end }} + {{ last . | squote }} + ] + {{- else }} + INCLUDED_SECTIONS=['internet','new_devices','down_devices','events'] + {{- end }} + {{- with .Values.pialert.general.scan_subnets }} + SCAN_SUBNETS=[ + {{- range $entry := initial . }} + {{ (printf "%s --interface=%s" .cidr .interface) | squote }}, + {{- end }} + {{- with last . }} + {{ (printf "%s --interface=%s" .cidr .interface) | squote }} + {{- end }} + ] + {{- end }} + + + # PUSHSAFER + REPORT_PUSHSAFER={{ ternary "True" "False" .Values.pialert.pushsafer.enabled }} + {{- if .Values.pialert.pushsafer.enabled }} + PUSHSAFER_TOKEN={{ .Values.pialert.pushsafer.token | squote }} + {{- end }} + + + # Apprise + REPORT_APPRISE={{ ternary "True" "False" .Values.pialert.apprise.enabled }} + {{- if .Values.pialert.apprise.enabled }} + APPRISE_HOST={{ .Values.pialert.apprise.host | squote }} + APPRISE_URL={{ .Values.pialert.apprise.url | squote }} + {{- end }} + + + # NTFY + REPORT_NTFY={{ ternary "True" "False" .Values.pialert.ntfy.enabled }} + {{- if .Values.pialert.ntfy.enabled }} + NTFY_HOST={{ .Values.pialert.ntfy.host | squote }} + NTFY_TOPIC={{ .Values.pialert.ntfy.topic | squote }} + NTFY_USER={{ .Values.pialert.ntfy.user | squote }} + NTFY_PASSWORD={{ .Values.pialert.ntfy.password | squote }} + {{- end }} + + + # Webhooks + REPORT_WEBHOOK={{ ternary "True" "False" .Values.pialert.webhook.enabled }} + {{- if .Values.pialert.webhook.enabled }} + WEBHOOK_URL={{ .Values.pialert.webhook.url | squote }} + WEBHOOK_PAYLOAD={{ .Values.pialert.webhook.payload | squote }} + WEBHOOK_REQUEST_METHOD={{ .Values.pialert.webhook.method | squote }} + {{- end }} + + + # Email + REPORT_MAIL={{ ternary "True" "False" .Values.pialert.email.enabled }} + {{- if .Values.pialert.email.enabled }} + SMTP_SERVER={{ .Values.pialert.email.server | squote }} + SMTP_PORT={{ .Values.pialert.email.port }} + REPORT_TO={{ .Values.pialert.email.report_to | squote }} + REPORT_FROM={{ .Values.pialert.email.report_from | squote }} + SMTP_SKIP_LOGIN={{ ternary "True" "False" .Values.pialert.email.skip_login }} + {{- with .Values.pialert.email.user }} + SMTP_USER={{ . | squote }} + {{- end }} + {{- with .Values.pialert.email.password }} + SMTP_PASS={{ . | squote }} + {{- end }} + SMTP_SKIP_TLS={{ ternary "True" "False" .Values.pialert.email.skip_tls }} + {{- end }} + + + # MQTT + REPORT_MQTT={{ ternary "True" "False" .Values.pialert.mqtt.enabled }} + {{- if .Values.pialert.email.enabled }} + MQTT_BROKER={{ .Values.pialert.mqtt.broker | squote }} + MQTT_PORT={{ .Values.pialert.mqtt.port }} + {{- with .Values.pialert.mqtt.user }} + MQTT_USER={{ . | squote }} + {{- end }} + {{- with .Values.pialert.mqtt.password }} + MQTT_PASSWORD={{ . | squote }} + {{- end }} + MQTT_QOS={{ .Values.pialert.mqtt.qos }} + MQTT_DELAY_SEC={{ .Values.pialert.mqtt.delay_sec }} + {{- end }} + + + # DynDNS + DDNS_ACTIVE={{ ternary "True" "False" .Values.pialert.dyndns.enabled }} + {{- if .Values.pialert.dyndns.enabled }} + DDNS_DOMAIN={{ .Values.pialert.dyndns.domain | squote }} + {{- with .Values.pialert.dyndns.user }} + DDNS_USER={{ . | squote }} + {{- end }} + {{- with .Values.pialert.dyndns.password }} + DDNS_PASSWORD={{ . | squote }} + {{- end }} + DDNS_UPDATE_URL={{ .Values.pialert.dyndns.update_url | squote }} + {{- end }} + + + # Pholus + PHOLUS_ACTIVE={{ ternary "True" "False" .Values.pialert.pholus.enabled }} + {{- if .Values.pialert.pholus.enabled }} + PHOLUS_TIMEOUT={{ .Values.pialert.pholus.timeout }} + PHOLUS_FORCE={{ ternary "True" "False" .Values.pialert.pholus.force }} + PHOLUS_DAYS_DATA={{ .Values.pialert.pholus.days_data }} + PHOLUS_RUN={{ .Values.pialert.pholus.run | squote }} + PHOLUS_RUN_TIMEOUT={{ .Values.pialert.pholus.run_timeout }} + PHOLUS_RUN_SCHD={{ .Values.pialert.pholus.run_schedule | squote }} + {{- end }} + + + # PiHole + PIHOLE_ACTIVE={{ ternary "True" "False" .Values.pialert.pihole.pihole_active }} + DHCP_ACTIVE={{ ternary "True" "False" .Values.pialert.pihole.dhcp_active }} +{{- end }} diff --git a/charts/incubator/pialert/templates/common.yaml b/charts/incubator/pialert/templates/common.yaml new file mode 100644 index 00000000000..76533163b95 --- /dev/null +++ b/charts/incubator/pialert/templates/common.yaml @@ -0,0 +1,7 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{- include "pialert.secret" . -}} + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} diff --git a/charts/incubator/pialert/values.yaml b/charts/incubator/pialert/values.yaml new file mode 100644 index 00000000000..b575d51a195 --- /dev/null +++ b/charts/incubator/pialert/values.yaml @@ -0,0 +1,142 @@ +image: + repository: tccr.io/truecharts/pialert + pullPolicy: IfNotPresent + tag: latest@sha256:a25d25c8d2be38895e4bee0e13f934ed7048a07753e84a6854c9e9b04187fbae + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +hostNetwork: true + +pialert: + general: + dark_mode: true + web_protection: false + web_password: "" + print_log: false + report_dashboard_url: http://localhost + days_to_keep_events: 90 + scan_cycle_minutes: 5 + included_sections: [] + scan_subnets: + [] + # - cidr: "192.168.1.0/24" + # interface: eth0 + pushsafer: + enabled: false + token: "" + apprise: + enabled: false + host: "" + url: "" + ntfy: + enabled: false + host: "" + topic: "" + user: "" + password: "" + webhook: + enabled: false + url: "" + payload: json + method: GET + email: + enabled: false + server: "" + port: 587 + report_to: "" + report_from: "" + skip_login: false + skip_tls: false + user: "" + password: "" + mqtt: + enabled: false + broker: "" + port: 1883 + user: "" + password: "" + qos: 0 + delay_sec: 2 + dyndns: + enabled: false + domain: "" + user: "" + password: "" + update_url: "" + pholus: + enabled: false + timeout: 20 + force: false + days_data: 7 + run: once + run_timeout: 300 + run_schedule: "0 4 * * *" + pihole: + # If enabled you need to map '/etc/pihole/pihole-FTL.db' with additional storage + pihole_active: false + # If enabled you need to map '/etc/pihole/dhcp.leases' with additional storage + dhcp_active: false + +env: + HOST_USER_ID: "{{ .Values.podSecurityContext.runAsUser }}" + HOST_USER_GID: "{{ .Values.podSecurityContext.fsGroup }}" + PORT: "{{ .Values.service.main.ports.main.port }}" + +service: + main: + ports: + main: + protocol: HTTP + port: 10600 + +persistence: + config: + enabled: true + mountPath: /home/pi/pialert/config + db: + enabled: true + mountPath: /home/pi/pialert/db + pialert-config: + enabled: true + noMount: true + type: secret + objectName: '{{ template "tc.common.names.fullname" . }}-secret' + +initContainers: + init: + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + volumeMounts: + - name: db + mountPath: /home/pi/pialert/db + - name: config + mountPath: /home/pi/pialert/config + - name: pialert-config + mountPath: /tc-pialert.conf + subPath: pialert.conf + command: ["/bin/sh", "-c"] + args: + - | + dark_file="/home/pi/pialert/db/setting_darkmode" + temp_config_file="/tc-pialert.conf" + config_file="/home/pi/pialert/config/pialert.conf" + echo "Copying config file into it's directory.." + cp -f "$temp_config_file" "$config_file" && echo "Copied config file successfully!" || echo "Failed to copy config file..." + {{- if .Values.pialert.general.dark_mode }} + echo "Enabling dark mode file..." + touch "$dark_file" && echo "Created dark mode file!" || echo "Failed to create dark mode file..." + {{- else }} + if [ -f "$dark_file" ]; then + rm -f $dark_file && echo "Dark mode file removed!" || echo "Failed to remove dark mode file..." + else + echo "Dark mode file does not exist, no action is needed." + fi + {{- end }} + +portal: + enabled: true