From e72c72973512248c9503b8c68a23a23591d2917e Mon Sep 17 00:00:00 2001 From: irl Date: Sun, 9 Nov 2025 14:39:28 +0000 Subject: [PATCH] feat: more operator guide --- docs/admin/_category_.yml | 5 +++ docs/admin/intro.md | 5 +++ docs/agent/_category_.yml | 5 +++ docs/agent/intro.md | 5 +++ docs/intro.md | 3 ++ docs/operator/_category_.yml | 1 + docs/operator/architecture.md | 10 +++-- docs/operator/deploy-host.md | 70 ++++++++++++++++++++++++++++++++ docs/operator/deploy.md | 64 +++++++++++++++++++++++++++++ docs/operator/identity.md | 73 ++++++++++++++++++++++++++++++++++ docs/operator/requirements.md | 6 +-- static/img/host-add.png | Bin 0 -> 18161 bytes static/img/user-add.png | Bin 0 -> 26305 bytes 13 files changed, 240 insertions(+), 7 deletions(-) create mode 100644 docs/admin/_category_.yml create mode 100644 docs/admin/intro.md create mode 100644 docs/agent/_category_.yml create mode 100644 docs/agent/intro.md create mode 100644 docs/operator/deploy-host.md create mode 100644 docs/operator/deploy.md create mode 100644 docs/operator/identity.md create mode 100644 static/img/host-add.png create mode 100644 static/img/user-add.png diff --git a/docs/admin/_category_.yml b/docs/admin/_category_.yml new file mode 100644 index 0000000..fc2a715 --- /dev/null +++ b/docs/admin/_category_.yml @@ -0,0 +1,5 @@ +--- +label: Admin Guide +position: 30 +link: + type: "generated-index" diff --git a/docs/admin/intro.md b/docs/admin/intro.md new file mode 100644 index 0000000..e07d6bb --- /dev/null +++ b/docs/admin/intro.md @@ -0,0 +1,5 @@ +# Introduction + +:::warning[Under construction] +This documentation is a work in progress. Please [get in touch with us](mailto:help@cdr.link) if you have any questions. +::: \ No newline at end of file diff --git a/docs/agent/_category_.yml b/docs/agent/_category_.yml new file mode 100644 index 0000000..c38aca5 --- /dev/null +++ b/docs/agent/_category_.yml @@ -0,0 +1,5 @@ +--- +label: Agent Guide +position: 20 +link: + type: "generated-index" diff --git a/docs/agent/intro.md b/docs/agent/intro.md new file mode 100644 index 0000000..e07d6bb --- /dev/null +++ b/docs/agent/intro.md @@ -0,0 +1,5 @@ +# Introduction + +:::warning[Under construction] +This documentation is a work in progress. Please [get in touch with us](mailto:help@cdr.link) if you have any questions. +::: \ No newline at end of file diff --git a/docs/intro.md b/docs/intro.md index 2ce5bfb..52b92bb 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -5,3 +5,6 @@ sidebar_label: Overview # Documentation Overview +:::warning[Under construction] +This documentation is a work in progress. Please [get in touch with us](mailto:help@cdr.link) if you have any questions. +::: \ No newline at end of file diff --git a/docs/operator/_category_.yml b/docs/operator/_category_.yml index 0014a12..1b8a8ad 100644 --- a/docs/operator/_category_.yml +++ b/docs/operator/_category_.yml @@ -1,4 +1,5 @@ --- label: Operator Guide +position: 40 link: type: "generated-index" diff --git a/docs/operator/architecture.md b/docs/operator/architecture.md index f785630..db89ef0 100644 --- a/docs/operator/architecture.md +++ b/docs/operator/architecture.md @@ -20,7 +20,9 @@ network namespaces. Both [discretionary access controls](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_basic_system_settings/managing-file-system-permissions_configuring-basic-system-settings) -and SELinux are used to prevent lateral movement between containers should a container be compromised, with particular +and +[SELinux](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html-single/using_selinux/index) +are used to prevent lateral movement between containers should a container be compromised, with particular attention given to the messaging channels WhatsApp and Signal. No container runs its application as the inside "root" user, which is an unprivileged user on the host. @@ -33,7 +35,7 @@ prevent later investigation, and automatically shut down instances where there i ## Components The following diagram shows the dependency relationships between the components of CDR Link. -If you use our [Ansible role](./deploy) for deployment then these will be automatically configured. +If you use our [Ansible role](./deploy.md) for deployment then these will be automatically configured. The Link stack containers are [OCI](https://opencontainers.org/) compliant containers and you can run these with alternatives such as [Docker Compose](https://docs.docker.com/compose/) however we would not be able to provide support for this @@ -48,8 +50,8 @@ The service definitions are in `.container` units within the Quadlet directory a ```mermaid flowchart TD bridge-worker.service --> bridge-postgresql.service - bridge-worker.service --> bridge-whatsapp.service - bridge-worker.service --> signal-cli-rest-api.service + bridge-worker.service -.-> bridge-whatsapp.service + bridge-worker.service -.-> signal-cli-rest-api.service link.service --> bridge-postgresql.service link.service --> bridge-worker.service diff --git a/docs/operator/deploy-host.md b/docs/operator/deploy-host.md new file mode 100644 index 0000000..c8b3228 --- /dev/null +++ b/docs/operator/deploy-host.md @@ -0,0 +1,70 @@ +--- +sidebar_position: 30 +sidebar_label: Deployment Host +--- + +# Deployment Host Setup + +Deployment takes place using [Ansible](https://docs.ansible.com/) which we will install in a +[venv](https://docs.python.org/3/library/venv.html) to allow for careful management of the versions of the software in +use. + +For security, the deployment host must not run any network services listening on an external interface other than a +hardened SSH daemon if being used remotely. Ideally, the deployment host is operated locally via its terminal. + +Begin by creating a directory for the deployment framework to operate from that should be owned by your unprivileged +user and group and have filesystem permissions of `0700`. +On systems with SELinux, a context of `user_home_t` should be appropriate. + +This documentation will assume that you are working in the directory `$HOME/ops/`. + +## Virtual Environment Setup + +Begin by creating and activating a virtual environment: + +```shell +cd $HOME/ops +python3 -m venv venv +source venv/bin/activate +``` + +Then install the dependencies we will require: + +```shell +pip install ansible +pip install bitwarden-sdk # optional: only required for bitwarden secrets manager +``` + +## Install the Ansible collection and role dependencies + +Create `$HOME/ops/requirements.yml`: + +```yaml +--- +collections: + - name: bitwarden.secrets # optional: only required for bitwarden secrets manager + - src: git+https://guardianproject.dev/sr2/ansible-collection-core.git + version: main # optional: only required for our baseline role + - src: git+https://guardianproject.dev/sr2/ansible-collection-apps.git + version: main # required: contains the CDR Link deployment role +roles: + - src: git+https://github.com/ansible-lockdown/RHEL9-CIS.git + version: "2.0.3" # optional: only required for our baseline role +``` + +Install the collections, and roles if required: + +```shell +cd $HOME/ops +ansible-galaxy collection install -r requirements.yml +ansible-galaxy role install -r requirements.yml +``` + +## Create deployment data files and directories + +Create the necessary directories that we will need in the next step: + +```shell +cd $HOME/ops +mkdir {host,group}_vars +``` diff --git a/docs/operator/deploy.md b/docs/operator/deploy.md new file mode 100644 index 0000000..e63006f --- /dev/null +++ b/docs/operator/deploy.md @@ -0,0 +1,64 @@ +--- +sidebar_position: 50 +sidebar_label: Deploy CDR Link +--- + +# Deploy the CDR Link Stack + +## Set up the Ansible inventory and host variables + +Create `$HOME/ops/inventory`: + +```ini +[cdr_link] +example.cdr.link +``` + +Create `$HOME/ops/group_vars/all.yml` if you use our baseline role and integrate with Identity Management: + +```yaml +--- +ipaserver_domain: CHANGEME +ipaserver_realm: CHANGEME +ipaserver_netbios_name: CHANGEME +``` + +Create `$HOME/ops/host_vars/example.cdr.link.yml`: + +```yaml +--- +baseline_second_disk_device: /dev/sdb # This is the device path for the data volume +baseline_home_luks_passphrase: CHANGEME +ipaclient_otp: CHANGEME # This is the OTP generated in the IdM step and is not sensitive after use +podman_link_podman_rootless_user: link_example # This is the user you created in the IdM step +podman_link_postgres_zammad_password: CHANGEME +podman_link_postgres_link_password: CHANGEME +podman_link_postgres_root_password: CHANGEME +podman_link_zammad_redis_password: CHANGEME +podman_link_opensearch_password: CHANGEME +podman_link_nextauth_secret: CHANGEME +``` + +:::warning +Do not store sensitive values in the `host_vars` file in plaintext, use lookup plugins to look up the secret values +using your secrets management solution of choice. +::: + +The variables prefixed with `baseline_` and `ipaclient_` are only applicable if you are using our baseline role with +Identity Management integration. +If you manage your own hardening and use local users and groups you can omit these. +The user you reference in `podman_link_podman_rootless_user` must exist before continuing. + +## Execute the Ansible playbook + +If you are using our baseline role: + +```shell +ansible-playbook -i inventory sr2.apps.link +``` + +If you manage your own hardening and identity management, use the `link` tag to only run the CDR Link stack deployment: + +```shell +ansible-playbook -i inventory sr2.apps.link --tags link +``` diff --git a/docs/operator/identity.md b/docs/operator/identity.md new file mode 100644 index 0000000..3f01e33 --- /dev/null +++ b/docs/operator/identity.md @@ -0,0 +1,73 @@ +--- +sidebar_position: 40 +sidebar_label: Identity Management +--- + +# Identity Management Setup + +:::tip +If you are using an alternative Identity Management system or local user accounts, skip this page and go straight +to [Deploying with Ansible](./deploy.md). +::: + +## Host Setup + +It can be helpful to keep track of the following information in a text editor's buffer until deployment is complete. +None of these details are sensitive after the completion of the deployment. + +```text +Hostname: +IPv4 Address: +IPv6 Address: +OTP: +``` + +### Add Host to DNS + +1. Create an A record for the host +1. Create an AAAA record for the host +1. Create a null MX record for the host (e.g. `example.cdr.link IN MX 0 .`) + +### Add Host to Identity Management + +1. Begin by logging in to the Identity Management server with your privileged identity +1. Open the **Identity** tab, and select the **Hosts** subtab +1. Click **Add** at the top of the hosts list +1. Enter the name of the new host, e.g. `example.cdr.link` +1. The IP address will be automatically resolved from DNS, you can leave this blank but may need to allow a moment for + the authoritative DNS servers to update +1. Activate the **Generate OTP** checkbox +1. Click **Add** to add the new host +1. Save the generated OTP for later + +![Screenshot of the Add Host Wizard in Identity Management](/img/host-add.png) + +## User Setup + +### Create the Service User + +This is the user on the host that will run the Podman containers. + +1. Open the **Identity** tab, and select the **Users** subtab +1. Click **Add** at the top of the users list +1. Enter a **Username**, we prefix all our Link service users with `link_` for easy identification +1. Enter a **First Name** and **Last Name**, these values do not matter but the LDAP schema requires them +1. Do not enter a **New Password** as this user will never need to authenticate with a password +1. Click **Add** + +![Screenshot of the Add User Wizard in Identity Management](/img/user-add.png) + +### Generate subordinate IDs for the user + +1. Open the **Identity** tab, and expand the **Subordinate IDs** subtab +1. Choose the **Subordinate IDs** option from the drop-down menu +1. Click the **Add** button in the upper-right corner of the interface +1. In the **Add subid** window, select the user you have just created as the **Owner** +1. Click **Add** + +The range is automatically generated and managed by Identity Management. + +:::tip +If you are not using our baseline Ansible role, ensure that the `with-subid` feature of the `sssd` authselect profile is +enabled to allow hosts to look up subids in LDAP. +::: \ No newline at end of file diff --git a/docs/operator/requirements.md b/docs/operator/requirements.md index ebcfc95..2a98595 100644 --- a/docs/operator/requirements.md +++ b/docs/operator/requirements.md @@ -19,9 +19,9 @@ A compromise of this host effectively compromises the entire stack. * Appropriately hardened and vendor supported Linux operating system with the latest security updates applied * SSH key backed by hardware security module and requiring unlock (e.g. [YubiKey](https://www.yubico.com/)) to be used for login to the instance host -* Python 3.11+ (the `venv` module is included in Python since v3.3 so this is not a separate requirement) -* Git -* Ansible-compatible secrets management (e.g. +* [Python](https://www.python.org/) 3.11+ (the `venv` module is included in Python since 3.3 so this is not a separate requirement) +* [Git](https://git-scm.com/) +* [Ansible](https://docs.ansible.com/)-compatible secrets management (e.g. [sops](https://getsops.io/) or [Bitwarden Secrets Manager](https://bitwarden.com/products/secrets-manager/)) diff --git a/static/img/host-add.png b/static/img/host-add.png new file mode 100644 index 0000000000000000000000000000000000000000..9b6199f1b0d719cd51337e3456cb71461d379341 GIT binary patch literal 18161 zcmch92UJvBwr!ae6#)q%(L#b`iAq!`Maem5D00pjQ9%$DQ4z@kk}0r&A_oP@0+MqQ z$vJ2E3-9ZD`@R0%@AVk({~Fg}S!dTi`|Q2KoO7+ZLGrQ^7xAv*ArOd*4GcdA5JJA}V zP0ekDk&7i2NLq7aVWb+b45y5pINHqofrkTH$wOAz$ivd;wlPvv1W(9K04A_TI~mZr zSzFmS3b+X)f6prb?~gv_K+^sm;$$g|RF{#b6}NRj)AF+OvU4Iu@Mwh`j7u8XgDJ<&+qZ9XaB^{Qak0S&Hb-|GCj&P&8%MgMDgKxP zg?2P@Ft>9ux3!@?n$y70*4arIiG=I4e_NTg-Jg@&IR3}e!#;4h8Q5{$Was4g`@wc* zwobN=X14$2D}P@8hcBYt%>R0Z|8$$9EB`Ru$=u|h3_rT^55r-vWn}*KQ&?O7rw4I# zy5|BL@gJM|pBD7D=XO+fw?lI%q8)9W9gNWTT+lX7bielk?j|7afHrVKqu`G)l8cjz zm+j_FHqP71H@O6OZwYX5vv9)e&%rXb#^xsO|JT8{1#a?d{xuLR!`Q&d;J+FA=Qax* z4g6y%V37ZE9e;gC+}6t00hRYp8qD(zGgE{9Ih9-=mJs zNkHD*4Q-{4GPg$CID$b z{KKUqSD_X9Z9oDK%pIL<9o&C^^oRc_q3!?p*B}41GXL#3w6wp?N5H`7=>Eb;I|o~1 zXCt)n@B6@Xe_VC6HF0t^a6sQR1wnmJr83EL`aKfWPy5_}(9%K|F!L#PMfjf`9xO+t4;(KMoMN z3ZKpQLv++N2TS-n3qT;4LY-f?uspG+tkpBpylMYBlhTDCywyWpyFeqAs!RP^`25XP zBhlDc;Wyfph1rF5{zXfddhRXL$T!@5^CUQTuF}Jcy6S~jMVV)X$L6-z&YIt8Q_ZGd z^LH35r&_U(JUvXh=G_uboxv0?Rd<$7grF)FE5o}hRxa{2X76G&CLO(ZpJ9LG*#GQf zdYLVBfXVi3TCFc-K44H(mf`<0LGmh-JhD2flB$@MzSPn_y`h$rG2LrJft%zap5D2F zjNoPW(K7~eKP6&!zDBI2?-V`3m2pSBlzHy@yqKIGrCuI&1+NNukLzHXd}r$18*wA5 z7`W zxLt}ZtG0r}lBIw3{1eHrm}6$e{7sX(c5`=<^dqzHwP#Y+?+F&xm7nNYFg~+rm{ke+ z<(%CE4Mzk5|J%`@V__`#6bJ+@;vwp;vRm~0psTu)8qJv{J)%36v9A)C5(0CXvdl>C zDQ9-2t21_XscfcpCSV>t5zx}Zk+50Z!}b+3GKr(^*wf-}-66NhKl%EOn8UDWRd#=}g0{%{=2)u(pj4+{S5ePeCBmn|(3y<(D0zv72 z_9O!FO6(+LScz-Lk0Bl<68IqyUljhyaFxNc?;czy3i_0qnwp6x=rXsovf{Bc;-|U2 zy*gP|TKf3O6P5FqiHJ%|OZWEn(r+^(5L+#UZp%Lx220MLKM&U~UoNm6KA37voXOM1 z98Jdl`&AWi@ol~F)!A>~zCC^V)EJFU3lsI);=Fzx#dejOi%U#Q%x0iaAx42vL05Mu zNh;jI(J`YJAD$c2o+5YV*CNvQGoKNs4C;B3=+R^b{#{q z>qHNgm6e?%Jql!F1aMy4E43js-RrO`A7`!;)z`me>>cmuQ06iYPhJeW#w!2B>#&aTSh}&2VUym6aRw z{k{j=lR70X^a;D0i@UqKwbj+;mX@wF9p;r!&)v9j!*g?iKEbwPUzLeCORJ!{xj9Q9 z>Kp>$EXG9q9F;INWwue<(b3^N+l4kU$=Q}b9rwFKF03NIp7`a(ix*M+ws`)PR>TMp>@!XK+Jv3>G>`YTiVdmFeKP%*WAVj#n zIIPD+EO7faA)%*jdMOZrlw0&0!~{?26S|E`92RH*5fR@1I;!U1`iGnymvR) zQkLl?Ud{Dj6Wv!QP)_rGxajEUy1EC*o%w=cu)=^#G_t7p_;}Q})4KQX-;WdVenok^ z?Xy7@NBLIez(90h`QAz+35)9IXHf`*Jk9d<9xN$6nKrnoqB%xTEn}HE+kN6YIr907 z7tx#s$35S9Y|LpOpNE7nCgfZ9TbP@lJ9*sG(=*>kQt~+pNr>lf^%-Z~pP%_YiqG1@ z&`=E36v<1M@bjnPxF3~PTd}hx(lCSrdhb z7cVX#B_BS#kzvnwsH~x-m3zJ=PE;++(%k$Z>eZ`PwXdkOiX4)PirftikrY*|McTSJ z%n8J!&Dt{0O?Z-Im&LkZG7jZMLQEv{5dP&WS013i(lXStO{B{AH~PVJK7Ra|UA`m9 zM4X(GA{Qf|A|=HlC>VwLn3zaM6qKc1#N{|4t)-v`Sp&)AJ+XEDDqt z50$Hi=!)Hz4TXiv(s^~m67LjgH&a`s>9!b!w?yBD4I^XIM4>hpht-&fX?*u?5@OGM z2D9ep=a-X{3keB1{29#gZv5~?K(>L96%~9&Mn)DPO?vsVk+Jcw(b3jKiA(vFp>z^n z-ri`g-nvk_-hK&*7gt*I%-bOrNrkhUN8dsq+zv@dNcLA6Inp;PzDICNtQYHBSXkV- zb0@5Sl1;BXItgAQ$OOvthb-h_5EsD{r8m8yClYrArKbtLPJASQcM*TLT8?pZhIZT6V|*SPuv^O=^UYjU@~M0QDZDT zTABOs>``ur{x@^OKMv2!!{LG+jPbvQ?6Sv*?R}Q`zmkOh@kakLXZ`OFf2XQ*2{9yS zU|`_y@9!*(2Z>c!SlHBbvTyo4;n^9y^XLEYVmBdOosd(ATTczH1Q;YFBv@c1P_$;? zEs06~!xs^$*7WrBxL&HEi909YgyHNcPaVHwZFnX5y(jAAW0PBic!)#yLOSB#*;@Tj zh_KOw#(lzDq%7;qafE!uwd1oi)U9b+Me&>GXFOU2a=#$nfy@VV! zy}H6}WieErm+l>_g*I;UaHWH&xKWlHH+qX4!G08Y`?tr#^}ZR}-}8vzx79T>Gt=M& z{~mg)cLL$2cFSJy#f;AV3sn!UzmdfF%ygu2n>Md44DRZLWVG#N8;knhFbcoiew|t( zjxba{xV!d#wruS>4c2?tMMnEDi=Blhq>LI3u`P}%Il!otW1r_IK{RJEvIp5mbm97(Aq!QpkA`Kxv%R~U;L5B^pkzl*Q0t*yz@&ZY31gWst=3bdyCQfo}6^oTBB?jDT0B2(|DI;5F2B(qM@YYVWa{i~eGx)6>(xe!s@X=)xO=rV56A`eDsvdS0U= zBTJoXdh`qovQd08*NNCPa;}5JV?JB=^W|553%dOF&6|cr&G}wHMi1XI+`e_|*6rKX z)zyTpixr0p05yL7%5z^e$(OaaUxolCE-tR4qhs0>nPh*WJ5vJ?mpJM?8T*B^XW>ac zJ-EKIwg#z31@k^KQo!L?9Rda7sY%eJ#6~%2T zn|S}FmzNhZf*|AZ>A47 z`{AaMZ1gR{qg+y4TwGIA11niuS}Js!CW^{5#KNQ8x^crC;?Sv6r&cFhLV|;%ZabRX zz5BIA^zb`hq1U!Ugmk_|C$ppDDx~Ol>)Ri!!*d<+BsF>4=o3VcRA)-ox0>(o%Pu> zm#F6!7TAe`WaC8UM@R3X>g(&lbHxKL7+CUIbOZ*z6HTA#&Za4meDI(Sj8^1u&k?Da zZxw+;K79Dlyf+7}tlW`sFSw^6Llu*Q!+CGa^+NJ1-(4sHtRr>(4V9ovVD-;|fdN3r z9GZEl04blGxwNsoT;w<@`wX9|qu3}ANkdA|`uy6?Ddu{|h1r#bxsS3i7Iuo1MCPPe+jF&evGFsi+b_7?F zlWTcN!7m#tR0JU&T!)8`k39vAmekPH%qdX*l$7M|=Ju_+8r-4OW4)oRO;Mw_rY0Z| z94;sojjE@VD6hY>l+#@S`$ubRRHXqdkmPW zWPUDZB|r{s(Doqx^w6YYIuM)L( zVYGHP=6AcA?DIPrkt}r9EQtkO-ll8o>p@fC!OGM=*nHdJp?L9U5YJmgcE5l7_Unt^ z2@bt-A@>zyIJ}AGn2gM1@C|L%m@`RxdtNT1z(P^R`ua;cLM3mNqD=g$C6 zi4=y*z2U1lZ~zd%Z3c^5qd2UrfnY*B$kwZfef@f=%LK5PzgRp9dD~^K2XYI`tq(Bp zoPQ;}m$-kQ;rjKt;fji!0!&xlD=I;tV-RwPNsnGNwY8U9N2{LE2zx;4nEdtYo36em z>|8J@+f^Pj0vZ|`a&nF34d6bugT*S^+Fm1Hj-5XreB@5U>tOJ}aHg7kAi6WLv-@nX zpbZS-6BEZUS_MDH#)5-`<)UxJV+A+H9?elnlXL^-0|werUq8LOSiv!yjYOnM6jJy> zT<$NhWUFpVpiZq3>Lz z1p}XdLoWsQv4_Y7hl6+Wu|qLKLSbPcP|I!6)fTd_2*hegnj+pi7by6? z4-S?=I!;SVgI!OmnB!q&G@WdY0o0vQshp{f{Rz|-3^Jp#7_p=~>hA7N7+O%^suS|5 z`PcY3`IRfF34Ujv{=Mu|NP0H1%$7#_C1+Sugs8K#YL6o* zD>*MzaRM~Ob&WpyB(wvUS6Du#AyU#@vIus4$Kz3 zpAmvM>KT6kKGjaYZH0NJsL$ROV1?mgXQ?p|Lt;Cx_<=Tr0(Gr}Ogrd^y0U+Er7S8b z$yUcEKwLaB2r5koQy{jWoWP>{s2E^lsk2ZYBk`#O3X6)ix3&mcL67K&753iAlV^(N zLO1m0nxeVLwLSoTv;T=YbLJVuY+_>K&;A#xtcJ@6A+l9hj{|IMAT8gS$q;{r4><{N z)&Q)EJ^XO3T~1b378zOx&=(m>&P7keR zK(myvUvu<>Bs&OR4qNRncFpsp{4^vD0GAN_E!vY`hJ}$(Jj3(<3DE>V(0Ni;S|lSQ zWBv++fuJeh!`--~q$CJVa9Jfvz*%#;I0dQ;R{i@y1zv;L``Fl6hu$w=zBD(pFT8yHng9uUg0h*} zRH^%FmQG2&=cdg|dQev!Z+Rf|SV2T43NnVZ%{`Rz7bB#i@`i(f?7lwLIyTpvyRoqm z5fK3v>f+*p>PVD;3>F;L&oyhlps;vz_yvOs@9fQpbdv9zRsT?O}q1W2d= za@|`-xeiGS^QdEp!sjd!eht|rtcRW)Cr+I37c&5fwTA}8h#&FdAcnQI!{fxUzpV#d z)dj%tu@k31lL$D^@VG6Fz%0#iqI&Kwd3g|G@gbgfcW(mH1AfvByBhrb`QHBi;NT#m zOyswrifp|0?q*+pPJ7~U1qa7nOgR#>hX|TmKa~u zCzrce*5iI(1_rco-zqD`FtXD`pm$!=zI_y0KA!$3TDzSDlUdC{HWa#X$s5Bi1b!c7 z<>WYS-73tIIEJ81+L?dDdlBMobWF^w2ZUPOvF`s~qW_=A*MG98e<`LUsdS%sv>B?* zTn3pOu#J?YWJfF<+w31`&Rs}1=EX(Chz?|q)7P$D1FB6Dgo16hkOR4ynF&O40jDW> zGI0+S8FcN+?WjXrVWNlt8McQ;^{%%)|CohJwIm2?6E0!|EZ^7At$KorKO z5gGXU)c_C$a1A69t3Ed~bCrzU6zA;XVnX)j?c3a( zoW26vY%AcT0fBtBLz%1(rKNx8E+&+|GeiN9NtCyZRwtUOs;U6k0REAb#3RI#oeg@R zrWUTFzsO?{hyFWguVqPh1~GCAH6qAB6a>!c3xN~RJS52QK#%pAB-Prswzj^$9SAe| z`T2m?K`RBpSuEZTV3?Q4a9i6-AI=hD4k@0$^XFqI6l^g)P(Ke<<}eHMQT{WC8DThW zwxo({Nsw$o*#S%$BkFqqu?OS|%{;TOA|Q>1od@IO=Ht@^3xu=M(ASWk>$>xE3QsG}hjKqxmg$I9C1PGI9`osX?@Ngu3 z7Zx5~3xd7W%(upHjwer^jE#-)`rOronv=G+wxqB91;iciuMjItJKq&d(CiEDsY4Nh zmpi)QCND1)H0|3sPM&<8#K0`jGL)`+|AOjan41vbkCa|L!@Ww z-v1~TU)R#Y&&QWF>sJ~h&2R+w$i!7(?vg^3{jUASry&-E)>^mr3hCdqo+68DFE z%T1(1etj=Z%8HpWjz%Clm0OUUA|gHjKJ4x7QN~tQ17PuSK086RW1X^#AoBqHu<1xu zxW`;uTbr$sJ8`hTi@HvX$0!#o7)^m|YL>n^!_VLSMJK!Qk4~^)~R3d0FP+oHt z+EY#K-p|zj>NQS7Zof%RxKA2t=h8Z&NkfbHQlb!dw2mQ2LzR_3 zfm~Vwaq{vi1rC52kCSGI67?+)36Z;p2tH3I??D=X{c$B%(CUJH|i)K~7a?}6L_ zy$YOUa(-S01%#)}YnzJ@%rB_==MmuqqEhL9-pglDJ8h7_NibX9!o26>no|0o5 zuA;#DAYLAEW!D95K;A{#9a^obtckdpkHGIQEVdP> z#e2}~{Q^NhYwWE7<+iZ6cxQKabEY#GqsRE}jLZ2m&Q>4kXcL|&1hG>zr%mWhHy{w} zvSqgk8-|p(H-~*Mhx+?h^ACHicI)|`0*RFP`G*fzkbR}@xj7DohDQR!w9FDgXi^ed zL4lC)o`ghj^$~&39fwZ423(I9eL`Ly&!tNtz)b))Kr9D^F8v|{TxDTl0URP6_=*3S zx8y|%K50owMYj6JMk5K`0}~Lbp&H-)_3J3+vZ5m_w9JZP;locJ$Cf0+w7q+>$I9wO zv8du5Z?b$9cTB8LSXnkcax4D5ZxCeb*Tn94rNV1T|%i7pv$umKV1`xUu@7?ult!HSw?x3LT1uU+sv(tLGd>^Es5E{|gckhk_)u&HS zc9ISZ4hESuN8g4o1qTM|hui=_{wX74*JdJt!TM}5CXtQl9di$jXFuP-?dtmYq@c83_`k) zNrB8qp{xrgroE)GQv=> z{GT-r{X5X&@3feIYxZ=>lh6zSq+~JXQWC2nR-Khp&7c}=Ww63m55oz5PfM#0f&ySW z4Gj%6#uIu*pydZw39SeI0RgH8*Aa*%YM5o>*RN;+=X9rSNJdmcSAekq-_H;hLLxyF z25(k1s0Pvr6ju%NV{lNIj!s-nZ4)5)Ymor6tg$ zpj|7xal8Ul6DOyJ&f+ER>T#K?ITxmI5`)U(0SYY%AM<@}V!r z3V4sP@pVE#57ohB!Keg4-~s;r*iJ(uBZ*g(H;95r*|mXZ?Lc9U;Hc{X2z?J8IB)-F zgA;`N%e6F6bfryzQb(qC5j3EvT_>6!D$_E`1zATwO6Rlw-Me@FX1>5|(1>w8^g+M{ z@)gjQK`EJl$W4#*7sEm~705D-j45z58P>8M9y>3{xhW|r!GSkNzCMwZAwwWaTbRlG zKx2R*zR*Gi+qF1cA!=L)p)M6W0VRiapb7=Hawt%Q!X8{dcI+6y5?yF#5sRliV)qc# zsD#{p)YMGCj8@uZZp&f}Z?SA3i-BZM08L}?q9!CEBZCw!#LnK_(y|EJL3__p5wFJt z!mH!%hIQvP=eeF`P@K&N3YX)24{n3b{P^+l4WcnP7Kn`nzmqYnWCRA$x+5ThR*I{_if42|xD3jO#odKLiz4@lvl-T=OEb#}&d$R9geT#=<8 zipO?HC_*|JgP|fKN`Qz{Tp6zC6Y>821TdFhzfdS(vtUZ#6C`I(qKr*Uj`XCkFtm|T zVn&7(be4StMKP(r)os6}q2c*OzL!nV48#&ep8yJ(vT<<2?@}cc0()tCdrY7m4LZFt z0bR|7fX?T$Hl=W{?NaZaSN-LDZCV0i5)y3VxpU`|DAZzIJA3BfW-3vbkt9KJ@hT|sxlMeJ zNQ&d)y;LWMPsL(5o0$o_2s0TApT#>)#qLTCtM8PChcYHZlegS$Hv2?1Am9LM0~;2;1n z6)+)rz(W}s896yM5qe_0`MJ4Q)WXc64?u&4ZOOO^s@sx}dpKdL$5UfCM1b1>tq7qh zCq)?%(Ez3yR)kSE47+# z%JT&qp0!3K)Y#ma-Mm!%94}aED$JI?p}t!-hRyNB6U;b}l|o-T?pM;_K|(?%rIPKH zDq>=So*%$%wkFnEjQdTBhfsQZ@$XL&o~2aj%3%5F z&|x~p*rd0IsWF8Le@pCn$s6m*mnpA$OjyZR4~wLC?aprrnzo#Rr%4N=5w#bX*m>!? zazI4svAov%rENT%4xq-a*XSGc)$WGx-vvC`nQ$F?r&TO5$Pj*;AxXIw{qV$WT|pPI z)nOXmNZ$)p(s8`LYlSUi2gR7>-Z93OZ{M`DM`SZA6Kl*jw|vG^Y{s62T&)$ke@~Ci zQrYu_kKTUO>3pFZx9P7f-(61`@69C}cFVlN+vWZ9llf&vnf{W+FM_=s79kIBq`^AT zlckv^2ZSQT$FytAcC;1b?U)FKeb%51lxrX^g)?o`3}sqBg|V=-b!WYCV_BoZd~`tL{d>{|@~ngW@Ix29VuzW;T3~J{Vq(gfC4-b4 z7w=Q9hGEpa(j{Woy4$*91s$)7f1|T7>elp5DV_H2T1zt;xS!KlF}IYvGxCJb1(U(e z#-TUCu9Khe`2m;xK+mN}o^r>{a_8LSMdONh%UbD7rXDQN^+=htoZYzh`0>_O2{3oy zO-o`AdcG|i1wMe@y7^u*N)H9v5$E|ff1QXxMMawZ&j+k1 zQ&c?GJsf~f?zGooE)uucF_{?Ap7Pmt{BVe19XmcgdC2{F%#6H7Y1@X#`nIMbQUOP+YyrsxguFnkC=nu(R8Cvj%4w7}!E))mO^4WAVbj zXgifKt`Oe=l#hdnBL2mFHM?0bmdBP50sW_IFdCVSnT+TKWo?hM77KPsAV#| zBBh}hGx_-O_VMyy$HUj3gB8=1wX~uPJ}d>+`7V+rN5`akU8rz!2j_s_xm{da7bWL2 zo-<7hH2eC~c3!hU)@x~G`E3fDR^FE3$~XM^zW2QIhgQeM#dHRJWWAMZv+b2D4()$Q ze#e#h^cU=vj*V9R`t_~@_EI|XmO-63@jyfXNZ>o<96-<=hJx`BA(z17J)T!A2k+rdaY-KlI{;B!vXKTkD9 zYKCzKG*kx3kFal4iKmAcj1r=Fda8TNU+UPY-_nYG7fp1<>Ff6n;~#gzDX`cEXV--t zHaa@Tk5ayL;#HF^dha?-cs)fO7reao1}}-u^(3u6E3mE2ooyIj!Borv@v3^}9Uc89 z{WVKZcts8`^u-vPZEb(E*OQIB;yby3y=)rzKv6k5F3$JYR+=CCiOeXCGclKn;$A;M z3GNSB1-8y!RG`pO-$ElDsBV3fp(q*oY?r@hpvWc2_GDQ4{4TySuB+i{KOB;{7)O4- z_4v;L(HpnNJr{X}{60!eUJ6PrNUi-8bXi*FMNle=p~Q2syuVH^iK{oeWV6AT9+l@) zB?t0ad$Kei7gt~DyeY^KOrcVE!9D|}7!(7Ah!;~_OZLbCvyKdVxZbPhJD-&#$V?gi zwFybQ!}f3W&F*tKoh{L8=nYE8oLgTjc5+d_W&7TF)#S|Ktv6BODe_FZ<=@K)DAW7z zxPD_4f2*Xld5V(Nv`W*4x7j?#m%`~h<>8Punx?HYZx(ErlP+p(Ap_atGyD7 zKYQ*XKQ}jS=VOr4@Q~oXkLMC+eST6CjslCyGa26`otQ9TU^v+IHSHnu`uQYQxVS0u zCiJjN@8x9jW%TYgY1uENH=G9TPv%nleBg{ zzETE#Vj6EXI`6m|Rq*p2ojt{JeNW4Mw6RH3bna5$dKAV=i$O?!m;l!$CdLsN5#jUW zlYK>bnd{E}`*+cX{cRIFO3~=;f7AJo1f0CYBEDj#X_Ga$FAWg?or zT)pTWR_(d32j&U(jOqDZO<2cncKnbyq4|j^x6Orpt%3uGnf9o_t>fh_=_Eqbi_@!Q z-C2X+8&^|woUJY>1WD(6wurba(FA!Ue@d~W40D+E2=e$bVcpdfdC|c>t2s}|b7SCJ z$G0zc^e_Y1VDa!~nuAKi->^wk=LxXtmL>FYXbT!pB?%W{(HkdR`R%%u?JLO()qyt|Y7nf84-)@Ha)!O^0 z?Ng`b=jMBt^K3e2#O%~HJ(7d4qq7f{$r+;(O(slG*V)+1UFbpsUr`IXuk}34-+cD4 zo`%O9g-VDWm3UsGdG_rCXa}?+Ml_F`;y~f+g7NcdH=N5hHMAi+2VUwXoeMs-WN69P9yTGR|ud>GdJV_8@In%|KsbNQZf8O!%NOQ zQ~UA|CJ79;FO`;Cz;?0)Y@LJBhq7=OU?bU=9sK2-te`3ykpj@AZ#QN7M1auCGdc^-u6B7^7%}xCfFI# zL&9CxM>#?O=6-AwK)5|9_ubsPovYmKy&oPSNmeX2NEE@!ueK*gbwU`~SGH<8?vt0Z z^D+9SGU+S8)g43D;#HM0P10mdaZT@|g)SG0j*K*E`8v=4v}0e|>(X;s+kW8mtLNN? zhPCzlL=%QCF*`3G*Yv%aGQXoded*Mf%MALU^qpV@$IP31N*udlX z2Wk2MCmwisKWP@Vo){lrKIIjJa`?Gcl$YluE`Fj@belXtfl0RlYcW93i8ZHGw;Hf^ z(ahh=bA3rER;S2m!N-8)CYY&-QyKBgOwj@P!ye>5ZuLux}J-3BvS45<7o09XjZFa_1`sZs40zaxdzOU6`-2Ia1tRqJZx`JRzwCWNYnCgXn7@Lq1`tF?UV!7U}O zju-Io51hMosizNug@ye?8Qmi8JIc=e+g{ZDuhP=$yU$M$mwT*_ z9r|o+HSc~eqU|J4or_h>ARzS#;uryeG>mO>*{#fD!|MR5II_)V1%!ulWbNI%_l|t3 zH#1EIehCA{;hC-5-;kg59-20NdT(-HXon@XRlH0$8e4Xw=ZaWt9-OQA_U)NKU*A=U zq~fgpKsh`-UH5EV3PN(7ujg*)U=$JqVu!sg^*>gCbL_}OU7`^@;MzpzCadaD35MgG z8*b*FKM@_XV6WqV) zJc&n3V+%hIr+i6{x}qZTEd+Lh2+Q&Da8bUb=T?FDRbt;u-Uw}^_a_2R!({~-H1v9@ z>iUR;xLM4;ACH;K%-IO8iAlYFgSn09Y#uND)0&2)lroFNos`Ggy07*04Gpz-(i&u? z?Cr7A4BVVsrp+uk=id_1@Q)vNq-NLMB?Al`stx0_;AOKtnFwxNSAF|D)f^#jy=ps#Rk{g8K3Oh<<;>{z&{)o;lv zVUNb6*CLsLA<4I&#hEgj5DHbUDy!Z_kH?++1shnjvRZff>NbrXh6+YiuAKtiiZaRV ziKKV&R7`lc^&(TY+ijQkH7lUnpkL;*f^Z>Fq%CW!dv9)~ge|*&NI@6p@N%f&ZkLI> zaO8W*y8u-CbR(<+PTVKgXLO z?x(foB@)+SDw@<-{>U)OpaW#I~PZ+g;Jmw&-v= znZqFkU-aqppHW(@k8Al-+1!>&EfYK=&*H;QOn7#na%}nJ@ngHg{@t1EFl@O9-CRE0Z znPrYq-{Ro!4<5$A0YleyjjRc`3@R`?eAY1j=*L zBxM3&tvdc8ZeELLe4S`w2!stAEL1g}H05LkjqGgL4UFv!P1xOR?D0B*AS~u)Z(w9) z;>2WVVrF40LL4hBAu?GQix4$<OUd*bBD6PyC7C%FYr@(OaFJjRK~-`^}}XKZ2W{_nn-PmqgG`yX#aWEdMb z8T=P-{rfTtlHd5psURT#)ARVpXU^DJ+d1HraOT{MZQmhiWY7r)|w;>8xvbc#FPk;SK!pYysGu*S9$pU@#^pIRl#P$!TET3 zxp{xTM82Pb=WGnjOf)Qvoy`An#DBaXYhr8m`;~t?+V5A$_r=yJOJEq-qtCZ^xv zBWPem{(cdny@Q>xvyqAM@9)9k{&>~V&eX}(z`^9S86ro7c-qv|0%z*Zq)6UFOk7M{ z?0oDz|NIeGa}ylyU+&`{A;R%*XT?F@#(z64VUE9?xbW{c{Au6gbALRCe1gQp@%PMx zKmMNEOl%Q94#-@_k?#Zvgf)5=h=e~y0D-_7;(WLE*!4>XD)f!CPhPs4a=?W;tje`X){0u#uCKMq<&?BKIyF$V<=r;G6%8szq{~QL*auz3YKl!|y!27)oz@l@xoH zc+AdwElgeAXr^7$Ga}AnHBgs%#nZ#IX~ZpV!=}`{UuBI&eZi!6%J0IOOC~7!s?!%! zwfY^s7jI^MetGFf8*5Oy@JedBXU$|~5!(ujvZ@^ao4(z5QuaoaMZTjiIDWXu>QYiw z1?`a}uNfuo-IQDPx8x=Vj=O)~WT5avDth5<_*BwD{`Kr)?(iVFTdubX_8ul_zK-0p zwUj8yweoZC!oZe$XN>5h4l5rwl+M-P5yW%u`<9n4wtb^f|8>i&Db=Sd<6-YD&WW`_ zzS<94u7BZk>S%fyz0SP-TK)MGX%!_LR>#^WDXzzFqG z!-9-}SIU9=tB7$M_xUm%vSzMjbc|$F5GUPOA62^;{F>#6*(U++-q2vPKI3=i&z%dn zbB6_I!#@7&*XNPXv84&;!%|XHvqkpcNy>bupUUp;`3yAPQ*}~ZUXwvN73&CuCrW~C z40!p93)9*)ge&pXR|$kSO8(*m!Z%hD6MiikRMzQJs*;il01ekd`s2I&9QEsSR5dhVHTMzv;-Vt; zRPD0Y7m7Wy!@}tHr#+XCiV*X89T-?WH{RWxs-tn?f-ET@AVA-1+&4Zx{^re!9Gmu* zp-j)2;qi%y0+*4tYa1wVOh*R?z1}@*2;w?(UZSO(Nn!c<`TO~-6?++Jehv<9-^=y1 za%70tz4qO^cU?ZKQMLWGk4|>?RNmjRWs9Vwp6>(uCw@bC~*Zk7;O;phWj?Z)pUF1a15(uB!>FJ|5N|qenTv=n; zYrRsuy0Vzw;C6r3cqc0}v%%8bIPNlOYAC&Ahtk=z8)>G8TU8Vk6f`t)rGgo(mmfbq zkbmJ*|72=vYU@^x;kZ|?9&}{9di7Y$N0cT?)Z1gCr_!o9Ej2NbCa{e3;Nio*{{CF& zA$6i*`kj|wzkU^T9&G4|Uq`s2E+HjVQCAmI(cQ>C{5kf_>}ZF6cJH$hm&KWpr6n&S z7aw0*N(v7jA4{C)>?rP#^H5Wezv_7r+=>=TzInv4fdMm3qi5i!H*c=^Gl+PQNNQ?o zxprOZ#nY{3F;POUwll-6B&UU`pY6GJI+~i)br}YwpH|7ik+i_V!XhWcLm-%|*>)6U zdoQ|VXCDk^6iX{U`^qB1jpMHF(vRWcB9CdyoSx+L*D})5rx2JQ!@1|ZE}uUAHcbC= z;`8Uv3o^|vUVOtT>)tOkPYPJ?*s+aG$g7-x{z>#wl?amCi>|fEHJLzaaH{D ztMW)L3RTu!!@RX^vy&|&D$nJA4h$UEe&z3P+x1#kMTOh&{br)!k&OE13W!i|caVKB64$c2R&Wou7~d=5MEhg zOJ`3i^zNPv{#^vL{`ZT(A2mZpL0><{f6#mFQIwSZ0X3o@|NWBjf3d>+fB$w5RLoa` zn_{ zs%mK5ym>P$EUeo2rBeLa<>lF~+GO|Ms@-yF7Pi|Ozh#S16U=op4*2cb>Z`uM%gw#m z8>TPlI+_yN87a#|{aDEL)7P&T+SjcixT$@O*ueKBBja;zZLq-}SJ&A$Z{9>i?DLh# zbe}ZE#rPSlUAL~+L4d~B&o50on~g|(S6TT}Y;|6tSgxbUy}qJC>d=n-!a^xY$xL6= zw%4y;6GJ{!R#w*3*i_y-teoid_S%O2PfsHv*T zMhoYsq@={fy(=v}$i?-gtgH+lMY6Tzb#!zT5fQ2X@@0_kUU;~G!MpV#(mmbX_wV1I zM7=p_RQ~koQ|b^^HhON;ZG{@f#!m|ig-SWkKRjMpTYDs~qtMk3xS{I7QDTUB-^Xw~ z>YvFO?J2LVRX9$&Q%PGpqNHSXqPMzrH58bK(zRp9^UVZ3I{!DTt;L?M5)$u{)RK#e zi@Po_+F%1edi1E+bN0@D{!h)#{DOiDI0Mq5P?=zQp&VpsGqe87%L|P*&r?!9HaBY= zr>za=u6Xy(5Op4rwR`vOHEY(az54CV)pd3y%Q+X=XJ=e zCTht}dU_i(v)NKAu~!!Lrl^+3G}0ba_jY;DMg;{?7KUYKPvcsV-SxDz+=p9E64{O( zZOyhq5H*J!l!_L1|1mNmV%?IlZqxQ%yLT@y45gD)m6R^c3~TM&dH=(Q4>SkQuHU#Z zDe7Eyn$Cpq8gZ+eo0k|Ff{%n%Gm3hhav9dt*ViW&xQ)jpB=p{8KC>`0(hjWGHW~2w z^XDf|m^N*?Suk?w@Zoa_%3@+AKkJ{5wParRmyZ^npBpzyR24M;{3Ke$bLMBg6kBKx zs>SH*w{PFxXOUa@5y;WwFpooN4{Ju=4-O8#e!X-PqZg<7XQoEBM^#l-`HubD0ldCE zJ?HFtl#Q+6Qnw#U;GH|4P`tZ;{6K*K<|}ae`D19vbNolyl`DjtzHe`@@AW&$#Wh&} zyf)jax#eAFv8Sh-TT5Hp<%!B84I? z&2xIJYt=o7Zr3hqrCi$%fB)M4_Ldf5kEsuBZ3RXZcK|57fm3h{soQ(rx+M8^RDb+< z+g~p%xNo-8Gq{73mp3&f#W=UMx`f;G;|tfYWR3J4bxZS;tzqiw>b}0d_;;3B?acT% zP_aCMzcm+-k9Pn5^CZ*`)La7!poL0X#PZZ&NSPHa9kU>(MneHIW`fMcEh`si>)iV%LsWFiyG^jdxc_kw{;$J&_>T z+1Z_4dnV_n`wWi(v?%6&M(${B6<}iehGa)C=%nZwR`dMK&Fy>l?rmhJqNL2u%?-YN z`+$&(HLef2Vf%qo_Ja+H2)D70!mt{NY=$8bqwLkpd-w0FELw}DTM@oJYaZjCRdX6_ zsI00QL{xnL{=KfQt~!k4NZje`8)=kORT~gQva+%sSe*XJ>FH_R3m3S!xl2n+$2yB6 zA3bvW{?51D>HD{DZ~7-)N5Af6WGuP7>_If_epo!;)6;W^dUNMo4ABD(ja1OS-kzRU zUh@-3qS>xpo?{}SF(p>b?BTL3_bbr|`LnXI4X!LN3b~FtIXGw|A=01`)6&+?0XoG# z5fm&KFRt#Lz!d|IM2UE+AE))1`+k$sm6GtdELH1CTH5Ht6FTT&cGJ?HB_UMz^V@o@ zF3$!GAck>S4*6fdeECvaTl?XIIkE(rhbJX1nTqZIj4(J_D=;Wka$e(x~bD2mC zk$#122mDCh#I^m4^YiW=9>DVDjg8X-b@6xZ+#&JUem&J#{Klj4@?(pNJM`$J&|687 z0_iwLzvgER?z8Af^I4hi?-Q{kxCQ;XcI}$Kd2dx{8$-ZZ)CAPG7y%iV;xQ2V9pA>lS-j1C+ckaM%ucQh1D~% zKM-g7+(PAgaP8?RSr$hpr=D>)VFrbEqcw!>N^H1OTqjQ|8Ho_r#xiW&xY5I7uAM-T zOHNB`GIpJNblqd%=g*%*Lq@cl2@y|K*?7MmBvKFFq=+T_DlfgI_?sO0Hq?LhmF3L$ zo5yN*n|tEQ()sV4eImZ$^4 zcJH2coIc?ji#+KYcB^DIvdsx}p({)C$bLbs#d&#}_XC~wXB-@_9Gvtm>8}ou*1t(N zFE##B|_zXyfoL6X_T~6$n@i*U%!4;RmtQ`kl}}e zpTX<-zDN)SZF0T+{eh&ow!>WE)(tO|e6X)4JxUyUWsc1=t|8cMls|scKw~dD`tXQ| z9ZG;zNF!co$VWR0`AuihY@-Jg5ERTAX5DX~FmYc>Qf=7fndYcZ4>Qg9wA*!?_4@|A zK_DOjqGAqom8_y#*mf4pgXlRHT7^BmJXNny8!b`@NFy!%A;xEA@4kI9Bwk+LEYq3= zunNeBg%o2dqJ>*w@#$?-VV8@Z-bryS&C9?kb4R_uN+y&CJf0 zlb6@avuE~fwE+m*M8z;QJ4+WpLU)Ih6O)_EU&@J-miyhvT5D=*nwma~jBNL#+^?Dn ztiaEo3+w@?$GI&F%Md`4AR%3@tgOh(%Wo^4TU_k#@879}T?yXj;zg!X&e74)Fm_$- zEK|x-PNVYM`S#z}wqHcsd1K2?5;5fYb2A4AhvJ)e3tqMBS9=zjOqBTKxy^bHbyn#m ze?6`}@oHH?POb*UL?cD>E$3}yGDTM7JFbuSe);gtUw z8ci*&L`7C$bmc@KHGsjSq+9-5DJb}@Tke9O=YDz21H1y%am0zV)*4M#0%AxGo+uH+xV+qEK#wx5!mU=8K zoHZy85(S;6f6||mJRifauBR7$fqfN)e}7sN5->ui|tW2=Eut? z`8YT@L`5%8_SK+c4)pi`P*bDU7$SWL;WRNdH4IRsa%Vl^8{^|V>M93kXA^!tyUq)< z9XpT6@7cefj*f1pl8eg>O3FWc9RW**F8CX9cct@mnU({uOr z7C`r|_#C(;?&GtHxT03Vu1eQ0(OW#>XK*_xDBy)nd(PFXSDBfa?;lYZZBEyhmiAX< zwSFR}CKDbR3B@2!ces1n#$Brd?n^l*W`}u>OQy>+4Oe@=HsH^McJNWv8 zYmG~K93HO4zt)}9Z{`|M%jTHFJ8EFS>6)R%K~efFIykI8_ROY4)g(n$y+_y3AFMQ& ztd!aM{Cc|yYuANN2wPRiWf&Ls8X$DoFEKIEGJsMjIU2jNI*5VrMD#!b^&lSDdZVMC zJ`Gy#+`M8Z5D*pyD)noT`y|MdgG6G>JMfJj?J30vt&m`lynzY=gMzZNvQ$DR=e_8o zR)yM8o3m#Pv)qB~ey;wSnDFSlda8Zj&X9z}*X5|V;OIysboG=Pg+L}?L0en*(>RZQ zbw>uQet1I2Y2Y)OKK&%Ab?dGd_##6jtEX<=yjf94e=Fhh`UAJ#l)K@bX}X0kv$7E1 z=U0U@8r#|yfSWYZ^@?$WD0Eoa+50Bv9rBkDbC!-Z8?ooZYWr{c`LP^2ge=!zvbvmp zf!!x`orMeFG|mOPM-B-A&;+|5UpcaMM?en{Ir?B*TU*P?W)Oh4_wlkFI`q^wt9Mng zW^&)mXyMqMeY{nbl@{|8y|s(3TL|I@Fa3}(?~ZZS($jlwRvV1~prI*bec*rg&H;CX zH2Nhf24PJbXTy;I`od+XlG46)@NDM&-qNAgu5GCjgKyU3$Pfy<%9>Z<+35?{A z?rt@)b>**lFTNqnB%td;wb?IlZ}&0v+qfo#tjaT4i`U)j2%o;AAkoxSg&xZmxu=dS z3zV5{6^iwch|O^6;}vHM<@4G(?v7o)fG7{>u}Wk2RCoT5~mfj{i*k$RO?-oGt2iT1R+A zUE?#%1gIg-G-}<{Fmy%r#>U2o;q8o$ zic}y*yuH0a*oohNAd}$dNm?(lY|p$4cv6!FCJZP+UdzIF)oVnT?0fUq+E5|MPW$1x zU;c6FyDK`_8)w9|A4rCW*SI70NM*Xv;{tCkPo=r0QI`VNe?or(&H z-v@^sZeb3U*+5Jnce2P*2arI*pkJNde#+S*x8&ihTXm1m zs{Q!rVpDNwv3kDNtDbWUVmN`}&E8&KKpvnt_)vTyyAbcmB#?LR`SZ|$&_kmc#6!E# z<%FkfH0z)_WF{-ih*b8Kw+NWLJ0Jz`>FsH*BMuf2tI4A8@AX=zcqrp}B42C~RS z9NH1^`0?W}_4NVfz<6k^k&bk7tPO_HP`P<{l$Vu(J(^!wX!5**zCGWecPq__3wfO2 z-0JJ^8$1H>hdb2P=gfl4>sRv8tn#d~U9Vri4vwwk#fulsJrCLB08(%E$j<`x$8irh{z zFTRm$RZBxdLm>9( zurMJxYuWSX5&ATnSH^4yfPiByQ)lLn5d94HxfhKU&qiC`9d5Ym z-y*P#1h=nsGvSrP*C6qkv`|pFa44WhXbE7Vafde{KcD`T{Y79WP|=`rOpi6UOOGh% zH6gDdiGT|?H8SG1_;RSx=8$MidiD`rwq)^Pq~g>P~%;S-}kO*&(dxTxuZlz^aGam861O=rB8~>$3Rv`ljq-%?xKt2UCB7sT&?f zCtwfa5=14>%cBJI>^x^?9uAJNk77V4z}}!S0d8JF7|wYIeHvq1KZ(qdSyY}eLS660BlES5qjdyyE zjn6Nkd{shyl6@Ewa+-vO3_GnW-|_kV`#U|apTL#@0`>FrLv4YM5@aWa3f7iw1?>Rq z&CSg{1Rb_iSM2hV8;(rs`AtS1Jb3UJ8ygnLn5z}7sT=wj&{+7pyCS%`oqo|-++~AG zcQJ%V(0%0k^4e>Daz$-DA)Urn@}i~XVDsvS>gq@V$39$9dC-2c8c^cnLuBLN=*lt! z*G%&vI42|fg%d+4|IAFd*i0Tn0a<+*|6 zgCV08caLW^uf-2^g>CE0!-9eyWC>)`_OH+=aEkm8HXvogx6t1|+aKct3egle6qmoP z^tf&TxCpUS*LTmA7xzAeHZV0gIRwfAxvT)It*hIyv4ABG!AURV@*p&Hi|;#LtEQ!; z$y%6H7*86$#}#b^XvT>%GRAF?`{2oG=cZox$;fZDa|C}_N)l4)3WtEi|5(hi@2 zKJcU)RBF;IPz^T0B%xhf0b+gIrey<2#9dn()6{5p@5cA|iPft;RkkSQr-^y~^y!U? z?#yP%>|Wd+L39HX2!Q~vPApF?<#XpPA zL?0tu@w;Rtunnf7t$#KTd0tg4X__e`5!|{hR*W`5D_y_#^hg)koAK1I#N}%d_0=bz zT3fZ+&)}K$|7W4)KafA)kpyKeb@g&vY=oP>z9z=T=C0BN!Y|=Gx)$My$w{y==w>1J zATy#vgs=qF(pMt3xVSh+Y7>DlExw-bI`9HO8*Z@^~rWV6~briYJJ{j~|h)tHBrox)A8u`JMOFg8=dI_9Ju*AgJcj=OA6>e13Bmy5VSv`50D!8wZn%c zr_;oln1JTv!6YVM8$qrIf~)%UX|z3;gGNn5qxnSLyAU|!wv2AzyN=ZcY0!ahr`*1s zg$M=>mW&KLI94=ubjavu5$PE8FLEA8gn$=CMP8_?U?L8pPCk>5(pFV{svcLo4$Hot zbaB!R)GUal3rOR-x;9YIXrDcQp0yvM>(XFydP|JHW`WaD9awE7f9DS976Bh{V^a}l z+PjDu0^n8gXj-I=sZG~0H#MDkw*z(-<~+K8aQA<;@u9Vw2H!^}>+J*k#9Xi+<(a78 zzkhG;xeKPi;hot$>#%DdM@40e;EUwm6pR1w+64b6jqaaJh(9en37_|=sjIJmegl)0 zo|dNWd7gvhs2`w79n!UA*{YMqNv* zwKdBu;6rDp-u^RqKVMtG8?2_CogMBY!1~0z7x7k5kS=6iUkbW5AdTa?UXwNae0+S! zy*5ki=#&5qL_DURRITa|g{I3^y>jTm;X#Lp#8J zeEaqdDFEBIAU_{!L`+9>ZLJ+V45VEQ45NL0EIR_cyuBe%_?v_BMWM7_Mm5`sCi+!j zVWIS)2y{HaEtbKj*~5I$hM)_C9Rtw6rUux+3g`-)*e!p5dk2SwTAvl@veRfs3iI+f zw{fEw!(vF>5m<(P8IA~RApjD}ty?`hPs1`8_{DTR__>MsB@l1Pq3N2LM0R#tbbx4Y zHf=vJ2W{7?1PwO%Tgj@#d~X;o`>wyGr zl^OCm0IvXYclxY)6QTL+6}#*O?E$9AVyF$?7A+r<>+|8Q&iQ~ zLSRo9@k87occG0FWMUFOP76%f_Vz7!B?hR(08ij}mlvkn3th*ca4#Vc$;uGjMe&mnfpdwY4>PXhk)( zvWNa_a_KIo%=z5fnr}-7P8Vsj8n(KCfS(}ZQ&VlA zkZ9<8_YMr4viS0JvcGnxQb)onR)@p`4T8MHkh#!rL+4L&-L!2FQ;0Mgrfb))2l&g$ z(F#QxQ$0l{PKsBg*S3L}!y(K{&V1T;!~yB9TpvBhB zJ&1<@|KdtBGqVa>7#15x-ZeIc`hR*Xa6ckq@cZ}Eq!Rd*LD9l@F$7}}wBY8n6zyOm zOG_CN9LBP%n}j%<&}#z8t-{3N+UeepVu|j}+I=KeTSq7P&b8vM`6eB5NuX9bcWw(! zW$y%_AsxdmnD3}Zd^j=`VnneuhBa#ZrJ1O~&43nYM7cp~0+~9TaGn=*3$}K!zyG(% zc~lXzGYNWYufBnw35?EEt&<#E=#CIr1`+Mput}zn3;-uU{dWQ=GoSH0AmCsOpAU*% zN?O`$ED{z{jTgK9sq#;MnuDDlLnnyJY@yC2M?}G71K^Sq8M+dwI|njfy?T|M-B?#= zP_p$)wv~p<+O{{Ri$7{vn|gS7B)PlmLW1z{Xj`p@=S#9Jd_&TPap<9iKVHC_B1hEw*6|T<~wRpC*SFiXZ_%f_pUm{MtfNPwE zP#UMFroLi}z`0!0Kgn;?_B1)Ux_carudcE(*|sy(1Z70^`49I^3A@o90-GRM)ull0 z$;jLS0YiIp6XEl5x8b-Y&;gd7hX#Adh8+2hv6)o;5>a?E1q9$R`}pC*i|-p)C|Qpl zg@hTTz314jTZsF_*U{;!Y`7R$Xh+VcKzT)v0(~k%)LW2-Uf7NE(4j+cWz2+rX``$% zeu)Izzz)M8{G!OpuvSMr36)UqnQ9@2lNB}3}tMq?>oSh!cIMS3mPYaZDMVihjvpX z<-f9O{?tx>=#V{o=BLxUI3z)`pFe;8#P%z-{dO%Gr!_QOk>ijE1`v0!!VNC&kc*$b z4z%*5$rHRV;fZfX;_N~V9G--T4Sz=cf2!91!N|b>O<3TMqffmOA(%TuTtMy2ky=AI zaF}{C01IzD9g(^L?Xi@U6qyJge?Y@{fN)TB@qLRki2tv z^e`Jij0)o6<_6fli;iv;6%bfDVb$mReTi7=t-eUeaNh*LeYbftbjE1d$Y##s+=aJy zv5Pu&SBloMF9@#Y7NsewPiv{FzwqpjHa)9-U_bL(odz;lrdM@4txIm2o1Ql=aS{?2~SRo)Z8{K8JMoPZl-s0RIQO!ZJv%l z|9N8U%sT1CgKpOYP$L!~4hMXIUc7;7DHnPzetV}{Z%oGS z9!8w~1MrzNFo)jvKYM#mCZ<|MV^-fe$3i6{O??s?Gbev&-gH+#?FQKR zJRy$n-fd!N_$6ImEdRnv(a|TWY$#RkV4KnClP4qWzr)r2;(Og%!mAgbBu3JGl+aO} z7G~f$e%u=146p#4BtH%IBF-Sgt}%@zRAzZ;>4ros$VqaEHvT|u6SS9bMTi_UxW&*C zG{FL5!>(U@Rh;Q!HQ6)|UdF`}DrDP!I89uc*YaKkFL2%n8*kcNGWRgH9nY3O8FT&& z?#U|E&939?36%9q72B~5wyeMQ=+PdV;I)KPGSkZzl;Z2J3C@I3tbw}opEn5qQ%CrJ zdy44)jFg}g1^Or>BLh~P-wGLJbKAkY275xJoltRROfFr@lsTUSR&51U$u;m|7no5cDY0Pp@xl zZ#OeGJ|K4aLh1!#$ngt#_)a>yFi>37b%-|%@l^WtLT7?j6)o&8K?0_O+N9X7%et!| zFYjZFSQpSduqjvg@ngrVK)r1%g*^r%6220rNx)(7hC-Tx5(WfuI1XMNfJyFc+?a5= zapMM^i^pW293vwmywszk47+!i&4^-92u;Jn;v&39XpoVGp)}$3pFiE<+;}J)g^VeN z6NmEw=T3Gdp$E^d_E{RQz}ruN1-|(9I1rF!8kws{% zXeTxGMKiNz`{x*Df-euv9n>+{E12StPLj&W+%zb6$PX(}C!y{Sp=mB~N{o!usg8!N zjVZ2~xHjMgDgas$5r9Atmo4|8a0HMX&?%5X6}ee-8tW86ZP>p*689(J>C-7t8~P=e zVMWJ1+eAaThx3VT7Pw}p3Lr=~w@b*%-i8>HoNOg7PN2!8P*zXTG{89C*w`vr@dCU7 zsq;sBgVTib!w-WEdG+LWk=#GfjL&=FyTEH@7Ncb+`-x$}242Z(N2g|)I0;fCyNH2C znuLzBcXA$<`V)&^8X6w>dwF?%S9=NzahW{8%fUPJG|NN!tAc3X0H2^CR=Ird?Iq9pprr-4!pxAL zP6&U?)!0QZI5dJXt91pFVyx){lsc zME|o0Ul(E()-FNxI6&V1{sxa=O6u$B;oMdalT554xSq1p*Ebetcryf>p~(VA0OAa) zR8keZpwaj48KQMDFaTY&jJky~0u7JsR$XzAvsxF0**lEHky-eP3N!@K{-O&5@dd@; zq*lSpV;qXf|i6gq4vPEHZbpLUb^bjgwP4@j!Y%5l%1YZNN}c8fqGD$l*3tc$P7qhm#0p16&50>NZ5S_`WSpTxovW~ zS)bojKY+xAorboRx(?k3k|iU`*`r4v`X~3dSi$5^hR{1sZrizM4`}1Xs!es)Y5FA$ z3=Dc|Y6&A(k(Iw|mpMFwjc^4wp854_kpBt>!2JHyHj0N(5#D zwP)*w!7AomTVYhZggONj52u6m*Sv8xDhy8R9ZNN&Jq7GWW(H04p)!KI!Um=JSF+3> znGvG1=)e!@K7cJ9tNn5U&&gN>zE#qyt`ncL_vo7Uc;A%0Z3HPYBXLE0!W*E%tDm-qt)0oUjdGdpC-C=45q&<^Q;p z4-XF`oJKo~b=1{ezQ5a$srfh}LWYF?9)>iykT8m|JFpDsBr_vJ6V{l;Z`aW%Q|{+` znvgI*HwXVLz1U@878X;02WS?kij6Jdn+V@ts$XJ$;D13^mrO=tJ_6&u;4S$1`H7gx zg z)fhU-!C{B03xnkS>Ryl?Jii~?wr^)=W##1OUxhIkV(1pBnA+zg+kAQfi1DiADhh5 zqxjxn#NaqBfPo0+^??+ydDC?&K7Y1{QyZL8IG4#*nzHxr-O%C|6l`3-o|>kR$)xPo zZdlV0gJgA^n~Mu<`+jWf&`@5~U$E-Z3CjNk^my{*ihqIg&{>j~XcuUHFm={r+e%-I zYC%Hz8))$G-MNK82x`-I$(L>RM*iVgE~GM2n*zy zAJljoEhg$09+`l^wY6rsn2T$9sscp8@jRQvM1!zBe&mSMaayYVe78>+JokVjx*9HR z1%>n|Sq@NMiwKvOg&7*h_m_8%|C1L%Z5{{`G$8g1hOCm3lNp8GGH}1}H;BV8VhT7@O*wS5p_-6pC+(Cq0p3zQIWW{t#Xr(bg zmniJ+FzcTU+Nb9F0yP4BXghKfu#K*+?taGt2wJxjhP!JNEkGK0}o=0 zRh^qGAHn>daw5q2+W`T4!N;DTEqkVCrA5<5Ut?jbAi^PY+04Sz=2y`;L1G&yeI&_f@u6rEP73yu7;!sFwgj-+v?br|;jBUTR_N1@b#~9tH+; zkiA-3Gzpq{_V_IqmR2S0X;hY!9Epi#rh6ND14;2B!NpMTRV1`UfwPi~z>sA7^ zqd&ZuYcLE4n0MDn4gG^E+c`>{8#XurY8DGEDpIJ60WLX+fL&?(+ z^j|QTEV?|UVr4Z1xek`zHc0w@58v)qs}kw3sP zz!M8H1V<-Z9gwie&eV+?G8}rVU|GNje_yh0ky~bJ>IqM&OwF&UI{bjk_bX8W!Y7b> zFLjqs4>ndKjypP{@}C^SbSLd`O->XfY>3xO6V)4iZ&6FU;N~9IVj_6qr-Q(PAE< zr~qRzLfMJ>hEKrg3VLVV8|+i?B)QhDV6zBsVA)Mc8HS||;0bO@0*P1$c$q!)-D}0n z%If@%{bt#Sd)aKlXAJ9ldjLj3i4VVbPhv&p3ty}vD_maOn8TjXz=EQp45%ED*c|(* z_S>$_ghP{;`osvoCMVZjfii`$VOvnGSO^03jvYTR)NXwr6I&SCRC=Juy8a6K$PkAR zY0P~}H9_!uba|j?%865<8hZ2Ju2a3z=i=u-@;!uO8j0OPY>~8? zxj{0!QK6fR4G>--A6wPtMB98X6pg$b!Oo=YT+*dh*U4J08U>lLuBs zy(8k_^C$u-!K)%>mfhnpLLU3b7R2CTt^Q6d7^9HOaac*8{e-6nzdh7<7(aW1Z$Y|g zXljB#;W!~z#*-$a1qs;H%$}@HCm5;?0dUTVU(s%`^e`bc}*=@eT_IKxpZ<#mv5podGv~; zq$(#DB+H@$T~AzG9P@HV(^FC!R-11;ZdBLM*uUUO%GTCZQ#*XW@+D3>>`aJw)}AGRAKbZ`dhq%;<4c1QrExTtlbjofmzi&}I}&n# zhNN6#-MaqTj5Yn<^+y6#==RZ$C{DLhs4)GY=^KEhH3jTU%-O>`Dj^n=<>;YnPHMCak#1m4?f&w_ zv@EJ?^fnORpXEn(jxIXb)^z?0v2G=`TY2@cyt)P>?T%>0mN~iF=PVLSXIX#H-HLm3 zJzpgF+_R@qIu!}A=O3q}i5?#|T1q5eL##!?nLDy0yDzxB`{TndHx}OP@^`yo`)((i@YnJKD0==w656V(y*uXUw)9NgmoB7>lP@zBun{Z0661 z@yZChRp^>~)3+<{l1ltiPvVVIDWCq7k-a&W=Vh8^GJg4OOgKBACbIbDldkzQ`Q@-9 z3T5;H9=9hO@q$dkkFUuWVp|w!^_;rN z(ZAZ@xI-tSfp@ruBm9NT`D%8(D(gUlSk|P1XU|3^E}S-~!*_YkvQ1H`(aB!*f9^!D zYo`3^)8*xwU=6QN^Oo-UKS)lpu}$ZWurq(33)r))z<9!HS*EG$NSx8&;1Ew$@QTOq zQq0fVo~0dOcb$gcpBtHY(C|vju~Tym`uf~T*uB33F8=v@4&MC(tL2QZ`6?4X>GU_e=HnQs@jY$FzO5^3Ec|0&Iaf)> z0LkfN@vX(wk3Lt#Zi#!HbzDwkWno`KuQ5;KKu@@=BHmGv`XFXulBF5;VeABJO`_Scr3_D-v|vsI@w#5SxP^ z=we^i;XXb)CN?)*ozBqMxUt5)=2`A^S8Ma|$b#^F_quWRgowR*BFHwvW%EB@7Cd7) zcFc34C!iuY=5~<6HjiaBf?{%Gtk_taFC4 z06&KKY(G_1ofAb3N9q>oTS0QimPRZ*B7s_$<^ho| zW9;{I8e=%+T~*Do;WJN^^K{$8)OMUcE$vImu@eVQejPfk))+?>cH;7Chj&QHgNF~! z(%*t`T~n*dUB8ch=aF4o)|KB0P>{7WH>VCPZObI#jAZ@`o#M2jUxzBP;EW!#U~ z`Qfb(DtGEf(r+f5*YFzsQsQH)*IA>JyEr|v*tGQI?e&d=`(`S1pS)Ei?j0GcxD&&j zw7iKbM#zU*c&cJ`=~w;q(1s1Zl5}6{yS7CLU6OdC()H%?x{1Z{fry(_VaGk}mh$Qd z-?$C;v~nGtzkPPhJVI~gCtX`{yv4%%N|lhCap;FJW0AkqeR$obyvL{92gQ57=Pxj(UV?cM#8nd%PJVda~i zni+F0+ETS6diOALo@K$DaM(anR%j|?uqdjbh|>Ty)oiRrnsJDCqviC&)fJLbLqlcy zu3fZBmbVV9$l3s;b0tm%JrS@g+52GH)ukc5V$GABwAbKpe${nVY`UG5n-wgu+vmg) zIzrA(K4(%>3r$eVj{7QvZ@uH)Agq4uxPNYbdTA}!@tqNVzK^eJt4F4_%t)^6h`HO) zRVi?B_z}+6XG1!TKZ#-V%$hgNW^<9J9eW?r5}qitWu@yy3K(f$SI##w%TrEVdu4k6 zN~&@q?Q3p*misoH3+p769?0k}z8Ed6(NU9uVf{Wd?&!&c;&AO$c>zzC0g5wg%NJBE z2d&!}d-~0TCb=w#;bFMjx{(&SwhW`T)uP(QV;5b&efz#iO>LKCN69J^ANy%TVz{V@ z@@b{IX#aIJ+k^^p+6oGc>P}Y3KNhB?S84wIV0h~#IIsqnfmme#N|EMb1g1TgeGK{#bV~(m5~h zwYN>p_|&<24x|+g&C4$z;CO0AcoT8gXL_Ksqw0&pZ09nMz&FRqv)dSR28uTjep!BQ zFBr5o8KUDb!OTGFLVrKOeynr(n2*UCx&A)g=M4=)6kU77Y(EarNuAIc_jR#}Ij*a$ zqod*0Z5lkt zxw_m*4dNvT&t6Ek(OFIHm;D)$QmygQlCd#peAdxr5JQHvk$0!!V(jE?JGT(V_} zOUR@}!Wbz_cF9_1tl1`Hn~c!4XUj5Wy_8*cS;o>3LyRr1gloGQTh=m@Fbz@GF!$>| z&+k6J?=%0MInSIk-|so+b6)TF=dIA?^95B~Ix{jeV^lmt?i%b0TcXU_9VRT#DwPBV z#>?I@I36)d42L=z9clpgk-&;;tjj}2IUDidUh}LIN0!ALfmS};(L+D~TqAOFn43Rv z4b;i#ODBgMzFo)F{Q{x7#lgL!bF4~P&&fMbS~|Pzc$1=rjbyWTf|>ac>Y#TuiEC?H zN~)eVx(PR7jB~I*;Pmr9n?q{8=CCWBP`3Q?P0g_gB9RYC4)gHrCCCKimAb|^%zMER z2)X1_(&vtDuiog%yGg>6BfcP!ADf&z|(Q*8YQn4iR3a2a!JTLY2f$-hbT6yTEdS*lNqMp&<+Wk$w@lbA`v+a3NQ zCQ=IA+|%#go-WAZgb)XLHfsV`9?G}ieI`M#Rb^0r9O!`wM8PzjV-5#a-_CsGFME-rSP0x^#^;$^d~!;~{8G zD_eWiYe|G8GZg;F}bW%t}KyUL3c-a8F{qgfBwzH zs~KKT4GXx8K{EYGl^Ajiuj9ympHja1tQ@9RILhC_hnuO#bckg665F}98XEkmzL0r- zYL1|<)Eqf%>99>z)4ndY?EyvNswLk^^SGN8q2CHO))g0Lp}SwU&SV7vM=16p%Z*RB z#TH}}iJsa{bu%~H_bJ^a)JBTLw%+Nchs$-DG3XzC=IFzpsq>c#x=i1sSamzq;&5T^ zQzQ_w5)Z0Z=_;zF4_yU4-<&he(UYXB4^we+71v~Z(cM@njAVku7CO$xm!%GuXj26J zU=zS-FV4>f(n`YB1?+5XFQ#V`H8;reNYg|K%b}!K&J<4g`S0vP8I1i7VS#KQVN6%~j2`linWor2t&mt%^Mg4+X#+^%YGbt|-0!85k0lF2TH6PEU9ePofbzce!c z{6pX>jX37MhyT04nR1ea%WtfjFF(L&g}m2KVWL`YfC+sEe&Th}=|D%z&E2efjcp)0b>Xx0qy;n5_E}v%|dP>YJQ1L;i z;awbXxC|)3a~pUkzH?-GrR?>okj#68rlT6?zQGoS_yilz!)GQZclw8|fI4qjy7;JA z4}-C1I}DyBOgDZA6J%#Dfstl5QcG{a)I)b>w>3l8hd)x@%YEg&>{lkQXkerv!_Njp zHv^KE*ePWvpadF%Or4j{$!CTWTD|SBfy;+n{gjZIsejYm_S*z4H*ZfUu6v4}l7-EN z$^Txs)siflqa|h{nLhn`?LxSZZ;ePocdlvecAjz=SP)$wYbNpxkz`-3dZmz6lD#xz z7g)JI%*8U%lspf`SC$TrZ`1cCgM*rBE24Z?ZG@D@L0#TkW#!xc^DrhA??e+34vpsK z$kq6~RyAQsuotXbL@$z0E@kQ8U;~kC%ur`%r%d&+B1B{vHXZ;_sj!0kD0$nl zf>6a5r}NGhk6&34er_~1kOW-gAOqkmBT@)Sc5i5ACRp9Jx-~eckPol4kSaC9y1Q5U z)>N)6Iy*0sc~LSj0bKd$%9MVCSp`XttVJI5D=4q57KqStcCgFub6L(71gm;Dh>*e@z685> z-LoYzKxd;MA4fLw1)?JcWBdoH zLdWSXd(-YK5Q%!nt8bsX&E+a+$J=U|Eu=j}?ZA1~t)z$hgEIm>Xx3hC%J?Ax7YU)< zApv`iIw-Tip6D9zt4-Am z75os7^*!r}zlF4~xWO7eO*rxxW5azsX#QJI=cWM8m+EYModCvxQZqwSek7T&%ep%n4a#?G zIEJe?;QoK$XUJqT5*$s!zqwLWt7aV! z-ZkLj-moYpn2RaHfumvG8PkA~V+ws3cINa8j1FVLZ^;eJ?vmf}0o^h;?9Z9Bt zP`Sd262K$m;lf2LB*CLo8Ia?Igc-*iMHG7M&oYYaS{jl#qf)yoI8G$!l?P+40}$dM z&&7G5DWj39r&{9g!jlU}9sP^!Y=A%&C#id>ezIX&2D>aX248)A!-eC~j>UsY?=jDU zq){YbiVxY%#k5(^=Kskb`+u9xLk1`m7Z=y+(h-m?3IKdw4M^;rAm9N+OsJ@w0+_Mf c4g}#Ga*ti7>7tE^x)2zKx+tA$?YmL`09{yHTmS$7 literal 0 HcmV?d00001