From a2deedd3f5ccf05f3cac627b24cd93a6b889fd33 Mon Sep 17 00:00:00 2001 From: Mik Vyatskov Date: Tue, 24 Jan 2017 11:20:59 +0100 Subject: [PATCH] Logging sidecar refactoring --- docs/user-guide/counter-pod.yaml | 12 -- docs/user-guide/logging/counter-pod.yaml | 12 -- .../logging/examples/counter-pod.yaml | 10 ++ .../examples/fluentd-sidecar-config.yaml | 25 ++++ .../two-files-counter-pod-agent-sidecar.yaml | 39 ++++++ ...o-files-counter-pod-streaming-sidecar.yaml | 38 +++++ .../examples/two-files-counter-pod.yaml | 26 ++++ docs/user-guide/logging/overview.md | 132 ++++++++++++++++-- docs/user-guide/logging/stackdriver.md | 12 +- ...car.png => logging-with-sidecar-agent.png} | Bin .../logging-with-streaming-sidecar.png | Bin 0 -> 37555 bytes 11 files changed, 261 insertions(+), 45 deletions(-) delete mode 100644 docs/user-guide/counter-pod.yaml delete mode 100644 docs/user-guide/logging/counter-pod.yaml create mode 100644 docs/user-guide/logging/examples/counter-pod.yaml create mode 100644 docs/user-guide/logging/examples/fluentd-sidecar-config.yaml create mode 100644 docs/user-guide/logging/examples/two-files-counter-pod-agent-sidecar.yaml create mode 100644 docs/user-guide/logging/examples/two-files-counter-pod-streaming-sidecar.yaml create mode 100644 docs/user-guide/logging/examples/two-files-counter-pod.yaml rename images/docs/user-guide/logging/{logging-with-sidecar.png => logging-with-sidecar-agent.png} (100%) create mode 100644 images/docs/user-guide/logging/logging-with-streaming-sidecar.png diff --git a/docs/user-guide/counter-pod.yaml b/docs/user-guide/counter-pod.yaml deleted file mode 100644 index c624b4d3392..00000000000 --- a/docs/user-guide/counter-pod.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: counter -spec: - containers: - - name: count - image: ubuntu:14.04 - args: [bash, -c, - 'for ((i = 0; ; i++)); do echo "$i: $(date)"; sleep 1; done'] - - diff --git a/docs/user-guide/logging/counter-pod.yaml b/docs/user-guide/logging/counter-pod.yaml deleted file mode 100644 index c624b4d3392..00000000000 --- a/docs/user-guide/logging/counter-pod.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: counter -spec: - containers: - - name: count - image: ubuntu:14.04 - args: [bash, -c, - 'for ((i = 0; ; i++)); do echo "$i: $(date)"; sleep 1; done'] - - diff --git a/docs/user-guide/logging/examples/counter-pod.yaml b/docs/user-guide/logging/examples/counter-pod.yaml new file mode 100644 index 00000000000..f9978863862 --- /dev/null +++ b/docs/user-guide/logging/examples/counter-pod.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Pod +metadata: + name: counter +spec: + containers: + - name: count + image: busybox + args: [/bin/sh, -c, + 'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done'] diff --git a/docs/user-guide/logging/examples/fluentd-sidecar-config.yaml b/docs/user-guide/logging/examples/fluentd-sidecar-config.yaml new file mode 100644 index 00000000000..6f7793c4062 --- /dev/null +++ b/docs/user-guide/logging/examples/fluentd-sidecar-config.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +data: + fluentd.conf: | + + type tail + format none + path /var/log/1.log + pos_file /var/log/1.log.pos + tag count.format1 + + + + type tail + format none + path /var/log/2.log + pos_file /var/log/2.log.pos + tag count.format2 + + + + type google_cloud + +kind: ConfigMap +metadata: + name: fluentd-config \ No newline at end of file diff --git a/docs/user-guide/logging/examples/two-files-counter-pod-agent-sidecar.yaml b/docs/user-guide/logging/examples/two-files-counter-pod-agent-sidecar.yaml new file mode 100644 index 00000000000..9737f13493e --- /dev/null +++ b/docs/user-guide/logging/examples/two-files-counter-pod-agent-sidecar.yaml @@ -0,0 +1,39 @@ +apiVersion: v1 +kind: Pod +metadata: + name: counter +spec: + containers: + - name: count + image: busybox + args: + - /bin/sh + - -c + - > + i=0; + while true; + do + echo "$i: $(date)" >> /var/log/1.log; + echo "$(date) INFO $i" >> /var/log/2.log; + i=$((i+1)); + sleep 1; + done + volumeMounts: + - name: varlog + mountPath: /var/log + - name: count-agent + image: gcr.io/google_containers/fluentd-gcp:1.30 + env: + - name: FLUENTD_ARGS + value: -c /etc/fluentd-config/fluentd.conf + volumeMounts: + - name: varlog + mountPath: /var/log + - name: config-volume + mountPath: /etc/fluentd-config + volumes: + - name: varlog + emptyDir: {} + - name: config-volume + configMap: + name: fluentd-config diff --git a/docs/user-guide/logging/examples/two-files-counter-pod-streaming-sidecar.yaml b/docs/user-guide/logging/examples/two-files-counter-pod-streaming-sidecar.yaml new file mode 100644 index 00000000000..87bd198cfda --- /dev/null +++ b/docs/user-guide/logging/examples/two-files-counter-pod-streaming-sidecar.yaml @@ -0,0 +1,38 @@ +apiVersion: v1 +kind: Pod +metadata: + name: counter +spec: + containers: + - name: count + image: busybox + args: + - /bin/sh + - -c + - > + i=0; + while true; + do + echo "$i: $(date)" >> /var/log/1.log; + echo "$(date) INFO $i" >> /var/log/2.log; + i=$((i+1)); + sleep 1; + done + volumeMounts: + - name: varlog + mountPath: /var/log + - name: count-log-1 + image: busybox + args: [/bin/sh, -c, 'tail -n+1 -f /var/log/1.log'] + volumeMounts: + - name: varlog + mountPath: /var/log + - name: count-log-2 + image: busybox + args: [/bin/sh, -c, 'tail -n+1 -f /var/log/2.log'] + volumeMounts: + - name: varlog + mountPath: /var/log + volumes: + - name: varlog + emptyDir: {} diff --git a/docs/user-guide/logging/examples/two-files-counter-pod.yaml b/docs/user-guide/logging/examples/two-files-counter-pod.yaml new file mode 100644 index 00000000000..6ebeb717a18 --- /dev/null +++ b/docs/user-guide/logging/examples/two-files-counter-pod.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Pod +metadata: + name: counter +spec: + containers: + - name: count + image: busybox + args: + - /bin/sh + - -c + - > + i=0; + while true; + do + echo "$i: $(date)" >> /var/log/1.log; + echo "$(date) INFO $i" >> /var/log/2.log; + i=$((i+1)); + sleep 1; + done + volumeMounts: + - name: varlog + mountPath: /var/log + volumes: + - name: varlog + emptyDir: {} diff --git a/docs/user-guide/logging/overview.md b/docs/user-guide/logging/overview.md index 61c068a4d92..a9f00471cc6 100644 --- a/docs/user-guide/logging/overview.md +++ b/docs/user-guide/logging/overview.md @@ -19,14 +19,17 @@ The guidance for cluster-level logging assumes that a logging backend is present ## Basic logging in Kubernetes -In this section, you can see an example of basic logging in Kubernetes that outputs data to the standard output stream. This demonstration uses a [pod specification](/docs/user-guide/logging/counter-pod.yaml) with a container that writes some text to standard output once per second. +In this section, you can see an example of basic logging in Kubernetes that +outputs data to the standard output stream. This demonstration uses +a [pod specification](/docs/user-guide/logging/examples/counter-pod.yaml) with +a container that writes some text to standard output once per second. -{% include code.html language="yaml" file="counter-pod.yaml" ghlink="/docs/user-guide/counter-pod.yaml" %} +{% include code.html language="yaml" file="examples/counter-pod.yaml" ghlink="/docs/user-guide/logging/examples/counter-pod.yaml" %} To run this pod, use the following command: ```shell -$ kubectl create -f http://k8s.io/docs/user-guide/counter-pod.yaml +$ kubectl create -f http://k8s.io/docs/user-guide/logging/examples/counter-pod.yaml pod "counter" created ``` @@ -34,12 +37,9 @@ To fetch the logs, use the `kubectl logs` command, as follows ```shell $ kubectl logs counter -0: Tue Jun 2 21:37:31 UTC 2015 -1: Tue Jun 2 21:37:32 UTC 2015 -2: Tue Jun 2 21:37:33 UTC 2015 -3: Tue Jun 2 21:37:34 UTC 2015 -4: Tue Jun 2 21:37:35 UTC 2015 -5: Tue Jun 2 21:37:36 UTC 2015 +0: Mon Jan 1 00:00:00 UTC 2001 +1: Mon Jan 1 00:00:01 UTC 2001 +2: Mon Jan 1 00:00:02 UTC 2001 ... ``` @@ -105,17 +105,119 @@ Kubernetes doesn't specify a logging agent, but two optional logging agents are ### Using a sidecar container with the logging agent -![Using a sidecar container with the logging agent](/images/docs/user-guide/logging/logging-with-sidecar.png) +You can use a sidecar container in one of the following ways: -You can implement cluster-level logging by including a dedicated logging agent for each application on your cluster. You can include this logging agent as a _sidecar container_ in the pod spec for each application; the sidecar container should contain only the logging agent. +* The sidecar container streams application logs to its own `stdout`. +* The sidecar container runs a logging agent, which is configured to pick up logs from an application container. -The concrete implementation of the logging agent, the interface between agent and the application, and the interface between the logging agent and the logs backend are completely up to a you. For an example implementation, see the [fluentd sidecar container](https://github.com/kubernetes/contrib/tree/b70447aa59ea14468f4cd349760e45b6a0a9b15d/logging/fluentd-sidecar-gcp) for the Stackdriver logging backend. +#### Streaming sidecar container -**Note:** Using a sidecar container for logging may lead to significant resource consumption. +![Sidecar container with a streaming container](/images/docs/user-guide/logging/logging-with-streaming-sidecar.png) + +By having your sidecar containers stream to their own `stdout` and `stderr` +streams, you can take advantage of the kubelet and the logging agent that +already run on each node. The sidecar containers read logs from a file, a socket, +or the journald. Each individual sidecar container prints log to its own `stdout` +or `stderr` stream. + +This approach allows you to separate several log streams from different +parts of your application, some of which can lack support +for writing to `stdout` or `stderr`. The logic behind redirecting logs +is minimal, so it's hardly a significant overhead. Additionally, because +`stdout` and `stderr` are handled by the kubelet, you can use built-in tools +like `kubectl logs`. + +Consider the following example. A pod runs a single container, and the container +writes to two different log files, using two different formats. Here's a +configuration file for the Pod: + +{% include code.html language="yaml" file="examples/two-files-counter-pod.yaml" ghlink="/docs/user-guide/logging/examples/two-files-counter-pod.yaml" %} + +It would be a mess to have log entries of different formats in the same log +stream, even if you managed to redirect both components to the `stdout` stream of +the container. Instead, you could introduce two sidecar containers. Each sidecar +container could tail a particular log file from a shared volume and then redirect +the logs to its own `stdout` stream. + +Here's a configuration file for a pod that has two sidecar containers: + +{% include code.html language="yaml" file="examples/two-files-counter-pod-streaming-sidecar.yaml" ghlink="/docs/user-guide/logging/examples/two-files-counter-pod-streaming-sidecar.yaml" %} + +Now when you run this pod, you can access each log stream separately by +running the following commands: + +```shell +$ kubectl logs counter count-log-1 +0: Mon Jan 1 00:00:00 UTC 2001 +1: Mon Jan 1 00:00:01 UTC 2001 +2: Mon Jan 1 00:00:02 UTC 2001 +... +``` + +```shell +$ kubectl logs counter count-log-2 +Mon Jan 1 00:00:00 UTC 2001 INFO 0 +Mon Jan 1 00:00:01 UTC 2001 INFO 1 +Mon Jan 1 00:00:02 UTC 2001 INFO 2 +... +``` + +The node-level agent installed in your cluster picks up those log streams +automatically without any further configuration. If you like, you can configure +the agent to parse log lines depending on the source container. + +Note, that despite low CPU and memory usage (order of couple of millicores +for cpu and order of several megabytes for memory), writing logs to a file and +then streaming them to `stdout` can double disk usage. If you have +an application that writes to a single file, it's generally better to set +`/dev/stdout` as destination rather than implementing the streaming sidecar +container approach. + +Sidecar containers can also be used to rotate log files that cannot be +rotated by the application itself. [An example](https://github.com/samsung-cnct/logrotate) +of this approach is a small container running logrotate periodically. +However, it's recommended to use `stdout` and `stderr` directly and leave rotation +and retention policies to the kubelet. + +#### Sidecar container with a logging agent + +![Sidecar container with a logging agent](/images/docs/user-guide/logging/logging-with-sidecar-agent.png) + +If the node-level logging agent is not flexible enough for your situation, you +can create a sidecar container with a separate logging agent that you have +configured specifically to run with your application. + +**Note**: Using a logging agent in a sidecar container can lead +to significant resource consumption. Moreover, you won't be able to access +those logs using `kubectl logs` command, because they are not controlled +by the kubelet. + +As an example, you could use [Stackdriver](/docs/user-guide/logging/stackdriver/), +which uses fluentd as a logging agent. Here are two configuration files that +you can use to implement this approach. The first file contains +a [ConfigMap](/docs/user-guide/configmap/) to configure fluentd. + +{% include code.html language="yaml" file="examples/fluentd-sidecar-config.yaml" ghlink="/docs/user-guide/logging/examples/fluentd-sidecar-config.yaml" %} + +**Note**: The configuration of fluentd is beyond the scope of this article. For +information about configuring fluentd, see the +[official fluentd documentation](http://docs.fluentd.org/). + +The second file describes a pod that has a sidecar container running fluentd. +The pod mounts a volume where fluentd can pick up its configuration data. + +{% include code.html language="yaml" file="examples/two-files-counter-pod-agent-sidecar.yaml" ghlink="/docs/user-guide/logging/examples/two-files-counter-pod-agent-sidecar.yaml" %} + +After some time you can find log messages in the Stackdriver interface. + +Remember, that this is just an example and you can actually replace fluentd +with any logging agent, reading from any source inside an application +container. ### Exposing logs directly from the application ![Exposing logs directly from the application](/images/docs/user-guide/logging/logging-from-application.png) -You can implement cluster-level logging by exposing or pushing logs directly from every application itself; however, the implementation for such a logging mechanism is outside the scope of Kubernetes. - +You can implement cluster-level logging by exposing or pushing logs directly from +every application; however, the implementation for such a logging mechanism +is outside the scope of Kubernetes. diff --git a/docs/user-guide/logging/stackdriver.md b/docs/user-guide/logging/stackdriver.md index eb3380ca5ca..b71947ee1f1 100644 --- a/docs/user-guide/logging/stackdriver.md +++ b/docs/user-guide/logging/stackdriver.md @@ -27,16 +27,16 @@ fluentd-gcp-v1.30-f02l5 1/1 Running 0 5d ``` To understand how logging with Stackdriver works, consider the following -synthetic log generator pod specification [counter-pod.yaml](/docs/user-guide/logging/counter-pod.yaml): +synthetic log generator pod specification [counter-pod.yaml](/docs/user-guide/logging/examples/counter-pod.yaml): -{% include code.html language="yaml" file="counter-pod.yaml" ghlink="/docs/user-guide/counter-pod.yaml" %} +{% include code.html language="yaml" file="examples/counter-pod.yaml" ghlink="/docs/user-guide/logging/examples/counter-pod.yaml" %} This pod specification has one container that runs a bash script that writes out the value of a counter and the date once per second, and runs indefinitely. Let's create this pod in the default namespace. ```shell -$ kubectl create -f counter-pod.yaml +$ kubectl create -f http://k8s.io/docs/user-guide/logging/examples/counter-pod.yaml pod "counter" created ``` @@ -68,14 +68,14 @@ by deleting the currently running counter container: ```shell $ kubectl delete pod counter -pods/counter +pod "counter" deleted ``` and then recreating it: ```shell -$ kubectl create -f counter-pod.yaml -pods/counter +$ kubectl create -f http://k8s.io/docs/user-guide/logging/examples/counter-pod.yaml +pod "counter" created ``` After some time, you can access logs from the counter pod again: diff --git a/images/docs/user-guide/logging/logging-with-sidecar.png b/images/docs/user-guide/logging/logging-with-sidecar-agent.png similarity index 100% rename from images/docs/user-guide/logging/logging-with-sidecar.png rename to images/docs/user-guide/logging/logging-with-sidecar-agent.png diff --git a/images/docs/user-guide/logging/logging-with-streaming-sidecar.png b/images/docs/user-guide/logging/logging-with-streaming-sidecar.png new file mode 100644 index 0000000000000000000000000000000000000000..75fbe10f73bbea621f9a51baf638412665e815d5 GIT binary patch literal 37555 zcmZ@=byStxw%-WS(t=2df^-SeB}jKkNQxlc2+}A>NJw`|DIgL`Nl8g5NF&k+NO!}V z-+kkb@&0*djC0QwVefCRwdS0^T7;>q%3Z^~iHky^t|`br)I_1s_TXP*Y)trytH$~j z_z#Awl!7)k{NscDG!*`f<0P-|3g179{EH^VoaPB%q;!+fbJKFPbn`HCu|RovcyL-f z*t(jVIazQzx;#tU5WR^)-9jlme4y=_zV_#ZVec^=*4AkCd+WNv3^$EDwh&T}w~9!#NI#6W#E_@~XPZ<2UZ@o}Ul!-%OC&&qxvf*=bHo zxSO$gc=|%XdTO_pCAHuI5yk_eAgef2Vbsf8*e`E2(kd*&S1{-?<)xV5&)7VYB*Mry zg`&mwrwq}<-@gh-g=I8w6%`d@ zCMG5b(gYk6H%H6p2I+}!mwfs})RV+jHd$ezBm?V9lv?nUmxlBKk-c1+$};SZrn-6! z5fM@L{^@3uD+A+W%jU~Qs)U)HfRZH9A~wypOX{C~nYU+HyIwnVj-NN1;E+B!WnlAeAfmT^w{_WuCXxXmU z6LJcrJ8bHPQ$Cwvk!X0F1+iNdu@9YvB1t`_=4Cs)Mg6wvXXElX8?91hot&H&FV0Wn z!o$P82Kml2SCXMB)a>u(XpvdmWn=R`?M`5GIXF1DQkJ0eOV6|FO4qnbS&Tq?-2k=T zzu{?JKl*jCN0}%6xb>U?(kH|1WYL|k($XF)7#dFI%+1Z=D0fN|1$o+#vgNCj<+Cy| zd6=z^lvdC&?Z(@2`i#VXvAKtZs&N=6ZXKTjRIeAE%p~ykJ0m6 zPBsO$j;<1xg-^)ZDm;cW9E3-~`Q2GC{XUt@z6G+=ZP8;)Zv1I9PaGT^zF79%d_U3o zm^B4m@@<@?#u(}2um`J(PIulpur)6m+g&tC+)vFU^6lv85cE5%iGcdn2+#eV4Q(Yg zL66BTJU3pSedL?{?=M|L#vu)iaY6xJX%n@grrYH%L2F!{ul!T_uVfNQY;0^exw|Kr zRgUwfLAxVWV3bsyFVLQ6lE)6e z8<*hGiz;Fh6ubc^{d-rJnQ*+NnVnq(@f}(D?(g5(p9+)1YJ`m4b(4{4H+j~V%J{yt zv`^vyme1S#>goG+kqV+^hTu1N3nBE-savk{#*FqgrmEyhWFo z*uGc!jTmR%KEm5mFTPzb$`{aPn7G`E_>Pi23>AvF&3B!ekQq_sd3+B$uF~zm8(zZ|2ifE`D<6mbJ zf=XAg$8~*wOzg|1KY;2q{|Ki1q z8mN3$Rs+A|Eoj!FFLv?Dm ziFyU6;Z`C}gHio+v^#Q9WZ(aOPWys(Yb+!3V4ayvx4-6eO?u8(OL^D!U(#lioFYGk zAuab*t?;a>li9qC*&ycU;I(4fVWb99xIE>1=bkv)UB@hCyFOOa-cn>;UnV3h{B2-> zSofo0U}K|rL_|dPyLaepY-|gQi}Y-4cq1bt$gl|xzPh)!=QR86DoRpE=QMVSk)FJUTPQyl0k{ zLgM4e@Ne>A|M>CaZ9+o(!TN6=j}61GUi-L#fq~Ft1K{svqiG{yBF^=u@LoCexx5e~ zpcTc2XV=r$zt0l&;1%Wr6_smCKeIZIcb9VV^Mh9g3+G`bpSji;ayB0SrLvoDq%rS^ zc%ZFKMnElyx^w3a1{Rh%jLR#B>D*>l;5|cTTSM*$3*UsM*b0ZzX}Le=Zj(fAP%iV) z$%!WP!Rh}T+gvs3!;Q6PmX?p+0~XLao#|AnFL>&@{Uu0NLPS8L zuG!qRCdEBC#tfIEKAEw7!TA>r)OURKJHH8Yym@D_2Mq;}uX^Y(4+$*S( zXGnW`m^L=tf1Ql%_0j1m8~@^DCzq$^0avs{_xaovp2dt zzWSaf`cF+Yc+<16garfy-0kFc{j2N;Bg)#^S~-;uXLG7ST2T=fb?fe3%-Go2WC{Pq z=FfKgRAy#oo^U)=GlZ|AYMkdWFB?Cnq@}eE4}b1*4!fzVs~aC5pR7Ta-+wd?X!9DJ z?;n-&1Ja&o``DEM5E!b& zct%fAwe{794bj=TL)QdBN|WGQOwThKx-Vb!%&Q4i@|d=CNPZ%Bc+XTrj8`1obX!45 zNm^F6U~1H6G?{8{b2IwwTcWk!)r4_(RldPAR5vz`DmU-k`C038e6K0dNE!-nrZzTK zGsC-beAvX&Mz)ZGoILkH81>m%aCjcmCUF5kc2Hg(gI-BpDfRlqXWP9c5({BrVK+-l z%X3Gv2Sg7^!;GZ3xVUr&2Z#-e-{su&ij3PH&RE>v4@q0CXkNT8rh#{AxC3LjWptE6 zE{eKkcj>3|(Uw`!`}a8qx4w;y={eQDG$+W*ze>^G)zdRCurhkIl;w{?@$>Vekop$& z+AEq8tf;I+Lw))31%(n35n;G{cMkf)(GgxsO$pH`k*}{W3u>K84B-HzZ6CT|oIlsm zNl;c9bdFR_&AK$l6e=&bVZdr}SQG9#lbZ0pkm7Sx!f0YY(o?$qJuFfm{ohAiCiad< zDy-Ck?M^!X8Th1Ihle5YLm>`OSXZI5;)#koT!-rN%s8bLa=}2E+S^~t_A+?n?92lt z^)J2NaatTjN8)w3@dphRLP$q0SeBbBWtyEO_-k-*ULKGn@T4|f;^H6z$;bNowduJS zwq3F&Z~M_R@=T{=+Oxi4Y9E%>e`Idy*1CQcZ1viKU1n@{M|jk4*W?L>EPxznWaxe; zD@@utIyijQ0>jYj%Hd7>`68i#vFm+8jh2~o&b7bEDKTtV`VRkxo{1@hMXLb$FsKiO z73T-P9mncDxK0k%@n8{A&47PRt*yiIm6GPx#w$?)a43(CkGE|v<`m`R{_V&w@}-c28NJenb9tO5qT3H!?<4-*n6n#xiP4na=HC=Vy^2*9A%&eN{>o+-#>M*3GrH_t| zZb?Yc(bCeYYiXV4>IKuhX}=<)F?UccPxO$@mY42!psMEnNG{c!HT}^Dp9NaVyvGOb zwnpLi{^oa%yKJ==B>cD1tE)X4I=v4!BB7Oz3IVz{cD#r6;q-&W)2EF^wGFQm5_IAo zB?7#+-=X$kVPUDMtHbRT8~ydmW(W5>qh_dr#U_*6<{fN@q+g0)U5?hBZOmubwe9IHp0T0*1USDW^M;~pJO z`#bOcRiPGiLWbQF3C4(9p=Ht<@qsBR1SeS z*vrApT(q;lf6gQza5!~-dUy$yRj)GW)>^N1U&_Q}+DJvkKD463#ajpdv9Pd6&?$bz zVr^^NgLDC_orSLU{QP_v8L$$tgTZQ9;$q2ZY2L8~*4vXuIbjpZQq@DxS`3pIKM^ZQ z*X*AqZB@N(8y`{=$RTtkIwLX7o^pz-^N${(;jn~kp z^bPd&&%Xk9sRt}?t|UxOK_OyP<7B3+tv$pmB2vGLgM(wnr;@~exZ0&Bw>rxtG*;?ZksYaj12FqC9l3pZIy-acwn3kLZ^|1HC1QPp=lo_uURR4MLt^Jk%zsri{XIwb^=$k%2GsViEwBrJVGToYK zQP*7gxlK0dy_i}0@s0JIT{ zi?id8f9l+SJHrBAyLP`zi!9&H+`O`FdU_hcjT!6f>k_ut?89?sHa0ltH#Qu$cNUf2 zgocLFL-(E2<&AA;+}46e&)M8O>3fl2P3#B-{)e6b@;^_g#B-ojYR zrDi|M4fev!C}1Ya`Xk%Tjk$3i4b0bBMGd6(Js`61IM21QL8-f#36o2C!XO{dSE7*M z;NTFDk&)3Sf5Ui8mlzZjv;a~CE&t+h6FfF^d*miHVtm)s$(UFz^S1EIQIJ7`kHuB)P8*y=Qz4o_eTYn?7 zTyfCtT@S~^_;@M6y@MKHZSW?1Hg@OYm7jc8<$^Oay z>VDd4kMuPK1%(p*%8r@uF?X6o1O@lP-@Hj1AwL=YZFr3aHIn{b(oJ!GaF~m;sQR)% z;h^KuFy*2{{?Bg{0R@}Bs#VwWUaR_)NQV$0`^DCHe(?CWS?g;SKhgHe_fSkBTU%RS zVJ=TMfQHfm=v!{oBlF$6`5a&)1pkJMb>H|(>O6Y%WT;4k@S|bvTw!4$1-IF^pstpd zmVc2Z$L^qjwPoD1=-yXK;=Gn`ed4Z^)S1VxuaiE{agFV~qlx(S8W&bl$Xzv$`rV*6 z6v2F&E;a74LP}SXSMPl7X(7RA5rr;_=izZ!DRFtWYcen}z}Xr?csci!00lD2(Z%WJ z?<@)bDc943b-9zh71!Wg=D>_Zpg+$zOd8M95|#f-?*CN@A)xtZV{7Ye0UV#cG^Q7= zd2B2h$P~+xaf264A+utMYo^|%Q&t6kz@U{TaGP)DIyeVykNhgssEbrj%tE?(Y+S7y z&exhwT(k2TCaJ24Fj}bD*ov)rEqg=5qM{CNh&;EePtCwiLzmIm+TME=o$uoC52wd3hKhUwj8( zE9QH$X9VTf70;rjh;%eyW`kqUgzWiLM#s@>fV@pRPE>UThds@Vi$nMIJ%7aZb7JBq ztZ?b0sX}H})^BZXc_K0z+Dc^-(-ZPim*3xRXx{i`ge!Ep<8*xC{gtJ_S@`|z-=oY7 zeePfJ0SUCl`X^l;>l4ABK5>8V?nWLTKs7fv_tC#o5)*)@SGKpeu?Y#~WMwh$s-}m+ z7|aP=WWgcM%gz1O*V}8i0esVziipT`vf9z)x%s=^#f1e^J3D-Hb8{TPY!*IxsY8OW zAB)iArms=nTTp;SZmFuO;^0%!h2HVQW}?b^dVl?QQp}|&VB(IW?fJ*0UlXY*wisVu zqq3wXB^{(_wkR;Se#EEprVl;fT}p~R8pq3>ogFJjM@LYqQ&kld%!H|Pi9zXdb8_PT zQ*JJI0?^jPz3lsUc>@)d^?Mu`{?hjQIYmWQYYPi*!lI&QI>5H)o2s~o=;%!DKWPi) z9!7sQ`FH-jtL0E4JKi9zton0nGl`5SA6{^W@hGqckk}3t*<+u z9@xWva?_9uV8cYRoBB#A@_bEFU7biZOT5obzKtTAS@Hd|pP8r7FZ~zKj(4ZD3Y0bG zoeV5*6_=KlF62mu^xnR6r%8a1uSykQO^i!w?q|$zIBd|$larJ6)X5khy-QS(qPPOh zC7`T~%kONvlm9a0u8pCgq0>w=n$O`MkEbQCLV38kmj&#`K2a5_Wzk+ICm%63sB_0m zp`xPFdi=$%Wq)EyIgug*#eYK1ffei1s8q>1_}x|V*VFCCoQkA zltX?MMcdMGA*7z;;7x?2BBziFsNoW2g+ii!%o@+VitKfk#-a8~vCb51_vrxGy$ zWn=#5`?^2%D=lSUtUiRFOqNTDygUz2%nEm?mpYgt zn^WftAT%`ydu*^9x)x!}BK6sxzkwOTPLAjLw|7AN`Pvx6vu8^;!gC*5w&29}Q^u#J z;(|0-(0VI1?DOaQ8&eHEZZ{r^v9q&}fO=3vdGlth%JtB@1H;4l(7q=|+uIkZWi)n_ zI|s=aa(IhMO7JTxO6yjL23{^KET|h#9laKNxO$JDpOzm+oCZjZCQU(i1`3Lbi|5D6 z%^UtqPW}K`_1#T0k{)s5%4Ia-Kg7iihJ%>+xqIq&&=GiFEdWEj1Vu#Xo(Ly)APhBV z?BBqWc%KLpNL4}SGaJa2@dcUnE-y__;eWnI?^l2Sr=7z?4*&%YXHQ>R1r-+; z8v>a73ywsG8~ZhS9HWT5r>^BpUr1O?K50=u2&KZqd*iNEs5<-xMAXZd%K0e zpfg_(gB!6<+*jNB)C*c~^J1ckrmsJ2F$NNy1gXuT+4JJy>=4WG(LopWeDPu&Fl(n9 z`#$|Hk4*n}m3+_rk6!0X6^b|St^G^Dy;QdHOdE~2bEvf2R3yr6?(Sx_`xbn#^3*(?Wnu1?nOz6Iej_Ig?<`TX46?ZV>XRrDF^!SW$lk~(bcag&CVF=K7t zVc)TZYLzN9psjy~hJv1364PUX?3@EGYUYZdxUBeGu%Y?8;nF>Q>@^O?egV)eORMi@ zrT1O0Z*d05zC2R;o9U+zsFE;ViErE(Q`8_<{sqU#=8XO2kuWfJR^`quo?juH3op~h zKH1ztE5n;HwJ!~H5V-e&v?gC1&lX+q#@|~yOQ~AEN+tCxTrslTwMVw*W@ z)HKW6i}qUFfp*3`oIQDE721lNi@4ZWlDdXp$f7Jz3}sLfFK9P7Yxgl9Ong3C04wft)x(6Uf9u&}pGSXK z9C0IFw){5>(38j^4f6;d@00uLqp^vJ+z%gcQ&Lj4_V*DF*7@?n7la8@SO-)p7Enh?L^XdUBg`uRhlo)_2c(PAGM@I#$|E_KYu@X^}W?Ehm6A__M z-+O!80Alf2_1~JTbH_vEL>PD)`ubs2ReXR!F=5XUwHDfWBp_Va@7emz#?}Z*UU0V# z)}y%Snwycwi2oVDQJ3xS{^wG0@^CduQgh@iLpYC7D<*R_~8sI=zkUYoC0z zIJ1Ls+GCH;@b+l0RjewWf%|8Ok)w&%ix)y5)B$0811B5gCVH?hP+N2Dc!mvL*Ny7j z0<*H{42_IS76jXU;p5G38Zx%mKC^?3R&WAKC0?fZRP_It4`yTh9Xi+ExaOdO%{`#evF8YE5G7ihX ztGO<}wzWMJ^*+EyfpKEI*?^t1`?viK#ZxV>+;)IBWV|%3o$_(@*jl`y+&E_nq7Qm}9L-_QfC2<$9w^ngD>>(k&BE6UCe@XvyW zK~zZapCFZS77`wg3+MRij|R6D5+HWXi!N75+#MV^p~s@3Dk@%Tg|9wNUjf7C#(f(y zuYB!cJ_CFLeup_+=ti_(I)Tt)zjKxN{b{eNL;Kt9 z+mdPn;e-D3#hNTO&ojt!~nG<+l|0c@1#)(je;7;dN>C;>A7Y-crTPvGFdxt(X)K05N;TOEzQ zy!x8Rk4#3xj{i5Sh{)sDU{r5E-=1s#1+L2ae?R)yl02dXZGrbp&s?{+gw#wG(^kVt z((6yn-u^DRuv>nwcnb(>y8r6kd}xg%l~9QPg70K%ZjKILhwmYS z^97!cY{3byF=*Pcv2U_)%m zo!iKuMtnN=M`6F8zbCQ1Obcmb`Vu=mjmSVKC50OI;)~&phAAhBvt?s<+sk6zvW}k; zm-rxLe$x9a`-6!|`q3kDSQu$&l>Umkksuk)f%XHq^X%zv6+H6ujma=*o$?C4%+qac zNK=%uuwWdsgwuZ<|MCkFw1G3-`)ZSbIPZJXS7SBuzWkaG0%|qzP&vP3+&qqzAqC}w)VZ6 zt%_M!@fy?wdWTf2_KyWqMzfhebousOOVALB;lD29yX<8ZmAaSICRs%go~sR@g7{)S zTB0tBNHU}qr zYj^h*G$|5NQp9Gz5Q2#l3K$i(55&aaii&$*eU3@sdpjWAg~-RsY5dn@Wo40KfPF!n z9{>fnMMS8eXD5q!e`&roj1)I0j7XLOPy;gV5#GzD`;n~2;RDd-$y!&e=g*&`k;&K> zSf8x&k6Bsf5gL7eVIa?6vu7I#p^~F>L&huoNsyD!dDS(kn6=-&TEoV|vR&xy+dDL* zZQ3sI(#ipRJc+ZN9LBQSzz*9H2nD?T zbG-5y;pF5b*gaQ3DU6_#poR7C1b_8-3CP4vbS#30urB}uXIEF>r0_nQgU|pfK)`Xz zbiO0*q_WdpWnRh{cJ_wm;KsO~}@*!qA9B4E6 zxuO!XpJAA3{Pt2XuSPx^+1lINpOX%5`$Pa|L5Kou^VofTOnyw03$|i?yVtiKh6M+= z7Xc{f-P+r;)56=))z&usm8XC-P!LIjz_q_6CPo9NDOucC7^Kauf5U9bnWB_ne6;~s zMcy2!?=C5?x)}P?mX}xcn*0zCJQ#{$9;(svU`_v(mWb`g-xU^kh|gd8xcUk3v(T`x z*`Mq<`1qi1U!@iG3;@6}2Y}^lqektIuJ&-mD5waMU=ip|O- z`~%hDcO(8Zj9Q!8{4a^*;E+banj2A)k>$0xv6phd1OLpDK)~QJx;7&N12+U8k-!7A z4tW6dGBUxEefn~8Sbyq0mL!^9?B4YhrA2ZLouIt~-a75t0n=u7Wu?pCxU%L~y~n1y zwssKAZpdTofd4RlgU_me^m0b32oN}u+NiP~JnAIpG%VVjnNjzbV33xVqA-W0uBnkE zSiK^+Jf0Hl{`tA(9c;5gKy*tR8;!OwN4%6fzXe4^;G>EvX1C~a z(PsL|P^Q=p4-E|ssu@Q5x&9&9eUL$u1srKDe`ZD!&hD)ax&>%Mf^N%15DCF}q;h5ma(hU1 zwLnB$8>m!tHZ%a*#v^Ox{m!E1G(bAJ0Qs+~Bvn zaXAUka)XNM4xlg43qhS1h@z9={FKxJu>v!5^HO&L8kTDBMk@3m+;9#6Y(^r!wKZM|39L*CV&=(dj5C~)^R3)=spH4pUmmIRO!!%WV7_3~vh!8;k?t^)wib41*hB|F>Od1zGMghxdch>3|w zoYwtc?eyCgMAV!kBO=(3*90oAf!uffeD|lsAaY>LMQNkIR8-_jOG#O!7OX&Z!Cw!% zJ!lDu?tsx_psSlS1ucsrsljHLRajiycxDVZpA}RWS7TujE)LEMe970AM~)$TIiwsm zz$cI-kBh4-kHe(kS3eFn5dsn^SrwJiXgHL1^Up}YFw?7l&H*bHf(%`NIWU;`5tE&c zj_yK8;^OGe%U7>rK-L6MiKK@>76xi^Iag6;So;!$$hoqn3n@#>yI&msgaZ)`WO1`^ zhYi{X#qX4t21{Z2;hW>dBon8d1%-?36p#X1e*PrfoNjVlP|W2pFW39<*<5>^e>uYTLnc$))8Z_^rI@kWw{{k&TM-ED}`veEG zF13Qd{~whZ_elcafHn`uUO9w*N03@|@XOjA42W~^35P0aYF5a|W>+shHGXw6)OP+z zibVJo=z(BGqnF#fjFU3yBLobYTGDaOj-e+{nh1&OySwwlQ-zd~SYzyOmIa zo96X*HXs=#A3nT{CmXK}AfoxEF3p6KVdm%Or&sY5$Dc}CL%_5-KzO$g8Ytpi+fCLG z1B}3z8L5C;!61JV42cYGn(*&Ey}hC?u;Rp=oSaW|wbbP0i+1zXfcF8OM^ZmIIcAlK z0c0orzg(Ty5@_wzm<-`3wgsx$C3;beJdxc_b%iKG&6LI_~P zGc8!bSvc?!@qHMY(oD^kmF3TV(jxH}U<;*{-o*5iP$b-zy*HH81!MNI1V~d0*nqNS zUEu}^H<1Kp7HEe%Suln%;V0Vv_NA5ko<9G3h<=QNJa7L65rHy+v@mV}cQ4 z-WKuLxW&MLG3~Q^?aGxa&%JTPcAvm>Hq-+)0m1A1e8!W*O+s)+VCDlYOIX=zR0MVgcmz~E zBY-!6ku?HAvqBPNur!FSg;3ziXKDq~q$1F7sJ?ys_IhKyvQPzIQPBTF6nSzGJGP@~ zAoK+S41jKFkZPPDJpxb*LX9}y2Wx0321dq~@o|vwZvr7~h5%4GwE3q`pGv|)W=BBt z28Cm56HA-$$^Q0sU}h%mYkbO=(1q>()Ln;ATp-v#s9U0<)PO&~!MU1+FfCwlbAYE~ zpKU4p%~QaHzr)Us59qDGzhCn5;+!6;1-KKr_fI5d3G(CTv2%$|5b<`P65Zg?G1qxr zb1RqBh(}B{Wdnm$lEHExMA@8$4-S>^K*M!8`K_})#yhW z{~w+(&0($)-Mkro-*#l{=l;RLYZ&KXYIIBRLxS$1tn3`%SriK11u`v2J`I>SDyb*9 zwpIv0{?>2DCcrqjkPu70XMu}|a)3AyCPF3?*g4+<;v_8e+0FYZgW$)rbDA_pfC>Dn z&r%vB4?|80sJz#($FS>mc6Qk?Dl4D;M8GgY=3$6-(`|V`Eh07b;K2hJ)E;lXCJ8u9 zHp9W>fpDtZzoGXs-Bzsr{+Cn$8Q1!(h~S{*EG#c$%gN1-eJvCc6c(O?(yf6MWp7_! z3PA`FF(A#!)tMP?ShewLOA2mh9-ATN8>W!Q1%wwoTpw>r{y^Fa!*N z*postI9mc<*#;DAW@aV;c5C-gp=`w*R#^@XPKI2cgFQ-IDEl*rO3Ykbov;vBqegwq ztdKbZ*?nH*U;=lpGN?rnUB8|H6K8d`)W8ZIuF@F<*F-uo8T^Ewc?TBg@9E#aMJ}@Z zFNm`qNYDv^42}YEfCQ!?@c$NYTW2>m2q1?FPw!{q0WBEGHo(CKSp;YD+1~QN5rCSb zpPxT}Ml8_F^G$#Fx!FTk4*(%x=C?(i{ns z$(Vuo4?WfFDVlCFe31(o4TSD~DJW z8mwZ(rrrMiN2LbsbnK7**AYNkd8K9FOSlpd@b4jV;|q|8q^2eb0Io%@Ax#4VT+m@T39#0q`#e%?#d@?`PV63S{deYF(F}K*kNAuJu3# z^mt9jKXvz;WblshAsR&#BoA`z*+}W*)&iBZFL(I(;vd)R>uZCRx_c<}{pU|P&=#Ph z&8)3OBq!e}F=@*5-vEpQyAnm`e@09t;1KlY4Ib#|2+N&5vx0L8x2+z+Mj?S+=yA6= zIin>0)dSPx=H;EA-i51lAx%vZP4^L3M9}wy51MW{5DFL>ra*y_z|-+4VoHIGenlb# z*pB}{Ds?e?dx*P%I@1my5NWSh@yNOFVJGG?vzs(h1IGAEc*_n4_}nuyxKpB;S`chG zOLWgZ(#jcHX^sD-xWm-fFfhbe8PCbV{8GPnl+)0o)Ma6STaavUPu z<`5G@G;w&w*B}YJ13~M@F&y-e_wV(ty=6+3hb|5Jf(%^Yz$Bm^D>=MaDa@*X$GV@d z?>K>vTr`zpa9bU*AA(N94Q)g%yI5UUmjZZV>ETUhn?MF}697xlbS5oTmYtoQ7h(MW zF@Xv9`)IuM4NwgX`aNL3&Tejoe>XR$t6~i3KH9#2i%mScwl-;J+hYPq$`hJ={rvnq z#r>XZX_UYViitY=^g~C?EiCT8070eqO++&Wix()#INE7Y=1;S;Q0dw%o z-F&+WIN*X>8|b}sa5>f6NK^CImyR-1xS=ccp{C{rjEg7bzBb@cfKOKbV%HMP3?7;v z6vgA>!;t*RJFebeUS6(wzVa*Bhl-(5QHzZX`ZZiT8m@$|Cj*x2&9|;wd{k&{nb&3X z9T*Kl`(c7CaplWnhk$zu4gorBXb6bFiCiW>rk%sBgzWg!+THMjmgAC=ZiuVtY>teALO>xtR!GujS!y1B8XE_v1rp~(AhUzodqLZo%Lz9>fH5Zv zyR+6kU++dZ0Ss$+AkI3E%_sn|ICeA&d|au@cbQTHV`7N!@$#;om5O`qVFQ@s%6<2a zP7GMSv4g|LG=A{WFo;E0KyLyX5d{29Q%j2;5=w6JeX5fu{gB`Z1>JBSMj7aHh`lzu zu+ZkF_auzLEmsI(?|`cQ{rd-rZ$EDkW&MGxX8m1UG=eLAf{KGx{TyVwwa6R5?Gz-7 z?&&Ewm_w9hz3@E-aw5$@3u8c_g!oZ`G>HhDkUj_j5db3e#Fzm%Jpp9>@w4dRM-NGa zTOmh@0Kkhcp}CwK9M^bwc&>B;{%W4z{^Yu(YGq}$6-`A+3700SKTF#^2izyXg${fclf`@*EaqVn2UCx2qPM8w)E8lvc2!tK9kP*Y~RXx$VbCN6np`AuHV2Jcw@sVT2K1 zs4#KRj+Db!Jh5jfh>5pZSy-&;;e9bRr77;fok!2@DE1FBq16yMq69_!O{2>qF6Adl zACjb=c97X);hK38A`%CJ7MTG4d!}9sn$#%ol=)DBX3a)9vTw*yxX^L8%uzZ$O6wm{%e8rrPN{49ig-y ze}^K@z!F{2wMhG;SEZlgU&q?@I7R`n6ngmZA$P?ULn|w007V83hA$}rP(3cr%X4ED z7xzH_sp-J+DEhDvb`qDNZ=$*=v@`2EC; z0>NDzx$0#4ep+1qEL@Zf*IjyFX#`-B2jEMG`zKnf>2FK_5u%oigd5HH`oGcQg& z2Cv^iPjBo!j4YW_1MXJnau3$-UW}+RHFU1z5sphd^?y;xxR02na2X1Yf;1p!pnnm| z%T_mT-h`whI@n3F0FhD8wa z3KUnMV&A5x>A+OzfG{wk#TYjFPy#$hULRR>&$^&Xc?-Dk1RS#` zA3)2EOiN1xI-Z%Eo=*K3v~ZB8W}E~)Pxe?q@l!W6#E0{WPa_<^_H6nkB5HlWIfsdO zL&EPY61ns9h)o;rb#Y$Ntf-a$G5f7un}o`o^=j&G30>FWepeTlYzX9l0sxnBZiBi8 zq8DO50}cjJ>D9u*Q!t9RbzggfeU6N5$nc;fAvDI<`2CY3kO1B!p^+L1+FE1~+hT012h=xLJ6*!ta z_7i-l;rdqMxp$DIy59U0mCf9Z9gqrLummn&=DvLSGPbJ9O~lCP&x@Ftm;qF9ppvf>!Lr!Om_?GPPh@z%SSnqJ9`~8y~CRY1d0j=*Io&gSg^HrQbjX zHhuaO0}cVQyGUyK$KbDDb6mSONl9P9V#DKanUob3HA5~H-N?uY*;Jl~jm!CnVbOsq| zZ*80u^)@*f8y5X%odEp==(N$0=dXvqaD4&=`rYt=oQ#f+P*-=9oa0r2HEbZ`OK4wP7@PjVlC_6g3}@ z>R7%avNZHuI90gt+z`@`Mv^d!ioh9(tvJg75(Pmg0~B`+!J7!(he1XQiUeGq2I~$Z zt*-;x0Akj_uVL}miP)zUc4PKCT^FDRjSO^q5eU_pEGc2rU%+&K1`(1)a((Y63jk%? z1};tEu=^jYs}D0&z>ii`R!*Nzj1$`OKiClCT-x=YIa(bwTFE0~8Bi!m#@%*j4Z(jS zlttNkqwmBlQnLR>Q zk3A;|_iH7xex5ff9iF-xWvzOd+{@9$&M?Hg``4jwZ)KxE&9K7MCX->EmnkJ5>;9jf zT{*JMAy+Z^7YDcbKr!k7nF((80w`$xV*eY7`hi^o+~2Y{Ik2|&MdQReYeG0c2|%(B zKoNxN*`{#q1g`Ldng*fzLKx5hm|ub8Yen&KduJyXT={?kaUYQQs+QbbTymkw9Upj~ zx$pW-1H*-~?t|0A!^>+9>=A+}ODX;Yn(Yih>U5yz^#in&4tm?3+>N*!keK(j{ zBQ*fpgy!bvXLM(~$?)Hj!zu60Zb)n;o*W;$*SIc48CKs=XC3snl+l>rv!8HNg9a3w z{0hAHCMURrivTpHjp{v9;WX91bkojGb(Xjz{W2_VcX376bdE85UW^qdOMJt2=XXof z^<;ahEGI4drOZGqs_AS858C>~12-Cx=TAWinqYDHX%3kIxQ7}54nzEM4ag?<{LYSA z%gf8Jj;1Aa$CsAc<2gERy2H=DQ3BfGMnixC*gI7ESa;M+v>FKgeZTH_ma?{vj!XzH zr$X$Nfr+Uw=Za)YE?@YbY|q^a~p(ffTK9{nmx>CxC&F! zT%8w!2@0BZ%x`j*~K}0LfS4;!JvK@_YF@P;JjrR*Z*g2Z-;R&k52=BJ&Gh;_^$<(4Nh1tTx5hO*orWN zLMQx6rQ2jOE0b`2U>%&*_5SP!=owStK1&%MdS5+x;D-h+Zv0$?j`AKRViVcHB+#^T zw9Cm&xZsBt1$cJ@Y?LSAD>wFXQM$t6@(FRMBf#2XX-zH&JRkF zFapi8-cRqw$_l@^rIZHh<<77-Gl|^U<1^GRjCS+fv5E5;JzlzRj)NmoIYl z@j9BB%?KTrf3fx=dBBUaK^AZyH1Sq@^#6|ldF$cOwP8gYz!_RogBv=Fms_d z(m3EZr}~FqaI-qznf#d{(pjXT22>iHL?`gvD2QUTb#UloRnrA|W}7b09hbl^+5}zS zNJ@W5#?ugPC0`!@^ml+0;64xP)PMtA!Z`(E%hsly2dXd_Ki)ggPDtHolyn$3b97Ow zQP-8b;R6<&Cw5o2My8x8-oM+V>D1jf-&69^QaCNmXvL%x&P4RYXS_$hBBG-Ui(-(n zhU+n=R#wa%1GM7C4J%Gbm(@>838|@yHa4tK?5tac@EZ|=uUCVU zUkFYP<3}kb9U5SSqX8R$4lWImu|Qvdx+c$4RNHQRWpL(E2DwoE4C&f(szMA#{GpFqL?*EA3b`5kZO2`KQabpk{&jiJ8W^PUj#ySMSsK7PI1DaN%SAHb`fKVKyGIzIT zrH#E-7%lr!gNuvVkRJou2e=ui+7B2+it9`CI;ya6Oo7DVxy$R*O-pkv$U1 z$ja7`kv$Sw*^-nk>;JevzjMxYopYV*jPLdB^SSC1-uHdK?&s_Ie5{wX>ufDgT#p1~ z8hYrHLW>`#@IRp~i{3kBT2oGEnaH@6^Zjm5*%!yxyQ*~Gr5Ie-N;~Y}?YZ_(1f-K}RZL7%``{GFdS9jNqy>iHfjB&2LUB_)#hfKYl<5q;`9;Db0@Irf7S#y9%6OL6F#npPz;AU*} zfG3uurCD@Uv|Llq=qN?dLMNWAloU7j8Ty+oB9YBUyo23X?SI~n`g)Q7D;{(GmsE}t zUAMqoZ?oPX0|Ul}UTaQrV$1^K;?Gf`cQP|q0imL3IJOV6hZEQ&(6IqGP6B*P0+DD7 z`j2u9E&~y8Gsf7P5K-}CdRo=e@`pkK2+&~gi?9T}|N8YQNJK`&#{fUZ9z=QUO(Gt^ z3|1Hk%U0j~WGOeZ&c)7|+Gs_YfW+q%X{R*a#(qcF`hiK|??h)-e#Ki7h1UiUp1Xl3&k5_B?qzzW-TuH+Vf0qkHTN6xJq~q6&Q{tonIEz4;E+CG6G((0 zAp-&O*t{<5v9nuz%jN=k*7`V6_?KZxCgJ#qiHS*^6i;piPR;+uBz7!%5gXJrlpAq^ zxMRu!4Gz!Rfo-cp|Kx0fea^r{R9Kc@j~rZjXE8G&^B%8NaFeWX9cnK9#gii|JEK1R zTcb%*pRzB^%S%RkO29qdP_4o$0bVN}%NPyUwr0mKQ(d{#s;W&qu}!G*uLUkden)k0 zgR&C{+ZWWTx@J(YMdtXUh`ZS>&|g*p~24t&;-`u`|f>`MYhA1&(@3(L8B z(%J1Y>r2-^2Xm_8ZbA5viaJsH?`H-w3leG^KnD^nK8&F?)ST{>7#MD&V>qXz#C7=a zecY4)NuFps4HJ9maghK1RyblRO`u0~(g$rmu_ z0tPH4t8_;B0cMKkmjc4tc*T~M$KtMczR`0zEG~Xq`P#L?2+=zt6J4}i{2g$i{8~pF zc}5`{8wiXU<2NKu@Jgwy&bYXhTUV^c2o<}>aO0QeK+#*c7Y-p2YX7xs*S6m5ukfmP zXFn3)tY>fkRvb$`v>%S!E5P0^({P<3lka{*x+CcQQU8bECDiJ(zfb9F=!L!eLP1Q|Js)TX$Q}z5r8_&)?LUr%^gWWYt zALQiN-GkEPX0*ulv!Ada6f6K9GRm&aX`Ba&u>ch6yGG}iygF&LVLySg z9|7RzVH44?;)jN30|^KLADe_9_3t#zPBkhnm6X?Sor;op>tX;jvlvu!DOG`XOQ9St zJ2z28!}XgY*ZWF9;y37L-5lTO=IeHU`_`UcP>^W_Ucd~$puaO!&o#S{1n{pO9KkT& z{C51xgSw&w7JV16v$hMZDJpsxS%oM6Nh=-FnAqh8>PZ%Bb(Za@vD`@6Lm@3T^a`J< zs#r-^iytebOZhUWRhAOXWy>Z@(s7?CsB$wRfx&FnpdRlN#Nk3kfduRkT|mBRSTm7g_J_%gh}Hmv(wXGNRIukHkI z4nHF~p0_GvCn;)+Db$D=6eV>+{7PZz0m_lhaA}>$)GPd*kU4aljY!9lmv>^nuc?fG z^VPl@LSO9Rw7v=THR$^EZGsJ^?e5TH7+!8u*eofSMtZH=r={dZ@Ba%7t;V|06`qrGZPh z*y<#p3i0N7G_jn}|EEn}O1=>u5>lyWQ&t7xmReeD`BDSgFoHOKt@~zuev2=Ul5Rj^ zJEiBAeco}*3OOy-XVfjy^Jv-S-e_l)*bSYnN40QdR}MwS#g!uaLztk4(XSWNEAl5m z)c}xC4)4|kOpqFjI@nCnz$;;1nx^3z9-y7@gXxm<8)a#9Zta$DiM-0odO7FZ4o65N z&~d$GWMu4*J$jX_?C6-6`H?RS3Q&v|i2!^B3`;LxG|ku#hFBh3$kAiR1Qx8HG|8+8 z%wqp$@nb0YA}*!m)}tK1cKy5Vrb$PJKus$C-a!FB>_Cy7Xc1i?fw9o#c-BM<~DMktMwP)lAsf4&(O zg>S3a!+1S|E-Ja5MWFzu%-vt?G?|J*GEw|kG2M+xA%`^M+2=w1Xp`rr!(+WV+JdjY z@z2M(IR_UHTc{@2>i6(TvuYZ#V ziS?AK>2R;m6W1!8lwA_u41?+@L0^t&zZS>7QWy>cnZW~YEi%mVJ0ZMRLN&@l|K@c# zU0vrnw~~a~2=PS+ghWJICV{(H_4f8Yf#B7VJxo&xOo13$`bTO>XL~OwD_aWtE@^a% zD1~Vr*R1uWk8+#F(zNM?xZop1RjEYhH-Y}T&FQlGmIA9zA*e$+0fud8f~);P_NOa; zjMqFpsqXNcJ~r+zcm=0mKkw8+gkGAF$Gn!dvT{J?$8=2qZT=6_O4~94bDT!!#zBvE zat=S@9{vlS=*-VcVaY7%bv%wFu1{r1R=B8q@#3u+Pl^muOW8f{YNRDBSPT|IK~A%_*1e$L+S0^`yvn1 z;X^32$Kl7{^S!$}-NfQ6Pheo6Jk5K+xJN#9Pftut072Nv!4d0>et!-XlMwAi0|nN_jB}?Vd3G9n41q$`q$6C!-msp?HD%a&ZKaK^89A)tz4fc zBskLMYIeKP(r^uWi^tFOZ1aRO=G3NlBLb{!@sqc?vC|yvN)N}sla=KTJ1T`?XV`2) ze)fO!2kE-QdHKr9|IdHv|I4?rmt7o@no~ae|LZ%|A*yBD)-E$dTOK;ZSe&eZWEj2xQAB_3U{**=;8j+P zPfO(8n9*wv}AqW08A6lLToBf83cHB@tWejSHpCR3WD46i8Wnp`cn{t@Q-q^_VA=1pJu-8+HdfTmjb5A)w?Mw`EG_!xv}ZiSo965X4Y@BANq);^O%=h6G^Aug?q4VfGTe{dGojghf;bS)*)3XtpFqW zd^1Y(M5w`U+)XW&-%@ioW6p9#NZ{jR!KLjAp*7%t7QnmFEpUUQ7~gMh51y&LqFVUB z$^ddK8+GaG-H)MIm<+?bE=pqn3Q46~^*4P@WS#2MR|{V-PyZA|Sx*|0s(wexqVU?v zm3btfbx-z|?!>e$Mw`sH-((`|d->Q9kCMlP&Y+b~K~2DCi}~oY3g5%7M(F5l2NdIF zqQbK8IXs@At*3ariOzmBu8_2w!o^|1C}P&>F!8ayZ{oQ;-L{8<(R<2#Yr`>04jL{3 zw4^HK_N_rEM`8V>@%~*6t8?d!X>8fPars`(UhX`&Z{y39oCCOG!-ZAFsB_mIL zE>N=Z1`KZgMg0;N$2xxhrRU1oV~b5~&H9^0W!POm5ye-TftF66&Q8Ky~F<10kej0kUH z?V>dQU;Y3Od#pUVK)bd^?f17E4hR2tEkGD|gnuIMeQ(K2JF*c{mJ93G(GI)I>LMtd zu4XrGB&DWyeyyn)FJW2k1{#|N$*P(hQxt#jX|jJf3#+{8VMZ(z)f8T3r+6LU)`~!3 zoB-XPzJKrDCTvwyP>-JFk5FD%&|*N$*(iFEyj#89Nl4@45T42RV*tB);5gKVL)fvP z_3TXsm{kq2Rp+J`z6^H4qOo=Vm8XDYUghKR@*fxB=#!nDnb`##OKiF;mj`h3XH{8U z{$NnagbNTD{}?=(o-M*zq{F9nVC?XYi!-W*qP76T*@g>j3;i(hdGP2>HJvroQVG-K zMSPMc!j=j#`Y*UbQ|^TRcNV+&RSS!>$>wC`M0})eoHEg95Tc-GuYHXVzk&Ip?7F$R z_{Gi~tuv?;Vd25(i__93qJibT?uAo-3UtSFq}WVK2&9GO0)fIuK8(FC>#CL23WU~O z$_i>G!uJ33prFg^fIfH)0_Oe_+aGt8{u}hdG^>tTeSHM&;`0KVeotF8dcphw*Agb5 z^KW&XKd2P;6c$2VD9@&G*?af0vHcWy{AZ=BT~zC+n0jn^t|oWBZV+&oa%*%}BuLHd zLF7z1BaaMEMa^+T3}lo9MCl?P7}t9+be5nxHMtSQdO_#_znovftO&+xR+&=xw6smi0rt%A*Le``DYjJ+0|+cRP+=W?=Zoi`1% zHS&qxVc^kNbaHeY#`sq{-oN$)ol+aXrD2F+-zc3scU!OXZ@3HYq3OlLb2F-H;X**9 zx||V#EoNmkxr>u?U&81w!Q)=BjR*MNj5mc#jBd>;o*bG=48G3Zz+N%2w@sY&-`r=N zTq^#=n~6N60xEa_M#d&pPo6*b$1wr+CMLt5paaP- zew-@xgm!I<8dDW*cAL{ai5anh&F3k}PWx1@DD5Igw>U90k=2-_9UNvSL0Oi_2Xja( zJN^R0@O9~iOxq;e&m+fjIu7m^@Dg>&%urnU{O=5pN$w(9+h@qrz1RQQ-dC{`$1~D_ z@XY=$nYJeoxh9adxi`B+(Z8hJs|gqbd35{E9a%`cGlf(0m@gcjV}Zl&Mn9-=!xpD~ z#ecr)*#J`74t*urlwEKQ6T$=Q{_@__opw@mSid=#iRpmytChX0j;3iCYzvx5VN*Q9 z!#sO`_pjg59`X&KUo3PDA$Qy#q|*5Ke|@%oH0<){sai+_#WmntV&zt#WAkcRma3(S9Ds#IWK%6GI7dt? z&4qincW1mpBnUAek|0I64)y{;U|ToiSNrxh6FYd?RxuF~)?-k=8xZcNa%`r!vNE`goj%b*`_?5V85&|ZI2i@?3Wh*R`nA49$#^S~+f zPP=d&tZsGYm%PdwaNNk)`CcIh7iqGoHZ!$Ukwq<8#P*BhXs)6*$%XJ5dEB*NvH}yB;gLE6I&@02zvu`gR;SfXFRl-PTCnIUpm$!L=FE^Hb=ZTW?K6|7%me z{8H#c__3StQ5p>gjlan0T3yvSTW+0Hwryf4t?3@Ok375dHBK{))MAc|wb|*hTUj4I zUeq$ab5*Fn_H)MxukV9`obpr~83Sv*rHfyw^U^ObdZn~pMP?l7+c@zd4m+l4c76Zu z07Q^-K8a$=k+nHIavyBdf!i+d*L-el%&ckhuAWv4p1xVrToA==dG&SLqI5^0Ze#hC zGd$-1MilR`iq@&*_5-_p`9^i9ry)@>MOZTW{o+B6{7)Mv8=v2IqI2e0x086{%hWLc zz`;QJ%2-(daA`3rWy8kot=MDL)1V~%2>%~S?SVz8g-r-=fS)JT ztK6$?wTfEZJyTlUCNeH}BxD@I{zg7|&7QZ=Vs-!B_l%?Mo!oy7`%?xWBRIYuS-*E? z_|`0{XWT7!$E?z96OKKZqZ-p0lY(Ui0T3UOcqxvbJ^{g3WF)hLcOPKt zy1CUjj|EmRAAB7SqpNWdy<&bu^X3FQ0dkp{qq1Y7qX~N?hFA&z^Zc3linA^eV_ywq zcczcZ{Yg3#Cu!c$dr|CCUx)UrjpgU0*wumWs&QhT2QKCaC4V|5>qrG`&ggP@|uv4n&1=i9aDWh?cBD_yM#?^&UUd<>fYGypcA7#g2xYb z@BP!zI2hr-eVfMYdRCfhPwJIT%(IG88*)WhW)8@^L*4X4aGvuD$epet2Oa?MDWH`Q z0&6aO9!ivYI6p2xa|3Y&B#pc7+_{5|2xW!nGSCKaA_W{{@}n0o_F_YCi7m+_{zbuZ(ltsr+IJj{OoE#@{Rp^+am|9 zAwp~10n?EnpCEuB{4l~63EK7s&_)u@O^5+8NBGw6)3et>9YwfI077irdjiK+5Jwh$ zfPrrbNj?n(m5H1oD9+kB`hn{sS+@bH5c$BwvO0kI2y&*j3}7Zl^A`n} z=q*Ba0P?&H5-xl_gS>|29}hSQ-hbf)ku<*Ns4)>xegkN4=|Z=ax0!)szU~E3$O(2t z9|jD1CnskU_QvN@uA=cp<91F?rpP}4wbhbmp#il7btNzh7(@vA0Wz0h;P$eM(<=Nj z=*sKDp$i8g3&A`U)`h`?gUs^hxZeEfp)k+SuzDG`<-WxNYl~sqytJu-Zu#ziZ{=A9 zB$Fo!n%KEn_N=?l)>W|ITAhoDC4&74_yTA(;M@<;A2+B7mwmbs=kfXO7CO8k+X>+d z3EVRk(R`hck%)j?qcv5P6EAb1K;158W(6d2LEnoD%SQYlkiswcp34;*E3yPLr~Bq} zU0r(f5O_ulc;#>n)nJeil5YO&*cy`OEjrR8PL#uIXAheci7?d=+zSc@#ckk3T@_xk zc+9}N|Dt#ktm(Du*K^*!g}5*Vq{S@M0KtHi`~5zLfjD|*tIpq<7DGtpB9A#8H$xFgZ-g%zc9`5JK$18BX#!kkm(9u zJ!$nVuzyh!6QE{D^=L*^E@GB8EOIQQ#qhoW>-9%D31svp*3rk`+;)*<&dP7rC%MbE zp5qD3&@a6m3g{Bd45b`+2J`k;JArz!KqCvCoMMU1?@qi@5IxC%_qb(j9FlcJItz@3 zu}N~#p-Uys){srY@-hMxygSn_LYYv6k_dYh)HR9dHcOXBUw~L_g=q-ju{Rt-S>^xu zE%QgoIF9C3^O9Vfv<%@-L#U>m-BsKWz+YEZ-0}8PTjVfghTKoJ|LK5g%z0$t&Fqa@nYvDLzE*iw1#O4_*}Kr-eet< ztE9~MXu|x}R6x_nt*q9ISH3UXJfR$0ihqz$;C$z|T=8JN7PYvG#s#|SF+J+uk00;B z7H(d_LbgQ@h+zp9KNycRS9J` ziuM;_{%XV$A$cSBgGJad897p`b8V{iFHQ#Itp;&<7uZ)ZZ*9s-wX zA#FqHBT3!<6W<*7MDqlJXQh3k{Mg=|IiIgccd=uuzz^k{dsTOP73=)^IA-)H#dUVn z`=tV4a3fD-ZDJ1wu*?ea97>esw8#eDw_~?@_B0DfO4#&C5mZ0nXob&T<=ERYuZ?y0 zm8n7^3w8Oi&A04?0u}ZF5IfH!BZ+t#9HOy|%cVdLNg^&C66iP-B#k$^$FYjl;yv=|s5@~Mm zcfpb>?KWo&auz8i-gw&qnr4xj;TnZnL3wtxftH450Ih!2I;&EXs&kP_*jx{qg?15P z*R-!$)K*kQtb1joPsylqv07PKS)W|Nb0t_{G=VU{g`sXzBN)}noau!5#t$vq4cA~zB{5Qb^l{>mqj7twi1yjwBdF8>Z1TU$p&Mhdo&?jeW) z&p|@7^-~uzS_vx+YS$Tj!ZfXn-4Hh%JaB*#W-6KGVa9bh1ancYu@$6CS0^hyG4Duc zCf+CPxsa%Jr1`xA0s4A7e-ITM>)a`JP5*Yw zsIN_FrTNjR%kAc=S*_}IF?jv_{eFxv$Rmm6c#fuW4Z7J{Gy?mQ7J#xV=J z@58!apg<5+!RQRhYt#wrIw+>phX0cNDWyr!li|MmK#W8Y6}VYJZ3&Xg*dYU!3u;V2 z?&%ymC%bXo%Y>MciCo|ABrp>6%l;WRUtG`I%&Pe%%>w;!M}b^W1xePBX}A;5oq}zSkv80+_c2|I3eO8z5VjLtlOJ93gGh zl5lLJQ?TeOEh?x{wtIxQG3>#zvw!1R6FhOgA<=FrrwoGgZ>BdsLWjEeq4`f$)0vRi z7y_|kHa1HR3D;izZkK<4wvabY`~2wN_YSJ*a@2o>$Hw;d8tS97?IsHaXBbt;V9C3V zIsorSr!{axhT|CXp1^>typfAODf}d^I_q2&(!?*Z|ym&a+8Cy>D&_* z!$wMnL``ZK@IpLcnbAf2@Dg1J5mhH#zH}Gw$(iqNpg!oay#0g{boC((fRNuFO2yW# zSNJJ*lnfU7E4s28FGYKJ{C4J-`Kjf2MaO_CAv8JQEb2g$32Lsmq@)ARG64$I1s^{g zFU9mK{D*!o@Izj^#j=>?aG{&Nq2N9(RsBuUHrtoxmPNC2>a6*DS6`ueT)eKBrvh(k7KEs&uDvVh`+G0Qj$=Jm~tU}q5ogBv6 z{qlD2xW?C)%&+#GwDI4WUmw5`u^v~gJA^5QwOl-<*`t5Pb$!bf?lk@o+Ol1eIJ**{ zQ#HKzXcI7DzA^a5g_2oD!l{$_5lPSV97h1%+Hq`6h$fA73epXkfXsw9(&%#Z+wBB>Zn@y-ZN zjWEr9Gr}oh#qhWSgo1SY5sIem+CL|v*+o6c%izXq9)u>T4aZ#KiatY5a0(4ns8hNF ztZ^;S?w}2l*VGIz@N`rI`_GD_wQywIFf`fwq;4}HYXSNbwO?mS5bOZ#unH;e&{zK# z)PjvC1(NJ;9|sJu#sK+b7^?r>;}D{k-`P;G+K6J{B$;zYWB7wE1o&%r zojN$d16b-9+gVYViBI-AU4u|wvaww=F-czgrv%+P5q{b4xgvZr!JX@^tSCN}fgSGgJ}g>i)58{|)eAzdxYP+Ce#YQ`E!Zfe2zHK4;trx?k| z??H$5D2P*wG6p+cWMpvh8G^XP&Zokp^7~&iR#H=8Z%vIqq@Jl9aUmgcFc`sj;8{L} zN0)+e9Frgfm1NMvKBtQDm`73Z4h0k*1%B-gAv+E_5Ch0KCS#;9cq?mgD)atozYhw|MZ;R(5e7CG{2)a#k|z3fOPWe5SBe z$0w~kr!a1GpSCWVo1dT6%0>*WQF+lokrn&1Gw$wEcu|Be{cP>%h`@4?o?q&D?^Z-- zI-IWkh7H?|e2O~enH@|5kyqYy&+d2yL{)pg49!gTqH5U2@v{ow991KB}QK!9#gkv0ui#tWk4)=F( zHUb{#D)*4Yth6%MKSOGc?T-T#zJQ&tzqaGdrh9CKK9hPVWn-o zw_M!s+nI*7zkqYHJfG;BH#qOO!%Us}qRvD}sp)h9o(Wj--GaKG2mvrQ(KNk6Ap|fG z6A6s9>?Cwsgi#vX_%c*(wQz`F%0XYrJRac1F72sVq*d*0wL042ykF*SbofU^431U^apVc7&rPe)IxPTQ$WWj)|NUhH56gY&$Af4|7kYS|;j)~m`Z+p!KQ1nAA+{LO zXaqlX@3uq#1P46{=0Rf2M7P-rG}e9W75ZktIOur^mo-9VE@vB4K=yoAHEStG4G6~= z!il-|@893Q0N-3&v6B@NtzPM5aUk9jM>j`cdth1ViFlaxfTEm(YF}Bp($7OzE)}7#9;IgZpHv8RHh1`@1vDNrqIOEw>O4{hq;N$ye1hd5v8T4H-q>K z)}FiAJ`tLu0{1T0ALYjDlnifpmA5g_`jRAlG|2upjP7PqX1_^Ged4Eyd6IxpabFH$ zf#GZ&7LI$GqKFuUt}zPm*DTi2ERi6F-QM7VRsvS6-ziB+Vk?B@s0tmod4IVy+J2F~ zzP@7msmS_R=@(!Mk-=1r6iwm?3=DwrXbqbj%Q-!ld{D;i(bFN-I=_vCt!}1a8sTB4 z*f4iu0$XDKLwfBaA*T_4s+sXNi+|md;Z5EKa^4JyOCBBS323n8u)_lK6mFSfR$7GJ zm%uuK>VPXk_(aNN2){sNbB4H>m>8&&3%DIl?8<4tOj-@QM zG|;CJqXlrCORyj#M(-icd3k~TY*He6s|ti8Zj`8N(4^11S2+d9(}a?KHMznm8o=Dl zahute@@6yla)CGHw#_os*X+aGH{0$J-|zcwzH~a}?Z43%HiU-EhayhBY6gJT(9fUB zpkIBqK2!fo(Ala)Y=`=(V1_}V>_cM|h?-oGQ#`iVH|1SyUOeeg!g`iu=UV*JCZXt@ zI3bgZsN{bK4bmU@+9o8nO`MvT1W7p606)1Y+3PI9(b7XP=6(Fs4yJ}rJ@5{bC%Keb z#h%a_gz@J@hyL*zmLfqVNHM;-lyHncMSJ816&(?r?~Q~nVxzSVb8&P`Mu9@FSG)Bl zZY4g5lGgdg=mjHaYH;SChbuPQ&)A2sS#!d`3{?6fUQdj5Lx?mX3FsAULnXjlm6M;J zg7*(NL?CwYVZHsSiGfN?zjo9m+NgK{u@R(6yB3O%mM)HH3UKQ{iaQ#|8td!1@&1G6 z2Nsg@=8D%y9rF~wBhe1v5G6#y5m$-%gcuJ#eoQ*^rQ@eE=rnIzr}FOEJCtHqhT>|| z53&N+Y*sRGQ*zTL)|RHXj}OKFCh_dH2CNV*edj5vYC^uy@9i1Y!Ti_!ZfC0}6tCz9T+kCbCqa2#*;!Aw3h zKK?3qanLL^^};xuTvMH{>?P@DpGS{T6^I&7wQOtbts7n0dDisp{Sxj7Dnc6MW_H}N zJsuAX4t@C&K^&NjXM&F6BkDlD;4-ZBBs5uy*rpK{_!2(}$!0%>hU8%`#2h+ADWklg@inD3Stvs9zq^)>rwGR;1F*N&TO|ktCg5IZ?1lm3BUgrzoxK5- zm2?^N4I1_q`eIn+2eEZjeffeBGjQxN-=b&HgP4Hh8z#HE4+v*I+goEI6ruXx_a226 zglH(xh-@P62Bv+&^^b||;iE^xxD{xz?#0LNClT-*wq&f+1bliRjL!jEwt%46RpEJS zm(j;rLFwtMS!6BG`;_O@Wr*)R_W@lf0bxZQv-m)Os^(|EQd3b`Dt<-l?Eo(k^anLS z1W3fe%{X%LklUM%byn4zp(m~46ZOQH(I|9V`&|7=)|Vy7Y{xC<=3-LD4iJlAN&4!8kdxm1uQS{J4b&pc^~`8y=krAXWRO;x7qji z6ADf5g98I`7IyKczcLN5B`dE*n_3|F2$p;es1fAw3!XGX@BkAYum?m0A#tm&B1O~~ zD-q2b_QNKpST*)-Te;^-0X`oqC~YeHN_Ob^@x`z3&qjHeU*VTFuXzMMg8mA^Ktd#S zVTw*N;JSs~9CA^Aa0TKGDjr#1!w{rzZI?j<=S19{NJj(e{mg>2$ zWe?IDT@;!tJ$XI%uh7}YY~r^20dFDOI}(*32N;PbMEk_BfNG7VnjW$XBDtGj4!Jg? zUmVKFDko-oELI}!5M{U;F5(*SPDJt#(c>crI062hNBd6gLPv#nY@#EBCC+_@7J4Zl z-<&5;7E;nm11W}h$P-aKY{$$iK?2p{1c*je*|kqN7?e<9;D%s2i9v0dX;I`P&L@X6 zy$U(>#IfU8dpN$25e~FF(`D7@k!z73LEK54HHsh%CX{Hbmb*|M(0W;^E7kh0-=*OS z^Z6jl3{@RtQPTI5`5p(FNl8oRkeDP&%;1e+h z5t{+NG2!+h=v?Hw0bM_hl|~pdNyJP|NZ%3aiF=Jl_5c~TXeu#w5y&@q2Udh0AV;@7 zLuUuxVw4PZ{#@o{9%9o>Rz9*{zkzMz?!oUyPQt56O}&N$_*?%i`g2Z3R3HV=h=Tk% z?^W6|@!EX@s9ECT;+JsYat?d(9esd~gGfx7y8jhcL{D~RX1@my9xUv`p}!dZnZ#ZC zJTOdv*I90)ZAP^sR8h#1gKw1-5A*_uOax=Fuv=ZS!&E{<$5`e^;p*_-Ck1uZ*3uq4 zc){jAz5oP5x1T$BphE0c0PnlQDgay@6q{W(V>*WfK;v^^+#@^Lo?KAo>ysmfKDa?4 zH=~T&j9Jwm0~nfCB8A4=j5L76Q;ORo5juI_6UKMDU7d*)o6bRWGW1T2oSebl10=d*=*y`HTUCq+J55KVq+vCiCqs+-3CKK70jli`(Hcs0*D z9ldSYL39cP8V3rt32SBr8ae@F)0VmWz;6T78L`Ey%Z7AHZ zd%U|mU4)kp(>swCi(!$7PKMo`FFOv6B=Huar-$_XKHhe~(nJbXB8|@kN4p8UumS$lfZ&e z#KUa*sv~&N4HG)FG2Eb-@jloO*X+cX!7Mn2cVf#Rv{0-7&ds2I13fmd@x5f@`Qf%r z^aK4^RLyoO=2dE0T9HWRx&yLMgQmdI0lDDiCKqf>)MXCtXtxdQ1E z5Aux-kngvgJJ5dKrRDq6bF_W!3HD#8@*f>+uPRtIw^;eL!}Al_kHfZf?eE%Zs>gSC zt|*(hF^|5n(>HGL;NTGw3H$>Y@ptuRVwm0^piMfRqJ9;(7KbLV0$T9<``6CV#pODh zf)H+6!uPQJ3obn(>yu==JY!0@y_4pcE6F^G*^9M`8KXTa8^6BLt~&qxoA+5!D6X?# zS|b0ZWoWc)+risjW~vIHBPrlDU05yw?D>9jo`^LvM_T@$KS#k?H+OXS&CJ;E*+xag z>%v)JZfQyB9a(j2S|)1;38sb3M~i5LaWXhKi$88o4H+KPc%*@fdBye}qalHovjsi5xE^c1oZbA8_t)Bd%Er!x zxg?9YpB50XetgiE$)%{{Y+7n$6Y>fQ z5*~gWqU)jTBm+}3#!*Qg3mrSoASW9Md6$fgcEntyzV|-cKkl(M8(ob5 zhi)AYj@2J@&-y!K=UlUgP97A0rE_&USkqr!wNJywefR^*#$0^A#A4raldR!VxobS4 zy>W!t#9}^9KtuGaz)y$3fB*!{`P>cz1>{GY_UJhPIOhbwH@m+)`RY3r{YwqDMO#-Dad z>{Q^M=dX8Nkdh2KXt&j1Ujk%6eiXYUcJ5T$gKPOe{YI@uoj*cG(O=yhv56tv7C-1} zh4DB2Uc(E61BS@I_vD>-b8`!M`t-2NqmU{xPk_E5mv4yVCv~`>DkmJTnVX;c&6~Fk zisZ5AS()$cvRy^h13T$rc<*l46L{(uyob(SB8DFMO7_+9rpBU?y9MUZxQdXzMkq1q zULHRa`sLb*7bA_?CP=1xm7Y%aS3Pm26eoWZCn&j@S)b z9gor1S>ch7JkI4VD=Q;**+*v&0=*e|EZ={(b5a4Bb$E4k_4LNdzT(orST|w}+Tq9W z@d%TMiLLKNrUYLGj-a!%&k71o6eS5<=mbAozWFbTlzF zl^VpA-k*PPz!M$tGt=Lk#BJ%iS)l=%qxVE-t zub9M#t2_LJNI@lX{tdH`Z7G7xKOE>>IIsc`Gv>sLso*0F$GPq5@J*G%m{MEJ1;C$1 zA?mwmNMLVLi$Acx#EcB$yJ#O_QJ~)BNA|%}9e0$#|CyMW_QPKtzldDc10o`J^|uOb zn8|aV)oSusv%DWH^1J)l0c*0%&(E_J*dke>sXcgLY*V13sT6UbgGN-8#llY`wik~Lww(3(W2bVk{62@car47 zl6PQCT~|Z4x;scG&n}*>{K7(_chi3G@$V+CPu@MQciA`EcH!^RT+RJHC5fYk)?FaL z2HLpB};K^Y@TX1{i?Y>mQKc*UIQVXP~@y?;Z~QI{Kmk z=e}n)n24t3>rVB*(YBKImbH^G|BJVb>8MgzJIOOqJ45!XW&XrgzXM&9^M~D}IP!bC zc$fH?0%%jzmxCBSAboDeCbeyurc#>g)2p7Y4-_b1{=D04W0Bm!yNxJX{vSyH^Jo8W dzp31yaG$xqPmN)`pM?J@DO^00NjARwzX10w8{7Z@ literal 0 HcmV?d00001