From 3521ca9d1733db24495e0333316f18c5f4b3fbd8 Mon Sep 17 00:00:00 2001 From: duorameng <2997944583@qq.com> Date: Tue, 14 Apr 2026 21:43:15 +0800 Subject: [PATCH] chore: udpate pwa site --- internal/router/static_routes.go | 42 +++++++++++++++++++++++++------ web/public/pwa-icon-192.png | Bin 559412 -> 0 bytes web/public/pwa-icon-512.png | Bin 559412 -> 0 bytes web/vite.config.ts | 18 +++---------- 4 files changed, 38 insertions(+), 22 deletions(-) delete mode 100644 web/public/pwa-icon-192.png delete mode 100644 web/public/pwa-icon-512.png diff --git a/internal/router/static_routes.go b/internal/router/static_routes.go index a7965d8..e9b4171 100644 --- a/internal/router/static_routes.go +++ b/internal/router/static_routes.go @@ -44,10 +44,14 @@ func initStaticRoutes(root *gin.RouterGroup) { contentType := mime.TypeByExtension(ext) if contentType == "" { switch ext { - case ".js": contentType = "application/javascript" - case ".css": contentType = "text/css" - case ".svg": contentType = "image/svg+xml" - default: contentType = "application/octet-stream" + case ".js": + contentType = "application/javascript" + case ".css": + contentType = "text/css" + case ".svg": + contentType = "image/svg+xml" + default: + contentType = "application/octet-stream" } } @@ -55,7 +59,7 @@ func initStaticRoutes(root *gin.RouterGroup) { if gzFile, err := staticFS.Open(gzPath); err == nil { defer gzFile.Close() ctx.Header("Content-Type", contentType) - + if isGzipSupported { // 极致性能:流式透传压缩包 (RSS 占用极低) ctx.Header("Content-Encoding", "gzip") @@ -85,6 +89,13 @@ func initStaticRoutes(root *gin.RouterGroup) { // logo.svg 等单文件处理 root.GET("/logo.svg", func(ctx *gin.Context) { + settings := services.NewSettingsService() + icon := settings.Get(constant.SectionSite, constant.KeyIcon) + if icon != "" { + ctx.Header("Cache-Control", "public, max-age=86400") + ctx.Data(http.StatusOK, "image/svg+xml", []byte(icon)) + return + } serveSingleFile(ctx, "logo.svg", "image/svg+xml", "public, max-age=86400") }) @@ -111,7 +122,7 @@ func initPWARoutes(root *gin.RouterGroup) { }) } - // 动态 manifest 处理 (支持由 Go 后端控制标题) + // 动态 manifest 处理 (支持由 Go 后端控制标题和图标) root.GET("/manifest.webmanifest", handleManifest) // 动态匹配 workbox-*.js (Vite PWA 生成的库文件) @@ -121,6 +132,7 @@ func initPWARoutes(root *gin.RouterGroup) { }) } + func handleManifest(ctx *gin.Context) { staticFS := static.GetFS() if staticFS == nil { @@ -150,6 +162,16 @@ func handleManifest(ctx *gin.Context) { manifest["short_name"] = title } + // 注入后端配置的图标 (首选 logo.svg) + manifest["icons"] = []map[string]interface{}{ + { + "src": "/logo.svg", + "sizes": "any", + "type": "image/svg+xml", + "purpose": "any maskable", + }, + } + res, _ := json.Marshal(manifest) ctx.Header("Cache-Control", "public, no-cache") ctx.Data(200, "application/manifest+json", res) @@ -162,7 +184,9 @@ func serveSingleFile(ctx *gin.Context, filename string, contentType string, cach return } - if cache != "" { ctx.Header("Cache-Control", cache) } + if cache != "" { + ctx.Header("Cache-Control", cache) + } ctx.Header("Content-Type", contentType) isGzipSupported := strings.Contains(ctx.GetHeader("Accept-Encoding"), "gzip") @@ -221,7 +245,9 @@ func serveSPA(ctx *gin.Context, urlPrefix string, status int) { html := string(data) baseHref := urlPrefix + "/" - if urlPrefix == "" { baseHref = "/" } + if urlPrefix == "" { + baseHref = "/" + } html = strings.Replace(html, "
", "\nb7yQ z1gzkeBL?53h!zss^hgRr@5SNba72;$5Wf;fTsM|FEDmod)z~p%DC%1D&HTZsj{3~6 zaC~myNI;NisAhmAJc)VV0ZO^aezxg}j7bhS@Xtv4L^}%Gj?hZ(-dRsgv!j+kK-IeE zQ5kBjVZcqLFjR&DWnW3BCzCdRX9n#+!ze1T-kURZ`foq-lsl%p^uA%l4$;Wtt5kof z(b%!ec5u$^Mb#~PS5x7PtKVan>59^K-i$G(b8z2t%Lu&3UaO+w =)Nw6F? z)!~Q`(fCNx+pBN!DWK%D40f3kFJnN2RCByT^O3`Sk7Z?#*ea=B3lFwb!O<^aXgJ%Z zu6MN$G@vjo--+%``fy|mztGT`;T%92D0OO`U{VU-UM+HqTs$3qvNgZ1wB)(%KsK$i zB3@ic&FLq+W}bm2)LHk*0BtrCjKS2gQZ#k8sg#vFcKX;Pf6Ss3v&Bx|Rvkd_N$B)u zwcL PeK%pF{TYsAhX#vy$W%%2{!6xE`-}Dk32iyvLj)?qkM+UgfOu9+ysGQY zDZ$Qq84$ezIr-U~1s)oZFAvp^&3WGh_mAj}K+g~YM(9dPK@RgglDBMsEJv0ct*CNn zpWb&?jf!pSl+}LRVlx7?SK1amPf5uNUfaC*Lc=TzRjsKLBS`6;yfqhC5$P RdALXIj^=bvUZp1v-tCu^5 zch&S(8#9$a)I?Jv%0>@ox=CeeI*IVQZ3RfeX1=2r# 7AATOH3~ &h7ePPB7 yo;6GALpRFtvNxErmrt ^lKYJ;W@nqQ!JFkp;cQC-^)zh|;l1)hHqT?BQVSGU9H?iDAx*6%& zE5&7f6Zt}uSwzclf}YbJx0_k4nJw0HcRZC zc+8tsaLB!diGs<-5Q&lI@d zZq97UK5$c0mtH0=K _XNJd`4938S2ZbLJ@lv9Agu~MWI_cJ7A^T)N6hpFWW@d+IIbJ5M z*T{?M)RUSA+5m@)OUDY8mrX<#l|~-o_5QSZLmFaMDK|y+Mj6m_$Z%FI7ctQyjd>rx zb#y k4om`?KD>0B`z+!y0owSX6AuK<-sXIB8dAm^&3H@b8!$)JTU z!JR)_U&;W*r#VfVGNf^b? W#MtR8b~`OR@yfJmv9%osFUy z202PG E!OsPe2 ~~Mj|I6A2^AHW z(utt?<=U64b(}H6yMBS4@3GaYFCws>s`&~V#l1LXG)dtX$%UmGG>@?T!LT#(O6uN` zvwQ|>IbeNd(EfrLe^$szBg{zo@WT&5fxIq1E$^D;J8bPtp-ZjSGpDH2zAHe0f8JEF ze;(+ZZsyD(=N7GJwt^g! FP``P?Q&P=Up(Q@e%%x%|miWAF4_%yr)GphXof3kS} z>nghs(0o-z&NME$k^XT+>g47WDSbuHyVAv^OcK{Dim#yzb#2nS(H9q06% !VqK*H!YV0~$>Rzg`0vlMw ~_Qe(aIz_)w25WKrXiZprvA)ekgqH7}3t&Gd8mQ%M 5gN!PfFy1Us~+4~$)!kvR#Tvq_dz*5%omf<*GFxAnJd~>fv&9R6b(cCn_CUJyf z@s&b1*9)NK+^jFEhOUN^a$pA6j!nhA-sAn0R3vNY6dik$zpBM2?(}R^m?JoX}^s zVyb|Q*JBoXnxqIWYM$ kHjk!xm{r2G9*?~-^RKCfnN&Vzr9u}$>w_jI5eTE9NTp^D(N7kG z $Cf@@SVVl^J<$kFnVC(UY==@^fGyZD zhImn=Mmz}iQapl?PHdBlX;d>-hqRx9j6|Ka9f+-S8H*@kAFq(a{$w=oBA$43e(u9k zdFQOlp<;i& >u+Z zk*yn=)kWIrE$(4!9V@OQII5KKnVDUWe`@+TO_ag^9IGl%_}qK{S!M3*$b5M~$P0^C zK3=A-g+JgOov?)Oo|G1(<0DY#W|m8eAt0(dvyBz$24r}w7?3&WD{^zjwo!_WADi5r z_$HRu-U7`Wk}t(1$lF;%nM%A^?h4S8atn;0Fw!Z|G&xfqHw~c@o1oXU-u9yAlbYcB zE*GQf>L+fDerOdj;{u=D2@jq-&2|f)eqVntt5AkeE;7huELtrBJfS&(YX6`?rqF~; z=^nXvFOdX7@@O~=s(@B8k*h0C@yn14Gq^iyK-W^cZe^o7;NN`nhhT}US3(OyOXCYi z xP*xlthLJ&=grLL-pDkts==`&VCJI!soXp z04hN(ZB`&)G4@?s9P1LZFvEp4L8arTN_P~np4W`jzjbwW5)PMK9VmA`-_yL_$n666 zMYjk_*U7q1xPp-M^y~sS1b>grrlSIEat7YSQ~0H5?HyTfZ_?FAX_lID zFF9z6%J*iO4*1Rrz>yTOD^=wg+`b;$$iEd;-|JV q2C`^_`x`Eax3|@vOHZq z)CPsHJ6S@z%d(qY5}pv(ZQ4KB>5%C+$c(D}+*uO%vX&i?2?pO3wJC${2FYQ6mjqOe z!V#I6Iki%o2$YSmyTXz21*`%iI3z;Z$U0PQ)H^4|@w|A|A5pl>b~Ey_{u+d=6wnr< zJ`I--j#1(k$_HM49!BgFwDR%i#{y~#27+IXPka~=1=R-d$4hCG+EtMuPOV`1H&m}^ zq#C-L29|o2M&xrk7Gpm>k}!JK^3Qdz0FyrWaXkh#kGqRU%gZBs7T >3F^T0>*Ay|URV^z+^0lWd-EY Ku>Y>mLo~BnpT6agAz%SC~YydCrK};}J83BL5g(@^U`@u9mup z#39QWyqCkiab%PGqg1&hA&j^J9DB3RW>y@JTEt3Xop87O>YNGoha#2+vwFFov6X`3 zgUjYTAuVp=!PSwPJo?fpk-BwRek_(zm78mK!#pALgpr$LeZgbzH2bAfx>hz5>4;?; zWr p7Te-S?B*9V*MNTif1ciYw#pj>ncOngo{1maT1b`8?z zmO>4>)e0OWH2$r#Gr(Fd!knu` S)@MD`m7FM z)BG|MtCZ#RaU_h!i+0797MK>`>9|%p0-6y$JHbpQKN3%xo(=D+domU&ajItx&s5%) zo1nQ4PcIpcmg|Cn&&W0O;z@^tauAd6#?3uWwZG4$N|QW4TY-KZOxaK;)n+%>L9tC1 zpI- ;`a)Wau;dBF>@oCByBi`NgZDV`apwcYxh zh^cO@PG2f3!1Y`%?gC}J#BE^j9Nk_ku3X~Za)D{mRLG7y+udf83#L*1WOSG2LnJ?Et?Km6rnEP3!{uW5Z(-cweZmHfNRv|~r?tYA=$2Tk_- zj-+4M1XDDtLYH%udDEpGyiKsj8}1sGjYULks~E5K9jqN$V!PLbFS?CnxC$sOZ0CT1 zu^LS41y+mFEMM#CkexZnQ#^A*MnB97D_8*pK!nOOxdSwwcep@^I$+x%;>aNz+wF4N zu&M5pdrQM8!_ll|!_I}h)c#novOkc;3fkqq7#SZ>`H82RH a7-j`&yaZ)XFU#n)Ynb=s*M14H z_AT)vJeQnYdbc}jU!QZNQ)I;wGn*s%_{0uJEXL)Ah04UnZDv%Vl;O3}uyqqD!A ^+?31Y*6*ZAn5u6q zTiOQUaBFu819`yOIWFAgQTFLT8r3-*bD&haG$V4pqSKw-+9ekB^=g3skfaFcbr8oA z$6A!98Z !z$ Z2f-ls} kyLK-a?;%_%tQ$i-esCVonlXgn2FitEIDz;(Ae-iXhvC}27XY%pfdH1=B zs^Q|QO!u4AR>EnEU(G>hkh>r_5v@qK;H!wIV`u4g>Pw*nd4@o8eA@|qyz0PtnrXo2 z`L*tH@JDLxLKKJ({9mx_r4>N@xXqN{&h5rdFdy(qX9(?T9S-4_vIA;I2E_rC^NceL zF<4-e& Clle?VK0?J*DB=KdZ;NAKJcl@F$4myyju#FV#SA$=v@3er@OM?t@uD{NlOWT% zHT#1O9q_{hM1B}38NXX8>Xhpnj%4c8OpomdVEN4X8p`sK(wiWBCgZ`-QIrfq{a*A@ zIeYE*=?$t0m=toT{D>tbvZb*B#?VAFW|n;?$jGIs6k+@2xMlf08Bx!i>cl0HEax~u z(37hEtCf{iEPIP6D Mi-74iUku>i)E~2eg4nl6v Htefu=ZN%N(NRjZO!!VLAbq$QF0;u5++Na6ePe zriOgBntOKgw9Z&rj)$;zU9EsAX4}7Qb-#C`3^hO8PUQ+5iZROG-bqNLI-fQ z-Fq@6cyW=p$g`eXf-KsHVKZKtcu8TkIT02_GEUT314`hvG7c$v#+Fg~s zacdu6{3&^3aja^c4gGAItx60R*xY=}T9ytSznzCE1eDMzs#f|ylb*mX@_pX!R}mOU zl{XrJawT7z#wOF>oo9Zx6neA)*-oh%((5Wu@_$!3K3ZOR>mB>F0yDd|bK&(Pa`u;# z`F4wM_J+^a;sdj&=k7(hS4(pFOZU!O32w9OVo)*4a%%%I(y`e7E_Lm4RRb0gp@N_1 zi`ow2D$tGNuM~%(`I=-pkwO+>W2YB &{_ z5?_@jskicLuKgadfGdC622-C&5kl2|v2#^yD2&jYwrxl97QIQ!Nb&g}w?%FrZSa&! zrkL@Ga2p;ZMQ)AXwy27(9x K<$VWL@PrENqdS zyP>rd!+pQF357pUM!2CY9EuSx#lVJBrfnYV>vwSOnK5s1VSio$ cOn_79xGQ$BAD%bmhUgO&NNPB7Cw&Pm&t{}G}fdSL7uY#DFpqh zJkS1=TGJ&Cs4OU~aMXbHbQI?@nv-2X?P_(6KUB=9wympmop#aPZPC6U0vUs%YUg-z zu?Mt@`0BGuJC?u_U9VU|zJ9;rr$onwkIzD7qTBTKZ56qUGVFI72B(9LYt7(|8P<&8 z;nB|lJ`Zn~u_B+<4EBvz`mwrRoiR)$-w*9y0k$M}T4Nd2g7#zgPc SCAuFgYfuWyJS6ELB#05!PjKk2ZqgRxE)$P}9Yy5{9fn02mgu z?bo1GS^OHWG^b(#JpnP3t9yPrARquwqY5TBAGS^Xk&I1%=P7ei -^9d?< zmeAB%n|rQSXaJj{AdL;cqO6b;hE!~6Kbv{y{F1&*nEXJq7Q%d oyCBfyo zQ?zL2<@b*^t1R%}1BA4tm=Wx$DA%A;#y}~R#k8k~H|!`HPSdxFlQIyta9^m$Is{$v z)}4~&h?FriOE!Gw9?SIZ3}aQ=4JZ*tQ|9rZTN5A+qxhK)yvY>Z?glwQ@)F#K+R`L3 z` v0Vr@#uCZ6G1 zCPQP)h!FFE1qx_0VpjX J ztL|*FX}>H|sqZNFE>sKleiET>d@0sbT^&~)uAvDc?b$gFFG7^>F CiY4q5)cZ>Pudk WQ17Ng5E!k &Yqh(s7Wt2six`CuIT;o&^Ob{nv&|^D$xJT&Nu!N)MB{38 zwN^=}c<^YGsV8UqH4R0?kevNd8x7KS&J-I6H97Z4`F5UikkVM9po24~VKyxj19ix( zD<3Xf^rL3G3R*{e9P(?fxz`RHD!*Gb9ORz+(Pj7w_%Fxa+j*gDd6`KzDiE$#k)YA= zv$PyP-VzccouWJ)pR8hW@QVDeJ7ndomd4eI?}uX4Cihs`H1FxQIocm{c!L}dK=PGP z@@M23Mo*mWGEO>oy2T$Hbb7{c%~Tv1E+~Dctt09it9st)GB+KI+$zgCaHYwnr47{{ z@))Yf@pMcCg7_5brEqS&=~O@Nn 2Zm!*+lN3Ss__ zkJ}FRT`XrtwbnA+#Qs&vyv)!aI`LzaZ4(hasNl+4=C^R}%!sWP3ps+aLu%z7RsNy+ zJ9m^Aof~YgN#drNbbRlYlwe25j<;8i5(-OPBlqbe8nhFW=Pbq3rg+YgRL61$r(28E zk{NtFLF0hw#fTt(a?x;&fI$Db;la5qMBCQQNw^e@x-6fR-aOpFYgN1g`>eR}6*{q& ztO(Y;YNy)Fy{xz?0HTrmK248FHt0@F?9TLF16{v jNP?CkAq)XDNFF^){Q#QJ -WFKlE{L7ArkvGyofyMXe0T92Oy8SZc~moTMrWM`Tm#Y2#wGH)L7mP%_zbKo zGM#D=bAw-kMyZ7v&pVC7`y$!Jr(*?IAV+z!JWo~Hffl+tj)`o=CfMmY6lc6vyQ6%U zuhcwDM5rg&V;fW=Z{?9b-_Ts6uAG_Jf|yg$6LEf6`;%7mZXEqs%BGm+MtZ0oiKFVD zoe?EE%{rZRk6k*L6Xo@`wB*^d8dvrJ^SP@;{fD}59{0T%s3t4Qdd{j7LoM4OmJNpk zA97^TiW^57GQ!q1a8dH^HiFLLJn~jZrxk2NN*FG~^mhIIqr6P7O=v{~7dd33(uOqK zOe8@>K_T^(QStuf9z-$K>VV()o3JXM0r$4KlT*w{@%!Lk)*)D#NrX#LBL=y2t)y>X z1CMm4LUGJWEQ7&>Re!n@7Q+jN&PeLnIY=}Hp~@k*GBOCN2ObMLS%c1kikcyDX;sgr z+(UN5A1HXYiXSQ}YMh=wcMW&?CMCfHX-?mLvng5(z!Wv0^;d}7Lr79TwXM^FDYkH` z%wH!rnO-5MUu#iBSD8&eijc-=P3TH Cv~Blp z%QMw&{X7gg$AFolysb$Fn{Z;LRyv1nF~B8 W{|?+RUNh- zi3M!7-N`)|C+r>D`@C;9YP#~?uoue}X*&L-jLfWmJ9jdmblZ4U U_n6ryY1*c=NM>cJAZ9Nnpl%o1sba8*MK~V0=-V?^P=A?7u}IZeqMl0O;o6@i zp}rpmYsqFJz8b?YVdMKIy>V hU0IiDWGMP04u8 z;2h&z!H(GorxOG5Dk4^KkWSXmKQ4hEaZ&T_s`=e#Q({wQ7D5STs_fJgNNyFC$)YTX zCsl2wIg7LA)#6^i5#dQ!cEOXfiGiW9`O&+LZ|5qrY)dYdmWeg%JS>l@FHYj|dJHD9 z?%gi?2Pm=XU=CI=A0Y}sn9VR~YL+Y})sZQco$LNnBhrGIgs)aHIoGBiJY2H(`7;r- z)31_-4ReUB>G7TITB-@a1hB{VrLM O4L~R`lK%R4l!II5_8_J0H^9 z+xt2(%{%0hT&_OJ8@C`wXKJBxUJzc&SUa|V!lo} bQ4 z&4>+73J$%Dsefw|3QDYy*zU#(ycc!RWa zl9*;ipo@3AJTsOa b`7}onatJKr5`#0*?lexO0>q3 zWHFi&MbNd&JczN?geDktphE^4TbdC{bfxw@p5FbkU$#zV(p7$b(SEE!L#YW+@z>aM z!1QJdpVEPAvm#976JfDOh9e57`4w}t0`MGI&YcHOeD+nG=rf&hGxaOTU_6h^U}A#7 zW4D$cZ)!j_H?13HBLSYAzmg`fIl)qzB+KKDr%d8fq+nW#jWBq5?ac;t1vW9i-Y(Q0 z44B?aJ&4+Cr4LsOHs`1sFcj&^KVMSq*~PB$A8$Wh@u6@mAi{QeS R;i>qSo|xLJ;O|*nnZjZK9QMAc)To!`p%Gu>z-9hLrq#ha;e{pl4-eB3}}_- zp_w1Gx8LjAcxWIXXjg3AoB;DV{(aNjv~6jH9kV8~Z+5}dbVz+XR>%w2Vv(TftF^v> zvM~Jjz;bjuv+x9GrYo00SpW~TnA38s-X&QXq^F33TLk2f_QUfb-V^ba3w?bke1sF; zxVy(MisokQR5=(Me`M#`n_!4$VSKjzl&3OhGZP3G6(#QeUXT_&(SYvYCMS|OvmBm` z%oQ_!e>$UH247FJTc@Kgha6*)e_ZUBdjV$PQIEHxj7C-f)jsjn45kB;5otTpyL@CU z;P!fb`BQ2k4cms>(d2c3a&|j>dET=kwKFkI$cBjo6P%sqG9h |>}_lc7d&{7qChOn*A`?Fd3@#MrgO1qiiRjvBeNacw+0nU z0omkonPF^8$ }vh*ro6dN*k@3?6q) zL)myrE*U9}DdSMoESJ|9XT)&0dFmY1WmB%o)Yu7|%XS9DYbg^Fr?G_GsYf %0}BK@-v;96dtj5%Zt&Nmp_MhQyNWk(WzPnD>J;%eq2phdWsW`@MM$9~v9^WdsPF zKh`mI?-Frgm=v{iozUL#QJ^S|`Rvp<5@xDehob|L<}XcK9Z4@Vl-8U}o>yqX4!4_K zxqm|9rdli(&_XggoPQu}Ia#n+>$1p-pn5Nw9;;O$>J1aG5$6ST#ib!Z2Ud__4(9GD zYRx^jL2VBgi 0G+Ly8DMJt0^H#4^09fbYwv)wdx@2fca2eD=}_0zI^8eJ zj3L#XSFg^?Z2hEa2mKCnCZGWGP zUNU$VqFU|a*><_{(;qG#N2xryzvv96yCns6Zlitp*bf(dYirB1KRk2sZMviS|8aEY z0ZHHgABV80WmtB>H&8bzR<82s02Pn6JSs7}T;5B|%sc>3$a@`Yga@;lA=W&|Ozlwd z2*Fh%HAO{5MTHFv5s_5T#ACnDe*DEh{K55lzh2MR u*g5#VUvf@kdj|I#& zDA8F-zLo`WRg)j@z;XEI48xM807WA0^$ZHfsyN{qk)jR0VqPpJMpK<8`kUgSrz8x{ zs>!>C9$D*fRaJl#_;xNmV=(BB 0H3KeAXzI8Z3q;}uKUU((gk8mePQ)8lCoZ`X|4Jr zu%dI@|6WrX8d|9Jyo4f3l&t2S01JBQL>7O>p&Ue3DrQpIKAfhcVx6qQrOco%Fxys6 zUym|7wW%x(j4?6H 4-UZ*#H#J4kyQ2*k z>dt5q=f;L@u0w#e)KgV%h#kG8`tUF9Qz$;np#uuZ&$IP~SXsQSxORM3^NbX#BWu+o z%=yY=nJFM5jTVthayQ7sLA1}ryMCvW>t&B7j7~8tAroC^2c#|9=>533q-kwcZ>OQ* z>Ai5_+UD@A!Gvi~=bR4LT=L &^RH7hcrA z;zh@m_xjfxLyg^zszz6p#ceL$j}G$+0i$P$LXbI_uVkq}B mgV{o>I? %-At+C@MTwj`>${EC<}piX z%UlOCDOjgqhA|Zzvy- KM7W UZE5uvA$D%aC^FS)s7DaV9q zA %9$|v=jvzr zYb${Z9`=X6OM%C(M`yLLKML`UYVCzZ>wWQV7A@(gu_08tqSfWe%l2)1vBI#o5VYx< zb!3K6WX&TKTHi!6=o>neTiOYMNLmE31JmG5O&pUIBrUqW3(h!rGI3Fsz8b!3ZPvs# z`r}CSO}Jdq3TmgA{bqjd2XL47r47?wNb@5~Ge2k8nI0%r&zSg!# cT4T#4g}e|BfY% z8q=_;S9ML>6Bf?C$}m4MToah;WCQGhV;?nknLU{|t^%Z=VaCr%nU#%|TUK_#@Gd!r z?b_sulDS1dy;|9~10Jpx)Uq>XCNsWj_9h>V4%okHr)%-o)|Wi&A1&Yg2fe5z_+p3@ z6LTmqwS_jg!Jui!wwu9?i3V%g?{{;w^v5MX@v(v+Qw1;NTUzpzC(<+=+u_P)pJ1S= ziir$Z3VUzJ$>j0}gb&)P-J`7!()~Hn`zgu1 ts$ee`t>i;>72 zAEC)+H)~8SZ~}n!))UnE8^sg@LIBNgCrY|AzKcA(!_68eI*r3Bq%$hk@<3hP-KeqY zrO`bF0iohKGl5={=2|`dtCunisVb1|ZBu6K@DlB35%WOug3BIICWBGfg~!{85ffg3 zjAwK1sM&QSF^fg)e?c{4n}jKDS8cZ6u$UgSd7UQ`sF^Cfmy+_;5J9SGs0v(lNz<>b ze_k`ikTk1nN LhI%;|UIWEBi;rfL+$XnFm`Y=^b#}^>T??r1`$i#L zC+eJZpsx-Zx_m4@;*g)sTnSAJI$(WgqV3$Jmim+g?*gXgSXoX0CYIAL6Dv=^!5SLO zjtO#*Kyyk~UvzCJfH79caOW^&Sb8Me OLQNXm{6wJuoj=Rq);L~{!I7{z^I7T00ukSFW+c7|vIwbc)fOUm!ljfvgcTX-L2 zu5SaQBge$hvu)5UF_M@oYIRIdH3Yt4xd{-!vMfYaGC@5T0m$-GPAY>jEK7uX{}oxr zMy`Qsw7G1>u>uNre>sODJwGO3!yuoqpjX<6;|-WnEE zGN&jxWqO6dhDh?#>>a6QgpxZ-2p~%2hK2&26ZL#>a n^)?qN^dST7<;#7F%wYG#pRXC4~-ZMYLO4ezwV}|2{6t%47A-w+Lk$LWX*;p zSwa{sGV|Iu49aBbhq0oBsH1ZY<5gE{lRrEPKpVVkjGTxmT~AC>HaU}x5X8#vgA981 zx1g}fHfzl8*R1#rR;CS 0tu)GeUule f9RcuIwmmJ*l6@#zbnnTB3pAm&DhvNlnp4oBhl6n^!nrrAE zCXJ(`yyIz@v-kIH_P%)dK+N>wSt_SyfKnA4__X|W9)(2gm^w1YkUW*sZ?mqQ2UzN9 z8fvWc6-`m#4M&JBIf@Iu%R91MRp7hOjB0XWl_Dc6uKj6s=8pYN6AN#v1{fII0d*Zk zW;RVGkY2s2AFcjlNJ>ql*aYg9e#DhEH`%z{S67|%pX(1 oQZHj-Jr&k)G)7JrY#87%XE4hfF=>*x)XDm&>BjqyM3fyv{w( zcz mXU2gRs++uCR1MX;zlq*fYR~;TbQPeZ y>OVO~zh0BXb91Zc$Kka>>uNie?+-cB-$hsI+q zeonImfq1C(2$NaCuI6MMYJ;X=16&@yo6*db_%M=R)h|dpr613oWL%)7X%9$;Lb}Gh z%ceL<-b1 ah)b(n-W74H9M>cH5b=g9{qXN)|Ur8*K6Tta1bB$b1$#m<$f#zDQ(cu*! zoevze? m=~JC?sjtBj^`a{0D+<8V+h=?zS|D)#VXzc6;g@n392`oW$m6LMJyyOgT$=UwLwr z+uQo=gQRCq??gkeVeJ|I&8~qCJV4P2V=3Tnq&d!t?D(#fF?R&!uFUv4zb_&y(-F3I z-_sB%0^!07A$BJ&5_Ngkd h(KZXb<1uOG z6b*Iq-8|4l*0L!ZVRE1e#JtooXZRXc8qK1WNu_%#T}`*rqi`b5;(|(@dqZ_MDLQ(8 zfV8G)qQ5$wd*godS$5}@>4JW4ee+`VcBxvNgt{YF0xcej>xqRc=dy}IKoABUn!W*m zE=$z>GPuEcvx87Sog#o^fnK7g?MDFUhF&MOQxp;=%#n($P$bkmZ|1ZLwdJEV!@TNF zWK`L2<#9d-{}2bZ+*sf~WSWM}>7B!6i|L1c7m9-BB+L@ORf^>`vW= -X2_C{*!kzvoaU2Nt;I)|9 4Ri{~m zfmU#?dF#s7^FJR=Zg*GrnVl7U&MiOir-zpfgBgwvw~C0&D)9}{Pmn!%2KKl#?TBUl zO-}10X*~~>G@I@pdCV3tKW7{i(Qh|aL_}ou8N+1~x*)ew5b*F1I{RrGUxWc3xo4#= z@A`sa9^M$W_=(aW2%?x#uK5pz#-I$6z`*3_vNx=j&6DqkJha2W3@J!2`WN)}z{hsn zVy@p{PM^h?;<1GROm37HB5B2JtO{=Zbg4 ;EEZ+2m z=g_@O3fx9ON;%+~orPW&ocOhg%9%SEeE3)Y;H?7-Y2VcpKl&9opBDm$Zfs%?CBB~B zQU-BqJ+lFVy!D;g@ kH)BcvyUQPus$x(G=+hw2piN8y1h zWqNUPe@$Tfu+!BV!(>r+fj3N?y+#4Gx}4^Yp(P^Pv3yn0vj}LuaPgP$?3A{S*hcyC zAZYsQ`1Mae?m)l9@%hTEJTFjzZ-|p#@ZyRbtjawrD|vuW<`{$uHXOOrCap*s`FY}B z(3^f{V${U_f+i`vu0XR8FdvhYv`ihO0@y`t*HK89ts^rm5t5mzFx_-4Fy4llpY3~! z$Z9mnbmO q~f(jJv-A5c2*P z>gr=i`sM|$X0c|4@;BkAZ=rfy@1*tvGmtt8kl30C5g4@4p0Se7HkuKNcQ%PER^Jfm zD^Q}*k44U;sI2j6>+l((Yta$4LF8$et7(3hUH7U7&ndgUB<0WjQAq`K&cHDHkL83z z0m0nifUD1+x75eP){6=9cj1ux$Xxg0!LDt;L7q(IWpA4Rv=}fb>E=SFbJI z;!k6A=f;xEP&?@>W*I@>S^>OOyxT|8dMg-nVKrqkY$?2Hm6`0yPQUd8*Odaw5j^g& zZdkvZMsgt7eTu *ScRo>Zm}1%LCf4q7t{g?0T2;8WN#Z;(h9IfIK4?&^1Sh!W=q#UZg2rw z{?ugF-m`m#uVNNeU5rk D| zfeG;g-EQDMuY9?Xx8HT+)+AYT(Q8eb%l3v^)%dHy+aJOi-C1quNW8mMUP_1MUKFm~ z2XmkMW6o+v2qly9*(`($JvDQ7yWX#DNx*szJ!PaARXJH6|1_GI8h|A>dJR-=pZ*3W zsA$l!L-%uZvE1u6KAOJ@W^;c_kVVW7#mwej%4y7@&2H#W3ql_1=pZ@ls!603I6o_& z32R+(?NGY|D_Ib^%c0xs0Wy;JQuycHD8Vr&i+EemYH&+<`TjW7`1r8YxGWr}L{}TR zmT$j=td#uegvnz=L6m%T7kQPcFKfdpP0davfg-{+%&=~degfvC$`!#CwS>Vn+0`@< zaoRyJ-sLzaYsKzuWIr!ZQ>(W<2VB<0_0m4#y@jL;!CSe#Clh
^YTteXe~JQx7E&*P<=Wn9ClAQi5mB0x&N_#wG2oO
SaI>F z{?`kmlg)>luI=5g QPTT6QZ&u4B;v@!A zv9q@GVpMJLp$nRbr9|`@&{`1$ pm})r>dNnbAFX
zDpP2Md4j4+PuOEsA6oMbfCvGexEhKP!f;pP#Jq5l# zV`V?flPq#7Qq)>wZ#dLSf%n$yBo$aK9ay^9g4&51DVu<^R85TUx^sP9&}YYWK!Oeq zD&{SHPrubW3N$BC>K=CNyP@HEabs!(-JOrKVCV7WG_pp7H2qWoqJe4229Yb<_j@;! zF!1vCl_ R3bvV@+>YfoQ`H66(fKP># z1VuhErn`(Z?My 5;raz6&2moW z!Uw$!DzIbZQF553PodUuNGndX+twR+Hw@No$de9e4WPr?+Qxs+M}jt3DOCuxLJA_c zO|S2AXwRoKOdFG9CM3zqhJe7d rva~%xVDovv+BO^c=ZO%7TPpnKiWmfbKP3)#A&^UADdLC z4u9;QG_+hfF|BqQ>(rEwGOlTkr%|F>wm#LX#kn&85ISL%WD=gmYFrJbL|VHRTcP!e ziVRmaCff{)dUfqbNizCx&zFF>fw$d&5zp1!DoTnKUcLWIbWDQ&)spei)dEt|D~{~4 zTK)8?*#!&!X7>r$G?~T_kLa!XioGGZwWkz)a!dZdpc5OM?r0g=W@J$;lguiHhV0!i zVe6}eg61R)iKSbL@>b1M;d1@Z!s_z~Y254HfyIke+T_|!_TVwtn0=tjDAr*43v>=Y z@^n{Hytj3eP!P7k+VT`6djouY9SK?qNe=PS }P3Qo$%na(B)I;eZehOr9_2Zx-2S*lyCyO2Oek;7YUa7tgU}6;;ty^|dF}3wrVS z9D>fHcbu1;!85!X{TiNAU hpfvI3ax;U81C`C5T{h79Okm{ zQH)N)@o~584vu9w)B3a4n@Um zUx+a*vF_cu`E~~~!LlTl8AhWSptwnUYkmhX%n3M)3VQujl3iD-iV4 3^C^+vf~>1F)7s;QyxXM1kV$yPPBv3CCC56R_;p8<9%+LiJ^vJyJ=zj^`E- zEm_^wWz;B*sR8Sc(6kt&LXzp}dt>IyGGBZG_Pe5X*DD8>T$StQAb3*#9h6w7;&n1- z@>xGyKBx`(GcVrZmQ|)V3VKS;V9Hf8Xnt?gVp&l@m6Hv3yEbjUwbeghe(h_?htZI# zIE~Wk)MxT6Q ;8JT0wX25QLhO;Y2z(T~dCn2NRy~`7h zx62vnizS!1cPkaLY%fc9AySWs`b2saE3~;-9VccVj7}6suqs`HYhPcGHeaA((n4B> z@(a&Ul8sxlL_Dhmyi=mk=T{LFXc;u=DFT<@K2w%*Rx?B)`m_yQ|8*COo#%&pwdj_X zi$JoNF)R2Mz|(tHu6k hjRYdWfPdb=!$^=v2!mmbcbr zgy )%Ih|WA6)<#$_9V4_TrL>2b@-B`FaRBng%g0lu}>*- zfr7wNSo~&|?iwn|ov~Ox0~ldtvSm7-dfqcxZLH;qYyO0^r=V%8;fqG1Y$D3@FE>a* znE~~RT5`$)yRvt0M;UV_E58GQv;31H4=<@iX}rCUlU*K#hCZP3c>NQHYgH>5A I6|0qYvPeOM5h>J}r9R42QiZgx)&TACk~y|38w{+mr4O z+mvy^7--&)dUXyn0`=H5!aOb6y#2R?4&jKcI|MCX(E;NJX~V)cW`v4HGc}zL!|Erg z3TN<%#|4dD-jGdMeK{hyRfLKMNBq;=JFC7d_Duvbv1(XR!(A$u`rV@~M|)!HUQ0ax z7%(2_pwxJc1Sa98Hs~#K=uBe%$p0Q?#_wc9c?3KqVwJ`I4FnsZFDsXr1sSe_m*pKM zkaq8-Qj>o{Tw&LL>%^~m?I;-To3WbFGyR&mBxz0OGuu!Rn$Z*Yhs6FTxdCx`V` zjFIv*XFM9AJue6VbLJeG=g_qtg5&Rwdc6Iu?E>Tpb{@-LCNEFAU3{?~ieIlcQGHF$ zOS{trPwG4;z1{Na6}5huGd4VD!%gtnO|1$WUFe?>w+?U=?9i6VsGT6wc@eqG-hocl ziq51|79N|+6VSlfrH=&w)4I-)rWh;wCDVcaJ18Cp0hpr^I!<(`Rw(7e+opXnU%9JL z@c>5omEYZ%gcd+`x%wzjQ{53VN11po^RF&SPk*$!<0ssu$4YZ5DAhSk{$c{y?Pg|m zdYiBLQ9kYtc0+y60Jmc;-mZCa-jp8^0otGz02}vwfqR$J`SK7qzmaS{HR~;sIwwL# zKCK=b@Tn?KuWmWO8LHkPN~B(`6b9ZmMy1sSVEO}J%|_heIYeyD_JG-@TE0thxs6mk zHE{m7&MF+z4Ol`)?O0fN$28&8zGpw~lN%QVA7}4d!Q#JSWOYE`=>9(U_MQch0YZn4 zYI5J=tXaaVwa=3L=8`$FbdArO`8O@-M==-o?$@VlYilZ_YwpQnO9k+F=o!!?bhOKZ znk7SE5ucv_!2*WEcARTs2F>6yGDF*1bmxE<)(W&9lGSbt#_oQd#Z2_ebL?kM *0o$Qby&{IG;Md0E6E`2^ACbX!KCgv8N_; zd`MPFti2=Cm^kIQqw=>%43nN29_7qBYC%dxlDmlor@^zeXBSd&avF({Y zkGq2P>ZJi7&cJdS=* hWlOdO>7l#*;{hA9} zdS!(R_0pS4RbF}+)K3%(BQilv9dPz#VkXqesKTJl-1&l5hmzCdbPDXP3 Yd*;!r9_lmQAL{Xj zkIytM|I6oWqCFL$JW}MUK}FMq83mXH`0Y?g<3u1}>3%q2r+M%#A8TzT-wxbSi1#+Y zF(_Bi&&)MD`rXA>!RioHSLt8M0N$M*|-MS *P-q_`( z T-R{Pd@xs;BFIjNk@#5o!t84Dy-=VVfr$5hC04w^X7 z)VIelAZod*<&G}!Mzk;Q^9oijtWs+6w+rDap1TZ{Yk5Zn-X#-8rhDJVXLgyL$zWdxoF1${+4~O+s7FIj2424Wg(vbRWiN&1 z$b1fdn!c~`wOb0T7*O J14^N02w0Bwv*6De#W@ImtnqwVy#D50FedM zC2`J(%6Wb|ZBgX%yW!b T4LhlZL>F>gb7c|0` m;7McnJBKFO-V<&xs$VJaYBS-AbI%z68+u3|Q7HdML zllC4|4uv>YiwQQq;~HvIZAi=U=;R7%h~{{yuA$R7X0*X}yp2pEvYK2IviZa|(Wts@ z#P(A1KA2*`zr=44mTJLI#6qkh+GoE-Ph+(-%ZFrEiefN~4pPOJqiG}$GIRVFt2sVe z0m=lmLqTQ_iW=Ly_LnvEYtwc#4;fPzWPcRmj#96VJ{r<%*gj`ko6BRwW3iqWRGE&Z z_sY|6-)q|64XmnnBz0W!g66Pn9bp;2qVvcl1n9Q*u*V>BKHV4I)}9g+Pt6e^o(9w1 z_ZK1+v+xO+Jr&lZdQyJ1*1xp1_5y?30Q7rpX=&ejUXG;hFHI (3 zI^x~YrUUvSy>>OVT=ew6p=;}^MalQ~`nH+p-mlgqvOjzbytsJP^?_lQnp#uzO99|o z>NX}#c{(r1#r+$P*yWO^kIgIRr1@fe=8t0Rcixa}>a6G21QHIh{90n3)oq>%Kiz}? zbh!4Z@B$nb;e0--W~^DmS$35vVJB9#HP5xr{DU~U3Q=i#X?JQE$Ugm2ATsmaXM0}) zWiFT7<#pyA$TQs&<+z~MFtSPU6xz2}Kx>lC*V(2_P?QEaq$}ewf!Mev9)~RO#hb;2 z`9cdwwm0q UxC z-M(j1C+yx*&B=q=ZXJ_M_*M%$FF1GgB)FQZOToAV8`s>`+G1 zeJ_#wVi)5HKq`l`a?6JuXhycJdxr(rKAr@H0BPx5kev{cZSP2LEh%v?d9r<{cMK+> zgqs{WJrs Vtj!8L9vQ6{q3dD(m z0DGu&4uH0eWi>K4jez@*GzuiAJ V2W!WuRJ!IRFWc}~mx^s+M%#e*)bW6WgK zA~1ZO%ie=UCOey_%9%{C9)W7x9u_Fi9#l)MEN=jz*_3eCWUEUBg}pJyotB=Bn%^tt z{XWIu_!!?-nth53T&m_)CmDB_*Uq($2hq8JWL=YrP^N#6pP}umME?|srw|34v%1{c z7Y*OsJ6-Tt4$LA2Zq6!XVjEvj?Yx!Wz7td6$UHcvqi5#+4Hs3P+RIK0=^P%A_?Xuf zFIUHCU;H*wPfKX=5lR;m^(XxGJ`?^w!dz2`>Y+@)t?Ok_& L z(A3R#;v&XVQMgu}Bc^{@y+kwMT>Tg&lkR^E3_FXSy=L%QqRU$MAC|_{$Mn*wllKfP zc<&Yy24wv%xe0^Y{&oYB;6Qc)Y?p!o 6!+DSXLTf4nG(50E hpb6tkbHN8YQF>T=e z^TW$+iZMb@OhvWL#fh5H=k-Y$i8>JC%3`YadkUG85>YODYf9Gk2iFm`XXAnIvDu zw>y0*{}!m4VY6;nxH0F8oH# Ktd7@D>m?XTNnkE1J z&f*;r%GSfn3Osid_hBBq9)Hhk4SOv$-UGWl*9Xu}S&X}dKEWa0HqjDlLW3rHR9}B@ zqK{U+v*mS5bI cEooSX08e}0}aEa{(^YQK&(odV(ZnYB9Vp(~FaX$zem z7aztbvm}tE*49jmc>8rA=YyNB*zbVv1EYa1xGtQ@f}Y+97@di3WFVnOC_;!VxU=bX zeZhUr>Wuv*F{>w}GT!bJ1qH-UJsRcoA5+E;qLAXyf>V)D43O)DT@7wj+$BIFlgxtO zM0T5dex94nCYU*Iy`SVNs>v`etCpia{9G)^7endprcem;CoaiB40YW5ty7)sq)nA} zR$JwBqvK3J=aqUW_ 0Cranj?@m;beeAoDuGRgYpQ7(DF8vhZ#&K zK*rlgz^lM i-SzrGCbiI`sj1Hy{$np;vzt 9&sDPn1^R5mSpKRgRR+ z<^@??>)q2vx2Ldh#(as!$f|$7{lSCF4Ko~{<*~c(gFR2qx%@h9h>ou23|(hFeU=HC zev2|g5p3NBwTLc<_g`;nj6uNL?HyPSI$=8&-%b_tVE-RRV660%SgMTuGUIAXL4}wg z9Fm>q38NOOjO;2mEAj|qQIXSS52JuJWAra=stUZXYpA$nfc1>vEeEA6Q&b}fnu0Y8 zWiAh`5vVk?r-0W>10$Z_@u}|;_t1q4V}ZJ=SN);E_4dC>`#)aLMGr;CSlTDit9~!1 zN~`{7=H_)hTp|XFh*boU8J`9s_ $VtC& mAr)8h zSD-x3;c#nc+y|@`ScpTi+)T1b6oZ_3HXOXcN{0sFq2Fga2wjh@7o12HAwjTs?7VzI zuSW>sxC%p3eM8i;t{*>D+puy7S>Abwu@J_%rpCowDQw-P*H76RtgTGr$y44Mfh9d{ z0`l0BkRkeV>6Y_ntcFfWOKWB-T+8>3|AN15jog|mkm SFt5f$>5Wb zM$j!21$^-~GF+XXPfJ+CBGOpv2*hbm#TQkRuJd@~Euql5QuWegM#G#badQ}Wwzr;o zl~oiwP%Wcks+JFR4;&ozuV feFa6Nr2c)4<5+Uj@$!!`!N0(Ei zm>u%ad0r?~%eFl`{~M8(2Loc=>;UJ|{DQt5O%@QEblqEI&`O~Exzvd#Bo_v{L?`1~ zYdt@eQ0?BZh9J2ju_l+O_3qOzLl+M<0l%!(A1xoa{{8-Iym18zoYF3az)&A2qty42 z>~g;Wq)d?Kh6n(eSK3?k!s(7qWD-$AS_eel_Pd$@-1C>^xi3bF_(=Syw`&4mSD-K> z+2fNbRlmL|@D_5|T_1EGgA@IyEsKp(!*Z<0T_TgnDw9XTF}ve&D7!{E&2;9n8)(gw z6l)Ue9ZW9I#L5qNf+9%oKsTD85SD-q9~}g3K&ZxbOfTT7CDQL0Oy)YLJc3gJu@Ov* z#BZs1^rk58759E8Pka(^aut?qrPcMx^>vz>mdTcj-|X1s;R(glp>gi{e`X0ZT@eQa z2vMitCpuUe=^Ty~_+@TF9sq-~Gqwo%lTZ*5;4y5?H|}GGnfum4XbK6(P=03fIH|sR zS9uKU*MC84h7S4|FdWr5`{S|@99-@V$l10Uk#jh00S`il9V(!(Jc(JfbT=boFv8fY zs&TWf@W8JF83gfW|E%5P$*v{1l=9%laLjPi4(U-UUOYUY?fuKI*&E;MZ+LOr@*|3b zr>2qV%J6c;3WfDANVU8cf#Nx5 q*(wb1Umo!l#c15P)0h>XeL zEBelP=8P-|z7QEeETh}CHiXI1e?hP58%*fDQ1+>QQW>#ey#gPPvr4xrS$$bu`9WP3 zBh%?>V`UG;%lp}Bu|T$y`q@s&^1KmP@fg0gN){{%T!xHkQ5mAeL&<6y$T3kd;h@#h zC>vLKHQB4Y>Wo^UnRDb5%g~_2Y1dkLxItwkYrZU ga^^~1eLwz}($ap@7>Q{m3KjVP?~uNY`x2nf6k?aLQBw3( z^!@u1|H*~r*fq9TMIW8y2q2N=Kc03A79>{yi4(xaHQeHN xYTe~ $_b4fb#Gfs zIji`-0N~f?#e&XNNeE^9#gBCD&)=}o4@#2)FcDKz^;&k?cc%hLEiu|^>8gJkrN!nj za0J_&j Mdlwf+xjYf^S=K9GXy!J9oVMKr5L08{V)1K#bbI!Fq5{qro&ir%StO95Ym@yU z&@D6w2hAqn9R!fV4i$6ZFwT18%|DG=kcuJl%V&8a+QFdy;}@?L>jTGt%%9qsyzt*ZKI7$qHcNCPV8)G-@cjTE#K5QN>k7x^f-~K-BI2) z;&~>6s}_q9xM}Y$9O56JC-INhp0*_xc%Fw?zp!R9%|h$~ZFYA?moWmWR|cjzx#ycH zHbZgDvQHy*4flJTZXEU3E+lZ@4U@1K9huSn61n9=tvmf4wcyJ6%U?HH7nefd^2o;) z+}7(bFl0^T^&L0}nw-OWY~c^J$`}0Q>rUI?eSVQ1kHw0R$z3TE-fJrM3g?^xmKusz zckSjf)D=KnqJ0{N(;4!yKTe4c$^w!hA3|vd*7;snJy92dOo_}*qn>9*KsY!Sr;>o( z4?QjS@I`0iMXm?Dt(`$BI5;Rm``1j>)_neHth5cG(YHCdcR>jbfi}kzf@Nu(MVV*9 zp}uf&MN4d{(J;yJ-@fx&t~*T+_~lmuQE7`E*gfp?I+kNrcV!3mJ1@}YM#W%a`RR?> zUZS6vrn7(+ZRb40RBi0gT>Cmt04BKGFz+=XDe?AL_*9dIAnBL+mr9a))dRZ3PaKNi z@X}EmCs|BUtaOpnPzk%|c?p(&JsF2g6t=r#ox{Rn)EBl9Gr{ Z#s52QG)BW@j0NY8EEe9;dzX8hDfXbQXRNb zN<9!LqfT&=HB~(e%@ I?0v7T55Uvl`pgB7;Vm`22f 0rM}*vO66hug!}j^?*b!EDd1At-KI!zaB2 z80h0`+EY(eR$0us+($`H%u4>GC-U>PbABUXN^tH&I+6Y^+$vGDbn)=fmJ1VgNj(RX z)I-D5M%Ut&x1S1nr Sa0zgoaq|`PfhZ>Qoc@`bZ #erppV>5pD{St&PTL2~_vB9BDtufQr~f+)m$9t{jhnNEja z^=nkrq}NpS#67j3kR Wb_7s4^fQTM usLeNY<;{j2WyIN4-m*+<{J9B{D=IlrW;0)%3yl+ |#crp*CV5g6*0*5j!kqELVc1(887j)}Y z_&dtk9@;!ARd0ld2zaXD{c&0H!mDkyRdE$sZgqvO`PHcQCo?BEY?}(Lcp?WmF04d( zctfy22TAboIXrYOA`dK|VRWyESwMg}J*6x4>G#wB*yTA0K{1GpnU3)Uvs!C(&M_Z- z)b(b}vlF7Y*~M#9qs>QSP_ It)#f};GJcy~E4IguZO(_fU!ZuZ72Va{dgE)~-*Ok#h zr+Ejj&&g)LCV}K&!_Q4tH9dK@N9MuJ5t|+L(mt(<_P HG$8t=lWm7hhh>T$g-=!BDdfRRrQdB_ zhc*X)MFoxMonC<_J<~mK+qV?P6K_Io3O0rV)WAuSEwPS~Ma#bS@`e(U_v7EMKmse% zt?lU(ZIG9c!+sU|Gd)pMuHnL`D2 p5 zk8mTztb7*K9pHKazMOIXuSxsww-$KoZ8{K6URIlr$dL*b`3_2m{3+fH*A7HDbtTCY zun;=I{+gxj<1UE#I;gdza_PC#mP`jRYu}=Ia)7k8sv@_ux*@JKfb+&W{ZXKQI nYhF`~_O=f{X~H)M rILXrUdI&$fmo~Q_N9Qq1WLW=+_|#?-+R<)0L`~qcuXc zR-fkPj kjwZc7{H?jgYN P25v!mfp=dslyM!Z7qbnD?OhjdE4K1>l;!^YV& D7Va<`|3diM+ zBZD8fQzaA6{^=!(Dzk$Y{1PMl79%dc iqTq z6TLw$4YOA^l
r{a>;RE@w!o*qkzck1uD#-7@- zW4S_Gom9(C1#r`WA>7NFYTqoMs%lm3y@{vYXH#}wfp8n-Y^c+m7M7KpCC=!@Br?Jb zhO!@kAvj|{ENIB$qoIgMpbcMAi&WymbKgQmdLPx6s>6%GsyjHi64S8jB>6o~64>0H zlDJaoxf+&!n33pMKatzH$7KLkKe(Fp46*Ta2yXI?LT|yM3qR4eHMwF8Cn4*uBdhtg z7$ws*8ICyj$qfPiaW13%JRyr_>aZ4rZTlx^`(WTgbZk$Toa%Xqy;R%otq19e!6u~aw-f$jw@8)jFKT4B8!?w zcMIs%ja5gU-#Jk2z4PkI{JN+Co00sMcK-{t1+}${BdVh9#jiSJH>TUST4%=b&0 %Bz9v1-6z9dWSdq$^jMU4w0+@CTMBeI7 zSGg3SWMb_eMeq&Ug{jz9)kk@y>s0IL&g~O{4MWK%KJq7TR+85Vl#fbxNG^ocRB^m_ z>NQ>E#6a$sNED^wCtb>={IcP|x_z$4PMO**G=|L-roPS1j?29jD+>j65kauP97_MT zp{vt{4O;%$Z!MK 2vW=7;I1F IJT?6;Xep|#q0r9 zkl2THoRH1JU@h=gNR|` %$-xk^e)QHj*Ty%1BQ&se-#uVg-G z6Ks03{#I>4U+p53CRRz?b)OZA9$)`0CG!#LmQw`_WBOZ7XVQY0-0V5|tA(=TuI)00 zNfaupYdvvKY;vauMtywy =RYx9c>ZBBSyqF 6IGrrC#Ccjftplto*YBBlL$-}vWWhq>12XM+Un}jZ#r~3{k@gD5;0wT7 z)^EJ!!_H0gzMb)R`u~IMYTEVKIR7WX_7q4qw~L;UmC*!;l{zi#vEtjcL3dtP0p7gh z3~iw8m%_i(3A_o0Nh;PMl=cuyt`EudFl5Lm9x!Qdg85W``NOjVmzH;mo-S<}miU`J zI>GV$wIaS!mlF6!e2C(d9uCDeXs1L-TlA7JXu@iGKv-n1h=*fPi0o+lTj0RDJOk#$ z_?gn`h8woF5MC!P_9t^F3-G>%is?;>N0yd2oRY$e9>08T&aWHE9~)^JW;_2KjwNNn zkj7}I1c;2DQ-Tk fX6S zjN+%Y181>Q9nv6nP+i^qrXDe1VW^yWzh8Yv&24jjz_VaIH^RPVJ`A_cNj;v?HH!m% z3(k8Oj!XOjZDNvVYvc)6=b5IUA&7Wo4EDpXn|!eiiV#8;Pk4-MN{sb@@9Q=%t(+<+ zC64yz4^*~1j4l*4OZyd9jrg{n?NCTYSG@V8$C4pUA-V?yJ?<2HrVeytSm*6BryH!l z+Jx;-`44hw8V#9+i7>L+>7orctcb31n5YOmndTU= V$Aa?$?eEB?nSG-ob1CF z2ikZm&u#^Q^jZ6V5R<}+^OCEa=)?Pu`zGPkBWbrmI+g&CL}KliE}t<%*CLn^d ;D<+s13uMKU!Nk*58tNJ%x2w6p}!^@M{#X{ %le2O@N!WiF>{p8 Xb8`X_lQuae20$P^(3zoCSTQEK z0>V{MW^s%b9OX9Y7IpecY(oac@*so4{s0zRrQP zXnEKqD>oB@8S@0lj6&Q)ivhkn5^nMqRGjBREeckOEGvy7eR@xiw3~joEb0+* 2L_J!8xPv;tMJ z-jTq_Tx~8hRq)46W|c)Yv5w(ZX2jxI_hfY0VOs1EJ 4fj8tZQBj*VR%KqGK6?P v;TC>*K^|DBHOu_{)Sa{Fl5G43tSpjmGY$Q*&HQiwC;{b&^9|IXUJc z$8Xmo?z&p9=F^+P266q8PhSrY@2(wbx%=mSXiZsLC!z3-eYzd+3c$zl8x@9(INGx! zzGo-SnJetckccn>YwFy$bew%V7Dv2%0b(X# x8E@OdglG~L_``Bt2hB)C{C2f{mdc2g-wQs5L6Vjg?G&uRVx{qt| zCm2@ VWlUZK<_=Jz7ChO zkZ~U=lh4fMz0|q>%J+W3_x~7qKjjflE^i7F24kllRr&Zvci#nWaCgx}+RZ?1^8)U) z%!Ifa5~c`ATWf7I4FJ@K E)w@7E1hn*uXg-Prh!?_+EEwt
^mE!x{Rhz3*J{QAN|H_^Wfm5BDr_wkb|$ z9TVyKd?TYcKInOWgz{ubl_`!DyDJK&Qp;483tsHjq1! L^5~AKg zzErovtgX{c(Xvn|WZLY6sV6)Kf?3|f1v)xdVSwps!O6F$p%AYS53uA?QgcE6Allss z3PWtQAqwEAN pNy61vZw;hL7ftNLfjopu3LM?6)1jsv?QFV`gc z0wBf7xp1)Fv_ZZ_ED3TMa>LNfZP)Z^46O>_@~)l;F;&cImbkE>0qrwgTH)OC_6l7B zxDK_9g>DDe)Y9^^TM`?CR0Hv&`30LMH=YQmW-RGcf@mO<4LXDX3LFYy*=~h=?2jNo z@Jsu!d$wuT=FbbS2oks;fL)1ARw!mBeBH6OXknR3EnSjtDg+%X-Pe+{XWjR#9^K<& zGMy|q*EV08M`qRD&u_Y{m#!FzlgO3j(FGHnFS@5H-o(&?5TU1GtJ?(lQy}*5icu22 zXJ{7Ct!S-^=~mpSEKtNTR*_>N!X0#K+TnAUn5nSE5PCamkr%z)l&o~RSaNXj2 @9FQFXMV_~n#_I7+YBvI7P*Y~5p3@8 zWYK)mt9HO<_EOA@y1}|`n>*#V+E9(4%?_cnz)Qfxn6!-=8!C}AS)Im6Gj;$?k>UGe zq|ZyOZ%kERZS_h}Hr{`KN% mV907u zn`8U0kJ>Rbnib0jVDWyEYI^y%uvsEx6z2isgb;E^Q|n7cO;=^&;-pMF=6hfkb|;1Z z`uJ8=%e~r#pt_*o#5=0m_t#PyPCZVPoT`Wp+&3H%wQpd&^6qQQi2+s94J*U~%*K?M z>@;&U<%BJfn5e8XO&%n!MlA3N0B61K$X2)9g(@f_tKD$j0xjhSkr+v6+U}n@{_cP^ z^a-%D(H`n e zbEjVL>$6U~JtK3NmiBmZ_aiF>T+Ly>3XWw?S z6R V`%w1pCElyI{Sm o5t-Gin^h-_Kfh1-bI6qHgsDj@#t F3geYs)Gzx?afT;X>&Px!{lF(?M z3My>?aC0a;2%<}9u9#x&suM*zMt$hp$BI;?{>ksJyX|dJo;*3|9k`Qn#J`iYG=NxZ z47J<_p()c{p`~N4c6%R;eO!=304*ITAk1w{1z+JWgxjemUmjDH)~MVj=1l}CC)Ufn zwBxlR&&_Hs<0DjzG*B*&6Y$XmP9p`u-q8gd-PrA0-7(#Z@1-3H7h)1(>N&YUI`p`#+c{@w)V-(MxslUQdK0>%-I9 z9!((Lb|`=`)4t@@E{w*=nFdR5wM!m4HC@Wa9omW{0~`i=2_x8hlLl-XG%P-V9A1$c z{==uJX!)!p#(O!@X<#?`$k@IAAm4q}k|tOWZXyU%>MS9uWllMgF`-KmB2%1zYhWeZ zhOpE~mdTeEPnEt=0De}R0{BS?f_f*dO538DpH)kPZX_Lda)_xi?oP@J_oM{fFDE@<;OugGCgHXElY=Q~os73fF%|L2XWQ!Pud8whHiVve?q z(P}4hdmcwz*7yaEEK111l}&*GtQ|YKo3zpGF7MW4Pk!=hyNK3Yp}<^S1(0?1C;x_g zoYF%XYgen727(=3jM<=f>p13cL@1%nz_k^lq^9G*F(hK_3CY6KDZBCv5xpQ(?AVOj zu`jW1krDM`?2+zLU6d2*_@G$Y5w%GaSyJcM6w_R8K3HUuplk-ux_Z7V-=$)g(YR6y z!dV?NQ~$t^tya+-_2KHmcZjT!2Z1n~rEf9_9`!s8DhQaHI6+VP;w`CCDI-7r6Ua#| zlhoBEiv8n7(OG|4g=Bhx*_u6#1s5FE3b}R GK2sxC1UI za51H&hky~kwMulWVB@+xkU=*$G)>+~WvovY{!Y*8e6j8F!i4CV=uMNP?^591)5B9@ zZ-)bs`yy)xc2 wT3 |wz;$4GPOBmz_Z1hM!9>mme2Xv_CCr^JJO5l^GVf%DD%V7~H83?=PTbI`%OGcwRb zZ(Vw2HVSmF%Q15+X?s$h-VJ5sxtIxC*m$wz(8fBi`0gDVohGO` z%9oZM^a_{d81|@3Py||t5vaitVB;4>h6I>RQIJ?OTwI2>UGPhp--=(b)(rp8GEn|* zZo9wQRTj!jTLv@tw;PtX{l43Y_N*nQqp+iNX*>3zIVvXwY9U~YvY4dMTd}91VkQeV zt(p*ON{P3IrBR#jHI{@^Ncxe%N1(2`($WUqI+{GuI_5wt;JTO`uUDcSN%6AvsjTL- z=OoeJOo%K2X{Vp*v?VZ$5_qhQV8~}OZDgQswW^Y*JCN6GltgW ;r)A=FaA@z)0 g{|f-3wbD-%-(8kn2c12%?pjf+b4 k;0i5bg@j^YAXX?{TG`k`=rYN3oXZwx2;BgNX0KviPt{uIILgNe;M*sx zTOte&{ubq8z(3GG;aqrwJN~A5=A+WNeo4Uk#E?VTFel&^QPB!lo)iYpbsIy77(fe~ zvv^Af55=6V=Zn_wF&M77jy89a0rP mDTMH0>#_80j;`iF6%SD|=s5sr+;t=G zC#tf=Y6IUst6d3o9`aG0-4Vl*eoOOv$RY2jDIAX4c|li^@DV)$K1rh9c) `XbPXYbfH)LJEuuXHQ;Oz-`jQ_q@oWgaGa25Qf^?J9XQ%D)|DRl>xESoylhkZ& zOu@~tQdtPSGwoWaB^i-LO@|1NhJQ7|EZHwrOAC+lT>jel*~`!(P8hI&LK13BZ`1bR zQi>JXPgcUQSdwB+?{ilkd7!+u=5lv;0_VQRw{<%>PdT{u(VC{q?b5(2gMoi6zD2Q} z5)@&U(OABNyaa8U9_!^4vL5!_Axm5Y|6qQR@2bSs3$U-Jbj;_4*AX=AT%j^|B~JXP zJDO4VbyC|DnD*hoznbQ2&1bfRHPi%>{1&eih$5rv{Lv5yBvB Yp2bLV zn(jRmu+|HVFh+PXW&@~LiZ`wRnhK|-D;rOc!uElMT6oXohbBOJjqzvAb#3=@bl;`= zwQ*o%*y54@k=>4f=Luqs0W=_bNOL=C;D*f#h0ZDHpmc1( J6(!5Jz-5pt_B3JiWIyY-XY-3#cNyc3rlR7s7A3onP+l>hxzkx=vU zal@ZHIaqEn>y=5?>?;Y%3~vm&(=Ll9Rn|Eq7L^UTsrBJyD_q#|5$2{0uufn; ej(kv&i^rQ6wWIgXOZ-{S9}iz1Z=6VyxIKyGwqx4lH(a(287p&hO!49j zpI^Ki+J5r1Hq8D!xSxixU?d{F_ieh5Y194H23kv{or$@859bG%vilY-Vs;Q-IVGlM zd2#pS-hUWTjfnlO)}}q|@L}(hHE(Vjn}}+P*A96=VYE0VJ{6kwdv=KFWfR3R)`2`z z_>MNPDP*D*tgR6m0hR=Iju}Wd)TXn&Y^!OQ6UDw=hENtM7H=I3=)bcdN)q4OA? rb2XiIlr=VtUV%nB@^rcv6QA*N~1=h Lhe!+VEvw+^mTw6)id9hR`{r)yHZsWUqLPp&ed=i z0RcBEWFAQhTR>REjU{UU=lqx4YLOxBCNw(+57Nlyg2T`ds4(UM4G)F$3=z3+O| K=Hh6nvFFC_Jkj8*%;J{F1q!%C7Ct+bk%(0#p+oOLc#HfWq5 zsyy7poM@m(!;29HVocFA2IkUb5{t#TxCICkYo+C4_gb-dq?sc+LFsR}CwUWveB5Jv zcs4MI_5qa?_3ml*oN6V_0X_BqUW(((q=`x?QLVd-NV}<WlxDARKK+AqE?6Y2K*8?M4fP6%5m-o-MN2Bot}(yn#^KsJ zsmmd9)=G0k>iNx(xlRW&L5q@^jI}>43@`~v#GsJeY60K~m6k;PYZmkN3Fxe`#5OCX zXr!A}0!l5OT}gfDc+lx}-{qc`pn2VxWUl!ov~Vm%2&SZkH*p2JXBKbfa>24_)D9%@ zCnFpYjD%5ABHDQ JAnR&no5JipC}?p)YuBkG=den%1&Trmme3vVl3A&3Qq{0UewFCRK$X^;WU zi^V^;r;+Hi)CS?p%jHZj%YOt< JfQgH`HJuhS3n{sDTEGbtHN!de$*MH8`0pZeVg}KFZAn*j01su*zh0 zp;9HvOtT6BD3feKi(H6>KZ9O4OeilzEphoryOex z4t~eKW#u?z3?Xh6&|+cVX9(P+h&XDJ#nXr82G9f>5ILOby2_J_sjKjHz8HB@8C))9 zrxt5N8J}yZnEW~|d1_O+|Jkt`@#)uZPFy{Pk9ICySP?JardC zHYaQer9EI#^B{1iXe <*X7bG!*(AB0vk&0_92fCJ!vwu?&Io+e9y5W8J=0 zrMo(EJN2=YwPca9S6fXUsJkD1n Iwc4PudM^73iR1IUI6p^LKD z;+jn4BDBoM>y{i&jjhS#)}snP>r{5uf=*O6iWf7fsoJ74h Fumu)roXT3)}(Q_ge_ ziZ#0IDJDoe-P)j&b3-(;l7%vto0p0+H>N@up(qXLIIXOO@HU0T+T~IqrfA0-gxpTD z8E>usCa+5q)&1&6{ci#v`$l_X