From 286bdd0b930be31424f2c0f1920a36be10262fce Mon Sep 17 00:00:00 2001
From: saysky <847064370@qq.com>
Date: Wed, 16 Oct 2019 04:05:03 +0800
Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 75 ++++++++++++++++++
img/1.png | Bin 0 -> 624606 bytes
img/11.png | Bin 0 -> 119712 bytes
img/13.png | Bin 0 -> 174654 bytes
img/2.png | Bin 0 -> 607344 bytes
img/3.png | Bin 0 -> 288449 bytes
img/4.png | Bin 0 -> 278567 bytes
img/5.png | Bin 0 -> 336937 bytes
img/6.png | Bin 0 -> 254950 bytes
img/7.png | Bin 0 -> 393759 bytes
img/8.png | Bin 0 -> 354782 bytes
img/9.png | Bin 0 -> 540588 bytes
pom.xml | 1 -
.../config/shiro/URLPathMatchingFilter.java | 27 ++++++-
.../exception/GlobalExceptionHandler.java | 3 +-
.../sens/service/impl/UserServiceImpl.java | 6 +-
.../web/controller/admin/UserController.java | 15 ++--
.../front/FrontOAuthController.java | 12 ++-
18 files changed, 125 insertions(+), 14 deletions(-)
create mode 100644 README.md
create mode 100644 img/1.png
create mode 100644 img/11.png
create mode 100644 img/13.png
create mode 100644 img/2.png
create mode 100644 img/3.png
create mode 100644 img/4.png
create mode 100644 img/5.png
create mode 100644 img/6.png
create mode 100644 img/7.png
create mode 100644 img/8.png
create mode 100644 img/9.png
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d185a13
--- /dev/null
+++ b/README.md
@@ -0,0 +1,75 @@
+最新消息,SpringCloud 博客、音乐、商城、论坛系统开发中,开源,[sens-parent](https://github.com/saysky/sens-parent)
+# 关于项目
+该项目是基于SpringBoot2.x+Shiro+Redis+ElasticSearch实现的博客系统。
+项目在重构中,目标是后台采用Vue Element UI实现,提高用户体验,敬请期待。
+预览地址:http://blog.liuyanzhao.com
+更新详细介绍:https://liuyanzhao.com/9354.html
+
+# 功能介绍
+本博客系统基于 SpringBoot 2.x ,支持快速开发,部署,采用内置服务器 undertow (抛弃 tomcat)。
+
+数据库采用常见关系型数据库 MySQL,ORM 框架是 MyBatis + MyBatis Plus。
+
+采用 Redis 缓存数据,所有数据基本都先走 MySQL 然后走 Redis (部分分页数据和搜索数据除外)。
+
+采用轻量级安全框架 Shiro,目前本站由三种角色(管理员,作者,订阅者),也可以动态添加角色,并绑定权限,权限和后台菜单挂钩。
+
+ElasticSearch 作为本站的站内搜索框架,支持分词检索数据和关键词高亮。
+
+模板引擎采用 FreeMarker,为了考虑 SEO 没有使用 js 框架,后期会考虑将后台改为 Vue 实现,敬请期待。
+
+前台页面还是一如既往的使用本站的模板页面,后台模板采用 AdminLte 的模板(基于BootStrap的)。
+
+本站支持用户登录/注册,OAuth2.0 第三方登录。
+
+# 页面预览
+
+
566bFFGyF;!!m@;0+97SX4Y)y{j0I|2&7c_N*v_2fQ& zvYHv0=|jMj7r#G#r;+OlCnnF_M0#83z4E@nP2J~yFx|NXg_$NAxxB7{)DF2}QUeJ^ z$joV$;xsI`#xoya3pZe4jR-2T;ps#WD;sGFDS6S)&yA4*xZrCc(vf@kx?SzLEq3w5 zx%-yJ8o07>yZvN`GA+`mo>Tw1)W{0gdNq^F2?fxx;wQMm^-zh%{Hc3wvghlUUG^_s z%zk2}m;du6{*4T63GIPMM*;9wOjqcDPMG6}G^9-X2pYsK>O_GB<-n;0t zifg(RZy^O$6QmO9+y4mxgg@&a!YcwyM;hE2 (ZM*NJLWB zoDKy*aZWZS#$YdjwUSXSDmpURNUJeL#5B3%?T!1(U-}nrl-=J#m+OrEbQUi}cWM1H z0nf)ipkU) Zec$;6BYc19p)Rj`^5f=O zw_?wgcy%2J7p`hgyh6)A5;V3gmg_DynE@4XLixY(;^i8 z)e(==5?`_Rqh_oVymz$sZonN+1_{WQYOV!3qrGvQ(U<8P8Z$%42R4;Cf`YI713 zoI8hQR!X(fe%U2jI>f{zCmOdAXnAS=VKXj9vwo=Qx)I`qgJn_vq8u1_UU$(`(XqSN zW+dC_oxRO`YMpo6v_6jYZ*@9Or{C4CN2b>uAI7;Xnuh~*eGt3TDLT2$^Zg~j(*02D z*fnc^zqcx(3iaOG)+b|vebDC8KW2=JT;G}7l{AatSR;IO8G2xSl6#*cnMaQAbq=d2 zLuYC`_<3?9rER@Z8ei{0$<+D50u|~P$CiVQ(&P6Mt2ZiEV>?*KW|Pj%bB;Gh$8i); zz~1;`HOiX-66v9>*YZ9f+(}AsgbgHiqH VS*62CW^T8P!5q{^b+ooSr3kDWnvkHhQ*+s}i4n$5?nZ|7( zH ?2&7;f9zqWMfEO;;hRBwzpAr6_u5fov3#|yWoAWn`u=o#m~I!^ zyjR6bFEbTX4U!jxvQv4UyM6(TH&tGD1ijED{s3-R@eMgyuurSFmiZ@1Wu>PMV_gbY z3LDZNOa5VfzPpfqXE9b?9og3h8HKKPYZ-r4HWa};!~UMos6AK{
l&ttnxm~*6JIg%C0dS!V z!fl}d5S{*X9zgu8a7gMPgKCQ*Ht|FP63SoucK%?_6$;qZQfC!tw5E%rpg?|SYh$&R zE3b1zvSX3%o?vz^zQ)0Kp55n(_SUiWIZ*rh+^1=@d6~m#-IHC;<(^-oKlv!SmYouI z?4qx_0>A~&w6xW2_T(||W(oc5``D0CB}pWc!bY@a;E7a#ccvJ?zT8-WxX`hBZmq;? zvzF#yKDyf@h5u>uOj^7ca4dyKirV=z`lype7nWcA`(DEPS!T?&8W~de_jGteheZuZ zNcS$U <(56&2kZoHpr}l=a*BUAU73bPox$oh-mAQ`NN!j|)A#k+! zA=DfxU+@1qD+Z849c^$S=k%AG>Sw#E-i!?{={C&Y8ULtE _|%asRJR9D!I zbw899#taU0imPNrjA^hu<(L*T=NO=Vz+_*kwft0?(8EVm4?WKX3oO=@o}3xiv=hmt z7)22X4eN6ijal-Q@w+ROp826=KSvP8W$5(X+pF2~b}pNltgO!)A)KB$8`e#6AEs1P zh=}Q0@82)Dj?pmQwd5+8&d5q4`E}wfuKkBJEXx*$8<6je4X+QFQlsJk#pFezCR-jf zqAb9UlF;*XVc*_LTo?p7?E!)Tvzcq#sL*pisYCx&AJ1t{>``eHy2|iHwh@W^u=@&a z1>LhzWjY_3x3n<7z2%{I8h69_&+(^xQ9|&|US 7P1YExiO_N||)8 zOQ8Wu5mY(aS1Qxq+O_Ti&ZVDKFG91Z=;Tc<_?Wf@Th5$@cx~1rHB7*BsSYcSR6M*u zJF=ES@IJCm{7l2JeqF?E+-)ja_GJ1RiDjc~hu87CDB+j1?45IsU|a4OeH=PRms!UV zoM>84e#%RmQlUf9i173fR~@wN+%<5omYgD@_&TKH{2ChH2A_>MBu6&7!z_b5NuWCO z2FPVcA=m7@bnlr{9=99QxR~DC|C1$V=GwNUyPs!n7p69h-mX51Z(ag_^B2cxS}Mr2 z{%7~Cao4m&2#!eExU ZS74BGtg!vzjSD&0oGe4W08VaL$l#?c2T0ZT) zfg;nKJIMF `EL-@E+z*IBb3@gv?1YWHT4=(fqL@~V2K6=$HWr|w26W>yvDG$s CVWHpI}XxXt_EW@4bCQes8h(GbuE+Ie4vTI+A*0 zINcJ2V_TZ`(-2QGUYDl*NH0%Y_{^-^TrskGc`yWrAaJqqgq)-;Z)`DEWMii+bY{S0 zwq9jakorL{r8Fswk-e9}figgSFRXyhfcucU*30eWpES7d=DgKKGIpet_i-R&drVoe z8UwXin~&`92G lJ3Idcjd=CBK^W+4Pvn(j-o8^Cn82*{Qd ka(e-Lx+)+`kIzthx1v(na$H1Jzi&vi6Nf_$*n{tI~6pyOT}xL{1t19bYEzg zzcXiH;{j*L3%@vAxaAF !!@F;{C(hVW7BjH10Vq%a!l#EY~JQOf< lh|1M9=`f_ba1(CBI`p7`}w)NU~8`N(@=W5jO*J{a&r=@82^N}%r?Y` zPQDch_Quv)+bO^ml}fug;y_JdphY)aNK#XXfaqm90Amhf<&}kPVi2WZD$H)>ubsBH zUi$`mj=AvcRsXDdZ+=ROix>PF-u|)r*k?JpgTz(`nHyFJRT8K|f~eLum#-8+LxUceO8VWg?U<2^YlR#?@}L>?9+${S|jx zXv!l#gt$H_hNUZ@S3uXcNE?+SSoW|O9H;H7_s`B?h^C^*`;-u>wqGbR8b3Hop3Q!s zG9fmVkTWJeo&_wGu^t`g=SUXPwfC#cpI)|~1f@@88-C3*O1f{N(Y_Bu!1$O8cnW%) zOr-Dvwuo%{IHJglU}Ehj#$|0YUg_mrAIuakWTI;_SHSZX5w%U~>L?Vw9XF+lrRtC2 zx&F?qZB~2r_)_!MXRNGJy&s@Xl}gsSD&+)Yx{&k^m{8I(BALkp8U8uaq{X6&?B0mc zMl<~9PYr9<#jV+-jMlWXucH($r}ArxQTu~R$$k0WMLOe!1ICOb=g4(U>9?@5TH(qx z1;mS6YXSkwz4wD}U#Grb4!%ti7)HNE?}5+$!}}`Iovyq&^G8vy!q?FtL4)*LGbeA9 z3&*E^%Hz`OWvj~l(r8TC^27@r9m4ve^aX0rpOhYnSNTNI`d}87_FwqK ziKJ;4d6EsH98iLN`spK}Lzs7@>26h2He%JjZt0c&VH^blg-9R+$}mk#%dwJZOrp90 z`;vG86<7U$9hjf9wSx!OIW9)7B=~R}D$r~J#T>L Vn`ppEbkpa!FRJv|eEpi^GoKV1L7PdLK?5+n-2V!RtZYu6CpcO!044e#C zSb1P}Dn?d`T#q?HK+R#)*-&t;LG8PuB4LvvuwvGz6`8|cB5PC~cm8dU_AalZl-^L2 z48|H7lF`PA{opm?UN=-U`OUMldV{fTh=Fm^lv^tcidba@G9bhB>xHlS=e8W?HEO0x zOcJwJIify;Y%G<}P_uGk(!j?bB%?2c%S~Nu%WxqB>5+r-53toWul8WYiI+r6_cg4J zV_)DJf&ea|oaLiqBbF2Seb(K omb%Hws;h|-DCU^A*cd+? z`kRE>nJg~eCnw9mH*8_%OPtg7^{sWYMHEHM8fNH`wP5{cPwIY}ES5Wg>I$HTt7fLX zV&nS5g)BMdt+1qNYpNXw$=d92{aJ$RLHhN%5kvdyjh<$2)Wv)Yt zuy+A5W#28u8}mgrWBwZ!DPo8HFd0^`6*@R?rwbQ5U39~I86CP9^D$;~Zv{5^tliLZ zq=KZmTGFzS3-`=eUa+bm54MMV4^M#!EFHqgQ{a+H71a`t7pG8)U2Drz7BLne6zU4j zEBa2g(E}+&wA$Ow8_}ohgDO}b^A4&v)~cYP&=ZGc&;g}&P{s+0CHll#gAU)y+aSU3 zRQvEu0lV_qB<3MqUeoS|+ZguOE=sq81vb4WDpbN(U%(u9xB|p^?mRt%ns_5BiCM{v?N8yO-|Defm;fuQM?7ZS>YU)ZbV2Q16_@ zQz2`vOF1F0k5*8+uVCuud0mx(D;ni*VszGWTfgoZ$Yf{%HID_jp6u%PJ)`75w<^9& zv(mL^#Vk3m?EPvCiE>Q$Ey!^pIAfdgU@7@F3lF0P&^$uRMmKPSHDANUp-}DT7z-s9 zP*vNp>*3?{T>rqwPC3{ol85OdB3&X~6AD-+Omxrb%97 ZSuWx|Nq3v~ z3e80;h*z%Pgf(EhDy$k?)I+?9Lrkj6bn_E!9b*iWoOh$CT%Pg1O%|I C6CL9qulM>+6d=3r;D}xecWO?PqAsZ zqF9k_1r>&fl<7r2E#xVz^5wY~R!St )>&uN=VI|Y6_D3#T{cW72=T8v%w$ZR6Ab+7I>>??d(0p z%EdBLMk4leCy&_@WFTEOvq=oN(!Q`gHN6ko)x_J0Dr^lnc6M5;l(z07>dxxvtr)j; zGg9o|DE17>=!s7&c(!El>&%u3-_z2> U-wy>K#J%Ce HhZF_Y4i>2;Dskupymw@7!A zIe2l4?b#5R1A`ve3TjRW@RpL8=lLPE)_>8tklQo?X})gZZBJh3me!~*w}yZV*< NK=kP0g{Cr1Oj?QNZ_`C9b;Dg4HfR#pnd z6+d1l&4M^W>pNT6g1`_!>pexv0m5lv1%_AF`GrLl`Kzy6nORslCFfP=KYtBVRW}C5 z)*obNbDe#)^YK9SH@?f_xNb*fXiG=d0=SJ!jGa!*{S`E1HAhV|$`PUrGLd0ox=b5i_Vc&Q#>MFRvZWF x{n|Nhf|q>vqrd?v)M@$K<*^3^$0#2e5?XtCraF!>-g)t8=$e6{{rNqEzG z*?pzMP@hdJgkX?1`(AEWun(ij!lu^Z66hdqO*x{7H?*;hX(qH7&vAp{bVpnGVq5g@ zB8UsS3XpD?Bcf;&*Cs&YZsRw4-G*5)2{PzIR>J{NH}y<7B`4q2(#*?dPlvO{wJE1Q z%_*}5Os_PT&%j0<_89Zkfin0oXpf3$_Tw!TU#9}+W z77X`2+&jL~GQk2b?)?8E2{c670pqUKgf6(Av~maC*X=3Z9tS-UhsZNikcNuEbaP~- zPcb2B3r&IY2iMCuM%>dS((tt#$7ky+4Y(k)`OYg}M|sGA-ma<3pxyoMME%KV;9&kD z@Aw?9y W;`T> zq+_P3g1&r6#Wh*}IPBKOmE x@%XJr zHH6O9n-8rwuCeZovDO#JVY*%a(KR2xW6LEL@q_<9?w$MP+H9A7XWo1APN)H-XnV+# z(kCAOd1!~P1NG(P{)h1SxK;ZtoAF*KhWoE0Fah(AaUQhth3wX~zZLR=SLueh8Kwg^ z!Kh2B3r=%yQ{aZKnwMpr=q|rnEUN@5uB?-A`+{Qro&Phc#DO;rr}B5qf8BzMJ!VY{ zCo#6O=iTK6ZkEQ)YdLs+pSpEP{lHmPJ >sYTpool~PXc#r z+cs>ZenmcF0Evh^!Tv*-e(!B|=_?n*g1^uMpQU)QM{CoKb>YL(kGq$+@t@ce5ROAn zx6NjqOKa?v>o0MraHr!X }WdHo* @cBa1s_n2_s=U@K6zVLs1|G)ey z@doGS7<4QyNn!t}f4T|oRvL`Mga5!5zTuExs?pBe5dG`On78r0A_~G6E zuZ*`+L`-zQS1E;8CyGg-f1D>H2Jje|$HF2fr=V`5@b$6J-Q7x(X(xT(TJWg`D+e3! zt!kvx-fp?OVYu7YWMK~owy_wN^kJr_%=pq~9N 1>9K&sas~dO8EFS8jWX z(h5BaZ@#LFttp{xZELd_{#77=wMK4~9|Vy=t LM(ZTW4+fMlMIIw&TfQ+crBv^(I+5# zWTAVkKz*|BpXCO;eYQiJhHl=;bCSO>p6rJ=gbNy$+@j)@oQhww(D!Kc6g~&8T5QG- zC=&j7S^i@(krTgUXygn-n2&Dh>O${`Z>t;31duWg2LI9L|6tUAP2^8BU%j2ZmJ&In z26So7N*h|`s(V8lk>h?7)%YyHD9DXMc0fmFeNRx7Ub)px)M*=1?u%@r{o0vz;f4Jh zMx_*u`foZiK7PC(!{w`Lc+y1fL^)EVS%}KNrK({aSQ&DKMzlBobT^$iTA{!G%ri~E z=IG5Vd>+>*$g!25_mJY!7H>pKaJ!R!D`eGIcgzn>_4Fyz0b9&$u#NnwWL8_{lGBG& z;qFD1gEtYS_oh~sRg@HJWeMcxS%CXHCR}Sl z|#s_F+a zUT<*KW5VpP^M@GGU}~FhGt-(GP;V;@dz$hxot#s^9o^b8O>4I?aPH$=ci8CKVzO|I zmiz=!Z~u^TeP%|4Sa!-?i`W0s)C=o2CGpiDT!zA2k$j47$|I=8VEcXL7HjU9(w?wi z;8@WI>LWwSv2_>i8}>;RH*q~2dG;#OiYl6M3!Ui%a{|BS9V}W8sC2L?;rJ K%ZcnF%ZJsQU6bHVJa?7!x% 7>&uE`WtV7t`KJ!!@@F^sKPDx9FA(u_%3tYALO>F;Jqmv|({#!? zB*|3_&Mc%8c3u ?fE47C9Ckp(5~Q)cG%g+9IXyARjlze8cS zn?;slFMPQFB6m_(uRUl<5%&D<=ZmrJq>7x_?rSn(omJ}DncUMH=8x~J&`6A3=dq;~ z@j(m(S}6dg-C-jZ@^&do+>O&6>$IZKQG4)$@O|oeHBXH~gIVpujMv@(-{3LgMJ1j? zuUXN<4LG&^XerEK%i@T^ck72g7U*ndDmdLNzJ-aXutAKvOvR)m4CNpbxqRn~<9xPP zKpMK5*^1U$2|F%`ewW-UXPAD*liz*Y_^zJ?aGGQEi@@h}z)LZecSPOQ-PIC>M!T*! z4^1p1;rs+CwgK)lenS;X^2%DeR*64 jrq6b*Au#-fnH~SJjV{CbI?y4%h |Ji4w#X{N){r3`6V58 z8e@R9PXG<7xP`$M{s`WMDK`LO)H?awf~xLUdDD?Qom@n@oc-x){y{Z%p-!K#9XxOU zO2ju-9c^`@11gr(g+tr+Nvvij#=uj0m_g@=a$2u`S}q}!I A8{RsnIl* zEdrj^>SUI1F3xkmf+EeIbBQ-cA%(Uy<)VQ_z>lZ>5Xq^$D5mwpdbo*7u!Ew2CY$?k z=W_Ie_&J+Og264;f+0-xMtNDfE)K3}Y$pr3ZTC(pag*FUou&q*`O~plx1gfp=_M?7 zJ)OIg^ZNOHN9xK$u4jqqpA|-?KdsXawP#32)n}X}^41<~$V)9KchQK~LO~3g`En>l zL7#l!p*9GFup@;P)aZ#Vc|XGYj3ZypS_ZM}9>*eh_`WS7 zEuF`tjg?gxp0U+@ruX)303i{faE&suizNcrNt`4`#;h=Smh5XgDPr|TR#8Jw&qqf8 z`9%xq+;~^94_XuzWd~AVv)SY0@mDH)Du7$K=1POTM6sp}k2KlEL|ZxdSg^I|iGyLG z017e&v_8e**2r(N$@7HmHHREd(YBlqH$z_(DL<}G+mx;24t@O;UJiits`uR)CwK3w z-Nj6nnMYLEO^mxamY0)$4F5bB;qL$hCN&S}!Sbps+fiFE@li$R(m&o|AJ&j~sMSF@ zQ!&%~0s|~eN(?veNgZPPXst1X#mt_Ats$7#z Yy;;V l`a|UvE`aRmmyIZ4G6ShvMr1lq_!8<0u*x2?^%xR33tBc!EpUKg~&* zECkna+?@YILnvQe<*MI*`D=vzg{SH-xBTCyM4ZD&NZn5wkqX$_UN=yA?PyVXcvHw3 zR4yofw3b1VM7PlpfZb4l{-#Lv*YrQ$qtn$xP~Ykk$CMXnDOXt6?YiQun#h~?RlPn) zM|Hs7ndj~W11((RyzpH<)Tt2)U32U`J5nP=qt$J_Jy~Y~BLw68pp{Lj%v&Z8YO60i zF?Qyrp5*-EY}5Y_Wp5c3XSZyPCJ@{`cp$+wXmALYKyasV4K(gfaEB1w-D%w2rLo}d z?(Q_)&b#;d&bi+h_w3w%&yOBGy4SN-)vP&Z)rtWL(jE_#tI665lhuntr4k6W*On zc+||X^K$vAj{8@+{Jl${+~d@}r=X-Hj=In>)J%>?Tt6@{(5L+ Hti3hL(|2#?;Qyqg@$c9XYm#!2nZ-Q?FD-BDytrFKeiXOcn?SEcsVC0oE` zTW$4TE)Iai{!dAd>g*#)=JsxjDZO&56#qDd%jzdL<2S?pNT7KJtL-o5mOX5Nr{546 z%Nbb_uQoE*yVu%I_XL_X0EA}eV~ff7*woU(y*;jDj{p9f|KZ8z1Jaclrt?){bkjcH zD%ni>bEuu?*$gCfMpgV_sko36&!z;2)3$S4N=mx=bUF0mp+$CtWW82*ds+lf<&BEE z*$M;fMTAB!VYTkmLoEY*>vUoCdprVyMTW!SyNt1Q_^^*6 u)M?J#zO|7r=;-Ju^LX^<=Zea_6MD%^ce^;}8j_V8`#pSQ(Y$ ^U3!m zOScRTGpR{IzMwZ%)uxC3G5B?BXKJbk>E2HxR$*abv*H=eVq{VE;u$jt_XrpVSqLwS zO-Y7-3Cp25;&*|_67ln?8xGewYS-dPD;4Qny&9qIeP~pus;6g~7IQ-OQ`|!Pp&?c7 z2dE9aHi?mUiSCe-?Q1axM ;3%Nx(!6S6wzj*Q>y_XAtK7xVFprEsSt}v>e2$gG%jY#rVE$ed6vw3ctS80>eEfs z@)96Dy;Rfl3(iOWUJ&b5IN|5?l&9y#1JT_4e7)@p<3!eT9u8})qLW$e;IL+BRn3e% zODFsqS^ftMZssdE+W-Ag7!9uhD6&LB`D(t+@{s7Es>DlEgK+;-jVGR!mLS4p_FE3? zt&m^8`18Qp!*N m~L7Ik3lQ^{x<_q9o;@ 5{~RM;jB2#5q2cZ0%$PXS81Va=r7ubXNrlHg z=bKMFnH{vma5r$!F$csusyhQiauP>*q&7BWZ|qTq*rFyt(x%_;uj~~XSqp}3Z|!pm zg7^Z_2(_3B-oY9+-yU;+Qp-qRj*d;Wut_Oq7ZTDX?TYg(7)|fxvu?>>DCI9OHR|Y@ zdwaj3{)j==hi2P+Dj6sk?&{4nMbwY?XQN>Fc96Hf7@TqR^WVoRMr*4YTd!u}7~yG+ zP|rI0HP}7Q+2UOJHdMW2 ;PURxi4>+YwCS$9cmCezRYOe7@F4hy-#waoA|3@d zH+h1gl03n>jW29fb(L-98p*eB5#q14-ebWqiF~!?Lhd~-8X4kAjLCUV9Z4K!rt7IR zI`CNE=()(Xx00t+n<{+O8 IiQdO-78;NT0?bOA43nnge#{|+)i4u zl>&_%9uu1ur2)EaN7e)KHjXv0kGCR%^ozU>M-F4Y4aN4r*)~`rPOI=Jp=4jk<4s{x z+%6JMhAE<&wEzE)by(}fF1&%xGms42bn@8k>?+)wUs#yS`pt%FnseJZ*hvyuhTlM9 zkB4Mh^;0DgYPvJf;$@g<+`wPww(B0Z6wXyGEGpgn()=+;!r-8W1x)0$T1WcH;cZHt zRZ0A2xn_Oa=S!{dkj{y1hPX=not?dT5QDEDjP1pgS?OZKS70QWHsAYfC(9n4)=(Kh z9R=OC$+d_|`;1=MpV;go{AOo3IRqNn{7i{4-{wwRL#rRzv}S|pP-9JqH;aZ5Yw+RT zo_~~33OWXc+}+)s`LU9^x*qE%V#0YT;8MFImEbcxG-0sbT||-y=FWQWT+z+V&+lKC z@EX-_;Lt>x1>~lsrdAkVN=##J-@9q0&NOKa4i1hJ(>#JoOMkOf)oK~#{GUDZpZ8Y- z2Fx^3PuzM876wKm2FvCOnW8GP#lks7kFMp9u%LuY4F>5g?t#E)TV|&dS?0%kHi#{P@r` z=W~Gh$@_#6e>ekBRK)9el1 )z^=v6|=}DJJ>n!jqVPlKMeW$HIdU<(CKKVeWb|^f%(sVD-?ktB-~GY zdghB0%z3yb{;b**w=OeMXR(jnas>t^Ya274uC}XLH c*N6# zBU+KYy`_ze@w JZff4{EWC> zZG!OJ{aS6lr{2$a((z2Q3vCA1L<5r0l=<=Ie7q1)P&d=q)YPz+w@b5OcZ5eGWYz%A zneo^9le%ok;kFRMipafwG&BI?1W^nP4N-~D5xpMP`9Pktr8>|d43R;8IXSBBS#cX1 z1{TXLU#*oEosO>`=odcT6d^e)w>ow|IL@_ON6qLb*9VKuS}oT;&{u8j?C3=6lZgH; zo)Ct6b91y3AhbLBIV?W b3ijO)Q0aG99mLH1&`rQouBvQQc;9xsas1 z4PukiDVm0sGFK9hM!geNDX4TjOKG;4{EH#H>o9ryqvF1++eWU`HWOz)o#Xj$AJ4fK zGXbME!{NCCX;QUGuGn<{(ygRAixt#P5udoF!)LUpR+ra9yCa_q5rN47^^Ju%23GcZ zv2u!T%$3Ya7r&*lV$B7O =+nW9R-E7!V%bsJe%AkbKbk{ux?j-AcCGa7MqdexVKy$MvdjyXIXymq8)6n+zUpg zN6^xE)t+Hj8mmpA@a6UE*UlWXY3Y2oe;xINb>FeG!_JoX>t7egy?q{_ZEcBPGQ6+K zllsJQvQWz=+ECRo=PR_kN1lr;aC3uxcd$ra!YVqld_6UYlkH}KE}Ieh`8M5in#N7k zLnxA5AiEUd4Lk)atyrrJGYO9eCP5BM=GW>SL`1}i1=W?%(vFm*q$1RqAr-S(aoZ+h z?lPcEC2*I^czK}@UNVYgVj*9%2uA^9XJ@B)n&@215;{0Qn|C&tKzTf-0zWToL`-~U zt4Az6>B{$uA7E_@dQnjIotze?^>7(%V8_IQrZw;V4jtowq>dGtlvJn! XCS ziY`h<7ATHF@VzzC)!sBmZuNDxe>+IE{RAu|ov`QBDfOgNieqaUw{lJG{)%^@_7IA+ zm~`tcm#eS<^%gV7eT%2EGY_aX>K-=Q&tt3LhFzLgR7pwOELk{Bsj55DyK4f?_uFlD z=*xX2Zyd!NWdG)ft*tWsOh^a|4@aE~(fScUE9}~y!Z^U`e1mFaYHB!klJ R>uw_BnoXzi|i{@VY+-yd@-# ~bieNQ^q zKD&04C`~{?9++HGLhRuILA7kM_MFD=IbO WzG~odXMHAD2U95 gv+T@&R?_*~iAlPL+OhW$=E`v&r!!*qPefrJ#BB8p7PK(>uONL+_Xx zh<2dn^29Cllp7w0X9ElfBw89%_AgSA3CuOtuoSf%Yx8v3zvf1>G$8+zm5FF7JmyEv zOjP7bUphqGM6~W7f#=z9Zy|Rvd9p0!$}!}Tjwz`5=FiO~&D!>@6&0`AArI^mib|Z# zr{7(>A8Oqm2LXUw)$S#`jmk~xj(Lrz(HXOgV%GcL78lMV{I=3)%hU{T^}tn;Wm1~5 zg@>cbsHwyDrzhCHC~tTH_gkjhI#fH|Wop=Z%SE%7{?L=RWq+5)I@;xg;gy_^mzYmJ zG!vN0W? sHl v+eK a>2(&E&Sy$%y2Ut#kKo6- z-d-7v*{3S+Rja8fz3XG#oE<_nyGFB|K%0-4dPQ3tw@wYwSX(ceoJB#R1+rN>lhoNT zWq7GtT4Jx9S-F@2A-DF!m@)S}iuOsW!-&-UEpf7kIOsev)fWA$2CreIns=#G*D} zj&2Yydz+%0=tp{}w&`|+=RXbnv17^i?i2s#5A6}PI=Tu96xni;>rxIJ6Thr!7r%WQ zS=%}Yc^J{`81Ka^+t5npHVcOYp#zTrN~)iIVa6Nu{iM<&+sozh`i45$gaMktPRkeV zSRcA3|A5F>Ien38@%I7HG|}P5_`A>+$Cmij@x=qvdq4=rRDt*%M_w1p$mApnDW79! z{0MRFO%hZ@D-2yEzd)uCwY&!71vd2tE&ISfqB-`h2KO7JnYRS?Et~0<-U%>}Pmhz4 zUb_So@Hm|PxXW}?wQhNOF4VNLVqS5*bllD+RmngV_P+1sC{?dSEq_^E+<@I0S=BB+ z_Q?Mq2=RY=+(RbeZ6Ie`O8#ZX$MCMZ?wXjR>)cQ>_MlR-XIXRGaJ=jOEe*05r`dv* zbFw)g!MlL_iraqr_15ap&;l8$rwFI=VPivsI#Lu-Sa@1xW#bIja$HGe<$<2Hx_U!Z z#!2E!*Tac6Uu*&)wkC?x&CT8BEP3=#ObmB-$tjSU?iLx-?}Am~r`9``R6)FeJ{iNc zU4kEXcf>zesu~;JX~&XvA8x!61>CNuk0vzZ8~ab&(#x)7Jf64NAjXwbp*8a7o)$AL zRBY_*;(Hz`c3z}>&Nx{ciyEjrV>}8)_1Wtyp(ORZ{mRmq+*PjC2mA%@YzY_LKsw)Y z*&Es~a^mq{R)*e{SzO4>l}W0V>ONp-Eooy;l+xWuXp4=5xb>oG_bq9Pm)*7r){Pue ztD>S2H{B3ivMe{78gL1s(3;UHdFfswv^|gro}BDauVg+`tQ%M$p`R>;wgR|AC)Rcl zkx>HD{BjTvjn+GEK$J;3h#2JLRKW~1R;2S)eekyAgb%D+n^rYJ2xwxrqiNu@1v&L1 z&9sH}yY0nt<&r$XQ!Jn5Rg+O>M?UU9pt@ld=EAQheAQbeL*lzS)6**8bbat+RPiHy z6RX1 KOX1KTx97o{p$w>_R!@E+f+k?Hiu ziHs$Ke0yG>?gfko>{(hqoX8(4&e#~IpspR%;q*rtfC@897B_kiRcl!ayo)ub+-`2p zdxIq<%&s9Rs#d{#q`IHHtAo{3>bOtKh*eAKuzLg?^vbb&;>y)-0{jC*DtBYe!EC|q z_Y>j)T{AQICMG6sjBNY>)gP)V%jzfJ&CE1*)LRFK_J8h9wVINb0;;hATp-D*5JQ*m z1FWBdJ&a|nr?Go1DU0g_zcaCL6W6KkY>eok0~y$RblcGhFr2T4D)8veeR9YGp86TM zS;!MMVr-e7cjDj(ljfla#Xsr(m^+(f*T@>d@Vy}k4=K}%o=Jt>ZD2+ax5x3Y?M4Ul z5w OEqe|Nj__RO`xuP@B@Ex80MLG<@M1F-tl5h z*_5<1=4y51@nT$aR7whTc=0y9?H>>%1h-|0LqeJsdr)7tv06$;?ghh8l0p!seA8kS zTo0@#bE|jyS?~My?l fqoN%(YSNQx`^Tb!HHCr0b&_8r`VvA*v#=nh2RZ+qxsWP)H z4ySTYTcX|c7Gx2xFH49W*Vx2oR;gB|x4I%=e4@GF #Tt7a;QgQ&8uu}XMd*0!@DCO -Lh82ypUzMOsfzP7LKv6DaHL$&~Ge*JLkx#$qM#0jQlv#nT6;(5wvi)|Y*d zKh`rbhe04_(31HkA*GpL49KlK{+*?5pGZi&zOc b0fPDNFv%IT{5Zt4`Vd57 $fALwaKv?)gFYIt37q-xB%iVxj~Vzgs{ZEuTXf#0<>JmDy5 ziWWDlwfaj5>rXMYwX{l6=WFyqim%n2TeP@2p2r&5r$yawNi(k>rif3@yN)^bNXb4? zw%`w+PNp27%W1@JGD|ewNe=e*5mEKQLEXL!(nv^ovZjnM3eZ5sim$)0VW0p8s9wfn zM3~U8Ow}2*O%fP#y7@?~cUDw25T>7FAk8dLtJ#SWo{tQvWx5C9fAZQ$MT7;?jO1A^ z^VZs4#CpLAwho?%1bJMRNcniPUgHcWy{P3yKJ1-kx!k_!sNF=X1V{tDpKHJP$A?KR zYUMpIKi;UAd7u1we``93SNn_Pe{_)c25>>Kj84SOUSa=7(;HM!k&)vp+~w{@baWIQ zq}t@!s)Fd`XHZa9m54lxH4CG5o93a*HVAi%U~N)Pu IQ}Z=&!m?migk&Kv}QK%n_Esy~SRFe~Y;#^&m~tpP c5OYXRs8G2 zF(HWj{LKb~_4fcDw3Ezny0C=eu6m+nuz~RdXTLe~;ixOiYzavZ8VXu#!Y+WRpB@*_ z(w>bS^X*#5-C@y}p;26)r7F5`4*Ip^U}5H-7f!$IeCoame4oX;EskrR1x*0uz~K$3 zc$%04->GyJ5rfA44V;VqWF%y7W4EC4ddI*;T|EM6W5#Ua^XU`)B!yoy9@44RTnpSq zr^KIq(oT %v%Gzg-oBM 14X2X?7;ksUv_p?6y#1$Hv^-ipRKGS zSER2o5PK$Z(tDw %4VvY)D+oA{ Q2W`d@ 271l8jD1+5+!6SXwP{ygHrHGroT9D zNM({z_z7VIXx)-mhF!iQ-}m{JtQA+9un(dK?gt}$5&mqC>haxl+;e>K`0~ku_7&7^E_E)2n&~_xDB=nwW3ceRQ1M;dPOa8;UsOb z(tXxRGzIm>^JT=r50ab)(ySM4Mo;5tj@|AK!k{mg#OI9hv7dLcSj<-TYI|q*0Tw}k z5g8PxQ>!+g1@Bp8hdDdj-wfZHdLftB(17U9RZf89K>X SH{JX(ZZC`#XW9|=sU UDF;1c{$L5YhU#$sqRq?^aW5i{&Pb@&|K^BRoHMa4{$ i_ch@bc|`gALnRe$4+cbAOmxaJ zsw ZONINn_HGhw*+GOnya}C_#eUhKZ{*1dT+K?>$g|iI2UVyYUg8$ z$L%aYtMb`QimIwAn~x8^6WR+dJmsmn&&Q8eHE f_;oF zZb;!S6O95mi^LCA4Su%L*I$QsPRO!SQ|lHn(1_z J?*7Zyuc~Mu+c6dN4Y!8o z*#-iY86?u>W*i#yqt49noHa)J8P(hnKB?}>5iDlzqh5?4tk00vSntH8BdZ`2zt-ir zgZg;Yoi9Tzu8Y z#0J5Fba_i4O@FvAYHs{&y6cTA6{hA&1K&KE tW)dviiWu9aX%Sh*yN8$Td zh0P=KDoaqK-rM#kK@{|Q!Hz+OMkB=Aj%UxNW`=UeDOFf(Xq_9e^gh%YCvP<*U$5gi zRfOZi3A74wm!8j4To!C=bKBhR6_xD4)4RwrSKYuTXmz{gbO}S8e*3q0#E;76 FBV$Lw z@o3uol!O$t<>H1iX6B}5yR?5*p*E5*7gD(i;%}Y72&eIl-mMR4zq1T?+4`3TC0vac zOOw3yUfKlmPFAuEX`W86>!r|Az{L$!Qb$Sb1yJ2EKYuNyJbyESd$luk`(>@!x=q=7 zQhRTrmXEsis@Tdo>2Tky= l`Yf@Uy!?+3Sg3I_@H{}NYG)f?k1Zop zN(w=A@qhpW9+WDBvXr1(0fCW@OicgT$POr!$S%I1q{3y8>i~n1BYM+37$%t|GWre9 z1!8 s;#kyszdN zeHz!1ski D~w86W}qt1mh*(cE8O=WtP&@H$!4SkBE7( znOD~^Kc<-_KOiZxh*>ngv~}!^fo(F2V6g0^=^)?K@r0v6C+oVNQ-2c>6qb3W`}S-P zN3)rqwoj90 ruoC8&&*Aef^J1mhW}xEOc_V=i+ns*F6e)P#=0O>EXEZ6K)!iw9 zhfUbyr`zU;vpC#CRk^0S#c+(vrQ EFPND)T2MrVSMEvK- z|F4&C_eN1kF&4{@oGcK^yVDI_$W}<>LyT?YRHi33`y&r5PiJyyc%2TiuXcBK=mScX zFAvem0?{@0hFY=lq`0j$b@SexoxJhz;Q3H8mm*ST6l;)M`KFf?OS*mi3ghu20#C|)VIc7xz>aBx1>u}6kB!=BEyi91(!UU#fv zI(i?)4gHL2x~9KvQ L1l5cJNg^jIG@oRS6 zbPRf_4ztmB=uj41W@anOLG3p*rhG2@{>~~fg)j}p*I>a#-nkstAg2L5wT~adF4ft9 z%)B>*hzK;M*UG9hst3mZ_zs}USxhgltnA;?^2Am!_=N?+1#f&(Sox9tJ!}fMb&r%n z7MJD|S=pEB+G+-Fe}-MNnNm2TO!Yu(PC(?Hr+J}92m?gN_1dupxH|sZ b*o%- r076gtPUndM){0i(81DLOZ?*3s>h)f2d|x7 zMO51@r}IhcR>3L*#Z?qp`rBlj&>+lLZ{54EL{r;$bF?g1zNb-7)(Xv@?oOw|Q-hmd z hPB6=-xD8K0fXBrl5F+x3jbBAvJa0Z+$kU z7A*I-*@nM&zTDOIfGclh`wC2D{7%KNt{G-?ijGwn3l(#uf!`d xkr(Y@A6 zLTbr4ZW>TLT4~hwM22z&* H{^W2-2(JUhRd_*iM*BrvZqwovON z>!2W_e!j$y{$uXI?sBwo==tFzy0*U!;+~NYN~p(3=8RJ28hlq?x&~#yxy)yaO0Gx+ z?BsbepbV#2@F%VP7!|i|U=g$*QDiCk#+PGEl6sh39L&r4QN-WO@VE1vo*&(z!8vuK z$360m^-?IAr@8)bOcpJEHD8$_HQLphS)ug6#7mm>gA?Q!WcVnhU%x8Ndg*hGO|n$Q zwD0Z^x_Txw-*`DwGG<32Ub|(AJ-s3VK6Ma=EZWRkF3FP|k`QrN=hezwI@ PK)mY<(N_lF|Tmrb>gpQlVQpz>L#O5UF@XDIP}C*O+l`(mZNS|JSR z54*fjKu$+&+&c|*5T9>cjs u^qAWh1SX83uH zqz!d+Fud9DAGQg4)C)s}O(ft~p4wm5m1A!}u;7%-TV3zZPZ5V;5R)>w)zD&r%3&Rp zj|pjr=%DZu-S$QdC*>AdqU<0YlOeIT`6kXM+G~kJ9m4R`_GFOUscp~`r|HZP45SeB zhYw!#`p#u)YC57~tl?!dMOxs_nNC7m4t+AUvMS>y=lh@A hk*S9ZWnM?A&Q66&UTwqO^usMUISX1EU)C6v7g_1M xjJ`LA>b{eOR@My(^pEHRG7_GcMj| zhY4~%by+K~{Ki776;0Z7tc!u%(|5kzD=LVLEEh`4S8HkjD1=yuHHbvC2w$1}n~Pa0 z61G#s)^WcUACNaU18F~^&$S)zFwr^mm#RNU*>R4)v|f{K1=U<6KiS+IU9uP)B`Ro& zdU`@wzbVfiPt-Qs!A%j`4h4hjwziCpmMYPpLm@W0H{KfGu6RCf&Q-qODDFUWoAhLJ zM24EKy6%v0dOrep0z} nm{eRWQ^w zHPmLORML0dmN-kb+Hk*qcP<9h{EllaFc}{I*)8y zEeK>8+xB>$2TfWvR}Sa-% 0$UNs$27Z*!ELk>PjuZmo^ z_@2{qhJ74B2$lF5QM1MZ&Xq3^Tz7QDxZPcgx&UUFQ?}eH96z|%NxVWHP3Q5On`0;* zIoS1%XT~CjA6o}GuLPY0NnF4CFTDF7Bhg9D4@Pq;*zo!J`Mh-T$U=#S>x7JiCT(Xw z=q;SP%*zhVC61m@m((;@2I`V5 zTnKry_zoiuxI)V!Bv-3)=-}(%;KG8&AySs1VLx5H?-2}d>YT2Tv9#JeXE&heBS3{k zJ(Le(UI$ed>8GRB%C+DLeV1!&Nzsp1!=j@id{9pg>X=fvGv(iy8pjwK$G~?|=u6>? z36>-e>qU}qN))v)lw9aElK3TM^IAayBYu}SdmGP<33)NBtaAI+SBVA=Zi`lvVm4wz zZCX$)9N_W24()JOSkUNkmH70#RTIk)l!c-W0XulLal_`^ZsWcERQSz6x6KB EUvD13&MMAvCP}|opbFJ=t3T@ zsA`)Nzr8I`wu0Z(CN(zu W1Gz%~< X2Viup_Fo*m`_y%vXBFbdjdqBaDKkNa$lSWoHP1_Hl+ydnS2+M}_M3Z)mJ zn9dfS8|pL-YqY|Li=$A~xUY9iagwtA2rVA{9t(N5@ATi3iI3@c{?QZ%42;;^*N(MY z=lhafxOJq5Qk=P+oNtB8+hA*oe;0cwkFD3f$HXNG9idcb=x*+%>{izl*HGcqR#Ld< z;$YN5T7`!X$gDXHK;4HHLl`3fF?x!5XeANQUViZV?BYg3f|GzsMdeb3d`pl?nJ3u& zz2LK8n%jO*T*F6#(f5K}@CA{is$h&$+-Vz6am)d}4h$-Baa#PZ$JqC@^!`yn#1H6X zKL}SLzEqb`zp-9`Yqc!Ji3D#Gh8Ln$c5ZDP;;3fuR9&%ls|VcSi$+LC1!m3ul1Nc; z$->Uok^f%U;2os78nFzBVXDiZC6p273EYTIGDbz9QR~reM72-rX*BnCr;*g+C5{-{ zmFr$m^$$_{rIPYrS~{)LJ4r3Vdc98m;S~0gVcRk*tGlaembF7?_JLxer3wYZr@PBj z7idezd(P>zfOjRT%>5=~Ff6|~2&@c|8Zq8b!SMhdk$^@AOyEpFC1cWX?# z(i$==7s7Z@b3kfZ+WGud`T4mdxgNAT&8- ?s5ga_A<^6O7yvH&WZdt zLjJ#S&;Pp;YaoZYkgdKre^)~zW+ME&+%8=Ytvw&%5fC=*zJ)h^PdovV-d Y3@mjksPy*ho|fr$yh7iQYU+^YBvdQuG$5=b1yMW-`o%4ZK5CA#P>v-_^J!Lq z7*3Ld_Tydg)k?P;DcFjI|B@q}L_kVoria;51AS^KzqzbgCTXri(D)iST4@NOPZg}f z=v-g_f?vOFwcLnPDwbLIfg6E}hj2hj+OIYbE?msqeJH(quEmOdI9yDAwg)C+p(ZdU z4CTr12}_6jGtw0pxk-Yu(R14XHNWMKD7nTmU>v8PF78fw7uRv?li =ISkp(T^AWX0n%D zf^=Xj43;InJ#Vp3U;WDj=;Qvb!nxV&=Or0Q-LNP>n+Gd)? Igv4etE0>{qI4zeZx zmX3T+j`L4f=6_6b|Ng+O#5=d45#$+_vS4?*or_kUO+NlmzZ`a`)pI;ohM3BML0Udx z%OvO1dpPdVwC;cy)A2$D?YAMq(oB-THxYz^;n?hRe7wPeC@u&O-7^m+`#ZmWVUsM? z64w$>L9eM8&ox%6!4%PwR={sjf8&56P6xEdx fT9<=H5}S`P~Ew%fD_5!0U5X)5aLS?o&-3gKU_>xDK1u;SxX%%y=JKPH?V zNVDk8okhD`&_U!&vmk8jY-dl^a__lrLbFD;Z>B+N (4X8-!uLHLc+ z=)l<5pd5{lzE7 S?4EQ2{aGlF|37K) zc?jm>2F4g#j@3?|Z)RZC 9*5oSf*X!j1f|k=#F9 zBa;mVie@Czc)~n1kW}ASXeQw_01Vj`6~**uQLc%&MK`X2*`b!&9A 9{U~Pr0{olCJW-a!l^3Q#m>!1}PrZRB?b4~N4FSeqLcnBz$fbD-2`nwC< z^LmIIFD@;Sd{jXS7sCTcGoaL*F1!XUic_wGjT3RVy6DH?`lt-*bH$9p0AVR1#mzgi zWwdp5O7sUiJ4Ot<9`A4H89|mdqRPlMxYI5eWP;g_-^%_icsRfXM!38I&XkH}-$Ak$ z;X^X_b8^UnKxucas)Hts#dWtQi{zk%nr;@#@Me98W-B37vQ(s>I +b5pZWVjy z0(GF}g*VI}Q_(L#hw-8Pq44G9ZITS77w1~UKX^e5xm3egl{^a|x(Vmhu>&J$b4N zCr5v$$NW3B2`BwoZ18*(nUK$p3{iq>rhDtSP!0Z;D3?2pDdW>7g8y_8EI`2)pSq6~ zJMMd&q}OYCt=w>SY&>&;RIRmLx~@72gYdn$EKQXLE&*}nQ~Mf~zT&pT;2*!DTAA#` zJGi-7bdjdO0E2|!A68!#utG2Gu-tcWJ&unt?KR#2BZk*@c7hqQiL5IFc)9=_IB`fL zKjY(lCbR9Vqvv)f8c`@;S@^$qcj_477IvilFQrim@8|jqfvy|gpRV%jL~5Co&3&XX zN> (@|nfvo|Q@7UDP z)HzdkL2;OT!|NjWmlDXISRsO282|1hOEd_mg{gL#vX1jM+)W0szE-yUeYTc8oT*gb zz%=TY@8_f%II&<=L1KVL_ppv~cPrjR0OCB@i?A dKx|~Xon812qs*!9%LtvYzACleVK9e6XT1~T!3K+BZ8%)K za4{E;NW88$bQ;KEy2 0jG71gMSP+lKXD91koJ#CKlfoQ~= z1-hnsm54RZ%=E*8w@+a 1;~+TiQSoD5EE^}=k1h>^ ~bg4`ePd$!U3NW(_g*1&BOZnz;``jE{4DZpxUha_e9S`5N)D^}8en$No#>F+= z4F=Z+fbWSkLcz|eT&%T~N?i@ql&D4)#c3)lRThLt?22oY#q&gQvBJ;g^2+6{^q*^M zn;nCKqU!Cyy;VeIh^ydCO9eX^Wa}kieK&e3Wbr#Sj`xN*Zx (E-ohK5;_`8C4+ 7$akesX%Se;7p}C+IhgvTHE3;J7!{OfxLal~ch=DiQA} z9 pa(5 z=ZfE2=UT$=B_TR=ba+r+t`RbpMi}k=J9J#rFVSrQ ;OBX{|IN!&|Bnp&5bmvyL TVdSMB 8>=GmX#CPZio6&unz+a>np7X}5#B6mAKDX1Ht>$QSMXBI>-Yt}PRq~Op z94cY0w1?^?HP`j=_E@P|rr9wC8zO}I_~R79(P4Sy!S?p@`kUKAFoVnYnS|3pxBq^( zmH(s)C+jO)LdWARG5?j&I9&2a7AG%{zkoDS!%$ajF<|!3RWBg%!F~Bj*+MVqe)Ok# zsG;s5&V6(ICVECnD@5fl`_ob-VMIf{v?4#YEQSz*N)m{6KBxu|#XezTCUPcjlvE!e zWX!M;@}hl!;kNnWJk_VaR9<;;Y`_V1lXlpN(#;s3z?p8$OXu5<9&|GeZU>vUKPHVH zEj*%ODG~Qb%Q%au-6#_Kxjz3@fgGRwZSHnMDF3uigEr2>*4hJ1Oy?>%9OyY+sqaO| z9elo&$6>r3@aDvQf;d>vM?0ZavKAwi d`bVMPzBUwLOtHIJa*I1$1tFxs= zx( 7m{|-hLnZ=%^U~r~M6}_n!p& T_FojE7r@ zF`U4reWn}};lt0sS-}}-&Bik3p&jf{a)f8{gqZWq*M`h{3q*9MM%V*|3zj(09}^q; zey_1+I$+k@qUCnuXcCm9{uFRGkhR6QBzlG^sx6~xD$D-jPRabra2*+{;XyxC%K2h{ zRM`7yarET$m?R$At`3-GS&ojeY)C *vgO{qz}>%j73AMkd4LsuUx=!P?TD0o z+?TYpG^=R!#%b u4>cE8V1 z$nh7^7b7?`wwH5GJhq3&X SMFN)JfSj%O%%^t$)0aDPy|O8E1)cfJju;ESsB| zVny5|bLTAwLKoNUiZ;#|)uv@K?!h{a4spZ`57d-d0@SLJ@9tG$uOM{THRPjX%uG@7 zbHRZ(OVe=$ByQ{R{()q218x}WZfb&vy{PDC!8>(cE^13~m(xXT#jTwUh4s;VmPV_g4 |E|0?j}!|2coT03d!yGY%tdl4e(`UPcH*;>_ggKBEU+HY~rv8k}HbO_bi zC^k#{OdoBeq|E+Y3h&w=*VNIZe$s~bF4#ZhqgF1)$2%@z&BP>;T`#-EpBvJAkb7@P zdlYvG;~Q~sa1AV|OVOwR55IkP=iM{M9qK}Gh?KS*G }ET*R@q4^?8lEbg}V*SY(KDg4NCFOIt7uDb6U=! zW3A07kHa+I)-~Wg*BwvAH5}bs2T5qWzuahSms@f1 VdMTn~VOu4xhGj;sPR54I){W$_>W^NNlv}v`>yyEER zgMZ5`|4n1<#{Q~+&~eeSZS8Zq|Avok$Y{}RfYiNwKptY+1}UoNzR`~tEa-{P D^J6JLyl)#r*~EfJYXN!^L1`M2Y&NUFXL|UE6=ZyWlqc!%g2iJZU&+xRJSTc54Z`q2`_4{!>RLAIyT~1+x(^x!2dR zR+UJj%OWpd`)rrQG$Y?m$YzJybiBX+7UV}`%;JoBcQx MhNU_S6+Irhf-{B0E2uS-lA z%bSFCOYCCBf?UKG4SuxI{Dn@2m*4q+WFnaFse9pqQahC!dc{?poCuZjtl-*+i7&l7 zGE%$)1!D}97!g!bUkdJ!mRtKHjqe(bofuk(RdGySh&afpV=5})4LdlqHwv#yJSN_H zg>7eKbqmwlJU(=%0Ba$3w2RFqX4h h9BfeaJyQ2ErlKkk_4B~~+N$` o`xyQ%K*_XC`crUZ@uoMBFUASO+=#T z%GdSTnU*@@r>$ eDBXv3Fc(WpORvmi^J8yL2CC2n=C;OE_T^g|AL0tMrXhWX*B9B^ zaCfKK$okhtPCtu!Dc!#pK`DTCUTNDB{?MA!yNw! KhJ4TLI4Kmy9>ud+4K^vsFbACdMq2K z(F*Pbs&9z `N~j%z3<$q*3^1|~1|xb_m>>Up>h z`d*}EP2a57oO&vc>w|ps!Qf3!JiTr>Jiy1A-*6i#aqofETLl74a)J2wXxX5@_G8oE zL&5K$v!ud8c+*dL%U&nE%l}|);t-sBZ)0n+ibN|x;0Y6xN=rtT`Fz;1DBm-rudDV% zlE%!>J3&$;`(Zv8T#!2m)If}{9_Kw{_112g;T&%YY~hDZs1qJ@X(EN71jE(c!-J?u zb9i0*{E^!0rUh-YJ7 t -dY&HC 6wijfsZ=x>ORV^749o^ z#C)`1LdQk@_#xR-spp1wOG`0lO>9HUss)N4eSf9QDDyaI== bLkbhagSE?1}7$Z*mydminU zTCZq?l(X5-DV%JhPS~cKO=M(buwg{l^Yyk^_sdLK_p^7zEKlP;=alQfHR8FCdK-wC zVoXstk}=E~8R@e#)Gfkgue>O>eHQ-GA=82Ur5X5oYHG6BX;YA%aV9yt+@TnM=<>)* zGDS3uhW1f%Vj>jXYw QO=VQNmrvHQS0RfR{n~A}2*D22g$oA)jSh6CVYJbh`zF`M4@NiV@&sW1{bxvcx z7%#P?5?H5DRfS7q^gL`jiS#NxHM95?DS&DcEmfcz&DWzz#n`KI^#|wS!R@G`W!5=| zEIA)r%e>PKsGPN(Ug3vH+t;jmoXVo9A|NxrOK@IQVV@xcy=V Dh%wnd8@ydFIbAR1vk(B^{>0M*ryeTSxLjN$ zbUKwHZj)`L8nu~8B{;G;5}u640CE==CX XyIksasLij~iT#^e7XXsfHJ)iDL_# zJ=@K(szt)Q7v%&_a^@H6`1PYvg-q2y6Im8_vr~_@m;UL9t@KA0qmsIHFwo3NL|3vX zm_bopHds+{?JBWp^Dww|F^VDP>B=E+*JclRc>wh-l6yULzg(}fvvO0zv0|8TuCVX` z2!IT$%Nk3BRShF2Iv&Wry4vOCh2`4>xhLYATm)dqiDiR*J&y@3SEgi=nfORX25ETn zX5z|IB{G$Lzo@H&WFs~dm 5k{FkuVccb37B?4ltD#qg+|U}yiiZO z3L)=HPej(z7Qac=0uDI?28G8)?{eRrD+G9k{%BzgFz-p~tN3VBE;|XTx6BlMyvMeR zD#eMeIrH?GTQxTsVdL+d_EL;`ejB5$1DHprSE_UAYmd;g@zm{oO}Taqa49YIOBcFw zcP^6~yp3@XSBbiyh%K^oV%AsH9iRid@(L74h(s|G46T3>ZFBd5x@=R{oy5- z_h3MgHtSmT6jOM)N&6Z?A75>Np5{5Ab?vRxVNTLCj1kb8TqOFje9}hNRWnoHHIbfh zN%l1u(4-M3t7w|}jE6a+_$A<*nOA0pcZ$u0VXg^%UekE;mjU~QmkFGw-Z2h&Q5FQk zbA|S}adK@~HhM9_`J)p#XAsqr>B6FdPc0LI<1n+_e4VEt+fih)LVm1S86vZNUUh#c z2SP6w1yxA=6vfOd#Me=?DAsNXnkIkd6Nhje_E4uSbTrBte+OTyF{9nObemc|rx+;O zE-2eNO6g&_@|7s8-cW7t>WakJu9n9ZI;u2Nb~c}c@>=_}mk0?BwFsCeGqh6qWOyH} zE<5$!#<{Z<)jRE_^T3Pf>ALl)NmH?*(+LfREEt?Z4*;CH7J(b4<5(}2SU5U w(?iws57~Dw{?SS#>WsynBazTaw?QB? z9 4hSwq(aLo|-pKO3+WH`Hcma_@0x zexE1OQQ^2RT%A!)zS=O_K6eB-gQ9EYNde}wWRF(9(?Zt@r3$`7!~4G;8|WWS7_>eZ z%^v;2a=IpItZe+oeTdYzaOd0^q92#1GFf;xw O=q~XsE!>tJS+rq|49gH$5a+$Lg7QPWy)ee YhGKd467+U99#65gLz!(1Fcq>MPGW!HDocs|2w;h`jTG@b z+IgpgZ!=eH9z2*zr_ou|p24o1ImG)Z7@@{^bir!5$JbsvjtQt#w$Fv;M}Elv98K6w z&cn$-^F19u_^`LA^}*!!3_Gc)5 z94MHAeL7>!5$da3=2}pD)!!;a;3(hOv9Kg$)}G>5EBoH !g6*f;5$2$>^tb5EwsFgrb1`1IWhhTBn*-H9Y~{B2_hx6&MXw{2c_^6 zS>NZCv9&EocK#0FHlMD2MFWP;OwGnX*&aset$eTpE7F>-uYFCTYx#=lMbxGiaXB7W zyteDU(8Sa8!1Jwq5%P`q`M6Bfr%&_|A}5RjYj4#|b_X(_8;1#c5faIv8W3`@4!oVt zzS`z$@926|iD1i4@$$`+sN37-HyPiHiAqeQWxP6apFyG^V z*Y&Gvo{KawSB@#RCP*4&7*81IHma 4B@_7g8CVM`=3_OM}{BCcu;- zP}QZH>)HHR|JQ{nemw#>RBv) r)NK* >K-G z(l~0{eC^=P!a`Y3jLudq0wh&A{#WWhJ7xajNp}RxX$$>gX0CSLBs>3X-upIHmZ7|@ zhun%6&N5$YEACe_U5t9Cs#f{R^O&m2SuaI$)fy_8*Sb#RrueQ3xHt)68EKz2Bmi(U zEcc9Q+ON=e$QRZ~`)Uus DnL?LMLvg(u$p3tyqv};35M&d zrqktQwm5z7fFk@tr5|+%Yu1Y?$71)q4r1~&I+@I`l#r)gYI81v3w}j)td%o9MHlnU zac{!UXW-lCXT+=*mdi-_9x>%WY{~^M 6p$@&KrArS|(_fBJ|WU3t`ewmJT35El#ecJh<8F5GV$`TJ&<^M}f}GOmr;@ zu?s`x@r5)FrQ7wNSwMPjZ=gmsBE?>D6LvX!ZD&O+nafq`j#*lYMRhKUbsL&0Ea_37 zh2R3@*dAN$t)>xEEvK>R(GC#E__63k+t7fE)B0(g9?jM9&h7N*nk)CqieE};(T!Ly z9Uq 6M*cFpn7(e|$qpM_17&GJ+s|tDws?9QsDrwaX(%IPxVgC(W=Sy4d|mK2 zv-P`(Qce)1wupK#rO!nX8{8xO-?j9AqkaBe08{AuEJLc!yen-vVo}cXx46C&gmL(L zf#<4D?^me&21DYIv5`C0rla3%uaKG|$n}`fg(bxHhhdi#L1p6txt2?qYUw#ZPTD?u z4Bs!8liUPY0buW!tvV~oD@QqNvS-Je>pDshNLaG#mPhGMb~7H^_I$5s99_7W3i5Dc z@R$BjJ5FW2^4+C^Zqv^Qm)TWoNn=qlBrsR=aq!Ey?AaTfJNDDY`1{rut&c@3?*k5c zp3U+*q2@)M;J<}j9L#KNpO2S&gbJTEp+*s^*C{)~Hk|Ec$2^<@Yd%F&dae@F4{4<_9SyZl{$ejl))1&<_6}SDCFL4$Qoc%by zGAe0Y`8mX`pzBT@kVhXUuiz~H(~zVlUi^nYp0O_*0a;a*K4uGY00E`roT#MWP9F}} zps3%yJR@qa0O_)yD~-bsCvOqj+;+R0XGWIK;h@mD`Ep(-e6;uW^2xzIhv^6kGvl=$ zy@Q#_As28vdy^xYVS{F->r_wl tBniN-RrA;JeM`U{z(dN@QcsD3#@-`MHJ zX}8!9j7rr1wy+6me)}A3y*fLeC^*?!)W9@|Bc`3|y(Dm7uW)qeDFso+=t PJfq zDkXfopj>C_zy0Q$*gnnqPK^m|AwzCnUNi=!he8&GOOEh)1aZ@%6Qoc*^6NUU$mQ{} z>C7rd`)5kurphI1Ll>I=t&aGw-i?byz}s7NE$AGANqu`ZI*@X#$Vj{b*YY(BUQlQF zLHSbwWc=5Kl}4QCTbJjXlPQsXo`nWJLKx`d!B2gM*Le3PlCD0+>3e~h^PsQ0UK0N% zXW?&FZmng1JNx_dG}BVhHT=#3?3cg{c>H~aMIi(xEddy9x6Zd&JgTb$;J%`{)a}&; zuh9g%=;yYcFnz=kMXFC<&Ptq~A-2(^%R+u>%RY)bFPk>Qi -2Y1nr-0i_*t?yrqI>q$;Brwx^2$=3k;1_eahxkp& zDP4cbNjoH(v*&*$?7yq#fBCB<&8%`$g%p=e+~c!4xyWHLB%jd
yg4}Qx=UjW%<~% z?1g`-J5XX4pn(SWrnT$j(ay)WAm#v%lqN0z%S!)WxA0&7(4_tie{eh=>mR{VzaI{G zhPUEM=s3RsnSc6QQff-RooN@ =XjQd5sQTeqLU6N&nj-&3t2mYF#)X_O81h#iM5m4=8 O6oGC=&H*hCje>vBwq@oF$|9Gx36zz{-IwOB{O^rgPGy e(5GuR=hk|?3!s)cZ@?n8wfOFyp8~O0jN)67FNq7UkWmkxE*Fw zoqU@w%TV&ZEOdnZmIZjQxSCpY5k5Q6!R;gQ2h;0O;(gE2&L+e`oui` `z z@;xEf?=?^o2elo8>0I`fE$HVGz3PHr{H9vk)E(3)F4kPt1iq(#G-=v9|9a`Zn+22` zYt<&RFaOp8sAG?JZ^inpJDlB$Ih8m7_sfk`<8q*#k J#&Nf~WQ>7BX(M zHnrfb>z%1LhHbe8_FsS4MducfkRSD3mu4Z-Yr>;+m8!Ttoy!pfFQkf1pD^`$NMN5V znxdonVqtW!z|8=1c)7SRn5Aj3dTXHJ6D#Glq$uGBXIsB>7aUbOgUl6Qe`I3-ZP%p$ zS9!Tc{z|pf{dy0AvT0>SgeaYuL7dun!#Y)eqbfEj_do7sz|GG{Pe{wcZd}eK^tn}S zn$(`*$vovpHw#98&@_nJb&B<@br;{w|HTumY*^pHckHfHy5Vl$EwmILt-f2?Z8U#K z@*u#yMk6@eIcyH}`i2ut1vi^&+2nZ2c)b$wM}HR5T!b!hZ8(B;0($B+sPXvi{C1x? z{$c#z2EYR>&|fx%Nk^32@c-}FgBuDsvWU~#P1YYIKl{V4zx`wJr)czZ(qCIO|M_~W z2!HKW-&2YFMl;>e@Nevxn)DXF gyl~!fWJoq z+_1kws`^*BuJzPE*#Na2%4~-r;!+7@{>D!K{gGg4lnJ&tcpQ4exWCV8+)5OmS~lf- zL;mi7&i^!gl5{BXc faahH*zz h28uUTKC1%%_vrqA>4N{ikM940<7(sR zwe%mV@hxGo4!+5YLJ5W?0aJ0PVwBDOxpIbJ5t`>iZ;Gmu5;OW)RJSdo2JS|%vO2eK z*gh<+Z=rDA3Lg{T>}J3?R*IsO)o6Fprtdbx3(~Ht$CPCQ9ZZl7Nx$o4VPTo#Zpcts zisL&w6EyPq63!(s!{n9sc~UaZM36NqeUf6WqEE4Cyr7n>R#8=V`y*hH{Zy~O%krK4 z5c?lf>!KF$UEtDWDb2@Ja++G!ISabZojq3ITB6N5x9geFGeylC22oYfXG+S0b^68n zJn3}J-^wDTaMo5kSNfED$sp$|2QvYfy?jrn1;!Ne#&BbCjvEC$+>##GQ=<)qam3m4 zBdNs*i(ZYI=zfB9u{5b%>upZP$h5+QC>e5&@Yjw;iao^gMp^XF2I#*-MJe|^Gi5Io zk1wm%n$$}4NMT(ufe-cH!@UctZ{xoEV}v+n+gKuN6J%aav^g5dcfJ}WZ#Qye$X$P! zSJU%ql*}&9eSN)IO^1#*FIH}R^t0^ZWRcIgAOVNR?5lRMl_!ozPab(`gli5CG|xH6 zz4mO#ZJ$5&n0okd4$2xmK`5VTgmhCqZLFLF`lO7PGHf$yMIRH(*wv5mlr<+tt?5+i zsYN5$^fsqnafCG^GCWsb lP)RwY$Sg^kQwa4XrRbVtQ%bI_APE>O-Wtb8>zy<*tT!&I@LYrNmlo_--O z13`e1af1IDQtF(c=yjDA6?|0<&61~oE>q(>_gigs-M{e20Fs||@7N*j^{ycO mT2cx58H3x% 7^JTbOI06qS$K455k06=M MI5>bzL)DATD| z=SG~pxtxJ`xioaYW*^2HWxmwFyxzet#r^5Gj}UP04wCOu*%1Q%v~z@q_aNb(a`DTE z=xIEa5GXh|CfE8~OTm7+Ues3uH(3g|tY@Ad@M0A4cfA!0wR3e2>(zVx %cJp0bncLy*RQc;^q2 z1v#b64&?TLbzu$`c@8P^f()HBI7(fyiWQWnode8Tg-{sGT&TvrG`UYq3cy%#`NY%0 z4|sW;*uScp$-FoXFCGBd!ZvvVsd6!=^mqg%T9zeKSMZ*d9gR4zeCB2Tc+zu+Q1y#E z;ou)PlmQLn;WUVSV*e>B?|y&y%=8Gmf+ZbU`-!~TsHn_D;d^m$D^KE66<~MDkXQ2d za!^6&Vt6lQv^H?HfCYALuFD}vGMYn}b!ZVMsT(TSQ|-|ZYHCzeA}xOpuFq(>E^yEb z9XNCvY{hw54OLaRj`q@69?)yrL>VY=ImwqTW4&j_8%<1R9LEr27#T`cNlAjqQo3fG z3H*qQ)Y)BR1xke-Yp1_3<-FG5Q{v*F&`qDSJ5fTH4*JaqzRyu-oGiIH4OrESw=5@1 zz$0Rg4eIPC_1%LBB$^IGvh^k-E21yuBNvcwOlF5GL*URC8Z%yH>KtmrW{6zN?OUK3 zc9MBUDG2(d?LANIOEtJzW_}{1po+O8Ju&+GwQErRDENYJHkN1Sj}Pi<889gsdSO~* zBcKb6vX$r6_!_+(V-q9f+WUzIgNzaMxSP<%FTLYM3a{uONQEzvelpfMdz{S)u6>+I zH=wiizI}h1NyEcxJ2@xXL5E$M5nqf;K*kK((efvj3)Y+c;Mm&M?3GFhRLvg;l5?B* zc^u_ =dXrjtJstc3|v17 z`*q!R8ta=WpKNx%v9}hC0Zq3s ^*w}G+LpHE(J6b!TlC+6v|Gcv@o(OXGWh`(WOL^ zb@HhJDSZuIz*bCVjx1_kY>hMTp2quvi%J!}k~y4jVmwN;niuO|gC?0 j7{Yt&JPi4*yL5p*#$rQz6>s0Vb@Km^G?H9 z2cXQGsbW7(1Pl)hZAp3_-w-ueoZ7iT2jINcO}mzuEt1&$kwE}DQ24bq{wO|G;Kof% z3&k|qtSG{&KBOsmMu4!*6d1&gQi-@!%Wr4m5|ZBg_Jw9Rx7l*@^EScS_&z@uicn z^Qtm+Q}5k3Bd4L;x=I=wn8?;tdOghS(^I4QAY1?dg>XN<4uHi2j@ps;gwd{HI8-nV zxWlk4w1^Mf1TxyXs SBXon3 zMd*2B`6+^QTkl`0dB=oH+%3L+6Slm5pg{FZ3hCJOhMPK1x$m-M%ljZw$E3lx-={fs zoOjh($hp$EJFrqm_qkQ7ZuN2XCSOB;lh+X?BeB9WDR8uuAK1zzf3SrT(E1_X@==TL zA9?&Lex?VKGitE3C8zk#35ixb`XCl6QhAB5MXUMn4^DwXS5AY-SuQz1{1-0YyzYh9 zQgY7)WCNS0R_xhJ%@=df$Bz^#j~dWxw0CBcw)Vxs*0_u>^ahqU