From 0f1b74f77e73d05e77557d5d0b5b8873e9433671 Mon Sep 17 00:00:00 2001 From: Michele-Alberti <62114934+Michele-Alberti@users.noreply.github.com> Date: Sat, 27 Jan 2024 15:05:44 +0100 Subject: [PATCH 1/6] ci: update github actions and move docker user name to vars --- .github/workflows/ci_cd.yaml | 29 +++++++++++++++-------------- .github/workflows/manual_build.yaml | 14 +++++++------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci_cd.yaml b/.github/workflows/ci_cd.yaml index c8037e7..45bd45d 100644 --- a/.github/workflows/ci_cd.yaml +++ b/.github/workflows/ci_cd.yaml @@ -24,7 +24,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.x" - name: Install pypa/build @@ -36,7 +36,7 @@ jobs: - name: Build a binary wheel and a source tarball run: python3 -m build - name: Store the distribution packages - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: python-package-distributions path: dist/ @@ -58,7 +58,7 @@ jobs: steps: - name: Download all the dists - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: python-package-distributions path: dist/ @@ -74,6 +74,7 @@ jobs: environment: name: release + url: https://github.com/Michele-Alberti/data-lunch/releases permissions: contents: write # IMPORTANT: mandatory for making GitHub Releases @@ -81,7 +82,7 @@ jobs: steps: - name: Download all the dists - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: python-package-distributions path: dist/ @@ -127,22 +128,22 @@ jobs: with: ref: main - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} + username: ${{ vars.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Build and push - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v5 with: context: ./ file: ./docker/web/Dockerfile.web builder: ${{ steps.buildx.outputs.name }} push: true - tags: ${{ secrets.DOCKER_HUB_USERNAME }}/data-lunch-app:stable - cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME }}/data-lunch-app:buildcache - cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME }}/data-lunch-app:buildcache,mode=max + tags: ${{ vars.DOCKER_HUB_USERNAME }}/data-lunch-app:stable + cache-from: type=registry,ref=${{ vars.DOCKER_HUB_USERNAME }}/data-lunch-app:buildcache + cache-to: type=registry,ref=${{ vars.DOCKER_HUB_USERNAME }}/data-lunch-app:buildcache,mode=max # If on development just publish to TestPyPI # Build the package for TestPyPI @@ -157,7 +158,7 @@ jobs: with: fetch-depth: 0 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.x" - name: Install pypa/build @@ -174,7 +175,7 @@ jobs: - name: Build a binary wheel and a source tarball run: python3 -m build - name: Store the distribution packages - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: python-package-distributions path: dist/ @@ -194,7 +195,7 @@ jobs: steps: - name: Download all the dists - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: python-package-distributions path: dist/ diff --git a/.github/workflows/manual_build.yaml b/.github/workflows/manual_build.yaml index e66e2dc..7750b3e 100755 --- a/.github/workflows/manual_build.yaml +++ b/.github/workflows/manual_build.yaml @@ -27,19 +27,19 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} + username: ${{ vars.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Build and push - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v5 with: context: ./ file: ./docker/web/Dockerfile.web builder: ${{ steps.buildx.outputs.name }} push: true - tags: ${{ secrets.DOCKER_HUB_USERNAME }}/data-lunch-app:${{ github.event.inputs.tag }} - cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME }}/data-lunch-app:buildcache - cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_USERNAME }}/data-lunch-app:buildcache,mode=max + tags: ${{ vars.DOCKER_HUB_USERNAME }}/data-lunch-app:${{ github.event.inputs.tag }} + cache-from: type=registry,ref=${{ vars.DOCKER_HUB_USERNAME }}/data-lunch-app:buildcache + cache-to: type=registry,ref=${{ vars.DOCKER_HUB_USERNAME }}/data-lunch-app:buildcache,mode=max From ca7fe95e8e376935fdc9a1b8f8a33569bfda94ac Mon Sep 17 00:00:00 2001 From: Michele-Alberti <62114934+Michele-Alberti@users.noreply.github.com> Date: Sun, 4 Feb 2024 16:39:38 +0100 Subject: [PATCH 2/6] build(makefile): fix error in docker-up-build dependencies and package-install rule --- makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/makefile b/makefile index f3321a9..d09949a 100755 --- a/makefile +++ b/makefile @@ -66,6 +66,7 @@ help: @echo -e " ${WHITE} interrogate :${NC} runs interrogate to check code quality" @echo -e " ${WHITE} package-build :${NC} build python package" @echo -e " ${WHITE} package-publish :${NC} publish python package to PyPI" + @echo -e " ${WHITE} package-install :${NC} install package with pip from PyPI (use only in a test env)" @echo -e " ${WHITE} package-test-publish:${NC} publish python package to TestPyPI" @echo -e " ${WHITE} package-test-install:${NC} install package with pip from TestPyPI (use only in a test env)" @echo -e " ${WHITE} pre-commit-run :${NC} runs pre-commit hooks" @@ -225,7 +226,7 @@ docker-up: check-dialect fi; @echo -e "${GREEN}done${NC}" -docker-up-build: check-dialect build +docker-up-build: check-dialect docker-build @echo -e "${YELLOW}start docker compose system${NC}" if [[ ${PANEL_ENV} == "production" ]] ; then \ docker compose -p ${PROJECTNAME} \ @@ -303,7 +304,7 @@ package-publish: twine upload --repository dlunch dist/* @echo -e "${GREEN}done${NC}" -package-test-install: +package-install: @echo -e "${YELLOW}install package from PyPI${NC}" pip install dlunch @echo -e "${GREEN}done${NC}" From 9caf07075d74f862136025477b127b66b4e3af0b Mon Sep 17 00:00:00 2001 From: Michele-Alberti <62114934+Michele-Alberti@users.noreply.github.com> Date: Sun, 4 Feb 2024 16:44:25 +0100 Subject: [PATCH 3/6] feat: add a banner shown when no menu is available add a check in reload_menu (core.py) on menu dataframe emptiness to hide or show proper widgets add also a type declaration in df_list_by_lunch_time (core.py) for resulting dataframe to avoid future issues with pandas --- dlunch/__init__.py | 3 +- dlunch/conf/panel/gui/default.yaml | 6 ++++ dlunch/core.py | 19 +++++++++++ dlunch/gui.py | 50 ++++++++++++++++++++++++----- dlunch/static/images/no_menu.jpg | Bin 0 -> 2189685 bytes 5 files changed, 69 insertions(+), 9 deletions(-) create mode 100644 dlunch/static/images/no_menu.jpg diff --git a/dlunch/__init__.py b/dlunch/__init__.py index 196f662..b71b36a 100755 --- a/dlunch/__init__.py +++ b/dlunch/__init__.py @@ -90,8 +90,9 @@ def create_app(config: DictConfig) -> pn.Template: # Build dashboard (the header object is used if defined) app.header.append(gi.header_row) app.sidebar.append(gi.sidebar_tabs) + app.main.append(gi.no_menu_col) app.main.append(gi.guest_override_alert) - app.main.append(gi.no_more_order_text) + app.main.append(gi.no_more_order_alert) app.main.append(gi.main_header_row) app.main.append(gi.quote) app.main.append(pn.Spacer(height=15)) diff --git a/dlunch/conf/panel/gui/default.yaml b/dlunch/conf/panel/gui/default.yaml index 214a0f4..c7a9ab9 100644 --- a/dlunch/conf/panel/gui/default.yaml +++ b/dlunch/conf/panel/gui/default.yaml @@ -9,6 +9,12 @@ logo_filename: logo.png logo_static_dir: images logo_path: ${panel.gui.logo_static_dir}/${panel.gui.logo_filename} +# IMAGES +# No menu +no_menu_image_static_dir: images +no_menu_image_filename: no_menu.jpg +no_menu_image_path: ${panel.gui.no_menu_image_static_dir}/${panel.gui.no_menu_image_filename} + # CSS FILES css_static_dir: css css_files: diff --git a/dlunch/core.py b/dlunch/core.py index 2b67f7f..cb222f7 100644 --- a/dlunch/core.py +++ b/dlunch/core.py @@ -356,6 +356,24 @@ def reload_menu( gi.dataframe.hidden_columns = [] gi.dataframe.disabled = False + # If menu is empty show banner image, otherwise show menu + if df.empty: + gi.no_menu_col.visible = True + gi.main_header_row.visible = False + gi.quote.visible = False + gi.menu_flexbox.visible = False + gi.buttons_flexbox.visible = False + gi.results_divider.visible = False + gi.res_col.visible = False + else: + gi.no_menu_col.visible = False + gi.main_header_row.visible = True + gi.quote.visible = True + gi.menu_flexbox.visible = True + gi.buttons_flexbox.visible = True + gi.results_divider.visible = True + gi.res_col.visible = True + log.debug("menu reloaded") # Load results @@ -847,6 +865,7 @@ def df_list_by_lunch_time( def clean_up_table(config, df_in): # Add columns of totals df = df_in.copy() + df = df.astype(object) # Avoid mixed types (float and notes str) df[config.panel.gui.total_column_name] = df.sum(axis=1) if config.panel.drop_unused_menu_items: df = df[df[config.panel.gui.total_column_name] > 0] diff --git a/dlunch/gui.py b/dlunch/gui.py index 5ec7123..edb43b5 100644 --- a/dlunch/gui.py +++ b/dlunch/gui.py @@ -273,7 +273,7 @@ def reload_on_guest_override_callback( styles={"text-align": "center"}, ) # "no more order" message - self.no_more_order_text = pn.pane.HTML( + self.no_more_order_alert = pn.pane.HTML( """
%F!RMvm1aLBymXsxcJbK&S`F^$yfMV9N%r(U B^ww$B89KM2zv?WWw$K2xm4hope}mH6qQXBKtbmrEqrBXbDwvmN$J|} _O=wc4cw2LHi7@_90Y%M4BpTB35^Qa=y-~Hym;JQd q%C37r9Z*bq4~m?gL2fo1^QGqr m|_P6Dq9?hGbbt0QT1eGq9Eh zl48jPz9OP*B1q%k63jm!TF%Y3p=UPOO{_aTAF+__Cw~!Oca^PYF#D6m{u|jRk7}mu zwy(zTRdL|_?1-rah);ud0xGBnUI7r4s~Y2f2vG)L!#|q!(w6m&H^xMDN!%XYdcNFO zcChAcG%2f!DbEOOgx>J*+Yi3NcpSDD3wP$j>!#2WHQU4xgY=bjyCDhm{P>?9wCNeM zQZGxtlCM=4+ju%rzWhjIEA-BAVAoXpDX>DMIDSzedx9=xp<-q+*TZ~sq27~djj%Mm z<}z`H30-8V=k}3w>4j{+@{8{llX!@urA*>i3jasTNQy_Mn>RbZN&6K3J*6Vh9{WmF z@Z2l3RN+4gX*1#v{-%*&J>Tg3CUN$PSWwR2WVO@lL~@52#tFu)4fEY3n7(VlJY~r@ zj}|(geDXBPpkrFe5$L*fHg6)*muD$>&Xu7hs>L83#;pByw|=8I;FV`)Cq#ypcs{7p z?To*D+gEjQ^jWVIB%-x1Xo?Blx eTp%g+4a4#WNB4IO>Xrv z?M@q1`Yh8dM;uQ)=VP7N&?MAgxwvajRu^IE*=OQ;@F~!=&l=*}I84@*M$aipV2Hx6 zFi#K Mry1(ZuMBrBg#GnJ>>+bA(mxHbuF !t1c*)V;UD*KB!u_=~6Tkt=dpWeOlbhcq-fZyNaxr-S;x_{;4gE;VKTipHT zzmPWxXGEo&pX-lt>s5Ky`1k!mK3ID)vZDV2kZJF}+i;~hKZRu$cfE&bLLx5^xCtHO zlD=`!s>Ca+qs{+rv|*<+@4_eVt;Up(jH}WVO1pJgaxdMfm<9aEG!?(jx7_4VlC=aY z`NnJWW;TvUfOfagn#iIgPnS7ufs~xc%=ePbNTkFZ2fwjCI+=C4Bx0|my? ?$$z4H*o#qqSKYPieiKaEf!U7wt?DO?US)XR|(ozy0d-lX%DY z2ig;Y?RTIDf!5oN9d!(vq{qpfFLBZK%L6?f__(n*!ExbuYmVyig;(VJV2C{(nU}M{ zeIDOH>MgW@*`?Wh%b>_jv2hO^p$LohpQzP)9efJVlLHM^SlzVHsJB<6eB?rjU--rC zt*2zrdYktHZ1@H0t5XCaYh4|@li^%{{P%QkzNyE}rCC9BqpFgu+gNR@EC@9#xP^bK zQBSCorL1Ni)U`1fc&NE^GfncZH+%C{Y}*xj>W~ Q|hI1Bi=X8g{+ JL(RLfXU0xhd zuGK#isauvc XFKT-;RedDo1 zw@kjP6N#Y_V&XArH`5=+q+Nmkz(S#vG8bbYBXU}tV4=y;NAaR2(RUs>?~J;WX8iF^ zc$(;s0hS}Gy#oB0jO~FvY`1%DZJ0ebakg672@%CV0D>v|?yx)3%La 7z0meNiEI)454LTn z2 TK4T$po<)6`eA(frlAf1n($SFxm`MDSMH zZ#=O4K+&Jgf&ge~+vv7#{~TQbBzec;jGQH_yJnKROzEVKaZ8*L61#b)9K9=8qGgXZ z0F|A1*7bgrRgdK}w+8Vg)&LmjA7BRA>m)(v4ZPHNv&cyXfoXlk6IkmTp!`=>d$}sI ztLINOSht}Xio2mp>0S2e*f%a_+7q2^3XkTYn-Ou%S?P3xydH2S#0SPVZzcD1+oMYS z@*l~}z?1JaIkkV8z&~3MI2&QW40*T8_2P3SNdZIpFOVX;bgHfBX}{g~edU||Gwg2l zlY|-_j4h+M9K@Stf9p9JT9o&w{$!`$?JY6jah}~n{$NH`WV5?xuY+hxc*i9iy*rhr zuK>KzJ!=Piv+fl2al&9Q21u1}=r`|BhkWG2?(W&{f8kgeA-sYFQ1z(JtQTmgABu?2 zIj? 6gZ$~2j+@d-W<2t0)(GeIW&-zc!>!0 z6e@=`$}F47-9gr33$e6? CKE`?(4`809RwacaCM%x=v2zdLB@=%i*Yc=T>RHXVvqIKHY%`Qld{GOmN1X zrnMiVi>^i(NP57xzkC5`)O*gK2c}Q|GKGJ#AaJ);ki`3gtML^z1dnUWRpjTbCnT#o zr!B8ITk$cKzX}%{P2iTW5Mz8NT5)E;NhJ2g=Chl;XP(CzG+%ifM6z$1eDgEwnVtna z&2yeR1=HSv{eUxoU&p(;r-Pk5!%6mj0}>1cjx=DwZ%*4Uj8l+rJLG717(O>Ps^Cd6 zl=VQh+sUQ8eezA!JA_?cVVJS~WbWN^i2qsB8LiQ$Q+nx4AP+*u<&E6cr(>Tc;Q}-k zR~wx-jh38)Z&q;aI2EUQHln^eas@R0siGv3Q@TZYPdn9@yU$tOD)E4Af4r8bQ0t8= z5RSwPyP-l~c^tGU&e=VDkE5>j>;=yg0BfpMUiJrwxXSh)orbG@0#J(S066tp3b3CW zkYUIf=}HN2^7;bVynbUyRCU71{Twdg0U$pD3SO4gip2yJr2Fj|7-Oj1V pNXlYW~$!11B&Lq=4$aM&Emif>(b !K#IuhAz8NEuMzl8m835Gd#oNs2;MRrrq$XG+0yY41S3VL^sw4qGCOkNA zy&q)U%~uCj6hQUQB*wr4)izQ|2gkWhc9W3v=~3^|%qQ1UH#GFRQq6dFu05EXgB$QM z&OF*B(XI_-UZ+~2*QQ;7TGKu6Xd3H%Pb2v0!jJA_QMF ojA?3dv1yEXn zQG(Uqx%*yeGjYUn?0M>L$~scD)CPr?1o+caJE@Q01wRDFdnp!=Vb1{d0fxYMIzYWF z4F)z;3cC#8C#}#QI7zIjH*Dew7W;?pJ%2CTYE3 FlP`4%iISe`(bm1vm-Ynk9fxzccpYB&fWs(KX#3eHOheI2fqYY zitr(}O9L#M3dPN8_<*i9I5PTnWwB(`h=_dmC@hHR{GO2ufxaIu%#T1i73YKD>1Xo9 z^R3D%S^%IZ@_W!i477H2lJ 8rmiVWwZN4HTkrgVy{&QNsuL%12^QOKzJ)6XLT z++Tfw;_cVYmY{1}ojC^Ovn&E)IBNdX(O ymmuxi?9eTj?dAuxPKVzZoICi#y*6S z0yc&j%1z_Y!ALc*nqUm&B XrVQcwiql+=j!rai0}{MTHM7{I{xKn{T>fboD!@+u3;xZ$4l6M3Ors z5s6!H=CQkB&2ifE;Q2q(m 0BKE!CqKTfKUb#H19}dv1T=?vlLH-}2~;h%Eh7NaS(HxtqkqMWi?f znXRm+j!EFGUw42~QRqH7EIz(n+1Ia`KY5Ui0T@ K|^AxgSMAO9W}+&1`9%HM0S(FN+~v-|XOF?!JiY&O0L^XpCy7 z)<*(EAWz1*GI7&|{euT63EWQ|C*5w{C=J3ZyNF8#6=tZmt&GU3m&R#yF0tV!_4}tK zqd0l6`IYm*sl%|XV?=3ykh|fwjm|znVrLBoGF)DMs5})t>a8^XNM4Ron}4docuIDU z-LAZHb?qZgy)`iC0}xAndm1_6U%-QxCv(64GKXjW!LCz7%BO7-&{kjb`ljv+@F5!F z>jJ?WHU3DN>{2%{o(`M*s ;>RgwsY2(KiUgR150VYlTOw^BWV-uI&pxRwTY(A zLk=0&02UfJ@3N|NTokq0C@0#1i@4~~TZfnvA{;h(rzfZ;zIe^JN9Gt9Xkg3hZu^$~ z)08v-IAj48;rZBRS1`4R1J?#%%hOCPqPK9Q1-ZhW465EJ#JySYWH8?oGL0 Z>T_FX{YH}Q+MWBh*Nr?kitoz7t?uiW8|^#^L6jv|?9$U}WCaC1 zfMk=K;j!zz9aRnRJF~*ep;9wNC!(xOdWCdWw>Zv=U@xP>{M9A8oEk7lVg Jq>awiG~Acz?=k(9MsZ&TnR$tpf8}?>+#3 zvWvg8KN8>b^2ggeogre0!y`Hs8&bq-Jm%ZV7~z{u;W&3>`i#JE^AQMf#o65@pY(~O z)~C>}_&dYVvUe(PnDe~|i)Y*IUf3k=&3!WIDX?FyulbaeR&$)M2T;K|{;+7Q`~CJ+ zfJi~uCj@NCEnd#X|6&a8JBE_nXFC7%3Ke18l|}@Px`tEK!7HLq)4&GikOiktOzh;Z zoLK!GbMWIsTac4GPS6dW2!B(dEp@Idps0&RsOPzI%1(xb1qlG-lb HoIg2 zn2vg5_v>J=lYx UI%3(6|#fhi5_3J&;PgiR)a-kdSKNKL{s12XrWgrqfKnY?Y@ z#q*xoR6&R`4hbLy48ZV31F*{VqNLWLJILF4hPf?7)Ct^Dd&a!acstFt_LJIs#@mJs zZVwo6+-8R5dt8j)c<{!}(CW-cIH*d)1;;45TfRU%!;K#B-3qS rGC!jY=u?+ zU2$Bm!WMJ-v`_wjmvM#Z#A^ImXI~zTAQqC9vuBqMyK~}A+;aqQneN*r;vPZB0pq!> zb+|Ou@)Y(s=AC7G^ZD_#t>86U ?l8!|T_+0avRI0GPgtk6nw#b5`sr=5lg z9Gk=VW$V*c5$|`<3zjTkHzDvYu!#w=Q~>d+Rgr=rbve3c zc*vU{1yZ`D?s $x<&x?V0ws+W}$Hur6VX9NL|8O|!n1#T! z-9cj%;Sh X3D;?Y?{`0+-_uo8!p-EmlF= zQuofie0vG3Xb(&?P!GO&1u2;bssj%eKHX8wW#zN(gGbRV#))9usywGQUDkaa72|FC zL|k_!r9;YDQ1c5UYErBzv|r?X@?=a*^@q LM! I?
~H_dx0elyLG44g2?Mlayn4fCxIPx(UR}WMdRxCzb+ta zAqGCqt$7AY@?W2kdHH$p#8-SFluL7n$aFtTfg?kPR$3SyI09a1BqBCKU{*@E!XgKb zIjP;@U*VTHr!X$GRrv |ZV$6&C!{4Y~c+%xY{CryWuUV9{)?yryK;YMg_EhNr<% zW*bUO6*~_hEGo=~n+Uo6o>g9TKX-AsijeygQile|<}!eQD_MfQIFZ~1jCXA~f&Bfz z-4=3HcFXf!0!Y7z`=SzxuMTt$kN}FwamX`Zd0_<*i_`!phhi}v><0k$$t?^d?F-Py z=#J}BpRmdg$hZmL;+E*#Wzy^weA$vP6q??Wz72wUV@l4HpOh9|@8%_1ur?#RO<&*L z0x3~$ Ail>jCiYV 0qzXV8rNw zh2#q(hA_!XMvB7oDLWZqSKdH%*Ncj(>gAS)yWpkA+@%XM)(LG#Tpyq6N<*M^K|JtI z>>9We;O7X8LrQ$c@I)66SBbbuTTT+u_AtTS=ok#&I9oZK-817~SmgN31CCpzYe#=m z(8*PLnO37o02t24@EvAD-PNFvrm>cu>n(zyn4bE$Ojxh-RM9q|t9JzYm|s}n&yfxs zZd?IStb4=T8Tv9#qWp255q+ZtU^++4u5{cYM8XzZ+pan~?Yf-T0qix*0U9}gf{YJ~ z=Kiy9>J6k;U`%No)6hkq-OhW2zgIp{;wP0`ogSu+>ysW**?l=8ijd<_S6vH0X<=IE zCB2}<$CTpiV{bbQKop{)J9BQzdU|WOR`f^VCkvTY ^=aNSojn)UjrJMp7w@ Ilh%VE!w-(6=ZY?MrVKuvTzYfd|t9Jpb-eS8M(#X}LxH3wX6NTaK_!71&qw=?< zar{&hJa%8r16J8KnI=wxvMJgT(hv@SQQ+N|n~7u0o&Od%FM}XFw2{RD{jAMVV&wD` z`_8?~tODQ-F-x`+uKgmeW 5!Xq~$EBalGTTL?oaU^L+aD&PoBre%ae#99~(1PswgpE __4{>HP%KKX1 zM)1sz`!C75;vl&xN25<@&Wh=*3IW_ZkC-*q0n55oq4s?uu$QMvuH)cvO1>fER>`m% zFue7Ete)9`0irs6_j7=cm Dg=Pa+Ha4Yvh6Y&f}&(={@aA@8-UrkV4zwvGs; |drZi-Z+ZYBh%f1f ze1X=~fR9@u^iE8QGB}Bb=GANtz;4`OA2`Sm99{T8GfUME?B*QMei{Z7-@|YZOYl{5 z{*bw9=5_g_Y)4FYbfB$j1rQ6k&x-|=4{15~i9`bYHu6J2D)lXX8{AADJZ0|FtenEW z+V_Kp?>QvoKq?Nm*w0M!zfTQ{()-$xm4|SSpN&v6Z(BK`)t~_Tl;Z!V$9@uT@dtRc zJIg-^M)hk0iT~T#M(aoj*6IgNrhV}M`mO$mJPGIy6B@AtSoEY18W+Qu4RnJI{u7$l z;13w>*@3wt-Uil-P)>OHnsIlo>p;WCo0%7drbhIq6l9nb0|YAXRqSn_o93o V?cP=v%0aCs5WSe03gf`xE8C~z zkfOs{k}rqcEX*W5mK0iPkSm$H@X6>(sjN yJqN(; zu>6E_dgM~z0WDG9?@a(m412X5!Im5>7hwM#jN8Xx7c6z1XX*-A=3Z${$GO*+ny2+? zQyf1hm}yT}v!FD0w8@5f@cGadG{`c*^SVJ`e_1pk9u^|_0?>!kJozbe9f1(hUEs4P zO1pC&21cfBX NtwdlhF0M|LfO*?@T ze>%SK3nZO;D<*PY- !QtK88sh>?Y(R@w<3e!N_Wet|XOP4jd-mCV{%Z{8755qO@=YDx_U#R+ zZbRht@@Ijg1n@vOGR^?!L0wd5!5T5uHHN_hRI{Klxn 2e?Q3XnkS*Jb89QHW*%vtWZaY~g6Y{A*0#RX zNw^5&OpRf;V=+8rt;PiuRCY{x0g>r{|H2R4y1C%`;vxK>8${L|Bq`owSKePr? X!C^@^d;*oR@Me z-x*$y87(6PZD@yGYURF|w6t-n%mRuE&Vr(FJ)_YfRGD@Co9)ThA3L>_z^{i9%Cgq| z?m53sVD(D6GSkwZkyXJ+5E cGAX&wY5|``W>g0VqvEX@M- xfXxp%>fYgnV>HxB6_G%VqZ zLEv>+*gXDp+>)l_R%zJ87tAUKZO^C~o_IlDnsQ#WkBF-!2O>_UVC~_vVU&3CIB9 ($DS>zqQD6N?)9Rrqt}$czVRfWi2!FuSHRg3#Tsq#%yG?9 z7%kGN2Q5wz+i<0m8UT*0ZH67(l}|K01P*|Jh?@UsFaIAvm;r0c0;pki4$f_`y;uC5 zE$*L7jzE9pCK`aj1Z^L>6wHTMFqewl!L`ca^f?IHGoEZYargp3W8EY~=*G~=$t9=x zK8fu_ZzSATd@ZkZ(v9P@*PP+IRk(B#tmB32nO1?)N=cBFl!$4~V4|{(Z(HT|2=7{B zitzd5t`5uF1G%U425w=>{!?*N3P&C|A9yk>afF=f3*>j>pi)H}v_!KWy%hm8lSk7t zT<{JeuQxjJ_k^5~cxhL$Eh!sXlTl2g<*Y?1IQ7vG_%94CNw_}ow95n5uV<&fT41i~ z4b)k<8v~I5eWD+rPh4g_pI^dusSn!ztiBEyj)ry#tUE9IDn&9-Zb`%UOmiM%9+--I z1P=w2bVa=3Umz+5^WmsefFls$-Cfw-6>h m{fdVYe!Pv%Q8z)(-cmTLIeOQ0e<14Hj z34oO&+c4ib_%FiOxtW2dZwkDlsL12iJ(o=T^2RA+MS}XBHXhX+jjzeG5~GnzLrorQ z+&ztNbhNCNJg;-y;BnpPX!+On{I^0l=lUOH*<+eJ)RX$0n#T?~5jDR ITsHFtnu&aW|*HF81Vsl_^dHE;0}RL%{Y0h82O$ZQ#q#(#@8S`6|A4tqv?+yrX1s zhT2!` xG#EzLl%+iVP?6GfkNU|gOXBq z^@4sC4+xTJzf1zKV0Aw_2*{>{r-z~{F?~l)>553KN?}A^ zC$~`?CXBIlZson7-%U%3e2C9ksETx7mU+Mkqu7&$h+q3%5E$e4#=q~T5Z5hA19Uhv z533S+vgWYysjc4`ILQQ)#_`<$tbk|TOUY`*gVW4Zw=2z #xTapdU0)y)AX26j z%NfT3Ds7$nN0`KM@QI3&eU)!h4Rl-!J;ZyDGSt|YY0ZW1s4Znm>kH0AL&S_Ul`r1i z5V!BFLrI@*P{Os$UmLW8l`e~Ao$kn4h?)N-(RN87leakTXZz>)U%eybmbiJ^UP{~J zR|%|IIefNaEAh`5$PtFO?kTAAi>q2} s_nC-9l3i%=dD#M?*4rQy_E z9=I<<1-PW}SZp=f`nja_`{+^_T^FO~1GpSR%^VXUP2WWS>MeP*yPGQ2ua;iDayYf_ zuWb0&Eho56xyB@8XqrJ{F$vdPuhi=#a`scJR;bO3qM5eElwSxCfnx@sIWS2auXH HxFgTD5H>`fL4c|fY<&2L712--i^xUQAXF7j*Mm4xuTNcnp8 zCRajYb;_!bB$(b1&RI_E)S;;t??_s~A`E>I^t{p%RC#YxV3sz}@VPiYg)fD2B^>|` zxM7R6Hm*#$i%tT0w+7)URpQ*sM4w>)4}?3DN7nU{H#tmOqN-Pa9(SK?{p&lh|DZX~ z3w^FehlwtBmZMhtVzZKe_BslSsR6F6)FBHA8gQODphXe{6rK~nDOCa$m)Al6Xh&~o z34$CaK#*fXcM^g)X(sEq4t8$mUN*zS6M&MGm8xFbV&)YEh)X3EW+=9;h{mcEX1Nh! zpFX~v6rO{D-+R)^VL#Qcax_E_9aU}N6K)7E@L*DwiA~P(Vm}%q7nSvY%zbwtm4EyH zeGXDtX;89K(I840nSCTlQXiFMme3H{Tc;tFGE#($7KP00S!6^c*|Y4d?A_;g-DeT{ zK2P-gp6CAK-0yK+*Zn@c&-;Fl>w3M)VD-+aKE}rjD>zXIibfFB?`Y*6v5(yMCN6Sz zCvxJAp~sNuZt;D2aq;NG4ccyxUg|X^apFUcq%tF4T$PW!RI8n6c2eC@EK8fTVW44i zape!wTS)>ar=*}1jS4034jM^V3L&T~lhA0lu60|kX@RV9+s+L9W8eep#9g-Z-pII~ zo(QRkbjNrlNctOp=)#c-7IsGwMjKlGkg)|cg;Gmw(bcZNSr#y1efqnCl%-h6HIzk1 zJkkyaoIoh@)k8Joj3xNSYNg4wzndVq0-Rgbpq|9GbI9nnt%(7cpi$!c2;K-P&62km ztaA&RD+q60tcOY@dV*NQpbESF7h<>y36M|HD6>#wdP$>efS%O-&pa_^$1J~%Ho&G| z0!-_D$)vIpq|jIr8XReLak~9eTQp_+3Uce|onJS!uXm5^{Ej1+5fUp)L(XCZK6VN2 zw4Is{&5-%c?2Dj8hh**FRQeByGm1|D@oUB`%hUmv_vDP&Mt&yOU}B41{z1fg)wB@~ z9~Wnpwj#l#!Eui|vcT^qreQ|z3Gy#w1k6Yr?87O%0*`f8qQ`mwc&ziI9_#4Ed&L( zb<+^RfPC1puKEE&AEtf>s0WI{<<(DdyE)!n8vi8Nez18P&9ixBZHF|mfOK0Kn_$~~ zF &E9k zZPsz{(r9HaF3u%CWNit}pz;Uq69}DHeoVunVU2CES{=uE=l|y96<0d8)ahCJ{jsg_ zHZLcdS6a55#=$5-d-K`NVd`>*>3;3d3L4?{pZ2Vi-*2hg*i`i7)Ja7{3l!Unbg&4U z3)R3?LldF+1UiHOmW kssBXLH_cH zTHT1RV^jr=XX;;hZ_(n#7UqdAbQws1>DsWUOf&5%(S@WoTCExUU*M})m&|5)>?m&5 zSGkblTy$<_Z5Fu()6P@m7x59HzGr(-YKzcA-}T}7lcI8Lmu9K{n+3eU5=MRFSr7CI zp{mYnVp)EG9tyfB?!_8Ld4vcO+CVV3=alM!{9LoE@|?XfOHPY{lWQkLu1ljQiJ6um zIm;;D_7_V%`f3}Y_!uRlLGh_eobGX(bQ%E>;c6g4&HQRjdsP1`_@|t5QMrgCh13F^ zTQtDArIX>@5X_=>^VP1&EotI}CsP!v+vO|QEA$EA5M-UC%IMefE(>gPgjv5i6d(-# zfoe3$UFIK=#4k+-tSVJ#;UBo}ebK84oBxaX543<_LS|_9kJ~S1oBMpu@?NQ^+5>V8 z#V3w{IR6z+*1f@Gs7-4GO14kCA4R5k%EDoT8(jXnl0N+Y9d*P9HLf|3Y%gkm3W^J$;0 z1H(Lvi6salZ}nw)y;T{=8l~H9(HxtTNfisb({yh;*0FZO!i@X@Z46_@h4#?ES(YgF z^U(8Xo{_X7*D(AQ=<;^h$qZT7%Nuhy&1#HeV;-ZYp^tV0S>*Q;fU$R(;`(z*CY1La z-AU*`vAJMXpnQ~`@c|!eytHV2tXu0%mt^x0qUGVW6Qethz$T{tHo4{O!)`bBnuyz8 z?Re+VuMA @)80_Ww_0j1Wln2hP1>6;iN@Ozf`ZSLNDAfK`! K*fgC6bt#`@5v$!l z$aWZFRL3~LBSM<+C`4{3;lzP`P3_^;_yTJ4RpnpnV)dq<;>T 4d$lx=wo}l4~#n1D35n zO43}VSMHXmTQ$<(DRsZ}a=q#Ju7Q98&RP2ZRsjtF`QhI5#nTAO0T_z3-|3UJX|F*O zquaC_^;Aq*LIfTsT3aX3>3!9K4t}gi{lX@wK~EJ zyWW6zJ*__g)=#S8M?*@_y TsPX1UE`Kp&Fwtcb>jX2Zu0>Z=*|+Qc%%U^+HnrGu@+Gk1b>p zH|wj=>3Agi33*#JkZLeI =GG+v9A-}q?5+;w<`MTcS z!CQ6y`+=_V`^H9k;tIoC?0= Nws_v-7s94wHXo$URxrSJ6%7RmUF9 z+RLbJLnlB1Rwk48#4lG};q3K3s_W^4HtoaLLqye|qI`=es}n^q!&Vl%o}HIsFDY@i zh4+^B2NIryVW{sA_y@5sFe{hFmu!uSKzBCMI(B>+pVV99W_@_8HNA^s|Cy3iV^?W| z+FoZ66cOs86Gi9rqFqhs 659EH)#-G8u5U zRccSjr;FL?8bYi6ByosJN%!S9dDR-nEn3bC4$CM--cx%qLyMG!0KXSNr3(OnFt-@R zV*uI&LM1hga8wiBw!`ffSD#9);8Jp%BzWhedf CwOqS4&-(lTxp_x8Dbm%y!I zvUB yBQ(8|K;ZrW`vJ5LI!(%;}Jj~=4so1K3L}(DOiKO-`zVuDghx;1FIOu zTC-esB6w3G$hX8pJ37r)_lJHWl1bBKFFJm~Wh~!+Rj+=9j`kWEXSSry%HSLhxugBn zF0WizmA;+js$FN?fVL1W-tzV aP+)x|B; z&Vu#%)~xQGNRggpXQ}P|QKLa#t@H2ER|@{Zq%5mfb~jstTYP2@KR^IGT*3Clm2@$e zT;|0QMP}aU%qvchq?fnt^fiq@>oB%YUNwK}v}bLNOHK`{_&hRG0iQ=5aBzD*rSD@p z+?5w4;rlhzOXfLRvv{vCcSS<@GyCvIS48&?Px)6 6w)8G~@lkD^c^oXZTN&bJ7^-Ba7AEN>$Ooj1&uBL7N{_j-uzh`A6>5mMS# zF8ZlI UioH!m4#T|0E`#<83F6_ _rZh-QP7pdLOg5OMDSny z8cu*pce(+E)71fJ3*eALqf;Lw+Z!xjbw8}eX+J-aG>-SA#E%r1OAjc99*bkEtMY0w zEwRtxLH!FxHDGzMRNT&YTl_h_a)U6ISE;V5uU*euGS=>E+5Wt)St`YW>sww9;j2Ip zYEz-q<$I!R9T~`lrkC$j_I$d3gThn#_N3IJ%H|iOpA?mZf&S~r9XEphLG*DzPFTur zZt{UCclzIB-f5a_Nm*c~Cj=|Z+sYqM#3*Pm^4&<8ZAmsRA?>XFc9vqzKw>3jhr)y8 z!#zigqfTI{79Bb)vd<9Fvh-nlG^Wx_`en|rgY_-H!d4{M+A@BEScA1a-5OEjKV0&| z$XK~yhB%ttG$_Uj-ahsOpv=m&ElFlR`0f jG-X#JLy%M2A-%KNbhPqh%p-)fr#xEOzv7mU01DJwKqZhOaYnwIGr`Cl)0$M? z@AauS+%yPTDmJ1%W@w?7-ug1EKJH7)$J5Q#m-;UzsFvNKa}1_9rGPpE39T5o++RRw z293+ciOh__<%;_*A()#g-yF{Rrj@isec1j?zkM;h`v{k_Zt;o_@n$i{_mtH_$(j}S z>vXqmeN3ue&>cJK{J=K*5A8HAq$S3~xySQQ&bF{9Mn0v?yP)PQu}V);NjL7u lke%T zHttp(qLoe6tFEkUPO3E?t#4n3Fy^ZSid1UjpSu<_#y>h->F$EhVT4*ODz%*2w-}Tm z$lvFOR(Df+B}JJ~QJdyxrX`QI-mR9#%b~~H*~tn!V@LVkCT_|KgF>xA>%=<2PGa=} zZ|SF-HI1XC7ieYS>R67b@_}P>w1dTXhjCRVPd_LA8EpPLEJXt%?YJ8^nObLH-oESH z)8|@R=AsmaEQ!$1GT1QLpMe*g^+9t{6KJ051lKfGk?YnJ(X1c%z&iLT^cap@NJ{*D zK2GEZp#woYWQ>^#9=8=bN#E^;Wo8i z(W;;YuvwVn4ASt `v}FN^19l?i)^6d#N#JEXc;6P{#84 zU6ZkZ?>F pNB%g-Eshr4=Qhw zvtrMnx4c-^ZSD!jRa&;1FdpsWT&iK{0OuFFql$lBhS|MlfDGNO4QG2ODrkZgp60H2 zb^v+v{aNeXr{25>SDDe9-aZ`qNMw=PI7idDgHiY|27c}VedA%i**)L*jzbTDgZyM_ zhEi9rO-}Yk{mtoVO*m8sE{tp3@mH2FBjUUFmEsRB^(tCl-EX%b)GqK7tK{f=DaLAn zR{ntc`cW&-J9jS4VJS{m?agGi3q^WHTjIe0l?V3{UwIyG9`YNS#PX$ot`ZW_2BpOt z)(cB(=fSKo|I=qF&t|J>`*+iAQnxtBHpQCi-$1&16LvqEEGy|0TCerM%h)LQ;%DAn zC9WoXr&*I%uMk_S7Ps2x`RTUs>0kD+6A5YHn=2o9;7mA+ z%Cs}iCncS|Ky9>oT*VvC)zIFVU8{Xm|4T`O9(CFo>mTf|YQAMGYxCdhB3J81blx-@ zS@RI(c_n-9i6d_!?{~PYPu#!|A#%*=W~6YUSnQYQzTFPaYk4^O{On``+Hh$54h4_! zY_#9gzaP@rBS96-k~~jRJEEbE(nPBBaq-TZltyh2Eiy%9Gw6)tZSy+SdsIy#Ew&K% z^Jp&CZ*M8g^*mK`|4SKaFHil(IJa^2cQn1w3$rz&C@g-ifB8Z!|E50g=;|TbIkpz? zW+)sT{u;Z;wrgA(x`9N__k$ga9MOYS{ab~Uxe^1v`022`e4RN_lKaSw!g$x3x@Kd0 zcJsH;IT5UHS&TvCfR=f9|38RrSVm<<2C~s2bkNnS)~5M=kLU>gnbSTn043=f=xqqd zKpf}$z>Q0#u*3_k$H+XdYRqLPuo|dO0D?UMbp)@=wO#$%8kgiFFhi<( fwh}kJ!K&In%U x1l1+`e06-Ex}XnO_;t{{n*H1CAMnBr|E7hdG;vQxD>#3l_4s`h zL%UfD8Z`X8%%C^8FhF)+V;(KIKIo-+jNbkSNo&Q;sY;Qd+2PY)Z68WuVOGuXahU3J z+244 9>A %}ZcHSrH3In>^hx5KQQt@|nL z!lJ*0JLiNe8r?d3dp1@y{!os%-4>sLEIK*P(ByqIaU~8}ZZDb1)u)zs-0L*_!4T?w z^qPR*HwK(x;Q6{SV6Th_{fRHqSkdN_j5=G*BXrIjc!6&=6 `%GL6(RQFNoWb% zP)9|ZN78r$zIuTlto|R&eK{9s Z$i_r^nrqRY~=XM^KiB1K8O_Uos zlz<=rp!En~wcx~HxEE+e<&N|9?s}-B22^f&?{p-)x2~}~9b*)p$040*WCw^lhTyZ* z;_~RAJA}+D3>&@28-Cqjpj}gRjJn0 {LktJsuRsS5)W1m>t{XcuEaLq za^KN9 U{YEi#G5673WaBPjDz5&L6V$UE;EARIVyh-@DX25r%Z}W;*_SJO~ z(rBUJXPru|U5VOgdZE|LCy5s6+6%Sv2lW3MI$8Hipl<3HPI5u &`!kW6xx`^m2oHFl;+x$#;Vcv2T2f$K-YJ>B zX--kJ5b$?19xpjrU1TWp`Ms*kGmU=`R=n^@Ys0G$3Z1@rU?vhj)=Mn_b%FP{88mNy zEflU}2fIJx{)YhAGmxGsywS)%=)4_m)OJsuMAj?W*@Q?fu29`;_av|1NK}zV#KF~R z5?q~xxYRa%Uv9nr=8V=c9TE<{CbPpf!y|X%VBFuX8RgbmHy`Ik6UDHYsMvGq`yV#c z+&hh*ZX<_8Kcs0kBx%pEGq3Fb4wl0I$sD+d{btZXrB(SFJIl{!=O@%>ha{eb?@Mzd zQ{%OkqFrqLWx~I4=HCF*5+VEYyKh`8Qu{$Db3iG>oO7lKDUYH%(yrT5Et=Y}oaB=V zb%gjDV1#f&86hCP#+`p_Tn0&r^7xJ(;6*osDbUW5HFg)v5Wwx)0Vs~O$MX>g*s(=f z0_i7e)E^9pZyyRVjxQ3F01yU+=CeZz>w2{TJ<k6yl9 1~O;lgTv`_(Eno+AzRpvd|{m zSwO=5ON$1t)&dOtDOFx?kuveH!@n>`XNOC>alO|*qy0(pBKFLlG!>1gV ^_;Rn6L zdc6}~PNX`~HSp#6+M;f13r(TD0bDH8qou6@#<4~Jd08vH Mi6()8an_3mPVo4 zz!MU7pRuZ&F8zIr=Z5Pg4LgX`&H-L2lq0Iu<|9ITnJQl>?SjpQdkkv@Jl9A5+%WnS z+loGFud}bKw*v+}x*uNedlPvRt+ak^bpugU#3pC0!p;XH+$V%L5J}}II%@CUvh{J^ zh5OmuymHIC9Nq@q&X||(A625!7zf}sfnV4ZA3o-wF&1}?TAP|-OVn5WBULHXQs=rt z{2fXnP3;)$YtC)y>*W`_%U6Ex<=iId#H+P`7&UD>On1Lr_XjwB!6bC<3zJ=%yOL+i zNfa&?b`HT&mGE9#=f2XNy Y|AN6}{=j)D|4}83oJozc)UQl3-VvWPfx+Zk^Ozg;+e+65@XGl* zfQhX?V3#V?k&y8VJqKIcLLHfSpN|sVU&gd#ttSJ2A&9V^4QHU0AJUY0hVs}0mM{)4 zNqPBt$75q!H%bWHe!g4@*7v0An#^)XkGt(S*r9Vy0}Qwt6GS5C@X9xPo>tuwcg<4J z-G+VlZcyOnc||sFCKEKq#_*5`+2KTUe4C!B;JXHrHNu_oVMiRyNRbtriJ@Dxa&@MM zH9eFvm1E=ViU(BkEdhY=!~~s~L{ES{!$ 8#UH_UAco8x=ys+i_J|7JGz93?sWg8S~2={XeIR1(a*6^XCo zy05&J+B;F|Hts*SK7wR=TS)On>#r?o(^Xfie>qYV9q~&@DA+}5_zr%pO}nLug!cri zD4wf5m4f<3b(FKpPw|NHRC9sk(h9{FZe9hlCdoz{CaLH?cScGx87e$QVd;U}T7Haa z&5NQe=s)Ruo>rp}(+axmut6u34CGY(f_6cV!CTU^wYV*V@HpZp2K%)g%PFUa_BDPvc~l=aRSbV&v{B(x>#T_amh;UrJB9LbDfqva94 zRBR;owqA#;#MQf8QH@7(qUZjZ69puV8TVf0sMd+#_JIuBJvlv-I?cn b(j z2Hjl-UXv`sXk)71lqAB+vl&H?4S4+c_MJ{?gmHEFo;x`jFMvzc0M75F$>#70h~jBX zVA5=RlaFp6a~AgUh{fR$S!;)g#WEi1m%YCs%toO QHvFDLeygV|s%d_6Qt) z)9 T0vEkysMy zhl|p#4f%XWVmpKq3^}}`hAGyu t(#7nX;*C zT(oXPzkWW2*70+T`Z}JMj9jbi>_>=(dk xr zBLt}P9iKV`v(k>co{8pQn%*ux@%TLy*PA7UI&6IMdtU$`-eD5`E{Aw1Th6C#u(2ej z7k?I%#FDq|8y$kUGeb25llj?n%gs2AG#{Ln@wZ18x^YCSYZRQ@qIr0dr$1z#X)R-u zh!d5Z^VI&6YFJTkrwi%YbD3llK6|HUmqp5iG}6!~<$ibd`>c5N*YMx$U(0Q|>VT?~ zao}8P2tv26rUT$_V1t!+(RkaCR$w7R@Z6HW?lE#96^*c}{q` *x)ap6`wQtoS^k3f62u)Wqx( z?+0LfI`x!dZk^u?Bm{G;yYZvdw#)k`1}}|ammq(uG+A!B*{#U73t_&nOUb<4nmje+ zuIa88xFqoh#tW=kL{Z3-26B`CiwT#OQ&kZab2Wg^dnC%fJ2a#jDw#s#bk>M?ZXLn% z^n}Eko=#w|PP>hpOAq1j)BFeV{B*G}h2fK(b=k$B(4BM20SDUZXz4pS5|QXy=+Otp z%T p)1kMCHT4r4q+;SnbAl z*aa68S3(UWpu|q=m!FH70q1y#+Up|F#F4t&lwo8gi((v1h `WP5Z6S@%Ea=0sL_HHYCI1JmU( XDNdl`9cek1Fi zxaF0Ocfj}AwB*x9f>T%jilTkspSsm`PY{AJXcc}qw#3t^>LuFOc8Rern`#-OrdH@X zce~J`h)s#Fax~chSpV#cyr>gZ6E;X!@`aw)1C?obX$JpM#Tw&*9bxBW1Z3~~m9GI9 ze2i^Qh|v|x03694y;*5ABZqlmfHbLO-gl~24(`cY_vfwu2NkKV@h>kTI&c4MmWeGc zO)RMlhn7;@I+cER&HJoajc6p-hOO*G^B5;uKI;+}?;P#nAJY(FAOBv<|Ja8vaFz(Z z0JHLrZSL!HwHQFmYp*G1>Lacs7tbAegX+Y$#f@}Rcx7PE@n?U`y}f@_>1p)jBVgVT zto6Q)1ZNbWgn$!(zwKe50uEUfWb9pk2U`(YP84+WKA`p-B+i*R@$JBWP%M61; l8g?238 zl4SS4dUw_RdeUTj#_Tr0WS7#&k~G^_3qN`1%vZU-?FqI`$;YBUq*xxEtpX+Myk1Pa z%&R$L*i6BDx^7Y_+ul!?b52Qw@n(I(E!o=d=&78z&(}iBR|GjV(GN|4!w>FG;23-o z9D}8&={xQ1+h8Kui9?}P?K%^0-cjMa!gEjLmci2ugv_+Dw)PMl9xc6SXecz=rwjbR zQjeb4MkqZ-F!G@lI!692D*ktzB=!ok{dhFZbk30)_p4tvlU~A- `M` z-sRN3Upe@BYX-=#T4}rMO`=uQ;VE6+A2h+f{l3~$CG$)zy?w!}BW|9`e^zaAiym9} zByP4*bV4F|?MOd)^ FimTKIrRNJC_uc zf!|0L_>JI_23giLl{1;9qKgXf?hK&jXUn)ZDVZ*ShWLV~&}bdHheEn8#agbJ=-6d` zx*k!|YYW-PY&kT^Q~@Lod0KyE0`^S gxdLDfKB@Gnf4PH~S7?4F z#lGPE!$HlQpt?Wmg6Ef-?q}1iaP`?1JbgES)-LQ~PBHLp**2~BEzI0Pw6TJ|j)nw+ zl%LHgYsJ#GzxFf#L@LG%7wJxPfBoWkk5n@KzSKy|^PJ$_%t{N&d$pHCa&uz5D@h~I zbU8?`e?+ZAf9uTQZ5s4G_9C)ySR;*>fDJh;ohP4N*>`~1$CG!&l}}T}W@edRdT615 zs3-C9e$sH+UVss}vc cO(LL_=&{T zD4%fnyDz(ao^$||{50cV^g0(YJOF5>9_Na I@2Jd$}oYX2a?h6mT z?`|gEoGGOa>pE`V1RBF*f#7^mCh>QH!h@mIX~rmH Q %3rbm6j%7?X+`r(t||+Ef5{X#KjlBGg qa!LibNtL4jKuNM70v%8Qdxy*5 zB49WwMih|t#sJ}>u8?Ep{?o8@-e^xpdx_u!38+jftX%}thJe@xNKfykS$ns~j$S2E zR+AqA7_)#j*}=261hds6LG+;4+Z-$U?6u2t0}nKBThviy`ao4AR`mo9ukd+^)6H95 z-<|4L4NWFhhV<)&zVb=5BHKa}bS}5VLY$A`ekz pv1WPk#`XdySYh;{rJC&DW( zr?SN9OjNDc-FrW7I*!)8o@%6oW7hJ$mmNE#i5w%ZQieJ>-k21vHFs{+FF3?~HtRb< z_=4Tjob2J%tKufZ<9lX$Zmg-=*|~uw?BkT(`K8!imkN{{h)T>)`wwd!sfk}Xwf93d z4rir>zH)LN= IJxDe~nFAJ=5=(+}a*Bv8(_C!Y$fc5jvch5k8 zRVHo~L*9A_)dep{rg0SrT)P$UlxEYx=Ls#c_29m+NDS9J?%-^=ak&Z|FOkWJ@CaZU zV?8h4nc+74=uV-A%Wi?_D1eQG2s>F|HFOKU=^VqAOORZBT(+6ZmN@I4Y99svC42Ek z-|DH7d8Seub+xveNY7LIkE&sd-Ca5Ivu4?(a=mb6ZEeT&a W$>RVy_@&ZaA0S9q z88(upV3{V={B&)*qzT`d{7HK^ugAoRdBI}_HBStkMP{52j%@kAnE2H}&bP#a>tB8x zEdOa%lGxC!U|pLrySaTFp~WNZWo@`&ubb@>?5%Tev|<4w+RaK&33ez{ 8v_Y2j|JBbIiQg&KF8BwD$qKZ0`k%KM!)uKTF+pL{9;yn2* | zh$E^Z-9B_Q? $evfum=l@pR(<=#t~(+Bw7Wj+jmWA5>iVnob`Ry7rvNT z{=4~YWji*ASZn{T+J8j;7qH`usddpgu^B%-Qr^r~p)Nw?r!q9dRFyIjDgVfj?|t-+ zL%Zrr_v%*Gyd0P%1_jvS_X7g^|Na|#1?r2eoFWG|f*=;9mpy#_RbRl~YspPP_Xeic zO&|d7XTsoqw$m>7BkC3_6I_|a<-K^x-Upcq8-6SXE;2e`Gn~x5w_p9tTNPJcR$;ZJ zPEGFUoFdKX1{~fX7}?-TAUA0dCLI+|b#}%d%?b|_>dnI(yK)~+&5JrA%V-_M>_ zvRZzQ`L@>qcj7Dqp*>dJpD_NCyz(b~#cd;^sz3NTGf4S)-Z?b$%|{1!E_``B&*%T7 zw$h6)tDp46r)rkk4t=AZ{y!a zOSX83NF&%ajJdttG&8|Ip<|=5H<^E1zPD#)`|-qHBx^EJXw&O)acc^NRI6df^5Bm} z!Ha{tj^c>z$z}_Xa@k$GY 3`M^zSKrB)m`vuREt5yHB_92FmoZZY z&7VxXJ3+tVeu8S!77Gz&pq~q?B27ks)=m=6Q!S+uQS|5Kb~n$*k>2eDOAug%lHH&0 z&j>igsF*Ahe@ixXgqi)Cl3VM;>j 6rw0|muC1}XFxYUOY&Uu)2OVPMtmD_DUs}aOez<|Rr#p}pP z5$iYB@4s^d_-=@n) 8DU+E5Bqs`8-XLoK;6#9+=V z0uLJVz!M4KtNGCif$VLzEph>0zSR~+kZ@p0Zw3t0U9lI>bn2Fp8L^1wsbU`0No$X) zIQl*TCPp{?6P_>wvIW@T4&Y1$Y#Fq-n6#M%l3J5fd)#Z4MNI=KPrB <{&9i<2hh z=Xb}p>P>ji2+U9U4{K4Sbv?|sm^n%!nALUPI;+KJl-u|6wZ;qcvbxP^1U10d?P~S^ z2RSY}GAX%l^2S^3Gq@QtXqKtY)*K*KHN!46rVBHHm(Z%})WZZhfQ=uFOt>nK1+bOB zy|>=@Nqe#QE}j!3X@N_Co}${iwgAp
Y?EV0=2?gZqFCDUOx;UU;-vT@+z7*l%J?x_ChGfS#A z!f k*Hn7TizGgRygqu?G8J&BD?%%6~KaKQ-yV z^7~!eGaDX?-uLyMF+T>Dlo{WxJ665?Vck&m%nAAFPG6}9dBS%CL*FFTc*&0;x6dfl zb;y}i{IvEZ8pB?bga3v)`rkm0S5`by)Jpw~BUJK@v872|)lEbBO@LuH=taW!=}o`@ z|J9uz7CwMef^sBw8#r%A2@(&n?`QUp_w)PUegf;P6qCatRiH#B&?N4}Z_pU#fW3A% z1S|1o5Oo1y8?Er>hc^zouq9qkKO001tm1 ws?b1uj0$Qa+BD9 zT7D2zm$Gq}VW S$f_uOS)_6y@FbdA|*ViT7Fc>`n7(%M_-lNVjUz$$Zx0`Cn@OM+5+;7tnfV zn#N>DaMm7o!aE-RRJUZC>p9!f)}P7%!zs)CVDinc?OHBE`w_aU0S-34Lyu AZW`1 z0)q9vz00M59gc%z+g7z&d|X*o(@6w>hSOnT!{C6cf8F!*b#Hq&9M>Gw&kB3Ks-uT) zQ!jphjkr6KEVz>NP1@e(LobOXz}mqnpav{n;E=|(AyKcou-nP-xFm2sv!n)14Y7;k zI<&4oGn`r{6HRSPP!*$KvcQon&+ncFpq9PS((_aP!&--HW0?xy%reTGEWW95_~^`X z)|W&29}K_s&KPB~qM(a#$-^EO9ER7uw_n>Yx4UhoE`mHQHPBvmCJKJ7tUV_oK;a_% zABa+ve{b*MDh@WItkSvDQyahKCuJ=BmwG!H`L3YDhl*h8?QD$-?4DW^WqAi7G6!qp z$8&wG{mTGhvf>-XLw5G)os$gURU(a0E`>9E;Msw<&N_JO;E1LP?jO%X0A|NNG_Rl- zJvKI2Y^KB|x4t`9qR(1L*2^WvZ>k;p;#aTUy}wC%ssx`x*SB}%YWtqeDF3}IMa=sk zmM$l$|Bdq%23IayT9%VtxS3yKSz5r1^A)@Vm8L{{fM9a7Qs6WNtj}Z;ZzyBix4q?U z3~f^WM-gm)!lzETk6OFygvMr#zra>;JR9Z*u;o!)IQX)ulBw3lo@7onk^SD1rSFxn z^6QK}mS~ET$_e*%%WC{ie@(gq7$nLsL$;yrgOexXGggeg2d4J1WxFr+MFpeO&CGjS z&Z6it+sO{_Fs*5M0q=&uPZy&;QwRW{;N`$|RkhiX#0P+ mS{455DC_CM3LI-Mo8n&R!f!|*8xgVIdCWhI%uW)V>?#% zGS(!qZ9*|en?kAS%4mu-3J {)+>2y}A=Vuy7qxYWMrwV|8s zeFo0cVW61oZwO)Ti;&dGf0Z?FMLM2U8GI)f%qKB6bSk{UQu*+FbpN=HvdUhiQ&-+K z%ruN)u0J0(&dWKo99g0w6`y>eFN0h$`mNH>`E2DWH9=#m(guL}PeO?V9J6aPsJFbV zQ2hsKwe~vo4o8+JC4PxA3M)rP--MyXUYmB>9y#K7%bh0|I810sdW8FR8548o+ux`( z%eCBjUO2H#3<`pK2XbJ83%ly3@0{ipsdptUeRfBgP=3<7`;4u8Bkj#5t6{2gXK+Og zC_Ey9V3e+Sqqs=m>I#QHPdZ9S??Q+|-t*X7GC#*GP+=qe(jyzbXPBRE(t&W`XQc*I znkDeO1gH3|tW)iwir 8P=Y~7b zZOqr6X_ $!chk4JhmxI4T`Rr1 zI-bR3P8ASSdEzeP+`Y*Q8%}`9rfz%REZhH$0<4tRt+Tl~vmQ<5rSG_=?i+4a1rnB> zzM~~xopcz7QE)#GZ=BZ#m)d(yf;4u`GKG=W*7`u%BHgeLF?%^gyGEpES)sop{sLGv zKeh`!?b1}#L(v#b0*O-VjfeFaZZ!#P?0ans0lkqwD+AoX?sxCZDY}j}$@i_x`M5V0 zyp*wx>7UPte&eLLy9$Mry$$GS{12X1@;bfC;(EDs7u(R)=8xy1SN1a^2rF-Gc7WIi zHW6>Gi`)01QxBqjl1K9rX8T<55^4IrI849xozAw-C9ok G`?i_w&HUYU#cub%v6Q&1v<4% a zck-|sqGwa<_3?Lf{!_9`w|agZ9TA^>MhnZ77jnv^p&i4Vm-SjRN+P4uWU3`tg{M`T zgVq^Pf+^P!^1HDySjTCPmn$(+0^`VkWHh)f*5SwZRN=rXwue)i#1!@MT_cohc&i80 zv z&foU%_*1cED1zcRo-9^{=aPvxzayLmH-X!`Be;OM2alNd;1G7(yFVPfH-VEH-~EIo zfQdvjzkYl91;*P=%h28@>cjQp*hebvh*L0&whdmvsh-3p1k96~$A0?n?TXg?A~M^7 zSN(gR5dBu-&*-Pd|NEI$7TpR0f*Jq5!hcRODEwxe1B1$I+^k2)4YRcUXjCVbW2;Td zgeuQRc<$hNxR%{Wnk>#?H>6S6y-h@w6Nd4vLFInVFtAj|7$=N35M iBaxZu7AddcbVVB5TV@)Q7q^v+hUL}S6!G{AoW-GU8Hp3|S!Jj08cpVK!$z9b z4^JAJ1M49w4+T}Le&9kdPicFt (!-L@8bXV-I*!Z9>qY_Vt87++-1hj)Ol zw} +>svBG7hvg6Dh7y!O(CZW4MVpZAu!{OZ9QETx7xF& zMst@HQSq~Qs3fD|VDHI^p=)mSV>$VTQ@TVEOu4HK1@-%(I$IOUY*m*g6KWP>4e)p1 zXBSt1zeBb>JagvXjJV=K+$_}}z{ RzSS =A-$ib<9c+s);S~ zPnvC)iv8F_Eybs#3Q8I=jZ?YVtIE31(9%7)$V@7S0HnAMPt$Rm32_(avM%q0vVsW( z3q4`-5h12^QRdogzcf0Amvl+#$9i4Q3C5h5(k7%(P*>K?o2yU^#!9&>9(k-HL=lWm z wZYL*b+$tb`h;Jva7b- 2f+jtfkOoh7#hCCO70+@3)$ASU$BmPERpkCC2P{yX`kigd2bg5S~j56Mz1 z9(@-Rd9EXHw*AH3t!k&LJ2Hqh7`EJZ*Yq!BbO*hxqt71H8zE~@^!N{-jCe9N3fuSB zXgEF?b?vgQV|RMNTGm)2DfpNyPD=a&%@wLQnN=UOrBLv*;HQaK4ulgG6(Y0*Nfkjz zL&~d~j?L!Q01g5XeKx&4H2)x`c^~u^e@1azkEdO*+91)oUeHU&3h01 Bmb@&yt995vU&t`o;kY 7Bz1;xY11U?#M%q;(%d}3w#hPVF @Te*x&XTWf+-`qZHu z;YsAV%17{BvJr@OgiW_%#|J3GUGQr3NEkecY8%_Q)d0VhV^5~JtvIbwe^b7EXwmXY z1suSFOT)hKtHSJbiG%f zFZ8V1SHowk?iu@v6kv#zBFeFee;_Q7K3O{;JqzB)&ZP9td04PaMN#oknuD$jbE zAXIw0M)f7)?^^dX3n?|Ox7@Tg{dtAMEfMx-Gws8E`L)dD_Fiu72)uLl#vN%ONl;Ym z 3(RExNnc&X*CoV zmYf7OSSNrM1`tQ{YQLYqH0Iid@O`3j89z4={%G!_eBDZoyJwdFR$i<<9QN^lOXWWz zOqDkHuuhMIVXkTV;vbC~95okk2*M|9Q2UDT7N^wVS LnxAbf)cFzXzgbGTClyZ zK6soRdh~Lb3?4AH-F58Mr;=7M_0t7BBG>-vbHw+Q{V7M2j=GX0Fsog}tnRDTUlH_L ze~ZC(=7f<*fJsv%ji?JJ`S`i40!M)?f4Q$4qrKqW<*ROrImpkT3dB6y)_yo7isRnG zCRA|XOd1ocp|ufeO^Jzf{VB!Z69rLrZy|_=(5mNU`i*T{P6B?XOM$as``gWc?|B#j zhuVqLB3+rEzv|xM_X{8lJ>;)J%dx@ah+lRJxqz6Ugs7|LZibotd#2d`nWyNe^atz( z_>%waE2c@O!lc(he2#WtXxazvTf=@DrnJYCX5`aByFk2@a_OOMmF**A0NoU~gF8WO zsn7Wt+7u5Y^L8eSl|_h{jZMVJ+ZnDch!mos;2D@)JH$FML-?1togjz$PeT}gnsS?) zrQQ8cns;#seKPYa)`&glTP$C*NW==I3kI*?={h>B+gRGQYnZMj2;Mt}sY1?OW~9ep z8EEr{Bn5+ko5iHli0;-Iqx(m9;2jJG{~}@{F}p UlB^Gz+0TFV=OM z@#s~cLO`kRFA$yPSB{8U{aEVxVo;2+uq&~tnhDlJu=+-Wd}t3aU=_J~|8D kY&}B>)+0&(m9uHHs)7v zl3u~8ky4*$d0K6CYG?*tZ1uR5nr=F5RM3Ar|M0ZFym2({XZ0-x8V}lp1|P=bKBl(B z_kXD~MQk6xGt>0$_r3J9B+6gpDD&wUL C#_V(CQ-3&33LzQg<2xc=J? z+K%NW$p#3V1nti s3I3Yy!BI?tk7v*}6hw_eCa&E6=Nqq!LkMUhkvYfZx>z zxTH<_w#A5(xia7p)W^5&12hvK)SV^VyP$}<4%}IgO|ffvt+DyFa|LV=+jZ&|jpt3H zSZ!jKeB<}2DHvQm#7QogN8*13g_>>E5ta{`&k_yh`U*@b6DI;>;FpbLSF;`etGsi3 z;sss~n|Ya?D&Q5QnH5xmDpZHpT1w+9NFN%pmG|t~OZ-+LQX iX2BW2z_a%|!Q^6IzD<=@KkjSpPP5V9Cbzn}HO~tOFTb60e$tz63^4&* z0QUF^JoT4Vc nEWsBvetnXW z1~wMaXTT0Y8=QSrTX*H!HdURz%a8hHv03ozRIq3~E-`p_D3gIp$(Y)~f|Jl9@@Ho1 zKgf2PHuIU~$kyHn1Mwr(II`qC5?fv*@|Dk;E6l^tf>f9~%5)MR`Z;`>%L P@Xrs6)(Xq{7s z2OcP0^CSrIYq;(bdbs{jfiow*fN7Gc9^7WfGjf%) Za4^pm5rS_Mf}CdW_r5mZgCl0ix6Yt209_KL zeo#v;nooi za26}&FsmVqPB0J$eiDRaWXqeDxn-bu=c)Ylz3rX$B;HbP^Rzu zX>Thu11~+#(=GD7rlN!z{3n$I_ui*6aWA7TA=K9=<3(G7WnZou7$19jCzI^k6Se(?{oc>tk;b0)KPGjrdImJWKt zH0C7@x_~Ph7p`Mpatr+X!B?S3e{nEr*}v?>$s^Idlbce^?FQbex&X0n49ENPD-xr5 z I_>*6g@en)`(3M00R&+W`CLl((3_l!OIukK+RPpdx&BG9u z&$&EL?#g|6*wtJNz(8=kPPybx3|np!{mvQR9CJ%7+;B 8oIH|cRDH#!V>B_VXthZ=SwL+-%+8)N-wuF;{gWU0eK0=PzzBdT03Mfs zz?_D`G7sRDc0iXv5RqaHAboif6>KgWREeVk=oY|E2tWfC;i5{HjR#VPwC||vUXIBB zBksxrV(P;FokkPdyq1zyk}NGM6{=~xBwmu`RY;0dN}Fh}X{@15LbMY_`@Yv?X 7*X$IU) z#tBM3ZQy}Zkh%3fQq}HmJ8otK<4l6r0E!88GLGVhIbMRo7>3ObVAXhaw{&|nZZ;Ew zR=dmO)$NVUIpb-cf!|Ci`&Ek5`y}k6Wt7lh_*LaUhDS?BHa1j>Mx@TPa41dB CWvHGkhXCqrdH2-^MYS5G9!+2(n-=)sZ&nh~~jQ z)d-Ed6!Q!>10zIeK=Y~hZe1MBV0r)5d*0h;R!2Y(eCEdkffO)?NILUFsM^zLLxh{f z8i#RTDB;>VotJOfl?_bPfgy12L$ZFgoCdn535|nYZQJZjCwar=36J)Jk7G3lo= b$vS zR#c~~T2cuPWP=bV;M4M=MJw#$?n+%-8c3UlbJc+eu%Il022B6 9jg zyER9IT5<^(#M%g-fkqWh$F7Y(F4rWOU|v64!t8xg=Zn?mM)@uK*IVemWyxm84>4z5 z#lC+q8}%D;)``PO8EDLJX#O!3#39xAZY{n!)(;YspamPFoVrbXp(V^xs_I!8S&3b* zK9|;$gpp0bhLNR2;%t|yyLzY4BXT*(RArJCUA3(s3RD|3H^OAMffI`Cje{M-N}H!1 z^QMLqwPvnze&?FEtTpphwRB_{(!W1?HkK@+^G {2xqlp63kI3gU$*(v_S zzKlrlffMM@H}5_$Ri~;~@PSmAb0iN91{FNe8IpPQFMvt+1IH3efny0-42Q5nE0>)X zQI~v0taTi}`$)A8VbZ=sEIU+SRv|%N=)Q!|p~G(`RF>iU;xbCpmUtfkBc!CU4){!~ zZ#(}v0XF_KpU95f23E4efAKsmxXQ$>V5^0IX8+65Qu_z|#kWp?!}~@WZ7cV_&{+ZR z^95%kx$9%Kc8(5dj4JG1ulN^d?sL#InB{&`%Kd9qp=v%3Bm%tB=>KKE5fWClmE8HP zfe9=^0%c*AOV)TKc$QFsWRv820HX?N4?IhQ)pk!Z8h4Cd##^MH9Y_DuP}aYuMp&ja zxm3A(pmf|(L96_9P9RX+-D{jEo-i;L;w9m6`H+9r$E!)76_~o~a<4t&z{?vnTG|`( zl^A8Fg3m6sPS09}x9&e@u+* gplD uZHbJ-qx zq&++!t@rMfQ(A*=^KNijy`V%Mf~R|Q%gYpYA{3$Vb?mORB)>EQ_NxOg!1f}{>5&ge zxek1xIf-)(nF{g0VMW^?0*k1f2u^O!DXx)XkcN-A=r084&l1PfG`ZlD2Uk=)1cN3r zxS7(ChFphx*q9y|L$MQn?_a=i%AI`=rP5|OHl_vb!Y|u9pDYPH{6+J)A&UHSzTZ(x zZZ(ITA1!V*f>tE4udN9Vmx>hlSNlA)(aor-Je k0((O9Qgx%+Bf4<_hzimBHVy3%72Ze} z&2eWMDnqMWBUvNeh(}%Mtf>df9e02|%~oU=p+J6IH+Cm*?q?ZcOk3#pNwH<8&*N)| zRrceppgjl)*>F7so_Z#Ne2JD2%=b6$1TOD!8~bEe2|n@z_4VxWIkl~s6@-<({J=vT z*rv9f)DI>dYu!n516lPLxQ_%bMWe35o;Z5rP5~FUC+h;iVAm{{qG0vzad7&i6G)h_ zmhY+YVQ}ss*lZgRWqqQ`RUM*5x#~NsTNr{B5`;B>kphIgN_^0n>srxuPY1P|>-=!g z@#1r0>D9fU-H~D{%5>y488g7&?PF)aRzaqJ_fGHS(RWxN?RVAxvmQ+;Hr-B`HS9BH zK2u;3aJ>A9=MYnvb-IUwEVH#sgXWR#Gfg*I|1M9Hh*BJ^PSa!W8t%!h1tCKd^^&C7 zg^E$$gW 14hz1r1$i!b=nd-JTpn%9{zP==inS8O=z`>{)I zzv(8}>Al0m_RWJT99R1%(lct*;iaF&6EY_w)8M2)U;?MFzh+Vgli4^hunRl8R*o*m zK@@{}U=#i!_}m|`$=avjisX?^N5n?Ubb&iEmw;BwB(or}3Hv>8db(_%3vi3eh2mY4 zCGxZ*X2x3(#KOfJ1UkN_z???5?Y_S!2-_&&QX0(C+OeD5@2U;7-6h94`qUR3CT}cK zO)m_-A(}9q>knF9+mZU_#HS@+5w~A#F+4G)Id%$yZdX)fbZLSn!Bp`h;{jh1gw9Xa zYJ!7||J^%{!flT$QRcs^{$KSFimHEgCjY}8i<{RHv$wB|nN)ufjf{&UZ9(}mC$4Kj ztlP=(nb|GCID4f>PZ?PSGFZF&VCWi)0{1|@YSK?juavOe)@R7BAN01JPCR~?*`XCf zwn4blgZ)hJ&bJBHD;o@+rU7g0B71RUz>-Z|4?Cr0mC&V!r>@)=@{+hqUV08~63sK? zeXz5L1f?m>GxS}d7Y>oS8<+(PI}vamo!!33&9F0umDYB^!{I@&UTA$mS28&BLu4on zb{it8YX8n;NBVH+`)8osmcliI*)lyoQDw$$1dpenF=|!>H%7Hu32rtYDH4_$Tfys& zBzZr=hi|ggZUhOCf6J^p;?9PH+9$9YW9ks}%0F4#KH)0_u}N)HIC+wULY%;6zTh^u z-a1R`x1z{c_g9}MrV9VFq2Ed!D2<%%yAu3tXSK|?`7O{emR_
OXGBE%%XaY;~U7V9}WFZ7`?H)`NUZ0qeY zSgJ2xPuc%{-5(9F1R}N17;KgtdQxC^jSs9)-sEB)Yz4?#vuhiHFCk8mCw{L |T<4y!CDCW5k)wWPD6C9f)kPp 3ie8Xjlyz-Gi1-~0&Yu|<=Ackd$YR1-mFX>@*~c= zqqaM}R1hDPYzNurMDaP%jA|orwAIS03eltr5+1Rk?owP`m(TsQS$e+}Mc97GP1b1q zE#3dDM3?zQ&(ms?k|Zl`PFskNYVOy0`p*Q^^v4ey-hwf;O!T&qp0P!w0cB_ZQzhLA zGs mdC+Cs5aPr|QnQv4}{zt*vh=&VP$B_MsD4 z9^%COIT<{mP?S`|N8nnq5({2F@W-eK&T=$u1g)@4AVf2%(JMnh$vE@@#5!@Piay&Q z&RDFy*}d9#=AlWEwZpf&ulY3!hXQ(inZ#fAr*V+5nMg~*x^NQW$+hZ&p-I19UlRTM zH+0IQdabgmIW{@`zRg8z(u!Y`zq-A3u5(FX8;A=zF^vQLoa&)|M`0Ry#oVTQSl(*| zsbmUzk^DUP`yvGdTlR KjsP5tJlkB?A3Rm)yVVRN7@*rlC>{BWj$vrR($< zYRf_v4u}X_2GC}yAhNqLR5%*W91~07UZ09IFo!fy?hp~jAw2+XP4VN`Y{L<;H2URz zQkg^YnIxLX{jDqT{x6VL*zNE8TiX9oi5|UQ#$K4!K5cG0$eh!)Qe_6k`v_t^I?2d^ zg3TS6^l=$EzH9X99;3`^Q8SvzFHRD>gEXr!fP-k(iz(c1+=ZKw{z`=T*fb MvT3E*tuKBgwo_`wh(@M>mOgh2MX%iouyoc1~q(7|bmG3X5Iub?LkGS7Q3Bky{OW zGG+JRq jq-C3k>|eWwqj7NQ#vNXJd{QyUM_tWFP*w_{3+mnucdu1>h>s$kg#m~ z<(=YqJD49)>r$Co3>jaU!uKv8ETR2B4}xyNV2P&X JgAubyXCNqv|7N{pr_ByX^#U!!yP z#9`cyu=Y#x3TW@!xCKlgw_b|nDx7H8Obw#*nuh2mOBF7Fo&scds$##O7PKUEXm#um z$r@59=NPuu=1||a1 k<#8P3q4?GY$Kr|~q} zqKIQs|Nhj@Rh^8Fhe)3)L4HLfHut1q0{js&%WRxv5v|g|5d^<_LA1K1%gXEN@ov2C zC>5%agD(nmO S<^B8ON%dkx~V9NJj#i1 zf0gBSdCFtdms !5 zdTMpB5Y{51{weD+km#PJ99ta&s>xI|ocX0EU3ZuVTqS UkPcm@t=e1jf-E3dYT|h7LYX=;sZP}CoNFr) zin8)pukSr3++swn`WrNB_1T~@;P3MPIM53n5qI9kKJPR#INzg7MEdC1@old_a~}@+ z+MEe>uNz)uNXZ;PZqtpENwu8y%yOdPUq+wufF|y~m-<4h>%hp@?*zoPw4A|ds9&+u zGVgNQCEIc%uGcoJRxV^p=C8X+s$U%})2KnkVUMtZ=~tqifPhv;yg@)elUWA3=ouns zql6=ZEAD-zuVkB|p;rA38Zp>44XxVR<4pXwe#63Vs?aG%XNnoM3VohmA9drOYSWuJ z$>s!zXsVA`ah7Y~4eiUg9{=DsLDjQ0HS+I77Q%lf$}!7QkM-ku+-&LM<1zvx%5BLl zD~ECFTkfO#&ANr%F$-wtd=|8esFONaIt13-Q3gik(XciKPNu^=fKU1$X)fEU@+RFS z0#Uh>%le1j9x)>RK1%IhrT)L(BVw;<$yG6C|3J+APrP%if9zDlwR4J%Ivw9&7_BDP zSUJ5(8U2VaSWT3@uIu$IWm@rn8&se8djpGzSDaIRYKeL)W{H0ximICUBHSaNeIgBP zVNm0mh7O~}Taz&JTR>fFmZ v?9uT@v zAS&)l1nWzFQrp?G>j?+7?(fia<#7{-gHq9$-% 6qr1|Zkw6yt=@^5^$4`yT@F^^W!7NKTsO`lIITu&=`86l zM3L)_Ci!1ZL*CrVIO#9r(@>MA&PL ?Ea{Iu|QjM%iF9919`LXYNrl290dXp z$mJhIn_pY!4-oR;K7p3>;O6VfC)p&o9VS9iRW^J2xilVs^`%z*9U5Vio|B?+5%)W~ zzpJx*vQO%n-JHi2&oYT*y|xp5WRg1#=1I8Watf?ped9Zo;L0Ig53|T&L&7Pe&b$>6 za;e$VwXPBG$^2iu+w|9rP85!H_q?pQ9#VJe-I-} #N+i%9;*E6t#zD|nCp(aJBW zua2p5)IMKaidk4Iy@rX|6)#UHWf_WdYd?<+3oMIev36q@n5~FF7L=b76~RI0L#yZ* zO-FuWb++p4I3kXld2-E@^Sc-rPK$n9cXL>_fM>RRb{r8E;jECbqWr>aCNaL`>K=TN z&%LQnFo{?Z<--!?zRRk)Eca-}W`~Vw1P~(0R^9p@x@+VCf&8x*+A8i1d+xcBa>swQ zwkUl;vrhTG-knzU3!~R2J%8J0);a~F5Q62(DOV(n*pO LpieUBDzF =~DD*rlwHKW{?6B%sa7Z{uRo=J)+2t^WdMzHKMG zvd{%?p)V9DUgdD6Z+Q2+CXJ7-;vTwVLKJ$mg8ynbI)y$-gw{rde0aMOl}sUCJi*`V zqn4=VGYu(1JLCuK8narIU(Ktn*Qrr#uur@K_akD*-misG7n17^z#^LU+Gs&-$(`A~ z27NY?ecjis_YS2Ibq3hG4eh$EIE{$pf4wg6P`(&{I>mc-5ADC&Tv&hiq`#zx-5iI? zP^mGf7S)eR4cHRc>@IB0nv9GeAIGS8*U3;I5e5mDIrU6z&W)hN+OHTf+zX`;FP>N) zEH!l zeg>v^l?;#l5)wW->A$O~b_@B8qtrbm+<@sHe9tzxGaj`MtXlcK@VUnxeIw6k#}ky` zvz?rnale*%?Vt)WWF#8*s?JfNBA4%5+5LK=khqKw^e0s^htx8!*2X=^Jj-hF%67w~ zF2U@wVf}Q2x(eC#xOr3gH31XWiuZk9eC6-fFu#@>1Vvxes1Tjo^9iM?*)3Ou%H_H} zUsAvsz1+M!>Uuaz $n00hlfD^=c+@s2cDhD>Y<+nd@wq7mB_x>~uV=e>`?=fSEK1d-4` zB6n&h75Z9X>Q4mjb9GmY4R==Z{0U<}wZTn~I>+b7%kfhnMNNq`dy!m?_bv1|uZ^SB zM6AhqpQak>17*3_Q%V+1vHi`}BT4r~@g-)o#~X|FwziP-ahOkgfp3w &D|znn2nTCFiI_)Wa|%ysXr2c%gqPpoBIAwnmb6l zRC%%OUFE^JpFX;X+1{ItJs&3sKt|6mqNY)|s{ZM{O0Bq-KBl-m+3N*0e~~nTw@Ff^ zW;A8+De|D~-&1F9Wl6`+r@BDT1M$3Wjg1d$izN@N%!Z8rYNp*W4Y@$+SAtyw)VA0V zTOWFbMRjPsB@Ih)Fzk nMiaHhc4v*Cl6!}|srief5joB_bQAdTb$;u j!P=$7dRPU)h~9>{rT%t-3svZ&sy`#gVWJz1r8@+a?d*(^$3x#?opj2|rgev6d`I zq&pduhyYtxs+2+uvS1mi+(xAT+-0|~JTUb~0y5RTG5+*p)9ycFZDAwJEnC6cJ@K>A z9oPs(`AXB~-19ozP~I}inkoUrjd2B~fP)hwRQ$z~h-6zY+mpHR*t?8Z#{yZ(!(Kn1 zRqiz(ywdjQls_oGL0}o1yw`YAJ%#w4LC^yIN>sG<-~dbNTjEXwM5?XsgxaRognDtq z<{m$zf5k)zkC&xd&YW0x&f0mnZn2O1a~x>+tpAXkP?7p`=zm2lmwM8$t3vf0VLa<6 z#x8W*(Ph{95nmIsWbNKp&n|~i>xfT72_?EEkDpTu7E4PEe+l!8d?`|Q{f>4;?n!jv zD6w#d^%2H?+0C45qKS_{&sV2jX)<6%YNjmoapKM|i#v@r8(TqmiW=sSRE2C&W@rhw zQ|At=2A^;Y%xA=p`8DOm@MrMA)Sn5go_ZeLLdr#d#@Yf_HVb`r)cRsHoVEalETVjo zr6cTb5>LG*3rTlG*kpm9(o5Jo+iwL#l-h Sml&)z_a>enuFJ#C7&<37D*G<3 zf=Dl4my&4_Q+$&28Y?R@{j2X@j+g;|k1%Xok?a1vU-FYL%= vRi-zBp APACt}+Q5q+g z=z^u=PFD>~#)#sD-lWXx9Czow;bLDHiuyFk+yCU+v*+O`j{AJ72S;t&(qKN)Fg0M* zOfcs!98CS8(Bq#V#G _}h3tc1%d=?;ZFWO*=)^-EE& zOiry1tc}gzP*K>YFqcjnme*u`*6|&MBAdw+dTrJ2rbIjjrWYEjTl-MhHHNOq`E?qM zWP}%9ISfnu?Tfg3AzS_!T4f9e^PyVdh$$J5Ar2x%VEyL{O_#Ha?T4Jk|J~^=!dd~% z3yXSiicva5xbze3s2p*ma`un?={wvSV)bxT@69wM<+`b~CSK#@$E&%hch&qh8fynn zxlB5S&$dPxr*DypsZ+~W3x(F57^CkSSSjC_MnWK5j6!Nci0vQ1qF?jbch_SaEL>pZ z2ihJjC)jSAhd%@ZA@&mkVfmHsF4(0(I?7o-Dh;X3i7+4GrFF?r2kkPN1yer+`H_M< zH;?%UKaBtOgKRO3 C*W7h(4j6$uG=zwihNGRQ83X3k(%O z=a-tQm8!X?J|vit=xCRHDmw9o1qWsHPD8e@>NeV3ge5d>5#^SMVdf8Bam0~&0({m* zo!g0j!Vs0clB?J|yT9@LL;lURNrt#th($-aWiEH#ENstvlZzRS=Yd3R#iFYZ*hN)5 z9bRx9>7wn=2?QR@PDMsw=9E!0DJo**m4=YiG9!;4RLhoe%Z14_ds1tYX&W&ggwNvy zjx@mF9cQ;J->loU>k(P{