From 217f5afc32ac6fdc9d5df3e56816a098d5a2d42f Mon Sep 17 00:00:00 2001 From: Arjun Vijayvargiya <118442213+arjunvijaygoogle@users.noreply.github.com> Date: Tue, 28 Oct 2025 19:26:04 +0530 Subject: [PATCH] OAS MCP Tools Weaver (#1608) * Adding the tool for OAS MCP Tool Weaver * updating the licences * Adding to exclusion list --- helpers/exclusion_list.txt | 1 + tools/oas-mcp-tools-weaver/README.md | 92 ++++ tools/oas-mcp-tools-weaver/architecture.png | Bin 0 -> 482686 bytes .../oas-mcp-tools-weaver/mcpserver/Dockerfile | 45 ++ .../oas-mcp-tools-weaver/mcpserver/README.md | 41 ++ .../mcpserver/architecture_diagram.png | Bin 0 -> 82001 bytes tools/oas-mcp-tools-weaver/mcpserver/mvnw | 295 ++++++++++++ tools/oas-mcp-tools-weaver/mcpserver/mvnw.cmd | 202 ++++++++ tools/oas-mcp-tools-weaver/mcpserver/pom.xml | 110 +++++ .../mcpserver/McpserverApplication.java | 27 ++ .../OASSchemaProcessorConfiguration.java | 79 +++ .../configuration/PromptsConfiguration.java | 38 ++ .../configuration/RestAPIConfiguration.java | 45 ++ .../configuration/ToolsConfiguration.java | 54 +++ .../mcpserver/processor/OASSchemaHandler.java | 60 +++ .../processor/keywords/AllOfHandler.java | 52 ++ .../processor/keywords/AnyOfHandler.java | 52 ++ .../processor/keywords/IKeywordHandler.java | 22 + .../processor/keywords/OneOfHandler.java | 52 ++ ...ynamicPromptTemplateExamplesGenerator.java | 163 +++++++ .../DynamicOpenApiToolCallbackProvider.java | 438 +++++++++++++++++ .../src/main/resources/application.yaml | 21 + .../src/main/resources/openapi/petStore.yaml | 450 ++++++++++++++++++ .../mcpserver/McpserverApplicationTests.java | 28 ++ tools/oas-mcp-tools-weaver/weaver-logo.png | Bin 0 -> 2485462 bytes 25 files changed, 2367 insertions(+) create mode 100644 tools/oas-mcp-tools-weaver/README.md create mode 100644 tools/oas-mcp-tools-weaver/architecture.png create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/Dockerfile create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/README.md create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/architecture_diagram.png create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/mvnw create mode 100755 tools/oas-mcp-tools-weaver/mcpserver/mvnw.cmd create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/pom.xml create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/McpserverApplication.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/configuration/OASSchemaProcessorConfiguration.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/configuration/PromptsConfiguration.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/configuration/RestAPIConfiguration.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/configuration/ToolsConfiguration.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/processor/OASSchemaHandler.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/processor/keywords/AllOfHandler.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/processor/keywords/AnyOfHandler.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/processor/keywords/IKeywordHandler.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/processor/keywords/OneOfHandler.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/prompt/DynamicPromptTemplateExamplesGenerator.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/java/poc/google/mcpserver/tool/DynamicOpenApiToolCallbackProvider.java create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/resources/application.yaml create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/main/resources/openapi/petStore.yaml create mode 100644 tools/oas-mcp-tools-weaver/mcpserver/src/test/java/poc/google/mcpserver/McpserverApplicationTests.java create mode 100644 tools/oas-mcp-tools-weaver/weaver-logo.png diff --git a/helpers/exclusion_list.txt b/helpers/exclusion_list.txt index b683b763991..27bc5504e30 100644 --- a/helpers/exclusion_list.txt +++ b/helpers/exclusion_list.txt @@ -91,3 +91,4 @@ ./examples/mcptoolbox-bq-claude-slack-agent ./tools/mosaic-rag-ai ./examples/creative-studio +./tools/oas-mcp-tools-weaver diff --git a/tools/oas-mcp-tools-weaver/README.md b/tools/oas-mcp-tools-weaver/README.md new file mode 100644 index 00000000000..cd4e0a0eb32 --- /dev/null +++ b/tools/oas-mcp-tools-weaver/README.md @@ -0,0 +1,92 @@ +
+
+
+
+
+
+
+ Welcome to OAS MCP Tools Weaver, a powerful Spring Boot application that serves as a dynamic tool provider for AI models. It parses an OpenAPI 3.0 specification at startup and exposes each API operation as a "tool" that can be invoked by a Large Language Model (LLM). This bridges the gap between your existing RESTful APIs and modern LLMs, enabling them to interact with your services through the standardized Model-Context-Protocol (MCP). +
+ +--- + +## ποΈ Architecture & Workflow +LLMs can be augmented with "tools" that allow them to interact with external systems. The Model-Context-Protocol (MCP) provides a standard for defining these tools. The **OAS MCP Tools Weaver** is a Spring Boot server that dynamically exposes your OpenAPI-defined APIs as MCP-compliant tools for LLMs. +This server dynamically exposes your OpenAPI-defined APIs as tools for LLMs. + +The workflow is simple: + +1. **Configuration**: You place your OpenAPI 3.0 specification file (`spec.json` or `spec.yaml`) inside the application's resources and configure a `ToolCallbackProvider` bean for it. +2. **Startup**: On startup, the Spring Boot application parses the OpenAPI specification, extracting API endpoints, parameters, and request/response schemas. +3. **Tool Exposure**: The server dynamically creates and exposes an MCP-compliant "tool" for each API operation. It intelligently handles complex schemas (e.g., `oneOf`, `allOf`) to make them understandable to LLMs. +4. **Interaction**: An LLM can now discover and invoke these tools. The server translates the LLM's tool call into a live HTTP request to your backend API, including authentication, and returns the result. + +
+`e5HsPg_Z?Kq?EXea!8F6p-tGD>UTV0$U?!CtS)9i3mk2oLHZgVr#anSZ zpmh<+y2~lAFigYTc&zuS%BS>#@_VtkRFo6-D`M+@W7C+C{|vVtrOl#%gc#eE-gcA0 z=chosY~b%;09+qVU= ziVe_5*x9Lzy?$lXN_Xxb-4{_MiOoQf-gV8r@D{&;++0b;(p{%sDFT 9EBbQXZ%jOqpZlqZ5ECTpPi_Y9gMWswvV6!|_UjaWfx8a664M&Bm(WG3xKIsa;jzww0-74+^$VBmTk z&i|GDOw !i_{c=O8@4eFmzD7C z9ZtqE&0|R#{mHVpD08W=jWA9@I*;5-%E#2}16&8plATe{lTRNbwgvNYrRd6^IlqSz zSxa4v2&ys%-d7sH7IH0({8M%&mF6I^wJ6 U+8?>PM~dz>3orG|hN!bE$f_HeRM_Inj8vIthAH*BiJbM1m2qj^lN zQCdTlsMwp1Xj~2nxkVjuNhfqVhsSiJNDoyO6r8PBwsAL=qwf)4k#@73cA0K?roqG4 z{QJfO9`ASbk_Y{Hw@U9JM((c^mOPmH >B+5WTl zmXY|qZ{2!&=6oy`xnX ;fX*x9 &0wK|&zc~z7sC33)IAdoUgjev8e(xRrLrGj zFo%;2;kCgGlONflOQ}5nVt+^on?usLmy2XW9k%R0?FF0co3opXW}HI&FG5RuVnm#i z0CLHpcFIG%A^A$X!}x$T9|0q4+scs^7vo(pK$m%F-pzSP;HQ|m-4sjI`bn#I$5At3~1$` z2PoW~ O#*dDMrw5H);o*MxAR-!N7 z{L%f{<;G-zuks{2lDWSkHwWJ>R3mkbV7^~jKD+G4FZuP)yuzj=E$)d8MqASecqC~h zjhBDCu*8NOJ_cTz=;`pIcj~hL)xhb=kt0c<93LnC5CXjFXU~D0>;L*X5DB2p|2hf} zT)Fz{^pAdVUE-I#9~CbqHI@Iq;BSNd*Ghkz0zCPzYy8U^|6jPqd4x1mm!U*~LxiLx ze>NTtSN`W$p#dW6xEv8D{z)z_6Mt3jj5g}0hn1GZunI)g|NL9<^Tjg*2~J^>ZCG`E zeSKWv0m(n}m}GkrJTCtr7rgS(W?d$D{`KQ5_sZ^9gC8+AOkqL)eZk+B|9{a+>L-c2 zk2 U;0&tI4)J=!sd9CzQ0!IYWkJbCyS*?zVaRjf<|AF^J IsbJLJ5Pmwp2B;D^;|>X zoDLL%?%?9Fek``R)VggvzOyj$rHiL7Dy0ukyKJRez@GP`a(94Lue_WaSYoMLgTFDw zjqoHl@B>~ PJ}Pt@h715i78r%7|79)8O>y$;WzJL8TZv zsF^iH#LxFS|A<7rlLX#qy3h =rNA65N1v!M>vhhYH5I2#l>ZP;4+?+_y6u21ik!(GXo$f92e{!rnuiGcznb@* z4Y=!*aN+lyQ3|sV9R%hL8<4~p|38@bH}EF1k&%&rrOxx7ta7mQ2na48K4pByUeIRC z*$n6OZyW7AcNB>A-1XD}UfVoHDMBOPHw%BY8?}TbjQ`c?71F`0)#LmxM}IYIAXcPf zfJGUR{$ZparVCt;lgcb95jQM0=k-EYgVb4mSU<2rsz|2Y_g|^A+yL`a@bNqovW^q3 zaOe0%y;C45w`5j0V4KqC` u&ZQfb$PQw)-tRfBw+& z2D)0#dA$+YFyiB8rPu#q)_h1XN@;#}9e3Cwd?HF#iMYlTX5PM>=uK ;aQ{d8ac;RR`T&0Vdb-SK6m@&*J?*6SyX2FFadKz^zOOZM3x>QmmgW8*4GTX1V zG+CSmnlfwtv*EICwl0RKuRdN~KkaFxQy2L)_>_*WZGJX?*1B$bZZgcldHebvx<8kY zl$6ZG|FV$dK^SQ4Nt|;1ik5Gj-`t0&>OJXE7*fsfoBBRIIa4?=??vcw-ibx2Bj;9I zZW&bEPm-*{-}g)Q!QDnw?VW7h6+OZ~6M49%pBkKUUcs3*WbmiGlc|Xe|3ayeT6*o1 z6^qbOv~M=v*|I-8KV$5nig6u2Y(6?{(<7 RP7;FD@oHgxM-F!RzkE4D_F zs QiQ6VB(nyPghOQ4}pNGJbNk!*n*k z28>nM^1Wi}+8bY2j}duVYQmDmg+#?7A#w1h>jSsP!j5S$(09fZw0!yg<3pvqrfxe) zLq5HZs-u?(oGCKhdP>+A#y^OJ>KP13fYaS!xR7R;a(6n1hre*%6uEYw)Eys*&BUL6 zDg >hQt=_N6ZobFRZ?`n}F^3J;X*l57;^FAzC#)(r3mR?8l-<8HzH2bxpmB!uAT z1}u03xLcl&9kPP8Yon4UEu>G`6L3a3 DR^mA>p@>t1+WpCYQX#u$dIy}fu>F~LprWa%DW|Y75@o(%@N~&@uI~{3^bzB!PSKPj zETy~k84hZfns&UlQWr#wrhd^?QzU8CugCdt%VQ8MLPaz;vI(L}i%*8X+^mu3p$Q0D z()*`1G3_=JGri8C(Ap->n3^vWF25QE_zvhJ#MI_r44e%G_sylqw!jBGv8p|Izi6KE zAqzQrxa(-bGiH82M0;k_6md#` zEtw5h2^Q{C+mc`!`1Q5K2RCs}5)Pw}e8j&b2%4xR% N_t`lgt`598 zxH7ZmdrV@%QkIwLIvu>5mnN~0e8Ca~Uyt*y%G2!*i($)Qoc*YOyh;&xRVMH%Fz>jj zKx@W%Bgr~G{G^-!<)}roo>Y&O(zKy7rD+UQU34#)04xC}uP0S>dsV)jl5BIRJhPR5 z=tKLf!L9i@p>&Yt5@|j&Xs_k-^e>lG_G9_pj{SrX uG}%DX$5f5lP^J znE+h5CMvG|^GkX8-8^n@uJ`MD-)~x7ANjiHU_g$&lbI8|$HLPMl-QHnHCJ;^7aEG2 zxsit4I?LmC%GIm();D-2$7omu{j`i41R2AUB&)a=5{=SyXX^u6^l!C#W8tNw=!lr6 zrn;!I%@=9vfSJvB^ZD*C+qYpH9?b7&hpJ4v;N=O|Ma@SIr_c1@-scUg{mf;o^48u4 zp83~MW)D7Zyb4H=@v-Fb`n&|7XnLSY8SC9V`E)<)XqnBN3_$^ylDj>sFo7N9$g0s0 ztT|F7&pba&?Iuf=0|REfmT>h3K`-SaFC#i#K&p!E?NF+)!@j93lG>*@@8T)b;5B&a zqqJX#(>GY+K!F>6{ceEu&*6z?ohx4NU&SF>CA~=I=w4^8?Q4J4eyUzKvU^cdN=n_y z$?5aDie{gU{B%Iw1 E3f0P1RZ30GufF`t*^__=XhEzaAgyKN~Pp*%M2>Z>*VIVHvT z;p|)epyuB!WRKZW+tgYdaSo*!O{NdJJ)h+6 i;oD1qhf>ib9W FP)fdb@nz2h=xkP>NcgA^^(>ai5XJ zALr$57Z+eH<8)C5&tw?mdg9;$_ST-1AD_FeTOo5DddS2)zgd}CC+gZs4zwRRYRO8d zA(P93lZF2FXonIbNkq;zS=#0vkI(wU^j{wYU3UE^2d4r;@8JvB=GE5LdVk4`Vm|D$ z@MWs|n7%1YUwVd|{1)dbkE#^be#MpB?gW`?!^ddFa+P7R!rS}7x@Re}9&L`2pI-N# zh<0fLkjC=smeDv(StRl%sjq3hgyR?a3cZd!#5Pz3rIG-!a00n?_~6sqIiosqga%G0 z=uDr}HY`n7G90ST^ey-LQs#MkoofYCecWx_ix-}Gqd*1>n{VuAwkY!-0%i$Z_{*E2 zt7Y|}y3M36dXMe3Xdjm8OvN}=dxHJM2Uo62$3QQo1Mn0=-|e!C$`--!o2xjaxcrFI ziAoV-MUb0$g(a{f+bhj9_eaiEy Y^(;7s;;IJIihBXo>q2&mM96 z_GjyKU+0ELfyufuLU$+Va23F>tEbkIyu6jYM*K8z`adlnk8M>2k(rTR2fC&f!I{Tv zh=H;Tz0R-gsNBdYOu6tyZ@6$%Ty$wzu2#&UGpyL62h*?ji^rQAJoPwT4wCaBWzWlX z8_Q`Xbps3uI)Avp!isH`DL=>^$BU5D-7j57#G7a8qQSyrw`OtP)7_KBy#R5He{J?U zTgQz%{m<<^IdMHM{TV0)AEON$Q!pZ*gTtGC-#kY=MS2^}*cjV;z9Wx-+^@}A$oQDO zZIUiS8pz=fO4A?!5dJxbY4AL}kMAJo`g58{p7CHh(|EU_SO`KI{|x)I?vrzz$ljYN zAa8y)IVVPPh 7lnCH zx3ZIlnV!mlV)O(SBebu_|0qUyFXvri(awIVYb(fj%3UCv5L8N~5&m&e;(&*=Io7d# z_8Hgly)%hq$K|6Zn2fpL^@CO<$J{i ly&3v|^zZ*VWz0}h~nto3K&Yyl9=Q=|=y`p4@(A4**hTKHx%G%D0@o;Hp zZXk29qYnZk3U9}*xo_jPS9r}M2A)I8bhijOTZ1wW4k6uZepi_s_kcSgj?T62k|7^l zS}n-lzX!cW>=omyp?0_2JI_og&V2tu
MyUIga>Dbvn|G*j8_sNd`Pcdj8ojp zIf;5d8LFpqBU9*@nOQjH77)5K9<}(K{bSxalzBKrV<`b9WQ!JvNX^Cf2d_u72I4 zCr?}am#uYTUX|7dY^qsTeUjPuD>kXn%%I|&{R`|HMG+?B7EmRVKn82EDFY}h)KMx) zSmr#!+e(yLdw=9fD1jft2z?Zk>-_EGlF`W`T4Q+{R~_bZ+r9Hkq*!EPHT`Qd-&NF9 zVIuIV^jf`{h|}wCVzI3alcBL3{SbA6c7g@RzZ1ppgnl!~?02xY4~wZlhGJUjN25k2 zC_cRTR=4$e0>0FiXD7QwsxXcv%6WdG$~Y|6Ngf$RN)zX{yXcE35F%Efsw5S1`*jZj zA;23f=t6A>+4SXs^6cFgSwO9G;%G8U&2j!7&mO4F!yX+ukJc)_u(4PI*sEFre#-~) zJPU4Y_ra-yq5M>soj`^#*gX5@PuiX)h=ck^A5hy1MeoT77$3MOH$Oa+-7_&Kl=7^4 ztucN&yGL;6b}j;1)VKyvaFA4zK>J=&RgIu6y!7F9*)n>OtvFS8+ii%A1;p+tqfEt} z$IP%ESN-ltsD9#ncGv4?vBuwI zo5MAbm{;fk LZJ>^TX!$vh>K6lKlopGd2Rd)P6$c6clsZN zqN?h>9%rV?%=&sILp1H0yV-`Ls_MePU7z0>3%kT=Vl`}rcw34`H_8Nep(6tf)SH~+ z^lIx)7Jn?DetdMR>Kig$1=E?WXtjOUb}KQzJYof<|MaIbQuKh$R@;UXMiIl)QV=pd zQa&33teB u zZf9LuLN6eBAornnXPLEX^p9p
kCn{{o&?j<&9K7B5i1}Y$nxdEub%m($1d5A1(bE zEkgI(Y4^&lok$$}$`5~M@A`vFRxIkvT8VrUE$!%5g|Gl6l#!5pQgx(YIpy1$z$kMinYHYzWsMG~s|UuCh@`;LS%vzaAT-7#0# z8dMSY8XZx6?ZF)Zz)^DG^5Jd<3yo!e%*s1KinNK_ gD<;9>W5OyVkAl2&{t+eTr&Dj6sq!4SEh$qOfL4fdqbj%Qr8DsH> zZK|gsPQ)c1Sm})%{rw)YrU5p_Z9OXQwmAoz^4j%lC|l$3q5#3YNLo_RacqtVI(3Av z!lPm-KReB?vZ%(P>p1DXKo4fRqu+le6Ep* X=c16!j4`sY+fF`a;XPv_ByJu1~QhLtTM;D>mX&gRP&MT zs{6uNkCoXK(A@)8s$vKh&hbd)`oo~pwZy1U5S2&H1tQo|fqsYakMG2y}OPKj3Hr zU`51FD$&;rsMBr8CI?O8ySoX_5p*pT)pHNg%b7ZWD zBKV;z+iYPYc iV4$t#9rh9@Y z5xNRA)s7F9(tqW1o;H=3D|z5h{1Q@1%Jl1|UK1WZ49X5kJgE22P( uBA2F F#XpQ&bQqxD!EjIIo7!DA-P+Yh3#w&E9XJ@&MgL-t`o$x>Tfy)YaAHw) iEv`+LlQ=ER(HZ{iM+cyTQK$|AKQpgnU z3gSBqX;6DY4+{~8OGYXYUqI$BnfbnwjFs;y_x&po)!#-S?9eU2gLCo<1rQq`D<$i9 zR*=4lqXAx_5%|TJGk@=zzmlEq`Ipxq$V$iE?(Dc$fqgS!u|{hHVw|F)a~3w{CPqmz zw-#4plh}@kK8M+39G9u(<`!^~zJSZzc>9&L(%sBh*w1}f(A7!F{3D2G@r_!|ZkKn* z#1Wrv%ChK3-a^v86Mt`tQxfKns1!MQcMh(+TXbzbIPrip>j=9z= 31>)g+|G1{SxHWWNDN~mI?CP)-BfnV<3;j#6)m?qH<_?M3RT{Afqoif|8P9sGe1D zT+9tfyUfzz%9Yu6&h}(#m66SA-9u9q{nSaLXsdWL&sHs6y%(X;ofsKqD*btX75>)K ze-`gHcx%0LEj42@Ug1?n&y5-YmX<)#0IrT-GmwU9x;Zd-F}C-5CM)#zz+L-7A?JDW zeMHS(F}yjzWfO3LJGd{LcR?$_B~f_mm;YO)DL8Mv`xX~ubf=u^vr_`>`_6W@$IF#j zr~R(dX8o!+JK+3*8nj{-al^lhFLHBjBXs_xPHKXEnr5>ywZP?Id9kt)Ca$`Y!L`X% zUggw!?|e4^X{r^VHa_=6F}s4=vA ?|{wm|5H6 z&V{(%5^4X?cc3So@`!Sq?uddn(2CWzKZwP=6_lz&%DH@Q0Spm<@~|!(a{XFUxLAt< z=~$HZ{)G6Q*=IgJV|8~IFYoNAd*#8Nb2VQdL{z>#r@A$*Qn{hpW#f$aooFsEy8<&g z$tHGcLE8q;r?xgL5}Fc)_Zka8QA((bsOC{W5--3lvZUg<5Ha=Mj`lrui#gH!0Y@P? zB~5Iv_(earX0(@t3Fwxar9M{aC~rjAP@YNT6#oIrWb$eS#|qyc9PF-bMCoRPZ5r Y9aQt^-EL=@U zn5U+a4RF0;32WX;cAa4E0+DNC;WqTi?y&-Nk7{S!-R$3^L8tm?ZEb67hNB;5>U-y3 zK3W?{zO-x4i9G7$#`AG6EX^xZE)bw44%*~A`G$!RYRMP#)WYr@2o31&4^lIPt;>cY z0d3^JPZ_LSe(mDux6uhu^E;@wAU7BY!n-{C_ia;bDFf%fx#Rp8Myx8Cu{z|k*yU{% z?EiE{)}4rxJbmU&2B>1el$(ZzoN;k+-GCEJrqoRLAlo;TswOk|O>g|m+d-ZPy?j|c z<$`?@g~GVZ0EjJPhz3yuXwU=%IxyY_fR{wwnP>+l(~+n48GMuyvXIU_`ctV%lHW0v zoADwRoa}^;2GNQhcJG_ajLVLzn@gnMnW*4e;rtv9?3w-QuH8Qbta(tKLosOLoB@Nu z(T@jH8iP$OxkWE^|Ee$Oc8hb$dS;A|n_P8O(-9jTlyLwhUDkv&FFr7N>r2inHyLyW zcvQ#zGe|1hQgEnYA{xSaH{?m(DB}$v04(2i2@bdW_DbC=8 sFf`IT8jc? z{O>Z;EsyFc)stbaxlgb=W1pn`z |nK`M^Jq`Y<^ki8cb{lKbL3z}kRKxz#l)Adu?! zwMNw=fNjy_+h`&L;xa4cWr;LRE3@9WU~-74daDw{<0cKOf|F9YSme2eLRs+q^379w z!M=#zy~pTp;LJqCzyr|jxxC69M_jWU{_azl!Eo7L0#L2Q`RMdEs QslilhBw_8M`UMS=Mn0?ZcD^XGtRx8$MLJ_KW1auhV2(c zuO%y#3?*(i(>4ShrLU8!Rwr43IvJ# J{Kao3%s}Pai^J~L?3}}+r1@`Yxeh*ayP|YLaoYJC $0e z1UbPoN9c84xhFV)@1ZvFJ~Paj2ZK6%(S%0K{mtpKphw4UEzCda++mjo4WPzEARX*$ zo}Zt$Y`0j95{+~zw;L{v2|9$QE>};Jk-By5u6wYJ9rAIL1&ksy)U@O^kH;M;@)`hm zST%+nlpV4FG fU0-uG~!pg*gx?=X78fgu28X$aZ2ueH3YyPS;rbM$`P_xRwj;2K_`YqNBO&FUPaf^xh%7XPmn{_7TV(KKDqEosY@gFvd zkK@MBy(G=P=Es1?+{53OJyg5Ayv*5|`xGYoE%FQI2DJjDX))lB{SjYY uKTDF%b zErtM+4bCbZmaM*mjrMp(vamsULV4B7B|pl%!_6d~6;VDKO||$*Xsi(D>eAKy%iQd) zYq!Tv-_qrVvrW_CfhaDg?pRFVc_OFhl^(0b-LUc2v`sk_J;qQ?@(lzd>O(%=A)LX- zJc}3DGdd0*%%~5bOJOrWaa^ot6hW@sL_ysI9VmR#h%uYE{&oFKQlWzjc7&aMqIfHw zxK|(ljnBt{M9jjwH#bot0juS>M4f~j??)x%t$dVW^0~!jnT3_$M$kTmD%KK9hWw&H zOFT?-*|k0N8!{XV-br2?GZ
n4~QKg*QJbwP)7*5zV6%?MGQcvw%(lP6_agcu@ z*_az#6ctjMyjtI@Bd-=OYPPr15CS4ehk=G>eq?eiO){BIw%csi*Smp{Dh|Mo%AAnn zM?QFd;HdYG!U&fKS4j_V6fG~lq@)3wTvHHQP6Kde1?#86b-T}*Tov9)!_L);u;Ddf zwTW0qUP9mnAg2vmL&%K=iW6r<_MLC9fU5<_L=G$k^vsKCYwv8{r<>dWI0e!K&_7GS z#2GAiEXN+L6!2|=VeTtZ@iYN45wK+ibA-1;vir8D31ArlBkJr_!yg631bsbzn-mg4 zqu`bG@URK3>l|?0ievPozb$>CfRyfo?^rLsmE<}Qa>3+)r~43_Xe1 6IJXeQEH;@?55%1n}kc z@|N!YUJbLbfpq;^&0^wScpeOGm(~Mx-=MD%2ZAV$?FisY@Pwcd7)f_3qAfj_A(>?C zN2gIIsZGF7MCupo0lT=g%)&smQzo9A2UN4`(kw}OSPQc9Ud5xZ>uhlH(so+&U5|y` z2N=b6E%@zlXh)G(d!3mC1VDmHU&S**qDm}Ll%>bC&MO99i_iGggReP%Fc1`21Dj;) zignGK&z=d7)-b*PwBE=JyH$nUaZD3waz}3a!0&t#Z`8h?$WBXMxWEM|fJ-xSplEY4 zpCyAu81>)ibe%@nR>;&@-(ma-2R!5N q2#`L9zZPV6Eu}Ya&S*0e{3V~xBuEVTVLZdb+hxUnJd+uaAAQh}p zX&6Xl&7^ITs@IzJ_q(is3jAFc5q~Nh*Sqmh1QH%6^H5%!ip+CDb22l56C>@;CR=M3 z%cEm}9y^gYY(@EiJo)^^21Xg3SY1haAJFUUML?71xIn`_I!=U;fA{Z-rL&z5pbIcL zU@QZKCke`g#s)Bg_5>q~<~Fe{m+;H6GoVnxjEd7@=B`*(w4!|C6Gu*mFX7oUst9f3 zQl?(IhrE2oo#6V2$Cqz~>peiMwy=DkErBUl`K+-Fpn| (=t~5wfZDiBsPkVh^VS}*@$6H{MrT4bR`94s^a46QZ6Zj{ IT(EAs}=ut>Dl*HwB<{w!N1nwcKlV|7tDY{ zs}QZ?K=!3Ov#Zh>_)lnuQEZm!K|om)qd_nxNMvq^nUVni4`{jKI}WRwAg+b=@R#=R zJim%OP7yPrYmMW|Q(ZL8Xc-QbgjzRHFTaa7K#K!M3wwPdU$B6)0qkQlz6nu=#$up* za4{KVhVdn8s$KWS5=dcC=V9-_oF)M^6I-bzU<&TN@q~f@I&tS@Z0PsZs-;39513nK zma0RR9L}sbk*%ME$cz2*izr2(gk=Cud@ut$bVcR&1 >0jt!t$k=Tdp8Et1C z;6T?zO0DuZwK~X;B&D(RP(HOXjQ@f2g&SawAe2X7JfVw>QW930B}`x=2U2hGQMVNG z!e>tAMui8I4EX~c>zXj2Hp=#L=fQdm?XO1+I@fPH_(xu%#Jw3n7N2hMbp+t1yQ_dz z6un;B5IqAVZ5;heMj}3FbLzw?d7c=mCLI2N_&T9S>`6QUv-W9+=MKa<|96!TOzrP) z_m%Sb6}NV!mH`Ih?bO7D9GIGkoP$B2)o%o9AC7)FCdLt^@ 5Tm}&WVR4oF9*m4_JKlq z_-}#s8kg0Soq%I}PX gT)QzJ1qK=x?Zb1kBd8K`LZ$x>{OF;pM8qrU7P0}QelXa z0;KE6zW&KQ(mLCD@M1|Gz(!yW;!^1h; aVMpl2I7bRL4Xc=P153Szln&{;)mb_%u6#$PBrN_f_GuAkK{SwVb= zOGzxx_|~^CX_oP;WI0fnU=DFpqWg>;Irw-FtEPb;Xq^u{KrE*NpgUMu*12hzUi%{1 zs7eEDwFje;mHLzAX3)vOygZbk3tH=P6P-6Oi>}N@1@n!8aSd$wOBiE|T(QMTeR;(Q zI$}%tWF8dfIb&RnJBrDI0zmZF*MMb%$PbRCYE<98gmA%?h_4!r?WO2*L$P3}iaM13 z1oMlHkS#?&8c0`ruTnUW;?3zsTn8PCw$seJtY7kC@*p%3)e3yt8<09mo1g7@?HN0K zRV#7)kyzp9IT=71_*kS}rd&sMSKFO#XWYFDHyG-x5VoG~d|XAjIwagwJ%+h?ZUR&R zW|aV5Li!BwQ@^cM(*R~^05KP8Ukqw!-7k%*1#Dv4r6=X{0F(o5+G#x^t(UJw>y-gS zuMh@&@Bf#q%FxcJuWNM*S=njs>f`5 #-xS zd!qqr$L%U-vjS7Py1TQtVm4Le3?ih2ibTc^M-j?S%Gq3fAlD&^T8N=Yp7v&Yxla$d zpy@+GfxVn|Idr$t=AD456wv%b6I3?&1IaNG{$hxPF#tJAg7;%n0|u&=acy7*8w%ju zlt;uHf-DH*ZqTOIkzHFUqM8Pj!Pw}j!eEH@US_An#Rq^E8fuHc=+oCjZ*+QaV8oTg z3+OR$Z^f6wz}RsD$FHktfCAIVy(JPpy};(jS5nx=v<>2m&%Jv?RRkRlr@f|~71T)p zRahhx0gg_?NtNU~FFz
}7i3BXz&((Uv;-G9HIJ8+5r zdsxO}ueXGdv25Q5qMkj^^NqEIMTngrqlJ*s{s3+X72)|nX -|rfbpV?%>RXM(?ea;PfJ&rds*4Ngvqpdc zLhZ#s&ab1yN-Wqd4I^9q#5Q_HfmJU6&4Ow)_CK1I_PIfjJi2|3&B^XoB7zFn_*#Re z9sa?93UXI=+ViuAYAbRV3=c<-(Co&acD{hqY?#=!KiqT+FdcjW#={NReGH|IZ05PS zo^UZO_unJ`IIiOxWA1ivT=7A}rUPv6bq)N8NYf;&IgFZO3x(yHU2HlAlo6KBDUZ~h zyfN?_uqK&IE^#9Y`V2ELL`odkc>YC;KTEMcePxN+YDKwe#jPiGCqo=~;+H)Zo3qIM z5mTcw0jN9GWBveILorv~=L(=8K3jM@Cdad{s dA})c(Z(Df7$yGm#8Zv zUP_aGQRp?gqd8@46prguJ)kB6EIf&JoK@a;qELEyRI9!`d*!Dj<8M?a%;-to ZKjB5f;8en9r@U4Xg6D^n=UD$8I?feah0F0lm=+uJ?gJPJo$&9Px z?>-Pqj+s^f$utxa?|q fh7jc5vH(Pvw8Uso7ZTL4aGJyEDIL) E}DsoP_@x>ZG02!vl -vrK+A+qG7l7W_ zwS^j6Adox-*l8UDFE9rOe*r2WsAq`E#R{y&nJdaQ1Hcy@?T41FhwB*m%_#|X%AlG4 zjIhw8cx`Gvk==LQ6! tXi{QU3Zyxyd+;WhmZ-q_E7zZ?Ry0S$F4B^2Pv2Jqez@ zyi1=mE_@%g@j8H@hAK`=Fr9P8)(UxysZdVjX&qTkJEK{A6EMY}hq+kZ4IB^Xgcu*N z5W=^<%V0n|vcJE+Zg%PsIgU+p=C^ITyaC%jbD`V}7B*ZKep#-gQBhaZFHbH1UjL`9 zXuTH;+)3Ms^A*|{=-@-=9~_kHgY^EN+WIi XE&rGQ57R#f&l*m$Ud5 zLqk1UEz>0haP-qQ#E_y_lo39ldCJ0H)`J50{rzM>>pmj8_pxh8n&`)!tFEa)xXkP_ z&H^O~1k|gcTF{JV0EgFUDuCI<+Z9l=g0Vwuw#-KU)#>M08u!VAk-(sJaai&elxo8f z6MVq&0Ay1`Kh{>=+XiM?XjNHhkRiP3xeU=OZ|8ydxf#@}CQS=@aogrFU6OL> ;7kto#W$+H*e?xJ{y$&l7h)L zAKvV8gtmK8jra@|e9lsf!x(}R^OAh;d0%n6!x-;w |4wk);nV7NDhF{!M7ce?j8-Z>$8+C;)xy*(=IWyfQy6mSFKT&<+ipDE(+7 zocnXXNzejvrx2j+b6&Bff9C2nttCP)EFS@*B56H5sJgAK-kOw^$gg9Ll}$cRcqM^r zcuy{Bu=sYIdIKC7LgkGM77?J4c`1C+M+1^4aPA64|F*A(G =vPxa>|&)eu(YSl zQSqeqlfEOc1VFOh4`DZf^G%q~W(7sIXrmi!pGkYs1n9lzvmO{U1Y2;>2Xr1b!4xte z>O$w?rjNRITazdS|BIzQTXX#en;8LDH*pYiW@8^}o=|KC63m#g`!?Hm^iY>0=c+vb z<9`gL?3oToj {*;^ uz*Eu%Cb0t~iUF4!4E zjpGCaA?}}@bK(2~%+^CeUqtK*q;JJ53*~7MaChO*E=P2Z>*7Vxvu2440oZO0-W20# z&1iW|%+u|p!SpH cPk1(!(hP}P22UJvaH1oO96IAbB@)|=L zL5}KCQ5zKfxYzmL2K)#ZIsy#Kf-~xOxQRHsN9`oA%6D?4Li@hb(Of8kPOk;cPLpdh z4+cL0xPEaxGo{qnKT7Dn-+~-m9663rYhX&~P#_k-NkuxSQc(P1)A8~!)cAKa!NweB zXDiUp4Oh^%m{&OZGd+k;TkoX ~8UF41Quos+M{~Ou+P{BeJ5RB6m;Tz`($? zJCaw(Lhork%AaAe_x!$XpF5Bb(xw$qzS$5UEII#j1o?|Ff(h4;wMZ#rLIX>IoB)JW zEgSy5PbGxOkOBY?z!+Ts;g=3tES%HR7-^v3)WZYnJ;oC-9g3-JgMlFbh=WG1JxCbH z{HpPPe(xBV_vrve$UHT++y!C`5VB34!M>Gyz#l^`Y%{PdKiJW6oD*o)pvXw}HzWMB z>-|7FuVsJ*8n8#jL%Rd^&BxBJ?|xD`{t;xjwT%U(Tyiy|o+^|_wVTq&CI7m8XXQ?r z2 soWNKKy551B5;)CB~J}pvE3-T^yy3CW23x07dQd5d9M;UHoc1 zb`nk6XTf)bcQXKpX133EQ5-cfDi886kUIGsRtCHkoTr;q0a~KtaxnPxjCfTK8XF-k zUbgqVhldBE>SCC=AFZO?#7-JFvGI`CZBe>I+rSIR%PSoinpM=MZ!THr1H&f}-n>tG zL4B--u?0ofK!Q?uuAdXgK%uy{dRhYuHQ9hs EaAAxcEKBXL8d&NbZHMXy5ry~jh0_jgMtnjrS;Z10<& |575lL9mY)95Hy>Rj*vFN0-?A0uFROAl@qMgUAQzb z(kM3(wg(Ufj;_=IC`v5c7K@7DytakHeJW69XC6k3k*JH>f^!#0Tv~$C^ZkBdC4oBw zKpWZPT$p1GIwY`D0j8M{X$!jBHK1DaBoV*{3fS`^bWhDdrI@P6cd tfhW+~9Fa3>@7j-x>r9(;Vlkeioe*`fJipnm|-&L%i9Qa`s1TYDTMx6%m zpwn0a3fR3hKTGL@3_#=zOI-PBnDA-IsOha+BHM?6^`+qP&%GU2>&Bow#ef3Uv1|Js zr~fKW{sRyWsh-?wE>Kbqet!FrI#khCl=S2qk^B-Z5WCd9b~y)hAFyl#nWyr1TIErU zG6KByA-7gF$T;_;{=Emft7D_@aN*^dj+Bgr3u7Vu#bfO9%_cs)4%nMs4SCL78i*_f zA*xBG<86RX@2Xsm7cqH(O0mYOP0uwikF7eJS U4vOAc%nE0?690ENCRf=G2btI6{>Om*{pm+@Oqr# zYpdp{l3{05qr6!l&z{098}sJVp+U2ill)eV=9rdN`aq!x7uXr92e{yn%rG{k^`qcO zd>PH74srFlgcP8JQ^eM@g-^M)>@@gJP=W?prjvP!03U*>haFJ3{k;0H9q O*^y;kphqpUenw-&JS;$ZVbGTC)iPa_+B;QI6Le!r8@k4l1^#l#H<&8KVm*|ieu zlPM*iu%Dx{`dgJ8Q&r8(0HINHo)l0F{x>W%26-$FP4&D-pYa0Rg?kz;ql~R}hqWtP z1X4(xh+{mwRJe`LiK+0jJP94^$)eV_@le-z?R_by3&44;^&|8sKhhP0_*Ge1pl0TB zG&8oGN%7J&H370IPt?;eutnx9Bo(Ry0W^BB>FWbFc9q8;efE8m8|NL4#`{DMuxB?D zzeD|YsaMn&Kg`C@g8*BoB^2qQhcT+r(W&iJZ^ih?&=c~VtwVIff?Moxr#4v6smw9> zDFI5Gvl+>YWgm5grZTa*!yX@^|5d5}4}0$&)@0VTkLviU?}&<6K>8?l1O%iv1q2lZ z6&0l_h=34~7D{O9C@9SeA|({*B~n9YR3Iw7h87|qoe&{FfV8t7MjYpN&iBVT*ZK3~ zx(Fr7lV|U}_FDJ4SK0ZHOa{@zH)z3L)P$5%D3H=`NjlN8K)OICz$w7gfV5E&w6$1y z06)A=E1A21hmU6TEJQXT93Zkqp&+d0syzT=Bt;?L3PF!ZQF4W;iCOsD2nma#hWUV^ zBcR`X@nq3Jk$Ht&Q1OW xq9oW5xQ^Z6uERR3Rzd zZsV<<92PyPva+(Kmk8|*7}P3Jy-3MWKq4`8;=nUT;#)sdBb{M~7@@NslW%@m{f^F# zTJT3xNwr&hpKbf=?R)K&C29K;jpN+>ths{^ut M9{CL=bZ7%#WIvD@Gi>z8yfT$>wX>5c=!s z>47eJXOJf#%dX;DnY_lm)cx*-Ed!r*X?fK1Q=M{Xb<8dHPr6qAD@1(GmOYF?YEQud zBITf7Y}irwF#df|5L6gEO`Gl@X0$r)lFzq~Gy`P~h#%aZF-6g*_DJ|Wu~cQc!YUX~ zhK#P5uoo#>43Rg*@@Ik^_Uzx{-G^*$m=+`_PkV*`LTB={ 93iq4 o@Fe#SZdDb&C1W{cpD=Tx%_}z~kUL?+jGE DYg%#atcPPSS-^a`aqtt9EWRXagJoHzu2ny_itf)K ziAi9! Mv?6cC9nK-Y7%y1QP0-)Di4^CR^rwh|2z{DT0h z+7FTQ >V%_i07fKj3oD(_L4TM}lul2?XFc{ET zz!Fz^wPVUv%C5`F`2Eu};aZ5paMr(M?^I>+KD8929us^j^r1c qA;_X@zUycm(&g;D6owAhZlDbokDinJA#B(CC*m%qR zh3TFP&7B>#g&%^ UEvnst99O*qP zAV+2lyJ2|epzkEz@jTb%SS6d=(Ua3gmwGZAXW9&eqYSGgJ~zx%zX&I!f7IDo`Ymng z=6QXVzJT$Su}gL}Pfu!DE@{>EOwpO8qg-Zp`j`Dv${W;|{-eb^*zXLb?j!9|#2a04 z87k|t#)Yh!vKq&GaxI6~kwk8Bk~aFiG^~ y@#8{TsQBZ zYW$i*g`6ym=%v01;?n^F@0~Bk!+s}>zPMxM9(~o(Zm+sRo}+f2E3-6C2#kyzOdO1P zpqqLwc6<8ejQIHj_yevz+&nyy`lSW&g{`Icc5$8>R;6Oic5LYt*ktAyDa1fVpKjqn zR*`qevX{MEdU4OXhHkZC0i8GYi)foO$(NMYSLkS8j`eiGcdojbQ|179k|-skak(5e zgJ7XCGrve%V3qn{lBov4+=d)n^T%l)f4!PGGKc8c-Ck*Ev(vj^bt>#tmqasNClun# z_nzH)=&)Of^h9uy%Y*`^|2$>W%_AxWN0(o{Eb4aBb8&4PuvF{*YwbFCH9V`f_Zk-( z{o&~jmkAG8M6}5tHziMA(h?6u>q#uRXvAj@3shs8eCbea=3D3Y+K@x5^-XTps_UIg zC)cNwBfgDXoB6(OeYShemp;6|CU-?;?#E~T{ RKwtvVWJkteQr z7pVI#SDQm4Q`TATFfy-i#U!53KiHQXZ8mn(qg0K`HlJJi{!x d z_s0{9eOo9>^U TsKlJRRQ&0&61gbDp!WEr4eoW!Z*{PnuDYB!qkj|Q(N}ToxycJ@ zm`l`xFy^-VPQG1y-nL$uLYJdxGZ@MiBJa_i#Wzi~`eZl}AgL|`-^@#-&<9K69`LCA z_JK=ShqX9CQ1*>|z_z=fFB-Rvhs1k3W^!I~ujO2tH0hEdMtE@s7K`5BnZsZo*gF{O zK|VZpdFm3Z^W$8btE27svPxb3 %XpT8Weo!go z-{ Ewjf=oj^8&=?Oz(5d6JRMfL;jJ6zdvmZlu=6VS$Z#C)fomlzkxDD}JJH6c5 z0%YpE%NAOloY1?HnU0e6`A7Y2uOmAp*^2ZoS8~+1-8_;_vsRif8*AkfE0OC?E fG)=lt+Cy=qIIl%J|9fsk`HE^;{?LH?7P}F(2jDXUh?f zkxd_ni0$3}Si5oH37?tw&EpRCW3$fs46@N^yVD7;Q L5B{~zh3hiq$-6$C zrT?Iwmzh%Wb)v?+g_HJW<#D^XHJ;K~ W3%2rrZIp7*u(pw8of^zaCem_2Fq!a z=$)ibpL!_blDafjpIK_Hg0YYjTRxzEX>8z!BX r zh*&67vmCiyNThPww8}%t1d_gn9KN|`i{Rwo ^BeqFXU`5jH4th= z(O!tt*Ok`A`wQ%Z|MgBGlNId?YG7gU?)%OdWe4rXCP8HAu8y&!?D_rp16B*=(Jm9c zz4V&tTU~sQM*HYtWqc!UlIVwU8;wdwXX>mfV~C}+-;K)E12Gs~Sbb5rK!hRLRO=g; zUGv2Uu&i}VlhP^76DKlSuaThdG1<`6_v*nB*HV97ZBs7_v1|@gd-=#NV*g!~zAqu} zIw|Rwef|QOXxQi4&d$zE(!B?kv;`@*r3Li`V(H@d@P|wLs~g+#?5ad31?Jvm5sv3M zABRuPn%t`m3A|r{lP;U;hiK;J J|1@J?#otBasV{S&S z&r<-oc+vEUBEpMU_dd;PuJJCbN8j2JHJ;_Ucu$|~$1<7s5>_E)D`>dtYS%|89ZdBT zl<#yOr-vXS6H{eSIgtkfx>^zWw=jpU3UgPU0iC&hdQUWg&-;_`LQ6DmGJ-Pof*|Fw z%15Z&f8w%b&u4|VX)50YCL--m-*6obWt?sFE!+Fm0Vd4~FoCjrY<9ZPWquGdR}m+p zho9ubD!jI}f^FC>!|Yo0YY-;MA1r%8V6$>zKKBqUFk1SoqJ0Vk{vjQmBd;dfDNQBr zXavsuZOI+6*rH<5X3}g40Zs7UWCxqK@qHK%Pil;uY6RQ!Ol0TFv&plYG6g}~BD=cv z&6w#@U$6l7eW`do9_@>Yak)B8f1@WE)0Y!JYl;=#ySFw@Bc+XiJ)1mO#}`(&q#CV0 zAFU?yw4y{y-T8E*FDz+~zVCrd|4emUK#%4arKvBeX}95bD*tGovI-&<`o0^%sSlWa z;utITLowW-@4N8IJjnp7e)00 n}o8qwdk-OInJ zD@ruz8Rdb3asJ!ecKF6sr2dWp*?YLW(Kt*kL4!TB=sLb@W|YEkUs_mZ`8hHr<~f_x zrkKfWfyW13IMA1-YcdhH>mT%#3AQ3gW!n6;A-N@~c4ui{)|22Tu3InE%N;#tHDwd> zS^TTR)RNWU1jqME*}BFFaz?mRtjATv0*)G7+lruxT}R~r0XTmM8nXIWTe{T=1CP5s z`$k pX zg>x}7dvIUzlemh6=C+saLem>}en8+;U Abz(3h?)5ABZ?$m)s1+^G(`F$^oxQ$Y%@ zbaCE%2=}SP-zv>P_e01ejIK$97FDhpY}8+sXSDwGsH-m)VD{Ga+K56zOj7PB-vYn2 zhxdrc1@mV#SEK4M?rO!MIx!WuhSQGci N!f4q|Q?2A6M0|O)9UC-5f 3x>(%h!8JxWeB<`2?Q>l@_kLjlEfB7J@cD zUbhfAG9Nf=wugKp9ZaU>r|(u)gD-#g3N%c)l I zH6l{sj+@v5KdWakG%h9yune+0)aS$fMUnS?&i-5;VUT?3{D2>F2~)T6hh7r?t<4#W z6V-Z~)ZE?vqPSK?(!GlJmnb2-PjRe`wIYM `cU^E{{W2o+gUMr%xz zf`=^=Y*9q}(FXe{km=nALlo8HJZERhHBTT*i!9%hJ=nUXC qZd*NNZC&ny^?DieEO{xG6xBfmDYDUko0U~M009%PCUTWL-{ z$bASGgosf>>T1GESLnV?W^2CLhpR0FRnYrY{QR4hW(Y)TXvK1QOLA{7ruU1df3L#c zi*BbA0^?p(R$(-@bCxa YG=%{nU7!7);)HcCqM6h zIR@CgrrSawk}j_=EWa0A)K^9Ub+9(YcWT>_Z$&^|LJEt;i|stvC%*J {I&iWkRT?(iI0vYFj Fr~Hf5xuPoZ)lR5P-FKQep-J@?ZI0FKWS^8h{8 z+!NI}rtbR9X3$XA=g3ypx0}x2Pi`b|N#&p>IM8dfMk`$XrN_4AMwqu<8tnHE9>&Qi zrxm9ucB(IFZsw1`ykj*Y00c3}L0!%`L1U%k8-(T3##vV3{M&h+p_yuMTQ#*t3h1%L z;2_V50l8 +B}G{^xytb1XuaY-V)M&2`J%L0h8bwX4Id z4(|2tqZ@>xQ*EY!+z_W)@M}F1ji$+j-mK?QS(u3=_$UD(p}LoS@M)3sW%@%tVyzX2 zeXajwT_|h?%FD?g!JRcHa+oQ FSmo(;+)pg-LI`;C}m zgNx|(dl0Z${^1(tK4{s&gWNd?jE|$|sRWj~%MYL^vc3}vH1!RF>s&BNr|=|xY6Zu< z->UyzZjRaeFx0rwB>`@!>m6cRv3=Z!3J{;$Y?L&f8g|re+-#)B>0Ee_E#0?3B~D3z zN>H0A)nS7-IDR4RP7 mQb8vJXEMs5CEl!JG$t9$*Bb zYmKnchE;H FSSqS5H+vZ`I_+_X45|Da^DOleXgR@AN~w;sm|1tDw^S zm=87%y-m3CP%`=O=4?P5nvu_6G1fl3YI=EvZ?ca9#3ux3{h?%qo*5%_T-u|vTr=`n z2O@vE9#YO4{WULzE^L?5-~@{}QyuCIL`;QYGphJj5dEyY&taDvG`Xerdb4R-k^t p94ZKOH?I+*z$ew8wNuc#~&VBX>k zx5$)qLSn ae%PPb<0&$zJmS*G1Z9B*u~K zm@xn6g^pTZ$#bhoq=$Ci%a}9vWh{ga4i0wVzkTxbWq6rYRZ#q&JeV{Hg35@AXBPe* zbsc}BVy`Y*AD7t7W35u3)%FhWGOu&|i3HH)G0R~haw*NjBS(qvs=8^8Pc9$nn5F vaalaI-u`1hA*zhEtH AmhJ!aJT3`7 zJ?;8kgB3B`BJJpNV0xNy2bojk6%zj~m?@$6a%`q0cct{CNxv=13{}flHusw8xUYeq z3Tx`)QOOasH>%p^LGts!_u+u3K=zt2H^=tMd%DsObrgWiU8OIh7J^#B$s2{YQ+=jp zH6snT^=gDHwizr;MxcBhT9b2iotxNJt15r&u|Sbrbz4);=X7fF3rPvL5-%7;*b332 zK-~7ebKmyIiwm46!8)pMyx~Vn knVrRpOCE9D^l0))Kq@jTpxTE>7O2ODfuV=y?)HB3d#7as6oF7GRv8E` za4g%b<>uzTm(^mv!^e<@oBj)m(GvD}wYXHJ0BqIIlKkIKJ0jYq2iA|&V^IrS#Z>1F z)-YZDLbJ^vSU^N$wP&-e8|klnkZlXkyfaayUj^lfY>(&m6fmJljufdRSV^@(??M%X zAc$clJI~D0s>WKm|FGN4m_96eV%5?A1AJL2(8TJDsU5ysmtB}Q83PX`Q+rX2?lU}9 z94n&J*gLVre?zmg8rNo>l;~;+F187E4JJ7W{stOl2Y?NY&1- 4j^~XV_vixR+)78q!NO=KyV2# #jR;F`&Y#9W}_zaKut0wiUUY-|W|k*FX}) zinu8QsXo&9hL6g=qo>MDx}tU 50Xb1P4DEf*s*l&d8L=g-xeiE`_etW#zEf z-6a2z_Y>i5HjD*IFPGVW+}Z<0{dQBUIDX}{O#kpER9SrUup7A;PvH@*=lI|q?5SQJ z)dcoHnkILNE@Mcgcaz!b;!YJIJ3!1J>j~0~*PJz #P>fKqA$b1k|Hr`rv^^XcS~MP>8SqoyQV#BF-jTLNrMfSz_c0GxfBlYS7cXjBwb< zTUEdQwcD*dUUA{|p7rTb!VJnQ3)GWW;n^X9BEE-)uAz>D_Fb%hhJB16R3t(GrufoW ztI8D@dznsE+GPal)&K#|hg{#js@4_nEV*Ip?k@Y^F5fdV8FJ5>SxU;bd9;deA8i)c zzD}HdGqSv>O-%s1U*4f-TR4kh#lwSA->5THoVqnzsAuk|=hw9x7cww+a+ kY VgYf*7Y0lmA-VG!ApovMjV5*)e1>AgsN8i)Lz&oXhC{y zsBtsnhZG?{nthRbgSu_C#NuMb1qme?_T)!bE;Ic|2FvOdDKA!yU=R{6#QgjZpBmpQ z2mbz+@y!WDI1qi!8SRso1t&L|twyX?t{QUU3i_}pYfRS)@-o6TUYQE`_g7jZ)Q!t< zoQ7`lP? Oj1K}Qt-XqJSbynfwQ`g7#tg85(f2(&gABV`tWwx5qh+J{% zDl+b+PrB;cp?KD5?l5arwY8xbOVT`5PGhr_IW;CVY4K$nmzpW^9{36f3Q9Ax=*{l6 z@9NyPVsXhCI}9YNU;h2{%Hv;-dhtif-iG_lCFKI_s}Zch?<{?(Kac11%d%&`S(I9v zU@S0J|11o&X+->fgajDrQ!eW*^6C|)xvp>;NYt*q{a+V9gIpZ3b> (B$`?Fan zd`g$_d^cQrL6dK-*}z9`jgV{;e61i3736 kgda`>sip^ZDe zKUFk}lDn^tZU1qbHzM;ugKXyabI@V*U8fCZ?vNUPjsi+$5m>3mE5RCnx{*m@aawWw zKmBdtm?WxUJJqU1p#|S;J!gD7% NNtf40PZe8{{_FIvs(c zDETEGTkTK~{}qY0K^D$+av6B~uNAE|kw{NF3JIbhtX$*G3{d%ouYVPSohPsq;GU%1 zc$%-U7w}azR6lx|=VSwMNY=z4JbZyg)r@SHL?m`5b)!cAykL(9r;EdW^{k7Q1W_K` z9KoY#SLte6PS<`2JR@VYlkF-1Z|dl4{2vGq{n(oY&Y`|~(veYQQv#Yg^>ce8Q%1S; z?_u|dV5WE&Q~3r$bB_&b1x3pM?H1H6RLzB=e#rU6@XvGi0`8YhlBeqrcew#a6{6;U z4&exas{sQ23&v#Lse=HdO`_$e(b-Lgu`2d)KPL?N!@VfbY8vAyw`tZ@VXC-{DE z@w5Fx{201dQuFY);c%(VPpZ`CiJ+axA35qqii$a2a0Kz)@^gMR+l5 !d_xXn)6^pW 2i>r07m>tagId{kujBUG@A#63$B{7vt5Xo&)XH?(Asw(?k@zG7F z``j&RAC5#m 3n3 ziaET5-06?68~B44UXjjPrA-jR71jI-iNXk_y{q(XR+0binZUpeXo~y-$>67)HxIo6 z=N5s>2s*kU7Xnt ;_vrG0W!};db3}(`SAm2445Bkq{!4nt zj~}lVWq%J`tg~Qm7xi1bd2*tA)odXiQ&| |fL2q9RAITP+5g1nnz4its&P?9Li zb_y6rBqRgPhHOA65t|2nzRjY3o}4x&VkVr`15ENreasF7l>^=X&*C6Aiaz<<6&0QM zBh_JdJF3|8xLlaDL+yuKQVp 0)5;35gEmg zuNw+`E)-h9iIi^J;Xt~-znW yCk^cwiA9%8wC-C!i$S-4Z|HILj75~%8b;NByH}k))G$-(L=>PhEfH_oC{_8(K z{%E%U9}dm)-tu$Y|9amE+@1@+qK}_X{_h}uP6hG{>8(?u!CZHe0YKaiM2? J|yvf*ZZGIg5Umk=lwbz|EoTJosBjBf9k-~J4@HteqOPO zY#NpeJjLd%h)E0wdkLruv$OPHN2e?IlG)p5Qpvofn^taVOvG1X`%Fu??$k`KrqKs| zWZ&C ucK)0W;4wb#8>_mFijh<5Mvi8X{KBXhm!?G z^wtQjne&?-{q+rH@!TBavA;hyo`K?+B#7TQ`2X76fTIo _v~pS0`$n(M#kd*$)} z8|DZwPlQ7tAdC4;rDXBf` T@Ot+YxN8T)Cn; z`$ Qw6ZAgoK_ziHlx>{HajSkmaW7|eJS#s>;5y!+O!}&PtaTVUyl Y1}p zljc9EU{=JIHPG1qBsh4J+PSf(IqC*^hgIfYs2w;Y7u6?_@3`dHhbE{=-#x*3?fS7m zk<$Kx%j{}+8$aPpcLFxVUuaQ@*g$F)oOi0BNtN%c^2=72uUIzD@=B5KCp`z^@xk&d z?T*K `CxmH QxbHq-2&;FQs2A zu)TOLR=F@81;sATJ$9+T`@JPZ$yh&mXR$JX)d%lnD$Ac<%c?U%cQ0GuFjtTLQDJU` zJ=h&1i@qHG`( wPON^OJ~;gwz<-Rg5!SknHIxyXRe9qgakoJ;x(x6HSC=o zuCto`_W7X*@7pL s1H#_gGeVYe#Va9e8GixYgw=l6>-F{C##VEKXn6^oXtkN|e23k= zjLfUqU&JrSMV+g~fiLPwYfu<^_i<~mSh%Xp*|TR|%q!ubTcijqg=lSUZAV4w=3vjS zsGzm$HfVF$tX?4t*d3AP-iOtJ5Kx?Y_Yo2{xErrI>Du$l+&YcuCE?`+Xu=hO>Mg2) zvyS1AKe8`96zbR&zyGz)b<@`K$(N9_M1=~+N>gM{vzI4xZ+?6f6to-OpE>EM&Iauh zvtW&htRsvxL|c7%c{tZ|W>DYENe^j;{PEEiCE>OP`bT?QMZ^Ld9(kdc(|MdA{Upt+ zZrJmV>g}F3jlC|)+ D`_A>W~GeMSk^(!FG;cEa} zI-V&To0l_~n5fBpaPQt}i%OX!l+mWqBzs|nZ)4@lIM{+>hos50BV-i%6$I84&Q;0W zZe;5lGx+p(Lx95jp(!0&541O$_rE(_YvH-%xZ_QUxJ5oB1BFz5pXL2{IS}jSbB=k| zU0YkoW2$AQ?tIk~4*M&8=EE|U(7G%9mYL&xTT{)HlfP6>*}@Y|ZrmSn7K}@^(z1-@ z%%puQ=J$kA&%FQH_0RazyxB{mqlG@OCT-@p>-h%&D`aYnoj>rxx#Nma^7>qP1?w*_ ziw7PF_H0%#h0`j}#VAUnNC*Kxlo%{|$C &?AunH5g#}u%2G(cw z^o9lkMZ>@z#Mm#fsQ#inEq5fq5X@vd`DS*^%Nv=P2pX9>p8|0&?6Rp1;didtWmKT- zj|4NI7+0YpCq4bK^H6PJ2^-8y&D%3CWEN)Xq^g8q`ShYk;XvU+rMM;9C?V^5e(N2q zy03R5t>rl=)&f?pLwBCyXpF06br6rRxrZwxnswqVL=mkYOlW?2*l=(p+Ntq1euR-w zay|cca)ZH;-yL;wC?&h2*!9?WxfiWxvqpc3zX>BB&V67HTd?=T4t_DuYHe+OEsrwp zw1QJ&iGd)Vr{Dm{9#65oPzcy7{9FaIFje4%=uNmga2Ln+HfUw32plC}M6IvW(gm(b zTU+sGfgSJ~k~ArD@xEHD@70950Fj|qocXp$zxn$yjBu={mrk*TlR6Gr#>Lh&!y$q= zHpnV$*~e$#&pj7S`(!^n$CR4V5tDgJ>toR(PN6?U$(8TcmYpP$maNBm7<1)fGM6QY zgLSz_W7kD#kbt4@d0K5ff)?R$#KUU^8=a$OxkpmWF@`$tChEJ%kHs{ublT&PSknnA z)bX2{Lp?p0UyO|P+5Q9#(4k=OS~Yh<^np_FM{TScdvQqGdu~jgSa#$6eNWI8gX5`K zM`yF{EaSo>IVB@+vhGEMA{(yj-AzOlr=_I@!4ZgxLm{%pX18f04bq<9zs6`D63m8^ z$w5E&O?VTtu0!iB?y!Sc9~p_Sa?z0VXcOmkJNVu!75mKt4nkHryppE7;ZPJ*VN-j$ zVNy!UfjEEmQo$buCm(FEu6G5c0R@X!iFD8?DHU v3n?C>%)?>tJ$K?Kmggs7Ll_rkbXb*meJ5SFiS4i? zn}$U {8Ot~fWT(F?pxr;eJuzN34b+b}f9b8#S$mhpQ)1Oklmo74r#tZ5IE z3XO<}h}zfER+jazr6F4Ae%aU8*N0w44!tGQeJ9Nyx{$=UHY!Q`EPh9;NgemQdqUS| zAs-u>6sCLx+GD5;N9{3!LR)}Q9&TqT0OIBxy)2*$RS*E3 1%SG(_939d7Z7L<3mmYI-|{V@INl`E&T zZ~0O~WE&CbiP4P7Ti*hcdONlZ{zSyC^*7ZW5Df?z2SaMIg>vq|3p*MVF}I`-n6#yw z4?Y#lD;IhbZpOJmj#v$~tSZ(lIL>4Pw@8e8zrN~Bbyu;oRnMY8__)sl$Na;RlKLw8 zfMt1u`J^0kIqSGppDuU No4Wkcli39;H3H9IVE&a`uI>q?&x_4aTLL+^Q~JsGi`h_JsY-;iPA>u zKiR9*)SQ}m@ruK{F7U0*zVfpD{CY-NPiAbeSH=<$$FA%il8sl|1NN~K)tiCCHT_pQ zM%qfJ9ZdQpu1W;vCk#=6Akc; benf{xbp~ %Zb-ee3bfe6|y8Gc+9+ZvM%w3; zASTV&gx1^ucHt_%#Aj)?fY|*3rLq@E1BCVJECSV)l~6=MR6)V94zN}QR^HI(VTM8G zs9Q}-mVf_{;vf0yRZS79_f6%Srt5IDR}Vuauq#YRNhaILe&~(}l*7(U4!+4U6T~)I%Y_ylSt%)6aeQs3H+@B3FCsaf3fXrn%8fYQaSGDNvyhE zPz6iw1kC){tZiW6Ro1>FibbXK83
rDOkw2-u=c2BAJkt3GC zP)MVCAe#+NNkg__QeK`6W#b#b5c~ 3|#0qiSkuq``crAyOBWm7R^s ztsKFL!)Y^+PheHS#V2`gGFswv{(gA(43pMG01fk|lT_TFtQVOwPb&9vMVeUf*HKkd zU@os}wY&+ppX$n0BED&QopLVfc_+G--{za}NO#}!{d%n*v@ k5i$U7bdU zWFS`)5&Ir5Gb5u&V(xV_Ght+-0FaUMrTCZ^T7Q1NAEIQXpQgI=t-v+BPL*3ShTXqe zM73BeAp;suIFCfx-2T%KkB )Vhb zFl#$YvqT2&b4h+${DqAfbNu|R(-Zur6kHfP_NJr&L~~F$+2c9l;MgR)gE!}h%_Oxn z5_An>hiYjlYJ|SVQB%MXP=%ux0_Y%%(p2^RQW>#?R_;DuQkmaaX+AFxL%piOGSy)? z6GTYU?jo-3qq02!RnwcbP_82AN;aKWMYM|K+b}+cj@H1sjjDpJcxPY75wnbs>; {bOBGdS;qI9Dp&SFj&2g^2f9!s1-225Dz~A?(HCsl2+L%@<-6oXj)VK88L*q3MRH zw+ryRZpYomnnQ}9_eMzbr;*$Bufe2**v_zEj; Q=l$Izs#2onpIL=RH|_j(mt-NPn6$91@3x^&WV zX0S$BzzAt?9}yuRY7Zdc`lvVbH$BhkFX6nAv)}vbtaUp{^?1&b^e(7olEA-RKiUA= zvBMSj_U%62qt~{9DLIcKn!273;g?NmFt7%xd{Q=Dnn|Kv2C%&2p#C{~`%LpSF0z0# zL;jl30T)*q#9+7Foy$lV(iv=FEzB|>4-e8g3&6s0`wLK47;W|8&);X7wYY~_pJV^F ze0`S1_JAEs(cRXFi9U7e6jTp@GDrGrl`r(zON1qtmMSCA3hn#cR{M64kNhMN7al68 zP$cjl75mOC#fh{eW8d1TbFcxgV`HN+b1k}7pu6pw&<*EfmE|676&8S}NS82sVjwh{ zYul2TGK2#U7@9ffX-0O4-BKZ{EFb-a!*r`um>@qHC;F=-`F`UwaFjlNEV{R b35wp)$IHW0)%EVMU-|4~wuD)*=jG;q$)6#!b#zVPSez-Y458EgZUbBF1rW zsZgp0c#GQ(u8U^~geWnC$9j^=c#=Q;9nI92$|+NrM5Furt8te{-BrJ900A&VwT}zE z60Ww(J}x~JJnXi9jWmlhF>1?mucaw@ nT?)OH~>JKXZPo*n^gh$`Q9ZtWrDoRzfnMw vSea<;k&)AD0VF)dEC2IbM$W=T1?MYuJ`wX&pW!D*<- zrMn7j%$#IdtpPcHWARX!N~?JjR->xH8bZc>KC}kAJwY1G0dA8mmZ3q4l!7*6-zwNP z0Hs<##DO|!nc(irU;nrg@DXamOW?OlP+_i%-v{{DMuNyoTq^*>0a%0eA_%SrphQe! z+tEmGKvpC2>(1+j2}Q|sBQQ(nkTtEj2hc*+9xUW-IP^@Kekkn`{~Im{fotM;#{^K^ zx!1=M%o5Du%9P!2z(0z 7_{(7sXB=iNBDLCc4Tv%uzZ zLqnP91!a@8?}?{^WhQL(KwDfkg2IVAD9}>Ssfcv@kSXT3d4Z13&f0f3KeqNDBO59F zPe4%zxXA)1yoqKW)}~d0SlusQzF77ZJ39}BD(HX{p|foiR7}q(zj(3k z0@R@w2hKmq%qcx0#>@qO*0E$b0!`KcRwmL23qAF+Xxn)ZKMrgyHSdpQ=ztzMYK8&F zHbhiIebNtc*WmcWoQBcX{tW05ZVtdMEt@nW%KXs#4?`8upCYZD>Gib}woff5L*R|! z?rwyEv^Hv}x2 s0YvA(?aUV0mcNX9_${w0Pgs1(A$3NP`E3vO)3P7t{spJf z;e`;|Sh*DT6;V0QZu}Z^sjkX_UN{ZT_)tu4lCe+K+iw9`17AuuBupReRil= RI9#nwa3oPZZh;A<%!9!erGHE==6A$VSvPD-rpdARj!rg& ze&RjGO~!t^VU!C{rGWTg! WNMjNuyr@+Y>>TY3iul zt$TTMgOZPnjjWCT!7!o4hqku1Wb#{JD~k+sjFwLC+wS~vPF%K!ucHr3^hUN(CvA-D z;O6m{$_O2)(+hh}xu6l4>AJ-pr5m*9Hpzx-w+CW1KG_Qb49$X$9!Vx_21{_XJ{)d0 znph!Yse5Ar8F5JupUQD5N{8q4HxoKcM+m&eiB2Bg|H5QwY==$}KdcRyRV(JhNClKE z@mR-5W5w7cLc4oOw3*PQz+}WiPM6#B*axW~KQ3E!9YhAZR9_cXsIzCn`Ml4z9_QBZ zg)WIbrU$@v1h8*8@Zq8J`}KUcd|>%-@m6n?-S6~F0{Tm>fW9Vn_mEf>Kch^%@9xJf z7mba3=1M_j@=6%Lq2?-v(eS_;;lj3tr+dAg{PJp? yD}O4M@u{T&n=SzFybq0U~c=Lp$;ZlsAm6Y1}Xl6UOe4F*NuJ~JnW7ex1r2#^_B z1BsO1bD;hlX+IZ&flfHW9(~W+lm!F?EFng~Pl4M*9G+1jCdsy^!0!5_66j}TcadHh z$G+l_6N^E@O~*2gaMPW}vyj}4I9(Ub%wlKy!8(*my#6JNDuB6*kFUmztMXNgA7}Oz z>XAJOKleWCy_v@KB_|~g%1(D!P`k&}>Z>uvO-FG6QJHhUi}mix+x<+fSw7lSi}LC3(z%L-6h(R>4sYKbm0$J3=(M9Q5>6{?imlx?v|vl^o7 zb8{q#&*eGUoXU~zkRrHb>U#Y26e3b?xR5UArpf6^4ux#d zmtf@q7NeT4%I##C<`o8u)#4TSLPtBxZ@FY~Fj6uI!JSD4yQ4hd1{jgJdap_+4tsDb zl?>!b<76MiSL1Ca;;>(|xMu@3m lPM}&Gy$iZt&m11x~q3Fq88fhcJj9h6T*B z4k(V!N^o?f0Vo$7YmKx0_GwPEud}`V?ZcRCiz;;rt4^{k%Vgq+q-5AbF235amZa#O zRSxXst6}!I69D-07&Ul5x}%MM)D+4|K)h3|2H$TKJ;#-onVxR9>@lROz #a5>U-m}j?yFEJ3km@6ZaUZ*-)IBt?$IkM&8)V^Z;n;5jHi0 z5=-dLZGkWd*}h0j55PsC7X^V(R^a6DQ=r))lzwac;7WKJD}cjF%gnSdbwUS5J5?$n z@y-xTFN;nV1!rumNV&)A{r&Yb^|DR3rlMbo8=)tKeo=}~v2FTlN{##~N5tA)r@USa zWgFeeXXp5V*9oTTJU?YLM0gigw7F`0{vh{~cDZ>ZKNGEeYJ{9;JxTwprQTvmqD%N5 zv)?xU*IJfU osx7NmdQ#WBshhs2Q*exr$4gXOGCN@h$*6NMK%KCW!1>E z)Yf(YU8v~zsYOWw?|P#bxy*Zy+ckSOMk3Ki9k`Lxm3X;0|AFMJlP{&5x^^PU5u(p+ z6Y{tH8JO!@BmsLiaPdjZd|i3U L<@R2na|ym8QLhSp*%U`(|tvDh(+h9q?oIxx8d9&*jf$qCfmpn#rf=| zu)E*9@i&QRk+&OEy3Sw&zRx1u7?M6V^>%1Tbfcdn_}YVffKkGY)Oon5%#*c#!JqtC zO=zKWrE_mWT-nctJqV-A{>r|RTkA#E^j@Q{;6=oTs*k2Mq)eWx4x>#$@~H^1iLGCY zHUjnmiCG{K6P1O|t)awPshGPCFZ~xjAxXO1Khuk9E9lvuyqU=64spFbS}NG|f((W9 zSE(CE&F1D8n+n76#wL2S0vcNl-K?Rr_nECbrxJ)T2$A0PhosoC;kVhjb@n0-#Sl@H z G7=H2j7Jj`9IucST6rsk;rpeLcu8oH{ki}d}S-=eSdLYpyV~#^YteG{0 zo$O9lK<_UM7CdN2?w+YE*J)7N2GJlh&}v;W41N@RFRb-)6!}o Aq=i*yR5gd+#09R2H?3JL4#Jhe1W8sR*cuh)9#Bqk;|yqS8xLx-{vXI65jw zQxH&TDkw;c^iFiBO7D o=dP|W2$EYb)u}#?j%gIeUkL+Gz(35)H zOuzE4FI5 wqctm~t^*SR=0eKR@6_E*!GM*&IYr?C zr~K{F$~;uc8Zn&Fax{M1jXX%5nOfs6fBCU?`=fsrZy7iECBzA@m?in}>}P??Pj#Nz zL85H`b`)aXnu-vorUkR9s)j9L=pV$dLS(6OWsw_MB70(DF-P}|G(BniG^oR&_46Mc zDFv1T%{3HKWA!$N{eDW_vXMELhv(t2zic%zb%w%)T?=v`nb>ig00&-U7vUm6UeLI1 z$j?jjsF3exals9#M8QpJV+-D2G(wKv8rv076B}3x^q7)_Nd7#e02XXXnYcf1mQ`(~ zFTp0)lt&UamX4e;ofw;+n1KMgF97S}GG-tZgy002PNRj=9?_Pr_T3+=96sf7EB$%O zEdi$v=7h(&;v&CB(vhPUCh`NWe)oRVBbJ(b%**;s*HElXu{$8l>ey-gbmG$8gkIW| z4gbmsGZ|6fRe8`NLQ6woX7e@ _y9 ZV! y8qDH zWxOG4{5M?r^l#>@LBO)|dzf@Qwy3ASi{wK|kYjdscU%9YdmeI$MBoDubAt#IY6c+c ztyTB=WZF5aEf=SUxpT-|F&lRrvb|2X?KSd4qze$zappas7lPCqWC}js5J~Al@=alR z^j^K^@xfbLRgrb?ffRn(_4H|F<|N1emH`|=P{sgA1{j{tBusSY4t!lGUzCSmf}YoD zcc0y6Gjme#*+@j $# {Tra&ZZ=sOYvrw~x$b)LR$wB|D5}%%R{Q!FMkV%sli2K(>YU zq)FC@2nQOi_T#(TWNOi%Q(ibwqyUG9zPrt(fw0He*t+Uqp14Z&2qCoH{YvqPo`Ko+ z_m;U$9wQeyYk2eNyca?8Ws+Ht6Y%BZyYn+0+yLyNv!*5m`aXK}$kG7^ATy{rUZkb% zw{A%k1W-CF8@DL1ZTt4&ejM~et|I>{^B;JJ!(>E&dmC>xFhPqjd(GenTRdd*54D`m z+cRtKo_B!&lP`d7{3T0!bG&`i!bT8sDS@Xd#*Gx}ukP5jx@XIHEZgfgLkjbxLs^#5 zk#s0x5h`=4uBO9Mf8KQS9pF{hNb%0r`8FH7iG3RU|O> zZ(P7f0`{SVng%eJ?2HEOB_HGRCi 7PxFA5ciN)s#kx18wKhzByCW!7|gecS2wzoTbNom42I^sQVQf%A&^xgA( zjA)14J8kBH@Bh%oVG&>YB`UmSiG=JN?F=TOV#|_gDDe2o;Db|_!+MZM_AtTMy9UZK zVB*KM$t|alO*UN(1X%JY!Rc|JRUBgi@J4yEIUjcpZ0~(snO)e(o@X4*zP*}jHli-D zytwPl7|2Fu@BslxOl8c3bLHgUxk2t$&RwSIS80iO{_(=POkRFhVEdF~q8FNh7*;{% z%s{tvj(d#=pQBp&1cum;mmI(*8nU!Vs8a4k%L=daV9%JEAyM(Hv@n_mA$t@ciWN+E zp{&XR)q@l3cLy&YU~D_g>EI6d0+0Z1z7**9k>&*c=;&y{L~?e!^5rb)&mJAGW`*0$ zT;Gchn45r(>5yshku1mY&ew`u3bMjPAVU#S?t|6S*Z2J34YREM$7}p8ai~b{yd&TZ z*!#V(S4tdvCD?@K(ts9tHWzG5^ZoLUE43mJDnH$_3w#ueK*E^Xcv9|LK4kOLrU;+_ z%=Xx=n*7oz^Mvz*93bP`KH2~`H@txFNu5Yb4!`d4WHY~ _+?!VbGfFF<{5H@&I zH)sgBobH}Cy>)tH)*?fI3Z$C_ER7sQ4t^?ed<|bi2fNfE?J?fDqsr6^k%s$$j5@o{ z56DkoZWLfRx~;PShm&?0szyW|krl!V=wP$*Oe0eKY1hqzOa(~Y7ng4RwF@X1y_@rK zicBS>Alni!Jd}S)r+M9;kf7pggw5wUD_u6vU|L4q0I+r;ycYLr@ZT3@l6N=gF! eN ~Vhdp%Kx9sWRiR#}x(E2 N zf#OP |%ECacj>`hN_hi(LG@DWD1_nf)fI7LZ(p8xzMn}Y`wcdxZxpJEz$ zs@SUV2q7l>cfq;d2woc%UN28D1TKFbupo;th4~Cj0|L }5cUZ}`JUXIUkW2KA)1#cG*n+`s)sGNUQ&K8?M zUw7G5hCP{=d-u8eY2}6F!m0)l&qjuPs@c;v_C$|y^Qp69Mb )=R#{v zy^IO%Ku*xb5VyJKo&a#0K(71T+a$O3N@)Ei-2uf>7s!niab+NEgAQWiiH5C<;|H6n z_Q!E)$!%RcBq`}AJ(?>Hys0#(rC#;GBtX+=_`|I5eYvgT)WeV(A+2A2VZwxC)75)| zG4sAal&pb%|6=Etl7ufy8RzeZ^uE2h3HtKCnv;U?5aoJ32=!9$rM~@rb)M4%B%4}( z6`qbXwRMg{w}6vO^?2_Od0+LZtt#7KnIkke2dDIl^4d2_fRY)V5(0rrzqSz;d_pL{ z{9&p+1f^MrXJ8ux>wF++3NDQ+!Zr@c!19nY7Tpe-*|3)8kRHc#&1?13hm3Off%=44 zunegwIXxqLywK(@ba~$|CDn3Z*24z!(qOb86tN0#n~D5DRg?C-i<5Vz-FWa-7rzq! zwfdpxFZ9A2NUB3A*D;}hzQs3H^+DVh>Gs&prhZ4Y7XV9c8{RlPl5{vU_@KD2M`z;E z6x_QriubC){APao1MkBuk~}P9L9m+g9muo8Fb QkGPG>cx)|%xSOQwva~4+??wb zGv&To@V0q2U3GMN1(`D6Q;+Z`N dAYrwprjoTj5w&&vZH&oD)iYA} LI`@8 zr{mO{R`1MPb5U;VuUT1HO?Cqr`Y$ j19t$FGwgMSCI|8CiLvdBwi;~f>ba5_Am`vQG=4G%1%iW>^dRG z1E7ePca%`LCfj4$Axd1^8(jg6z7a8wYtAdxCh`69PfegF&9^xJ1Y8L6D0~=6*wNwx zC{q#(Djv)vX87Og$uk13rVOM_Ae2XDID{S>6NBgySULHnEFhT<)3+wp_aIyllogVd z7?6=b24&YGqeKJ|f%(-;6k9 8Q(EY4~cyw@G~;d z^U*DXzVk777wQ4kN=~KEoD}H3`5aqt0k0b-4k;dCTxbajnp0!8tiWBA?LtJJOy9}Z z2=~nj98j 9w7!QgfIR00YHGF;_)$XpO-1%uBUq^)m~N z9XjuA{QzCoKc&bar#`_ZyDy6Jl==$*4x>i$eJO`bWOD<;@iqw@-OIjOAN1 dm>hG C&_~o4(@^pa3 zG7i!${MgWAuE}}y40goKFKvd1LfY%jMI)mpp8kldb}VmNZBS+c(iKpqe6BDBlWF{= z8)+?|&?41p0=ABUAbrVjiJ`;!G}3&sLUK*;X2Ijfva%Cm`9S}lZ(SQYt5X-Jh7F99 zl>_x3#5nDsvl8eXb9;Cm?mGlj$Fm#}G`2vF@M@UR>a~y^zR*^z6x8@9T_=ko7!b?tKEHQSUQb>;YVu`W&TGOUH7UNS%Us5ya!2 z6^oKotqNok9XZp#f_Mw${jw8&uuc&P)LZCif({h&`TP()&on7IJQ3J1uUr5^fl!=7 z?wo|gL_B8vpHyJg@gBR>#CUGGCBSvjd`YIGR32XIcPv1V{_vrzZq)T2hZMh%`5f{6 zvl&kOnl|ZB@^I(y@17raJnP}9SjfXz=AVD+t^K^=0}+vlu$U^ka47dh*} 0= )hM zau9LQ2F+HQ*x)h`gWge{3CL92(9ym>)lq1qUlc`UA#VjD{>PUR2B-+yvsI$?CM#JD z^!*6d2_|myy3 K7@hfhI>gF$pOAtg7?9t>Qd(c0O==cWGWOh=01?aa>-Hw>KayZ4Uhczjl8>e# zX#LHv0@M>bu!hkv@c~=aiYxmy4wS7S^v%1DrL_*%6uXdLfS`pwOsizl^1)_yIVQ>@ z_!-=}0 bvR z^|&8$bSOnuXErlfi3fp;MI<+&<@iKqc@Ko?+d*WHWcZJv#sNZ-?6Hi+nbY<^yhOWF zgP6xsKm PLRdSb1`rquQ5FF4a@}B1 zfnEHd;QEmlm=c2Zpu?UV1Pz6-Vza$L$Or74od>^U1@^B*v>%)UinSxQ4mL7`@Pn01 z%S@3)5_IKPPvw{Qwd|fpl_CC?91*{!6*kyy-|@-~qk^Ez=Ru03OOJ<;kO-0@G`Z{E zizmS{zl^~MgQGS>bu?KlU`U(SG3}0lE_ElUcRMCPxmAnOIwYAV90d>oNmfIjwedTb z=d^Zo9tI(Q2nglRp!$Pa;8cXg6WlKv-?Rej)_t=rIYOKBM+)Lt&+wXUi#2sUw`te0 z{lGgz@s9WS>(pzcavxAF%RBWOzBxgF1`+ZWSaqcANUkBjEE|9qd|Gq>M?w0E1TK`C z!E!(%?T#P+5P4z8IkwhMc0PbL*CW%7M760E* V~Dn6JSKDB>_?Fd^wn lXX{HHz+*DN=TNd%FlJh0@ z?}`B1OEa19WhOKZnqXM7ZYWKqCB871_^PrPGASZ)14(ju)OA!el5TbPln_*;Pz^89 zJ^oc~K&%KyaHtn)Cb^gz?zcfD-pS*`8=e)}-~kX&A$-x8iSV2@FMvO{=d%In8TzXb z0$`UNAj~Rop*ETrm*4${(+44%C5t4k2C{YmSSFHhmQfT8I1}Fwxk&6K(z`sZDVFae z3>A#`lh~F%D-_5yH#Z9UQN7LS$#whH+&&+WcCCIdc)XdI@%*Yuw { nF3p-T3I7p%w?VL*EN_3J21M0GKs#~BI|2@l$M zxOlg=8f$j{!GrgqVkxw>7D llS_8CU$4V=oZ=fI``;EI^feabg z!EFx90Nfa@R+-t{KK>ip&g;^pD2A&Wr8x{{=Bu8ttJSb55CeXUO0Q*gq)E3*#GTrr zxX&>G2#eoB?%zkKAF{jGRGO;1MD~iEf7&^|vo>5Xj&U>$t{}>D01B;CeBA*Jd?`qW zlkuIrDk(@G_>^5n`z?+PuB;el=Z1?LSLN@6se)o_K!5n?(NG8hh|5N^YZ(Pn01A=) zpkfO$-O)ich7K00W}0@bB18f+l6jR4QMZH4k$hd4^q}aq&PO6nB#(OSHV67!`D7~4 ztWGjo1#M7SaWqj7$@Rgz7%?$k10H;iph&K_cS7DUbUukSX_Igq2?f4APP7~YYl@H( zn*cg6YzTIt%|9I iy5+lPEgEeJ+7vIwgPLsz4Q-lRBnlMc=44eBwqfK zja}g+u>Oo#7fh2Qb<2}wn1EATPpMbG-6P^z22Gg+vB|CwO&=x1W*P#vdrXrUtDayy zy5|_w7~Dr(DBF!nMp>;(bMGYf6z3}$ehy?G#%7qpH@%2qOD#k!#p@BWL_{#+Kvr|* zv%SnSk^&DOF1v1xH2$hnuTQ#=;}-#JZL;G}*kf`-#!(4sLdkQbHsoi4S)8U`q?AJD zeU`~g-k6JpbwBD0)w5ZE^{(Itkk`HUb_S*i6;6eos16eRK?8~DAqXre2?K3+-Tmzn zM+vAn2X;PdShw2IlmS}VjVdbCqo}UtMslr-+}4Xw0|OF$kag$Qc$|l#L6PEI-I+P? z{52r#Zzn(r7N)hNS5fQOwYtit9l6G50S2*m2{*ZT@!~IFpN(Qs6+}173_=C?Rr0Pr zAOOXSBXLC8yP(er^>LIamLnc5X+HJM6pDP2e=$t108uGODSF4JNL}C^lmUFRa|ELo z1RJ%LUy=RcL^9L_Ks4k6wa8Y=r(}JX#!@%#&?4zm5x$O449T_cNXT7use(K`zUqv~ z-b7fSnbgI#tvh&mHQ>9b`xUP03~w};q2~ath77MF4s{aFx9fmm0Zm_9cWdhd+0Sx4 zM_38=4m4PYPzd&qeO={SD5H@WS-=7jnBHi6eFswi0M&WOop172=m)gH>{k+dm_N1} z6mP?`9zf$%FXXk{Z`nEu!Uw9bJ d~?wQs?`c63zQd6nH}aJ;SPP ZwcvBC+p<&_Z!ZZLo%zyOI*KI- zn@FL(-0PIw=Dl7F4hjn**^u>-Lw7v9`<_pAOB5jS53vBvnqJx2a`#;;U1|~R3mUQe zD EctK|PLE>jS0Gd$xkd~d@yzat)5e#2rf>KdU>wD5i=qVU>E=sKCkM%sc zciW&mK;$V(nm$E_y^BWtsi|9&tkEeW5w=YdDyr7pm}3kHJbL>THx~%$QoEv@Z7+GD ztR9FCN`V&O%Sf%CbK}#W2)!`wm*?h2H71}=C~0y7@uc(=)UVV4_Bt(81$A7}o=$W0 z!FlYul~P6yiYO>lm}aPu<}yswg( Y4pA^C0)!BI(!sDV&7DVTtFEeFYlsm>{P9!6 LN_=Rv2Z?UQI!>F=XXMBk55s-r~B4_!q>14}+7g|f6zBm^hS zO+vXxf}A{zCzK*RFj$cM%c4P+%mifEWYfoT+Yk6^9EKgS<<6$|0H=5vHRSEonI~Dl zT?6l01NLW^A6-uXVGSOOs(!-eqkAq~;hK{OM%rb |k{i{PK_=B(Z7_uNaFQ-lnk znE70#;k4yl`LJEG2PrO;>$Lt7B=LRK^%Mto6(qV5kbDnUB%(q_Fu^kO9@XJ272DQl z@z^W9J1-swpu~IZW$e>td@cEvEUK?X@_TM>Xi@g4Lr(ns(`^VKA PoOh}^e3wm_w`ryQg zGYzmnqS^{)X6%w@TGa4n1ybha#XU*TcIB_f2{sfz`-DKjh$vsw;R-QYMoE^5J;8Y} z;3xs5?Wjy~Kt-jZHd#kGT2^Zg!2jCW47`|fSp4M#Lp}fsj7E?8COBM8M{^teCTZK= zQl%##QRnMP7M0Mid5Njmy>~B?mt{80u7%~W3lU>7Ki |W(L*@L)AD}Z5zf>H z@uxrPArGF@2%xQJ8VOlt1dknNjjsVPK{Aj%EoCuw9||#RM2uG7L>d(V#V;EN0w)pE z5XdAfIT1 i>6%njNOCsS@heQgMN4ofYNr7+QnC_yI&rq%*(N(xhT#D*Vdzfjy>u$YFSF1K zUs#wOo{3XoKC7@8O`qUj<^Bqo2V`#ih66In?45-IceUlbon0x=ybKe&z)UU?MM&qb zE+wdJMY&3B=f7$)CWUAwOIMJVMxTi=z<9=R-b%bwSgP8?>G+1>BqfnP2Y0nt<|D~d zF^vFy_jgtFquvuRu*PsBGA&&*j&xZgMUlt_4`5i&|DKMrRe~Szn)JvLU#J*ZAaT5$ zjZNPFE=<3nz<>gygaVelGpDf2&1%S}i|^|jIy`*g-F9@89ES_eMkL4~VW5luur&I& zg2^MjI5IOJJa{>Wv>m9kNbH^0HgU;d!V%b=NB3F~Va@Q(I6vvLs&knki@czoFm{bSyYJ~dU0hXmKRF)pl+vtm z-1;{l6(4=+FVEGw9_739zED VxsO&vm0OhTqNqTC4N}Anc?>_J>f&y-cvk!ZKHRk=h`zhR)XS_S1 zVaN(6za0_Z`v(2gB>$j6#)n>?qHpEAF}V&jhf!5GDGjUHYrJDKfHx!8A;91Gn}{=7 zsmat=CQcEk*5|qAL=Gap)lCY0`UkWCW;FHeYRoSLn_xv%a+ RP53$5 zh1RS3Ga_>MZB%)U)72nE*WP$JEXWXL@Zh#BK&arM8P@k_H!2}O8OWWuVxe)06z6Di z7A+PxQV<^g(@(h*`#F;j`5cil9jz!-5K*2uFy?Ix6-%LogB*5*PZk*plB8yj93Lod z6Os8*56Q#ZoS_Yd&z(~vsM7#sAEHw*_l%j?<=H!1)}%W@p}C|JPBL|ql60~o2*iW# zw*-h~QQ @1LQ-Zuik~2v zSrYL?&KLFOh9nhVOC&!Io%y&G>#%>e6~@9g6_qbPD>?`5EFjyhUc+npa}s+t)dG@H zJ9-Pml&zvat`fWfMRV4UI2=yO@H_%f9O>mV+V94n+ZaJIaxVsh4-6>kHZe0Bu)~zx z_;<^otaIO(p5y=!rpVoSjO5fv8WySwsUtw^MV_|IlC_eEz*Z+B9Taj_47sF?0BMNK zu(6wcls|uL4=t?yxzQBDKqN)pKYL{K2Z$C-K~oYskJ{*r6eP}w2PC(i8k5r#*9Yph z#1*br4Ujz40|=pa5)jHGpwbwf!|D%Dc7y!kvG(I)7=LqhB9c=sE D1J2GGK=rk^;Gy$gO{-G2sYBE3$ 4EucmIZja*N0+rYcb+u4ga5XRt3`j<6RdSq} z@}~wqM`RKq8A|GyhW~|Ef{Lr|apb!K2`l;^MYGghIGw)oH*CrsA>-5Tle=z!bhe<6 z0;Jkl`;y59F%_U3sHMWnP PA{xBRh1 zW>9TY_f-7vC5ke gTH? zBI2Cz;#&m0{WE?oQOfX7N_IA9JD(2>kjO5Vqs$GY+Q{Yh37y02f;A_(FKxqx-7}Py z2(ab_fg-DRyQIdu{?<$wj>RPQCYAd`Kje|j0qAD2=7~6Fe<8$(z~25+qF)H19iyp? zovOxqUE`N+T5{ATD>E~5_e?mz_cqjI?EaH`1R+p&ER_Gp+_g?=`7Pv>e`++^I`ELO z;6I@w l{uTwi25SC|Rj+oD`~PR4Yuil4uF1Ln2q zc6dSc`gOS-p95)H;ev7sHq_`3dM*t*^d|nznXmhHwx}|OJT21QwOJp0DPep%rAv3I z>U#FjFfCn}v=hc@&zPpIL6YJz4*lHX$S|kd_VQd)x-9wx$76uV=~mDZJn=F9I6t>a zYiuXw?xubkxo!);fT-vIarP+;T#h9vv^-*NxvmO*WN*rw>*t$li-%Jgwd<3c8+;s+ z68o(0T; `sZFv$(f8 zTuUr(z-{J?Wh&djHwwG; sN%Cg%=V~4uho4Qa9~$j^NCk=? z38K8Ay5`zg`%7uh$zBDJl$@zs^=$P4DX9qI<&RvOySuZ^_))h8RMI>^L7Ee{mDi-o zzx uLa?T)QE`czdf+ z36d(5uiq|!Gy^qAj_Xfq37pSUv`5tpdz1dvnCY1Zo2*e(7lk*x@Svh{9!IJEcv9n- zVMeyOuuTFdEZ#!gK+EA+zvl@YYp6Y>GLnaUd}7(Tn$i#v?oe3gNvWr?rs50E84UhB zF}SE1uR2}b%ZPe8H9^7LPhKmK=ylhjP@~^t0{eM$Z-NI~{@QrUE1*UK_o%wr8VPug z?t$BXdp`-6ggtPWNy9sbWCrvyDrKHGtqwf*SmD!h`PEL%O4$SG#wp}ydYLLXIY2jk zU)RK-gG7(H=)rI 6_rA8?4Sv#wCD16rqZ)HWVlc|9^n@6#R0><4+ z=8I>mr^e2-)S~qo;A?HMyap4FU2?~Hv+r>3-?M3MW)|4lv=VTA!g?3mRp^WdSz_7> zc(ZK#FV94VMkd55o9}7E