From c5b48bd3f8aa4054ae2b479bbf87702f9a83704a Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Thu, 15 Oct 2020 16:41:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BE=9B=E7=AE=A1=E7=90=86=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E7=9A=84HTTP/HTTPS=E4=BF=AE=E6=94=B9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/configs/.gitignore | 3 +- internal/utils/strings.go | 15 ++ internal/web/actions/default/about/init.go | 12 ++ internal/web/actions/default/about/qq.go | 15 ++ .../actions/default/clusters/checkChange.go | 54 ++----- .../servers/components/ssl/selectPopup.go | 9 +- .../web/actions/default/settings/index.go | 6 +- internal/web/actions/default/settings/init.go | 2 - .../default/settings/settingutils/utils.go | 2 +- .../web/actions/default/settings/ui/index.go | 27 ++++ .../web/actions/default/settings/ui/init.go | 20 +++ .../default/settings/ui/updateHTTPPopup.go | 65 ++++++++ .../default/settings/ui/updateHTTPSPopup.go | 140 ++++++++++++++++++ .../web/actions/default/settings/ui/utils.go | 41 +++++ internal/web/import.go | 2 + web/public/images/qq-group-qrcode.png | Bin 0 -> 76258 bytes .../js/components/server/ssl-certs-box.js | 33 ++++- web/views/@default/@layout.css | 2 +- web/views/@default/@layout.css.map | 2 +- web/views/@default/@layout.html | 11 ++ web/views/@default/@layout.js | 29 ++-- web/views/@default/@layout_popup.html | 3 +- web/views/@default/@left_menu.less | 3 +- web/views/@default/about/qq.css | 4 + web/views/@default/about/qq.css.map | 1 + web/views/@default/about/qq.html | 8 + web/views/@default/about/qq.less | 3 + .../servers/components/ssl/selectPopup.html | 8 +- web/views/@default/settings/ui/index.html | 54 +++++++ web/views/@default/settings/ui/index.js | 19 +++ .../@default/settings/ui/updateHTTPPopup.html | 27 ++++ .../@default/settings/ui/updateHTTPPopup.js | 8 + .../settings/ui/updateHTTPSPopup.html | 33 +++++ .../@default/settings/ui/updateHTTPSPopup.js | 8 + 34 files changed, 596 insertions(+), 73 deletions(-) create mode 100644 internal/utils/strings.go create mode 100644 internal/web/actions/default/about/init.go create mode 100644 internal/web/actions/default/about/qq.go create mode 100644 internal/web/actions/default/settings/ui/index.go create mode 100644 internal/web/actions/default/settings/ui/init.go create mode 100644 internal/web/actions/default/settings/ui/updateHTTPPopup.go create mode 100644 internal/web/actions/default/settings/ui/updateHTTPSPopup.go create mode 100644 internal/web/actions/default/settings/ui/utils.go create mode 100644 web/public/images/qq-group-qrcode.png create mode 100644 web/views/@default/about/qq.css create mode 100644 web/views/@default/about/qq.css.map create mode 100644 web/views/@default/about/qq.html create mode 100644 web/views/@default/about/qq.less create mode 100644 web/views/@default/settings/ui/index.html create mode 100644 web/views/@default/settings/ui/index.js create mode 100644 web/views/@default/settings/ui/updateHTTPPopup.html create mode 100644 web/views/@default/settings/ui/updateHTTPPopup.js create mode 100644 web/views/@default/settings/ui/updateHTTPSPopup.html create mode 100644 web/views/@default/settings/ui/updateHTTPSPopup.js diff --git a/build/configs/.gitignore b/build/configs/.gitignore index fb0ef7fb..8d069de8 100644 --- a/build/configs/.gitignore +++ b/build/configs/.gitignore @@ -1,3 +1,4 @@ server.yaml api_db.yaml -api.yaml \ No newline at end of file +api.yaml +*.pem \ No newline at end of file diff --git a/internal/utils/strings.go b/internal/utils/strings.go new file mode 100644 index 00000000..d17693b6 --- /dev/null +++ b/internal/utils/strings.go @@ -0,0 +1,15 @@ +package utils + +import "strings" + +// format address +func FormatAddress(addr string) string { + if strings.HasSuffix(addr, "unix:") { + return addr + } + addr = strings.Replace(addr, " ", "", -1) + addr = strings.Replace(addr, "\t", "", -1) + addr = strings.Replace(addr, ":", ":", -1) + addr = strings.TrimSpace(addr) + return addr +} diff --git a/internal/web/actions/default/about/init.go b/internal/web/actions/default/about/init.go new file mode 100644 index 00000000..0cbca509 --- /dev/null +++ b/internal/web/actions/default/about/init.go @@ -0,0 +1,12 @@ +package about + +import "github.com/iwind/TeaGo" + +func init() { + TeaGo.BeforeStart(func(server *TeaGo.Server) { + server. + Prefix("/about"). + Get("/qq", new(QqAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/about/qq.go b/internal/web/actions/default/about/qq.go new file mode 100644 index 00000000..c04a4205 --- /dev/null +++ b/internal/web/actions/default/about/qq.go @@ -0,0 +1,15 @@ +package about + +import "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + +type QqAction struct { + actionutils.ParentAction +} + +func (this *QqAction) Init() { + this.Nav("", "", "") +} + +func (this *QqAction) RunGet(params struct{}) { + this.Show() +} diff --git a/internal/web/actions/default/clusters/checkChange.go b/internal/web/actions/default/clusters/checkChange.go index 61c6d25b..b8034b95 100644 --- a/internal/web/actions/default/clusters/checkChange.go +++ b/internal/web/actions/default/clusters/checkChange.go @@ -4,7 +4,6 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/maps" - "time" ) // 检查变更的集群列表 @@ -19,47 +18,20 @@ func (this *CheckChangeAction) Init() { func (this *CheckChangeAction) RunPost(params struct { IsNotifying bool }) { - timeout := time.NewTimer(55 * time.Second) // 比客户端提前结束,避免在客户端产生一个请求错误 - - this.Data["clusters"] = []interface{}{} - -Loop: - for { - select { - case <-this.Request.Context().Done(): - break Loop - case <-timeout.C: - break Loop - default: - // 继续 - } - - resp, err := this.RPC().NodeClusterRPC().FindAllChangedNodeClusters(this.AdminContext(), &pb.FindAllChangedNodeClustersRequest{}) - if err != nil { - this.ErrorPage(err) - return - } - - result := []maps.Map{} - for _, cluster := range resp.Clusters { - result = append(result, maps.Map{ - "id": cluster.Id, - "name": cluster.Name, - }) - } - - // 从提醒到提醒消失 - if len(result) == 0 && params.IsNotifying { - break - } - - this.Data["clusters"] = result - if len(result) > 0 { - break - } - - time.Sleep(1 * time.Second) + resp, err := this.RPC().NodeClusterRPC().FindAllChangedNodeClusters(this.AdminContext(), &pb.FindAllChangedNodeClustersRequest{}) + if err != nil { + this.ErrorPage(err) + return } + result := []maps.Map{} + for _, cluster := range resp.Clusters { + result = append(result, maps.Map{ + "id": cluster.Id, + "name": cluster.Name, + }) + } + + this.Data["clusters"] = result this.Success() } diff --git a/internal/web/actions/default/servers/components/ssl/selectPopup.go b/internal/web/actions/default/servers/components/ssl/selectPopup.go index 67268d08..f85584cd 100644 --- a/internal/web/actions/default/servers/components/ssl/selectPopup.go +++ b/internal/web/actions/default/servers/components/ssl/selectPopup.go @@ -19,10 +19,17 @@ func (this *SelectPopupAction) Init() { this.Nav("", "", "") } -func (this *SelectPopupAction) RunGet(params struct{}) { +func (this *SelectPopupAction) RunGet(params struct { + ViewSize string +}) { // TODO 支持关键词搜索 // TODO 列出常用的证书供用户选择 + if len(params.ViewSize) == 0 { + params.ViewSize = "normal" + } + this.Data["viewSize"] = params.ViewSize + countResp, err := this.RPC().SSLCertRPC().CountSSLCerts(this.AdminContext(), &pb.CountSSLCertRequest{}) if err != nil { this.ErrorPage(err) diff --git a/internal/web/actions/default/settings/index.go b/internal/web/actions/default/settings/index.go index c459abd2..9a3da65f 100644 --- a/internal/web/actions/default/settings/index.go +++ b/internal/web/actions/default/settings/index.go @@ -1,6 +1,8 @@ package settings -import "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +) type IndexAction struct { actionutils.ParentAction @@ -11,5 +13,5 @@ func (this *IndexAction) Init() { } func (this *IndexAction) RunGet(params struct{}) { - this.Show() + this.RedirectURL("/settings/ui") } diff --git a/internal/web/actions/default/settings/init.go b/internal/web/actions/default/settings/init.go index 1e71dd3f..f7935152 100644 --- a/internal/web/actions/default/settings/init.go +++ b/internal/web/actions/default/settings/init.go @@ -1,7 +1,6 @@ package settings import ( - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/settingutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" "github.com/iwind/TeaGo" ) @@ -11,7 +10,6 @@ func init() { server. Helper(helpers.NewUserMustAuth()). Helper(NewHelper()). - Helper(settingutils.NewHelper("console")). Prefix("/settings"). Get("", new(IndexAction)). EndAll() diff --git a/internal/web/actions/default/settings/settingutils/utils.go b/internal/web/actions/default/settings/settingutils/utils.go index d04337e0..ca372ab8 100644 --- a/internal/web/actions/default/settings/settingutils/utils.go +++ b/internal/web/actions/default/settings/settingutils/utils.go @@ -25,7 +25,7 @@ func (this *Helper) BeforeAction(actionPtr actions.ActionWrapper) (goNext bool) // 标签栏 tabbar := actionutils.NewTabbar() - tabbar.Add("管理界面", "", "/settings", "", this.tab == "console") + tabbar.Add("管理界面", "", "/settings", "", this.tab == "ui") tabbar.Add("安全设置", "", "/settings/security", "", this.tab == "security") tabbar.Add("数据库", "", "/settings/database", "", this.tab == "database") tabbar.Add("API节点", "", "/api", "", this.tab == "apiNodes") diff --git a/internal/web/actions/default/settings/ui/index.go b/internal/web/actions/default/settings/ui/index.go new file mode 100644 index 00000000..317fc25c --- /dev/null +++ b/internal/web/actions/default/settings/ui/index.go @@ -0,0 +1,27 @@ +package ui + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "", "") +} + +func (this *IndexAction) RunGet(params struct{}) { + this.Data["serverIsChanged"] = serverConfigIsChanged + + serverConfig, err := loadServerConfig() + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["serverConfig"] = serverConfig + + this.Show() +} diff --git a/internal/web/actions/default/settings/ui/init.go b/internal/web/actions/default/settings/ui/init.go new file mode 100644 index 00000000..e6e533d8 --- /dev/null +++ b/internal/web/actions/default/settings/ui/init.go @@ -0,0 +1,20 @@ +package ui + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/settingutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" + "github.com/iwind/TeaGo" +) + +func init() { + TeaGo.BeforeStart(func(server *TeaGo.Server) { + server. + Helper(helpers.NewUserMustAuth()). + Helper(settingutils.NewHelper("ui")). + Prefix("/settings/ui"). + Get("", new(IndexAction)). + GetPost("/updateHTTPPopup", new(UpdateHTTPPopupAction)). + GetPost("/updateHTTPSPopup", new(UpdateHTTPSPopupAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/settings/ui/updateHTTPPopup.go b/internal/web/actions/default/settings/ui/updateHTTPPopup.go new file mode 100644 index 00000000..db1abbe5 --- /dev/null +++ b/internal/web/actions/default/settings/ui/updateHTTPPopup.go @@ -0,0 +1,65 @@ +package ui + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/utils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/iwind/TeaGo/actions" + "net" +) + +type UpdateHTTPPopupAction struct { + actionutils.ParentAction +} + +func (this *UpdateHTTPPopupAction) Init() { + this.Nav("", "", "") +} + +func (this *UpdateHTTPPopupAction) RunGet(params struct{}) { + serverConfig, err := loadServerConfig() + if err != nil { + this.ErrorPage(err) + return + } + this.Data["serverConfig"] = serverConfig + + this.Show() +} + +func (this *UpdateHTTPPopupAction) RunPost(params struct { + IsOn bool + Listens []string + + Must *actions.Must +}) { + if len(params.Listens) == 0 { + this.Fail("请输入绑定地址") + } + + serverConfig, err := loadServerConfig() + if err != nil { + this.Fail("保存失败:" + err.Error()) + } + + serverConfig.Http.On = params.IsOn + + listen := []string{} + for _, addr := range params.Listens { + addr = utils.FormatAddress(addr) + if len(addr) == 0 { + continue + } + if _, _, err := net.SplitHostPort(addr); err != nil { + addr += ":80" + } + listen = append(listen, addr) + } + serverConfig.Http.Listen = listen + + err = writeServerConfig(serverConfig) + if err != nil { + this.Fail("保存失败:" + err.Error()) + } + + this.Success() +} diff --git a/internal/web/actions/default/settings/ui/updateHTTPSPopup.go b/internal/web/actions/default/settings/ui/updateHTTPSPopup.go new file mode 100644 index 00000000..675d2b8f --- /dev/null +++ b/internal/web/actions/default/settings/ui/updateHTTPSPopup.go @@ -0,0 +1,140 @@ +package ui + +import ( + "encoding/json" + "github.com/TeaOSLab/EdgeAdmin/internal/utils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/sslconfigs" + "github.com/iwind/TeaGo/Tea" + "github.com/iwind/TeaGo/actions" + "io/ioutil" + "net" +) + +type UpdateHTTPSPopupAction struct { + actionutils.ParentAction +} + +func (this *UpdateHTTPSPopupAction) Init() { + this.Nav("", "", "") +} + +func (this *UpdateHTTPSPopupAction) RunGet(params struct{}) { + serverConfig, err := loadServerConfig() + if err != nil { + this.ErrorPage(err) + return + } + this.Data["serverConfig"] = serverConfig + + // 证书 + certConfigs := []*sslconfigs.SSLCertConfig{} + if len(serverConfig.Https.Cert) > 0 && len(serverConfig.Https.Key) > 0 { + certData, err := ioutil.ReadFile(Tea.Root + "/" + serverConfig.Https.Cert) + if err != nil { + this.ErrorPage(err) + return + } + keyData, err := ioutil.ReadFile(Tea.Root + "/" + serverConfig.Https.Key) + if err != nil { + this.ErrorPage(err) + return + } + certConfig := &sslconfigs.SSLCertConfig{ + Id: 0, + Name: "-", + CertData: certData, + KeyData: keyData, + } + _ = certConfig.Init() + certConfig.CertData = nil + certConfig.KeyData = nil + certConfigs = append(certConfigs, certConfig) + } + this.Data["certConfigs"] = certConfigs + + this.Show() +} + +func (this *UpdateHTTPSPopupAction) RunPost(params struct { + IsOn bool + Listens []string + CertIdsJSON []byte + + Must *actions.Must +}) { + if len(params.Listens) == 0 { + this.Fail("请输入绑定地址") + } + + serverConfig, err := loadServerConfig() + if err != nil { + this.Fail("保存失败:" + err.Error()) + } + + serverConfig.Https.On = params.IsOn + + listen := []string{} + for _, addr := range params.Listens { + addr = utils.FormatAddress(addr) + if len(addr) == 0 { + continue + } + if _, _, err := net.SplitHostPort(addr); err != nil { + addr += ":80" + } + listen = append(listen, addr) + } + serverConfig.Https.Listen = listen + + // 证书 + certIds := []int64{} + err = json.Unmarshal(params.CertIdsJSON, &certIds) + if err != nil { + this.ErrorPage(err) + return + } + if params.IsOn && len(certIds) == 0 { + this.Fail("要启用HTTPS,需要先选择或上传一个可用的证书") + } + + // 保存证书到本地 + if len(certIds) > 0 && certIds[0] != 0 { + certResp, err := this.RPC().SSLCertRPC().FindEnabledSSLCertConfig(this.AdminContext(), &pb.FindEnabledSSLCertConfigRequest{ + CertId: certIds[0], + }) + if err != nil { + this.ErrorPage(err) + return + } + if len(certResp.CertJSON) == 0 { + this.Fail("选择的证书已失效,请换一个") + } + + certConfig := &sslconfigs.SSLCertConfig{} + err = json.Unmarshal(certResp.CertJSON, certConfig) + if err != nil { + this.ErrorPage(err) + return + } + err = ioutil.WriteFile(Tea.ConfigFile("https.key.pem"), certConfig.KeyData, 0666) + if err != nil { + this.Fail("保存密钥失败:" + err.Error()) + } + err = ioutil.WriteFile(Tea.ConfigFile("https.cert.pem"), certConfig.CertData, 0666) + if err != nil { + this.Fail("保存证书失败:" + err.Error()) + } + + serverConfig.Https.Key = "configs/https.key.pem" + serverConfig.Https.Cert = "configs/https.cert.pem" + } + + err = writeServerConfig(serverConfig) + if err != nil { + this.Fail("保存配置失败:" + err.Error()) + } + + this.Success() +} diff --git a/internal/web/actions/default/settings/ui/utils.go b/internal/web/actions/default/settings/ui/utils.go new file mode 100644 index 00000000..94d1a077 --- /dev/null +++ b/internal/web/actions/default/settings/ui/utils.go @@ -0,0 +1,41 @@ +package ui + +import ( + "github.com/iwind/TeaGo" + "github.com/iwind/TeaGo/Tea" + "gopkg.in/yaml.v3" + "io/ioutil" +) + +var serverConfigIsChanged = false + +// 读取当前服务配置 +func loadServerConfig() (*TeaGo.ServerConfig, error) { + configFile := Tea.ConfigFile("server.yaml") + data, err := ioutil.ReadFile(configFile) + if err != nil { + return nil, err + } + serverConfig := &TeaGo.ServerConfig{} + err = yaml.Unmarshal(data, serverConfig) + if err != nil { + return nil, err + } + return serverConfig, nil +} + +// 保存当前服务配置 +func writeServerConfig(serverConfig *TeaGo.ServerConfig) error { + data, err := yaml.Marshal(serverConfig) + if err != nil { + return err + } + err = ioutil.WriteFile(Tea.ConfigFile("server.yaml"), data, 0666) + if err != nil { + return err + } + + serverConfigIsChanged = true + + return nil +} diff --git a/internal/web/import.go b/internal/web/import.go index f7dc6cd3..95b4eb7f 100644 --- a/internal/web/import.go +++ b/internal/web/import.go @@ -1,6 +1,7 @@ package web import ( + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/about" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/api" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/api/node" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters" @@ -70,6 +71,7 @@ import ( _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/login" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/profile" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/security" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/ui" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/upgrade" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/setup" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/ui" diff --git a/web/public/images/qq-group-qrcode.png b/web/public/images/qq-group-qrcode.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ba550c07f1d507a45b45030cee9b074613b3f9 GIT binary patch literal 76258 zcmdSAcT`i|);F4j7D_NwsT!)GNr*JzK|&8zdX*AGF!bI;G(d=efT0Q~N>`*~=papz zVxfa{L{vaPQA9=HZan8bYMPuf6tMv;1aRb0wOa8NgTsSU?~U%n++< z2?9a3Kp;9Ilo7b{AkM!H_{SW8bqEH5Shz@WT)d>{~mfTy*6h`p(a8s6XcEY98k zGU055ZvZeF1o}raA^?Z?CWIg^6RvprX^3vOb&4W9-8Dq*luS{k0XhVtC-!O(!Ro4+ zHU6qM{=B=W<^{w*5o*8$zJw4QBEr|lFIX)?L-g;wYQX2?%krX#ze7U2HAJrKqN$g8283DDbu* zcMmm7UHyN*3;3oXN(>1JP?MJr4-Y>Ze(tP)&=q-w^XJdYqtNnbv>Y%(E;!OJ1Q#La z7cBN)Gw2e6@j;#eA)fwzh~pV?m;FOSG(-VP|Fs0)fd5SE7yNHF0SuFmzy-)FoJAck z>F+>y{C~y;ga-NieYrbcp5R09CHRE|17j8bGd6(eAL1WO^#8w@`aie-mlpu6H8uUu zJN`#ne0~4(ir^5vFkl(~X2}0II@mfgfFN&42=)&R!V~nu05ZjnR}-M76GXs;_y<}0 z`}_Qtpv?b^WCU8_EE<6{#o;~uju#>I-yR|8;z9@-qQ`QRQviOItWoFH6cyE!P%m7t`8mvdJ}tH>!Tol}*&Oi)D2;gv5dsGe6=^zcyh z_^;=6{qdp4O7LILyZ?WD{$h|PV1ziI|Lu8>P4ifL)UckxfLtU0Z9GC@y8lKa2NgeWzYX@4*YA{a3TSi^#4XL{xvMv-y6%}Xqlo4+IeN_n7i?|$(08*@=-G87HRlnnRVqn~HHXP?V3{C57z z{cl2$03kknvO*spUMG+5GZ+PY0KO^Tj#K~F)m{)&_`j}E!0cOp2PVVlgy#7F-WFt3 zZ9ez+wlZ5lz?HwZefXA^UjLnC8r9XEe>`<^9gg(>_X$6^oggXnO?Tak+G+{i-)i&U z%~8NV_V)7fN=ix^lpSKpE8|D8i4pV4RuA}JcHUo6&Gk{9%^h%0&oz-uGkcg(ZY`Z= zBFR-%RkeAGSI+UwD*mf4sf& zKtW7D`H_s26hB9b{!rNW1GUr)KVM(xiQ(Z|ztzDk?}g~Sd7dfP8wcsa(Vc(<7%9iB zhShIWxA{HLVL$J_^T?uD|4w%Hq*FG}sm}_(gkBidI6V1K9Qo~oT=U*S)W^=9K^fmT z4M~6q=RiP;b@`P~pI-Rcd-^b7@blXzS0<*WE-ILwQ=G;NJer)Gv@yPO*7@gL@S9hi zTdf-xgg<{p^-XV)kKei}e&WKC) zbqT2$Ndu|*p9vv($ zM(W7mlYLMBB~UQswC08HcNhPB7y{(JJwn0x?0r-4DNh@eUN@2P@)=5i`8L|mrt`cK zP9+*+lg{{#{`$Fc+qDf4$M!fzXY6P1aSSAj&W^Ynr_ki2vL?pUf{=Lc5?{U4 zVyPA6bZS{8U5T$D2u>rj^U)893o9}}c-Kf0A;aR_WK&^wDmw$4FbZ0xrA7o75BAnS zMI*g$(LEOT_+*YD>i9$z*clA~TC@FY?4ssDxsvy!d($sQK#nTUj*Y#sC(F*|{8|sI z{GY|1o}TrpmZz2imUQKnMX4nvjbu5s(R51(w`gzMN*^P^2bHF|L&_z|*0yPrv-=z& z2JaaU6l_FVKK3V^YyIcZV`GT40H+!+IwbI!bzMSXFK;&*d#j4=Te`fOklHb!`AJ&fcJCCBmP<*n}qZ`syBiWfW4}70}yCmUSv$Usj;}t!0@gp(0@`hfH z#ANY?IJ?QFOawv*-YV|(xaU!Mv53x{llESt3AJ-=XWu2uKCzC}!uXo52$g1j`*7F) zLR26Bm47;}A6z~A0GC|%>Mx|;Rfybq|LMWu_lM_R+&+C{Df`kzZ$w%e?db&X17ED* zvHStX%Fa@iv#T%We$5oJtk|IAfwf8~ae0ZE`6iY=PNMVj3B^uk(_3pz4?79GQ&&?H zINS0*-Rbb>3(e|T1u>80I%m3L#NT+4qOzd6>a_TK@_e^jEwNxKutdMlmiwZi<4BJ3 zg3GAqVX%u+t-^htpoFSN{xUl7B+)W8FR#F`BW8uDOQBd^{W(j4A-;&%JC+_te?Dp+ z9d5WD{jN|CXiip8uKX)3m*iu^dd79}TJ*bTiA??jyF%q7<9@gHG>voQZ;bQWFHn`= z85#;p=`~vS2E|7Qn}E6X<#<@rPC4*q-rREV+13>Cn95`v&nAb1>{~`{e_TcCm!PN9sNsP-Gyo@7F+4Im_D{ATVw;9N`>?ZAk zOMbn;tS?~GmRE_sYV-Fqr-UDBNa-2h6cYgWIzUOTdn(~gFIQNs1s>w2Ypog`9kl=; zL1k~Y7S~(Ez{>k&pdwiz`{pqWuC}~OlKIj6wNJ1H8m~(Q zoe|SNzpkhp?$+FJ?%<-l;=}hs?hK;(az5UV+B&~<%-itB_i7a?9?vyT(il!%Z;;}? zIIaCySgCb+08WlgC^x%Mp!ltnpODKz05?d;EiGQ%sJi0u=KjHSs-OtqF#duaTi25} z7xqg5(0`y!M@%eg(8tg59yxP2EjVW@YC7LRP5HcJF<2A6Zax~Iql;o#o3S)bsbL-{ z-&Ocn+rj!oY!Kpwc%uZ8b!q?EK*z4S6k{UUJ0{vU?Uw>D#;55RIPx2&T%v>zsN2OXF|b&VI=0(P#(_ zwym`Px&^E`azFL71VFa)F-EslVZ}ukZX6xlTHn}s=)YB;I*ujqRCy01y*QlZzPei6 zJaIpSzNXf{rH4AqWGX#)|NKK~XQ#{MSS&FZw0mx2s>W3j@CJA7sxRffW$txPt`oVb z@(|q@=Cs{;bQp<$k(z&=I;0$``fm5R@Z`3uC-jZeeMNOEOST3pvzx5tTCmN=x&WJp zo_UN$MP+B%1n)*Gv$C*An`s_=my+-Nv!gDk?6VY>mRvW_4w%=p-wPDm@1?jCPdi?m ziemdDKE9V7nkRpKm^Wgr_eWQelGGEi)d1omqfy&@#7stdp1RLSTF@-PmWL^`E;nm0 zK=snKcZp}ruI~(-arO82zoYKi515sBKsg)0AJdq-GUSZD#@D-4MF z>gETX{5y72q^!z>o&r*XU28o{__MXzH>^ISR+Y^j<#q;IS7phq@O>fFV*j34#i*5m zL4M4okANygMJ-0}b=+!uh3X4Cc}cpLZ`PMhktS31bu{)zm+OKb^YvO$T*Da&!-kFf z*VMSNrR8Fq*>6-W$36`faNqS*v9h#8zZ-Hr3|i~hTTu5u1Iqvc9G<@%TuwZ5Uv($= z!Tucc-L^}jVrvI)I43nVi6`1SN_xGvLdat0Y1>4jW7qSeM9i|Wh)VdBo>NXIS=f1f zn}>&IH~7QL?(G{#`_I(_k1+{(>|w(q@3>rD`{^IO;dFA?!|actySUsuRr&h28p;=S zWA(}iqoB4I`Lekd=ubJWoLB!KOMs)d} zdfRdvG?z=$0zX5X2TeTOJBPO7b1Unpa*= z&#h*wcqB6&Hi-OrJxZQs-0wxJ~LibV$-L&JdtfLGxcfROOP zW~BnK;MYBW7kvKbQrs=S*0r)BSa0p`wz+o=o-2!|8<-B;9*GUltWigowiI-zVoEcd zmh`6Ds>Fi&{`DsReE>7hyjc0l;NN)=Hftsz3Pe)e?XAy%Z~=&4HC&&_%FInoWsQC^ zG0r=3c=)UDjIb@fP0q*fm#X_)OAD(xUjOR?O$$zwo?#{8yG=}5P~0UTa9n(wr~^Pm ze(W)(-3fZ7G-Yy1#c%HLz*%wy`8&jUCSql*xxtOl6A~e|Ui)QaJ@eP^Gl3h$6Ncxq zY!1w5m+R~&hU7c1?YtHc1Sn$rYZ!#_@p1a=`?HHK3)^08i~_U5fs2|dWKH|~wP^Ml z+KDq?OSm`k&RyQNuy`o$v3_V~2c#17E5}B*-+Myy^W0yWgei8%c$f?XEjyV2OpGoP zfM9_C#`R$QmtGsgbNAOfjhO|na`GEKsD8tDv2&L5kGu2Cr|o)eXy8hU%Kax#`hbK@ zUEtWn&MvDj{xUoGzBYDyeH;BXv*fm|#H*8lcL5No8RPMDMBo$l?K{oW4Nk1K;x8lW zj|S}Y^q&6&0yFm?W&)>xm6;!}Oz?+jT0+En`NOlU@!IhR&RfTZ+NtT+v~VPgGkh+A z?#&WhD1|aX>!^hWc9h?n=yQH^&51`qNOIVL>!o~tEg%NW1#N%#8klPf00N!g>cTdj zh}K4*FD7G@kgX&!qD%|JyHP!+AV6{)FR+zbMJe z{nw+~?yAg(jD1xPBmzb;|CbJ@ZZ~tG;Fk(#euU?ig*nMOJW#mcd`CI`?%KgC$^%-J z=Nb@cREmfx_X)d%UP;~@Jw_!;6|k75#fh*|#RbPvTnDOCY50Dv-VK?0pNMoLvD~!p z+qY*RHS(!Wj^7>wDmnEWuo-1phB&Rj&vh@Zx75@amyXP>B{0ZvePEK|Ec@KF4HewF z;F5*@D7USs5~kX-_3`ej3IOVtlaE!}{x=Y2bli~TtpMC9zthN{RpwyRU|ZF6C(W(( zbO*x@Moc@&vmN+K1ZKAb*CTe zIB|~$ND)$g=pOk(-d2m7D z-CXo$A`C?IdGfr?SPejJ3(b!^wa&?t7|~+l;f|TNukjIAV;sBMCu+XZSs;6G`OD@k zHx%+X2eo%~opM}xLZN-_`7??6=k4BOnOUV4VUKr{4>v6JZ>*vL@>VYX^Yz(az6u(6 zI_wzbdj~_OoK+@VDU1cb ze-1C)tf`q@j}$yi*m+Sp_vTak-3hYkg^8h#ADa3MM26APee;%$@Dxfx!`?m6!j;m! zheyqS_D5Rk*5~k;g>Sh>%eP%WYP>!*_3eTDcKz1P9~X8W-2C%(_x%DzQ>|Q4nO2(8 z@XE7TV%hx0@M8URp-dym;%d8~xd)s1vrc^(Fpo?+xocnPDTr~FH;vBR8{Y{WKtYZIIVWqE($1PWy8*Cn}jxE3E!6(8>HJhgpwaPDIU z4Lr(7-dj$ck1{h{)v(ok`0*lNe^k2w{Wd=1W8syq@CV^l!BhPyBiSq)PUnCk=nVBh ze6QT<;VBU{O+jIf`w#3*%y|aJ3K}h6{>N6AsvAJB)eE96FL*5Q&A-4m-$+--gtreK zfC@Sc;Zj@_wysQG6HjfV{~!82wW2#4k$W;U5=aZ9gNeM+`ljSdr@>%=&b6(;kD4DT z`yG-XZLs!o#xC=>R~J{ZH^0vdpoQ4)xC9MI;P<06j&1AM5i0xqSz^+hzLRhjcG;1x zar|ec2)=S5N8zfg@KlSN3=QJBdeCGiFgmsFQ|&HR!~M*)bgNWRvQx3-R;Su${joU~ zG*r8IHZQRHQvB}=SmIbZ|FRi|Cg`E0YnSs%P{(d*0u*^?l=S5Sa+?FOeevjoN@vs? zJ-^HE%~H7yvD-QsWXVpxhx=~xpoIf|t1praUmglNpH{1(H~c6m5y>Ufl`p$m)n5Zd z-lc-0`qCA@|1?6nfb8#A^zTDyAY7OGR~?PfYcNwPno^l8S6=vvH$~WUByE8Dx=Ns; zx{G=Bth5d!0RQj@L^cvUB7afK&v%M-`aKhNJ2-O0>f@nnRK?fpxk;{h`1jQx?}U>6 z)bp*zU-7rpa%o`!v@E&oRQEYe8rPp7PExx~a3>qndy4Jqe8uZ3^S0ZzMCL-~GG4f2 zGZ(AYg3jb{PvDTvl7{T|Q&8-n#U+5?!ImEN@kaorG;oEsw61Q;+kB{MFtC`E3}yPQw{;?+Js@w-|h z?|NiP;T%bZ1}G#YxUfSl^hLgS^MhClxaw8)FgtT0*oqmtSrri#1yTf2VW#wj?W4l} zHm+P4$B#zTk^o~j+TQX-M=~dTko2X`z!5`?72ScT7qn+ZnyPL8`eB@MHS=s**icGA z`*s@SSB9wnWmb^1r&r{8bslbyWMr}j!W@-!HY58LQlHyXb+wqD)4=(3i) zY`f@P^Un*X)i?6qTGb2l(baQ1{5!Ts^RE2AN|mlVtF`asRR4|$=Z0LLe;Uc%?di~+mkh^PNSAUcgsa!~OGTl7*5%SPjzJvCL`8Z9M_#1}s zre65{=|XSTq(DBuA?svFP9jYl9w{hrFuYYg$ax;*BTrUa7!3EnYYC1}dbh>Xv2&uv zUcHm;*@-Q+rkSk?$B%x-tMg%Y*S~Mn1?Ri$6qSehOWMt8tJNfsm%^+DhAQ4?-9{3T z;79E+T1msn(Ssk!0YjJm)Uv_&Sd3b_U9>=hWCX0Rp{ah0@rL2TimJw-{dGEYD=PL5X zCNje=YeB64!)RNl+5@|u6}i{@w@WG}N>3-nH!V~jyn48G^M>%?L{}R=eR$zsY>?oU z_)%1rx}RP^+Z*%4C#zF6-cUURr(aA;C%R@pX8G$Wx=>RAn)%jyk*4!a6(2gh>sP`W z)*R3oi{M8UrX`@rjLb{S+#EjTkIFTSztTjVyy#ypWb9AZ;U9kg%>ZcV<-Z#G9w>4% z4Gj&w*xTJrrRjVv5eJ87lsY+?I!g$Dsc1algms-LPh$JzCwzHFMe{e!?#5Yg5NH{2 z=L1=k2=7g2f=sJSKx^H&oK)cKIcfR#zh#E6Q(i45ul>+}vuMtu+2_>+E?Ta+`tfRs zG5lAweaMz+%%$^50Yd?;j*cHRwEcyWcJ3-zR<{tEL{AQS8ymWOGnR8B(ouFaO`wF< z3`x26k2BkBV-uod!z>iaexV}UX0!^e^YFo~~{A5Le>;P~H0xqlFQJYv1;q zfjCwD`>@Wf-@nxW#pU^{xI3>e?0*i_9l!DgC|oBs2tJ`uDT0woky`UHiT+{ARm%_VuZNvkTR79Voto}_R6k(XrhKneq^%-EC*tHb%jWQm%<8ASe#jJBtwSqG+$_HQFq z1<0n>n%3Ph6>0_ZPIV*TIRqV_6t#D)Kk581VsKhx2kEd|t?_pNy11d|}1@<8piNQp6se zd^>fEDSWS1w6kyC)%A6Q&dYhqVnJF^#b&19twn|B`S6gc<|qsMef;-Rw@7wRZqI?u z7CJuIz6h4tS_svxjxPBk+P0|2*b;=$W8vh~_V&NjADRhn-Qt>gKp$~?4u&uY-VLqYt^lwMTi zZnNaY`~R?X8AQ7P`%x6ov40V%dHVFa`wdsui5wuC$WXxMMrw?7OgJo`W_)i`l;Px2 z7`jlN?{bHyQ-=k-!2AGR!|N19II}g_OzC_(R z>h>17w`Lzd9~A$p2ikg#651D%Ag;pRfj~x#D}QN&npMh^eoZTPr)>5r3|Rb(SEHY9%_G z%PW*!qkP2=UaVgjaL&lD4wr)dx@jlpbO(K*f}I~@_@Jh+wYBxSE3o6J%zeDe2#Y*U z4=B=AN_px+Bh!+4c564AR?~L`nOTr>AYW}N1A)$*UNlw$WGNsnK@M|sq+ja`Lo!fN z1&UhIBsc9GUMyb#jbiJ9I(b-Tv!}eA^#r+TVE6vQ#hDIgIePkBKl^O<61&Cu%}3%8 zp*4&eC&e6|EofaDgz5QWOY5+*#Pz}j7(J1*F_WD1T{KzM!w=RlVtGM(y{HbKAAE|% z(i>`w@nn_~=F{#$&re)0grYYh?%FYAS|a2`65IqBp`27sM^9`i&Jl;Pr#gPLozI%2 zI*PbOo+-US($4a_EQnRsya{)pO<@6Uk z;@k-c8K(^;WzrD^M+)f6EB7wB<8*X9BbW?1OvFHirdV}WoC68&7vHvGrp?xy(r@Z1rO^gAwDWx^j5)I zfvQ&lO_f}f6CaxpPa4mC>bB#oDt+8c_Y8e7wBN!8{1sX;9^x-W!S^Z9Wls1+c z5Ik{?rAFH&oVTc&Cqg1kMp9&%A)Hh~rob|Uk}KJZY0YpMyOQBiUW2|cOizeTb2wTi z4dlrMVbP-Fb9N>X&106DH-!pCco4#|lk`C*)1E0mCh5_RBCO%TRhyt5_%LIO$aEm6 z6qD!1Ob2nGPcVnGi&(>Taf%5$=|~78oZS({rmdExB`r3xkgFH$#3?+$HfqM0Dw!ir zwP2UU6(D_Zx`y;xI7FkHsnza40zXpmd6#k?{i+VuG z6iBSpMh@?vx*|f3obh~Ua|CSF&Y*^;B!P;J&v9C;GqZg2^nyRLj<>dj{?&$&_hEbk zs}5AVp{>J*8KHB%u{4d2tB6-^Yp&^9RnR#(P*HAtU?@&ojU~*s2aeH; zWHS(MKPj1SZTjV`S4niOhZT|RBmFCBB@S&*v0Clf;p-g5-kn$qL_e(_^%{#PZY1jviaiaKjlp8KY~ zG#Y)c%n-7l8x=hmyt}$}lK`dS>ClPqAgueJoo{#SRq7u+g2%=n^6ol)U3&+^N?O$l z!*KQqy0^?7U1CPl5$w~Q0=vbmbw9^!Wt~ToLN}b?wI;~=0vaXXOefBb|5hj+p zQMFYIM96gE&Mp{lW;qFvpg4U(yXfiFuwW5)4jQ+C0pj*H*X zRY212wgU9R2#zM*x`jW8j@B{OFF~iaT`-fDZ*KF2G0geNX?y1YIvi(CLIqxuDBIHD z#IN5H$!D{znMr8yzFX_Jd9`Fzxr7cXMk1DQ@l5brTk{sxODA!N8G$({ zx)-V%A>|Y;966si2TDMnLuze!Ps_h0HCpqMm`mqV8q0>E(D>1Ja7oig&)#?F7Zz2* zUzy5H4-cm{Y^aTl&&9Y)v%<6y?uE^&F^?Z3*EcRB<>a2{Fmsrr$UjoqCY8j&ayWbX za}Y(9CfwQ%jOb_BH6kgV>qj~%DP)iJ;K_4J$Ih^%|5>RBak1*53kCm&35ZyT3_%Fq ziXKCmUd_GC#wBtd(vy~gI_r1cm<#&xAJW`?QYjjBKd z%ukKgEbT69WD+AP(1#}p&p})(DC);Jhl)%BFkEt zGeKj!=U@BUCB^gMKIj5A=CL5S0vaiUQmB5)2<(0#lZ9RBWt30JC90~~HHqe?1?bWz zDVk)M3&GrK48>4{b*Qxsx7$Fy;=(m=Dcj09QX@N)r>E8}L_bPPTYF8J9LF-jV_}l7 z#-Aa{UFhX5GFTxqGWQhh=&d@8h5W26hxyC7#Ds1*re#T%G$L?d3IiV)iN+a&6G4g& z0a4q{+mER#o`FuJq%FOzNd61CS+rIuU!Ngwpa8-s_}91c-g?fmzkfB@z_#RxGRNHL z>LuGTzbhwoWcVDlh=ST>=GKljOf3OLAZ5Uvoz+%NwW$BQq^a@4w&|)tW@s-W#<_ouGIIiQ|nIPvV1EG$p#NWl8PkDHqSxg>$GKEM^aC^x{xSk;%b(> zqiSpf%6wK(74FJ8D807%X!m*vpD$coWFTS1|CS3&{%$&W-etA= zN;WmK)oSjbD@-hCw-tl1XnXR_P|Ahr<(O=Ez$W+1*}+^gcGbNGx9o}w&x7yw1SF$` z#6WzECZf~Ejq+GPLn{G!1m4K%iwX`s6paPzIy1b|5 zd`bN5g<<2+@!QhfNm(M54lp7vMksOg9ZE7;>iMH}zR7Cu=TX}=y)#O}Saq#wH4sDZ zyzF|zGx0(&XFw)+HrswG2lG$0n|8sIS6U?59F$gStca4yO*f-hsd>6AaUiTK6k-;k zH{tZ#j`r2|WKE)+{JHX#IZd8Izku9MpeiJqJs&&%vk3EU(1;{Il1e_I`}z-HG$ zb#u75P>_#lkGDiIjr3)Pfm58Ey)f{IWtoJDbbvP~iO?E6>O6c|1ymYED@;{Ip$7Cg zLBBJ6n^luCtM@0Rpomc{!4jh%gN?yzt4Z1O0)WbwamMEI8|H~eNLbgvvymAe9S@$K zYz$786j&^6;poVSHl6koR#u$tS7jkFfMZFJlDOJJa|h06IccTXGo*$Jr>}48ZH6t2 zD*s7Z-+}8-aEspe(VbzBMY2>uA&^)$K6(tKWDYGtg>}Vh~V@V zR2v@7>FHmG8?l;j+cT0Cm)(Uk^+oyYR3L>I(8gr-^HGTuY^hvRCL=ifl~Y^jFUA%o z6=v!zuNAZVIdY>lqc)hLtW^ds1nWrWa3)PmuTfl>FVgZa9=a=~2zfS@5%r)c(P0s=iA&$0)^4 z-Y?cI76E5xu(-sH!NojdI;~hxD8=r?`O=MzpNFI)N%QQsU>7=*LJEV!?)HnTFT4BN zOTuX;$gFrvcCr@K5ff?17nNG`OoVA%I{}$3=i4JA-x>3vPg370G#zgTy&8!QQ;W%z~+@J+@$MeS3VgV2?Tceb^ue%T}Q! zXRYkmtBDdEKckR3-5QbJq)W7*tdc(C1=qUtlYTEQOI9qL#*g8ZR2${o5LB-%RA5+Z zX0q!RYzx1{6LhA$N4=X@!v(F|V*v*`#+qxUENyITETpr3&)Yt==ARWQ$$V=fIR>=C zs*kOO7>K5Q!isYWSJ>6~HUIi>ckw!~`}{6WL%;D`K)@pGuQ)Y-cAxNg1+>|E5D2T! z4z=NUos>*8xJIsNPwGg*1OyLvSFKVKDm2Upngw}n^GV8q=rJ=I2}q$vIE!9EiMEpy z=RgU0Qj*L8lIrz+jywm~?naBp4pJn}L316b{n|u9US_0DF9!=h1HEZa|KrOhv)*iO zOm%J}EH96UN&+j4maRgT$dVHMMuq_1NK@^+{8$LTDUq0#bCiaOG7u16lU1b81Z6I2B+M~W_FuDrfd7qOT%=OR)$%7CjdFju z7&v;vLgZeZsI=t_uQ4&g@E|En4)BpedVM|#}=o!8d(Tgl3D7324Hi^jE=@8jl%V9`)d81 zS+nI`Z`*h~rDfu#x#PvSGlQ1g8Sd>0qvU!PR%Fbbd3ymTzg$`g)6>W-l_ zf^M3Ggfv&ll@4CbkNdNdU9wmA>!q){z$Rd}D<%6K2z)P;!@|a9qC`G=%{b%f_fq-% zx5L9<27oP!?}H9k@^^o`-A>u$6PgRxQdzwA?faOS`etTPQBhi)25(;&&BQiiWm|v3 zFW`)3d+*}2PmJmYYPF?wa1kNq9yWMMeOi_$(YQ-dwo5V1q!j0!LX2eFf0dJ5XCs*u zD?k|y5Mn;(hPlhg$^K==+rOCBrLE|O-%WZmJU$&;iSN>fDm&B~c8dst$8@hqrov2x z?OQ8hTxYV2AB!eXOVb8QK&uEiw6GnS+-kvqlsh4o)?ZZANbjLaFX0Q#!r%LH;{rJh@{`YM{*kN6r_#fP}p9Y;!6+) z5}>%8GIa;H`&g1#Dxy^DqesX4@`%mbuBq*&LmCOj;6%p_?dAad1xunksDuuYzVOHJ z>UP=BLT5}jN!?;&{hJx6KDFcrxBR0g&Q5?>o&o&!eFt=!e0zTL)YVU40kMP}y4_Cn zbp<3M^0&L}*4fri-+@yDfqx~!tCNe$inV1iLaMZT?=49*E%i|Jc?BHAM>+G$xqUd1 zRk9dbKbhEwi)3wV91W;v(G{WMy361*>EsDP?in^gTw1K5p|v%)sDK;@ij;#Epe}0@ zyIv#R&#}B^bIYLfBvQ3%O%S>37&6-2Q7m_hBz8-rl6X+#I`@3Q` zCr1SZN?_Qy;q2E%g{E4b2qF<)%E2zf&6E46ibWK|NhOnbVsKC(F%@upVn5}f!@@O) za${xXmny_+Tku-)52p$a!eBX$+8H4yW+6Z*CW|D4piOd;LLpVJ&o%BN&z?OM+0AhB z(zQXUhq5g|>;CDE!`~Zs*nZ?3x0*zsG{1Do=fcsSZx2m#(X0L4r&#goP8P@l^-<1L znjxm;=9M1#SHr_SVJ9%6g82jDjh>J?R~44hRgF^7up(I&d?}w&ka!7gcqUuV z=_ZVUHA(SZzC)$cRC33jtbV8sSbB)1)&qYAoeJahV@@CUduxowECEQL1{>{+x1 zySNRLPdQVVxgL`qgVG1gO01;JJ=r+PG;S=GONvYllvN!h<8#bo5e*be(y$~wTho5( z)(rXaa`slU^E`th|1f;vS(Uf?Z32rhD}Vd@*I_b%Qvlk-Cu}s&AO2i93Y`mlaZujU z(y}b<0N`Jfu)%9 zxW(C29d)EJh8W`BQ<(o)Svos6+8oebNE)BH4TskJBg<#%+yYKM&$u|*84BYuQ9XTw z6Dc{03Q6maFON@2)G91cXqlin0lwKlkQ{Y_^Of8t@pT!lpIciro`|}&gJw0dDd_0c zx`Iv&QD!zcU)w<03~d?lfH(Sf*+STvp<^M7a>FyQ_lM7Vy$`VCp+^qb8?ceTSAZ^eW6P9B(TW>x=N8z?5beRn2Sl8TN?7 z3=H{V5%FM1fe=HfBAX1kwbc+QUqjxUwtw2rkOGs+xPpzNO0NdQ3UIMrr?i5PWupYS1RH%N+{h@&+|KUSPCdHPB?}|HidmOcI~S;`t(`vm zWIiVBqf3caK!NZYV>n10n#4^*gdALqa3-|JJ)n_EFxU~OtQyTfrWk?*j?Ha89RxO` zk6YR`)j!wvZUN1;-xm3g#e@IX!3L+YvNFjpz#+2x*MT0t`;z3Pfs?aU8v8Czi2K<^ z=T@kLyHaO9U7E7G5iA`;1FO=n5xId%uJbAFP(8jf3$l-7oQZUdi5l2S72ZRMVKd3s z&Z&QdOa*F2#erRi#T-f8xaaG#3;S+L0#0feebDn#31kISBrSA!GEGY@BQ{-G7O5*2 zgOWJ2TR>Gg4hM;dT$M|K^Nv75(QZPLXq#Qde z3Ni23*c`9Ad=r6yvlX}hlMtYbo5+)-o$+~jXxU6Xd``20(z^bgq9 zq<9eJsm z@Avd6GnFUP8Ez$(C$;xBVnM@*O@Hi<*lVYZ;YC{2fmhf9jISJ9oZ;fp;hz7;(cI{ut`uKXDHvl$$cau5 zr**eq%r1WP7`oDzz0|dSHTkW1T;FaAHZ(*O8WSkCuHa=2RrYDGE8sW2;H_^JEM)0z zJ!xH3QVDW6lM;W+wy5+Rvq6{l6mkx6H)^GeUW8PV@q92;u&%5SNV~FfR0HL&(PZPZ zvn8p*vGoirMl2{lANX@U3qDF>0S`tTu8TszQy{kHA{F8SPU07w+fVsF{l)C4BCX0D zM{tCTix{>FVmY3*W-Bh_E|OleGd-BSAugF*{_H2m1ku})=PpaJerbK0Y7Y2DCWD1CvO6h<=crw@TOyV9%c4`E|u zI#1U&7l}k-3?pG`qZYIplcgtFDS%bepb^fNz!siP63PVbiL7#~K%_gwXH{e*=+9c1 znxlh)?^D?7y?cR7?Lqm>0_M-#$BiURS1ww1mZt6<0`b9{1; zO3934w}mnsrKKAn6#ij&I*-yp)W{Qi5RX_PLeQFi7 z>97gkzB~W0Ko2Qj+pHpvkL*hkY&tpyxt(eJ?Pw1mS^&-<@1p|eL#H;+Mg90(!*(nV zFa0dX^%W4UJacx7s>p5F1QY+0a*KX7)Nw@IEk{yFSSt!0mzl5UeT8*WWfpmsxwrrU z8smoh?J|^DV`e8lUCu2*~ZGnAP;KyBGl|Hfm`_Xspe{?jGVtY73+w zUC*vmSP{1`#RoJq3o3_oO=7O}^$BiAQ(_-6>om)u2Lib2(m5@?fUK&V7WZ0LpeoDN?=pMc|hK-GB{b+gO8 zx69xpP~Hrh=;s|*#*18@yq;nCGs1z69Co@hmcl!uUfIujGy|cnoei++Kak~zd%y+! z0+^V?cZ#$A5AxnJtjaCw8U`s*2}MC96#&{=Wd|$4ff$Qai^UIoF+BNOQ6-#V6 znlIH}>v;v+$=HQ_0|_&{8!S8{Bt_mlVnI{_BzeDEbY2kcv$g58vf=dJt~%`R;bxq` zv4&q3EKL#ah?m=oFXLfFM-#;q$hKwd6ww;SNZ zP<{HRq;zG+*-2E~a-Q|{la7uNj#E>0X6xh)r)F1u4Yj?E4zAO)n=)94%-g{q4#}P1 zrpJn&wzjZse#@`H=hujdIWFz?KT8|UWz(b?>r$c6sjfQae29OZ#Dqjz7bCXe=3&O) zFJ#GxW(?uGX+N--gT_h4DaKW@L{afS!(${)!?Pr_oe>+lB4ruEclCW$$FPLkP0e%p zqyJ3%v~Zo&V@HYoMJ-oXrxgi#!u1HHu3RAfc-03@J}hG07T0(k2cHqA_W~pFzwHWE z`JQ18jt3iRKV{6$=Zv%{j49PRnso<+AC83LCAE>X4g2(5khmLSPbS@a`{sWQj7|?G z$DR$mMxjanV_OwUuCnCz=&Zo_>zReRwY(o;b0~4`cOhaA^&I(HEB*J_&|`%aCj#d} z3L)IqMf+!FW(J@}9WgajI`)4K;gF*F3-$x^e_aWXYLsD(YjnVV-e$VOQ*3%e)0OR) zW(*Fy7!eNL*5i>16X%(`Cjpt!;WSr#EAQl1e=|+PNgM4Y!Nohra>=5upXHK~*d08- zE9A0X;W(y${+5Qa;Meef}KF`4emy%|uDey6?cYbX|2kTETM3TK%L;6x$ysHDkrSQjv(y zD1KYKT(nXR&1-8#W?rcHm)j@EM(Drh0|%gIVy_2CJ)$AiKkB5eU#U4<`H=F*r0G@g zhk_*btK`Ex1U`2YKPI-aMR`?vV{Otb@S`HoRO?<1nc|Fc0JaS7`+S+{SI*|oM69T2)xN9y}FQ%J69<9c8 zlTBwXeHaNIG3?NbOFx>EN->W5e0SuUQ^$mb#OLkw)YQ}!@RxY(3}@t^IqiX@ioE<6 z2Pp37MF*!|ng3+E6@FDSvuf~bRt#OkmjInKE*+xH#H_K=!})vFaQg%SM77I zeH_^!6FpzSw!Sj^A1*P+L_}2xRyF+mo%5>^1dPw_+M0k?YohBcS{A zYKxY}E`Q2F^+Frwm8|ZUGODrT0+$yW@2fT#@)`+N-U^t47`A~1ulS#@o7LuBhrAho z^vZk1u}vn%#A3Xh@X8@owmTfvFUpLbdh;;e86Zf{!uPKVQ*4V7yL@#dKd4H+Nav^_ zeB*Inhpg)W>j;KC#KY$D5i6?dPU5{!Ne zn9JP1s^PA|x_(vszw}HESL$)^ED^p^vJB~8Ntm`6ULGEvM+chaBwiCY#Z9a33@z9B z=`rN%?d{h)9Csze`xa5OxmO|MKQEti#0wDvO;Vg{)5TdN5tX|4z ztlethf(utC+>a=xFtk^BaMQ2uZ7V5;PRf}9)QMc7HZ&CA&D^R_;a;ISsr}1^cC!y7< z&9z_jL`!tY!+7}S_n>EfOWmOL{X+ITEvf|59T&AKzsB!OX{!(6?ucgPqO(1}a-niZJ+6e-N(zadN}Rm zwbi_Y9m4J$ZShpx`uXJBCfpUqn=uNRgA{7643H%expo;D85vBsY{Si`twI@-S#yh# z#PA;>KYx#7aPstyvj0D35uzKt7n`SfCGEL5aK5J=|3{J|Z#DJP?~0C&NowIJtqdWL z_n4pJKXhnA48wWswvtn2@%b4CrFB`o5l=tj=Pdul=&m^lb(O^!)9pSMk*LH)bLcHB zs!aKr^|3KHCAQ(VzDL({?EcYp2^t@jHshK{A1X@FJJJfBk?NQ@KVcFK62yDCO`g|J_^nI)@b z{soG3&wZxy@tmJ&gH_DD@9DefBi*_1-S1VWTk4h71v_Oz_VUUVMC(W2oMs|(r?E8i zuIhN?qb#^57W*7*qxqbh4K@5O!&D zBzJb6ziu!Jx6GF{)YRVa@$(BI_`_Fy#Q!@3+$vP|As0@1ZGQ1u6T8FU81v9q@5J_; zdrpTq2bxi%6?yw~?Z>tuHJqX$zPh4ouGKS}ni}U$E;v{Pr_UYFpnm;k(Cc2Zl=*~R zJ#jsBwF*vY;W&u1E*?kQCUz@Zxjr7yK`GPnZv6`Tv|Mo95ue1v*kv1>|r{`?&;6oOYzjt@Wmi71cPdWaO1xj_vItVoI1`;?jMQ$8$y54 z;~6xB8sS_ch`9Gf<6iqy%<9f9aq!_GR540Q^QIg?JuKygzT7AH7}-LkE0WLj_4WU} z3VvVkubsS3m#M*4+aZJuGt~Jd_fmUX$}NSu=}E`tQcB~mN&WzGDFUSS{Cx^6xJ?cF zskN@nPSnI?agnv(O-Tv5`B5E1jggI&@uNrH_7N>77;$m)#eQK&saR0wm94J4mHqJ6 z-spLhHwe-(n*YBS(w@EW8`aCq%twhAB>ebDNG&R9#KqVR=RZj(t6sIG`LDT@;D0{? zlTSV&@(7Ln7?)qrg|~FxX}kL5+2dIcehT9A$G!{9Q6f*D?CDT7mtH>m3Bgh6KFbEHE>gO5#= zk}PiEpF9R%57o18QM}H3Q^4K)H)lZf@Ps6flfVzgMhU+$Gs8h@J-SJS2k_hf$N7Nc z2G5pHbiT01>4v?9hS!Ht&L3del}@V?8vl|e;>8LhSV%M>+B)n;`-Nxj{l&@4WsCWr z2?a*5_v&$zmhPR~D5GW`TD%g-e-m*PIs5HZ&&B2|HWH&X8629`)_)0CeyaGC7|X{p z+pmsqeJO_f zQoU}JQutfx zsRBo5(9F*J1_gH`F*=l<#v5~^k4wX_Dd-Tn+vq1o37dW;@MC(ls!Zh|dy$=aPvx(E zQgW-3^3#^(h8@mgIRn30D_AfmNE~nng6ENq5di^xAqqHC#pfm=sFnuFr`x(vjuYerA0Mu_`zi3JMOnyu<4&us>8K%2J_%9BO!anE7n0BpwkU1|g_+TsiAm46& ztZC>2%eBFOIFT*jXk&G@tRj-+L8E!MX)e-KWQG2P;H5_%@fkXvWfmzX*&ARIu>o3f_^VjO@G=k$Bf$NBX&kfr6?lx=|tq z80XLB$mRC$>37WM?`~h7+mdAKBU1b{G~*j_MO&p>`5Wc;x2FLFJ5m0sKhlE(hnn;` zgY`e(XE^hPf^&GD=AiX%lSW-m(a9^9dh>;FL%Akm526PI&&dn=i|@ZM-Wih~;(Er_ zwhE&-tD_gq5le_us2OER6n)&Z>9F>`|8t13Afc3 zuuq+rt{HsZ_JwPGpDmg_rjon9XC}sS-wP{PUwz3{e$GV|s^DiQSnTXXR^TKEZ?d0{Y#IiB zYh-t*+xvd}O|t!ANt!tIMVqczf@&dEC8rif1a?G(|N z#41GH|zP2ewTD!7-j~PT%P-B+BD?8n4%!lKh63Hto6ttz+T5( z0AQuaK;ghLARX%z>8Kf8g}!$@28H8NxqpF?t0hsp-bzJ!mKSuVxz8QHh0X$HEby#3;N9xT%eq}>)O6}+?5f!EGR z;x)$$pSlED;u8Ycb0kQDtX@A4Ky19hrk#lU>0EO$bB}>$+?@pk=e;_liq2`qL|eidrQix z8OJku_bxco*iuRRsn_|Mf|Wib7?Y6Ow32%Ke9T$0l2DY2Sl;s1Ma z@_uO?bv-uq3JG;#cAd&M>4;3oRm^5#v%P-d1+S#re-D1@=gxUgCB;pGcv{6G*`xFx z`z|fD&65ZM@X)&+PX-I~KhCJ7cukN>Qkp}ivcS(+=Vg~(JU5-xaeRJOop+rI8{MMR4C@}Yt>ynTnq zMiVje{Dd4A5^t}&TOYrA3BF5s?UwiAGPRTJSv90@aoKw@B^&n%fX(4 z{F_T`AC&IFJ*gMBrU-V`w6fol20CzPFva~1kqu4Zfm?_wYBxhe!%MCi(UD;OOq(#q zsDeLbHq{o#2m78Y+?RTBKag`1um^$*B^~h%LBq@Epif_~qe}MOC;F?`4ORN^k~Cb^ z7bY3?ACn{_dRS0)kS@g$Gc33RD;ZLoq^eG-@iyTgH*Y9NVi?^Y8qp6VgUl|RSuyl|A`A}S_S^r|yXpR}P-2F2$@~nly^WCp(jiOKV@78|3dJr{| ziP5NXE_k%wNOAE=Fujf~aA}k^rzeNajx@IoDh1++!MhlfQH(A-+UQ`~9d**1-@#as zb;k+u?{`{xJft{}Pv~ayLDuZc?CcxOT94|ND9gB))vhHk%WczM=D&Ksf3TDn6Bid3 z^UM}}fNvotylCcS`jdl!T0%h~p#^YAqrS*@gLWK$*i!Dzep6?=S-p+!xu&jtdHvMwmp6e0STy+$N8B&`b(z$^_Wqy&Qez<}F)BXE%dIVh~B30vTvl0qsAgM3lybqNpAd` zDK0L4ZfEzW5r=+)|G>sD*B>(z`5>KbtX z9cKNeD|X>oys!r13uasILu{*Mwb{u(&a)|b2;Rk5;F7FVO^Cc;DMU7l5{}uw%BJDq z?2dbS&im0=4sxzu;w}|ByQJsHS+!O_k4GjPqV@iG#i=%?2K+k(u3n<>)1QE6(e*p( zVav%cG7s`&c;@>1dX@0M8@Q_0Bqq>WR@hiD!sR3CrJHf8J=9ryDthpTG)AZK^?k&K zvCU?xxvio?kk@hfC9JqxdjJJ%W_`Uxb@l2hvZy;j&14>HAFlpETZ#Vs`LicI&QWug zzjj}q90&N|nw};qz1Ym$+_4n{V{<3C)>B~718d9Rz7<+vJ0lA_pS^d1C;87$&U^QI z;U2hag8PomTQf8NCN8)l59^LPeDVu^9UZAZY8S}HI_Qx9rBD?9vknH7gh;pWXRV-+ z=gGS%kbrR_u9U-zi;ETC)M-8T{_S*oo^0YO_J%8wzwS8X{!A-SI9?dkKq_QjiM??4 znCL}4s%QmlQ!{gNRC#%MGn11gtUAk3&B!Jb23D(l!ec(kfA}e_O`}>~>7jz)LaMg4 zVw#dO?EZ6ziEgF4CYrl61`5MLN?TeY@E^_IUTYvDI)!6o>Bv7i-4-?jo&C6zMfKWf z*v)i>H^)jXKGTa-7`lzGfc4#o4R~Q%)}pB{`7?Nw9s7$O=@-Qi=2dO9w|=_DhL3}+ z+~cL}qS8k^?z@%aUk+y2@yfrL@Ki|W*)(ulcL~fHzUhpfc?aHmL0vKY-S}SRc5^Il zevUYI?%w@_cs_fnO+Jje1TRu89``sDfWOLn=&-2b(j!hJ;8%c^R{+WHM4e zv$Ok+jEpkN%3e}kySDK4>lM|PFMop0$6j3gJtsSRKX@fpBqfQ*07`p+*gZ86N(bl%y|4arEia1syG|tRR8e>xW=;-4R6n@CoAki5L9^ zRznG{y1ds8FBrW5;IOprXn*rdAXm+!1MmpW|1`IV3RFa3xaW* zk46|n*d?JL@aullumrx`StD9>Q_Ww((qnDgDXmJYAR^j1%xk&P;N3TBzq$_%t6&57S)~mn{zP<9tRog3+V|rJP-O3yur-WdCmS;0zV*N z=&5yoX^Ppb!z07rl*15C`cmnB^jxt^z|5+8Haqf;w8RzQx`L@-Hhje@6FCXD8hDro zuthYj8%X$l_&iOU9YqUXUV?6$)&`m9o}|C2cqLZmM=8v3Ia3Xzmag$-Y%=7q?8Qjk(Zyp4_2cS9tr#2Vpg8xp+Jm~lVxf}g{J!y z&G_I=wn$9hdJ98B+++6xz8u#tH2gtYbp;$(0xkY{TPB?BcYDtARnyzH-s~#1ml@K` zt39c3f$vMX$A*RdbpUOlrTHAJkrgPG+@~<(CywU->V2DG@l8f;TId44e*KD7vfTwK z)4`i}d#DsVX{2A4Fa9{uMVI5OyC;2C&7VIhxn3(Wz!L&QhknkX_qx z$S4Eh1T%E`bQkX%G{0*8Ouc~wL1B14?-649&rySN&FS%K%g(sxX(?D1uM@(Eq^18m~!6}fuIjrxfS;YuCY=EE|}$(vkYwtRDer5 zlZA!FR#?K(ZB=#kvvpX8c4BYu0G3myLgjb7NM-BlQ&IhT{C$v0HiN;B|MCfavmb?r z=;s0tlN_6-YwA)*e;_&W8d3``LvSYxdv z-ZKmbKbky$2pQ4%P)x#2S((Bews){QSYmbiI^sM!m`}mNPyyD0oFqCNdY9?YI(RJO zBa@>@%IpUR(@Kup?Am2LWx$(DdV(##H(ah^AJ&d@6^v`%pG#oal&mz;K%D$3XosmW z9)MQS!RmVMe?eu)TImo3{@!v*#_=w*l;6r}9r|DF7)9ztw4aW^;_TKThYpM77*rdI zPl}Ng-sI)u>m8`sDH$9ox3i0hCQn?8^UKlZ} zciKXm8q1YH_CDEr^ZWZhB(jYzo|d4?;MI0v-<^dOW@cuN$9B0q)&s3QOec5;w8KU~ zXUBh+xZUu9Gh~NzB5o}YVd?~sBTG*`tPJXM6sz|p15s~3V5F&Z!fQ6Wge3QwA3`ch zz*A0Fkl%I^DLuxvdgYX`+?u@B{22MBlW+%#Pf=vMe|hJnzz!TI1?1{jmZKGd_-4N{ z%ayuZIqsF?ilWkW);HhZm^p_dkwk7;J`>T^i8cPC$pmW+H=53Gzhkuw7TE~_807Ri zk#`->=6HL+e;`+fZR13U`hvswL)gXLTF4sNh55s%hP#I|T%P6KbGwkFN<8*E^k%(J zz?=9xHs@i_WK&=hL`U6xlRvi_3fZ5<@O4JPc?uCR2`orL1~s^wn3yES|2jqvu&del z4hI`s-&y{LRM2tkhZv`u9xoerx;FJF=&i(I9oT+Gb8$Ln$A z>@ukDKSaT*K-;^$DZ+e(xC$O1Ad_mNT%AfadjM5NMrpZud66)j;p0OyG&?K#pgHEK zvsY6YP}%X}_$eQxHVeDa3WrWE(rcnap0{uy^>X49tFR+TKi{KW@axe z0+!!o>(XjxXXh3?RE^b|!`yP$?YE(_X+JYFWmVPGGT{!GAhNw4hPxeEaY5qV0#IG_ z>f~s@8Bo@Qw)^(qHc2uO`%3)YZub?t9q?BDHWFI8e7;mm)>s=_1hurgj((mVQCrVF$i*iB%p++h^<|a^C#ms#V|ekOvkNaHBsI zxWR}%yc)(yjC9joPJ#~x1`tGBf#pd_?-38mrDm`N_BYfpJ%WpfhF-N94 zHQMY*HUY+@jT7~(!Nmcq?+BNzKToMnx=)W3XCeGO+a7TLuRYhLw`=T`AUTz`wfHiE zx^AaEhGOh}dc5n~K;sw(2M0*L2da~RQ82m33<)l?)JxtMIa`?xI|{jBzs-R|7YPp! z&qs$PbO7=Xvs}dWeWQ1Fb6xW2fq~tFW0^FiJv6H3nog~UyCuOXn7l7!XJ;>OJD5ka zAQea>Ouo?Whf{Eoij&6!c|<4Ur-z<+k4Yj6MyUb+9KgCV*dOj+zyI0?x!u55o#qBA z>mjYfjy+h`d_a1!FT1}Ky1QUY27V*R)^{8*Y#(5B3tP9Xrm-=oI=cjyvIq4}HX=Ly zVqlud*~7e$3z07strc%U5r7ZTG4C3Z%3^Z5!Kr}k3%GOFyjmG4&j4I+`FHmSCMR%r z!y0`budEa;wU~lJlu!br9 zVg(N4$D9rf02vhY(r50at$koPVvHWIo&)%yV7W4p3dXb!ee(Rw$XC3MGXj3KNdk7W zgYO>E8N~2!d4xUWld6I=GV1Xd!NZr(zixw-`DX_hMR9fOosbAEsljluse*+?4pbK@ z(t(uJOX!>>zEfKv51=F2nn;O&ed(IDj&{KPsG?M`m$#($Efn={hmZ@9r>7iw>BFBK@W=)^aE znwgcQOeVZ0HVKca<7ob==qFCdrZ`?*T?!RQ;SWZ>QWH?gEAC{^bs1LJ8gO5y)g-&H zB4jFhIMmGz*g*icZ#n?CZ{gwd$;r16gcleXsH(4@gp^!LvM>gsmUtBA@QjY}LdhL_ z0P7qzKlF5T7s@*tC}_+lkfP+R*+FLHw{HuOW;iR;R&fxurn_SSWFRdG*lDjUxe;`> z{C)*j5Dr!mGBxAj8LY-xt6p{Is(|=hGJr;tmalRdND?Fay=OCL6*ijPbH3*sK#sfv zi}}wp{yUSCuaA-J?9wa4YP4yVLf7&O(v_Ya?9tF83SCbqf(TlI=-80jPh3EtkRSQ& zYXC-9DQ`Xbd_4)-?bD#fF_>d`P-H&zV7-+o7~c~zn_u4o&j$aVWe__0jAQ90mVn)W zVAc4eda4@6Q6*;nygaSi2zt-uf;yz;fcWgAHykR7FE7=a6Tn6u>ZgQ{BNxG$X7z50 zrr@aOF>H_Rv(E|#)o7C+7p%WS&thO6e29+>le3*M#$)iH{?S;L>BqF4+-8$b(_T|%qR%;lX| zIm*C)PeUPIcqr!2zeVuwql$uB*g1Jk1lr}SABsv+iCU!%T1-K;P`@O6Mp zToDYP^B@DZB9)0o(Hj!iXf2c_-3-IYIh-&S`L8g)$G)XCl!@O(8%jTA(UbLHWf+Q3 zfXpv=*}d91yTVqRLx=MWY%xTRxBB9kmKH}6Q?LG#n=IjFvi>7Ijxxs9)*cKmr2Es{ zxKSa0LE|Lx_bK`(W)&NHgO7=h~W$)LWH;4r~*~b5?qMo(b3Szfah7I-Bxdb z8l^mdz{)%b-Y|a;m8guQa z0tQDy1f%*S<%K&$uSPT=L$w@Dqpi{*M>}MW4j}?Uf5Vi8`>DG#+ZG@;-be`1gM*luV~>`=^)}^wR$fhombEMF{LYjh!A$GKV3G0T-EoEr0NQSP zxnsDfbtv*mrhcXb4V!mv0Crv%@ zv!M4x7$IbR9Z%iMVDwQ1lu-2$-4s!C=D)w+Z})65XN<837Cmu3d{0C_k8E=ToHgX2 znOrA?8>6N2ECR0%a*|vq-9e59}9nu(wh1YM<7LAOCyD5!j%hQSL}JIr2v%MhQVA@ z(~xVTFP0;90N&Wkfh zt0MiWrheBKId7vYOKf`kvW};CWZ}<0@tEE+@g6|yRQhuFwCCuHZskjELovoX2h?%< z68^Mq*Rd#0>Sz{Qy@=Czwaj4;jASw2vAKL1L3;Kc)}ByGc_VL&%8Yj@3y`{1HXChr zU|t!fkiPlBEiddBvYQdg4U?&q@8?HYAo9TtYRC^{kFOsgwR?`Tl8sFP#5@Rs2WZp- zJnZcmAvpO(@K!c|q^YEFQT@NUFS!H3YPH$C38@(@XDCae(9l$ljk+VGfu78X7@2H18T;f`)j#G_q- zkMZGz(QP-C(Jg1L=LNcVN*2y7bUjuvUg%9rp3_=Fh8|HKKRATBNG8Eh>CHItx%~5` z%6?C{OQ(PKn)VUcwL@kDpK2}@&+Ws|IhG?Q+IPmWHb1a_j<51jda?0Em_e!?mB+J!X;t8b{F)`D6VC*N{ZaJ`K+ z;W{4iNo9pBv>*Ay-oas;@{69?7sCeu z@E!;Q<_@}N!vx^>aVBc;USB6f&<(TOQq*H|gj7a-2s?xCrs;9$xuqRslguKxQZk7g zh5|Ae1HKFg$lWd)$tW5U3Ap5aRSLIp7ww!6g+lAW;qzQLYpt-&|7DJYY1i$$3NI+)N^YcIz&MgBs!LqARkGvJZE>y=qfekSh zOH+W<26MD>TdU>mf%tke3(bfo><%ZS*`IoE?GaL0?{Ij4kf&`J5_xHdPYM)T8|pb` zKz(ax{eH&s0s0|=Yo|~oT>azVk1Y`xl=frhAeNC+~4F#6U^?WgGeG=&X>{pm%0QUFbJ(Pp^| zPRd)b9b!j;(uivdW0k9IK7n$ICjq`j9S{H{IAsezV)z8I5jrbo8wSr1;Oy#zX<3%1 zVUD$dfy$_b!r(np3+^L@-gHmb%hmr)8hNSVLJle8-UJsbNG5@qcPyR#xCe0=rFF++ z=9_vp80r}3Sl1*RO|xcDC_K{7TJ!^8hcUB0oDNg05XnVqa7;?P>QX!|&C5bVQ`BMf zeFMKs{%USQN?T08$>rL)89`?c{=PwH? zl415~F#RY;c<#%BWDLtlDAUtSq^pB>;86vv)M&F^Ju#~xMCLsX(iH?X-}10d;MVu1 zoj#JeET180}_ z2pJj`wpROY-?o7(Gz&nI$cMxJ4CNW9-Wf#a6FQ{VtQ*+wKxi6?XT(`rS*`8}TVkh%FP-yp z79PV2u-{|v^?2#TH6`tsH^RK@RF*WV)3nNrI^=y&E}sKlxh;;K`9pPyfuXu)2RQpMTk! zQ!Gir)5>A&RM{wI)_d|vi05GNB~*_Yhpy`wHxOrTOs1o~1x5N9EWyY3@pHgDxB zzb~635Pt$##q(#h9v2j2jYxDS82R9G)B&R|6=oRfcwRT2-xfXH6g@_d03g^bcT5DP z*#6+&zxK*tTzL~R!FfiwWg>N$BfY$tnR72AKnxJ+XEHZoZCF1uhY@X_2}&s-fDTsIGQAi;hD^ zk^LJG)Iag57xD8Jy=TDm*5&+H!Jol{u|511*+RvZ3hcVswAerS!CN>G`T2QdC-s zdfy6VlS!=!VR=JDg$;j^qlKRXf8^VHY+S331%%vyhCGX;`>QqKLu7#2m`;7iHvs(vcMw~W)Y$OytglSvP5)1@qzZ)zcp@VCX?cyhwQJvIX zymuNJ8mJC-oeHUG%W<>oWamk6#qN5O3yM}*=t_fRE!m#7*MZEdA0Fwqr0UqH1GN%%w0aj3qcB&XM@RgLqkIWfd4qxfU_5{MotM> zc%V8q6J*oYfcbt1urN=9HO^jX7D016P>rHc#cuEz5oRSDDT^xrS=xXZ%MXOy{NbAG z@$}YZ5KvIWSWpN81!cT7|EIl>-5trbpv*9UNsX$O9j~Pf447tW*$~+)_T|~*D>m($ z206W<$J#Np{-^{I2rpqiE<&0~cc-+;2l*^wKQgM}O1qbyQL zDMLd;1JBWx#^ayz%4spnh6KNSe3cXGZ>{e|%ANxf8pwz3t4v`R|DD8{)fUIOTHTL2 z4LHIPh4HkOQ>XCt?}GXzqmE6(y0V51mmm%Ixw=WWj+L9wF0^HoPD~46r1f(xCI0Fn z4z1E>XCi@hK=kFNwWb+U)$^zNhzuH37|H9vL#oHZ ze;&%6H;*@3nS|c(8>xHS= zK-4C4=>9szXdW4aP+UKX$N(BcWdeaw;wPr9TCX>z+b|r(cq@&VQ)oBBBfA0&q$48| z#;4BOrR>FLm2Xk;Nc0~OE!ava(&L&6#qqHnl3Yo+j|>Gc6L6-P3N z=C@RIb#oPAl`IX);9|7|9@f4O4${(-f7&JkQqu%8z_%VOLL&mjXwyCF1Ri)Hy_$Ra zbU2qo2iiwZX_Hb?C=e9XUAgfVW9P}5Bfh=8ZQmIB)X^9XvmoBXsRucx7T?kp{F1KmXXnu18Ed%F1DG zqzRrU`y;8F0KZG!{Ki3LCcFlZZbtW_I-qyTobL(1buSzROe3toMJCN|;(R$N=+CvP+w(D#HLvru;I8{EANe;sQ*Z_hh1lNt(=T?y} zz!TVxryxNSs_$wYb1@*9m^WC>J{QP?jy9X2sj2AzQ68xY4fphjL0svj%yS0f5u%L6 zAFkn|F2O9Vd5GIdHqge}I=EPz4g=q*fi{YRleU0WZK>qw0;10{cxlvWoEQ0+o%Hc3 zCC#epI@k6gIPo9Pa8{i3TdR-o^0;ra=`B!3BcJ)`#Hp5oaU){D!SZ1i!(g>rgFOGJ z7<6Rjjc8jdgDQW0`)K{kcO1Jj(v={ZU|IFgRhjJ@O)#dj=%)>xD4{2=ga)GP`gzAT3Ovju15E&j;=LjP8A_ zhX|J7=AHl`abaw%b3ySDZ8O3Fn~fhplV5XR++I!?GWdIBitDImIWh?{4k2&&Y8zBR zNduEH+k%k3E&o3q5cKT-uiZZuLAe zcU#`$F%_q_2~bo*<(_>tfb6aMZrebpnFO5*yC7h$6odutagX^}AP)1;3pyWx=mHCd ze?KwpyGUqb3VM`0zgv6i{)&;UDN8Nq3d9M=EojiJl+vmyDfO;C`D5DmqYb)qshE3{ zP!KSIPteon?KKbEp-#7ob(xJK*w4a3;Cm6NZ7Y-DFNu8y124hjm4Yg*HH*BPO&*udanPI=IK)xQt-=nE{}hE!9^IXx%b)gj zcDkmc{2(gvv~tq60*lt-uV&bt9Ge+Ewf-P%vZL?+2k_@0b`m6mfr!rGx0LZMe$L)# zNDx93ICY4=VF}uw97so-f6Tc-c=99D1tMEVuT`LBgQN74an1KHY;{4W=_3bcTG zKq>fUMfw;B_krJ5*If7h`8&B)pS7is-k_J(>!Ol8EKrQ?U7keq(1`rJg$~Hz(q-$I z;D`3EWzzAF7)x2?kzlZ+IiPSuy6B}3YpYnHm5;#uQCNA5{p;oSZ){DFNm}ZV9~+$i zlOh)c+(&(kWyRgt+FE1K%{=iSro*qia6G$nK}yD13-*@d&Yu@ zHYWkZxmvX$D;aof~k**t~Z$Y>52e=YO}8A;&i%YB5C15?&iULbD;*WU@M~Y$AUf|9E*Z zAqyckpPabI+3jd-HBJTpOAS+Op8sP&PU_n;*#D7?%Htz!NHXy6U0Kp~9WB04w!O$d zwk5}|T}F=dG2BmPV@?y+k2X)q=VIM*?doue9;tp)y@1cd%hwCYi5;QJ@m+Jd;}L!o z2nAA;l6P>D>c7^@I>UQ4lwo$kubt&kB&IW(QE+ zpw>egIJZwLFiJrieF-N#`>5Juj#n5yBwC)yR^bfs3oR5_{7;7fiI|iRAW$=;BO)-Y zZnB{Ur6q`UrjaHMNL)it_fi(@qg^?)pP{~ij z>m5*fy&Vx86a%1npxk!BKy@*Lv~RoK+aG?EI`MSdrDJ&NP)%|qQ1mr>MVI^4ClbO- z-xatUe|%S%CzK%e`Re1N;HC0b;?URUw%C6X50jW(aQjHU_sDU_O$>g2EosePn$3yr zaycz~SX3mhDZ|vcys~-x>UNG=CH#eu@k*?l0xxhdo;>uR<#jmuAqeA}-<4~XC$oW8 z=R2IsDG+k?P08(W)$G0A2UXc%dO!-W9vXOwAogMg)$Nco$f?o$R-T}RYp;BJh(YXjWv@G4gr>;2yQ_S;!H=YYQp@~3 z05}dTf17=@J=4>mMm*0`B9PM=9)WhT8Z*}!!%7wF=^@}{iJF6bJn9I7t!ZA(8b_?A z090LO$Kq?ie_#9D!BK_Si#=d69g*sOBL6y!6=H3=l@Kmd|UEpM%=O zY=oi@TZ-XCSnchF_Ii*@S|-53vsn2XJASf*QUz)8e5;yAZwa(N1t6}QK}Y=C*G${} znMjm2%*j43#Y*EtI=9qfr|g6H-rA8~3%fQ`NKo*s>o;d73NXqDu-aN8?DpdN9F?#R zc-EKUFB&lEiV0%^fHcDy4}kgl6bG${yQ>&P*5Y1MF%?vX_lEPC9z*cY>-Sat?kECT zzE=x8SOlV`Dd74>;Q=DBQUs0>#IW* zoS2?2sAUo{S){q0d>Hn12tj#5K;SB&pEh=yIkCRa6#JX?H}?XxR3)cZYDZIGX*$e? z_(tu8-*mcO6B4-X! zQ|5RUS{fNK!{qOv<~u}>A^*%J&U8e&(X2qgl*^D`VX)xh;_`QEVxbS7$}Z~4v|&w+ zh>VN$RL)!cpM^bCzAcN6yLV(LUj=L z*8>{ArF&M05=#Tbb*F-Jwza@3&Y+-Yo~SK;h-~J4KxIiTV^uC@h=#%eB-+8leIIt< z)3G|9ZDqY$#Kg)1fUb^5{60#?&CLxxx0^m`-57UAh;T(p#2)m%4u~wA1i+kCA2QhJ zAJ@?L4nB-|*d8+Y=m50Bxz*6N(sWh+;L`Z+Sj!dt}X z!DW9xSj30DIuFUfz7R;yYcstrX$9Vg$P7Egx$ zs&%CPPF3;x1x+D8Dm_kkY~&@)3YY#KC_Z0koCxn5)1!b0iszI`+5pl$yw z`Q!_|FSHry6gxeJA4BYNXbrh3fcgcWFC7u|V6?1iN3EeFVLwf==MI}34gJd(ksi|1 zAYL&U1I6I2m|I0}|7M2&*#Ra6b0Yf`y!L$^;OiZ*brwSpri<{|!~34sqCluoXyi}l zc-~Nlf7pcS5cxuEukH!T#|sO9clTGDTFC9KVBV&It*r+iYhQRce25lu^-q8Un8GXj zAZ@_Xeb#|_iH0&cHAknrVuf;^)bA^bTQ z-mQrbfi^ugElt{wj3F0Tg_>%Rfv_BHcaaJ2O?1u9&JuqAIHc4U+|SWDf2uojCD=>G zZ5*V{HZW~|5=w05+3r&=wOs80G+ONv^#lB+FLZ&RKl;(HriaSCX{6zQi8`7|nWcm` z?9u5sG}#Sd;O;>TjfWZ6%X}QYJYDdRM2kr+1GDWm@`Q$&<#R&Fb)KKSl=st#M|oen zB0;?yWJ1w^XCD}?&17cfzLm+7y2^WYqTn05(JVnH!(!X%YBlV*%p>_oh}u`VwhdrQ zC?MiA64=icf2&+JU!Od_2$y7@tGfOO4KuLJ#20d7-Nzno$FB`W`<-^F~OPf5VsXUxR`W4aK;cE>M;rh5p#|`eW0x z-vbArMJ5lAA4s1pfIXqf^eF(g-2(Sqjgzm}W+w7msD zG}-@%tdt+<@ApBV!3PAJsQqx#hrks#1>e|B`7xb-UtT5_;@1beQ53x6k__SH`_`5%&`KJR_~c{*2r*yi_uj=#G)R=NoA%qfYZeb2RlqJPA4Gc@eG;l1m$jtK zFQ?4V$EJDw+&vS&1Mrk4lmCjEsz53=mZ!kniFF z$jzSmC%DmWOOBt$4JQnqA=kVM9F-G0yS_j>+&{PF$1;*9(L ze6G(m-q-tm-6xlD1XgJ+$-!z;+@Z<0dURGx*?IN;-6KIklaIc-c60o!=qV{UJgjyU zL;xFk!xqNI54wi*dYgky)!)8*)Es-ytAw6HZIk?3?$re`${;4sBfmZ$3PCSeC)aJnv7UJmI6n6|zcXJa`4ekQr(yLjw4Z)M<>hh#(uMN~yzdO^injr@ z{@@M&0P@y9SNh_t=j>IO^=Li`DSLG0?bd^fn|hdw|0ro(EQ*jf>#}MIf^ilAC zfP~6D25AF3;z=7Dy3(x?ma(EfR4;#!oa`Rpn=fYKj>NqK?$sIaBo7I@PoD-+lTIrFoAnmAsH*d+!Ggb9qyH4i1S3r16vE<}+(_h$k ztY~z|$)(sfv=2Gwg_blKLq1q_d{?vJS3>An&THTeWjq_e+VfU%i6^)252Qp zeUG5+aIHNd>{d>f_fw9}Fkkoee+N_7UHlrFKK9%)_UaiYQBtuqA+DxI)ZL!Em`M8Q zT6HFx4U+Y^Ui^>4!z1I@aqZQzi2^T98jp{@PV)ND_Ra6WQm-IUUed>Xh1@$op!4(CXrIqG}sdpDPY#u=P!+936bG zow}}25mnzH!nZ_fP@Lcz6(o+;-+qFH^$bx&bE5LS8zj^^-r4!A4a!v7Rzw*5cD^!1 z#ol-s*Pc@spnXcuiBxI<_PmX=KI1rrqHa&2AsKB;9JVKCTxM_W&jsXl-DgaJ{)g@^g? z%48bP^49#$zGdJPDT-UTS5j;Zjp zJeAVgFqjYrtXH>FoUUAi<-N@*%LZl8N3UNtyLJuIy3MW>(8{?wJI5i~3(DRt94*v9 zmxq9=>WuIjRX^wJZ(wGTWa1jG3|cEc_=y1FT8p#GjSb%~%&qR=C?m+`_2v+yDisXL ze|<*p@#(+6SGdfVb?k?LmwE>;iP}a%MAYdEF^u_JYHBJZK12ZLu3B1-OVDJ7 ziLIvs{(b9d!urqK-!BIF`6Ej$mZu&3h3rse(z+v6qxkD8H6!z!xXPta6--U}%WLMHWMRJ>|SHr^eRe}Bj6|LPK9D!18Wyy@!t$|$Zn5jrTJ8%mjB|7jP64P=kpVk$iLSXhiaJUmK`&c|wih*N-K23-*DcgB#0I6D_X>-rk7 zoC_=}Y&E|{@yevQKe`BsO_il$@YA|S#tP7w1DJ{y_2CP+Pa z1~&lMm+4D@g(P+$J=X%EZcbB^`6!UTRN-M7rO31azRE>za4pjCHU9ErO|3j{4T)oX?* zg|>;f_uF!}N}IN@7QPdHD0m>lQuwKc<HjP!Zka&dWql4)%K(4)q4U1{#*3~=+Ea`|2?gQCI}4y%td$i?Jj zWxF74FqOGA+8BxW5=29s06BxJc2FbWQIuAeYfxh}{YCO!B@hb!=Q@<69CYtB$Y(4* z4-R4xWOotZhT6Q6k~34?Z-I?OXmI&fk(7Ey)~-9g8j7w*os;`-LB0p^-+<{WJG}>0 zPt}|;lK{xo2LWd4#L>c(1Y?*j_wy6bh6<`(ZvetSRcZgO5DJe3q)qD$*{k#C(w~7) zCD|c2(+`Q)wUWWLv}~|f%cq$n1|&L}M)62tCXTJUxVcp~?`}C4K_&6v5Pu3vXM6{k z4hg1-;ZVOQHv?GXl?F`CN4uR!+pch?H{Hw+%BHhHp!9WIo^wa?xSfmJBft=Vn(5WQ zO(52^^fvqq{oNwP(DPKH^G3`?>Y-{W+u5r}FHG`)uKSZB&7Gni5{bLzVQSAUszT4Vr4IoJLjMlD*}VJ-h^_`Vv0Utw-XTZ zrQ`TO-h!YV1!i4>uj-e2I3jw|rcWjaoTvLip==)3Y=dT;FCu^|vQrkyKagG$&LQBKdp>qqbX zTU13v4BgiwfjM8a3fp$-K=4G{0})~UjN#_M&D9Dp4ADti+0^FeL9E~=XeDopkj2t8 zb1lZ9f|npP!GDQR7#I$L-F{hgoEeeuKmywion7oWe-ZEi!mw_4`=>^Sv@CXggrAl0--EyO`^rkf2{ez>c;=qxYVMXg? zHcM<}w|2tp5Ae~JDAXV2aTNk68uPaPe)=f#i zcKLz*&Oe})#U~`35Qxccx*%J9%grrOHH?04{8iXuiLm-%UTHy?U2#2ecN=vZfC8W7 zYkleeUo%jGWCTl}#1R(acZCUyCFi+ErOvqev(;@0ylALSIeXAdH>K}^`s`?aW*{{R zl-O;^(1R8+4+kYTJ&v?43dSw6fxRWQofnV4>26@>f26hs8W^anhK4tMh_dzo&qg4@ zW_V!e7T^^Ti0c4AEqT2b9n(3X_eW<;A8y9_pYxW(8mxrb5;5jCdpiOW@~U_k2bC6@ zGs- zivi5+J4mWt&t%@c5BUr95Ul|E|GLiCU|so6ZcTV9QizclVkbNap7@{@HXb0&ld@ot z*jtW{Wk5ypf>%dC^Y@wSkZaANhW`2;ZI9{~FHFq)#eCGmMh4#90+{($>V*LBci^P( ze~?h6pCtM0GiWRUQ}2h>k9f?}*)2!0eJQ@KjczVfPS#05 zi^JvQ;G(Ntvqd;>GJgCdq>VyBIP6IG8O|^u=4WTq0O(8y`UIvxk9h*9-3)h5$*_id zc1(VEt3hD8$9v^NLqm4Jd$oJWEm2|)<0m@t>iqpbB<{@WiRuZm!84U_x&XXrTAKEv zs_Gz0Vr=Xd^vrMW{r;?fn(NGUlY7wg?_Y$*g)5>rYlNrv?EV|uGpc1*1_JHg^wO26 zf#;?-s;aBC931kWU$2w?1GovXp3@;3IxfO{7ZYM2a{%5;9=)VU_+)3y;YKe1#|y_g zR@w1)_Cty;WQkB|Yw{yBo_FA1l#zkB&WNvUIC}8HWR#47aKW@05iw6hsXr~(f+kj> z$`OaqUFR_-2Jq!OuMVkB->}yfXEZ~8Tg=bSs+grF$Nhzz0BF+G4U2MgW^PqNg+JKa$yBjA1l`{j$A_s_35Xk-C2-;Rjw z3KJ8#l99ae*F;;MC2OueT7kiB6LM=MXz{%r0P;E{7Vhdq5-%5C^u;J?3Wd7rwIXK%zo~0^3!I0mLOnur=ySlI}kL1qbF@OWce}+U$ z{*7kpW4QJA3Ts1$flG-pi8fMx$Qi!QmufK{dA;I=*JsZhJfN3`B3A^ZF%2c zRsjHg-n<9I5~sn@G85dPD||l@aBt7A zW!8V-VHr2R8IY0GA`)rV(4&Bq6Y~YA4OR73OUN;Lmm*u_jT}}`XO7Jyvbp;}1ej)4 zK}d95HQm|{4kG)-Afkv_hyKpX3J?u?{EE5vJG*K(>*7;HBFl+Tqh+m9v=%`xxRb~y z@MG&i`TsfNYS*?!jya>Z8kv2w(>EJrTWNfa@D9?`&`P~}D9MR0sCixgLi71rNZ}^N zFE?|(wV`wTTQE#1NOXcya`+15#)T-T~hg}wyRULLT&SQ-B33s)dWj-*;> zmjEq^x#_g9>fCacwXm=;^!)7X+YD-P)coC^;V*;p2@n1wc^sCqllD;3hl2=*4^9tp zaA-(I&-?x%ekVli^vL#sni>6f4){aW?u#Us%z#DMeM4;ag5!td#W1bu{{8!I*^!_IzmwXR zqb}wL*>`^kz{LK-wn1hz zr6bFG-jk9(%5W24U``0IiFPNN`kw94x*_dZLzV59&JeqY0~hUj5?>>j1R$|UTgYHI?*Ps{?hiHwEu$f&FJdh3x82I7@iXd*NqFFyjE*PZm`KnHWjx<-=>VBQ6SCAe1g8}W}M1TjBxRoq-eaR~F{`VWro)RRVxp^*x=3Rn&^ z|9P?HnR`=HPgnl&1wG&k+Ax#oRB{~B8$E<7vw6*k@KR*%-5QeH-Ra;%1w&qAO$ypn zD_apx6+~Hq+NQj8q&M&894C_G<^F4WNo#AIW>s+y&Yuw+3g9&lrrgV9k^9=hC*)I9 zXlu5MBm%6czAs+}cR$WR!YHwH@u}Ie5)5Klc#aU7kD?G$kFs0-`Li8Dj9Co`*iFpM z)9-@1zqqKNfcJ4$P3gkn{~G>xtM3EFOArDq`qG7)OoiWR7gM&K23fuS4M3!&f%-v~ zadVp4$J_fmBn+$f?#<DDR7<#`|@04S~XLj)~iSB|4oBRVEhA~C>#+TO*xu5PIffe7Q5d5Hs((XE0 z@U@b^(y4EG$43w2F9Qy-l*@{&mGuke}Le*a79GzjG_h(!8 zG1;L{KoN031;a}I*o#jLhYygLX@34(%sB<7J)c_@9bT(>Ik8Y`JP9!FYY&g`Ue|fO3!bYmvgfbSwkd)0=7!YUEsM$`u-Zn0d6$q-Crff zguqZ8U2PDbukV8AFh)%a?gPx~^83&Npc!)BJ}(2;|GyQE1%$aVmbnd)a@TU46(`N-CXzuHQC1Hl%zo^|Ljii=*s3^^eWF^L|1FN)3JGv^71!J9^#Pq~Wzxn+ zb(ny#f}Ms6(z-i-qm`(T-%}W?rHWKjkJ4Pyu~o#GJhKi4RMbv4mW}eL}g(A zt6_y2sv3^WCfYq~ZXOkYEGrP|pM^9fKlcD1c0rKS{SFxWXVC_V3c@=~?b zZt6J#1T!6-Wa(U4WB-0=w;tVtd5$0Ufrfoe{V-d0u!1H+164$ZIVD18&;CcukoWFC z)u6eaEp=-MBIg)_FSlASXgRsMrt|)hX5HKYX?yV=usFMc$&vAf^Me3HVN*WIbz679 z%L|>TY)7_11nM%z{0wjZ z(E@2}z$)7ciKnfHA_oVLAYMtKamoE&nV2T3OgxshJ<#>mtpO+rA(;>XJaiFBoC5D| zy9_O@RpW_Jst-aQR)M1hJg;hDVPS3QZ?c9UIIu_)GqY5v9cN+i13M=t=iO_0A$^ksClD=E_K$SD>z9IrYV|T47_Ml&I9FA zQ)AI6PSY$J_rt!#h?xCq3O^peF?HAtLX&#uM$W*{|?y!W(|0fc%EAYp-2*Px)~V`(0?| zak}wg$OZ;nf2djUb6SVH<3Z(P-q~iMHariqM&{0NOKWuvjWvNYJbUxMaU$Z z_6$yWCN#dw2JSGn<#2YOlso*9sAR;37nFK=ftTz7>#~odVeX@yHogW&kSJ$?z(Z!R zKAR#D-O7$m5P(I);b#&$J)3X5(Zdm*AbHc@=VHgynDwY~rs^JUc7ODS%WH?r!<;le z+bx;^8w8gHKX_H7x`!VE3VGKH(lV2WE&NppRt5e?VniW(b@os_I~vW4tW;n%{~tD7 z28r^oek_r9}KV)hIG9icG=u+5JA5@r!%kW1&&{mQSmc9ECd>dX>BQx)`soO~m z*#_wiP{t*#;8xZC_nTBqzcQ)hW)~JZnSAYG6#{h5a>nCjS+!Yn&(oN|foBDExk5W~ zYSVvL$G7U;july(->~ROEDg-46nUSzJh@q0C&f#1Ms-=+y7A8@ z|969!Hh$|F4Mnwx!pOo3-;3z*Xk>Sfg!x7?(*MG7$RXydiFtnNG7k5n6IpIG9LIde z&!~}8{^wv#tgUAVk!d!wD#py_bO-9!a$K{Y=hYWpq|CfEHsQyw`85U}J3YHo%=2d~ z@GO8#f<+7qFWNrCF?K@OW z*SLKdhi)Mt$3s_d*o`XK^&wr$s#}?Xq0RHYHlfdUBvIz0cSJDcCxV5E#n@mJ>(^@P zt0dAOH3@t^lU0GBq20MvJ>0ViFmp6#LZEt^D^Z(@st>nx6|cg8J28#-*ex=UWGJA(B3M2a@jwp<$z8SU4NN49#vmdDEU5})Y=Mx0E6{y z!oH_qS=SsGHxy;QxET!4&Bv#qRS2|XM#0baeRnOU>w%vE)=zgjD%u;rM4Pl+5&rR} z)YuH9=dOhQq!i3xB6VWQle>w^*q)kf$BUs$q$4?1y%iB8@nCUGwa^pR5Eha+wHXm` zk@;tvN*3`OW6h13m9&eWhKGl(Ou2@4I{D0vO@bqDR?uqhHu=WssAR{Hew-!EjyL|LrYJrqa0};Qz#VUHXpm}RUy9UYk23cT6NPEi^W9z_j$cf^O01;la_Zb?->R^ zQ+rsZt4k!rc6^uMqzc8EU)L!JNLgvh(E^??i|P{W!d zAt?S1MNEq>c#@VhzZ*I7wBEjVTkvj9Q_t@tmzs^^#4FY^#rH{DoQB|Iq{Vs+;?86< z%HEaeFX%rYvflKf+bJOTXB^;A^yH-+LO2>V-*dOifyRH`ZuMSwU*y?bU$Q1{=Mi$b z;-eZB{*{JmIHKWaH7#MR`<3B$HDs5@_+#t2ojDzI3ZZ{m^zOg4PKdh}K~YBB_?tVI zeeSrA=$2XdQx)-*{qq>6^033Szs8*q1WnQx z3M=NFr6I~xN-N+8zA?XbTh93AIp??Nms2zI@85IZ|671VBDx(Ff!RNs&!Q!i^9ZfJ z^1x?G){(fC!fx1*V9K1w9qX&V_n$feGw-mSbb_p*nHN%Yg@(?lgpdECGtJRwe91d zZH+(6GJHAq+b1!R*u*fw$l5GLE&82C)eA=Mo}YkHGXGZFYjuc|b>q-AOXH!%tjo>m zdTX;*gC|wJO^S<(PaU`_@Rerz)SHqzYpM@8F; z97r75c2m*z>Pu$~qeQ;W#-i6x-fL&Y3nu$d^_Dd#YWDx|l=08kFi>$B;`&SWnXY5U zKSqwPplzn(oX%C<-5AjdTI!bWb7j)LBIK<7eQ_6|T*|VjXU5|SV15#>*UUr$X^TqP z6ifs>dQSy`*hJtB(R_;kaU@wJl6K`#p;A2?UU^)d39Xi-nXr<=dQgOtSV758qZB4Z z7r&v*>ESqNkuZBR??%%prkkJa&waPh(veKdjy32@lF`PmY*qXBTt{&D*!>9HS#6lg zTsJ2*zd+XFP$(3(sc{7^KZbEX2^EZ+Im4LbCP(ei&VTfdg!RWm_vs`Hq>U;tf=mtU z_~5S!35-S`(z&v+&wJxG8T`MIhsC9%^qvDtLKpL-%(Z2%qd;X({{zda7lZ#x2ppzN z$L)u%f^-^G(iBAqup)5li6;N*OO?l(bbZIeF!OFi2< z=L2dIiQIFrk0{=Qtvk(f({JMYXdWY;B1%Z}bjOFsrG8RY4G>;wCf!`%TP&i&5jbGo z(Q5I)*;~rY*szQw^m_`)mY;u%YB-owX%~NhUo&4hLpnB{M33<3$fSyi+&A&(X0F zN+ju0)~^)lQ-riL=BJ*msl5K^@*Ibwi2&!#nQOz~{?M9#t5@sZ9VTUrtmM-uvn~DU zN{ufOHG%Xy>{>$<&MStZ_ zi)VDWIWO?g(0%1EUs|q4L+pCTqQZ)b=4IsJ>cn?Ajdv6a5l+KMk2R05oRCG2MS1J z4pd2$-n=h>Tia|rWbGw%$o<%ag982+a){{Ebp@ZZu8B8h88z*x#Wf_ME!ssZPzjDt zuScy`paHUhT$@gv7AvfONgO@2;}l7ACEh=KI%PTM^ON_td}`MWWG}6h2dO5FA&ZWz z6Gm3Gp3N#4|6&GDq)q7)HjN~L*vJgW|y;MVpKt94xY8o z#(C9|D6_yRrPqn)+rpWeuo#htm2zR;gX7g0+1e7h(z4SI>;jh8qWH=l#+Ak~k3X|f zP*n;o^*5}2lu&Ok(vVj#^j{8C4Xrz-<3F1IS*UId1*V*y8VWq^h`)Dh>S5*#ZUR{y zyyeZU7(G)h8ILcTPw$k_GZ@7#_fIn?=f>Tff;wOtB1=)%mgnW=wMOL_d-!&(c;6>;nBF0OY^;jIZLL&xl6nTThlQeSKe0J z!nq1BkjCLISk)){Cs?OlTXf^!TnhCr{lt8u>5Rey;UO;K-z!5qmQY6@M%>1>XxccR zUOx|eSYwlfnEnD1MoMRIqVdr{Ss^gd71%Uum&s=pMjHJ8y>;=+_^H) zf0H&`?Br6{bzk~r^Kz8nFy4#GO0jB?_}1_60WcQa9jL=Z50B2)AMAfOt2i8dLEMpB zBwX0e2HW`Qv3*~Ld%3F_ipk0T8RKJ@7aXr2Ux@6%;a*3aTsmtNy2Qm}JJT$Ao|k^a zPclmHzO|RWXXZfW0*uUr$kbDjRcJsY%AR{O^Sr3IYhkUTE;qMd`THRvrS{zg-Cvo@ zqyQ<;ugw1ZN506?dw+@3_vyF6Gmm&>Z{M>LF+Cy* zo0=-P)(#UVgwZAP5{IhcgYVY|z7G9(9-VL;;uwL@D)5oZ^23sxoxu!k8_U-=iz`sQ z=pg=$PW*14IZ=qQKpI1yk9uK-aSEdfkUZB1yZ#XJBzS9SYzFgSrMPy*9jMRo?;+%3 z7#}M;&M-jnMu#|BeDJ3*@1O*}=obfKB4ls`E#%aFJXjSSaP5P@7k5^0N)tZ_Mfa$qfC`TP%$msyG@>A$J&r;>XPJzCL*U#k~c`izW?4|mNdtW6~b{@zQ|jo-+X ztY`aYDM5ThMFM<__^6;Yl=u46SL8U5c3cJs~IJNK|s%46~CbEiWI;W`>7L zQaKf=5D7$_4o_yWGiU`)S%b?++_Llv^B ze4_Tg|G(a*i|36>ifX_zrI2!|eN#ZkMFg{oWGPR+d!Jb>ZAnST2Xq!~-7wYLN&4}( zp7*W@2BW7ZM1JxbrFb4Ji|B9(Yt_u1WLofDPseT>b^*y&q5hqI{G(Tg=tb>2Rt$ho z6f8ShEsTy5`E+v01^^k`eW&$dWF_?HF!zX|B z+&h5y_NzA>+A8@hucOu}4R38Bj25!WxQWWQ%5gl|M;%2l-AI*&4)2W^YKksk)GZcm z(*W=WiRu98xH4H8*k!rpEO7uZfI;oU0}Qe8AHCLC5I!{Xeo0Pia`mf?f$ee0SM{6l zRulrHkT5F!>5s9(2HbKw@TEw)MQU|WU^gVbR+dWOCq$5*0BxK`c=nK|>P3qW{F|$$ z)spq7Ke&qvtWzbS)?Shu|Js&w_zs6@wcXE#(2^4=at^H(+h^Jk^;huqB0f$2$7j7^o z>LfO3t^DZV_*lq_ryvOv{%>RKoUMX}=AL=T9qtCvlB1B_B4>vDp+M$T|IWqD)b9~~ zahv~exF)1XAYGbC4AnW7ex~{3yp7p0%n=Q+OOhyc`^H}1vUCs@_dOvG>`fejVmQtd zWk(FuuAb$z3ygHVOAAsC)yC0Q>-jl%jnL9f>6|U7;HnSwr4-C-#G1=^%R7n3E*UCL5?4f$ko3m|& z6v+e;_y6Fz|3jzXHxv|dKk$P^A>R)_`v~6u-%Awp4PG&3S2{F@299Pm9KQcC{j8;` zw~VbryN!8!s?R8R~a;^uks^y#rq#`-p=i>>qb`F>2UT+rZ9+P9S1 zzV_);ug;^GaPz5MUtu48Aq7^pZyqa^hOnSo4^a0_Fuqa+Uj-X z7Y+x?BUot9LRMAxKG+9o8ZRLfF?R_U&$57Q=&Vi_HkZGc9qkpie-x=c zz1Gi-$OhU;^#6p4U)(uaimRM$_4hwskcnF4GLr8Q^$B9Ba4z|0qQ{CY#A0j;S`GS> zT!-u!+hM(@ICG|lUZ2e@p;&w3Sgys7g{dw-wf4MgUt<(`1i8JBDCr0M;gN+}PVR7` zypZUNURUn9F#Od9+sOb3c!ca?geVOJ2+Vv?wYUYV)BHuoFar!ZW8X4q+CvK&2x`yt zM!e~l>sDBGaRq-1R3IyEbKg~Msh2XB5jiU-&xX#mA_9hYgr{1ZnpD3zq&MMBq^Bf{ zp^p5y#ENgylJy+-`>Uj2+kM^|KaS!4;(eOl zd57POlQl#dx2N#o-Ak#{j3{cOAH0Q#bF+U28OBIN7)uVg86iLE=Ys<<%3jz6<+=9ff9jgg%7 zj7tlSMmXw<7~XA{?aE2Pr9A=Q!E-^~9P zHAmyE$dXbCB#H@QrvG>LD922WLI~MU7BGxyr$pN>!#f}UEzrW@LMmO&Ojw?fL`{CC zX~6}b@y9O>b9>hGi2D3}xaxdtYB8~t;%3=!tXtK7?tBXIV!B~i;PWha%8eIE;}Y#b zlpKmP;@h;D3hsqS4EGhEk*rLQtn+*KchYd?6TS?P3$%+4Z&Fbc(H^z-=7D5`{ne)K zxU4;PkORxeX)-P>gh6eK9>u&vGAy%p7H_To@5tBT51xg|qwgusHcCAb`cu(bJpzl;?Mz;8@ zhn|wb2_d*YdY!i+=MN1LubbC>n~xp6zprU@!IO(k`GwSIk@x0m@pAxQ>Qli2AAo3d z?$WS`+b=h#p4*0OXz)x_OxbOgCNWQAvJ}Jbf0UB!PQTg4`sMuZxfL;{6b;{ZVWC`C zxIYI@HMsbBxe!SVeZ^uY-45potZVBsX2;z&SuO_0OTNAj9KR}el@ekSpSIlyM=_G9 zso7suY8^(>269Ml;rCsp08>hk$?d|dUz~^Tr*uopo$h8$K%n-sRy@z2(hpTDoIi@n zPtnmDjQuC@Js^T|cBL|bM31Xh345g;yW+J@$d9)sX&Zj%`%#;^Ol9#5;wfUFl$ge> zPt|v+gk|iuaA}K$tThh{6>J;!NED8h5q;cFVMCyIv>?|pB3h>INvZ3th_xUezP!em zw3G5Q>lEtB(8mZ+i?{g5PbQ*{dT8^2 znb^Z)%4(g`kDj(C6HZx;tTf+N9~p@#w8-T(dFvs9#Vfh9;rDvjY?H2=`}~)vYL35c z;ov2lmuHkPp*<|KdtbYG*)V!g=|A>_BM6xKa;?HEy`{H8Ojfy&bS{Dl6P)h1Xo)*J zc_mT|&&i3Zep$$D+1h-SLb`#Z@lmqaYiGz5hTt*cbK3O{jIEHywU2n(Eupo~S3P}M?==x_+O)wvjpmXi7V zzG6Pcq{d-qk!FILR&>DmW=eAXpsu>j~ zW}#afWJ=bo|6{Cjr(4C~80lML-u0M()}9Rp{K4-~K&~qitDc-(#B^oq9;aq6%Fjbd za%PpCv)dYpE`STt<&(>^xLso5>-CE+FGKP38|d)HMB)0D`0t|4Y82dl5T*&LDl-BEPy>~jT97A%yy76ORLF2UEhBXE&q?2%h9CAGJt(7Ip zE7afU$%$@N&hO^W-FsXrN|^DQNRD#h%R?uwQ|sS!)phYhp5_LUv?scMF!kzQJ`M0- zZ@b%}8u%`70)5MkpMovQWBV)>HJ5SmY8B$9{&u?dPtgfSninD*Q8{!+n?*-F2mcej z;X^)CPZ{yw2hFOU!ITqBBe0wEh`{mrS9 zU`!;Xyrj<9nMvb|G6B84wZreZdBqkTcUz}VW2?`6; z`=6A1UbggIlV&3)3S)ES{nuiCt9he>H=1YfK21K8-5by915Zzdql_%@fy9F+aA{fM zye5L{`Yx~7Ln&o%|I=Kzw6GTNzB*hJ7oZl_Z%fibGKzVcA!*gr>7?u3f5~491hqL* z4#s2C9ESA+XD%~}*mbzLy4@kOy+RiL{qGAPiCxqi=lbLRG59KRWm@4J&C=UD%a(4@ z4KmCUWv&ipX2VN3pltwZlk^J(;e!Pnf;5^w97z)Q_B8Ar%$WK~o z&ZE~;6i;xTO4sLYdV0t~pduybQQx+6^X`tij?)uO0vmDV$|y9!3B!=D;FoiCG|uAa zkNcMW{m6OHZFosLjxiuM(sDkcoUWN4I16KN=gy;~hBXOizxrK+6q%h-?wwL7}KJX;lboLgUwQ8Lua2wV1NY*dX?WFZG)KelU6ruf7 z_3q$HN}(*|iCjNCIV1nue2Px010PU(3EI8In)|XBH zYcwy-S9xo92IQ=K9A87%RpJ$`XDVGbFB(Y&Uc7o|Vom{Vr=b~8{`NpPwlRX@c2zlx zX-cPqCjUF+Y!QevGOu*ShbR4+AJsWGw~^+ZUmkVNaz~+QXR8s1PxzVYG#aE7A@o12 z6}6J!>&HKYFnnzor(4DeU8x9Ehg?AcQtr6Iq^^82Ah(h1Er&%NtnfJ8D|;E7BzNXt zi{n^X1mYSNThkwA=0)dgPqxr8?~dd8EnnZKcqVVqjWObKVeA9i&cW1eID`4i-H^4G z+=0lw)2ZbKnjZSLYUlJ*DI7@7^wY)6#lZ$UuEVP4UNIXi7FHU`@|l`+eY&`1gBCxB zB*`P%hx-mFU6-UgOHlZ(C#1(y#-1PzM?F4#>MrpdyWxoR~`Jm1A@^ub)`-)Q=apbQz4SD9^B{4$x?6w?i!A)zw2 zf^q!DtMufVy!Qx)Snte5^&ba93+7_dhSDT1?M*i85&Rj)8FXzb_T?k$ZB7Kg1*vsWs& zC2N~|FUec`Yisu$so^y=Zgu*b@P3kRggHNdVO%kU9U;HL6pgGSmBgN5{#Th}8E3}w zaH{f`yVXDRaCMx2?&?TDm#bMlY@ttE4xvTO_>87$u| z2+rMi<1C817Ph3-#?&M#4$g9c8PEk97dDto)&og9PtRA>$xW{bYeCC;E?`N*% zy9>=1pPk`BuOn!Lkl2u8L-LQg=%IoEHQ5V{JZ~sjHSb@K3ms3KIx5yaP;NLLy?Vda zR!H4_JLhWtiA44n0W?cWZ`nE7o3kU{+`eMe)KxG~|112_s{o*<6Hd5AGS}Rs{ozlS zwn-l~6cNcj_6hfc&y`z5#bb5I`pBYa>WxI<9%H_-;^gJGe&fxo%|8wj=7&Bnc3KTp zC&it~a71$=7e>20?lxqhllVMApxjL-_F58Vrq}Owidk~nslB69*CY7OK7Jd}pLV-w zV_swWF7T|7>Y%MybTS9$tD4f5*>jx%9Xz#wd7YJeSWISF)k^qOLw23Dgwd%U|9Zi? zd!S(Y52n6EbaMq3M6$;x|K{;owLU@bwCg0=7vNU%qQTPEh2S=IwV<$eX27DZmpbqz z8~z?dx>)O>JhpI!RguHnZo0{DLz<{wYX}~#PQ5bqliPyDCz6A`MZ1DGQNBNo6nRiF zpKU!%)Ccf~Z(oX?qaNOD`R}?bci0j~@-2~`ZBx`w6@gQ;hl;E{eSYqo|4V&o-AkM0 zs+6Y*i^2PW&jrP|6dcCfF6Rj}YpE`IsQOs5tX|+T>a-;{f1f*twi5{-X;&k@{w{JI zC06SpFzk2eTj;CM5qxCgkhX641Ap@OS3WXmJK`HvMJwTa>Gw^y2*kJTgwNxhb>+ur zlsG_b70|uW>uh`I7Z)mZeIp{07E%tZR##T~F^{`5g1SXoUnaa6&9C_B)hu1~2_lnQ zYtEvluFg`W{9Eb3Z;VzND9&;DZV^_r(zTb2{-YlE!c9+PP|p2I*TE?`s@6abrlp=~ z+Dj=`W}#6zvCRD%`)%S2e}I0#zg0(l0>@t?VRBldy&@e?{y~wcbxmpYBf*!BQ->VS zEm3a!`zzOF`-NU-;rDg>@xa4ma!d9RNDD{z9&eeSVEtRvT{h{kJG^K+RGp(AY#SNy zyTJI?*ae@dXBiZeUn6hxlXg!hEf zVOXMUUbNlRm!D?{_7mc3F*m83#$6Nz!&)A5ll)t??@abwA?WNk$PpyzTb+d1W%>cH zfcEz_4L3fdiwxAiFLKKiUF#pFuEMc_)?#qUV!^cNza;+Q?Kgi9IwZv%d0(h zd6ruA)GaS-BlfuBbNZ2D*{DNB$-{>V?JtJ@+k!D8hk0j(4%RO?K91>(rVuDd9UtD4 zesqrh=`=P(^a1a`H+5Rpn_8;Ww?&kx$J_fD9zP!wY#6S8RJpxIjG&Yukt+10>Alsb z;A-L z?rzFEK6@V|%92+Yh5hdUVmcc#&?1#%U<^%Il}!$R<$6u@?Z4v+@>M+gUn8_Q5kv9q zLR)F}bme7uXgRiWsa0?Yw#5F?(AM_#ajt6sS|R5FILCy?(jwD!VXf5k*t-e-j=$tf zS7S!qPpj*9J1Xkbm^EL;y$%Df&PnHU_A5dB2Pr_`_WvpGEE}S1!#_PBp(rR4ij;tK zgVG^NDLI6QNS8==4i$BcHD2EB)z(ZD$!QL2lK%N$zgVK;Ih}vh!{@yhzX!sE25FT3=n*+v zK6GeI%Ff2LI_R5!@m(&r4yjBMWQ<2i^~b86wP|THmEqE-J}hx$BaCBlje_!@u7Ll> zXnYYS5r9eXV$$Nl;W+FV*96M+BgeLr!^BI!-G4hJ_|=pVf1U;_p%GrGElm`mbpS4c1_K&;1AA@4q0QowQ9nlhnPP zGJxE8*+Y~^iV02Fc$s)A42V`TyRx4Iu@vsh%!c0ooXdiZBty+E_*3Tm5@uMd@5STc z&igqMll^O3S5d=(BRgAbrLV&<#whn-EvEU>UDXP@NJKfzHLnK$>`}kwpH1fTEBH0%x_!?5I?uF_6QiM{e*WP|o#K(=z!?BxW z5*QECD(ZIii~M5cEp<6hKb<=_jS5+W*q2UP*kj7>rsm&s-+%hwEk<^fOou(J!LsS6 znmntjQ|{i-(^hSa5=u`LqSqN6uUai>f0Ue%~Y}<8V>Vctd95`uj^woNNs`Ig*Xx z;p?rj-8uIZkt8!>llMd430GUX>zvh0L2`#a)2QyC1{T}Eb@*AA*suY(vc4_*P=wU>U=30<_^MDQ-re*T<5a^q86VD94N z#MQc8Ze+>aGyyWmz9y(T%`SrvJ4><9ytu+WJ@0yu_#cpA55Tlkumx3YtGT58~I7 z6{Q2-ZN5y6nBQmYq^`a7ICL@WX3gqS;kPHThQ-MpR5xqA848FhLnsTk0v#Wjp^UOP zQy=}T;6er=nfrA@B+ec9&_9Kh>_@ceVsMp}11_HW{~?cANE|g0|H{5Ik@v*@3!g2r`C~_%{$t-R!(twp0!2uH zAegUH4|(dzP9~-q==r_Fy7VW)H+yT#TS4Q^DerTOjE8Y~*H)Yi2|O+6o7k`ay}EJQ zQ`M})NAOt`i8kaPNy?rs#v&n%ZrcC zd9HB^usm zBp7?R+3@fj&44y$tO=7!q9wDT(1>JXBDmI$N)G3lylQnU9e`0M{Mr4)pGW-h%=d@f zF5=oeA|Rfsg4b1%+R%L`CO+CW=1F?=?HOh2qbM)J zo>OuZ-VHK7nv%fa82+)1D8JpO57h`N-U;8%I4%zJEU{B-s6D6`+7)yA$IPbawR)56 z)1X0D5}>=bY_7;ZZMx!7#p}k6-D_f1ffYY8(D=THA2|d0uttl9=D5H$Y?~3`Ks`Y1D*kh$nVR zKAKx?hp;`6;MyhERQd&?;t+n}2Rb(FP0Lxi5sI;2U!D-SCO4Z@PggT<+Ud!M5F?OS zv*?)YQ6a2s)A;*0oFA#<>Hf(nh+z>LOAgaXa}#Q+)-fdDVa~gT2qd^Jn)Tb4HDkl= zNX+&&`Vs=hF2)euSheBeE^jtiDAM0Kf7lv(Br7bGzA+FO;HfLh(`zC_g~Wqy7EU(^;h#m^=|9pg1XsoZf%_T|u4qHf2_j-!rI3&FW%4|EByurGS1#yH8>kni8cqJT(Rkf? z!btfx#>qpTNN+?{vqOOOn~B^)&Y_TJX#x#n#&F<=?8^|iu(6c~KGK+(=g1DESp%Pf6;QFvAGuurwAHkICD~cxgIOUrJB$E7rsUff| zKdBPiI%MeVBZW90*fKrm)neDstW}XCs!{*c{)|Xq0dHdkhF~jL;Xn+yd@cF(VqY?t zUt5ZdSQ5|^rcs}Jk+j~1bY-Kj4{KVK9+H%dJ`q9ALlh{Ze0zf0pWLLa(W^oZwoU7; zQ;(2KEp>R!zYyrz@n@5kP9lCn+!eCO>B!vm2$TCC^o`r(BKsqWn#w=K1-~eMkm;LI zPVHay!Z;@v_wu`ITx%mV?Y2j$<3kTv%*JHPb$YY}18gf!s1sl4;{~8_d2#)#+i$aR zgwpT&tlyu6i=-Mq`m!7!axtdPnJC6r9>m*B! z)>NIFvT{(cCNEV$V4%mnqQBBgrtwjq+Eb5ONX^w!6Xv=<*2OLC&YC5*5F_uA^%z3y zpF3iGiq1}UV&;Ahl2=NJ*UKPRC@sH(r=UG^O6>r;O3sTeq-``%l7=m0^vvyxGDiey zNcsBkg$Dhxd0r%O|JxVz&=rXL>=VPrQJMDBB0gVAz~@SypVG&7>4p9YlgY$Qm_13O z<%A}y=IVEMtP3N6oYWewDHvKsdZqAd%{?F~t69qX$-6>h;>ePkJ+u4(>8JLf zYJ^_->HCW>UCZw#RIpie*4Jdt&=lgr?$_bqp}UOdnGI4!|wjM@(J4< ztz6uD#Y=;#mio_=q}dJ@3_ zf{{+UFNNh8V{9&S->!&|JPBzNDsYO+8q>#7B{obJB@>&Hdz*Rx4nu1895J*C(?h?A z4k>YTbtq|OJyGra6pKI8$SR$9GZA6H>znn4xuYmYsVa~q)oq@RO+H2)`*)J+qOJcj ziljG!j9rkd<1G1TL*wr_mfv6}pERi{nD9^P*QnRutexNaw|}`b&E)w6zyG|=^&;xr zX4W9vdTg-Jg#`sUy-VB8ZtLH~vo_g2WCsT3nxgNhI}V$(8o-nJa6Izi-HYA2Vv#sZ zzBbN1WqQ?E*B{kO70!$>>OBw-#(#7AlAzkr`C~X)YblJoU`9Q3S>DmfU)?JF)hOAy z!uBru9z7ctxTL_-7M!YCuOSot!#AdA7e2B_-7*2ivG7!QV0OtN`=6p(YD^zRGG5@w z*eO4f)=-0sN4zkt_>Xh^?=U+xn_is{vx@A;3aW1S<+R zU6-quhTCYjP?*b|1CaYH`C)>n3G!mG$-BR62m%q8&h ztMU|v5;{p>>M3g)*t>hTdH1TYUK6T<$WcW? z?>#D0sg0#Ir>6nIm_b|k!G*p9@-3N*%>$Sy`EMc4_hoV6ceH@NB)l2B5qcQD|Mf6jYab?$ zlp@eX1{P{ERaZ@*qw4g&=R4sC--o!W2sUh;y8<|{XASZ31~K7|uxB-`aN4O&ZW!W! zwt45?`9{V|e1MwW^H-7-z2i=bKfu5`BjfZ5|#1BtH=;QlEKFP@p zt)GY8RkmRlpq-f0of;oQf5(DdOEsMH7+uo5gQ#ZcS{_;#s^#4IvxUHXr^ zmN5dkxkC6DH#K{@<`YZjA<+jOd%S|5l(k`rM zq=_Tdlz9l!Dx#V{yy=mz;ol(&r06T}vApH*;4ZpcX0Yn!7qj{MgSe^Ksq~8?AO86K zo^{bHp(6nG;MB|8w50AqA|B(lQ&DIHG9d86^^?$ygRC;+k>kpUl_c@efN8fx%gQt9 z{-$hSmQs#vJ12HNucEhCrWxZY=R$4r= znx24iDnJ@(if(?$9vs0P6stB}r`$0Wa5l5j%cXI+s5s9yt~{?A;I=C?sIU2s;fge} zv4RdMZF2oLg`o`c>D@I&W!%KyAK7O6uF`Bpa&y;5nB<1mEXE}+hzK;wQ)YTpH3hwylX80})5vz#4CF=O*Z&aT|?!P8>$H}$L zD~7XuuX~v7H;w>-P|`gzwp1f*s_zb`niuT{b>GYBoORPk18_k+yxp7YFIT2iq2;fx z#o@DC#G3kHp4DFaRbOht7Ejy^IVk%d!j4lUj!9VOSnBNkK6}2Xi3rr6U|i2x2eTs+w*HS&@ImDR?N*i2A>u5%xF~F9>yEN_ z6@wj@@e&)E=YM~ss60@m8J~A??n>Noe9yv1@1j9Re^?YwV7@F<(!)8Z<2EBCQ;cfTh#KTto0S?mCjO#KsVC*j($-ZUNXazov(yGy|wMjH+)ZE2WXQKvp^ImAS zs_=xX`W$E&NgK}8gtNTvW+_;Z_U$N)<+wzlbl&N1ljrtOT7zThUbm4R4;kq<^*m82 zy`-RRJwbB_X#xVE8t4%Gl~;E2vy!%|QsA;T_Cw9PZUSV`nf;b%S=E%wLh%OP!yyGn9fM(p&tH-kFplXwl+`wEnvOt7ipio-I zczAYJMB2v6{afnMf1`zSg0c2gCRbH+4oPw zb086EfOn#AswK0AVFZHlXf&6?cF~rV}Q9(N~B@Ooyc&^~z415HGaxBst z+1U$u!v=Whq^ z{xa+G^nnGRn1~wJ`B~e9E8<(UR_C`(hY}_+FUwLYU&2BlvN{- zX8^3cBt3;ed~e}$r5sYFa{1Y8cai}E^a{5p9qv)uMWSvyoz>8Tl1F_+{oBYIYh!tO^OC)7CL>?-3CGHwj$5t1EF_AewB- z1xM~_eHD-|F4`B>b!J- z^}h+qfR2Jo7HA`f@g8X&(>5ybRZn50nnh8WLcVe5xA9e zH)o;E7iLET)gaU(2uWZvju%WF;T_U2@MkL>o?!x&f!{41Ins0v>;i7AeD%lcp<@tT zv}3lo8g57Xy%o~El0+1MU6D?!ZU!HN8H^`o%DR?*lyXmJ`0A=1W{(6$VZyM~x+KwM zk3i^yGQ8}+>0*NT+(?SKRgWidNKs)h82@N?*cN|K>&L{P%|Y9yrFRl>4Z*7aMp;}q z#JQndF;a!*uJ^mH)2nK_9%F;_lq$3_TkyVMXFoSe=w<U775fFh6^< z0X}wa0WJJsYRQE8*?(J8pj3?#HOTD>jFWOD8RQ>ileanH7&1XvzxF2R?ugIGB~L7Z z`gGn4Hu_>~Khr%o)Z?9W6-LvF87^roq^5lz4z3;3$R(TGO~S&`m!Q9Zd|rFJu8d~n zm+tb{@3(8F(%;&stp`Kv82!__HiIo!d26zUnZ!+7D~C?hm2IWY1TTfcgr~y&w#*Ge zmimRjW+QYej5AlJWhk3cyn7MAIFh%J6c{9m&0Q~vtUwlyD&OS>#fN1jyOhn{la%+_ zMfX5nn6TG8I{4p$bY!3h>{CIG)|RO0*>K&dZ*NO6Lfn)4ai-s6S4-h{E8t47$Dm)= zh1hb}LsFb6gPIy!-Zyve*mA*mKpQo$86|-|I;d{~z zFZ?{_Slw=aQ`@nhXYbzJt>4t>xxyre4#J}WH(&gG@_vzq7%6%BICp}{QG*c4)4Esa z`1G~m-S^o^KDpPBzkVN>2Y8TtIU<%JrJ=bU_=w)7Fk43xPhQD&`juzDe4n!`^HEg? zzD==B4Vk$b$;}2DsL2srv8fGb9^Z3;UO4fzvprp^BIgflbZgQDf;Z3C4RlNN`_lC0>4Gh|~XYRy2&|o(-x-CqwGgIG@Uz`|0HB zHJ>^Zx2f!)OQ-Z_*{AM45+^k5d;8PmNl#xmsHmB@NRc%o-n^QI^c^YRJTX~548a{+yg z-(81D!xa(zpFOtMMSk^CSugcUdoxl!(-pfXe#HCuochu4l4_9i@PTkiaz9SL@3hVbmV3II zk%l*()t0udh`Tp^6GI%_y5lxGJu@6#}shIfBiExqbKvPuLal@ixun1m*{Om;=N1tKLQ^a%c2LkS^4j> zbJhua&q+M`O5*CkCM}bQbR}zC+;}n=j#)54?}Z%ZYuN2#zhN_K6%A#%N1v0nL6u3L z+H5FMqCuy6S>q@6ZOt2d{PjNrn_B~uV0uSnU5$**_u<4e%%%}e8G|DkWU%3?k$i=Z zBfy+_bB`S^F8q!E{GO!dO!VVaKTODq?bgiz&FOlPasuA8O#@SkRMb5L(G^cRmYnb3 zoy`Ek&L-&mD-(HAu)wxS>9h7IIY+sS7K$%B0n4GILD>)E<0jHOSrUVCJ0m_y zp9O7lrJ^!(Q+?x*Zjo148lt*K;iNua41^+akqxstq1g>4wKa;dH@PL>1!gx^4Vgql zn@)S}^VZ&7x$b37jN2{wdBey5im@~1@?C;+J!|oF9TWy z$Z|Eg)aS65DEQW;t03ZVa0@BPBUST5%h@k5`(r#)POtfA1ii4tdspkf2Oj&G zYOmdvhimSKnX7}J|1^&F_=&ea)Mx3bnC)DHbbA3)NR=%96wmeJQ5)v|+`^PH;0LpB zDisyOs}RiqX}9#?Rrvcc@-?c)f6pv1+c&=N!LC$mIRAgMy(|y)zSx*g77_$*3CT&z zJi^L;beBz@NNsfT0ya}%-Wct1G5$qjl|_sg*@Q$T6BF`at`NO-<&(M#*lLn*MQged zj*TQLBiZAI|6slN{yMrA1SCrU`Tb%8OHq3841da+j?*XwB+~9UF4YJ1Nu1qZlUWvo z;ogZ!xd&Z?0UQ;?3u#}!VgZYV@YH^8+if~L{sRat6teKWWnQ@shk^YMq{d^`0T;Ok z2#bTeo3eW!>-Bv<%=uO67+FHk2&%fB@rA;Zgmf+%%xqN;)5cfTW`Z9U!T*n z&BGqs^CI+u+wy{z9RS7*7bo~@>NbNHx`5r5d^k{0;o>>v2YVetU8mgffoJp2SF*wy z4Jb_1n*n7>>IB<*cZ2X6gC^{kF3TAcleR5^GnLDWItT>F$+uD3*81t#)Kh2yw4S2N zy>IIL9SD4al=#1>DP5O88I{|v4XcapveN^768Hv%$6^;nJ~IILZU#Mm`2PDC-pFkc zr&lV^O4=fJT@%BFC^^M&hsNxfz8EoXnu-UC+iL3{D$*mp_4U7yS<@?*0gZ3H^yP& z0!woh<=+i~e&Eij@S_^9_M}(TeL|2tWbvoEpm%#I9_ok&^_OnkV>N}xa`;E(iLK9% z!WtCA$2M47Kh;&l|E!;t|1qQ7JOPd{^@(CinB?iq0etn;k4pQw+9{0C=^==1ZhcER zqe_$g@YFr@xY|Q8QHU6bl#QSg9}W;REQE-tD6h}C7e*_P(z=WnF%6=(ZF?iSAt2&N zrDIisd+yR#Cj`_W;*g(Py=dDxZl5ECRz4ycvD+iMKHjzh{@jeRSY(0G`PmEHx1LBh z!Bah`Z-s~v4*cUnzvu^t})Z_|{TVtZUVv2CnfNIWk>narckPJ{2xXtUpIK`G=1=r~z5>@$Va-}7pl6Ibew$|J!lkV=v>ofq8zVdE;grOT9}GosZSGcn69a8|v);y& zpf*~J;IOj9QB>4FeM0#S^9+-QhG<(X~i*s&Iksm;A z#X>L)sBtv!0Ouh+|Kxg~7zx6zUq-Tbl*@m0)ehEo=II$=bc$c^jZj>m&Uf|yy>(6?x#ZV9vcY z*;9Gf=44CqqG?V=Y-2*e=loQUJNyD?IZV{1%{10IC1i?>*XSUV2DU@|9U&!ABhE|wwFcV4%Gsw>&j0$| z{(i;Z25nhv`5t{dUl1fU`crB;`YP=MkhM~FYM#e@azMnLEG8g)dursh?BoXJuF-xv zJ78CumN1gupOVw%i23};SeqOG75p2q>#rZzb96Nijl2v2@n~QcobsX0zopE?NS@_r zh3`cwa5bfzJ1MlTV{8YcUJ6y~09a|6J{Ivh7*yX)&O^kV?#c6{{mnVGl^cS=Z~psO z(kmpP*@w{kUh(Je6-qn9FoRuvP(XI-!pQ4ZgCj0p$M9`Q98JCfQ!JNv;Fap&KDN_= z@B64}@${jN>Ans;UjWG9fr}$WdG*Txlkr60^GMQNc0Z?#oSZ8SC+mcmbGAF(W_GK% z*yHwTjnzj5h4m7FA)6huEW|Q+Gq0uR&AGq}OnQ~d`PmTrp6??wfbHJc7Y1-w2rTtG z=*{9w0;2~0i3d7WMga$je>imN^Sh?5mt7(fLUbkNArN-EN`f<>{M(pvv2zQ=lZhwS z0snGP$n<}aXTje7#-Rx(=xtl>>ITU~a`21nQco-T|IITH6IC1vfypw$j^~VGN zJz~T7BCDD7X^e{V>95DP#oT!I(LO$F-$y1Zw_B&O#Cksno)g9Dda!O(TQY&_vHbj8 z;<@z9Jakf!)K*RB(Oy1^bAf*hoWq@c*?UQWl5uD-xMS9AxWc$$b z{dbhbulnir%Oc7*He5O!y(c|ZIh|ZwI)UglxNsI*^qdR9$P^W*VU zm~U0}bVKv6vEkP-K8KeJ{wc*c<#xA!>6ALRj(2SMO=B}A$1iHD@Mfq%Y9GlA>aCe@;%z7fnn8C+M`sW z*V}c>!rZEKnF*m733xj1L5+f&9n}}6?%^4d`upn>3pHburmmkmt4P$<<;FO>)M{u8 zn~8}p9kd6v&2a)$X~>WpAGa;XdX1?fkI^Wv;MvYWuirDxj}oIaL-kBjoLcRxg5c#} zp5^HWvF24=Np@Sa_xe81E++0-4p(9JcUR%B>yn2Et&3wVK7cipm6hF#MfV9>)1~YI zQacRMNaN}Ct?Ptazn%)g~9^uAsA{CO;D!O~XnR!(OZ`~9Wz z?#$SeklfjR?QgY$Blw#Q;U^n)x3ZF4Jo;$6mm&kM;vxhlU(F4ABed(~!q7E3v`YuT zEeuArX=yHk3bvA7S=XN1pK`5Z2QzP!qp|FJ^OC_>dSh(2z{oB0dQgFRdZe;KyX{uX zxMunVO34hF85tQM;hgN}`H48LtF2edFEBV)lx>mJiU+@gC8LwHrr~^{@At1?2!zn# zmrH8pC)>=4fxxw!_B2oALfD;MoXPrl&ER^Ytn1G`9&8*zk=B>Js8SIxi=d4p)54P*UZ1A{Y=@8?EtdOOSUb)~3ovd4W=11v@}G&In$()=_y6_KUc+f7FvK)WLT4Cv?mbC8O!NHael7?b9-WvrZ5Y(7bV3 zsp@-K+5NYmpUn0-WuFm17~kRC>JOZoSopdZj7S1QSZ-cHE05YM+%3<2p&Yewts^hz z-5OCnx}4;0Ce4+G=e3pkI&qgCIx9U8K<6(VEdUPSNRMVSyd%G^WGUHmS^VHs$>oo; zmQ}^X{wQcv?}1&30UqAzd_)Qh!fQ#C*^+}i68KU?lJ#5I08b+DU$y*(w*|58XcW4r zc85(|uz>tzE?j&=Y0Z1?gCHMGT3tcU$@y-dl3X{P_M5JE@4mmXwA{V3CEZ``tURr! zmEhnh_nyMOD7!r|aEw;ZdqES?SRTnd7m;$R0gyBHKFJI2anDWh!#Fu`J3lY#Ivlk$rROG;q##!^ou=W%EEB*{8~*#-Z^(^@+uGV0%?^UoIsE3m`IYk# z3Tz%bBg!;6OZ#ZsNJ`sN-G;FCzBv2PNtE3F_{)liREflbjT#y`ptB7a66V;KUdZqm zC7iD@{le3Ym$nuz>eVXtk2h^=kr)N;8nfQP4}yQ5V@)ThHw0NT+vdeYcW?G-YMKEe z-LSYQS5e8DaC{vn?zNcU#6NuQaD%3{tJW2$gAWZSNiRK?xqnVDt*@^i0>%Odf%^A@ zpa1n&LBWJv89;`LB|7Z5)}o8*HbmAHl(y~`ysT0~KwQPN;A~@Sdkc|$TVrNQLiu}! z)m(W;p6VZ;sqgS~jbr;pDvLbn>gxIjIJCi~l#5vBAA}8`=IYO^Ju#4N$!FfWoS7<9 zTF>%d`dy#&p-r$VWo-@bd-YT1f9Xa_z*WJwmcUfJc4Tbw(nNu!XU&-JL;)_zsn zi2>U#mlTsdHd~gLzM-X>MyQnfSHf>x1dFI6u8q#b1Zj-2b=z|DLFDisOxUvpyxESD z8V;b2(nbLupmziZ71aP32vdyKzD{sX@3zl{s7hh|@rc`Yz^!?}W&!N_=z?HJUKjaE zEZk%L`^Z+8{`n)W%IQbqJMC#|dU;K~>6(oicJ6!MN7RQ8RD6yjUpj2dIKV6aU1s`T^U@`+JzqPhK&u4`vF_o@9P+G?fDB2L8mv-eQ6 zRwo!f?u&zji*Gfn?IODyHO@>M`^i7VpVU|`c87X%#zM}o&?|A0U#sFsNlA&+K|8Bw z=acGjBj}t;J@+9^4+tj-pBrFK9%x$A&PLVs#^liWr^ml{c7}U@_i& zCEh$aex#Jz=d_~0YV}qOR77S6HlFl*S3BM9ihfx{H_tBaExlKL@w@qZCsSw2%3?Fp)ci~r8{dFAR|)7llK~~cpJf)F z`&|xMXrNy4pibRzefRf?#Qy#A*WHL>kKt|${KVjS$dSq_RTDW-NZ%o=p!bWY;%Wdi zHshl@`}gU;0RYBeOiSJ1cBNc5Fc%JGY*((T3-wA~oUQ=joHOnA-e8XU9AFJy(7@2W zLu*?7A{aZhJlHXw;)XNZ!_P-K9l@`$g&GKI?(Q(gzO*`nIIiRJjZ7u9x{uSacJ+X= zs72B1Ksl2$gu(W$5c|`L@DNZEnN8pHYC}N^w{>KmVtD@MXlJr!vopzcB6`#X-LdQw z^XyUI6B#=P-*4jKrrJU?ha^_SO#t_pkB-$Rzwk~P#Nqx_$$aO|9SmLsfbLvXOyoqB z5c=Lk6feZ+m<%?Sz#(*;o#ue|3(~|9ml$v6qZgLv&JN0A%lA&A)a&zn zbJ%u&J-*(W7=B~ZdfulN;zNRj&kv`%L*CaUh~(Vw_{T7{YY7s*39fS~foyCYxqKV% z$^G|I_kbF~eFci6WU$Vw03WiL;=UMPu&}UjN!`Zpcs^n3)Xb|lQFtEppH~P&|^jgh+In4VrX5w=VxfK5#HG z0)z-fP$0Q~-{4rnGi&}5hmP4wfj$(Nh9SJ|^>n@tWef48M8~@I`*U%|PV?==mFLx~ zoNkV|YOAjg%o6gQM6zwlwp;IfZPY~=oW8w6(KXmVNr&Khr7F|9>A=z8gPyNL0c6QJ zzo39nj>bJ*8Hy#wK6QU*LrCDkXRCoiRwO)|*rFSi#ued7^7rhPs9m4?R^?(C?@u-n z=;2`u{Q-z{_~jDkC&vfjR%lz`zr3=tYJucB>->xry&Io0RA9Z3Okb76`0||Onr-@o zaE4lAd}zvcrAGVgw%aNg+l#5);gPz<-Lmyd!zwY*?*``6WJTsGw^uKKHtTG{vww%)6%;Jg zQ{@+Lj&?Z_qb89`>ax{XB%|1kUxKCFKUC(4&hQ--E)ORPJI?!^Y{mj%^7QmpL#TO8 zUpZR2)m24&sD3w06skd0qaFY+ne(rHGIew^MO&=rzOZ1Tba?$@AYM-u6F?Hz02ze? z;jz;(Rf1vOMUm8HwlX0a-ItO{PX6?vKJQe_2~cJA^~TR}79B{RhZDLo+hf0~ARf_i zoN9sN140c=Il`c(16^goc`j$qbv>w=U5>qD(YE}9&-pIxFd$!UdqSPI0N^!462JwX zJK3nv=gZO^aG2Jma_43PM&Y@^-pY{nlqf0aVi5lW*qL{GV;xWW(uSF_w#|YZ8UHMo z-TC#+c2={sr*(Mmd!>e|TqO%1#j^1Y_fa|x)N^QQ4BH;Cs{h+=OZhtv0MW7<-<}7+ z+kot<@`n!^QYxyN`G^qXgQ<&$rx*;`L4QaB`=^^4?*2)~zx*#$Y^s+RpYKa5?=@b! z?!={UhJ64GqQ2hm;rQ7v!< zWC#Fd^P^&&k0v;C+btV_m{{NP$NVgt3IUG(O$+9QM}kW!uBg+^>td?gn}U-c6Ks#u zoS}N8JYT&D9OC&U$rEiW!1CUH@VX3e&@Z2O6Y6%1lzz{^g>;o|b*@0Sh8zm=N>$dQ zzrM1f?+RBYd-XjKUXa#59BIfmeEjY&@LsI28i5XDIW#h23?Eeukmf(|{3M-8O}yWF zDo|c_pMgBYJ$%{8suk?}OP4Orik4oH)%-)SByn!LJ%R-cVM3|1pDhd5#g@h$MP|av z6m~YdzepDr$Ofz=xlSJOKTdNvLc9(3hbrV~+9lyrXONX+!ofeWZ^L{NqZ&- z?6bR~8)cEo<3>iZ@*{&L*nPoL3zIvGljU|?GEEbDx;9fl>`inY)?T=P+rnc%D=ogd z_H9nrJHkc;rT)_XC)sugS9LbV?}U6nzhdxg4W*!f2AKfrbna@`vw{}^KIaV=Bkogm z2d$GHmW7AwNaJi{-oS z^oXrZp9VVc<8iJ6C_r5?PSFI5D9Jh;vl>ZYO;(VO%2m^o53Xm zgsJ{gjE?m(JMQvkRA+l#`(G&ZH8qOAfvDgYpoGr$fIKci$!jESW^ceIulyZXaAcyc z*J@VWyj{2S9v~d5SxJ%8Tp?e=yU6sA8dk@H*pNCmQBOUW zdNkwu`Ie*rsmEAO)=w4Dy|P+vq|ZX=-!K|+rlnn50YiSk0~Lh<_)jpV;CTr);@9w4 zObM6N;fUi!FcuUesp8xB4{ctzO&>RPEcBFEpEd9kzuH)^hKl7u@1fpLFm(B2Vpsm*&<$g&UO&;{9iaNQf z|IQvl2u5yeZ7rjzNhXa0-G`5IW<90K!V6I?(@l?0EqF&QvXa)>3oH4!=%HXm=mb_y zrLv0)+xuMqf=%-8v_A3{^<>SzwwnLOFlvF%B+#J~(o zfL7}EX%v7^R$2LiA4@h?F1W(iXD0!k%VeT)uhU#Zcmkgm^$M%;FK^m<;rV{;Zr`fd z=IO3TxX|gA6r{Sf4_wYlTz-x0X^`23?MVzA1exn3%Y=|$!7!O0)u78a(y(>)ziNMf zO$Nyy?K3ezIAWM@Kv^uJhT@*L-j7CqHukM0$*D1W$VZ5d0h~AgmL#mGayc_W1llKC zQDyPlB(1AZ|BS5eDGja6x|eRQtyk2cCRnt00Jr)uh&kykXZh$OK_IevrmIidLzCce zs0gL`Oj9$*DCpUUhNsW&s{TbT6#|3Wia<{uy?CaVDOvxwjY127_!b~}_D}uK>n={~ z01@VUvhk*dkcE_ksh{_Lgf(fd^YjYrB=|W4(TbNS*t#{$9RWDyzZQ59E9D>)RJppX zhJyijp1!%tl`WgRtnwfB>^5IF)z-C+rva>8dqDa8iHW*vYnJC_6-|+ojQ*P z;PA;-DW?wK>FR2d9qywb12TdnCgwXtB%|nbYtcq4cEKTINTOk$BeS|XFZhLaMGxjF zPeL6p`;U_pLb#T81~$GYJ}7q-Qw#+#vJ!Uc_ntxLKR ztdK(q#jlpHfu;)V;O!9^?8#7-T^y>SC3mH-%4g=qZe#a+~%G+Sv)_qE*n` zhWI}-H6sHTlXl7dI(ep`a23h}uU*w%Wd&wHU-XrYjjW6eF7!sAXUbp-K*&+|rKI)F z&g3K^p}CDoXdZpTgO-~uyG`Yc-~s}Z8P-8Xpkf_B_jOMzCn3i=h80&qyblyAdC$EM#?|*B(SGi^R`TAJekQDx z|6ARm7&JP+#c=6<-s`*;5bo#s_G}to(#;v>0>ljf<4O6pjw1?TbTaMaUV=0t^e;DCwjkX~)w8p%fy}cem&t39fQndNFm_DtHre9+Rxgzxw;bAbPJBsPpKA z6A~GS6&xwATl{RvR#>~!NkE)#RRmR{AEQujc(x&?clwUf<`pd>4+On2%W*zeUPD(mdT-C!mY+=9WB1$z{|IoYF9FPa9Gq8J zoofV4Zx3)n6@?X(ab?1{J4*R<#it;grp5qHMa`+aoreBEMTHmQAJ2{PsuCy&6r6%9 zw?MznE3nEsCqopgzb1bD>eb=Yb<~!>)(<@*fNgocg`(~#X2jzXB#6D?KlI2utvjPw zw_&oOsYnAk^}{^C777n2<(nRQFx-$^f6f`$F`(mY%z*r|r2*8?~$A zxC`1^Poy{fN#vSiuW*(z*vcOF=5H?RFR1Jqu^s>ywf;LKGHnoG^$vSIjo*Kpn_6G5 z2gpBrsHuDx)Ug+f);!T(wv%N)j@KB&^1RzsJ^}gG zP59E6OYk?f*Uc&rQ=AW~t2_WgIl4q$SvZ6L?5UQmHPHP$U=F2R0&}MZvQ#!5BDT8Y z`E^Es?Kin`-FxEVdw#wm;F&O&nGpjS9##^ZxZf4@MzC{oeHRlmT8plish`qb9GV}& z;7j-p1lPjn&<-o70(zpo(14nT<~Q7Rs6Ki@rPu3AMn-_SF)`DB6J6PsFjR27{I@@? z;xY(ExSlrEbggH<){fcrtoU5h@l_YvK|_E31OX&?Nmsx2BZqFa27&z<9PDES>0(H3 zZjJk`!(2(YYYnG@|EnQLlZJTN;42D~XWo@Hnoy$@&JKQlH?TPyxS6x7+-E!?WB zUFDFGuTwz;J!I9T`4Typ!q|otrTzHbwSM>}OF21wFt4frSKK=%BqTfpAY?vdQ;?- zY&%%3oPP}8Q`?-)Kush$J@)>WH;b7)m6Cap^S%CbxSVw!gh+u2&0u>`DfMkt%{mA^ zY|MV?-39>6!({L&{s&{0MaIo~L@RawJ~>s?*CYr;uA+c?P>_dpNl?7?Od_S>Yx5RV zxi99v_!D{1!)cuI*m3hf&28p7a6^lAAegI*P3D^0$?Ca59KfiPar;7EbigFI4cx%~ zA}nSbB2QrqwCid&9;Fq}-zkWY``!~$mLtKH)kRvC=B7w`zXQ;jQ!L&OHol(=tMI5} zqWtRDFa|~8O~6upyYki-z)l+c0{HQPzx`b6`i=ck)y;X5S|GYel@q(+tp}_F=h@8` z{$Cp}i;ukd>}uhhrj z2KssW)j)CERp{*BKws!jBQitot1#*&qb^3Xc?v<6#{dK=TY8v7zICbCee|kSouKFb zS_VvI9bpQ&qnW9xsUm9&bTCW#3WgB$&LUGz=c}R9?jZ$l^8P`5Kwr`?OGyZ>AR%)T zLhuu3%blTZ)4BGoSH!XxP}k@mdNeDdcpEZi-~sav=V&j4tN}AD zQe0i_;WpX@usrEY00g#Jz+94+Bj^^eF@GVy1#eihg@LC*Xq|Z(gQbjY)+5JE7fJ?6 zr#iy*yufsW7L%QRKj99j6C0GgT^Z{O(AihNz!O&tfnzP1INYAAD9FvdL%z=k$A+9L zD=$Z#0nQh-1q;32XTo{p?0wqmPjG)%L?FHq9EA*G7$UgI&!0bIgM($cB_;NIfN0f%9BFoyQ6VNDeE7v#14LkRK8D=1gdG3P zd}6i%7To#2Q-yE}|C^TxV}}2ag6;oJss8`^DO(pikUjIwm$BZD{p E3na0}fB*mh literal 0 HcmV?d00001 diff --git a/web/public/js/components/server/ssl-certs-box.js b/web/public/js/components/server/ssl-certs-box.js index 079cebd5..49c31d99 100644 --- a/web/public/js/components/server/ssl-certs-box.js +++ b/web/public/js/components/server/ssl-certs-box.js @@ -1,5 +1,5 @@ Vue.component("ssl-certs-box", { - props: ["v-certs", "v-protocol"], + props: ["v-certs", "v-protocol", "v-view-size", "v-single-mode"], data: function () { let certs = this.vCerts if (certs == null) { @@ -26,9 +26,19 @@ Vue.component("ssl-certs-box", { // 选择证书 selectCert: function () { let that = this - teaweb.popup("/servers/components/ssl/selectPopup", { - width: "50em", - height: "30em", + let width = "50em" + let height = "30em" + let viewSize = this.vViewSize + if (viewSize == null) { + viewSize = "normal" + } + if (viewSize == "mini") { + width = "35em" + height = "20em" + } + teaweb.popup("/servers/components/ssl/selectPopup?viewSize=" + viewSize, { + width: width, + height: height, callback: function (resp) { that.certs.push(resp.data.cert) } @@ -51,6 +61,11 @@ Vue.component("ssl-certs-box", { // 格式化时间 formatTime: function (timestamp) { return new Date(timestamp * 1000).format("Y-m-d") + }, + + // 判断是否显示选择|上传按钮 + buttonsVisible: function () { + return this.vSingleMode == null || !this.vSingleMode || this.certs == null || this.certs.length == 0 } }, template: `
选择或上传证书后HTTPSTLS服务才能生效。 -
+
+
+
+   +
-   - ` }) \ No newline at end of file diff --git a/web/views/@default/@layout.css b/web/views/@default/@layout.css index 62e9d00a..a9458bb2 100644 --- a/web/views/@default/@layout.css +++ b/web/views/@default/@layout.css @@ -57,7 +57,7 @@ .right-box { position: fixed; top: 7.5em; - bottom: 0; + bottom: 1.3em; right: 0; left: 18em; padding-right: 2em; diff --git a/web/views/@default/@layout.css.map b/web/views/@default/@layout.css.map index 0a405066..57b91c83 100644 --- a/web/views/@default/@layout.css.map +++ b/web/views/@default/@layout.css.map @@ -1 +1 @@ -{"version":3,"sources":["@left_menu.less","@layout.less"],"names":[],"mappings":"AAAA;EACC,UAAA;EACA,eAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,4BAAA;;AAPD,SASC;EACC,qBAAA;;AAVF,SASC,MAGC;EACC,gBAAA;EACA,kBAAA;EACA,4BAAA;;AAfH,SASC,MAGC,MAKC;EACC,kBAAA;EACA,QAAA;EACA,OAAA;EACA,kBAAA;;AArBJ,SASC,MAgBC,MAAK;EACJ,wCAAA;EACA,cAAA;EACA,iBAAA;EACA,wBAAA;EACA,2BAAA;;AA9BH,SASC,MAwBC,MAAK,GACJ;EACC,8BAAA;;AAnCJ,SASC,MA6BC,MAAK,IACJ,KACC;EACC,kBAAA;EACA,mBAAA;EACA,YAAA;EACA,cAAA;EACA,YAAA;EACA,kBAAA;EACA,gBAAA;;AA/CL,SASC,MA4CC;EACC,6BAAA;EACA,0BAAA;EACA,8BAAA;;AASH,SAAS;EACR,UAAA;;AAGD,SAAS;EACR,YAAA;;AAGD,SAAS;EACR,WAAA;;AAGD;EACC,eAAA;EACA,UAAA;EACA,SAAA;EACA,QAAA;EACA,UAAA;EACA,kBAAA;EACA,mBAAA;EACA,gBAAA;;AAGD,UAAU;EACT,WAAA;EACA,YAAA;;AAGD,UAAU;EACT,UAAA;;;AC3FD;EACC,WAAA;;AAGD;EACC,aAAA;;AAGD;EACC,qBAAA;;AAGD,CAAC;AAAW,CAAC,SAAS;AAAQ,CAAC,SAAS;AAAS,IAAI;EACpD,sBAAA;;AAGD,CAAC;AAAU,IAAI;AAAU,IAAI;EAC5B,cAAA;;AAGD,IAAI;AAAO,KAAK;AAAO,CAAC;EACvB,sBAAA;;AAGD,CAAC;EACA,iBAAA;;AAGD,IAAI;AAAM,GAAG;EACZ,cAAA;;AAGD,GAAG,IAAI;EACN,mBAAmB,8CAAnB;;AAGD;EACC,uBAAA;;AAGD,MAAM;EACL,sBAAA;;AAGD,MAAM;EACL,sBAAA;;AAGD,MAAM;EACL,sBAAA;;AAGD,MAAO;AAAI,MAAO;EACjB,2BAAA;;AAGD,MAAO,GAAE,OAAQ;EAChB,+BAAA;;AAGD,CAAC;AAAU,GAAG;EACb,yBAAA;EACA,kBAAA;EACA,cAAA;;AAGD,CAAC,QAAS;AAAI,GAAG,QAAS;EACzB,6BAAA;;AAGD;EACC,mBAAA;EACA,2BAAA;EACA,gBAAA;EACA,uBAAA;;AAGD,GAAG;AAAS,CAAC;EACZ,eAAA;;;AAID,GAAG;EACF,UAAA;;AAGD,GAAG;EACF,YAAA;;AAGD,GAAG;EACF,UAAA;;AAGD,GAAG;EACF,WAAA;;;AAID,UACC,IAAG;EACF,uBAAA;EACA,2BAAA;;AAmBF,mBAfqC;EACpC,UAAW,IAAG;IACb,uBAAA;;EAGD,UAAW,IAAG,KAAM;IACnB,gBAAA;IACA,qBAAA;;EAGD,UAAW,IAAG,KAAM,MAAM;IACzB,aAAA;;;AAIF,UAAW,IAAG,QAAQ,KAAK,KAAM;EAChC,gBAAA;;;AAQD,MAAM;EACL,aAAA;;;AAID;EACC;IACC,YAAA;;EAED;IACC,YAAA;;;AAIF,IAAK,IAAG,KAAM,MAAM;EACnB,4BAAA;;AAGD,IAAI,SAAU;EACb,aAAA;;AAGD,IAAI,SAAU;EACb,aAAA;;AAGD,IAAI,SAAU;EACb,SAAA;;;AAID;EACC,2BAAA;EACA,eAAA;EACA,WAAA;EACA,aAAA;EACA,gBAAA;EACA,8BAAA;;AAGD,QAAQ;EACP,WAAA;;AAGD,QAAS,IAAG;EACX,uBAAA;EACA,wBAAA;EACA,cAAA;EACA,gBAAA;EACA,oBAAA;EACA,8BAAA;;AAGD,QAAS;EACR,kBAAA;EACA,gBAAA;EACA,mBAAA;;AAGD,QAAS,MAAK;EACb,qBAAA;;;AAID;EACC,eAAA;EACA,UAAA;EACA,WAAA;EACA,QAAA;EACA,YAAA;EACA,iBAAA;;AAGD,mBAAoB;EACnB,wBAAA;EACA,2BAAA;EACA,2BAAA;;AAGD,mBAAoB,MAAM;EACzB,kBAAA;;AAGD,mBAAoB;EACnB,wBAAA;EACA,2BAAA;;AAUD,mBAPqC;EACpC;IACC,SAAA;;;;AAKF;EACC,kBAAA;EACA,UAAA;EACA,UAAA;EACA,mBAAA;EACA,kBAAA;EACA,UAAA;;AASD,mBANqC;EACpC;IACC,SAAA;;;AAIF,KAAK;EACJ,SAAA;;AAGD,KAAK;EACJ,UAAA;;AASD,mBANqC;EACpC,KAAK;IACJ,SAAA;;;AAIF,KAAM,MAAM,GAAE;EACb,WAAA;;AAGD,KAAM,MAAM,GAAE;EACb,WAAA;;AAGD,KAAM,MAAM;EACX,mBAAA;;AAGD,KAAM,MAAM,GAAE;EACb,yCAAA;;AAGD,KAAM,MAAM,GAAE;EACb,mBAAA;;AAGD,KAAM,MAAM,GAAE;EACb,sBAAA;;AAGD,KAAM,MAAM,GAAE,aAAc;EAC3B,mBAAA;;AAGD,KAAM,MAAM,GAAG;EACd,mBAAA;EACA,kBAAA;EACA,gBAAA;;AAGD,KAAM;EACL,mBAAA;EACA,0BAAA;EACA,kBAAA;;AAGD,KAAM,GAAG;EACR,gBAAA;;AAGD,KAAM,GAAG,KAAI;EACZ,cAAA;;AAGD,KAAM,GAAG;EACR,gBAAA;EACA,0BAAA;EACA,UAAA;;AAGD,KAAM;EACL,mBAAA;;AAGD,KAAM,GAAG,KAAI;EACZ,gBAAA;;AAGD,KAAM,QAAO;EACZ,gBAAA;EACA,cAAA;EACA,gBAAA;;AAGD;EACC,eAAA;;EAEA,QAAA;EACA,SAAA;EACA,gBAAA;EACA,8BAAA;EACA,WAAA;;AAGD,UAAW;EACV,8BAAA;;AAGD,UAAU;EACT,UAAA;;AAGD,KACC;EACC,0BAAA;EACA,2BAAA;EACA,gBAAA;EACA,kBAAA;;AALF,KACC,UAMC;EACC,uBAAA;;AARH,KACC,UAMC,MAGC;EACC,kBAAA;;AAXJ,KACC,UAMC,MAOC;EACC,gBAAA;EACA,mBAAA;;AAhBJ,KACC,UAMC,MAYC;EACC,kBAAA;;AApBJ,KACC,UAuBC,MAAK;EACJ,8BAAA;;AAzBH,KA6BC,UAAS;EACR,WAAA;;AAKF,KAAM;EACL,eAAA;EACA,YAAA;EACA,WAAA;EACA,cAAA;EACA,kBAAA;EACA,kBAAA;EACA,eAAA;EACA,iBAAA;;;AAID,KAAK,aAAc;EAClB,aAAA;;AAGD;EACC,eAAA;EACA,SAAA;EACA,aAAA;EACA,QAAA;EACA,aAAA;;AAGD,SAAU;EACT,gBAAA;EACA,kBAAA;EACA,MAAA;EACA,SAAA;EACA,QAAA;EACA,OAAA;EACA,+BAAA;;AAGD,SAAU,WAAU;EACnB,UAAA;EACA,WAAA;;AAGD,SAAU;EACT,0BAAA;EACA,0BAAA;;AA0BD,mBAvBqC;EACpC;IACC,kBAAA;IACA,WAAA;IACA,OAAA;IACA,MAAA;;EAGD,SAAU;IACT,6BAAA;;EAGD,SAAU;IACT,sBAAA;IACA,0BAAA;;EAGD,SAAU,WAAW,MAAM;IAC1B,sBAAA;IACA,0BAAA;;;AAIF,SAAU,MAAM,MAAK;EACpB,8BAAA;EACA,wBAAA;;AAGD,SAAU,MAAM,MAAK,IAAI;EACxB,6BAAA;EACA,gCAAA;;AAGD,SAAU,MAAM,MAAK,IAAI,SAAU;EAClC,gBAAA;EACA,cAAA;EACA,4BAAA;EACA,gBAAA;;AAGD,SAAU,MAAM,MAAK,IAAI,SAAS;EACjC,+BAAA;EACA,sCAAA;EACA,yCAAA;EACA,gBAAA;EACA,mBAAA;;AAGD,SAAU,MAAM,MAAK;EACpB,+BAAA;;AAGD,SAAU,MAAM,MAAM;EACrB,kBAAA;;AAGD,SAAU,MAAM,MAAK,IAAI,SAAU,IAAG;EACrC,WAAA;;AAGD,SAAU,MAAM,MAAM,KAAI,IAAI;EAC7B,WAAA;;AAGD,SAAU,MAAM,MAAM,KAAI;EACzB,yBAAA;;AAGD,SAAU,WAAW,MAAM,MAAK;EAC/B,+BAAA;EACA,eAAA;;AAGD,SAAU,WAAW,MAAM,MAAK,OAAQ;EACvC,mBAAA;EACA,WAAA;EACA,gBAAA;;AAGD,SAAU,WAAW,MAAM;EAC1B,cAAA;EACA,qBAAA;EACA,2BAAA;;AAGD,SAAU,WAAW,MAAM,MAAM;EAChC,wBAAA;;AAGD,SAAU;EACT,kBAAA;;AAGD,SAAU,aAAa;AAAO,SAAU,YAAY;EACnD,sBAAA;;;AAID,KAAK;EACJ,gBAAA;;AAGD,KAAK,KAAK;EACT,UAAA;EACA,WAAA;;;AAID;EACC,eAAA;EACA,SAAA;EACA,gBAAA;EACA,WAAA;EACA,WAAA;EACA,2BAAA;EACA,WAAA;EACA,gBAAA;;AAGD,OAAO;EACN,WAAA;;AAGD,OAAQ;EACP,gBAAA;;AAGD,OAAQ,EAAE;EACT,aAAA;;AAGD,OAAQ,EAAC,MAAO;AAAM,OAAQ,EAAC,OAAQ;EACtC,aAAA;;AAGD,OAAQ,EAAC,MAAO;AAAM,OAAQ,EAAC,OAAQ;EACtC,cAAA;;AAGD,OAAQ,KAAK;EACZ,UAAA;EACA,SAAA;;AAGD;EACC,eAAA;EACA,eAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;EACA,8BAAA;EACA,aAAA;;AAGD,iBAAkB;EACjB,WAAA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,iBAAA;EACA,kBAAA;;AAGD,iBAAkB,QAAQ;EACzB,WAAA;;AAGD,iBAAkB,QAAQ;EACzB,kBAAA;EACA,YAAA;EACA,UAAA;;AAWD,mBARqC;EACpC,iBAAkB;IACjB,cAAA;IACA,WAAA;;;;AAKF;EACC,wBAAA;;;AAID,iBAAkB;EACjB,2BAAA;;AAGD,iBAAkB,MAAK;EACtB,UAAA;;AAGD,iBAAkB,MAAM;EACvB,2BAAA;;AAGD,MAAM;EACL,sBAAA;;;AAWD,mBAPqC;EACpC,OAAO,IAAI;IACV,sBAAA;;;AAKF,KAAK;EACJ,0BAAA;;AAGD,KAAK;EACJ,yBAAA;;;AAID,WAAY,MAAK;EAChB,wBAAA;EACA,2BAAA;;AAGD,WAAY;EACX,wBAAA;EACA,2BAAA;;AAGD,YAAa,MAAK;EACjB,wBAAA;EACA,2BAAA;;AAGD,YAAa,MAAK,KAAM;EACvB,kBAAA;;AAGD,YAAa;EACZ,wBAAA;;AAGD,KAAM;EACL,aAAA;;;AAID,IAAI;AAAQ,GAAG;EACd,yBAAA;;AAGD,GAAG;EACF,8BAAA;;;AAID,SAAU,MAAM;AAAG,SAAU;EAC5B,2BAAA;;;AAID;EACC,eAAA;EAEA,2BAAA;;AAHD,KAKC;EACC,qBAAA;EACA,mBAAA;EACA,WAAA;EACA,iBAAA;EACA,SAAA;EACA,gBAAA;EACA,sBAAA;EACA,cAAA;;AAbF,KAgBC,EAAC;EACA,8BAAA;EACA,YAAA;;AAlBF,KAqBC,EAAC;EACA,gBAAA;;;AAKF;EACC,kBAAA;;AAGD;AAAc,YAAY;EACzB,SAAA;;AAGD,cAAc;AAAQ,aAAa;EAClC,iCAAA;;AAGD;AAAgB;EACf,iCAAA;;AAGD;EACC,2BAAA;;AAID,IACC;EACC,2BAAA;;;AAKF;EACC,2BAAA;EACA,YAAA;;AAGD;EACC,YAAA;;AAGD,KAAK;EACJ,eAAA;;AAGD,MAAM;EACL,4BAAA;EACA,+BAAA;EACA,cAAA;EACA,gBAAA;;AAID;EACC,qBAAA;;AAGD,EAAG,OAAM;EACR,+BAAA;;AAID;EACC,qBAAA","file":"@layout.css"} \ No newline at end of file +{"version":3,"sources":["@left_menu.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file diff --git a/web/views/@default/@layout.html b/web/views/@default/@layout.html index ec185e20..aabb4734 100644 --- a/web/views/@default/@layout.html +++ b/web/views/@default/@layout.html @@ -83,6 +83,17 @@ {$TEA.VIEW} + + + {$echo "footer"} diff --git a/web/views/@default/@layout.js b/web/views/@default/@layout.js index 1dfab97c..a3e44936 100644 --- a/web/views/@default/@layout.js +++ b/web/views/@default/@layout.js @@ -1,6 +1,7 @@ Tea.context(function () { - this.moreOptionsVisible = false; - this.globalChangedClusters = []; + this.moreOptionsVisible = false + this.globalChangedClusters = [] + this.teaDemoEnabled = false if (typeof this.leftMenuItemIsDisabled == "undefined") { this.leftMenuItemIsDisabled = false @@ -8,29 +9,29 @@ Tea.context(function () { this.$delay(function () { if (this.$refs.focus != null) { - this.$refs.focus.focus(); + this.$refs.focus.focus() } // 检查变更 this.checkClusterChanges() - }); + }) /** * 左侧子菜单 */ this.showSubMenu = function (menu) { if (menu.alwaysActive) { - return; + return } if (this.teaSubMenus.menus != null && this.teaSubMenus.menus.length > 0) { this.teaSubMenus.menus.$each(function (k, v) { if (menu.id == v.id) { - return; + return } - v.isActive = false; - }); + v.isActive = false + }) } - menu.isActive = !menu.isActive; + menu.isActive = !menu.isActive }; /** @@ -70,6 +71,16 @@ Tea.context(function () { }) }) }; + + /** + * 底部伸展框 + */ + this.showQQGroupQrcode = function () { + teaweb.popup("/about/qq", { + width: "21em", + height: "24em" + }) + } }); window.NotifySuccess = function (message, url, params) { diff --git a/web/views/@default/@layout_popup.html b/web/views/@default/@layout_popup.html index 75b78990..3e78d08c 100644 --- a/web/views/@default/@layout_popup.html +++ b/web/views/@default/@layout_popup.html @@ -15,6 +15,7 @@ +