From 26a7094de8bc917fa615cae5518b60a5a57fcac6 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Fri, 10 Nov 2023 11:01:10 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- enterprise/authelia/19.0.12/CHANGELOG.md | 99 + enterprise/authelia/19.0.12/Chart.yaml | 42 + enterprise/authelia/19.0.12/LICENSE | 106 + enterprise/authelia/19.0.12/README.md | 27 + enterprise/authelia/19.0.12/app-changelog.md | 13 + enterprise/authelia/19.0.12/app-readme.md | 8 + .../authelia/19.0.12/charts/common-14.3.5.tgz | Bin 0 -> 73073 bytes .../authelia/19.0.12/charts/redis-8.0.44.tgz | Bin 0 -> 79073 bytes enterprise/authelia/19.0.12/ix_values.yaml | 652 ++++ enterprise/authelia/19.0.12/questions.yaml | 3113 +++++++++++++++++ .../authelia/19.0.12/templates/NOTES.txt | 1 + .../authelia/19.0.12/templates/_configmap.tpl | 363 ++ .../authelia/19.0.12/templates/_secrets.tpl | 53 + .../authelia/19.0.12/templates/common.yaml | 77 + enterprise/authelia/19.0.12/values.yaml | 0 15 files changed, 4554 insertions(+) create mode 100644 enterprise/authelia/19.0.12/CHANGELOG.md create mode 100644 enterprise/authelia/19.0.12/Chart.yaml create mode 100644 enterprise/authelia/19.0.12/LICENSE create mode 100644 enterprise/authelia/19.0.12/README.md create mode 100644 enterprise/authelia/19.0.12/app-changelog.md create mode 100644 enterprise/authelia/19.0.12/app-readme.md create mode 100644 enterprise/authelia/19.0.12/charts/common-14.3.5.tgz create mode 100644 enterprise/authelia/19.0.12/charts/redis-8.0.44.tgz create mode 100644 enterprise/authelia/19.0.12/ix_values.yaml create mode 100644 enterprise/authelia/19.0.12/questions.yaml create mode 100644 enterprise/authelia/19.0.12/templates/NOTES.txt create mode 100644 enterprise/authelia/19.0.12/templates/_configmap.tpl create mode 100644 enterprise/authelia/19.0.12/templates/_secrets.tpl create mode 100644 enterprise/authelia/19.0.12/templates/common.yaml create mode 100644 enterprise/authelia/19.0.12/values.yaml diff --git a/enterprise/authelia/19.0.12/CHANGELOG.md b/enterprise/authelia/19.0.12/CHANGELOG.md new file mode 100644 index 00000000000..83bc8d231b7 --- /dev/null +++ b/enterprise/authelia/19.0.12/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [authelia-19.0.12](https://github.com/truecharts/charts/compare/authelia-19.0.11...authelia-19.0.12) (2023-11-10) + +### Docs + +- add authelia rules page ([#14509](https://github.com/truecharts/charts/issues/14509)) + + ### Feat + +- Update Authelia question tooltips and defaults ([#13487](https://github.com/truecharts/charts/issues/13487)) + + + + +## [authelia-19.0.11](https://github.com/truecharts/charts/compare/authelia-19.0.10...authelia-19.0.11) (2023-11-09) + +### Chore + +- update helm general non-major ([#14467](https://github.com/truecharts/charts/issues/14467)) + + + + +## [authelia-19.0.10](https://github.com/truecharts/charts/compare/authelia-19.0.9...authelia-19.0.10) (2023-11-08) + +### Chore + +- update helm general non-major ([#14465](https://github.com/truecharts/charts/issues/14465)) + + + + +## [authelia-19.0.9](https://github.com/truecharts/charts/compare/authelia-19.0.8...authelia-19.0.9) (2023-11-08) + + + + +## [authelia-19.0.8](https://github.com/truecharts/charts/compare/authelia-19.0.7...authelia-19.0.8) (2023-11-08) + + + + +## [authelia-19.0.7](https://github.com/truecharts/charts/compare/authelia-19.0.6...authelia-19.0.7) (2023-11-08) + +### Chore + +- update helm general non-major ([#14454](https://github.com/truecharts/charts/issues/14454)) + + ### Fix + +- fix doc mistakes breaking rendering on docusaurus 3.0 + + + + +## [authelia-19.0.6](https://github.com/truecharts/charts/compare/authelia-19.0.5...authelia-19.0.6) (2023-11-05) + +### Chore + +- update helm general non-major ([#14365](https://github.com/truecharts/charts/issues/14365)) + + + + +## [authelia-19.0.5](https://github.com/truecharts/charts/compare/authelia-19.0.4...authelia-19.0.5) (2023-11-03) + +### Chore + +- update helm general non-major ([#14287](https://github.com/truecharts/charts/issues/14287)) + + + + +## [authelia-19.0.4](https://github.com/truecharts/charts/compare/authelia-19.0.3...authelia-19.0.4) (2023-10-29) + +### Chore + +- Fix typo in categories and make them singular ([#13693](https://github.com/truecharts/charts/issues/13693)) + - update helm general non-major ([#14094](https://github.com/truecharts/charts/issues/14094)) + + + + +## [authelia-19.0.3](https://github.com/truecharts/charts/compare/authelia-19.0.2...authelia-19.0.3) (2023-10-08) + +### Chore + +- dont quote bools + + + + +## [authelia-19.0.2](https://github.com/truecharts/charts/compare/authelia-19.0.1...authelia-19.0.2) (2023-10-08) + diff --git a/enterprise/authelia/19.0.12/Chart.yaml b/enterprise/authelia/19.0.12/Chart.yaml new file mode 100644 index 00000000000..047695fa441 --- /dev/null +++ b/enterprise/authelia/19.0.12/Chart.yaml @@ -0,0 +1,42 @@ +apiVersion: v2 +appVersion: "4.37.5" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 14.3.5 + - condition: redis.enabled + name: redis + repository: https://deps.truecharts.org + version: 8.0.44 +deprecated: false +description: Authelia is a Single Sign-On Multi-Factor portal for web apps +home: https://truecharts.org/charts/enterprise/authelia +icon: https://truecharts.org/img/hotlink-ok/chart-icons/authelia.png +keywords: + - authelia + - authentication + - login + - SSO + - Authentication + - Security + - Two-Factor + - U2F + - YubiKey + - Push Notifications + - LDAP +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: authelia +sources: + - https://github.com/truecharts/charts/tree/master/charts/enterprise/authelia + - https://github.com/authelia/chartrepo + - https://github.com/authelia/authelia +type: application +version: 19.0.12 +annotations: + truecharts.org/category: security + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/enterprise/authelia/19.0.12/LICENSE b/enterprise/authelia/19.0.12/LICENSE new file mode 100644 index 00000000000..80e4ab93f92 --- /dev/null +++ b/enterprise/authelia/19.0.12/LICENSE @@ -0,0 +1,106 @@ +Business Source License 1.1 + +Parameters + +Licensor: The TrueCharts Project, it's owner and it's contributors +Licensed Work: The TrueCharts "Cert-Manager" Helm Chart +Additional Use Grant: You may use the licensed work in production, as long + as it is directly sourced from a TrueCharts provided + official repository, catalog or source. You may also make private + modification to the directly sourced licenced work, + when used in production. + + The following cases are, due to their nature, also + defined as 'production use' and explicitly prohibited: + - Bundling, including or displaying the licensed work + with(in) another work intended for production use, + with the apparent intend of facilitating and/or + promoting production use by third parties in + violation of this license. + +Change Date: 2050-01-01 + +Change License: 3-clause BSD license + +For information about alternative licensing arrangements for the Software, +please contact: legal@truecharts.org + +Notice + +The Business Source License (this document, or the “License”) is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. + +License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. +“Business Source License” is a trademark of MariaDB Corporation Ab. + +----------------------------------------------------------------------------- + +Business Source License 1.1 + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited +production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. + +MariaDB hereby grants you permission to use this License’s text to license +your works, and to refer to it using the trademark “Business Source License”, +as long as you comply with the Covenants of Licensor below. + +Covenants of Licensor + +In consideration of the right to use this License’s text and the “Business +Source License” name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +1. To specify as the Change License the GPL Version 2.0 or any later version, + or a license that is compatible with GPL Version 2.0 or a later version, + where “compatible” means that software provided under the Change License can + be included in a program with software provided under GPL Version 2.0 or a + later version. Licensor may specify additional Change Licenses without + limitation. + +2. To either: (a) specify an additional grant of rights to use that does not + impose any additional restriction on the right granted in this License, as + the Additional Use Grant; or (b) insert the text “None”. + +3. To specify a Change Date. + +4. Not to modify this License in any other way. diff --git a/enterprise/authelia/19.0.12/README.md b/enterprise/authelia/19.0.12/README.md new file mode 100644 index 00000000000..f8a41e479fe --- /dev/null +++ b/enterprise/authelia/19.0.12/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/enterprise/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/enterprise/authelia/19.0.12/app-changelog.md b/enterprise/authelia/19.0.12/app-changelog.md new file mode 100644 index 00000000000..933081053c2 --- /dev/null +++ b/enterprise/authelia/19.0.12/app-changelog.md @@ -0,0 +1,13 @@ + + +## [authelia-19.0.12](https://github.com/truecharts/charts/compare/authelia-19.0.11...authelia-19.0.12) (2023-11-10) + +### Docs + +- add authelia rules page ([#14509](https://github.com/truecharts/charts/issues/14509)) + + ### Feat + +- Update Authelia question tooltips and defaults ([#13487](https://github.com/truecharts/charts/issues/13487)) + + \ No newline at end of file diff --git a/enterprise/authelia/19.0.12/app-readme.md b/enterprise/authelia/19.0.12/app-readme.md new file mode 100644 index 00000000000..9417c0c13d5 --- /dev/null +++ b/enterprise/authelia/19.0.12/app-readme.md @@ -0,0 +1,8 @@ +Authelia is a Single Sign-On Multi-Factor portal for web apps + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/enterprise/authelia](https://truecharts.org/charts/enterprise/authelia) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/enterprise/authelia/19.0.12/charts/common-14.3.5.tgz b/enterprise/authelia/19.0.12/charts/common-14.3.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..58fbc6f4962aed33ebff0850b663611ec736857f GIT binary patch literal 73073 zcmV)eK&HPRiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ}ciT47FuFhMufSo_yYb#g*0*dwH~T)W?Y4fK#6Gr@K70G_ z^?^u8!kQvj0+ge+`QPusC&5oqwk#*9c(xmh1O|h_U@$Wn3|umwlVJa31|!y5!nyyq z%|GpSyFKjp#lP)#JNs{Y*z5eQ(;swu?RI;A3X>GlVMzk&7>;F5b{%3$=j_M_X% zcJ3>AV2D4Wh++~Pfkn3g!_fTnAw!fkJVf0HhfKWtAr4&r7x3{og3%I8NCa-87zqZV zjTxDvBQRquq(}SvQ_N=ZxaE@hK8s@HiZc5!4Cy|L5Za$Z%22eg-b+?&V3#+fLBIuM zFrqC9DyArMNx)FR1k`wcH0-zAqrsqYhnDvw^5{{c36jPdO^s<&yl6CmYUVB;Bh%Ht z|MN|!)fu+h&Gz3LbBF^5aeyKL49y|-j{puPQ{zm4YwXg0x* zJ{dzFNG51Z#jm3V0OI2{VgPy`=F=YfKz;>293!8zyZqw_{PDTE0t^DeAb-beS-)~s zbqzjQXb4>-zTRA%UL1jwIEqlf{3W1djsO||2f2&_kAQ$MK;tkZ5d&<7shXSuz!7j9 z-NdoyQ7}gg`ftCt(EyA9ilPN}kwDP%-pNA8HmZC+ry#Kiq6xmMhIAtfl|p)l13ZuC zARr#P;IiU=M#G?QP9^evE$}fNe*N;6M zOo1DOQ&HO^hze@SZwOEZ1Fs2v5+DJi0R+%v-#-Eq=u^~aOrYdFi`I& z5c_e2Ze|gpGva&67aEJsSYJBgON5|@zYK)B;tOAkSR6hGok0mU-BN6Z?F#xdq@4K_ z`q;%n;0oDnWU83XT+jlc-vAQ$%SKw_N)YFBI7NDG!Tg7r(DGA+LP9Yk(Xs)oAADZA zQ414Wcf6kwILGPw406H7;PePAI;~E-)%kBagWbXKs5kVwUDO{Rz|Nq5*f|^@bPmVf zsC&>G^g5%19&+Jfdo(;8bzZz-_XpPnhMbKz{yV+zr249uFq~hoS%w+f8_uEaPiCgv#ZzO^!ViV z;^W!X)%od}sb`}JF5bWW7r5t58|rf^QvfNry12N}h-1nZ{OjQf45>{b!3&ok&QFU+ zz1Fw`0U#Ms0rSJV3PLS2v{J6#M^bcVUkfQm;()0^KXzUI z>xSGROI9-!&2b>w{xO0sx=d>!!?xnSR~~WcK4%f1KyUx*?D+KES!?d?HS{}9?>X0W z1>GgTdDglSMtBZ|9-!Yy$)6Bcy!6JuK+NoV#JdiWtN9`kU5VsRnw3w!aiwDAP*92) zR|pK>$e*cdWQ?fYKwkG<)pXKd=Z`-?>!WngC_|*hJJ8~`E>(XjV+MTw>|}t1!g%CB zUao?|U^GQcSfGDu&RpFzFP?2Sr&)j7-OcFjYjl>m;j{HXPE>B9{myNFVWgu4ik9~? z6d?dZuKV*IG;aRiBkQ$~rG={Dy$N$KE zU5IX;_z=%;&^#0yaC_jDr9BEa%U+|XU>-Xc`Y1Q%63fC*IZBCQ)?g-et(V2^{&@Kz zDgEQ+2MzoE#m(7ui+y5^fH0{e%@FiZbOioXrsd5H26tddV!;bIpbYvx4yNE&t{KRk zYT;u3{Q2KpnND`!T0%p2W6H=}uAq$k3(kGBkgA1Smyj*~@kbNjiCH%B|M2w``n<5j z=mj_-L4aJwkwA)S$`SA{5(5_oeDRdtFo6k2i-aiP75LIhCVL4Jv>G z-pvS%BXUnsbks2TMBIigN2v*tzP0pAUJnHxXl8zY{@l?0D5BuCvTw6(%VO$ls^P*G z&5M`3Z{X;ShG6Y_v^amH@WT_a6(Q^B4>lYF<|i^oMP1`Rf4xQs%t<7jlD`VgDbq{H z*Z)GvXbr=1YT~|l@uDIAXLp~QSzHQ$D?%8!kehL`*ozmcS-C?* z1?3cQF-rF{?9PCcz92xz6Z>Xk1g0q9wk`4+vN-P|pG%oFKXHKxPX_jkf6!=w>NmIg z%{Q)FOO;co1dfwi`L!be031vsZo=qNW*^9Uqm=c;eJkd^!x45=e_totUt-fz>DAIX zg99y2S`Eul+?e_?VsUV;{pBnC;;OjugZEm!VXLkE;BD9I4aeQl#GSa^&iD|HN4*0$ zIPAj%)E|w|VITFo6K~{p;h;O{9S%E#@wn?AxX|r-qXDXPcL#{k86m7Ls=B@a{o!G| z+no%CXxN=}+pvcYq1WjRJEOkWM%~e*dLw~&h;tl@>Y~eQG-VZoaKF_#u*f?&JQ#M| z?r6~KAGQxWZMS_ec6;7VgHC(c?X(a2?x-_5a8ZBUu0$C6 zAr5NOR+hF{wsX+xYdkw6*Bgycms1rUbPv7G@W6%0?R(?Vcsv*nx-LTF!`{FXLS)(#WkifE=nUhnjCaH9F;?_-G^?sf8h2b2Z1Ft)V?J?~2C!NV)(CbtpdKZt8%lx{Cs^S)}b}cE;>-OMy z1Yr-2Ty)TP+ugo586A4K0A5z(*lD#B3_GJ?f7}_5M~CBq*Xtn4thgxG#>YR zL)h;gOa|UyFdmO#8;wW3vFnWw$8NXXZTC4>cYEXUc+flKG)Kcqyyq~&&>KGtZB@At z>;7RE9u5bGgHFfmbq@~4@NhgF^oEmhXXJIk z9v=)~CDsx0@B>LLsup6*=MZck488W@Xnfc|m<+q)cE8v2M(s(z+c|{YE^@nv2mK!6 zJTp4%9d-_ehrNDh?2U)LgK9dHU`ifLXIZ%r>p{Ca8MWbX(1VBV0ra}P!DxuO?E|lk z2Hk!K9lGuTM93TV#^b|o4-GwdFc|j6p4)RfXjF-{+UY^T$IJJCYJJSL?fS+G@ZZ`u zC{z>##>gl44X>!bHcA8jOIk6#AMf09-*6~_Y(NgGXI8y$29lYW0R8MuQ^n~MzhussAFz;1s$8H^6v?a_ELM#EkYwcDM8KI)?JWbD?#p)RQ#I@UoD z7718NEk{&^pdb~2GD8t+HC}+@B=#^V>dIYD=y}NF8anhuR2&2z76HvLT7o;Y1QgG) z4*GC+YOoRlzG^ zSKvVHH@ybJrScje=C)d`y_SM=E}Rb$0+>o8nayATIvUJtFz2mMNnR*jOvz_a3r2Uy z1CVMIS_OW5yUPj~rZyBPc6fDXTPk?uw-`r7UB6IPo#=VM&3GD5Cis)Y5!1w|vfGhR zdGQNl6(%r`V@8Anz#0HP(oh?AVzZW8ZLh(Yu$i>Ud11;C5Lm#}@X7XI%*b0D+~s?r zhMYHorvWEE49xbg^nTt$sa9w<_yK=H-aF$Lr8)A77?l|UCn#dgcQAlc6aiOmm19a{ z6y?YwV+&N=q9`J*Oat>RrVNmY<&PEKDc+2VaJ9eO9Z)L}j1$oF3W8)_fRhMuQ4U~W z1;{2;wPA9~!!SgFC*kwoI=I%fMfJQ)YRZqQy-UH7*k2~xaTCSp{qeQ(H)~uI5%G$m zQ1~16Qs{6TNz4HH#076K<*m+j>nQM=F;!tMlk9kzcm#I_anKw?id~xtleWJJs?Tj! zRdF;{G_=_wQ3Oy?8kEct|4Y3#fg1e1j(*l5LlIeUL0}D<9c?WgNpra5@?Fc5Ru&Bv zWiElHV?6X!c15r;2&OprR8o}rv+B$5JEL7#`$w4(mg_*=43#Fx|&*Dt`81Wv)vhTK3L$vJFTjyNk|1-t-` z7$_seR78BT%z~4Pt7`!nQD#`!7KkD+@q|P)Ew^7}^o<$e^|h{H0}x-5`7WvO6QSb# zgXkal3Hfut)E}o#6`NFdM9`C#8T#I@4a=D3jFg8H-7rfb`Fw^f4_{-1b<2gPb5(Txt8=Q zE*D+BN{fX!*(5Yv#hb}M5tFb!WDy%t53+P6C)}Tm&&}KGEW5P8_gtTl`-oywf=gP- zS$qUS872o{dUW*s_z^Lx6bMg6i`t7hpI;N~`#RXbr`qmo=GBjbM^-mwZ6S z2)JZE#sP1QFB@jhFDabYCThS*RZ1!t@M$>K^m?H=xoDC|BjNkAo8zO*ESW-v?%@(d zBxZH&1y$~G#)1IC0ju334oR$;LKI5zCl+S}BcIDw2IU4JA4LRN9HH0gO(u0qC`La4}m80?DxW>>_-YTaTI^EQl%6A*@7WHy}CS*n;K z5C=YI$|Z@xJq$!-G?NwyWFW%yuJHo=`fG$H|Ni$YbLLZ$ya_|xqIgPMcL!qWG?R+% zbAx&Rg(}zzWFRRHrmE<7-N~W@{cr}md!+`KAo3dKmMCAggOpmmL`iUm15bVX2z~77 zXj8xk^2e*olPg~AHTdb~=2HE6b7KB_d#(QZa4O#kP#oq_Qsb#KoQ zl!A;wcP5lXWfsB+1?&n<%)ucp!6FiedLLZz0yE(Bx-*p#-KDHy)Uuy(;H`uv>HVVw zW~vJ5TUND^Uo~V6sdU$=?Rt!f248f+Dz{%N`xg4(N=;zQ0L9^vVX>4RS&t5Ufnkn_Y+R86OF;F7uB zyH*maWM*>`axUtjj0Prjsf-38qt&=pR-hFbLt($s2#I%!X%q_)^nL725i5zY%*eD8 z5$FQ+#x{7XPwgggGV)cj%F4GtqvetM^P@3RGP~rWePsd$#|wykj)W%h9De!`K>Kau z9*t*&+#QLaL?3&Q^J8fTBz2O44LOVggl6}7%<2Hq#quB;bHpO-(v{@Q2b{hz2N3kk znUerB61@f?@zmcI5>C35)^j{-Hc~}eYnZ5^wi3!H@IoSv0yH#hi4X)c7{Xp+C|W@O z2n-BcQa6I3K96aC$Y}X95@-a{{U>w8W+K=@u9Yp(fouKYlnjY7SYT=spsncPgcLuEk`r%(neP z`fBp6%FcpV`-qZ;Rm}vZqD#_ZQ|FIx40W8Zj5-bbEFw*|LMUQZXKE7$*w=BtG$$ku>^5gG@|qKf zeJ!;3-xtAI6mdzAh5`+fpieA<78FKQCv@;Z_2- zHlfUz;Exl+b7O^LEn_a#XPwJo6*TQ)EP#;gidb{59QS3Atuj`G?ad6S^f8JZ)ikGoq6Lb$;ox~q63`YeN{xF*Z%rZ(#DS;h z${kvkZ)ri#Q>W`zv}~;7kC*RN^DS`BYBbG3XB)Rd68S6&ZR5_~QRI#Bg|$^+pDD}F zdks`v+-tqz`x=<7QZ9e&@Gjnl-bm-O`4>|VMoAbZ@_>iJ2)QCcF_M&eMlG7iK>V}Rsg$|w#17ID;( zPWr+h^E-9ahqrP|g6vz@MIpQO0-9Dxq*up6$wQRgV%y%J#JwBb%E&qEwUDT{Fq)=n z3-9}F;WrYqF`vY@d^~Q$hSGmmsTq+P z>XQh0C}0@+w0gAF-m`G(HQ}CtA?zZ#s)vx$dlGqEu%Up&)0s7-L2~RA2pv?G&Fo4Z z`#xB}2unAP>L>Dq=g#DokzP85;vx(*{W7P~YSLbzrJas$4(_}nl z4mq0Qwo0gRD61qO0Z6$Bq)nj!H)_N6$bFE9%->eSPJ7jqZH#|Mo*2T^)RUy}iHz}9 zVeMkRjLq8BvZ(X}_ECoO>o!DuzM^KDN--GclPqK1WJb*nzZd7_kO%a(xY<=s4GLc% zElO%3K9+kk-jONUqO(k4{w6|vNVwXhz$-$C?v#-tkOw8WY>^upg7Xui=%i7S^;J=Q z1}p_q8r3pk7RMR~lDI>%o4@fhHgyDOX!&Mfi zJxvcsGQ!H7qGc&@6-Kg=6!kSAxoxF3>!YdVk8U=(3TS=?BtTYwGYD8;9CiA0zqO#e zMO!M^)`i-300MnGlO5NZ%pR?%(iOr{e(>O%Y z2a2N0%!g)E$1g~?HWz3r1CtK*iUaF?9D0zMkkB(ZS%edv$aCbf0HBQPx6`F*Ck5t6 zhgKShT1M;rQWCgGq}u{XfQt1*NF4K|UMwFB@;zl#uhd!wwZ;#NEUJ|EsSj@`XIV=tx1sTdO~+((#*Odrc}9@&G@Tq4bT&= z9H|@1)mpe>t}b#+rgU^b@$bo+#O?_Q7w+Gw$VI04Nv>_Oyq0QI~ri$fuR=bFzq}tyzyOMe;UlQ+~ z{FI%*Msm28`-RW5IPxhVF$-gHs#u+jR?d80I1{U30O{HKn{RevRH+C}lI-MZ_cdRr zQu^n9r`0*!Phj10iMIcO%}_IW*;MjR5mCRkeAZXU!!!|j%bMq8#4)fW6P=gYxlwjU ztR#Ur!ysa+sAfblNC9C;g}i*YdV9@_ic}58lHvS!`aNIeZGz5WfG3DD6<%K=l2uv| zGaPE{N_IyjHPnf`_35E17E&Z|G&EbK?fYueYx#tXA;=IO>DLn3)jCO zV#WP0{cbmN|3kOa?G1PLKWyXq;o(kdMSoe zaTA7-R6ZGXkVUvcwAZikkNwY|8-M)K1fIM;z+rA{(P>FuY>DPtw%@g>ioZ--is0xC zU+Hj=l)#fDX`N1;95#Tp#La`GeWztFI>#M14n&1BiI2K2+avq43@vPla zK7k$uf`khBq}b6LGd$HaZJ9a_Xn{XPN;Z*ADxnD{WdhmGy!29|!P}c6mJrK)$PzSF z{g&6`y0ih*QaM{&*3}g$&wCD&OzJ5CcLu3E0Jzk{c)7!hH|t=(YGu zB?mitlg*u(%~h2Y&WvJl8Eq*hWlAx9BW!{Uw4!WYCEe#tBCA}Q={UfDPBbH1V)xG(#)A|V7(F29>}^Q zq+N-HBcwjo86n+n$q1z(IrfQaC*6B1`P=?Kz$uamqLCfmo;tVne@REN>aS)kIURZP zVT1!V0nT@errpe|V!{bGxpyfCyY&$NUDt(DMhy%+Q(dSJ$uD7_0#!Iu==0~J)Js|R zPw-nzn5okQh+7-hnmB>j2aY-ktmDu)KzZe+2|Q6VuV^!}&e|zFKb3?qMHK<>UW1nl zLB6EJcczyMyJtlWfBxK%5gGYx#rfuWNnS%`4=w;LK03{&P;~g8k79mDwNwfq38S#? zO>p*|Y;T`iIzRnWw*KqA??*5GtJnX|aFkvD+k?*T{^zYcPq_YT7OGzTRcskwHkx36 zjDvk~7@-N8uK0)g2!#L#6C7Z+T&*nF%Sq9?Zng;umtgrdyIQ7F96MWD@rv%VgPxbf zz`Z}axjjC8cm6*0=IZ#Ds>L$v*EEClm8_K}Cg)KrWfc{kexWRFz1BLp+4X6){5RM= zRQ#`$|DDbtEB|}L?oR%1B^zx%*Q-v7c+xrDz%aQny?ZqE~LX>^yhh%u^=+ z7hxb&e|1yRgJu8UR?GkPpxsT&|IVo2?d;_LHXft@t8-!#JQZ4>Ia3>59V^ogINcn?|H@5gOpYYtoYW+%@yrSfG{Ogw%Cok8v#2^c<}1DahZ;|6t#N{{8Of z_ZO$;*Y&@yZ{J; zQ#E+W;Z{8!FZJP7mHAJ^Fubxt0$zW&a1vPJIFzC#*Jn@8Pp?Y8(uFI&?q$vU0=x>( z*V@ryIV_8i%oS=`ja#<-dUy=0@K_8Vj0pfgoL`;&a{TtK8ASc!_Tt0M_ZJ`DpWa@7 z`2PLb&9!pwWT9r=6=rVPkTpx_iwR3zGJ*iXBJmdS39ROF(M+~i{?%?T1^rn(Ud=UK zUR*PKh_|bnw%XUE&(+o=@i(RW?4A|+pGpz))cW6Okcv5Z0e{<_-0Z7dhItf%|A(KK%K>m37{`UC8%}-*beU&IV|CQ1SAKTU* zC|p$QtFSm+^!+Neqfool>$TlZp?aHZ=8d|*#d=i>g0-BNHmbGehc}vmklaUYDTNpB zopf-%2$FpbUP>KE#MtUq#Nb?Ae7HHg{o@ajP(YRjon%X{ME5H0?@E2UQr$j!0~{xR zx?oMCqOLmsUxn)YVrUfl%+1)9BwddHg5<+T(7Zr<-0A91s;k#>R95PL@_h5-oc}fa z|Gjob|LY7#{oVfWRvx4O>1>iZmzvD5_E7h~tX}T>7nxnfCPCWip67jqPlYr7xk>m{ zKb7;}8hb~|fm+OKNwJ*d+PY4WWV2dN;e+T2J{ z{lWHdLvZ>vV&LZw-=E!HpPgKt-H2>H^N=k8Ws$h~KxEl=k(C)-XK@hO`80My*%MbX z0v176Tv62c1)D403cl;Kw0~#nCfvqdK<@cS>I8uz(O^u)ja8WHdFY9-s|LqGXM@#Q zn2%kT#DUDlDq^#I1Vx653H0L#sfnugYi_P@t)8o7w>Q_f*B2*0^WXam80|-KP?R^^ zYf<9fsq#0+H)pq}=U1wVkH=OO(PvqZ+v>L$?@!L8x?RbxCZTs)55Kv-{cwGDb$xkU z3rfQDSt!RRCuf&8x2Nx~>mXzDi07?>QXM_1UY-NopksDae!982yuG}-_@95>zCFLb zIeRY;-sF7{wOdzL*y)yp-FE$Gs48Q+0egCOeRF$$`DnOy-gN_gMksi3yI-E=QmOyT?6Xg8{||b@Q8xas-QJ!5-O6M1e>v9RmAh=xvav~gnOZb7q1lJ|J5vM}oPH{m`jywhf5C1;wSKg+{w-*bydeB?IJ z1)pW<3}WcF!p<*41RQe*o|E2yHVyLj5Oep_1&dlvuCB3~7gBiz4l3TL3In@HQQJSN zkR`k2l>MB5`?d~kZ1AbJ|M+M<()e3#|BXi7L3aPQI~wimzim8a=YQ2*p4&h7tHqqw zO?feWxu#PpPOLPb#rmvLK@wq;J^*arB4&2J)t&tjVliQs9$^i$RZE5h^tz-?xVZpG9pbLCYpQ6cE~Z>bI$3T#%4u`2 zl5h#&b?K(T7l2qnwf%p9vw+5t$$M*z4CO7L^7a56i0dK|UmEd5B}}z*OXL$>h}c&v z+eK*Rh`YXR0!*G|zR2ONM=M{cW{wV_AQd+LM^Vb~#1wNZqq-Ie_x}NYIRBq_XGe8!7sr&wi0&VB z4i1uep6i{Nc*MIiEkkxsHCz>S% zXL`O&GCq8kSU!&@A)$f)%@J{hKC!L{%C0HJp2gKVMiRw@*HJSpR4X-&6!^824O3GD zO*ti?Do9)AcwEE&uk`;IR(;a=-(Ej|{RdBXFbg@SHn^slM)*E|C%w|esV zJXQtCLf@C3V%J$d|RuQO`r&VP<}_djmsQTiXIW(QB))`cj56hJWcVpPH8MH_*VXHQ3bg(WA;vYMVfx~`E#S$Y&KwsKXSW| zYh!=>QFgPIrJo4|nsZ5H8=F=F$^kDq{5u?YNA@^0=7>Rk$TrZ?dM}maR`0|i8To67SMuW7)_YUp^XCSa^+)Eq?DqvYc>xtQ(!o1w*hC4D5}k!y zhnHhtmTN%VaKC^I{fyMj{?MP22(#Jz2%MdqULT8>^2Ye?U?_e?MBaF=FTXjK2ebeX z9?j?qO(ZBoPmW0e^Aw;4fEpq{rVK^0pm?w1xl&_|iJc0%l-C60G_xHgs*MlF$d{?} z<}qdOP&7s0RXMnps*nt(hh4T;7CPtSaZ58<3;ONwOB_DREceBGS;kJC$ru4AtWR>c_}qbLyXg*$^xCYcR=5*Zk}FshRFF~fd~G7=v9 zz5`xnuD`Y0dm|FN=3N&LR8cL?C{;`4=Mt4PJ3K|&X{BabM=LGXNLMIIIc9jQW|Usc zrL);mQv@wB*^iJoG!9X;z!Z6oq6cLpf>UJ{g$p-rC)FE$1w;RP!k5JN;%e?!AkPQV0dfi%bPVdM zCfL)wU=b?=)IPCqFK^}rbX`R0JK`alkhlr15cGbDFhduCi`4rFQ4&Y4T`)qw#fUQN zO+q7W(Z0%{-MWW9H?m3z#4ylQUzpT0nDwMJVGP`OQx%i2+LlmMM{JGRUDw z0sayU;wt;^k`R9b=HJTu-#f#8*8e~3?)?8-dFt4Iq2PmW-TcdzG4C?vH5E!s~^R)YW*K|bNm1O!Os7? zl}7|wpP1v0!T1B!|!I)eXg=?V$)L<#F>!Q#B=XjiUi>m3YBoVf{@ zR#~V)4KJIiP_k*syHdtNz;U53^i;?2v$MC_+iPLI!F_O!X~7Qe=Jsy|DXKlYwu^a% zW!tRh))oFC*+;g-&FLWI`<+%vUvCS2TZ{X zMIt=|^gIATfbN0M#exZ-dZ=zyy8cHb_zxLxBK^ne{oi43{qGER_WxEMxynZ*_}^r_ zk=0-F%~sZaQB?kx>#sbi5>w<^nM`>|$b#tqR_+}X*2RI?|9Q{geP1++uXCxA@ z_ljdX?E&7JtkF+8YBoW{o;IB>C_vQ?qP5@G6-b&!LSb!c1eX^XRfPG;` zpy_2zGtf+d=P(3K?9Lk8S%Y7)HE8DQ#_U0AB{K(L4w*Z9 zn>*I_Mc6SJg+(0$OWU$}J9b+(>~`$e?bxngwB5ROn>A~%W+(Ll$Y7T>Q=iL3-MV@D zHJPSQW0pRnNm^)**5Xz5%C};uzQ~BDYO4k;DrQl!uqdq{;S{1+W)=&&i>!Zqi(H|gS`psUo+13 zY=0`R3=+owYngslTv%D`1W*?YDUU%-M?lgk%eZ=yb5?pN=+|JJYh-t(`OY-ou4x{R zDU#`PngDuUgeXNdtzxsXnR**klYlr$AF*|D5p|wJU0b#OU;Eg7YzFuh>wmA`?Pl|T z_B#FD`oE1Qwf>92-lP&B0DhC2fa=-Cb_L9`AcfM+GL-3M?4`i^WF@~lzg+aQmx7km zO6R(^KD?0$&Fxn&^Igy>u(HaFhp9^zC|b7e4rmLL{hT%qVKFR%${eC-t|Kq5))Bm>dtablS!W7~H zb7XAQbzqc zlf_<<_)RX4pZ-z-3sUud#id!Rf3<2D<$u(Nkhg-RoKRDbxRPAab>DA^%sW-)rade+_r~|5l#0 z@BciPjPYdGeJaLto^87R>g@_t9o=0OT~B{ck*gqiy3SSjBVuB> z?ewea&KB*Ge=UuHrQB9f;8hvrhu4F$GVi!7u5X1gDv^3m9W!ovJ3wel4rp1Lm%>_? zP}F}g?i_EfgJfGS>Y_C&N_of-AkCE}wp6D5oK2PfUSV4m;E*@73JTR|p@3!6fG$bI zH0iSNgtxIiGw{-RmRPuYR^|vs7p{tNEf^!kDH`j!=iNt%U3K(^qtm2I%FsN!^`cpT zgeZcHL@gFUG{JW{RjRC@W!`0ELy~Cd8qk9<1rNGG!vuZ|Oi}ORa zhDERae}MA|a7jb~rs}#K?=^@}=yQy@ywNs9reV2y@B$=6fq>x7AP%$~${_=NpWL7D zav3V|x|t67m@>h|8g^5_cG6cKS$j>|d6T7%lLuc!YV$%}?aWQiPp@;twpXRxIAnu) zdDjJ;OcJW%QG5elS#s?)5VGyRg?P)A&GJ4`|jXVeBBaJiMS{E;a(*`ie*l*Qb zKd)f;%$Us!hihIqQsv{6Yqes4=2c@euSb-^L0N%B>1eFerbTw^7AbpCFW`zj{&t>v zky^H^30KV11<(vp_!yN=xat;ZQEPjf^1fyDt>C;YE!eM zU0KvfUk)it%PU+>?=p*_v<7Xd>M$W7^@E{GTLkF)78CYzSY-!RlODxzFo=}HDX0a_|oa-`4N;5OAwpYz%co&c#-SdEI^n-dgq z`B`nc<+aF{9Ai#fF%h#L6Z=3EbFk-tqJ~#iO!+Sg`d3CA+GIWz1gg3(w9qs7a!)fx zAr{HU2U}6a2}Mm2b>N zfXOq4?i~ueqfAE>w%OOVqOEC?BZ52*k*^9s5YNZ@c5y+6oUL49u2np;GA#MCAv;XEXAEsdX3mVS|xsx|4$B`Jibq&K+ z=l^@XO#ElJ+wbi1|7_(Ew%)sn!QO;nSj9}wdrN#(&#NzvUsbctUGl476kjjDs@AF- z=PT>4eF=T_*lxt4E=pNsISSY*Ujpz$ z)W4PaABUst`TuUWx4Zv;E00j=-pj!T$!LRQxHq8yR&dkv>VK6zuT}t8R;{A}t_0!= zokiA{f9tAP`zGq?X_Z6pRB9Sm$lL(8+`yfrG_&{R*nAC&S>>>mscVndzcMPy*QQC6;{5OT zsZ+kzx+I5R?X}lBzN`2~#xOt4A>I^gu6dLp?x6Pm0V8+*k#|Wv4o8nuY1$z^ zE;HnZD55O`Q&iW>z#3-iUKuK8wX)tN@dUco6JGSSI?y45trg31kQvXdW1B(MaY~TO zp0P|gm5YHS@L7FEzZI2mOd=9dHu*x2z^{%vcIf;&!{8;bPz9(n4XGX|g;ui)q{i+w zNT64SROd(~p-bTM@8UxOcDW{CBzu&n#Yjd^ph8MdpnVcoe8J&3|0Rjj$Km%raqr5% zv|Q{(S^bLxeFIn&TN$ZT`6T{;R}_nQ8dPaR=#z`WRJ^);Q*@rFqLMgH)LMOjXq`7{ zjOF3tMBOlwau2)$0b!Cp*#paX0!UO?uVu}30i&$Q*{6{6g;;8{-~|h0$0P^mD0|X> z1vd8KfdYwSR>o>5f9g}4$tu?A)`^^|K+vW|4omA}T~uv&55V^U{9~&E^*G0>k>{D* z$0}~&GAW=IlbITcjxm(b73)*f$+bw8c$bz<8&%WXHY~%Yq z*{5v(CnVk}rco?{0l$yEDSG%-psVhG7>=^>zwJSHcm8uLkBI09iRYQY9*e==0I5J$ zzeLnW0S`TIv_}zBSH^ghRHzf#QBt)yq_?E-sz~0VYHJ7Z7LL+W1%yaPRT2ksnQ#1S zi2t}G9!T&8ifX$s-CdaOHp55sB%vwIFsIo4k-rqsjVUAZxAsmlc*0YQB`p`656gFZ zxFWAjK~mU)y`TS0Nl?|RHMf2qFDmvj*7!EhvKDSW?G@2HKVy?PiBxyzI5=KF?8C9I zGsxMmlC*e?T(bxV(-c$KMfZ}9ln9M76yT>10n8$idbtXXRN>W#$b^9wfH;^T=(E}K zl6Yqe?23CRWL$`-RQ~Qfj475e`>5@3;2`mt$XR_Xtpc0YUn124YQ|F`h0 zRu1Qq4W1^JD}ldeAXidxGf`aX;+{>!ZzZVJ3EoOdKU3sZW(e|OTbTk+dDU9dR9U{? zOCy&`?1T)q1!ltYglgru;x7@WRZr6|o&&oWEdc&Q#$v$54QrVUyqq<2+J9#Eix$L2 z6$Nq8stB&UL%P85-$iO|R-1oJq*hLU7eBd5Cs(<%Xl8TZ+%2|hQ~&qQvHA7 zZY%$LzuU?B{|CMH&i}uaN5uAAemvPoyw9R2Tk;m;doDkoRLAqE0(IhdMA3QyG`!mz z37D~ggbViyF^B`9_bV`3>6}2{A4B)Q5{XI@^yBC2`~;b#LJRaU9^>Arv~L zUWub;b5wyhxzrKLd1AADz@}?(|tGHw>;g6 zkFL-}n8_jjF(PqTG4C1xJbJZWF};jNQ%?k`YlDwnm&8HQ;n0W5qI#_>WH;FES7*+a z+J7Wwj|}@V&kFl*)akUd_TO-@v;Vg8i2T1dwv{KY`$iN%3LqG#G6Qpq@QO2r$_PvW zn?VL(gn%0%$dK3IauWyAY!j>nd_0a|v~1N%A1v6;F`l7;F6btAbp6kE5MaIiEo`4BMksT4+*h>{pTg?1w zm?nl2^urnKrba11_AGLKyt+J*b7e30EtyC8Z#O69pWa@Vefn@}Y9%8*f!GJH^vJ#^ z3_#BB*aK3|is}98JG$psu=Y|zX#zNA$4wqECM|e6*SM7k7d|MHEj3?j~`mJcjygrP(r6E%Lwe-;2}xCEr(N^iw6*PU5HOzOgW5b0VI@6*o^Dy#dZe z2!D%_lR0z9S0`&PKv2eUQN-{ByO5#uflC|a8{njK8ZbZQxwG%W$hCmyaEdNt-@mpx zU#k_5xOXU$*X#X<>I*Q_P3GDwhh9>&PE4{yy&>6(o30k%^|m#iE9OBFe;13q+xgtu z&S(0J1E2 z(6YF87~utE=ngH5D?da+ii)kQ_$zF`veERBca<21ii~=vDN3f&iey^Yvsp2-d&_I@ z{{x7PDb9QR6Q*E>A_N!#(DMKU0lEi1UlGL;xr-})$WyNWOAq)a41j9=ztbIdhFSf; zGwkg2|7|=<|ChTL8!-TspJoddfQ*_|xO0i}TJA^RW8Vj31Y(LjE-mCjC4lIjN+>m> zYfYave#nn5T&-K@q_?#lvFb#fLhwfGo(&~F&jZZB0!A2)eMD_B`Emy7Pd7K0*Ltta zzNN+#Ae5DVCzR=H(2Kr@IvIt=%_+>RuMtUuGysA&RLux~Rr2B;IQVL{#DVpEe;v*ZHDkXJ?}n8{CI8fc|G*^jMgvM`ptMiy+j-=7-k43E3@4XE zWcz9wbKpAYpV!_@XnakV{$sdWAnvCCY!&zS#1nh}55hYzmA8s>+7NgE-Y5m&S#WPobnUC)@RX}SK`T%GWNK!N1M~h(b@2kb zMUH+6;3|)y&N43QZDuaEb1bqxI!}Sg^IY*+`K<8&tCM+8n*X~y>SXhOjQXSA&i}uS zC*}WFqrJg>fbx@_TMY0dqlPYd1oZo$;b3 zeaJdn6Nb!Bl>#K|yipB)MLrzO++U0@XXhLF3q-1X{@mb_Kur1c)KPLFGhM0*TQrrs zZJSUYR;>RUxdU)z{@->tcmGFsxBtJDr{4PVq;~+O+gS7dk96fsVCwVV|B*(o&SCL% zjc2<5qhLt#CwB`9J>~r$>E_Dr|F}-ctrGpD0P_MB<#~>g7IMsA;yh_ReWQGS?C$^g zOWhY}Wkz`Doq-C(#_kQwW?IO+f6n^@OLlMzFkg9(Alls?`0YHU`agpVO=6#J;1J*n z{eRdS<@|r`;b^D-Z{v~vKQ-9bn>hsNq0lGGIogunPZX8E<*7SH%A$Xhe%AG`CDUNz zhwI9v{5^^8d;&eY`H#@Yo=^%5QL6}<)v;k1(j@PuMToD$g_oeabKmXUch47Wv(}8g z4pC7y^g6qU>BCTIjr|FA#@ajIWr2U0-A|=ICJTqa-;y_$cV+cl4vBXyVtfkcbY*B{ z{Q$|w1Yp*0B_!S!T6y~M&duv&K({6n`QxXiLw;Hp-YuAm-mWPpH6K>U%Nhf?7E7*_ zs~c_5ghmAnMHA?vOX58)Sak2na1Ar4RV_NnP(Q=c!=K#p1M2dsdZia5uu|xo1xd{2 zO@y)xLH&p}b<5Bqxo7Q08<>v|a4UjZcQxNR9x_jv{l8G=Mlk&ajc0`1o!DoN)^iE0 zu>X6#L1zE2+a0xc_WxEMVdHUH+uzAjz!T!t!cx@LYG`1#(J-^%&r#8!U|Pfq_++ob!qC|I1vAv&2M_wGsK zzdD0nF8-_E+2w!S$|DszKE~iISctUBr*Y_uq*V{r`6LguxJm|bfTEVoOY10mz>zoX zI^d=J12}hR>42AaXeor*lWrF!_^-ITWJQ0iMQAfwVu>N*TiZ1V88B%qIWvd%v7|6eEKGU6HO4%f{ttKeKW*ia_x~amM*#(I$vvV>#E|}kr!)Sy%)0_9 z#nV8}PLXgYSSHdDV3XeEp$mo`pGA=yN0=>7q#$qEe7Lrw;7QkqOX96s8R~azql<*h zGbJDkxh{z|!_%1q+Q9M2y#w0PlakWs1DTAACZToN+++Gvvnc*8n+Oc3G-MN#r43V{ zQg^jlt$f}ZeH7YG?`0<#Iv0Z$2{t&WFTb%2`zvM10^qj$0!MT0Xho1Fw9hx~y9fu=mtU zQ&PRo_BE#`C4xqZm5N@kjW8Ejd*Icy2FAST15lPCab2AAJIE_Izev?gu=o=&BC^sw zgUg~)|FiPnJw^jux&JfD>3^fa?)>*wp49p8rpPv^M_r^H+<-#2p+t&uT30D*>BHEy zb-xuG8>_prDb-CClFoinK>e8(8%23lEnjjffkM(@+{ z1fZ2qUa6#ZQ3A`XN8mdOnhAq(MMb&*WG+#q#5jfqt-Y1HM7r^k#IWlip&-;nLgZ`2 zJ_7d$+y&%bvY^odClQ&0^f0^zK4O2DnK3Z~=u_xp7c+k;AYPkvn81Yrh|mN@BDtxU zdLE9D%lzeQkw^eCcP82!qZwRa5=Wf1p_u_39_I-XvkVSKUwj2Ajpv90C#L3FQYV{3 z)m}UGFgvD`>GPaMV@(+V0m))u=e4{?K;mIfU|u4oIGCnxOf^=ffqv{$!r=!}a2E**ZK~RApvh8dCp=79G9C(@To?y{>q}x1 zgb@-KR*MUHth~cEjz+=SZ3$(cTKeDh<1PbOrT+~&+4!IKu-o0~f7^Jf^gsQ2vpV3a zLziEf9+>IQR&_yYxBXasFb%AZPN>(AGLwj~2ht30b5xplQeAEW;s`#I7?*6CIV6=<>*~+sjrX|G%DfLE7A)%Sr6HLv_ zCO8k6m|s63e=dZ?7y*Pu4n!QV*Zlv6eLx~G@d;$Ze#_KU^Gw8e@WEkHkNF)%go~iq z_rxMR76Cd76fxu(8NrCyD1lRm0|2R%O5#2!$|4*BA3={V6&x5%ntUJ6$0(u+Kn~~( z=rBnzUdn!ONTx05-@_%<``|)CI>-^)By<^yT703t=j(-9xA~)50BlAm;s~TK%7KCI zi^;_-ZYR0WDO&dQ9X=vOts|)D07ntg+0&=1#8%3y8KjpHn&3~sX*=MR8Z$1zuEi$R zUQ%9lgNi=nOM*XvPwr79Dx~yAT{79A%I#ZPrN_sfXP5u2fyUd29Ii{_?g z6#M8oa6b>G5lRk?)j=A|D%IEq@(M1FtvTHDI84>0UYEqj?s5%u6(*smw{4_)pzYwqaPB=`1JVAmzBP#9)yJW8|uJwFNc4*r%?YB z4)Oh4nYH)vH$bn_|2pm5{m;E!{P%VqxvisZzeyap^5`R%5K|PONF0}y=Usu`A+bWn zS>`bH31^)Z5+s`!Ixx3SDVfm{P(;>TZFh>}esSP}VNad>yN)Nqux&c|vln?Bb?)iM z;F;vFwl`sdwQ^wF`L7eR-x%K#S}JdF+KLWjF6N>V#b$SqN#0DG-%%%1Ulz)n=BX}j zY9M~|f=3O)Z(jNwdD62M?^(rB+JbS|0|hyn{{#^Veg2p8e>=drbso}Zb=DkFd+yZk z<-*GLSHx_s%!s}8Q7~mQ@k#yJwEaqAD=hUPUGEL=S}6nQ>%l~F@p(+y6`Gc4hyQ-{s`}i$N;SmW-FlX0$xwz9!Fzze}cu zob;AhRex)R@R2P4+^g8`dFWHA{}Hwg{jbyRce46lzrDNvV=GS`=|Y%}Y+0EHQ`VRv zC{k6l)~V#il#%(Gl_rERtEHSEUePs;Xd=eN860!*gO~uaP%4ReJG=Q?r!n2Z%En}& z$2X=4Q`wj-RNdHfGwAMl(x+Jd2jO)8R=RcG$;)t_@cd7^*KX&||8#fff41^ei;^Im z>f4Z%mrqI*6^V2tPK7quGDJrrZ>+v2s$r)r&Lu3?4nPU;hPh^iJJ43vg~o{Piy>^JD@V zX7Z}O3<#yZ^iGJs^m{&eXWW?PpUe;a)qF|4{f{?x#ar=5PUPq`eUy3XN-w68$;Oakw+Ul5GqanwnIz&=_e$}XYEnZ=?@6R2 zKpKs2aH>AZQ#}7gTGTlVlRVJt=6trFRsNrDKX?ACJJ{|2ZROGXe{#IR$IM}dhn@N| z{FBvvxxqIY#eb z2%6yRQz#E71te&qdB~RF|KZjC>8#$v(OGKdFm!V5R&B!+A|RVpDYBqAe}+i_qvdOn ziD*g~`1QNRznvtCIosmOJ(TC3A>Z~>CjVt>xBXifO&`4luuA^-+PV1O_GoASZRJVr z&-1|s;&{R1gulvy%E5hE8T)EybS>)0rjGWeQ|_s>tm;&UY{@~NSOkyx-)V^~lZ9up zv|8C&Q)dFR`N&!#aX#0TS?Gh7otgZ%m@ov==jwclQc!$xeQYatBv17NMpJnh$ZkZu zEpKPtGkv>*BO8BK$$$PG29HYrwOapgXZL?cgZ}RP$5x({{8xj$!6iUJ{3ccb)0Yh| z1VyPMEiG9ON=mL4d@mNW6{5TdNHc$ceFZAz>&Q-We+ADf`HzCd6W{;cX}5d1`0r77 zC;zwdq~!luu-J^)N5SHo5c#4XPo($11}_)ci*r!sI)%+#ud(`mDSexPBRZ__*pL^A zTUTM-6^Zy_$I>EekRKMM>>k)c_|Z@+rE0Dpozw4{4`ptGm)4Vat-<}3IU zOmIZmoG;BFA137_0ExIjRp`~9ck(pFKb@Q-qJ)e^_~bEu1Uh$UxdI#W z@(wM{HGcvLYuaUrtd7!X1zgfFB^R-=Jz>c3{&6xRZ&@f7n9Xt_8QVin|5 zpjPo;ZYi*+Q3O9tEx`%an=)R|*~cb~t0SQgFz<^?=15#)A=-W|dI-Uo5I>tcOSY|V zp|BcsI7>OTMz(5Pakq*qDBAXpq!$^eS`8tL6d72`tr1;Z)#56tA0UADuY6FV;;xr48`C%m*8ZtVg7#w}!*{CqMyaFWUU|%J(j#!p`(b8Tahp4 zL9P=)Ma!F0*l6KpXo~-gqa*Y|m3O3$ZzSUxY1MFxR60d!I7IS>?J8GDsUu|LZV)v# zMXr$CFcn)!rGvMY8|2|mkjJ?|)^mW=a(_I)`BBgHu`cyjP+P5Q>FXU*C6Wuloh;6l z<;_J-W`QZ}pK7nzL6XEh+mpUzE-Ad;Si!?Z_}POXkW7}nhhQjcuZ5mG=2VE=Du05) z<-raG?JTgaFi(~uMgaPRDNF9ZU)if-k6X#6W3j*HId&e?w{Lt$OM0AaP1g1*+H2Eh zy(MKsVYvxJn2ca*y=jwpPb|EOBQUoS1zE%XdyDDgP5`co{~Psk=l=%7UHtb}o}B&n zc4M)Bigmsf`%m`eX@WseP!tLxhN77dwcy3GO8;7(PBEjEmR}%Yq^fq7gjfJfWzx0G zjqT46ogzm;Ed!bkX_G67G!X^tdj~2M-dssg5C)Qz%7ufZgnlCA%}}L8{N@5f9=jB* zlK&I@33+Fa3j$mr|3}08`JYjDcm8uLPfGs(zz2JCQGl9vzKIne>C8r#0B#d62=+jL zeIWAPponHJh0#~J=m-%b7!6Jt0hnB~RaiQEO<*qF>jHZip1_b6-BV^rauJFXwypOc z&ri>fZ%>XduWc|mec00ol5BBXC%*97wr3eSFvp`U^*LexG4_&57)W%|)# zZ($Km|4cg#;{g8_BNe1r6`odrNYSvkYC!Z+G2eH%JwFd)#uvw!VIQ-l1Dt6D!x?s| z1O9*Z{=B(uTv-^0@89_pD3<3QD~~P7`#HXooY!M}GJYnp{o0tD zN{&yG@BS;S#KuJut;89zY9EJ4)ac~;appTZP7|f#( zb`wkLS#KK~@-YO+KW;6nn{XHg$9(@dd_mJK()?{zqMuy$7zUFJ;y8gWs5c^sV%j&nJ z2&<_ybos~GNohOu<2=pKiks>-C~q*_7H`g`I~}kNKa!!&D++!!StSkn~Rf+LvS$|zzhu23BZuX4*)0z8Dwlf3q>FM zIhsN+g3*}H13&!V3C zjP6BArfe?7A=Aw!@e%$5!;Ee$Mz51{? zl!YOX9Z`UIH6MsqR~LU=epnog6GF)(OOpK8Yci!W=!bM6U0i`Mfh=x4pL;a9Gr;?W zB!USS#4|(tIT&C8g7T62%u6zTBJqZc*fq#s3jWV<-gw`IzjlGC9?TSJvaop#kVtv_}8 zA2jxdP$c7?Qwda~|Jgp+-ZkTYt^7Zi^jP^>=zuGMoZ3+ZY18P3&<7bkYTGW1g1=y1 zT~b|B2(&!M`r!-U(UK|x)P6`6B{Wp^6F@?GVLJ0y=~vwRp8`#5Lw1Gxr`6Q5Y-*Zn z83Y^3tz_iIIR{^HT8VoVfoV5`X@XInD2eoEx2P)cQQ*Ct6QkT8wu4IU59h@pokS7K zlUb&2ltb+mWj)}X4bGGNGJ_b#c}0l2HJVHlK~>A8SM`o)&TS$ez$wf$4#ZMfx$u@v z%&zfMXjlMzS+Bn;=C`WJD)4aOS)~S)H2wnegetNYVJ7O%{|F6W@DN0BfeWCT^M9v* zaA2PQTm4o1-=#d-`7Z~%okL%O`ymc|r8jLK_M;@ZQ#ZXdgV#BcA!ypv>)g+BZL3?$ zA5v|Xgr8vG0dJJ&DgOs+6)cvZ7-@AIy zOu#hQTh$$vw@m+S;Kwgcx1yI_LRB~BwFj(@91< zPSfzFNyu*Ic$cgYU!1q71g$c>gg&DrD|6z~=vU&6=3wD0-!DO#I4LNCuypPq3>WWO znxU~&uNplw5WnO_+e5oN5qB__R$qIXBp!%7oQNh3zUPT5ED~x#z7#(wfPu zqb|_VX0J-SMiaOMX4MSVX0hyI`CK;Ub9pQ3oWLbBxq`M;0f5|oGbMhFwewr+v~!l1 z&2;B9Z?{j)yz=DaC>cS1o{+(EPe2=2$J&*JE(sj6ZmiL#Uli*pr2uW*hU&6y*Bf$? z%P8^!tW$G${cYj-WH(#pdzA<2WtQYgkVLA!A`j9sb%jzY~V-H ztsmT-uu5 zGV>mi2{R@3!Oig{Mg5PHOSa|EVI;c~Ci5kpjBjDqL2v#X+iKD}4$o1<$rc4zg;8^T%G;Ljv4=ZduxAp<^QvkN92DK zhG@U|7zOR6ffM4hIg948o~K8^OhUWeYGVn#M#`5)e=*9DAEAFkBN#Qi*YUBC-3*yr zd_Lvki7EO};I9&pOf|g)jCJQAE{VlV3M-gZ!k=c?Yo5{w)&f@)Mca*_RD`bv>gp0V1L;Q&eb_G99 z5Mfnv5J4a36l04Z8*C^Z%vqrfk~-`xmQ;bN!_q<{)sfn`Xrdq+VZrO@R?0Ab>)rMH zf9lWw=WRS>e= zu~tG+$uURw7zQ&Ld8q9bKWgF^t|66a)fBLX{_&Q&w=uwF>>^UQ#gdYx7ZgQZg9|Fw zh3opv(g_x&4LDp~MzM0*1}P1d*iTpJzuYr{0#g?DT-HB)E)Y<&PYB*@@uR}%r;+93sv9(h$;4??QHiEpsGhddm*84+3>xB=$v^^uWQ&YsMZcdYKUwss zEw<9+DruSGm&$qOVuTKv^XCbK>2Z=ixC3gIoR|WJ$vU{>zu*)Gpl~vu!t6dnIb?^d zxIfOdnIn%``I=$-24+K8Kqx-D+AHy*pt-*arWr9k-U*EShie!laY%S)a@0;Tcr(f% z9wkvo`0z;(K#bK_y!oP93Nw_1;y%k909-|KH#BtVCzc`RAA5=YoUw`R$X+R7~G9hPptdF=K7qxblf>3r40e zRFFh?(F?+L&GG7htwp+Sf)j+;0!hr`xYD9tEkCWXQjXcju5@KL93@CabAlSR%+I8X z*#o1B`I%JFC%92T|452!)88nqeFNW%6ZBvBsnh=zu}&V#|7&Y|XK&l`|Jqx{e_hI> zv2Ry0=1wb|o18m81lOkYrfo%F5$nk0$4pkNC|S;F>18BqQM`6@QN{NvV6IbprjSWf z#~pA%*#ZmBOJ?xn1mYYYJ_8^~Cx<+qwtyx+cY}1oOq0fNoMaEB<=AJSUSKK3A~Z%h zJ(t*DhtG6fkXe#9%Xr#LA7c~`L4Si;!Z7OaYU3eR-*W+Zhpgb zBF-Hx7@{sRy}JCP!XqN^BS?nbAt4ntNgrLjf9<`708aq8BW5e=aa?ZA&X;J0p<+Be zkixHJY*AqDusAO|ARqG!%lmoVa^pD z(+=p1+ZgJ9%`$~9o)uJ?jK;27F$|6%mJQ6h+4;=P^dMG3f944o`*|<|K1lsMhgnPZ zi1Vhh06KyTU(d%X+};is)WZLXK~PIiAw zCTG2^!m6wH9K1PwQ(EEt{POMgiCTdoF@%&4pfohxcL4AL!d`g)v)=#n&+fae&40ZA zLjV7+zxj{%&pYenE&21y_@A9M&#un+QvyM$w*Kz)^5)f>-`}Hueu4DW|LOd5O}CJM zS(apP@UR>;1-Kj$y{-97T^4T=!q{@KgDet+Dt z5!aDlXNk&T$hi5_-evEm_p0}%_q%B86@hG&LcL4WyFtBIsP_i-en+w_B87F7Q4DS$ z$P(gZ`rEst(CMc%i3uakU+?U~{f=%2BBzmQPQpmT`_OT4W`Uo>VZuyYc^x5bvGQz6 z{four^&^}BKMaA#Bp44clgt6Qhv43ibH>;*yF}^}V6sJpX^0}R3MA&xYb)D!vDSXV zFFhAj=kdu2kxPREjg*_FRjcekMK9LOXd8=m$LNvWK!dZO%9h6*c{#ovw-(}9oi!#M zEOQ)HN|!Z_JJhD5U?B2VB#Y6pI4&iWjnP|?H%1Ad%+GRmdI=6+HxW0$$?KdevX{Q0 z6$MUYbLEIAOp4Zi$DIzY$?b+YPt1(1z*OwN z9D4(22ZL4RJ!Zd|;imdqYg)h0r%wNG2I!yX7NAD|f3Ur0#(&$|*1kH@$V?z2^ljb`ZyC#%R-Zj z!hc|xxl58SvKWn??=HvkWsri-=;(GOcM$cjU!VEp)Vs{k6h&|dPl;SlB`^y_SwVUs zE?$RLwc-=Kn}ZPEVQ$>+35d|m=KMW5|j=HuI0Gkze7N0erb>bdAuo+5&#gHWM(9hW`&Kz33}dS?UR1OAd`>|n79 zXuO0m^kW|MK@TJ|@-gsZ;A4!2L?~n=bqR&$gqia;qNxhLVP-B3ax-;!EzEMCp~V@X zN_&dxUJ48@rZCG;$coG^`R;XR030)ncpz5~DPzrP_XjJ&PV;YU)9)d9%j&f3P zk}{-dL=Ucl@CP}}z?d}V@FzEPI)e4`_}`ShG8H>hU5}#R?NsNujaR2kE6~2}syWVu z3F|u)=kImKjC&Su-%TD~Zq@VZ|lRP@;Bisu%@+SqCgr^KnLer#bQA)pP7=wt09^uR6^&YGUkR%diD zmYZxTMr&LeRPT+hCUK6&ko$~yn#Ae-5eG@kpjM{vsF7l2yR&EWXx8=Sev=%H8jP#6 zt;{I5yNsRc1@^`UP&FhH0F7A!l9LA@Er^yPsdsTJ%=<{PgC-FK6c`AFfZY-ku#BsYloR zFg)gotE+TFRlKIBHgWd$_|y|%&Er6{rdvJnm!64f*(9$xV)d!*`C%w=DQER5$Ttbj zwe*oh%*-Znkzx{Ia0>%}f*}z`iOiWNAQ&b0F$KVO>svTTG6?WJ%7YP#hop=jC;13w zV1i-BBKEz8Ii`c7M^hwX*zs={|2hYOpOTWUWV+>yE-)?7T*q{&at&esHiFmt$8%;R zui77U=(8N}jnFMl{${uXBk zlSzNvmIHESP!yV3-O%2UxVrOB4)E!gn>#RzpB13GdC53g;x7ncaIU{;n zGFom;NC9qjI{!FN-TALv&(9qKqQ?GnZ)bnYJpcFiw^rx>G9K;xR|dPqEN}|cAA$+c z`qMTOFij%1*j&EQYe5piYnV-8b~cQY42G7sP7)8$aO|fZ@GuNAXe16c!d_`cFS^nf zel*qAEX>|@?&okYiLRk>1;JqJY83j)V+1>nd^Elh`%Lp7u~v|**^H!I5zU+-WSd$^ z0qL?SJvPU5#Yo!sFw6o-J({oZe~j?KC#tNQIILX^qv!TlS~`ap~&C? zB_xl|P=#lgpSto(2^a4KhbOmAVEp|opji7^lKMj-C%O#Xr3TD(@JoiOTC?5=x?B35p zfFmD|z`Nf2`Eg%M3!0n9%y|+MIqSCs=QoKIgFN88`X}u`scF zWaPM$RbrXwPR?bcM6q~jG0}!mO1uUd378JV+LUM+{=-ah=ia>yK-M%=dQiNr2K~7r z2*Rw~r*`nFwgkpeOXI*A@7%=;wyA5sZOqFS{2=`*LYG$A^NIwHjwDLzaY&g9r3u%8 z61(}0np%>Zu({v{w(!F7mm70qB5f4O@5toyvFsxnusM^G_dE}vGX_xYN$x1mZXN=H$|64de_Zx|49JxxN~Q>;YD1wy`QG`#y7(?b7|sZ@k=kEv~Qpqz@R=J#zg$0;~V1pZ;!g5Qa=qx=` zWL&$CGjyXCTSsC^R}%csg?CJK*uHhM*L=2h8mrGNEgp5ZVthVlJ*g=r^PRedbPpg0 zAx7(ZiT!LKV4ZX?Eiv|GYm>+wlzP8~B=bUCGn3+318LlEyB-vERR_)j1 zN&UQdtjJQzIh2zu;1MmVT6d%TZ^f$K;4ZL~le{V&a8u^FKO3?70AZt_$~y$|pc44U2t*Vun;?d+QOzdL*TtN8y* zd9?dqGN^zJaXVMPHJP<4Zg)gptu^+?cY7JE_pq(oU~%0``%Vk+KQ}8gcM=SJ539r;ntoYs4em~1I@BTl` z()RZMy&Y@+KiFIC|I2u^{hti#qwN1x=`DYtLqJWT`S^!G*(pGsDi=Hg2n@FWlRnk# z|EkWKHg4uY76=t5m+6|bW+Bbqu(Z1D?=_o({PZC>k|T!{V>g7f!s;Zbf9Bo)dCJ{J zM?lT~ztcZ3^MCDbuk1gU^Jx1&AJj)V0?KnV|3C+T?Bq8V1lm0UNUz#D0z?@4w4TpsfMl)+KGF(3s%Drqn zT(-lIn(1C0m74y4{rZeg|HCrSqXg&7Foyg^Pih0C3DI??19}t8-xY>E6iFVolp*{D zOwyD^j4eYb&(q(aAHocCyowiAq|caH8O!KHhK-N3KNQj6?F*UOg~yV`$Wi2&yfl5* zC2;^y&8rHlD)LZRlE!Lo8y5RW(%j4y)6ih)Tc2F3r;TS`{!dDD4LHDB`TxMw|L*Sh zSNz{n9^L;}4C+b=Fh38dbo0m31mr<$T;O9V0wnEM+JJ_SbN>%vN|r+$Ac%V(f(Qk7 zqhx~NS^U4uP-Heo(3<^!cYoiM|F?H{SNs1`9v)KcM%~%L5XLa0vE_Zj{D#!{665(yQU?1c$;Q$ijoO)*G!VT zNeaB_mIu6Rj<;49r+xs{hMlmID4YeHXW^?sz4S4~jtt~cl#cxK$r$YQ9Y&uS1bzmA z>=GkA-T)L|89F)+K?sBFA*WoVi8AWau)3DWMewqt2=D_BSHrsuOCu`P0;#LrTlK>qe60 zHh{ywZ*A{*61ZBPNOVeBA~hcNdOuBjX>pvIl_pu_taJF&^#AwMlp3=-R#@@p9~fqI z_6i~wtyI<{Jix85#i3sN-|#k2ks-eigAwZkGpkj5An4D1HE}YA(r_;UYO7==Yyg}9 zKTR>1(6s2x(y-du`F zOkvWoSp+>odg{d>hG0=(qQ46Rq?3D{P5*hRmWWQFwR*n%rx>J=sBB2kg(Z7l4V3jVQKbq6c0OWhVm2cklN`zgVX_- z#cVyN8X)Q;@{DXq)DXko*%&X(rv=lai8&}f{U#N3+K?4ov{C@YL;ju&0)02hBKC^V zlfI$LnZBa*skF?Soi{+7AJuipjLL^EN`%uoMxzV9P`|YQ=Z_-=E{|?cKx^lWHATcI zs~p8o7879~+8qP_ats(7@c-fMzkD=b=0EmS^Z(mByZifQ{Fnar!HWN1##5=>2w{r5 z_de2884CZM!4TO_HcVF`bql2nQEP$0^1zzC`ik{u=b%v)^a88p zA5nF|B_F55g=Wm! zQ`GKcZUGM z-QC?CX6`)iSNHz9Ro(NWyQ-&V&gpaZUVE*z13KG!O!BkvJ_P*Qf}vFl6t??&*aEGOqMDtK-@} zY_YFoD5GeMT=M}}DVu1+#wa7QPdh=+AjzJg1`9d9p6pkwKSkP{W`4$~2D7!~C_JMi z(rc82HuWZNE~6;OW2N;8djoK$#9jvy5D$A6EhS^B19FL;otw;U@nnDK2gQIV=WCLTs z#+4!^A}cV$FutEWC-@Lw2q>#J9DAKoKi(Orrb2k6wXLMT^)enx>Jkr3Nahxs$0KslbJK=Je*Ix?P95Bz6A?vghT4hV00XGfQs&ET=B=Ebllsi1)ajzM!F5OOs04h9bHH58 zib!`nd{5nLoV2l9O7?55zg9U2+ul)a%jx}hug7mcEDbVPVI_s%a!`X*@B)WlJ?J9jyirj>EU3-=l z!XB=ku^VP7Z7BZDk}%=I%h{(kIc~jHyexbGB{9S=GNnIFf1Fp>Ljz=qOvA>GkmZfE z(INvd`cge9WcD({JpOL!S0w7KZ*4C!G$|c*V03_7h<5_ByY99xaDz?Tz z@!%cQhvsge^jNyLOSt%7#5~wLc)#dZW6XW>zfyN762(aK+#=CX*Yvu0rLCM?z<)pB z?Bit81`)#s+DcPD-CjjWu0k#YO6;8wZ`n5$GmlPygp8XD&;A^lMhAwQr<`Np=m@59 zb4u*JcB=p=W^y+SPlG`O{3HczpC-jW55e;TdVGZFT3>;5~uQPO03-}dmXOG!o zd){M}e)o3yE3)WFlP}U3O`+x=CXN4iN^!DtW&BlAaHca@0#b&fx1?2KA^k_dvY!Qh z{5MuB5*2L_lufb(>pBGA5SHC5(u+E&qd#=O9D4c!0dAC2@Jt>*KklCySOf z|3@He)(X1uJ$kl8pktg-Z}4Oy5Cz!;!#NE1p4X+p8RxBCTjGT0kRt?=sM`*U=|6 z3Rb0l?}k)t%&Y(D+SB#Msl0Sc{Yb`M{D(Wy;E<4WTQRho zk0-rP70MzWIwo~D%FEZidovO#iQ~mLJc;lzIrs0K5>PsZJBIc>JU}9dhK0`Y9P|O&d+nz%U1Ch;$56n5Eo|N zwE=KB@w5LBaFw|n|1llJqzQB?2LGi_6rjqZgvC1%t|wP|h@4>N2z@%5^vsb{*KQ;o z*fTYz6Nq1tw{a@0SjY+~qKeN#;f02R33aOAQ>RM`?dWGS4SeMd74dO;NbU?yYKTYX z{a8O5o*Vds*X>_Fb>b2Dnzb8jH=A+Y>LfWQE`W*5JCqND{rwp7F8A*io0o6IpR=`I z25L=w)reXBo>VA$$|65y8C`lmt0S=LrNj?`pGNh4F)2CE32ZwA`*{# zdBEeXh!>it;;WOF9W{vQ@Rj6H1V^h(?#&IBL|5TSJ=Zyd>Xi#)eqf!09){LayXyP_ zl>GQ19(kr*Nc7YHS|D}Xo#zP76)CO>gTfZ($DH?Axt*R+T%du*=Es|6;x2hspr9{V zN-~y{|(^!|{jk_FxBkmybZ}n*uYhz11NhpTKC4-rw&$N$SE|#+aj! zMpV!FnIZ;=lSy~VR4xqTA0wXa-0YvX$#|CPSfYQUv^x1Z`Hg=}PvlNat7y@m-tLs< zXXk1P;>I$l= z)bNBTVyt8Ac*nEQeC8+mQ8U#wqKhf$=}*#^u*!2MAzmnB&xAXk$ss1mAzmW8&m`wV z!@p6yIK;?5>k(Dx@AuMYj1*-)zE`5yJ^|P}kS{+$s=Xkm>#NJmchJ%mJ!nLY#0}I- z1-`j_LZ<&O6c2QZ^3;vGG|q0b>f0r2HHE);u8kWG%n?V;_d=uX)E@ z<(Vn3iFVALh1jHe{MWFNcbb=#AX3TJ0Oye+eT={9YU=Jqyu?2d8!TevL`AoZBjP_4 zr_i_&OkAXB2iS%s!~~xk$tT7(G_Lp;p=>R6;Gz`l=!YPR8)k6`c$LJULpp_g>4UMpJ&$sQ(PGis+d(HsqbESe zp*v@x!R1~B;bKGC9ri+VfP4XVR>dH_fBPFCJxr+8n%7inv1)h*7iVg;nxXzQ-j}8X zze|^VQ1EV)TPCXC0JOp`Tq?G~|%k#bkhJ=ujzP69*hMk(QtkJA9USo}0vW>~S%WgOf!D~DjqtPW0iJj3+ z##4Tw#IHJUz}pq>ioVN@XClO5PZO%DFfRVC7RoRX#`(2c&Y2FEeeoX{^FT6f3Dt}0 zrZ}<6*^_?1p76SgZmi1J@tL z3f@rz8)SN{Gc-EBBf5^gkK&nZ+Q`hEPCxH z0)`6J%&Eo8hzn(h2ep44O>)6atr3^(XCZ>N5@{w$Cz>-6``-A3%vJys+y%`X+TG;L z{M*7_KkfTmfFSP^SmHTPO7AYNoRHKU{4K2vgl4myE0MaX=XR1_T;0y6O$(K za9_xJK!G@W3zHtBLK1_!r7CZ=vy8D=`B7k*fJULOS$nL@a58|`*Q@?gAK0vfM2d-oqw;r zfpgdR5J>=J$_XXcC$Cc-v_R4kaN`t7t?%Bds+YGv!(bP~N`@SW!xZ9++7}>faBeos zBnBSb061oe_4z(p@0v)zH`M6Wv{t`3H@T^r$0Oe`$BSkJd|6em z4h#fux}}wUT#^CxjoBQosLDjY{93T^B5FooBHGph5X-X^N^dH~SDiV4!10W1euETfN+gXkeGfc`Z#6r4xnU!p6p?Ez=;yc-&$GV?>bj8YwkC zs*-p$XG}h^iatKXP;8JK3o4cYG~M`QOdEMptWD7g%p6tD;Y!7&-ug3qB&WEU7yCRq zJ^Z>UJ8E)Me@rK%zsrvF&BBmjl7=@e-7w4vZDD#B-cg@bQb^g?uyC_EeUTXm_sQt+ zsH&wn+y&<}Y05c~`uG#;Tq(TlHtH-1CbTiKhWsxn|0-v($;)IE#|_6V*g}RiIAeZA zhiG-+yHOGZcLRPYkk6Og2$$d!ysv&AWVU_U@3PdR&8Xnk=;NHo;&wuw_b>}DR9<=* z$}W#w;_lSQ#)kPmV)0e&w|qvS324R_&9Gm;;OP>&&nDD*i2CVGTh*V~f9*hjo@Td{ z`<-}^-9SYeCb-1dQ2lbLq_oh)#96|UAL+{4Hz~m_(3RJcL?`h}TNN>PO|2}k1(C;% z6?8EG0s2p$BHV>g44&sWdOWHJ&fGX(rT?&uf9~3dIxDf6Bj3eB+UkC0>cw}udPW9< z(r&rXT|X_wxuNkq$0vK=Q*IO2DtvCZXN=enI-Tyqe8LO*6?FUpO;ld=F`1|Ez61(x z{KcIFsX&pipGLjHo$mrA$NI4yVnirq2r&0x2+b_X9y>;;yD(-);rhz&w*BeLr`mK>FQegyy(347sTM><6S^Y^+fWeEdjj%RfpOL-SNF5 z@+I6hJ)hu4l-$@F6gk)?t2-M0^ARWdnbbmRPx;7wMeio zA}8cCw-D#b$5pOUsGP!VOz?aDN!SM4GEb*{jFfQC#14c%6v{)30%w9wqs+#T!DU4h)9*cae#O2C*tyFxB5%!lGhzHSv1BB)X*%kdVuS5rxy^>ZT?9}IN#iBAAJf(Xw zB)Vu(46igahF7XLgKCXpE(p}QuCmSlKK$}6?tPo=zB9S3>4w0hPr4xYk&q+CcXJ7F zEywID$$D#69H^e!B)u-@1F`Yw>&YOL@qt=B-@qDz&ydCcHh^y+mW3G8hjkN}hjtB8 z^p_)YCe!WBnL3Rq1sPfqnV4-(#BvMV)|W?T6B7N*D^DGae!SoabBZ4jj%_p#d0^@~ zE;UfWvd40pfarNm2=UU;McGw7G(sIo*6jOXX)>{P6r;>}?dh;EK#RiP*$AtdS0tiJ zmp#u;9>`*g@JPUecN{k@_iO%0y%EHM^AaTD@ebO`YX&`|YXM2Ydq*BHJi$wTm-L`! zMeqvxW(7N;>pY7ILxK$I2PZ0Ifu=J&KqY#Df^!P{y5LT{ThNp7+klV9C>*o?vf&7h z3Bivznjiw0e>H)qQk_?X8jbR2KNcV4u`jJoa?~7VNjg}6ntn}j11YD}J@@AyjQukI zdc48(K#MS1`|AL0>L=d9B?!ElfVQ8u`u~?&Oac>7Ufaw^arrP1_6=ay%SRaEFc#F5 zFou&Ulp*FHXFD=vR~-7@m%VJY$bT~%MB2w;6~3-`7$xEzjwa0Xl27VS{UNg)+6|&& zQu1hj{n!1-ElV-Y4k4RzLt%jn(j;DdHiVU5FRvpXLW;jccf`0um5=s8A~p~Y)03^zH?2Ljge?xflCC}I3)4E#wz5VK)hk{ zShqSm0jsI#vV7Fz@yiku+20c(h5S*SW|3_8P9mhYkW9iobUpPmoQ)xxR?(C4-w`k!hu&0VRr`!+X%UEeRM1&*7hmsfeZ--S+kc~l1rJxLd zhuA;eX6-{1o%q~IcV=L13n6F1QBsTSzt8i5!>#YqG@y+w{g#5|Gu3wz2Z!-@-l);M z>*dBpbP^u@?|h*%rUv{8CW`XDjh%EW}w+*z6C5!8OTgi#Z;g!Y`z|&~iboGj5xgqgWAQylTOz8~k-pu9*~eTw7&uzwED%b;aFX zv`b2mSjw8zjfB-fN4PUH{%jXb(*8eV>u^Jb^TLvmgKWTGuZZDIIGqx>-rjz#&r4_w z{o*v`jVOs7>HbiAm)+Xs+6MFF4i=Ou)1#bhJ-Rc);fC;#&2yeQ@O!e8mJiz90OlR3 zy8*8+pC(_neSOy}?*VjR)q@CMFP#45;Rv}hawDxgM!JNvKa##E-n7ZMPANzkKMdUn z;+i*mhsd(GFjgk0f*OOeo8f&ucDZXx6#Ji$J)W8H!CKfi>4qCWT91MydPS5y^1zNFMdht!-45nzts$Mi3>fPTqqjjPl+*m-s3JSpoV_UO(C;=hN5WWi?6+Q}1@ zoBsUqWG>YyVoUW*6ZD^WZ#t~O2g)rs^;Z92bPH*E&?Y|=(*9_0m_;paej@go{|c0| z-U503VY%+K+$yoQ^JHJE>c`W{`{Nu`-|KV+cy7_U1*P9v-{lJ(#2^8< zhrTf&cXZ6PSfAhp7XNx%#v-scReBv1g@OE%$Je_^L~)`+T(H-U8LuRJ*VKX41xW zlaWvnqxZ+7obHAgqU~i{@<>RbyD4EVLtzO*79~K7)o=B2<218cOSX6=iKMK@MJ>hB zXSdyzz*w}pSXEa>ik1t8A!@3iz+4rh8uJTohpeuU@@=^=sQv2MWg1kynd@-=0p?0G z9@kF;Tsmh4UX21gZrrB;s}U{JfWxnr?NE7h4Btt<(rQM#ouMwc9<)gzXfIb{EW^b1 z91$lb@k9YwO zV!6L#_Jm+fIr`=YRfi_{_Y0ZAs!(mxZdR44L-Yo_fB2BHos#jS{TcD@M%!iwgzlGf zd8ePv$bfIkuRs>FZ~B8|A+P(xfDKRZX?O_I`B!uavN9iq#CPk1BkoF<-8&XRiH&+N zpN6R*Q>cSwr!*vYmp8}`F z-ObJ5jH4@6+BQ$u9m;Dmr_}dMKw$oDwzg$pLy5LMFoM(>ZG=R~A@y?e^CyhbeFNvd z?fhPfd*&;-`7l@QUGoR|qMrrK6j5#=HKIhVNcbv7xDUu6xK51P7vQ+J;>cB!3uPB9 zPcC`hwe}k1@XC?)vo~g0!8k)?IhIQ0E>?)(z`UpAizr`Pm>7F_=rwqlX6~2aTV=my zMU*@DePLo%rhg~W#GtrXD!G?ff>5pYp#CFX>yY1EY{kO&qFKo2=U3HFmQph`J0hU| zEt=p{uYQ31(a1+rAM*N_{ST_s-$lpbr8G;T{VS(rt8e9Qy7ZTr=VSIY#$A%cN$h}< z7D`@gije`e2r+p9f&u!Mft-Hah3*ri_!K&GM}X}=7ZJrG_{5>Wi%BxppOGC;X}l3~ zWsL+m-tK~x;@5m_y9!9kyz!6>6aN~_gkhYK%sT3CQA;691gS{Hej=GgBByAf4Vk^? zaUE6~Tg;%V>h)Qde8}n|p2I z=EJh_h0Iea546!5_(|buY}7>8LlOH_J>dscZ*PxT(jL(H7*nc(4`}Ukp)Hf{$i&ptAaZ!{=>HZ-kl}pF{Z3NGfcH z2WL7!)bPF{&azS`e@Vmv=YIbu=?6R2cAq_hY{)bIzXGk_dsMoFB`HO$=B+Rl1A2Uf zh6ca_ef~@;gb#%O^jiJ#dg8Iha9Q3#ylN20M7RyK`d^HZM| zsr_^RQ%$;L6n4!oRJ#AEFQ7+jOHz3b?}9>lQ~Q_L(YY49Nb(65*s9@%z54kvmKyv%us9%-J&_hINV!oXDBmcs8u-L) zB82!B%9A~06JA0a{2ecVEKGQY5PuLl+OjkK^Ga$==tlzCsheZh^$ZUG+n6`Uom(KO zbE5R#4Hc&{JA279C0@);ot*WL7|lo%>^Qy1x3&69)Cw)UOEev=Gva9e${&!M`+YGc zTau^ltub@x)J@NU(xtVfcNV-4br))M5ny~k|5no1V8k?U%ynGKKL0RO-8szNEg zkBytn0#DaFIypw>$FgedN3gujsyI_E;jZByTK;$bpKlWZc44img=-UY^^TG=gf%&C zoM>C!fTIdiuZU}17?k%$7#9aPPhxIb54%teZ$uT8fFo2oDMjW0RnFl7(#a*9YV~D2 z(u4|?Iw?+V$}@(+sw(Hsw;&!ATl(bTj>0G%NtZ(^hZ;d z7<#JI4>V1dR*1LXk_ai23%Z_)#|D}7_BO78GH$KkLD*mkJhW|pwb3t8WzTgUpV_DM zTB?w*$+nj@qzxz>E59rTm){DmtJpQCE(E%5g&EVrtjQdze_gy^nj9@b1&hJB@Nii{V z14Z!RG*f|eu%xoB)KlyHthplqFHc!D@`C{u5EM~!U)>C?MsSTbkLW#(@c9=^9am;Y zP*L)M^^-buY^{6~wpn7qD>AXqF2;jZl-HWAu)q}?W%Jk_Y-;}CpF8&@8ykh;PIRR> z;;eNh{P6?Yey?PJso%(OBkpqnn(I~_1*%xq`Yl!csdCL&(r$}YT#KT^c?Z@bD@vn% zF(agA_|BT!&dlzgZoN^(NRg>R_NuK;T~&O{T&QXsrZh$#dG^3h=oj~$u_H(PI3bcW z%bbS8YfJ94q;Bh=eWqiOGi&fJm1*8&LOE!4ZI$aDKziX&z1PchIQ!CT$97PC6R-y3 z(-50K8`IJ*j0n8d1nMfgZ&mb}dY=KcW@qWEu^=b&qd)Vh>jaR3!4O9b5tPRrXlkh@ z7vz=(vY<=o0X34t`%SF#!B*KkxF{v2x~ddMNduO7rDblP9ktZN70AQJCSxYReP(<4ePEZSu`&9 zIdHX4+`6$UvC{cfI}zHOJ%*i8N0le}$<(@a>|`LyJD^{gXryO4l;1zjh)AaHv$KGHWCnSD0Q$`B!3TNx+JUS1O#8F1BJ2l&34DnmJ*>zl*|N$R z$nMW29#S)l6L*->e6y@`9PO&r3iO9H>>)KKKrD6S$1=LEiowdJk5=CCf6pKyOEau_ zca~aqk-!Yr@0?UJUn3eVLTfic&nWM`mzN=$9|?zoYe0ZH3g2%tw3Xk`!e=ogFlp*% zVcsLG%JyUHBPH%bTdyi$W2c)p2^UCF<5gP0Iu7#r~TSzlXnr@sqDQ^`) zU-g)JQYi~eLCO@FuYLrAmcZ-o0C070{j~N8R4n)gG(veD(DR2pJ9WIUC0*P4i@oDn zQYyVNns(%_SbJBn+hVYjLSw?mUQ_KW#`q_B9kpy_Bnvj1?=oEtqmJXxlSK@2usFlG?)QicHx{*%bKs9oeEesLQ^69X`4mu zoMB*~%wDH-&3Lu*Jpv>Z)rPC5nL5Ff(WU#8nz<*X_uyGuz$mIt%-tWn zcaq$|sqUrp^1G?_uNlIK`C%ykZDmz2XY;S6bnwV4(ZY0#4ogo=(V_dNM9_dapW&4l zQIP1gapX}&KOK}Z#6dN?pxXZVD(k@;`-{mV zo^skp28}AaUz-xgNyLb3?EQqaOMHLTo^kHy^wLyMIcR;$U=zf6ID620M{cA~#2EAu z8a6mb(#%8;_fM2jQiJgqY_@xW>0_qL{<>u8&L3-9o_V?u>2U2F8v%7k0>)M{(zyC=`SQ?U;$pl9L_s!K-)9vN%{22jliypb*K>k zybI4*c=rVQRhJcn1du5<6cRaxS8_17o95aZfnF(m?vX#dom6cQ1ua6e1|4=(EsCue z0$}lt&x~8o2qOAB-m!81ExpUvfueqhVOjvj?ofdI9@YM~<4NC{5l+eO<^hf++XVSl z;U6A3XC>4Xps9INT=@(! z16f646K7dH!)nEYo(CTpvbuf^6V=B=I35l+1aqSuY!Dpxa-sk5^h(nUbB^LzK9EZJ ze^MbNUt5B=bpAUZAAfy9&0cwWeH?5enrSXBA~VD9kliwAzP4c=f*c$ptlJR%2yk97 zlSod7)6`<1%C6F1I@z`Ju}#>l0*-d~NCO&cah>JH1PP>)Ns4$8PInha`^7)CjTP5e z2(gdG`+83&AM-*mTS&&{cI+BB&nw#8_V^l>AIZs`Vgwl6G6-K(-Ou5@z6q9ubzEY5 z>r7@ria@dC!U_IrwmaqIE$+Y)A0#_Q(hYr{;^2fc5@qBwvBSY8437}5pZ5@RM`o4p z%Zil92oToAIEI?|>im~=G*Y4m<1f_c*BjL2pMl|=6vN`Q49@9+T;2GBVynS2xW?&$ zZi0Qth4SQ#km^Y(R^;Zei6aBcf_4PH6xCQT+q3HQAUE=|XE8^{1ZHxebWq$w^BHrTiT@^(Iq67aGof6u@@OpC4!7lVPRS{#L%|+v>&;q!2^Q~-DG@+;L zQ6(QULd`%rd%$GZYt1N))O7TA>PAAA2*rDXKioeXT**ss9Mj)V>auaK94noTILnWE zK2-aycV7P_*<7NMOR6as$ImZV8{m(`KgFmfY$3g>HYX{L-QfICapV1Bh(7%0e2n~y`1#>9DOJS7(kc>Vje3e_8%wn(K|O1P0G#Hq zpm~A0K!*$J3t#=qbn0Ao+1mk~?%+srqApo+u4wZD*#b*vBwptD`MVC2tOpP04DJ+5 zF3Mj}qH6J63z43>?}u1*S4oS8wh}mh8lHKY<%(ESQX8NQO#-}NBW~siMbM@C-t)aa z|Fb*jdiR)2k<=rnoLu!n9>ZakX{cA8{_6$s`3wmO5fO@OBHdg)5QvLFux5|YaHXsn-1sv5aDCMpvJ<76~{?8 zN9<00X795zcT|>DTm9-mrz=@mo}Yl@m<~Z_lhM1D`jo_3wv_u7uX&V9xev>N*3y&w zxuyB*P2QF|3y4i&Nn{x219ZPM*(e)u9xFHr7vSZ5PQ;#327RfW4XasQV z$CnrOjgDmC|DUiDR?zBg@oP_|sGu^$c*^%I^!z%5=KvfiqSv1=TaQ~jXW30xM6aue zOqD*J2d^Ov0%N+Tb#D7mP;mrb%Zzy@8G3_>k~c5HoY#t8U1TTY#of-o&Se^J)!YA@ zcooq5vA<4>cxA7)GXuR9`N5JGpUbCbTP{wn-eB!8A%&~!K{N27#@T{rQDx6UTeLil zj=Smt=YNJtz3tuijxDM3DiPq**QpdNkc}xt%!(>29gNql9{!x#lTo+8dOylZpM(Ed z_EVSuHLcx(5Hd6hB^jGJd?Q(q6X~WFhPpfN?eTpt_54-DMf&;YtI?Z32T&g1>kAH0 zz(Jh|+rnjoKXyi!a@;LL#~k-LPdIsYEK`XSY7t<)>UZ(OPBRyGVy_*BSSJjvgD$k} z_CzYcViID`7p-Qtcb6RR&^sFa|8?M?{>gHln{U*!DSYa1n)hB&)Lx^$zVvjq@Qp(y+pFZrrW$*F1lzcO~e{EH6{o1-V#_Th}weLQ&hiJq) zGbr3bJ?j?l<|%s?NVfPw=ZF7F3uonm7QqTl3)hOyw=47`3!Hn>xxdjVn&KVrJx(!i zTxSY?f7Q{=`ST|sOgAyVz`O@NnO5!!kys+a;9KP%I7%%y97$(nzoqIC72suekl8@` zL_c1a8QB&gV}Jfu{uZ3EaU8SCk{+Xazn_}|zp-IY;4|x(dFjef38|!AM79Sr%ZTqp zK)vMy3$vvPGZ8TUCcK7R&l@KsSQ?JX7=1FQNFY9XCCHt?-I z7?(AUU-JHE&DQ7|3uLt9#F%BbD;rP8kyE0=-i!tE*maZ2iw$(uuq<~;fziM=mds?w zn1PPwT=n)FUdL}whZ@gcn2tE4D%NHaDa1pr@_8Zcyz9IEw~ny@%`jp3eX;=d{um(7a(& z^^I(4(2PaXwQc#eY%V7zJV?ruAQ>pLH++Tmi`vi@mwF;a#tZh4&A6_>hriGt z4HB`D;+_68qpgBv9cQsMh6#X4Fi9_hMEW3_!WJ&HF1-x=+7(l2{q_Gl#^Y)FTk^lx z;E)6IYoX+-z(-U3Ka2>aA$M8W?p>fm;d>5D-lj&_7_t`&%BRPYKsLP7^y0Wdt zoVrV&54khqlHB+aT2*y7phKP-OjR6V5Sm=9Wm$C*@DBB7EE=Ef-+6oeT;eI36a}K# ztWe)uX+0Kyop)yASNDJI)bdp9WGk@2h*K$S@?(uEUSZ{-TYGRSgcv}(3ctf_YLVRx z!)~P3P!mQ{P(uLA(&fqS`tzpg63s2bo2sx+o5H|69g++*<7QI98qIa0<+2<1OPrDXr)&nAC#`2Oa<_+;%2WK+&sKJhF}>`rr8_)j<5xzTYo4cH@|!KtlM%=3 zuNZ}NXyz8on3ss+w)UhOyR-S*hWJt8X?>5T5|AIK{VqBu#U|+R>Xw(~= zt(3%kH*V-mwpFm8aXWdrg_gEPIlIot3AI^Y5RJGVCATY~nP+GtLW=!L;1uTXg34K& zY}6}jOc%ZI)bvMtn(;A1r$g{pG6-QA(`C4v$%riIGu)qvMZKSF~!xGpMEWu z1L?#N;YeEy8FO4cFMWtHf%RsUkzUqHbM)7jaSKztcDg=$IEC?dNw;yXnjYtC12C^+ zW0dOtg6&2$8FD)C(gA|hj5AiJhEEtfE-vg!$~B=mYSmqeM~3o=_JOY8hZ)?W{dCV$ ziGTzCciRgo`wT0M2oqc)wzrgIOt6*f&*L8==is`7n8=m=54T(--rQ$wuVcS=PKG%> zj0QBcpsfuKYDezgir)fqXYe0a-!EFV6WuXAr-!YKck3_!`u!k_l(Mvk+U8pkw5R9E zkJ`!?Qh6Uv;B|EDPhS+$Tu}z$=|3a;gc!5o1onmh(u{(3#^3yF8t7c$PfJfU(-qX_ zSzO^XknmW#92c~izAVp) zovhO;?Oom+sTPX?^rj>FWI3zvH9apg&o31h;69?kQA{I*2avQAe(4oZ*WAhv2JcSZ zNQL*9&ir_XuyJ?DWXEFz{dr?bG{i!k$j|XVc*XEh&J*a`(J>%cghWA?srF)ORavcH zpaMAu7HF@eh7em-zC$6{D0~YL$y6X)*^|c4uD181{BvyDA{h#mRuac66lYH?z_H*?f5hH~6 zFG!4F-$e~%!Sjc@Cx}j3?qBT54Pp-%vmP-O7+R&~lX zXmUG8#6Z}e;9HS)SkPqpA4t^((aIo@k+(8|+c6hW&x_Ixzd*s0hU8zUMO5+&>tBn6 zAT%h!u_h8W9wz$>`8(E`E9amHVLG8frP^--D_Oe3<&SFL)O1z^v1QuNz zi+bOalXH43^XkJaq`t_@E$;}Q>O%6-{Rf}IbB}X zT!Cxrbz9#$rS{bg(4gzHwR1Ah-FVqhd6*v0LFCHn0VhhOaGUzV zjZU{m`gz>1800#I-iMxPMj|$A`Or`+a^1o;;fY7!k2t*sgx5=vN!#vzoU?$nruoRU z93)&=wb{_&spW!N_Edbfdqjv?dMWurWf5adjIJSThTc3&2494&5r`sqjB8++Yc2+A zIj>%(`Qp<2;Q0n{} z3l1Z0KJyLyoYa(WP99lA@vnxbppe=GERC_t+{&PWjw>IRQ;n+a5c&3|>8CTx^U1-O z3RwtrWrzWn4fg})Mh-d=3cxuc8qC)16oqhrI5iCfIkb$7F9nw8l=64+#s%bS|ffr2BTPhm#^a5sIOa1t^CDeW{?isEsYJ( z^hv=jEDY!K$T*bYpR`?J4)Wj*TR$wYjz6xyQl&Zah&9t*iT(&0F4CcQLSb%)@<2to z3}oYucO0#^oaCQc*7+AtBq{;SB+g@FB0pu*?;}6{9A6MSh4kVw1wf{xj@mUTu+3DZvfmgX` z`%A^D`qkLWyBD^@LNxy=(mPLDW5TW(7us5I)XmlG7;S2zfeEef- zA!kLS8mi2v+U%~W^+TyjBKZ|OhP}DSeYQYAWp87r*&*NuxDa)3{Q=O!4UCO5ynw4K zM}P>VgNgLd>~{LuYE`ts{@#1Qnp-2}pB2Qne8bts#$HMyjhQoeaWMzIbv}d+xTO?9 zGd`lT;=WN5Ib@CbJjtnuKb&rqw+h#|f8a^}lbuhk+lV=xOVUiSS7=}HP%$gnIsg!5 zg^j;}Wplp~;@@4^T4gtHekdDHKpUHltGo;?NWg|&vY!)(_B=8(CrTuk{_tUx;}ht& zQNyr-t<(wY%HCJ)^FB4U+w3Yfo}9E8#X?J|)41Hpgi^|qYVBAwEg)!K=qsbwI!c`4 zEQ6Y}ubi_sl3w5%)^~ZTZc{nzs<2RXVkC%gX{a1GMU^8DDYc#PPdh>5ryQv=!f!r@ zrRB0k=7rMgTlt{r2{c8(@)EtZoqs^UBCW`Ql7z>-L)IX$Jt3gAwcZMXtDht;$O8Nh z6s(OgX8SD8_zm%j5Fbp`+`;EJ_JnAM*1@Z%n6yE+PPcX=cfceRY-Y-aptLQ)M%LKz zji3{C6*8mcaN&Ts&H{r%k#$O@S0Pifg!UIt;~2X9<_;0co}Yjo;`2+{I)S9&`n;M2 z%+bS7?#F}}M=Pv6+s!)|qTju%THm9>_S#!>oT^Py($E7?a>t7q*Hg^II@KfCrj7~fj`ePK;ZTZ?$v;S}J z?V0hvcKX|^_#aDojQw8>ZyQ^_fc4aN`2z39X8S}-t_+m}e|%ZBtt*~vxgXrAyZSYX zhY`FcuRY*hQje&Ui64nKT+LU!s!ndHpu*dlecRW2I^%vX8Z8iUZuoi|Y^N_!pTX;$ z10qMIVV+>8GAhc>Y*A8FEnMNr02ZY1D@<`54Lf>QHswg)3X&m5On==HbB&g)nu=wU z@$7QC>(PJqJ#*ezGmW+4m}T?Rbk;dWA-D|l=?f}_aWq?yzP|l4>-nEfZX<+8=ShAA z{qW%^3^Ryvb)KL)`ESe8|LkwC;{Pw_G0y+8;cewcwgmQ5;}6RF(XJr4#v39HIB#uL zr_A~4Lk0Hh=iH`;Y6r;SE7+ACa@AUW0 z{eO3Nd*%PTl*icrui5YdF}`i=`^J=cYTLbq{$oppMuYlx?TfcH%06DsRQDkm=hXiG zJc(hQ+$Y;opv^A&8QqzYFIQWZ2sy<+qa7yy$u8*qgddep3R(2N)r}0>6D=u)R_g{F zsBX5yM<+*Pm`tdVRhR#L4TB^OU0$7N0BrwV4!~tTEk6q9UH;SI`dVsUWI%{r|!Cj(PrX9jx>} zOL>g*zwowimjNi|&6DH+RP@_o0ai!;U+Bnh&-}6FGkDJZ|J)zLw(S46clY-#`~Ow^ zpXEFy`#%}q$2kF5bdo202B_gx+Pdm>WRp^xtMr+4MGH|Y(;#))xT=Bbx~BVNA)Tsq zo~aO}dr~RBs)xeroLlIeds4^Tx0GzZ+avb7er7!XBPDECTj&2y-#-6$4_5ZyOL>g* zUk%IF?)e{S0pFhB`LB1NT}7};_Gf++C4rwq^`(f9$8Y_VbGNdz5^a}RkFCz*_T)~> zJV2cx%%fX>)6A{A0r2Z&k_GU}kB7{RyX;$uQTJS~q)&kbcm(D4_riUAdmiw|uMvDUWvk^8tUHh^!oV8?m4(Kz*Bt zsXAVc$k5_TX&6<-_2h*DKZ+prdT5KGQvEiA?(^TvNjx7Faauc9O*>i&VyIb5C4^+ z9A3l$^w@85sK4>!2T%EI{wBpQldy<$r?7IRof{`1tZ}!sTxV$=s|VH2vp-?YBT>QU zC4h0BJ=A;7iW#PQ(Ar2)?3_NdEW8ax{z*o&Sv|8p)#pF|<2dp$p2_4>duq=A-JNao z{NL*Duk1gT@+jy3H5+U|M;lN(zD1;d2CZvOq3?cN&0%PdM7-aC{1mYaUL*RqUw^Y-g zOmYyA1{4t2$49SEH~;(B>jD&Mk1A9EhD0U=dZuFZ>6nbfF&iC=d>r=r^Nxgm{pOds zp^tB`jRwH_=_h}jMi2~=jDj0X@<|3eMX$hVgduN{kuO6-6#J1RtBN&~+i4Xv0QV61 z83ZT>ehhSMHh>@9`wv)!Y|Ife+%HIg6>%AR#S) zz{gOQiIaSU;^8yE7QdXM692;&z*Cn1(&G|ph-!S4_T^9{#4oF==g2pLcaVv_=4{DA z_XY6&^#1gWw0NAr1e7wtt3V1K*x+rO&H0*0hC1h`*l{<5PA$CO$$q@oCW~YWT`>(S zs7428zRo&XWLW4|%iD9#0B3-TXZk=k!qmmGFFc;@kEUb9T%kH1WwdI@TDi^W3$+%# zYFJLJ3;{9FhGQk4%=1+9|I5h#-rwFo*t7D#@9(bo|7ARq|8M86FNGOKIEV2!%>SNF zgIRLFm!aHpn76guNW+{?0}pugXgEQc2fTQIJ>ZQJoL~C+$O9hw^frkmGz&V0K?ZXV zcma(KHTF{vcp;pk0GeshYZ9R6dfsLG__{3U(If$SRq(ca=Je;YX33|7m@`FwX-D13 z!pRJ7ElK`oD<$gx$KKm6H*zD3g7-I{0$Zbwk$NTSTRNfZ_Pw%Nwl&)=DJ0n*pScqr zunHvME*8oFD7D7!jd_iYIOpZ&NjC6R1)xwLq$qZ`%?gKGtO62=L?SbhNF=^LyIas4 zypQ=un|t>$pJnd(sLnd6mdP$^E`qZZ;t9Aj`tqZ4&I06ri~g5=mR&A-Ji8^(qW=$f zeEq+-dwjIN(*MhNbijdfz0|Py0=$4BMhbWW8>G~NJb-FSP8mwXpA=;YQa++o+>;HTayJ% z!1_D%$U?9x$y{BIv0|kfVysMWGZOAFAk_JAnx<76)P%NqKB=HTGp~&<>)eypz6mUw zhN<}Gw;+gqi~os25~1Q>F=c%q>ZqaQbN{o~O6?vv@VAi-`>V}}%p{F)XOnY>T?z*% zRiaH4(m%`dt8(ht)>+%pgklCNA>Xv`q#BD163%f1(VTjHVvUM@9^oi_c+!MMWEtUd z{+FGz-z}$yR*R8?Q>Cxgx6U1wKUt3Alg_w5d3&&<-1K_qHz&EWAM6hRRs_aLC!s%Y z2-i zZK>L`AQk_+a=QCdAha-Yy^W_+PJlCDKm#Zli37E#FeFrtAFyXFq)1*t;a*4~BL(Ee z6wZap74$UTnYZR`?zyHG)xo&)^zlbAyQK+gX0p|%ZSs&I%EmaC-JL*=h0*kAI;D)x zqIu1Z(G1<#ehE&K1TZo|YDQ8tf;7R|2t14-2QXGfyQ1}w&`I@FlI8KxGC?^yS|;MW zHdxOgzDx(BJANWprTVn_U&x^6nfB2brIS7zZ;uIi7oC8dqAi>;4#f&u{Fvq=3KQfP z-FiTHH0IF>i1wq(#{{K_qb+sCc60*dOE!&TDd#o^XhXigVLN{}BpX(*MN3;i|(+^_73CgH-YKQ>rd_;pjatjdME9PT3{NZV2Hg%8%xL`;H-c0(Od*G0for zr}AQ?6Kj$smRa607&r!a|fe1pPqodot>SD^>TtHL=bQ98(h$n3|v6>C_~Hvr8pVAN3ji` zOeQd^^ecwkd$Y|a`SuvWl#d@v;v$&fCA1?Md73|KE0wxiV0(bGZ8o;vY?;;|9WlG; zZ&m{+9upAV3Y=wpsIOaoCWC&zAK9HD(|GJ6Re^Wv$n2ONl`qsUWgmMfK{eOb&eV1szoP%fyF zis~aurnzJFc*3NglcYan-^g-JNREOfoMv7%m2Aed3z?|EoZ)-l^0I)u0@2o57)njs z+bx@GVwqg*yfKjF5hF43W zCrVN9;e&G6SXfu;gWrDBxPL8ms4zY%7*CmaBVhy(Rn=_*!XXzb=WlDO4}YJbMoVvN zKt(f*^i?4-TEqAv<`V(4QV~2ICZLL7+&p^^L?)O?1s!6#NFnQb6*a=#1Zs2yEq{ zw{=`t(o^xELLxv%Yf~oJABA%+P|4ar_Dc5_{eXr8m2KWsO zDVh8TC#iP`K|nJ-e!`ldTn>1vIWtEe2z{3ln1IMzFGMyDpNY@B!T&4w$906olU%?p z{@=a*!+qcXdvvgh|5?i8#Q(^%aeBY|2gBt$dZwcX*k+n?u5Z5tXJWCB%x0&XiYKRp zlUSMZ(U|kx4W$_qCf%RW?%r{Kr@zzRbw1~Ws?P@p`_6|cO)ICB)^d`ZUA(?g@Q(NT zyGH`#_U@5WirvR6DNQV(JhoQ?uv;l)`Ml*@z;hWR6^mt@6J{ZvqLp?Fa_HmY0s%i%XJB^$KuuD>Em6 ze%&#n)}fXo8ysh6q^}K|y0{l;2fuH>1YaW_j}=%qi&Yi+tA@R4IXjD-k%V&AFEaJ$ zL1g!_j?D5&S%z$gLT2p!VjB$|dj&>9hx&jeB2FKiz6&xVP2lNdfT-8^T!D6)k}&Hc z%nN#&`58zI=1$C3nrcWTHP@P^v8IEuB@7x~qmGP`G?45nrfex$9D?|vLN+822qn_r zYxZnR^hSc-SE~qA81V1fwkMS=(joLoNHD2$#E6;0x~6|JM`j1vnFo+efOG1K;? zWlMJoe;Izi^}?R=btnY3S^OZo5Y=YxS%5-;S8JO1g27-qCgh!9n3Rxr(;P(iyAg=g zW$SO{!GIE_sH_pyg=krknC6^zMu62+HIh%BIIZI3c1}+Wn5LjO?ZX25Ork35+MlSp zW4ER-__hFp8L!Y;yIT$E)>W&0%+bV-T@!VK(Vn8XiE>_-qECW~63AgxTjMR_FjUJ# zyaj6(>F!LEE~u(6Q78kPazw2`+j?2=QnJDIGoLG+vNFRS8shghCv8RDU<8Kem0Yr( z=DA>U=gV4!gQ_#4{e9?d{T}I*A(dAFQ^og^og6qpBv0x|MhY>svsQ1#50?3am(ES$l!$uUtb5 z*Xr5E64Za}v_NVGL?~F7Sy?4SQ&pp|p~V-SK0RHxGYchdo)8RCfjq;$N$JT-2LS2II0DdvBQaYB8t#;-94SiN?1 z!3L(CJ4VH}#n(7XfJ~0V3BZ#)MH7^9AhAghM{#-VwT|fvl;bXhw+r=8udlzmdE-+< zaZjfj0jEGib7u6~2eq-k?+Z6ET+YVDG=>JoPbBvPb{6n(9=a9cgy{ir0=43%{^ zqO!xExaa-TcpCiw+M)4Nj3^gE5%TBB|F^q)xa*()UB!Pd>9PF((xjJ55|buRJCe^3 z<+E-BAjwFNj;+*bw?kD9Ztr9^RBRMDDY zcW_u9QpCg>*mvRAAnG*c;p-&Ymo=>P`fD~({my6{URkGVJ0V}B!BX`dwNdAit%s$H^ zfd|CDc#k^Be^FhCRRy>r{{x_X|qX3n2NTV@JRphG)38km9qFWpAPbWf;h$TGs^#? zor9J9|42_4`L7vZM)_~pCM5q2L~9*jUIm2z+p=_{=(nJ*+2Cx!Z?Nhr_)Xj93~vDJ z0;IoL-3IuUPz3lGW-{rkX%$j+Jp(LqYxTk1 z7&8?F!vUM-IiVaS{rXE3oqgdNoixWrZ-bUnJFx31%6u|!fZbXx>1Z@FEWgQsjIS-7 z)`Z%ptK&Mz|9sZ_{{5##{_h`r%8m1Nf`Z(fMJPe*5NBTx$w}2!38}`l3aSKDbdrV+B)hho zlH*bZFe(9W&@+*_n%*a1{RP{I3hFkb^X{ho3Zm5_X)8VzsnVqNByHzcc?B_C)mPHR zReS&|?iNHbB&t`21xwcFBl#rsq8x+HT2YNytxl|_g%zU^9PRK(I2RC01~9h`SI5HK zOB`m>*+}>4>g`269rQmX(|LFP)zj+#tFHfc_E!3TDNmR6pJad;SAU9WLONM~@jQR3 zg@D?%3O6qO6abY4SJm(pu0p7*#x+o$$=g?=>$TV9=~I<#Kc7S7kLTqx$gg~SpWo9# z{u`U-x%_{7yN6Z(-~Q1`{x9RHJ^#&|HQCHdve05oebb9A^CKYiZ>@rjQlFKlnb#bE zz&XmHQ0glBi`Mme%QUiJ6=37;w_LaMF?AYOKi&{L-RD0#60!gcOl1NTd6WVsfK#&31}N|pinOfeTLI=v zXEUG#rR{(pY;+fB2sj<6G+t*46tx;{fgillc)BrAV)nbS28u3qHU~-~%x4c&hqu8X zC`S4jEP~aF{Ez-L=zoevSRN!TQ<=gWsGg#A&xN(fSl1ii=1NvXB{68wNbLgd#6n8~bX zQgV_E=%n>*Q^-gM-~&!m08@Dec_0iO#8Bqt>XL_RZ;+6_sDHsOG@hPTAo;n#Ng5|D z*`W%m+#`yIkKsEnbDegpFOOjNtNT?&nwhdUk}7Od^_vs9d5^Ox3S^x@zgQ?ooK8_y zBfI-;SEdztt%4Y{lp>fsnt?+}ADl^xAbk|HEM5bW#f?3wS5W2Ps#Jm7-{lG9D$z)h z)W*yI<=&#HNDHFk;s-DNedtk%Xn+|O9&Z^6Z>b9)0dRWL0?q?&gS$tR$y*=|xbM{q zC*i{OOL^}^-^WA2+mhFr%HIwzxO1ZdK(|}~Fu(OSk2QD>Kz~30Eb|em3}N!RpaHo@ z*7Y?-CArHj=iC4R^gf4KqAp#HsG480V_WhRxB8RETWU1iK@Ob!F3^aII&0n)sw+1{ zr>8;xGfwi;G=1vrU#9F6HUq(pPLyd%3Z*o)CpA>s__|>Re8$ zla6TE?k1yz;asU2Sh=W_pJAxYnOXXn-ExxWRUbgL;Vw%kS?jZvF%9!ySu9Vs{@e3E z@9z8gA9nT+R{p=GJTut;iXS{t5Ly7Jf)!7ja~qy*{R=xCa(NS;zMow}!1iUx+U`~r z-eBh3hv&BplLT{2GMHW!O>EgYbc(~c?v>@1b57ahZlVfvQrR)C0}e&Ijmp)~%|4n^ zU;^d&ZAH!7u%v}sP0Sa z>c=bx$vQMM3)}ifcsj7HsWLa)hTH5;u$+FigGF|J6FeZm#$=i% zU<~gO_{;6prMDapZb=j@Sa?soR@6N!e_sI(D2G(}FeIkt zfI$r7u(PKWY@&n!`vb*FC~MAhd_KmjqfzkjZ*Vb9U=Fq{46<4$#@cY2rqXRu_*vEr z%QxK#TJ>QR>{9@eDJ%_(_;2 z-3|)lib~Z)ESOLxPj(Tn`i^~wYsT@~1%h!G2lb|w)Ji-R8zmDc-l|=X$Oxl;zaL6O zk4#vDHA_2@y`*tT_W}cbg3x7GxrZPc>w{Zq#>h+HP{zRnCE2LoeFRkJO*e}j511uj z0_nT5Nyx%hL@9s*rd&ufRqIO`Rj3^;VzTC)fvA{Eku~NfnSD9ann0A>2l}s#u0ASn z)m^<)z@Cf+fda;~%*DP5*5XN{5Q)Tp8~TcXz)E5gn&@h11N$%DHlWnSRGn9eLYmf{ zqNcIt$yql&gSCSbvu0{`nURitTRSI9`c+1#e%gL5=Rh(Q_OGyWtfBYhAPdXEnwePi z_ib?2c^4?OOuQ$~t;+n0C$r70rr9;aQn}Sp?2lc+G0p-=5^&RSIOa^rA;^?r@B72F zrOt`4)9tpkZ53{$SY;IrF_{xz`P`IY=C`B~|E)}*zuIN{9Xvt*{{tF~33<2u6HN5o zmN)1gqX)fXJ!>kUw*9|@JwN_u?{If-<^NyC)3_Mae9*6917}@WQ%0@?>%O%tD?fbb z)zmz3BWdg4OYmFZ*Ixn8Q_wG4SxGMQG|&Gy#VF&-wtK$(U;F!&{EvIPtNs6_Je}sh z%?55ZU+aUMy3ULC>1`K3vE3pz-^K8&X_ln=QgHL@#7yg&!bOw6fnTPCqw1WmX>LkW zRd!0#nnpyCx#625Q?i6fsUj^cVXfA*Xb$zM^?@VCR6S|scBrg8IzEIlq9Rx^SC@~= zqT=t9fJk-75H^pSS|F4cEfC5>EzIQQ{MhsAb9tKOKb@xN35g%|(*rg?oU>hn|DP|NQ6u9V-O(h5b4Olgd28Yw={)kalCDQFts}(19uGNvQY%0$&{-LUF#L=#ye zXQPAcnkQMp{c3hYcJFEp9KZK75WwkT3pGlgryShbI#*$Sxs?-1aMc~rg_Ag8ir5V z3P~x$2855FGM099g_RS_>68~iP}g5G`i`@#EoL(`@-~3Qk9-XU>ieL4c2Dhyg!25o zdBSY9T?yU$C~GZge%9FzP7i!ee_|JAv>O~{Sr`#6g55Ms;hkw3pCZ+Y>oS=`lbE{C z!J;(+$45S(G-p8n`Rssh9k6^!v*TY@{#fXjUaHx#FX}E4`8DbEvKM=2>WoYTq9Rr} zi9qzS5(rvxqg6uD)N5_)_Wh-1g@WbkQB~Bqg+jSHC=F4!K^o1xl5|CqwX8H)sy`N@ zQ(Oy5baqP7HA!(?NsyeYw@pNrdq)*YGIGv2K!xUw_``|b*=NTQVUrQMq58-(S z$D|rZzi9uH?YP>oEC7VFdlE}U5gff%3jNJE!Tt_pLjfAei)Fs3HuWXI%&b2aW6ODc zw)}J5d+hORQ^h(?mPG@ce2MO*Hn|vHB9x${J0Cj`=i%cZ^`D=eJ-inqYZy+@`EZD0 zUO9k?V}r29hh#$ji+`@N*Yxpbnzav+Zqf!h&j4A~m!qm}baf}@5i>;sOXHx7 zIG!Lf<+ms%S;9gDES6h1lVZtQaJiM|Af!C$p=1hphaSNfF2v;6$2j+R2_y3DgdQt>fOZ?Z~ z!NIP-|G#&*yW0O>#?xj0-`VuHHWtnI4$)s*UT|x8_pSibw2GI7oL9BMqSbJt`c++rH-p z_ziH1C*U`b;VeNJ2YWLi>&Cp-W9XI(?%h2Z7af0DkAyDZ??W^;>yCc0Lv)K&J{~p9 zmDgp2q2RG~PJV=wv;oY99SayjqlqPz9pPf+zH33pE!-KGKae>Q*8e)?{Ps^VCE3qp zaGRs}+0Os$@9iE|&i}0P|1Iay*>Fhq7cu~1n60au&tRIW8=eh&ob-PEwMkx?>n1F= zX%buII>A{qs8xV2bs|$1iyt!K1A5O*-eQ&RrB~Jy!hpqNluT2ks+nJ69V0pkhJ;Qa z-vkUHFy=gGC)?X7>p$RkI7bPFeL_du;@7q)-tPg?XgsA9W$~lY+NWts9yY<(gbr}B z2?zx@C{JOG`rx(7gCY|@$zpwNtf1sCWWc_~j1&6!22U_o7-rMS08!B;RSFDohS?Y; z;Ab+BU?}1cXD;Yn0hUeU7%?`Srfs0hlHI`XOYj_0jIcG zbyt}ULqdz1a+H211F>Mm90)y)STQDvv@X;=;MpUf2r}Z~k>Rwjt&o3`OpmGgrBjO7 znumcmKIzHEzZJm$TAKeLNQXaG!l^N=Aj2JT+D*GE4$P%`#ga4MJ=HF5@_9=^C5=IS>TR#b`+L! z%oPB`03SZ|ekOyvLZ$=2auk=QR0je76yg3G(5BY`_+!~xpW@SE|0NJjNX8I`-75~dcm8F~ODL##iGIpR@r z(FTd>fNznQ_m(QXA!&-UkxH5=HENjBp0WxR@)h4y!n`$97DnHrK2cbrXd6St)_n+P z57P}79s8SQAxRU9&~k^ewoWvG@4w67J;W&-qym1oI=53gLea*C_6OSEPu%UDnNctY zEZx`Dp|FAU-NK-D=VdmuR4*-rptol6Pn-Tnc}gB9D0_+l(5C;7 z4}Jg7?#|9C|I<<)rT>djUZ4TsaL&>#0IAuTul3FQ{!*-jlB&xv6Fho7Att1iqz$1_e0;#F+hM$GpXSN zn>jh8Fila4*+expf$#BTIterx0xlp!E;mv}_#S0)mn6^(j5)qX75B0jFg(OMQ*|;` zN5SlU9g0$Uos@ti%196N9hNtd>iY=DKcikSaT za1YZdDlRzB3B$6!jxp_ni=n(cLv0CdmitN!Wau8z5?TV1slri3uE^~pp6ZUC4mqM< z>p?mJcXw|>A3!RYNRcANLnODU$Php|Ph@w;kd=dt-lKRb>9wv8RG%rnL4Z(s6%9%@ z`s%tHEb5^&5vVi7H|vlCaHxVyk!)1A#WwX7$|%JnEVPmi$DMLAfgHzBaAAT(+esh% zFh*Gc0t@~ZY_C6W%H-0bfAM3SA~2dl3Nwxn1M8?i>WemEivNiy+bC{88Iz1q0lLze zX{NfPTYDhcpLqjnA!3Nm{1Z`9LK&c#Oi-n}8VbOZ2}&^JD1FrQ!n`0=AKW<&z%(Dj ztrXp(RGLSasSAR1m%!jrCSyeAHac~oj6~(`?u|P*Lj?JhB3DGbB?&q)L$80!jTJSq z#^eE9lf;%OKwdRKVf;>#go7AnqJRImB-urlp!X>G2UyoO;D%tPf0)-ZEe)P)Gt-h; z9j$t+hG*E@uw2{T{_>3Gy^BD=!gn={XRp~GExY|tZD6`AQrW$9IL2B>m242XaH<=E zHdmDpGAvV>I=V$vwEOzuL$6jqdX3b{Dr;wSZ^sYfwCV?ykIeEM)=J@M!bJfpOWFogrtW8> zC`+^fbxo3))TQh|cP&`2Nk4q(=>#mNaZIL}JO?AiT0I%XgsWDXYcVARtFXQVkXr}j z9eIbc4u~{WpBE)M&4fXHmO{ol(!;MZZ_}1qYOoeWi+BP@=z5w8eMb?WGt7lkJdq81 z;H)&Qpznkt`!>gzFn)=+V9gG6vP#cOA_3z1;&sQyt}kBC+YlQ=imoXUi|0!xe|gK? z2-TYx31#DJ=6-{-cdP>j)kN=A>jIYlrzBN^iq;*8J7 z%og6YfS;igLI$0t7_#QmF>CPW zbd4w`i88$JJmLH&@O7+=I|jyPZ5)y4wTh&1810@IbCtzbnT8)Ye`+|!qE35 zolc%E6*U;ckrg&x`DH%$r^WxnIOJ$JO`jA2-gf?P=b#e*wR^bo|19N^&YoL6$_tGE z_gLqT7y)LHU>PA`6^eg4vEr*hutf%fDc?h}X0_|fgc_elK>gM;$BgBWax5<;`CSK% zmEA0_;L~qfkSWToqUu*q&C_iEl^6dMsUW_e{Yt2|`2XEQ|NP(n(atLVZz+$H|Dhb) zMP`Bc-num&Z zfD!P3fR^Pda#99diq#BJGkunW|Fh2Ll_l{BKi&0zaSnNA3!qK^@A&y2_YQVB*H ze7^tx(Lw+3?eBQ{fA4sAmH%fcPjUW#!HR$7_wR5jccDIir^}wh-}zSY_E%~)`Rkp+ z<|<5cO4UBH+M?U4&U+iOZwzRlo1koOqW$_m^h>2fWmhUY^}b8r=9#jv?b)yI zA~XGCi0k_f{r;C{;!WrO?jzN3qi*B*={7vA8Vkj<%`RJ69Ls;Y>wg_xHpd1)>-zt2 zzq0<{U+Mp)JeBy*1=|5uOyVEL15nfFPu2ynyj=jB(N;cyPCkG-lC7Kot7idEcl~c( z&h7+g)Bgv12Y&qD@zHAke<_bt??33F1z$mi<3*bQImHu5A8l2*CI!kYIXS8@>;R~X z409~Am6^yUE2?R24B54+FXXp>vyS+DF3u18v@8ZqQD?y!=^ABA+VOg3EBi} zMG2wQ^_@7yJ4-tVjE5yW%yhP~0(7aJ3JRDK-hxkFU2iM%(q|kw$|JJ2lq0$3i;CE@ z_FKyfG~`YBs?pZ_g^Qls7YsknqFn;qalL-+m_AI?$XQ#3Edx~;XP8Hz-?==@^YpQ(@JF4j&+ydGe?jrZ zNPw34e{gv0&;O&H-JR9^U&bTn{~H1mVXmZrsT3BhcX=8)i70lQ_RljmrB>QukRz%u2xq`bUIK-Q zCUNylkmj?&0P$qa|;it)EFUuPTLNg2yp(hXHlOVa|P91n2}Ihv^r7Q+--l{+-0^5f0ciq6p2 z3j1OLM+jU`(^NOZW@@LB60k#O z;3DIQ4q-eS6Cho^sNJDSW6#gjkg@i=56oNx(gFPS_p=Q|e&1yra5kcd&B(K=P6z1U zK#m^ZBRIXj05@bh<4mWbMwe#3B^3Wt2;o%boIRa#BBcbKtzY9Dc4$ne!jz}_9%q7| z*)=<~l#}E&W^^hq#{O!WjAoQ!f%+X=x*En6@4@yeOnS;`rT|Oc`20!zHjzZ8MV61+*%_)U|hmMwoF#!BsBWBy^Tmia9}auAM z_j%R@vkY-ICWOySI#Y30!kK!F$ek*kkw6XykRk8@F}IyYoTwCiowzAMIqM4u5m*DC zsP)%i|4B8t6#wte!Jcpb9qsI{&VMfDX|w9IHPpIKqb;)>Q6>a+7Na+qb=%_6RTHEx zRG6(6GxspeR!w_GoNAxs{Cw`GGXJ%8xc!s0qJE+nXp8^a-8-z@|9Y^B|60mpc}3KX zm)5ZB*k@L%=D}m?~I6)g=J=6Va&2K9^RK&upZB*m9)_xM$3Y_d7Ms|adZmi3Rq&lRl?H0s(1xys# zi~Fq?_mTCf1GH|asGXxbE%|0aCW_OkSdC!DrigAC;hA(NN^peY6f)*c7%OMCyhKg& ze}P(LmA;VJ=&$|C2M~>k)aB~C`~f1D2MI$HzdOFKTsH>tDNC^d6Xln7oIoX6lA>5#vXj|5dbm^L7 zzQs8moXHrBNL4ddKtN%lBF@+;>1zTTuW-<`M9&JCmiMvixS4n85&TU<{yV@K_(Hbz zLY*cShz}5uc|)}#stb}1Y9`%(({;uv&PGw$HP5aod(88+{JB<*u~s*k=PAIvxX~K| z1%Fco$bbPMsc-j~BiaUZ#OV}Oqnd3@O!TrxavzXnkVZ%@3$;+sG54~3WLt!qPrVYC za~r-cEXz(S+l|F zR*#wu&Ew}f{w;xl=t_z^1+cKWl>D-q+Hi^AXv2wlsf|SA{%h$-KPMy=RvLfIQ3N9T z5P@I{0;>v)W0doos~HhfEmgQlPL+i~>efNxcW_?3)x{e<|97bylEF1(azaLt?J!!u>?w$FKH)BCr8|1B0W31jS8E z;X`(YSHrSyD_Iw6JULDCF}$2kz|kJqs2@5Fn{lbb*DWHK8=fcI+b`}?YF72t^wl!| zUaJ5{!KjgniXjsS3@MrX2q$SpMB6yjdsX_53!R=<>NX>kj(sX8$(6m&8 zj3<$rm64nak(m>b;k?LV!brbRKg5tniW^#pRv`Hlnn|?lX;y8chGaqQ6;qTjTVk#k z3{f`=n&6aV?Ow;FfA@N!f$Cn{9?|Z#tf2=1FI-uELNd&WSPS@LUt3VGuC7V)R=oq2 z(~@h-R?tz10?#(y*F_5>L$km7sV|ytlZYD?+2Es9WoLt8m7o0<9By{|SLwe;yQ-mB zN2;5vXCW5pLaYjAGf|6lrIt?yOA6G!YOph%AD^8Uw88&p0%M=-1Z+G1wX*i1^{rdV|Any1izyuBkD9w*(fb@`$yEWlO1MD2OTSVemxhh( ztID2jmF6}3xZ5wmHKId8C!kD}q}(*Xm8%Sl;k_7x34AZNKR}AI5g&`;*gM>>?D%(* zarf1HdRpXJ-HTL1k!Yqu_4;OtIUZ=FF=<~H=o7@DSkKP@97HiprKwqptZ1V$9Jffh z&LoLjS-mtb?S`r}to0n*)hbT+$~+W$RC+Uo&{RqHtqg>{D<5S5EHEy$)!L|J&Q!^YXv#9PX|5|CjQpp!~`i?}aS{0_VSHS`Y;4SM7N$ zQMQbDd8qi@uiD`dgHTUZ#&6S8vi*%vS}862FUbRVK*|U(SsfC9O#^HbP<0r#)Cc8u zkKNHMLGL%kzotu8r}6trkC{@IQ>sp;xhopi(v#gP2~=k|mMz090r`{*+Zt!Uy*_q` zM{X*+8l|amvNAe8iKkKj%WOMOj{$5u|8sb} zRFY1b@CDcg=$Al% zh$?=N4UmjkU*l_hFYQkC)V{=6^EG2 zF~dn!5_N1tpD73mjJ6FzSqbE#O*TuLpTS0r@{VHDN+`21h~ciJ3Knt z^ZkE^hpYVWOL;2ie=pRqFXRYtk$-p@c|UYxU5^y&;*N=@U-{kxGZSh&2>P?-MeqT+ z1s9kN#A$l&gdnDWU2}rC9iBfeNImw|)@|BVkCNJ7yMb-@ngn|3wKTKGrI-&c@L4=B zC5UPWo#YF@|2$=21FVApzvu(1Iz5Pwg}3F*Q;WkxjZ}t=rv z1a}k-22z<+L;9YWQKf>Q%TlH*8{vd2O{f-GSIR;v^-8tZCSp{NV_BiNNkNWeaTsEh zk^xNn_`OU?d!|#-I%d1S?yP2alC4ce!*UNgCK=;&D&7aIVbCFVpw$4zNd&AeRj{39 z>8b~2qtbfYK7SkM%)i^;6}o>t#+-}M_J*DqZfQ-PFl${?ltWrw5(0n0I;3Rs7e=xs zg;b%+2=SR0t|9u&wm1cK3sidoh5FjKJgwwHt82}PU!AMPrp0MX)ush1m}8OJ%%KZd zsDjpz?eH60<`za?VL1jis|!J7jN~owg{k*~eF-pAn?>?=%fA^&f0rUQhM7JnQ6}5< zV&Ol=HcI{a&z$jl_VwT1&cRV-{kOl$|GJdtS=WEXB_Q=1z`97+RhxC7*FO^Kui6a% z)~wp}XKU4F1Db0!=75}gHCCLh?YJ6qJMvtc#l=v%?FA01IKt8 zRD)g5U-Z~#tU_(-?7(xi>(>po?E>6>3GS|5U!8!{BvID^$B-w`1oMu|6R&ciT`qj zeK9d$-gRpA#(-0>n?c~BYncV^2j4hwnY+eBa0*$5LKXC^;bLw_n*zrIICKsn3*rA< z_JPw@6l{AIH>bxkt5CD&dg|qW;8MalwLpvfKiD}w@Z*1Xj#u)3DUTFcIZ2XYs0VVW z7j^(Jc(>(DQD8v`&jB(T&E+2nmL~&Sp9HXQgi_}OAp-8~sX_8&&@Cy5Rj_@*;`_C( zNdn4V0@KZ|sX;;_W0jrwbIlPFk_t1$C+5jul_#XrUexpLLp|r#P*7TQ%*xS)xt17q z*F>a{RGWofm@}0wuS)fDUMp$!pge%!e^bb3|FcXrut)xzK8rwAGJ|4Nw_&ieLg#0+Rtu zVHP6_F0L6E5(yq9ydqZIIl?D|Btl|gE$JM&2RqNu~t7fy-E5OOE zTwdvmH{C*>^=vy;(Ih8S3^n6~!V!{vl&mNXI+>7$P#)j}HOAM5YXhujy5p5`vG^MC zc&yrRFO_$tkH=B6e9c^!&AsYYCAfZf;k0ZmYetgbtqo?A>HR*|_OU;Y?O$nA;^=fQz!jWOq&Z+Z85qq~6;-d?Hf!h`K(>+fOqh2!?z<=h z&YKvpS}eqars)~juo{#eM6b$>brqZVv4qwn8f&7@n;5B)W}21!czzG3IzE!pNr?1v zU~8C4P}gre6vFJ43HaqKiMp;YY4IzmXyKg=FGIR5P-U4Q%_?2}Mz6&ss|qGoNxf7b zP{!$FPO!N!-y=7t5DoFW@*W()qdeYXkIYHUVw1p(MRBdZ1`>*3Z78n1A32PDH%$X- zvjeO8bL!uP##htvOsvPvT~zgb42N%b>z<$dENVw46ck&T!c8rS|6Tb$~i^_@-r~tPZTkz}y8ZZ=3DT*rhjT9ELHjr7Et*bM;XrSsvv_1x?7_J(g zz*?|ZNEPC<;?}21adr8Vjg~K59M$;*K)*I#tq^(_Di&1e>!lf~UR45uw_k$OJWn5i zS#Z_pN%Og1jD5fpZ1F`)g<2MO+NwxwSE4r*>;}JL;dtgyeZdAJ9A=nfhHBRn5>|Ch z*nMi%^{WK_A3L33cLH66>)jxwnZd&tWdQ#b4Dox!z+gIJAf}Lw1($vE-31_-+QAB1 zdfP93v5=CE+&Y8K1gJl{$hR8z6Y#K@WAn*z~2ceX*Qd*_&el zpF?q8=)0RY!RZxV{)nZ%b&ijnY;V6{Coh;(WksLWbWk9aSD~8`8iXDO9RwQW744lb zlXXbB7hZ9|)b%=;W+P`n?Ypu>t;me3z$((nMN=xOi7thZD(D|fA`;$oD=5Qbg{-n5 z^rdbUYL+R%ivAS)*K$)cl%K=iZ?WI&12-0ts-0SVR{ce9vDM}uX>F);X8nTdvw-is zp;wM+Yi9j&?QOG#dS4^1Gvga&DjPIX$h*b z@!w+IsAi+=@5)Yy9d zcs@iKW*lX1)_nVQC0@${Qd?;&o@M@G(c$W?LbthcHbCFn;%1 zZxPzPzkAFZvcQdGq<%VI0FzC|fML=(I%T02P&lNi#554dbd{x#K(eizGI$6uXTUIq zShGpOlOc#CQ`a08M8D|o{*Z0xgM?0$8fF}4qq7v^Nx&?dKc23|)_x|#Ib@QB;=@9@ zC*}+aYpmFO*nRP4tQ_~bbMQ5WdCnE5Rj>c)04~S?Xw&~k`@6pWKR#aF|Fe`wo&Wyo z^lVWXUj^IDXaJ}xi?;w|ZW0w7Qi>+I>19N=Xqolx(`EI|$@!o+DZjTQU4zLXs@S%M z{9Q3JB;aM_ixmyE1!TKP$sFC~t0oh8Qw@Bwqo!w!@czRDPm4L%F;-f#&Bx72dNBkl zTi6dcLGt8BLJ*TIAuW_m02!N3koKB{4>PWZV)u0tG66Sg%yUpzsqr*KZ$3TVrp1-S z`aJ|!H|T#d<@4Y9XFsjyzjyrmzmN9zR`>rb<*DR#@knAs#ft=)@)f3;UjCa)A zs^RHViJPrZ`T zYnH>?rn+-AQb-R?Gvy4nktkaCS2>Qq_tU&g=`(!l<$om;-`uL8MgH&a9QxpQSvOQeT|uH_u&fY-v}#vC7?UEO4b;=X^f8^6V*nm~&HH zb5&w3s7sa|{N z+;!My!LM%VTb%LUWdG@;0MDKO|6q5wV*eek_J5Z1=t-sy@GmF?M03u}2B5C>F#_z4;=~0NgZkmlKpPZ{)D(a)+Q!Zt2zQ^ZJmk638$phJ^s^b|DUSq@RVghTm1Lo-mbs@zjLs%|CjPO_P-wM1+N1%)cKYJMdgpUDljUc zYoxe0bLLtln4zdH7R;BrHG^q(iAx9Fmh#BC_IAo4$JyuyHRLJ}$doFDxTsxW%}+C$0Y$Cn-xr=V zQNhx~8l^e6iyK>+eG|C}T(_;|E)ZtlaQ?v%sq2oj5jU$X=g)P^xskJHGAo-Pt+uCs z$A+sO@Qwy+quTmJFOxB1ZXuq`EwCozXHT@)@-u+AH~-FIR4YlN(!v{zg&3_&h6d}q ztf$8*w#VryNkD9AsBkobV>S$%#LbiNtGj6V6Iwqs*#CsSO9@P#z5r;m|M!pfeEa`+ zca{HXDUTEjKj@)el;h8^&aAe6QSDG`ESe+#&ncx}7i)A0l z%2VW`(lu*#GKAq3xe=h8J@9t3&>mo&Ehv{?~)m{f|p|l>Z;mk;(0%ZTyI+uUV<#){KxL0pZ{g|=x}F$CI6T4NQta{7gFp$nw5oIxann+ zTn)t};}Bk*Dg%+EsQ7)4C>ON)@$~H*(XqeWUR_2uyi({ZuU1xQZB76i zlLzxt-YY1Su!61oU3$1o0DOYvs68O?K&EK|9$?1RDwR_ha|;B?(#K6On999RI2CIG zUXFUvmy>9-SO;8iFhZPx98xh-kf}>8pbV-PoFYbigx-S*D+T{QK-k~4=ySsn9lK;zi+C*E) z0FH3ei*@P64mi7U@_rMnsk%F5Dd!jADn@5@RdFp5f1+Lg8e-TjQmD0 zQf0MrS-{gG|MeBGPg4M`{-52QO8&=#RsP4NJnepzf&pe%0J?I$2C$&F3Uys}OK|24 zqTRva*=4(KZ8o`XDm_`I7Z;u@dG3;bB{Ek}^=Xm+mX$ES4rsUkk3IRnySIw}U(VAe z|2+nnT?beI>h*xvioYDlPyo)1YXV(=R`pSB_7A%}sE%ZpHG+Mmnpq&okt-GmY%HBl zb;|?kbE>9;U#YW&JZkPrLj-+V}7OI6gXF<^NpD(<=Wp12hYM{hr;&rHt>F zzbxIbHik?GVqO!<{o_)W`p9*V*QWZ@QXU0hi5>H`g;l)f{E}CwHt5j9HGCwe)7`|? zu3aeY*x0j*E-Z-Rsy0HydQG>pu~CUEMZXkZD|d64uuQM_4VuX6MO55lG6Su8p3W_Y zCJ@hA(!f@?L2$mREjd!sj8!twSbeILbyaGxy-;<{qb1fhwLboaL5uv?N2j0F|FgGy zT=DgBsN0o%oUqiENG zxMLK*6Of}KpVAmI06}3Qb&DXc=+#R2qakfnbRn|3)5RBFA+}OBU1(iZIeM%djl=Ha zpu$m2)#w}bv4gs4QZ=?%e!8Y9nIxoWOwVW5Gyckq)g(M?Sj-hn)~MI=%KC5b=x7!HyOifo;2Ls{XeNV)6bFEZ zG0MPTiqk|$^&H0U;0UpP?@ubqi%oN7)Uq*3Q!q-&Kn3r}6bKZhkmGv&QldzdA? zKY)*4OBxw6{ zkZ*eazqvR&zq~zvo;I52|L*SLo`3##_i%sZ|6j`U)s*23F$QkQlu8e6j53D6ZhyDe zyM`1_5J!~tdg=qAC%}I0#t7WeDUy+R3|y-ju?aB$GXq4PC02oce^ya;6c47HP^Q75 zM4ml9sR0+A>2n3&qI3e}%id{{U?D(Y3ch0qd_!TzPr#34Dg*td4Czw`8vFyH?*Ps~ zPDwJ2Ma4}38AwSs>Ve<`8NeK1CWH%$dHM*LBu%2DR&4}xO73xjk{VECIK(lADWE7P z40A#sH$e|x3Xn80@kWGv253mqlspK{5JQF-fD~+Qv=Aj`XK{|;z_!3w(=17)no-uUz>ZLmV3w!w(FArnTv106%*X3E z+W;^le2l2!Ada#`@BpE}#kZEUCioWSIix7#8VDdmFoZEqvC29jy1Pwi4V0Xc36aIz zR@H^fm?j{Hlw-sI&T2s1W0ERXkwo?56RgSWrhG7T=z9kRn9??x%)sbB)5*^*6jH@W<0Rj`4AOP+UzxV|Zd$Mk`t_go(Fr+75xU_IUddpo0 zChXJ%Go_G_v`&@e%}BQ8O*MUz%^CK-5QT+Ol+s&PhZzWIs7)0%z9~%F3FdM_r+6ZS zTF-5*-|L+ZhbWfQMW2_qW@*8{Lo%g&3}BYwdqf$eMf!&!ri_DpI!JMxKK2Se1Vw+f zEP#OJC>ELo2oQyY@Ht%ZuVBqy!L<)#9FN7604fEVY}B3}!EvIBCndn1y#7-RuW8j4 zHJim5L|se5G1EjW5-1!|n2&oZB42>Q8RUY37emn;tsOo4P|GAwA4_4auc4P>sTWVF z5ZvjbXcNg%k>?i>izyydXY8iz!vUU0GsL)M8uV6YV~NQH_Y=CBi3U`j3h_tqe{mD z<8d=P8n&=zg`9u)kUsXhfuKmLmqch$GX(u!??*${Or!!(|%619@ z3MpXdCqz(?Kz*QC6HpW*LCY#`IJ05)3Yaosi8et?&Ht$8oSH|1GBL@N_+ippHzYzz zXg=-Pw3m4(+*ty-99zLC*<=0W!CAnjFrcM6gi}t04G;^B*ehnHYR(n{Ze3#r=y@mm z1Je{pL#(Gql!fK7&=D4>VuDMlAxRFiN3A5}8KFm8+fk5`5dmaaigaPi*mIJBbz|-; zQaxI04%h+=GGWnD!~{QS8Ix!mu0VQ2bm9u!eR~eh|9W?Rc?Yh~Z{A+q-JQP%U;PM9 zudm-+oSlC4<{Z2^{b5s<)9d!v;D@W5{|8*$g6o^B?=N1TzXn&Az0*r!<(%Gvi(8@L zzdF6Wxb5pIS2y6>^PBUpegv;CZqMGFUc9{pr*GbXA5L#>PA~5+&Tql#*Xx_}+gosT11{cPzqvSny$LQZ&)$6Z`r`5%u>Qlv-M3fY-GMh3Z!hjn zMV$>B+SS*+x92x!-=1FHoql!k=Hl+hP4M-_-KBu|_0g3GJRt&7XAZ!RvsIe&Y8dABLB>fK%3y*cmqdd5PjDjKO~8Pn?{wJIzL{qKMM ze@xj_oD|lpicTsriFE{Y6r@V5Lwi8bF)M)E|B8H*oOtRV4C*S zl8K@i=NM_^tLt%2heGqJQ>{!62IN?nMRGtw&;qa?1gi-Omh}bECJ1Is!Df01Q+Ce?x=Jr% zD3@#lRGiF|l1bDYQ8-bE)xirPETB0!_km-f7DO#AR2L<6WRy&~ge2@!sNDg3a#Ro& z<9h*V}hF&NeLiz1~3|ToO68)RMwgSz487 zR{?zNe-2Jx>(Tz-oAcAxZ_oRaus3}V)P9PCp`eROghCA@Q<~xr)hc#C+HvY!Vyvk>Z#2d5A}EVeSGbUY9+JDdIk^;$2Z9 zhA9GPh;roxMjk{&y`tyur3Wqr7a2!%2xCzLzu#KBQR^U84`&H_|BqhpOCVq=LtyJm z@DI0?^n5GuU&@3G>Q+1<-_iRRp@e~>eVH!^#$2vb<%)ohDS0SP=6_~Fa`mj9)w6nj ThtK~X009602~<;E01ycPDc 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�OLRZXCpD8>yHC$ev5O_}p7B9N!qkW~)YcF<&jC#G?B1oUaj0kN!+Fz7E(>`#+FfED z-@ElpHz*&s?+Bl~3=UZkXfppgvWk(1m`hU3sVE}z=F;WNr8=RbsAzMXjXIN|@%1Ma z9cc`zv?EP)BZg*V&_FFxsT66T5U~Z@I#o!iBBXOQ2%j65D#V&5w}ezWd9BnS^D99X zQ-QQofHYEn%%S{frut|*`Zc4?&ow>0gI1zQ2=19UE0Q-MImQ9w>>qE>tsp7vp4ClX zvX?ks&lKZf7k=s_P$Y|EZypR;?N;b9&n72sb@~L3%iIbDp)62Rm={M;jsW}=;k?Ly zU)w9U#;xSi(XFrf7B`Q2_Kl~wq{qe8WMi$OdNy^dEh(D{MNL4>Way$6mo|m=M8V5# zfw>GT$hPv|s|dID0IakBJKVMW|F`#6_TNi+Ecx$MXSRQQwfrdZAM4A*7=ysXWeP&4 zqHmj8km4rO-%8U-H!)2AjUx#xe7}YT0qS^ zP{Ht8C4s{Xq$p*XgJ?v*Ao6mmG!oyPVaTFKK`Z({j6T8ew6zgn4gEhnu>5~^cDGjk zpG$c(`u`i5-|nmc#d7%}PJp5_ogM*1CZ3@v1W6PF8t(>X*hmT^Qn?5V5lI*&P6h!i z(rh_Pn`r{AaIdo{jQkTn#jZSMa!Afo>R~&0^XJ)%v*QmZ#}`*Bm`Hc_l(fSvF0odc zeb%(91AQ@IA%yAa$EhD{kg18<+a&s^zO4*D>ed#zaC)vQ4W~);aSFMSVwHKC0} z1bjk-t5_U+M4q3d)0`ZR(>#i!{N4lJDD%^C6krc{vnYhfr92M&luoWPG!9Nf8uZcf z6oYvb!tTM6de)o9hI|YG@{e1~>K-@@gA-0aj-JtUi!^^*mFOq8J%+(Fi}HI8U=a9m zFeOxQp3J2^4J|q<1f#g%^XP}`|2COHIe^#y4ZaX+8oGFU_M)^M`f;9SXvMxt2IUQg+v3gHbgu{2;YTvnc|{?xWe`x>cvX+= z#m0%bTp!_YS1&U(O$qOu`k0(UEYar}syWPAb1&@?v;o;`hvjfQPE&#ef5%tltp~j8 z|0Wc`BMVBU0L?1XY3B9m?>RwyxH`RdgW3EUT%W%%b5HHN`pOOZYb4AVZsgJCPK1f@UmFs22@El;9|YAo@hZ9`n`a z8RslpDD^Z!qBa<%)43#?j51umA{2X6Gu`W%n(XGI%xUV2%dMhUn&Iev9&NPUIPj42)=`?yR>#-(`^Q zKLC@N$&yi8gffM=6odk}B0 zPA@+!4rO5ogdz$MFXsdC^78!c#fQbgI3biQGKBKquE>(gpdZqWbbbj!1XKx zXMhh1Ndyxvh-ZfOb1=jL1mz?3m4`BYA@PPTNz+jb@jcGr#9nJ}P(q5#F#uNwA1+Ui zUwk-!^XmV8xI91S)ZE+lDwtJ6uf>4&zoqV|kbV^9k?rC{-L-AN^vrbTuhOr$`9B4k)`si~_fM;- zW!cm;)iMY+lv~Nji*pXX;_$ct6&xuj)kGer6_eb;M zkWS;6<;g5lH_EB@in1Q?&W3MLevv^8le{8C-5O1%89`OcrC0TiY0hmTAHW&RG!Dd4 zS-J3*O|;keDPvdwd|t1=D%Q8E$tv)0;aQ~ylwuk@zt!+wm=txELL3|{3#hM;LvuW~=j zHBz^h-=`Xtgr8vG0dJh=DgOs+6)cvZm}!*^a;c4=v%&uPvk2yFsBtWEON#TZ%;)4U zae5AZAz&KNR+Xaimg&C@{P@M`R`hZ}M%9gZ?E$OePQW}jwO-{I=p(42!lrrg!K4Va z8%*A^iIQtv=?>!4UqmJ-RH|0D_-ZwK)hMDQ%T79A5E`ljly&R{eoT{?c*Sn+aW7&e z3DS<)O>UrCI#YZbI``jvJtQz*LYMK>gLTsMR4BPr`#$s*tEZc%75|r_ET1C)a1H-= zuye3$<$pL_@qbHsH2#myZ->zzDZC$o`Qtr#80$|Avso0tH~s`}$iE8C%f2(G1#}ra zMIqDhKu6pLaX%qyMi}sX9D~8Yy4}+;81Rxh_rl=iW0+BBK9EAL;v1QjC^Vd>mK z7%twmG>axuy=wH#K>UIi?GEkoNB{*6DrlWk;LA4U!@0qJDhpPh6-HG|wASS2a<5x! zNNX0aj=DfcTfOSoHCn(WFsoLuwu)sJ%h$58p37TN*90zE$rWQ;6#&TXH&f!*Si8Qp zPCHk5*-CdV^KSdp%qveWj*=PV=LwlC_X4zWb?jYP=z_o@`^K7m`bDvxQVP(ljpX_GKe6R8#y~t3G0u-zIiabcm)D>Fwl-Ctb#p~J#h>zvw zWkWxXZ~Wl)1^X_~PJvU;9oA6}r4;yNTY8V2V=2o%;~jMmmvQkds42TA)<&Kc&?keI z5-o8E#du89R3yn#n`LSsWeCRz=LI-N+%s3Y%RO{qyN{3msbu=gs*w@P|XfW-G(L0emcr@GjGtpy&vom^FQtGwbLv zj8n{*b2)s>>`a|lB6UnNa2}87BeH;bdrGXRTv$=5Qv7V<#Kr5l$Znd$5UL)m8qrW7|BR`J*4UJ&b>|V#m zLUuD`a`E|;izlY&LxI0U0L?VL1x$43ATEg|ObRQQRl}B?h;k_m28zLni3N5EKTadUs^lPsKF%q|)_`oVskk>+g)&L%w6j=J1*#593vH;5)y72=#jp_; zyl&h|8OCo-UBCaQ<@t|pVEYSz>hphlYiHZE|J>PH*?%tQ(e(cpbbh-!@(HXTL;26U z(zV$Kg-c|9RW%YvGnhb(J>ZceD&oJ%D$S>LzQ=Q8rs z^l)?)R8wu25d^DPm4sGLkf07gUuQI^VT6(AP$1??ci6-vf>SSU9;!uV)*x0WBXs?@ zzAj=(VB@}fy=I9>7pp}t_+FtQTP5i>ONM%|z1+1ZeyrJ%G3~(8{7%ALh zNy*X+ilVN;1r__kb$w>(1dGxJ9Ih^-SUGKjl!i*|rz`Yd?v+4+DI0q(>mR-r2&nc8 zf;U_IQDO8`EZ(nQ>EU6R|F}Bmw3S(|u?!oZ!cK-0_!gEx^sYvB$yW2W?Li)-S17ps zmVIDH#3G$w5WW@uOSURo0DlK9Xv$DsM-zyqPNRxSH04J1G)iBBYt1oeh+8HD2?UZI zGLjYjex&?l(W9=|N|URkWs1L4&NCM?bi|xLUqG0ip!D7yP_yL36fjKI!5#kvr!WA8 zllcs0cUhD}cF2nR<6K)g@|cyc8Md!sHi89&;SA@Bc{iD0b~FE3I-?% z3GYmf+Gz%_#~H+96o-Tlp9TTMSbfEtFRG<5i%=;3b_8D${4Yg9Gvi^GIWm=3(K9t) zii>-oF)_}E0zyx8Y#1XyKiKm~7jyRigFVkmbk>}Iehz*qIB1{WKB-K_>^)nKOzItGLk*=HI#6WBVl(0Ciw5V6hPiw4{WA(8sUD*vs z2~yEqphhk8GpSY!1v+={TF^(>HmtrCms5KZSU;v z@0j|({oPgk*QGof`*tZ~?sUSr$>s7xaBWI&x>f`hv5riB%w)xilI5J1UPiJO#cMYg zReY}k<~p@og-n_`?tqJtEwJFcWClM@AlXKDqFV!Z;{3|?Wp@@sK^e44ES3=+t3rZqCWOAccq^labxg?S?$Y;8(^$v4vW}1x zM?^VeC5k^);x|gC;@r`KA?hO2%Zs-a9ua{bLo)3S38|<_`sm{QYwtA#cmlv3FNt>!DcP}f3JMEE1IahSddSFZ3#!&xjmML`ctf0zbG^lFDG&q7-HZbdE=QB6cgIEdunIkaq z^I!~okotKJvySW$=V3=%9O1GSFDd)O_U)WU^vrF?s0j}aew~ce#oHr5Z`zJFH#0bb zpSHJXbDP=bi@o2`^lWpxuX+>BaTS*MGc^ z{_zFUSO2H?k2T#w0%jS?UgJ?YY6^Pm7qK5D;4I1Eh;D5-8i4KI23Y?sMt;s;Yz_9w ztJhH+5$>P8+~3-o^lZd+ews!VNq0>((N(dv(U+?b0gPv{&BA1bAPQr$U_o3(D z%mP1$Bg9Nxc^x5bvGQz5{gcJz^<#{HABMnV5{w6!N#+pTL2&0MIb&>@T_W`fFxjHQ zG(?eD1rl@UwH2~m?6s%(x#xoFJU;nAYF?wV-(BLen zvgI*nUe0gNt%W#ISB*IimN||prOTSe9ct5AFcA4uB#Y6pI4K<{8>2r(-WVl-GC#}N z=_NRP-9+2~C$DoZ2`zn1D+-(lapj08Op4Zi&z%mg$?b-@PRxw0XCH`U)-)B1frt@Qt9wEl*-05$sm!<~II z{@d>1{>uJ$DUYT(E6BqYpJ^ZxXLQ1L8|&wXxE8Sb)am7b?qVbpNO&yNz6TJ?!K3lw z-%+{~GG|KkaVDIWg(eq;-(r}#OOh|L7>%CqF30j^kb=(W=yoM{5cRKLpZMg|yU3zh z6vGibC2~ELz$_4D1?h#jcpX~Ricj=z9tHuLq!$?)MlrReB&ViTNiW7sQ`HL%78s?n zxc3SLemq7v_gK|f{4E-E%w&X-?%%xN9N}BNK z>9^XuuCI9sbAM56c!x`vOx3<{;ZDZd6$3R%*V1)#(tU)a@J#TnTM;VcTE zt<7AUp?Jzn4%geAIIQApG)?kBghjj*xwMR-@T|eniZEO~*Lanuh@j~pR4880Wsg3T zos^Q^*%0`EzoZ#ESgZmXFJS`xga>`l1Idhi4EzN67)K)_6tW?835Di@ne#THsS3Vf zW-bkKGj(_^%yOTh#TlSVdy48_3JlI?Fw3Hl8>=eUV~*CXP`gGGx;jKb)oqob6c|*D zQQ_l`X*7;I2qw{JoRfmnlp#eUdTEf3MrG($k2LJ5{N{`e$I;&bGC)d{O$y7vcAnLHAVF z+OrNC>t3f36ove_dsxES7E0hTOn~x%up`+NZh%tunUYni4K^;wOAsyt)C75h+%_1V zqAQ+#&AJGNb53o2HMWnp8kc8#T~=tS2UZ8BqQ^#8Jhvd$1*tKd5@)9Ru>(RvKpPs- zhoU6(z%CWenx4>BXLK-@n`|jYYg`&s?~N{}Nghog_ZjgtiPL+V1SnxpD^qyXNU^fr z_Srm|b-lUYBuAqLG*XD3GL(KSB|Pk7?$D&0^Ouj#2xoc(!n>ItysaUfdLt)BQx&&0HBkyjkC z`qK9NFqF8Iv-%X|YlL$xeIyYxvuRSKn2a#Efq_58kO-qh=FAZY#^^4g02sBtfkTu* zfbXI_7)Qy7l<^akk6{L;7-lSD-z%77IyrhYMIwfs{C@t=Hz4p+Qqq-7x17-hrUjbo zm@ZYWMcBWI;nl&(oEgch=z|Wu&GFs{-QwhL*1NiR3@!FV)p1dQaGPyGSA>=Fx3bFB z=`~Fl+p^Bfwsn3x|L2?2%XW2M9G`qR|MT?n^6W*)4)1)6mvGdysuyO+lDwlFPF&ou z-gZ4}jAN?WqwqT4QwpC<`s217kUN8-(9G(F_TFt{V+KMV%w{@B8YMEjt9J@hTrr1kW=oOdI!SG}dKx^f z>_2jtO`@bl#mO$yIfuT)!!r13Q)dRj7DZcRu5Zgo2UI8UqdU%9Jq69S^f{&Ro#VB0+ZclLHy=l?Pu z?fh5fx5F%O3e+Eh3DEk}H4`vHG234*U+A>}h42byGnk!?5|qKv^43AgFd9w#)B_%d zK?aS)!A96C&FDo}`ofQ<+M0#gyUP6>4yW-IG_D{RY+a2)UwLf6PGUcrTnp0DJV>k+ zB&(f~lq;f{GlXnYD=8pdHl@ergzgwQ_L~@H0i>QxWWq3=FsB=~vyhF6b_IS;<=tMd@$L+OP|N0Kk7-g&Ji?(=Q2Eewua=mM9iNzPTIx7k? z1(?mB3A;&_jpkCo{e(52T*Wk<6iz+vbN{F2GJHq)jl46htykDa*${>xW z>c@6`K40Bm_ROy9@>s+O1fa*gZ0G+{r45OmrvLvQeVgytJ5T!zd+Q18oSH4#Xl#v<&~lOmXL? z-Uc9R87e&}-d2PDToDAJE%&J%ys9mMan#Z{u*N%g@q%p{*l!#2vIRd#zlzYMRrb6h zfukddl6o9c=0a)0b)Y0}exs(AOyX6P@-zvc%0P4>WQ=CCjZwpEI9d>Uy9~Y)qM#aXkdmep zFsX@UEm#L9Q#vLJ5wTI%<7e4^B0N2<5=ZGcj#+|Q9^?%JBCe+>#G8th2w7aLx>;9d zz?}HE5MY>KNHbE-g4~tu$+060fa?jD;M~HW6%>GW)CyI!`7^kJIS8gWM-xEz3reUN zN(!?{gfTU~FNve1MvQVxRt6xi=js_LbfL7?L})bXln9Zf9dEql#3{c?U*gTDGn??W zxMnU*d`w>GgQczt5wNP&NE?jdYT&^sA4XSRZO3TWY(kXj`{-;~o>Tv`5qi7KpwUIn zj5fc3TX=6-WUYxlnQEC@c;zA9s!cwq2Fz%-?mEZdm32%8YS8m{gb%6YnJKGWK9Ge4 zn1*138=k^)OB>NPJyT>{yN@lpQH!l3v7{>r{^!CwraEljy4h>K+Io%EXO**C(VD4bji47Ew}~tP)4g4|vUDN(zrSnI|NX-i{a?nT(SI_J4?_Q|(p&yOhk%+w^WhJHvQvOM zRW5i05EzX9lRnkZe^qBq8#nVH3xtZ3%XH0Ivyf(QSXy27d(9p}e)(9*zFp`Z8Ny${G)-B=*fNCjJpCQ|AAdw7~i3cnI*skPcw)?lml+Tg@GSr2xBl!X%4?l7)C78o214y#8h2ogJP8p zxEEu=e?~(fqBkqWbW1iLwo?59Y>>eadth)0W9VZzFfGZ$ zn>2&72u+#0CPKH<6nL|34|rD`Z>=s){Q#;BJ7J+XYy-}-@YSGR_?TixCh|B=$Nrn? z1nh4)j6O36{0suwB{uYU15kWr=;$N_Aq=wnG}jWe2_q3@Of)jiF?j~oqa=i%)PjSM zo%FIFeX-oU9{2)o4)#JAm_{OcTV%|dHizP{b&H0{&_xDQGFB9fx~9UL--(c`E~r`m z>C9Y1O3S+I2Fh|9z|r5fcXmAqTrE!|I;AX;8jm(NpUyVZ;y5)cO|#fp=jiF||9Lv2 z#;lGVR{VU6VMbT4804ar%6fzcxbd|()NB6=Zvqt=^7m0NW_@60wQ3K<_;X)Pj3!VT z?jfMIN_N5qzzFzhioukoMQ5HS=?2Y2$XztF^;;PJx;jEY0xymIh}!n^+2GQ%+dZHL z3=8DCD5&Dig;>NCCY_r_&?7@ny%@w4EDB8YcVU2Zaj&!GKkulaNg6|%#f0vNIl+(x zOF+XJ0?B!81>ai8d zPq-s$r}qR>2VfSn^$pbkQ6G^fgdkBv44bksUYIWnrbiQNP<;AbD(JK+E4XN-K$ML5 zdol_1-875YD>9z+4c*T46&;^S%e?lyLBv^5U5Cs@`RG}Ra9YP`48Rxam-c`CNvy!- z(d`Ln?VPceh?r%Sqj+jD5%!_oGvF`BfUzzAAKv`aj~ZwGV^1~zzq7k{aA5HNJA2#P zEB=2OPo;7rgee}}`H`l|Q21}Ucq}IyrmK*;h0=|vwZLF`V9nlr#s0H%(5MP}fz=(# zZe!%zM(4`4%pdR`P-lh|2EdDwD3{6*?9BVF?DMi}s&{Ic^}8F?K!*f8Iv9O6@}<3Q zo8?E0&x8m=;Y~;L#-Xidj?Ek&jt84Nl#Eb!bH|{q=8n%D8;*yXyHah%ywj)3kU#hg zHl9O;?|qnm_{Tho8EJ6Gz6P(m*vTfneG4pHB+&8XD1~VX^Hg| zPfq|almDtoch&T{0QAA}t5;88G9xc8PhXr}efa(S>Y9CKV(=gE{t^yFg))5y`^s!! ze){~mM(C!4&*kl}Uw`7YZ{ht>p$m}+T^wIs{qy|t#WzHX$pJ!vQ($&}d3^-DgWbcw zdruUXn?CS1Z=z%qk3IHRKVUz;P@weNjgQCRmtTH5J^zh01%ojH-svY8O!Fuiffv65 zvbynLFz{%Bcke(y0p6NEDjsc08GAv?JfRd7>N~;u%=JXf18V1OF^|Az2?DJKG--ug2^Aa!|u ze!aA#p%OcxYRC}Ei!kOBy4&c5E72m zi{tC#UyrX&kAV02v!&qU|H>=#uV0tI>8V@$_w(1M&o)_1Ys%-*%Hho*nhB^g)88w4`v^J7oM&5@LnP<{L}j zR}P4N5WtjnB0x#P!a8GbuHDB}ovVHKeeS!f^H-NkIVH(5s6QepIw$9sr&s#nNLBCT ze$8*N>$CGWC6!O<0z94)$vTe$5z1M@I)3r`?9GR_ zSErY6j$faa0FgFuR>ft>2IWIZRq0Y7=$?Ray+`@LGiAp;#HI#=k-lJ>#h~A(&ItYf z6fTOb4f|^4reEHg!Gqy6j(MPW1&IQXW`0d?iKs2H{I2=R zG8|vPoOwW9{u87K#W33dIm8re`3m?mKZ@Bb-#g_d2JD(w42ArL5@sE#qxtn~Kf4n< zG#!12Fj?65p#PR85ul{;>sQbZ>7QXC41)gH0m&4d_H_HOL0ejJdR=FrlZ_P%j{MIVA{3G1N)hE(*YY^ zlRh-}TpKs?T+{ARtKHUicef5a30WyGd~ek9_+wn=g(fyT|F?nvnNh>#c{a`B1YsOk z;_wfQ;|U7kvoOMhkUTI>PH#B;F=mm)T~2W=fxo`L`u|>8Ezmo+E})aoFMhS*vug9U zQ0??5YIf!Er@@oUeO}KxH?&K>%>_ic?dO51I3$i6`_#E$6yAu7!I{r(unf|CK7$4{ z)!9!HpLqZYs=>Vm83maKP`Te=3jlQE3Mg!E&kahD^>uA4e?K0L<{4_cGdfR2R!nX% z-A_?21@W5Br}SZDv)j-g()6V)f}OdXAjz*jqr378n?U6=C!0k9J}F(eQHmw7xDTbt zu6N}?*}^pD+xSlY2v2MIpV=jJDgW>9@9mrN|L)G#O8#HQ^IgjS+yp95Q}{NG6jYSQsJ{gR;`tD7Zp4C40a%P8eHO%#7>p%`T@kw zw(=h>-%9$ckN>%QxM#|LHj6``GpLsKaF$XZF%3J{HD7xH;_|kq=hh|Mt~)qmz=sr>S+Y*qH6!^S1}Ct zXbSS|o-9f_?Z5{~6tljQrF<8~vG{_)FG&BtjmanJ- zxGOBEAp=o>rUaz)#};aePaDd7vV|MYe3FH`XJnHTSaPwnhc(S&r+D&Bd3v3Mm4wo?!)V(4yEannn;fe- zZ<;z|&e=39&YJ57_;MI?-UiA^CEsD-&;pn0m* z+`*V5)~31Q=A=oBUB~(_d|#{C`M>@BZ|*4nH39plS*+b@*iMSY_}KRuhErudvra2? z#j6*<*f^=2xA%qto8gKOu`gJNxu2P55o*%3~{^g@3r~=_Vy3W`0u-WJ1hQg84o2Q zr+kV*AILdgB=?_KG6MI0|4%!oC8)bC-TnZ+YEHz2`)QP6J~H&Xf2akb^#k z;OqiK7~pA24mKEqV47tx$>V!+$k4SCM>o0xRZl)x+8?zSJV~Pu-Z3QKZ-AR=4n`;k z@1ElK9_z&Uunc!IK_UI45294&#Vr|sH6ig2tukms|H)LhrTza=PycuJ_IC~XzrDY^ z%Kx#H$E5!kWR5$b{dBcFR=UrT@0jMV*?XS8!ySBvsxLCsT+5{1Y6CivK)AICR-aLc1y5XP2{rszg-I`9&NWQ$5b zK;B@7j{KXP9c&W9;*3y)V~UA_cWdR02Qr z+5aD{&VS0NZGI4cwqOM6E8|I2u^^I!1da*n%T1TXjlM7qZ|2c%fTKVtL%>TZ#zrE7`E#-02|IUO!Ml~O^B&hXZB@V8{ z!Ie0;5(gjmk*_@s&VRxEBst86KH&joejJ4~c4`;?|9d;TR{X!+y_NsRQXWnj*%Sjg z$KX#n#S8HP=Gqw)OGh#Um8XBzsh%Ui!9kFZ{aj?N!t}5gZ4)xfJH@hDOf%9xN(PPi zfXW`sA?1-HNIj+5aU^0SgLPdNBix5qQNGu+Wy3-F6Ba| zT6v6ct{`ShxRux|Vy*_LfuyS<5vBfQk+w04}iP3bgrZLkT3zIay-Xg8LVW65wqBPqypCs(RIt?Y53GyDA%m zvx^gjCM1rIvvQYcniCAx6Ie1f=BPHGR&`3pEf82%kA_P%;) z!jCnbF{KCRS}qw$ohO`UeU}Y}tJ7wOtuCwFW7QlRc=J@j7T3!MV-V6H*X*FQx#yO> zR)9SRQR15Ma{k+i-pJ44oqxYLY8+5|v{pR!cm34!|1^ig#WaqYN&4o8fSQ~#2A~W7 z@16ZU)Bk(-;9!5n|1aZVd_5(w6F=>U?KhUppja_=Og~c(dWJG(4i(@NKxG70Mb!bC zxHS<1s`}Gd1gKFQ7Jkp82f$eD2$l&(TW!7m&GXFs(bmK@SyF@|RC zXJSDK1bGKs2zzPaTtLg%xGIOF{djQVN3p0(|4^Zm@$}fRR`8?}^*t=$K|GCV{%MRRFds+B2*lAXq|LjBn;SjZ+s ztfPUxjCcmW>hJ)S_4`EtfD>tU#`YMYDuJJnz5s$^#w-sYl(G=r@AWv3Vszu{%?`ki zpsi}T|6kGbw`2d$oda|K@9b=^_Wx2Ix^393E@$hrw&vRPqAJ;IV;D~cc+6HVHS=he zIF$b8o0q`oXK)r_ng#ar=fXYvlD`!$_oTR=ri0t*4a^dlLp+GkrnGNq);42A25wkU zf^$C!ppFO6Yw0LIgIR(032o&#P5)$XtI?kLi9dp2|K?tA?26fP@k(HwFvhmu;nRlxTec7lxxrfdpDi=~)4}#C|L1ZZ9!A7*4_M65BtDhNmX>iloXzNhu~k$1%0!#V`jxiyTCi zC^Q_C=K2v0!N9C&n8<3~ct#CZc{C#Z6YGeM)@h8Pi5to!YDq{Yk^LDnsk|Cp5rT@; zwCuH97Bg5ZMYFi6IOwFC2{)o4*!wqV2AMX6_c6_)iJ#p!?4o8r&TDpsa;a)V1x&-7 zY3sHyT{l)}^vPPDSThyT+GdwZZ9y<}TqYp}x^ycV_79ssgO@N@M*HR-;53eC#3lCn zH&J~(`qbxKQ=jlt{jHvAnJz|01cIhuUQz8<-&4`BFgPYFJqm7Vd$Esm5an>fJhC7g z;IekuyuKoJlzG&_pAD7%MHoa1Tr_0wS;Vj#esFB4tB_vKS?w!E>g&`#o`UHaYs+D$ zuB;x%qGTUR2g|aeaoVfI7|v(aBu%{Rdu^i%|{!Xax9E2Jh?FC%1pY^qfngL68JPDgwd$4rRA2lC5H~r&rXG zU-9za&(ntgx0GPr-2ZLuTKWHW4-Z%IUzhSI*WQd%W|OQDjTY>#Lr<#SF4fBd8B9W$ zIaz*R)4uW(oHaO5zV%jSge{)-`@g*kxOV^VY@7PugTvMR|5Bc^{m(DjTW@_;N88D+ zkA)Uc-|+19YOgQ)wAufO2tnQL{m;(cj;a6K+1X$D|1ITdwzuWXYx*i8LGb)M{Abt7 zEZMH6p|V4wD|MW5J|`N9RzZr6#cQV%wNqQ+Y^HPgiZ-T0*uuVr`bH5^`4W!cr`LWS zjDh#R@BIG1xB7p7zrNo8hxpz9NAG9xyZ4VZPieOY)?-NiOSG2kkJGWAOeZjl0_Mye_?YQ){UC?g0GzRFf3C&_ zKlOhaP;Ch5EY(KjV1jTC4t9%Lc;Lw;t@fm97)#b!^od@`op61#%eH9j`p+P!ivBZORnG5TFE{oH5mWh$z%-nt&()S0~4>P60;X4$@)3w^2&Z zb}|Rk3_9W-u)J9fIx`3&OLtN;wX^pC3S~%+n6lzs^r`&$Kk{1HjkG|67OV{@>m|T|GT@h zzqBT;ORw8|HUlg@CKZmSZGM;Nk{x50>^%^%A=Z()wo73gfhW@t>{J@_&`oF(# z#ed)1U-^G5<)JkFHJ{>+!aqo=*gWn7@YofPyz6Nf2qF*xESiRZ&?>ltKPW}o2#s^a zd#JonFOMC|2VuQBWCItjYp-LAFb%9mlRymuWmmukqh0q6s@WxVu4?+FiuNr!r&L?C zhb{~rnZ#62|5Frhe(Xjc#H6VNgf^4|Yxc-~RUgD*wk)9?kxb z%<`mUmKQk?2;*G^+o{JZjS$pPP7uYCB1eGf`e@w?6b>5j{`H+|D+JV~3z4mnLNp({ z?hBGcdF02@zahLq8DD+lq?oPD?Rbhxyfc;kYS`Fzxx1^fq_NSKqA8c(~ z_dh#_hb#KOj7OvYCt{WtCH8W;JX*@G^q^}pP9wyf-~5YG@eEC9%*gc$6^h(@w5ISS zo+qJ}%A~I4Fq??b<*iXsD$j?Aks!#hbY<5bw7>Mb5u;X);UI%4!cmU0d*x;Bj}!nG z(>T6BaTKs{Cq=PTeqg2Z{N6$)&+nBSQ|!>Cg>fE6iB+7wbytv=PL0Nwy!4ZBuB>Ta zK%PaD9&45ZI+ADE0DJ*Sl!P$J!Jh4$*%nbh8_k#7O~aBvnFmF65f3I1V=~`0G4Y*if)u0;ngt6X!N*F1YBW%cw8CJTMfp89IX`MKbVk)~ z#!$hLFhn%?yRelRq72|1Wl=H$Fq!>?0Y)HV?gux7TYM;5Q!_#Ee)m&-b7R`q08#eta z!kw*Bb6ri7@|Cr+qg*}zF^BwrmHKyW)c|$&pNIRl|M%WX{$I)?;=i-mUC7Ww6Px)u zdHnLf>`2FIfM$#!jllJ%eT~{SiMAg6O}6lc<&c(tmnD*BO3t8ICWcF+385^tv@AwL zv`?lue*s~7g3@~ngcT|+;npwBY)yvKI5zA}EDKKR^k|K?WiQEER`cZasSbi=m(j)& zlo(d3{U}(zVl+ICYNCgxDle}XHyIc-sci&LbVjag2=;Uo99`Sj68`?53IwF1$JJZO`+H88MXL*zN}OHa!<8aG9p!pvuWi>%bl%n)pDTT z3wHJ60q+e;V0D&lG25cO>eSjYi;`H}EwgABt?-6RP4hN?2LB`risQ#4C+7%|F43$I zx9}cQUx5sMoJN_RT9T)h=C#>46nyaKvSdw^bBEasX4nHBhJF@|A^FKRKK4wRKugrb z_o11esd6aQ%vfS~51!)Zj0mU$&HMk3^yU4)%-dA$My0DrB~W&Gm@3yw#YW-187M;{ z-|^9qe~W?Qz*#SjjKIeZc-B~sau&yD&;z^8M-WU<20=dd6Yy^Ly*iLeW6!M&U#ub5 z5YiV)-6KajZd#@<{N@IlQ$eE%ag2=|$Etxjm~UVXw1E*VwH_5waaltmmKv?V|0r#n zv@S37DGplxRbY%8ZD=qfTto4R{(0o+gu@-u>`voNxYB(WPeb{S@fqB>?NyZAwh;$w z{XY&4O#i>_tyTQLr97JaXV3DY!k-QC(aM6Zu5>LLIwoN0roJ`~250R+veMGmQGPl0 zy>s@Y5u^&?p``HldEzvr|3t<*jw2t#IrM;a_kUXlyQcl`!HWJb=h5gt5n=(K=0z#L zvSJ=B$=CYOxi<$NXDfh9_c}hMABI~4fBB%gxJ6o*ngZVefQ$cw$h?QCm-eIdIg>R2 zO297)hR+9{I~}vtDyft>(gW2uPHNIjFFaRH0}QCObd(m7QIr~jl|<*rP_ih9)`^G< z-6XA^$N023|G6T#^YeduZ`bty-(K1OEa|b&e{s9e!TDc)b?|u3f7yqw&wu3-X1M~M z(knwA5-3%QbLtJ$a^$#12v^su5Z45ZzveO5g8pBey_nAiq>ldY9-8^Twhs1I^50S( zoBm&%z377WU!1*o)O4TX{}42vjPEz0`4?v|9ORRrQ%mnjp%%1$F;ZWNXL+3(5-&>p z^+(}MmJ8Il|Ttq*}Z`oFVf>HiLQSM+}=kAwf0d3hH*0GLVhBR&CG2Oi=G5T@*& z*U0cpR&wm&gYv<9P306P4J{qFQr~vPb?9VSl66UtW z%WJt2Isb0pYM91O<5 zqs%r`C3U5Fu+uTC5vYX+!DVD;%vyqSYvxd93>C9* zI_T`V(5ZM+LAj)t%bzA$I- z1(gu|=Juzi9QV^Sz6U4)gf@e~;34YTSK=Hhq0VY>=F#!23Y$NJYtE$bgyR^n z!mKPi=0gByFrkEv6PyN^@{oK4;TcRIE=*cE5RcJ4Yspu^%Ag-cT>+z+@~3Gfs7Db^ zLpuPONS7mSC^=LY*p1J#RMGWnB1YI%gQ22cq6Q05O#qedRn}vKPzaz#(`pnC*CAM{ zsW+1!o#8XaM`>V8&Zo4ik_)rEXdfXSs-&cQ|_k#1%y@vNS9d%(L zlquK$EfN0y)h^%7(@_7Dpil-L@BIG%aM#rTY#;8g?*EtaX!k#FPzZrkaxbU_QkTr5 z)&A(6=vwPj`h8G=MoT}SR&GEGwlA}VRmh6dJcl96}Bl_s=prVFu|5SboY>4H=8*OEj_cT;1{{P$Cy9aju->p^tucbU1{l7pV5Yr6!JTH0-)JJ5094CR* zkB$!mK`9IZZZu0!(Z~SPcan*7YdI_6JTHxa)&B5V!!QsF=7`qIGJUOL$TN`fwnU~E=##sx9_?JFI36IEt6jsdY2gfWZN4QQ*k#R{&4 z>RQQ7@wXRs<=T`=`gw<{ae%8*y_(zz8YwJPn+nbI@H9lj!3VvKR@t>L#%nPOcG8QI=m)^4Ku@+!)4WYg-J& z2<8_8)?!)l*y-dK*9_p!PjXBd$S4VcPqS2kU!H;Ot(`r>dJ^;rZ!}HPESg0z9KrAd zDfEHf$QT|_G~2c8_aH`hU_FMU&$;owM_cIWC+GFp&jG&2K^}|4lZ-ja$eiAdVIsoA zDxqO5Rw02^W86X1*Pd-}P_@HocgVI z^4d$L&3i@BDl00q;DyL@0k9 z;fbFIFuh%5GuD;A2zqcAelj?r``h=IFdM5YoXVi5t@o(W-lAmX95GtAT z0-V|?3ujw1a)$g?ee!+%`ow-~g||_n+O+A|pd#oESI#*a2k+iLaaFOq!>JYl!+w?^ zuC2g{pkB}KfzoQ56c-h~{cUePx)H6|R^s zKG60gtu6%1o~HWWEJBp!ihYdVa7W;#ZPdqqu=0N$9Rr5eoWRae(kiWv0q4_@{%4SiRE&#jYXDN` z|GT?u#(&t^KGTequ|Q11KX4*g(pOnA5z%ZD3(du!)-rw*-HA zaX0Z(57fj@F$O3_q3Kgj*{^DY6|H&02w92f!hsi~%S@!ot-c)NT5OMIt2VKgtQGsE zdOj-Vq?xUj1e`tNgW| z=)6^d#q!ksouZ>vS}6jWKTYXB%Vu{R1ZbM%Ef0Y@`G0rYr2o5HhpYTAOL=tq&t@6$ zY3}9}uvX6FJqjFM>HIwK<^69c63Ht-*yj^EJ4esJmReU24yq&TbVAWfXcU-Cus~$q z*gOT7tXl`Ft(G}&$oB0BrNy^3HRQBI7!jhO(PSraNDY{^;Yj(sK2y*yDZ?iB8Suk! zTYuMosNkd(otZO6X$y$W2B^glRS2iwK6GhU>!75IwX!42X0L(UZgQF9=U{>`DSV}q z4Mtdfp?X0HHIfhMb2P^(>8IR8Yky!?Ont`0>g;_w?;(5GWpu0DnGlH&WmY+Dv ziH4D$$&G4dQYm+p7P^M{Q%o(?qo(kx4zJSk-{LH5NdI$~O`?S6etDVs0la`&L_>n0 zB&^K{UrYb@P5Zz7-BtXLJ|!Rho<>L(%9HkX_zGP<_{v{%&}4d%A?c&VwM*s^#!QMOW4&ubWO$;;C7~`2O#81bGoKi`OuJT z7x<(oEJwygx);PkD!JW&3Odd#(Dc{`YbYgk5Q|((sPpYrk32MP2@)QRN)P;#8!TN^;E9v(g?O)vWyVQ-pKu z0gr|%F@yS=7V~m63s`3G0DfElgEB;9X>J2s7oCwMuE&6~1%U^(D*S ziuT+yTeDtS-Il=|M1$g2!=*~Gw*!zATfNsax=2f(54AF4OrwOQ=gANDJm3vuO4)YCe{=SEg=`PQk0!Egc8%2w~&XSkZ;`Pb*vhn zd-|UJW|h_VRrT3UqOXex1|@MN?3=TB=7qtwMw+3mkbCz^`n-yWuzHNAvHX{!7>(|) z(hU0H2}*FD`B9Q%&_Eolv;W!NJuu|Iy@Q?A{m)V!P5vvN<;BIp63CBOI4tc^*P>#e zOvF+|#j;hPNf#cm6#+_1QT5L3kV*VUJPm0m??3nIGJG zPXLJh8yE`%78Y@ehC6#j-t!Ptd>Bgi>jdV0NDVVM99FqL6d+3_#*_m5m7U~_*=&6Q zQ4+!=2M3H-Nl*xnhr=j|@_P|Z?01x)jDNeP6RUq&cnoi+H!w?J4)GvDn`4A?YQXjv z8%En`i0?&pN3m1|1Mmgp=>PhYxM+Dx#B^IA3Bl_5W=})@Z-(OO1kR!R|Brh9?_m4z z(A58L?X2RzEalPozdzY5FUsuk#qwxbJBfeCjGS(uy|e)EYC%WVRtro;7DN@2mIgI( zC0mt#t1bs*VT#MOg@m8k5YxgYz-4x=Ake_(TC}hD8Jia0g|jL7=}&W%!fX;@tgxr1 zp>L@pucz0?wNdp4q{2l}!C~@TQ^PUmH6x%Gsd7)Pu#RVD<{0K1AQ;2omY`YTt^Bzp z=zo>>bTdoyb()d30%p%`ZC)`jm3HIqQ810ikK@=L7>93id-L&9yeqIK?U&68^JU=Q z^yW5y1~1rtBwK^;$dvnD1?SV&K0x>@11AS1bhMiKYQ=m9k-1vik{E<6}TLEjpQS>-qJq0 zarSj&C*wJ>tz~(VJv)=@gC^14h}i@~uv^w7zQ6r0Jc$=ytybGk$dwhVNuW?D09A!T zp(@jwus4e;h7sWpLb~1)-3rVGaAsSgYgo?iiE{;J12|I@7i>pHsEXkYko5L3>WuAx&pHSoU;kNC%PQM1~64QdG3X*0`gG!y0WJ8O{Bp<@EJYb z_WyE6bns4dnKj1$K07*f@BbWMoDKW`jXc)=|B8?9OPEVbz=hc&DY^>n{c0WsTMx`F~L~i<)qPR?VU}Erk+WipsUf2F^;>|FF`$i zDg@JJC!3n#t+3$ka4NhW&g|hX3E-)Wqk3e0pDSZn{cHCPIis4x0PKcP2+lc4mrxo- zBb1-9dLmWDi`-|qN%`~aUPJJes;wNHeqs&y&R)vDC)93T(kYh|PlDAOh?t1Ce z3Ny(mtKe1ccW=-XeRv7Wcm|^X_ou`C|Ml~4rysW?U34vEsx+9hE~;T4$IlSn`J<1 z+Lf>NwSOcJs`cIoj9TTIXJD!_95cUAm~9Okyf5$Rx&ISJg`UU2ZT^4fM{fTAPy=M+Bvh==jf;C{#G8MxEh=(=d7}pUSoanl^g4G zC+)`Fz$geSZAw*Tu_YChtly71T?%bR^*1-}n7I|0L3&-F3H|`0gQ$WROut&AcU6d& z1c*F2T={@Z?Yf0U0%!{94E%KPbEmFp@6H)4p7FBgZI`mV3uPzSt{ryiT)?1lM*>dsH$XjfKj}dm9BrY#FpFTn)Lm^ROr& zzcQ5Udgj;9OH=Nt|EUAJwdQ|0JoNIvogWVR-$ouw|5Ky8UbU~`koQYd{Hm_3TlJfx z1TW^E(zi|VzkOBEGkVC{mKrGEb%>x{1C%#yf#h#`+9)!{bv{==q17WGE}u z>yuM-zU%4?^|G{*q^ysXSy0MQHs2>CP01~zgX(ZdvTAAwVs%$hl(rye-A;z|-_c7n zXKKj`ios6;#LtdO@UQ4!(H;>(+1r^LkOA609YmUpf! zCwnY@iDv9CA!Sf69Qls@{XL#zc|Y0w6c`wp4c$Nt{5JSt3{UXsssAa3cAfg)@!6@L z|L}*v?2X=b>Mc zzZsCabyHqtHA%NKh7^UMj(n}j!ZUauvFhEEMwq?KOnewcqh`L`TLh*AkfmJSRgamb zbBjPivJy;imH;SXdF+W{wnKzUTG(-RoWsOc+Pbiw0H#$v&2z-v1l4On>i}UxCZUeL zf#&k!<}l?5Y)wo0HSe6zy?8fOQsbmDqPcU}o+pNyraIK*mAO7uyqZQ_i4zfz%${{q z(7UhDK|voB^gr&?Q~%E<>yQ6_bbjW=e>p!I@;`6nvGo5}-`=cO^$%Z|{nE64-itLW z`~lrMU)8RbYnxg&q3r@Kud$`&o*k`GcIQ1!Xn7CwS(knUC`eJUM8!%p6jfWO*jbik z6Y7ew+z?@+G3{j^=z{5T|Db}ZC;!iv@%s7y@tJ%6b98<<-2dIkWAXp%AFkHR|HHvm zzBK;Nd$DeVPri(mEo1#xEp48(+vMfLcZWEeUZoH_9z+Vo7LT9KTv3OZD8(e>O$t64 zvp-*H7^>w#O@HX8C;u0Lan^hP=j{0W$hH5U4E~>+d7S+JY;@Nv0%}7keQ8oab>!hU z0&5QYAP^s7KCBS)L6ELKhQfA?it=>}j2Ncq3Kb=u;24%@rSK6|JL?W8A-gz4lNh2& z4ACTpXcC)_CL!3*r8JAMzh4ajC5C_!!%@wKo=*F}XPB17f-jbD7ReNq2k&^|Ii7>8 zeKXkR|8?x0|C}8T`F}U_@crFOnW_Z*phxwdyT50cS`%he%@@5Dtl9p7D28c@iU@3r zKZI;CHhL;S3l&>F@weU=>Ijuv0KhCGrN~bx${H_%6%xIX-v4aZl`yjzVDv0w#a4(rseGJnk3JcIA#rq zbVrV9o4v!9U(bul-$Ye`Pz0i<=`FmYPt%m#wq!ouu?^(ARRb-1!q&x9-=UtqIu$~r z9@jdzp zIv*NFC!Hr(7-$@zyPk^MbC8&bP}7?s`O~B2&rS234IG<3VAnow{{uel`hPKo@xeRJ--{)V(bG64i>&P7 z2iBthpIjWd`v1xC5dV8Kk8}RRM;OQ<2H!KrJ|P8QbKpKZ0#={9wp8=y^EwfF^Uc#M zeI9i17+k}GA_^qR0LnSP$5kz!*oQLi%Bl&Ina-gDvpb2<9JHS=1qrimR|6YD| zQ{{=sm@X4Y(_{$DKt;cEP67KCg8Nm`!o~8rOiSXH#}q&@i)zwYRr}3UND_gxR-w1 zRsSm%>8j~pTjPIRoV)jb4~O_48+t7L?+qK|^(lOO&J227WDRl-3bNpRF7P)&bvIi;^jIX0c7YEg5fhbuNerVS|ZE6@D+gzeze4qAs{hGEU z*$*Crikf_~?N=`@o%^W<;W@;8efC<-x8K393sN=&5j%JcDq2dVM8EJ_tRuT3QP{xN zKp&Kq#T~aOwG51NB;BE}HN6$1D0|9(c)bh_^m=>fPKExxYtXpDYC>1}PZxa6ucQLB z-TyefaOMBe@x{d;|2Og2_8&ROYqa@Dh=UdoAjz5)0be+)rp%3qWFb2R`gMT|l(dT} zz4RG?uOq8*YK3Q;9o8S<5XJf#Be@#Hg@|oiG&{W~ z=zHf5u<3?l4C9VEe7`oy9VEw7vq=S=lV-l4Wq>y8Iw5c8|L*-2eikg;j5-Q}Hv8ZC zxtss_tHb@j`kr*w z&RaBm^_}7M;u-g+sxlUs*AS9ji&?#d?-8Jj!s?N@rbQjTq=kWXh6^J6!RQ$c-g@$b zotagFRxfiR)rHM7fz+G6Y+t)@FIJm9yKZ&bC9o+oJG*pzN2?P{g&FB`nc<)HN!aU+t*DwdO(x1V7DTzP9@ue=M`w7xQ%B|NK_&eJp@& z{Qu04|8jIb*#9>2h?HzH?#p^uzX%a@4~E}(zfXeic)71C9lqJ8zIPEHe!o@_8r(V; z466=y10Tetxo6_DFJ0uo)yG=@8ju2fRYB<~YB*jk0)~}o6e~WG5;Y}95^=2w7I&sF zS=L2vFx#u|#!e{02M>W0xD8kufr}fv@GXx!{#D6iCBH`!VO;)ICeMt%G}+dL|MOGP zgLg1Vu!xuNv|4CgWI+r6KRLYc^#8MyA^z`19?Ad3!S_DD37&rc4KPOdezJfA9?b<< z1L_KiP*RD7NHEx z7io#}RF0@+@AT8yYRvboTPpf>zl64qscxE*F-%7=NnUz`WjFYaQI4Y0rg_B2I314` z8D64-qER_HfN4r@_XURgn8{nW6Lk&=Th4lZTR=3y@7KMaO98gydS27Az2{m~q*!q+ zhPvE+Ep}XHjT7vxhe4+aCJ`UuY+4{nNADM7RAi_`bcBhL?lSH)rSS~06&vyV%pqm* zGuCB>r~lJK|I117ApW1HC&%vj@6pNW>7f5@;&J4~HPPbqeiDLDme1k5S7~xRSiQu3 z&F-1oWt?9Zq$Dv(&A1t5oJ)SI*=`_MhV(;XsLA8oOFNn)N7_9OGs@Sw9pw_G&@JBy z(@bFe{+Wobr?360ZUCKtOO{|FS5*QE@}4l3>)!xVt>HQDOB`R0iGetO=U^=?%GZI? z#uukfMiLaNq2IgyR?m6RSisx&{jB_eO01xNmsRxXiHH#+epI)GeNTUPctmBKmGbWz zB#mx&LA5F#K-hpKqgfhn94)y4bqfsdfHO9MZs@V-(g{^K&;<=gc0m8`j=lkcBOjh7 zYQtg9S7UWJGeLa`ZaG|UI(-3JSF>4&?_p;)Aoxn1Bc1)miPo7_5&KC|%82}|=i;4g zL%vrn{tgy7+pqC5)j*3<#=!rsVs&bm#W>qAP3wprIwYxSgIW$MdJs)(F&s%q`3Z19{Iwj`@RJ@o&T4*;9> z|D(f`(-SZM!(jj2%wy^Q>pB1wYV`e10K0Ah0B|<}iVutT9nbcBl-I2OZ#Yb6h^KEd zFy}U1#&4a>saNTOmZ*4f9f9b30+VlG3bPm$ks-4|^!!7KiVUW&xanB`d~qGjkm^c* zCrPUNS)wsDt)-9E4?k+=N za9AX@W{1EO2<~ZYuUjh?s#D7hjA~-#4r#AJRgn6vN~e7r(a;nN#o71bLe=Z4o=3g2 zXadg3p)RX6s5cohRfBz3iF44N8nb<5wBB2Q+M;%ki+~L<_CLv8Ks5x$bwKrM-@Os2 zJ~UklR2{t6y+EU(j#mR!4eNHGLu{8Lbh{s@Ag_8wu$un*mY@Rp02c)%YHf4)TJQ;P z4u&*a%aFWV$0^ovD^a%e02dRhK?vSWR0GoYdZNQ^7zf-K%W26w;O{}$ZbE2A_F+Pw zJw@HT>9>E_D1!?qh^uk78tw5x*&0XQ;%T`t0xRBlcI}V%WoI0o>D}@LT!8*$tcDW{ zXDhRuPiIP2dS(RFYD1KgL!11!|nd=?N$!e5cyH{6cI0euZmXj1IjS;Sh_ z|JwpiCO8&(iF{7bcK`46#999*heyXl{Kt(vHS6CR(RFeH3-Fi96P!*wu#ONO6VvlM z7q2dBZZepqaOgyipU1^8jdp`3>*_d7Hqu4Bu`;aQX`M9=F~lASNmu_XIzcQB}6LM@dz+x(d$*up$L)aK#BU9Ozx$ zlw*CXNQMJ3{cTUoZC3H2t8yAM4!+Zp(&P1Hn^U^HR*1kkpn;b!hH7yF#OpC!GK^I4_#Oz7!7l=YHVXijZkp==d>gCf4U2H zKhdwoCxa|@-`Yk-ut9H^!mEv93DkDmk)u=MIU)=0WHpk1-=LUeN$6H5o&f*;t^^Qr zpVlAMxwyyHau9}OJl)&0vv0v8?zr4%QWkv0+y1h1M@*6g-{0_>*<-$!5 z%E1@>+(-UbtF&1GXtV!c9J}!!&d$yT`_D!mNB&p0?boXSR8!@P)BsHM*QEjsBL7b$ z^4I77xMmr=4*vfN&e1*m|Bp}4-Td$8M??Id%{(>ypAG55NB|L?z+2L$FEqEtsYx zh9xpzs`z;F)X$K+jirrfyTW^HkjLxWcY5vt<_r-xy6rdJu61_+enS>TjNZU(D%`m1 zzSTH&uXL64OHctGz_|UnXdju+T9ioy3PJ`;@kg^hxiYhc^v&u zhj3r3?w9H4zF(l;S0TS%ollW^P{{sF2LXe6G#F<-r>C?0e;UVRk*$;mzSaNl!oB}- za(+78|J%r8$$vS<4-=790$)cg=mt=qCSt0MS0FO9`cfN470Ln~0!6FduO+am(Qd!E z(W*zG@X^lrtQd6FMe)AzSM?b9VWm|QUrrcSh4KT2W3A}b7y(+*ZV1czB|aVGe@O~B zMF;O-93x6!lEk~<-}1D{fB*dF`1E9u{~LKY!@2(9imh@!zJL$#edK+?`5cnK z=F7N?df{QduB)E1Pz=))@w@yZ`KNh#-e}oP&trbF0|0n81KpxpN|_(jjZpJtLlhb1 zp3)I^YZ_S}PAHfF-)KCwi6So#zCkegvA`vIoy8~;znM^f3A4M%`0V~>#ji`Lc^$6@&6j5%QR_ycfzQ_fWo2>KesfmMF!Khjj|9gqc!ySmx8cZt zkwkEQb=i=%cu3U$p6!mV^{v4oSqK;9~*fL`F|tE7w`cF+>h@*yM6&} zAm8adY+b`{(=r{q0Q!inYfLDu5!k zCj@q;V*KHXjl`809glnx_Riy74gKcjH!DM*k8hj?z|QjzaGs|KOi01OO%~;%K)Y41 z!1I(M*`gp{fu}fwsV1w5wb-}wDtH2J5r72(I0G;PHa2?zrnm5pnvmV@y8~xKu$!uk zBlhqs5Lgq(&(v>}->dM!vNJC-ZZsgQ1rS4ubeW8lGn`GgfLQ!`j%xfbpMc0*0@#jA zXd!CpQP!7Bl@PzKs+}X>3Esgb_I9u(58Wpq`d9R?$VrPQ3Cutl6TAte(t#b_w%eR< ziDYPNeuf`+H|X5M`zPIxpRLKFmBLU=!v?DH!C9@dK@}NQ_SO3Kf-@i(pkm7&$WEAs zRQ7w1=lVx8Fk+!l9S<^EEo5zEGxkDlMXwoF5G!Yc7+b?J>`zvCdg%WTl>hzk`26C` z%m03QKIs3Oc(ne%p0mCj6%^AFWuGwrd%leOOiI zvI&hqG$XXUhUF{*5&rN4Nf$f|Iz@4T$_PX;j}0}4c?6;aEpd$8wCF7f&`Ue-vM;`_ zD|&QEfZi0mt?Zrtyl<9#PKXs#m|IJH@`oq=RHLbyATz;~(w~Wg^ zYtKcs@1ok|bP;P2T%{1t!CNIFKk3X_1OM+M|2YA8|8@5}X#y?s|Lo9{|EDLXXM_CT z#3LOJgz2Sbim$;67@9i)OJD<+T9XA(EXf5$3H!4^S%QR(=$a&>9!9}%ht{k!*iJ^v zxD;C_emdyvrb765mXiuZo%0am-%Lee`olAX@+*?x8P&X8=G&ArE7wWNDDaMbp{NwF zBRV5RDXgfxUoOD=iM3^1dO0R)0gBnekf0&JnLv^?tC8*we2z-UCR`VkK_vG3QJs*9 zc0C`i7Zcz}I!qav_dq;D@q0GfIZ4DzIYPc)7w?<{#H4;S#_Mh!Z@{%}WAiBu&J2vVtV)GB{d}3lQHCK$fTg zhMk!kt)`G4zGny}$c1Ka{O0bZ5);(E=k7nZZimR9Y-FyDL9H0QAglYmx`#3vjl7#E zL6|jrN|C#vrb;{`w^{wiISJ^z+>Xsusaj3fpbwjIK^0##S-PLiHlEa$s=W*1+24iH z-CY8qjgf6_e7YzJum%iB0M$e)fjCo`kb;jNFjp-s5Klp2C#2w>0z5H=l~CD3PvV_9 zd*0@rOKKI;8F!UF{*$e4u7awSZ1m}X+-9htGo178&S8m}(sZXfC6rFxyqu0vk8T`1 z22Ya&P%=kiMHXlZiv(v=a65w~fU!{81+6EfnESVq42y^43Bu6PvJh9*!L}^o^KdY- z^glq@Rek}570TbjF-M>Y6IxC|~ z5S>Kc#{{LQMEfGec615&OS*_-&gb^VXhI6K&)>!c;@Ir*UuFDc(u5fb|Z~;S?$J#3g`f zjx+Rvy_5wgiWh}Q@KT}=Wu=@Ki|i?VMY1=9l$XMeW`Fw!Ma3mJ)GuS0!!b^IVx&uB zktLWiTyM^=U`{RMc>j{bEDXRtxcb}cA744|o;|&K_xgwDZ{ECk_T2gO?du<3J%6J& z8P2W)fE3ShX<-!Si%W2Pcz8HBUe3{+FybA5hc!LP*aoyj8KM>_F_X~;6r1qLd=4|O zUokA5HwWcBKbRqymb1HxxCkbA1MTpMyvQH46|e3-I2hyXfX<9J`>HiqOsQG)ccTFm z&j^Ta7|z^3)Ris2knw0Vip&R0>vD@!Pc|HY=}4Fh!DpnPExK4 zRLsvLQ>B`}slnaU^U42@R zMQ&+54l^0$BpFTUcf4E^lG9)btC=TFC7bc=LZ*UYPVv&!ybK^uK(xOdhEmh^!DCC6 zu*9;9fKV*Gwp*sDxdNEVC9cY-$@TH0vn1Ffq}`M49a_Q??8hK_1S7BFu2V~($4V98 z<40kzF|hXPgWrFbxPQxKC{sQ>j2D!>;V=S-is~i-;iP0D=cjGaho5`YXz6VYsHn$C zzt$Y1Wt`dWqVG6Y>}d5-UR*w!whwfLZL{C%$B(?%Z(l!qeaRJ6&Oo?xcuB~A`a}@V z!GabCl!<_BLQg*=#k*Ua!8ir`5D3!jf5&kY3ti5v0{jlxR)Ehv))}`K5!lZ|Z|i1Z zMNcsY1rh-|8iz8${s^4)y4auazd0>Fe!TQL(rJmf$niGnagzbEL-VPclVU!!uAQnv zXyw$*px%oo*a5ftw>ZOehLUt<`-L)!h?}FdKq#*Nu z!g=akLSWETkMFT3sI~*nZceSyTT;AF2~0rb>=z;vhcCot-qrrgOGtN%z9!%n`|t6| znH&G_`1pA6|Jlf6`Ty{{aq_(TM>Wf(_e@6%usKhvwSMpzT(QkQQiq*(D4x6^C5eS9 zAI-`#w_RywgmUv|baZ?%IvgF2j;zl)Da7Z~(-Z5%qDZ~lO4~U}u3kKQBj8;ekB-h6 z$b+MEs}x=d}M>;Y>o7_nx;1H8tvfsgU8@oRK_y_){bK3Lx0k6HqBS3ju}acl8$tw9yy3~ z8B5PBmz0&u1}mh--YvG<(6J|A%4Dbum?L8K!Rk9BGm->e%*Uv3`ko8WR#O~iork%m zr&^zZz+m>mY^AA$R8e!gX&Fm8C|yFK;WTRT7)}E|UD=YYIEzIP*Hy@b1Ol!^@_Wsh zjq=_|&q=%bMbPgy&MWg7M1Zn zy`v?Xy9wOQofT8mU`dKmSwJ+w?}LXzb%jS&gMq`M>f@8%AUgVqg$GZPs{Wd3`_{6h zJKA1`KkPp;mwX)xfnyfe$u2~--aQLYDDY}q5}!>ln9c}!&n8St$ooYOqUBKpB9UzU zCBGO@p%hg$qB<8X!xK~8)6NJmn({sQ_>EH^C%bcUVZby6`nC@ZoHMbiv}=DN|HN)v zVDL8$2Gi1`voyCV((Q;=N4P|D(|3*44SIXB;>yc;hqFEoDoS7pquLrTQ3*q}l*e1J zrVe+fnzTXrwnQcja9X0m7_|Mz^(G|~+$eKrrB#+k*h3Ti!JJ9^Q8yTY;d#QhtWWct zO>*nYwl{{Fw(5yHs&B4viXwmijMe^wSiA?eMy~Z zH5k8{m&3!AN1Ct=t@o_lJjniUPw%T*)(Zc&))Td+1v6Y?iUKF?8?^~=iS}f(stqhIEQ-9c{3I zWoM6(KDPK4X9?iJaY_R4JWtUaWhLO)B&bAjb?voo(rc9CE`&D=jhdEd$6`^`mmfeV| z4u9sB_s`?$YX6tkjdw9BO2#2!xwiO!M@MI_|M$t@|GlBdu>W(Fo^MH1m^^7nzCuOW z_ZR>bO{7m2=LCu4bC9HA$uo)-P7+%8oV$oGztV<`O6s1 zxN-qE9)J6yp=$quq=SjJ*JhK9P!&xv;gJ5*Ns6iqgRuBKpT7Kmj>-bZ>*fFFho=Mo z|3pt0{x8S8C;wM7CB**~L}MSIUIm!{%c^uE>o=foo8U~wudwRM_*L8L4sQVL8o0lS zxzn)I0nPVS6@%~lr^(J3gwB#(ZeD#9*#KXX0)cV{GamF+wF(Q7o&oCES|jjwhN*CZ zDFI#NIVnn%jOvppTIa$wGHHc_-UcZpPGEOZl(}Ty1xK|~(voOuSbpaY8Q&T*tqHZy zSH|__|9OXe|L)Vm|Bp{EJpO-tb~Nz+O*|szf#9q1VmBYsqtnu7M%2G=5j{; zZGWyJYL2R30U2~n+|!64BUg73D$vr!*_A_l9d#8#qH!sLJco)-+|Yt#*0w`(yb=zK zg25~FlxMD__a)eQM0X=i-G*@9-K3u;S}l^M;1ixIO;V53c6E`biD8SriY~U`16a&% zMifP&dSR%iWPLo6&q6NpG3YE6#fa6)L_aJn8-?I#heyInK+GqA$~Nqeh004Do}~Rq z_xZ~0bv=FMe?b;KPX5KyYX9^1f2T)-{NKpaW&g*=yyxyu%#)Bz=3gAkpJ*WMC&+ln1i*Rp>hHHCg&ZCDYDl5&6?u`4sYljql5Q`tpCJ;H=U9 zcYJgfu>Tzn{C^Wq?fq|R?a6v?$wHek@l9^F)QXg-n zYg7cR4tR~%sRFuIqb~5HGaC0-1}e<{Fxr6bQfGCbBEo9=fIqwq3V|N!2ha$H9r>UA z=_>yVG{yW@X%*L`vjWg2|4%&s|C8gh!T*0FPrF3d1FoikDa!B!cmZ!zImKvzj+25* zCLCY}WSDuN>d1s`O#jfY5`u&vK_4)+LTVj620tQ@5dQTRW<2T{=bR)1GH5;BV?5FV zc#G2%z?9!X9y3J;QIt8cy7=YVH;8dxGK=S7dC$5~dM2FH;S)u|@?!q}Q za~XDP#IInF{PQXuW~S;5rwZK@{VoYVyvNxB1)|QNUk#L_vREKrBHQO}uT?8NtpXdf zv_LSqQv-*R5xC+SL3+n%sb2$<#f?3w7f{vUico`Wjt{pK|jxH%0(` z$YGX@mgOjkLkMph5E9J_TL`=`RK%r|8RV9GT8q%^7PRE z#T0N@L1+UY3VN0{D;u7v{WCosmOK-l%+JmtU^5xA)VoE6?=iLV;khltB*7&n8BAa6 zCicx3I{GrMowD38&Iz5|4pgCTDqG5Rz@TWh;iZOdw$W4!Gtipde>)_g^(l%|vPd#m z;w9S8r%{u>y>Hz;>q8IhgqZC>60D=(u1J+|o81W`qt3NaM2671s)F5wiDSiL^6I!~ zHcTzQ?kEleYNm2M{=IXQTaASvdZXKU6sq82`vsbad}&?nnAIQ|muC7*TlWf2hiR*- ztUPVQZFVPEUXVE|XJ|q7uC8SY`~9~dI*3eA8P8DiI#*liby_vVA69Cuphe>r3VRPf zORh0v*oa1a++AbF!DH~PFb1V}yxxaA#W60^I{@i>JHx)ej9pnWfjE7gJueF4rtE4o zo6w)Z3{ol1svS0WkaK9#v>XMQoNmhl7T)X5qVbrPD$pY8Q7ESVN`QYf!_DR$6gmGhlQ|Va7@(&gBZqPV^77{SP2I9#{vtc zEN7l&^HEkEiGquNgNbPlbFgnW%<&L0cP%wpBq`wUxo&JR zN?cNuPDEmWL|s3ThA_iKXY0;O46oWdUEyQIt2g^w+1pfK!+kVat8Us8x%`w?eYVNa z!eRHp^A9->v#Jb1E=xNkdl zA#N+fYZnO0TpW~}l2Z%zqz_8wki8YB9+6^3qtPf7h#o1o24j_WB6~&SitZW%d4tfN zuKWyvH8uh_T#eyL;80eA+k#}%QTGuLombt|Cmt|Mz#JCut0o~0YY`O#3aD}+$>i7P zJW7il$zrnRlYvODrN|g_70kX`X-y!i;{*BEZdV(Xv+MSA3Yd#g6DXie^H}VAU^|{S zGLeY=w<}Ww1a=bh&_WkO8#sS)jsdwWF2sG6C?sj^C8`>0UYvEyGgv#gFl&}(mlbL0 zx3z1sqMtWH^~?5Kz6O#7(|?(sV+_5+2WglO)~rO`-QS$OwcTi*JL=lxbz z)9UK6RcqA5Pi+08hL9{}zpBguFj^2NRj-@(o&IbSsaqJA?viJO4X9cKv_O z4lhmz`~N1M#?7D{`cciuTl>PAGJGdk_pN1H`SIgcP0dT&leP{%2fq(~`wf(N3Px2c z1LsmtkM$p?7-gkU^wt{x>*U0X|9EyWod0j+>9qdMk+-Ay8Xx%5wO+I@Z?pKNX%;c3 zS`5EgWJxNMf~#MbYFXD5)=mBneqE3f`D?zWxkZtRvWp_EX@nJ78NRwQ#Y?D=DqPcI z+GQbNBA6RTm)Z z=jd(hoe0{&fk<@?=GfHpyc#2;0MPsKkeXM+ljKjBZyZZmh z$??GdH}Q1h|JBG_LcqR#F$y~1*Pa)<=MK8E$o6k?9owk=qd>|$0sM+p`5NF1e5Fu+ zwEP;B;)c)|0e%E%-4Uo#+BbzS6e}h!EDFE%RiwtALuac4pH}&s<@uCD%QtAWH09nA!F9c^G+5?fshX30@ zufSkRM4DnwhI*o^J;0zUg1^UE@`8ehrkI}_1d#4a|3<9G2tb}EyCeA-ey=BCyc)VE z1-~pRJil6oLk*ikIB@;Cz3;5jeMhU#(@#QFo+W%WTF7oYoF&|^W;0~>uGYYDd*6cq zRu@~SQQ18C;P&gBH~INdPQ=0aC!%X71z!WY%^s9!K5wfX@qjt1d*95;8yZ`oUw6P> z#s=h;sF53?s&f|+E@!9!UoDFCYd{L{m4wtVd_q@9Djqf__Shy!4j5QiLepuCSkO7rfGb1s1@5}vVtU0bsu7i)-W6w`GC;uf&Rnk0o^)a*pm9= zUse88=vP*%{@Clf8$^Da8@3t~+wKnjQtK z-J_@|aSOR}br2e?ZUZ;!y_2+AlCiB+Sc*T^B2#P)igk8Tplg!i*b9)Hi?>Zg=H(a= z4gp)E{bHJt0!1MD7UDD%eajvg*_s7y6^+~K(ndzf##nZww`y(=40nvY->_65>~VSi z0mfwnqUXOZ@DipdE4vSl1#^|rG5WQUv2hSyb#PRuarCRSKbeNBT|)yvI9rmK3yR?A zwNmIOWd!>f@P-03;)!Lx@|*e^V5;^X>(S+$J{$JA?mc$qYg5I#naqm@X7Vev)|yNC+PWPg5uJujQ_KLUT4pW zyEluheTZa}CdgF=$f&*31olmt}>~*^_^`< zGk~)aO;NFqO{vqdZnWA-OR$5pvYtLi4@!b5zd>4v$f$=akfFmIZs`5At@kH~58C|{ zQ7Za=vVqPAi1C|yrFHNgSmo(){;!9uuLoF*|JU*9sT=?2==|hlIRD?o)8+i%I`lUV z7S;C--e3EUb8GnYPJ?OM#q&bet6FDK-`%Kw7s`tmFIEN`Q2cpG|NY8MnCd7mV!T)x zsLhE*9s3;zJ*stduDzGvdX2=39-~U3nO?Ikr=hf5Lg%0A|cYkvh>q{>%9D2k+v7WWSK{O^)Jq-v2o{K00&#|IUZ_f17z^ zG#rxsos0n+StE7x6--l+;aSay%dOvjYvNZb-Gnhyn%GvgPp~!(VizDwUGk8{><16{ zfIgHeZm|gWvQ^b%%z(x-lq^yts;OUWAHzBcCZw3dat~01z^p8DdU7tT6uKrKrC-RHZCG&$ zn4Csbk4eI{3y}vry8{J+lsI@~I2}nXtx5&j>b+W}!McG3_}gz*eXoRpVkA~+#30qJ zLkC>Am;v*Mcd23ZIRNX68bD7t(7H9}LJXHPz?~l+3M~1U3jk^YeEhie3mL!FJRJa< zqqtI~IxzVAF!$eqRJ~5YpG(*J9G^b=UjosbWE7P>HNZCe&&iP+|NZ3XY`Fiok%udK z&-lRJpmKd0pfy)EtOFKki76&olS)L=glla$hBv4*G$HmEWSSc&NScme{9Y(S1uW6@ zPJq#!)9+cW1w{f3*9AqqDy9YHB%xwso1t4kGDJsx)Def0>sClq2V9Lry*EVZ8BT%v|4?Fg$-Ay@D%ILsSGWv2Aq$s2_gil#E8kM2V_JDBd;=$PLO4T-B*q^M3P zYwJXF_~9QJTtb|}amwI#t8=p`rYPFomG(gM`=x!n(;EeK!P0*14}}S2WETdtColcb z61_AK;xF1!;l=8a@NGqZLTk9^N z?kgxy92G;pt~*y)gZad0`p^MUGOo=xo>ViA$vItiojMX7w4*^gTDNx8NB*yJ_VYj5 z<^SpNg`5BV=witKx|xSd`L&+?e429~CW6Ui5|rWvDhrG#7^4X(5DyhDPA4$s#}mTf zYabM4ow>4H%wa8L2v1h^t`cxlVyno=%EE zVr94m`Yq;}NM(KkhRz)Fe6XS!MQ~pJj+ST+#6U0@sF>r7aYbDI-(U&T1=0!5b3!q% zFMUi$;KhU|&k#pKd)2uT1sPhRqJoxyWFc@Ao-6$Ls7z%?pH50td@Bd(61;u;edq&7 z*(4IANbv;mV=6KMkgpTo-5I3SV51KxUT}Kt$P3k1V%{J?3Z9AvCA%Y$?gq1ZC`}mZ z6qS2*$N@MJ&ZUSqD%+xaGKDfq@f0(uB;9crC7Ht#$B@m!1hKZ05%_V2G7SQ=`Ol`k z{Jh75OSAsPcX5iqbO8&Pl?YL=gGSR4YZIpU->9IwIs?j#WTarAz0NE$(H+^^Ey?~` zHlP+F2J6hfQ9&vwV-%A)^13Ub06d?g1j7=gcamPX)TA1Lw^jo%&1Y~wMN5=&^$1gu zAV_uzjPH0bMx?UQiG(s7mA7xdw+Cl}V7Vxe%_3fs1YN43m%sVJida}Patp3WV)7Kg zQw(d_HTk6X12(rKiQR~aXx$A_*Hr%^vBe0Y@Suv7|r8xH2abv}Lc|C}Tbk^lMP z=-AW$kIn}FuZ=t+?F~uRr~l_93FiZ>Q~Foa`FTlv5~)C4lcblp zzJv(}q}T&=y#Wcn+uNdXX}DSDAMwTnG zt8>fDJ8=-ouA|Z5q zIk~^b*?Zan1HaPBO9Am+wBgm(vJTAh55EYMTVAp1n%gy9{|dd>Yj2QrK`JjWDR6mr zFJ{0I^B~R zbb|4qrzwWC`F2bfv<*-XglKl3$*KUXdIgIiku+bmYBb9Bm{`&jhe`Hb0b_KH3QQ7p zyMNXGH$uJt!YxUv!e8Bg{-=J(_hu_9HWV zqJm1_Z27B;_b@|S*SN{yZHDf{COcgytLX;LaCv2Q#eUPZJ65d?b*amQUXpY%zdu)$ zVAPECrtx5x`O=?0_8(fp5=|CqUk~uM`+tY0p8wa`>0tla$it02H*#Rt>H+S|mOrBh zm_dR~xPW;S|9pJK2S>1VI)Vw?gWj{6^?5*z&%>d9|ABqRa#)m@CnfnqJB?M{tWxmF zH!aBMa)Vd>@YFm#^uH<#kPZd$L#LEbZT|m9XYT#K^P}^@|8FCY75||c&UHqC_`%2? zC3V0DQ21Og3s%{2t&r74y`X=e=|PbejeI8mAe5ERW9R*}G|7omWXy9fllY9E73IIal-xxFXp{ekUi`=Nv%{l7{%_)O?*Fe@0|-o$ zhtvUF>xfEEU&96W<@cVaC!=Avr&ypPYK=4g0am${Udj2>{oEp3aE-ZR=%h?%p>*5i*wzD zU{=FbdMLJ{Fv(zX=aEeX+x8l5pwb|*|1{64@?YOJ?w|m)%YWDZ_x$4UVvzrvc-;H{ z>s9~)^W=}N0R+4J*{T55W&H z|Fh$ZA^y)s9)16R&4Pch`**mNyH=aO)n&)vZ+-Ku{a(!`d%aayrNUIVRLv`^Ewarw z-kXqJWk3Sm162clMl%~kd-^~0tJk5bE8a=HYtlF8OjX#l?ALdZs{T<_%6x}z|EoLk zs`Ed)NHt{CZM;9-hNn?ut$4QSWrN1C`DaD>FI~;L9RRfM|Ibdm{r}M*|2Oh@{-0~s z0}P+UKaB;Trq7?P31D-l0Omv+Yyh2X0CglAi~z&4hG#|juU>XC0<_8h)8kWD{-2x; z=l>gdxOo3jjwbj9QXH>a1;`6LhsB*K3b#2!=@XN~hhaKEy~uEhd9*U+*<^S%ZO1*QfPY5-S)u|cWK7rv%%%uzXK;@8z_u>Igu2X$qu&|QfnhwU z;9)AGjcL%8bkY=1C7cZ(PhD>c^U7u%S;8YSj+7(5=Zm!OS$o!UjRwz@FB)ylFRXiR zCK$fUz0JKN<*6g(Wn(rD9nvJ518d|w(j^WagQrLw*!kDKfaC56}(DZed-fhoahDUEl{_b(h<-XQG&`&p)O?bR zV46nO-YTpah{8C-Wduf@%fmcR?{tMf>tcO?r{nr(wgmu zU;p0|m@suE1yqEvpdFXISe3RW&Li^03tEynPs%*ODWZD-QVA*nIFnlX=nl@)_6rCS zsS)~67VvGJMpht-L#zGg8C?`c*kO>PLM8~OzzALfnTp17bySe%yTJ@DgGfieFa>(s zYWpR8j{t98sDP{uroJ$3=bukseh*Mlkb<^1C#j=uY(#1^;pkaB!l6hp{u1UpbhkSx zV_u7!q3UU=T0ljKCpd;B>eU8~VTz2(9hwsH@%ptQBlNYxeldqr1g;lpDx0Cb+VMgH zcIXVhrVV7&#D2}$F(5m%_U4yS&1jhX)0g}~q?G8;U zeZE&iO55)~Fe?p62k_TF^c#qL*<~DXHZ2hCIcG(k4$!}YCAx)o;OX@X@P;gUuJnS{ z=+eyJNP+*&m~hHt&OTj~gma0aU%zHK?9iADg~@OA-SvW>nKe7Kl#}Ecrp1CM#{OoJ zOndUMK>ZG_-lFl0koWyoiKx?M78hiW${AWv@Dh~;j{6PKT-50(UiM$Y3{GuX)33d_ zkDNKUK_$pZ!RDcsgnQa#hyUxEf1}(Q@$~xoA8)?zGnlMy5Q)!l-_lM0XWO;a4FE0r z|H;|8d;kCNcsT#x%ww6)VP!uzkJ!6y2E>-$(uYwoRUjl-wxCMka5pEJ{FbOJHC+{B z&w6n17+k}GB9LNQidJCGbDftYa3auXYTzJT=yF@}wpgGmzE&ja$|C`16H?4&)*K3| z2r%8Z793!#qB+{lGeJ2;87g4O)8mv(uK${X98!8qiiC2DJwi#B&5UN5Sw4+K+{|D* zoHeZ0M1mOcQ5IuFM;y*bY_>?z)Z!c#7$)O2v?(EVYn5bEvYu82q)x5IDURRI$bzCZ zG+Y7e)HWq)v4&O|n7a1fped#$D!}WUwMmLTt>`sDWaUvI!8xt`fC@ahW1tIh>W~0c zMQri&0#PP_S7>s{Ve>#>R-58v0>mUi`yyiyfJw5?7QTUoeX5}}3z#G%qa#*VRMp3N z=CNN8L0;9U8HFO=IynAt{i+=|#?KQ>IU13R=`zp6k>7qt1ebZ%1+xs5bVf+on{=vT zU&5(+jmSL}G9!T{97Br0EySg1G%AS*(bs7ln%BQn6%XDS+w1;ppw0j5=-7?_dvtL!_wOCQpSBw94T%LI$ z%lpdkonhbP(ahx&2`^COmF#ELY1a{nB7Ym~coGXwn5soimDfvD6gWYxRs6QI1v9xeADEhFPo2WZ_;5hq7) zC9~^;OcbXJwj05eE>N+r_+`?aD8UhmQ%I@3V2qgAJc*i|{~EQ(DE)$CBfpNk4+M2*~LypQ5gUnjysmsFu|1g>|zDgtFF_sz}Ymay5{ILRgcR&t$uF%KGq_Wd7c7X>WtnH2>5%#K?aNoNnO21UC~yc zqq0~a->ccgM0qbeBzFPv3DOA3ooTpBSS1T*NHY`I=tJ;m|j1)3$ z=(frS&{f&20cop#JHVW-LOryI-%KX>Tkx@=a%CxldE=LiFirWYTLl78MU>u{oeDk^| zVxlE)Hu0sh7D(MXNZbytinmC-vE}}*WJ5B(hLkVJC^8Mk+sQaD&=Qjc|Ckc;evyM{ zc@%+2xp{4m-k=mgibgu!s4@Q^(ftJ#O1C|S!7i}n4=D^LX|!uj%gTR}v3)HTg*Gmi zsKlhjBF)4OpGT_ z(|iVBE#~0-80^*$orFzGF2i>WB3B2Vmj?%rmY0u~|Ief4esOzwc6xGrpm~YJgN=tq z(Hj=?g|_qa-v7EFC2|qm&IqMxUxfaX(sWJ|^hBPkJS2iSDN44Nb8&n`6+*$uSqH8b zR4*vMB;(kH!romvl&c-Y?xZlAWt0``wnexyZX#CINGxB;^OsTtSOP|jRHTQDAuuV( z{GV{1dMw(+q28)8vP=-3JPk1wE!4qoxRILmv?$WvBq`EL4AL@*#Hx(=T8Pw|h}6uB zj7b>D7vcvS@<_~v7NTh+??W?=c0JAfHfl%~lwNUx5^8eH9X%oHRzVY-imcu1*!1sS zFEmiyYnvn5y_PZbAYg^7%FjuLOTzX7?%3BBl)I~IlDrh}fOlJRTj&bX3z6a3Huq&w ztz^jQFMi5I(`_7a*W(Q?TK;raDEjl+ZNZw&cK^KoJGAo^#X3^GdHo>7B3+2(Vb+UU zq${;tG8kN-_Em$PY5n-(te{=(f67aC6(eBV{jb9l@BHs{@c-P*BVs$K(FHd-yk#T4 zYT$>!{URgQLkFW_Rd4-gg`QPWciTJz)Gzl}voGrUD;OE|D(hxxbc^>lH|pDCJ#3D; z)ioF%2g~EVERUeZ&Sg^Jiih_G5X2e~P8&}2LU$TNiUD^|Ihal2ly4N*_o z`gRQA|A=YjdI<;TM@{Zm^dW~?@>)ao2^WZW=~fEF(lC*I;+@(0G_N_wJ$MYRQ86LK z98|H9gqa4|e3gP3T(U8k!w>xU1EeUMmNPaS$7d(riGL>^xAf!bNtS1HFA@z!tQn8$ z_08xt9%!U7XkQoTb5ugMpYH)2L@`Xcs#&qDXxAH#8zf9;oW!kDy;3jDhI|^i&<++%h$OVEcs_OI%a(P{j_>oFC= za#4tzY4(oB*7SI{DgxChj#bMrOF+ITnQo0UV5g6r;He$Tu108zqLHg+>PB{hD0@mK z{;<#V%%yu;CkeJ|_p454>o7I?s$UlVHTsDZ|0Mx#8via73~MV}{k4uZokQM zp3PBKK4Z%kTmA2&g$zo^XYq8G|2*{0NC)C-Ns?LTWU|9DXodl`Sc+7Evw zjOWv;LCd;gVG0$%4%1DTlBxP^KX#pA9R53&<|G#%Lf`(<=uAQT^*06U6TD>S00Z zvG-dyY3E-hHNSQP+io=p^wMdmx5Y)T2OD@F%S#2qccJ6+!tH;VQm_klKw!Se3#u|a zh>L}D@r@N)Gc*0Zbx{I_%>PbF)+CTTs!UPYd*d3SPruD6sN0~L3ncWuUnUiV6 z7`%P`?DZvhnj|6}a15#E6Hv1ow(+mh@4Q*0{(iWTV7h9tNKpWB_x9LubpPjlI?8|P z{d>(bV)fMm+Wfyxj$QeGd~!V4e>d`Y{$JKeug3?>NvBq?3|IxbDFimUhFV~MaFqjl zKG&!SRv|-C@Im)=7qdIs*xD53IJLVB3AnoX(UPT+JTp>B#>B849~g zffoLMdU$c_-v2v28~Fc59?r6Ik|cU`$9#0xb^$P$+p?DzSP;U)dxGW3*pw#$EG(wf zIY0=5+dni&o{YN%1u+V?Z&+Nr)-_2$)k~nd*)=psh)WF7iNDksAtA2N%Rezs#zUNt zPG?aMcMkQCM?*nw(J?AVm&vt3x4R}Hg}7QDdR2!RK55qI>lYN0gX7=uG(Mg6|DuGe z-TrOO|8aWa=l{Dn8_s_=@(Af9QlYO;34Mm;%*CF+t3ty^2Z4HvB9%e<_l>+7+E!Qs zc_y=`!IT8ZbFx5hWogSxDYB^;xkOjTK0b1kmq5vlEFc|Pc<|bt2K8Zv(i|0Zq#My7 z91~itkT&|Uy9>NwFAz*XN?M2fEU*kOh^HkdY7hSpEPpI;dDtJnte}T@{I%) z1+?N@T+aNusZs02wNuTUT2DYpZus^}Cf>9QIoh*nR7LZg6l|zzNeVbcypMb;a)piu zq#;EamWSTE4SfU1Hcma|=G|@fy{H_{n>bh-*T$r6Q0lS>RQFmmL7Ppe{7Czi{ zBBYxPm6r+9%F;9C)mj{z!%tA-b_Wb7WPLi0>#ee#NnQH^b1|=M3xWp9I?k6}be^1zbY1Q?s0{$O|onUtYt=;wBAR(E-?F?lA{}-6x z4~T;CVoE_=KssZy?7M%w03;J9SV2wi;IWG~DZq}r&BJ@3kW}5@1?o#hxLtn7r>>G$ zhtXpf1TQ?up$;gUE>|`a%h{EkH5RZr==(zdc=LU5d4;z>Y^!hFHR~D-ksZnKEMH0Da zQLt*POCh8*{ewY7!iR2}GG#1~6&i$0>gG|i3JIqBqtCDTp=KyPhk4#&zLytn3?liR zT7Ojibsw?S#vf^IsB>g}P4zzDJ0Iv(W7-;7e-+KO{~e*WyHqEIgFipoWe*a7!5t_Y!dzUvvftzwq{d6@4CX3e?14dp1sZG64~v)HRm{(XaBmJ7l}^BBAA_hG~hj=~W8x zJfN1X?oZdEYd?_U98$?b{$Zim6DvA}HCAlC?7n_AmXG_&G58wYJXiA5>L~wW!saO*~^inLFwM<9m z?Xvpj_!5wZls_1pu0iEsRZLxj|Mrv&4tNvsVp&6N4%v24GD~*3qDeX4_>NDe*K|)0 z?>~+6G+T2WeWm%d`Lr=fUrd0A7WN}f5Wo465JdTu;2O#vfRrxgNLo$8ml=0LzWXu= z8G{=&#yO~~)OZ_WYc)CECdCEE`Xe}3ca{HSQTEFDXFjd>zYpE~--qXiL;jzQJYM{l zH*BQW68(kG87ugwf8$$}ajtqBH5_@$aWe%fe_^P@T%Pi|T5~ase>CoL3kWW&=p6FJ z0Jn0$7lCira4%*D9_lhTZzHnW>T`KpRku{ z;EakrH*(?Fj_q4HqvBex*#1HDeyl0h>O<}aYvZgo##sIBlgC$W*roMJ{L!=$R*I?G zH=gPz*i;XRK8EL0KV9{|71F-xr%nI6IP>iP7pFt~pN%|*P+y~sCrfVyP}cesjv#7&cXI{NaTI!agU~8)NTqmI!A2}uuUgoITZnAS=e;j7Tq<@J zic##kjs*FnbTtJ+cJs0&5$co+&M0yj)VS~@>_gxw6TysPHEMW+ei6J@XJGjxP&?>+ z7`SI0($VE)Xj0N03|G+BJL^DF>#Xb5!DEIecY5{Yv*-xZjjP%Pq9k1+8XEqf?pEW8 z6vmU`VdCmJ(#o|O@PK{cU@hEQly{T7?1D=f=c6P*Bi7P`!S$(5*%O?;kKQWS;eDLP z+qFtD{xFWoBKt$Bmr}3}#^K>{pMLuPQ?WLBZUfru%69NsnW z10>YdwgbBIC)^b%kU!d=ILvV5{G}c_ zH_q%{YGo6o;duHFthmYn@2IdgimlHynT%p{Yq4bRgKh3VdnwtL8v(@5{JVluEjWz` z3$HL{Y}8u}4cd2APmWV;j?;aDfSBA+;HVf!KMb4L&AsreOSJqM?H{`8|D<@I5}2&C z0cg|zPtK2B{r~u4i2t;ahqHwr<>;=<@TX==UtM2U`xM4LJ;l2j`E>Dq<~>!-+EA!> zp8lm9>7|Hic)gS^Rm+#X`p&K^fLj`RFuPx~iub2gp49T`rajdTULQ@#YGkHUv0!nR zoMddyz*2AfNLJk<-vbLOUQwB8!W)BCZHG5H$w6|HqZm-ac54YiH2Z5QHmW288BPI@ zT5hL!_^l;ig#;S#G2wvqFqm84uVkgK`Np>-B4~!Y%U?&(3ZV_TieU5%dJJ}JrXAsRv)*H2iS9?gr{!YgIQ2K>ccpzl1 z3X=6kC@x5LU!=YO1^Y99n)QE?Ug+Q*&hV<2zdFQ!IXpS>;=djb`5!m(2>U-OrYg3J z%qXS&`oxrw-|UbmB7wpTfk-awNXdOu%}DXM(CPX5Zz+~4l@sO;1nrv%t3tJpz!R-* z%PyJ5&u#IpiVI_@#*GyjVQT8_kU1`a4s|Vwv}*&HGukIM1U??Gm#DZcaETo3tR^i` zT3Z@{NJn&WEUQLqy9RlN7}|f*ryKv5`;mva|8aEY#eX?EJU<)w|0W*Jk)`c|v;8}@ zv)~&yxozURp_pVP#2J{ObPiBa=nb0`1ek&aUBEQG12N3NjC)Q4$PdgI-@(~bNf(}F z4`!O@i%lX$p?iQyh7$cBF%65?@0Z~c*3Fm2aPf4SudIUyV z+O!Fqs*Yi}f@xZD^&Np6810(+DV`{zQV?;9vfoQol#EvYeERZx*0I0eynYp#@G7P+ ztXi3t+9d&WMsC$lo>!0wVF6qAyRvX82lxc>QM*OpmMqc)+`_CByVSCPacO`cS$ekz z#tVM-2^VZnP*$U^`*IoW>3zV95=>D^K@JNxQjm(I7LYsDvzfw1e2PARIV|HD;&1t+ zxrIeSjod{3Au~@u0``HVi<+P?li2cUHHUX>qCij}x=2f=m&n;Taw;;S>#kmce`Wv5 zz@w%3_Xa5vz%f}ON#T(>E+KjP*$dQ8{6EFCqzCU3w8Sy`9@CzCfj0hsa_q)`w@>)utu3)>)GU!*kwzM;dSFYJ?J9Cfz zMLBL8-l;N};pD@vcYrFASzB!d59LK8Ppp*H^|z5M|ECH^x^+9-)nCH&}#oVI`rZ{9uM&!H}bUGQS_Mi7XY$yy#z3zw=#8E zcArhg9<1HM;lX*kY^@((SC#I~({;jg!Ov~-4=i(d{HG89H&ljRGN4`mzi{~f$@$>_ zznQ0v|2t#eUj`Te>g9mbin|@iPykNPJ%Oy>SA6)*{%N-d{z!J&BbX`G)CPf%oZcYN z88EyL1{xpP#2F$UeuCy?U*W6!n3e`FtI=F_fiN5|0NdGnBWstA zxHA;LXOJTuPiY1zfIw?S-8{%Wx$3z;D$+)}3z5;CF1B!w*h1KJp|vk^1xIhf!S(XGcLdYf-O z9*yDqt;eHs&i*C^o^Cz<|F-@Det-og3kqI5drr4Tc|m?bak(|Z34#ZrctL*I8ZBu| z5_Iq-@VC(V|Nh0*^H(>|*Vab!`ae24J9h5>9-ST?5BC3!Jl`xR&Jd;GhAawhp^Z^S z5jYwhZEan{0?tv13c9r=K9J%Pn9ti80&j~2;+}XET#FU42XOgU3JAYTEFAs*D!l9p zJYJNfpb{KP_}$~n8gS8-yjSoyl+FQvx%D(jFk>Jv1^=K3d{@A%yafLw3-0K*ph(_2 zkl=4g@gCp|h4V1hfbHa<+t%`)qxJW<_ixMLWa8?6iiAgG^3cr$rsiMPZYwK#p_lVD6iHwDP ze0X-ae|WTic%)0n^{NV;?8hm0|NZ9XnF6=9^(}WYo{(ZL+Jj@VC;?3WfA+4gw{0AW zzw=WJuzg4XS=hFRT_6V(r`Sp(oGlx&y4}8omd7!1vS^TU65mt4#sS?gmrrt-Atg(W z(>)Z619lO;#Uh8~{Q1pq6p^B2?l^&K%Bwb9o^G(JEo+rjHP@^9p8QE{OOzJfo4G}O z0VUqb@*h;`xm*=$b1OuuYgM2Sc+sf!(r6@VY=>G7*?@$~rHd2{NwtYEsu zN_ZKKqTpKJ;~koSyY{fly@`%@Sk>+==mo+?E)nFNRHa;$D0cilyBB>lJw_wm$;u(f za~-$lY1UBVL(N3d+%JtTS+vfnbdW7kjuR=(n)f zJGP2bO|4l^fx}3GTeoF;iHxY~4h03YC7!xe)+HolcIuF~($(N7)cj7ip4mf!!Zs-~ zdUJPK!Kn-txYx!5qO==Tb3m7BL!c)5qlH4ms}&X;E`Gm!CrVrYUFn^v*C4A(-J!A4 zw8uZJl(98zcZ*UL`37D%vLEGUxziD(hx*u$Owl52|AYwy>pSW`%VI|7Xd z?S{umI~nJbEKu<0Kgqn!sC}pj+C7NA7t3kFgo*?sZ;jlpg?l5PM5#*Fq`_oG!X9&2nmyH&+b?`*km zSVV6z6q-Cvt3X15Mt=lBClwTeb4@TGWfsX65D2$Pl=twBrvzYOJyG-`N? zcK@B!a<(`JRarFti}MrQ{ru1hRJA^sLZsyVb=NzqSPK9%@K1#%z$ z86Ns}u2au{vp5<};&8M4gU0y1_y6Ah^z-ra-}kTQKmLEN_P-!wcTS5CKl}ix+)%Qc z7i-+05QF9eG5!k*7Xo0=9H)2zH*ck2x}C^vUqJiwVMT?(`gpGNTic?LCBhI* z?VbYTkwi2{P2&fC0#`y()o50-pdRXB@FsJ0kn5+aB|h8;@c~GdBLagDaMN$aPrjY_ z4}2hl`zjvcJ3bVMOA9}}=ktPOQFEQj6+yi=`o7(n|0e^<*X#9qy (value at the top of the values.yaml). +default_redirection_url: "" +# default_redirection_url: https://example.com + +theme: light + +## +## TOTP Configuration +## +## Parameters used for TOTP generation +totp: + ## The issuer name displayed in the Authenticator application of your choice + ## See: https://github.com/google/google-authenticator/wiki/Key-Uri-Format for more info on issuer names + ## Defaults to . + issuer: "" + ## The period in seconds a one-time password is current for. Changing this will require all users to register + ## their TOTP applications again. Warning: before changing period read the docs link below. + period: 30 + ## The skew controls number of one-time passwords either side of the current one that are valid. + ## Warning: before changing skew read the docs link below. + ## See: https://www.authelia.com/docs/configuration/one-time-password.html#period-and-skew to read the documentation. + skew: 1 + +## +## Password Policy Config +## +## Parameters used for Password Policies +password_policy: + ## See: https://www.authelia.com/configuration/security/password-policy/ + standard: + enabled: false + min_length: 8 + max_length: 0 + require_uppercase: false + require_lowercase: false + require_number: false + require_special: false + zxcvbn: + ## See https://www.authelia.com/configuration/security/password-policy/#zxcvbn for more info + enabled: false + min_score: 3 + +## +## Duo Push API Configuration +## +## Parameters used to contact the Duo API. Those are generated when you protect an application of type +## "Partner Auth API" in the management panel. +duo_api: + enabled: false + hostname: api-123456789.example.com + integration_key: ABCDEF + plain_api_key: "" + +## NTP settings + +ntp: + address: "time.cloudflare.com:123" + version: 4 + max_desync: 3s + disable_startup_check: false + disable_failure: true + +## +## Authentication Backend Provider Configuration +## +## Used for verifying user passwords and retrieve information such as email address and groups users belong to. +## +## The available providers are: `file`, `ldap`. You must use one and only one of these providers. +authentication_backend: + ## Disable both the HTML element and the API for reset password functionality + disable_reset_password: false + + ## The amount of time to wait before we refresh data from the authentication backend. Uses duration notation. + ## To disable this feature set it to 'disable', this will slightly reduce security because for Authelia, users will + ## always belong to groups they belonged to at the time of login even if they have been removed from them in LDAP. + ## To force update on every request you can set this to '0' or 'always', this will increase processor demand. + ## See the below documentation for more information. + ## Duration Notation docs: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + ## Refresh Interval docs: https://www.authelia.com/docs/configuration/authentication/ldap.html#refresh-interval + refresh_interval: 5m + + ## LDAP backend configuration. + ## + ## This backend allows Authelia to be scaled to more + ## than one instance and therefore is recommended for + ## production. + ldap: + ## Enable LDAP Backend. + enabled: false + + ## The LDAP implementation, this affects elements like the attribute utilised for resetting a password. + ## Acceptable options are as follows: + ## - 'activedirectory' - For Microsoft Active Directory. + ## - 'custom' - For custom specifications of attributes and filters. + ## This currently defaults to 'custom' to maintain existing behaviour. + ## + ## Depending on the option here certain other values in this section have a default value, notably all of the + ## attribute mappings have a default value that this config overrides, you can read more about these default values + ## at https://www.authelia.com/docs/configuration/authentication/ldap.html#defaults + implementation: activedirectory + + ## The url to the ldap server. Format: ://
[:]. + ## Scheme can be ldap or ldaps in the format (port optional). + url: ldap://openldap.default.svc.cluster.local + + ## Connection Timeout. + timeout: 5s + + ## Use StartTLS with the LDAP connection. + start_tls: false + + tls: + ## Server Name for certificate validation (in case it's not set correctly in the URL). + server_name: "" + + ## Skip verifying the server certificate (to allow a self-signed certificate). + ## In preference to setting this we strongly recommend you add the public portion of the certificate to the + ## certificates directory which is defined by the `certificates_directory` option at the top of the config. + skip_verify: false + + ## Minimum TLS version for either Secure LDAP or LDAP StartTLS. + minimum_version: TLS1.2 + + ## The base dn for every LDAP query. + base_dn: DC=example,DC=com + + ## The attribute holding the username of the user. This attribute is used to populate the username in the session + ## information. It was introduced due to #561 to handle case insensitive search queries. For you information, + ## Microsoft Active Directory usually uses 'sAMAccountName' and OpenLDAP usually uses 'uid'. Beware that this + ## attribute holds the unique identifiers for the users binding the user and the configuration stored in database. + ## Therefore only single value attributes are allowed and the value must never be changed once attributed to a user + ## otherwise it would break the configuration for that user. Technically, non-unique attributes like 'mail' can also + ## be used but we don't recommend using them, we instead advise to use the attributes mentioned above + ## (sAMAccountName and uid) to follow https://www.ietf.org/rfc/rfc2307.txt. + username_attribute: "uid" + + ## An additional dn to define the scope to all users. + additional_users_dn: OU=Users + + ## The users filter used in search queries to find the user profile based on input filled in login form. + ## Various placeholders are available in the user filter: + ## - {input} is a placeholder replaced by what the user inputs in the login form. + ## - {username_attribute} is a mandatory placeholder replaced by what is configured in `username_attribute`. + ## - {mail_attribute} is a placeholder replaced by what is configured in `mail_attribute`. + ## - DON'T USE - {0} is an alias for {input} supported for backward compatibility but it will be deprecated in later + ## versions, so please don't use it. + ## + ## Recommended settings are as follows: + ## - Microsoft Active Directory: (&({username_attribute}={input})(objectCategory=person)(objectClass=user)) + ## - OpenLDAP: + ## - (&({username_attribute}={input})(objectClass=person)) + ## - (&({username_attribute}={input})(objectClass=inetOrgPerson)) + ## + ## To allow sign in both with username and email, one can use a filter like + ## (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person)) + users_filter: "" + + ## An additional dn to define the scope of groups. + additional_groups_dn: OU=Groups + + ## The groups filter used in search queries to find the groups of the user. + ## - {input} is a placeholder replaced by what the user inputs in the login form. + ## - {username} is a placeholder replace by the username stored in LDAP (based on `username_attribute`). + ## - {dn} is a matcher replaced by the user distinguished name, aka, user DN. + ## - {username_attribute} is a placeholder replaced by what is configured in `username_attribute`. + ## - {mail_attribute} is a placeholder replaced by what is configured in `mail_attribute`. + ## - DON'T USE - {0} is an alias for {input} supported for backward compatibility but it will be deprecated in later + ## versions, so please don't use it. + ## - DON'T USE - {1} is an alias for {username} supported for backward compatibility but it will be deprecated in + ## later version, so please don't use it. + ## + ## If your groups use the `groupOfUniqueNames` structure use this instead: + ## (&(uniquemember={dn})(objectclass=groupOfUniqueNames)) + groups_filter: "" + + ## The attribute holding the name of the group + group_name_attribute: "cn" + + ## The attribute holding the mail address of the user. If multiple email addresses are defined for a user, only the + ## first one returned by the LDAP server is used. + mail_attribute: "mail" + + ## The attribute holding the display name of the user. This will be used to greet an authenticated user. + display_name_attribute: "displayname" + + ## The username of the admin user. + user: CN=admin,DC=example,DC=com + plain_password: "" + + ## + ## File (Authentication Provider) + ## + ## With this backend, the users database is stored in a file which is updated when users reset their passwords. + ## Therefore, this backend is meant to be used in a dev environment and not in production since it prevents Authelia + ## to be scaled to more than one instance. The options under 'password' have sane defaults, and as it has security + ## implications it is highly recommended you leave the default values. Before considering changing these settings + ## please read the docs page below: + ## https://www.authelia.com/docs/configuration/authentication/file.html#password-hash-algorithm-tuning + ## + ## Important: Kubernetes (or HA) users must read https://www.authelia.com/docs/features/statelessness.html + ## + file: + enabled: true + path: /config/users_database.yml + password: + algorithm: argon2id + iterations: 1 + key_length: 32 + salt_length: 16 + memory: 1024 + parallelism: 8 + +## +## Access Control Configuration +## +## Access control is a list of rules defining the authorizations applied for one resource to users or group of users. +## +## If 'access_control' is not defined, ACL rules are disabled and the 'bypass' rule is applied, i.e., access is allowed +## to anyone. Otherwise restrictions follow the rules defined. +## +## Note: One can use the wildcard * to match any subdomain. +## It must stand at the beginning of the pattern. (example: *.mydomain.com) +## +## Note: You must put patterns containing wildcards between simple quotes for the YAML to be syntactically correct. +## +## Definition: A 'rule' is an object with the following keys: 'domain', 'subject', 'policy' and 'resources'. +## +## - 'domain' defines which domain or set of domains the rule applies to. +## +## - 'subject' defines the subject to apply authorizations to. This parameter is optional and matching any user if not +## provided. If provided, the parameter represents either a user or a group. It should be of the form +## 'user:' or 'group:'. +## +## - 'policy' is the policy to apply to resources. It must be either 'bypass', 'one_factor', 'two_factor' or 'deny'. +## +## - 'resources' is a list of regular expressions that matches a set of resources to apply the policy to. This parameter +## is optional and matches any resource if not provided. +## +## Note: the order of the rules is important. The first policy matching (domain, resource, subject) applies. +access_control: + ## Default policy can either be 'bypass', 'one_factor', 'two_factor' or 'deny'. It is the policy applied to any + ## resource if there is no policy to be applied to the user. + default_policy: deny + + networks: [] + # networks: + # - name: private + # networks: + # - 10.0.0.0/8 + # - 172.16.0.0/12 + # - 192.168.0.0/16 + # - name: vpn + # networks: + # - 10.9.0.0/16 + + rules: [] + # rules: + # - domain: public.example.com + # policy: bypass + # - domain: "*.example.com" + # policy: bypass + # methods: + # - OPTIONS + # - domain: secure.example.com + # policy: one_factor + # networks: + # - private + # - vpn + # - 192.168.1.0/24 + # - 10.0.0.1 + # - domain: + # - secure.example.com + # - private.example.com + # policy: two_factor + # - domain: singlefactor.example.com + # policy: one_factor + # - domain: "mx2.mail.example.com" + # subject: "group:admins" + # policy: deny + # - domain: "*.example.com" + # subject: + # - "group:admins" + # - "group:moderators" + # policy: two_factor + # - domain: dev.example.com + # resources: + # - "^/groups/dev/.*$" + # subject: "group:dev" + # policy: two_factor + # - domain: dev.example.com + # resources: + # - "^/users/john/.*$" + # subject: + # - ["group:dev", "user:john"] + # - "group:admins" + # policy: two_factor + # - domain: "{user}.example.com" + # policy: bypass + +## +## Session Provider Configuration +## +## The session cookies identify the user once logged in. +## The available providers are: `memory`, `redis`. Memory is the provider unless redis is defined. +session: + ## The name of the session cookie. (default: authelia_session). + name: authelia_session + + ## Sets the Cookie SameSite value. Possible options are none, lax, or strict. + ## Please read https://www.authelia.com/docs/configuration/session.html#same_site + same_site: lax + + ## The time in seconds before the cookie expires and session is reset. + expiration: 1h + + ## The inactivity time in seconds before the session is reset. + inactivity: 5m + + ## The remember me duration. + ## Value is in seconds, or duration notation. Value of 0 disables remember me. + ## See: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + ## Longer periods are considered less secure because a stolen cookie will last longer giving attackers more time to + ## spy or attack. Currently the default is 1M or 1 month. + remember_me_duration: 1M + +## +## Redis Provider +## +## Important: Kubernetes (or HA) users must read https://www.authelia.com/docs/features/statelessness.html +## +## The redis connection details +redisProvider: + port: 6379 + + ## Optional username to be used with authentication. + # username: authelia + username: "" + + ## This is the Redis DB Index https://redis.io/commands/select (sometimes referred to as database number, DB, etc). + database_index: 0 + + ## The maximum number of concurrent active connections to Redis. + maximum_active_connections: 8 + + ## The target number of idle connections to have open ready for work. Useful when opening connections is slow. + minimum_idle_connections: 0 + + ## The Redis TLS configuration. If defined will require a TLS connection to the Redis instance(s). + tls: + enabled: false + + ## Server Name for certificate validation (in case you are using the IP or non-FQDN in the host option). + server_name: "" + + ## Skip verifying the server certificate (to allow a self-signed certificate). + ## In preference to setting this we strongly recommend you add the public portion of the certificate to the + ## certificates directory which is defined by the `certificates_directory` option at the top of the config. + skip_verify: false + + ## Minimum TLS version for the connection. + minimum_version: TLS1.2 + + ## The Redis HA configuration options. + ## This provides specific options to Redis Sentinel, sentinel_name must be defined (Master Name). + high_availability: + enabled: false + enabledSecret: false + ## Sentinel Name / Master Name + sentinel_name: mysentinel + + ## The additional nodes to pre-seed the redis provider with (for sentinel). + ## If the host in the above section is defined, it will be combined with this list to connect to sentinel. + ## For high availability to be used you must have either defined; the host above or at least one node below. + nodes: [] + # nodes: + # - host: sentinel-0.databases.svc.cluster.local + # port: 26379 + # - host: sentinel-1.databases.svc.cluster.local + # port: 26379 + + ## Choose the host with the lowest latency. + route_by_latency: false + + ## Choose the host randomly. + route_randomly: false + +## +## Regulation Configuration +## +## This mechanism prevents attackers from brute forcing the first factor. It bans the user if too many attempts are done +## in a short period of time. +regulation: + ## The number of failed login attempts before user is banned. Set it to 0 to disable regulation. + max_retries: 3 + + ## The time range during which the user can attempt login before being banned. The user is banned if the + ## authentication failed 'max_retries' times in a 'find_time' seconds window. Find Time accepts duration notation. + ## See: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + find_time: 2m + + ## The length of time before a banned user can login again. Ban Time accepts duration notation. + ## See: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + ban_time: 5m + +## +## Storage Provider Configuration +## +## The available providers are: `local`, `mysql`, `postgres`. You must use one and only one of these providers. +storage: + ## + ## PostgreSQL (Storage Provider) + ## + postgres: + port: 5432 + database: authelia + username: authelia + sslmode: disable + timeout: 5s + +## +## Notification Provider +## +## +## Notifications are sent to users when they require a password reset, a u2f registration or a TOTP registration. +## The available providers are: filesystem, smtp. You must use one and only one of these providers. +notifier: + ## You can disable the notifier startup check by setting this to true. + disable_startup_check: false + + ## + ## File System (Notification Provider) + ## + ## Important: Kubernetes (or HA) users must read https://www.authelia.com/docs/features/statelessness.html + ## + filesystem: + enabled: true + filename: /config/notification.txt + + ## + ## SMTP (Notification Provider) + ## + ## Use a SMTP server for sending notifications. Authelia uses the PLAIN or LOGIN methods to authenticate. + ## [Security] By default Authelia will: + ## - force all SMTP connections over TLS including unauthenticated connections + ## - use the disable_require_tls boolean value to disable this requirement + ## (only works for unauthenticated connections) + ## - validate the SMTP server x509 certificate during the TLS handshake against the hosts trusted certificates + ## (configure in tls section) + smtp: + enabled: false + enabledSecret: false + host: smtp.mail.svc.cluster.local + port: 25 + timeout: 5s + username: test + plain_password: test + sender: admin@example.com + ## HELO/EHLO Identifier. Some SMTP Servers may reject the default of localhost. + identifier: localhost + ## Subject configuration of the emails sent. + ## {title} is replaced by the text from the notifier + subject: "[Authelia] {title}" + ## This address is used during the startup check to verify the email configuration is correct. + ## It's not important what it is except if your email server only allows local delivery. + startup_check_address: test@authelia.com + disable_require_tls: false + disable_html_emails: false + + tls: + ## Server Name for certificate validation (in case you are using the IP or non-FQDN in the host option). + server_name: "" + + ## Skip verifying the server certificate (to allow a self-signed certificate). + ## In preference to setting this we strongly recommend you add the public portion of the certificate to the + ## certificates directory which is defined by the `certificates_directory` option at the top of the config. + skip_verify: false + + ## Minimum TLS version for either StartTLS or SMTPS. + minimum_version: TLS1.2 + +identity_providers: + oidc: + ## Enables this in the config map. Currently in beta stage. + ## See https://www.authelia.com/docs/configuration/identity-providers/oidc.html#roadmap + enabled: false + + access_token_lifespan: 1h + authorize_code_lifespan: 1m + id_token_lifespan: 1h + refresh_token_lifespan: 90m + + enable_client_debug_messages: false + + ## SECURITY NOTICE: It's not recommended changing this option, and highly discouraged to have it below 8 for + ## security reasons. + minimum_parameter_entropy: 8 + + clients: [] + # clients: + # - + ## The ID is the OpenID Connect ClientID which is used to link an application to a configuration. + # id: myapp + + ## The description to show to users when they end up on the consent screen. Defaults to the ID above. + # description: My Application + + ## The client secret is a shared secret between Authelia and the consumer of this client. + # secret: apple123 + + ## Sets the client to public. This should typically not be set, please see the documentation for usage. + # public: false + + ## The policy to require for this client; one_factor or two_factor. + # authorization_policy: two_factor + + ## Configures the consent mode; auto, explicit or implicit + # consent_mode: auto + + ## Audience this client is allowed to request. + # audience: [] + + ## Scopes this client is allowed to request. + # scopes: + # - openid + # - profile + # - email + # - groups + + ## Redirect URI's specifies a list of valid case-sensitive callbacks for this client. + # redirect_uris: + # - https://oidc.example.com/oauth2/callback + + ## Grant Types configures which grants this client can obtain. + ## It's not recommended to configure this unless you know what you're doing. + # grant_types: + # - refresh_token + # - authorization_code + + ## Response Types configures which responses this client can be sent. + ## It's not recommended to configure this unless you know what you're doing. + # response_types: + # - code + + ## Response Modes configures which response modes this client supports. + ## It's not recommended to configure this unless you know what you're doing. + # response_modes: + # - form_post + # - query + # - fragment + + ## The algorithm used to sign userinfo endpoint responses for this client, either none or RS256. + # userinfo_signing_algorithm: none + +portal: + open: + enabled: true diff --git a/enterprise/authelia/19.0.12/questions.yaml b/enterprise/authelia/19.0.12/questions.yaml new file mode 100644 index 00000000000..8302b85a113 --- /dev/null +++ b/enterprise/authelia/19.0.12/questions.yaml @@ -0,0 +1,3113 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 2 + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: podOptions + group: "General Settings" + label: "Global Pod Options (Advanced)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: expertPodOpts + label: "Expert - Pod Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + label: "Host Networking" + schema: + type: boolean + default: false + - variable: dnsConfig + label: "DNS Configuration" + schema: + type: dict + additional_attrs: true + attrs: + - variable: options + label: "Options" + schema: + type: list + default: [{"name": "ndots", "value": "1"}] + items: + - variable: optionsEntry + label: "Option Entry" + schema: + type: dict + additional_attrs: true + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + - variable: nameservers + label: "Nameservers" + schema: + type: list + default: [] + items: + - variable: nsEntry + label: "Nameserver Entry" + schema: + type: string + required: true + - variable: searches + label: "Searches" + schema: + type: list + default: [] + items: + - variable: searchEntry + label: "Search Entry" + schema: + type: string + required: true + - variable: domain + group: "App Configuration" + label: "Domain" + description: "The highest domain level possible, for example: domain.com when using app.domain.com" + schema: + type: string + default: "" + required: true + - variable: default_redirection_url + group: "App Configuration" + label: "Default Redirection URL" + description: "If user tries to authenticate without any referrer, this is used" + schema: + type: string + default: "" + valid_chars: '^https?:\/\/(.*)' + - variable: theme + group: "App Configuration" + label: "Theme" + schema: + type: string + default: "auto" + enum: + - value: "auto" + description: "auto" + - value: "light" + description: "light" + - value: "grey" + description: "grey" + - value: "dark" + description: "dark" + - variable: log + group: "App Configuration" + label: "Log Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: level + label: "Log Level" + schema: + type: string + default: "info" + enum: + - value: "info" + description: "info" + - value: "debug" + description: "debug" + - value: "trace" + description: "trace" + - variable: format + label: "Log Format" + schema: + type: string + default: "text" + enum: + - value: "json" + description: "json" + - value: "text" + description: "text" + - variable: totp + group: "App Configuration" + label: "TOTP Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: issuer + label: "Issuer" + description: "The issuer name displayed in the Authenticator application of your choice" + schema: + type: string + default: "" + - variable: period + label: "Period" + description: "The period in seconds a one-time password is current for" + schema: + type: int + default: 30 + - variable: skew + label: "skew" + description: "Controls number of one-time passwords either side of the current one that are valid." + schema: + type: int + default: 1 + - variable: password_policy + group: "App Configuration" + label: "Password Policy Configuration" + description: "Authelia allows administrators to configure an enforced password policy." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: standard + label: Standard + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + - variable: min_length + label: "Minimum Password Length" + description: "Minimum Password Length" + schema: + type: int + required: true + show_if: [["enabled", "=", true]] + default: 8 + - variable: max_length + label: "Max Passsword Length" + description: "Max Password Length" + schema: + type: int + required: true + show_if: [["enabled", "=", true]] + default: 0 + - variable: require_uppercase + label: "Require Upppercase" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + required: true + - variable: require_lowercase + label: "Require Lowercase" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + required: true + - variable: require_number + label: "Require Numbers" + description: "Require Numbers in the password" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + required: true + - variable: require_special + label: "Require Special Characters" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: zxcvbn + label: zxcvbn + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + required: true + - variable: min_score + label: "Min Score" + schema: + type: int + required: true + show_if: [["enabled", "=", true]] + default: 3 + - variable: duo_api + group: "App Configuration" + label: "DUO API Configuration" + description: "Parameters used to contact the Duo API." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostname + label: "Hostname" + schema: + type: string + required: true + default: "" + - variable: integration_key + label: "integration_key" + schema: + type: string + default: "" + required: true + - variable: plain_api_key + label: "plain_api_key" + schema: + type: string + default: "" + required: true + - variable: session + group: "App Configuration" + label: "Session Provider" + description: "The session cookies identify the user once logged in." + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Cookie Name" + description: | + The name of the session cookie. By default this is set to authelia_session. + It’s mostly useful to change this if you are doing development or running multiple instances of Authelia. + schema: + type: string + required: true + default: "authelia_session" + - variable: same_site + label: "SameSite Value" + description: | + You can read about the SameSite cookie in detail on the MDN. In short setting SameSite to Lax is generally + the most desirable option for Authelia. None is not recommended unless you absolutely know what you’re doing + and trust all the protected apps. Strict is not going to work in many use cases and we have not tested it in + this state but it’s available as an option anyway. + schema: + type: string + default: "lax" + enum: + - value: "lax" + description: "lax" + - value: "strict" + description: "strict" + - variable: expiration + label: "Expiration Time" + description: | + The period of time before the cookie expires and the session is destroyed. This is overriden by + remember_me_duration when the remember me box is checked. + schema: + type: string + default: "1h" + required: true + - variable: inactivity + label: "Inactivity Time" + description: | + The period of time the user can be inactive for until the session is destroyed when the remember me box is + not checked or is otherwise disabled. Useful if you want long session timers but don’t want unused devices to be vulnerable. + schema: + type: string + default: "5m" + required: true + - variable: remember_me_duration + label: "Remember-Me duration" + description: | + The period of time before the cookie expires and the session is destroyed when the remember me box is checked, a user + selecting this option negates the inactivity timeout. Setting this to -1 disables this feature entirely. + schema: + type: string + default: "5M" + required: true + - variable: regulation + group: "App Configuration" + label: "Regulation Configuration" + description: "This mechanism prevents attackers from brute forcing the first factor." + schema: + additional_attrs: true + type: dict + attrs: + - variable: max_retries + label: "Maximum Retries" + description: "The number of failed login attempts before user is banned. Set it to 0 to disable regulation." + schema: + type: int + default: 3 + - variable: find_time + label: "Find Time" + description: | + The period of time analyzed for failed attempts. For example if you set max_retries to 3 and find_time to + 2m this means the user must have 3 failed logins in 2 minutes. + schema: + type: string + default: "2m" + required: true + - variable: ban_time + label: "Ban Duration" + description: | + The period of time the user is banned for after meeting the max_retries and find_time configuration. + After this duration the account will be able to login again. + schema: + type: string + default: "5m" + required: true + - variable: authentication_backend + group: "App Configuration" + label: "Authentication Backend Provider" + description: | + Used for verifying user passwords and retrieve information such as email + address and groups users belong to. + schema: + additional_attrs: true + type: dict + attrs: + - variable: disable_reset_password + label: "Disable Reset Password" + description: "Disable both the HTML element and the API for reset password functionality" + schema: + type: boolean + default: false + - variable: refresh_interval + label: "Reset Interval" + description: "The amount of time to wait before we refresh data from the authentication backend" + schema: + type: string + default: "5m" + required: true + - variable: ldap + label: "LDAP backend configuration" + description: "Used for verifying user passwords and retrieve information such as email address and groups users belong to" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: implementation + label: "Implementation" + description: "The LDAP implementation, this affects elements like the attribute utilized for resetting a password" + schema: + type: string + default: "custom" + enum: + - value: "activedirectory" + description: "Active Directory" + - value: "custom" + description: "Custom" + - variable: url + label: "URL" + description: "The url to the ldap server. Format: ://
[:]" + schema: + type: string + default: "ldap://openldap.default.svc.cluster.local" + required: true + - variable: timeout + label: "Connection Timeout" + schema: + type: string + default: "5s" + required: true + - variable: start_tls + label: "Start TLS" + description: "Use StartTLS with the LDAP connection" + schema: + type: boolean + default: false + - variable: tls + label: "TLS Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: server_name + label: "Server Name" + description: "Server Name for certificate validation (in case it's not set correctly in the URL)." + schema: + type: string + default: "" + - variable: skip_verify + label: "Skip Certificate Verification" + description: "Skip verifying the server certificate (to allow a self-signed certificate)" + schema: + type: boolean + default: false + - variable: minimum_version + label: "Minimum TLS version" + description: "Minimum TLS version for either Secure LDAP or LDAP StartTLS." + schema: + type: string + default: "TLS1.2" + enum: + - value: "TLS1.0" + description: "TLS1.0" + - value: "TLS1.1" + description: "TLS1.1" + - value: "TLS1.2" + description: "TLS1.2" + - value: "TLS1.3" + description: "TLS1.3" + - variable: base_dn + label: "Base DN" + description: "The base dn for every LDAP query." + schema: + type: string + default: "DC=example,DC=com" + required: true + - variable: username_attribute + label: "Username Attribute" + description: "The attribute holding the username of the user" + schema: + type: string + default: "uid" + required: true + - variable: additional_users_dn + label: "Additional Users DN" + description: "An additional dn to define the scope to all users." + schema: + type: string + default: "OU=people" + required: true + - variable: users_filter + label: "Users Filter" + description: "The groups filter used in search queries to find the groups of the user." + schema: + type: string + default: "" + required: true + - variable: additional_groups_dn + label: "Additional Groups DN" + description: "An additional dn to define the scope of groups." + schema: + type: string + default: "OU=Groups" + required: true + - variable: groups_filter + label: "Groups Filter" + description: "The groups filter used in search queries to find the groups of the user." + schema: + type: string + default: "" + required: true + - variable: group_name_attribute + label: "Group name Attribute" + description: "The attribute holding the name of the group" + schema: + type: string + default: "cn" + required: true + - variable: mail_attribute + label: "Mail Attribute" + description: "The attribute holding the primary mail address of the user" + schema: + type: string + default: "mail" + required: true + - variable: display_name_attribute + label: "Display Name Attribute" + description: "he attribute holding the display name of the user. This will be used to greet an authenticated user." + schema: + type: string + default: "displayName" + - variable: user + label: "Admin User" + description: "The username of the admin user used to connect to LDAP." + schema: + type: string + default: "CN=admin,ou=people,DC=example,DC=com" + required: true + - variable: plain_password + label: "Password" + schema: + type: string + default: "" + required: true + - variable: file + label: "File backend configuration" + description: "With this backend, the users database is stored in a file which is updated when users reset their passwords." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: path + label: "Path" + schema: + type: string + default: "/config/users_database.yml" + required: true + - variable: password + label: "Password Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: algorithm + label: "Algorithm" + schema: + type: string + default: "argon2id" + enum: + - value: "argon2id" + description: "argon2id" + - value: "sha512" + description: "sha512" + - variable: iterations + label: "Iterations" + schema: + type: int + default: 1 + required: true + - variable: key_length + label: "Key Length" + schema: + type: int + default: 32 + required: true + - variable: salt_length + label: "Salt Length" + schema: + type: int + default: 16 + required: true + - variable: memory + label: "Memory" + schema: + type: int + default: 1024 + required: true + - variable: parallelism + label: "Parallelism" + schema: + type: int + default: 8 + required: true + - variable: notifier + group: "App Configuration" + label: "Notifier Configuration" + description: "Notifications are sent to users when they require a password reset, a u2f registration or a TOTP registration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: disable_startup_check + label: "Disable Startup Check" + schema: + type: boolean + default: false + - variable: filesystem + label: "Filesystem Provider" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: filename + label: "File Path" + schema: + type: string + default: "/config/notification.txt" + required: true + - variable: smtp + label: "SMTP Provider" + description: "Use a SMTP server for sending notifications. Authelia uses the PLAIN or LOGIN methods to authenticate." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: host + label: "Host" + schema: + type: string + default: "smtp.mail.svc.cluster.local" + required: true + - variable: port + label: "Port" + schema: + type: int + default: 25 + required: true + - variable: timeout + label: "Timeout" + schema: + type: string + default: "5s" + required: true + - variable: username + label: "Username" + schema: + type: string + default: "" + - variable: plain_password + label: "Password" + schema: + type: string + default: "" + - variable: sender + label: "Sender" + schema: + type: string + default: "" + required: true + - variable: identifier + label: "Identifier" + description: "HELO/EHLO Identifier. Some SMTP Servers may reject the default of localhost." + schema: + type: string + default: "localhost" + required: true + - variable: subject + label: "Subject" + description: "Subject configuration of the emails sent, {title} is replaced by the text from the notifier" + schema: + type: string + default: "[Authelia] {title}" + required: true + - variable: startup_check_address + label: "Startup Check Address" + description: "This address is used during the startup check to verify the email configuration is correct." + schema: + type: string + default: "test@authelia.com" + required: true + - variable: disable_require_tls + label: "Disable Require TLS" + schema: + type: boolean + default: false + - variable: disable_html_emails + label: "Disable HTML emails" + schema: + type: boolean + default: false + - variable: tls + label: "TLS Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: server_name + label: "Server Name" + description: "Server Name for certificate validation (in case it's not set correctly in the URL)." + schema: + type: string + default: "" + - variable: skip_verify + label: "Skip Certificate Verification" + description: "Skip verifying the server certificate (to allow a self-signed certificate)" + schema: + type: boolean + default: false + - variable: minimum_version + label: "Minimum TLS version" + description: "Minimum TLS version for either Secure LDAP or LDAP StartTLS." + schema: + type: string + default: "TLS1.2" + enum: + - value: "TLS1.0" + description: "TLS1.0" + - value: "TLS1.1" + description: "TLS1.1" + - value: "TLS1.2" + description: "TLS1.2" + - value: "TLS1.3" + description: "TLS1.3" + - variable: access_control + group: "App Configuration" + label: "Access Control Configuration" + description: "Access control is a list of rules defining the authorizations applied for one resource to users or group of users." + schema: + additional_attrs: true + type: dict + attrs: + - variable: default_policy + label: "Default Policy" + description: | + The default policy defines the policy applied if no rules section apply to the information known about the request. + It is recommended that this is configured to deny for security reasons. Sites which you do not wish to secure at all + with Authelia should not be configured in your reverse proxy to perform authentication with Authelia at all for performance reasons. + schema: + type: string + default: "deny" + enum: + - value: "bypass" + description: "bypass" + - value: "one_factor" + description: "one_factor" + - value: "two_factor" + description: "two_factor" + - value: "deny" + description: "deny" + - variable: networks + label: "Networks" + schema: + type: list + default: [] + items: + - variable: networkItem + label: "Network Item" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + - variable: networks + label: "Networks" + schema: + type: list + default: [] + items: + - variable: network + label: "network" + schema: + type: string + default: "" + required: true + - variable: rules + label: "Rules" + schema: + type: list + default: [] + items: + - variable: rulesItem + label: "Rule" + schema: + additional_attrs: true + type: dict + attrs: + - variable: domain + label: "Domains" + description: "Defines which domain or set of domains the rule applies to." + schema: + type: list + default: [] + items: + - variable: domainEntry + label: "Domain" + schema: + type: string + default: "" + required: true + - variable: policy + label: "Policy" + description: | + The specific policy to apply to the selected rule. This is not criteria for a match, this is the + action to take when a match is made. + schema: + type: string + default: "two_factor" + enum: + - value: "bypass" + description: "bypass" + - value: "one_factor" + description: "one_factor" + - value: "two_factor" + description: "two_factor" + - value: "deny" + description: "deny" + - variable: subject + label: "Subject" + description: | + This criteria matches identifying characteristics about the subject. Currently this is either + user or groups the user belongs to. This allows you to effectively control exactly what each user is + authorized to access or to specifically require two-factor authentication to specific users. Subjects + are prefixed with either user: or group: to identify which part of the identity to check. + schema: + type: list + default: [] + items: + - variable: subjectitem + label: "Subject" + schema: + type: string + default: "" + required: true + - variable: networks + label: "Networks" + schema: + type: list + default: [] + items: + - variable: network + label: "Network" + schema: + type: string + default: "" + required: true + - variable: resources + label: "Resources" + description: "is a list of regular expressions that matches a set of resources to apply the policy to" + schema: + type: list + default: [] + items: + - variable: resource + label: "Resource" + schema: + type: string + default: "" + required: true + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - 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: 9091 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + additional_attrs: true + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: certificateIssuer + label: Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + show_if: [["advanced", "=", true]] + required: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + show_if: [["advanced", "=", true]] + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + show_if: [["advanced", "=", true]] + default: false + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: certificateIssuer + label: certificateIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID of the user running the application" + schema: + type: int + default: 568 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: scaleGPUEntry + label: GPU + schema: + additional_attrs: true + type: dict + attrs: + # Specify GPU configuration + - variable: gpu + label: Select GPU + schema: + additional_attrs: true + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + - variable: workaround + label: "Workaround" + schema: + type: string + default: workaround + hidden: true +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: identity_providers + group: "Advanced" + label: "Authelia Identity Providers (BETA)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: oidc + label: "OpenID Connect(BETA)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: access_token_lifespan + label: "Access Token Lifespan" + schema: + type: string + default: "1h" + required: true + - variable: authorize_code_lifespan + label: "Authorize Code Lifespan" + schema: + type: string + default: "1m" + required: true + - variable: id_token_lifespan + label: "ID Token Lifespan" + schema: + type: string + default: "1h" + required: true + - variable: refresh_token_lifespan + label: "Refresh Token Lifespan" + schema: + type: string + default: "90m" + required: true + - variable: enable_client_debug_messages + label: "Enable Client Debug Messages" + schema: + type: boolean + default: false + - variable: clients + label: "Clients" + schema: + type: list + default: [] + items: + - variable: clientEntry + label: "Client" + schema: + additional_attrs: true + type: dict + attrs: + - variable: id + label: "ID/Name" + description: "The ID is the OpenID Connect ClientID which is used to link an application to a configuration." + schema: + type: string + default: "myapp" + required: true + - variable: description + label: "Description" + description: "The description to show to users when they end up on the consent screen. Defaults to the ID above." + schema: + type: string + default: "My Application" + required: true + - variable: secret + label: "Secret" + description: "The client secret is a shared secret between Authelia and the consumer of this client." + schema: + type: string + default: "" + required: true + - variable: public + label: "public" + description: "Sets the client to public. This should typically not be set, please see the documentation for usage." + schema: + type: boolean + default: false + - variable: authorization_policy + label: "Authorization Policy" + description: "The policy to require for this client; one_factor or two_factor." + schema: + type: string + default: "two_factor" + enum: + - value: "one_factor" + description: "one_factor" + - value: "two_factor" + description: "two_factor" + - variable: consent_mode + label: "Consent Mode" + description: | + Configures the consent mode. This can be set to auto (default), explicit (consent required every time) or + implicit (automatically assumes consent for every authorization, never asking the user if they wish to give consent.) + schema: + type: string + default: "auto" + enum: + - value: "auto" + description: "auto" + - value: "explicit" + description: "explicit" + - value: "implicit" + description: "implicit" + - variable: userinfo_signing_algorithm + label: "Userinfo Signing Algorithm" + description: "The algorithm used to sign userinfo endpoint responses for this client, either none or RS256." + schema: + type: string + default: "none" + enum: + - value: "none" + description: "none" + - value: "RS256" + description: "RS256" + - variable: audience + label: "Audience" + description: "Audience this client is allowed to request." + schema: + type: list + default: [] + items: + - variable: audienceEntry + label: "" + schema: + type: string + default: "" + required: true + - variable: scopes + label: "Scopes" + description: "Scopes this client is allowed to request." + schema: + type: list + default: [] + items: + - variable: ScopeEntry + label: "Scope" + schema: + type: string + default: "openid" + required: true + - variable: redirect_uris + label: "redirect_uris" + description: "Redirect URI's specifies a list of valid case-sensitive callbacks for this client." + schema: + type: list + default: [] + items: + - variable: uriEntry + label: "Url" + schema: + type: string + default: "https://oidc.example.com/oauth2/callback" + required: true + - variable: grant_types + description: "Grant Types configures which grants this client can obtain." + label: "grant_types" + schema: + type: list + default: [] + items: + - variable: grantEntry + label: "Grant" + schema: + type: string + default: "refresh_token" + required: true + - variable: response_types + description: "Response Types configures which responses this client can be sent." + label: "response_types" + schema: + type: list + default: [] + items: + - variable: responseEntry + label: "type" + schema: + type: string + default: "code" + required: true + - variable: response_modes + description: "Response Modes configures which response modes this client supports." + label: "response_modes" + schema: + type: list + default: [] + items: + - variable: modeEntry + label: "Mode" + schema: + type: string + default: "form_post" + required: true + - variable: cnpg + group: Postgresql + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Postgresql Database" + schema: + additional_attrs: true + type: dict + attrs: + - variable: instances + label: Instances + schema: + type: int + default: 2 + - variable: hibernate + label: Hibernate + description: "enable to safely hibernate and shutdown the postgresql cluster" + schema: + type: boolean + default: false + - variable: storage + label: "Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: size + label: Size + schema: + type: string + default: "256Gi" + - variable: walsize + label: Walsize + schema: + type: string + default: "256Gi" + - variable: pooler + label: "Pooler" + schema: + additional_attrs: true + type: dict + attrs: + - variable: instances + label: Instances + schema: + type: int + default: 2 + - variable: Monitoring + label: "Metrics" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enablePodMonitor + label: "enablePodMonitor" + schema: + type: boolean + default: true + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + max_length: 10240 + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/enterprise/authelia/19.0.12/templates/NOTES.txt b/enterprise/authelia/19.0.12/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/enterprise/authelia/19.0.12/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/enterprise/authelia/19.0.12/templates/_configmap.tpl b/enterprise/authelia/19.0.12/templates/_configmap.tpl new file mode 100644 index 00000000000..92fcd45a4a2 --- /dev/null +++ b/enterprise/authelia/19.0.12/templates/_configmap.tpl @@ -0,0 +1,363 @@ +{{/* Define the configmap */}} +{{- define "authelia.configmap.paths" -}} +enabled: true +data: + AUTHELIA_SERVER_DISABLE_HEALTHCHECK: "true" + AUTHELIA_JWT_SECRET_FILE: "/secrets/JWT_TOKEN" + AUTHELIA_SESSION_SECRET_FILE: "/secrets/SESSION_ENCRYPTION_KEY" + AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: "/secrets/ENCRYPTION_KEY" + AUTHELIA_STORAGE_POSTGRES_PASSWORD_FILE: "/secrets/STORAGE_PASSWORD" + {{- if .Values.authentication_backend.ldap.enabled }} + AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PASSWORD_FILE: "/secrets/LDAP_PASSWORD" + {{- end }} + {{- if .Values.notifier.smtp.enabled }} + AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE: "/secrets/SMTP_PASSWORD" + {{- end }} + AUTHELIA_SESSION_REDIS_PASSWORD_FILE: "/secrets/REDIS_PASSWORD" + {{- if .Values.redisProvider.high_availability.enabled }} + AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_SENTINEL_PASSWORD_FILE: "/secrets/REDIS_SENTINEL_PASSWORD" + {{- end }} + {{- if .Values.duo_api.enabled }} + AUTHELIA_DUO_API_SECRET_KEY_FILE: "/secrets/DUO_API_KEY" + {{- end }} + {{- if .Values.identity_providers.oidc.enabled }} + AUTHELIA_IDENTITY_PROVIDERS_OIDC_HMAC_SECRET_FILE: "/secrets/OIDC_HMAC_SECRET" + AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_PRIVATE_KEY_FILE: "/secrets/OIDC_PRIVATE_KEY" + {{- end }} + +{{- end -}} + +{{- define "authelia.configmap.configfile" -}} +enabled: true +data: + configuration.yaml: | + --- + theme: {{ .Values.theme | default "light" }} + default_redirection_url: {{ default (printf "https://www.%s" .Values.domain) .Values.default_redirection_url }} + ntp: + address: {{ .Values.ntp.address | default "time.cloudflare.com:123" }} + version: {{ .Values.ntp.version | default 4 }} + max_desync: {{ .Values.ntp.max_desync | default "3s" }} + disable_startup_check: {{ .Values.ntp.disable_startup_check | default false }} + disable_failure: {{ .Values.ntp.disable_failure | default true }} + server: + host: 0.0.0.0 + port: {{ .Values.server.port | default 9091 }} + {{- if ne "" (.Values.server.path | default "") }} + path: {{ .Values.server.path }} + {{- end }} + buffers: + write: {{ .Values.server.write_buffer_size | default 4096 }} + read: {{ .Values.server.read_buffer_size | default 4096 }} + enable_pprof: {{ .Values.server.enable_pprof | default false }} + enable_expvars: {{ .Values.server.enable_expvars | default false }} + log: + level: {{ .Values.log.level | default "info" }} + format: {{ .Values.log.format | default "text" }} + {{- if ne "" (.Values.log.file_path | default "") }} + file_path: {{ .Values.log.file_path }} + keep_stdout: true + {{- end }} + totp: + issuer: {{ .Values.totp.issuer | default .Values.domain }} + period: {{ .Values.totp.period | default 30 }} + skew: {{ .Values.totp.skew | default 1 }} + {{- if .Values.password_policy.enabled }} + password_policy: + standard: + enabled: {{ .Values.password_policy.standard.enabled | default false }} + min_length: {{ .Values.password_policy.standard.min_length | default 8 }} + max_length: {{ .Values.password_policy.standard.max_length | default 0 }} + require_uppercase: {{ .Values.password_policy.standard.require_uppercase | default false }} + require_lowercase: {{ .Values.password_policy.standard.require_lowercase | default false }} + require_number: {{ .Values.password_policy.standard.require_number | default false }} + require_special: {{ .Values.password_policy.standard.require_special | default false }} + zxcvbn: + enabled: {{ .Values.password_policy.zxcvbn.enabled | default false }} + min_score: {{ .Values.password_policy.zxcvbn.min_score | default 3 }} + {{- end -}} + {{- if .Values.duo_api.enabled }} + duo_api: + hostname: {{ .Values.duo_api.hostname }} + integration_key: {{ .Values.duo_api.integration_key }} + {{- end -}} + {{- with $auth := .Values.authentication_backend }} + authentication_backend: + password_reset: + disable: {{ $auth.disable_reset_password }} + {{- if $auth.file.enabled }} + file: + path: {{ $auth.file.path }} + password: + {{- $p := $auth.file.password -}} + {{- if $p.algorithm }} + algorithm: {{ $p.algorithm }} + {{- end -}} + {{- if $p.iterations }} + iterations: {{ $p.iterations }} + {{- end -}} + {{- if $p.key_length }} + key_length: {{ $p.key_length }} + {{- end -}} + {{- if $p.salt_length }} + salt_length: {{ $p.salt_length }} + {{- end -}} + {{- if $p.memory }} + memory: {{ $p.memory }} + {{- end -}} + {{- if $p.parallelism }} + parallelism: {{ $p.parallelism }} + {{- end -}} + {{- end -}} + {{- if $auth.ldap.enabled }} + ldap: + implementation: {{ $auth.ldap.implementation | default "custom" }} + url: {{ $auth.ldap.url }} + timeout: {{ $auth.ldap.timeout | default "5s" }} + start_tls: {{ $auth.ldap.start_tls }} + tls: + {{- if hasKey $auth.ldap.tls "server_name" }} + server_name: {{ $auth.ldap.tls.server_name | default $auth.ldap.host }} + {{- end }} + minimum_version: {{ $auth.ldap.tls.minimum_version | default "TLS1.2" }} + skip_verify: {{ $auth.ldap.tls.skip_verify | default false }} + {{- if $auth.ldap.base_dn }} + base_dn: {{ $auth.ldap.base_dn }} + {{- end -}} + {{- if $auth.ldap.username_attribute }} + username_attribute: {{ $auth.ldap.username_attribute }} + {{- end -}} + {{- if $auth.ldap.additional_users_dn }} + additional_users_dn: {{ $auth.ldap.additional_users_dn }} + {{- end -}} + {{- if $auth.ldap.users_filter }} + users_filter: {{ $auth.ldap.users_filter }} + {{- end -}} + {{- if $auth.ldap.additional_groups_dn }} + additional_groups_dn: {{ $auth.ldap.additional_groups_dn }} + {{- end -}} + {{- if $auth.ldap.groups_filter }} + groups_filter: {{ $auth.ldap.groups_filter }} + {{- end -}} + {{- if $auth.ldap.group_name_attribute }} + group_name_attribute: {{ $auth.ldap.group_name_attribute }} + {{- end -}} + {{- if $auth.ldap.mail_attribute }} + mail_attribute: {{ $auth.ldap.mail_attribute }} + {{- end -}} + {{- if $auth.ldap.display_name_attribute }} + display_name_attribute: {{ $auth.ldap.display_name_attribute }} + {{- end }} + user: {{ $auth.ldap.user }} + {{- end -}} + {{- end -}} + {{- with $session := .Values.session }} + session: + name: {{ $session.name | default "authelia_session" }} + domain: {{ required "A valid .Values.domain entry required!" $.Values.domain }} + same_site: {{ $session.same_site | default "lax" }} + expiration: {{ $session.expiration | default "1M" }} + inactivity: {{ $session.inactivity | default "5m" }} + remember_me_duration: {{ $session.remember_me_duration | default "1M" }} + {{- end }} + redis: + host: {{ .Values.redis.creds.plain }} + {{- with $redis := .Values.redisProvider }} + port: {{ $redis.port | default 6379 }} + {{- if not (eq $redis.username "") }} + username: {{ $redis.username }} + {{- end }} + maximum_active_connections: {{ $redis.maximum_active_connections | default 8 }} + minimum_idle_connections: {{ $redis.minimum_idle_connections | default 0 }} + {{- if $redis.tls.enabled }} + tls: + server_name: {{ $redis.tls.server_name }} + minimum_version: {{ $redis.tls.minimum_version | default "TLS1.2" }} + skip_verify: {{ $redis.tls.skip_verify }} + {{- end }} + {{- if $redis.high_availability.enabled }} + high_availability: + sentinel_name: {{ $redis.high_availability.sentinel_name }} + {{- if $redis.high_availability.nodes }} + nodes: + {{- range $node := $redis.high_availability.nodes }} + - host: {{ $node.host }} + port: {{ $node.port | default 26379 }} + {{- end -}} + {{- end }} + route_by_latency: {{ $redis.high_availability.route_by_latency }} + route_randomly: {{ $redis.high_availability.route_randomly }} + {{- end }} + {{- end }} + regulation: + max_retries: {{ .Values.regulation.max_retries | default 3 }} + find_time: {{ .Values.regulation.find_time | default "1m" }} + ban_time: {{ .Values.regulation.ban_time | default "5m" }} + storage: + postgres: + host: {{ $.Values.cnpg.main.creds.host }} + {{- with $storage := .Values.storage }} + port: {{ $storage.postgres.port | default 5432 }} + database: {{ $storage.postgres.database | default "authelia" }} + username: {{ $storage.postgres.username | default "authelia" }} + timeout: {{ $storage.postgres.timeout | default "5s" }} + ssl: + mode: {{ $storage.postgres.sslmode | default "disable" }} + {{- end }} + {{- with $notifier := .Values.notifier }} + notifier: + disable_startup_check: {{ $.Values.notifier.disable_startup_check }} + {{- if $notifier.filesystem.enabled }} + filesystem: + filename: {{ $notifier.filesystem.filename }} + {{- end }} + {{- if $notifier.smtp.enabled }} + smtp: + host: {{ $notifier.smtp.host }} + port: {{ $notifier.smtp.port | default 25 }} + timeout: {{ $notifier.smtp.timeout | default "5s" }} + {{- with $notifier.smtp.username }} + username: {{ . }} + {{- end }} + sender: {{ $notifier.smtp.sender | quote }} + identifier: {{ $notifier.smtp.identifier | quote }} + subject: {{ $notifier.smtp.subject | quote }} + startup_check_address: {{ $notifier.smtp.startup_check_address | quote }} + disable_require_tls: {{ $notifier.smtp.disable_require_tls }} + disable_html_emails: {{ $notifier.smtp.disable_html_emails }} + tls: + server_name: {{ $notifier.smtp.tls.server_name | default $notifier.smtp.host }} + minimum_version: {{ $notifier.smtp.tls.minimum_version | default "TLS1.2" }} + skip_verify: {{ $notifier.smtp.tls.skip_verify | default false }} + {{- end }} + {{- end }} + {{- if .Values.identity_providers.oidc.enabled }} + identity_providers: + oidc: + access_token_lifespan: {{ .Values.identity_providers.oidc.access_token_lifespan | default "1h" }} + authorize_code_lifespan: {{ .Values.identity_providers.oidc.authorize_code_lifespan | default "1m" }} + id_token_lifespan: {{ .Values.identity_providers.oidc.id_token_lifespan | default "1h" }} + refresh_token_lifespan: {{ .Values.identity_providers.oidc.refresh_token_lifespan | default "90m" }} + enable_client_debug_messages: {{ .Values.identity_providers.oidc.enable_client_debug_messages | default false }} + minimum_parameter_entropy: {{ .Values.identity_providers.oidc.minimum_parameter_entropy | default 8 }} + {{- if .Values.identity_providers.oidc.clients }} + clients: + {{- range $client := .Values.identity_providers.oidc.clients }} + - id: {{ $client.id }} + description: {{ $client.description | default $client.id }} + secret: {{ $client.secret | default (randAlphaNum 128) }} + {{- if $client.public }} + public: {{ $client.public }} + {{- end }} + authorization_policy: {{ $client.authorization_policy | default "two_factor" }} + consent_mode: {{ $client.consent_mode | default "auto" }} + redirect_uris: + {{- range $client.redirect_uris }} + - {{ . }} + {{- end }} + {{- if $client.audience }} + audience: + {{- range $client.audience }} + - {{ . }} + {{- end }} + {{- end }} + scopes: + {{- range ($client.scopes | default (list "openid" "profile" "email" "groups")) }} + - {{ . }} + {{- end }} + grant_types: + {{- range ($client.grant_types | default (list "refresh_token" "authorization_code")) }} + - {{ . }} + {{- end }} + response_types: + {{- range ($client.response_types | default (list "code")) }} + - {{ . }} + {{- end }} + {{- if $client.response_modes }} + response_modes: + {{- range $client.response_modes }} + - {{ . }} + {{- end }} + {{- end }} + userinfo_signing_algorithm: {{ $client.userinfo_signing_algorithm | default "none" }} + {{- end }} + {{- end }} + {{- end }} + access_control: + {{- if not .Values.access_control.rules }} + {{- if (eq .Values.access_control.default_policy "bypass") }} + default_policy: one_factor + {{- else if (eq .Values.access_control.default_policy "deny") }} + default_policy: two_factor + {{- else }} + default_policy: {{ .Values.access_control.default_policy }} + {{- end }} + {{- else }} + default_policy: {{ .Values.access_control.default_policy }} + {{- end }} + + {{- if not .Values.access_control.networks }} + networks: [] + {{- else }} + networks: + {{- range $net := .Values.access_control.networks }} + - name: {{ $net.name }} + networks: + {{- range $net.networks }} + - {{ . | squote }} + {{- end }} + {{- end }} + {{- end }} + + {{- if not .Values.access_control.rules }} + rules: [] + {{- else }} + rules: + {{- range $rule := .Values.access_control.rules }} + {{- if $rule.domain }} + - domain: + {{- if kindIs "string" $rule.domain }} + - {{ $rule.domain | squote }} + {{- else -}} + {{- range $rule.domain }} + - {{ . | squote }} + {{- end }} + {{- end }} + {{- end -}} + {{- with $rule.policy }} + policy: {{ . }} + {{- end -}} + {{- if $rule.networks }} + networks: + {{- if kindIs "string" $rule.networks }} + - {{ $rule.networks | squote }} + {{- else -}} + {{- range $rule.networks }} + - {{ . | squote }} + {{- end }} + {{- end }} + {{- end }} + {{- if $rule.subject }} + subject: + {{- if kindIs "string" $rule.subject }} + - {{ $rule.subject | squote }} + {{- else -}} + {{- range $rule.subject }} + - {{ . | squote }} + {{- end }} + {{- end }} + {{- end }} + {{- if $rule.resources }} + resources: + {{- if kindIs "string" $rule.resources }} + - {{ $rule.resources | squote }} + {{- else -}} + {{- range $rule.resources }} + - {{ . | squote }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + ... +{{- end -}} diff --git a/enterprise/authelia/19.0.12/templates/_secrets.tpl b/enterprise/authelia/19.0.12/templates/_secrets.tpl new file mode 100644 index 00000000000..14ed88d973d --- /dev/null +++ b/enterprise/authelia/19.0.12/templates/_secrets.tpl @@ -0,0 +1,53 @@ +{{/* Define the secrets */}} +{{- define "authelia.secrets" -}} +{{- $basename := include "tc.v1.common.lib.chart.names.fullname" $ -}} +{{- $fetchname := printf "%s-authelia-secrets" $basename -}} + +{{/* Initialize all keys */}} +{{- $oidckey := genPrivateKey "rsa" }} +{{- $oidcsecret := randAlphaNum 32 }} +{{- $jwtsecret := randAlphaNum 50 }} +{{- $sessionsecret := randAlphaNum 50 }} +{{- $encryptionkey := randAlphaNum 100 }} + +enabled: true +data: + {{ with (lookup "v1" "Secret" .Release.Namespace $fetchname) }} + {{/* Get previous values and decode */}} + {{ $sessionsecret = (index .data "SESSION_ENCRYPTION_KEY") | b64dec }} + {{ $jwtsecret = (index .data "JWT_TOKEN") | b64dec }} + {{ $encryptionkey = (index .data "ENCRYPTION_KEY") | b64dec }} + + {{/* Check if those keys ever existed. as OIDC is optional */}} + {{ if and (hasKey .data "OIDC_PRIVATE_KEY") (hasKey .data "OIDC_HMAC_SECRET") }} + {{ $oidckey = (index .data "OIDC_PRIVATE_KEY") | b64dec }} + {{ $oidcsecret = (index .data "OIDC_HMAC_SECRET") | b64dec }} + {{ end }} + {{ end }} + SESSION_ENCRYPTION_KEY: {{ $sessionsecret }} + JWT_TOKEN: {{ $jwtsecret }} + ENCRYPTION_KEY: {{ $encryptionkey }} + + {{- if .Values.authentication_backend.ldap.enabled }} + LDAP_PASSWORD: {{ .Values.authentication_backend.ldap.plain_password }} + {{- end }} + + {{- if and .Values.notifier.smtp.enabled .Values.notifier.smtp.plain_password }} + SMTP_PASSWORD: {{ .Values.notifier.smtp.plain_password }} + {{- end }} + + {{- if .Values.duo_api.enabled }} + DUO_API_KEY: {{ .Values.duo_api.plain_api_key }} + {{- end }} + + STORAGE_PASSWORD: {{ $.Values.cnpg.main.creds.password | trimAll "\"" }} + + REDIS_PASSWORD: {{ .Values.redis.creds.redisPassword | trimAll "\"" }} + {{- if .Values.redisProvider.high_availability.enabled }} + REDIS_SENTINEL_PASSWORD: {{ .Values.redis.sentinelPassword | trimAll "\"" }} + {{- end }} + + OIDC_PRIVATE_KEY: | + {{- $oidckey | nindent 4 }} + OIDC_HMAC_SECRET: {{ $oidcsecret }} +{{- end -}} diff --git a/enterprise/authelia/19.0.12/templates/common.yaml b/enterprise/authelia/19.0.12/templates/common.yaml new file mode 100644 index 00000000000..54e288e852c --- /dev/null +++ b/enterprise/authelia/19.0.12/templates/common.yaml @@ -0,0 +1,77 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{/* Render configmap for authelia */}} +{{- $configmapPaths := include "authelia.configmap.paths" . | fromYaml -}} +{{- if $configmapPaths -}} + {{- $_ := set .Values.configmap "authelia-paths" $configmapPaths -}} +{{- end -}} + +{{- $configmapFile := include "authelia.configmap.configfile" . | fromYaml -}} +{{- if $configmapFile -}} + {{- $_ := set .Values.configmap "authelia-configfile" $configmapFile -}} +{{- end -}} + +{{/* Render secrets for authelia */}} +{{- $secret := include "authelia.secrets" . | fromYaml -}} +{{- if $secret -}} + {{- $_ := set .Values.secret "authelia-secrets" $secret -}} +{{- end -}} + +{{/* Append the general configMap volume to the volumes */}} +{{- define "authelia.configmapVolume" -}} +enabled: true +mountPath: /configuration.yaml +subPath: configuration.yaml +readOnly: true +type: "configmap" +objectName: authelia-configfile +{{- end -}} + +{{/* Append the general secret volumes to the volumes */}} +{{- define "authelia.secretVolumes" -}} +enabled: true +mountPath: "/secrets" +readOnly: true +type: "secret" +objectName: authelia-secrets +items: + - key: "JWT_TOKEN" + path: JWT_TOKEN + - key: "SESSION_ENCRYPTION_KEY" + path: SESSION_ENCRYPTION_KEY + - key: "ENCRYPTION_KEY" + path: ENCRYPTION_KEY + - key: "STORAGE_PASSWORD" + path: STORAGE_PASSWORD + {{- if .Values.authentication_backend.ldap.enabled }} + - key: "LDAP_PASSWORD" + path: LDAP_PASSWORD + {{- end }} + {{- if and .Values.notifier.smtp.enabled .Values.notifier.smtp.plain_password }} + - key: "SMTP_PASSWORD" + path: SMTP_PASSWORD + {{- end }} + - key: "REDIS_PASSWORD" + path: REDIS_PASSWORD + {{- if .Values.redisProvider.high_availability.enabled}} + - key: "REDIS_SENTINEL_PASSWORD" + path: REDIS_SENTINEL_PASSWORD + {{- end }} + {{- if .Values.duo_api.enabled }} + - key: "DUO_API_KEY" + path: DUO_API_KEY + {{- end }} + {{- if .Values.identity_providers.oidc.enabled }} + - key: "OIDC_PRIVATE_KEY" + path: OIDC_PRIVATE_KEY + - key: "OIDC_HMAC_SECRET" + path: OIDC_HMAC_SECRET + {{- end }} +{{- end -}} + +{{- $_ := set .Values.persistence "authelia-configfile" (include "authelia.configmapVolume" . | fromYaml) -}} +{{- $_ := set .Values.persistence "authelia-secrets" (include "authelia.secretVolumes" . | fromYaml) -}} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/enterprise/authelia/19.0.12/values.yaml b/enterprise/authelia/19.0.12/values.yaml new file mode 100644 index 00000000000..e69de29bb2d