From b58443d3ff237eeb9f7bb53b4e702eab3dcf7dcf Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Tue, 16 May 2017 15:29:22 -0700 Subject: [PATCH] Update to Kubernetes setup --- .vs/slnx.sqlite | Bin 94208 -> 94208 bytes ...tting-the-solution-up-in-ACS-Kubernetes.md | 5 +- ...solution-up-in-ACS-Kubernetes.md.saved.bak | 273 ------------------ img/kubernetes/kubernetes-scripts.png | Bin 0 -> 46810 bytes 4 files changed, 4 insertions(+), 274 deletions(-) delete mode 100644 10.-Setting-the-solution-up-in-ACS-Kubernetes.md.saved.bak create mode 100644 img/kubernetes/kubernetes-scripts.png diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index a9d43e904c34ace7e99d9aa2c06b0c5fd40219b6..6619f842051197f2d4853b8599edf252b6631ebe 100644 GIT binary patch delta 359 zcmZp8z}oPDb%GQV6U#&yCm^{oAy}XB*yb(zb^ffY4$87rZZ@xQaD#L1Rjnv`0Ums*lqtXrI1lvz+xtXGhi z&ajo^%A8e^HOlX{+bJ`qGC@q+zCx9;i<2>7y0JdvML8Wt8y+SO#x~||<`9lMEZ5mr zbNaBpW1GS>iOGvec)E%Kquurd1IEuROmPg;7lty5Z_hDhoWaHH#NIlc-GR}XiM@5Z zlLMn8ySyBWB@+`ahcF!5zQmm|fkRH0@jV+;JJSRfRp$2`yV)zaEP2{k^Vz;KOEXu;-er1=JX12s-(J@2j)afhS N8TGceWH8pS0|3y&Zi)Z^ delta 259 zcmV+e0sQ`e;01u-1&|s70sWC2LIMH(v0zg#0mZYlFMdx2sh6yKhqE_-nxF-u%YuH6 zm)0KvFabW72Ot4|1P?<4KC>YZv;wz2BLQUs1){zMxZt;_B>{>F0Th=rF9FdYEde|X z0tf+y1B(Mx2;2nM2dfE81?~ov0+Iqs0uu#nmm)9$KDS~p0r3O^8~~T0RRI^bY&8Lx z3Ijn0q?ZRk0Xw%uKmkDqk)R>Bq(=c@2p}#2?*;;g0+0kH1MdjC2Y3oO42A`72K56Q z0@MPR1?!h0Pys- Steps to follow: 1. Make sure you have **Azure CLI 2.0** or later version installed on your dev machine. If you don't have it installed, follow the previous section that explained it. diff --git a/10.-Setting-the-solution-up-in-ACS-Kubernetes.md.saved.bak b/10.-Setting-the-solution-up-in-ACS-Kubernetes.md.saved.bak deleted file mode 100644 index c20cdaf..0000000 --- a/10.-Setting-the-solution-up-in-ACS-Kubernetes.md.saved.bak +++ /dev/null @@ -1,273 +0,0 @@ - - -# Introduction to Kubernetes and ACS (Azure Container Service) - -## Azure Container Service (ACS) -Azure Container Service makes it simpler for you to create, configure, and manage a cluster of virtual machines that are preconfigured to run containerized applications (based on Docker container format), in Azure. -ACS uses an optimized configuration of popular open-source scheduling and orchestration tools such as KUBERNETES, DOCKER SWARM and Mesosphere DC/OS, so you can you can scale these applications to thousands of containers. -In this case, targeting Kubernetes, ACS is basically the infrastructure in Azure where you create your Kubernetes cluster. - -## Docker and Kubernetes -Docker helps you package applications into images, and execute them in containers. Kubernetes is a robust orchestrator platform for containerized applications. It abstracts away the underlying network infrastructure and hardware required to run them, simplifying their deployment, scaling, and management. - -## Kubernetes from the container up -### Pods -The basic unit of a Kubernetes deployment is the **Pod**. A Pod encapsulates one or more containers. For example, the `basket` Pod specifies two containers: ->`deployments.yaml` -> ->The first container runs the `eshop/basket.api` image: ->```yaml ->spec: -> containers: -> - name: basket -> image: eshop/basket.api -> env: -> - name: ConnectionString -> value: 127.0.0.1 ->``` ->Note the `ConnectionString` environment variable: containers within a Pod are networked via `localhost`. The second container runs the `redis` image: ->```yaml ->- name: basket-data -> image: redis:3.2-alpine -> ports: -> - containerPort: 6379 ->``` -Placing `basket` and `basket-data` in the same Pod is reasonable here because the former requires the latter, and owns all its data. If we wanted to scale the service, however, it would be better to place the containers in separate Pods because the basket API and redis scale at different rates. - -If the containers were in separate Pods, they would no longer be able to communicate via `localhost`; a **Service** would be required. - -### Services -Services expose Pods to external networks. For example, the `basket` Service exposes Pods with labels `app=eshop` and `component=basket` to the cluster at large: ->`services.yaml` ->```yaml ->kind: Service ->metadata: -> ... -> name: basket ->spec: -> ports: -> - port: 80 -> selector: -> app: eshop -> component: basket ->``` -Kubernetes's built-in DNS service resolves Service names to cluster-internal IP addresses. This allows the nginx frontend to proxy connections to the app's microservices by name: ->`nginx.conf` ->``` ->location /basket-api { -> proxy_pass http://basket; ->``` -The frontend Pod is different in that it needs to be exposed outside the cluster. This is accomplished with another Service: ->`frontend.yaml` ->```yaml ->spec: -> ports: -> - port: 80 -> targetPort: 8080 -> selector: -> app: eshop -> component: frontend -> type: LoadBalancer ->``` -`type: LoadBalancer` tells Kubernetes to expose the Service behind a load balancer appropriate for the cluster's platform. For Azure Container Service, this creates an Azure load balancer rule with a public IP. - -### Deployments -Kubernetes uses Pods to organize containers, and Services to network them. It uses **Deployments** to organize creating, and modifying, Pods. A Deployment describes a state of one or more Pods. When a Deployment is created or modified, Kubernetes attempts to realize that state. - -The Deployments in this project are basic. Still, `deploy.ps1` shows some more advanced Deployment capabilities. For example, Deployments can be paused. Each Deployment of this app is paused at creation: ->`deployments.yaml` ->```yaml ->kind: Deployment ->spec: -> paused: true ->``` -This allows the deployment script to change images before Kubernetes creates the Pods: ->`deploy.ps1` ->```powershell ->kubectl set image -f deployments.yaml basket=$registry/basket.api ... ->kubectl rollout resume -f deployments.yaml ->``` - -### ConfigMaps -A **ConfigMap** is a collection of key/value pairs commonly used to provide configuration information to Pods. The deployment script uses one to store the frontend's configuration: ->`deploy.ps1` ->``` ->kubectl create configmap config-files from-file=nginx-conf=nginx.conf ->``` -This creates a ConfigMap named `config-files` with key `nginx-conf` whose value is the content of nginx.conf. The frontend Pod mounts that value as `/etc/nginx/nginx.conf`: ->`frontend.yaml` ->```yaml ->spec: -> containers: -> - name: nginx -> ... -> volumeMounts: -> - name: config -> mountPath: /etc/nginx -> volumes: -> - name: config -> configMap: -> name: config-files -> items: -> - key: nginx-conf -> path: nginx.conf ->``` -This facilitates rapid iteration better than other techniques, e.g. building an image to bake in configuration. - -The script also stores public URLs for the app's components in a ConfigMap: ->`deploy.ps1` ->```powershell ->kubectl create configmap urls --from-literal=BasketUrl=http://$($frontendUrl)/basket-api ... ->``` ->Here's how the `webspa` Deployment uses it: -> ->`deployments.yaml` ->```yaml ->spec: -> containers: -> - name: webspa -> ... -> env: -> ... -> - name: BasketUrl -> valueFrom: -> configMapKeyRef: -> name: urls -> key: BasketUrl ->``` - -### Further reading -* [Kubernetes Concepts](https://kubernetes.io/docs/concepts/) -* [kubectl for Docker Users](https://kubernetes.io/docs/user-guide/docker-cli-to-kubectl/) -* [Kubernetes API reference](https://kubernetes.io/docs/api-reference/v1.5/) - - -# Setting eShopOnContainers up on Kubernetes (in Azure Container Service) - -## Prerequisites -To create an Azure Container Service cluster using the Azure CLI 2.0, you must: -* Have an **Azure subscription account** ([get a free Azure trial](https://azure.microsoft.com/en-us/free/)) -* A Docker development environment (based on [Docker Community Edition](https://www.docker.com/community-edition)) with `docker` and `docker-compose`. You should already have this environment if you were already testing eShopOnContainers on Docker. Other than that: - * Visit [docker.com](https://docker.com) to download the tools and set up the environment. Docker's [installation guide](https://docs.docker.com/engine/getstarted/step_one/#step-3-verify-your-installation) covers verifying your Docker installation. -* Have installed and set up the Azure CLI 2.0 (Explained in the next step) - -* Installing Azure CLI 2.0 -If you don't have Azure CLI installed, install it following these steps: -https://docs.microsoft.com/en-us/cli/azure/install-azure-cli -Once Azure CLI is installed, test it by simply writing "az" and hitting enter on your PowerShell: - - - Next, to verify the installation was successful, run `az --version` from your command line. - You should see the version number of Azure CLI and other dependent libraries installed on your computer. - -## Manually creating a Kubernetes cluster in ACS (Azure Container Service) and Azure environment -As optional procedure, you can manually create your Kubernetes cluster and Azure Container Registry, as in the following links: -* A Kubernetes cluster. Follow Azure Container Service's [walkthrough](https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough) to create one. -* A private Docker registry. Follow Azure Container Registry's [guide](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-portal) to create one. - -However, unless you want to spend more time learning, step by step, focusing on how to create an ACS cluster and ACR, it is recommended to create those prerequisites with the scripts in the following procedure, as it'll be much quicker for you to set it up. - -## Automatically creating the Azure environment with a PowerShell script provided by eShopOnContainers -You can run the gen-k8s-env.ps1 PowerShell script (from eShopOnContainers) to automatically create the Azure environment needed for a Kubernetes deployment. -Steps to follow: - -1. Make sure you have **Azure CLI 2.0** or later version installed on your dev machine. If you don't have it installed, follow the previous section that explained it. - -2. **Login in Azure through Azure CLI.** Log in to Azure using a work or school account or a Microsoft account identity - Use the azure login command with either type of account identity to authenticate through Azure Active Directory. Most customers creating new Azure deployments should use this method. With certain accounts, the azure login command requires you to log in interactively through a web portal, as shown in the screenshot below. -Type the following in your command prompt: - >``` - >az login - >``` - - - Also use the azure login command to authenticate a service principal for an Azure Active Directory application, which is useful for running automated services. - - After logging in with a supported account identity, you can use either Azure Resource Manager mode or Azure Service Management mode CLI commands. - -3. **Select your Azure subscription** You might have several Azure subscriptions as shown if you type the following. - >``` - >az account list - >`` - If you have multiple subscription accounts, you first need to select the Azure subscription account you want to target. Type the following: - >``` - >account set "Your Azure Subscription Name or ID" - >``` - -

- -3. **Run the gen-k8s-env.ps1 script**. Make sure that you are positioned in the folder at the PowerShell prompt (like [eShopOnContainers folder]\k8s), the run the following command but with your own names and IDs. - - >``` - >./gen-k8s-env -resourceGroupName eShopAutogenk8sResGroup -location westus -registryName eShopAutogenContainerRegistry -orchestratorName eshop-autogen-k8s-cluster -dnsName eshop-autogen-k8s-dns - >``` - - The execution should be similar to the following screenshot. It will take a few minutes to complete: - - - At the end of that execution you will see the passwords generated for your Azure Container Registry. Copy those passwords so you can use it later (and change it later, if you wish). - - You can see in Azure's portal how the ACS-Kubernetes cluster was created with its basic information, such as the Master FQDN: -eshop-autogen-k8s-dns.westus.cloudapp.azure.com - - -

-

-4. **Install the Kubernetes command line client**, `kubectl`. - * You can install `kubectl` with `az acs kubernetes install-cli` as in the following screenshot (use 'sudo' if in a Mac or Linux). (You can also download it from the [Kubernetes site](https://kubernetes.io/docs/tasks/tools/install-kubectl/)) - - By default, this command installs the `kubectl` binary to `C:\Program Files (x86)\kubectl.exe` on Windows or to `/usr/local/bin/kubectl` on a Linux or macOS system. To specify a different installation path, use the `--install-location` parameter. - After `kubectl` is installed, add its directory in your system path. MAke sure you access to its path by typing `kubectl version` as in the following screenshot: - - - * For further info about `az` tool and Kubernetes see the Azure Container Service [walkthrough](https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough). - * `az` is also helpful for getting the credentials `kubectl` needs to access your cluster. For other installation options, and information about configuring `kubectl` yourself, see the [Kubernetes documentation](https://kubernetes.io/docs/tasks/kubectl/install/). - - -## Deploying eShopOnContainers to Kubernetes in ACS (Azure Container Service) with the deployment script -We have simplified the deployment so you can do it just by executing a script by following the following few steps: - -1. Open a PowerShell command line at the `k8s` directory of your local eShopOnContainers repository. -2. Ensure `docker`, `docker-compose`, and `kubectl` are on the path, and configured for your Docker machine and Kubernetes cluster. -3. Run `deploy.ps1` with your registry information. The Docker username and password are provided by Azure Container Registry, and can be retrieved from the Azure portal. Optionally, ACR credentials can be obtained by running the following command: - ->``` ->az acr credential show -n eShopAutogenContainerRegistry ->``` - - -Once the user and password are retrieved, run the following script for deployment, including your values and password. For example: ->``` ->./deploy.ps1 -registry eshopautogencontainerregistry.azurecr.io -dockerUser eShopAutogenContainerRegistry -dockerPassword SecretPassword ->``` - - -The script will build the .NET Core code, SPA TypeScript code and corresponding Docker images, push the latter to your registry at Azure Container Registry, and deploy the application to your cluster. - -You can watch the deployment unfold from the Kubernetes web interface: run `kubectl proxy` and open a browser to [http://localhost:8001/ui](http://localhost:8001/ui) as in the following screenshot: - - - -Finally you can test the web applications at: ->``` ->WebSPA is exposed at http://your_kubernetes_cluster_ip ->``` - ->``` ->WebMVC at http://your_kubernetes_cluster_ip/webmvc ->``` - -## Scaling out eShopOnContainers in Kubernetes -TBD - - - -## Sending feedback and pull requests -We'd appreciate to your feedback, improvements and ideas. -You can create new issues at the issues section, do pull requests and/or send emails to -[eshop_feedback@service.microsoft.com](eshop_feedback@service.microsoft.com) - -## Questions -[QUESTION] Answer +1 if the solution is working for you (Through VS2017 or CLI environment): -https://github.com/dotnet/eShopOnContainers/issues/107 - - diff --git a/img/kubernetes/kubernetes-scripts.png b/img/kubernetes/kubernetes-scripts.png new file mode 100644 index 0000000000000000000000000000000000000000..2243be0629fc43c8af1c4a76677a1b361b5845fe GIT binary patch literal 46810 zcmce-cUY6#)-M{dA_6W^P-!+mRGKs?0mXteQ4mmCfGj{t=pj-9A|NVF0i_d>-V%^r z5>Nz0O6Y+E2nrGiBvBy=BqW@$*4p3Qci-=ibI&=?na=}n$~*IpG3IFVH^zK%_l}|9 z!IK980Dz#;?Hd*Vz+QU*VAsNdeY{UTSuZs3F1rFP3=IItL5XGFn?3H=%&q|dHOT^7 z&U<<9`TcG`3 z|F8ZxU${W5Jkf&_v-OtQ_owPtO21z){PDO^su z=Hhk-p*KUyS>`$`!>;Y(5xO%%ug&dnx-)>M{dUObjVF1BoA~~IdDZ-Y{Xh4l zhkZyakeS2EL~Ld{59{v+RL}mJ-M63<^1G1bzP*Ylvq6)sJeky)@q)Ps9v{^W6Ka0w zt>1m)pFSA`Y)&*{)Tfa_M?4y`KNn7qDb(AEjWUjNv_05#ZD&SeO~kYuRJ`^}ilf(8 z8fTVfg}UQTe$$`;bO%EeJW2*~G>h|$))TcDV}T(Po81;I`nQ=m9teSEFun)a+lb8x zD@7sJ=hx2E3m2|=1DED?Poy{RZ*fJ_T@$nn4~U5`ZWWm0jcIZt^vZ3d^nL)~YD-}U zeJKC>xH;#7;3Z?Z*QxfU87)P@*+;UfS)%d5%YmPC%2d={dd?;~P&G#0ci334?;ylj zTSJ7~A8nSkvPUMS*QS(7dGLhPC2=#Rk%tag7JlcXJT5CNSsCsv&91}7rcna;Y#hSD zh){0KU~WoS$CY9zci{_Vx2hYQIZ(LnpO-WN@`hAtPSm&ZwkmWKZM!Swkbwi#)rXXF&dWW%nVmrR$O z-bgaS4ddSXkAOYRCyRzGq=`z~zm*!3YX8ihJkzHuy<#^2uR=+tqy=h>S+ggvLpPQn z)1mBD@oWz-Phw%#1iTwFvHoi%!fzS8r4vb_)v?T&i8NLNJw&kyE+KAdQ#z0zmJ;T3 zyT`>>XZgmAw_}-u7R9+1($3+{%Q(!qc%&PopaG4q-?@+KIOw3T~F7vdyVqJf7G0UecZEEk~ak*Eh$j zb=Upr|L{ZN!#$rxAG&!5aV&m*d&Y<0th%F7Zwl*x6V}AdKfp;4mxhOY-D^*?IUq79L z9nli3(J;bh_Y~JV-ep)2}BUxne z7a{P$2b-oVITB3UR3wP^{HMO4=6r+7fswT$(o;4oEn=zD7HwX1emQzFW8fubFx8?M zVT>YqWKYnQQ313>F9@C%R>l+w%q3&S;N;8OUp`17wRn!?;o+^Aio7keFqP~N%Kmb% z8Q=SkdKetf4$tcSvr@{a(#PZ4yOjy{Pct7m=aXR1Ze>!Fal>nt+UEpc?_sZQ*Q_Wn zV@XBJlAuBQuqH+$GZ5%rX;2(;r#PwXVlZ4BqgUJ2-Q9?qR!OXXSdJ=07?AFONVmVJ z4N7NgX|&#^iO9g`k}@~Lyg?deaEwM86}t+aUMmdRUX%h-H`SLhDP+wq>i&WCWQRg7 zl;E6Jhn1e-W5uF&3sHUM+ z>`x59@@LOT7fTzUgn=b=-~>;f#ILRE*yB7^#It_lMf5qu59{X$xl2aS4cUanUuoLm z;ZX6BHThJwQO0@(o|D;fN^wfo^|h;s!}%YIr51xzckKokWj&A#y;QuG4>5xRr;MO# zu|NFHSUF>q@g9p7fErvs(nR5F}%^|-Mr>GVMa#*DQ!yb4Zvsk0~p zcS<%I49hOY@)K9g{Cm`)k<{i%W=Kj{o7;B&%B4S3;I55E+n3O{#MZO}9ZXQeU6im^ zNtSy-osxQO)q1GIG{kg!Ik=q$r&WO5@kh(e@sTfwGB_)d92A<_odd2-?t`J<=CJir zF}_oz819rZ?mfGynB55<)H9s$@1w&VR@vPy6UwRRp&J9HKi5BRq(>~L z+X@^Bb6L70I}l8rcSBG=-7?4MbC%6*A_dmQAx&&$N}A|_QRS)^7(F)!1A*gbVcFAq zrVmX$ER+wY1Po?1WPt-sdcO}yB-au3Sh7L(i_LnXx!r|>z0;UipOL<2$J}p~0vD%K z^Wt-_Q#EQdvKx}Z%tuh;gh^7;+c03VR|-?Dl{Pc4+=D^{qT;6Ylu@7_@y01b?HgVY`HJYJg%TM?sk2Cbm2T!O7uT zZqFz~hOko<)#MdUQ@hjMK$^m{2nTY`SGOcH&w^%m@^^+6wI&nSNMbc=8G<$o zu+{3 zCTm%{STNNB57mIzXH+fN9SNBz#kDq_TW-47;a;<()ldp&bMT>Mt*~2%tz0(>{3)33lGHD#P)pXkk`{sFKrUzKM$BiLF&sURz zXN&_(VvGtNzG_ar3j6Jm0XI(Vyic3kt>a>0;Fdd6q1 z6DtCNtE|VXF4Ebw*>7L9#HKmRN66dLD!CItdHS>pyugI2XJJOp6BRgS3Q8vIFO~vr zXQ%`aQjUb)o=*#KY$arBEF?KU+Scl^Yl#F;W4?M+ybb^j_3N#BQCxgU;y#m==g({&%X*?~>LQr6>#8Umd@-*Aqe2O*? zhw555x)>pJA%_yAPEdcdEc8wm<~GI7L)Vh3l~q^Or>Wt#MGs`D zBmZWZ8LGm*4NST}dL`0DCOG0aM(?&3c3Q<4s8rZu$&f=Aqt?#3ZjWG$87Q+BR5<13 zj97m#CM7`Wf(K~1xr%*$EGd4i)fVC?YVQ4M9f*Tegsn~6tipJqsIokwz6UxL}7 zzX_r6(&s~AzmC}*T2QRy`N_0~;xVu)Dm}@ar_mXD#t^UmLTqmi=8a=^D7<8~M^l4w z{{3I|yV188;0p^7^bRCz)KAi;|R~Tm&{kiOYIp1hRIxX|}0k8B@{jYlaa@9;h)O zfdEReNGXgsQx+V%-tN=L#W=t#sakG@>$PQAic(ebUuOO2Y1B%gTy)CNr_Tq>SchQF z`9iy?(kxN zZU!@2ZxD8UhwVUu%V7KicK?GZT*z0hsSbt0+VN~QeKYMU%b4G}av1hgk7U}FLP|L0 zJOqInIBl{0IfJv{T~L&esTJHPZIWab*wZzJATVBeOgF9uelIJ@D`($h#`gi;jJ|3W zze!RD06K2X3)&;#jHwsq`(!Y&FBDuyGC>E{wjlY#gXlg|!~>QZH5n%3_S# zlk3dL$1@=_Yaitr;qoN!%Bsc9F%8caDF;Ly(TJYtoTTM0-m8W+3ana=80O5MO>`&I z6(B1w6B9j3!nj3AWh%>IDP{V>Z7I`U{qDA;$c*lxu(g#w0G!1GF@)L6`!& zCg;;^-!_c)&(G(`74=jUQHkn4pf`2ntE!}p0eT)j>8``GF}+a@j{SwTSrPJe8!D&I z4NvhZ(39e{*}-~iPB1bu5pdjXq{mF-bl|5g2eJrp(@m9gSe)tKeG&k0I?EsN$ttp! zdrmI;NLb2>WlQy|hEb7DBCCo>Ha$4-^h}+wopJU##yOkxp{Hjwdd*Z4RmQ<$cE_8+ zmLJT#EquF&yv4Okyxk%(jHbVG0!rX1(v}J-XKe7VNEeF0v;>;1=z&=mgZhKpC$S}t z#C$zf7cjU{l@tyuYM64R5n-1WuRw<(Baqr7-*}NFzs7i>zlfVs7w$UiO05Q7lI*ZnPE0OKo zz>(WtKpZkLYQ0_@Li|ARVZI0(Ag>wdD+1jIogMl&RbTua``#13mCMDB9<)zMP_<68X0F4jvJeXno?dgqnbFjAIv=4o8zmG*Dm>q z1?v@4eAwPR9|$Qav(#4Vrih1yHFAd{On5@G#4GWvWw811N#8)B#p#Nm8V~~SX5^{A zIk;<7IR6N_z@8_n^#{u;sYy4*V7ewdDpbhSP-ui_q1*L0Q}zF79POG(SD}Vn9{lB5 z#FlPEv5t$YG8S!N@jh$pStjNimJ#yZ%aBN^jVDMi(np%Qy9?J_gdNO59I{OuJFQ!R zIq6;89wZNeeJP~bVFEu1x|1+f1v$UIys0Lm#-CnT zC*M8h+}N2$SMwK?jH|mkYTWR`j1kx~q%7bR=KKdQE$YT+wJ4>}mIUR%*Ar>HEzl9| z*@q+@VmJ;Jf~JLZ;@mYJ|NHR>!yVO7m}z&Lc3zVmwyf>B?eDsRLv+d zwMO?XM|}6{X`=LLH4cP5q3LR13G~7?(&r|6mbMuI&i|7s^OdnlNJba%P?YD38_}{RF(`DY>f*s+w>2ud@*5FS^nA^J^ME*bD?E++6 z{~Og%KCyG{Km9l4ka6h0g&zJ5(fCm9j+MIkAMnTB^J%{X5dZTq%6|`V{M%FhPvR#3 z_Ol;;&P#7UC^||oQ9`R-;sxHk2-Y%L4v-;<)m<~CivSA0VRoGoV+wkoOVvg2+wVHn ziEHOV>3!{6eVzKdoZeOg_+G`c_dT(n)~tTb1B*Hi4V_+T-%8)MkOYPXZOG+ceDd%U z-+`-&RB=FnKe6N14kKRuF;yA{Hh|igy@z*Z0v5hwq7rw=ns{}z;baUF;I>!b6rj1u z7x1MEzFT|;^QnA&chd843tz_GOHX$0|A#8xT2=3}_+%YDbgaV`ylc-6tveH)&hkL4 zC+a`B%=UJcycu<6*E{q7oCp9MaQTlJJPhXWe?A!ic=`aaYln~>E+%jPr8I{>|0h#` zC#OWO?(hiM5s1c-zw~BL&40)T066vhKbZyquKn+j200oxW<%VRBSYJnD)jN)vUV_?J2{24*@Ij$>xIvkiR-)Ny8jB;M2|lMXvFC8 zT_D02-ir%cp_Gd^rJjY{n9CY?c;&Mw|BfX&%Z*9tg$wYanKJ#jQ zAmiuY%ai58$&2sETl4Sirnhsi&AseB<2NwjaAgm1iKlIV4sFedIkH`U(^`21x1xm~ za=_kUZ+=l`AF>yBVDf-HE*m47WsmLHI*;)kqgh3ti8y~JuEL9>_blW(kBF?*nMd5c zGJfBV@L*c~) zkz@M8FMa*5?%l@40D!u(J;>c|+%p4q7K^4M;oV2e1|t^r zM-c^Go#vx7vlEmaO{qbZM^yg@MIN=)xo6vx0|`kF)e}3^gRrHUG-xI2CbLaF(${!Z zZwQOt{lsg!L!BnQzld2)m}_|D;TO&g5mg6e(tVU(h! zeCAO$dCy~f&wuO{001%sMi1JzetiB`&pky{r?`%!1|N)+RWlUWlUMv)pm`|RW|n+H zc;$GxVYjfo0IR8#l3_J^z@Fn(^^D&&d!pDEE|OmqI` z75+e*9te7p(4n5)=J%7kQVu(!TwbDj4@q2yi+sE10kJWs>K7}vTbSQoXn@LfPJAXp z5bB$AARa)T;cF>i-xXp>&5=Jcw63?E`B`EBSu5_QLD;((Ppzr{9)yQSK=xnum(S zW0=MFDi|lcb$Gk}B{w-gvrN_4-C10czL$!j_+i!sjKga5Zq6R04BUP;xWBw?FLHJb zm!nFZk6N2K--2l&sXx($@4FAxQ@u12X7~wxwPLoXM73nc?`A2eO{roZirG7*cq-lj zz20qu9XRz{Np42`+UUgN7t>F8NqUw}==vkNWmXQ({G#76eJhPun(hbps-YyEoYwRn zkT^4s#{Qf&RHF)re+<<@Bx)V9-`~I2L-9QJTsxq+NIO{BlEFrf1t z$h?2mDh^r2{62|3#n5H$jrpU=E#90#j*Y@(bQyUz358hv(L7lzxAq&%^L9v{CAul9 zGIHc4hSv4Bm&1}KF3mlKtoEx|HmE|NY*oKQQ&C<<(#fMcQr?H8YyCOcMGo)1;%gVf z{=-Yo>9?%t-50d3Z($#ovV_}7exR!dqP!Y@evbT{r8axs%;LIOa4n^9H_lr55CAZz z@~dOKADq){JoV25Gv_4C4#nT<4`!%j^|bX^GuQsyjZ4u}^wn`258923B1@dWAXyKE zuJwnkggIg`tacc{Z@_rY6A2>%Kh0sD9OlD$zYy53s-<3}ZUhlMKoJOB-?&LjlRd^U zU!?Rt(|s{PakdZubhKqZm?QV6w?rBD=JeVE_Fgw2t~IYA__4z=p(}nP@Ik7%dt`y$ z=Hxr<`Wp4u-lY6fehTFI?>m+S^iwCz=(HCqO6Oh7^ZEdVLw6se(X9d;cYm=6B_5xZ z)1}qY*?y!@W?S6N*+xQ>Qb%%!I^oe%#N{ck*~-{>Y|E0J>(3U4?}eWNRh3`LuI=_w zo|d1M;MqBBem}D2NQUp9*vx$~n`SHO=)p)guO#cZ0fXi(N20EV-=Sj3?*^Bhb$pi_ z+ADXQkFb3%JzevX#~=Z<58F)s(crja-{8H-@9I-&RN#$JVb$bVlND|Ue3ul@4F<@D zO>|u_vzXa?LtXxr+_5PBDr@ab>ED;0eSX2)k!EP73fPN?oqiZt{Ib@JsSY2Al+`i} zOa03ZTBtQ$J5k~N|%2UqGuR=F7$`bzZF3LE{DGEvwevBuZm^U0egY}DyY6X+$4JHUps_Tr~MTEi}b4obGE1I zN2Nj*Uf1-YnX?rbCYn}8LPR>|>cEiYC;nm&&~fREpTaAVCdVefYnMn^gm7A5r=L~2 zp)~ydOz27#*^bD1i*Ju?*A8QNTk*ol&Uo_h`kbv(8_$0}pp3*+wMb|O-G&e`4wUI; z%bCaXiR8JD(Vad2lzIE5_;7qbqAHG7m35m8J(>>^}kB_~{JAIl#&k>>7BP``;v}KJTc%>N9sCuCn;{ z=?X>nxSNsgD@l?%V=qMH#(vHBj9Z!miy9z=Vq`m)6lOWdgtQ}P^S*PJ#!4<+4=U58^ z*I%_T@LuC0=DPPNy#4sj=&(KOr*K!Q$(YB+NQo`Sxk5fw(4JW~5HH~A?0gS0YXek+ z+Kr7o_30d$liQgwd0wb|{D+z6Xt8U3Xm#j;K+i_osX}b*n~&zHiv*k+0nopnN2@DO z=5=HX(S|%dvpH@3@|p){g7*QuukN=Q|LymhB!AIE1QlJ;*NJ0;9Am{_(932n&NN&? z33}t9Eb5f0$YKhm$dO^F(jU?jvr5DafC(R^HA0EJi zq~Z0~GQGUCCYuMY#I$^{OFt3qvG-kZuDF7qLUXW&Y+zDzQ5g4*>gqbhD+>bH102|I zc!Y|YXsayKzKr-dTxlGwZuQS@YqvYJ6*LB^bMSO79e%^7MA=IWwPu zJyW%J>*Rh7vkX!xX|azQ6=sIU6fxR8hZNrTNIbkhDH9lVuaC?;-iikALH1G(Ft@9N zKG~H>p6HoA=+;fG5bU2;GWggGo!yL{a;wauYJl&|Y3HSQxktZ1qo7pw=ph|AJIhTR za7}6L+S!1}Dx#e6qR29i7m}lPwA~h}Re@~xk7o@sB*{9k=`tUwv~dFUzUE9s32RY- zXoZV(XU}0No%-zvt4CygZqwf;$&y^eTb%O;k;E5Me_Hn)9jHqmbjjS&}C`VZh{O4>?qD- zJm)XQLl{G+>Gk66Rd;fm1Edr$>R?DlgfaG<`r>y zkw!DHjY8IJZO?cv8+5->AATRg9{vMLco$BIiyPC?+p6(QhM)0sP_=to`3~y0x=7oR zfZ%yb`+>L@&bAldiC;Q3K)mk!He}#90z+4wTdrzGydU8`O!l;>A7G=^B$N zYKys~Zpf_}#@0hRrL$xl1ccqR0Cc>D%6LQ-=VWGd(FTxl}W9doP{M z1eS1TX5z-$rhK!RT%2^F*iT9>zK7ZQ39MTG} zp$K|q&%~Z)w(;j#TD1#{c2-0=H4tOrWqMSt+R_F5)RnJ;RUV8Nz98{1du4VvLKt7j zt_Zml1iwY?%iMlqGH3hlk{=`zw34VfQ|Yt)F_rxBY{@tsn`a&QtKWp&QUbDw4BtLY zAKouiS}T^;@*@*W#$mYCEGAPA#ih((%ZO8(l`I?Bs!cn*FL}(@JLEnZhO;D}jf9r8 zEaF$nfp3?%IC_`!h?uZF6XNI%DT&YFZ~0iZ8Ac6uun-p&)fBcRHn@7MPcKdCraT=O z0iRHz+=g=w?|6aT;;^T=ZSYGQ7dbadWVRnH?Dbg{35VK&5!L4fb;6e7Z3_j5{odmv z*2Aw|wFvne~baFUD9$>l`4aM>C~%{p~7PT@T#HN$m_lXwQ7~$8bg=t3MK0rpMUer{^0c zS2XH9zQI{EOD+?hfnCkjj=Tn6%#SA9_)HdXyK?uBZ~L!Ul5sYO``fE_?6L1S>3g)M zc_TUq$;oQj=I$>Cx_yW|ooe@1gXiXbzC23zDfNg=`v`A|ayjKEIBxmI8oEd~IPR69 ztd`@I6n1Im$e}28ULM)8PgY@dRIb*|C8zpoLhQrfyOv72f%w#6(ayTEdSzjAhT##h z?iw)Tc%spx?GsNS%01fWU9Q}dbm!O`6YJhcn^Yzjk+SDcNco)KD67NUTyb3MiIl1n zTcvJ-H@Y>x`KuNi@IQ;R;D_J5^{BPH?vBV>=(lN)r%lx6X~8S~HNhsH9dk6p>yIM_ zl5EzbYZY_nHP}))Hmxi0Wfz9~xL6Z|P^rhi9;>@AlhVkv0$%&Bsat zr?em^0zNg{etoa$?`(f$Ztv5CGcP!^6ituedC-9u-P&*cr2FCC4s%1UI z4F&l)V0xmKA0eS-3wh~__~Z5k72_O@P)Scp*mJw-Fylji1&DD$J8T}XATN|GPk*su zGj0|pRL)%0DxO{cnLIA7>vw}g2t(Lxlc}U}uSVUn2x#9tS!cg_X^DBRl^C%e#HmlF z-AA+6Nq;lVB1fc3oz&?WMow8dYO!Bu|M z{I}tV#kAcXbFog?u4k2eVj~zM)#kjG5OgS43{4Pu+61AFKiJ&w3t!5Ldm115-lLi*}z!@rE zY8|6R`nR$QU})G~QkiG+^7mcuwq6Wv1dqtw{4rN|bBotz7i{#+^%i`fW*^?>qRw0G z7&Cm_PMt(KnS8UVwxiN2zH{ki;~7O=ar)C))z?CCd|D8dcw3?i&~-SwNjXU((8kJl z;=SydRzWimOw3R#YNe@XBq0?QBy4oR9t{!2+YH&PnKbPy=X&L8=IRONUN^|SzUWU3 zkxOiyg)(b2niY)lOPci$l9J(D1w1&#ydG7ETj3Z|6|VgyQ{QmnC#Y?^W)bt=D5@o9 z5RJjA2nGQEM+1e zT%B>);w9>}l!-^HEY0$em)X^jhnlTbT$NDd1I84E_&eRIhSGu}Pjfn{fk(UPesw~?Cs@zm2@Tj5v zF6;od=U_84ZkRX|*on3-Z;uBrwIaXc?3j*k0+7ZiBVbRFMstt#xRttR(4acKB~r7$ zCL<+MJF9`eXq4s^(&k2#@4};wa%DYP6F|r14g41Af$<-#s#?@z@h9~oz-@3&n2995 zoBW)Z8i3!~aVq&ictC$%BsYYfsT6q~&Cy9NCAPrZSzT58$FLD$?V&$#Qa0O!Mky

YP`iad@iTq3aE5`*-_La9OKl42zTOE8H@>=-qYwJ)`<>s+oEs?oSA4>GDFldW z-Od$bmV%nUyU~@bsdw8su?}Pyl8p@IxWmecVMIh3gt&R9zEQ%=kBt3ksyr#QCzY!c zX=rfU!=P))22fZBzq)0-Yrxx=T*(*?$u(cD2^vQ{PNZb-Sa?aB$g0z$@6NJ#%v9)V z2+>6?UqLH1a6qDwM(?HHOzw3th*=*u&C1dEbMJwIGuDK@nzR^UGxm%_V|PDn@K5?N zvj4fB>Mpy~o7hQVy_@eY3OBA}=e9EUogp~=F^wH5pthQ8e67wXu66m-?8DJCP zzze)GEf?5+Qc@={){T z-kym2!&*hQa6PWD7)Sx#kcrFIYF9Ja>arfM5kyo(+|kb&0lz*MVVnM!pX`5copCf- zc9z>)eg33dW>>MjFVG0qklY}1cuz=X!%Kmu8!qoefs3~;HZ57+68}Dughqhn`K1lM z-LoS8erbCGbE~uwhsoMs+-@`G`KW)z%db8HJ>B`^+Wqr~){@-exs6y7%TeUOy6H^r z-gapF2~2lcK}01UhA(^Tk3I3VHF)CpV>pw3sup`SEc)|G+utz<6v7i{V)NpML9=am zpS?){yoT+t1joelz?F!(&=y6+)`%dPEbe0wwhs$zX6`2sOLMOR-M;2Ym&-AzR>Jx} zpRl@d?Zudl=413CrEqKb8Vgk+mKW&=_g*s`x8Z(|CsS#&NG^Fol1xN@J5mq($vU$r z^3LFu=0P>F@%P8~X+#xBJSHDjsUCRO)a)$D4c1e?updcbwII~!IQRPmCB?F$i4q5b zY4ydpj)IinOBRSjW8gV2_gJ22tDTqk<|%)xihll+Pba?V3#38}MZMALlf3rWz|J%` zWB?+&PPvJuKQ@l#@6kPC=ag`IWZ$U1JmRR4mpiD(;)tHw{8>q#+ArcqH}`T$r%vYT z_jzhvSsZV=Bwyl-4Xg;S2EH+{ zHHSmv@#~9?rE+iXVdIMr6tzSv6!UNB^PBK$n3L6&UGMM5+^l%mv^i1hXyp7Bm`N3deL#%7wf-V{ zfm%ou^3s;^zm^l!Z_72%c~~u&e>3@9-QmkD?YAkRS@W-jaS3H5oZk7^toq}^xz`!c zB~Tr^TQ@@Si*tt5?_r?9g^R7bNr69ExUNV+HFm-nK@0nv8X2({H<%^iD+41g((~37 z)E0|_*dMke`h0jUp?O|*rk&TrZojy-mbS|5>fk`X;6WACpK!nXTgKfIsSe!NNscsWfaU%-+8$biOFP0){4y)bQc*@A!E<{d#pydx8ItE_1Z@$1?uI zE8p2M?x*~!>YiF!T0HG#HE}+AZ-^i>d(Q0p{OxYjtsOabEOeFmUbZufF%gBFaJFtV z8{t!{Qs|0Wd8Pad`!J|bD)8LZ<0gfI#i-FwIg@;z?;63qg3@(vZQ%}jy3$+b``8Cl z+=eA|H3oHU-(mRjqb+!9XQsi{|6-$MM9=hR(qcPmri z-I}5Bmj&1?TUHf0ubh7*<0px`LfJV_G!Nw#lDP8D zr)9a=Sy}tVd)^6v40!EP3k@Proa1VB=C2wG?`Jo7IOA=K+RPov=VbHzJMWiTa4kwB z{a0@H#R+&7OqS}wZQ58bwCQI)a9Z|c<8^7kq&;B!W=;mD3 zRo}4HNfqeQ&}oBz9gcF`gXCYg5m-VUd;F_QY&;MP)Z7yJX9}+`;6=X*LK|u6D*Y5Nmz;TZugs$Rde3K6aj=|5E^X!t2E_D{QyE8u@`9wO{HklNi|^y74V; zJP#PQ5&F+f03N!2h?QE!X3}hu^|?*>Rv0RD;kDs2eFQM9A@pAd$wF?;+1`%)KE9`_ zCrMJAJJk;NT>Jji_Q8Yu*-R^8vl-F)x_5+XwGIB`Vx%3Ciy=H{yv_)Mue-d#zajwM z@5I9#DIbRm3@Z?_{sJ}h^B#qO*DH0*_DbtoZ9E?IFq&il z7wlqv$%$4SPM?nrUX)sR`=d?7n;JxG^r`9TOn4nO!_#~(gDk^82SEL7|2gy|-f+$O zk4*Eb0;W43?uH@gcO>Kq*VQ)l+FXlD0?W^zvd{mSpWdzx(-hh9V56+*EdCGm=kxBO zzuj!}z2|sj_TlQ!d*S|nMmeRAbQ#nMo^|D%{UX)wCry%u73w)?$LqUGTxLui95?QH zq`2`^CHq9&^iY_^!RxJ)>aXmGIXv^4C>RQtC21$L36BMyWNxNyj!p+1@w%P z#b(hCoR2mU@2KHh&$VG(1A70L-c-521ljV(DxvMl63;yT8058m8CjJoPn6UbYRg)n ze1Actq>rAyOz+W1(w!X}GI9}iO!9wFsU{69~-76u54>;q9 zM>x`^K5D1Y@K!iT;YXO#f!HeB1z;ggiSM#+2S7B>eYo~4FXD5~}dpvQJe)JH%H2?R0iTNBt1z<0Q0Z>atb_!M?VArgA3oD>D_xu?koX}`RD)N#1@>m2 z{cJ?f>@i?Y+}1JP-W4X;&#OVQrbFlm9vm6*3rH9z(X{RY@ztFZvGG30>o$^2+|It> zb%~}dr+WDUKSimgEM=^siA&0leGZGXW&$snc<^9a_Ys`%wrDu;uEHf|z%z~rXvs}Qy0qW#f}|6C92SBT(&#^)*C{d8&!#T1H#YYGGBEzp>O@9r zInLZM!%&Rl_FIZwcf;e=80ouHrLqZC8dR-D-I)6NH2uNQ5!?PmDHA+urbP9G=-~NZ zBBR{c4=3WS|6os@V20}d*6>09KBK2!r%H-kE-58bDBmkCh6?|#BTgZg1-@MwXoiSk zxrGhs_D4c+Xy1hIV4O`@RPzMM-nEn+ahF)|lzm`7axoMnynS4wF={0lq+Jog%7qmx-@wYYA4_jv>{zOs>O;;}tNDB6qU z27jR-kJ5|Ulb^|`G0=3hl{@_az=`tW+U?(ePM9XN#(y&!UvcG&wSIm$uPOQ5GnE|+ zlQv*umG7K7zADZ1AEo;AIxG|_RG+Kyf1T%>)f*TDC+0Y69pqF8w zgXo4Wym@O*ICvqEV12)!%%M>|IxU08~uBL@C@MzpSo!`E`y`plf&lNY;UD9g`yvF z9FUzIbZ_aXienAUA0J+v3)pSL``1|esUtYT?H^qBT85<1S3>iy%<OMk<8yuXF9Hpa%AXe;K1gNJn8H3L#4^ni>EJo4` zAkz-&J*yMyFEEd(6NS)Y)fB|*7UI52Z_CR)#1 zs@8F(p+M>)7P|098$)|X_HEk?zP0|g5@e+Y&b;IXElMLWQHZKqF^<;p2xDW$6;_tB z@>V+NzGzM`bZSCw4AUt$=A}qb*-~3kzK`a)ohjHfuS)3^N%t(`E+1o#MXh+fg_T+Y z_aLE@i_apS9rLVzs=W5tyEWLrI?f$qe&_2qgv6_x1iia)KEZGo!mS0T%hNtulj>QJ zuIlRQ?ZO64ER1kk8u#3z{ei1#FoU~hfh5HsU8dSIbV ze268w(vXHbbTr0)iX&oq^uRNgoMq5fxIj^g-p^zc$%bGugaLxxdxzDIx_fVXP;)en zt|Za-;8mY<`w7@)xH>x(TjoY!9F}#Q*JFgB;z`F>)-H$oiXUx_n%{?vK9lzW+A5Mn zXq&)2d+Jqi;$ricd1}M>+QuHdKz}WRPHvvvCj*xn&J`|%tYjPVnoE;&Wdfy}FkXG& z&i3tLO-2%*4X1urwvTmt*bJ}9ArYh+<&_MQKP*gGFjwhrtT3puewT4L=*6~~!>pqG z`TkOrmNnCVEmVF?{CP}?g-*|kzPS#W0b3D_MJzUd090oS+hhpK!<6$ z*czs~()IvJ@ljY6?ou}#5&Bc%JA|iYUmQDZ=!|CN^N`MW3qq+jL0kANKea|dUI%=U z9pZ4)L~=9bSa;kjS;R3GueC9?=f2RaE-C%QSuE7mAUasbH21Za?kBzUB1SJeID`9v zpah)w?h!e|{OvDOUvea}$`5^`Zg-B)2|2&q8(~o))*w`#m+TMeH2f;lF;KE(Iysy+ zm36Ee8SNED-Hl@sx0+f)dG*X6V!l?W$7>q&Mmn>F3`&6xThm)E(rnBnwbaAWym%4q z$Y-Nv3Q2Vw-4pi9CC*m!}!7TqNd{Cd0$B zHdj9H`X4{&t}u`fPdpfwV?6ULz^NfdwBGG^?uQH*-NKjiBL434BUw%2m{`nN)dca9 z$hH9dt1*4o@6K^&j~wdF+G|_#Sj=|7rE**&pZNJ#uLL;ZvnZLqmX{*hW_1R94w3x= z_xSzd<5jltSM)6r{AFHGiBCFSYT%&Cdl|Iw8dU_Nk|KpL6S}DwljL-P5-(oua^Fyy&n@0O1rW=}}A!J!U z1(!ihk9GB>ygxVwO9u z_jx-@$^&+7NwbW*Hl8ioq+trgY?l+?;?ozQ0k3wThM&I_Gb)S%m;Z$2ga*pt-9Q+e z94=j?JM+{z1&`b5L(e=e-T3|VsDj*Kc4XDXl$bp!r0q{5E$!AzA{XPm=e_b54y>%^LLYeic|CQer z{Ohswe1_(((65uYgDgE;Ii7ZBbhRnVODO~gep2nbLeGK(T2HzCarzE*UW9FX>$tn< zZgkwP8jZAdb7aRx$Qy6f$F32#MGt0{v)I^Jm`pE)0BK_k4@9{b==+M+ zTNCnd2_DhFQ-!QgLJrVL)@8{ijI$MItB4TBZ~ta8b%GRAcs`7Je zm#tIwHGkF1B1zC_WzbbO98M6sML#jlh&S;pqw|}k`){Ym<8v9^egFJjHrksK~3B+7^WZ1|xVxZflcL7F=uOgfh{kHn2LFK~*!IxWn z+krn*u%`!LiHTAmM@DW~s5rLCu)7r10ex(WS?ka)`N8?Z{vCJ7T3-vBi8cAck;ruaW>_4Y{H_qSSA>PH{!`<_wi`)*sKtIHIpI6kA zORa(sv-3LV^M({p4jqe)*bQDsG#2ryfqS#94_ru--KujWZQk&=0A*nU`rZvHxV+PO zfl1zRhxpaK&39woe8_wiCpMf~)_5!<_N7h~O8=Vdo6kmJ0mn%K2SQ&R*SKjiqmQ|1 zzPS-%Qb)9x;Y>;-H?^{Ke_lG7+H+h(l~L1yw%SJ``1rSeX_9l?O(|K!7AZ1hE8Cn(nl}9>u@Q!*QMA&#m_79)V z(#rqA-kZlm`S$()B1wu$p@dc{*(zk42_Kau6S5DI>@k?eJ~JsxMN}%gsVFfRvW$HV z$sS{5Ft#jXU&b(F#`m1+bA7IRz3%J2fA{b4`#m1t^G`Eo&ht2r^O)m!9k1u>9pj!< zqZq={v4WM_6xyd} zB6)>#2>x**{ITg4dxX?jI_v_r@sYK(zi+)i*JH`*QHpsAM;8>9y5>CKp1$^_Z7EcY zn|2}KTyU_%0nu_+Ki{o%1`7jUxY$~BC|QxU-PhqN{z^~wbqz*b=SNFzpokaQ`8%Q3viC-5E z_fAuKx&4NU$LSdfqqX&EX#97?tbYCBvJ%Uj2H|VY8-) zbvDE^v)(`|YVgw?+wMKz4fgh*9okFWGt){=`ZPX!IlKC-@%q`yp&ae4&i?)F^nC z?k304WU=sgkoJ%+elS}O5bS1<8k-J%13PlTsOfC_wBL}zX5#&@>&jUCU ztuTF=d$amU-JlUSYW{+wB!>q*Uv#-xFQY!k;o?Y+bvS8#X3v^6AX#y||9tdhz$r_wX-( zf>Cb$HjSw|b4j(KQZCHa8a0<;V_2oItdUD4*>XhZ4+)Z1aCC_)?+``!0s>-uAePt( zv=kk?9W{~S_mOP5!IC$yS!X8o!0ZaFZBT&2RhnGkv7Xr*XH#fu=n57ph!4#N>?Zpx$(4_dGGt(d3pL;OVSi}_-wa?MKBVR!CO-zj3wh0Rx-y~XoO z79%cdG3PuY5wr7ER&SkVrMX){!8q(%cYl*hl3}iuL>jL8>iZ&_!CsxB!gNM)rN@Qv zsxc{GODw8GIQyyI$u}P*$G+A1{!3ZP(*M!69+4-);3}4@ki4f|+*8bf2d~20M!cU3 z!v@E8hl4yj6?;d0_z5GUE>YuE;!kxm^k+Qk-`csWT>w4wxI*qC4Hc_655gsv4llUi zPgQ-v+mQ#&yFrujgDZLU-K@a!AGMfo2q(Lk!AU;>dR{omuOSd7CeZb3=&hBO+<@~vGr2WzTVbbx81Gr6`VP|tK8Te((S*9aIn51U z%4-*Pp>q)>MV`ialV14Ds)S%C{jYEFW#$G{;(+U)6yd_;5!llu_cMhb6-Tt2)hprx z+q8~~ybG0_4~M;7_yYBh>IU1YcwD1k&M)QF@8b=>^OwWUEvXYWx_&2G;R@we+XdPG zhNiUbQez5ErJ%AYgj39B})fk&}j$A=~`J&C;D z-*5X41kOMbb(~2{kAu`_Ki-j1Z=8|9eO5}RK@v6_4C^l4dl`Di3G7K4C{srWmIx_K zCascnX5dCs<^jNxu;cP@Rs!?l+%=7+u;RTX{OgU^0)x-baSu;j@FEx>YZ=CyLk9yp z5>CNIOT^U>X3Rl-JT`1APluV-;``ACqSUlL1(zbY$5H*tqCwO2Ec{RwYXURy!FKI~ zM_LV)sTN*+t;K=_C`V6^w@$Oz6 z;)W}_%BIXlo51G(AkDVW=;L%BA#ur_XROk=$kTO*X{J=%+5Ug*t*FcYaXln63wY6@+C^Bbpqp_K>Rb&F8?X^nMPKgYQ(J~0@_s}Kvoxo$}#`KDk$tUwW-_rXv8 zU+ietZDlF-f+!Q*cO~a#n9%OgaS$jU=Xg%N_4XT@{L$X<7p&%kB4FGLj~%#H zfo82^CVw-D`DHi!*j$!FX*={q5gK6n~S}*0eNclqEAmFpa})^ss~)>*qkq`x9>z zRg$~LA|H;;^h&5)VLLSwzeQTw*SSl6|4Y~r`u;D39b5m;LVOO73g4!qTa^YorD2=* zG*T1@S`Omle7Cgf`0|~eE1zEG+w7>-2Sr>YD=GyB2YmONpY~7(bicGJPU48dMmyI` z@@v|Og%*kP7R+&VXS&&d?EaEQk^?y{oA`t}tu!&%EqSQK@LeUx5r;~tL`LF0F)La{ zJ2j~!#S4<8xIK4YS|=jIYCVQ*CRYtSjf6Ho?5pxM>05MI*!xtFBIB?Sgu{v_-SbdSsm|_u>|0&XYWs{&C;m*$EjV0P6Yj`oRX z$h`NU#orxP?Su#Y9D8dzjQ=_}HboXEL---U+t)jC*w#c@?TvwAP{hyR}LWAVZhM#8m(nnDK0oF^0$GQYIKWYH*Z~}(OmyDR9)Tdh?1UN1~ z+rZf&xBPN{y`CLX$_tf)mb{6U0OtZQYHv^%^>(Fum0vG|`P(#f`7@xx-2cM-VIJ)F z+v3xBdHBhO6Hjii_n&`YuZ?~k|4fGRKSLjXUksT!5u<+Ix0E&%M4(mCG^m>^9a#8e zyQw0Ot;s$vlK`)euqQ1p~bP&*Lrt;OT9{+VlggE8U%&9TqeK z_>CZC`~UP4d9_&%pXJW}kSr>s>>~E6fKtVnHvwQDqX+>BGrvJZT>mFWzPG>I>;7w? z*?$7PcL+ab^QIQ=4(2;V04AtVRn%rlASE-S2Oxoas6;#P?psv%-;SeO09vndM^Oi$ zI$Z(7deuf7EDMLCVks?ltmV9^JSvIID()|Gk5dJ*EQ*wWpZdz(b}n-^I4o8i{S`=y zrcUF8OQ^lp5g{|?Rm-nN{K|g=$~DP5az_^2J$Q0}=BTbOI+H=r7SKosta4V=&w`Mf zLBE?>zGFh(>y?(7O**8AUT+3?i}kuP5X0-a|LZbknDAc9Bk#Z(M89jjnfa`IW}hJF zi%xF$5Zd#R(;P0l7G4XDX{l}ZXgt>QYOt(T#6X%uac;mR#J#zwKp_F%Dl@p^muQ~> zv+KUgHQd#-X@7cz5kq|FGp$2n!|)i_0=;{7H4yEut}@bXTqu=wk{ zegjHb@$3>ied+1-L@4Q$tBHmiO9jsQRX>~gvqJ6nt zg}h#{=dw9$CF1QDW)TYGg@FKetQhw@hMeqs{v*4L)hI(zBl&$?81T+03%FqhD>oUu z$4H?h;e*X>wo>LEg7E@doAll}3RW3rj`m)eqwrzz*p9(_)YtwL`${XuyubCXABXG@|^Xl05< zChhuA*kiQ4h_aiuZeDD6IB>;|F_@u<&KOgTvT;Ppg2j$(RT6;n`UA0A$T5l!y~HbO z^5G%jtZ{Ufx=+d2RG&{~&K+M>#e2GN)oB*dZ!1csbf;7cc;F`#-Mc$&BgfvPy zglRE|7>@6UuNDSQZN&8;BOqA|8bQ#((k&eXqx&kMSVGJQzvn9v<$tYmtX=}Ub_sW$ zi%9Q|{Wf#mCip9YQhZMF7* zn8rVNJW@QdaLPW}ReQepyT|D%i5O60$7!teeo%as3pX&4_i#MrfHAdck(PEGyXf2s zzO`P~48_-WS|6!)O{xdNgCAF6k{=Ji0)PC3=1b^F;HdR^+=M!2GJ|}5sM{sbTR0IY$+`-u&MrP zPg3>P13HtDYO*yyuT3G(4&ZFj47BM&*~}rTvl=anhFni0h)1vS{;xddP9y z{7oV>$fl@i|KL_#y&m6Ib zNdw=QQ!tqlzAE$6S(eu(JLuK1Ylf4tJN$vBr-+3@NXp(+rDGXPs33?D^VYf%hKB}D zH+{(nC@O@kewZs4jgIbu0n0>r;q)*h{ilyCc9HEPt4rxUuBPrSp$ols0MNBjJLkal zmqKp+2cn!-E#$o-Xl!)>x@2eWq@YfzbBj`CE{Kvso7&=cof2W`Iyw^2=$#(suXQcijk$@SVTsuTX)Gol^--3-_=>VPQlBQ~l>b0pISTtw&jv_LTa0|4eKa@ac>+=< zOQ+IfMwcO2Jb3Hk(}O$AVlFm4qw(6MPFb=IvG$PZUKJWBBRIWHnVg~3U{X5tUNE}f_;DPmY{IyDSPPAm#2-7?4;8( zENe=THcF^ARO0baOWnG$<8nh~O|H?}v*)Et4k_iApeJK~fx%9!`DCskR5Z5{fmRpT zI8Z(KriAZacX-y&nu?o;R5H4)$R0N79>hrW5(v0yUhq`;C7TRx7Jh+~IWdUL9$W%4 zk)od;3@(lsfZ`vnyuIKXjx^936q}%yPFiR(W{{ari+)Rc!(J>41YS&<9oj%XZ=9Xx+A8S@G0GTn0;1ix>8;y!&)~weDbj-SmN5zWZq?b0zH8?m zEkAu4P=y5bOg>()HNkWwkoLsGfn0R|N^|6=Ppb3+MaLqIZYjhf=|LJ66DQ7`T~gYj6O)h7?Z()R|e^`ywvJoS3KQa zg8Y`1)aI8}%}NOB!GcOnnD{tyE-M4;n@Qdp^`%~22wZs6ZbA_6Zg?oa5&L{;F6&nA z!INJ#Z>4SAbFwUUqS$?6l?Pe%QMS^Z)b3F=Y~9M3E>sBh%cB6~SA`8q-cHPGG3?LY zT}6nrat^V?3Pp4s#HA4f+c*jMMMKLPNm-wUF!(i77>4iRH>KTr^YQ^YO}HFhe;-n3 z;h=dLl{dtl8Bemc5B|jPOXVeAC!lk55E&5U*jru%e?k*-GWp_sAaSs%f4ul)Sn7o8 z-gXJb`qjy5P^z1qE{@2E8HjnXoSRalKD1sHHd9yyL>xXxO6PX$6zIz#0A@lyXMxfDJmvSoc0n6V3P|kr>Qn zMF5d75E+RWAMF2PS4z#uetOZ*3ZNMh9zquz~mb0C`FC*Ujcw0K}fNFyWKC}AF z+bG$!OvCBe#6(vIF9}_bR39+^c7}3~Wl?AiVI?sg70V7x9pGaV!^L-w59wD*e&Llh z)E4wR;r-lwEzZAYY&FK*Q1k^o!@&5mgY?d8iQfC3_`N+9aoo82@mQ=%<4U`Rz!kI~ zPLW2>V#!7WN!C$zX@l_dKll zTE-L^hG%+F?-!Mgy7BW%dQHR$aFg+qPFM=Efy7~;Be%jcIb__yb(>bWu8|oe)BZsP z2Upf6g3gH)^e^A#Mpi_M&pTkNWN!( z+10_#v=bD1Wds3&TvVeRl&COejxQ@wW8*xHs#llhC|l*D`V{&M4!8E&AqB_)GGG$? zk|>zUgYS<7eXN{NG0~!~XKR8JAs8!2lxj z0h+IACsYxhTgWC|H#+iP-X_kF%-c)0#deW5HB0dEw7y~HmA>{a)Ix#{;P*%bnlD0p zBZS`Ffiy*~7Dx1a5QAiH1u%Ot1*Xe$%rI= ze)@O%Y^&BW$9=asL-K{sMTaUGI2;=l1LM{?v#=+FT{!pRJ#tV>Db6YmQ4{LKTJzy# zJOdOw|B}aOFpxQ^Ro~-|i918uhvG?4XJb z+KX)v>lcrS0TmtT#X?2oa$K@E7oE7Usfi*hGZrzE%f7`Zl8Oo(U@Giq5-wyA_9&Cz zfmmTUtQ5xISWIm*J8)z;#9n22b{lm}n}_fm5HezTzzYFh_%d3M8Ug8tgv?dZJgLKj zP2TiH5H)CKK`kZ`wpH>ip*Du{(~N~R`?2j|X9nnP z8}(eszKjzkq!>(y>1S1~?7kfeAdgI@H!@8_h9{EHeEN?h9SXg(1k@OJTI7A!y~XSdyno+O3FP6IUVBcW5p z4ikr^&ioLU6?ms*AMd9=6ZBAO@6PRkALiR1kjr*N;Jhgxfz?=wZL922Fs9@R)(jB1mQ86pmXNjT zQZ@i9>?Shc+n)HC|&b{D`OvHU^N0%r4WPR^AQmO$(j4| z2(8ryh0CVGUEX|mP9JIyaEjm^d?Eh&AXLrWr{dKBGKm<}j-RS@xlx9+L`6H|fq`Ja zJ9eI&8MDo!VMQ9phJ=$B9)2tPSVyZhS|Z0dHAA^`RqqmhfMHd7l|KZfDKTKC3bhx^ z$PS#5!il~-NbRk4fH6N8Q9LAwj*FWIi68OES&HTcz+lJNz8?zy?nG^p*jRlNe5G>i zi9115t`b@~qY)Q<5O6(efd!X;x*p>tQC9G$fEgQ9Wk_oE^<6rG6N#qNC7WI{x>ij0 z6)#Fbu}Evoe({5lq{iu=Ln+_#XpeG2j$|FL;Jj{++R%f`@t+x-9J+2I!n|CK--3qw zqhdubk3S_ps@RI^%y@tF;-|(wWrKPpI_5}`%49`+P}@5dk)6G@cc+e=6?oTLD#dTZ z=7i-ZBdf2Es)(t9DGsmtMOCggEXoECB3}Ihg%iEdy*gzvR~GWyR1$8IJL4xU3>lS- zuM)~X>GfNJIAo?j?wI)|tG|p)pa$liGPzAlJ9J(+1j}o6^~X(Yvg-R5{gm^njj=;M z%jvRGJw-%YH6VrCk+T@2rIU?b$`j_e{}?OOTPfH7ry&w9R8pon<8MFn8Bm1;qqg7e z{JA{~TjhN;0I_bko@EONqPO}dPI|op5v&duM?dHVBDH(b@X2bp!y`aD%WG^!GbxN} z`0uywxw~FNWn-@&k~|OZNQ*sP=2;nYUiETpm2Ay+_p(I#<&gn0Q>RiMsKb{48dJO>(mj`I$dIgyZjv8vZka zJezI)dHmyAiGTO8>^^I^UMC#>V+FHSK_8d|Wq=spJF;eS8QE5)^QuLkKD}cr&WJWe z;zum5>I!p%V2;JIHaiH;xn+9Di3{eL(zwki`sOWCeTRlQfnAf5eR#lyOH#q;DwFo_ zKa#E6Gx>yNKgyw&A}P&Mn41{pz+}%zeFXOKZz=ta0)QB^?qK;XfEXxj`;<@P%L|mk zGZ|OWsfRaJ&SpdayNJ*jF|`lkL9-hCBH7+1*Q5GQ)&<*#d-kIY(4X)NVJ3kDFQKO3n&TBsYU{z_2ET^ z?eEX7iO1HMZav6W^~$O1Z71?tXktZ6SkoAmEB0>H=#wm`UsuWzUr=L;rcva*a_W0) zh`h;ez;@P3Eszbs!=LDLLkzT;+`pM0^S5o0nhNe*X=wyt`_D1!Q{8Pb_fDH=G)#YC zW2^ce*bT`5l_k_5WbaxU^YQVSS{hqtMX=B3jU6D`e_%&;0wJ9o_o;5VoJ4nArCEv^ z8YEtv>V_^W5-Ul~;v&Wb--Da31m^3=?9r~*DGIQo?yUoSoq*(Z>!E5%*6RqqV2Guz z^_m3KM!c#DwUJIC_~H%_@IejVC8c{VeKdFtVA4xWB3Qsa*&GUiziUX&)^xapW z!9dDORZH&NIP`d$Y1<4ClAg-Ov`@R(q}Kzb>=KkuXXf_^aVkpmKw zXT2)v6!)G|_@ss=mQ~Jcjjf@+6fKDc4Z3j>!OSmLvl8=<&5^Q&Hf{p#D}FPi`4jEL zPTrr`vRqVNoyxIbSD}6XidqhV1p5Cde4CB_QkD#oJu(*1y(<%m%xTIxc(0gYrCy!A^lE0#Rbqn8)$7laNyS(y6RT*B^68d6krE{05np&RFIQD~B2)(tGorECHY?HVWTmen+4}dBUoriZ?w`EuZs3C+Gs(g{X-JdLPZxL|q#$STA z^4uaf>>uIFkbj9UH?4Y1Y#7P)3*xvJW=NAhVx#oK+Q1n(d;z5UYoz!lt(A~3Rjtfm zu?h&#JLw77T;s|16n8CCHUGAq*4KyWZw0noP2p!&QnDthvy-Zo9nY+zzb7q-C_1j% zq)m9!%B=>Ohq&iHq7zM(41-q9f(N4~J;i z-wd8S2fOy3+}l|AGCTz-%ip*Q`h%swoRvkfWoXO22l-O9B1?Vu3J(B~vI7;U0?2&1 z!FvL3_+u4!sD5o@IvRPBBel7P;D>5z55h|1)ScnGQNNw)I zi0dVp+{0c)WAyB80sdqCO-D|+YibNto*$9^nY3Q-Cwub zyB^hD4gVbFI$ipVP&pdElUU@BGFLJfc1w+I3EX*$vSj2K@*C^g5Sh4&HsL!#dJ#@Q|F5j{D zVXSn@D-}&^8KHhxfS%m@5c3EG9?W`GX#a%>ZsTm6oB6clzSjNnTb_!#EVT}cxXgA$ z-tydQK2W{#xmtu@dcbhE{*SU&3%_|$(c@l4xiYj%txKmCL^+HRWb<_^lw8gcNUX@1=#WVCxUP#$E4RtmJ`q!J2l#n{ zAnDzd*;2Sx3FWm{U*Nl4P&q~o4>nPsyRPc(gkZd{nacwm^hej?mOapwe*38Y3w^%& z2XD|td-sE*uY7ZFxPLFo0kC9qw3gFNOseju@7m!byk6PsUdKz$5D$JE&Nf(n54rMh z)W56n-|C+tU(rPAwM))10&h(@?a++}JmU_QP~!Nue%#~Qo|}R`GPSqend5YC1y5Y% zseamYa+%h`K_ErRl806XOcu6gO)yWk=cc^@c9(nEcOffLe}l90in7aUSZ49J8pRAT zr2=G0bn(kEd1E_iv8G>5e%b3e?7`C)kNxGSiC*VKUVaEwuNtm@eyH*3Usk}yCZmW# z6%SV-my}T(7sbeYGg2r@ut^FYHEFuGZvLcLu<4|SrY-En-jX$i@c_ieyxO-hvoCvP zn05;s69#Na3}nNW#J+Sgk?9?bwUg|=(+q}l5lyZKoY`AQxgC}x>4n^KY%y(nuUA)N zxf|NXszVe4t5=RZ@pY*pCoQPbAqo5t-Q;f9ci-Sq@m&s9pXy4M=uOi3d#0HtlIZ+c zd493Snt%^FhNOg-g$!=b)z$03y_jn)?Pc9_84vd1LIDHwwQp>N2}0ELbdlYQk&9QF zK)2Q2Ycpq`j)`+eDz={B^2O?)noAJ?{Mz_hn!+=^InC|XGZO+c1WS6!q_Q3sh?obo z;eI<&AV?1QNDe)Ju28pcP}T2Z8AAh)i;whOd@<9)J7!RGVeLV~^Iznqb{1Ru>8K%0 z3zGw0Uuay(=D!GUgdg=&TbSt<9 zo}n1@sGw^Ic5hx8aGF~`kPA3BSyPc6iAQe;OPxBx9SaO}n{w+&p4>WL1gRg9P;--C z`v($c`H3VEl(SF@WO=Zo{ad*!ON1pW5ZBIxis{BKH}_Zz-BF5N@g2Sm2p0A}BEr_^ zfLJrY75E%{<^>p_A3f!j_8wk2YIpSDe%nWikrkTH?S|3({4;c3YQlVXFT%MIaWftM zj$atDPwSf#`MG;GKb?uliK{6hz=l8xH5xoM(9=nFVWGgA8CNG!uS;xt2X1+^nhpmx zG--#-=<8}?&!~D;u2wE!feRAf(TiC>@b#Mz*)Nq2kV5<`7HWSK^_x|fZ0OxL^mmPD zN*OH#uUpv+jQzCR?sSikNIBkG(JlGoZ@{A8!#FeDpQ7A7{KA?FVPKz!d*@n z-FRg_3-V~YV5Qvlk`_Vr#w7tWKL_(*XbKP}#BUDgG{f)aB5o}Y0l%0Ip&?dM_b-Nw zjdKwf(M!ryMf>bcUSfDAS$0%G;2MsKhMfbZ-y8})Hztx=%>+k6d1)spVld640Bvae zx<|e}^mudRi`|txxowwpF&1-og)PUwFy!{6N&#xg?!Uo?T)lPQ&x}A68O4!LOAk%H z)WH`Cj3i#1yepxdY96<+8J$9_LmI^C4!}5CpT5}8wx~n)v#zF>*>-5OzeKFE)PXtH zgmkXRj`zm*6Rqz7mBrP(QVs~7*Tbv>C80#L4_^DhBrb0M%?^Ir*aZcz<=fxrHxHn_ z-+G@F(AZObv1KdM5O5UjPlH@e56(K*kxpT+IzM=@yQ(KEp8n;kGPVW0Y(&kF*my)= z{1Jy0*qZ)9(UxGDP-_K{7RX_33F8)t&1Yq^ToO0qWYCu@w>~*it6F4DfQQhr-tO7^ z>H<^r)BEhjpf#DAs*g={eoRGX4sAIJaB$qH*(Bnsw$zBfzPGmqmqYZ5DLh>$ky69tl(od$qBL?m41N`R$u>5C6Z2;{V%mTcvBoAK!;@ z7v%v7TW79L`^Jk!9Ru#zQBsbXk_TW=%h`>pqu2Fqv%mljORv?bE=op`(p(MUF8-s^ z0#>~4Fk9t_8X3;A5|?$+a6ILa5afjjSf|r}#Acb3DvfWF=MOq3W$SEe7M0DCAXF&U z6JlvAR#A5I2nEHE z&09s==y9%X;g-9gS36{0d^Tj43%s@4_>yy6dUH;~QR~Q2UV^CYXNJ&^QzI!2{1Oeq zSA}-^p0PRi2T9(z7yMv$iI3*Z^1e#xelKXNHufyP!|bD(>J@mcaMbtKOXJ}~vBo0( z4Y?r$^oiXe(s|LR+Eq4>FK{84^DAdoGO6BRAVbaTM|1{3t|F+M{t&l$d2nNWA7Xwp zjFRv?RtjPU&M9)`$we`g2}WL}}K!VN$ThRj>WRC;sls)g6>)P-5+ zOPP4eVTTc;&FNlo((sG~W~m9cPn65@oXhi6e2hYIrM*W%xx5HQdt}C`mo86*y1Yy& z$O9&9Gp(N|k4)ruRw|x1Kf~miRg?!Jq^9AM1az5w484JN*Bnzld70``&u=X(TUH8W zEdU^k9H|R3Tn5xY={fd&)akuLvy8r~{7kr0+nAZGtL%vqYx_O_A^Ppz#&@QlQNE3p zLopRkt#K8PIt1ogH|*$VvI2w3*C|hi9;(mz6}!{5E*Zi-Neue+(fOMAO#$ zsDxjzUHJkJRpYFM-6bzYA_H)Q$=dh?qlwR@q$VO?<>9}uwvEB7YLhZ1u8jlyz( zh#5W@)Ut2PTka>%U=a`VENlx_vYa7P^tM7kL?Xc z>Ku9m-ZGs+?mC~_Z_lnpVv0A ztcd3>Hgj`#5n?K|am9;xKx91|f(e)uqxhLsfp?n-qqZceB;u@D9C`T!^{X;W6qQAF z6!tKUgH~TnQHR?yS0F=byPc?hrTkpP0_2X|$cNzfN4*Y|AePHiE$-nJ-jd!_)%tp# zc8+*Er`j}_E4s{Phwe)CSn@oJbaT}uc7Ylvx>M&tIjVzsg$LcPa1vF=S1WV-A?_0I z$1a{_ii3e?<|szaLiE+O%SP85--pfpUUU~)C>z^exbbOmFV{zf19GTfX7{;U168u3 z;4|B$_axQ-axWd)jU0I64p1vcvg#YUM4FKrhhq)ndP(8h)xEw>!8=G%RcZK24|sdo zqyf;3U7q^E&tcV7<+u;Xc7^gu`-luC)wcz>s+ra*@$!xZ@m2ekc&Zg%jA{{(dm?7I zh&Up8f;`5=|7_Ghe&u1AYIFsCbRy%+95rmZ;Xpo74xXGVOQMJN`>lrtwmGVWW1Pgo zvw$uKW<-++2){X;ZB7rkax_)d3)!~JkH`YnEqey{e+h9C9B3mq6WQuq>jlKNJ5QJ*X1`n%SbY6a6w+{B}?v-UMZi=cbyEobG_3^Smg^}k2yN4mtT@WmX-0MhGHZa zS3@%fx4y}NdxaR|S#5sM57C|e2_7UJ@eEcp8A!U~XuKgefwZ?Q+S{J;h-QVejADSO z!`7ckK(~2Txd_Dc!GY;(xMs7MByMWGNO8o)Q#7%dp@#<@^U9Hclcb{rj$H>yuf{fg zmW;_fQW4NDci~FvOqSp~fdo~-2TdFd=<9x|1(H1-hzVY`h|FLj$SqB;dQ$Z^i|VNR z6`E@hY{F~mlox@f_diOv;$?n2r@P{Mwe${8?x;KcXA8{AE%KV=h+g^-nhAi1g)!SM z*lLvrie=1>5se%7a@-GotCPbkp*Jy7+2bz6S-bbtMQ`O`KIGMjI)`M|(pOh)@AUryap3}4liTuxv^Ixc`N1sJ*pI*fu<=er0pn`JDS)r^Z;_$E z{Uk(CmG@D1N1iGRv|!188D-2a;lu^6l-t8rTgm~)g88=0sW+x1D?e<_^#=WkATA)2 z*}GvEK7%tA1xG(M%mR1>=3-=f@t7dZzt5=I%0G$-wtehzZ2@zBBQhn_d+IcA^S=zP zny!xQoqX4cV`F-l5Fk*W;oAQ^Fq+Tfn3ve!uA|EtKoaQ>Xz$l6rB_og=mT+08orcl zdU>3uIp3CjB>igK98j6+ZuC;uq+u3Oc4pz881fs{6jo`(CSW;R0cn#uBzmxxNLdPJb=@9TJf`Qm6j#I6-ZGnV( zp>max1jppSwqli7biu8?QnaPVNEwF_`+poe#YXbu{`uUgpWr?7A4g7Qtn->H`-^H+ zm59*C$3KV$(%e?zH zgv;QHDiJp7Tc_dCySL;@lom0?Z3K+6uH1a#K`~b*=a|j+d%@xL#_ zXtuKFJdTYZp%VPp;b4-C=bv~UtMq^dhDS$zXt?r9+?P_Rm#+p>*RBGv>#d;V;+MsP z4xfPX#vQ-FT7?72ZWH~!Gk9%NJ4*?oQiwYzGqP~Vr{1=RnSUbZ4I$oQIIGm&_SL6m zOzS-@yy4y{zOlgm_8&bLrfU!%1y>XAo9==lnJ$?#k--ORFO7|#Rb^dE;o#W*rS`$k zaCL3I&95gZGC&=jP~G76U{xQ)5pxMQP-Se@?r7e z9;;v#H+Xx%wgr`&@cPeLXm*HPs{fusjI2srwtS5YFR|EP=5ssN@V-l~GK6tqUeP#c ze8Rsj`T-+BT?p`~Jb7w^{&jg>(4>%nhsX{r&ay+%L(j;%cL#tEKH)Mqcz&eh%KOk! zpe%H(+w$BVGriw#g|EP}84y3jfkK$IkZw*6`G_kRi(Tli`JaCaHBW1bc%%%IKcebp z&+EG%p;FjJ&dJ7e*v(dA9R*0U z?4w3OIYfHG=Jqg!wJcp#{yTL1&`zj=)Gki*s*>M-Nci73HNX%4tUH7Nu78JFo~IhQih9<+1?NKVFdgaWw9`n-%S7reFsoWTaDk$9fu7& zxx5&N1~-Y|7dw9Mx20m39dnKb>Wx~32-^i4Y0w7X_255U0>Eouj;v&wWUw6#8|i-{ zh5SGQcLoF~Q~K4En1)7;gbDZBNc{SKj`(xHivYK{DrGINXQGqOiBN>%7X@v;-_X)qkpM>AmC#yD!i#ytJPbwc(@xaUp zIDh*ecG1H92|>@SU#}SEm3CK>%NoQ5E?k*M0AY;=rfh@23hIczT=5!V_BfEU^sh3X zlt7%sX||Z1z0K9f<9|m{sajP+i#++~vdiy#v$s@wFCRP`MRk?QjDFlRV;!8-^dB&H z9IyVX%$<&yA%or=)zP}@FbrLO%;Jie48Gbn;Mb(KXICTtosY@1&LA zuKgdUm5)RBul|m9(wK&^V3r(4yPm#hMM@Dlf3zalO z>bHay0(K{~ONuQ_t^Oxr<+(0>)8_xQjv}fvv}ylGf1|ok8UD(e>3==lDUDczXnDck z*YDUITRcaqh+pexbEYVicfmKi(*9WoT^UobTzFL!qUGBZ74d^t^Ue20Spv(Zxyh(` z`b1j=XhGy^IFXQ zFBoSnaqEvoV{*>a%nMC}JJjoY10%6B=Kk4f>y(N4g|dZpz? zSG3jOtT@z@tf3*MU=OL4>sf3N=1mOEm)VrUl>Us%_6s;Gh2;gsZ&yXWg~>=kiK zV(1s2k2$eOzZGwFFA9*E8rDEo?*+@OkjKN?%68+Ih%;ay=@+>9kN!`4XW|d_zW;Ga z*&?M-wseX*6-p%AASGps5Q8DIWR2`*BuQlp$G%KuDccM&j9ru=kwPQG43V+#W0{R@1}cl$g)ulMuytCxIhp6st)a>*kcjo2TOCspYl z$n;Q7e}8OMvli4!>*mm5Ws=ZGcb`v(T1(Lfk#}f5+{wj-AK5!eh3h5%XeKw?%lAV} zj@?$QuMpOEVW6^Vzd|p%Br4Oek8UuE`Hn~QejjG6|IO;aJ6Wt<^k(mtbTbikb`ChV&p6le77O6J$BlPYKF=W-onP1LC4kKkhPW3(zK`wnqs!%I8}r!j@OHiD0MC1Eq$4aZ$-RE}f}SCg z?t5|93AoxbVR7#X!fRVdLXglHeE5k_=J^a`#Y+Ti)$QJqFWuZBP(t^%$rok^7lW%@ z7935=AqpbDB=a#|DkTYU+;#0(ri1`QD>~KDS%nKQP7q< ziQJ2mry87>ZDZf#kU2XU5P(=O%?L43K z{!J=*^$CkhIuE?LE15@WXAk*xmx>>WyA$S3&&HW4O`++QDyXcb>)+7(QHhVXOu0;{ z6-%F|#VnQr+;lB!sm^U2HuyIfWhz*6yCKXiYQP}$Jb>^f)u1bpKnt*-NVQZt zQ}bU&r5&s#0yUUgblutfm3>+JY8}4>HAeHD$dU=ppXtonesh4lcKy{pmZo(=ZQ-o^ z&TsHx36ab(!RLp8EnJJ%h2FFLpisQ*lrdP`8uFQSrOZCx8jbR0e|YTq>ZGoc*&&&@)9E6@`v9%EiirN1xBN~Pd1sk@X~aIkRMJrT^26zYsy9t4L{#6zhWCP z>?t#MP_IiU8V=K{z&ofzo4Cy1O&Jg}O~o#iW>Kw)@P;39?R!@kK@XAZjG)H@Kq+R3 zuf0bU+}A36+)U7G^}3WNSIcti<`SS?3@Gd!&%765BS&Agyg99ztQ*a0hp3B61>g`fF`= zh2a?3)bG26v`O5^=ay-C%7|`hTWug(4<#iLA*0sZ!^x+qE|^oy)52*`nl_6AR4L_9 zlM6H-7DzU27swoekQ;_186KHtfflk|OU1rVj$s>pPBH4AAMZpt;vLszg%eF){_4Xf zQWS%p&TQC;uG8-JefdpfSPbv?GLaJ3V z!$N2B5Bw$HnK$B59DVt1ZNi?WTYcD6bRa)+4_0n%V7G4S5+VOEei_d2C$p zr@%+ zr^mZBwjb3ubb00{MfvF~=bOZ@yRc?u;`mvoM!(EV#BngTR4qC-#ZL_n)W#kh+sv~# z{Z9P!&yC*mJEX;aGlMg56nPaSRLw%l+9H7%nNofE!?}?5|vKNZf+ZRMhM$V~ht>Dk5gi$c z9s^v@saEPIAIB{XOSkj$EFL=T{3N0BkA`Cg*l)6#hbR5}@+VO3pj0={v1xx| z&Gw2b`ey{@7HIWBfN_ifQ}vx2gf zhS$||f-zL2hzI6-nC+4P{h?#erH!~uIdU5RY{muIbK0O#o+x={`Y~RWJ{IfQ!m+(C z*4-r>uRd8l&hlu)f1wmIWcd?D(=|$B@)#D`Vly}-nAy`q!GoXmG4*8b5g7DW|C0rp zoFaF0>fsq)fLS_be6TkUdoVkIvNw}ZVWL%b*AK=L0T>Glszh)7>~SWhW?34G#Q@u6&04wV znsFi!@Jm^VOd6j^mCMyhHQouahFecE73eXp2jGXIbb_aa1!LHq$J7j91RZgWbD}rSzcSGYf8`k8^e7`FRG7Jm-Gx~E`Mugej}M39_k=?3AD65 zRYnY|v_qyZ!z=GLIQ{oka>Z}Yhrx#7&rl?|$}JU)$~3sE*in6RrL<7+{S!1BFZxPR z6!M}yy-r_Q#$$fCW&EXS34)=3;%BAsV9OX>CMSzye-o`Vfnh?T00GWW$l;T_QbOx~ z??U>wxy(bZzw42+8FeCdR*U+)+%r;{Fugl?s(?O!!?X1`coSf6lRL-b-FkEQBzyDt zh(&ppD$6Srd>|}c1^)n8I9X7jrw>3G?mvJs4SfL0loX9>(+c(7uv7A4vH##KDh19W z_MrO)7CQE>GtN2SaDcWfn^GxL!*Stzio)!2Hn`ur17Aywwm#3EghuS%VG> z+LcPEr{JX0jUa37iVtDDMMYzFlrljo*M%EXdBR3L{&U8d*(M{3AhJ?#?K7))UgB6C z^&mDywGgVXElqIX>n+EHVP^abu&C@cE^fe;*2~tY#GHTlt}P_R7MQj3-uJ)k#)CL; ztGi%OO@Bu`RrV6Tjw^Ufw>UYtZZ}yoVumcV zD|XEk1O^G@NUpByjF+Ro7E0EA*912iQEv76L@T(@Br6cn3VtKiG%~WFI~fLT6GpN{)INYP(utau2NwtvQ`X!Lr_8MWcgKc0>^Hw}vD_t+K5>ea(m8L8S7cYt~hwbq>< zPkU+7XUK{|n-ZVvf+wsu#OQc_h$%_pY@wNaCpse%iXNnPk41SC?nCx{{!H~U4hobqqKC6>#4pTrD-Boo0TEGZy=oig4GuX;I zy;pzd%dvL))t6Ji%eJ2~6DR|}vC&YRwS)3VXesqh;zyGb$V%GnGMC-f-(;t4kkm@w zsMFs&O}yw+JEH`#+)sSpf0@#icU>@p338w!?FxnuM^_PyKMwIaFfKFvHNaNnSm)Y) zD%gv~wZ}57(U|YWgQSg7!2nH=o9ev>Ecc|E={JKzP3Yu$3=X|d`i;d&{czTjT0QqD z{+{?5;I)42edj{UVuws&tt1SVWWz?e_FkpUNeOPv4Ab*HMa7`ofCNK~* zO+qxgUgs*itPB{qj>~l|E*G`0>mTyC>N=1DMQZGlZ8KqE%k?0t{50q=z+0BmQ+5OF zuWG9~Tyts&i}hp7$b_m&Yq0C|ago$XF%`1{|4IW}*P9f3^Kr8B(Nn(p8cml~&het> zG}`8RsPVr9M2eT*>Z>>Elf)>e?7yjT)n9a^U*cB)!MFoP`$ES3R3|fd>U_TUL%}o| zD+)rLo*Ku9_T*aLX_2FxBYK3>`ubTP!la&wLVbtY8t2EU{kg6|i=iWm<^kO1n%YHn zS72|*^1&7>h*Z64?kBv`wENxq17-%u%WNi^YW7rt1*#T!oA)HG#+k{8NkTtFLEYB0 zN=BU(RqjNG3C9(LSji;8{vVG`$(3Qc_J%8Wle5*W8$*WCFFv#Sk<{x^BnY0RL58 zz?e5?ReZzKV@?cM zukeRV#eUHG{?iv1uc-d#n963><2${sVun708>Di%99&3KVN}fx-Z$`3^46%C5)9~G z&&)(~6)D?=p%fg1e?ekx!P)uW2kdL9TdY88rJ(L`Jr^5}bMpO?VDHQGWoh-80u^*# zTO-~C;W9b*b@$K zri!_#T9++MN@XiwTI&`0xK^#-b?(yq5aDFua%yD}+bvW3m zT6szNy?@~iq^k{4*(El30@UekRXw1!@Xx(IPMFs{Ca_aWO)m@_Jk4R@lNY+N>_V9b z+!NLxSZ-F~RHuN39EKj>ZLTSndc8V0OFyA3snVa@ob|~PG-$s2cz9|zA57qOSd~#O zEY1kojZUBS&RQQvNoFve-4I}`wbtI-><x4G_W~y)WKYL=CObHcDxvXC?$_BTli)@IF!vetK!}f&er)RHw|Kte{*+& zXzW*;Nx>Xz!8N_8-ZW3k`T*|kKI!6d7{lVfS?qST{pg8Z?pGTyrz|;(7xH)yrA)MS zu15q!c8OG+&nU_qK!`_&M!QAaw86u+Ea7MIc2-0y(!#jY7f+p3gRTUO+CXmz0!WQD z4lQdWvYRU-?}4brw(enqV8Jgxf+)X$UaEWbUho)*4v=IRMEnzxcBwI&dFLEyaU0Vy zyY&eZ(nh+I0fhlUKywc>o}rx>!bRuX;G!s&cWa!&>t!RyUe;58l`PwUw2K!QGUf6J zTG>zP-?DMsV;6Jp=V3DsnXHeOa^1>+)Uz;_lbeUC-k;A_z-Q9d(eWEu2Vsb6v u51Kl7&1@Zimh1c9Q;YoOuT{_85KSA%Hnu8$22_bmOj;LpHBjnS_x}Rw7>D5i literal 0 HcmV?d00001