From 2dfeaae772e630ae361a35bf4680257d081560c1 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Tue, 30 Jul 2024 01:06:40 +0300 Subject: [PATCH 01/25] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B3=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BA=20=D1=80=D0=B5=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D1=83=20v1.3.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 39 +++--- TODO.md | 17 ++- app/config.go | 69 ++++++--- app/parsers.go | 217 +++++++++++++++-------------- app/router.go | 11 +- app/util.go | 54 +++---- app/wrapper.go | 51 ++++--- config.example.json | 10 +- css/skunky.css | 50 ++++++- go.mod | 2 + html/about.htm | 2 +- html/{list.htm => daily.htm} | 7 +- instances.json | 11 ++ misc/logo.png | Bin 0 -> 408075 bytes services/skunkyart.example.openrc | 13 ++ services/skunkyart.example.service | 11 ++ skunkyart.example.openrc | 11 -- 17 files changed, 357 insertions(+), 218 deletions(-) rename html/{list.htm => daily.htm} (75%) create mode 100644 misc/logo.png create mode 100755 services/skunkyart.example.openrc create mode 100644 services/skunkyart.example.service delete mode 100755 skunkyart.example.openrc diff --git a/README.md b/README.md index 9e30da0..ba6e4b3 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,14 @@ +SkunkyArt + [![Matrix room](https://img.shields.io/badge/matrix-000000?style=for-the-badge&logo=Matrix&logoColor=white)](https://go.kde.org/matrix/#/#skunkyart:ebloid.ru) # Instances -|Инстанс|Yggdrasil|I2P|Tor|NSFW|Proxifying|Country| -|:-----:|:-------:|:-:|:-:|:--:|:--------:|:-----:| +|Instance|Yggdrasil|I2P|Tor|NSFW|Proxifying|Country| +|:------:|:-------:|:-:|:-:|:--:|:--------:|:-----:| |[skunky.ebloid.ru](https://skunky.ebloid.ru/art)|[Yes](http://[201:eba5:d1fc:bf7b:cfcb:a811:4b8b:7ea3]/art)|No|No| No | No | Russia | |[clovius.club](https://skunky.clovius.club)|No|No|No| Yes | Yes | Sweden | |[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | Romania | |[frontendfriendly.xyz](https://skunkyart.frontendfriendly.xyz)|No|No|No| Yes | Yes | Finland | +|[lumaeris.com](https://skunkyart.lumaeris.com)|No|No|No| Yes | Yes | US | # EN 🇺🇸 ## Description @@ -13,12 +16,12 @@ SkunkyArt 🦨 -- alternative frontend to DeviantArt, which will work without pr ## Config The sample config is in the `config.example.json` file. To specify your own path to the config, use the CLI argument `-c` or `--config`. * `listen` -- the address and port on which SkunkyArt will listen -* `base-path` -- the path to the instance. Example: "`base-path`:"/art/" -> https://skunky.ebloid.ru/art/ +* `base-path` -- the path to the instance. Example: `"base-path":"/art/"` -> https://skunky.ebloid.ru/art/ * `cache` -- caching system; default is off. -* * `path` -- the path to the cache -* * `lifetime` -- cache file lifetime; measured in Unix milliseconds. -* * `max-size` -- maximum file size in bytes. -* `dirs-to-memory` -- this setting determines which directories will be copied to RAM when SkunkyArt is started. Required + * `path` -- the path to the cache + * `lifetime` -- the lifetime of the file in the cache. Units: i, h, d, w, m, y. I -- minute, all other units I think are self-explanatory. + * `max-size` -- maximum file size in megabytes. +* `dirs-to-memory` -- this setting determines which directories will be copied to RAM when SkunkyArt is started. Mandatory * `download-proxy` -- proxy address for downloading files. ## Examples of reverse proxies Nginx: @@ -27,17 +30,18 @@ server { listen 443 ssl; server_name skunky.example.com; - location ((BASE URL)) { # if you have a separate subdomain for the frontend, insert '/' instead of '((BASE URL))'. - proxy_set_header Scheme $scheme; + location ((BASE URL)) { # if you have a separate subdomain for the frontend, insert '/' instead of '((BASE URL)))'. + proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_http_version 1.1; proxy_pass http://((IP)):((PORT)); } } ``` +Pretty much business as usual, except for the [`X-Forwarded-Proto`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto) header setting. ## How do I add my instance to the list? -To do this, you must either make a PR by adding your instance to the `instances.json` file, or report it to the room in Matrix. I don't think it needs any description. However, be aware, this list has a couple rules: -1. the instance must not use Cloudflare. +To do this, you must either make a PR by adding your instance to the `instances.json` and `README.md` files, or create an Issue, or report it to the room in Matrix. I don't think it needs any description. However, be warned, this list has a couple rules: +1. the Instance must not use Cloudflare. 2. If your instance has modified source code, you need to publish it to any free platform. For example, Github and Gitlab are not. ## Acknowledgements * [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) -- helped me understand Go and gave me a lot of useful advice on this language. @@ -48,11 +52,11 @@ SkunkyArt 🦨 -- альтернативный фронтенд к DeviantArt, ## Конфиг Пример конфига находится в файле `config.example.json`. Чтобы указать свой путь до конфига, используйте CLI-аргумент `-c` или `--config`. * `listen` -- адрес и порт, на котором будет слушать SkunkyArt -* `base-path` -- путь к инстансу. Пример: "base-path": "/art/" -> https://skunky.ebloid.ru/art/ +* `base-path` -- путь к инстансу. Пример: `"base-path": "/art/"` -> https://skunky.ebloid.ru/art/ * `cache` -- система кеширования; по умолчанию - выкл. -* * `path` -- путь до кеша -* * `lifetime` -- время жизни файла в кеше; измеряется в Unix-миллисекундах -* * `max-size` -- максимальный размер файла в байтах + * `path` -- путь до кеша + * `lifetime` -- время жизни файла в кеше. Единицы измерения: i, h, d, w, m, y. I -- минута, всё остальные единицы измерения, я считаю понятными и без объяснения. + * `max-size` -- максимальный размер файла в мегабайтах * `dirs-to-memory` -- данная настройка определяет какие каталоги будут скопированы в ОЗУ при запуске SkunkyArt. Обязательна * `download-proxy` -- адрес прокси для загрузки файлов ## Примеры reverse-прокси @@ -63,15 +67,16 @@ server { server_name skunky.example.com; location ((BASE URL)) { # если у вас отдельный поддомен для фронтенда, вместо '((BASE URL))' вставляйте '/' - proxy_set_header Scheme $scheme; + proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_http_version 1.1; proxy_pass http://((IP)):((PORT)); } } ``` +В целом, всё как обычно, за исключением настройки заголовка [`X-Forwarded-Proto`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto). ## Как добавить свой инстанс в список? -Чтобы это сделать, вы должны либо сделать PR, добавив в файл `instances.json` свой инстанс, либо сообщить о нём в комнате в Matrix. Думаю, он не нуждается в описании. Однако учтите, у этого списка есть пара правил: +Чтобы это сделать, вы должны либо сделать PR, добавив в файлы `instances.json` и `README.md` свой инстанс, либо создать Issue, или сообщить о нём в комнате в Matrix. Думаю, он не нуждается в описании. Однако учтите, у этого списка есть пара правил: 1. Инстанс не должен использовать Cloudflare. 2. Если ваш инстанс имеет модифицированный исходный код, то вам нужно опубликовать его на любую свободную площадку. Например, Github и Gitlab таковыми не являются. ## Благодарности diff --git a/TODO.md b/TODO.md index 2334695..cdb4c95 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,16 @@ # v1.3.x -* Доделать парсинг описания -* Реализовать миниатюры и оптимизировать CSS под маленькие экраны +* Написать Makefile +* Почистить говнокод +* **Доделать парсинг описания** +* Избавиться от хардкода под Linux +* ~~Реализовать стрипы в ежедневных артах~~ +* ~~Исправить баг с навигацией по страницам~~ +* ~~Сделать единицы в конфиге более понятными~~ +* Добавить возможность включить темплейты в бинарник +* ~~Реализовать миниатюры и оптимизировать CSS под маленькие экраны~~ +* **Реализовать отображение контента, отличного от картинок (видео, аудио, etc)** +* Улучшить систему кеширования: добавить рейтинг для удаления и копирование изображений в ОЗУ # v1.4 +* Реализовать API * Реализовать темы -* Реализовать многоязычный интерфейс -* Реализовать API \ No newline at end of file +* Реализовать многоязычный интерфейс \ No newline at end of file diff --git a/app/config.go b/app/config.go index c848b9c..3fb8103 100644 --- a/app/config.go +++ b/app/config.go @@ -3,14 +3,18 @@ package app import ( "encoding/json" "os" + "regexp" + "strconv" "time" + + "git.macaw.me/skunky/devianter" ) type cache_config struct { Enabled bool Path string MaxSize int64 `json:"max-size"` - Lifetime int64 + Lifetime string UpdateInterval int64 `json:"update-interval"` } @@ -20,6 +24,7 @@ type config struct { BasePath string `json:"base-path"` Cache cache_config Proxy, Nsfw bool + UserAgent string `json:"user-agent"` DownloadProxy string `json:"download-proxy"` Dirs []string `json:"dirs-to-memory"` } @@ -33,31 +38,36 @@ var CFG = config{ Path: "cache", UpdateInterval: 1, }, - Dirs: []string{"html", "css"}, - Proxy: true, - Nsfw: true, + Dirs: []string{"html", "css"}, + UserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36", + Proxy: true, + Nsfw: true, } +var lifetimeParsed int64 + func ExecuteConfig() { go func() { - defer func() { - if r := recover(); r != nil { - recover() - } - }() for { - Templates["instances.json"] = string(Download("https://git.macaw.me/skunky/SkunkyArt/raw/branch/master/instances.json").Body) - time.Sleep(1 * time.Second) + func() { + defer func() { + if r := recover(); r != nil { + recover() + } + }() + Templates["instances.json"] = string(Download("https://git.macaw.me/skunky/SkunkyArt/raw/branch/master/instances.json").Body) + }() + time.Sleep(1 * time.Hour) } }() - const helpmsg = `SkunkyArt v1.3 [refactoring] + const helpmsg = `SkunkyArt v1.3.1 [CSS improvements for mobile and strips on Daily Deviations] Usage: - [-c|--config] - path to config - [-h|--help] - returns this message Example: ./skunkyart -c config.json -Copyright lost+skunk, X11. https://git.macaw.me/skunky/skunkyart/src/tag/v1.3` +Copyright lost+skunk, X11. https://git.macaw.me/skunky/skunkyart/src/tag/v1.3.1` a := os.Args for n, x := range a { @@ -75,15 +85,42 @@ Copyright lost+skunk, X11. https://git.macaw.me/skunky/skunkyart/src/tag/v1.3` if CFG.cfg != "" { f, err := os.ReadFile(CFG.cfg) - try_with_exitstatus(err, 1) + tryWithExitStatus(err, 1) - try_with_exitstatus(json.Unmarshal(f, &CFG), 1) + tryWithExitStatus(json.Unmarshal(f, &CFG), 1) if CFG.Cache.Enabled && !CFG.Proxy { exit("Incompatible settings detected: cannot use caching media content without proxy", 1) } - if CFG.Cache.MaxSize != 0 || CFG.Cache.Lifetime != 0 { + if CFG.Cache.Enabled { + if CFG.Cache.Lifetime != "" { + var duration int64 + day := 24 * time.Hour.Milliseconds() + numstr := regexp.MustCompile("[0-9]+").FindAllString(CFG.Cache.Lifetime, -1) + num, _ := strconv.Atoi(numstr[len(numstr)-1]) + + switch unit := CFG.Cache.Lifetime[len(CFG.Cache.Lifetime)-1:]; unit { + case "i": + duration = time.Minute.Milliseconds() + case "h": + duration = time.Hour.Milliseconds() + case "d": + duration = day + case "w": + duration = day * 7 + case "m": + duration = day * 30 + case "y": + duration = day * 360 + default: + exit("Invalid unit specified: "+unit, 1) + } + + lifetimeParsed = duration * int64(num) + } + CFG.Cache.MaxSize /= 1024 ^ 2 go InitCacheSystem() } + devianter.UserAgent = CFG.UserAgent } } diff --git a/app/parsers.go b/app/parsers.go index 0665476..b39e172 100644 --- a/app/parsers.go +++ b/app/parsers.go @@ -70,17 +70,81 @@ func (s skunkyart) ParseComments(c devianter.Comments) string { return cmmts.String() } -func (s skunkyart) DeviationList(devs []devianter.Deviation, content ...DeviationList) string { - var list strings.Builder +func (s skunkyart) DeviationList(devs []devianter.Deviation, allowAtom bool, content ...DeviationList) string { if s.Atom && s.Page > 1 { s.ReturnHTTPError(400) return "" - } else if s.Atom { + } + + var list, listContent strings.Builder + + for i, l := 0, len(devs); i < l; i++ { + data := &devs[i] + if preview, fullview := ParseMedia(data.Media, 320), ParseMedia(data.Media); !(data.NSFW && !CFG.Nsfw) { + if allowAtom && s.Atom { + id := strconv.Itoa(data.ID) + listContent.WriteString(``) + listContent.WriteString(data.Author.Username) + listContent.WriteString(``) + listContent.WriteString(data.Title) + listContent.WriteString(``) + listContent.WriteString(id) + listContent.WriteString(``) + listContent.WriteString(data.PublishedTime.UTC().Format("Mon, 02 Jan 2006 15:04:05 -0700")) + listContent.WriteString(``) + listContent.WriteString(``) + listContent.WriteString(data.Title) + listContent.WriteString(`

`) + listContent.WriteString(ParseDescription(data.TextContent)) + listContent.WriteString(`

`) + } else { + listContent.WriteString(`
`) + if fullview != "" && preview != "" { + listContent.WriteString(``) + } else { + listContent.WriteString(`

[ TEXT ]

`) + } + listContent.WriteString(`
`) + listContent.WriteString(data.Author.Username) + listContent.WriteString(" - ") + listContent.WriteString(data.Title) + + if data.NSFW { + listContent.WriteString(` [NSFW]`) + } + if data.AI { + listContent.WriteString(" [🤖]") + } + if data.DD { + listContent.WriteString(` [DD]`) + } + + listContent.WriteString("
") + } + } + } + + if allowAtom && s.Atom { list.WriteString(``) + list.WriteString(``) if s.Type == 0 { list.WriteString("Daily Deviations") - } else if len(devs) != 0 { + } else if s.Type == 'g' && len(devs) != 0 { list.WriteString(devs[0].Author.Username) } else { list.WriteString("SkunkyArt") @@ -90,75 +154,16 @@ func (s skunkyart) DeviationList(devs []devianter.Deviation, content ...Deviatio list.WriteString(`<link rel="alternate" href="`) list.WriteString(Host) list.WriteString(`"/>`) + + list.WriteString(listContent.String()) + + list.WriteString("</feed>") + wr(s.Writer, list.String()) } else { list.WriteString(`<div class="content">`) - } - for _, data := range devs { - if !(data.NSFW && !CFG.Nsfw) { - url := ParseMedia(data.Media) - if s.Atom { - id := strconv.Itoa(data.ID) - list.WriteString(`<entry><author><name>`) - list.WriteString(data.Author.Username) - list.WriteString(`</name></author><title>`) - list.WriteString(data.Title) - list.WriteString(``) - list.WriteString(id) - list.WriteString(``) - list.WriteString(data.PublishedTime.UTC().Format("Mon, 02 Jan 2006 15:04:05 -0700")) - list.WriteString(``) - list.WriteString(``) - list.WriteString(data.Title) - list.WriteString(`

`) - list.WriteString(ParseDescription(data.TextContent)) - list.WriteString(`

`) - } else { - list.WriteString(`") - } - } - } - - if s.Atom { - list.WriteString("
") - s.Writer.Write([]byte(list.String())) - return "" - } else { list.WriteString("") if content != nil { list.WriteString(s.NavBase(content[0])) @@ -177,7 +182,7 @@ type text struct { } func ParseDescription(dscr devianter.Text) string { - var parseddescription strings.Builder + var parsedDescription strings.Builder TagBuilder := func(content string, tags ...string) string { l := len(tags) for x := 0; x < l; x++ { @@ -274,16 +279,18 @@ func ParseDescription(dscr devianter.Text) string { switch x.Type { case "atomic": - d := entities[x.EntityRanges[0].Key] - parseddescription.WriteString(``) + if len(x.EntityRanges) != 0 { + d := entities[x.EntityRanges[0].Key] + parsedDescription.WriteString(``) + } case "unstyled": if l := len(Styles); l != 0 { for n, r := range Styles { @@ -292,31 +299,31 @@ func ParseDescription(dscr devianter.Text) string { tag = "h2" } - parseddescription.WriteString(x.Text[:r.From]) + parsedDescription.WriteString(x.Text[:r.From]) if len(urls) != 0 && len(x.EntityRanges) != 0 { ra := &x.EntityRanges[0] - parseddescription.WriteString(``) - parseddescription.WriteString(r.TXT) - parseddescription.WriteString(``) + parsedDescription.WriteString(``) + parsedDescription.WriteString(r.TXT) + parsedDescription.WriteString(``) } else if l > n+1 { - parseddescription.WriteString(r.TXT) + parsedDescription.WriteString(r.TXT) } - parseddescription.WriteString(TagBuilder(tag, x.Text[r.To:])) + parsedDescription.WriteString(TagBuilder(tag, x.Text[r.To:])) } } else { - parseddescription.WriteString(x.Text) + parsedDescription.WriteString(x.Text) } } - parseddescription.WriteString("
") + parsedDescription.WriteString("
") } } else if dl != 0 { for tt := html.NewTokenizer(strings.NewReader(dscr.Html.Markup)); ; { switch tt.Next() { case html.ErrorToken: - return parseddescription.String() + return parsedDescription.String() case html.StartTagToken, html.EndTagToken, html.SelfClosingTagToken: token := tt.Token() switch token.Data { @@ -324,11 +331,11 @@ func ParseDescription(dscr devianter.Text) string { for _, a := range token.Attr { if a.Key == "href" { url := DeleteTrackingFromUrl(a.Val) - parseddescription.WriteString(``) - parseddescription.WriteString(GetValueOfTag(tt)) - parseddescription.WriteString(" ") + parsedDescription.WriteString(``) + parsedDescription.WriteString(GetValueOfTag(tt)) + parsedDescription.WriteString(" ") } } case "img": @@ -344,24 +351,24 @@ func ParseDescription(dscr devianter.Text) string { } if title != "" { for x := -1; x < b; x++ { - parseddescription.WriteString(``) + parsedDescription.WriteString(``) } } } case "br", "li", "ul", "p", "b": - parseddescription.WriteString(token.String()) + parsedDescription.WriteString(token.String()) case "div": - parseddescription.WriteString("

") + parsedDescription.WriteString("

") } case html.TextToken: - parseddescription.Write(tt.Text()) + parsedDescription.Write(tt.Text()) } } } - return parseddescription.String() + return parsedDescription.String() } diff --git a/app/router.go b/app/router.go index 0dd2f79..33c3189 100644 --- a/app/router.go +++ b/app/router.go @@ -1,7 +1,6 @@ package app import ( - "io" "net/http" u "net/url" "strconv" @@ -44,7 +43,7 @@ func Router() { // функция, что управляет всем handle := func(w http.ResponseWriter, r *http.Request) { - if h := r.Header["Scheme"]; len(h) != 0 && h[0] == "https" { + if h := r.Header["X-Forwarded-Proto"]; len(h) != 0 && h[0] == "https" { Host = h[0] + "://" + r.Host } else { Host = "http://" + r.Host @@ -97,10 +96,14 @@ func Router() { skunky.About() case "stylesheet": w.Header().Add("content-type", "text/css") - io.WriteString(w, Templates["skunky.css"]) + wr(w, Templates["skunky.css"]) + case "favicon.ico": + wr(w, Templates["logo.png"]) } } http.HandleFunc("/", handle) - try_with_exitstatus(http.ListenAndServe(CFG.Listen, nil), 1) + println("SkunkyArt is listening on", CFG.Listen) + + tryWithExitStatus(http.ListenAndServe(CFG.Listen, nil), 1) } diff --git a/app/util.go b/app/util.go index 3f69e47..11f81a1 100644 --- a/app/util.go +++ b/app/util.go @@ -26,7 +26,7 @@ func try(e error) { println(e.Error()) } } -func try_with_exitstatus(err error, code int) { +func tryWithExitStatus(err error, code int) { if err != nil { exit(err.Error(), code) } @@ -87,7 +87,7 @@ func Download(url string) (d Downloaded) { req, e := http.NewRequest("GET", url, nil) try(e) - req.Header.Set("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:123.0) Gecko/20100101 Firefox/123.0.0") + req.Header.Set("User-Agent", CFG.UserAgent) resp, e := cli.Do(req) try(e) @@ -148,14 +148,14 @@ func InitCacheSystem() { try(e) for _, a := range dirnames { a = c.Path + "/" + a - if c.Lifetime != 0 { + if c.Lifetime != "" { now := time.Now().UnixMilli() f, _ := os.Stat(a) stat := f.Sys().(*syscall.Stat_t) time := time.Unix(stat.Ctim.Unix()).UnixMilli() - if time+c.Lifetime <= now { + if time+lifetimeParsed <= now { try(os.RemoveAll(a)) } } @@ -172,19 +172,19 @@ func InitCacheSystem() { func CopyTemplatesToMemory() { for _, dirname := range CFG.Dirs { dir, e := os.ReadDir(dirname) - try_with_exitstatus(e, 1) + tryWithExitStatus(e, 1) for _, x := range dir { file, e := os.ReadFile(dirname + "/" + x.Name()) - try_with_exitstatus(e, 1) + tryWithExitStatus(e, 1) Templates[x.Name()] = string(file) } } } /* PARSING HELPERS */ -func ParseMedia(media devianter.Media) string { - url := devianter.UrlFromMedia(media) +func ParseMedia(media devianter.Media, thumb ...int) string { + url := devianter.UrlFromMedia(media, thumb...) if len(url) != 0 && CFG.Proxy { url = url[21:] dot := strings.Index(url, ".") @@ -197,9 +197,10 @@ func ParseMedia(media devianter.Media) string { func ConvertDeviantArtUrlToSkunkyArt(url string) (output string) { if len(url) > 32 && url[27:32] != "stash" { url = url[27:] - toart := strings.Index(url, "/art/") - if toart != -1 { - output = UrlBuilder("post", url[:toart], url[toart+5:]) + firstshash := strings.Index(url, "/") + lastshash := firstshash + strings.Index(url[firstshash+1:], "/") + if lastshash != -1 { + output = UrlBuilder("post", url[:firstshash], url[lastshash+2:]) } } return @@ -236,13 +237,9 @@ type DeviationList struct { // FIXME: на некоротрых артах первая страница может вызывать полное отсутствие панели навигации. func (s skunkyart) NavBase(c DeviationList) string { - // TODO: сделать понятнее - // навигация по страницам var list strings.Builder - list.WriteString("
") - p := s.Page - // функция для генерации ссылок + list.WriteString("
") prevrev := func(msg string, page int, onpage bool) { if !onpage { list.WriteString(` 0 { - // назад - for x := p - 6; x < p && x > 0; x++ { - prevrev(strconv.Itoa(x), x, false) - } - - // вперёд - for x := p; x <= p+6 && c.Pages > p+6; x++ { - if x == p { - prevrev("", x, true) - x++ + for i, x := p-6, 0; (i <= c.Pages && i <= p+6) && x < 12; i++ { + if i > 0 { + var onPage bool + if i == p { + onPage = true } - if x > p { - prevrev(strconv.Itoa(x), x, false) - } + prevrev(strconv.Itoa(i), i, onPage) + x++ } } - // вперёд-назад if c.More { prevrev("| Next =>", p+1, false) } diff --git a/app/wrapper.go b/app/wrapper.go index ca39af7..51d76a9 100644 --- a/app/wrapper.go +++ b/app/wrapper.go @@ -48,6 +48,7 @@ type skunkyart struct { } SomeList string + DDStrips string Deviation struct { Post devianter.Post Related string @@ -93,7 +94,10 @@ func (s skunkyart) GRUser() { var g devianter.Group g.Name = s.Query - s.Templates.GroupUser.GR = g.GroupFunc() + var err error + s.Templates.GroupUser.GR, err = g.GetGroup() + try(err) + group := &s.Templates.GroupUser switch s.Type { @@ -135,7 +139,7 @@ func (s skunkyart) GRUser() { group.About.Interests += interest.String() } } - group.About.Comments = s.ParseComments(devianter.CommentsFunc( + group.About.Comments = s.ParseComments(devianter.GetComments( strconv.Itoa(group.GR.Gruser.ID), "", s.Page, @@ -161,9 +165,11 @@ func (s skunkyart) GRUser() { s.Page++ } - gallery := g.Gallery(s.Page, folderid) + gallery, err := g.GetGallery(s.Page, folderid) + try(err) + if folderid > 0 { - group.Gallery.List = s.DeviationList(gallery.Content.Results, DeviationList{ + group.Gallery.List = s.DeviationList(gallery.Content.Results, true, DeviationList{ More: gallery.Content.HasMore, }) } else { @@ -204,7 +210,7 @@ func (s skunkyart) GRUser() { } if x.Name == "folder_deviations" { - group.Gallery.List = s.DeviationList(x.ModuleData.Folder.Deviations, DeviationList{ + group.Gallery.List = s.DeviationList(x.ModuleData.Folder.Deviations, true, DeviationList{ Pages: x.ModuleData.Folder.Pages, More: x.ModuleData.Folder.HasMore, }) @@ -227,7 +233,7 @@ func (s skunkyart) Deviation(author, postname string) { post := &s.Templates.Deviation id := id_search[len(id_search)-1] - post.Post = devianter.DeviationFunc(id, author) + post.Post = devianter.GetDeviation(id, author) if post.Post.Deviation.TextContent.Excerpt != "" { post.Post.Description = ParseDescription(post.Post.Deviation.TextContent) @@ -239,7 +245,7 @@ func (s skunkyart) Deviation(author, postname string) { post.Post.IMG = ParseMedia(post.Post.Deviation.Media) for _, x := range post.Post.Deviation.Extended.RelatedContent { if len(x.Deviations) != 0 { - post.Related += s.DeviationList(x.Deviations) + post.Related += s.DeviationList(x.Deviations, false) } } @@ -259,7 +265,7 @@ func (s skunkyart) Deviation(author, postname string) { post.Post.Comments.Cursor = "" } - post.Comments = s.ParseComments(devianter.CommentsFunc(id, post.Post.Comments.Cursor, s.Page, 1)) + post.Comments = s.ParseComments(devianter.GetComments(id, post.Post.Comments.Cursor, s.Page, 1)) s.ExecuteTemplate("deviantion.htm", &s) } else { @@ -268,25 +274,38 @@ func (s skunkyart) Deviation(author, postname string) { } func (s skunkyart) DD() { - dd := devianter.DailyDeviationsFunc(s.Page) - s.Templates.SomeList = s.DeviationList(dd.Deviations, DeviationList{ + dd := devianter.GetDailyDeviations(s.Page) + var strips strings.Builder + for _, x := range dd.Strips { + strips.WriteString(`

# `) + strips.WriteString(x.Title) + strips.WriteString(`

`) + + strips.WriteString(s.DeviationList(x.Deviations, false)) + } + s.Templates.DDStrips = strips.String() + s.Templates.SomeList = s.DeviationList(dd.Deviations, true, DeviationList{ Pages: 0, More: dd.HasMore, }) if !s.Atom { - s.ExecuteTemplate("list.htm", &s) + s.ExecuteTemplate("daily.htm", &s) } } func (s skunkyart) Search() { s.Atom = false - var e error + var err error ss := &s.Templates.Search switch s.Type { case 'a', 't': - ss.Content, e = devianter.SearchFunc(s.Query, s.Page, s.Type) + ss.Content, err = devianter.PerformSearch(s.Query, s.Page, s.Type) case 'g': - ss.Content, e = devianter.SearchFunc(s.Query, s.Page, s.Type, s.Args.Get("usr")) + ss.Content, err = devianter.PerformSearch(s.Query, s.Page, s.Type, s.Args.Get("usr")) case 'r': // скраппер, поскольку девиантартовцы зажопили гостевое API для поиска групп var ( usernames = make(map[int]string) @@ -333,10 +352,10 @@ func (s skunkyart) Search() { default: s.ReturnHTTPError(400) } - try(e) + try(err) if s.Type != 'r' { - ss.List = s.DeviationList(ss.Content.Results, DeviationList{ + ss.List = s.DeviationList(ss.Content.Results, false, DeviationList{ Pages: ss.Content.Pages, More: ss.Content.HasMore, }) diff --git a/config.example.json b/config.example.json index 1a78535..b4d1ce2 100644 --- a/config.example.json +++ b/config.example.json @@ -4,15 +4,17 @@ "cache": { "enabled": true, "path": "/home/skunk/projects/skunkyart/cache", - "lifetime": null, - "max-size": 100000, + "lifetime": "1w", + "max-size": 1024, "update-interval": 5 }, "dirs-to-memory": [ "/home/skunk/projects/skunkyart/html", - "/home/skunk/projects/skunkyart/css" + "/home/skunk/projects/skunkyart/css", + "/home/skunk/projects/skunkyart/misc" ], - "download-proxy": null, + "download-proxy": "http://127.0.0.1:8080", + "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36", "proxy": true, "nsfw": false } diff --git a/css/skunky.css b/css/skunky.css index 9d041f0..2126968 100644 --- a/css/skunky.css +++ b/css/skunky.css @@ -131,28 +131,64 @@ form input, button, select { } /* SCREEN OPTIMISATIONS */ -@media screen and (orientation: portrait) { - header { - scale: 155%; - justify-content: center; +@media (orientation: portrait) { + * { + font-size: 120% } + + ul { + font-size: 80% + } + + center form { + font-size: 60% + } + + header form { + font-size: 60%; + } + header, center { + text-align: center; + display: block; + clear: both; + font-size: 200%; + } + .content { margin: auto; display: inherit; scale: 100%; } .block { - max-width: 60%; + margin-top: 10%; + max-width: 200%; + } + .folder-item { + width: 25% + } + .folders { + display: flexbox; + justify-content: center + } + figure img { + width: 10% + } + figure a img { + width: 100% + } + .msg { + font-size: 60%; + max-width: 80% } } -@media screen and (max-width: 1462px) { +@media (max-width: 1462px) and (orientation: landscape) { .block { max-width: 30%; } } -@media screen and (min-width: 788px) and (max-width: 884px) { +@media (min-width: 788px) and (max-width: 884px) { .block { max-width: 35%; } diff --git a/go.mod b/go.mod index 4000554..7e5e771 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,8 @@ module skunkyart go 1.22.3 +replace git.macaw.me/skunky/devianter v0.2.0 => /home/skunk/projects/devianter + require ( git.macaw.me/skunky/devianter v0.2.0 golang.org/x/net v0.27.0 diff --git a/html/about.htm b/html/about.htm index 54e5418..31f58c8 100644 --- a/html/about.htm +++ b/html/about.htm @@ -58,6 +58,6 @@ {{end}} -

Copyright lost+skunk, X11. SkunkyArt v1.3

+

Copyright lost+skunk, X11. SkunkyArt v1.3.1

\ No newline at end of file diff --git a/html/list.htm b/html/daily.htm similarity index 75% rename from html/list.htm rename to html/daily.htm index b2472c4..22e9275 100644 --- a/html/list.htm +++ b/html/daily.htm @@ -1,7 +1,7 @@ - SkunkyArt + SkunkyArt | Daily Deviations
@@ -17,6 +17,11 @@ + {{if ne .Templates.DDStrips ""}} +

# Strips

+ {{.Templates.DDStrips}} + {{end}} +

# Content

{{.Templates.SomeList}}
\ No newline at end of file diff --git a/instances.json b/instances.json index ebb75c2..eeb329a 100644 --- a/instances.json +++ b/instances.json @@ -44,6 +44,17 @@ "nsfw": true, "proxy": true } + }, + { + "title": "lumaeris.com", + "country": "US", + "urls": [{ + "clearnet": "https://skunkyart.lumaeris.com" + }], + "settings": { + "nsfw": true, + "proxy": true + } } ] } \ No newline at end of file diff --git a/misc/logo.png b/misc/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e895de761bfbc760bfcf81d08aec69272889599d GIT binary patch literal 408075 zcmeAS@N?(olHy`uVBq!ia0y~yVEoL$!1#fKje&t-)9kjV3=9eko-U3d6>%kd&%UmG zJ?-w+^S^g~4_lg~yhP|Ni=$BPt&PIfj@FA5H3F^wF?Mk*6W*YD!)rt8@wP>dM>{4? zXqz-`g@Ax+XIWE+hsrIFQ>%8Z{9P6odtPR~;j@Zw?|YUa(hulQ#9 zpjzz0Wvk?WbB~rhaZkU#`QM*wa(lPUdn{4bFS|ECC;9E0!aoQ8nKGxJ`&?BUCnbE# z{ASBinZ-M96y7|`rOp=l_QpoL^MW5kPoKLeT+kE#;p?f$$r644j~iL9)BXBb!GFOY zne619{N3A=mp}S)(Q^I*|9>*f&ySZS?LWL`PI8m*^gkPf-K<1sR~H3Y{yt&W6M3WM zq1i>ona6Kj_3PKK{HNn$Gk+`dLCcNFmB)F%Xj=&Pl$NZKoAbE(sQ#QrZLaslYdDsC zKH=`C9-kuKxAy&gduhw`3zU@`NWS+Rz`9w%x5EFu+Ih&xe_j8xXP*ks z&7Z(AWAitszK*r)xlDJ9aR{;R{;)>)3q4lFwSV4=Xl>xp?g3?BITsx9qI= zfyNWp43CR3D)+sg;KewT?LkEIC2PlU!_wx5Pc%!pJi9)4>K)kHYa%8bKdGp(`cvHr ztv|bG&fL=8A$DKsqvbZ2vkqQHZc98wIF}#h_&T?LW5TD0Z3~XFLKmO$OvQ7>!{*$FrH~ZcT<(F=Y?r>R<Z?IgJAF*Xo!%-2z4|Y-<$8@)C`l}bw^j+xeq5MNj3OqEM3@7{T zTouu{vV2}ZzR3lPe_VSmJbq=wCb?WqZ|5s7D zQ@wNM7t8b)R!Un&tV=$=>}c;FmC~fAd|8Xz1-6-lp3dPd)v>9lDN*};;C1YY&NiMs z3KG9BeO!OiH1brtK>YzcqL_9?`}Z4nH1t%n?Ob|OWzG!ktXr!lWF%~? z6jUOJ* znIHDP5d8ltyE3i&Snbo(Hx%bL|Fy_(65^ia_Ib`R?Fc8~(xdL49$GeUx0Yvg@CWq> zv~qK=cDK6bTKf4NVsSxw(Bp@O)U7NRq}+3Nt07(w}?#g>^+^2 zU7snfw%Dt#qwf>ATyTN^bGPX>=R!AbeAn`!f$ziC6BSmT?DlpS0z)Tn*t)T+y*tIX zY#+;O%a>Y7EG6CN7_V4x7qNSEGtjzGOIW?X}^2mzH;2>*4YIYyqchikq(L=;xjJRUvG&$U*bR z#mOWRI=aQvHEei7 zR>m?uZ@n6(-Rc(;&c_kP7j&kj^nzh~!2M@Cp3itc?_`X_{ddj}Ze+Z#p7eHx%~iEG zB0(RRl0;&ycJJ71v;3{a#Uj6^ZSQqfoql0yzRx*@;Yu)98SCj_9uEosWzqd>y>ERQVt@~~a>#w;1jgjkNP|IEy136xufJbPA}^YZkSd3wLP8W(Kesj{>4@S3|% zlva3kIwV^Ciix(^HcMShQ_Ac8?&)hXc)9~l=Ow*4b&-|ncj?a!C)|0aai>`8e67nr zdtpstPhz9A%ojJww*HQnzYd;UQ~c22?8V#nrVDgtAIrPvB#>47)sf|%+J*P+eW@mL zZ9A5~iw%|FDVzQw?fA2+H{RVx6G#1H z_dI`oNZpxuPmi@VI^IoA`cU@stG^OLB?9t!%9ITRyTh(OllZAGm$-~q@mylsq-d$U z6A`z)0?N_^uWu3Gxp|(Y-JYr&9yS!z_& z_ulQej>XRaJ@2Hg^##w4wcLp_b-8vd_Vu+LsmvFz>wP*FU$Dexmj8R_*e`}3TRyU! z{`zzA`^xio0?+tLJrR48zme76I`nbM5hr!GlHCcC7Q#%S-FFm9e1Bg3xN~*ak4Z6; zCi7LcL>*h1?D$1?*-_hXjK4OWkCA+HNu;Gme2&Wzy`Ae8EcKklmKNXmhOO_!gzM9# zU5>A3oG!q9LES#ur}Nd3(lVBbS_&uk6iFIs@T={MUJ>bCC1C%}s3K-pXUxyDymikc z3$I<%D#^$!Sm3O{aVY)vl-U8XPp$}=_B{)3jNWo8Da5^q|Ay}*G0^$iLpAo>y%LQ#GaiWjn3;lXQ7SSwYekV$H8VZ#P~0jkkSGq53oDqULe>xWD$ zN%$jVEZhAwxjwu5!<3wgMw#^5ttXQAD+}oonIPb65`N0d7e($svBuZ z6DNoLOD11D`Wf0jz#ejgqe{#nV_1M;v(5g^+8`p%Q(66TSLD?h62d8m`RrB-$b@cHuMl{@oipr8Q$>=A+L=P5wAD?< zueWY5TQO1T;fd%U31`_)Pf~p2&&+WO6aQjz((h(wk{VuS`6AQCD|!i7E5R7UyK; zo;A67MXtvuc!p&^Gnl5MBc|N&^bKd;_7}n@6qGB2jMm2edHGD-TKCGijZ0IK{F-k> zH8^lxR{Z$p@sAneSuX^yb@VZQx+dcnl_z+5YRjH$dkQB%UluE!%dGbH!c>DDO4>`U zIqv-kwDAk(dna;8V1d5hl)YWf#fKl&6#9xB>e{RytkhaoA=^Dnd)25iT&?tHPsHT=G86$O+YP&@3-d(-7)wG!LxijNa z)81`{y3*S+k|ztSpMS8qB3mvXR3x~(`|s?U?PV|DDBNrC+j~K6;u(*)M**|s7;YZ9 zB3kfl*-i_+zneb2KC=3IN6zH^k6s(kv^PJ%IBoT3&lxq}Vht`$Oxd(~L83#4?%}EO z3$m2s=bwtF%`M^Gq_|f0p@i;o1vff@U7f6Po^RmSQYEKHF*6 z9`;GcCeD)D7?=63xKm~Q>HDjXxJ-zWd!u~l=q;}6x86D3E_GU;Ru{d~z#ubcRoYuo zzNCHgH^)7CmK+xlE$>M6I@5 zzW2Q7h@ixA|H`O^3vXI|bY^jnaOT|fO>IhF>4sNsm(_O_s^}}XnKFJc*?h>4b>?1~ zaIRwsGRi%3*R)TXAbf*0PW*tF$!QN4BMGyvE~8bVPGX6Md8W$rCCf zHa(lTElloh=^u5y$Hy1x)mhvrp7ZF|{Ja~_a<7VL&yA^g^i{m@>iUz->$In)%~Z{? zzO--RrO68}8611NFYkti-6vBP&zY~a*WO&7mBb&Px9q)kt&z^>H|4=+d@r z-GX+_Q4f_M|x6>&Trhk z-uT@zji-uk@28mc9<;RnCMCSAv21Jg_8Irxq8mJ1eK#v;S58=)+{&@-$H|a|d*Xwa z>A3o6E>b*`mQtKEcVa?x@0uU)@3SZT@z%E8`Rcv(r>rYm`g44Ov;59*o)gY}zGn5* zd)<53S~iEdGFvOHS^Q66>Ei~jS(3%3i@qrP{xlR{yTQIZvG8$?y3Ismi;uQzYmS%A zarSO}68H6{jL(|vpefT%|L=@GdMem7K(W^32;YkZ8NoGA)8bZNvag=V{%PTl&r4j^ zax9m5Zmq4e;X%+TpK@@6UFBkaYQ8_{P^cj{6GN3p8Hj z+-*>D-$$xUVk^gipQiU2mQQwKZCDb}YIXAEtHk-9PdF3w*2F4>$Cib-Gwxfb6S92q z-S8`ueEcUjoV_Ax@AiS=ptS=}*Mp1Gtk%vpNKW1M;)&Gj$@f_sk7}|Muv;Z@FnV(w zb9%GmJ;zoDW}7*l=C++;0%7~VeL9mh{bobI*n=k_4VmRm@+@A5?mr2%bL*I-enddf z_-5*HzfX)a3QeVhk4#pdSRAYyH!=yTXLy#POjmss{bFwWB1M4)!pLdD)oi-b znr~+7`N_j_bnd13CblZ4Z{B{gkaKbFrF|#v?^rL<(!JrTovXY~hp>0S)vqjfB&FGw zyfL56;m_z{>v47UX|XKMZPIU~N|r>=Tq3J*JpDncZm?e|2kTUm-K@7)C%$p=om6|8 zGd@y5P;%0Qiv=pq1tyb2FI2@&w0S`$FI8~8 z;NzE+{(YTZ^Mi__?urWF$?Ef}+ z_j#dHH|y5EeCM7!wf3sWt3vZ~y~IziXLX(IFE5jOcHqdd{x4@-cDt-h-uu1#M4QOk z4;kI3>ZWWs`m&|)#@f4r`P_@^goP)4__wp*fq&e=9iQza!q$~FU96gSZz@|(f}yFW z2~%VH&bK>+42twEnmWxH-`#oZJuB^!1k=mkb^;BB{(5+jkcC-Prs|B*wbsVba?75`HfZF28=_(vd?JM|N2rKAW|pV&3G9RbEU_ zo}H*Nx>$L*DYT%J;bYdBP3ul{oHq%`{MEDiMz*BEzEgT8kCO0G=O)9ISd+CMM$Z&f^D{d(^C znbl1bZoCPpF00FqiF`fhy2mYW8wfp4!ki}c<4>Yc%4HnGUvL_JUP zuJEiQIsF#{m+Bpfta-L$!W#jO-8Z+L6c3u-k-@2=+AFvyg7qk?LyOwAXm+0K@-rS? z`)(2u9I}g3@#n!K$Eso%Pl%34{q`<=#>XX7wrzQ{_3yENbvB=uWGuH@)Tb2b(E9l4 zWXSiv#HK+0UuRFsSyA956>+XKL-|kSv9Leh0r~8_hnpd&9Ke_Txr2TsG537g! zH!fC6PTJs;{ov?(mZ}Y+c0TtqzlnVGtoo9c^J-@GCB>R+0uvn#XGEs2iMl5D`u5km ztk=ZSXD2#7T>I$etti$wf%{7D7_XTsyjXjz^uCvi^G)kHt;~UyIU&8Z*XvdtnjO}~ z$yB_qVqt98&7Ei7or~OfS6fiPZhB!~0Yl5%KZU*V(drguN3J(LD0=zFnANpqTGnUr zxnGt@J3Uh_V4E-8mvA!CBlG#;?zeW%86JwqZ?Y$86y%3Xmq<8#ol?ZN`dE6L>dKcD zj2@=me*Va~7Zf`*DU{-=fR~4b3q^Pk!oNJ9T{bhx3n* zxV3ng#qjV{wi}3g{@8Zaa=PZ_n?2VPe(XwO-1&Tl<@)vKA`}{@^BG-Q!|-78iK7)C zJuO$)@NBzsq;Esfnb7mkRK;~H_lGmaWVQ0|cVD5no5}R$UA9B=ynFTu96o+NNXRnQ z(opfJduDUX%_}$3R?X(l3@AAwv)*a)>fl>KbE3|yDNi*1C>-awW+K}p>8*KoBGUf% zu4Ft|;Jbc%&9S$lA?CsF-~Sg@TcNTb>N?NKx%bZIeoDx({5V76oshPm18e2}C!P|s zc&6{sNbfrPJG9wx!p2)socF?v!-~HK8J_ydc$n)!^yUX^0!prEgygY)e&T2O+|F>jPE z_pNDesXfqEY{Y-}WMqz_hj~t;mBo$S*MtR&^krrgJUVo2%`T^j&s&lTT57w$%4h{$ zG3;yIcy#Bn8HVcHy*$$Aa+WhXT|D;W$!?VbgC`L&zE_WQR~p8Ci;O=m?VTki=J@!$ ziO-Emng@L!-F_&(Z#mFP6R%n>@GX+a4EKpJk$HVA zcY)EyV$+WG39IZEoqiPFy!oiKOW=&>6L%{*8reHk%?(%a>9C66O)qveYgqi`E;B=P z%-MM#w#(P1FmU$qd$cenw8}NC&WuTkHV>I=%^)Q|eVVDw#P%P_97`tZ&0P_2{pMs@}-=oWhHr zueq09nq{qb*m4pZ!xUZB^9ur)c6)D{BEP-5N^_0iApxTU0vdP!E}yeusrHSlvQeg1 zjiUORQ@Iy$$S$1Ca!WK-=~4QIJ)D29@=jLuH&ip>);%!S{0LL|@xGg;yn;&%`~=SK zb=lo`p)&BcsP^-lho&1nhz*w!R@0gKPdo0trNrrVHVvu=b~H`Ya7w!NXFsMiP_hdn#*w3#nY}UsP2~{}t-q6ugGio#S+Btbc+-&EHvvW?SAI^QgWO2cf zL)&>boLb~NQK09h25-{CYh4fK@K0MKw@H8LJkHx^=jDVSG@SZ*o<&9B#$b&*tKR&( zzP-G6zR+`%!;D+QK5S=;`_61Jd*TG!|ND{>GV+^s*^gf1VfLF-CKBh;bE6>k_w*Yf`!%s==XM-kU0dt0qj7eFi{qBH zzu6A9&i{G2c!_nc%Y`+z>HZCWZ?kR-UAH@a?cTSZv}=d7U5K#YwVXKJ4ZDlw-KHLEv7P zi*Ar%++-Ki`nmg0o?RmR<+4Oy?y)HglDL(w$;ZjD1_;J+zrA&dwJiMW71i6Z0Z$e; zm7CrwiJ9p5;Kaf?OJ%y`T};m|YusPv+F=~R&~2`>DsgJ;D%0;DK0I7%^`kq!EkUZ% z@1 zblGI7K_y?|qF-~?EV9ww6gBf<;h!G~1{aELJHJIcy2$3PE8FF2@!< zcJ8jwy0G;g?=s8v2exLm8yn>@%ssTc*eG!B{xn|UJAx_KUB&E@`e%3cyzM;Lb%FEV z8eWCHVzRpyt^TUCZPIDRTXRC6d3f;NbJ#eI@rc}SA-l#U_Wc#LA-yf@7YN@FO1r5M zKdoHN`J>4qH|B(Tg)_h13w0I^TRo^=5;d^xUzK)-V7P@G#IF<-;Cts|*_GGHIV&j8Nw<1Do zYTl^&&T-|GdN=JsB){y3WBQA<4_V9q+x)30&L~gz`G*TOQU6LdS2As#e|I{!82{6{ zpG!q;j{c0eY4~Eh$%Zxsg?0XhTly2S7j8CWW9puIsGo6hc)j$M0J&@yA= zqnOIxSv(6b|K0h}=-$z@N!+5h{NFmu+;3lO$*(Knd!(0Je)o>r3z}S8?TJn=Iee3_U z;%n)f-(D9rzA9P3wMIX!sHw0^@{q+Y@!VG;ht>wDHtST`Xdh_jDZAt@iru*TZ>Y}f-|xtm9~II>?qxtGDZ z^VZ44Yd+W6KSWxzDsgRG5`M_@&75tHm$i~JeCN3_T$tM)>hj{=6oW_^yN&;@ad)3& z3aCEWS2ES@(u3Ouf-6{yZrV&doNn%FdB|ONt)Kz|FwS!7^;c_zHH{bIun)zd1y3|pX+K;x6 zUK|Sk`Q~+DHM3Mo_!QMOGp1{sG53lZEq$vevOC_~^5JinZ1sjiE04N0e6a7%;!5As z-w~p`;fsLKo^v-kZBH6Xuxsmm$~;xuH#_Xoy3I1me?Ao-V{^Hg8Q5@tck#if&TSSC zmpN4w9ljgBU**Yae~zF>PivobXzkc}V8V{3PySwVe z?H~J+o~#L5JR{%k^HoN9=Y1#SDod01=IyRna%1jaHe<<1Js<6RTVJV6dvk4pkvnUN za>|+)+6ISi$`!qSF6OZQ{i4>Qo^5N|bb3#Ie8E+?`$^dEBfGDu)?5^26|9dt=3#n| zzeA)zQVvnp~P6u z$>&!scxveoH{FKmwP5xiRkJR^-~w}p3E`%j9eOggni{rwJUC}Ccaf;(I>x|mCB;`s zmG?XIj1qSXtQ63=@~bmHrLSU%=ZlpaKP|el-D1vCvt!5F4n2K&>f`mD6GfB6o^d30 zNB`S)_k{PluqWQmx8}dyl(tZN`ZwoSri_N`Vh==gN!&azi$QJ9v44fn_fE_)JUsot z~=&$PWQpL#i7qM_IL>jur84Kd;08S7iHEKVWsPK^B)y@yPKqc z-lwH_ljDF{o!_^U%|AJoCl#b#6y6zknp5b-_B{uj8soG!OC|csEjJD1Xro z&qK^(9+z~i4tCNhzRJ7q*@sUH6e9v;FCR+`U~88DrPsV5SI5hf0KY*FvUA9SbgBiFmTu ztmBkg^W83&?wPEs4{`n7&RrBGB7cOfWj#lP!!uSX+2c=|J+CtDfAs#+lV!`)Uw3G~ z%xiSEy>BUyI7_yp_j7ja#O~`djsI^8RC>FfER6rt^?Sln?vpN#|CdZIFILMqsb{dW zXi2VElHF`4#&5-O4?`a%WF&nw3BEC7$>|My!pr(*=H4xsx8cCii{cVDW#&Genqc1X zcjgZf!5!OF?+U4?uiu`&VQx5w!nRrFrlCJ9_C9HQIiq#&!MV4svX^gJ(*5m*b&>6-GfDaqqdoL+-_#3)*1gUJXvOPCn+ak@BZ3pv){60|B0+M63YL3 zgKg>W;G>5NkE9i>ycNj%(*QYD(E=cs0LI*YY!wOJMh&-};wBHYJ73&lc4JR_x#xFQL#W%OIeQ|jzHExzJ@0*Q@sYmhgwn<*W}^s?SYqeWRbV=H`(zuN511p0Nt+Onn#hyJ)*k%%a%|=e$=Y zKS~cY7Ae^mcr2fL>z$eM=DvMNcFq1}VIO20S0pY`+Q#oUGcIO9WW`dq>i5w$^O(FM zRz2jqx?C_KlFLX(FeNsj{xXYhp8n6vd| z`UZ)*6kC`Zu`RxNDNe(l`Sc_6h$+6Gj3ebH_sF`WEzmmmjyJ3-cRw>z{{si9MK=#m z)|gPZS#OiSoTyy1;_gp@{|bcJTqPatq(zO)r15g(a%Ke!k<-`=(!6KT`f{E;x4L z-AUsp@yEa3I;-j}JbM0Y>np`K2lvfg_Hk>UVCa!{laF2kDFd8WufOPyV8 zPI>*mP?dcro@%x@+!yK*h<&?$p0UByY}L?f6KcCTeR}j)bC}-qnI{Lj@ho7Z@BDaA@ifH;yb$jGtE6D^6%Y~n)r(wBR*8WS)%&d z@Q__yd~)vc+QZeGngb#e&iTpBzj3{Imqk}d z@E#?HrnVw=2KDccTX(*Rco4ZSQ#VbIzghP7i@%ZeI`a>`oe>)Is(6jt*W>g-{+<5-tj6UO67Rj`oz8)X}4$F zc<`I8dNVmG-S(4c3-_1OR8vl$i!+s{wj^8%-t#m?+9~luk($S;A9_nZiT-b}GPv^D zZ}Ht3!XM7>VQ6Y82-EqvYS*IYyEl5?b26{++q1>BpEY5_p)%2&_wQH={_!#7O{ki` zN?thG;9c6ut*3m~ZnXPoSeIZ{HS5i;bt-w+*p?e~Ic_R=)28mUIU(3td(F}>XMOEI$UMjy|*>o~$bKhMh1|Ll~ zQ(K2Uvt*qdL<2d}6=oh_`!{>TFTX6-((c1`mJJa%f?L-te|%?^%mV)juZ_GtEI$TL zyRl5b$uPWJ6nST#b*L0Z$2EeBGr=%n_Mkd{A!Zj;#L5zaqtotBy{N2@8z8 zpx7XI(aQWueA5Dh!ZW%%JnpnATsTzBVSX)>KkE@!8q1}cEgNPl9<7aTXi%J*oU!1R zY<%e}y*10ud|k@ScB&y_S@qt?-K^zt@d;a(v|3Ddn8W+*ou{||ec4U=kI&pIt}&VfjY#=8b1oxAN|sxp!`&f5cjkd(37(EzKOx z&f_wV{xIj6eN{-fril25=S^0>b+#W74Aa%|nw7CBsqE>c*E-c#H)IDtom(0{-OqWW zMNh@%%UMpze0+T|7k0S6{%|%r$~|iPqWl8Rb)0!weroqVOmu&wWFM{^P};ToChHTE zqv^%=dJX3fg$MYxgjd)!N;eptx0jA6-=rtS7~pG~{bAnnI~$Y^OcIbfQ(`{P==?jr zl4U*{k{>c8O!GW?g-1y2nqBo4m7?%zyH6TkynK4y?xT(YrRi0228s&Ce?=SaPUO14 z7JT$>aC_q?wleS2&zPLT#pi$LJ9#56%JoH#GD~EQz~e@z&eJVtbtm`Dl+Wpvul}iI zvZc!N$hHsuTF1;AH`$;2lK5x!nrkksDn|-AEX$59IJElgyUvc!$3*_?O1+si;iq$6 ziLpxjy4i|&`Rvg=CMa28OKIyz6csej&b*>KC3 z%kJ3h+!7o3%TtzB%c7-rjpThD*Tnl$h7{=}pE%MJzj)~2@lzq{=u}W;NTEil}XtSG_d>s!j*Qhm#yQQX37`TMx z(e#E{P9qnvbtvj!o+B?T>dQFISzMpRCRG*3EvgBTpjh zeBGAKH?!uPRkat?NIoL>=&t6!YGxV64^N_)Qtd1~HkVuJIlHbq`cP;-Phju?i*=3< zFGTO}x_xQuyK}2A7SzcwUdz9duUMv8)VVc#~5zkbWqB#+l`@Hge3 z=`(YZ(QGw2zV6T!ELV=0HwsMis8~5o+Md~7o?lXCVSLlHL&v7bFtaQpqU zy;5s!?=`LcVpTYg%SEkw@yt?8|Wz&dxu`H(dh-IDf;($*oXWLvlN*AkJsckID zGC11&NXM?)oBza<8>!QbY-3){7o z#l>wRrcYTm?Dd_loyF;Vj(?)}oO}7dJRXRB6u$X;ajeB;HkL=){$0+hhMNv_Yo9iE z2r&_SX>7}tfkey&*mV9vI z#U&1V#7wzP{dti5&%~28$+TO>_~r83JuE_8C-zQm2roZU8FTc|-d!;tSvDWqdc*43 zq=2qDKldor@T^^#s#AM9aKo#w_j0^UWbD~5*=a2k*YkaMvyQu|Bu~iZc)oDroR?eY zt++Q^*nIl+?OUgMM01Gg>m5m5|Jfu>0`hI%*?0~EFza1|QiTcZI zYDr^Wa#Wr%euWW#U(&cfBb38tNPjOELo%wBTQDn5AI?AQ-G@1GS6bgw)< z>xZUvPN_;7lg-hXUCQpeo4+h&le7qYE_C7FTW=x3BKD}djru014faAo?usKC=Jcl=ZjK60e=?~O-qPMlDmyQ<~M`N_W3v<3GOQr*38zOx8coVY5n({ZFe}HO;$bPbeOZZb+6gfirg;y zIa~R|i>t#N{LQXEI*@Q>hvaN6ySgVQuV&rd-|O6cOvK)R)r>po;-v5AWoLK4pT8y0 zBJs(Klb@D_Xvd_rB+36?*7A;b@oLYT7`rZrz&-H~{7$JX1&#oI6MnfguedCQI~ zA}ai8=~Fdrd>-;fiyO!Jjg33>Ar^ba04W2G6QIdNnW>svlKXA9Tk$0cptMAvI@1Hg8;PC_UB~?!LRS)at z@p0(*O9{Q-kn4Kmk*i?+|DfuNr|x=PEcuXg>21mMOPTJ9vlzB~(^6=;9TD5dpz)}U zYl$$ovG|dTx1_!&%U|AXrQCTc=l#kk{$u;1V^Wt~zt@>LM^a(Aw%R#O!*_0lAx_?b zMiObFYoDs*PBgx;v0FAbaC%S2eFo7hmL`v9P1=yCT^JzsC4av3)4LMO4fr-*D;Hpr z%hb`S5(u4ca`#67=dJvrORP(|pQ$-MU)OV^>gdVvgqF3!CjKnZ3eQZBD1Lm`c0}mw z!H_u#s!zIJ-Y&^hJbE_wNa;R9=M=`p^_^>?ZMfu|=KQuu)%_P~QQt7Rxw`0%Mb8F7 z9qz27eR_6_-YzuS{Ul<8%-YPn9LM54YvfL9FXUyJxuk2C=8wsjE$dioQ$rofgSRpD zx;@-~)+bOwa<(*ASK-Vbp~-2hQZFql^mBaYxF||w)}J*dl?9i5@5EeC`x|X>XT~eb z<8$n5N)uLWDEwfM#>kOo&at>&{@#RcJ8QFJa;C|%r!hXdnsFz*vSshNw=KeZOQ$cF zkupE2cPnS@6N%HIJGL>at4v zYsH@+t@HiKIyN&pwpF?Y)lQGwZ*RFES$SFK^uF`a1`j<-)ay;!znCu)m*2w2kgz{W zeoIHvJTA+By1c*d*+>}b**LZy4!y$}QvY~P!$KRMbDLx?fBo=O!tL7MU(4zZHI+J7 zA1f?z$UE$H^q}vCQoTunK~jrW*FF>Zc;dEn`g4w5NmZr?i}!@26lzz0E55Xu!>H~5 ziCdv_7TMPYGL#(Tz2A7NsxN7GwxGa;O5`W#$A42239G{zUTR(YeKVf9qV>2ho6w>^Zk@B|mHF454-~&F?tcBtHKmTZ zhb}B}us)g|FK==FAa7Txxz@RMu32xqCbz|UtgIzPfndO}*ZOmTY@Y zzJGdv|6@|v+NNI%pEWFJxi~}DS8?B`ShwYEPgZXB+?ytI?x0^tw!8$B!bM+Ejqt9g z_4Agioh>`M{-HCIm)$P8HP?2ONggyS-2eNakn7{-QoAcx(l>WG1KT>mNxUgd@02DT4O=1n)p7Q@UWGRwcb>7@=a{!)Q~bw{ z#rLi+^bERt@bsmRTSDvue0p>?B}ClvFpOWsVY10yc)|7WVQkzC<-Zr!B=9zAr>vd4 zv-^6+S_RSP=Go6)RcPEU-?Ti@u{XtRMp59Zy~-YO%e%VO8&(LP*_CJH^5t?)lvqPV z+xbp@ruQ>Sz27`LxIwBy8al`uMWqb&I*J z^G2s0emU`~mu`gh?3}i>@}1qY|A$C?Ik5cZzN`iX z)!ET|b2HC)b#E%;6xf-T^Dy_~uxOkef;T$jwlGWna2JZQ=O+4F2o_TBJ% zzE>tG{OvsPYt=z%liDMGxY$_}_bG6t&4tGU{rH zj!1P_Cn(>(>PVXIg@amLx3|Q_Un(?JoosP*9;f5c%@%J8b_A?bn#9Ms-*s#B_mj(A zHF=wBCYco{eN%SVJJ6@-By3-BV<&?}l<-C0b7`+aEznypn$lgeX~E~5MF*d^ z7DUw5XncuIIni2rwECh($80^p+1;IjGsH}*ICjoj3f-w7W$31Y%%WQvRa^zsfLmOVc zkH;Ts{?UvRRQb5;>&TKA&w+K#*JHo5m1^SWg)Dx7#J5&a_e z?&9oc>Ji3uQ-urN@+{UfKWnXdEPX-q{epJ4!uG~XYzBLU59|0U`!}zAE0WsT(ej09 z8lRTu^^eWUY`ly-n{wXmyt2^OWn;JT&MPJJ_I;U_)@NaP{Fb>>0CVfkguh2xm-PJI zeD9Xwxr8dIUmR7NH*Ia0;j;Q$|aeLs`IVxi&!aaGMFze#^O79p}fkLSzX(?^H_s6-dVKk z;|8&})y)$$Ph6^cblp>;HT#cpUCttjlX1thulGL}F1>D?o>;$sZQ-NxB*tHRepfS3 ziMY^X`ug}UhK?U44_VnYEmR%CgRPfXZab|OD)k~E(K$e=RnYUBYTm)CtV+5O-tmo} z?oC^n^X@?`ujY+p!@!o6O-;Kh%=#X%&G3BI&h_bf#iwaX%N=9R3h-`_6u8(C&@9Ux zQM9EZUWQqsCE={{k8}5L%zVwg^UIAGxjR0SH(pw^Ix8h7uES!*JcCY&+p#*&*I3;V zEcrZF{PL3vDXez4_jtKquX}paF6c+lS-&|CLQJO}o4ZxR_x7REYb8AQwyK`37xy&S z<=oGrdRdKe!`pRi*WKIZzBBn}w_EM;nj1$yto_AgnylBGP_)6rzu0lbv3(aOeLfO- z;>qRYl(3J5dminc_u*{6)xMCG@!o$o=IvCBtF!36c<5EooaVeYf(dD!xAfZ6&Xj8( zb7RYR#|_P#?SHWySj)X6>7TQ9iD0#R zw#te-!hf9~8G1~7p>K6Duw&Zt*@YYpJsfG%7{lDAv#fV@Vm)?oa_q4fsS~ajv@#jB zo6PDi1+esZdA&NwvG|IiWw$}-^D9rB_w0IHnlr_PtD?dCL*WtD8q*1RWpV07Q?FEB zE7Uj8JN(R~Gut%XNb>(}`%QZsBgC}CkH{`GkxI4u)GRCbK%~WRTU(dfDTR<_e*2_u zJgKZan5Q1As=)QZ?}E;=XNOZ}7~ffXUFGQ`9e;(a$rqhW)?e;u=vVvN`(lA6lVYG? zBCEQ47~isP{X4571Lfvgn;#c)o#!W3cJp;|FV_UKokvbPdDRIw=UK#dcm}JMRzFKyzd}7?Uci=Vni{7% zjutb|@o{bQ($C3%xnTCTqti^&xdV;9o6Xb?I^_R><2VNw^Y&{s@-yyfzi8Fge*WUZ zv+TvozJ^_Io&CD)nR(x?O*6meh4Jh>d8ezR$eX#8SND14CzX}X;yLL{&9)wi;nxdm zsp81d;QhDpV->1B`YJSGK-<*G{@+0F7V)=(IF7;XGr19zbguEv$?_;)}Hh6kt zZJ5M%xo=PU+Zuo7ef!w^Sp8&5n)D6d+McZnyO`E&@|?rt!7laSZOW>ZCcmm;d>#~t zEz)?&a@o=BCDSyaeV>jyPU?I2L?F&B&$n)2TK+ue8ulwW3tLTZ7Clky*0x7MdKZ>&1nfe z`I^Oh{j47oxx||;@L!CH-_CfcxT||_xu1G><`K679glpMYb)oiWocO>ZpT&eUf%X} z@#9_J3?{8@4!vwM5x0-$e_wWuQaya`f=uh?wPD?# z^uh##pI>?8nPtCcOMix9+@{kj6#j~BE4;bUxM#J2Wy6mh?`6%@GSZ5D4jJzBmC^R= zl9Z^*o~4|3*s+~2k*(qV--S+>HcRcBvhL;IM5#Xyme#1PYkvLW_3eFnLSbioS3eNe zZ4f?E`~E?g#l0v&lO3PhrY)OvQ}(sU41bB+`bqEFq8Bdw!Nqg<@9Wx^CVhEl=9oF8 z*&W`H@uxEGWJpf*{I$+6He@)+&Rp!z8@W5?v=^_8PLH5{*#pV*H=-F=*%|CGKIbNS zmt|h9di<(n$*d3Rhq)?GFqE7ASh`VrM`BpXj&|O|xwB6Gob$6x{Dg#^Vwzxh`I|Q? z@j~C`+MPReHS^&Y)n9W|Cr&AND#hD6w?OIayJx;^3^{_uLP0LmLyo;==-XNJJ35a}zg|6&%Y8}Yta*L?1|5gqtXjQR zEdJl4saxk&sIYxwoZiu0z?7DDJ~wAQ)0`cjbDky@M!j4}|+^6vN*wkYlG(l6^{=vAP3mfDgw5i75@ippJCG3>u79ok`F}Q- z*$eg^`W>SoU;RwIGJe1BB5wu#!Y5aRR-3RM@pj+v$IzO$^+gF{?y*Ce^unVDCT zWaMt~vk5+a`|HGP#W%JxR)4~ab44Q@qkKAN3x_4me)!O)+|<2|`EAQihIgXebxrKo zrFJyyHVMsei%W}NU%Du2V{RN19XUT;IQH@thErm>^W-N}|LH@l1vroIg^>+Z5#r?SN9{OR+Hch0{1WQIqGy}4u1BvJq62Y9r8 z@@e)d&ejnB*7${^-RM%|UekuZ%x3T7&$==%IB|#ZS3=R^&7J%!*4cDb1#kr%+mRI5 zxTNFGh0Cq7X9Fa9u0{78d&8-+B4!JV0^8!c%RCdLZEKq;u)ngUvuNt4$d-+Fm7dD>bCe_=5e@pG81GQY%>H84K?l3U z16CWY5+2FKd7YUm<-aI;h4`hu%}QqO?>rPH&D7pH?eXi)J^w$H-ktUL?Cy_>e@f1r zpZ4y{Mnx}^gn)+{3pX>YvfTBTx9H5nj-|FX4G{~)^%(WHXn`k+}13lGi~npAt+{lS~}(cyNj!TVh+O!aIX&N!wVcD-vRB7fFdwQ}R;IfvU5-0JdP z^Xko-t>@)6@t>rRe)#%3;q!X-Kb<43`}Ei@x3dx{v!-U6S>}~4;Zv?({f|M2@3>3S z`$YeTHysc4o(avk&?S<(?d#=pfBEzuoH*XgcGG_kQ_8pP?^}%~^(@-jxuRsTt!BWQ zOJ`J19xHL`EXu#U+iM^5*`=FB(u1}0-yXblWnPxSQfE1@uHfAqMoV`n7=ORM^Hn70 zv8#R*G{p%$T($xe$?c?@ay6)4r)tJDY|mdG~kd)Yn|Dfr1oCvSkY%$+f~du zPL!Cbg}hj@wU)11V?(;X*mpVOP^K-Bt7}DW?s0Xg+?K;M$>hz?2YLS(A{{SJTK27L z-s_Y5wm3c9()Qtq?X${4r~?^@krx6Aw;FU~SUO$!EFv$ml%p;(}GFoonkJ zh6n6g;x$u={rdHbo5D7@ecx4i|F6$I!|W|p4Tg?kB?sBf+$8u`-I?K#`+BZbX`;{M zxD+PVq<+gKUH8hOyKaXH)Moi6K3O9z|Ni;Qh0@R8onyM|dECM;;K)>ig%;};RVP~> zebnr9sE|AG=oYC-d+)rOaoF>bUZ39VrXPn^WvKTkvu*CLyClXDU03#KSMy2Jhf=!} z9{!SJ6Tf@vZN&2g1jw46ZpBt`_vaQfpGB{#&uXo`> z%Ng5$ZQVBadEhVZ$$Xz5-ITd`CiiZ{`X%9g_MW9h7ny#N8pMq%K?ht3vPnq>R!dJCxs)x2mgWGd<(Yw-ih0`hR1C#kw_FBF9ZToF*2g}|E*Djvc z+8m`?Z|yVLXTck$iMzvnk9nQ=+S$Z*!bC_s&GP%$G5_)Z*gtuDPR|hCyR2E;QlY^8Q5vJfPK`Exz0gGF$%(0|O`C;O&iFMq zTDWT*|H~0pWqajxVR%J;{jP^A49&Uw+W#zO+LF4Xy};Z#@r6U1=Hd_AePf^Fa9;bim}L5tW1R2K z=*w^)=gFHMu%VRm|FrM94STe+)%fk^e{I^Ecj>J6gSc7xu1B}-HT-r(jWI)d1KSmjO<9-!w1;uYSR3Zp3tRXnh)&^uSK<5M>C?K| zv)8VEl=dm;PX4Z4GrBIY?lrA)5f$w4Fnb!Vur6r_x0V#=n&!i8ldn(7^NoITYr*cS z`tqG7j5`YtO=ivzj5~Esam~Ws^*&o}U()k@w%+h#u9eP5F2)U(=4U1(e|FEDa_Ob& zC$GB8IU2kd_`N0tz2ADUu<%M%*DPrnhMOw>TlrWFHKjM0?>um9OX&42EB3B=c-l+8lqW7APp!-Wiq>r&cl z)>LvFAy+xaxOZ*koQ0jMl^$Pw8avD2eZBe1k1?~}UlE#ewENqn zIZZ-4OrMu-PCNHCCCW0kPOPrub`c|+pUhe2l|416pVob)~xN4>Y%l_s(R-F{AHFP5$7)7^J5qeg*mo{#0V zqZ_)jgsgrFb{d<;`!qk8tZ{(h#Mc{62}&aDY@dCkG@TkIdahFccp>kIoaT@Jf-aq| z??YL?+%QSoZc(W7`mOBEIpG!p4>+3Ce+bH~51*TMJKHl<5#DN8*+JpOp& zgI+;rXuhsj&4!I{?ky`jsP#{8;qT-I zx4!8nH`n{~?pSd4V4Qp1$*_l6ag3+0@p4aZWtMVYQo3aQg}Y{&m7S}7EzVTl&ROoa z)*z-oFyWO={Kv^(UU1sR^WDjsskvN#dw;xl@T)U-on}7%{?xn3e0gwy{##9{p4>xE z{pK$%zu~zy(tUCnch9^Dr;TpilG|g&wr0`Mi}hc6H{I4fg97>aVPCegDHEd!e;=lB2xNQY3-=%T1&ba&bgngxc2IE2gS!{c&IyH_Z?R>IllGvdX z-L(o%yRO^(<~}Rv`MXE=o!;7~i%#6kvfeFX=D$U>z44}AU1OP*o0VyyzugmWm!7jG zh7FgF%wF*$o%?s)$tIRHd>76B%#M-y@4IBh4v$AOvU)vSa$MstGruef%nE8b@!oUU z+yr@1&z>*qO$<3~El=)x+`J+4%n`$DZ}p-q84~*{MH_Nuex9Cdv%_bK>}-~~caP3H zdu;ZPXQ9u_oV`!I_gr9@xR6_1_tWMTOtxXsvje}*o3Nz3Vb0^d_r8iu0mSeCbp; zTkb}-?utGK|AR}vvmThC{A$;w>F;a^bNz|J4@garQGa`H5RUBt@&fkAMd8XX1 z-u=h6Dwyuvx*(o4Z|h|%?Ym`bM3ukKy})r)J2&-wYrf`(2X}XtZDyEee(H++aod?w z-ahWzp%`&`U+DCw)oMR2+mC2pCq!`vqOY?%5T2@m7(FxActTY|LNhyh=WE-@JxbZ}q8`8JC~j)e~iYSaIA{@E?}2}PGP=VVOXXJod1gTs+2XRXTKPW_!S~J zYTVc&8@{;z?qL>#w|Blrx2$7#N$C_2t|W zr}sC=;(gjRMNyu#$y#Ar6`Q{M%vU%yYrE&v3WgaxT@o)Y7Hlx)P2;Utb9djH?*?o1 zw=G&P=i-+k@-2DSx7)`SKb!2Ht$$Xk@sm}wpSrW;7@PI;+~=B&GeiYde_jxN=~vg~$e63`t9Q8Tf+*+I zS!XvVT0EJe9X|c?1A{A_?ky+1OkNo8*we{SU+X;kXg1&S9lQmC&n-nSSbSS!yYc0Z zUwbyQ&lFhjW;yreQ$b0y4h5WJUUKia=9i_?M^|+4S&IKz*0tebjN8Vm?>tyM`V&HS z%3mz~_}~D8^K$FXsI%OW7xp$bI~ALJy!7(%;ZDb+1?N_sbag$u@06Qw*HO-G6FlFY zGe4S0x?^q*fVjBfEPyW)_uugUb9-+hC2**ximn;!g<&}{7O3n;wT ze|z<@JhP6emPQ+1y{h;SbZ1WO{O9|s{|T?qW>ZU)@0b|AfpZ8vbM%tb|>-w%GB)rPA8y0vp?UdqTj%yVL>u28KsJQlx@Ah4(`0|Md zq@|YBupijy_n;_E`5%)eYdzo1w3V(N%dVveu8}O~a<(f>cr)RJhk51O?{D?03>Ll! zl36R_%Wfq0;?0&#m2)``SvSaV7rEPHd;dN2RkdP&=)x=8_V6j(ukik-#$xJf`Q%9b z;`d3ZdkgC{1VonVF8g2_+Z$sPZdTnfZ#`d=mwEBz=O3i+R4KWzJ_YwwlryDSi(v&k&#^S_Te;U7-e&e(SG5_65x*`3i=GS2Qb z>k?RYh^yb$eXuTW(a#Hy?&(X||8m~fM8WWUmC^3NMQj+qbDewcYx9?tKX8oj~abH7^uO^>>c=MZA0d2ESdQhX+(`|QWpwtL~PUtD1LTh-$sJZW#|(nm9TURZi* z?mrnWy6J#Y(iJl;wVhmv@$FYseZ)FG6&Lm$zkDZm!uEsFw|Gf}{_VVPXG zvYW~j{{IX5txo?u(!Z}o-DT4LNT&rKEYE#36TasBt*dN@jB8Tsccz(Jm%P7Oz!=8Q zt}uBr=QkydN9xsw9g0c=Z6{i!J-8e?W7UkFdotV4*Zs(=Yr4Z@p1f?m%84f?0%u<) z&*znruX)NbLA^7|-$o>?qsfF{*T=AVkKHPJrgWyCHmv!k^L^fLX#AKNbnM(U(MTqh zCVl_6a)Od~Au$xAku| zr#ye!X}fzV(@FXF+ovyg*{0jT!D%z|!mf&npcvIZ4LspBhH<%lOFS1nJd|PKHDO)F zG>IQ?R$XW4*`Z!0<~A`?$zc84x=)v1y0q>J~?d=C|GJyO9C)T}zqRwA!LMx!Cm+lwQay(~ECJfY^hkNE!1&cc_U3nKKcBs`lnCyiI8i(gvA$rbDO6`m=xPjxpnPqHGhfTBVotvODAnp{F~Y9a^Dw7%68`Q zulspPg7Mys_zAh@k<-p~a=qxB+`lqNqhX16NrUFB$$z|pESbKu#AV;@=w2T1cIVoA zY__p7CpJHjJh0P=!N6Rg;~JyKiM$`T+>g54;{LOnQE{bk^Y%x2^JV&lc5Q67)!ozW zdGx{pw=dy60*lHII`GI$joj;^)w*zIqk)E8l6#V{?9>3YZ<<_O&ki*vDYh|d%$XIh zBKpaCs=P^qNPvHuo*v_!CC9(z_}K3#%yh~)uVr3r#p{tX%jM+4OE>vhjw;AXe>>Hr z&Ni=);cdvGiU^Sw19vNdn>z&c-7juCX=2{jVo~Gt?yYfWXNN@4^NMRTjh*T^KijOS zIcjd6tjX}^z9FOgshQjp1y?fY9J-OtMIyJM7>R8)yyI+ej~ZPudkcwND?W91jsdzNhYynV$^-^@o2=YkjP zt_+k4cb`!r{Xm^ngv0gSv#NMrL$>REI&0gue_b}qz~TS4{-XS|Q?Hb6R?YkJy@q2o zQ(=8>R)ooG-Q`oxaYns*`dh$#Lujx~A?xA0C!)V+_aA(7Y%6?B>>H2oe{Qtfx`O+8Xu_ebb6LVZs4Tl4yQjlNfh)rKrOf`nb6b}* zYAu@RW8?4M;u|h7Z8nGSYwL_Oy%s)m#bd9ioqnaw^d#xc zW$!7E;;q624QxD1i`zPHBpeQ2HCslRQM$K!a_@ru{%cv~C6Yf~Ka$*9Xz1NMu~I*& z+Sl^v-3diyowsH!-B!eY@krQIAIqd@GLy*$8DR_%b0@7mNiay)!mb>*{N?^q5)eA(5%rOFtzWXj%dsFysY

fn4tc9K(UEw(Gj)t*SYv`_5jA?#$F*zKGQ_gMVzr4qV z^Bdb_4S}2G^=5NSzi`Z`UeEJd_;Jneh!2m{*3J6pbNQ@%*mPi7`meb9 z`@2ud3OwyLSlk+W;(4apJ?Zlk;;$uN<~n}ww1RbLjkitu-QI_#%nu^ZmYqq|epYxV z+;v9KW!|uP7Z+?acv-lyP^bFR!I!H1C7pi*>znoq7uyvrYtWoxd1_-Qk4SluoRjA9 z$+6uWhO4f{a7*^@^(?!>cy9L2`9}5XVLK0BI4a`$^2Se_pJ&Vax8AS&e&g%M;y2}w z8y@WpubP)0KmW$_g~u(w{l30kz5KrA_wIK~G+Tp?*PK!8JHP$;*YuC?=l!q!b#nQ7 zf4jQ9c7I>od}&#rKh;X@RR8-cTWjh&Y#TE6nYGD25Ls?(cHQXSY>(%bJ5B3nosH!- z5zQ4|8u9En=f_=r6B9!!`<3?i7B+8)+I;kO^PQ#g+dt^k37)9-Q}}lM2f9*5l1_Tl-~|(|KciUnojkGcCS8 zqvP3)w~fkmZqf(dn26hC+V-Nl3!W!3d#sWcJk`r$72xt=i6g_Eztd-1 zuWa*~$mX!Z=cLTq)f;vQ+}3k=oGZIbCGh!)HLTayL@6!570cBqpBbQ%y6HIUwo6M2 zCK|7F7L^qibTsLBZVcb^pY_({9xNx$*Pu_EW!u z%jfU+m;Cqc=11YHeV;EC_vA&0IN4SHvpsvj{k)`nebp?6pT90{eia^Xd-llo`+MyE z{<(a;zwXP;*XI8k_2cUw@c(`C^{M|AofGHRiih3nbTrr7yzGtFi`az%3syI>e9zu; z(2D!@%cc92 zLfxYd<7WjnE?HTtJpbH(VH)L<#Iyaz1B*K!CfdsLwN6&(Ij(kmQ%%&`)NFGBL!aF< z@3-|E-jcU<%aTZw%qm{T@RqG!RqJuooEgf=RUsnEJCc$ZGd~o1BvSG{mThipf`0W& zp&LiSp7=AJo%m|PBqsLGDI3~c(>TSK^!To;S8EOzbDC4&FMTX-Q&DHsy9S@@ao@t2 zA1)G>U8Q+GYxg2+&vP!>s((MY86H`EqddNF!u^+3vEM8-F1NeRcXOX1)b}^Ip6!oJ zSc-W^$(BzX9~ZGJUD&?A!t0j%{e5XZ^fKzh9Qm-(&at%jLp{)9?TN^!2EFe2;zl z-|OoA{O8{r=i2Xe==%5Zwaovo-{9Y<#! zxx7t}|NKK$qpi)K-mokaw10g~bom6MP?n%?E^nQ-ZsS}W6quNx{_wZ-_Ld#FC0b#6 zU4qvw-u<#`>`1%$&N7E*hxTRuBkSJ#m49BJmiFMIDE{`ZIO&bn?WBb@R+%cN}X z^EX__&l(B_o!h{tZt>pogr`8@{wp?u;hdlMY_Mpt-u%=|wJ-Jl6dUHHwS~>5ryD)P z|3#jRxSVaoXxlTdfiqi*J?>@F*&EYBB;r+AKYd}<_&ty9isX!63~E|exMsM#JJpC{kh-IaIOeG?K)A(qK`j=(bw~5oX`eQzb1W^Ee;|({F!pkPpIW?nREAKpn!wA zjP|zMi}a6gda~xdUK-<$xpNPu$DL&Bo+v%#-?ODEX-z9WulHQKdE@#yIy7@X;?RfLe_w%(m z=i6}C{QsN$TK)dMef8Ho7S8tm`lME&T5HcgTep9&W`5cKj=yE*vYh1s;U<~?uO zdhGb86%vz*w@jHFsrF;)somYT`7g*WI*PX1uAnktzUEe zpV=05CG~&%x~1n=d9fUSbg*dMCH9t8GdJ8dJG?ybkNuBxZHHTZcFOoPPF#JX_1G)L zqsCi`>@o_HnOm81;=bPqnD}Pe<1IJiYBa8B&EY%x?69wNV5wcrlJg&bZam7c%G7^` zt%c;ey@?wZh^x+Dl`VPcz*O~*CR1{@^NED3o$oWAp|>yQd&h)AGx-FbRVNb#>i(2E z&iWc_&HgG}hyC+&+v2qk^L#j@=BFDr8gM`Ky#I9PNs*>s+?*xvqqbb9DW>bA?iY2i*Tx zF|U|tBBr|95%+w_o!Af8DS9`{(uXZTj<) z{{4Dp`Q7qgrk!0~-|r_gkJwv2x7l6${cmu?eEaz~e`|h`-&^;wd%19-smJ!E#~h{f zPy3&#dmkRZzwXmx`T5;%&v*B?3eR7!uJ%0WkGcHcS6|creXalYRsSD%{gz}v%n|$@Tq~p`7GVeXVzVZ3g&!4`|ELy54b7Fqpu{3^NiyQH#;t%XK6dr9W zIAk*Y^VF$FuZS%_xoCF7n#?zz?Mid5R~>q?BL30FpXEQwB@U#0xXHVGNoM=Z$fFje zY6rjkjt;%Jk>&D^IWFFx+oT^I{&RX`Y{dlkDeuDe)ZS*;`elOI#+Od-_Y11tDBw-p z;CAuD{u}0Hy$9J=?RZsl=wQnHJx5FDYw3So|F`Y4Fz>gW>x`J z=K1;zSBb(4smz{od^)ao`F0#GYLS^SZ$^Y6%gxgq^HxnODesT34nFfWyK}0hs^XTp z@3I;A9d7j-TXZv=V$hV#N?@IL@UhyZt5w!3RW~d&|5z|NVFP>5fz6(F4434zwY(-c zocuRIIo?RQYJG8nr(m&r`Uh2Gub(=RzMe-sZ?0{2aXMZScgycy^-kvf?=O{o<${ceioPPFv*Z0@2Ki~Ui z9BRMy&)1*g=jHr$|GvHd^Viq;e~<3}_$&Ya?)_hX+5h{Nzkgr-vd8)J_U`}vD*U|I zeILK`Prv%l`@Ylu-;d4LpURMY_qBiDzV6nytAF$3+t;t_>wfRXw;NRKHWI&8tAS;u^=Jg;!=I zH(mR4W!AAWaejH>y@iF=%cT~zAC7iBIPqxwk2mihaPaeLi;Gs2*H(sRPRd#{DdM=8;;qehy8{bz<2qt^wr|K> zp1Av^8(*L6={ctaFaP|wK)vF^mV<9uc>R7CPTzJlVgr-g@&Z4(mgVLG9QEqLP4&Fu z=cISNt~hevx8=+wt2`$6?d{4{nxUV4f7hhWI%yN|cunHbuJ#R*4l_k2ruXf&dn_Fo zw&yd&|s|Z$CW`6h3-$ zj>HLZ^?)@~`>#KDdu${d<}0x&@?&Xi)&CV2V`s5G(S5g?<9bW5tKI|I37UKf^Xhzh zd}rCd-T8BafP$J>g0EB4oPVqb({<;SCr{{K>}o4BMfc5bRcnVE!cGh|W{x5ozJ1%d zpfs+&>-qn`_5WUd4gYuPe$8L=`nT)t-;3{$i?8`7a-!c(HoN|Jx_y1ulk4mC>)%%X z|M56}{_fN2+x-98S^l;;`s;D=_nSMu`W!zmTfBV1T+MQ}x6ij4o6djsKxAL>r=2ym zMfG`E)@(K3{`|dK{BGxx+INY+U%vnM>Z|$xYxgVj>Z-e5eir*V^H%-$>HEL``lNYl ze(jf=uQxA$QU6z>>QG79uSf3l_t*XGj^DGd>Yn(If0}dR?SlX4*MGhGtn19){ke*V z>c9MYqi$a{tMmN4&-<(XK6+mNf99L|FTeg|iumR1tG>7R|D(_TarGbg{~dd6UjO-e zoc-_L`@io|Eu1x_nE77tmGi6(2Y*DqIe51C_V3Q)$DeZ@On&WO_jmL0{`vdrKJ))M z_PYQ7$NC>%)&F0y|M%-_y!Cg@12Y?Zc1TO^n5TTccd^LhtDJ@53wT8;BVXS=yKwsC zYe9>Y4jgBDXtF+X1^f1Ws}v3M>SnFVvzx^7E%3-g`!xl7J2vpQ$g*U{oLI5spz7yS zW^()$Lx=L`lWr?(+|I~LH+jc}A$ujVs!_Ow+ zv}WNXqr_$@LGF{;KHKb1u8iHezT%CzRp5^`7uC13Pk$1TctPOduEoctcKqV5c=pqT z#X+fb&7xUqo_(&NqQ^SdZ@m*SE8?Gn@0PXP6-E6AC3mGM9xrXOoV{{J^SyT;w$5MU z-Tv#F#e(VUg%@(H6%OuP^K0pREBq z9%vs>jB0$h_rmw9obO*pc+@X(*vZ0KxtoLaw3tTIpYK0KY4UMVjoD>dpjER!gnbR^{8x(Sx; z*Bnv{_wUTHwR!&6zW%xR`u#uT|LU)=|8Ddv1xTVLp@H)32IE@%F+WZhqx?_WaVX!bCk+e+i4}&-Yby z-Phk=+4Y{|Rp|srsCa@P~4L^A9&?wk;0~5Pq36Z|!->^rmUDLSN%;x7B@%skC@r^ZD%c z{{QFgo-_U4`Q+c4pFf}5SIztXs_^U1qK|h(${+o?D|!07(0LPmzBgyey8e88`uO>- zUpuQleATc2{x#eF=a;YT^`F1*{nuOn)ql^wBldsY)AGDGiHPouzZA*<(#H1n|A$n8#vslUbg*zJsHv#3bn)ME@z%kSH}?`kZs z*d~Y=?$YZu>qNLKW#|AdyvsQ^YGp*vGcc@TUlow-n;5t_OWm&{^pq8_VuSU zc3)Zju+!4%PYv@O_IUMIACk|MrdzV6`sh1EyltJ$8ZPeq*LMQPvJSQgp(zK|8wv#7 zo^V#gKa-kp#wcm~awgq|AMf>E?&8@ikjlqCqa&bMC0t@d&oP}vn-8$w7BG#!;jpJ5 za=|V3yqe?fYnB!&&z;Bd>QLW)VQ+_1Rr|^hp4NWl?clE&)Trwr=H>iUh^71P(yAlZ z6T5jfH?^8v7Tl=#{I@K-7Tar``o3s|>vAr0roMji@aN-`M% zrHkIk>{I&lQuEyTCx5%2fBIH_e(C4W^SUhPbydRpLof0(M_V}o=^qf zk7p**>Sg}QAKnTd@3;H;?5qD@;r}OI-~YAw|DV_We>Tpyd4Jj7?A&cBEB_nQ610{l z&DM8Mm7B-3|EzP1jQ6etJyX>m;$Z>ip3}BAJvzQHV}Yu=*{K~9bPN@QtP{^E9<_gc z?dHTAKlxo5?!Rm?-#1TbZM0uzgyp`sDcr0#p6n9j<>j1qGjyNObY|LsfPm*aO3b_x_PfttAh00TsccI=Tg$iSU$qxbD0vid(wJjThWe_c#b>t# zZ?#;jx^rj2qs=GJ$Iki|+oo-lII-Yan${s<={qkZSn}3g^SJpX?#{#IPEYswE^$^7 zTJ&y>u>H@uCwua2g~ME4ADqh@m1r(mY?O&_E8fBk&D{-gN6>(}>xe*gdK z_4l=3pMDnnoWAMr)#C2k#Vdd9?k@@duD<_Ujmewv^krA)J`}1qu-t#{?u+xhB@^D< zo*A?IWV+jIZ_=J<0g_4nr6nScEIY5M-EzUr7{ zcvq`Z&>Dp!LQ6VJrtQjkZ@u@;n?L7^Z|%MRz`pa%neThw>n@*PeBN^VPT#bzUtUyx zzaj8#-Sc}&wm)(T5PHl8!w|+~n~7M)t%v6aoO%;xnMFYCOClG&DDdR9nrE{oeNyr-&WYigQ+&%%%9 z=3+|Q;>wkiq*OLC*;}6Hw0N7zyjHlUZ_Sph9Y)N@>`b0@$g(wCthD&7x$tL5BEylu zuE5a7)m&Gy-iZ{RI&IcrX_P1MKg?C<>sruXTX0tR z$mVIAZ|x z-ea{yA-xxbeZ!_<&t16JoMeF1J1m z<9X$>>T~3!RhO$i_2_HAjBEe?ac+3m#gqDTKhE+0T5A4dPP3DTq_3v`ZiRkcOS?H! zbBYg6->PEnJK_HHBR3ePoffQBVbeWyDaHB1_ToI%-^F`(vbQfj_u|uuMA;kKYzx;e ztaxCt?f zdKg%Ituij}zSx+PUz(!$CD>w)XjbgBT?=Qs&9L0mSUh=V-~ATX1E%KVO3u1p zIqEGLRc7aw>|3L9Ai{~m^7lRoA+Esx{+f3`{0+UZLRsVXcHYxl!w(t%f40`hfbYD_ zx(DkNO_F9xw1)HOPpn=TzUF^;k8#`n$Z4Y4K{s2@n=rjiP0N#hzG?Zp_UyS&EX%z& zR~;%jyz`Hw#q4G6=PWa1O3KO}d@oda(fc@Ne|+4(P18?us?SrXe!qA7IeVV|sfv}; zR`K%l9=^To^egYpUkdp>7?eXM@x@Quv^H|H+rCdv^-q7xy*=?l+xrT?b2$}Ba$jH7 z%!vD@V)N{-Mr84&Ew&HsXWdv{{hf1T+_D23x4z*~VeV6mj_dw8V^xQ8O#c-ftmqc?$h* z7tGC16ew}O6qeNUM)<}j?dLw%pDqb{sJ2MJl*f3sZTBt9nbm7sH}nX8im`Q_soC)1 zN|M*n?H6ZPUT|6Gc+vck2WJAiOH<$^PUhcvFK^s#JEIwv)9kyNjp=!L0^4be3rq}C zH6Nu+?Jj$=J6-OGq|4ji8*Rlt&O6s5oW5zbaD?5A9LJACaz=7i4w&Ap4?T&<_=>@2-xsViS& zp9@d!(ObeDYW0>S`N7PBE@zLA@n#0=y^c7Y*brCq`C8r1XYKV<{o`x6&#k*{$ZZpI zrE0t5FU23d>N6&^`DMRYa!fREWudRuW0Q+#>dg~Y7FADkoOt6>?{ha%qZ16v7fH2F zN?Q8+i=^(QzR#Zwr?kFpVv=ufKUZXI(s)_mi-OS`{fg(-Pp{Vh_lhh$@-X0z>?ZEg zr7=z{MhWtp3# zqs}WD*SSpHU~9W5BS2uckZHn<_C(3wKZLUtR<4Ly30n)m^X$yL=B|dil>5w0Cwk^@ zPS8_gGTyLVP(neYxmnP;S;?aR_u``G6>3Z#%}1^AM-O>VS|LEOAZ;i})WJO65!Jls+iAzSUrTil^#9C(f`t3x3yMv(P*L zWp+d~$2+e>?D0n`G!11NH!fSSkZtK?sUtt{eotgmevzhr!0N~*$AnCt|BrSg9g>op zagp`Pq^iu0a|d?&<{r?TrS?|tsIkM3l0WxMmwTp_i9KHuvS^8k(E`Dq#;a_WQ8tfy zF8#cmc;Wh{oif=fH+WhY`JGo+FS5!!mw#yGi4#gjZ#E|#QnB83&QNH>_Flff+Z8ze z-aZ=E{O*+HDud=u8~0tGW9Gh@Q!M$ZHuYOyCzohd-W;ptH{7>z%~r^~W+pC^T5)1) z(RD84zV@&ElB3ae^VwwLjAu^qYecBO%b!8*Rj6E0XL z%Wkv&t$86dHMvD#TGT;bA(u+W{XDI+oHYfeR^`mx_b}f+1$%blQY&`Z;5ZU zsy;8C`(=K_~cKKhfko?E4%E7%<{^PE)5Qp30(jLWBWwR*Q1%sZ!| zS99!E*47VeH$+d>JztyrQ$&p`xGnBxv&i{#2NJ6K&M>}EwGdpr>e2l~m%tARxgk7e z^WIMPIy9qMF{h$B;(6b~*iTO;TR)k0JM85DKj)hRrsOCzn{GGBY?9pjEHmOikH(!q zjj*&ypC3)U8}XTCUw(dmt5eqGo!rkd+kOh1oAsB zp0CDi1y?!SKl7FVv(uNE{y&`9a&%si+t2h_e?FFPKdEl_(X;Z^%H=6%f0()#^_BkbrNA?#V=Q~?+JacPZS|C4Ht+CXXP2$s*8t&{9a{_vbKzuU#x4&`ejuD5-xn<*nT@wx2o z{+dsR(@zL$Pdl;hnVm+-CI1-9#nJx#H(WiL_0^nPH9AR2-)%DrULSwf1yGiH& zJwIFYdcNFL!)_xU#zHqav{;|`Y3biM`E%={*Zl-57 z^CVj-1~W#G4gIczUXmd(SviYD#v&l69aclS@+>} zcb`E^bhTmf*P6g8)-69HT8sXgEz>V3IKtj2u_x@HM=1as<-v=F3yLNo4w(PCc z7K{6uUiacOyX*s}zJIolOO5x|zBLtx|E=vf!s@z4`Ke#!h5HG$vaXo;!%`u{+33sbt|)DHfw*NdN@3BB>=+9s3R!BSav>p$-Pcq}hNXWGfN z@w?-`#c%Tw(~n|sy~pgFC?VKtSn>I7)HJiMCzis;{t2r@FL6=jPE z`6QSQe^{1&`oV{ew%d}s-oJf0^`M}HMuWQ5jThf%Z_k<5JKO9;?)E!s`~UxyFPYz> zo&Cjq;T*}d?=SXg6~8L;&AMz-@h>29a@(@xv${rIAAh&ArTCrCnX~q=!ofe*4=25h+i8tOBGKCxZ|3h=Aoif@{?g4)L-nnF!ek7>)6UP+{4BQZblmSR9>uexO4UST zCYejzI=5eJreVc$4c~owe*(=_Jv)|#Y?*7aDfVfl)gI@KZHoeW!tU+ZJ?-4LgMW_x z)-5`IZK|cCrM3OKtNm{^lmtaSMVt4Xa<~6i{PUw}`Kc9Wu6*)dw~+Jx#O>{gF)t_b zRrJi|SZ>HUg}3Vq2ghID1dZN>-Iw;X%6_^nKVQH5+d)IVpZjm^KdAIz=7aO+v!1Iw zS#;5QdVbORDVIZ&C0F%W&za_|G)t$PXGP=ErZWnUy(0f}{Ed9wZSaq|vo(2@VN6@t zDkW3*=FLz0f?st!NN1n0XvK?p3uI#Rn@e;5%#*81RhcQ1(Xvr+{=uW)GT*DMHG8q@ zLiV?UYcr>xOY+-eml>g^*3I+Daw79piIe{|s&yBXaCv?TIj>ccY2e*-#cY0cp-a)@ zt*kQrA+xvF{u1}p30|wBzRAIj*?8uH{Dfx;KFZ4%9QtvZ;q7cqYfYxxXPmj~j(EK~ z7htw3`JAM}Hu)}HQHL(}^gP#H!YzjtMLeor?3-=s|NZ3G>o#ih|KIz1$-c=zL+|&D zbH~&LZk(C&Oie;&?!7gQ58r67OAOjSrC5rkQOfPhK1B^CKTaMU39CEXbDr<=63tS1 zu-9bu!-a{b3R`xry(}f4bXiC??E8}1ld{h*fB0>ZQvdml=@C;|M^TeqbJ(2u=Ncq6>8OSN9bYZWLyd}lT0a9-)^3!y+J5-k#!|I)&Iel;ybb+$PWtkO ziED3fJNYJZ^U~F;gD2m6(fL_%+M2Bg4lgz86==WYQsw5hp6juU$UKQ_J6?S}zR)1B zjeSmO>9*vzCI$h;{0r~hyO`I;J2!XF{l1nRjSm@pw^Tnk$o}No?0R*6`#oHzYWIG5 zXnb^{RLK#+mxozoKRUK9Ok$k>*|P3_*QOncE}Fj*ACzn@SLR$VeC*%~DG}WrjO~Fv zu@+epOlKr27hJsFb>gI4cXjH?CNmjMlhbkDyPqz3{C%>re}s$i2j-)DTt-7xFWEe;v$BVL(7E3(3O-APVTn;^-O+k9jX*Bk~n*Bz?ecNv$wHh*;K zcue=T=LU}YOMg$9+^c=cLfC7I)#JjAX_~hdoi6s%>EhWQELyhi2(#S6j$C6!>!QPf z$}%2CLRujQuu*Zz%a zdAcjbyv5q5m?P9KMa9oQTWt!v^Mze%XG|IWD>yj)z8n%h+;_u-;paY~`z9}E9lO21 ztH2~8?2+*`7DeMn^BfpXJH&T{e|J187xT;@yN7S*fiLFn4^-c$HHlp_5H_C}xG~_O z0gnyO(}VJ9GdJITc|hRMlMlOQKU{n6SfqjT&Dq;?oXdWeNwz<#KAe4S(qun7Punle z;c`s=JzY1=xOb~UNuDo@DTI^nfw!@Lv{ocGfXlkB6 zQ6OEx)X$AwU|~l4p_cYD-}8T-egEW?e5_{qy}I3ZzCZYzb;sb!I!74|u6^sjKC76) zTe#xN${f?fvej8_Noj6>8I13KtlzwAVkiIkiOrWS5>CpUeiwCdPn+Z?owJKCCE8># zO+Vn{{u4tz_ou_}GKiGGBPVFX;6P=DPX*+kd_HHHR7BnAG`- z?JDsP(QujDD#WK1%%djh$+vgGYO~6>S?1-7*R0qxlX+RpX5QnwY@H?)^-CMf@xMEF zZ_ryq$*mF&yGm=1v?RvH=bbLGy6|=9K-Tesb|?edK;B;1Q_^th%G+EFj-NKwa9TJr@Q*Qf^J!l%%zrhjG4`5Ui~K3 zwmt9k%ySvK6NEm8mIRz%x?ttCi6sIq0fKJ((j|1orfJ)@*JpYiI(|o^NNvN)CJU~` zGp9c~b!B;p)V9F64&nAYg{Rl9ne_kHwNj(C$%;-JAK%KJooHTlUt~$uy<-RFSVgx6 z3QR2*TCbC??x)->;KA`w@SWz|B!0bDF&xs?3Cq5m;-373$4@5Pzw5zVqx^p|GxsMnYN^bV{188HYroUYG9?|q)6GsMiv(Q%vH42h zEy!KG_{$f;Q*D9=Uo@1)Z&qe_*DbeStKy#Xxi_Ch0$R6qP15peQ;jz{^@V*$YIMZe zp76#-zPyajUKIg?n_ukSyghiL8KZK>@4mS!MCUI(HFMrC(eQsBcE2X_uU7Z3GCaIS zAhm6JsM#z*3oEmhJ*l{jacT;kS`lSyE z5lOvwxvK--nRT4b44BoPSNs3Rr^!$EeD<5b9IkNs?xrt6KUO7_9Gu>DB-CLVd#jh1 zW3EqN&nu_J$F$jwKbktLpmgq11>Si@Z=dw<3V&rIH7~|OPOJEk<0sQyJmz^D{+I84 zz_mDTbKYIKN1uLe^Hcc!zv`!*-us!?Y^3+JT(J7B!La;I;)PB-u37sV+Ghrwn9ZVI z@aOOz!GFH2{#G~g_s9LbshU6S=kE>u42*YPoM;U;xcZrI>1(^BrN?s{k5+En>oZYC zbN^xgypTuB_H-xZw)no#cAkFv0+-n@z3T})4<1|0$o_kIfpbjw?bY9wT`E~ynY3rZ z`PB5SjW%C3%y>+m%LL!iJP~7V^-uKQ)m_~WGfkx1oEy|dt*@_|xAV~1i<4ZQ_G|7B zky3rL^c2@+-Ce(@PHSR1yeFJ_9pj0kRe8t6UUY3fQL=s8oQm4oe=8cVPfuC=is{qm zjEBz>2C7c^LgZtUCEsAaeE4%bbEN+^bK>ABI8Z# zKDT?`adfaOGniq!R=z#px{L5PD>FXadvlh9$vfAzS_HPf}O~|V` zp;uCqA%0K3{o=7-@2-WVoc}#9;`q7QH!^yAoIkEEaCe%;$EdWR-7UXT=HAz7zR@Xv zkM({sne_69b+Oow!z-9(KR(kSzV7Fws)Ibd3p{`R&HcalWcg~jI+612{U`q1{2a29 zpSN#SEr*eY+#P>c`G+{X?4j-{eSO&Zc4D1 zsejO+`y}Adana3(Zg|{$>ED>Fq?>u^gTSOMm%`f?S6q+F{qZ}}ZI9ifbMrs<^9lVr zQukH9J=|*EQBR|zYn-CR<9D^q>M>om^82zwJ8rf6CT5o}KB9hZkJkJ{^A_`LOZ1&k zm~%VU@J+A(;RhSH?wq*l@^OZLbJp5$=oJR+-tP79Od9`dZHL7gUWtL69|U~%WwcLV zzN;|lZu=pN3$j)Xmu8nAcqP}hfxFo9@QQ_7P93_m`sCYN7ua?_IX4ulA9GR)uVd%U3O$TR*UzkC?OXWv?J{Yv^9!+%Ae zf(~iMRSP5si9C59?Ehv;{GUIbKOec8pSULb;?Gjg=gWK|nBPWRFb?2zZ#*~a%F8|J z(sI#M9kH-EePP3)3E!(%m#0VGUHq71bM-M>+sL-tU+;xNG<`=z17S|rO8tQg*6}0l4-`=O7 z$-nibN$M|k_Y{`n%xix{uV3#vty=ru&HDAOMJEn+r`&8TUOM$l*Vm2af4bvKI@Izq zljgm%elnLcKbiZv?EiaH90hmiP3rj;v}1Qb;Y~reX-;=J?(bDGULn25dwF84x5gon zSKHRDx$#gc@S>qzmtj|Ga;SUw^-B56feY zEsITmAK<*r`Mpu>B)f}vHP3`?H{xbk%DwUPu;@|VSafa9%%aav^QWt_Z@ryrb7yhh z{trpHN7`i!F0@Qcu2~h5E`7cA+Htv`I}hFe{#^gYJ}t`y6~%=CnlB`j`>YRpn`|*X z)yE-vMb>0)W6bIwQptMCJpDGRia+<|ylJU#e*7v>F14#m>`No?ZX5CFW1_{gZAcp*LH_HI6NB-k5&K*x2#e_xj0#E6@DoY-O;qOxxE!HPfKD zt=Qv++(MS;Grc1`7{AcSvu+-$JzIilviR$`z={-%J%=*U;>&bjLqo<+b zcAzrlK#P9pvA8a`s-UMwb>dqNMONFk99f^Jwk`30h}D(lGJU-<%O2Lod0lFnv}NmU z^H)E&mX#j1(XTl8`RUyEdmO&q%g(RpslL7IW4(!j#kSLIvgRi=4hTAVw9cyXf6>CW z^yHaptsh}?4)!ZG>c5zODqlQyM}QvJ?L+zp{TaWl zQ}&m<;LY2edhd?k&KIZir#zmw+hcEFx?AdkMKv4^LMIC*KED$5bAs3Ik8Ae^x1<;C z&{Y5LDY@+Z&gY_g9;B>#B2{!sR!aE1DAUKkEbCXfzB~29PbH*Dy~6vx$7{Y!*|%w$ zojvDeu2ubC7AVu+^O%Fp14e#tx7BOCPV%c<{+k?ibSq31!~% z4o^Javji+>IBr!jPg~A4^VXe6x0`#-@%@%X$HLRh#gi>JUupgy+&N2G zye0nwH*5NS``;E9_T^{9zdfbh6B@kX-HI0Br5?mwXM2le@6YXg^!4_>Ir1QdH*{1hx^u50S$kCV8a`0#KWzi)!H1owmG zYCj`gjyw?VS|u^V?ZwC7jgy%zCrJHnWV&Ukw))+D#pvx{Rxe1sYr4DiEnEBlr|VZg z{bnsUon7vxQnP@J&R3E1zL?SJ`t#GFu4nrf z2XG~7iWknbdADO@e#bI_sa%?e8vkD_S@2>@_3^JSPep7>^)Y045E=BLb$WJ-fRhB% z>e%-!Kc|3T@;Ej|s8_Jq92J(0(^&@0ux;e*-pgot_5 zH*HZoTra{^FMjRFM>WAkOC4P*3>GDnFu#}QYUXV6T_DbCo$&4L`x^IsUykaZdUiJ2 zR55S9?YFDNw*^zSy}!|U`+C$v&qY&wS4uoKqe`EtCvfks$G^dTVhJy zG!Z4o!v3Fci(b0sPkXBUykb4mVwS)4p;2zdYQ;*$nC38r_1w&@5+*I#B@3@q zmd%r4P)aIN{chS;DW;n-G5+s|x0_xtR6LuNDOGg*{)Ml<H;-w>CR?32dGgv!w{H8Wm#s{@Cw%W~ZdiL*mnY|L+TRt6ITFjR%@n_| zqc+ziHgfXOLmVAp9=vT2HeFt#YB*bAt?tDc-ZRgX&TL&fXJgVtE@}0-585M2qWX^Q zNDNzE{$|!4Cy~Bsi_Fg|cpMQ|eXnhr_<+qk%<*(U;*bHipAM2PSw1^xTgJ|^wsU2c& z95WP76kf?czS;Wb0X8>x?(^3cMp*pNtE$t;UG!-A!Gpzr!!+)cO}Wnd@LyTg{XIK# zwLfvxRb9PW^gZ_biTt|a%{g~AaUN6rp5>L9lf?e&Od^AYv~c+gPqt=;3YT2_%&A*{ z=yb}v>;K4$`C-&}EnS;GR^k4i_18}_YFCN6ajExQH(^`V_S~xTmrZj$M-clm?t4)R z$BNY&eBb$|ZvAkr_nPxMm8Y{S3R>C&7wEj&5jgMqeQn|J$lK4DD^D)BuWi2b<8^z= z-#*5fdlNMKOa){QeYX)x3{ueGd!2NLcgKvIov%2<7=4^q)R^(Co7rJf>S6q%R79|E zuJ!S)#~FH!?>#uKEPd{5i|;hGqLn?9&dfFsuKU`&{p6!&E0Z&F+u92owJ)&A`7XQi z{;=f5zrX)YDky%h_xO>bvi4z@)QsuVHnHuHs%P`AzL>G!NPON=alRi)GkEO1lAqP6 z67`r5SEaP>&72rsz=P-)B6v&hNg=kt6#an*I%OjgmU5w?J0&ohocC zfauJ97IW<9TCYc%EBFl9)G6&z!?N$HO^N%hOTle&PA3%J;4Nr@6~j z-+EnFS*mU{GkW&KjlBB8r`9!=AFM(FyrdEGcTB4cLdD1P_#tz#ex(Q z&eM_CCgig%F!q|`{_5-8D3;kR%f5(Q5q(-!Q~#@Fszc;*vpr0UQ=4*67|4rmRGV}0 zGJC-7g*k3BUL3WXaU;83%Fu21;Wb~=&YDbNw_QAOB4e!9;cs6oZZ1g{e|_zzQR z6%p4G<+;V)E}qEK+qY4PasPP+S>ql%S+~&a;Mr~sGj8m7v_Z7!fg?Lp|CvOG8FG(v zZ{5-FxBIlh=I@uRn-}}{tA)<{#iv8cS^V!p+^=;#)$+1|qPn0_6w$aJw zSxfQaNoQVOUy%OEcD#C}@Nuu^i?$<~vbPxSy~wzB%EbNK@+mE` zZNFyN)lXFF3;F9VxY&M~w9Y4?wyt$|M50nXj$~>5y7bOJ$(igVH|9r{0epY2uK<|OBrSZ`n6>K*3|7B}G-Q&Nn zz`rJnS6g~suUgPS?__a94wtHhUpCD+VamC>u88Fj!`w4%317>!a=Y_Z9bY{NH+Llf3)O3uPq|uN|BxnawHOlzHkFZ+6Pb zLrW9yFF9kh@55K|MVE}NnoB=e=>{(EOwcoDdXpsZ{ei8~rDxH(Jb(ZLCJ-e0#A@=bZxCwqJAnx4*JlMuFF zf${wP{fQ;hR=kunop!ct`}(@8t5Z+6`4*jUY(McywEdKKT*)e#nloH6KfC_1{B^#x zd4YTSoeg!1Z93Xa=KsBuzJ>Ybq1Nsv9aGy6KhD2=%r589<(t=3#p}N(?c_dHe|($l ztcVjmyIYT9nJ8MiZGh&DC@IFDI@zabiNU{En!gnW;&OE==~+c3!|4w)m;in!^W5 zqsnKVdfq1RPA<+m{@!Q*`;+YNZS^ucJo#Ss``Uw>EwUKmdHMM=(zkPJWQE0*Jh(J> zZpW5h<(-A+?o<{%tk#?I`66G%=ViSwmNxX&7e8N||J&^6t?T<0!{ckWuBofqd+p0- z4Hrj4=BL>P9+9hd7CiLX`EFAAiA&6aY5AOyGN%rIyTKsN+Ae+fUr8J~-n}~0i`ZfE-oK<&Z4(z*lD@tqS-*W|uXJZ2- zgIjNGOaG*AuJnoLY}lJ=Q=L^}DsI;;)s^DywOSqBIlVeS&EOGdx8B6XOt&ReC6zxc zYdU&z<1{v{irR^8MOGd)M=rd1`+eQS{+Nnxn>|^3=N^5uGO*(Om!=!VbMM{aOHuiL zZmzDcg?4(!)RX4c1+41V5BnATezVsn?nC+c>7v?UCj#B&b=~Fn3yB*)IMd6y;Y`_5 zg~PjNsoqQCES5TS*y}~)#^BkEmLkO$DpVO{^msnDKQMl>|@R{lxOPoG$k?y$xMVfBvUVk6rflt@kvYsgviG3r(ps)@zAeeD~M0b2HWd*Pi_T zWYYUMrGDFQ7MpepTD^PcBrLC?r?D-qWn%dvR-MIcA#Rr^{JnR(ktdHO`B=eenMEIp z9Ew|b=-9++_c+)}Nk6WHN zvF&*HLgoFO?7N@Kco&%zEa7ywI{WE`bMmL1>tpo%*W6V~j`-5H_V$+R_P1rvH%;8U zH{Uq6C|0>xR3axoJ9oP6#f2Z3<$q1s^UyavJ3CSC@0P9GPagYv{>1hDpL8`oXQ!Gz z@J?NKRa>G_(44LA#`6TbcN6wM4AS`Ayzoq=W9^4I6BqpZ9+?;H`redRDn@#~e$8{1 z*XLX2_(;AmZcXyPchQwasi^X3z@zOag}=?&xVzZdaT~wz8A-SNPKj3`CvTgr@9a1< zQ&lRWaG7;vs_e1$V^c)!cm46ozTHy6V3ld`bl2r+tGgCSm(JeSpR;J0(PjN8!@Yqb zfoCQhx)wIeUR6+Y;dG}vQ_?zg&t>ZW`qngAhBNgJ&z!J(mFtw(Jh)TOrhIBqjn`~F zn}Z6AK3sVG(I8AqJ6iYMh7H=!w(;)#>S|%C#pYbf=%;erc6Zulr86vThmVPRAFx)K z))HCC|Lm!C=gxx%{rv0q7Ej*uyV?9ivVY#D--}kBQJf*kmi|`n@KxpwpCXqnNp@J_ z*Ik_b?tt~u(r;x8EKfN_?yBhA^I}TylQYKWul(MA`(f+(1xHe(1GX8aa!S13we=?F z;ZH9j`TVtQE+5(1v_5H8fJvB1&W7TLS#AA>4j*eiN*LEO?Qhxsu~U1?0f&c2*q*LC zFW$y;^Mc3wg9<9=J6uHVHivCu{NBZQ_!9rc=do|QK1w~b=*vGg`{B6>9{v^y!ZQzT zvs>P<;N*hohg_!KTaoxIfZy3fJl7=WFx&jw8yP46tSE8nkKUVbpvyP)6#p^v=MnwI zGp?ThWGA;R zw%L3OG`_C+rALCZ?tRe7JBhwrpmM?;;-70FQMSn{Ts5Mg9M=;ZE`IteYDW z1GeSd*8P5GyWhKt2Z9;}2bdJU%-wT@{qZK#Z1zQBo1cI2(m!`>xpLP*4T=44-n^Kk z`r`TjS)0#Ix*Y#a=+2hoDZXZkvovR4TRShq(Pi!!a8TrkI3WRv;t zxauvZuZk<5Imcr0q0D1r+o_oo%thtR`=A!fO+-BGw_ElVGR3lP#eY*6u zzIE#~4sS3CVGz{RoDtixTcprn=7+NN#)q{VlT%fskJqjJ_pOjev$R98-TR+WRgvmK zB@-w6qse?M|JN2oEA068BIle!*OLV4-IJz9YCSJmGkfNuhm-bZTP)k5e`uT93pTbQ zBOc`*u5b6Mx1X~A``LHXtBbr^e^zL0c`eDJx_RO35AOxm6t;z#e&s4QchoS7^gPI$ zY0JXjV>{dWz@NDm&i3ytkDr!4S2y=e{Eh%I1Y0~PO2;qPYVas8d;R96O|s78WQ}6!+-TuxS+eJxTlMEy z{r$=I?CQfHC(D%<6Qrkvuh}cHZWp_FpI%hxf*`>U`DuHNU&pr^{mV-%meHu17U24n zdGdpK|L;6M9shoxd-j~!3lffP$<>*}U08G2JGo->orT)dPOsFr3%&Pq9ruU79X4N| z1Xp$6Rcg7la>5Q)Gs8s7TfEortBBXWwhnk!@4D$u+RMDx7gc<#7VGYCaqlk^$b4jY zDbK_<(el3D7U{Ho2Q{3|HnC0E_j)u)3)P< zON>|7Eq`1sqHV`tdud13rtR9U>30IOU7uN8w+f!U>%-q2Ydn@KUJpH4AO1@)@XU#o z?{!71Uok%Z$)@fy{ly30_M1=r4_$pSZ((b}H#MydFXwe0z@`Epf#i5EOhYt7V|aiJ_jd*#{YO?7jf zu0Kby0T%8Tk;7OuTCu$C!u+*48r1H>*g+D z&d9WIxN-OM2ezLV*z48#ZMIyCZcOStgy%!Ubw?+vb)hR2JZ@&IARr4&z z!cRRVOyVm1k9DR>o^_Y2+wo@m|9??UrQa;`C+y@deAbtLtY9Mh{bV=u&C57rrXAMg z%lgIfthi9TqR-ok$BV1x`21jpi2HgnB2QK}aO+Jz`PkBR^5sdFw{2|l6)v`{msl)e zZ~51D_A=hP=YsTZqXTl2#M(a))JL5qF397C!D6h9og!F^NW*mV{?vs-3e)y!>HsbTjIe#(#k zJ1^#Ecl^SO0(t9i^ER_+zj`xg?Xe3An=Xj!M=~+9voS!59mHuuLh+BEH% z&iw8D)cJ8G^K>H862C3jxZvTLsYP8{qHf3H9la&58U)_`5nO3?(O|jIF~dzpC3m+U z*nV?CLi1Cpq!>kYrpbElUC)aBawqJsxzTG@Nj{Q`nK|1vX}4)$0?XwKW#=}A+ql&0 zwY2Vg>Sf9(>ZSK2ZgHw`@KwcQHufP)L=GPm$b4;78yVf|Cj6~XH7)!68FlXmEu{g4 zNwP~hR9a0}WE9_wEiW{3R=RO5VUl*i(?BiO9>z!yB>{UNRK`D)q0rfZz#k9_h@SnYneldnQ^jcw{%6Uq6U1$!D&c&^v?Id3xh z*!lJHwj8qr$Naal(V-8ve^TOAahhBA>t)fQPW4l-?|rChxpy(T+S(!M4kCsQwKDt;}&hcQe#$%H=bJWf{Xr$yX5qc*3e}ji#Cd-qOC)u^r z*6BW39;@+h zDf{5%`(8HB)*Btr-dp$Hcdo_bx&6OhGlr!1 zWEIOY?UHwQcV4k}*>Wq3YwgCREz1q_PWOnFY?5wO@0Y$Q_Vq-&e$7&u|BrrN>Si$t zeJ~!`_msH5yB|{Szu+WiDX!jp&F1YnuM946(KG`o)f@JVEPqe1I!L|w7GvRfa(D2( zjf&iB#l3IdHGA6sX!7;-%Qtl&4e{Ey#&!zl^1_{KYrby(vAWD_V_Cn8gyaniUhTlc z2P!mqGZ!yunYeHE|IYK$i{)7R4CftIDG=%7){oNEx*^h=ys)jl`RJ6>7tOnSm*lr8 z@jCUlwl7$9%-{b`V}z5;#vAF}n-W&BxEqAKh<xrV%c^Q6R)OgY83rgIoJXeY`@%}mT$My zl>fgz`l5LC=KCqF+~NWEj5|Ka9-i`L(Qd(Oce+$8-ZHv2va_DKAk+LL<}^>s$#%gs z_pZLO{%ptZx<;15*=~tH^`m->cU|8X)@SuhqVnU)T#nO{|1+Kc z)V%7q3xCVGvwashHpjEIr!up`%<<n=B2*|btUvg00mYrm9MdILeF22VfV?UfTx7isTcGp~U`n`tg z$M35-PRT4Ry;ruZBy%rI#diyB_8W5xPCjxiQag9p{#R$e=RK=6<5mJaD8E{ z_|j!Pmov=wq%y5&Qd_j0QFF5T%8pRW-yytRH%i+tJH5D2v90e2tL~L7`!DW-$@_k0 z#b1;?|7F5wo2M%-$Gy9*-hZAq>|dK!aeIN#Hg4C;1#NMx&DBRWkHj!py;R$iyXTZJ z7faY}0qrBHVoEM3&9L4TcrE z4=yYDMBJ1L+GxF&bxY8~--mcgzD@Xd{ji~+5%;IAUY3o&w+ZcC_^X+reDUmK%eF2S z*x`SA?RGoG@V{lEdXXy+-2d%NL5dtl$OduPw|ymdW&X>0aG0p^2_-upOD&A7Wq zFpj*Q+X;$BrP4hXw8M-eL zG@k6Km$;zijmP3SIg^jc*>LWCs3Wo_a3lLB=kpq}l1Z{oe9x~eapdlc|9yPk_R8$n z77g+{IGjyZoH!a}RN84|TJ_A#&nGn}iTldA;;EnJXxTB%Uzqb&=bqT>H=@=-5m#bA zCcQp5jddO0JOMMmc+EYfY`-@>Q?EO(Q(JX7Ec^TuGl}#ws{`VU?!?voOf_nV`m9)S zgr~pX`R4{>xv3`giMuq2otv${d~V^cnjgyl zmAt>lEP5RD^V?&K_VD$a&hnpsTq$zI=eyvSl;s<*c6R6dtNA^*XsX%VozCxee$G1^ zu)O`WcB14d^*a&yXElP)uZg?UbiIFt@T*OQcMgBs)1%}2;HO~A>gP%a->nIsr=V~9 zIKcAJiq;3bRhu274!-AGxxm~>cd6Nb55Dj_SK6v4e)X&IL9sX86C z^IzZZrw6aTE?IA!Aaikxq+Kk+{lk~nUckf#HrhguPKHL7ef0voxP&lV}%iE!H zj`;hVu}r_ruN`^eb-!)xtC{i5m$odAnAOJ7{jb2dDy?tv)Xqc~9jhm|yzk}Rd=s@+ z$Rs?&iu2Nn4*7`Lv}83i%p#}?aXWVP{tQ)< z3iExw^Tg$NXEmu?C9&)3e>hG`wbH1YUs=&5v#6x5ST)Wi+hL!N%hDy>8q%M0EnbR# zk&tiM`dYC>Jc3Qcz3YE;%H;jQE3`N_=bfK1O?Gdo`mQ9?R*m8XmWk#pZcGV`F70uX z<_6DvYyRzRNmj*)f^>tuoG-O}mYm=DAuK|=hxxhSDQywiC{4%sHBnV|I~dT#UltB823@i)=iz3SQ* zmK)1!*(Rk&tlA>|`*Gxx7?r)bclJ2`-frCegIWGh!=9IW%oV@1pNo!KndXoy~pPKUU>eWDRaIa+bsAgtz(bxx;=lE7agq34{dH( zn>(}gF7GaDUUy^pU(@+dPFm`*Amy>rR+*byGJ<}&U%1<|u=0Z3`RYos^Bu0*QXe+F z$$9%~>yGFLg+I^x|F_P%@c!Z@%W11F9>{S%DSABll6d9>t~#Fky`Lf&^tXRZv)-GY zuIC~@ z&%^xxt&L1H@BckE|LN`f|K_fFCoNP`;41Dk<$h*K&UQB|3CWj^%=0Gu+eJ=$v)AQY z^tS#zFI4rXEcO0=p@Y@%dXsU{yw$}%m!x}FJkpTJyKcYN?fjYbjx+vdPFc3qbg|;3 zd#l`@_H+1f?~+mapKvlsB{)UE%k&@2UG||1px3otNjf ztjMLg`L@%qObZp)gOYn*huvJ*$TLk}!0n^J2%^mbl!W0~v<)ZW9?kKUsYE)4%>0MSq*ac5j-F=|!8!m^1ZfPLbn| z%X$6s3d=UvYMrUJ-|u;^+x_pk5y$D;jN4@|56!gtXudE`HS`UZ!%OBZ`S zZ9d!|p_#ttP3os@<$IZ#gk`sX_`@)($>iXn_f6l=^QGmOp8Q;)TGLvsxJ6;pt&3^? zUw-jecW(dS^x6lu7QpOP&22GTj)xL1Z$#{_c9q$P-t>u(Drnv_^;gN@aul9ABKiKoqN&nv2@YM`~0)YkD z3omU+*E+0rGNj({SJI&wj~L{86+(RT`^6XVC`@u*KO@d+>amy0=c=tP{C#uV+1Y{X zc8EN@FSu8vmFxHK>2Yf7?Ow|_O@4BD{@*<{?MILBq-|=JvU!*{ zrRweOE#ZE)r91b0cv744G0vb!yj<}~zL#y!+zP7+%|cYL9HeBd59UQ_PjT9A}1FJN^qfm9@NF{JZDd zl{+8*jr!2aJvr-CVtmcZ7YegJ#YbK#o&0IXY022q&Ph_!ocgZUyn1zBFx$ECqM|%g zvKwog+3k?PgQ<62XG+yS^IP@t@WtMMisr*vI**Me|t}%$Gd;8t#*EFbANIy{w{msnJ*;<8dEGLUzs6#dYaDV zz^ZN6>wX_Pb)S3g!e#@WDmbOT<`AE(E2ll$!Ha`|G(W z;avefXI>riRa~ZYwO{M$3Wpq(UrFpC$C6z2-J;V1E+%ls%vhM(&7B;w@yRj8d|B^_ z52I`)u71edGBIwZbnVd$gJry*R?eQRVk^xpdUWEk_PfWX#dUL^6ft9KW2=}wfukzt z$<75J(;$$gL@wOO5Zq;-@YlSq+#iVH}+oVzs|hs|60<%*g9&DN)b=# zt25k{M^DFV&fcCo$t=d^(w!@PzrHZKEWO~vmj1CvtM{<*T+aMjHhta3hdXojyKYK3 zpJ(}~L$&BwH~+-HeD55eG&)V3%)D#QqyrCUam`|jzpzm0oU*N3gkDXLnqh09UZn7T z=l`dU-rwiE@6Xozr}`A9)t9~e#g^!?)#2i&iiW9*dpAEnv3=j)QcD)q+BX|ch#4A3 zPyBf9R{gYF50hlfrd-_Q=5yrUFB{|Mfy~#PmDA5I&VHgD|9@50v*^Svo3k2iPS}XP zOPFF<|7Um3`zrmj_gM7)mdiWl-s7b zIfv<`-Te2aDf4spR2*~^-!|vNwr+!x{qdZ(iD|1>w5Yd#QNLq->VoH*bwY0z@{~;9 zxvxw5lG8TduW#o}i2wV{aObyOzn^a3Zp)x}l-u-&mQKFe*Mcz2uCoM0V zF73Q(%UrFuSb}l?mt)+?s+TS^@ZQ>z?zQ4<-SR`8WgJx{{kJ(z-FsZ%Bi19aF!FEf z#;!?QGb`Rn&ob4vuMt*M|FNL0{HnIbKKC1cxfGon4jr6z`bSZ1uIj3U*P6DHF*>Ts zyEuvqT$p8FY2ORF*7!LjZAx+9&b=QbHplSYW!(OCapr}Wn|^6(eO_x+|Bgwcu40nG zKa11h`#+Xe{=I2&KGoMm}2Nu?oEI$GnjBp7!sz+m%;W%LFoPQ_gdJ`&HoI`vs}pPxd~yi$C}0ckPx~ zom1CSi$s3B+;*EK)Xu`N-Gg)IBMq-sL6@}>R~K}9&Iq4m<4|0|!w@oquK-=D(wtFX&#;VJ!L8}MPz@;T|RH1<1BS<`w- zMqI(LsVy|ge}~cZTGbD>53ja8?)=)HKS96tr}wAJ^Z$kXy5M;JolBa#{h_^)Wqn^V z+xMpaK0E#N{;FwjHZvU;?bvkG{~5D}mXF@dPfzE~`8QXtv|Y3Nt#kF!isMgKpA7zc z`lszFpSh;8Z~c}i9uJ*3`%<}eT;^UEi*6PDwtXLaxl`^>+JCsWrSL)j&s8=32UR#Z zqr>->h0kM+_!fO)cL&#wv$-EugbP=DSqi+;9jRl>&67QIJ-bD%~ayBz<`J=NpR+;a<6O*0&C4Z-hMS-k|t4y@Lb+4^5ww_e_ z;nWF^o!J5_rYzYPGflATR)@ZhRdi@_ZR*}jS=xOm(YbFf&Od7}o9OsPb6w51S($eP zJkuJ#$T}YGjLxg|+4uME{gd( z?a(BRd5NFTl--?GI_u1dxO>7USnS{5*?wvuaaqEKXmTlI1W}VEK+8kKQX4 zeYRp1?mhHA=8x>o4}aw^SzqE*n-=?V+Pdcpcb@r~U%fjm{qwI-xBiH@tpy)rz8<*w zyW#Q1y*VCsXVnW1p5L5UXUO#Q?7t6l3izzf1g^|?F1jb?!t3X_{m@sBcTX&)FqLJo#)vS51f0KH!;{hO6~u@iQyjSlk!+h-|R52v8vvE ze50qXS&UrjmoM4`yVR)eE0o-k6*t3!4nUz9@-Jf_s3ZHqA}mb z)Z1bo5;lK}{{OLm{e)&d+mPLQpS;z6o>ln2Bj!;o_Y=#1XA)YNekA*HJ-o~2U%RJ1 z$nNvZ|5HxaRm@z&XcsyAP|#krkmV)i-!r1q)zr_$U(mZA`$z3&eX4oI%}qC*ms%9J znXI0pKmGi&hp}zD6iS&bmL>_ZwW`J1u)o)~zrEyWM8QAbcK!Xub$;m=D%Oc@f0!&T zdSS=5wn;`)9n&nt=X`WFSH646V`iSebq~)!-mBc2a}Vk0M;-k#dEZ0-NRbP!4u`JW zZTS9Z`;S_#1ziW%|5;!9tnt8yf>?|Hd@(PFn;m7-&eTv_c`8AKiA(?`2MF<+D7CaQ=5=ji$taR z*0|FvYiB1OY+iZt$Cr$@gD;W`%uoE0S;d+@DR+-0Z&NYDJ#Oa{#ufag$6m?53Rc{m zbTqN(PUrE{>URG)_pWJrx$SX4oz44{iV#sjmbrJc&$?L8yZUg?+%DS_2TxwhG`e|U zhI+D5o6OyPn|qAQKC)yzDm!5HU2XLe2UCk_({|bIQC=Bw{+id;OWR#LEu>pp&oW+h z_FkBHCXZ{+rX{t1FWxiTInjUDqHr}{R@Mq_krGMPjBUrSuE}MU zlD-#edSa!6G8GSQPp%M8%yN^(les%)wQc#A@SiL##=9@|W*xVAYF|Ap zI%hwx$M}oiop=M^-IAZ4S-Q`=m~m+HqU&A<+AnA&Iduk><;YF{UiZXn=R5P&DKdM^ z%^2@3Wo+({(9ygTXU2XuaoY(VnZk=6KQH>%@ub#GkUCx4F>8y$nR9(Ld!7cYf5y7s z`27J90q?&vOgy|CYWNHy_h-$meioj1|L?KcRZ|$5t1p{Bb*AHMKDOt(r*y1T&t{#TR{1I1WK1_Eb~v;_ALXb)W4mvDX_j zd-a_1j=T<@ztz3hJ!ZO=-yuVjNe!UO(dW}&cYVFR>(GvC-+e=N z_~_SU?ViiDJE6g=vm$5h!IL>X&l5$gjs17bP$*Hjx_5Q2g?8g(qf7I?`wApntz**P zHZiHT)iP;ern?6#$K|!_p48l9V-+Zr{5oyUVVQ@XT#8$@7luvA<^9p+QTz6$&2pY; z1)2&4U&0g>COe4`WVD{#Ux@Cd$;S&6?ZgZw&zJYiv5b(`A5Be+U)%3){Q(ywbj zu6TDUwYl}(oWd!AZ{P3FU3mQY(ObH1vwLMt*64`;S@HnKXon5fKO#|^vQsQjVrwQ>-ZUu8J3!+y$q{K&q=iZ7CUF=Z4=iWJ5AOn zJh-<1(;RNWeL;;@b5-9S?Q2u@;8K3~WnQsF-Jb1puIIdK`~LULw(oJ3tNs#r zbAw=<{uGYneIYYyzDtY8s;sa5n=P<(^aqTK5UbI*!fQ&J5D+K;-L~{r+1&L(z7GxemPsc_jaM5uiOLv>z9m}rwhEa z{ce%;B5zW1-z{#F{o;#wwI{A&w2b@zNto1O}{ zQB`8f!4B4*be?k+XY<_5GGaD1OY;cabK3syW9g@<>uWsgnhbt_%Qaz}V93whAt+Jx zJm>al>$kfvJo@%re19Nc%{iS54ifC!ZnDLd{NfR|$+Vg<*+z`(vgIL;J3sFCo)uv^ zr~1;@>RxbPSn@T!oW%DRWYvm&-6JjbPUBxTS*Cd1pJ4x)*L*9}rX>DS{4$|#(XL~u z?h040dU!1T)OWFUW7Z3)=}vkqxg6I;6FXM#*<>5)WTH4HyLhRzlG1}l7Vg1?c zf^ms&U)`ReSX1&qL_$$vr`_yL2Tq8IckMpt^rwfEq+VW^?lzuLn|$w6glg~FfY&y;nm#Qn{Zo4u!-X=i;>cmNRb}?1qIv|Q$<_N z(>@sA2<~`)XIJ#UFUPMIUDkg;Jv)B~^K=8Bc858~*J*Q9DoJLR1WdJ*thaJX-Se<( z?s|=cuQEaU0fw`#x)};=+EX@h>!GG-8 zKkMPo#fcoz2R1Efz4?}dRZGV}h73w$ep}>53Y6F3DPC1wHm%EE zepTUFtiJr@g+08-=A93`yubg6k3gc~bH8-Y+FmY|j;m8QAH4fxq2Ia07Ul5NIWHdj zFSOhjb+zw!#L0zz`F9q@Wd*sdJ@#aMYK)%?^TLDQHu~PGzr(Sr)k~0LU)J{=rw1=) zFW{D&ZBV^e)N7XET;1sH&2|$1T8-TKn?qO2g;rI3I;o!ec-hwj_ERj6Es{UG@5TK+ zFJ|v}@px;M**O+Htsk9*&qYH`ji3CLub6+Q_ut$4U-#{^@|n}pxwn98S9SGfP@=DEN7 ziKfcwuNziNy{HjCebXS$e3iL{LNB}2yvq+1H=nOI*K51Esgya)x@+_IzfZj9SNFcz z+H-w#)3$^1r8}prJ)W}U--_wtGfL)%+S(rH&v{VyWapmW&EY3}_a74!`{c9j-2%pY zE8ULeO<_7W&sIGBnRUTUo@-67JL(H=@~0eqsC}Sb!4wiWlPvd6N%KE`(TVzx-jwsLcWuiA?}C!d&F6B2Rr`O(e#Mz+U1^i3kq^sej) znI*Hbc&SawBcH%)>5Ff3b(g>XBf95#g^BXrPTi>m1$$2_%AS0Axj>#R?99WW=Fh79 zvu!l({Vp%8l3Ak1+5N6K)%Ys2x%2*}_0j*N(#%yw6WL}LWxe!eP(IW(GiQR3UQ3tZ zrjz$?xG3zZ;98k5S1?9R^+j^>F0t^OOwnIqLXCV|ZcU#xYePcA^9Z)k*l(MC{A&*+ zzI%B7*6D52r&wIF_;_|%;q&wDd_k}8^ol66G`k+u<-GdrY{A5OPu5%83uE^Ee{8M5 zA~)%{-2E<|*n1^ypX5^3`XBzD6Lg7>(Y#T5$%-H9%Yqj?x-+pUVCG!OX9Bl4X3tXZ zNI!5v`G?H$x0?$7F-7jLl-<{?aKKo6&-1&V^rp=JI7xKg^^GgHTAz`PTFhotkM6iacIw;mUM1Cvz>oFX+OE> zE_ZE-g)=t^bIwNa)YN;Kdv{HjG>BSWZuZcxz$7H=mhSR7TlVkyzUOkv|HD=bUqt>tH~Udg z(UOq-Jv)wnxUk?yr^9pKb^OqIREaC4j(0}4VkCSUgkQkXUh}UE0fooAbI?3 zeoxIAx8r-f_kEAG6k;n4XaAJQFh5N~G`VBJ1&4H_`P&xp+I%{(`i0AHSxdwJox30F z|5yC*^NI2e;a$fK4>A0?=#kAn?^wY3`xotE^M2j4-1NV2MTw)(;*-Z`EpM7IXI;%A zk+;7}Bn+0B^LU+0Jtp<9r#E$*gW;X*$T@uB8rjc%Wew}rN8I|Mz_ZUNSoPT4d0J;B zZB`y@e69Of=5CeLXRr2+e$%!8&D8ujA>Szr}syGwVK!oqTXVRLIQi?U6Z5=db!tH1IrQm7?SDT`b~kLMvnB zcQKX+uQ`G^8dfwIHKcxW%2Ucb&$@!q=&b?!u5(M@iyT^Qo4DD6*N&mkU zGFbO>$uR!fBJ7&`Hg$zsPk+Fpa|}yE`gT>!viW(VZ0D=v<)@ckzpMP({DBcy%TueU zU4`2$g-y3aoATV^I(pZ5wRE_1-bED)HIuD|SB`z_y>+#9>;0T_hcXsEoGAA9jG2nX z!Nd3Vlx{9NXZ3K$<0lp^SI$@8o}KdUPvy&<8+cZ3-Wx64QPGz*^Uax*ZM%2BTpIi$ z=z#IVjzs_FAPHMXw`D%Ell=ZVz7f?BEpwg7sv|4NS26d1?c%PRkD{;NKIhl!8SE!{ z(*3!$ds@{#S4Au1z>BZ1E=%jNs+w9cx3VTpobBDm9_W&N;k^9Qz|)2AZO9z`^7|%_ z24z-N8SX!oEh(OvE7l+TX|y=NL?iRZw?m7cp8xQ`ph|(~gzfixi=Ur}Vc#28)+gN% zSoA*r-PGB2g_G6VN`0KCS>Lm!aO_W1WK;Nh*Y=``E?*jMB8ky-ur z|12W+RBU{+k^j)2_4T?B_VFvJWGrgFeZS24;`t*J8G41~8aJdA2uD3PYHyu>_CrMT z2YGgWqsXGKkI$djdOc3N{>R^3gG<{Udfk%Cp5LSXyPQv9=G4S8le>*Z`=54|pSst+ z-D#Zx7h`k1R1t^CdWDdp<|>1_qR8tjcJZ<;3}RL}I@55eNS40ENu|n>a|cKsP-<;jVb338f|TSFBAQ0*WB|#@fQ57?Z2b`Z2fZ1IppYb-joO47ersa zS6l6M;p|iQLq}4g4lSA#t|vJ6kW!O?z>`~+>|U3Zawf2UyV`YVQh;Mj##NTc2p88q zOU%<=@Cj|7E`93SomU-CXKd0-5qN6cc=Sfk%R8ss%Ud&E9cBqpux{CztG;IYEQ7<< zSs^xR>~D8}nA5}8Wp-+>>Y<*bH-`6XFTUD$cGIyUHsK?$bq;-0XqZ>EiobTf{6zV` zU+Po8iiuokxVgOXW>kRlt)^uXYgUJzXKmWJw^`MSqxErqo8ecR$-D$XPk+S!$U41JKY4P8&C?Z+`>*T@y)1co%U12ZCaeq7%r}3V{@wp` ze#!i%=?6+P%ne(11~gPbXUv$`8@IJs*n{K8@bL|zLt*bt$X`0 zrRr$;f!l?_n(lRrN_Xz^oh-6->D)?wyKPf7b~+S3TYaQkx@ns{Z)dUYzdf(druX_U z4LMX5vpYD)U~i|Ybg*~#oyXTw+1n#`m|N<;w4bM0-M?Z&-J*(w#q!$ODQmwS=C@P% zUvW-4_3Go*Z|=xc%Q;@2akw!0-s`ykRToZvUXbzant}f9jeds?&)%G1XOnhs*Ea8| zHP(60r5<18?(xzp(OO)5QSjZp>i1KBzprQD%=jU9?CC^zSz^xRQK8uW%bG}__etM=pBC)fv zWzQt0UWI?B_b|5`YW5Wg^7|#NnVGTf$m2>K*K2F#rquubKL6y}|GTArI7z48b6=7A zs6#5FqS}02err3=;mrTd{8OH`%dUzQTe(BMvQ+C@-;J4%dID$N|M$zh==$963H`6X zZVr=pzQ?+e?Vpd?L`j*6*6;UuhuMCc;rgtCv9H+0ev-hgR&rcP1WxH0#zqG4ZpC^L<~Kez6T_l`5IKE=22!l9jU6>pjo6 ztXUOvU;nX2(j4|6;}to4n@?Ka(S2huZS$11922Hkf7`TnzX_w(eA7=`B#%9l`4ttj zZE8HgOWbV83?S0P2TKF*i*}=QpRK#gRK3dx@ zwVN~X{|oi+C(q|qIMmgD*P3a{Zm#jxWw{2I4aY3LInhCdm!sx8T;|kz`%@(|_ID=NyFYv$DTQ)arvPc$eEr9yI2RlFAnLNMy_oTqh zT<_bNW+{GUY*CSnQ-7BEF?hi%+v`6Pm#;L7o6`8zSg})1XzzkuTTY!cSJv`6ebTz^ zj>#;pml85_b4B0zRXmhz4@|hX(RM-pk~ikRHtIJ|iwXGg;#$gKmI>LPL%O;I|K4JI z^0TZ%<9f@-{yO>dSrrlQ8Ot3P6c_j1YTsV^VyRBeZOO~iva`FA7YT4pQ%IW<^c`TBJ-TmCrQoqci5`R2DqzZ*ghTAwYvH2F|};DX|Fm6L5M{x^Smk=(x^kgG56 z!BP2*pExSsJXgN>=DqLC*M$>eg@h&q9hF#dJpap~n^M;jj(zwgVe_^wH|EGDPp#L5 z5~?=L`Avcgw>Y%V5BR#_%ZUp+?o>QJ|Fn4i?>To$kH@~?W^QISxzk$puI_@ZGGEA_ z%>jpwy?c?%(YQWhqf1=d3pD~|Js#Fy6=1${I@al?Phb+VHBM{Z-dH*$@BlT$W+}Ziro08;O*SL4IPhW zRqE}@n{jH+XTHUMKTY5Ff%WIj((8)L8E<~{NpXJHAo->z;EdCcJ+h)KufJB^+__id z|K~a4>v9>6tIpM(J57S)>HWK#yv5GUZ!W(TpnIVwXs_H$=d{0FPpePa?|Uk7^SOb` zvqe2YnL9t#NblV8Ks)xDfjhTebAizIt-&w$MEo)i;hTOr_Eg#Q{|Ap0_BT#ms_C#? z?e`hp`yv1QPN~i7?f*JI>DuvE!T(z3bb2Q7uFOu7x$gKcrtfi|!;ei{9Vh-eTH3L> z_}#)y*}35_TV721sD5kbEC$Z=S8emY?{U_;GTU_KqhRYm={0vA7ctJ5&+5>fEhe-j z@Q0Q~ZN~LSY|4{&m?b+MUt7jJ@3Gd?^4^xDkb=XSlXA1UT0YfrJ(W`9YY~W3lX5<@ zdyh~4+2dTA`DRqSyz}=7UyRqr)Zc0bwx>^|ExMbl6)mgyBxQ^4y zh4Y{DQ9pf+Q&(o}^l6l8$@*Y=Fh0J2MqA+08^I5kislrH)P#G@?pk8Dz^U+8#WH^F z73>dLF7FDJyMAa^ctS+)URGV}vafqC9xYcq@S!7g<5W+Rq@cHFTf$tE&&l&--tte~ z@~S%IhMRk$>!pUQ7nA3nx}s_LK#-yP{b7SrL+Li|hlhpMFKkRa`$Nu|wAj+>+85;xwmJPS@)h={9xw($4%T57|M5PO<7@_AGY`; z&w>xvIz`nYgqo_XCCnCn;cPuywtmmQ$$>4tAC8DGc+-2T@8R>fifz_`eD2IM+|-Ug zp83yrN9)_q^Z)Pp^Rv%-g2Hh*-W>*PdoNWNDoei!T>3gOX63EkHJ>wgTu%_1J7d|x zdvcAnrd(Ti^iv`erm<~39e&N|OpBlaZ>U1ZzcW_y?kn#oB$%~b+E94!#kGsN%_oe~ zpUgHF{>K0Pr0e}X9D?0bH~m?0IHjOk{_~Y9i}M;c8nxUL$ThZFvx-T$_LcDbN%G1& z-#&Dg5Bis^^g!dAZP)4^YXRBBWB)C9YTwQ5+AUwcGJB`iwcCB4i`900@@q@H*JjRb z$l;Puao&=l=i2%c{5MQBj_cfaKWF>9^3$qt-RaZ(j8m4$1+y*OZDqh$l)A!$$1cFg z{I1ZZJs;QHez~vcK~VflgLCoc#FvU(w%Bqa?e|(4W6_zb7i+{@>~D8JBR;48(quln zM^!a!k3G$oU7pCZc<-cAwT3R8PSIP}YSrJZdGg44{){are0SDmoiHr8HT#yw@xyP9 zCSR;oeJn08bIs|gCLH>##a#21+=3UhPIz)+>Z2{+&rDu>M}~DVXVLugtieiGj&J7O zJyjz4deiLrOGCDN%<<)OY>nP1!&`qH`E`L~kC`IJZgulBq1vCx3Gge*vVR+8)XmY^Xs~L_9 z51NT=a*h(+e)yQ@*^Gmnw~wowxoT`$a#VWX600L?9KOxJlGZo>$Bk>^JHoC^S}A<= zSmDv4zOOCU?|bA&COt0^eSUQtPjvISXC-0PT)X7&ha8rYnNfOdzu*LJt*Ne|Pn0Up zKREo!<$aM2&f?ydyZ7U=_)}laZab)6O~-#to&ii zY=O3UeHTp5p4umS`=e#_J|#`w^siNJJpMB;Bvi^eKg>zlGuunz|M9Bwz2yw2dflCT zp4{10*}dl2Qp5jU(RbeM`fK-Af9}`NVo7p zz}z>}gl1G~-#EZiaa(x<-m{ z7tlROi4CG&b_;7VUA8&=RC=0)}PD$TdCJ1^rtTOttm|D>t?LBV^bQMCywTczVHtt~G(I@B@#%daVz ztuyDU=5m?x34d;@`%S;6y5lOJV2eU_uto2@H5XTSHVU<`db0X-fN|K{{uLY?lB@H> zl1d`2DBC?2)YrBfJsAy2!@ynH3M;BCY{yJ^yt`Fu8Gd`WFeXP$h|Kor6>){M9B4ab> z|45lMvs2s9NytM%F@Q@X)4O%kU8$|H3rb!u&1hgcxHMwpv`12N#Q5I{>8R}3eWY~K z%pU(q|110MRPW#N|IM^BHTSi@&#R8PX!U7oxcEug?|YQL+kcs*6W{%&@Yte*9WTvT zZU==+&n&J^Uv0MU!K{~;7MGrUvgGf#`{M7mGJbmT*Z+iKyZoY!u2ITcGAeS_b-2G} zrCXm^d3o8XbpNuX{cF*7jMGFGW2(l`NmTZqnZECu@EyCP%Pa{jhwo?{Lbt z#U+bO4orU<CXe&rjUGZPTGeTi*GeO0V_4FBnx`wQsF4 zcZ7ZUaYpNH2`Xjl8W$%%e!c(ak2hQMp5|*!={@GGxsmnRku7I7h^RB=a+PfAV&8xN zds5FiPHVHX>eiRkTf5#>?+E2Ie&mxMb@Rh71G`hE8w|Uzl^s5NYTKSSJU1FQ*YQWb z+5h|R`>VHJw{Khb=HuRND;@W3yL~-n{@?GD*Vq4*HcF9r)_HhV`ac%qGc$cp9@PGB zU$Fm9^UY`eHvd%C_?;1Kzp%{cRA2ULg@&2lf!#$ba+fQsGfUoXHWVwJz4m5Wg+#%O zw=o;}cTC-HQd|8p__$9MhiJt8w-tQq{|!|R{(pSL#8#Zc>Mr*+iJQN_Fl~t4InQuS z<~H-U=f16pP)TB)#yslQiF#>(;fIg!J{ zk`Iqv>P;+`Y)p-=SRrSY40MxK(iocnj_ z+gTTiPcIe7IGLp)%IxUtCpp#UXjs47ve;~? zgk{!}Z>j0MmaX3vB0j~a%;fwXx7k_j?t*n5>UF8dw{$9KB}@#sQK(unFNM)s$LEEp zL2vK}Zs$Ud>Dd)UbL3>cYERX34zu=mzn*haO)enfg`UFWj<0^9A0EwVPPVwW>(H~B zLtmN2_cZQbcOln{`QQ)jh(#Y~Y`L*y$*)JjsvVD3KU}piB&}rG6se1oA8vl5p?3DF z!nrlyAJmIH==s0d-a*<%f6If2-Di)fyjNm;$6x4W&MNxvj^^JRKNMi`}3lI zz0U48n`ZM!Sure>corC7pdim&5XIqGaDVUj6L-Jg(e1bYw&cp!RTn?m@a4Shf0?#g zD*Uv9kJaoAKV2*zolq|AopWrPOzgvZ70*jGgd;4b@V90Bt2q<+s`ORwhW@gJk9UM} znfARuGWSi28|(CSg=+hGoi>Yx?s>t~mUQRdxgv{aObP4XzL%G$-}cvu#h;Eo=QjAcpvf)~s>!d@2HcHo?Ti-l$nefUd z58V{j@hx{Ye&p}9>3;T)ho4khG&Wv&nlP<5F+^>y-n6w|wFbuxZup3>o&A&%qfpHH zF7osybsx6n*`a0?{u)aA^5cuo@o%WT{d#L=&%R9)jQXZMWV-&j*jrUGS7C!}-U02- zLx)OEO>^I2;T0x*=t^r`L`Y0Se5$=IoV4qUPRrbTW2YNmMZ%wH?|jwH z1-vj$>|>g{H0`E!P-bSD_njFYMTsjz3Rmp-z+<7gQ2Px}WUuNpv2=lj%3B}H{yq>M zvCS{1QGBY_jE9bq=jB&C`J>8t{=zO^Z<+8v3pxAeSgW>P6`i_^8D=a;`a89CmH}fh}7X8l|4PX7u~u%}x7u3QztWH;G$s zheMiuiFwu?%QEpUU7Z`(<7-2Y^+~U;<+Bp}oGPr8Hr+7i%AE@==PxpB^>}{1-c_#V zfn)Dqx6XL>7t2JaS+n_F*$v5$YI zZmKxRbl79tR@S!@@;9#ZR^Rk(=FhVmoI6*a>|LEMbmsbp-R4?;*ABl5Rb^?v!E9^Ep=1vZ%*oZPen&LG6n3>JCQQyFOA*GgfGCOP+Ln`+-^OUp7wL zZd2`^!WwgM>0JBU?s_kNWbf#2x;JTS=6AK%#t*j^KXZ!gxSn!;y4{VvO@0dNN<(hk zU)a)qr*zh5b8Y=!-y`-EuMB#|QqQr=Trlzb>-P(DtlwJc1fA;nNnVZ7MNTJkw*TelTiAsp9z@S-#dk z{kDf&i;_0{&{^22&6%42eof|0<*ye#H?TMS31(mOFitUGPUox5cf9;X1b&~-a=f>G zuaTee#u9f&_BGsM>E~qD-{52Wc@&55Ivrt|H1vFotx&*S#83i0=To}O`X&+=>Mzq#!`HuZG)$=L1ZrYZMX z@`PDR?^!Te{888Hgt_ncTn@i*Gt26k?|eSBMyv3QcXJ;I>3A-Z4vYPCrsjCu%&F%- znKgBZ&EQihTp_h@D$C;&=>q;zS*^>mHBvSdc3+?86d}EKc8dR`RSG(Xg|k&>Pc`Y) z*Szso?z51{>rIc(@t4u~R=@p=2zr{*eJ{yX?LWZA5McO~q%n&qq> z2iVM3jqzCK^hk8_=ct6I#wRCD|Niz^9COTbwl6aBS$lc1ew|)nxcF(l_?-3MYd;*U zE_yCoesXcYE!)Af6-H`X78agbz5dMfv&VX`$p{wrE8DG){BM@pJM+W#d%yfEKb<`O z)a;JGVwzsXj)@n4u9@jHsrrc5kGpK`+K0Vss~j8~j^4h>`l#ov|4w&}3sGCo-QzBC zR!;K~-Y?tbc)E%!#!t%mx=Yn@vm2WyhogkWdS9MAn)>~G9nXYRyZZ~I+mW}Co`EpM02oY2a?g!Lz$=WO50RQ}t!(@LcM>B=t(0{3@W)omz#d}CvBs>w2$e;*s}FD~i*`sG80Lixg7 z>-3LF=J%Thttek4UL$Y$>xFQN-mYi1f8WSxNUY#XxE)vah565NKM6*Dg~{(Fo@F1d znr&!Q#(wiPd-N%fGfnB$F~&D~c1<}qcV4f|oOx6J%zZbReft*{X^XdEle2Di^rTx{ z;C?^FTjldB>)t0tXOGOfd+KVtbe+~-tGgO=MYpVUTPRuMnHhd>>Ury}aZg44wl^}L zJaD=FS8Qkak9$qit=?<)o|{myZF_*wkL)!k>%QmD{r=15^N|4VV^M+JZ`o67Ru|~L z{>;=Zr4r@0yjLIqM^Xc>e5UWtgHW7B#E!-b=N6viczhA8>pA_IP7$?8)xu zX2ZO0r~c=!yZqgcbu3?UvAS={w$k*fb64K(;}M9iTQEnVIONG!^XUmT4`07f|0{J& zQOV4y;45kD;2);MqO^XQ-pWa11EXAq!l&%vAfECojSMayMO(Plb)vze2`OnGU3A7 zebesloe{}%T}@)H*}n$u0Nt($;;mo)Zg+EFY_pJeQsazP&U#$Cu#x?umEgl>m#$baH>guM>W@i=ENP_Q&UlRUy3}c;sDHPd&7U`D9qH zMr6u#^KZ}6*MBv?AoFb1>h+D$wKKVlkA)oXk<&iE_rn^slZD!{0u1l>exCP@M?KHx z%Y)`3p|1Y;tHRoI?>w1Ai&(@7%(=3 zepc$AKh7|n-z3f3bt~t!*Qwz#d^NI*cw<&{8JrBheJ@Ggwqdev$94N3ADoTkQ&Wqd zonh>A{*m=NMy*RxTjt2omq||~=csw8wwyBj?7!-T+VN#Oyt>0*Ur2bo-zui9uu7?q zS8pNf>GxaX#d5VIN$*JR>0MWHNo>-k4`<%#@E-jf`D&$eZ-S+Dc5j_i00Q zb>f6efyQa4Y)o!0ba;PvcJbXnw)P*D>Q>%i#`a7Mm(=zNypX{T{4E{p5t?JGHYzoO7c=0|wUqb9qJD(QY7ZG_ns zn|kjb*_rBk*zWq(U(G&qmMpiZy>)4Ea`dNjsckQMj(var``omu#4Sf`6~84-Jtoq- z{YCylj~~yg_U36FHar+^Z^B`mme)}Ff$3(h;?#9a)jrqazASyJxWl3M>@=~-8A zXkGfSJ@dSt9hfd5ckI7FnY-5@vFWtZKd3HhTx9QXR#J&`*3pIZ=N%i#8KI!+9 zF8lxQ{uZJhyWZvYsri4Oq`!*0pZoo;sqqfR*bOsodYkXzn;lTTd+wwt9)+T50)}SC zijhL?ls$W7`*FGInAg)*p17)9`F7gue7D+id(jO2y(Z!7cD&L`ZpvAA z$nI~#H>(iV)NYwy8wKa7&%MCj48mD7i0`q)au-?W~|+!tfVoaTD$Z2d{le3x?V9}=MNK;)YqpWN*S(? z{;8$ZT((NJSXFE?&~uO*VmOiyY$>}gE;f;8=vCe%~y7u>3HsWfJE?4)1^n< zR+t$w_CB8*AbLLWewl6e1J1UllG@E@f( zC~s9n^Z7>8?e_{+pPBuCla0Y|#VhZO8T(E)#9lmJyFlk?WSK*!VoXHUva_>pxZT)m z`1Q5HHHqq_lg{1bwKde-DC}jmI&qorUAK38KJ)Rez0%ZfqR3P9L9zYx?e~Yy_U-9B z*xYvb7u#Lt{u%9upPBJg=CpLrSM1__yZXt6|F^lHc3n=rQz8D$Yxyx1ruD*ici#z+ zb9!KLw{-%K+$5oFZnMd`n;)!Ze4S&eEnnU^m&bSSos`JRxNU6FIX60vng4P3ykA)> zw7~Im>xb~>BNbk+I0NStH#HWv|Iup?z7@_EBqY@}_uQ2)6L-D1w0XMu)EiRvw>VDU zk?>hqY$2>&vDtQl(`9)ny{;oBvNKMWu6CcI2e&W~G$31IFlvP_e z_wJnLlbkCPPVWn!Y&)}idD+Tu3GQ0k_x;>eu-0O-Z&=tT9+8%pPN#QPHF6)E^!8^e z6Z6bFr&QM#-RP-5sjOembL{wy*!&%rq70<(&soU$CJF3snvk0n)&1*6T~|X-?Y+XwbBlfix;J^2PL!H5wN~1A zp8l>cN;`B7FU$B$?6iA)yq`5eJD_2?RqZ4@9{jbeZJQbt}L^f0xQEH z^O%x@YkZa^Fl|g&tS$b96GNk4o9>bRKYfMVkK61&RZEVSZ;5I*nf9Pp%2;myV_AVcI?>7}u5g|Y zTt7#KBXyVdi-y#UGyDrDY)SJ7u-l^3XP6hUXw{in3!Xbq@taVy?03)-lXuRmr+llO zJY>)06G9&B~vvZgIbMNO>p^&wQ_&=X#g!{V8Vre^a_j-I>~a2kYxg zR%-CPS@`nOp}8{LYhF}K8{M2}eRpr?vaH|w5^Lq>Tx`v@R0*~A{=Mzc)VcE#*6935 zNSec#{Ck0q(1qtO(-}+Ez1-K->^-ce$-vjyqSID#%;)ceANd9q@!NM6IXyX&cEP$b zw!P*{*y2B*8dkH2?${(|SY)=kA+~wV$GU4`qK0q2_3Cbzc5ugyTqgef)&>86{{O@C zZqwW+?e_mB_E|hBF^Q78vL}39T;H3o|AP3_KCXYAKYj8A&#rghH774W@lpNUl#i3u zGS+8Zo3#0Da=cHU(&sd8zhhTRwM4G1(R1jZ9lbiDq}%DtyhFAIiw<21DEQTws=1cQ zY|5TBcT%}6K3wv*d=b6%be7QP6t5)&n=ah1b zxguN^^B;MsPrjrv=L%C>XjJp04W=(%e7&*Q|3r^+T1K&`TG*#GnSra_m(9Eu%|Fv1 zagoi(Bf?SZZZMs{@VESKv&7Ft0fC;q#fwYkF5YjId}zb0*-|%aPQ<*+@w(I-dwPR* zZd1GJ*2BeDgq!AH)6;#U#!*}~@rU!n11=lQw$&dk-|CSTy(x!rihIxJqfx5_;}#wD zDYxCe{4Z}{^4UqI`;w1#U7b~M+(u|!yJt1KeANt}J4I`JW|;7C=60KkFA?AL_4k3N z_nxio*!o%a+F_rfuB@o-BI|5#e&tK|?Vr}hcjZ?3oWrIikC*TIWRRorq;^Txp|Crf z8S`FAnN>HYo{sytm+^hOfZUAlce+3Q2=-sFXMLoou9id8@wnU3ebx^pX7=TLlbyir z-2H!*_jl<`ikuN zy=$FWxqn~F-l=)#+2!T_lfCu!vMkL$oO$m8!o%J@vrs*#kD8QUtEgOXMeN1{m-lGw@)6?)JQFru>ASrX4nZv(V)nV=lQ}H zRn??6o#(i_p6BtU4$BkQczJGbp6K&D)h)22?hh<$196|ydkz5c@No*B(0y;FDl z6z-gy;yGc%=`%$ertGs^lNp~NacEh=3J0$VUdNm^<~1+ZRu_F_zy5MX^I?~}Zx|i# zd)!=Y)wn+87N^g)k9X28F+Ry&Q?sVo{rihW3n!cqHGC!{8RL;+yX?=UDf14@;aVFY zxm}ZUB~L=Ins);0TD8O!cJUTT9&=^)Zwx9+k4@BhXB-~1uzF|P_N>a)H6Oy7|9o1o z`U2~!{%w6K8^arCtgiar`ZbwXEkS*;AxpIREbF4rA16OCum3UE=Wsyx+_IaJsjj}a z!skYA_p!@t2s&`%>8GXIPuf=JPh6cIt9-x3b>H8z+b93O`)+Tw^VE#@Y$cV41K7ST zT(G)pR4;mFFK&9f?Xu5|$K9*f?eUsd z`^<9Z(`C_H1^EM8P0ma*YCASXZ9@mIz^jl49`dWg8}!#?=Wi(6Tf>-epSia-YC`#C zzB=R7Um+%QEnV0au@s!RuyB*u;|R&J$nK&Wq6QpRg}lApZa!zCw-hk0`SE+p-M4H9 zR!YA6Ht((Pr{A^v`tFHcPWg0&an*zt1KwaGmfar@omu>L*N62MzZK?cJn((6dPC{M zhcc>~_gD72Y6{$4RhpJ0vi?-q1}WozPOsV-1-crmmVRDc%6oE!j?d#gE|UeT<{L{s z_KlpvcCR`EC45{eAM>%1dj^O2s4%{;jRg z$q@OqsbJx)g)?s}M=y=cK6NX=Y70XGgOXvq__B@CcO%pmJlXc)`|Fo4H#^O_ZRPZt zE2rqsiS%~|yyHadb$9DcI5qL&37fZT7d%rjb`ogaJLSQ%1Myp#JazNeOpTW<>0Oig z%z%xFXX}#33C!^dh+Fa^8DBQmo-e9@uh9*QHyC&4i*Ra zc9@pl;QaTVTjg|2*}_yj>8I>9Jelz?kb}~h4%BRD1r`Of8XG~H_UX}9Xj9YqAsC2=Mrl9C`S~`)fflIrX z**BXcx2S)=E+2a`BhYx^I_5CT@8{lRs%81jGjdfsIN2oQhrnB(6Md<%6Q3Xatx@xP z!O>S<6_V2wGxM))HCJ-XX*_l@dZNwoAMYPWykC&`H}$~@E75y0nprknacULIEtsY{ z^({Z(#kWnzuScAFqhIrn);O){k6xx&C-Y=Q)Eu3;LrCgSn(3k7zrU|%Y|`Al^Q-g9 zyQSA-^!sgob=)bwEgL1}zO?PjwXS&#&J(_rzu|OWyzsI~#Pi!)v2oQ;uX=o{4$Ir~ zP;8~6_>Q;_ApxFQPRjFF$-Ur^)NQ-j!uFG8)n|e2AM>-rD;#dDmaX4>oV`pnid5cJz(Amt>owt@WJYKZ=cIUTT$AjuU>>?pEel%!5@LQhvWrpAj zIrgWf-_EJrYySS@)+E`L_Zs&s3#on=$7(vu>87Wb>$B{0Yv0(Ob5=UO`ZSwtx1XU zJWY`oHwqixuoNhr-DY_6VCHjKpS$Nwrikp{SJU<{?qr>=&BL5+hhis`Z%K;m-t+O7 z)XnDyRxb$`FUxIWUiVEl11A-342y7I92C(kY*2QBFX+^k6Oti8FBnxM1?5?HwTG?lkTJM+ z_tslR{oVT6cLlRN1WKH?T)&w0IKM9K)E{QgKQ|q3>{Ccx#r14WX8I$;Lzi5%>O&TC zt9{QmcvtKHPd#QBb5CU3Yek)3P8s^{MNf?VZFSY>m2gS*)~u6# zU?y$qRo53d`}q8drZV;D9R-TJYXAD??R%&e5@YiEPIgtpDw8ixj4uwS)d)K>s`3?j z%FLD8k{in%XxsRF!%3dg3tu(NmOW7IXPP|iYhV1mK;w1)Tjbsy`ROvdZ=UACj;Sd= zYnoN}Wrgnj^R9gV)bgXY*E_Y!KOc`j$t#IZzAU3Ad1?81i#mRl19PkI&D_Mx@-rmj+?~ru z|L^dKoAG(inSH+<&-!mL%=J^w+L6LIrD9HDbSvv=Z(hcoev3GkUw#;`Yn{5T=V4Ly zbE}!9S9NCERBp;?-Ss7u_p4FLkAMd!#XD}EpUC{LLZFAcFVZzAM*7kJ8OQB%SD#He zpYJ;*|GlZ;DVf`h#X)zgG~#17hF_b1+{Ga}e?itXaW#gwpM6vMK1)7UUAOKQ+gygj za((BG`gzyqf0)|D@z~Sz#j^#;qx}Hf2dAQcM?)q^&Fp zKh>+_wrOMZHXgm(tkUnbc61z8;V$l-d3&Lnw+nbzMDCCh@V@R-=jk>}=#n4PM;Rs0g{`4e*ni6T7KF|T zyXW@oLFcwFdyj7F4RHD)!KW90O-q0Oj-a~YBRV_&XPq^2{23{1lBTw(U|9)w()2eH zrj@6{Hr>vPcV2z%?}dAX(ubwo|9;w@@U2EXcGj5%s?A%<*6Fl5di$tZ|Gc7dHiW(S zn#302V%NQU4~HpcEx7)DT9V%M%#W_)-hq3a9ICgcjFmx zft0x??DlPaE*14kYHN?C=fzKoH?{cZ1*l~ltF+v8GidUGZ!CLu1Wp&d$725_MRZBB z*7Wy1M{dkAOpM7YYgQOp7)5KE8@A@zZX}cG zuM6ZCd-m#HJ%9J%ygj8{&WBF0u?GIg%#PA9yyGhB{n%pBwMDOHi5xH6VfJ^5a+}~W z1>Vd(avvI)&b?mS&84{)QKr-{kZ z>_)NfH?x|AwK-eAYDlQOW-veUVq;JK8!N}U+5>r)c29d-)+?s<>I}D(*C7>-h)e}R zx1bo&^Hcm&JVOfmSY?{drw9raa9Nq&3cX=b?!Cc#$D|wH0lW6uf4m#v{^sn{uDhbg zmR#)2ZU1oI>4weqgTc+m+2-^lswE$oS)v(#Nw&3dZT8~Sd2zx_=dMlEopVI%@T)HF zu2z)`7L&cNv0M+!J2qnp=f{M1=e~$aw5m-r;cUlTo-mmd4)+_>U`;N^w?{<9?>IkahE=IYp;OojWVhn>jh-^+J*OO`34yZhuv zPUq~>f~4AmzsQ>e?A!Z%dusR@@&70NzkiE+J^*y;Qq({;+ppCN4xyiOMUic+AP4= z$oz6oQ|43SGe=~98#rC(d9>qxr`|P@GwXr`Zq|OApY!&GSd6y1jLGWAiMj^o^Nju! zzr8y_Z(^pw6efk6Q9jQzeAFabtq<|Ec+Tc}!pnLnW5pJ$Lz|DWmo_IPo!ywWWwpWj zX``IhWwy(F?@cVtYQQ-6-N=;_q(Cc|iVhhtTp z%kS;J{9&2GzCC%rd$-&WZu0Qnt8nIL9#{O_4}H?Jqoq=BbW9Yule}=vJH7b-*W`@q zKI>l4TqhRG_xq6OJ%!U3wD)pel_?1Iq|Gph9uTg4yx9*CR4-}Lz* z$NBtZ2_IkHwBp0ki3&P1BUw*soS5;%wR`&98$14mO)30XoOW+@>B{HX72*%otP>ZT z=B{Xw?kEqtl*Z++T_o^J!R0{nlZphh3p?ws@k$xj3#<)ZX>!5n`GQTnxfxTrPXF1% zeQr|jggI%`D$RHPaN_v<+-b())q-!Y#W3;|E=hlMn`h^WT1gqQ5%(asb6ozLuR=4~tCx@%PV{B8L~<9|uMOHy9n_iwa5o6&q*dg&IQ zU618nNndxEpis{A_rv!)wca})yx%`**TRSi%cU*K4HdL%fAoL;|KznVOR~wt)^#82 z?yle5^q~IcrmxE-W~J`p$$PrV=CfL~_k@zHUx)g?O5XhCUuhFlc2w$b(*GT2JhrbD zzx*xC!c{4;p8KYZ`Wo@avC@0a#qi%WpC>-?uFSH%KYq(7 zZR5F~&-HS?@QX*$#r#qexQ;!&w60*8%CfL|dny?&@qJy*HBaibr;UF0$}XmTH=RPy zELwA7S=`hjVOt)e2k z&!oTS+m% z=I^x)>IH`qCWi_3sC}Ee;K1w8Oqwz|x^2!SciENCt=rM#+PP!ymaqBY1)HC}I}^y5 zG_B#<^vC}f+4#0vo?1B1Mf=)he=Emg?HfW1R4s zrM=(|@4JulZkRist7$6jeZz2kw^L>Eic<or1%? zpB~*2PvLuXp(nO@0@v(4B@bsLsxZtew`;N7wcq#X6_ZD&T*c#5iW6tvFFybG(q`^& zYgL)s&T|?%zj%4l;@tx&zG<8b-Bg7(P8FVEV%*xBb}RK*kK_k7ziBT6=1I+* z%v^R*(X?d!<-7NI3o5v0z7vnHSz6O#Ro^D|Bc#gI!kFn?m4-`f%J-FvpU#S8S4=;6 zEn?!qw;%ZH9grfy1lnoKHc2gaahUE$u0B7kBA_R zALT()jQh8kO4q7NojHAuE&GGo-*p!hPWk@+8LFYywb<>xXJXj3H*@qN+irgF?R?J1 zwbt0YEyp@Ig;!x0%grsTXKk)?pXQ_-wBd&TwR^EMv<#X=r?@=RFK(Ni@W6el!1cb{ z^XAuZ7E08~F!luby{xU{==*W5)i=*R7gU|aOA*dpn9{r)FTTcYpy&CXwwoz=4R zVHn%>_e~bEft>k!W*e`{RV`!P?Kd%UmBDfMEte$SxB679X8$&Id2{i{oC|(V_s_3k z^88%+!>Fsacp+o+2AMyVjAmROp?;qvRmJOy0wv$FMBRGd_u%NM#aEiEz4X>PIEgp( zJ*v}NIN@fJ(;e~S(>F?HZ!FuySHJh*!Zlu5hvaI-V*h$R3_B+E@f*{n9p_(dY@TaT z^Vi{y`-A1e1?Qf}Gv>$oX>2%>H!Y;_lw9kioi}f8|G!c_bLM;v?+F4Y|8Drx^YwVV zTeiO$TjIWB*7^IDxdnr-`>EYfmi?CV>d=SPoO;P~IP?G5ED{M3m5-P;H}=MYC9!PR z`3@a0D+#)ME6*gTF?HX0yWgkucE8iI|9gM_s|_N@mc3+6*t{gUf39Zvf`un1xq5H0 zJXQPs?6ixEk1KVap2D$f;P&&() zCsFdDNS;VcPWLHCJ((Pngo64^m!&7FGnN&dI;nm#dVTGR*Gm?pUaO0E?Be{o>3MH2 zLkq8m&(c-Laz6F$NdGY*QA06yrR?o6CCQEP`~P*_IFlNA-|O_A-E+$2S}l{F6>Ju6 z*ZXIk^z6K?{`Y&O`}<6ny1q3!&l12fca5j2+Dg6u2~TY9EU>&JdS2%u3)>@yixRDW zI^#a@g(&aY!1OwKMbq6E|I+XOpBihRHM5{D@m-DOyC0KH`{M7ia!uQI$u-@Ur|1^L z={?qa_@jGYYMaNDF5rS&ehdF^-4F3OSQ}`G>EPE+uW?LX^Cri!t>8Y1w|+= zT$;jdJY#`=%+}*f3}rmK8dF{#UHLnWOKvV-m2j1A%mTh$O+RPE6nQ%Ku1E;lGpnoK zTF5SAYT*o)*45YQq*r*KxqNj}orHbzZjaplQ|$(ZZJv<=^Ss5^H$UAN!8fZ?n4$lm zXj^s1d{fQhyUG3QPy5&X5&n7be0_%L+8=$9cV-pNHrZD2mdz;5(dkNJjh}RUz>0@I zd%k}B`zr1D(k(ZXH@aKL{G2Jd%%bSXwTfwau5V+6U#6^f7j;ygP%u+_NooGK1tMvI zPp-GWnt3c_{f8MT{}y??kiY$PmzDcg9WS1`vQ1_Ddj%FYFH!#V{ps(&Ji;3-_qB^J zJ768Jch7m5d{)jujz6~o=AALxy!raypTA5V1|*&>vaic143}MyIAMG3ilPS}xOuwy zD`K6j+j9%I2MO3MV?CpnQ6t|fdRlC{PJ~|Zyh^sU5&qLs3zlmiQIPp@Z{LZU>+hN? zDyoftf7-lG`hLaiD_Td+{)}Z8)`;D?I-^0@XW@@8MANni<2)pFRlIR;ga3B z>EI6|?*}s${y%Y;|MZ?p{gY3p$G0*nGjN|5fB)#W`K7IXGDS;$WN)wA5$b4BypHLz z+{}uwX0erTKX?VqOta{Hms#~l;$FgG*=fh-uAXL@^lTnOx!|2QT4w}}-#1=zFr7a2 zT8~(hTC+XddsV&-%i_;>R50{C(OCW=d`ruN-sdIliyWRF{KROsK=qx~T(|F2W6P)6 z%M>)c`L;DS0PTfF*!?ek!-OMYL|9IX9| zo-Hj`y(zN)_U;nzjrpQawz+3Z3D0;K9lSyGfZ>CmY*P{?wtI@LwmaRB;4c2%`g^ax zw%J>r!1ZRV2jhg3Hth&!oETtMsqeIrLvsGMhZZ4$LCa5_hJ_ zmtQ~ie15_Y&Pln89`f*a8){ry^G);Guc+G<{3&mOE~oM8-CpUoEp6+r)w@oo$FG_8 zbG`1Q+43{AYj<6nd5y0r;idrl(myZM?XNLv#owy5&eb}&AXq=b)k^1(U;O!l2U6H?!RPk-=yA%I(hRy%D=Ri5LS4A*a%Hh{Nme(E1)izTXGz>w;TfcIv$xkm znyaRKTSn?#3;Sa4J>rueY)Lu2YoVsjRC|lbADlU6H>6I`?T|Egnz3=qM#0jPHsyX_ zm`YD<-Mr3u>M^qya%OSU^y3-1ckeG-TK(gp`_mtf`$CUSJ0*Pm!vkjilRtFLrZb*U zR^+*vu#Ekhd;Vm#nn$)!zM!x*v2)LCsMu|!8L)H#r|4h(d!fC{%yV`e z(K{RRezic=iw6g!)Xq9C_~sVRIs0thy^V4Y_@B?~&neqdG?z=YeMh07&S&xYrHOqk z7MF^q{AHUt#pb-xMo=YFNXEbF8-#eY?w|3U{&A0P* zpK@%M(b)Yce%sf%*5&i&)EtXfJQF{~YKqpTEmIdy4peX7`$5KKo3wqzx_y5fBsWSH zl_&hjm>s)kmv!1gV@30izm`nYxWF@=>AUvUvcneZZeFjSI#<>YlCB9q^E`JB4A@hg2j%TCUHd~F7oUsFm!CBbqBh zgy&t(Z{EomskUj|Qb%{|cb~g!pLQtsxg-hQ(p{n&9Bebz1fl5nO5og z#;&&eyosBf@a8?CsTcZ6A8op^JgSdv!sh#WGGjXVIpd;^tXgl+(q1 z&PB81<61SgpNE}a{Ec>2JZe`P$k?24Owo6O|IXXlkp1xAi7zpi*J)pu z*^!%@&wHFFqB3dH{GRuo(vznAE~^O(-(6j&vE)bc*K;*X1ifxHnLW(S+0(Ld{>6fv%7+t@AcBveT=!zk~d^E&fb!G9KgQt z-X8N=hc8rrI5s=~lw|rGz4Cjt)7ASH7E4xbumAM$xRHq7{j8F@Y)3cK>{F5QXLptO zWo2jNTsc>IYX{r9@@osDFH1ESHqMZ&zw_GpPHOZOzY8APyS7|3y}wzVHDtApOWOaL z>GN8HE?s|+m~kX!XAkH5 z3#yDgXOa_kDt(rc$b0RVxbEhgo|*o^OQ#qXs~xzz_~x5AJKX$d8TlSQ>LQdU`RV-; z={3noWiPE9t=As6yd;o#dG5Ox){gI$MHlDoHG7qDGq(JGD4)$2|4p({XUt4Y4mcae z`&oXDnfd+6=1c6K?`57gf9$hsA+J9BCV}>2JS!(pPWvN~+n7D!{(%~{HH^Qd&31*g z^|%BnMm^HHf9dMe`2l-Mxbya=JIWs4!TJC6Bu%rt^S)Ablj_)}3rten{^u~4v*v@~ z3%d$i4dRS>k7PGp*ZjWuY${)Zxq8~<_uIBkeYi5mVfV?$Hec?SRM)4i%QbiTzRd7j z(chaPE7*-g9a;o<(xz?HV)2&b=j3Sn8v5Zfm-doP+}D=v>e+WgVw!wWM#0Hdnh&Px z6)xInd(?RI)!@XN%Yq*+WqY@+?cJyCo8>05&;Jo{FLIYyN1kukl}`^pXT+|2eRT?J z)N7T5fBb!3E1itlrp;X2etQ#d?1BsS+__N?AGMj@PrtzM^4NJvWB183{+Ti_jeei^ z>G1pi49tObizAoH6niClYug)H3adZ3=X7Y7y7GnCnGp+@X05s2$|2dZ?ZXoXp6%D1 zXFPG4>UG3hO-6Ll0oJE#Z4Tf1qg5ALiJfvQklPy_KW$=!dM@jy-44bt1MF^pTP5+} zl=HOIbs?_=Z%av>>)8EPZh!dnoUR3X549E*Zmm!G{mEAH*9SS_yxCRNA`JT$6zo0v z%bES*ua{hX*^|{39?bOA=l(9V{O_Mhs~&Fn-XFVQ+4g0AIcsXu>R7zDP1B3$T4q@M z3|N{vZ|{YP8@xZH*TA0Gwx&L0@|7Y2o{%`C5wrvWI z6??XD@{&^v9_Y@#uu?Hj!1aSby86G+N4j;nA9#c}IWBWslQ>sQxP^WB)`L7v zOW0@bDGr?dW7SE;`=OfNUQ<*k~8)8y{3Ap*{2TKYp!e!nv(QPmHX`6 zD@~2NmI;b~+<9)s;k@nF)2=&cI?Q!mdRDr?I3QR4pI-W@V*$=}>Sog<(sOp*SrV6e zX{AN^_KKSCo+~Wa&3aEyRQY$1{VcETlT+RErrzY=qpe@RON52-y6K~UEm0cso)-$` z?|MjSr+TtWXarSlvDHp42zb0yyh7o(=k`38HhrC?>$c7i?|J>A>~V#gsR zzBU(4(%5qtS8NKqq?4X5;AJ9m=jP!_9LMe_p5DB!SdC*-_nIUHZ;m@DiMxMI5aGUW zdj9tP<*Jo=+h%Ogeh?f`@Zm>5fDqS|TM25>m%sg03zmL!b76qmX{Pv#mzM6fwGrD= zVZtc*T{`*e4ZFIl5*wP#gR3L-rY`s{s5j zJH)eITPAF8$(#G+MBprmQ+97#7=+Ki@LKMa`}JXn>kFF)9AVk^Yqp$l)m-Cbc-myL zj-ky4N##(<_;<|`-yZkdcS-!6yWy0$*WXuHPx(YGydiMy%%b;gOWrO}0z8u@yd&4|kZh@@vl*OeTzl*D4{daum)Q~A$6KAX{`uf2Nk%spfGv_m(u6gyX zW2W;Ae_V69Ka{Jc_p7lOSGs@Duboj{fBO6n5Ahv* zw$|Mbw&t14c$jHFbNP?^$CP62+V!dk4e%|61=;37l=|FKzUg@()0c&}a z1nc^hTgo>7xc0s>HS@0s!**HA$^N^wW4XWa{Zr?=$ahR`&Lqw+-*d!oC2KRjOMmq} zO~q{C`+yLajnAjQ<89yj_GbTrN?-Gx|4vPR@~!&b6mk2QCB6|lXWgEf&S>ZD4rp3X z-uqPU50BGk$*7$3^D?AY&Yc#pn!9&~p>3)8qu;zQcE>H9yx>gjX}*F#f5Z3x+$vN5 zr_d%#1( zJ1j|IeeLb^SYJemJ-0P&_Lk0sZ%>8(%;}LTb=}r@huKd3M5{ybj$gle9S(hcQq6r- z>0A(JTL&G^`_89%xaPb{*b*ag&}|-5^n_KaZMB!bdX?)+Zj<(`GHXpfEXgYBdwX}} z(Ug`#hHWc8qB{k8`}au@g>zT*;L? z&D7{-?%t{%17(KqS~ef z^|9FxI~NO`^USb~=xmB%oSV3BqH4C;%nLVGYLdvpKaZ;gMh@4d&7 zvagVXr~Nda+vNGB5-V?Y{`)(3#=(1x`rf(M{Vd-e+51#{{|zbKOy!UVP8u0Dop#|9 zdR*wB8O}W`|Y{_E5s!5^e7>fEQC$N+yzC2aFsLb-oAJax%9^S>(&*M%lI1|Bf zFKIt}zDKO|^maFTRaq~K~njG64GYX9Cf4Qohfcfi_E3~>Jx}D3)%rgI{eoN1D>eb%<<|Fde zoeSMLq@u(3^zScEZsOZLd!psxMG?EX&Kf+pl-eo6%C256_^-zF@v2adF0L6L9eY<; zZ&R_mc<=TvKdx;nSeiJGxft*ruzWw~^G6$>4^2ni6gRT$J-Yhh>pko&EuR-2nsBP% z3#+q5)TR)PSgCz}w@kFf=CExj_d6QBIZbq*yNgUyZx@^NAs&Z{^yBN_tk@W(CHnO% z@26kh>rY<29>4UO@?_n}dq-EM`Sci1-`2}q`Xz{U!`9Y~N!-sv4ld1mmlw6-hqMK+ z;i*5Ff8T$YsQh%+>vYANxjZ_>DN7dLzIjwUR%iX*PeyCbi7#Q>eA?18_rn9lPha!j zD5}pb+O%tpXPQoW@OJxF-Q#PDO0-(EMD?|tc(bo(EjODh!Nz!UN1pCE$GdMVuK)VA z)ylAsGj7X+>x&l0=q7zRqnweKb@;u`&laQ4FPDEhqTJtbFFo_JTARX;Iet<14lrNK zFkUG7x$BF~_2zfKzpcG`>$hpg^4C|)Qx@~Puvtu1NL#7zdcLB{%4BB0>;sz^M~kc- z++24bsditOJ@0X}xk7z{f>)6KrE~p{kM)P8KAXg?Kk@m5vvuF+mV58N_xFQN#Xqix zb40VAFX;4_I;(PT!5+Orm*1|Pm+jUZ%Hh!JZZVzuXR7w}$7_C_zP|5Y=#}~MioyF$ ze8cpkS8^7l&#m8f=3vL2tSKC;Cbe%BX1{iM_F+ehj47M9CGvh_Pdxw3Rc7Dj!nt#- zKD!G%yS&yo=IE_W4#rhmOOKoRR?OUTx^0<}*zG3nLtKjM#M2|E%#-FX+&Q_2MT+I% z;VJQw9Zh=1{b!HGHC(QkbI^F=;`{HH2V{!uW;i$dk!}PaXRkm--^}t7qQN#hX$M5j=lAgL%BOR({=W~1Dozg-!{~b=;S#h zJ3q8pq3+-1`KKD$g>EoveokWvYIQJ86t4DuWF2tlnrw&ED+i5sF7oN`q={N(KX{k-On zFK%MFd`d%O>s&nvo8+z6>aML&y`c8OB=c>9uQf~Rg!R*6mQ=C(D@R zXP$BK-liUNrH3=$yw=+C$Aso5-Yc}zcb_|N|1)OY&NopdZ>-|k7iH*3{eBcMrR+*q zaN$ye>jC{;>C#(op6lW`%IX+a=6|Kucp~@SGl_e@Ha*%Ys24tALew1R_Wmi6=CS&Z zkLUIs)O23Tyi;jGLdEX~PbP_6xug7ldGL_{ z!%tTZ_n*9-(Por>&iK*>wo?xKqux$EXL_+~o%18Dxf$AqzBwlzIKB|w=yd-+Ytt&O zIL5S_{BFgw_wM^1yH={=;nAH^+4-@%{SHg-66YxSs&hd#H)Yk@IPnGI|8}*hWybXW zEs54opIh1HEpKK_)_a*_sSM3os?sq+go(V(7t8krny(XG&2e8 zxwX?pt2b=lgzq62@3-t&S96dx;#SvZrc~8P1~s`i?=S7=mRvaJaOM1yvvV@rH>^&{ zZY_NEK1gv^MbL%iwE)Lwq~Ll)8YF! zx_(IfU$JT{r?z{EG1&2*(Ssn{}6PP|kmX<4-?VP<}+Lx6DxuRh^mAB8` z{@2_~!g!$w*F@#EdETBGUJgs6PhXoUrL{xAcwR`v9mQQWyjo56YC(`(UB4}Z76up?h|&7@aZyA&Ihcck+^TF;-Pz%kQM_@Tue=eq}T(ofg! zOz`Pit-o!H-;LKcoVD^5ivlMx>6Jb{K}zk|#aSs{%)-{Ylh20f9lNg>vv;?|%dPC+oFXFsGac!& zT)|=(#1(KOYgT97Q{L+*#U5{OI9F`w`9-2~bZ@um{B8V@ z_vL65JHMQcvU`8qaYipLsrNk&91nj!kDm~3FzxGK{(G*<5*puoQ-8~Dzg)cg&!p3aOkX2+zWrvsWLNgqUH88B zOi`ITsrl!wt&&;mww?bvKjlfw)>ll1HVa}W#vIoxh`o`+F4y?=L3ZhfD4+XfyZ*d+ zZr}X6zRN`E&GF({|Bq>lDINMXOW}ll#e3#T9@W;nFa9R5dmY#+TitGQJ=@~kPV1JR z8{PjoJf9ytWB09>Oqs!tN;m~R9oRlm=uFM~RO@76X~p$T*CwX~?wn*J+Nmy|7K2$tbg1w?109 z>GV&g>&p+#iNBS5a9eDs$7$~l!GE*5tadbgJjUd7bwjH}IhXITGwTkeKCEYFNM^su zwdHzxTZ~-D8;dVzxdhk0-*|ksLWlL_3!I7T{{PZ6y2pC@&#l$*Q+B_rc8~jA(HfQc z_QEgo4bh?{;k)#1$}F>v*);oL>j}MRS&xc^-*V^fowKH*LP||(OYS5A{z?Y7$$Tx# z>?WGax6nmrR)spgm%jAoMnGDV zfL1~{=V^~UT#E81l7G#9>sar7D{V)e)<)m+Ueg~j-JI#`l}|Uh%`~?4ZbIk=7cb$%FTC0& zEH^#+L+5r?*mu|GhG~_?`i-&|4_vTF?Up=sdir{&wr`oAPOV;l%I%22%Y`rb7ABp{ zn<6ja|NG_hm3Fh7mRiq9V;5SqsIc$##*?26W=NlZwqI6i`nJ;Iwpx`x5=X`MZrd3i zaZ>8=cd2K;j)fLNa}3+x67X^79(wkN}Gd}sE9HEK#g7-?yX>-e-S^CsApw1<_->K(p+`4(Cytjn%8K+yfR0i*k zDU@unJoaVZpGV$CS$8D9B*iaT8&ck6^n3dLIqU8|lc-<*;BkV&rE^tPG6j0w7rN)Z zSK-k-qx{F|;Kh#33tI2D@sv(md-dv-mA~g6>iqlk_n}kEuIBRAn4P$skzf7y>h%Ss zInp4O z@ShUP_#uht0D%^#ye`-8+~7USA2-GNeRb@-dhw5LDa$9HUfIfY%vJ4j{s#tG<)8My-!}{P zSvPmizHMT|z4BtuyNjY~$G2=v*zh-T>UBl2^F8s|)6VcHuW59W;c>9`X;j>>EcAWZ zvw2s<+P&XQEAUv%?%n&*Ua@FShUSA1g;$I}e%{I#J@O>}_Qa_-WWV2f`}0VQLTX@6 zm-{lGYQHtktkWL5Dro)NTDa0tqfdXKfYrrSvoClb;F-HQO;-QH^&Lr0-IK4W=%!qY z-aI!|!}s-VN%wxeq-DM36;2YBVw3OeQvR5J_0-lE5!*uQ`U~f*S3KBrGTiwWzpG8H z?!WZ2K^D8K7>st@d_Bu&R$i1Ar_3|QY&DVS#kWgN_(>lrzhNG;dMXpyR zqqT)L&X71(ICskq=?g+L-aWn>kX3T$7VX|hR3gzvuJx1va<1z+j&M?W|3!S4s*nvUUH;WBI?qO z2Av;QeIv3wWTjae5jm;)8n+t9_nf#im zwtQY)Tg_YP_^Z#?98lTEE?*PD_v5WR&-9xjY!(;973YRkINh4EZh^`LBl}0~D?%C! z}|?4D!{Lk<*f2hMe&|aYJW@{M~&bA9R|# z<&CB%Rc?#0pRNpxIx$@{iG7m5ozBBkdM%D$ zNQo7G_H~`kG%**BKOwmfjtl(e`*?P5w6wo_=>7u}EDMf^Y-TB(e5>wIU+_M~Xrq{& zbFQ!DeDtSD><-%&k=l5>-*1d%*G9JcrM(ewJLr-<{d>kwu^D$ZiAu0E-FqmlcqQ}h z{i4ffvo>C0O4%vAR@j&4^H!seT_5ihBwk*%qI#H2vw&C4Im9=bB;zCdNS-;geE>mqXK@0c-gtDq54Hmqa*Wg4{MS8VGnXerLM(P zoIGlj^~GbYd4BZuw7hTT@$Iu~=k-V!J55Wp3YWdMM|;z9|JKxV7u?vlh^zfIMmK_f@8iRRQjkY*uCjDsn`Z!m>&&O=3(1Ggo z^ZVl8?Rj0M!hI-|Kis1I*nW4##bCz>w$4g{zMkjCDURiPxr&{paZV4oq;vwX7jJfK{rPYIoIU}i!tN4j z8^sLcVx`ADQ{x;D=WJi{_xp^;0)Nh(ySt9(=hCjclaEjQ&td(RdBVN;_O9MQ4(aC_ zp8rH%`xTZwU3|=aQ@WAv;V08JA6GeZr=gc`)*qWgds8!aytU%HUODIUTZbJXjV`Bc z%;vxQ_*RX3r4x4nTQGz99VyQjS|O(%8$6gbr*H1m{ku{Zw#zh}$>X{%zvFHV!>gok zy}uYkv(~Ot{Q3LK#$PPz?AE(=3hsuk{l%Ak^m^H3ZM|B*ce}ppR=(XVs%O3U&p$qi~|lP*f0-?4A`?v%(p zXYGyVk`g;snEq|>HjbRlx0}JEX|p0X;~b$?LK4~rCpVrFyk}^iJ>%UeP6gFT{30c5 zN|QJ{+-Ame_%9Y^+EE}WdOk!q%3nDmSaZskfJv+GSXixWO*# z>Fc9b7P^WSc?it@|EcEetEcm>Z8qV&{y}HUNB-A+g3jqPg&&{YGf(pEttj(bdwxv} zDbp^Icw}A0DwL?*VRNmoG+V;VP^3isa--s$#QepMD{}&7-pHIj_sNWz#;K>SMQi`D zZ+-p$+UtDBM^__fF()nU#!nH?0jv?B2Sc3(;&--jZ_m)xMuKT&LnZ zR!LiC8Sgng>)3@|skPr&B^FwyeM!p-+-|z<#M6S!`#H^j+i-opsQlniETevC{Y}Ze z2mCFchO}O+I%jb}?&Z5<-KG7q9~kb`oId;M<8gWC0`pV#_3!sT-T&|P{wu|zsc|AU zPnb(~ug`Tbvz}Uzwq1M9?hM->pU>N`p8W8h%bmI#7arcKojC2=H|soo=GSbCYPc-< z1DrH2{N`N|+}fn~&urQ>$ttaw8AraKnX~-qUGw|X{Ox{4=muTV7d87N9kuGqlfcLe zKP)FdwAtpLT`nm6AVBcq4z`EW^5$;(>}UO`_V1Ei>!QLIGC%p`dU^?GvU{Z0jeB<% zo(g%k$}>xHb9mj0L$dX5kMDBTNr_C4T=OVoecp#94uzM}jeVATF&~zhR^fG?Mfzus zY2_vvlg9!##ShJS8!xUOr&Ip-wcpRrhVCaFc&;eM1}s#XTIQ-LYnqx8p^(Ox*f+yc z_j6sd!jn)%(?y|v3%c6%SN+f_WdE+y7GfO3e@i3t-pxKkg=8&9@n4;WwZfd|nkPwH z$L5thd%qzxv}kol`SO+r0Zb*{i4HfUCY7tCOg}xBD{0%~;ya&;OCN5_Tv;HKn6`Y` zuNU{ljLlUHc@<)(xx_1Y>nIo|?my2Ua-jRFl)_{6$mYTd)*2r^%Ys;qn@Mlfh1MUc z+U{Q~%Gk<~9JOz+!uqQR=LpKrkMVUD>ICD zMdh}Ld1t5pIpX;uyr%2Tj>CNcZoLnW?+84+yk|{KsYzDi8dJ8SFO0$oPCU0~Z}N-m zpX$W2e{zEt0s2wtKXkQ`2w}{n=>YBlx`_DIeMx=+RNzS38R&p z(r$cSF(>wifcSld9Xwqn(2qP z-sLR~H=DvfRVqX3(!n>CZ`Drx%3XK!SancmZgc3eLowB}oM#+fwK;5sZRw%N`&lh* z3tF}FxMuq==ZZz(n>^WI&m3d3kq%P+FsxdeFC!UvW*tX=3 zuqc1j$!>AoBN{iBKh-*u^IT!Z+2g)PY`$*X#60EW`WxBUEFBXQ+u`=39AGg|}Xdj1NEg&c@pa7My+HlxFj3r6W-cCWu@ z&eT5?C3St9l0Ey~cM}}#1mha+tuTMzSHQpdOQ)2q#1|LsorR+Rj`j1^6nRD@E^l)v zRD9Yxr}O{RAl*vOsc$^YBh+7iyV~n-*ZhjNBI8821mB|Ni{vif+csyS^glmgCci;q z9yfQ|oBgkkKP%;!ImP(C_xZJfUeDgOD)4-KTyyA2AM<6RA-!&d_G?}I@i{dRX?_1;oPIQw%+tO;CuaT`$N6LX}dliH)?vg zs?~a$q07DF%<1kccbxrTG%xY_)XYOVpIx}wlIkNFL)-iB=bo4(_j112txbXz3niAi zOEn%nU;j#1uEFeKo=0@yK2HYGBa*K#mr9x_FTUx2o;6yn#(DMzAEQewy3&r;jGBx> z-z9>#iOoE#F*7M_UQ+wke*#(}8}9h?r~KJ;kV98;mznUNIgYAt_ifnbbCi4g zg2>0yekZ!V4dh%T`9h}A%Z;l>HP6)X=bE-hKU00QtUs+dtaxU7V?*X-)*0D#=X1ZG zh)n+*YJ6?x77^K3Gaei_U~H92e!fj#`iA4`xjRf zRcwe5|5skRx!;ZL2Sa9S!=68zyq~VUe&2=ZPK;y+Pr2HxIW<*T0L5>hMWh zQl2O}YeG$r(XPoC0y;OJ{eJJayTG5_Ct5m%O_=Ate_$7BmD5sBBuW%M?-P`~ePk+Q^RLXF zdCU`|9)wnl*;I63*XK-*&c!J!x9mu@`+Q!*w|VwnKF)%ZZW=84 znVQp0W{Zf6FH?-uzI*xL^O$WSHvW#2Q@ZZXoi|Zp>1oC3;wKMFf6~0+dGPz3xf(se z-7hBC{%>@@E!eupTS$pd<+SEgbJm2Kp9fbL&$zVr3akG0%4eN(TcW4%f9QS5Bvc}7 zUiRb0{YHhfuOE#Mi-yPa@UAQ{Ffn;1Tz|VXvgUTLrr?QKooy_wL2M0&j*Bu+f3WOi z%Z6`TU!*Q%d>Sf|5&Pr!uHH)Jm8^$sbUvFuNPF)ouCh_gS?D9 z-jGu3qm{oFEsW@3?BD2E_u4h(1e!dD_eR0j-ckaA-bJQ>KUi}S)9kXT&taoFQNqTntoK2e}@6pmUnG4k)F1E{` z+%3OPJ$-)RwwP|0&7J~}4i}pFXe~Z;h3UJsXeM9$Lx;&<1^jySi_hLFi#*JGVvGB+ zKcds)S8*1cIbi=)f4Rmxjr|AbSyj$|W^iD$lWX@`#RVrenC1%Wytg`XCVt-kO?#TH zKFz*h{7;!DL8>dK_FPo@;kj%(j$Kvlzd!qcvX1h-Ut5nW%t(m;@{_ zL~~uwdHE|;%Yi$$t-m}*YukLjrB1)t&RI5S&$@DC<|+e)Iddf0H}hp1{+PDkBxTQ` zH9wS(nsIb6HE@=T=tSB`Yi7|i66Urz~m-ROVfP7CwzNbHO>8?(86Qq z(p_@bN4Xc;y}QI|W2R!N6fogIW!S9L6FFjA=jSSP$Dgk*oo1GBqGAi5?ZMp=^Ot*H z{VE_D*JB?gpS4bKdqy6E+>*Vvy64W@UQpUvHeGGU>AWIGW6wseT>)w#8Yy~fjQ;Ip zSXw=+Fyk6S_2X#)QcfQ)7irl{_pQ{pP<7CBl|s6wzDys{>UHIUy?GlH-fr(R4b;rNc%z2*(ee*Y5Avg)l}N^yy-hVrdlMnqHmmsBr})Z? zPiHZhzi<6%RPiJsqL#OyeX+QOTdrK?6G4sF$ukqwt)A;njt<Bm8pT z$F=#ZSWotpJaaO*;`FpTRQt&OyuCNNu0Fcw^C|i2q09budhZvUJkuTEvLfg5uVqZv z&sI+4Gf-OJc)a!f(&)JzPD?$sjXva@JsYteWCPdMW7k)3wd{|nTya=&s@QAeJ7@Dg=|$+qXM{^j-l!Ml;nTdV^=5TS z&+k;O{Q@WUxZE|@vxs$QuQw}I>UJ(jST1~_x!|BkgM!2xRlcnF_I=mH6V(n=AQDkL0vDimSEQPS}>0U_aA9(y&;; z_&96OYF@_0xvsL0j&+<3jl7t7Vtc|S)x%bo6*#xaOcILTRC|*zIk_zE*`@1;eVA^l zRAsE&rX{^R!$U-Jdy2rdn>;7$`dY4BlXOlAnqI{j(adc==bSgYa0=&KwIatGE58c% zajrX~sVSei z=fS-y2KF_beMC3vZ^_!=`Uf2WS}Hl0Pu_U-?D4VeIh9{$UERcWk1Z{af6d_=!5WTdbI&$) zX_YkW<|@oI3751AiryMm`0(kcU#C49oU1Q1&gPwJ+LOC@?#p+(->Vt(&241alBHW- z{d}!?s+!QZ84r#H1Sh*s{`1nmev<9C8_wID9<5BfX`CEm{5?{SD}UNI-}LB9asdos ztBMxNKKyX=_lJEKnB5`*I9ED;p1yU4<+(IX(+#gU4RfD7eyCTrIe7I{F8zXsl_mu{ z-|zeVWbgO;m)W$wm~EKJ<;>Od^7_L{p7~ppW1OGH@4g|Zyftx(<~g2+Ytxt6uZ!fb z3+fj*%%!2d^@09hfvDs)Gb`5lrp?Jq)(CpNi!bG_`N`$;Yv=u#udswat`CeMGr*6pm& z7LI*yx9xs%LOIPNcYfU}fl`IT_oMz^(sG~C{^Qc7AU}&=>=HXR+df;;{`|tyiAD?0 z)Svd7ckV%q9_!l~&rLq>Z;Ia$vqIpGS6|&;qeX|hr(0|}-6Q`cBGZ;ig9|+j=e+;0 zuJUXNouJe7AitIS$dtZAO&6rOPv4c?dN+$>`VGIO%Bp-fMHnAXNHje5_Sa0K{~KC1 zcLb{{b542GBJxATqmGNswYo3aQ&{MM-p}90Mdxc@Fnm9mbT%d}KjUhRqRp%eDU0|% z&rtW9r=dQ-iYqInoVjpT>N@A}EtTD}6M9vbicXtZUbeL*;M?n1E|#Pf7aspTD);z1 zSA|7RQdEe5)1^!yzEq~?re|c*IC*Don>xur&+GN%!pLvS+&=m7mwkOCmauWdUNw%e zxeGo7Ovo^Ax**BBFL?mboMDLFTb?VN5YG>{?Y?}JKpD8*sh)DQt>nNi)ua@vE|5$n2C{VW4HO)Ip5@; zyhyJ852x&lg{22Qq8@+Ijyh{*B<7jIv({qWvbjI)CW$LfF#eXZV*Uo}+3bCLt==3F zVeaPr6qLN9b3g0m3zaYGI*vFg8zqN``W)Z2Es#OFYPW&A+3)ESb!*RTbU$gfLVVd& z-^9AhrsfMxc=O86`k6<3E-&32JR^9+?n%erXKoapzuRfz;?x~arwK3Bw^CRav(+hV zT?A*gM6>6twT1km&HI>tD|LP`lWf)bE>#llT;io?^WCZPbMN*iYp>s%G;wzRGBLT> ztGf@Mt&_^S_cC?8`@lv&|y1+;>X0O0@E>4Z8NZ zT-nD&oYiwphjqB)3OCaeTx%w#d%3QavOTg@llR&Ut~m)#uNXLjr%ecST*`Xp-{Wg{ zmdEb<@kUsMYhL%JqyDDJvwv7{=~*!)r8-tiRcFue^SeN%ru^A0qPTd%%H=o+0VKV0z1;np4|upXgCmI8*;ExmJJk z&HVrBEk7r=uQo{Eyu?f`PRQRdtW^2K3UMdT*yvYJcO)yE`F=C(65 zn)UZy(tf#P9aqC;j+e*FrOxcm=}7)EWkJGoK{uKIkBSdH@@31BSoLr2=}w(?o@IQI z;)hsRhxB{@xn8E{!9@1Fn8x?+h3tl-w&#l8? zl)3jp*3$>=QYDU$Gu&q7-udtLgej%HJ-JgTM(kae`46w%^DPb4+PidB9_s90KJ{p= zDf6>$+kJmLN;mvv)Ux{$=l!%F{X#3sQ{;^L{B7Tcn5ai)-94@F=ElbSjI#l)kKBIn z+{{TiabaOcX|x=(@SPV(@fW?^1Qtd|!z6Pz)+@88$1HZs&ok*X6cnAP#=$X5A}3@cyJlxcP!DUT21i-K zi&PC}XX&&VRcYsD{;Eq|yZ5{Klf4_~6z_W<|1GZiYZqUEy2A{4mStz2Z_vKG^!_d; z*#~yf-fy0i3Nl}xA=GJ6&O8wKh;N zB|h)LMgP1Xg0qgjS=MHB#{0*m=lfRVeA}J3d-I!(@4HVOYUS5l-cb5%{$HM~dxHJ- ze9gA&{v8Z`%02(T(j@kDjh>H3jJp$8&X0+!J97H;y_}k6-OF3o{jd=8JRcDCJj7|I z+vAzbSM8KKSbDDIikHgnK*oegkE%-QljqF&q3dzzweeKu!V5)TIj=m9ufBWrsrvuY z+LYhUo{smJTlGG+aAxh9etyz)h7Ge%=rx8EGH>+E51F-eOQ7GW%__|1=Q!z5J^zYdB{?ok})G1)}* z%xBkst_&ycJ-t=ywbdml#(jF^;guJpq+gjO9o-uy@yKTNBq0uufQYNYGC!TCZLbRZ zy;*R}!6&z3m$|gI=(!o?PfzVtcy_Wv=l?~~(`QocI=9}~(&x7E{N_D!iW`_N?7UmG zWskcY`}$l5=I7DUrmw7bU4MCQ`)NU@ZE0M_2Tx9GQ48K!tM*Usn4Q|A_rD)T#TMLd z`gF7Yugsk$|BT$liW_d+%)U}(?Ef!$Pc`2ZLhaAf&!<(t+p}6{ z$KSq9$~xcDFPOC56^Q@(>iV=`e`{aKe>w71Z@;hCjJNxK+C##{M(ls(tDWf!Eb3Ru zRK4(?sIzVPwUfrn%RQNT*T(NGYvXV*KBM5j-K_r7r_?<5#N%7nK24BK+rN2^$b)4+ zq!N?GYtFam?V5eF_<`b%tM#8Q&tE0d&BZiT_L)O~;h8n{T*2$we+t%oOVJQJ%LAs9nPXl4j0U)zCJO3!J~zrY#Q&x@~({NPdIcdO6AeUm4Q{$f0R_c3t^Lt zQ`a(;miR6oAk)08$!zr$5xI+>wm&-j+;EB0)3bSH7v|3T)RM|){(Jsmqx1*=HA~*@ z<|=(wv^iOTC(-knUC*%6yDJM@cHS?`4!cb&#U=d&)nhi)law_ERc1aVZHFq zki(ZgyjXiDjYZ`!N8%iwVCzjh7ygH)Dr)TCtQ4g1`_zN;f0~6hX>s(fk5u$$Hk}cs z@jkP{EN(`T!ISAHb_-w0EXeA7Y5QT9_R8{k`zvP6Tllr8HaZ}E9+R4D=G$vmmn@qZ zs6c;E3tU}IrlxSKZ7gb*omEPMte#V{`B16x{vWxVR4%NwXIyH8!s=G;ve2v?$}Q$oaL8BDu58${CB7URV%y zsD9n!XVp7(b}7b3e7bIu#{JoGVcwioA;M=4ESYF!``**_n8w741&{s8d(Ux8d+)iJ zD!ZH0adyeU7EM)7u8ujDd$;*CcK=T8m^r`T66ezc&HPhl|NZDLX#D@#(|{5Q8B5}?_Khy>D%fObz${24S^F=F3s01ytMGuIny)8Y9GBU z3SZGsakzTHiA}n?t^Zig`5!m!sSHk>!*c#C*P4f`-p5A1i`cN>PEUp9^2LScXX&(m z-zaZAmHm;h`ooVqa~2$a?$_KsPyIlnVV3ck&&xL~(^0?c?se9!rR17n35(2^A90T- z9lPSS!+PaZxpv;{YusTX&rYT<@n{ckQdD_2H9O??ON;*|Vv|m}WH#E1Y5bADd;i(7 zkR+S$cjKhqwI8anyZc7u+5g|?J%v_Gt`|D=hyCe}$GJ26+h@;xI(^fb?GGv|j#WfF zi@v7oeCE&Fr?Kx7FVEO;rg!eGcrG1%^AEc|=^S>x&gvVYT@mo2rD)Fe_9`WzRCMXOludY```XGuO|N!!+ej=$`y={Ud_E2 zbu{eM!H8t3+@CCJ zyZ^2G)ZVUeCeZq%qPCBL;>5MCfBX!KIX+)jJTsNyxL=6KGr{j%_xG=1iEI&imbQsk zmdSK=0bj}szAMd&NjJZ8zUBF)yV9&S;W_U$D}Eu3brXK~O|!W6#wS9pdZJ{`MV8g6 zGrk4NuXuQnyNWIUE;yr@b!c*=AAAFQP{on7WPy6fl$VMLDf59%J zG%zu;^~O)G5|-IqYQD?P^CcOlpJ7w}5)nL4Q#a!5`?NBn*ex5{%#AM3=PW3gST@Ph zK{Bl3QKUfS>sulgnHemxPuVyp9$+%uaOGH~OQ*8p7tIAL3_kJ+2emGp**$-zLE8Ru z)!oPK&GKiq?J#@JKBwT*M}cP>&MaJFvyUV1TYlWaWrjA|;lVQ+H}7iliA>EDny~I< zf=|_V+ix65FCZw`Ofo{CD~^zqM23EuVSOzKNcZZc7>W zU&uYPsxR}!%?-cb?VkSk+1bmI2KJ98y30?rzQ-kwf6l^B>Mx4kUOTnu5X-f-Ec1#3miax^`KtKW_sVS!$1_VTLW><1%>BKz_;j!N zAM;-a7jI%*+P+w@uPCGa@7MO0@DPD3S2*8a=t#L}x7zl_QSa?5jvt)$t?Ad*8+=|W z4BI%5IX~0+P$4RoaBcUsmxooe5;sVCJyAGQm={yL>p|wpV%`?v*v}z;Zz5m5J^gIG zxAUSxcWH&0IY;~I%O2jI?cjghZO;3e2WQ>;tiz^R7XCT8e4gI@WOj>)XO}h3%-nxq zq4gQD8)sw~qn=fq{_v^j)yIyR#yFB3$-|P;vl{46!cC|EcTX`MHn{<7H z-(xk_wv5G*pB9?WU{-(G`JH_}mty*kiT$mN64{3QX1>q8tmK{VhD*)crLpE^nDx1{ zSCiN7H@7>vcl+eaR;v^*Xv$WV)u>mvVpVlMR_^Xp1gVQGnvdJecxT< z(Tb>idii7byoI4ZPOvOkyY`8|@wnpM`=WDh*?s-pGFe`>J#EQ_*`I4=C%)Ky&Pz>s zN^0FZ{nMrP`kyH2r@fnbN> z!5<&(7dT!0m$Y_AOs=VLqqfrVv`6pvIJrcyrpzm!kgFhAzeL*h^s+6JF0@q|@!R|m zU~9h9I(2^VP<=q<(Y>`KE2XX{WGj)X3g7w-ZUWk z0Kc}0Nz(PF(I>7N9XiF}X&GlP*;N&7%-AOuA)|74&zg(=Qya}=K0NI{onQC&cF|qa z>k54w#~QOU51ws!v{5K_&5V;i$F?R}?*66t*g}LOYWABCQ}ui^OKQq@-JIEQjMdZn zT7O%7V@7AZRrp6Hqe)$RWH%cg+I-R{^pkblLUndwk2JUI%U1+!;QGV)$M4xhIa4jO zY0P!!INTQaIWpZj{U9y;j0`AI6siPWG)lJ)=M3j8KJNLFZ~E-HyfFp3$;(6(bT(Qs z>=n)UdvR7QzpGbw$a?$l7-4LM{xry=Y=eX=&Y;ZmmnLdAMPQKOxsd#CxwkZ<@ zmb3^LcITz1wVpn@c8Nntu=9+DEhlX^t?6BmrX>5k>%1Ggy;l8s1+kjP{{MH!G+kVK zc*DM*`Ny_IuDBk*uEpb-po-9nRm=r($2luX)*s&OyeEb~RX%HBr^Nq`bRQkx?(TWI zYc(qxcU{@|$1sy|`$b=Uz7^Gq3W{e|{yAZEJUwJhM>3Cb;rtM_7lpxcjum@zGJdKa z+bR;XQRL%cfoF~WG0Uq&7$m->7|gC^F)ZdTPTPFj$el@M)6M>LraLM-Zq7V=uBU31 zp1`v^``bj<)~}mWCF6DZAHVnIHydBHM*mu=<87_Hw8-}IgnijQwk+ARat?Z1Gv=T8 zZgiw(-}B5WAEwA#6LJFL8bLB)ip@1m#uZIiA_C5P5O#lrxj*mSZ-Hclpn) zo+|csYUoG)dwM*^@x4}`mx-!6SaV8iztFiK6Trb9&EhLBc!|Zn>uUSeRMmq!QjcXE zyAz|m@4U~2_|V@=l^peN1tq+=pvC{iP;E}Iv)_W;wd>5in(v#jeLZPN`uM@(*=X1sQ?uyl#y4PmB5(e-I< zxhiGRXHyMH# zKM(x=&*#(6>AQpdzVB?qP*2a#{Bzp*VyahWa_pWf_(M2CXz|=O2IW~tf2#d6cWnJU zReQ&x@Hyp2+YW?jyQReB@LbaF%D(Y|b>`766GE(cu0PwpuSzoM$@YcEf9YT4pIf@Q zq}k6=?RS>SPT$6ahaWl=`5r#FQ)J4Z^}#4d+5gB6fixjKpFc_K7}f>*zg4(m&_CHf z{GrsIP3x?GI81T~eK2eG(RF9ISSPkbMla?P*51qPIeG7X<@MY_S2jlo>nE<8EWz4; zI7;P!;|$~3e?_J(J9xH_TlLKTMiz@5>!x-y9CSGyGx_3$b5n!n-MNC zz3cm*G4l1@(44}Ucb6ldIC@rCirQ(OVbUmO zji`QieoFDdM9Txh7nPDP?3us!isSZ@nVY@kSIbNE{XEHEACkA@A=|;A0>^FNqf*a1 zH>P+fZQ8rCBSoKa-_(1`m(GhtzI@nu_}+}8_q+@F*&|_hr{A|U60@udkaEYc#2H~c>F9a5@=>25IbL*L+yw<^`iyjEMXdG?a5aM;^ zNmnh`leF}$_M1Na@NikPTgJaNcH6ah9an`Gu&ns? zoIO-EH*)3sl=*S_zrLC}-pyRduj3@%!ff7>_TgP)K#9Qi^T)4yHe9b>dt!k}Z}8Tq?m0!5fjt0BUXImy1r~pe*Ls}@9G4Y?6-e-e6*17$HTa*l^+tn zW-jlX|Iw#r(UGYav@SP&{XFUTOobJ-#>q1`y6swgGGj$afz5Ljlg^5Yhlh&J@BO|& z5SK#q54;ST^r$ zOY}73RWH9Sp71cB`(&`%Pst{22|H22n*FxRQgt28%+&1-nWOc*Reg6pUG2S9%6PKtD(CDz_#j(Y?xdQ;JwYxOyWcl^!zR0b5KY!p`C$;t zotj;{Maiq6cLwsZDBgN+kxZ%GQL-4V{`Pt3c%GWKE)`)RpH zlNB6RhzQP`J<;2VZT$~D7E|k~hFdoNIH-O~VAk;#-mcUj(>h0eXmZ0ZDWmBQ&0NxA3EDIR^Pw2?UxSAzJQyv zThe!Gc1?9`ORW%oUoY0xEaJE=ply+zv}eVUM*OM zv-)wKPjUPCzRWCr7CGzK?<;!O^2$_yG4|zrO0F@?m0Z7Pf&+K*a)HiimaRKCb}7oL zU#hb2nz`A8*K0w`&v*;Qcb+N-YTxe;KWNl$Fuz5w;!Ik)u-vLIvm@XWtCT=id3|ZM zsew_>T*cb*`y4Z5Jti2TJSio;3DhOrq6l~o30dlNz7`#dHV7( zWf`W_p0E2iE1WU4^vO#q+uF3$PrJFWAjV$$t!uavceSjJg<67cWm#v|#hV|y)?F7o z))3jOuO_=C(0uxdSv-eN`|Y~0QbjNP%U8L-vMbfHDm@*A{yCm0{CBeCho)qXo%O;Q z&!cC~;*%BADmc$s@MkweT%J_1Maxf4i7kix;zaiJJI~<1GSgWj%~_%J>*CpS4UVnEj}$1 zZWW%FRXwBb+bp_!B4C^OS=jRvqNv-=} ze90vC=_v#DKTr75dd>f(h5gf7Gqr1Fx{Sk0#&bUIGfs3)R(?8dcE0BP|9`{B;rsJUoCOL)}A)IM28SyiSd}-n4OQrkuq3V)K1Z>cyB|w|9JheZl0|w4JxVUOIf#s@S~u z;odKDE5chW=S*}casBdQhrPY%L|6U#B!!>y$i@}@Iy)7F=|U1%$_T;R?S)YTv|HQ9i3^*IxSg>xV~$pzx1vGSMfP{TQe7Y^>g{|Lr&P&!{{5n)Wifc1(KZ=A0|<5;LDkEb(M-&;7=I zX8irS(`&LFf8M*weQN#tN{Q0N9bYdT?fcf3qqHgM>?fo2**8<;Ro={LWmz;`ws6O! zlQ;CHQ&N?vHO*s z8+V4;re03xT}v#TE-!dDL-O3Y#m>FWSsjZia(CF=wC(W@Q4%#?kf~XCa&FPAu8^fF z%7F>W>&{xNw0}S6h5iN4(yXZmzww;e@M`0%m`lkjQQA=@)s*!b2& zZ4OGdjsH6nk^7uHx6o^xt1N&k`-!Bo@KH6iHQ9Twwemtk3asC zKJDw%CH?ZD|3204XE`*dlI!EUEgr>l532v#r*Q0p8atB_qn)&cXEN`lg$dkU)3g^o z5b>Mqh{Q`c=w~ugKMh~tL}79ow)PgITl{k zGb;jj`W7s1VBUOlD^qf&^NNb>58Z4X0y1@TI4vZ*W=>uk-MI1JI{V4RtR2EL|M2Wz zu4{DGI{GZ{$4jaUA9MDuy6*70vXtjq_80b@H)E=EMZ2{Rv>#zH??3q8?buXpz36~{ zk5{oioyOX~B2Ds=?<}*)Eh=Zy&mY{fwDxqQL`dO})BNjYA6$9jQs}J~D0pGr^{4i` zSYnU4CLX+TiEXOqTE@fCJ$@K)@eOGj$MTUMVVV!4_L1#f5Q|VlBO>q zb$6Q23Ps_?ODDWDi!_XB51w*Wp{?0|#+z*qwppK2w<~0dc{(SZcahu8Gd(j;{E%}E zSCMvaI5Ba{5l6}2=Wok*`dBZn788;1woyI2lDlmWN8z$Yc00!1doJxzOlmL zi*(g{*S zoP3RKjlUTM%y9lBbzSj+(aWALz2Ci`d1fqjOtj*Zd{eU2*wN6xO;LDP7iW0X)p=I! zRRtP*)>rAaSe|;(A-=8Suiw>T=5&kGb8_RSURm*R&4ItA*&>JK_`h52SMJghVMzVC zf8D-iHBT3H8|v4rY}xp7+JxLZ|9LZ7%xvX0TzP!p%e}7Sc1N@#D$ZwItNeW8@}Vyu z&EI9F1WV34r~6-Qc2?ZES8ES0e=TSn-yR^Ce0BB24adtiziB#gc2i+*m-^9ojk$>q zGhTf8!#L5shVSUD>pM!$%?r_X`u5=_L!m?>%T6)&sgM1BMOglNvE6fqeqB=GPMNEE z^KIS+uUPH=qib>U!i&X|?uf0)6;_ryu=wVTt96Im`wq!`X});Q^qH#4JLv_XiFsW0 zTAO?OLjo0c8fnbwb(l6q(T(TQgykzGLU&%R4b=B+Q1xv)v#M=z|ISOfUXu^XsVPP_ zT@Pu@I>Tu=djsEB<-+B^XWnaiBH?DJ&8&I4DkkJa!{;-z4+$|@u*54xtp9C3=k9FS-o|sMtm&-k`o%qKk0ox&&Hlahh%!q_U2I}}Yss!mW=Ez@ZHeE(s~bLd z2H(hSd$^&Hr$xu-ny#|&sqg#B!*@Q~T|Q;@`-W7$He;?sy+_VP-I?mFJ=MTC-%h94 zV8&sEGgm(uZz(-yVSKV*eSylH8|s~{Qf7~nQYtPlKdZrir+$B$a(w^AuJzS-U!RWO z`+06sm5sD&rs|?!8m!{#rzOk&^h&OK9nfyY{Cd@i?(DF{PZQf#3CKmTAD3>Loh@;) zh~tpu=4T0AqPMb@&egCaw_BEXh{{4QxeO9gFnTLH> z3dC1_|F*y*Q>iHPxTD=K!5q~o#(MMfe2mf$wMZTeHoR>s$u(1d?dOe)1%j1kUD*y> z3ve`IWq#e~?4*!n1&#>kKa=PGk+^&J9|PmQs4$h}|6S5#|e_TR|N=f;OKGe!N6PC7K_hjZ%mo3Hn@om%c>khSHI*}lV@HuYD$U482Lg+J|z z0$dVRxj{D!I(;`YE^^7;!ZtfXFrZlS?DKP<+^$vUYwq9k@cC2k_#a7?e0N`Sq@T^{ z*ULHC5<2PR63d(kH*Y->bu46lbZm|GNkNMzGqx70pTDRc(yIM_p?H9Yqsb-}ueRKS z7dIAbY<(i#@7$s1F3(!E$!%fz9u}*~Pn0r!jqkcQmpM(`AS5_%zR3)!*B6AQF4Ujb z^uK?Pyryc&X5$*BrGFPV^J~f5KTO_m=DwQUiG?oH>z@~Ke=afVFka8*QigG?<$xbr1rz?*Y~$iSpNw69C@^1ZuarbYioYInO!(@`?3J< zRQ=S|q9TWvta^XX+s}9Pk0Y$nbIA6ezv==9CKVPJC7x? z&VA>j-{n(g*ZrR{sa7DT^t<7b=j$Y*7*EUOePh-*W3PRB&feQEw}l#W>9lM;d1^!N zjJX`4ooRX>Ju@~g`@N_5ysL2U?Nhqj?*;ieo<6nz_wW7fQ>_9cKd-sytF-<__;*1C zey1n@X71f9OT5Gf;)C|mT#rR zV>NZd$I-p{#~xU&e&AR7b3#YgERDkP$0bAqIvQ`q|wpBInp z)yy*myxZ4np3+`0Ig!ndGe1a!?cmGg^@_7x&r#aH zYh!)og7Bs=9Y9x<__Cbez$(f#I{6*@ew5=QR@Uoa|xZ z_MC8_@SNcO-|MUc5AR#>=bQQd=1onF2B#{{AGvz$kMJX&%EEcIpUeu^K8Sxbz3_!* zh1=>W7dwP@t^V)xQgFwLjK;uYA%+TTgzO*xlwmM6S(EeoxuVL!SO;Z3#eyY8QF+og zR|>g#{y%g|m;FrG`s2Ja-vlbHJAGMk^_=Hz0V3xndVTWdv)oYg=E&oOnexrwm1h6# zRKME($fV@$>@I_|5$hPg8?>hhO0@~WFT_!=sF>Hgi_L6tAF`*~-@$t)39EW7bm zas8LwkJfn=1i4R&4xbP_BR__DrkzyTv509EQ;MFdmQQ$B@59eInSFTJF|+yt7ypqkPEHkT&7D_HUK8z1dpj#JLQLaKGRcF!`7zVMKEtX`#)diGad#igBbK2t;5FQz*ZdD9dACjS zIddKiI`h30<{evR$Tid4yzkz{&bC#D zd)FL}DZTLNa>vYK10MBVmi+DW#J4|u+WRF)bE4tRRAt+b%O*zMBSx&HOUBcSX~xzEkS>zZf2uAY`P!TYO0*`$T@Ix8wq>`<$3y3bM@E_HF{ z47OF11P-M_I)`11sVd)LGMop4mu_uF*R{QiBO z)+zm0_pIGyyJccp%JG?ItZj#4mSzS`Y;p1J&X|?nt!*yuY;?3LT=c<0(~MrmFWcgb zYfoNU*2*)*KZEz60`uD6uiqvad|v&IO;?HW-Sbzo7<-RZznNK-RH`LA``RI^uY|+3mDhmOcYRgclO+M zElJ;A3yVWrIE(b=h<*AHrT*{2rX2!n-Of8amOLi1^Lu{n@93vz^M3`a?kG^Y5@8Uy z&{Lqsb(=$ri}A57FJ~=#dbX;t+*i6k>djOs9jDiG_OExW?o0piX;VEW zNcC4Ju&Pgff5KqK86&~Z2g3E@dA;ZUopRRUxYN%GvuovaijSRnm=+!+KXKONEsM5$ z@iM;9@k#l1uk_t$nei|+ z%OrW3$b9bC!57a=HVj`IwfE$q>!n3^T3*)s&hOJsoca6r0p`Eg_Fwnuk>3=_wKh#F zev8%2%ySpG+!x6G?|gjPd%}q$5+5JAcAvf)UMJt1;@2>{)~Z0vNrLNuKtVBAi)rh9 zwPOo5o?98fV3|Jq@73!U-}1&J{+Uzy;7!|$Gr8(TxnbD>%Tidf52ihN$!QaKpY_mm z$(tIj$*!!T-*cvV{RwuGo)US9efP=06Y`C5e9skT$BJ@Q@c(`(o z=Pn>tRuSiP>WZAy4V&a=R*9O4$C{TkYpwXWbJnpB%=MA$FMD?Tvzs zmU>THxK^9}Ud3AJsXC_w6!zo`9FU$EZ=~k!(z)6TQTCvIN&*xz#Bp08_1^>_pFRP>$Y#Ktzy3A zH|IseWFw2K4)Y%-v-VDT z{ys1UUFD!H_VnLXZ2{x?&2g8voH^fSV9#@C&N~OAfNPsB2`zl>FShnn#+`t}AFWlo z5>`#ni4wTq`aHJBa7wzindj+eN*t%{t1r(!?P3t%I^&q?pGkA2kG#Ajyo0Ipq(-!5 zk9!1Pz}0PHud> zlRfQTa=ySb@qH&MD#K@i#%Xm@NzW!P^PchP>FV%xj4_I57?V}k9?aeU_D*DlTFkP5c~8Xnz2`VJ z=N0+}CfAy_FiEXuvt`@o_H5_>tb&lE>|XC?EI#PF!re~W!eq_j6SG|u&#<`L{TE$t zxoJ-Iy`7sD{IuPCCz5lK;JzKx56!)&<0-YLCvNe{H^+_@Sw3Jt{c@Vk=bWE6zuGrD z{Sxi>=Dl;3^OKBp*o-A!JeC&I&b;6 zh;Q6yAiA)^Tu()}NanRx3s=Rm#Sgd^mnUVMwetU&%$@XbviDgXFRMSF7rzPZ%C-D` zFZgoM!hmwisY%Cfg!xTnmXobHaq#Km4ECBUf%$jJLr&Ck8Uo_F)|K~)Fg`4UZ@+jn++nH^EEjQ!m6`Nz_K$vI~+-h4Yw|1FF@8X8WzaD($)8h&)rbxxnpr4C2>YjwQ-A zE}!lp<>SNtFxbo6ZvMQ~!i~9)rRFQS9z3GXpmyol&ld%&w;xpBxpnI?)!VOq4=$3E z>Jm*gIyLR#M+v2Z{GFd>?LK|JuDW06bKs>2&6Wua?LwPw7C)Qvcf#3!nNya@@~uv1 z*5NrT>~>~Cw*138`D&jUGB>*Tygm^1GVIUn@B8eNYNaohq;5Utu&(jiUap>xPFMW) zKd*g1t-FT%&atdXM`OcM_*i^i2dBS3rnN=qM)Dlvj!a2IeDzIOeb zibtIW_dSjzbY!$`l%2J9#c%0#iILK}CS0yj<*UOMd_0!2{rD0C`R1siT{oW}G`jD5 z^G(^ttlSi@Rr!A0HiD;~Pqmn`Kj(mld;i)cvkQuMep~hW)JFNA9iLccoG_RBojzTk z>y4)H!~|xyvlT0x#J4=LsA;-3*J^s91ncCj7hcc4d&%k!PyG3?YyQ0|g zxWVUS?cS9oS_cI_7JqY{!6W{2-R}1xb|1>+b@HnoOP74R?^JnzdcZyR>@x0xYOas5KSt&&EX4d*p#oh7>FiR~+1++ob3T9=x%g8gTN zV&P4xwT|lB3wt>k&n`V~DmiV_(N4>p06RX*KO2gSK6y$^TNvKp+j3|A{br9TC;bk# zlp5IiF`CQmP&Ky^VJl;d*_tG3wL6wyYPY~cwKELvJW(I3jTdN%Z4& zyh<|9UHQRNw>0dIq!6=>_64`55cSj5!538gdFS2Wv|762;Mb!u9EYlePnmkwpSRh| z61Ph9k#P)jeZ=N>EWU5ftoJK?dH=-bO_@E}M}C^ePuu*qvaVyMyiel4&QI4C-%m2P zZvDAGKFZJj@8yi2Hle)JR@4N(ypjIx$){W4?<4(w9GX9M=7QKu6{o`=DLI|W@@KUB z{~_{-Rr5=BT^8Y&e9I?wMflddU(B;hc8cY+`-;t9rg_c!=X}4~@vaun=BjyhWmBz{TN0+%>Hl{fM_?p5>;Qg>Ra#2|C#QuYV6 zntzOHfBYWRJ=%EHz)B%QaQCzQr3Lzzmby&8T(B6iel-PQIm_Kk+y>#1v%!kr@S?R)U8=#jgBV9g}G z(~(jfO%cL(&SbZTO)tK1;*tLSui{nbqjt<#p4Yr1J|bUN?(U76Lroi#cgsyQ5dW}T z^yreM_WvICzj{$-S~czeqhr#d((_wX)Q`EEwgn!ln&S0DOJX(k`x5YtJZg zoL(V(X#1mneYpd+ih)Ml+EYZgH}Unn_dIfSp2UV{x^ri<<%_&cnBMQ98j=4n>dAz+ zA`J)LDOA{+P2uCZX1XS!p&|MAt*tX=x$SAFTK<1d%_GjI`hmKJeAjO1umAtP=-*HA zDeZER5n+tq)fDd>$|*S=yC-tqijOZ&+OwXz`(%?W+Z&DGxDN+RH=Ico)OK%~Ch2Xx z@@iyj(EmctqW)hh2AgEmR^=W+w%Z%xp|Ce1pE!}@-^_)NX z#}&kzDnynD8Xe7;KfyQ1=)e4jKg$kjGtOx`z+}0?w>{5W3D?fE$U1a- zZ|Kf7xw%(OmgyZ!muJsWoH_qWUedTN3p9PzwgwITQAbi;J z#F`tDuRD*6Pd(Z#K3)F*ljScuYb|5aUWl>2ZaQnOws2pS?HZwT!T+Y8uiN&A^_TqQ zOvCEZS2}4m>^oK^1skgLok{k6`D(ei!`Ayh+`mgCKfNAPT)Ok?wdm9RbzhRFJhEwT zu~V7b+omnc>7xB`-I8U#X$J(mMZT<@n>N3HH zMZJvwP0S9h6a6Qlx%Th+y1HJkN6Q>MF4+D$e*ZsX>5=)(rYBT%zW1cF8BYG?Hlg8g ztwG=UPbO7?BH2$LaL?A+W-x<8<=Dh)?i|jU*TnuX=as}tdCArD|9CcQa>p)hp94xM zkEa#hn!+op`c2}Bkj0!c%af{8?>I6|{m}fu>3})&vC?O090#Y|c4FGLY@w$`blLml zdxuMWyrUUed%xb=lF}|9m-O?Y_5GiDM@}xE_WRwgaAnW@zjyObZT7dTj>pdr`nbMc7oYc5 zgO~H#dgFg+kWAJ4S)D_?q_;+)@N zP_M1~`J%?eY9Y>o>C-kpNSklMnOqootjplGz`2xveV0$q-9=u-N$fU9%$ml~CU^@z6sN zmR+_cKfc|+ewXD>@WRvTWl{|HrFRHgUzj)B!{1|TdezmBl^=Aw)3_?s4jh$dijOeL ztmtTbkyq^W-{Y9Zi>qfNr+pVIl5w=rd7yr1ZQe1KCFd;o*0t~0ku8%JAy>)K+p%V4 zh5XL;FDg%-zfHKVeEah~R`1il|G%8{>C5H>p8{P!XZFRR+0#z>S_rmml4`21cynbF zqo;aCqUziEg$7)}|NZi*Z~I=}$?Fn2mEzXTJY%Kv z{=9*|;H8#~G?B})=Uz{V^(oh$@mPHSkEcaEw9fKJPZ#Ut`OD7EX*I9Bv)Jmu$+LBan{GbWWXzMjQUzTwFKx1Z;iX9pO3(S0COejwZN*qLcdq{I$RQs7WkW7c!M9X55* z$*U*qJ{|6Q%r(1#C*|Ck6Z~cYt*a73ABtUZm~_#~I(LV&{k@n-k3+kK?_3LS_AGUp z#u#8+^MAFE%6nfcqra`!?!NN~dnnxZ+#_Pi5s#(jGo8-A`6F4KvU#;6t8R6-{qH|Q zTei(zxMV{p2mjyOmhl?y3!{?QInv_l1%(XO?|9SoN#T^xb!Fk1ULw**1CIGPu4vu( zT2tW30mE_`PHw}Z16XcS~c&cAa~^3@j(jkuolfQe5x zn=|Aeb6eri8C#*Gt$1xsOk`c%;qOPoDNjc-+I(XZzQ= z!+hG5j(i)QKhlfqgnRuaFI{T7;`YjhN365IER>IMb&ZqZn;+JJL#VFMu|NuqhwZYU0$(n!=^piD)Tu6 z+>gjN@@uXuapqX?WycFip(~xtvick{#@a7-xL&ACYI<@1^vXRdKOKsdTILArTr^qc zzuQ0NoA8>@E(K=kwOjdaMcp(w>@E})u0Dg^Otfd;R?$0MnQgAA9mlpYX|L@tDf`|u zqmp$V<9vtpJvQG=nAZMX$f|uh{{P?Wr!RY7sN~Vp-ZkUlo5S@A8w%gMmFP+(p0&(A zem&2vUB~FKph~KvbldGBo5!bC+@IU-vf=YNTmH>;&kv{eok^@Yze&^S&{K;yg;5Xg zMaTYoyy?G&{XfBFh6jyiY(31ks#ccw{DG>77n2{DrEF&9E7-kL~L7`^44_bt!Ie_9vO$q@0EpDO3nIQEb-Oz^`B?6 z^Yp&oE9P&TY}2DtQ&K9t*|4U1`!xn*Zk5o>5?}ARG0Aw%*~gVw$MEWPdDHB60+=l<#r zlToQwxlXDS|FTnmI{E)z-uP7i-p~D~_^k7m-{UmD_o4gK+xq|Ci+;Z?pVF!kK8H#F z;;ygREXUt&zbp4R?|W#Q%~aLm<_YCHkN+@mbkuKnID;$0V4Iv6#L^5yziM=|9$s;-T4252Fvki0}*Em@`xB6vJ z7t*W>%zh9aGilRJ z=ABwX+zbELn`qja>{xwqi=I8d@B6O5U!+!>XdG0WCqJ#LPj|-3{qH5p>}+)xPO!Ku zC;ga*<%6Yp?%F`LAL1$B^CUYj-v)Qe^{?GZM+wb$k!*^zS$W@7jz0DF( zncQS^+;V2e#KZ?I&4#n&joV(j38l#JxW{lL+U5WMn=teJq8r;D_$2nZUvk>?EhAk1 z^^?voTa@1I`)#*(cHY&*3Rb<{PwX#TeLFiSYQ_Z27y? z0YB$DucLDp&CODY-P!A5t@7phk<|yz)&+QST{~r?W$brotHFEGn_SydejWT-ypp+_ z?^$A=bdQ7olIyCh`!hA~et*ce`2$bmdee|g#&d+PPZm1)!nA`W{mi*^8{?<~EAI#A z53ASUSOOKj-jyd$}rGS3#Y>Q9Zj@R_P-?k`>al)A$!5k)wH2e+rqRXyGOLPukvfy<-_kcF7c_q}O>oap5ILlLL^S-sg+=Ly z6r4&ITwJMPm`C+bZ!+&*Pi_H!}8C4r6!6SJmpljEjeKHc8kmQkR6kkHBV=4 z+SZxvxKlAWtK939Qe{!=-l@}n>^P%+se4X|*m9}m(mUj*xqOQ7UH@ zMP){!Ja>+~OPVaOd2R>K4Mmm0ox5eGKP_CSw)@-ve|^sL`{a#o`rKn$rW_~iCXmqJRw8&^?cTNO=8(r%Gea`+8~-VlKHSGR z_vF07jHzrtxRd8e-w2vq`aj^Egx5m$cH#Fc42*2H9PYcVU9vHid(z`;c^cdglj1uk zsjo;bIC-9Bah%@uS3Xy!zTf&@ZV~hOgIqtVzQU)gLX?R(^^;8yoO!S8K18y3xV@Y1_Qmj!$Xj zw`tqJYV~yCrv^Fuvc@S*z3+cWN*|pdzQJtn;d#e0E_9u5TBsX!!#K@H_jca)+?kzj zHe1d_-riSpQ_D0rNuwu}f3@Rc?`e91Ju3u!676d>#M$3$%dI>u{ashy_UTk+-khHE z2a~0WW-ofoQG7ovYW4wM(@WRcUNl?rp7PT6{cyA5OY`bE+3uG+PwY{z^Wrpa^`}{OVWLrgZ=-ch-dlBQ~474jy9UUyRu=W zXMd=-XWBjf%zojiJNrrxYpr);@cEc6UcdOypXuh)RGM6IQgMlnOP;%2`1-TQEt&sYmipy{{BPa*E|+KgJd<``RL^pnW?{Td^|`-n%#KNX z@1Om?aj%3o>!f`3lZi!lj`!=A->oz^shhGq>tG#R*)TpSdjVP0XuWSITtD zd6Q3{)(MSuroZgApUbR#CYzYCH^)_SM;eKQXg z=G&-uMoP#Z+TFGL!21IQkCWDE?_s{SW8qJex`$g;|FPL_J-K`lTG5xtPQ?mGZX-LL8b*Xs1ZyOwh*P9c21%LmVY9h=T|*`Hkf z*XZEJMQd1n-s(vH4&5`qV8Nm8Vzu7;|Jtifw@q0(muKRJpMB~J6L~Gd)mEh*w|;I@ za5iRs`%{7Rv~x2;%WhR#Yu4wOZGH4}szh1Kz7HC%BJ&2Ri}qflu)I#>PJh+ykyRm0n)LPGK4E1%_+)180^Ysb^HO#*ZfI^Yi6Eb zeJUfrq3ZQB>E8QK@A+NwF@YoyZx;Vmq2 z26CTQF6mR5AfU0wmf`hgU$L9QU5o|A`uFO>e8kLqkEE;tGC@Od>goi znSFBTHiMW2Sj!c9ou_+<&;%o^Yeswp3JZ* zv^pfG5qsEjZTOqXoQXV7d$fw5=P{fAjyoXDqtF$0^y=3eoom=+cKmoP$#R$Nu%W+~ zV~#~$(*5$*^&iAp-W|ydc5vUI_E78bgSpce`+j0KSpHyxGk@^xYX>71%`BO=>*k`( zt7m*n3`?u9W14!<@Tqb7yx6=yKY1I@XP92Cl!|=trJ{BB;*Ua_%FjZ-uF;KbzFu16 zvA=Bv$Kz+L$6V&*KK(D-w=+%q!6A92!zPoO+@%iJ$|k&y;qXsg!gS1_G3#)$2hZUo z{=2_dOv&$ayUVbn@cf!EN#1$KRHf6FX=?>aX?Ev#2pyKb_(`&}#W=ud_uanY(`6gZ zT~CU-U8K?2Em!UI$N#b4#{6k(Htw50&s0q~XlBIDB3H|l`Ld@j=G!fhsb+en`Qh`f z_Bc6~H$eya7(yTSrcZeC!n@U;`LE=sh)I9Br_D_g?b>-ys^+l!%q#MH^k1&X%BhfD)3x^` z^*ItF#04f?+CBTin|G@^;&k7o)T~^2%rWHPe$ix~n~A*F9daz*%Pw20!S;6ZMb6(J zw3miHi*sh2$}OEG-LSF$-u88W4!7%`G4FHY5%1|~c1zWG_)z+IgFt}u>Ln9>J)~|n z$USl>xVqixgB^e3KG|PQ=bhL5xf1NJyT0P6V5;cx{6kvv*}jW#KAp9CUEAv4;ZHxE z-WR+qd5ubS%;X)@lowardNZ>_{L{}3X^Ewmjna+z${LfIWH$F6ckT#2xnSAZmq8&1 zJdc#f8m;Utc<|SM!Q|_#&*yi~e8O!qrG+zH+aaJQJ>O+dkEdQwb^eWRVz|EHSyzS_b)C6-rE+| zJelZz+Wya9`)TZQd-!L5HlFh42%F`q|Y!j&gWwk>0wW3$EC zBSe&6IO_0Zk?)=&X>||hy#8?f&6)eA=@nYDK6XwyIB!PstJtcVrW31N1zl#a%zw=l zWyZXzFaHoy^>}gYx$Lj&n*|rL{9zJuywK~WmHZ)=dCQznsvVo9EPk5L*KA$)SWq@M zOi-f9^yRf|kNHlqUKh#_&rXRF>vY^ATW_Fmu&3w!Mr+9(bA>J)44LjVTEsqJ#Hk!FW`?RxUO9(SDCB3AgeZKHt4t6Iihaj_2^5=vVu zxXgCl)6^-ynW|pWV7*{Y#i7opQ`gtEdM(Y^>o?a-vNK+Kg5mGxqSN~It&=v$I|z(I}h8z~0y$22@;#19$OYtKsFuxxhJ=LoZl4v~HT6;Jl| zhL~hD=^Zi@n8H8RIN;njX`hCuPfvn&tV};K>Cv~BoC}`%EZfEycB?`__Vulo=bjj! znckyvDW+L6j9Yeo;O1qg!+et+j;!&X_x;h|)8}@-VLB}%ynIH(k=qOZ^f;ez;&i`o zE!=tb@@;lZ)88xi>u4R9{r>UOk;VP1c=~R>D*3)l%ZtsG_rB?`EiyM<*mFG%{pWhI zd}h>P&`wjI&a1PvdrkP$XwIb%(~iBaZR?x4$?U>apGAhfHL??rzcpO_Z7z@9hTH|N z%Vs#9*xXj}_F&`mUbmh(rsvk@9;>|a{K%@NO?$822ww4dS>UzwYJo24eLZ1wVsu-Z z%_P;5lGJ7%mC#rlZD!5pU2>~o6`$5L;fXCCiRX;Y&fI)sPrId9;PE*;+rk5^*mgF4 zeR9kHLGYvSqz(IwEkfRTo|gHa=*M>2DqQ)0vPsNl>o*&cD_$>m#s&QrZ`CuKJ zN{93QDHC69KRsBi%KUTUiRWZ~t}P!`s}te$upg z6(Yub6I8srXM6T??bg^Sp5AQ3b#L7{WvBA6HMTTGq39Qk3I8zm2DsEL)(i zyt1uj5A#7+W=XbLPeL@Ge)icnspiy*2~C@-!#+G;#h88bo>dp2~M zi?jJ}12+u;+cnO%U4TW?{D5+tK9OF?Sr1sF%~n|gSM|FvzZ(> z#^g%edeQyuo_FM%{~!44`|GafPndRoQg7(#_EXCJc5N-|vnRg!_WIN9`~UocTW7R- z^_FYh3HJ`yyZH6-lnIA&g3THkE;`Pb&wu*Qi^ctV$p<{l4Sx2PUca&=(p+zCjdvwi zYWfzPFek%^Jr#jJ&z0+Ge!u@cA#yj9?WvoqXSH{~ew&v1ckA6Ol?cv4##?ijuM*So zbbFb2gimg9wvB18-ha=hkJc|dS2NH1@{_7`oj&D7g?HU{lucLs`2J=3Jk9;Po`!3& z-{MgGduQ|MQ%k4EM};L9bQhIxcyHNp)X;DOZ)V8hzO5IHrY~9~`CR(6$(b{0Um5Nz z|KV)B$Gz`Cew;z9cBAvmD^qqQxgMT3V{*ct$7*~{60^N6TPitRE{AYT4^eRbVAi^L z@sxxFrClm14|6oc*mi!{v+H@Oi06uF@2eg$JT~81@~uJC;lLy=j{8ShR`jg?bo0%F zZDKn)d2ahKE{<()nfOs)QF1}Y?1MMb7nT&hyEAi@;&LNvx6Nm4i*0V4=6-Rp;M4wR zY36z}c}?U!9w+Z`mleL~H0=v3|5dgJOu~1!&D@+@`Fs97K7v>pImXXHBKdBe{e6iSDYJqSG5%TXtCQ zSG`;0xnkZ_C;$FyvlfP~SP{AEpm7VgZ6Z&j=JF=b(gyj@A`(Kg`(&CeH!okkeE+2I z!~}zq6Z2;$Tq#&_TIx&Fd)qBM_jguKwryR#utk2`b-$;%?;8yM-w=EjyYm2J)$jS= zBs@g+?3XHO{M=mY!}Q!qVwtq<)LRP6{ay&W9Sh>VyEb8Es9ER4I6=m3m&&S-UE8A( z5&Y(AzF{t#QRye0FVl``EiqAPnz{YQECU`F=f+@1|GM})%K2@ZZm#}eqGH`9`oK&; z>(CO0Jh8sK)zg~fC%vDjCb{F;W*$a)X#wvurlrwd59jH5t>2ufsaR}fV|HPUhDqSQ z(ww=yymC%vzyJTeU_Oz7JzTowr`3*|3-i4cdY1;cMc!J*xi~90v+w_?s{D2{UG#Yz`}c1u-^AM6 zPQNQCslB+@CebR%$0}`);F;EzBa;M;ZhhWgG*7pfuhSt{_x?c@v8=0SUZpwDdLQ#? z?kDRhbN_y5|Ig}n{7rJnPo{;v^1Yg27Y?aEn7ic^hxOKy-Wg(wJ8G6@_hmi||33eN zQcL8HotKI?HTpDev|J|~^(%b;uh16pXH(~XzY*AUh>64Az^=?j=X3la>5sFc>x0i( z{WiAhe;E*Wqq93T-CC)8{@d+yd$vYdOfs~8rfhJ00#AFvEQ7|&w<4SlhgUdFd0N8N z>G1y)$IiNH6(85R;c7mq_17OJ@4aG?Y{P58aX)CY;bq^e7rb9cIH{Uk_Eg=Xknp&I z>sdt?hwYs=yVU3DU*Y9G>%VH<@l~^4^#rY}xVkg1%9$hHC~lhW#$dVG>?^-?L_SJ* z5^|2?`blB;!@*m^#4N5FZZnz3SaYj%``il)*m)~|2%Rxnp1S^A!qq0Dj_PmI7n~Aa zvEiNW%v0-6Sbt!cYn*l9siE^WTNaL~*Y1|x-#e$|)5%k3Cmdo{ohbY0Q!SGhLzE~# zW3*k|+hop(9h$3G@*Hx0Ui;5G~~7Pq(kSGLi(aC1+4*Ctz&6Gt7lJ7^W@*d`ydk7m-3+{W^;DCE4uLg{Y7 zox*|Z_c2Z7>p6JY*^<-dlqFZs^xLNoJ+#rkSA6?Z-{NOe`MqYiKeL^_cx{FM+CMuv zH!WGICBRbqKYr`;?VCu=sT zxM7>x8^2w%X3lgxR^3|Bc_EiS`fkX7o}~2*>S8R@->mttO!3pj##0L!^J8zjGkg*( z*&ICM|5^LG)i!@5jEo;v$wl@*kuH0`Xm{rsKH)mE!&ggwoaWb7ule$0letmV)4XLL z7?XC-VdmiF&iE9B6!E54H*EjkxA_@*pF{0`G~PP3 zscz1Fe@SERvu5*x>%V=}2u}VqXU*ge?M=_EOut+d*mF}-`?v4&$fbv-Xq-(}R#tzw zx&Lpg_<^%^2kKJW=a#j3i_GIyeR!aV{qpke|JP_n3wgvA{Uoc;!me1pv?^cYfniH3N21&V zeaTM(&zLvtt4ME|kal*?y7JsRO(!c31kVp%b5?FM_UPj0w! zbRImFX4iVCHQ>oic4vR((_)N^B~L7!X_`HI({Z`oQ&L}W?d0m*bzZO1Xo}pkK!r#F z#hJYZX%W1SCvM|8TQINH{Xx*isP>|((+`~ew{7t^ccweqA+xS6SvpPBB$)HoYCcv^ zgRZqEH`D%X+;IKqLh10YyP`IW-feQr@?3p1aNnMb!H@h->{#_`viTG1y$2$;zcl~2 zKdkbpT#b$9Kc?h0KW6{m@;9{S)Yhewgbj?&wr`S1zkRZLz23S|_8nb}j0;>2c&*8d zEonHh_o!I%>8aOQ9>3Pv%aB-IoV?~(ed0TY!x9Pe80T8JGcMiU6Sv|eYtfI53wviy zyp&b>MK)vmdZ|64m)>kqVN=zCN(jI1&KS>&3Iwj7uV2X zX&5~{>`J9Zsr9cJi&f6ton@+{w61&R34xY3H;xuA43GcYyopz;x*$eF^4*e;n@tW) zVK$qw;rN+vS2r9_X%+fQTNez&peOZTa7w{!K|=E^m#)R-L2eEvw) zj>?%I&#S2KdM>h^Iex0Bq^D!B!1h$PO+s}CYzC=J121Fz@d#%44%70**#L` zDyWO8vZ@5O+=}81Ix($yowQS>W$&vqZ`d5&zrfZ4NDHsqaOJq|;ddIg65+ePY|@S| z-pLxvVz}k{%wMb5#f!#%f1G}4@l?}i-V5p(MKn#t8TS<_v}Ntwx$bNZ=c}L3x7@h4 z#&M>~tAFM9DvulS?i3B#VWzk__RQ?_!o6m7F1wVETxL8kx>L@^BJ=7K-{!i^;{H`B ze%BO>uU*;7!u9CYCgpqehdR}jXaD6eby+mM@oWmq+Zcztd!H|5zg(El^yjRa=NG*t zPk(>xuMr8AH}`zFV7s^E11{Gq$(ywj_@dUjD~o)W;Y#d!=U0(7GncFTm9NN}ny^~s zbzctc5HO1i5M_N_w%Ty}gM<@4x(ifOJQhz}eJD;M;M^Y(X%m^GBlG9*f3#`&sT8s` zpiz#|exd2wbLAh(PBb&`d0=@-VPbx4lg`(lYA!nmiS9U1+gWP6UoL{l=!0Q^3X79zRFbc+hg4wo(%VnO<3w$BD?8#7 zC7<2@EF$#&QRYGBGwG$3myfKDyeVED)b2)!};Je5jTh?54Q57)X8n!?u`O50H@M)O>Ve6~DY8$TqJ~?&%-*4ee(pw{^ zwFmBgT6{xqX6d?`!@2u^JMaAay?jcrUFD{j8sqeHjRtc&!q%NmOjTl*oo3Fe7{NFS4{hUiP-`q-Z+4<_!>eH7sOc(#I)7jMje%I%7 zpU!OdUu65*>F7gSQ=aOuA8V4ln=YgapINkBpxVhx-#x3Us(iU-P+{WzckAoEYF9m% zEx*%hcYprm-Sfm09^dlY^wIIV>A|UvY+J7i_s8p4=yGg5r)BaeQbat2i-o^VtSf$N zL9d?9*Dm!LKWF_tUapw&IKMXhqt4Tw_3}9)O|RJQ&GKqsyewF-jw?*a=d_1NpE>)* z_;c5lhGdNm3Aq-J=2-`JjDtsUtzd%mHvESHjq?{?)!ixy_A zbZ00Qm?Pl&U0Za;*$Ruo8MfCow@f|D_spjDm`RGk`LL_Z?&l{(W`CN0$ZXw*6NSrW zxyt#>@>0^hdp75mz@Z7ZH{G_KbACzuyTy;|&TuchdOXeayiR46!ng0|B^#fY&C__i+PVIPQCc>kY<2LWRbgS>udYJQ-V)_ossG{XW6FRQnj}{ zlRrg0t$g*y`M?XGLqhy+ayJsAguVUu7|sgaZCjBh9CNZpxV-skwKJph51LVzR&Y5gy*kXV`)Tus`xhIIf7li3mA814F{^Wl1@}Q= z#p8($r;r{#{ZxXv4w#_!HLOJ<~)SBkw4}bQoU;Rz?^@R<~N>`sg{q643 zJ&)hAPvMt4eaU2see9j5K(+#6iwGkvA$vzuQ|u3Xl+ z;AvbZ$E|PGPTP)7(k)(F@Z+}4F##)Wqm_*>yq>7a&#R{JrT4j6 z>h@~&`O%CQ`4%r{%=Z1c=~%_qbs?>fKAb%8Zh!X9mY;w7ZNeX%U=?G)~J&+&^`4AxEEdVcZ5oqMaEMj4)8dEry0#l0_|XPEn{d9a7w`-I|jo8}LClh9Pok{c#IWjj)aq?_E2eo}0gD?N!^a)$6otwP#!=v?6 z%=i4;s`WLY?f0su*{3Dv+ikwns;E+~vtxD6?zd)IrVBr)ES}3*t|2LAyG`0s%tWGP z!iqz)DpJmFvRqc9H&yY~uMJAU9}=-^VvH^FH@&$#Xsm{EuWIyZ!0F? z_(yc3yIHfO@YZK_YbNg7X35j!w=79?YjT{Ud(^@isXF?e9xWF?Eb{)w!9CNwq#(~t&bPJhg9#-ns#dmr?}iak!Pan)}PE}O}qkm)V7CI zM*LYMulb{*AS5KFE5+YY{Y>c116m9fF%6ToPWNx!<Z&*?ie^h2P$oG`)-I?(G9->H+!=LPXO)>=BVgh(B8%FL0oFt#&xv0Ha= z%0m6N9TJO@#LT_lsvYz${Wddws{G#{$9I*nu}JO}xhb@@tRdUKH`uF9R=MQUndYl0 z7Ork?b8?DyJ$MqjGDmmAXCLXN>wImEJlp;>c^*&in$q5~>ON~UuBz5Yxn<|Ty$yWd<}g&hC?w+ zbxI5)3+%X<60e)>>bm*+$FlkVH{EGW6rG;9fNTBJQl0)lAsM5xP&u)s*On zE=eh2N?yv9d?~-?^6MwlmWLj#ySjXSS=GWcUWwO!f_*&X1Bv) z9-mzntlfHrQGspEq;0F7ykY5FI(=E1A!Gm9glA`FM(gc)!L;-1yM3?M6`eY%zHv^t zp+{7SPltE%VV-jw_mz{3tQR}znQ=^;uAaOu`%!6%-2cg&J~}BH9`V#k?H4+aYUV1QpS%BQ$N43$FZFLtK5Unh z?z12>O8T1PtXrkmV^3=?pWEgctMAy~B6#)W=HtyX=l*os^#0T|=gNokGI;qO+iAVi zIlF}Q-%aClE}6Hsdetos^~w&~DK~NZ1LYSSN^4&KS;4>3B!*+dk=?6*hFzC*itFcX zRW9(Xep#UUkHhx(k7SFVTds&MntbD%*Rzc#3y-Duxf(Cf)mrXyBk8DsO-28YIR(sn zvtAqC?ep9@XW8*O!4QF~A{^N@FAlbT5L@($<q-}`_)Iq4!tQN^JeDBKZw68 z*5s^`zgThdm&sxkTBVMc(+YlGh%vc$IOiLS>mj}S_Y7xVQ(VJn5PGmmKy7Q*-=BtQ z*L?F$6aE%P-8pnSp={$!hO(`X{ybsuTH4eyTRe1a@%!LKN7Uurb2SYAmEE6v`ZW9h zpPN2CSbW}j1~X^lmXgiJKYKlsRzJ|1wNJO@XLekqUFEAzfoJ+=#ZP869$BLt&v0-r z&&L&o1=Z&rIIrqvh*n;o`#ovFVSiEfls1h@)%3#Pg4J7<1m-vUhbfz#ocCnQy}RME zT}^jl7Au_5*H~YDIs0P4(Z5rEp1W*U$@b{ue(n8xo*px*z9qBc=i8?A*REN&dNPe~ z$L^h4y!}c_X`9{Te=010-b}tdy zv)-3&icFjT(-Q4C?`?9A^+b!8zMh*`%vG}MYGd`J8+SUYS#lixm~HL1xLr2&e;s?c z`GIdhf6*7C1n%oQZ|5-cpON9P;V9l>8+-aqzD?J(onBWqOnS3iuSU3IWsK9!1Giq> z&Ek@^-P_pSDP(q~l{@FPHPfC)+$%&j=S=y$q5M{^c+2*48lU-Hq{AzCXIwGw+IysV z9q-(>=$En&zV|d=Hr>eP+kRtHsm-n1ehx}6ZVEgLuYK>ecJkx{7NS1RlV26jQoXZ> z_u%>+Px|buv=tqg;m=IZ-K{ruIYHJ^?aEM%R@7WQ27)+GOjxvCp??=SqI zB@r>lfNh$ku-tV0XkJF%#B+TOJI?#AxTc_KTZ*DEp3|NV+5 zL(wrf)M^p8#MAzOMy;8w#qTSkF7YKk3YN%l5qIUyspV3%fd3W{2bzg&1&)a?r z+r&QeZq<~HcfXvDK5f45U#Jh$Zf;IB?aQ_~sUeqO`Ql ze|mURUK~nF;?RwW+Oy@!+qpMd{4(Wr+V^}(Filu+)nHFq^3Qiu|2Kwp^-nz>u>V}( z!Y4X9uE~|XN#B@?iu1i*3b1Ic3W;2Deue6HC+`Q}uh#PF_cs?W*eR|iy79-e$0*t*PE32Q)jY?2ma?syxB4Rs$H4ghATaj|48ujC-!|Vdb{=0$uE}2qw^T^R(3}1 zxHk9i85INnUCHVj43o_kGbO5>x~%Y~U|o)YlcWA=o*%0==|}ym(ZBY*?txzEW8)P! z76v$NnGtg075`ebwO+1HHTz2H`3pbE)h&1LVeSb_T=HCR_q&jDf4(d~{paUr+4teL zCg!qhe4g)~%FvNqYHQ_We=r(}Ue4#rw@}l|N0vSK)_J?KW#`vtf7iHVTBziod3!~7S->U7=!x8Mw=!>k4gasi z<#tlh@Wi?gsi(uVwx@kg)BZI_(m&BocCJ?XqIEUbW6Rn2RsJy)X@pmQSlAvgi_Mk8 z;>bS<>4=%amj&jkyPW5*oK>l}*UF?J#?*js-m$As5A5Bpd3?{)hEEfPFV2>IZY98U zm5Z5uPt4^w<)qpO+k{2#@##0zWM+Mk-eI27_QT}s8FUkds~w?0%(#t-tu5f=4q_;IoY-%LyHuZ;L zyk-RxEusT;C&bw&`BiJNINe<45f(ScW}(po$ERwXYSVXW?&??74dDy9o}MMg+jjEJ zUzIzrtk$GYELYQOXHu(LdBE{7MaRAO<*p{*m|+pB-`p1-{Pjm18HjwTP;P~Mb6DleCXzS zhdKFKQdXSy;1J9b5GmeOA_S?JgawOJ{F_Z9!w4~>Xj(2t-Bc)7M&4fU6+4qZ``ykxAtG2^4xg!sf?Hx=09p>_is~t zWo)*)Z~xCVG3^@{R(&(bc>4LE;x6%LW=t!YY<*p9KdCPleluyO1W)LhvJ)qmGo->M zct?ebYOa2)*)S)XcY*pw6`of+e=e!)#AR1A2s)?&fPMxA}lmnc=gK*-=CDM zJawRH;kRk~4b`7Dv-5?uU9h(f=q0Hq9NLR#Q#b3w0$#S}U9PObDMM zSdlehh63->8K15R<~Hc|UEJ`%UTs}wf6%Qa|A)CpjHA|zJUQjzzN2HI!o6vS=A>t& zxj3F%{H#EDy4Xe^-hcwXw0%W{PK7R=}a>?#hd|L|wVj za>yn{xL)g?+-}h`JNR?Eza02gw2S4hF&) zYkpY96|K9JXN9F_fyj%`X1(Q4A1rK_+p%9K`q!R$hSQkcZj??)ZY>p4o21rL`yg$V zo&LJ*^D6sq@7(>Q-RX9URhR%v{6UrL^M0hbym)=`tFOV|wCNug&)D$o|D~^T3{~Nw zw|@98Q=ROiwl|Pj)1kpZXjVswKx|0U{MGMniLnNDad@rYCAJ~w^X>foS3_A!?}my9 z#E52!xm0;FF)}w!h*LA3Jkuv_(x3UyZJyt$zW?EGy14P@efx{vzkGftIBBY%)TP*) zts6tl7tRSdRc5g&^Vfx!MXhTm9hG}?+duVO@)SRwIWz5YS6w^ZsJr9Y)6{y$5|&eQ z`goPppHymPYAd!H9@zIU?AEg%5-*2vL z;GU@(b!puvOBXex=ON(?u8!$jrkEdqU&c;YAx|^u#no{&_ z)8lPdZH~=Qve!~6P`%Sq)u_4RQpYBPz@=~RM0ZV_I$P`Yl=5pzTRSL(fTD*^45xy0FPPEAOC3g6X!f<5%(}j%Wqn~;gdDT zY>ik}+=-04*2ris^TL=j^6lIY=h!W7P4k>97xcV&4QFq;qVoL$Tbb3T_x;)C^hQ+y>k6Rz;yQnwnz7o4@xocCA(YaMGJo=i%A}ieeGo6eTOe+s= zY^{8D+V@$&%;3Hp*Y8L9ECg(f(`UrC+g9*BkzRkd=ccd;%dLttPLYR|oy)y$+&I}M z5W8{%XIQsp@gu>+vWjQ!vRlHfp0><-VYa+G^cXt#&mDRLqT=^L5sW^Di&- zmOcM^>&1q-pJdxEKM*z7*!1|}`*WXcGJHaUY)URh`!!tVvPnsJeYwdyBE*A3an5;@ zuQz-qn<~6Lyur_9(Z=BYs~J>_S28QVH!z#?^Hk%!P9=vY3?&b)J>M6k<0?_4^2EEl z`Vy;!aedxRE0cmorgW#9W>;oA|Jr(J(i=9%GC%3*eU{&Dl(2eT=9^JEK~vv|WwPVE z`n)K=TyJ+~$2Z_Rp=qBtk}am=K;K)qDLtA8Agyj}qkoecs z;TvbR{UzI?jG&T49+CVnyXT(xy3%TbORmW?nECH)N#<|eGn4gA zmlY|#`h9MrR?Pmx)toI81a-Y1v>9yuS~0_Ri^IA11&Lx!2M-+BT45dTcxx}y->7W| zSNrsfK5;!PAbjwR|ABqCpBWZ^(Q!5ln!q#v^NU8Wdve@N%N}j@NwK(Y(3I!P9z9F0|Oj`cQk;i4@lm zSBZ=b+ZHi$PPVW7zshuV;K{-n#W?rnmpM6y>F{1ERqL~QqAEOg*Y}?W<&Xk~%vB#{#kx$IDW-n)Uyh@B@ru|-o37kDt>W|G zqLdrIyVFB6jThl_&tKtPzkNOT(#*wc&edF7^Vc^na;9QN)AQG}cTZtIqQN`4%=37g z_bKxSx3j*VjcZwWIxWb?i{*@@+Z(COZ4_95Cg_7+jYF;^{&z+uQBq-hV;rE6QOdqGV z-cZn4(o>Xu^3kPT3rs`~H$Ob0+iUsOMf0?n!LB}mpjQrSwRDS*`Q^H#iLGnee<57D zNXTXD2hq0{x~#euGt*guB6n;$%j;~EDc(KpVyD2NWk<5NE_y3wZMfp*5376fY`I7I ze@qqr($%WsC@{}WLgP=s%{Q)`PriR-`>y3=**Q%zjlWT)V)rtE{W}fMaFqX?=)lL{ z=Wc2y+3T5CR1!?`3`t#eyxV zH@zDUTSR!7$(&zil)~<;G-b>As$`Gq+sy?&QXd{KD-b9+B4Y3SKvVj9R@~inUv8b6 z`tq>+Ujw)Ka&!IczLr?GZBk}gcYM+Y89O!eteBt1A0PWEn8Vfr@U2@ZKXI++WA$bK ze_qwU+{|w`izbR`yRhiazWPjtmm|14E>ob=vc{%m-i+oA1%Qx7YuWM_u>(94j zThLtBawYQXg0cfv&C3~A*1gXWwm#!_JNXK_qhBd{j%Tc}uw$K9yymzygy zJ^ih|ABw)rt^e?h49oqdY3r;7(w;|}3%l$}*y-nxbYkNRhVs9q)0anXejdeN+AOeV zefq^cPiL)O-)K~SsYTFv?wp-&`Ew-S^Q1<_>PSpT_U8)EIImyEpAe*lf2$(J%ILWJKPSc+>PnE8o(l-A6=ek{j!i z;!r~lWsVmd$0{!;)U_2va_6V73{l$QbXvniY1!r9#YtVd>kVdI(_OzqqSbLpQ?pvb z)sny~CC{`bmpseMQr3I$$$qN(g!9|x$Zp9}-)&GK)AlFHUCiyLQuMYxPlWKTU4-$W@H0|C2TI%#YaF(laZyrnzxCR_EZc`9$!?pNZ|f5rCf z+EBw|#Ch}g+8t>YPLIMun+2>U%c>`CW7d|sQo@nC+k5)0jkBKEWPg;@%yAB3=A39z zmdMXkx1E>oj9bZ@->0=tZ`?m|m0W|-_Bg2yt#h~1V}3no@AFHZz-{w=!^_NTjKVJR zt|Fe-Bvg0JDNj`^y13PC>AC}tH~Sp_bM1oajj$@e4?K4ToE&6k%kG=tyGX4*b%n(4 z3#ALMObnC0fBj3&>kEE7=iB^pP3}Kmtu4qK&)Ug{rl)Wg ze7$8Hy*r7=`$ArCt;LZiKg5p4PY8-!>Gnoc;7z&RY4dryOPG8(H4XROl@vN_f4a-E z{@r!U56${a3yKWB`1}j_snc%s{|4)QZ~e6|ysQ;`${wyMc9$2rxnQB&LSt$7DSkJK zqpaS!T$vf)yXKZ9$L8orz8k`cN7Uu2jqVm4?tM9P`TU?67gW^aFL3k=*llD>3}e{x z^ttVZ7bZ zSE_mSg4#C}-JM;KYCZkYHu?MY2EGOJpG0Z2Byb$mm1bv}_@70&vY2~1AFtx+9ar89 zzDd$;oXl33u;Y<&o6_vN<{~}fKhD@3@yUJVbW-v6QLDGRHf;YKWnc5Ou>aJy0`v1d zx{sWyuAeQ;lX_ZqWmm|vo?8*ytQH&XxbCI4HsAamVG`;uW1cu7r^ak0VM(mKJ#wTjw|_Aefdx;w}IscADz_p(1saC%bnJ|u+F#@aWtj*MQfYd z_d_n%b{p*fbH3kZl3c|D#nlEkj~3Yd>zDk-d?q#VoaYIZ<^2KI78>{*d9>5l;?t#% zGvho|)h8-Hh}s=(e!_a9=DxDGQtJ&ISh%k;2JXqcXnW^ym%ySqJGrZt1p6@iPCs9+ zROG(6@9u{e1sgWCs)3ca6 z7DQ&prLE!5Z%@kKzV*}Y<@2lfp1+i3a}Qf#5ObgHhVOhkQ`wK(T3?=6+_$BsnOE9; zxw>2}Pwdxsp2`!8k7TiwH7uTJ&cHmm%+&v>8{d2X@Yrv18sD5PE}xnx`rl$P$BL$A zV}BPDr;sbhd{0Q9WV$J1q9_drN`n z0^2Pig(0oX?0ykmw?gJ*ihekjc6j>tv$vR*8aO$Lv(8Xme7NiSjiOKfCuMXT^rrPC zo|Ejqcfc?B+5Cp|e~+}I4R*^oHQju=;(1={^E0<@@!oxX$)#n!pT*CXlFPo=m)S0R zmw5N=k27IY7TW&)V*GNIwqRPlOk&xc^L;_gG8Ts>D6d~N#YNNd#163^wd<911Y0gP zEy?>Aw`qw$I)}J&^?tK^GZ~Xx9`_`+C|^6_qhPY5LH*&W0**_YzyFRZI_+n^C+orV zx>vhyw58stX6pAdKj#tEv|n}o-Llvli=PSBW%V1a6P4rr>v&Ogv*ZJj_xrLX`W%79kpkX_3ezl-?E8|JuNphe>u1Li=0Y!)IBy^y9dj~c_&m{nYdBX;PLHd zhTd~3>NB#F+BT#=Umx?;E$Ykub8SZPGyc7bec#B=#Xqg<;N%xBmmQBiJozJUu3N;V zli4#)R6Rfc-lhAg`=#dnwI{sZR{T4#`-Nft@vi}mKlU&9+E9LB+KN!88T+ks**T9S z$*g>g7Hk2*y-Q|RxV-D$V*3EOx2gH+3{wkX|C}5 z0*eGqzHh&0Zr#g2&wO=3!Ai->A1!}%;_5!C8c(tK)A4xfa^LxRpXJ>O61aXp|1A;v zY=;T&s)wijDjw^Ur*4_p9P;Ah=6=@11NS73?|ZxUW%mD);#rpIVXqEb{y8;O`;x5v zKIPiKukV{2o@6w|bJDeFX5MTGYl&-3MzLF_?S0qf`ZC|%N`Ilj@t+aVW}p?qe@>06Ow+zM@#YJhbf*SwKDF_a{^NIxZ0?*~{l&RsR>Zs~{l@v%YMSyYn?(|vM z=e6S5R}C?MH~!TpL+wI34fc}SGF$SGhB%=@0gvjs9f?Q@pJp; z*MIw2!W%Wy?&FQe6-L=Ql1VzrjJA!gt@Xk+mUCvwHy8Y`fwXU+Y(7smDl5jRn?a?fOL+>n1*PQ<5c2H^q-@TGOPfdS{ zI(KtVk0{`o1sqQ%Nz zE!ekK?hdhLfBxI1vh%0dpZ{;mWS+dQoE#Y5!o|z=sJ+Ry;;_>{lM{2|SKeW_+?b;> z`Ti`!=Qa7(VT+XHIk&$SH8IL^{V{FcqR^m%xgLvF=T80*FJlm7EK&ZT$ggR7jz?TuQ`?;lE+O^nT^AnWD680c?BPuj{~Hf} z9J^&m^lhuH+C%z-pp}7(>FQhMN#y=4Lls|>l*b~maGlc*VgCr z4AES$r{H@CFGHPw$HgSSm#k9_cui+ajZ&>F5B?u{j*Tbg>XhEFX#$f^#>L&4dv5QG zYgx;|dq8kX7=V;kdi66o! zGkG!L=2@R}ZC)I^8%*aXRDalf+UZrFv3Q^0(i2RV&GQn@8!|6{s~|7Yu#CCv_r9p@ zZzs-v;9|giPNQYzSFw+(2jA>oZd9(A<};IZR^9W^8nyqM|FN>U*Q7uH#51+%{0App zC%uSIT=7lvHtjA}!PI{Sn`Szi5orNijF8?Te zoRjlvneXhJGwWJUM%t-q>NN&?23IF9+o-f-M*=B2+)AwoUI?VXnV|=es zw6fgtl3Dg4W@AP7L(;2SYOc(fJpFxB`oA0V|4otG@t^T?KzX49$HkWaj}6(UCcI>y zvU1ad6Q1+FUs%y8d2ia?w`#%n0D-9aQ^Wqwg*R} zEEh;mofNB@HSv7o*%=HTd(TX0YfOE;c*(TtyIjhRZ1eP_(k@HhkNCLDf_H;#uhHR? z!OJ7&9p-4c)yXXf-j$kB#a6@sxY5?s5~??RvMWC%*ek;4LGCnvU?pplA#v5&4Cs*2}%w2!^t)k8Ks?D#1p5MRQ zr`E+QaBa~!xh^G6Z5M|No3cK>DLTdC6%(w@uWR&c&uGrY*}D z*5uxARGRVfri|Lh>8b(G#1}E&(U!jGG>O^QVwa$zX4_4}t3Bz@gul<}V%d>AaqGXE zB_|p`^XQeSb-L_KpI^gOdvgDjc?UNLaxKdB;4*G}vUl~|XH3NlMO$7*ZJ0Gdn@6T) z;>G7ZGOPKIOq-P+IQN03zJG?sv%bG?-`|+q{OY{6z{%5v>(5EGyjWRjf3RKYm(Z)A zDSMSd(%EvYKfF25o%-Tl?}yN9Qd80^ikDq5n&b9m$C@22zb>6|+Ma5*^1-3mKb8v} z;nmWL><1;irc0C`1bV+pZ0jJC}?!M%dT>3VY}g$rS6tqUuCB+{`YGY z`*;7#40mc@)HN%fkCGHh)wuVey<122T*0}G%M3qTB_w}hv3Fhg$tu+QLC@5sDQSWR z(sKjVw2HrmYzT6{clwjro%0K|Lo%x0Z56j-^xJm9RP;B)q*E^p%aYl)xozm;lj@OF z?>_WiD?5oHvfps+szMV>d)9OpqjOO_QW;CS?7$e^W+{}FAz2{{*ZS_ox!QH z>*wqH9=h}|X@4-YKjCzmO2)_b^LP1nE#pkII{P5J(zypnqCLzv{MHQSf3 zx!G4>t(|VR_I69lzO`(=yuj^P5@!dz~vE?(m!}VA;5t@sE+nxveV%`7<=3VA^@g&gR|3OU@B6fM>dW8T@6Oxz z*)J{%E>lC}#aZ<>sOtEXNbHE9bQd z{9bgzWV)i_|F_vMXL&jOto`L@KWU;-(&_m(EBJCH&Tl>X;_vS1tJ99gXeY+!m*xD8 z6ZcstH+SEkn|}G*?2qT?)jT=2&mll*;m=!cj&F^6bh<8WSrehXKqOmZl|3T^MF4?TJt`Vt4JcrCK zm2P3vdG&mk=?kk955w0SoApLoq%PwB%n5T}aSO?u-`BsUp;i83o6WjAAH7b9T@0D_ zY_@H}{q@|x6*e!B&E4BHU$U<6x5D|HNma#?%SDq#moMETmYgRfCLYdnUgyHjJ3YDw zXP=5Oi&&xgoHcsZx0A1ZCPvFj{|{3+eotYoSW3?K6?=N*H>dBKG+XD_Wd`ki(+g5h zO0G|P9i~-SvHyp)h{xou$xA0C%2&qU&f6l-q;)M(&alN+c*U9b=}vP?+a9OrOi_q5 zafnkpyzb0`v_sO)d#c}TWS?T`mY%dW#BUCd1p})A*S%i_St9BV(M^YaoL2wwP1vx$ z`KjIk<0msev+?LXn)&l#yZ!;5hRZR09AyW&^Zn*cS=0GGxhP?F^|Ss%#`Pbz^Gn4? zpOw3od`jm3!NQVDMRJ8VQl)sEXIrGC91w9TENHs-)8=&Sfxkx%X0$Bbp71F`xQAV8 zhOF!ijgC!vZP&IxmN<0oYVI0sqXQ2OtrxzKf4ugG$EUt}{>Y=;-#b?cscbF$5NN;W zQ>b?M@^|abnk^0Fj(o+N#ZarffGn zbf}X1_Qn56N*}DN|1+<#YH+*Hbmd=s+0o~h_x*mK%ks@?%Fnmk|7paQ-!;w5Id1WU zZ{ZW(V{!JoBFxN_{cKjZ%)0PVXx`7~dKTKXPac21e52Duta)>++^$bTYdh|F3u)ME zvFLs(l*}}8Fh9EYV@j>wvNN7X{Hhuco|*9NT+`J6k*9n2T%38b(!$#M+qYR8SKFrS zRR1Y%*8Ie0PwaQM7KPK63vDmE`jvb;pPjC#z>wNkwr<<=O$#;{qmwzP}N_yzI_$shn__{{mN-xKi_*Tisw~K5yJ5JY4 zWx7*-$tY#>dlxhHJHXvezJ33D*%~-W*g61CIm+G9g ziIWUUe=Rb2P(H0^TK1t&%&h+Pt5vsc+`~Oj_}z9l84mwwF*6YjTYX-=i{3j9J$$n$ zHBM_@a$@0f)tUtc8{HNKIWFFqU(micK107myr|Qw-B$QUfg6)poU(|P^Sfq`mPLk_ zSd^#c+E@SHb#ZRMU!jUQN2cwQeR1;qwZkDHIXatoxoY?SOKs__@-Oe zo^^@e|F~xE!@POFFZV^Z%kiWiHlAPq<50;jYrl5EgBNFgnqRKqB@ndgVdPKeze#(g z3sSYut$y!fR?W9L{rsHBUlzvcX1i5++xC1?weH&-RN7#g_-mFc=bwD;P;2{i;oChX zQ=e^2R^pXyyB7W8VbOv~mFs5QG80mcsQq`SY~FfnN!AH2zgVOG^vapqR`TU0onx}z z{B>bo-B;=SC2MCyp8I|wdD+E{E3=tXgidij%y`3?YA1E`t8N$B?(ymzPV@vxyf1jC=xVA3y%ig|u z-|zqKf4_8n%~S8pM>jY<zrS5@WL765{=K^cBN^*cK7SMv@}eWV0?ed zQ1jQWOQL(ul{#@8T=UQ+>JsNV%Q@2@-%!@}@47W%qndP&q;b9E%(Uk&d<#yPm$2Or zEQxdr_3gRj=I5X%Hm9-spkQCrKAk51s)eV;KlZK@Tsif9(Ho8C3wf8e8fLgEDJuv+ zWWAj#woJ0X=-@P#D9ODAFowlv!oii(%Qoj{LImGnZTC&59Q>Zp88Sm;~=$y#XrQS<5SnhDXpxwl^VgbyVx1e-n_pi zRQ}VpJzox4_9TZq_jvu#@9C*^tvPCkHpkC99&~ek{Qiq=vwEBtFU`$3rKD1Ee^a6qXk44Ok7m9uJxEJ+t>S5D=MEg zFlMiMe`LxQ`^(1ZGv<~CaTE*ZnV9LsN`lzh&2jR(8zT2`M`Jg|%7dMrolW|P3RAEUA1K^cOXMqLb8xv&ssZ)_{BG*8Qj}07sS~KStKozy?>00 zwe9cBHD0Xu*ja5_G9DM4u={p1;nSTbn!%SZy30?s`*pE@+1_ur!a4gY(yf1e-OiZ4 zr~Ya7dgqz-;>r{EPf_cc-ErPM;+u89U&Xg`TZ_2nYkvNGf9koPKLl468=ZgXDyw%X z_FJdip~s~gljmQp(3@thzm7vQ<922Irll61OJ5yJ?LFzNeyGAdV&@Szo8y5CuD0rM zOHScDx_{l53EF$iuTD8V>B6&}&pxDVYAEt5h*kWloZx!oTKNLeofFTUUU=r=Oz-^` zCV$_t^{@DLLiLa98$rHLM_U8(6XNPOd7qJS?6KYH!2fPq9_PWBH}_^0=45Y+v{g}m zY-#k!CerEt!l;LJ3`hPPGQRtA^8CG~y3I!SO=UU_H>kAdI-k|%u$sQ?t*!0ew?7_V zGQA$tICKBzoOMR$7geb3{IYZD%Wj27>4E9@c)DxZtqYEZaY{39nKomuWqa}3l&7Ix z8fDwrd{55)u&SjX;nY0oC#n^x{HEJvTV6ciIjqor(D+ibhIXTTi>&m=?~=@u1Z!lM z-Mf=fHO1JFbW&{yN*rJ=M}~Qu?~m^c$hCr}Zhs{KzTg zT{8W|ieTiP1>Wj~*GxgrCn?aG&5nP%&1b{+S+9Qf%-W~Bdu zIWIep&vz*Mt(|E!Yl6W}Etaek;%iTSeDo#xWDtk#W=ZbzLFS4vHQ#>U%RcpIO0Zzs z@vl6rx2KplhZ^oXCAqjlcaES|;J+du?R%q22A2ghrv-&EAGj zvi&!|nCz2C3ct_rg_Xf}W+LMzsY4TaUmvS<^E>>wbNM`vYQNjYb4xyHzMSN3*M5)5 zIK)cAFV$k+TqOr6lVGorN$wwqt{2W}FZvdlD@>8Yytp4&E`HwL>b zj^r0OJXP?0;Uu=)`F|JZ_@py!|7-Q@OaJGXl;hsvR{HPPSsYbltoj(;Y^-+A$X(-f zY;5pv=|ytx3oHL@-JlZncb?DwJP(f8cT=nj=C1die)`no?eD+jMQ^?Ab77y*gFAn zB#o!`S4wZbsqe`yU!q~9yf;H}ZF+&hGEOHS@jgH=*Q1i=XeDy3mZL z+o43mC|HTty7=I!=$d$;=A?ICg-@QheSaX45n%M~%>tc3ua4CfaTSwQPwzX_D?Fn^ zjYF+|2B&q#K7&~quFRXYnRuIoCD|^fFwW8yTK@k`{?tz=w}`&@_O~jVHb*`Z-1b?6 z^YF2JtvzPsb3SR3l&GBTcY{A`X5FyiR^9h>=||?6Eps1!-s5J@nbm*! zWb@2(Ax>v5O*?+#DPQ}f7tNcVS!xz#s@X7Y81+QXw7ph#P5ym#Z^_+@0hzj7tjBlBW0a7XX>Ir&ivcE&i*>Hy)VZ! z{h_CXo&Eot=P%FdeSLY?*4LXZ>NSb2_c$k3x%=*FzBM5{ZjAk*H)0)|mNXX?yY}C7EE7bN*bzvhMM#~ESMU`lhCl# zJCx_Q$l-8<@S6F1FKtwpnQm8qcWP#R%PhHl{~vyNkzDV0|KGR&zOrxUzWA_3?z!)b z)N_df3QrPqvQHNKKmK^^`!TVm3XuugVdWP^8X0nf+r(Nt%yu|gdV4?FoVc9RXwBsM zuvNc~N-k|&clu_YtSiSOt{ta2w9NN)Y8*aOc6ebL%f(qNA>T}TXRt0a*pO4on_ax; zcx%Wd)4LYDT-RJ*L`L7-Be(BByow&zI}M*nnL)2Nt3D}b6FgjPcz#bsYt{OF^5-_q z^EupL?{UEBVy*0-uJpCnKAxSm=|lN6qppahGAxS??lt-CsMETW@mss%Snos$ouhJx z?B|DfI~eWPSR_`WEOqzf&;2)Ud$iRS{=K&Ep2?zXx2oTiChourDD(Q z`}Z~a(*Iwtzt1dsCI7;G{kO8uR_}ivwSAdh{>MhQ`sYy-relV)^$R_YGfY};!F1Vy z%k^@JSG0pp$r7ioq`H%_g31!jKEa^r{&sq;>%iXm* zb?C91I?GZ`_K6ENefKofnH2hBp4To(&I~cj4}Q&EQxaHMCrP^}*sJ9iu6@hT#*ujU z_T}!vmHLYywrs+;qrOyh2wx4J2_ zDlS%Dc;c+9|M>F{b8p+-nl&#kJYITxc0<^lHm^^!8sE6pTEt(qHdaryE8@4lCh2wO z<0AWRpF+g z`SzFH?Q(wcdw;IZJioF!>bN;qrX17OO^U45Nr!K9X$M`* znl0RHxyHlU2mEiCySlHGbenkJacgAnt_PQmxldYOY@PkqL9b`QhE$C;R=4Ar8beOr zx7id>vg~dALZ?{aJ1=u?dl=tzntE{3t$LJHrn6@^u+KPSIgX_S_esBl;D1Jn7Nl1VL>%6sozt8w?;qmi1Wj|UB z=Pu*;$)#niwlm38~ppi|MK7Ocjl@0+*y0xvn_aVYvPHk zO&Oe1A1c@_zj$Dw;W621GS_;(1|3xMwovBfTTnCA{>zcIj6JgcEAl2Dvz=NJ|3A#y z`JK!Aaw+}jk3E~u)rIf+bt{|qd6`S&*Lw{YPiaqI?;{-_-yPHZG4t&%(`$1l-7_h- zfZig_JMO zo_lH@Td!&NL8g^wq6Kp$Z(W?M_iuOkvi`Z76?*4bOmO2}ROoAc?UK}|HHpUw>?Vlj-hW zUheqmY!7NSf9w-@^zWI)`3V;|nWLp5EwpBz$yR8zB3}lzzupY-vmKW7%D9FLZ!a zym4O2l?;Q{iApt=X&?J-iuYfabYN@Mj%sGzAFzB&z>BJV`>$V<`eE4DpUUF-`&Uz- z%m>~d8XlX!hjZDG)r@dli`9jmYJYw=D0#v>ix_Qc$52jg8cWu0@M6Yg!w75IAU z1INl3%XeQcR2ENs(&kxdJ0rh0J*Mbo`sJDF`-0cnNB-tx++P?R{_E-9?@47p=4Sr< z6n?pJbJ|SvTdlJ`o{fzSQ%dEMynbmyqNU8<=zlqmu~vI+(*iF$?_rwE!5?j)?>oof z;=0Fr7WT6ZlI^+!UUzWvq|a2{Y1Ht_uu#Z{@P)Crd?AMoFHeld(lQ|`T6Dde$My#|HJ?OhJYPm`;G7Zw%_j) zE4?e|{x4mQ*z)D~?SHxZ6yNTuwwNvF$9n2~M|9O0*}2J=*3|_p{Jf~JaGJ2_|Iix0 zUrG#XPx4Iue4|KQJ|c7R<#ydR$+rggzTGX)fAD)l$*s)gk(pBJD(|eDPv-aZ90+u1 zJ#1ETvgZ8F?n~YJI^KUjJZfil_o>J^ev#4pqQt`oGwzDHte!E)vc>rG+Ggp?uJX0z zzrOrDz9jH6+oc!(_#)gpl8Wl47;pW!>gB8l%tCv=Oi*d5Tcop5uU>bT^LLNXaY{=sK_#UkVAHC>J$&T|5McJ6wfYF)fCak^MzgiF@eJzg4|l8QO9 zrg|35a^B@~YY!*9=sr7d9rN~z9#)B4&QCYKWMuNmU|8NEyFo@=`ApqE*ZZzaGKby- z*wSO$UntGa#`ES*ns0KS^~W70Z+p#`y}Ycpw7u^4?l0~4|JvRC^K^Yw(glMm znUaGFGkythWgk5h#Ut3LscWHp!$CtN;JLYkuVRh%%9u6Q#h*)Rx5*e=Tg}YgU#9nL z)1HnJ&fgofT2rI~8h@NIZp}C(a*k=SK*_>|3jZQ959~?wJZLrZ*c>Sr;hFVwZq6w` z;>~DTx8j=I!V7PuZ#!S;;%0kyfBwqcu(r?%aTgX#FWY*{T;`_O~D|5Lp;ZuYijPCsALpYcE{_?g_HQ2s9hVSZEm_!~C|Nk>=fSM4v^YP@5; zaY4}L*oT?VV;9EOwEn(Xv4qvr`_JTiORm~~X1#HKo<{mC%j&dWpU!Sy(#$_^_O;vy zX4P$qx{O(~~>Jx>Z}>92GZ=6xgYn@!c!cJyodL zM#3%aM9qTw10rVX<%TAHu4T%TR`wnEahY?nTGThw$)~C!FR}i(s9_+oYeK%jk$*EK zPuX>(37CHT{`c4Rmxdv8{ybdBexWe8J@vkM;Uj60+tL}bw}p5o{;_N8=Iqav=(S2d zR+o8k(dNrCUzF|(R~qUoz51{;IZ0&)Ai}(L`{`I~7 z_xCTyq*~T*&)JysJ@LisJl|ChCiZ8s_ar!6+%Rp0*xx5%2Nd;}$(pKQC`_`{`8+j<|2_O*-x9{UrIP!sgeNvE0?0H)khk7l{|B{Xf}1XP(`kjm>9` zmnWKWZQ9(+mNM<-)}Z3d=f}#fIZkEQxp#WiA=$|f_^0pAlks4)p8o#Z%z2ObPhXTx zpORqq{Buq0iLB}JQJp`o)D^3H&Nn~xvqQ;~kzKcaj<8>M<-_vXHkVD0&M1GIVQ^{t zhclKLM;jG-H8KUm0y)m;uxyIbJTz^(x5@4emyN&3eShZ6b!+ibi7))EJKk-s-&8Kw zzp0)5htv7r_y2|Mw{OcnQYX`s_fq8O!It?;&*yl}|99r?HO4%Fd6vuB-riazbtz2X z-2=UdWfF~6^0tf4TmIi;!a48I@XS$NI&-QqgX%`TOR# zZkTyDf9p}PJ0HHS{V~ny>gw66N`I{1XHog4F-crx*^#f8KSWD3ew-U0!sApQ@L`^P zY6io?l9X`%1Dlt)n--Nszk2!J)uYO57BBzr+xP!{H>sVU`D~(|bH-Qc`#;zprf>6V`iwS9IE5_jp&yIro2hvKHSRq?4RdkI(v+KEIaF zomcMQ7IV#}!H+dZ5+l9BXmzYh}nn0qf4oQ!6A)_0~0;sU9+opZDeDhFxEy%)=%a zJbhw4RkY8|B<(_h#s3dKJ9f>P=x6uTB>2=?1DjigzVd8GOb#+EW^9r0vwFECIAMit z^W)}wR}5DPbIEz;6*O?TmGwP-U$&2b@l;E;x5~3F{TAOVnwt0dg6;;@uVvqtaz1un zwsCR|*F3|R6C#E2CsvyOT(M3k=6riVksYV&g1^#lci-W1(>k~P^ooFYOxYQlAH&r) zH=-IBBrp;@0Xx~)3DIvo9Pc7$qC|&b@OPy)T28osmpC{$a|rz>Mcy{tVMM6^Hx}h?g=>O`65I`uE%S zHq57LoT?uFJSq^PzdZi#@6#r13y;V0h!;&@nq+Blc0#ZIo(4B2HDULSR;=QJlYV%K zr<%U+d38ZFvifh9V9Juj;}J_^ey+YJa^l*xw_fd)2Q1pln;VWiR(&L-b$CT5|HP!s zCEo=2n)2^$*0?ZlO||RPn;SNM{}JWP$-3dqwu*`NN8@}vEY60+OG|#bD|z%y-?G%S z6}MdXsZCsAGmA~zcG?^98@jF9DJ4a$Z{(isR}S;;H?m1p^N)Nic1LQdH_zEsYBTRu z+04HFP*Sx+A>a6gorD$lk_Dn~l_SoFy}4y4ZIF1yLe)g#wBjG$KCShSDz!w_qPvS8 z&b45U-=E5y7SsGK{k-4y|1Ziku6=x&>BCtg*Y)c2^!RCJi+Q>xGec(c zrTlL7`n{L+-|bc3yYJD|FU#$1lj5{&KYx6z&M?K}$)T+_ztcEH@B8*oOh2g8E#EAd|53Pd_i|~c`aPP}TBd3G-&L zy9#(Vq$>B6&F<|h+Y<0B$N4t@GTDP`vJY`_O*^&cuF%=G0-Ft%Zw+hvOH|u5&sx7R zXcqK7ux{tGSzl)VmU9q2{i@`a=JMs99XCpo_>bJ3Jmd0)tf#BCB>rU!u3E#LepB4| z=uO@HU-PO3UVWRF=QDfvqf@6Z?{VhypdF;H= z_E}O-S=gp_mu;Tj_kK<3n(0Sprk~riOG2k*wz>1n&vWW7wRmPmNV{EE(lUO3!TEBh z`rJ8vHjg|c;yS{eW^NWKH16}B(RrW8f9~NWepRng6^NiGy|y4|6F^nGi!_nxz^IT1&9X;oNQGxD7eNIRF=EBpVCtm0v9cAXxU&dpw` z?KcV?L%q%&+4apOy6?2--b3|HjXN$%ol6i?)-(2bAH1(9D@ylGY-ZYNg?Z8mla7>6 zoOJMIm%@}hj;xEbb9JY*PEOF%HFWW?y1lPE^?~)(^j=*DZPoSS5-de4r|JfVO%z$q zAX3J2_>K3xyL0q*{9w;~`RVM6)2U@zzcxSi;d&)`N+xpe?d{9@J|+iW_SmA*GSwzg z=a>KYZ;4MHU)#cV?X$|4rOUo7p7X3yE8C>~c1~96v{$u_3$l3E3F_Y7sdOg5BW)p< zz_Ke#R{zZJtNro(+=+!JVi?^H`g~k)lws>rZKWb_TZR3z!+2^}?tQX6Y{vyrF5RP1 z%+vi$_?p|q_B3`!1e;CmRusFpv7PCTTEGbd_01ALxxPnMO5b?;SL~v|9mR^9|HYb4 zn1t~}6;7&f`tY3Fq{f9aV$H#{Orh+upLV_H(~Oq172T96n77}kdq!eR^-8tM&MP;U zdN0jZTydyXqthTN%B<$@iPQ7CB;C*D$E=k;-q`I^CF%a}*8=ZP+?#g@+P;vuo%l54 z&6%s6dhzSmR`M=&Prj_P#o*uh|G&YDsebow1X%Ri2I`hvlAw4OJmWK*97JNC0wZ`Ww z^mjhFWWq0}w6{|0isxkY$g*vcc5jO3wJzqiQg5(GQa%&5Hfrv@h@D2UwNFJeigz9D zJA3Pa;x+?o*|lyrBU&Fmjtwy}neuUk;+n(fP70=_Z~N}1Qrg?BSjZe@rtgq_^P)k~ zzowL}>yzXTJM;hNJ5`e_Wu3<~hy88v6;3m;IJEL)*8-t6 zMj55N=hrQ*5ln4qdg@|r+?B9m!?jxDR}XGZD!(sjd}+~lU8Cf_xsTG$&FU1}&|wv} zXPaDS?c)pe^96aoFx!;S{tki6 z){x)lI4_8LaJv7VXSBFAP_?b&`?HplH{vHGC{OQv_^00MNz<{Ik7tq}w!SExJTZoE z^XJVC@iq5fTorSC;Jr4(Cc|pWew)bjg0i=tmMNO;>@oOWT*Q@gP0Dyn-f_8#Wve=E zIxl=%pC-G?nO}Kr;DZ#ej~#6iRzH?3FudHmxA{XEqk4jfV=yPfTj>oA3*;LWozEEE zzjQnIY?hls%{|)dQV20$6}!d-N5D?r=Fi?wwIK)Mei@mjcWd{ zxATKjx6KyEl^^5WSk}Zd++O?WuPw)B{>KNTjL*#2&{iCyQZzAayW*__)3#oZEzh+Q zF?}C$X?6G-|Le&?kN)oe%bT?(JbL@?w{v>fswBEg%M@?+&-@s&%Xh|_9m1auJe&D= zXRO4oLuc~J0+V}xtk#Zi{q)bxs^;Otml-Yh69|XmYR2WO-E z;ZD!=w|D<$S}zN{RDOd|>d8ds*Lo@6=a-fIy7S!MXEUGd;?1?;I|R3$`K0xF;-gIW zpcNN)cP=$3dLqCw-{s47(|~JpB3ZBPuMqM3DRIs`vP@i#H+$2Ue)0QZ+gfD&pC6y) zcXZ*TyO-YT1^2G#UUVuo+te@n_?3jErDCtmrtG}3T3_i;O7(2}zW*VwOt>>6Pbp>` za^`BBBQ8@G9^o9>S#d$2}*K zYhNvrS76MWJaw6=;?^L}0*|)CKZE@1!?O|}@fq2!eaK|3a&adU(~SOGO+Hr>1KydL zP2k-onCHH0`C%VvEz<`Z`8Cbg&2X!}mK=2d9cviVZO%pKSUHq9510$Ns~p(5_C#vP z!mFna89bXh{c(2DGLF+adnz^kREuWr*id`3S^J`3%ZuN9ekRWPi!>D5TP-eja6I(A zeq^(Dl=zj_$2q3A<(RH*ba`~wOl{%u>Mb#W#cjKb7yQkgt>ttnWP$#q>SOZGU+g4G z4=z2GJz4$Sn^Jv2@i`IlXV&C4ODdawdUtkn$?JRCH}`n@9NfO%N zUr(0Xzg+l}Z%*r?V=`TPx$nJP^EXX7FsJO-$yj?|{kR-n7gL(o30|A@mupkf4!QX@5kL|r6k)v?c#Zx&n3T% z_Wawr`l7?J&&=DtE|B5j+Q@u#ewc07hnt7u)Th0%E#qn^}; z$Av8$g(h}4U%Z%aw}?-?=9!aqS-?J-NtJ??iQg@ta{TB2wrsP1>NI)Rx@r|am6A6z+qN5+{rPy6?X`sS9!sabpxKu$CYroB$f(@j z%NzA^enQV1)*Gg~G&fbhtvna-v-0MokGxzgO!K&}$Yhn?E1tPV_1LaeXRYS2tnE3l z$M^q@{f|Rc|EYDpbuv*tq9=MVc&2?nUx9esuftysee(5aNG@X6$^4R*pUAHM=iX-C z9?oaUk36(>9y3PFzn0gT>VA!rtJCB|QcjSdnsTGd$GvO5wQXbdC zmLAbPtp$Qhv^VwmXfhmBW!X8UZR)a@ZsvEoMAJ8v9eAB`z4O4l)%Q>PCkpI6&C60> zrr{O5=HpDov%Jm|=hbO(7k!@)c`T!1L7lf|d1 zXnSyR?YSPlmNUYQQH=T)_XG2S7G4zC93JZPNa3VG$>QZj=Z?-7xpu-Y?YXH|^tybO zQwz8-}n7qBEIm<^Z)X0@VTCXMYv772m9Ql5h9J zoMWy0JU^?qAtoCc`6Itut1W4iKbR~g$2RBonwecKNf&&>GM1fjVU=ESrZBJe<8r+X z8#ty4+RJN~WdUc!6)l%E8({N=a(BEZ8jb4Hcf z*QKx5?X|nhp1LpT>g#QCXRD4cP;HrbeerDR?5i^+EQCJGnJG`X$JpF%`f9dWo}01U zloy46176HF%lD}NKUIJE;yw$dy1n=!9h z<$&x0-HRKm>l(vztxq!xNgsZhV|FyVvc-srjrF_#48K_xhPwYxe=0e#$NAEsR`(_T zu|G0jdrd!n-^s*4F;82GId=ATh1YdmvkvWGueB;-U2$gnqZ1RqzM9h8lT(y?BviXk zXZu^HOG;CI8ayb@IUUhm7nIGf__Maco@YmJzejjnnarU#Gd3+x{k88-Ht*xBg<7BZ zmM=H-iaae7t0t$pCy)Q6+!oKSGs;K1`6Rq}#P*6eEnjBJyt7j_eA86**FwkV37SZ{ zuhQG3x-0hCv`ITU{$%nWycqc|RdVgt%&EJ&vOgOatFyheMoIXXgXIxaG6%1pQj@y7-a%0pa(d6Yh#O zDDOFEu5rY#`cs2|BRQed4b1%xO+L*dBfYMtXVx*76MZ7LjSgL~s9yUx(>KK8 z-(0iB$=uajw7ZLz$@&P-{I=+~M}u+2uSZV`r)D@YcF4Pk?HaU4!^Gb{}*_^Z3u3d*K1=xr1BTWh)YXoh#ord0zFyn_sHuFmC=fhwB{MoDXv& zq=i>ne4bPKd<{orui1(BRo8dFee=UMT{MKrdZ1M1fLFI=CzaipjTva;&#Bhqo3pE=@*wguW(V`VfK0+n{pjf z)tUH$gRC5z7tg+ZB{TEzD?N=n(wCc0ut)4Kbe`39{+0y`+p&7%MaAcn95|PsxVb^t zWt#cdJR?^dHn)ROE?iLwU-%2x==AYu81MUcHd-JpenOu`7UPu1mrDMAy&jbvBjqh? z^Qbw|adEnclBl#{!!pUW38f*=r^LVA9pEN*;aKe*Z}T2wt?V!zgUz)wIGo{5)MMPe?eDki-Z{XOzC<6*VXu{n#b$!&eM zd{O%EVuN?TCQiKH_JU>Z;)!SWwbwkEmFe(ShOs3$=j*!zlD|~0%*sD5qiu5FpvRSm z&39k^&9^s-{l9barJkJ{q9$=%b*q2)Ezz<}vU#}s%(P0Ee?~5UvQ|#r;h*zR>sqQ) zp2ySoC%mp_`We}LnQ=`;Qe&s^rrl}Y->X~a8hlHB+tyn(e_O~}b7lYchLQ?x>%TNu z=l;3!&-pF+U3)%ps#%8bT1OYp1Dh=T47N=@s{Q(D>W}b~ z(KTI%EpKOk%LsS4w)UL7(CLp$Q%{>|+}IO!@OY%Ia6#^xjH7;w7aAtZK27Up3jEP2 zxkXVb`B(JKCxU%xOk&w}mAfB`To35D6=`v3joDV8kFJYX=i2OlV(r{;%bah2Q_}8Z zk2KDCFZ@uvo;f|>o%){Y!|n&Hq?=l6ny3GG!*rYNoWYNmk_!UY)L+q%C8w2)=k`%Evihc)5?q z^11)YH0CH@3ih{|78mnJDQiW2dYiAc&GCRIwmZ_lHL@>d=CjkN{eJEJQc;bwRX-lK zPhcodzr~Ph$Cv)#%b84($?+K$AO1|$4Z6NAe*QVT>_Dp;##4*VRq>w-|1J13sbYp^ zt7_e$2z}nSa@Xvmrn*VP$&lbLx5R>n6c^a>U@&6mg&lx^dscJXmQ*PY< z`OQA|n@{d23x9}t5*akFcnxPn)$#DyQqd{*5??LnOMVtFu(G1=<7bO}JB`0D?CX0n znAQ3o-nHT0FRz+yzw0mi%kcgGN~MlOezcHap7Z%$|L5|uOShSJ6wAJuVUT%iO3496 z_GPt(M&A;ia2Yrq+_X*3r2pknxyo~Syb&At(w1H}PCp&}C_`q}&JVlSHi-TYt&TKX zBqn%+#imSV%gZV&Ba44O9>k&6n=4`(J&TMZ(%T@KnXOMcQ`i}~niFq-2s|Ko=yim!??yp`1#ISfC*J$smptKYebKFKvtuiNd4w!}_(1hJ zXXm63^J?2&(lxHG$u?S@cHBeD#mJ~Y#wKJ>xwzwQ$(FL^(#Q17c()z=ta$lzx!&il zCwfd!Z8% z<~7`lV#(ByV!R@tG;^x$tYe$Q*M^08Rc?=aB~hkwOSDmTdLA#=5}{2C)n3)z^=XJ^ zI{)X7_x|~DHL2W(;!en-mnuD;s7(awl3osqwNseksI zg*sKQgY3k3>Mr|Fxyic5g~8Nk%XfiWrH3b-$~o=U_|806aF?2J_S(s!YYX4goMb9d$m;#jUBCHW&)MtC61M2& z`m|3_m-^U{Gs`mm$WQzE^D`IR3SXAF_iRG4H_z+)$|Bz;E_RLEl^{6t>(=&55mC=~ zJlneF1yuru29GOwcHE8%@h8ZrN480xlR7g zyfB^UX>tyer_Eou_jQ#%obaK@W8|L__9(|^rzR>V=P0P*mHqxhRwD0B1 zKDu+G@Za-)Z_nKB-&r!Jv4d#}N1^Wuqa$}&{41IFJn(&Ow&474OUs9T&N(wg`wW)_ zG=#iR-pDQ`79*p~X!ch7vaV8rh0u;~x3VuKTAa^sWUo5dD!%l%T(!vApl!>__x6}uAW zKhx&yq&LSF%u3*y6_EQxrlMHt0-NZmnO(E87cW2mH9AxBVcQC}hv#0f)vs_!)p=>r z^!$^vh0&9Xij!}AyH~!xL~c)Z*_tO?cBHukM@SuCJZYmrMw+a}Wv}})_8eRDP4EQ! zuj%!Fo`3mmZ#U`PzR&BvH14mfpVjZO*Kf^6$;e;v2R|O@nyNh|+#qX>s>`JGjNhC5 z>a}^=S{SvjrLZlZyt^#nubM|s@zkgYL`RVleQ_{}4w(XX^_FnD3=VwLF z!`uc36&k~==Y4G4JlR|SCC|ytHO)`LUo6yl{$<%NnW#m_QrRm_J}*Fv%7M8erGXEIqo z>sa@~g)}B-QzKO#JTC+b&#Km%wToxc>ERpPNP#q)u<; zs5zgup5u^w)I;NUpIIz!Pg!BrV>U5TLnBsy)`}S`H<|gKyuCeU`m-ALzbW$yBw7O> z{+TYh@q)LguaINprT&DKiNe=5UE$%Jo7-*1lY334`T6aKl9vx}Qj`sNGRJ0V>#E~l z4KnW?icrf*Qs=WYU-u?pNu%N8eK(pWq&#yvYUd>RJ>*_!yF6={)?1#B44V@b>d*Nl zu1SA3)57Mwp#`_y-=5&LtD~x)XK<^2cUH`e*sW>%{mACbr)}3S?+ARX`?1GB;>f?> z+mefh?Z1?LL}Jnw zzL@{#yZ?ik`6kH?T;=TZY|HLMRI`g(ozH*CIdAI=9qs>B&u_kOGrFI~>s1l5a0~Op zZVQ>D8#k*LwjXq3R_t;6=AC{dk=gdM>FZ1C_CGyeFF96z(PObuim_Ny_c5Nz8F8xf zbyNLZPdzf6D!b|7$*bXqjooL=bvv-I{fzTYnIeV{J^TM&aKAKt|1Z((yQi~nx;!_Z zAyt0+`+_rp@%=B~KU2(Seq*7rRCMkIw*wP430eHPyP20ayuinuc@kH}{Jq}-*H=w@ z_i*o-gyltjn@ptajLZty&Z${d=?+2jrD^d$Jsq)I$2{o2A>KSSFg`QhyN-^;cx-~0L8?#t2rc4BSEQ?l2%y4ITu zNmmQ@D$Xn`>)HJ8>m05dEY4LXeQMhmhW}qD<|0~f@Y`C0Z4Y>Oncpfr(cJTGt^a$w zrz=WcwyH1N>E65bOzq^jbHNL@oRC?V*0Xd@_!FB7k)vOOIUc;ZvNI+#pz)c(PiGaq zm}#O`#bW0^X{RJPUq3jZew~Z9U|P2hXK`dvD(`Gbv-O8XH;TAf+?o`*?=%zh%jn0Y znkns_3TK1jMA{pKn{I@5?)9+WwQkKN`+L43ZHKz6 zootU*wRpG}r%I+2MnyVR#V&oYr8b&*zckZlol3S-f0Ftf-nOOp9u(S85?yXIeePP0 z#G7V~FCWZ|uJ+R^?%QzWZ^*Nh9}lkya{4Em?QTup>dTs@y2kr`-uGRx4@FE;IYReO zIQ1nxFi)vVX4TbYvfCtsek$L)e}d)K?#K4Roz0gGCLVVGxAvO+dmfozi*ihFCF_`I z%Q_iwoY0BdcY8g5)dyaq3A1#I+7tS`o?M796e-zl>>+AC*<3X-VX-(bL(cqD0gJV3 z9960xkmzWd7R^+#<=!WV4~IJs$I#Cx9|Ldm-tJ%7CG z3%0rZNm|D3XU*M@v-W;6zu5TrUZvUejVzNN$L0#G3Q0J;X4!7lUf0Z<`xj1@-aWPV zs6=quGvnDmKf23%o5$5AS7jbO{b7TZ&YQgKO^a2|zP@+v+I)?NQhBydZob-~+3ONk zdAZ=>IT0hTn`uguYsC&7EC2JRZwt@TOn%!B0l!|#+Hc)pD7`Mgu#n>DJ$#%?PZhIAZ&1325z26>Xw3i%yUD1;8 zhvVt|>Z_lt!X9ndZYBL`LfD3XWh$#DX3d;>PUFZS<$j;|UzhIBc0c$0&7t2n9uqq7k!pOd;+}uhi0EF z>It~?Ami{(yN6kKw|Atw)ZgIEw`f21VFrt5<5~~1n)@@4FXKLE&*xbYyzoc$nrnLu zI!{j(Fp$%|_+6Drbd}L>uDaPjXB;aI4LL7+e$Ba~izbQc-Q#($XdQb^#J!d4N@_00 z^#^xqfc&6ZzlcVRh+k5}v>s8r|Z@*r(+G@nO zfu~t8Dfzdv$D@c{6~$KXA4LbwYBMgr;RZJa170(i+{Tqn_jls7JyMlh(!cDJ`0P>QyXpO zNd$kW{`H{np`oq^$I^q&i?<3dOlT|2ysz+8STUyUBx^dK{mmPD51y+_UvTow-u=7G zZU0{}ewkSDEaXi~rhEEwO@6gr!TlluOm&4f;<^AKdq~Sbl#;8MDpj&r1z9y0y*8{iF3RU8OfW zAt{2V=HYX(b>A5coI7p>e2gu8I(6BZpL1Hd`yEf;>=lcgVUp-I%P={fr|V|YV(**J z=VZrjuUk7;(qGc{px52DHI)LJPj8P-J&<#yOupj6oG+0)Yktao;*R)lCndQhx!e%6E?yP4A;mc?{@=VjP`|L^|)6XhJm_s8F<<+poSbw#H${c*B| z)imDr24}6jw%?UH2g;2;UFbe>kfZ0Us!zG&&uBX~k^g)WEwd*^+_4mjebP5;_PzRV ze@f0Y)n0nB(ZfdW;GM+}40WekuCJRUkhS;Ix!6fk@0Mmo>q=ub?q6~p_YuejoT78bWdn#|9;0P>}&yJfLKuEgDHD|zhkMs z-*fL(*Y<Dmt`tM zG07Zy!yNGJ&+bZr)a-jbN6rPTeaNcr`!IUm-HqE0U7NakVXEuxNr$zs|I)rW-&u8| ze(<$*4WABX-phBL(|3qx)grA;f)jcdD}4O0iMegd-NTDEyS6^pJ1S|S6dQhZ=4>Ic zgQr&ObR8*>tZ9V1i{es2iuQ~fOo2GXb{FrWjb4Aqd+q_P<%M8}lhij%bZF%B*B+gZC zX73!Wih23-ttY4JD`e~}6XrT^b=RW)*FECBOE!nE>D9E=<;uR4C@sQ#{kZX4zLu9WS@KTxrJoO2 z^eJs&#)o-ZV_z5OSu=Chrv3U_yWdA&VfF9E-|zkHf4=m8$eU~=X|>XD&RG@xeaAmM zs#KE>+_jBk-p`thKO*IYHgrapGpl zvpeViXkom|)^$T7yk+6SKQF#s=3bVbfA>#8ujafDXFf7c72<6;z4qxV8|&`++Z)vv zx7DtFD!OI+*4ukN$(d{mjFk6!8!@RheUqtHv5s5P8ly`E4mmll-EY3u|6(_}KC}0k z1^ZHN{aqS&yFQmb>Ux{-{a(6!>xr4Q=PlnG9LNYLDm2l0A$j@76aL!=jV4}{;eIps z?*&fo*<14-2XBaMvNH?8FSyk9=gle0_fn$qI0CwsX+-4rr8@DgXrXQ9}#nW9d|o+Q0U`Wv)Q>pXv@&c-KB zS5iY%Z>gyNseipy^smaziPgu&x0P}}EZ@yE{m05LP0?zf{9_j0c)#b^)XFlJM-$(j zy>V$%&2_ay!WZ68GGb%;K8dHot?Zw$T$d!%7qu9HR-u#J%MWSoI&yuj=+kryA>*bR z+i!WDZ)KicSh`O33y)IMw7-*{8$9g1`KJD*(~S1dvnNhz$|-x+Vir9kHvO4OUs}Z* zl@hxSMcdhH&j?IbKYX)tn(~FJyyM zTyyV7*BYMp{af9ZJXg-uWuy7_o@}k{>su5qZTGNYX@6mN;>NqOdl%myy>XJyxlirK zvmHUt^*@G5Ty4{6pIPADddxG`M*Ur@`K`W(n%nna>|2ZohbXarv&Co8191D}>D-pRd+DAd#2Vd@0e*YRZ!=l?#EA zZ#TdH_j2Fw`rO2Czu(s@{QYs<-t2rSQ`@qDK*KYB2jy*!^ku(stuveQqb6mu@tJ*d z6U(+Ke)Zblv0~=gqs8UcR)I$ud70W)Dre6QNVNT$rgC><=9!<*=cYeQpI5kDarNBv zs}JXX=9x3k_V5Lluy1E185wL!zujRu|A*^!q@Vx4C&GUI*#TbLryl345ubPae4PmU^E}VZ>E}I*AI^*~xp?&D?(O%v4s&#I zpTC)Z?BB6|6O$cgW~V!EzPcms{O(IxXZf{W<0*N%aUbKJ*>AWu_hdTHRN-|~0{5P9 ze<0^?`E^Rk$<*mu+uLV;Y}lyd7iiyWp=Q6y=s=Ocg3|bkf306s+Pv=m{5*g8?}D5I zXX-z%yU920cbb~*y55=JOlmyd-kuqfbzEW{^8_8wS&RNW*&s8+DwCbNc$7JeE_U zER1HhJNb*u6u)rdlVOF{lew`E{^(|=|JRP=nfczk;OTR#Z9$Gf^HkNfx~Jr<@i?+W zc*1?%n}YV+&YGXB{M2sRtI2eD+J@IpBVlU+(wKa@)~CG6RCN9DqH$BosY<8j<)Tby z!WESdGz!i4T=lbk^{Be)P z_I%*RYifQ)P1$GvUS7SWa0-w3>_hIt!gCh7xo!A*>iMoa#oI5L-0uFQ^2XXZGI@zZ zb?5)9r4MI{OD~_ezs1{pqR&M4EzT)ZW=^eGy+}AwrsJWjtzM|i@n1Ekx9Mie9NLrP z>T}RO_1BXx`Tu{dfBC?f->>?eu`E~LJ#()u1G`T{dzq-V&|+#&aA>xTJ{0o{QgTO8ebXPZXS&8DO=6E?)~KT zNvC7}q(3&}G|wsH-t=bedh3FtQR#vzC)#h@bHmAV=IKr~>*u}ku(!nJS5kCL zTKV}ohT40(GIN)xWgu&;BmzD}j$-Qwr^ zmqK40Kd#9CI;I#{AUvyVW9v30=M%y=F7`L-Bwt>se#STc-y?Rxw&OEvoRcLD19Y#uXx{0! z?sl}+`~J4-Q>1~v8FS2YiTLhYUkc0*sIstX?7Ntnkeswi`r4i|i9xq=+s!WhWtwh( z`i8m8!-~?aA1+AN^~OfOoG5TSYPI%ffpv@%0?r+k{>D42L9csNefi1wDec;=6YgxP zSaq~m`rX7S#YY5!_FQ9>anPxwaIIT1L@3k*V=gzdx zGzw>uc|OrNF|~dE%+G>nIrh&^_hWr{YR>bjX(Fsj+avd@Rha&}WTUFibMn!FO*`Cw zd0Y$kv*S_XZ0Ib>X)X<`<~uK;$F!nq`^CBM1ROur&*k$rns-g0H{%i0!L^-tzZlX?d zlb2g=nCX(kHigrkJ+XXb@%ix0gqG^$Z=0`5{r=56f0_WRV%vx0yQ>VlC-H1vG{u#9 z<4i9{Yq#2RF8=T>N;eA5%61UFCYhnl)mUskS|J8zoZ@15S4rPuH2;!DJlGvn7Otd;b?L_%+Q>tawD*F zvrg~cL-k)*|M#4I!5~f8>cGXtDVri(k}LMzyL~r%%Q2sts@puf+Yh?T=+F`i&c!$!Gk^(hbCT0WgrU$Rzii-v6T=0qtO6Ruxv+YV_u$d_sS4t!Da zeeVAs-%AdyRF|;*DDk}Zef9peQ;knay4j_?iz%JPvQg{zytmDQN$wT?3Le_OI_^o8^FM?ZyMzI8opS?#g+6SuuGSH++4W+?(;qAJQ|g+vyNsSoq4U)XWyBGm7zOSrX_sdn&IpCVBfK0?xK=HpAI~I z@os5WYV4OY&OdJKRu(zEm0L^5BG2(iQ_W1h^;=60o|X^KWc&P1YvCK|wYE1VO_Wht z+WvAM!sY|>^$2i9&zf}%zGO8QGah`oiT`?WcTSIe-PP5RSOo}+&6_c*~;+B;d4p8Cl}t~PW%>Eaarb)5nE^J8wU6D zHFh?i%Z+Bwb+(>y;_1@NN6LTrCogO;=ZjCQm^sleu0I81JOA{6dCWi|Bc=+AMYhlpys^bf<|588q zv%*SX@3rNAGqa9+zLh=kXuGnigx&)7q*>+9J@`*wzj06W{reXV*7xgDKV6<6)slR< zNy8`qdzj3@Jrm#kyQzPnYWrQA=dm4OpLTYg(uns+&CGe?{FLwJ$xVKbxZh{DPrTYb zZG-NCYU6&+3npor&+h(zSzhns|L13?3703U^WkGR3R(I!ezRW;<&*uS)-ONR&$6y; z*Ry5D0o?1wPA=r{N)M>{to7~2gT1qiCq9i{8^H7R+v6<#&&xkne#@EjugU-J#uFEJ zyxHMlCBkmr^Hxb$%B%13Sv}*J;#udop1TzJbALIoUVlg6_FJ-hu6bQv#XEEPFr%Ppy4*!9`4G-5K7zjY7G`&F3W4$^s>MCVkGccrnW;p-FmDlJ-5Hgp<6zf7+Us ze(<>~Yj)s5QC;QBXJ`KFqn{yiX-iwJ8Jomxl(>{`%AQ&yxRA|u_Z`==wV`JgPo4CY zeU~54A+A5-PLm5AQs14rD)y))PV>=+fVX=ePPMLkl)7-i5r&xk>6?FNZ7!T(dGY4) z3+t_l7aN(Uyy9z_>Da6ISAY3CC;O?q3EhF)^!CbcTbFVpqAPZ-gYM5$=RPacRK#(u zOqN~o;?yk@lS4rtwtOzKH=lk}aj8!ASE9EIf8#Vamf~GtZ4{vNa^DF4|@=TM3l~Q_Ps6{CMmH$8x0qpIrPoNs5E9WqZ@MzbH=(|pH`Jv9J=1aHmBgq z$;`L2u1;$==yB&=F#V#%?PZJZ@7XE+F!Rd9+mgTjAHP=3@FFra`mnn3WX+kLMla{8 zs3^AZEo@Qp5}2^8;H8&-6W5CGaktmk%A+9B5YTjWMe%kb+eZmQ=Z$0w^uGqFrRea;x?R7TF>ml15{bX^Adum6NO85NE%W_@Y znD!>LxH@~+^Mmb|c=!LU-6gyA_wM_z52Opop6>}iNOvnM@oj-pq0{ zmiZfI60zw7hw8f%$G589;Bs29LDO35L|7zqsg*5r*M&QuH--slXS6v4oc{PXmrut} zz-rQeR}G=FB1~sGmR!Gm!%;;k|v z_4MU8gSSuGaEbXq0%urOp;jt)n(x^v{wHGnE>cq6FMMX3naUQQG0c1xW_)>x=44id zw2cRQ*aaQe6wSJ^yhihNNWe4GAN%~R-aWa(x?odY{Ec*-8LqLv1g4%z(0pdOnMrcL z9K+=N%(k+w^cm;RMm=Af@#s)xP(o76XO0=|YZuFWFE(a66}C*+-^TFmzT<~VUOa5i zp8Q+DiU8Ibtcz5oB3m9FB;EnIA)yW zXLA1Zi-x&J4a6AR4_2<=v}gUhS8|EF!?S-Iitn_}-)Hc4%jb2OpSGOLeExIyfi3&O zT!VhG-H7C2%u6Z^o9o+Js33B&Ht2rF7d3m6mN~ZrJf1c1>s`C|{jtsd(wEyW@$3I@ zoYKsx@!N`T;zwyg{R208#j<{MElYo(%cAo}_xJ9}&om!g*nfWC^XT(8qwI>@-sW$= z`|VS3aP#xZkgL+_w|(}PwV$0Nb={(2aoh5Y+;fL(1;kR+PTh3m-EU!&+GhmKPxExT<=-GNE|y$>!p|;FJo`e< zrOnYl{8rknBPD+XcP}g6zlEJkN|D*A{Ng=vnPo@BW;RVXmHNo*w?5aZZc`gUr@`+os;&U%_@XlyFanMXHYt3Qtr`%_6KhwWm zwDFuKH*?u8qi5&;e&D_0-Lr9;m#yLds0j~@Q`FW68~+zE`F!2F;Y>%`{fwtEl{1wX z`YNB@k!JhzKVw(Ym3#L_DfW(QEHD&a-u|^t*OGF)roY^6T867yEtAecwH&QLsQ_R!wf@ z-+d(qx2#Qcs7>gdX0ra2cF(U|ov)G0^rNFp?jBaZLOvc%F|(;b~VG zgZ|>vOftMHxQ-oISrsDp##wIDq*EMDo4#$}U^kI%5Ib1N^5=4m=+skoJ+5y%UQSx_ z^rC@$`JwVNH6K0-t1Vq$|9aAv>-VZxUly%hCoB6}p!d$Z$`fJFcQ0lAd9Q+9I(-69 zo5Sm0;XBXhbnara`y77xc%QB0)*HJOTq1r6GQZ+@#-cUrNhVubZ<*Q01#VVCc8{iZ zJdta)?3FaO^KA-kcr0`#^VYM@PwOuDod3N$>*}qNKb*&z&wO_=`8`n}N~b;M;%f#5 z)*wSy?&K{BvOVuFdkWlG`0;X!&%<`tjA{FK+thOP2C^|u`@5neElPt$sdj<$`sVtwPIu{&0+2L>Tpy6odaoIADZgF`AM!t*hMQSv*7zE9~ z`nbj<{jTVybsx%Ylh3F&ySrLkzh+s#%yaJDd6Eu3^?PDX*p5X`b-8yoZRr)p2j=-x zLVK1~hAm!v!9}s9>2+KFW~K@rLU~=R(Y~JQe{ZjQ z+46atbAv(_=Z~-43~N7{PhJ(Xk@K(G6t~^mMO}@51Rpb4cYfw-T{G>jg=e4N|NXw} zkmw$p9~<^+KRB@_UsP^xW&2-~V}jXy?}TdXn3tcw`*Ybt_YX?q9Dfc+8gIY5Y2}Q9 zN6-A%_A~!V{N408bHDn}%^x>qy{M7XceuSgj#uN9W6(m&P*dmlHMKq+v5Oyip89z9 z#DS;UCw7F2t>}1`s$ahBvR$R>qMLg&e9UW}F%%!$vr697M6}T|U=Ca6OQE(Fwr4Av zTrW$j`gxsBNlB4=;}SacYfs@1_Rm%ooLogmf3nnC{yo~${Vc-ri|*@r=}iW|iULe^ zO&a#O1(ka08}BUQmRZ7^k^SOM{+^2+Ycsq1C6hU36-I4J?&c2NQg=*ciZQQL=}Ie( zFb?O<>c#(NS~>_EH@>p1u&jw`TD@WwpsDj$zi%Ref8&JPp6(&iL%o8Ag>a27%1! zCKfMi8GNP-zT3mBQ{c2fvh_qx6qj4C%vv_>#}CdwjXU{w$pW*Cbr$APK`ScPHKf(u z;XJoZ}ZBO_8Z_T=%FXQf&td+Xav#v25`187m(d5vdngjdf1O8cQ&(l2S zCMz5{`GAB@wP}GKR}PEDQLCNvve)f%JL@;&^LekF^!bHpyZ(K@{(6t3^@op}?bdl! zinv|1U~3XeX7sp!#xUH@_FE3~8m9I7)x2TT)?T_-{l0tN=i*CyEQ^gZKJ*;EH9m;l-f`Q_f4AMd?a!^x|Mu>(NCV}x_rl*pPp9W;?GKCE81iJM z&c8_hb*uBZc+Q^7=C|Tk&j0c6=dWg=Z2m<~ zTb8bLw>!Eg@JiaWy_e?tS-($Takj53{L9S6Z5yT*x2AMUn>Bdfia)zQ`o+5i8(emL^myYqBj0>=(rnR6NjKfO=?rN(K35;fyg4Ts`tkd+ zqtUCT?7g*hvX1BPx2Hnb8WmpjTZ{7~acf%6IFi<6&OCF)wukLS{0s{s|6N~|H*wLO zT84t;w|TP5IvBKn|b%6a-G<@l($@s%lPX~7ruRbsbI#!m7@Mm`(Ng6o4NeU z;=2K!xew!ZGfT|)oO8Bh$NozascSdvRoYQ(ZZ3G{+hZ9 zXZ20Qb-wWl&(_HXZHo>#zUTRp<(MF2J~Q6<(SF%pa}JkWh7}tbJ{!L6_;BrJ6vs6M z9j+Mmt-r-Gw&m~LYBRUs4`=4XdDTml`+gPN;wav3#I&>Y%-lA$ zZ0kg`{^_6A=6sDb_ZnsrDk3Ea{KZjx5&n(zM^}fJsh*Nz2;ro zbM8-elzZL3&GVP@*L_gPd>Zq+^SE4pU&{7{dA742oVjQ9_XGQM#chd`wC)=oYiK$7 zZP6VLZ3*L;LcZ4moc|6LpIglbYHeZ{vbk!3P#+W-R z4+WgQs_k}*=i9FRW%454O~udV22YUtHhtemt7|dOnH3iJHkY)1d{dGowBc=k_R0y2 zd5xzZPMe+QSAM55J*s&Y!{b?jAsnAme@T755WTUTJI&v3`TQN#R{!?MUe4giX=6;g zcv|eij`@)f^qRaHmTz`s|1hKTv&=>*L%ZXK?3cP0P2RbsG4z;px=dv*>tY#=Irmu# zLeGA0{cIg<_+qQ+ua3|U=6Vql^ypH{8et)}%>&=ht|36jBD$1!{uKawJ_tKeo z*Xt%GTw*i$+jkaQ)ZJ(3tZSHMS@nLBL!?hzRQHTYGZ^&NxnDR{?*5i@Uu0Iom9j@3 zOqU)hd|H?>*YC}(>q@-0(^|_SzHN%iSRnTPPo(pjPmG2i6_~8sH)P#V{cOB-t#C1S z;a-oo`_|ujAZ4;zW>x&|$QHB0@V%>lDD+DVTj8*?q0472X)<#b${ zVxFgI!}eks=gm9Kb~4N6GWcqn8<-jBzqI%`Z&PEXHBUs&Y%Q@>PLm6nE8n%O@%1oI z`lA0jd-BHB1-x~a`4t{sSuruldR=pUL-x`z>#P=2<%jbHFXTyXIPy8^gPiF;GZ&`G z=XRLBKa~FOtGAwKcY@db_qD$lMtY`8ab8gQ+nU(V;9#uo*t6Dt?Szh<6Ic9P87+~q zn=?VDuKNwI8P7ug=8!#73Hw-P{XEX_ET{6+z5Bi&j>?x@Xv{pdBr{X_Rpn-d(-JPL z|1X%oSRI@rywrS)t9KD#a%IR{w?QZU(_XhT1?vLe}(uA*l@n51YTm5F^ z3i*8ovc2`cC(K$__iRhW$xlsA%09V=B72*jo!YxC!IsN$ZwI%;+{!c3`8vV>z6mtH zRd{i+DIu*){87mXwSdCqPs9$#XML1CVZU6v$=8SHkMD)q*6H)^NT{s2owqwU*FMsI z9&3Qq)635~gWn}}hBoc|+9KcZe!3TP?J*PE`0l(So`&Ql7S-(;|FD=|raPQoErwe88raK1gxj#|q!{MoXzc+G!VT?K^ zvbFhN_S=+)y=LOfGjF8Y&AF(Z_9FTA=D_=l7e!AuKNb;bv9Xxj=R~og(YdCo9dZwh z|G&3Lo4>>O>xTKiB93m6y?uhQ``?VEv-fCjJ(GW$Reb8nOg*uLj+fC9KJ#4D4ArEK zmJ6<`dl2!|+k1JVQT>z7q0MCY1_!4!scCR zYA62d-_b`)YPH3$yx8P4w{r1Yf#mfzDcbehinvW?yqN4Hd-gxWnu~A44o!LPBmCHH zM%~F5(gzCE6}o0u?zj{-vF-Bx-JJX06~1`8*C>}Id0o5aq-9awJ`XXjRnEmxR?RZ$ z%*o|yXHIBlB6ubmDF$lOJmC$ z&sl~qm$WuE%e5a+GJUJTb-3Ey8%_c3S4m%$lU7&Et?s<>ug{gdR=RB7U z5C48!j=ZCKz--gWK&=a)k5_Xll#xwcQt zSj`}wb=fUj`DU|KwHhC9UBBIXrYUY~-CH;HeQXyvm{r<$&LAB`{Y9z?anK;DBllh{Ce2qx6N*D31FOO{B@1Uv!6HfrX{f38=t*xuHUiYQr)0bY=0^!MWtj)wPV{ya z4GJi2W)j$#zV+2Qi_9rDrBk#ft8;TTeKJkAI?eJdeM+Wg$)>221}_ZeH*eddCG~UW zkEI4OeY53fXFiKlF5T_o=zdc?&qUQT_I#*ChN1Sy;&UziN_kl^5_5Lmm>~?rRr66kO$#2eU zk0z;gIV_6p`g!!>2T6lZjx)~PytnDR_FO~J&SjC)UgWgDtYqxk&XYb}ljXofK8}ps zj-db6CR3lj-@`n?DL|~%cG>@o;~(cd+V`etJv)a?-HrB3jPemZd)_%;>RFqkG@qsRH6qvS#a?=t zY~8G9zE;>Lc~eII>TZ8;PxfPWd{RI47;y?NOn^ombX09kGT&(#o{QHraRmV7Xzj*3*;c0To$?Uv@ zbGCP<$hqvg8SHOAx9(4~ymLXTcZX}j2hVj&1q(&3%6Ga3te0CS>-}HGYwe2o`*-)+ zU0v8LExP3Fi*05%w%X~=Fx8w}`)N_h8_V0v12vMK%vf%F`czDqRE*q8E{$&~t;b)n z^Su%M_pBmGo4>Us{BEWE_4tEp7OiDx2>X6!|F!Cz_dLgC`IGc}52tB7c9!IJS#yq= zc}es6AMaP~xf-r|FXY$Ea2J#G?dKwTcRpQ}wNcs5>*BfOGS_JR31a-=jOpCILDI*1 zFR#0`j=fRz$%(Wpj~44QJQQl0xTI_~!@QFsX=)pm=B)Fd>}3~V>6cw^Mf;A)Qxw4np)ZCx)qJXX%6 z)fYT34IbMGd)BUtS^n(JG?w`0p#Oh5a%Po1o67&{drFtHLEz;aPhQ&(VOBeIo_=9} z9M5F4nL9*p6^G26exDP!4$PP$d{XR>cXIJEv)cV-VM&)IX3uS!`R7!5W&Q_O+ZmP2 z2V86CeYE|&teVlLIPHAsflCwJYgsb=U+CUD<&}1L!NLPux_92Md;QjE@4nyPiW-;x z`CY*;S@k+1%YbLktr=ETR>9g5_ZPa$OzX4!HlyT^=kZlChHFLMq#TXnymG|S>~kBZ zRnNDuU2+H79OFzJi}!QXbg?&_PM-X2{_8c~*&NUG9gXeZC0{sm@z|EVzIXSo+wtiC zQrF*aTRRFf!Y`a~>&f!l|NkuShyVBH{cG9tux?FjW6a{jO=(%;-aC!N=cI@8cTY3o zt2ntqFKX*Fol4ueb-!L_o_FoOw9s8{)#v*iR!`<|Yj4vOmx;1Ed~MePTjTH6zor$7 z^q!t#Q?r-tWt6<#CuO!DBFz%^ip87fPPf|IIbAd;!7{Sx@r}Y{5r*S@`C0wlwMl&6 z72E4H&brRV(&gCXU!7FDpO&EI=V^+SiJ}+;Rq;9ga z^8MZKm%f_cVQ74zo^g4X(AUoo=P%c0NdEitqC3kCL4}jg4DP;QT5h(FA$MASuY=#Y zZUsrv*BT8QCe7X%_Fz*Z=e&Lwmn0M{WtJvL%6KVGJ|uj&n?15$ zo=M~XH>GO{0&{;q^PfNC+^-jlzFhQwH|yAeqsijuE1DCxeHQ=w_)i)4xro4+T-l#~ zw?CUYHRiW(oS)Qs=3396%KGqq|IXdi^74w1^WL?N_ucNC=ZCJd^e=k!>izcXx6A#O z{j(O|_GQidBsSs0XA_+{8nl0hIP6~a@ECW@ybT9qxw^z}_16g5?fhfSE8ufw`jWY8 zXJ}~!g@!KTyShv3VT$g?Uy{o1y^^z1Z|a;on|ApBCa=qvre9mkB=c+L{?0{)rE4?7 z4%~V(RcuAaySM4F`Ln(TD5C5U>lSB+lTHq56BMR7y^+k(Vh<5a`O7SNsKD{~H_LU~b7$;3-4f3D z*Cze9&zVEd*7A!row>Bu_IRM##omebPg&k3&-(C`*`R9L(RhXcpO=?*Bot*`Jh@0> zp{;SOuR~(}4?gX!(aVaW=%@3vNq^(Ab*Ihxv7ck{&uz26HWk{ph_P{e zReaF(TyyQleCJ!`>;GQ5_xsIcJ*Ty=1sC7Ef3uwD{JQwvd}?n_U%Fd@-o!A)ziVdlS|t>z)e10#ET8vy zMVY1l#aSmeJTu=NFUS%-;qmTBBWBa$yr#MO2WvRbypgv)SM!YJTG$c}*&RO|SaQw= zNryh0+V6B+-z+(DQ%Yvku9B5oo_x0o*Irf2<8xRi;&5K3kFvDOFWJv$G-EFK_@1p% zK4$sl!r@CbrNXy4&-b^A`Gh-izuJ2~*uI1<%22rBS^2Vl-Rj4_tbT$n_qYH5opLX2 z*3J0%KiO9QgP&{v=&gGhw&ecS4O3R$V9L749I&JNOjx2Cm-3CsyM2%QT(A7)YFN8; zy5bGK$8XOb9a0OI9yP5tp%dmdm#nO@=!N+)5+2&}! z^zzLP*xvA3ZG&+|e^m7a^=2kf;fLvwtQ(`eqwZMl*4??!<*8nX;}rjkD^Gkj;8xlF zNpb3$t(tdBpYMJ7@%TKC_}{;dcKzSr;B`iHn*2N6yZU?f^D=zaV+q+5$fNuvd~Nhx zwca-GF4-Fe@BWsaSb2O}j=l87H|lTa+1322VLia=uhkIuFz{UdoZmY)q)C<9tJ9ip>FwY1(Vv6EtedIQ^|pS_iH+--HnFjOESBCMVfePD zX=3Uej(J-D&U|*hC~^J$rX#a_?o+Zo2oRk#U%KC_1|d5Mh3Up6EbIf z?AfMVzd=hB?_P$4x;J>YRn+v*Ek zk|uU+M_woH{qVy%VQRxuai2zuCCtiaR~(+#>b(49(axRy$DXK^rBwCJ|NZah?>7;; zxm|NTq%Nq>at!iixM6<3R{QOq!+M$L_kQz<|8r{krHUn!bJ=zT{!lQMYe{`^$$P&d z?{`;&zZZ2EKjlti<}nkNWQjFQim7hc&$8$+pFPjPA-$Zl+vL`;2 zu|+StXfu6&bI3!Z^Ql7mE7MVCVu--Dg12J7o$%c4F69})t)MP;Q39b z(9)|L)n7UGegF4ZUjNW1!=v9OKVP#;RLsWh^?kNCxxy8Fv;I}w4vSPNXxq7G)n}`n zRyH>_f3ss#*9l*;t#YFCvgUact6Q0c`3=m^b><20%3YDW-QmRU@9Ta)(5ld>{hB>} z$;aelGZPw%mj$@IzL2&~{QmYUi%WFAwKh&#bMCuY7IV)LxvvTLBeE0kY}uH({O09L zeV>;t?U%7Lf4gCYY43v7D-Ow)zIJl@SS`8d^0FL;sG#}U45!bFeVg*pF=OJvyYp9m zs=3}0W3P8(mhW=I6%TtpRvq7Zs%CSApwFd^J~rzY-F@A1#Jl^`lZ;pTn@T6yw=YPp zd}h=vrFx`Qe^tbWsOjcfQe_*zPCuHy_V~{^jm|d@7HOCXE|%VRTczKq|H6j3OWE14 zJ?h<!%Qv#w_8fHD7Lp@BJ3v(x!XXp>fYorx4bbq7v5|rym9O#GgBL#W!6lQmE|Lgn;KI zZf^tc3m5+V!FVf?tMy~J<-d^9sR!GPFH16>5IM3Ww|$+K@3D-@bT?Z$`O%Vp3V{vu7IfeK!6)X{r>v zLB3=Dv+WD6zHKR5wfp@>_g|k};~jb5dUo7(NEALZ`Ic6hLZdkeo+6-s2TQO#h3P^z7}qvZdJ1-g<4+MmEMUHk~iQmv#IZ zr#A;Y&RXKel@Ro{^vywulFVd>+rRJc-`{mTVt3>l@p7Q0t*Rrqu zSjolA3YY3J6=lxV*7rGUX& z%YV``i8E|xzm-P_b06H0Z)JKzZpw+NPy6p4`7r&E(0LPso-JbEXMaD~rFgS;Nm$-G zp50u5|E|`(W)QfVH|Lq?j?;=I%hWE+bZ}VM?bxm+k;gWd$31W7RfdGEb{Wr<+m=_q z-xr_$>1y|WH3RuW#Ueacdy8fq<-eeG>%;@UXOkYsynGkAIc@8!?ZySg0y|&se!GJ= z>r4LZvU_D-w<-_*Fv&A&QS`rfM$aO;mAOzu;osq|Z!x~p%XE)Qu1fYjW}QAI>0Mv( zwvxx3lCH6drW-gPFaD+&&9^Bi`rEB@t`F2Q&M9b{z3j2tFroZL#FD=!yF~3?7JphO zqxZ(<=;<3wrYaqKoFf-~VE=5L&GVK?^Ke3SVCV!*;cuC&3CCr=*4&(MgD*PoXiLzQ zWl7IOWG!8OIXP)>Wu5(O74P@M2Fr5iOA5@$_jn#x;2YIc_w2Ao&JK;&6COFY9bXqH zZMEylT8|4)R{GzHJ~w;kp)b=nM@_jj?W}qFL3KU>r3QyCqw5=t7j!LKe~HiM=!KSS zme!gnQR>$h6!XveT$-``&v(VEKci(Iy!o4I{`b$8?}d7Pd;IKNcWAvgo>io<L1(RldX9*$KLzL%-bO?y4w9sQ0uWr@7xZy->AqE{_@$iHrq(e%`rGzIXG|0ZCBHC z2M;WGy0v-X+L+Jlt{sYb`L)9#{lV=xhGMh#Gfb;@omp{5D9iGU@IR?7v!e6%vZlRO z{k3yeQ9;QvM_%{LurzOjB&k{ATVFr+vrwE{c53Cz3y1A8ez(iSze|+2D(hw0EK-!L zY^E@w+cBB<#tgQMP8NkSzsK8F{hG->D^MYI`o^*u)8pNuZr%U)E$P>v=XUe&wM5ST zoWOIBBP00rg^-p8|F>Jj->po`SjsY8ZQHRU63Xd4fv3+0U-U^??^-Rn!{EXB+NW7{ zk8C#ammZL>{(MZUW->|<#e}k~}p9<9BrgeFo$~grQMmFQ_6T?Dn(IE* zuTxk1?~vK|^9=?3g%A-hwLE%s2d)xoG^*`)%6yf0hn?xc zFH8FfIjMs4jNkrrD;>x*32F}2Zqex#r(npe+rYgxgK7hb=I)U zU&HOx=gSHUr~KNJYw>)0l=Hz>i_5dZR^Lp2$8&8)I3s5>(`}LZ`GT8^&-`DzBrB}k z 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⋙lc(PmclF$=6mbDB?ir7KT?&@@E@z6i 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

vrGS{G9j6EkmQN8zZ!$tDo*!w)0b;<>#l$ zFXY!V2OH*a7t71(AG#TFT90FmY{Q&CH|Nir;C_8irp1Gt)<+3U5xb`!G_Xwn<+Jlm z%jBio_DLpw)D3tR{q%EvmB-(sj}4uF^c=JN)Y!zP8OxxyX1S63R9oGW3ac}Ph9+mG z30En8aq#>lnz4IVs;JgWLB86GyHzV^HhfY|v-Pf6WvIw0uz705T9#8a6>~OU&{fYk z{{E=PndKWxd#2eeQc7)oD$w+Fmhp8Pl@~=K>y6(!r26tNVZZUly!IWpM%yomRX5XL ze0^~;c<08Z>Gv3HOLU(cs@^N`X3sShmIFstoqLiMA$2xNaoX#XQ?!fc72gXs3U}pL z+&$NN*6pQ-beq!u$?|W0Z+u>+Ik6+hUF!Nam2Ym@T*p~BZ1Yclb)Mju(3kwcm6vCg zRm+R)z>hhVaoeI4-**`II~wTxxV+7DGMirQoUdQ~m;W`GRqS=y?&+cntdqN3_c_LK zJQX^#GCo@IvUcXyDcYW`yG|xvfAm?8cd|8XEx^~s zA2#s>E))!Dh_0v+G1X&F_^}{KW+G>q`JBRAkww35rk|Mkd|qp#;&BZjh4XX1oII5g z)@{7z+#%Ddnp<{Lzb|u2PoNzW3Ua-;@Gd;m zz?H4dS~Q{Ut7GVy-^!DIyxROa_3*55$hu>OMVC5@ zm#kQNSg9cE$YV*7E1dHmOHP!Za-HYe4Ce^0gZw2jUY(8n*X#Z@vH2`^d3SMn#H&+h zWzV|iHv3mHo0}CcnLl^w#7vvL^(w{-J}G|Pz+W@J=ZO02r8Qr|^`+h~zk61D>w?t^ z>ni-^HFR~N%$t{!qKwdT!vy9GEG3SX-?+cZi3EF$vxN1>bktA!x(Lm9ypZZ+ApFZo4(GO-=AH}eGy5-7$ zf@ik1G0Czu-Ih4DYxU}MN5=QlZpT;o&AYeDvAca;&P?^`dmgh`etvQI;S{F`z{Fceh$WgpS<|@C0>z16J1x>|^7COy~-R@ntKfhPT;dW#; zuTxL%-c3bXHm@t&Pxd~K>yfdL5I8kQPHSqV{ioY=12+5?@cMJ~|DV8j^&eTkm^_ZU z<;1GU%>8>&=H{n58lS!U>=^$p>HTnK`>F09?~DCymt5U?d;!zfDZ9jeX1I2T=s1bm z9MF*p_;YM!K1+9E+>}!j8zkoJ_T!(z)N`>%e*Y$~dB=OcwVUT0xOJdH!!Nn6de1%| ztAM{zwg)3$r1*&(RXCJ*<8?rd#dE=kCn+Udd~#L#Q|bc+r&KC7sE5paZ26$GkHM9z z(W2Mv!%j}A&p*%C#{Cn^^^$2kwP(|#;>mqmm}FTC1Pr?VpM7K{c7J28Z?E%mmQ;~s ztz<(Xqn9_k)*3B+%yeMp)e}aG++Eg~#boJ5cqf)sJlns+x4rg)vvfn!#aAi3rBUZL zwanWY#w2*5<@4FAJr_!YD$Ep)2KAfx*D`l;?alCZKJ~|@`jz6B3bl{`#YJy^zL9)0 zztZ_*wFXly({s_={8!H%bO>V*zt6SZN>fJMWnX%--ip6v+je$xzkT&fsMYMY=GO^D zhtBL5*nZv7yrN#><@&58)i>#KkUn^I?hg65R@GDF;vQ=Q@8w3g=%FV0l!%&^~9a=F{Wuh35}@GCt3DjsAYO ze*K;L_sm7l*T0*P=CZrv^|>+=tw^^cuP&NdWt&Z{oRn4Nrgbja|I+T6ht9r?`&+Xp z^uO8h=1K844tZLHH{BMQe0&3cZEQpF-4jd}(jLJ+PY+nJn+6keWXEUBz8tvZ@Ry8qMj#27zfhx<-b&Qo#6>qBp z0(Vt2iSC+lqC`>Te`c}xspEe81sV*SXG~yYvEuk<#Ie=!kP4ICCT6Lp6GP9RcGlmc zBK+Z<+5^wcv!-;F|LnP06m*%#GV@%_mLDM}xOZ?$gigkN=_mjQ&1d*s)pB7I(#zRHr{ZWRwT><+n~ zei(RFH)mSyiU;ctzqnE)A|J+ma$k==l?~2IuSmW4)dxqyP+cfwov**{_XgKcfPe73hr&?sC*W^Z_W)NA-9^)LS$ zYM6LtrhAX}r6ai(sIBwj6j-T3#@t?c!hCK;SlyyS1s z61W#v`O|AB%c(z;y!EeY^o4d9%O(cz`=NhHk5PQ~Hx=5>e%U0p@{DQvx_~3ojPLJYJT=F{YC?PJgl4biC1x=z#3ycX zbwA^J?oUDFPd}|<3$Z2*sfy|)+gWCO>&WY2J~#DGU(>c| zQ;&aK$5q!`D=|&@`MD|5>#Y6t>i;J(yqdA*y1J+In_W)d&-bdBrp(QlI?YHnW&QJQ zO5f8zr4+ws=X$y1%jEd_AO`E&|(!N=7+s~^t zPAINb^Ih?Y-S}SN>eJ$~*`8ka+z!8&pF+17=Fa$EVSCOIey*V zkLe6v3tCT3&^}ZuVRdNU1LgYmZ2tTOOB$-j|bbne%jBlRpRiC{hMb$JMq(9R(ZKjR8L*5 zgz)Wc+9!^1B*pCJbZCC?{U0-XL%~*Ov)o%cu{-W@>=n$paFSu-%*IpE-|9BUZ%f}I zZu>aGzjUumxHa!7nWL$p5$4zIm^GPgMBSz+vGhH^ck`~=??Bghp8h2q_pG8rJ4EmH zD9V*`bShgaB+qc%w=s8pj@1r-xjTD8r6&5#2o6=})?R+%<&0*#kl+=f;NaX`p#x>j4b7yn%2u}qz%WS@$IDIR~r6YKrmf>8> zoK~hR4yVcYj`+_1+jNKF!i<@l(^h>*(GDl| zrp4=wH|FpEZ*}O+_Kl{zr((DtFmOEjUOcrs zU--ol$x!X8&guhR^%a#HI%Xv=RabPGs4+CC#ok- zdE$1=`B%<9v8|eCjQN*N@A>l}_P*4;=_`dluj*x-tjCo(aSyxA#_c~eU$?*cP&>zD zFRyv}ja{1;dv`Cac*mSkUnO{Sn&{K3QX3a8dbD}{j)K-TJH9Ygp1=D3pq=7e#wdlN zgcjSY5-Goxx%oYJYial%SSAva*ZXr;hmTAeSH`7Xe|JW1to`6H`_I4c{HNvR>O%U(P%~KYyveOrXf*RWmOc@0=cYHJHP2{vy41mu^mU>^&4A zr~HjIV`4@&&*te0x0YUgqu~|3zi#ugjTW7~k3}TjCd^9WsX2MFxVvu-d(F4QPnkpx z^fGoQacCO49+6)?WtWu5`+fg*<=o!l8&~m-btcpKJsh@A4>#1^+fmo{!Q#=PlM*LH?#GMitK}~JenMpR z-CIuu;n0G2~+U6YJx)km+kKJxF?z*|) zVe`r34+FK;A6e8TFYs)6!*$2EY0gvQ%GfINPl9WH-+jG1<>}S!33f(Km%9$IF63rC zG+}+)zYg`D|I#hnqx-uaDbI?2((|})T9m;dlaK@RHdJ)_u(rIG&@x`Bv7&|Jer3UD zE6D~YIrhMOw~m+l*5;q&4wxis8fwJtn$5l3XKJOyR4YdRef$r!J_j7wR&Yzk^6`u0 zi~e!ytM66C%2j`ito-x!|JBHStRhd8SvPU){9LYQ6P9-P_Pj<#_1YKL(^|DkHuy+7 z^vUs?MRBi)Y+0XW#o5kr%qd}7@U#wb|EJw;IlQ99m!zCOg|>!TC08b}NW3roP_%3J z6NV}Ojx{%AyX@P;wL7Nu{Pu!3f=+3s89!&9i!oXABk@juqW`nq5l@179=Cr?YI;6p z`gNz7_N)h_G>Vry8KIE-@w0->n>&>r9p0!BYrEqgII?nKZf3Rhxe(gW*BHafu z(G2Y;A8l0s|HECj>!8!($^KS>t3R$hFf%K`Z&%BAg{yv-F8=%x=ysklT`Fhl<3(SB zI8<|e4;$aA2tM8V-*)xQ`h!e6_Rc6_@9+^jP-(l{taj(dmGf4z2^u9g-V0W|C6d{2 zC9%zln=f+pfj<_v*WK7RU5WcklIZihGwkE~HLAtletK=aUu*iS|0!+-w(WOTd>m#@lO4-z(}*|MIC!_iM_`q=3CsJ)iR&ImR+yPw;xm$NO~>$3v#Px%+(I z-fz#OKU6SsHSc{9o*eUJ(rLXZ-Sfm$R@hBgYy5lW+OO*+wfDV^dQv7ZnMc0*J^x34&qv=+ zKbq@Z%z3*WFqj>dDYxdzmu}R(czlIySV&t{+s&oPMQ_v3P2rFIUA9s$JxjZo{^p~~VXb>Jmbknpnj$U0z?$5uKOebbad27aOJk$(HE(@ zjh9xqu;y|XP5XL+mtQzu+G!!rp(ShA#@;f|nNqjqTu(XQX+4p)J9}%l+Faii{4L>z z7wf94%NIHAlY98vv4UGT*zM_#O7ABuU#jnK_{61ojOVd>*j|PGKb4(|)~|0`&gef& z(4*pquBqy$PG$e;M>9UpiVo4N{cx$R!;Q7k?%KV^tTGNwg~NtxqObKe8E%Q+=-U@& znf_aBq5I_C7#n>pOQmB|`xk3T^;8yY2=$ufUHX7qRFlng;nUnzeOfM0rS{aeJZJEY zY(L0Y9+tRjk$IJ#nZ17=?6g-(*&jOZ#x}v7?>H?P|E_A6 z-|DgM7fXxwt=C)(dX5dVm0W~1a#l`|j9TvS?$8r+u`7WKCm%7-i_kxB_eX8YPp#I? zYn)6DI^DchcZA7;FY4vX_fz%j{;BPJmn`pC`hiC@=l=hH`&T`fZ&v3MZ<}!R zl5uAGpP9l6-=@_XEIgum@S&5>)23p{I@1|^&!4K48zo9lw5)n|aQ4X?;gu8riaMOo?dolX468acMN;Q1uyzC1~8O;`IVJ_o>@2XoFnHVo9S^Ig--nu zs{FqDeyd2-a;@TdrZ2sfrG9bfbg=YpY*X5qYso3XWgNpNI&Y$1PwB7Cub5~& z^}@w_Wv9OBKPl{Qqql$e>$ryH4EMsH&lNuqm>~U{WlH7ZGc(zhEx*~-sU1FfUs3kP zrrh0g0(wOL<~T2WFxBwe%xp%PLvMH%2hZG`%w%%&zNx}%^PJG5XN?oj+bs_DS+AMT zkojrDcE_2AjpGX?r&L~LSQIZ)*>yfC=njuhYRyM~{nN9qUpw7gZr5cc%djg!NMUa4 zy?td4_pUK!bUmJVp^=fl*2?Lv{LYsmJOACftZ1Kmtzyppd9FcIR!K~9l;oGzKf0OS zYnE$Cab~!^_TPEZlM1gnCRaKeC7p6i7Q4;so4$X^)?J^jyniAt|3p50an*%$nkzGw zcYd+?^=Brd*!;6SZky$O-#$NYU9C6Owf&QqkMC!T$wHwM+@CFGVO?t8`-87?#T4)I zS>9|6;#2*ONFEEHd4JCjTjr#WxxA}Q)nl62a#Ux2I9n<9^TNzH>Fxza_xCcgrpW)A z`6l zAbxh&elg>U+lFhF$ZuGt{FY;;{ELaX2LgAL-p>9Ma@#EPXu*`ui$yD?S_2&4l{0*o z(zvU?e9M{X!Rd?UK0B1Xq#&%@rYGjJ{`@`Ra(6Zc&RV6gpm7!pr|QiZ$>$NQNyASSLNJo+l=Mn^ucz7?J|@8nuGYdS=n z^*$P69@G3a!RhvcIL&!%%*@O}ZWr!_-3Zh;`@;CS$WpmC?*5wGzb3ptW*VJ#E-b{# z)phyNlfQH|j%#iEkl1W#UsJNgr>3OQXvvyi@0?z2JeQ($Ildpas)n?K{5=P?dnKUHp7 z%A1(x+Bkd3o>-4rVgWNJRn3^nA6uZ()^|N7;FF5NOZB~P52-xy;v zBL3Svi$18YVbIg{W-aE}c;{rm$qjZ5YdZpjtSVUM%d)IH^vX2<<<*F|3+(&mTr&`M zjefqETO=m=KbZTSNjy=?KysPMHLuTK-0Y{R zFdBEAa?;$_7QnQvVU7O1Z@OaEZBinv@l6M`nVIH163SSuav=6b`nhW+%L)tDEipZH z&~V9G3Cn=gx+_VRuUeKC9kf0__2MZzjpBqQ#`pVeDZBG(9kc>O z+~-stl8}FML-F!*lM{{yc71yo@XBKTqLherdtaLDeCWJfI=)@;kvE_6&2M_|kKU?d z>1;b^-fuM}^^LQJL-@%=j!#vmCO=HIe%rcmb=4aI)pb!e?(NSGs;%-3T(V@3kG|_7 z^OZ*fUU~li9rb0N=d2}PmwGs!`^kQJ36*P`y?=V-eP?OyM@~m|op)cJ{1Z+ zQap0QXiIVI`Z=Eu-cI>nmatCQJerl~!L@tMK}Qazn^~67L2mmweZF~$^5BbS@#wR zOnb>0yJ8XR1E%9s-p%KGYJQ<@-;JY1Hy#~s*lWwr#C1=1P5QUyvVsE7X!Bo=yO*xs zE8La0&1Tm})0+(&m#kkXR42o=a++nqDaSRQ*BSY11Sd?}XZ*V&^-s?11@~XDe-{%;dbYsKxC@R8?2bL&v_|tZOr0l;*jZ zS~p#}mF<^P_U+BL!^(0k;pbPnm1<0Soh>{4f8A%-ExX=MJH9RV@RM_ekyRFKI~ZCX zE#i;wiDJ+w{=(_MU{(#sByhpKx`Rn9JQX)Ry+y=Puh#f9~@+oR%YzNF3x7Hv^X zuzDC-vaR&d8?7_17o6u~t-5w|`RSeM^YmqBWPH7S|F7S*{5XB{+J|bEk9#hs{QP-Z zkoCniGkvZtc_Jr5H@;I`k{`F$da}gJ%h7zPFW7Q~oZRA1GN}j8{C8E%p)TIGSfcL! zp(|T%*Zt(?iE^AFTgtL3B;soJlHAh;uIWqW8d_fuIAXj>tY)uT@xjoH(A7t8>cv?2 ztM3vNo;K&9!}O|NpOb9*AJWTmW#_-%Gvm-P&mS$0?J+ zOozemqv0`1)8p%AGO-qFXNpf<$hVATzd*@y`5n(qXQY_<75oVh*RqT8__cG!#w4c6 z_Us8B8zXv}gV_T9994??)cy4S+8+~MOSAchF-1I`XZ?O!b$xaJozJ(cQ~8vl7r&VD zFhSJm+co9yF_&3%zDY9lZdATlFSgPo(oA#K!us9&=860}Uwd8DM=>ZvW{J}U38(p5 zZ1#&KeNq<&6g;+4I`Gi1$LC6d0#^m^GNq^k2_F*9i|NhK=IxL=GsieIs=Cbcu1SS} zM41WGl#`4#+vJ7Ce+TI7seUf^@-U10G6OG;i#^YiuVjb_+DhHuIzhkm!P(dQ_Qd4v zc^9)~olx-Id7lEFE?@ubOJnA0pQ-Lwv|JtM^j$9fvio4bpSw!2g>}b*=9@{UT_2>JSZF*DQlrP@1rFM_I--H_vQ?Gj% zy4eeJtKQ&@u2Au?T{rpuqAw9;?BZ>Xf71>gSS&lw;oKhobNj!A-Q3PRPf91F&mi|b z`?BKLsbMYr2bndT)>X+!9OIs_d{4%^oS#qF?Nvep-W{1VuVH&+&q2*vo~aMxQzPe= z$mUG0jV?RIAmZt)zG}_GwRy|}ul_M~NK?!ZNd8(Z2%)lpM-tb3S|a=8>1k z;)_Msnp*;-UO9f%=(_SNaLv`u4}aIqbE-`H&UTZp`El>Qy_dMz6!%#PPVL&TEK$q( z${h#kX9o=>G!tG3hD;1z`07v2DYw7!)|++a zcqw-6E8z*5$;4_R`!HMW#;?L$F}|tFPpo^cO}1MzUG&CPhGmlSI+Nx1@@U+=d;6)N zPp)=r;g*b#B{Mf?ESvN9-qTB_w=&;)ym_2HW47MZ=wl)#GPNh_YbsfO9~Jm@;Gp75 z)(Pi0q9&WIxu>=EK;6B4yu}9>-U%&qO5pANesYuYv{P4pt^9C_Jw^9G)r-#BuiEjG z%I8$Ak|{nEc!}@)oW~NG6+H^C4kT*3o$_<{oY3M^@T^45e_o{CugOO;G?J=nKe)Y^ z`MN=8w4Es@%49#uK$`^gMXLn)m$$XO`5srA=`204XQKdl+HWT ze%SZpt|iubL7mG}ShC!9EScZKUp_Pf1_7dX$$ zP5rr|apt8EW#cr{ouBx2b#Ik<&zg;~hD`+RFx~(O< z)$vllSZtg#V_$-U!Kag-WsbIZo|eww6ko{``MSc9RCfe;(UZlL^-i{KS4`Ei3pO z7i$Gu3t+5nl+$-1wW>7Oscfywf62SE4`+H=mv%g8M?>KxreEOGNHHVH(ivEP~Xt#_+;ii@QG)Q^4bZy#m;yx=$G+mw9|^;Ew4?_I_n zk+(Y9scOE@`rQGa&OdWfsc8!oc-XhKcGII>@hAS}%Fa5xvQ_AngMG1K*NGf0sb4cY zdHa->?);DxerCRQ{qKL@y?OWQD!CPIQRA}wb@9GWV+?Ee{^tsAU5A9<9u;W)hSM-f8@jgMy+Cz zDLEDv3hQO=DDF1M&5(6SyLBNswk@4~zlM&M^EuW4iO;X4p3Xi#PtVmr!b>twHOz{8 z-wK8RR{O^DJWdC;99B+$DEM)*FlX|6POe42*R{6IFV)r9st{X+72@)579r~}qbZ7B_HuYau4zXTNxprt}(XG&QkKYBer(8U} zc#~V)`EwU|W;)f)4{MxfxrbHc!-l?vn;4kgy&iBb-0}W=zpcLY_IFL`8%0+NRJ{73 z6J7Ib;^oK+A=j4hKr zKf3%rCU?yEp!h!9Q?DK#w7k9i&4a@;dwvT20Z)CXm_Q-;E94` z9mgcc;}?26RQmqD?~(r?_|3aL-H$;;UwMB zhfP{>;x_M&&R{alG|6NTUccIAhOt@9PL+9AvS%7yxBZmsd+5ydiBEX#TxXeECLTH~ z)9>@^XqCs|#eKJy&9mHhwBYM3^XnDwu0LUX&2eK|nc$S4M+2VK&e(O7$t628C1U1` zhi}XhY&o^>Ox8Jb=$YH!!e45;rttZk+c0&~sarv+W_Q|J7o6$btXkCZ*lp(gV^wl> z92^DxHcapT)Xi)X5x@BQhaGPZ*ODHohzKijj)I%Y%YV1dG+y~YtH*8m={+_)PLHx# zrP9=2DP~1YkXrol@DzU0Ds!7xrP=1vDMsH4SiVY_T-7o#UCZ?Qdf$~;#-4&QcLSIE zwwD&SpMTfGRdN5x=?2v#mnJs`>jsX8ULlsOMok5a*52wU+p}t7+|LWo{U*M)E7Ee| zOkdRMExzg4f4_SxYb!krTYS$=&miNOgm2a)E#~!gqr*wGKi_*XRX?vm@V{WC^x@OAGQpL)5Cw0T~bDLD&23Cly zJM{MJneFFK%EqrQoO?R*_Jx4|ejFjsZeRa$+EspkEZ+g+bo&g|PwUvLZ?P^&$$EHs z)?7A^Yn>P6X0~7W`163_{%4O)FPRpn#mY3Lmhk~AJEx7KzGUUAh3n!nZ*TPcwZLH4 zhu=O==5n(wG+1b`i*xHOhNI2d#^EuSZYpn0pU1L#dzjY37`A|mXFL6tavY!L94YqE z`ojlnE9<8WT+5dA_)q*B5H>g9QFVLu6NOa|ck(saPT1*nz(qJ<*3=Ic;$|VtRokMa z9v%#7T=-hBOU{WUk;(0}#GZR`9=}UD8ZR?EHjjmrtjjm|k&RllNA>w+t3-6-qy7wyQ4WQSb+8g>Kh4ks39>o4u!udSLa0&%ZB7?fZGI znPYSDuPI@&s@*s0`5!L&Zaz=tTkVqlJKS9+tZpk>;XI?(?$Dbvi;btP5nxEn@Yz%_ zx7_EMYl838N}KF+s^R<2bH~ay3G=^GOE8F1sP8O6w$j!$)RIR+1B zaQ2C`a%Xoqw%S~K!Dh!jSPAzBJ$gr0#|bD?F|THvUqk%`~K3kId8%g8%}cc zFg}vp(A{|X@(y1gRZY8{xtmY(FF!EBH81AIoATH_msws!v`@cbaaXbBZhX~C)yTik zvTkn8ZGZOi`kFZ1*9|Q@DldyYnfm%lgIv?bNXExa7uId%H8m0~SoiMpOSzPZLj5JX ze9AYz`;ufL{qvqr+ib@ph0Cl2`&uUjoG|H<{Q4-Wdc~RR3TMt;VOjlpE3e3(p06Q} zGx?jRZ4qW>v$pnSo3QF}!BnSH);<2Jn-(RhG~DR&HV~88lANNkCDori&rg){X5Yp{GOTT z$s03b>x++l|9h_E&V6&{LuCivG;L_RGwJcHJBL0W|G4|cK|be$?`l@NpZj^i|DkH> z!W+CjysL{C9%dL-u}+CoE;{($?k!KIQ?)xQ$F6NDPUoz?S!gOh;7ay7V$=31#be&W zvq3d^3uI5pEWB&S5Lr^Lw54~#Ej=E^%+~U~%x^Q*^(}msIaZn(n)A8Fe(ZZJGOd_P zU~gN4Li*0omQ@ojv&Jb+`RVx5C8EN!NQa zdKQsgUE5^Vhbz7bYmWQO^yL1HV1Ly(Hk)5uE*cU=$+IOsPgFg6_S5-*XZ81XddfLP zN3wp)yf`V-sQMyLKo4Aue8 z1y3d|e)_%KUd!6--L$v)xs#u1>PpRBz!G@yXp(%x?fQD>du3-X zN=-_$o_~^A>4c#D-NUy$H&_%~e0;h#P5JqT>dEJ4bMi0sj+ymgvJLm^qL7E4%#Wf2 zo^21B`QFXc`p}!^uCsordFSP=ltQ2HQYdO?Zd2f8o!q!&YF&eH;LPg_rX?yWxihbs zoiIao`svbbJM~Hq=HHodGU$)j;$tjRH7B0A9K5XLth~{IYf|BxgN^ON{mQ0=A3n^x z#OI=$%GvKWwda>Db1gYrVfFdn+{1;1Qa4#@6`xs5VVh#mzJAZwXI9%8C0?n0S$^W` z`@LT4s{UUsdRO^8%a;B2j};l)nQk{O{NPq`_;SPTdwq{iOO?#p(557(YMfXT>e(^- zlM&WpYfmC{}O_)siUjo6~%59cClj%={D zO6Aye^q`@Rr)u4=70;fZwrpg~U7>8mY^=8K|B0QS_Py?#a7y!@*~*mXpX^iiRqs>V zJ~!@5apDQ9y*r<#o}ZI>w?J=l*>bDx0sWUda#!EIy0`G3=pNZ$=kK4tTy|mM-E;er zRpvcr4^AmdnJjbhLeWgGEv`!<=6s&@a!Uu(3%;L^TYJv%Fg)J3=CAN~S^F1jGtapw zzWI`Pmx|?JoAC_oXC5II=LB=Rm*Dm z-R5jNb?w^SqO*%8rv!c#nR$4Ejn-M|``dV$Bu>fj+&_Ku+7U_h%@>8$?kIQr1n}Oz zd5`t!{nc@*jPW~WKRuBeICFDBu87YGvrR!2&)0xAm$K<`sjCJ2rZk?JxjX$_fa+`RE5_dqs%;OynU^2B=3T&qgD1+g zukYEWrd9l|bDyhD-GvlhCF`vWDzo-8SQfYBt^G9Df^%WVB$W+M)z=#xnVGvc_DY5I zl?`FFSTzQN~;+sL(!WB-}maZ*uc9ETNL+;NZGmomPR%iP^bG&%kk~8bZOB0^IHc?yV=YGy+d6H9G+G&GSk?K{| zFE{D;Xv8m@tiM>}%bD1j&EGmFtq4?l<8Gc6b8W5SoYh~a8m|iHyW&x{xF^9VO7z-U zj=LI9jtZ>0zS=8mi^dE$Z_axw7{0mLN5^-5ICd>S;5SD_-=>|b*jP&pxV+r7H`Epw z2Lu~)U!2q*zdz{S_lwF)XBnqX`k3`4r+ST)X>gpSu7FMUt;^pI&9koi=>OvT-3NTO zLRAMvPc9MJbh$Rl6~ z5+k8UbKXWBi?__bTUw&!6`uMo`>L<+@2RYHbE+S==htmoJtxqZ|K?7!Se@7L{nI~j zKazaLXIkhlBe6eOF+$kF@kZHNg=Z;eZ;2hBsl9mC)|C6Qu7X$3mDX%z5ltd)hgE&_vd8X){KuT*(DQf9V)h{X)E)FHJ1$v zT7UY59W8n!&Yip>p+tg7BuLPy z9QY@%Z`a$jH#dqQypQAHq{C4S4D6}@_C3vre92N~?DQ$5%z$T0dW`V)Et(x?j>gOt zbo7x`KB74@7#+njI0YMy;yD@w5m@0QZP&E@P_ww&v!pv zegDrY9qT_FUjsPUz4PZJW`!Lr&Z}?>j+}CG%1+Mn&dNb*1x8A|ukY-P+kgC_0E_yg zgIRF+)Eu9JlzYXs9oJ>5N9+oZHx4^dXMc&&&*ez`S|}#>^H+R zegcvep$pHLn!Gxe9W>8UQEc_L*^-N+|IX!Ju;lmWc@s|h&zkt~=@K(}@rZ>bF>=vc zj(jf=66pGz_o*}F;bDOi{-e{TR%%Ns_;R>QEVhbZKgG<|qM#~mo)_95+07Ifa>BDR zeSUr4oZU$~=M-Hr%$!xzZEu&aT$K1Q^79onSrLv0+Md0n{@CJ^ z4@0fYW^GrksyS^x`DMuS_W?Wh>4opyx!c0@$L6PtQ@>3TS}J+}UuvzNR`Krr`YI;7 zgv$L6d|V%};$Jn}Hi7$JwO8|)FedK0(o*{D;q9tV74P=-o(kC&R;R+U{A19rWs{q1 zJ#OX1*~hBx-d3ltqajj#py>X`YYj0Kck36M%RF`v{HEtLW6r!63O138=J_7Z{{QXd z`2&;LTC|>L7qiG8_BkWj_`~zU;sk-Ys=e9bOs5LAY>wZhptIu4?5eIOt~STde_ub% zzU=*kumfA`@?LHHv~5;eWK-6wYmee0cYHCB)wE(|Fmc|{HnTnG;Bn6Q1e>PC0Vg*_ zv_CMB{V;9jbos;ePd{)i=)DsB{_v~_$vEGdED46CvKkMZ3-2zzeQ#2D!|#6?x7}ts zEXtCoef%Kf$=~BoV~;bb|6H;Cq-4A9#Uw+qI~U(Bs=U-2wj)eqj-mwTt#>Z(<%QrwR930$YZJ@tX8HSGzP9Cd{mQkOyf1hpR5E-{ z&HVk=d5QJ(WfzQpPT1+IHshrKty#wms(ana#WtAoPLz?=?5vJzo@H2N#HYsT_&A)) zB{b!f%elpANjnsi?;PE(!JQ)&^~>p4zvh+98ZH~<-TSH&e*IQtQZPQXcZ!y$$!^bQ z!oQm@%wez>$Snx*-XQr-*R|YX^;vCp{cX)_|C#zc2i|p5p+2ar#9m#U=o$QZ$dV6ZVzEN^$;byaSKEtB0=uom%m!M+P z&kbJx%=hmMmaBhLSovg~`owE6yv3ii|^+w}##yeG8mTipaU7P7Xr=}&Q>Liy> zHA|0?OO&S5)7jT@nM_`XRsK7#e= z@EEHbJd-e5x^D}gplwgpTPp?cz$evLe@{PMooB)I>F}lIvSSc~9H(Q!EU;g}I`)k>I>d!a+X56i3e9Q0H+Wdw0^!)e#s=8#g>(h6=BIh2J=KuC znYDSFT>7Du+S|;jZyDv(J}CQi#hTmOd{ubF@#bgRZ$;O4DjRoKE6z+mz`iv*WhdLZ zgPrrHDXqR4$WZ={y{^NNw?S#?Ql5~loKI%53;bKhZhGEH;^lJlyDFbAE<0HIO>w&^ zoA;Jk38Fs5VvD`z7EijF+*K{AxFz(or|6e*prY8;a;PIAnQ+97h!X>r)*R}X~vmM6$-)CtXK{Q0`DVx`WlhY?p7%2ua} zT)x!C=x5wjSIU>LaH3(;KHqZz`lYA0@E_H3y}bO?HN7XdFP`7U-n1z5qs`iFq5W)3 z&od5OJm*yCXWSKTF{7!J!TH2n-Us`y#a3U;x|UmMtnnzTX59vFr@wumHZoa6YGzCk?noyB~k z3Xd=AelZ?0?7Mf3Nh#iO#TSL1zbpM~gVyc+78PkxZnt5T<A6BKxrek3U?3D&DCcI{Q&k$)g%nZ%r`S9*y>PLo9=PR&hZ*s+JJ zQTVIAO#R7O9EX-{O6V4EwIs4-p=Z?MM@vN%H++r!6S?{C=DnQf=jdjfu^0B5{{LFC z(}TO^f8FjyZ59(aGCPI)S@q=;30r#Iq`OT{3!a_D^tju(PV3^QtL&^RRvKmn)aHHv ze}^N8%bV-AXjlG@&Uow1E_H%kSFa1~yqs0$a&5&K(S2sY&$4G4Ute*s<;r>8srvW- zSo-*{aShbF77^b#=T}_u%-Z@_2cUIb2f3hZnA3pP0U`^{bWi&v)~gb5g{n zn8n5rqK5e$;DDR5z@tu1tl-ZY-eppl( zX3}!%l{TY7@ZzrKrnaBnt=B@-oI3U_3EKC4x%$(}EzACLUS#?4{)51V@S_|jO~Vsn z?{2DiW;4@nZ{)N2?5Tb%da~YLTFH9S&mXou>R9~g?adwD+xG8^t+M*nXcpS}I`P11 z23u3VV4m43Z2{aEJa<5Lqa}&=g-%l?rE=|G;JrtYlRi;+X5GB{xI)Y1`uUYHZr9CjZSjb{d?S5d{`orDWGj|r=j!qw zTOU}bw=GEAK5uHXiIt;v%pR<_J>rst2R1l!%o{BypZ>xi{yVf(@a{u%3!E;K5?#``fr$gy?W zTmAiKU+^n>-Yi<`pkA?+%~UsbK{Q{S;tQd6kzBS<@tPTnWIproZIhqkU;ik$=vrj@ z$=2yHYuJ=7yWjbp_aXIk4v&SS$;oSPkKI(X*PWB87=A7BNJrE*rlRwmhmKFZ*S_=V z|9|=RO!;LBOjp$RS}R5uynB=LAo+{ZR=4+i8UL7wD*iil%ZqjH!iPt{gvrd5cQ0Bt zN2R3Lc)d1f+U)}SynkQHD?*P>lnAv5U!Ru#)HY*@^aAf3-_2fi6Mwm?dbrmLeidKS zDtKaP*3BkIo%MURNCjW0>wg&dqEkPY;qFBNw-BL>f~6dn&m4Yntv|kAGb=ca!APo& zbK547m#$L}Rpc!zu=q69k3Tx3bl=W-X@54?@}`QMUl;%U|BN60Tg3RQGA?eFv@Lt8 zvuc_6$Jo;%>tbh1r>^E;)>?b!hT~85#Zl4T=k8p6ZB@98BlM5#b-ydC&p#;lXgcce zbzS(}>XS2%C?^&y;l91gcoT+2KYR+4oB;z|(r?_X{VN>n8kbO~l_Jr6M#`Vuj z?b}uF^C}))B=Y3kgyT{#^4X&TJGUsXRNofgr(wK6B{6!jmQ0+%nx9rYkq>8_V$%3* z_9X3VVdTv&r8Qg?&zVV?YO%t(s41}Ne&W99-$lD8rx2Bv}i6*>~%g+a4A^!KyFpF z)99~n_?iqYggtcde-E$|F=2o);QhxrP?GGGSm2KYw^{888H!+%ek8? z1?DCi-ZFD(Hp{==aA-4^NM>llgiDOQ=jN0iD~jBi#QGvEnQfNQtHw)DRc!fMFBWWm zKldL`<2!EN%42`-cn>*Lc zfAi~Et=0D_&3h(YGtH0vn)zbMf`v<3?(950W&6Yx+TZsa`t-Ts`hnmJ7YTg$`et5d15CX?b}1u4!K)js^dG;Sls~r>V-ft1C0l zRau&O`<%FYu3bxMjj;5Dvd0tJH)}NO-?mhlp|b7l{clIp7nYj${&8=yN;>@6k~96# zjmC%`?}H@{JA0*CXYVbp-5&Gnp>+!XhMQYMx(*4Rv1GkhAi6J_J@L=#_kSl}5td;( zwO=In>SLMhoj)J(c=jtViDq<5tebY`3aiVOJcD;45eIn6`3w9E4eoAd{J*1AJ!)ga zj*tdN?Ubs2<{k#Dce=ZJyp}P@ee-!zn%z);E^MlzL5z5dsiVV;_Gjgml3nbUe5~8@ zkLx}8&F?gGA(x!j&PkR|i=rP!vMGMu>AWT`eYT%%%h^e(?izozip#&KX?V0n{^b2= z(~z~)>&gGBZ(EZeMeicJ0D)pzUI}=v*>uux+~jFJh=lN{Cemp{%{vh zx7qbGMapQf!jIAxiW#sRIKl(%jwj~Om; zu92S6q?9*9sKZF%4A+VqYR@!3<}gca{WbspKlvgxwkH{d{GI&;+YAoPh}K(P{$}## zL)HeYE&odu(+^!@;c#AdY=Y&f@Yc*8xp@ZFIiUqfwsV-48=rmXdH>JS*-yX4E2i(; zA3D|YVT|RYs{$8x>cJqrW3MP6L7#);Lmd*ZVNmz%cAvwTi? zS0mHvFZge%`N>DilP*ZCce6@6xbUkC^DPm!xp%E>md%;)X!C8g9a-B-R|+nA-+F!4 z$DJGZ=1z$_dARlDh3BGwcK(QToA2ZH%xS42OEFj97q`W0JLXx=Z@%xG(meImE`5v5 zwG#TfnYT(UJ+V}ndC%I%3u-R@!wJ&7#_ zueaQEK9^bcO-3hav6k|k4Q*#j^_nlTPW`ji{%>o|qs{ZDNr_w!T~wFK6l<(AC!j&} zLbk3=p_q=?VGsSpeoHsje&>hN76@H&o3!Jju=Uz4OQUoDe_-$B_!rE4@cyIpB(>dN zPfz~W@w35iZqkA4uj&+w99_N7OC0l-4l0c{7rf0ByWzoR%hOy>x#R!o^h7tLDYiy1 zwwz)GVHM-Kb;=bb?mI9$)8}Co;Xqj7eMd#-&e*cNe7Zihe zBr~$lnRMNJ>UR5M97|1zs$A8(M2F|!lw+Od-^=jRx9t2^QM*6isB6lG8s=Qdf1y(+ zCeC2<|LuB~W5ep#n{VuzD<6DBT(+?dnQ#;hOSmEB?*SntD%I^*?d*jTn^*eOoERORQ zjdv;pZ&`9N+E<+H%y&|>tu>V8tiV#WH zxK)efx#o#J-=Taw_uZ`xv9}&}_7*STwn^vm6MO%qX{WfUiE@8-yFu3nP43fL34+%b zXsqM8cdbJ^HO!#D%z38sN`Hm@r?&0rt6lryhjqZrd|j&^xd4?yvELHKC45Pa{C&-q zSpgcZhb{$ZGRjB%ef|61aWCC3UHs+AGnjh%xXzTVKWfZpXwqJNO+QvaS@lHwLu(Ta z5jCL(liGlN>;Zv)m;V0|ezWyLt-Yv5%Go!J3R@M|o1LjWYRdI$b;>_M?$lR0Em!+v zH1;~rJ#o2cmT(ZK&aCDj#X1w#Y~F;@^8CBa(+=ugG2WuhSFJwbE87I+_pY}VFyz*M zed=q(vG*41!4R&*pu&c~w|0mfdT!0FxJFid&R0hJ{cra_nNxhec_M>O$+^Jtn0zfZ z-n)zD&;OZziG6iZ=te8yPx+r(tNbkFmodj2-}R|`!o0%OuTyIE?D)C2YNU7`mhr9r z9G*ALdcm3RZ(X-Ao!Z0yB9ZI(>hQB7nH`Ry>(rQi9X6Z#x;7oWUSt(v8pUFHZ!7EP z+ouEmA869rrfet`&(wP8fd%XCzLlxZ88R8T3VF8jyN0~0`1YaOH*xo;ux($SEB&6q zQBbXV=*hwpu?L>bbK1YC>CDk3o66N5d}b2}_L_XA!}Cjvbe;dEof-T=~A%&1~k6s?V&HZ&$ip zJZ-+_>5uX|``fI0d(Q?;TEAx_o0yam>jYL|59gWYFPd!XRGiOe^u82b*SjKb*XugH zi=U2}eiB;TaY5Fm;TGeAHJf)#|8v>D#XCez?9tE4jm>LW>Kz@W^+E$LYyK}g{eA1% zjU36H?%WqQwI|sw`@z=W5*d6|;k@ndML7=d{}`9s>;9E7V%-?X)%4P6F>%XYD)a2*v{H7S&|JnD` zo5KYk|9S)}n>W4rnfo`6;W_`)p2z2(%e>L%KPr35_-%uIdQ^@Gui#xa_q4$Byw#HvSo#p$&Jw7RwH?1UUT}* zo93k0vv_G=V!mGcJ^K>Z(R=+{zb-sjanC__!&}JzW<)@ZZ zBa6l|^NPMVtm!O^Ty*1-drmzns$jUyxMq`lf~ABi_xm&kHnxXaFS4h+VLrkBtEYWo zdbQ=OsR?EhGR>#hL|<8-QhcMB`s2%)_kaIf`#FV_AoAMAW8an+O(mR0+oo9*78{w2T1Sr?-6&EI74{^*m)Y>3(>c^@RYi6wEImW5zIQyd3i4#1D zjW^R{J9jdsR)m>xzka~)lqYm(TIjbgVl(>=RvO7SICOBW-2Y+k4LvLrL?Y7nJqHeTP5D}&8p6*(>E_GKfMt=kAJG(W!*DVS1;#^yTN_9 zlKqy}%vGx#w*GR|`0QW%>GG?Y>-Q9>E($Uz5qP*^>&GKL4A}>lo))h98CddMXUY?< z<=X_eZQ;Mc({J~S{pVw0eFvyb=?;xKQ&rXskifm z)035k(GtJ+7k&=&sft$ix8KioY=vaZ8E19dd3VAd$4~Fk+Hm-T%Kux(eI`gZOp#Q& zqd)Kcwch-L5{@kl)k{_s8>Ddywl?c7nITv^3X89MS)XcLbveHBi|R{9?i_WkN8XP1?z%G+_y2l$JoTE9l-JDV zbKe$L>~K5&P$PZW;@Q2wY}}Za>BPQ#bv;LalKNT~!BfW1JJ`-^@b1i?J7wL))I&y` zqEmuJC-bf(n}7Q$rQEg-7T9RHuW;wn8?1BL&Pse{|FD)faf)q6{N?G3SD%ng zDl=4O;lBEW&*oZk(G?CyeY?zw+Y0qIv;|mf%`RQO=l8DpC;o+P3BCBa^_ouWcUzv; zDU&Cv(8i7bn_B_NV9^V~nP1!7g-_I{W#(^%h;W0&N-FwL$T z5(eszuZ1mapBj2k>f7TM<(55x6>fX-+F1W;T-}hcI%;F}OdXxq&Vje{DgM_0f3iUKeAQ9$e|`z;GF~MJupQXr*z)Rw`TUjga#i|e1qTJYQ?LDzEc%qGu2AH# zUN(?RW9mC00QW^urq z9pXH!MozMOs@-@rc9ex4{>^wN#qi^&)!I+f?SE^wt(nvFDzRb9hdCSW|2=WDcmm%X zu9Z&r^eZCUD_so3Ze4u9?V>s(sBmAW*`k1^m8wCKlU9m+`KEN{T>Y(CEXj|bt*?uH zx8pINNbI|2qxN*ZRK5WF&@VGn-{q`Kv^i^BI_Ac%SM!g& zKKQPzUm$4V<;}f*vsX-Cp8jvTTtDXy5!nN-6}RT}9AD(R@9^fNm}WtNxsUng-EEJW zGl#NM=4JEY?I!C4eAOFT@q=_ot8Tq_Z_-!C^ctAz2+^|?SHQK zZ<)1M;?KVQ>GQXgGyUmeE&6fl%Szo($5yXSeg5q3re8O=v*c)2Pq5QDTTr@zsxzl{8Q}-rw9U#Cs|H9;pcb7Fr? z&BT~b+a5CtH5V@Va4fRma=+XgrUmk%4u)BUmd7~C-rQ1WW|%5*xA)_!Biqt;s{fOA zJ(@0Q&uiDRr}7?ic{RmA{eOACdzEJ>6&!phKVS@x_(R_HSOjZE06EK_3eXc>+Z{Qf8|Drp1)wy z9`_hx^LN%xE-P<8s<9ztdc4xsi*A1%mSFPOX<~w1<0q&L4 zFP7i&wT+TmwW=Z~&$4>f+0%*_1lAv9R0{c|JR{%Ed*aTVf3l1GEc$0vZDAGME$24l zP-oE0=6h|9!ZRHgZ{PTT;fBJ8k9b~HPY#>@URXv`*3HFR=tv+TgzB0&6 zQD*yQTfg1e)_vb4-#=s!4$Zjr%Y6;Io63iM&(3^5S*B6!_u5|b8n66#PSV}#x`n;T}&l*+RHsnxO=kdOr<JQHLw+ zeHR?Qx2&nFoow^-!)1^5t*1&PjOOqES7Z5di5t%($KBc7i#oQdE&r5}y6u5ap88Vv zQ|6z(?d9&TD!Os&9Llg+5F()brI7ysULE z%|9CdTJE_-T}xl2)mO-WINQD80{25r zzlNXOmZxKsYcf_R?KkGiaElOFUb}!}=jwt~p}hhh`iz$dKFk%{^B_pV{=`E4BX(^W z&o+o@)KtB=*6gzM@G@g*iG`1(=WCWS-oJfKRoWmj%PBGb_`@em^0Qv}Ev~Kb+j4D6 zShlHM;j@n`f*6mix#=$3_eY#ZwxVuzT&?TBcQ5ZV_RD638VGRg3hrQ3jmcNks;*Ap z+%SJT%g!Uy4)aZa+}F7MpqL#~<$>An9d>MFImTVQ#gt*Ggv=W!35om1E!XU=mTu5A z_|Uj9?oWNG<){9?X8bd!zF9JR)}kyCaip0`a z&gJhKCjC10cl+sJi9Hva_qus5*!G=QS;l{f)-NN&L#b*!o7UI>pdHqVZ z_JXSl6?y*x?27HWHarjrl60wi{HvryyZG~x`n}eTWfkut*#D)oxm_*tv$+5C`6|Ju zD;>FKyOrHI#(wmW2Y+VnosV~#8`T_B+KP&tRTt%{U9a&E5qRpm;D&&Bjh;pB^q9g~ zM;Fw@uDB?$+wEN61=&*0^i$Ecl1lwO{Jld@(aL@ObrC%twi4_F{qHPat`cGHeHGB-al}Pz=Qr_hCph!11D~Clr(B%AHNkd8-tn7j?{5f;tA1=+ z`B=9nZ)s3kc22@!Yu=mFT)#9wy4h=~+psxl|BbM%pa1Zb>gd>=J8>aQVUOYZvzz2v zcn_}j*y^xwad7A}y#pnVHOqyKRjd@`ZKaYN$z3;#TsfFT~r@pOvnf9{saDfMR!R?0=G-lkp zYNpJS|5*A@?gGPgCBlp|*PZ=R7a_6EWb&`=(yv!%?!RNr-*$G}ar-&O0yb9+G~E|n zn~c6O8+=btKE{3k-6!QOL{rJk|{m;0=|`eqyR-!p$+aridtnoQ|ctFEAfNHTFpr+#h*{Up8b03 z+l~v%T#QyT33M-Vefa-|oSTPR=%17v@tj${>0hna)I8ccy(;m#f!2ZVdG{91V{B!3 zzTJ3^UC##T_VrhqcApO1;_NRk~xRvw2Y;1Il5lXtAAIy^WVkWOT|yM6s(;# zfBU}|hIiHr?fvxjZ7zesN@u@66_Hg*ygUMJ8Xp;tY^oN#_Ur?z*lB@1i}r8#T_wny zu>SU}`;0~3&hnalV02o(Y>Sxf`!!alQN`|NZjjn8GuiuYO+2 z);P$X-E9yhc4(XU>;I=>?Wg{}e?;3{mv!!plT25A187Z~d{fAW;spDg_wE3-HZzkRao7gxUXvv>Bw zGxdMHMKa&IN9-go2qKfEh1s4y4Dz%MH0RqOe=gnlQH;A1)Mbp#qud&cJu5(o_ zcfU4Fc~W>R<6+i;FZSEKGF|Pf-iZDa`!1&}Qy8@5qpYx)q`?&Kb#nr)ggc#F@|3NA zW(lDd=g z{h#e7*~OErtF4v@{5c@PlbAZW>r~11na1lj{OFb{dQz$Tub6*Y^$O4Wcb%HzeJuCB z9JBh9``o&1UP#+bX@<{t4Aw@Si!9WdGu7zkR_W}UyJF+&vwA~J7ao++-Jbm8PWrwo zsk&|)9m@TRrv4xT=B+r#azua}AwC&x>`=>`N!3#E#4lDQ_&Et~M?W^cex`FAnu ztK;r1>e?fJYWLoHr?9ndjM8b7#gkdm1w}3i?DaBums9b`*dm8v$Fr0_i*|X1lzsPl z%pq`j!3mALRe>30A>3<<&PdGf7n|s%5m9C(e6owR;PNt)Y;SM-fCUk2j>JWVW^tSk zReB%B@bq}5_gs$SVaiiXS3G9bopWO1tgy=5&1W*_OyGJM8sfa*!r~1|1{FuXBwc)M z$F;bDRd>w-wU#FpmMvm7&!Qe&y3X`ssmOPoc6Rm6X&$BmM~^LBaeRTvzb{ATKT-bv zU%e~t24CyVBRWmZ0Z#(j64%T(K3u+iTh`GZk?Hf5d({sYGa4LMm{&f*joIlH&)eeM zqZ_VN-{L!De0+gK#k%!2oA@6qU4OK5V;#q3uP+aU9(p&Quh{0eMDLVjlgwMU#OURB zKHZakvS@LC^CY=R^X~a6^d1b*a%a`!dVVZX;m()U@~8E$uRpfpM&WFqHa?bjjJ%>r znfyGA66}*-EK82MWB>O-{L@$5`j;=L*c!VrE9tDbx9M{GT+XN&Hx}ERTx6CwW#gL5 zHdl8(lR8_SQZY><{{FvT+n-E-HS_&+wllllAKE!h;gDm_Pn&aFio?`+uFOs}wY~V( zCsR6Y??)zOlPAu`W<4)CkI($Ua6gynQbKTWGoxH1L)!%FXAdOb+FzTOTQ4@XaoLg2 zKdVFy)C7yXRDP)cxV=w$_NV_htN0mg&%ZkN{Y*yH#SAy&#d)QX({gu;=QQ)087@<6 zSjjlqjZ>H99j}1F!M0Xj)!DwAJoRQXM4o6%QZQo+mti{gK+k(x%IR0ND!%W({`>db z=KSxvO~wk@UuyF!*Pl+ag`Ep<>*e!5{%LKNe?xK{>;Cl19!S$(_v3iS{r?Z@ z?|Qp(?^!9f&mjMj-N&E(fwh+oRtDD{U9#Qc+XVUbQ`H|oczpcLJb4?2H^vIlyt#bM zwyx(twQ_v6uYW)L?OXG>^ibL31ve)P0Q5VznMpT>T{cA z68bA5`WDUW4|@22F>*$kvxV_lx;^WX4bBHZ{Xwf1TZCkzH}oTFYK!qy@R`n8spm_$6)4 z->Ij=Z{0Eu+oc_SVMX(U;BKwsqT8R{Uz_pPRHfh7bmD>b_6G|O3V*v}53pi)H z?U516Fttg3p)$>~Yl6fx+510dzGeLsI$_f(p|E!gbrO&65WOw4$}&|PRtRld2{Dv;5AlP?$#IG_WRE6+h4u=E0<5(T&cN>x8@XztuP2^ z=8ycy+ea2Co^h`G5)L*Z8A!gf*AAOOlfBgA|&!m2?gS(~gTK4L6tZ39@ znVp^K$h|7}Ti?nWeeb%HmzE|xF0bUzpIbh6W7XBO#{TP#`)8)9O_=g_!>6Ws!nKz3 zy}fFdee?-wrO`;vd8|M|Q<2#wvkcAEko! zfQEjVWrp2RSCtk#6%EW6eJQ7Bbklt4(QSdR?=Lx~ds^)COr7x1FbC@=J#QZ8)c=+L ze{$c?ul0)NEl+%Vn8g36oLzf=%e2?5;XW1K8(OEnezV8m2&b72hIDpz5jnU z|3lh_X%f#ZcD+fi|5%ru^LP!%#7XB5nPB z%M)}uBc~m=?^o?r)NK>Fm$_u~E6eJGx&KdzzuQzTUomapldi>&wZiAj$j&;#!y0_T ziDPq>$5O+H?ZQ_U`X}0Q_O6v~{5Ea6kiFG!rrl*#?ST!rqCMN98 zl<3RvZV5kw^ zd8fqcSZH!EChyjUgJ$#g&eVA?D1ChL26mpz$g{ljO4#&@Wv_H!s|`vJ5_odo#_ji| znZg;bGysC3-!CfO%U;CIslU9xBW=nj^x?0i%w70 zPL*M2Y*`Vz=G4Zj%KeAL)&0MI*q2uQ`}Y03$>Qt!D^}}dUfVoTCuM5&$~`M2z2n#Y zeDjY>;)V)aoWg=nj#vJ*+>Y+NurxI;dH&z-^EbEeTWeL^VyVbk86)%he5a;Jr2WaI zt4~h7b>_6{nba??9A3YB|Emj@-4VKZx5}+T+G$~c(e+EI-g|4-#=SfiW8U;kD|}1K zLav`(v+iDCbMg@3(UNerT;o$-m8te8<@kvN6#0kj>d;Kp*g>h}(lh}J?iaUpNX6#k(xI;0r zH)jQ;>^^VNJYkN}u}**I_8$jd*j1d__rE@0dD}nc>K_x2=On&%nzAC}@9wOxTzm4J zd>-#Pq2!S*Zav|e_D9wKKJuP3KKB=Fey*DA%6fU#+^hROwI_X@-}q>h6=b zul59OpTwqr`u5w{_qD=XF68X~_GY8(?fDz!Ybv$f7h_I`nRmTc zINEPNy{`Un<%9GV_k{v+kuP3mh5@ zNAVm^t$sD>`p!R>cBL(hUa{k7 zdTwi&-I7kfNAq;#{r6i$|K>br8kp^QY9Gha34XT)CK;P4xJ7ZiELxpp|Hu9O1>KFy zIt7=W?^@g2$U1SksrO`UGi`h4>q|M0viMbJ9~3wh5!bi(iG+(4Ly}hIMJ;(nqatSZ z)f>u>+5H!{-?;l-^)WuaNq^T?EcL2ZvAEkMTqJc<#o(vr)!@%pmq-aZ%t-#bcU#Mm zHP`q4P%V3EIs2{D1MlamDSC`u98N*+^q-&Oc*!Qws`TSf-@IqGUsWdcyt$e0{{8L7 z*y!yI>%^ulI^ce!Mr!IxpG&iDxogclE4(OV73;?B4=2eVan(rFYulUlR4aO=n=*%| zp_(cuub@!C>uXUg?-p4JU0e3*?TKDxx`$OS*=hXXT6{qR({M5J`cxlpiL-&N$AH9TQ@BKQNI$=}6 zLsjwHb4?acbW-*A5&kegdChqzhH9%@x8APGj!QD-p7K)Pd$y5T)R}V}8+AW2PyNfP z!IR#d?i2J*?ez9pwHz($4oxXr_&M3Z_1&+Rceho4&)cJWo@uW4&PB<$*p;tU>byAC zslNKa#49T{nfU)HThp|{^4dI>xvdRn|6XF*xVl(O#cO?|sCUED*e9HGxz4P}a#XP1 zq}OVsk+|A0oip&o%g$@uD!V3K|CQjp@_gC4y0eoz3g_nSUDB%EF2kfVeVOXKhwzJ!aZl2#nNoL>yKss;Fnus(%Vz4d2czJ-%a;chVMZ_VH?lLa?dRe z{UDVqsF$&Rx!VQ)NxvW7;XEC7wx(?*?{w4kb2APyg*#3E6jM@v{ZJmit0_ZCh&ShR zrzw{Mr&Jt$>N?r9V$HVv>SOPAe~;Tezv|2KZ8_?D7EKWNt+uBt_3k|JMFo>?WTu^H zEu1y8_L2WB=HpHe?t2xSj^nzxQ%L%0-~^`Erw?sEpHt0MCDgNeUHi4@^xUJf{IpW7 z-hRLT+s$E>RL=Q#wc9?=ocryrzTG*?ELmr_yb#;5}Lg%Ms8(y;USAVqQ`uVk| z@BA?8dG3<^E2dywB)7e}sx5>N>B1ytM6+h4Nu0A{aR`06v?bm$gF?P(nRpNMpt06VfRIjS#t4!F+f;HAxPfI>C z^N!v1=SJvRgPjZG0W#o;JD$M0s^|4LE`L4zB~N`{N9+E~Md!9{ z-DsBa)TzR@`Y~7aQ|Y`7Kj#{lZ~2>f;m$L`q7`X5yav6&rAIENbsl^ymOpQH{{KH~ zW$S?g&PvCNBlie+&k^e=cSeFxsIuEOw};V>uH%Q zz5mNshBu7|^^ONsr5!Je-d?3zA9nNqpZ5KmD-HG=O8n+%S~vN5)lI|mmtwxwwKAvh z`hMQ+kZ|kv3-7h-$`A2ekVyHVxQ4~+O3$RPXZmEnN!#d}*Z)fMdjD(2>`gb7pULW7 z`tWT^+nQqGx**G`emRf6IqG&EGh+XAzJ%MU-L`ObzwySJpGDETLDis~&kYy0P zCeR#eq1@cNqAc1owM z^*s9L-H-ngHXPg%GF8Dqq4veh+d-{+x@YZr=bCwoaY3K#E(t|@m#IhH?Rd<7Z{_$b z9rrXhd8tRXW$M{id(KY!Zs^H(kmY&7?`i5DB~Od>0!%yBd<+z^Ik-zNYSRhD*-Mo@ zKgRHh9kKc3Ub4*eADfNk-o4Cm&G)=JawK=W|9-Dr-l=A_?cUtgUjvS*PVt*eZfrSoEuie%JN`YQQL~CwcFA&leqZy>{?5waZtlJF;`r--UF5&< z$@Ff;qa_?Z7c#i&4pgpt+WhQQ-tAv6!hSz2|9@Bb#VWO@Mwg-%rEJWb9JAhl@9*rK ztD9WQj+@(Ob%zVT`=sVr=Q2zfq~k`!C5;L)sp_nODcQxhSw=)g>0ALy32$vE*%RSLOYES!itv6X&mMEiocL zgq`%lV_skOe*CTSm+w)lC#IcGId5^BSI^s$=Q&43Ke;Y>rDfZ);EV~G8*6hfi!Ur( z%D9Yk8jqISl=%}++I?FlQ*dkgCGLQY0j}&)XCH52^;mq4XQP4Pr9)31Pn8Tw_W`5T0lgrJUfB!af~*jA(wEbdhr*j zD#P`v3)6&M?k{T7PnmxD*4HJaH+o|--%ShO$IDaMV=mAOV8rg)Uvay<9v#^H3EX0BVNDS*A_6T)P*zteT~q)W0@w5joTNf-1+?e`)#|b ze*SNh_V#KQ3(vS>9#hvEyQ6IG+T*h7D=y|tTxECTVeVYZ(@9-ENufT~O50d=%CGkL zb6N27Gk(7(YqQPTvZM|3KUrDb+?w!k zBJ+m2yEDt4{rdWi|NoEuYh)V~7Jk2c@7OGMj`{<8WVszwo3-8_nyRg~VzV7<)ZANp zyo6__@dUDot^1~F!+LhdxA~P-%l|%msB-4zisfxGT3dzK#f%o@ugkvY_+aL-rY_^d z{+~Z>p0m>0aEi-~Pm@+WyYqT!1f$apg$#Y7pY(TkK)w?Da?E`epXd zQ#T2G{mQptlBCZcF`pF$_m8eHo>sfd;_Tu>mx_dRr)E8T@x1=HvT(jf_JeSBH+>z} z_XcV@W$6lsS|%J<`4*zcbM#E>iDgwE;-sYizMOx7>FcfRH&p>Q)B*#tQ)m8;%blXMf|2Q)Lau9ag02cFy}8zV^T*_2);6BMun2e-v~3y=4AF z%in+Me=kbkY47UlDqOv~(1J-iw6B-m{{8=p zY}~e=Z;H>~x|ZvId;9)B+~Ex|3tQx4e@;5hA-ckO&LMxB^>JPsAGv*CIgr-ou;5PT z^+cAc{DoOd*cA2o56`)`+CZs7Mpi>l`(@9Mv-_*(>sm{!;{ebf4`vo^;+lYGT6s&dl9{;wC{Wnmrw!i66hnt!ghl<7l8?d1{nKEQ8@1rt?SI zXRiHO5ndMZy!Vt`>!Hm8Mb>qfey&ql7}W1ktaD9KCB$<<ylgV&0YI1;*ZUWC61|US68Gdy>d$IDD9eWbHK^&xPI%Nv&A}M znr9zw;qA@Ul@YEyJXu>^R#rYeH74$|`ok-B<=ltsPb-p5F&z-m0kW`~UoQ?jH7jws)u8ntEb;-aqP<&NcOn4Bhl*>e9I?os-&A zbXOf+y5Q3?gXTNCQUbrEd#y`*t8se8GmCi}^#f&>KDzkCO_68q-s^n3m9P2F-1PkG z%`FZ=OEeDjtp8_UpMRWDQbKKdqF8^cQ2V*t71MH^7To{T>3`#u=;{vZOA~!7{$6>! z{W6E!M83TaYfD&vD3^C9Jz-J~Qf-Q1kt>^EeZzTE#Jdo8lTG_}m)RuqC(f)trdvGe z_Z9DZ&MFU`))(c)F67wVz`O8i`hEUlp%%{rp*0g%D4)GQl}V79OHOfO+P7ISrKTPC(b{?CPW8Tr3$ z*Y~n%B=1SKN%e)-12U@o=dtuBvcG1zwctSH9*1Z-6Op7{s_SlVxR+&h zt7c#D9L0m1%eHX0Xq=r}`cLHs>v#JP4Yqwj0jDiz_;-iR%{=-cd~MWQ+3PHmwH~h5 zsqj7JY&7xai_fKfQ(2-voV;YcaFY4k#J#(YJS>$~FIjTo;L3Z#70gwCcP>(YFQC7M zbJDete-^$%cUT10u0EL-?``(`w_TC&L-m%Q>z=PryP0@fZow$7?EUKRJv3A1wm$L9R4nzp)e!TbJ}O7ouxZW8 zBTlNmcDqAslsB2qH(7Y2pNn+@#CU#d$k_MRwrzB}8%rBIzJq(EB~yRTYYWj zw@2YIyaqg6XEN-47IYde2=MS|sJ7>@IQmC$(>>KQ>{)BSU)&pJdqBpsF55-ptow%C znBDUv-Z?!;nz}&w%#VQ2GRaZDrx?vqy?tn_8e>n;k`&WrYOe#|<-8YLdMm15c-7z5 zhCHRuHw`~;{e5Rak@CUfbCb3!D6UzsIjN`q$K&^mp4`qU`+{{fJUG6VdTXl3Y`atU zzc+uY=$ijaygqcWo6V{2(~aDFMmO}RUaQ)&y&;=|b^lK*5H!A8DV!XWR~ zvkDHsJ7iSvG41E_JhnB==DTOL9hjneWO1HN>a_G-{ymBrtC}9Bsy$?xyCW!#DTpV? zY5p2jT_@uPJKiH!U)gq+g*M;4*}2p&Cj2MY&AhTX%zLf>u65DAxNdr5VPDJ22d7*d z%~{=fj?K`W<}%$iGAc>fv3u9@EgCiXlN3(h6WPDyfvn@AUB%N_&T3VzP+|G&!|~To zQH628%iN!Jv*v4j+{~vR%ztka|K9)1WoJwEH;3+a!^_w>t}w&dFEynQ~s&)x70mZ z8eG@==+ERiH{*^Kbxk_&$>?op?mjEzNB4x;Ubdpf^6Z_3XK$&Nu|>Rk|M!BmjbTXa z#d$aP-TwD|`uh(@BHNYHYO)fRtgEY9&%?o4XMcQ7yXK1xtxF=mR!#W6a_S`$_Ujkx zUaVzqpX5Rew44+E9 zZ{-%MZJw+#WsyZoUC8ICW9^=8s>z!Lwmr4%kL3FN&BS|u$y4>CYVqRD-);L1L+{DUPp@h@7o>RRbm#PS-;RW8ZJG0>BgbO- z^+v`N=YSL++TSK0Bo-8D0I z-p|Z4%CYO8o}0y2-{1GZ%y~xre|P_zhAj`BI`X+v40i^&U$C1Uer7v&T+PH%on@L{ zrYDUOB=aj%!x(a;#gX6_kMENczm)-$G4!J7njL>XX-mBd~FXy;+f(n%Ot&FYXPqO$>99KZChL8&)0S5 zPSCSo8lS&R@^;h+?k#+sZkNn&_eJ`)TTjf?df$rVE$@V?PETK3(CYVedDXT_-lm3_HvQoWvMwm9ukqUOm zelg3;GUIf3$<0ku?|!S^|KBZJeOdhP0fN+-|VD)@)v*Anw> zhuW=96bJskYvMjX$IAZvlF%nj}>Ba?UQ6RUcB0c!fng5p_#bEa_Gj zcS|}JWEmTxlK7@+&!@Lf4`>^ooqS5_%cQzTCh7~{n@q`Aom7{3=;gKI;peZ8#Pr6Pm9v+$_Na?TwfSrAoZ`j0Wlo0A zZl~2=HM+)=ckDk@J4syA_`nxC`Or8W`6||CAD_ottPU)(-Z{JW#+%RE@1$@4``gUg zP%ArBF65_EqKYZU`lp|BKR->s-K46JJ@M#HhL~@CmD~jrxhuUS?}e5zUB9cDbhO>0 z%Tc#==7XlD2~T&ewm)MmU}MU#-6zEV*1_a2>hhsVd>pA9w_fkQe(Tn^)-tgT>x4~Q zUK~G_k&}BQD<&s4C9=P>Az`1zj*S+XZyuTkmN+||aN~AsNH*ACc!KlwA>qR-ZfyFU zXyTmGp}kKv`kVOgZMP>2ANlE7Gjs91+MAP7*X=kHTxBPg&42Bjf}YV)%}}>1UTLQ% z8BY^77H3(Tl)@1umM!`5{c8Qam-HGYp5YT%9KLO-$K6lEEtl=@}uesth2bHc;l}~*6g62z4FqM4_f%9{9LQT_;&BVj-M~wPX+|d*b~_I=vvW% z)4Z#BVp=v&nzAh7dYxD1F?KeM#S7>3|9JU~TVL%vV``7eG0RCD?48!%m~$;l)*Sz4 zx9Mt{U%0X{YJA6fRCa=$o|gho}1GePV7eOiy|> zIL|Pjto#4Xx4GY5PhlwUy5PIl>qpEC_h$a@(P^!w*}v=jY=6WWtXeSB>zI;P-`A`C z^HdWBWiC55#Cmwo@IScZ>Z>BjL$1j|Z?5V_FYiCF==$cVZ`U2yjPy2)$Txmm2wsV=k_dWA_^|ZRRd-+bssLu9!FXuRc|6!B;rvC!Zc@Cc1@k+oi z`N;mM+ZSFq$#Q+I`jbm4;g;_{TCv=c(C9x^JYjp<^ULRNgzx(l8m_RHsjYfm-7C#i zu2m=Izudf3n`3`v_?8=!T_0@nUKqTr+V7hTTa4#UPOl|867~1ozx$;0C#{+9FvG3& zMa7F9%wbzif-b#0(YE83do}0Ji_8mGAJ(h>xYX>j74vzCgR*w#zShbyWi2#LR;~~_ zJ*|AvnS_h;U$yV^k9zMXCBN{+5z8s%1(!~nhbk_vX$mxW8QK)>f6ha?#Li<;e1f}1 zcie-3kFIPU76`u0ZOu#+A_4%Coe^L$GJgzdfjD{ie9AO zYmHtLnlR~!bMUSc@d_&3RwqJ&U(V&t&&zzvdiF?ia_;9@;?J-5=W|>rS>nI>5x3#I z6tBv4lRr(}<2jS9=*6}xp6(sNE653td{7iZ915w%nC zr`Y_gM~aqif{(9nzHIa(>1V>>-g(~*b64e{f#o;mPC9 zkyEVr8(sJObbTKA+~}xWuh530+ZwH2_zCU#lBXJD%X;Wi@fI5q3uogM@u#xp32psw z$gGOx^@r8nmpQlGjXnRynPF0-cktBK(6wc1*Bqpsk`)hS=B+xqtWiJq;?>OXxT1Bj z+sb;sJBVG1QNDIpV&>^r+-5H$D_3*deExP$o^rrbfhpbEx%0MR>X!1YHzd<@OWyp{ zOnQ?QzVgNP=ie&t)+%IF^6qDu;PtcM{VAjArVDt=BF$Ey!0tJo3UmV@Mc`CzlpOnaFH=VfqCcId;rq}Ll^;5-#3l<7(S9F*#Wu@$!K+eE} z3${!vI;zL8#m)A@(GA%wd`}J;a9q21^viY|Ss&{9XynLf(7PGM6x2$9Sa>EM` zx@L+P8~4m)%@%Wdm>GG>u4lpJGohQW`^#y%H%wM{dneI4x8c;+6whPJ`btivO@FHM z@Q(Sl{P({Frv3Cje0H5grRkxP3XV1Pr4ft&Z0>W>pDX@wr+<;#Qi0vpl8Re@UOK&I z;^#G&+;?sbovv5@nW5_o^Y_1J{ykxq_gSN(rM1kGTj<)YAH{liTr3t(ET5FTILOq- z>ec55f1fTqUFM}=TX=q|&K~b`;gc&gE5bFqkDO@zX=h{7cBtsUpypzsdk#&IYjjh|--qjaoyD8b9XRQ?f9cQJ?Y`)l>*a$Gd$eV`Xxs~VdA@$y1R3}_dQ>+PBG_j;{4|2 z79G5czpwe@7W1pZ@=8+pyk@H&nS(d487wceQLC>#Eq`lke$0!`wteR#4bm1)jk#IK z6?3S)LD%)j=Qk(0JZH3ST%WwsB293<+_Za7F8eYWv82{ausw706YsYkyo;WW&Wxx7SC3|BJr73e#PAzLc@@R(v|1WQO5h-VZ zq=mMvF+2}vU0WaX(4@Vh-(PKGn@->9UQcF!aTUpE%?ZZ#9^JEBxAtpGxCw%qCETBw znmCd)?!J2|`7hkl#xnS#xjN^Mz?h@k?-i}D{a+?HMN20u7` zdaGIAQ)@m&{e{mfzJEIUrKG*^k>-tWo8xbK^0OZP5HY`y!^+R>9NSKTM1fL+6~5Ww zH>>Y`GOJcqt=Y8U>9k;{7~9hOoB!B)-TA-McE{G+v-eK)elApSx1dtnQscu)=Aclf zJFiz={&&K)Pxo=aj#mrRTpc|-CWr87NCxn_>{%xJ@Mix})u#?|>~lp;YXX}V9J5;M zQytTFS>@fCPd!NvA@-7rsd+ci=H#gCq{f-(_(4(`TU=s z=`tOQ<35IG8Y)FiU#R(VRRX8ugHI+Rl^S)WsXH`}UYxZ2)Jx|df4gQEEe*H!$b4cb z)o*a`Idjxzp6!LohwfA}Rd`0d%+lYrK(#-1OZZfwSu3mzw;!52Z|Q{H3X>TwX-sy| z%P_bY>v%lKhNDfsXIt#v}mpR*ut*Nbdbol?%vm(K2!Pt+@zW2IKZ#ror~ z{J#Zz-|WhMGj)AkFY{>)#nKSD8S@@*`+sw9#qkrmiXlsaws<<}7i+Kw<+&9uj{mSo zdu?lqL1@l{E8o7quvs>=_*~~Ap%XwS!>9}ovw~P|m?p-Z^B{7$i)6((!i$4wlhm|vS zJz-)xx|8|Ca`QbuO}Dt@ZdcpWxSXxZLjUxd=QlKW|6a~NQTmHSUZoR9!Gg%C4##|A zWHkP${3Yo9#B0r6@>8DNRm1tunGQc;Uz2x07eF zmK9f(J^Xi~$%fy8`)^XQP~&o6o}H51p?_5JCTx!GF8}o>>B3aKNi~oBiw|ZrUuM>x z|JG;26EnYrrSr|#&iU`UNW$=bw0-gRyZK~|>S)Pkxj9R0pI@rl{a{x2 z+UiL4!Yi54zSkEnJ)-!0vV*e0v}>%~Z#&iJF&uqsS^Z_<@(VfBE85lsT$FlgS5hLQ z!1ghkrAnVy(eIsNA>YAp)2M7&6PcNFq>8@Zym6*OcU3%B&6|$gxYD+}C2vo^DUImZ zyrWw*dD;bw#@D%i?;H(dh4#GaWY(VPt+T#$->a-bE0?g>g`3L$Kgs`pY~G@OVP|7g zbWIXoQR;s`Mi_Gh&-7-q88wI2PJbhb!S=e^NrKeumOPPb4%ijtaAB|eK z=uON0^Gbp5`{VvrRYw-9`^MZ5RTbQrlbhvJSajj{F8eM8X~l~$4Qh8xZ|3jc z@t^TQPU4$Y4_g&|W4$*ibIrcfJL`Vy^_axfj@KtIcQAZ)?&sSzmIZqk#XsD5_=2c$ zx%hss%N(&b-gAFC^J}NoZJw(%`)=z_b3RUm88Q5!Ra=b~bDCFcT(D}NW! z=`CB|zvtJRBGO;*b7#=R%nd(u4Ucd=nvy#2cx}`fRc)Sw`~IvJcs9o=^4YBES=%g~ z6Cb+Se`aRq+ZB4Rp{Yu!`%^Q==hg9LYxjOKU0>4b(mCt#oVkj3PX8`{d+b%8Re7ai zn#JeP(jC()e+h8if7Y$P`C02{!EYtMg%=3EOTIY!Q|P;YC+~i1{QhsFy0F)T^N(%5 zevx&bq215avi+;}+U8g75B5KqpfP#w=Y=zNCVlDcn*TXpHTcx;$JVpgsysj1>3IC@ zx-*)dL7kbu%b1O=9o{wHc~fK7;=XFWn@f6LT>5IWHJi-;zIz{Wx~Z!A$@S=*+rhhE zuK!>#&+wTV>-5suhm5b=^w0Z#;Pkc6>0L2`kx$~bbu7>Qx5(}Hga6*1H@jS~xkbE5 zIA751f4@;{zjL~guja)H=?CVeU&?13ie45Q=+F6dvWZahBqJNwA6b19 z?%0S(R&wtDGjaQE?Rz)bmRXzrs!N)uU;XLK5-ao+NTc&GsR3RunY?{{K>@_QE@TpuYb30irM6+We+c{ zv*>Yr@KmLH>1WGj?OBm`fARSRr0KQ^33ks}HucW4g=NUjSvdcJo1o!tAs51LuuvGbOryw{L8bNf3`#qSkIbQJnR{K zk0lu9xce*=T<@kE_LWKJgxjkpq1WvX$K0xz_Ndf3;#}>HH=&C*&zkk2axI67&iz7x zJ+DqkOiQ)*EqXAe{Ys$Cl}Td#hZypXuXLQXzT!~a)USFgHcd^@)K@T1oDp^8XD@fo zjOX7zKd-*O`|JS*rmOt@HqYO7`PX*XG^SmfH7lj%`_=V(8;h122g_6)iqiZ$Y0<;d z7i*R)G?vEMa?ei_QlSrY#V{hGO-t9wR(q>6E)fgGE5?6gYX+6Sg9 z{_S42>Y!Lc@2ctt99;LcqJEuoww!*=wy)LJ^OL8t;a0_Sm&*UW-+xp6{~KY(_h-I$ zTkp1>!?uq$b_P*WTH&UB-PL||(9Z{{n!OK4w>2CPunp^fzR6L;bVw%70#>-{zZ8$Q{ zGG;TC>~%Ca*|qU>(9FeVcbb{sl=5CR-J(A4$W=S1>?b>y74H7YEx$c=waS_3wu#KBx3oZO-rQ@( ztLFp>UHUa`?as+>JT|FRZgEbV`pfB!x8@73RW@gXcs9oOEVlUWsmOWBc5WQkq)+cR zEsWH%Ij8t#m2hxTS~*=55MQZECpp!j${jL#gF2nS2Ua zxGztRWm$5_w{}NfHQ!v7muv;>3{f(yUc7z^dJk9fPj*nN5mEKxRF3-ktoO*_7Q3tM zq8GP6H!xVcbsNj|JC>`j-FlX~dhg9{4$m`*EZRP|5S{s=*zG>c z?w@P(H=aIs$0JEL&w1YE_T5EW`cq_DUhE28eXv38uxR(Sg8?&w=dMYLxwBm3@6Px8 zcCVc*@pY&8ynOEf4!2b=j+k{ma9!cQV1vy4a)C6{oV7dlMt69gzN_zO73cj(!L#CR zo2h|C^4=X1{Xy0B$FCh=W?EM;BHzg|4^Y|zNbhNXG02~%)5>AFRdy%-uZYNv(0zu{|{nS z`Yv{bUE}`!|CRZ_zFdp{F*n-{s-{*88h<~R)^L15&4Mu1ZpQ?(qRHX6-z}eiG^*-I z-p-%K4*hb9F9UicUaKzTN;@07lcCsa%BLT%d)6Ok@oeP_IDD}@L7ZLcYL#yO=-QYx=LMinwu=RV8n8>BU^Xyo94mTot9d zMRZlKaJFdtNDVr1G;GqLN!o6E6#bLfMcdLIsW_fK__%3rr)P@x{tc6aHZIei9MD~_ zX`Ujc9TBJ3n)2jm;RfMz<^KNtZ|!Rs1dqPrUMKPNz3KY;wXr`Jt$uUs{;ocqH&zKH z)gklS)6-@dU1CmIV_to7@tU_%Hff(fsBi|PKU}o5Oh90kbzRYPS-YAW#m`pad+>05rh>KFR5tjncbx8Zw0 z)iR0i5+$ZO$u4Jm6nHLO%h;o|-G={2u_=H4_0{=17)o}S?(17TB`fUl+KA>>eevB+ ztjsDxW((K!ed)a=C(>NoVl*XO;r$(%2|dM^O}C{VuamZ5WC)i3X>p-s@}sAJW@f3V zbDVfyb?>^9(bMpMZ}{J&=D+{O*TvCWtCwr*+Vx3< zXz-n!b=|0kH~gZ^W4+(+-bQ-_NFV(aC17Zp>Ur2f@?bG2Xk#$NRnE~?5_ zUXabG9(bwy&W%$A>jJ-N2XybAFUTczq&3x|`}RJ*ZYMoWRfVsQzpZ1uADP_Qlbp1M z<8$Jj=gX`7Zg#$9XGmXgTj;4A_l7^>6MKUEZ~NyrcO6}jVqj?e@l%-9RL&?6tim8|Ut>G+t`woq2&_p5?R8JccJYH{I`lcdK2xa7It0)V6?W*SAVtv7NQb zM_{`A;i?Sw+ErCs=KYn}bhja;=IcJ|HFZCg(oN>RIj^&>Ci2LnVy&(BE$dr0?JwThb%vG=N>^L{eL&xT5l-VP{@%YD_Fk2>e%ZyEQzZm zRvK4k!&c zTEKE+aZUS&0Cv5dcaC^n`c%N-m1uX_(L=Sj^}rdva}Bjq%TqWn%zmp#t-mRmZ7W$lz{olkt3Y&BU1rj2SMk)T9x-v({auZUmJmBLcPdT!b-(?@rIUHBcBD;~4wrgQA$ig_(_4Y;SZO{#eMbOv)=lth~?3()7?H7)Rxa*weZ#3+8W4gYF&HT5d!r`lzbe715t2TMM?M_Mx zHmGUz;+V2n?)B@PZ!^}}q)QxKFmc-A%a>K=t(?hu?a%`YG1Xk()T5_Gt(Y%osO@x( z`pO{o;-u{Hs~$T}-1@4<&6liotACO%r{P9}za6~Z20OGbF@H92m|FgEc9w(dmeL(( zUblXo6S+cy|A=0i=Eg<8kD9O+81gCSKbqIda{vD?{<{0?Zf-cYFvGnt^xK6?B|HHV zk*&E497`L-%$HY1+?lexZ;nz}d%^Kr7mMYN9^I1=*q-|(r_Adz!|BXKnc$Qe-ZQ>m zO7(hu(c{v@Ntb3#D{l^s&)>>1J!+3^afRI!p&vSH6YF_Jp4RXF{Qrh$OW%j9uH3U$ zhB*k#Z8~AgxZVU3xADT_Xfwa>hIm(xexa7vS;YOum(--9ee+J-_W2?#k+190WH|k|{;x1Uab2T5 zBI@3`3Zdez_eXamomr?5Qt{bH+51-Wr0Xe`ZhNcG#Ah#?&~R-1d%pm&ZT}zCd1(Yr z+IYsj;A7U`DO>N~y2GYBcY|vz_l7I_Tesi+;kKYU{AS^~^)ko067?fDUJ_#v2~oZg z_wDuV`~TMceLDT0b>6GoIL%9bHI@Pl%8>!8kx|0EnU;4M!Y9-#c1LF~+H&@JwSiW3 zayqN`wC`(9Dc`v)w7_v@r?#ulYZb}_~+e0zK2sAihK#P*h5QZ_3u&sUhL z`Xl;d7w?Oh6p^XYx?7K3??Hx6aJ5#GM<^tt^UiR&&%T8O-Q zxTZ$-?f!r#A*WWZ5?FY1tJCS)1^2gJGFjG`*Z!7!*PAN~8GnDfzCYXFZr9m)wN?CQ zr(C-*r`0InP+9S-toEb}2P(uKX#V`9elJhI_Ow%ej7j68iw5j6Il&sut^FoDGd8)K zr?^R!WWJvKF*I>|d(7$|c7Anim6}GEPHRtkCGq{mGo3uGd6Pso{#f_n>8q%>zCte? zgFP!fuBS4Fho!1)J<>jPD#!HOqFixCNy2NVbySEJpFZWXXnuj$b7SSicP*1UHT|`Y z@4UpN`sz$xcSOy9f1$paHpYp^oNKv`Ze8e^diwuQ$z2PlEJ;7c_50wr`(5#ey7ceQ zHJOv7K5zTWeJ}oLgtvPyU3tmt{H!7wslPrG&i=c3p85H&!^;adH*Y<6Q1-CX#P^%r zA}^`Th$+0gbjmWump6QlRnGSEZ}C$Nn3#2b&9?{%r*)0Zzt2p&8+ZApdIFb7^TCaB z?|&@ei!-Bg=2!-HvIIwQ}sAy{ky6k8ZI4cSE~tVaSK0gTg+|g6E-#G z^CpQsN7%v_Mpvxdzx8;|(Mt&id|V5Cs*l;PP2;_@T*!EBzfO63@sn2(UoPk!o#J*; zD(Zo0tj+(`?{}PB7rC9S#abtAjccXgF}G5FCi(LRWwICYTn~(?uHI&w-h903q-0mVIHLv{r*L`?dIu z>hpUJoqHLPR;%)(qDbacV7B|>t&`*fPXF*baAcOJ%PRK!6PbV2sHVR;E_fzA|5lFtvSpP=PlaB2sIO8-8sJ*yPOEc&yJEz>~^>bZktSXD-n(h4K)M2L;&MbNl-zMbz zIX{^-bz*gHt;}b~12vnT#_SL_mYu3|@??Nq_0A@7g%h)1uwL+-eZ!-!d&U;4_mwku z3!QJe66<*-Kge$Jvv^a_f3Apmsk8h0d({-t?CU;8Ps;aww%z^rxc$b%2PCS6WK?sx?!Ty6d3v6cXPm{sosnBM zOg@)6SMSAFpS{~R?1>Rb)xK-KuHe3(@jA^4hsB%r3+DOlsi?|285mfz`-9B}x8omE zzV`Fo`j>lNXr9z(+e>~Pr9z()FX(uQCdYEcYB9$fcpuJVJ-@RwraNGsettI(-??8B zaxMPsr9+4R1(+`jFqUi@E{Lvi+|Dc}7aoj;ZA;4<$vWcq)pSZ(3L;3@O?=16Rw zfB&!c?cKi_W_~+-?UZeW; zZ-giL`D`lLY&x%^HJ1x&zo!?_;{MX=)k-vA6f+m0Agc!9c|2{96d->?R`QI%b zZJhqIN#IpgTei%?2}|~#`=mSnwaO~zFJX4a+b8ngtl9Ck?Twv(zCTOFtT(40U+TD$ zq54ze6l3VE&q~K^w$CUPy7$q@cfp*fJ!_}zp7|&F;G^Y#&e(gIi*Kv0a(~AAvri|c zOU2^N&08==r@VlXYLPCGVB{AHH~vVWiR59k<1Hr^*Fpf9T%0hOgj)ztV|zj|W-VneG{U zt*VRL)CHF5RBS(0aZDjqIr+%)W19P=l<(as7dU(CH)l8Ji-2lI*JIlHdtdZ+Pcky8JeKytY3Xlu$2Gz^t3+BCO70O6_$Lwhc=!B@V}1;WF0Gjr zvd+FUy7=cW(QSE`*?!4BzIZ_PuGhA|0t;ILU)}YWb7x$1K8|(8F=Hokdi-teu_`=py}9=H{LP+8 z_qjLJta}%ex%&3*#5fI|O>GIczIxBzTj|CeRw18#vt?;TU|9`Jke|x;& zE~(shr)WojSEtDSmXFthSrw*dnZL^~y(6W%Jju4#BJbDT@=LMVh9^_6T+lXK@40(- z!&LW-{N*c;Zd<<8}fEeXebpqN$lJ>2r9yxZ*;cqVsiXIs!c&d4>PN z+IIdCc$KzX#cFOcr|Gx)s0PEC+o!99C2FRHskmvh3M_GO66M|TJ=&o?Sav^yv&gZ) zW4nulm}FI1s*apH?DZ|~(I=gbGeJIaZ?m;m+K6<0iG0}V9iri?@bOkcOKXmPOIcmm zmEE6p?md4V?Zxvvbm;`C&kvQ|J*@8bALsnOA;D*7mE0kZkC@BROm+24LV_Fu3i*wWD=TmSs6&E@u9GAE-}1w4p(d2`i- z8UBYd*D|zhk>km>%c%0*F(q{8f_7Yb`{lOzmp|M{@tf`79ZuaMG->>&_OPf~yuiVTexy99P`gv2~ zf}qovWeztlXjBb+vpwtYB!m9)qwEh~d5KKD!&&)c;RF?5jh*|w%42;t6dmN2xN7o2 zK;6^%>&@d0Lep36u+O&6Tp;?YQJY^sfG6pV-LI~bOZ{u?TrFecI!a0&eLa~QRG1Kw z{_nnBy?x#{^*0>s<&3j-Me(1q5_)E-(YdYav6j~bjkgM}Wl?86m;79`alW%pTUpkmrSVP&+`S@MlR{NYJv^*1;6J#NtNQ9RSR z@q6-CZHd>1V&uwIk7?|_5h>-vw%g~BXdlf z8vd{EWo1?7$Zn5SnfLd#F#pX7Yic=VB<@bEG>}-umh~ax$|0G3zm|dO!s2bo`_3Es zaehuts_TjV`<&m_o!w%J#?{U172FdnxBi>B)2C^{sirW7Gt9GMWg|ZyHrNw3;cuEo z;OwKP*1yf!oX_y9`1j)eo3fy+AKlr-n>MAeZ zC||q&1LLxV?o+$>e%iWzgZ=Lx{~sUPKK1j`YlmJLeNUJFKjUuY_qz&=e3hYHSC%eX zEq^}y$m_*2Oq|7xt4%mWj{QC+JTI_QYQDC9YE;46L&c@e>NDn?-~C|z(g^`SyhXK( zU%hZMntAHZtI)jT#%&?1PRgh)@z}83_VSiUH^r6e@1Gr-mbXjO>qoM0a%GR<{*NK& z^%C#7#J4O~(D^2K?zaD;mlDsT*}dPak36-psCr9$#bdjI*Rwlk&VQcwy>L>>)3oVM zkJ7ul+C8U8>-(s-dD!hO-L9`x`9a0>4g1^U|Ldmr&QW@D&Ho>3sO96sTA|AE9W2+h z&N=D}T<|Je-5S27=-585Gk62!MK2^Jtmoobz;e)pC>K9>UCO-N1NAl za@I=S%*k9_>uzjODM=1|wC#s>X29~DeqQe#o;n@-nt4&X&*`7dl$jOvWw|VgPZ@u% z6Zdkt=Km!mG{5E}_xIc7`+m2`Dl_lxmAEJowb4r4_j6C+0@>%=gZbDt%c|eA>ROPc z#&(;{=7o0Nj(JwE^kVj_lpU0q-I2c1^`!t)Uel+gZY(o`mdv?Pxp#(-EQ?N}p2P*` z^D>)q`|Wsl9FkNO%*-3Yr)NM;XaBvo@RD3+6YV&;m z|99_iJx$j+`YBOV^-Sm_)x>oh#NTJJeaz(3u1ZR{P?mc$lR4s8*Fx=OmdwTxeN0M&(j4)BX>rykSO|QK$X(~SJG|M1ZFXZf=Rg(9&m*s7?-f-m|>$1(6vv{hnrE$G> zRevEOdGJ*61Ya$MX@WMK={k{lp}Yp3hjcdmOBJk2=3OP!5*@$#nF!C;#;-R#+_y2# zSSzu=Dudf|HKVFyO_J>^YDdsqXlyjsdTt zD;%?~6u5Dg7XAP5TzUJxljrvT_@ifk#5Vj=yHK2oO&ZbwYFAFOO4xpGd4hn}C;uNJZU=PLibQqSA;`rghPRvgi% z77Kb$S^N6I^Ew+Y$C>Byr|})V=^38(aMDu`#Sec2MY|j(*&h9PzG!(#-SO_rKR?@^ z3Oer}-OAIMF76ezOY_*=C*F#opC9U_O?#&++8A)jn^XER->%N|whrAXy^roYUWxQ% zV0@?Dx=3JNUy1jmoSiYtIvVGyy%26)dbVS$M!5Cq*F_VZ4(n|(;8nR?6?de`b!n`p zRKN@2rAOtOG|l!3+$;2a#v*8T;r1n-&B1oZrpDGUU2Ruw^o1ev+5F!!oCVu+w+b5s znX1h=kQ97q;`i=jzOtPjr(Utt_MCH#)wa?MeZB4eu76LrRj76Bu1V_Hcc#1Z@VWPM&RaV) zM?1(|j#fVwvs#mNrs#)VJ>?8iA$d#ka(6kLRy0u)T=r;n6#x5mY=M2A7ZvZ0@gO7UwMfyJDlWZ0$jR z8H=R9?fy6OqP+A}UdM@5+eTHgpUj_|KIx;kSZ=R`%Hyo0d(G~BLQxj)Y|rN&HM;Gk zbh&K9=KbG}tY0I)dgs*AXbZDs?UM%cWR82eDr{fq^7o_ky%g_Px91r89b9nhz_NLV z*XoNeU31y>b5xG~wOf8h$MzIBoTsJyj`$8|1b#E?Ko>#Ga zszkE?6qV&_qMw8~?nfnZe!BaXN8;mZy}hUI{W*1gL^LwM4xNpn9WrMO-*U-rW@ zZhKe#Ynv-V#$o$fjBYF!?3pMlU$CQl#r%6E=Wbry6@1-8Fl5Fd)-27Eqi>cnoQPHs zUu(QzjfIM5?1jCbFZyg<>b>v7grnjAgmpAUih5TYy$ zg;L%d_f5+w6_J0qiT~r=DzP=Hjh{cQ)>Cfu&ilqN_u|i=H_yNOUdP46c&U5o9lb-% zCh=YmY8av-zB`m0_HHnG6KBN8`cQO*(nY5ojD0ut#U=N%2mATh6sFoM{?aj&Zhdnl zJ#OKwN~`imjB{dDL*L!qJzGufu!Pu^lSSv1M1JHkMCnCuxOJ~wb*c%+C$?`XO>3&Q zZkekn?I&mSaB2Sjf~|LdpIHCq;oRuA=FIFOSBkBs6a_Ce=n~TZxjyHuf9=cKd1u$v zNIu-~_*L@$zzoaaSMmm|e>Lq7NPk`MLhmJucT&o=Z?@$Z_I)eA&)}YH{x`xb-#(lc`RKBT<3|8h;5_SPW1 zoi{X}`ebeh<+$&)bCQ3S&=$q-m!G9n2A`NIpfEMAN#^)@CL8S|tPi}Wss1asx~*6h zXK*fv@q}CUQK=`)@8gVll~ckO-Vyt>Gekh^i0<_;r2})9-Bod1kr`^UHhvUx~)21IKZ#kA`Zol^_`1iS7f9CC8JEtT)+i}=-p|izlrUwCqJG>@NndtZO zYE8lM=)&`H6&GE%6-08Y$~YA^Yg}*yZw2ZaK9KUgMgEn0rH>BF^atD=&hEe|qd`MmLP@->#^*KHqb zelDB+Mr%`pbV{kxk|Q<80s~m;g4!R*9iO|e{`lr8D`d7hN6$ZcEA~~d)hof8(;H9h zHe0J=Hht3`&BfVE_-Y?~a6AyDG4rs~{3U@$_*i}#mn{5!-&$^STt^-6i_GUrTkpRq!~g-+iN> z$4UoH#rF+g_x-xl{r1-BbqAUq=f^HQTqt)eb>_q^ONBNVPEqljb+xhAmV3d0_46yP z-20e+|B-EPo!he=X%fp;?VXdlcQvcs;z_!Zm1m;Y-CDH7wd6n3^{p9Jf@+_|0(#0n z3zb=<_FnwqT$uJi$G)aBDY3ksuKL_W%E$Z2q}yxK%wFw1u+!{v^)7?JdZn#N zK1nQAlMgC${foI!_Nc@2%kH#A1{olBa8zQr-E@)GPRFxa)^2Fr7vXLESeYS%ik>|vhlRdHp@l9JDF z3RgwAG0qRlOc$-66|p=kKq_=~?YTdB)t{eruaT4ri)T@NX4<^jK)a@1r+n)jS>|ZI-6s-)<8A2)2BBoeN!FTdK%Ws+R&C66z; zo2JLqss>!EI2g7dDifxfIFyFv>)@vw0fN!l1Yo1>LEaYI?l+ z^FMr^V0|*6_~5+rK|)ve>3Tj3>6o@-%^ow(^*1(useEa;Nj4x86# zPMKB`JF#@WTWFiuq;RW=*_SN2oU|tYHi^~wyyU-_k*==$qyo#hiH|O>Q%z6ui}KiI zd~Hd9=c9k8N<>m8O5N$7{O;=Y(bBDg~DV47#rie8#3nH z&&U=iJDcLw-?U6ceAl}Cc1^Q_8&eIgE#OIvIn=eaYG(hbN(CXo9tW#$Hha&@{k|$D zzVBVpYwOJJ@L>P5#?b}5{#TM38$|V=txaP;8zH~7*vqK-reL=?N2h(X>BgOGH;h;P zd@OmfYQ52-m48KUaCsdzC_EH+h(W7A)??+g?ZQug%T0>uo5vv1_S$_=q&Ht#nOFV9^YzX08+?<_)*XDsyDv@XS@yZ8Z(naqejjJ;rJu1@{8vDalEGGm%Z)3 z4Sz*m|NXao+s;t6?ChrR8j)*7C(NkS$kOGw_><$^^!+cAB($A;K8Bm_n|M0r1|wH( zLgdzrpP3e$1=Px3?&>YOH*>ZCOT@D`&ccSr0v}YqPN)kl+ML|myNQuES0iuFckzCk zjQ7gt;`}A&d$ok*U9mQMQN7wKnNyU1`iAsb?L}%vs#d4HdQSV-1?}9!0B7d3VA zG}lxt*x6^AT+8n8SJ>BUk)NfRB@@Tdi@TR8Zb|*RKBkaO!Rxc;K_M+=i`ySXu+Zr)gVW5R{}NrJ}QZ_i%%8X)m3_@04U){WJgj@b-P z*9tP;?Gj%v+g;UC5NG>7(%I=z{@U9P6}^U!StX_ATz=*>KTB0G@De%Y_KPFu=I1qU zt*TD&2{Em4_6$3BUL$UW-KR3O8;1>lTsN54R$lYzYl(o(^|fCVf0>{A-zKNy=Bp%cYo{_ShZ&q_ZUoH?(#e>VGBP$(_K+Ug*|x=( zGZuA9B<-<(Uiq|8eBQH?z5CZU&0{h-7C(!9+TAx#8?}#19kQGp?6|@6w~qC$7lk)3 zU7IycXfMlTi&){)w*nSEm?AQ#OmnA!mizo~YExGJaKF}VB&_|-tr!HoLF>m&*C{Aw-tT&J9cqgdyp8VCC5Y=*Fw5I?bjlUFHgU9Y1m>T42J}&$Hib{QqaF?A_u6eYTsg>qS=c=^b%A z-xFVajxDEajf^2KlcdvCG*2KBO>?T0l4b7ubi+Wx;q z?o(_TTeWJ<`+VDcTo=b%+)Kykaea!Ie0GmS3 z^R$m92iV&TrCxEmPfUIIXF1=Go##HE+ZgxE$%g9(&+^*_rtYhwk6n(} zZ+<$zC8;%T0-Nmh6w64Jr=tEH@meK~mtUw!9qq zt}jcuKXK*W6JJ?WUYdFIM%)9jPUlIbt%3?Z|NmSrzs3LmZ|0ry9@nn=Ybtw}g=-a* z7+vZ(!m{jSp3s_A%@rS%&)OwbWo=Vb>bF?DcvE1InPb?mo~r*s>eJm`*Y8+1af!iE zJKKkyzu7(K?QSVsEq>wR8`Jz6R^3ScXj4zEQ_ewae+i@}C~2r3v|M;3P@7YA*))@b zKkhmvE?Dt1+yudv;}Y1eO^ zHebu`$<;KSA!@^oGWoa1-*!tGb{jbzUpm)e+PBA>=Cl^ZY|Ap8`BveM;TF;Kb=&wJ zgfHJ)F)RIh@>KyVi^3NhzBb)6`|(9^_93Ht#}u{&Kl=7|`TPTuW^Cj2o_1?ls`lIW z@jumG9Y{3Oa5X+qaPQxP$KS46Z{#^K<86E9-nEZqeqXU(zkTXm*(1H0k%u1LvAdJr zFMlIB{_nx-Z`T-Kzj1s0o?GXl_uL8Fv^@Uj`S!Q(mdkIHRp%GVkIxg&u{eJ1+s?gBd*)WrhUMR{^W2bX`O;dl`S-8rdif<* zEe5~MPTA?@WNcogcu29Lw2FWJ233uktczMJVndD2ELw8r!rH7b&YrHr8x&9JT)TPk z=BjTwFErSLY_`ju`KRWj+4S1Bqu}S;-TzPaJyf)7b9%5=eVFTCh!~T=aIUNhM_U+Fym3^FWCF{#WuBEG# zu6zpOEWBgWX?-L9Y3KBgGbwf_n@Y7rV>kTwS{D2$s`1c_p8;w=E?jEJ1kpR^%^I>{XSzT(Exk$>#4{g7TKN zSe8x?zEi{ZIE~)YoQl7FR<-`Nged7PAh_i2ZXsg7|^Ihn}^74p}kgAH6-{zBUn-F0m8YHhwrYe~r&h^+gu*c6<@BowA`# zkzY=FqOxe$-ejZT#K%E=pL2-Gi`NT($yW`8)k27RS`BV(c4fsMeb-> zw18D{)<%zGzZDK;yqY=L%(?el80Y6s$KTW6_8Nq(*unRwS=@%g{c!prV&bI%n&R3mkI8TZjNK`saDO0KUv!z;G+uNC@R<~?A zUVitpto51Oe2J~AL^iOst-4XJ9C_&P4yUON%Vo=1uLvJfs&|V0Rg{!6Vfne-mxp{r z=B$}>MEHmIkEb#LF&}u#*m&!sJ}%fY!BO}8nI#GiqL*7Ey?++`ZxCTkoTwgq`|;0v zcN7f8k1d;#lO)7?SnHJ{ ze8Y|(l4998B_VW1$jacZjOeFjfAp)io&N2X9pGhh`)TWeRdf5(^Vpt{@jfR_1Gfc@k*OTvNw1wDlHALTY2eVpV>Umt<72Y1EpqPsb^gAh?6BV zo;PlNx863sW4DjpzMX0#@ad-0w*O`ZvUcBk*9*^AH=J4p0=iElSWVGMIdiD2=BdrSF&rNq0ywVeO*)2_DH1?vnw>;Ggf+Up_M@$-m5a?#6M6%jSl z?t0y<4cfMB^`6xtk2WSB-1CWT+J@@oZ=F1Tep$EaYx1q1r&v$0FDdd7JIzMzxkl2+u0w)q?tjeFdRbiQ7%Z6PdiF)BTR>zgk{mLWz zA*?k@$TVvv!;U3_tq#|#V{=Zve^l^$zjxb;izkEt@T2)mqwQ%JAU$-{|=p_uu}uL-xQU+c4YA z>3R`)>*K4Jl|E()o7DH{=W!1a>kGG&%kBOZ?|$`W^V?Ycs+Dthzv0O~F8Z^xy*_cj z!pV0tliSzGJIu=5w6Im?y2^@}YuOwJ&HWto6Uiz7QF-Db!iJ-WKckg@Je!q#(F6qh{}l5^zP zyzkTmv9N}Oz|fZp`90Au>b4!aYQ)qW=P_sB)V-Eof8Vjc|2E3_)==Y2du7}1} zzkj(m(?sfP+R38n)$G#c$vHhAnUjRQoK|oaGO0}1vu8Ss)2Fys)2F*J2p`}RI3U0y zvEd+_PI%;|wfA0o%(_>7@q6^|ImPc~)tMrV{};XAx%|!6*SFk5l}>K<*bKWcmLBC~GgN+V~M%v58+@300xns)li7~B=BC&H+HVUzcrTB^*I2ci}b^_0R zO*O8aHJ49k6|}sI@#b*ot^W0q=j)d*w;Nu4?VM=6c%J&^lTl&&Str_ho?5jzM&Wc| zXycl~jpDDYdUxzTzO_taTTs{(bA|KGb>ZgbwoNhby$mi(&TCCsu%}C4`YEHS2Au4> zp1I!>XWSL8QV`~@as18e<*k}F+({q#|DMxioh`XdI(*$$ZqA2yT-P0U`o%Rt?^WJk z<(59RjYmQ|mHstFP4!oBe=+$*PoDFesfCklr(X}ft>k3Y{cwf;LE$e#58HI-TxPfX zzrM$DpG_r~-|e~Ycb+|Gk-XNv{6uj&A49?UlL@(@+t*3``ghK;y7aPNb>`>O>vpiP zcKFn2zV_lus^PYW0RYIzRU6tEAMc8 z@fBSAkf&2-hp>ZsLche+z023LO1{vT(pY;d&k7 zY7S@5p5L=aM`?NdwgUON(@UnWuxZ&Ve{6y_+r!SkoSQ5sA2Q&7cGc83?_0}{kK7NZ zTAccEp>WdSmS@ZJ?F4ITCVcr@(J8a?a6otWl*a6uE`x^;JDb9$+1Kofse5N^t;7_u zPJ*R%(E~kA4dz1M!(ab?dYSfdWo0st`S0cb&nJI-`~OZ}?2*<(J5)2AYuBE3OMTa+ z<2*gUa!SP|%RP&@ODBn?f0;B%`TN}ZQ|pz@7vH(jb@k-kYb{fak1J03ea`!8Mf}|} zE`EWoVl~eTw#QaI-Fajl!{^=kOXr($rW{%3podT^?m5ZjT)bq|AQ`UdSYJpA{t z!7@RgPfR+oTh8>ox6QM!f0cRr%jfhrM;Zes#i?AGa>Ut=!SJ`^qm^AfdXM&~;k zne_R*`)9Y07Or>de+vD+RqTJexVrq-;q&&c>PDxQGwcpKR{ZL0E52i%*49a7|y1)lVje~bLu=%}3?nK9dackb(o`L!<}q&?eqY#Nh-_Kth; zv31>{7d6t@4q6}lZuW6+`!4<)4|fJy2f3XQUY$KdMO`)dp-aiXpFuXzQO9;fnCx{ zE8SJTFEzQMsm!@@b<&w@ftxB`o)Z10|9ziy!ZRrqk6xk6)4Xeh7;QX!zF4d^TfJpj z(siMT;C<%p1=(|!-RV5zv8?Hc@lnOA0?r?^`d=9YzB*ExGL0|(%AM;8ALWm2 z{XKVab;bqfaNCB2Snh0(H-99!F6=vLr*lcHT)h45vu|qGJAWTCZ#eUJgXkUp7y$#% znS8T7nhfS>mOFk95EHdc5&dRh9^#@1b?c#0#ddltk04+jO@r>CB~DXHvP+~74iZU-CN2f3F% zm8I;=L3d&jn-gZX7eDmk&VP01+M*36LA48J?40p&%Ek9O88$NxL^@c#?QGt2?EBNI z=|##P@&qmfJzcbElVR4;)hB!>qABa^4R9z5Vtxxw^&I_VOIv&!?Iq#D7HQ-FHio zm6gzgdqF`5&K;d1VtQ0DEYq!X zl9LE~NLa3o$fhk!Z&M>uwl7=BJw0Kz+Pw(&2w%omC;zT2JUv%k`$T4nHv8K}r}Z{` zO=*rVyqX&3_d7K8WcE83b}OgV&V{O{g%ws#k$xEH{dH%@tU3O(Z){Y%a%OUX)W(<$ ziE0hr*T<~p9a9c8jLxqvd%t;YbX@DkzD;s#`qkFmZ!7roWcK@Q=5sdQlQz?M7U7!v zy*$2xF~BCretFC4T+S==ImABN$G4?^NoCx z)!)8&(;+)UdRys^zIL&;=i7YVvhStWcdy0Euxg*>9%<=Y*KdCR z_I|^BnVPHnzP-8}X6(6l^YKN@3pZ@$)p#vCA^7iB5$?CiZ@G?sD89gVNZqSph0pTM z;tT;Sx=iMQ3)+^c8^|2`raHaMwt6cc{}GLQO!~=>eNJv&m*SJp^f+-b%Py~DJaTJv z9CdCl59HV(Fke5w_@jltp9-@wS8ce>3bux`0XLr)E$0qU510`8UsdiqXTu(Du7_3E ztd0}~R?3`V?w%{=yi+%+MtJGUDKiZ1C!3!8vu(rNG{qPjKbwBK^T@Nkw3UCiNbaUkyUe0+9KW=9@Y?&4D)yjs^ zI3zKo>p@3xxTo=?$Q?3$dh50yj(A{yYwyv2pI>N4-s=u?)S5V5!{}V%u}fZ(_h#$u zITKg^?B=(5+4090h2QoL>D}YB>E-c#Un)f&Jvb|9cqha%p~p{ck&>W-=e5x3E3Dj9 zH>hL+Ktk}%ze{9Q)uMhTza|9IDZ}puTv|w+*vKq!$r=l(Dy;m~)xU=6T;rTwk zr{VK@SaS8+xfNbM5dH2t<+`5#`%WsWE!}t| zTQx#E;#=a1mpK+SZPT}yZ+^{khO_>VG-Gx1_S5G>f89+jbh`WHz(ektlLYc4-wPM$ zor$pPD>-R0{i2co0%^8Mv6u7%T;6gl_~jy1UR6?H&6>8m#ur zWzLES=~dS)tC{d1o}*h}{cG+iXX9-y9F64DmfbJBJ?M_d=U29yyN@hQV3?e&Y7({J z|os%ANY)GU4hKrH+dyj&BTLXV~M(mu0W2b~t5U_w7grUGv3j1T%kX z&W<_!b)8qswy(2uC_vd+4?gNw@%-3ODid=dm59|7fHQ?zN>p; zj;^@E>FIQ;dYPg7!QNT=#kV^CeaSrcGxFVrOp}kl*o2n7cw%<;#_|n6ywW4mj6#e$OitbXj!d@Z*1=I1RPZw?i`W&iMQ&!?iO zS$tO0e@pE+tpi`h z=e*?&b9H*~=ED}=QvO>T|GLkK+dhfqP}HWsx5IQCcWAxz4J<6%DAZHq*VLq*?_V&v z{jz%apE(`oCsHSv-dKETkLueAg&Y0d)H0v%yd`({bJyR5``+I^oZi3TSm3wGF1Ei< z)|z|yUH)}itIUr1Xz^aR)3HZR_R6aG33yp{urV&W$MEZp$!`;r=YliXKSVpI8!_&* z%DnpURrues4+5=PT=)B8u6d?Dsp?O^aLy z>rICh9!pnvXFiQS{Bw?*We9GIpcY?L7)BNj;W7#J->b`QF))(_AtJAyWDCF^Lh(RnBF~&Hhg=sB#~~qFWwpxn8>WNv_A^ayEJP(g;BTv?R$6k{&}nP%&m#PTxZuA=~)H$SJ_pkaDAUUYmv`Qq&YXsgkbzt=W5&x+eaZw(a!q$uj$l4*2>+%@W-CT1sJc1WUxe zpV!xKt@6;mvTUQ=1_zr8r@1YgvUV@!C@`trY|*>onepsR9|{~J(ta6i%+M+3TQ3}2 zuvW@qRkr5xl?zqUK0KLW`}g$oHyhvEJKpqJZW@pmD(PuBZR_P&ZUf#j+0M8tOIC03 z4ZB_>bo$?~edUQ8`2{~KGtYj$Dp*qNe3(<%t_|jXcICUTtBVEhx!-M84MD{f&U$=|Gk{ z5(`SSRc-Q@{VP-4c*v+_lZT66^2!xQmi5ed$nj7AI*^Zk<^+VE?X&#}mo z&ZztRzxGk^HUWkFBVSkh{53k2KS|84seSLHuvPnS>^xle=Tq44#w^i({T&2};NWb^{!h$oK=f|$}Gis0*VbZv2=bCu> z*1D|!N?W2=%4H}uZs6p1)jc)AqtPisGvbqH9LI^LOF#J~1QrVL=1wr$`N3yCf77mv z)h>;5YpteB-?Z+DEX>l>OMSGh-zg%mJaFl&;>9+H9sVznwJp0bwIr2q$Aj?G0qV#2 zJKJ~u;TEdRVEUwSZb?T;*nyY#8BX-BZt35v7qEKSsU)@!pT8FK&zw>lbA8Qyp^Pr} zo58jk$LD^@)R_9b>Bp}2T#eK{9W1BI{SDkgVQT?m_guX8cvjr%V#kOCzSA{soM~Ch zTGTzg4zXOfsj50+_Emo2D(7sDZl%{w=7}7=Tb`=DUAnho&NBA5_q5kvx_;&s-aMG41)Btw+}FnDQjT>$chl9-i;MH+I*(En3_e)$vT^`pu{A zAFjAv6lt_RwVp%eWc1glRK4T-Wfm_Il~@;j;O3KU{y*MyB?K`&k~_V?A&Sx`A5cu8(mK7jy3AI{)T7-|agu zV?H0&VHDsCs8}noxucm!%2mQ=#*{l{=d&Mv+Wd0+_tUM}&&0}i)J5&$cxm~kZRg1? zhWnj<6v*7p-m?3LgX{FViW3%$Gp|kjKkwofR}=rl){+iem9^O}-{Z^H9&)&JXyvPC z^XX*QLU3SDw8jPc3wm8V1YC+z$xvfi%Oa?LUU z?XWc)?*Co=yGBcGXQ!R}iEE8ssfxS|d+yx5=jz*B+O2&y_TkUk=I87uR;GAfn|$oe z%^hB?P8ts^*=l~}elFI(tv|1V?KJ;s@0k}@g&&{wrZpsqX_H88xa9S(Htv?^cP+|Y zdAIWH*>5jDuV>oQdB5=2YEktzUaxmvrpq-0H5e4;9*W}JGK1sbF)fJ)R=HCyZRuM4 z*Nn|$zr&fD(*@IOGtXahn7P_$XXK>H2d>tfk!LdZD0u{}wh`@c))K5R{lWb{x^Uax z{F_oR4 z?wpLKJ?w{+u6eACRMp}>w0hCk@@*#jme=TS&)D0)?ObgLL+yK&hf5xdyKXRgJN2yZ z$%#qJ7ryEJ9{JeSJIc0Z(T`0@mz3l=t^GMa9L&|7si++zR?Sr6|E0T9e&>Zgr;DlH zYAlB~o?o+6q1q@vcvoZ%-||_ant?p37P`EjwYq~jv$~SM2QJ(C{)1y&vVLWmlfbl1 z2W+bzoR>bAE#RCqWATx$4gRtlU!_h_4ihxLo_&fT{A)u-L@;NTuxg+BZoiHEhkveH zxpXGK+-k+ttHECl+l}sq?L08`R3yU>pFMit1#ZWA={Z@Sn&qUwS!1oRMtp35_VnPj zMMpoGUUREh`lu&0B!5MCg}~L&mXa$s_Hf^8pZr0w=IQVMnf!8hv-9_U;o9vv&9Y}o zP{Fp#yKBXtSnmISRsW`jEsG0Z$mxAMo+@vTvNbH(YAtHu|2VcL@p77V<&&1T_X`iq ze19Y;{OE7fDHr<$cYT<{Gc{Dncov83-A}(xztJt9pM5=M_oX)NzQr55e@MKSIkhj! zsohpA<)zJ3ot(WdB0YZVRt7#UuX)SOHvj$F4er7j=@Uc+Q{=)_axV1sU#sKm7To_R zUFlHU->DzeG}&42a66efv)CKY{3t1>@rvQ$^Xo#7R4$xd`}sxusVNg$Hb1m`cq`Dc zW54@{Gw0S_pZUA^$DXI`R^_LURXDSJFY&s({$inAoZhXnv^bw3)?QKxbE;3TChXFaKc3WJdr57n|g{yt4rt2R${CV@w>F4Hfxh>?|uEO zw0DsYzb~HsR{sA_);pODa)<6Dx4cUWcbd7T;OL_!1*X$0{J5v>$Wxf*q1xHe z;bgkEt5R>t$-}oyv)}xkU%B}DF~7y8{LEav5sq0e6q-7s1S1dJdnU3jW{1zTf;%23 z9}A`=@jdysxqLy8rq>GX(&_e1$)2Z+vW}?de%>7YcIEsFi!0uH-sx(5e77;wY^T@j ziiJJmBHZ(u5|RyBq|GPCd^5j(&*wyAQfbWE6DrcOi`*@fFFE%wEV<%&y1YDp!<*-` z6eA7>Nxo7O+qe3#)=9a0?8dkLX+|x0cQ?70VHdE4m$yG6^j`-j)&K7MetYMR{pX`PUW={XBeFMP0-Hg5x%?)@9lvKYd`f#!cYW@D z#{4EThrOGhzkO@Lv-XXr{!V4L1GUbNrk&cC;(MJ*XmJ3mIsZhR&g{RuJHG7p4tRAW z^T52!qgl5%6;FTr(k}6~)rmRrdyajRv17UDyT8<-*LuN^oonjP-wNqq-@YM<{g6e) zj^d*>Tul`xg3Z>|O*Pf)4xYzyQM_Gc)sF_hEu8AW=N!Xc zy{!4eh5NOSwZAF7zgzuuYJpQs!uPqg^Uf|@koUaj?XuDj?fZV{U-Q3|#QR-z;??=J zZ;dOS-njpyK%>X_mUX86-+zz4q*|oh-j?@Wrf-wvR~CWP+^yH&b-UeIx*=-&p}z&k zO~Y@-exH|qeNQH5rOK;GCuDZTHt2gCs6}zbxi;-S77*jmw`8E`8lL+x@fABTuI7DZ*@Pcn(Y`ed2Rmy=td1Pxp3T zDW`XZUimE3ci+D(Zy%l(^fata?$Bm-nbU;^Q)YBA>g}5!uj3cSvTs5C6Jb%2CqJU9 zR`9eGAK-C6?cd~IcIm_?*KWNn6?->yymWeb`(r@c)2{2?;h((Q&WjtrX-=CIbM|9Z z=I0|5+Y^swayy^1<$L(CW+Io6QbzR0qRhifRcs?=|Nqg~ziD4vXM9$0ft%{;C~=;3 zM@<%*vz58dDJSY zrno|AN~q35yEQG!67S}yp6A!Re$?oF>rAgV8Jim_m6v9&nrr9S^K0p2_cd#G-Bc5t zcDUi3&?lib2am{^sSSUcggI1Vc292L;;XXm-}PKIG(wL zvSrynu8g$bZ$lY=sn3-y$(p?>xg`1a)yfXTdE4ywKesJAILXX<{oHhxGgs$VP5AfK zU7+jllS$d4(`Y{QWQQA|0b=-S9{@Q>F1lyt*x-m@|d)0 z*|bR28Na%sCTq1U7Td|C{W9{4?9{kS{fhd6N@bA---X*Wc(~nlxI$%@YSbVciVS?>1%RYPcPwjHDC`odSk`4LqXH3I^x3_w`8>`fB#{T{hlkNrtWL%_2+-D zSw&jykh1>myUb8Z?-<^oxk>Vh6k%%6xXM` z4=*aaS8y?O8{hkju6x$&+}^5j8D}B~Rx{ z^7PDgjty(#nNSpy9FJ#>Q&)U9p{`cbW@B6q~mDEnXsmware|Yb{di8tUE28&4 zUAw1Fqd(}>X%69&TFav@`}Kdnr5hfTwtWxhq}k^BTc(zt-M4Si4&FbnIp=VFx>Y`- zrD)3i!ngms1)s%thUG@MjT0SXFpT9KJ-TCyj(_Y=-On=6uJT6JbozKL=FYlk) zSh^!)UFjaSHGkhWU41X*XYuEuRG`3;vj+JSH`h+Q(y^dyNo((Vu`kCCF&+JR;gF)t z|EI;#Z{_X&FDlQITA1U(Ep=c{iG-=$$DSnKb`~?f1ucs!Z^Y_|sY5K(zqqoja+3IG|@6H%+JI%;9anZMP-cdISh1MUsmBK%9=c1zP z{qL3w8CppS9+nN>`{`oxk>mZr&)n8#eV-$HQ0e}5S#gt)wZgs|&nlZ<+j=Kg(I@oM zuFz@0{4dWOxMI*5`*qvHIh)`1E3TgKI+x$5!`>Z;~ymjjGta{cp_b3_BKhnZ~rm*_rpG4J)P$)LJdj$=huB+YP9tzx7f{x_k_y=bGu_1WM7Kg zeKC~QQIGSR_E+cMC$&jay%H}^){cyuoOf!XT>Z1@+de;Vte&^=?K{hJr5l&2Mh0>n zeHFM!Vb{6lEv)zTT?6{1H7d{kSYac>6#v#SS0mN%{KxPIs!TJprl_S>RsZ(a@rrzZ zYqPIFd&}OFxwhNZ6nL*#D$ddM{9bFJ+K)vOcorE+M+?L_ww+nr-p5tP#MsWe^Vn3^ z_e%>5XUCt~d|9TwuUP7|!l`V|eOZ6)T;D|JdOQ^^4vRk5c5dzEKCj%sJnqM0FSJ7x z&d+@2=wf?y)4G@6womxHs#sgRvht}@^`qxcLJO8@Z#Z{6;KS5u5o<4qEN9$$@!hUh zV!K;D7c);~VBWx@mr$!d<9?pVvCJFKU!9yTsl5Kt0msN^i_6YkogVQ!>%g3UY|Ryk zev_B#bMLPcTCntOhWW$wkEithJ$g8PTRyMs=J=g|vUamx|GWF#O$~7wo`NR~g>S$A ze|^7r-wGYYpIhZx6VJX5TOi`08Myjk)+A@?-0RxaYu9hSZe=;W_vr<$;=1P+9*>vo z)zsoAKh?>vrDB+m$>wwj#S*cm1-p8+NcQ`M+}aocAefqgnDaqx9x2 znr^Z#k?Ht{v+e#_@cm0vb9rsVaOym*!=e3Dg8Tqnzwb%*{P3$BSvVpED|u}w>}?pv85>+Y)| zoe^{8P3NQLrJenW)Lp#R^!=<>*RI#o-Y$CKcJkT@^GQ?Mz8qYzf`u{Z+xPkH zabM&WtPb9q@nnJTiaCd0UpUNkvZ{b<|ZbH5#0&7LF180y{=QUCwdx9zts6lo|3u!W}FxFXCRx9Jy;wWSF|`p>-I zua?b^D*l@klN(`SbME0KzG(mU&AlqKYzrRGexnt$uQ}p|GRMTmiHxh;6xZdxG@8<( zw#Iu|FPrHr0n?Rid@3*IxXtL)kACO#YEI4!pTwinj_xrFYfNWgTvG9SOV&2QV{4CO z+N$+0H8{E}Eb-^5{r0{m7W5S@u$%Xdqto5~(675?uT)gyQf@PS`@6iVQ~Uev+j)CV zuCsj}vs;e;#D~PA?94ktAMO)>{wH%+K&D)_>!LWXY3o|{tSCGA;{ToQ{YzYOr`vA& ztD3zi?8o|dmD^)ELf^REYTIX1bVTZ9CtvLX-rT$C%QgJ7Ewa~c)rn7g9#bP2X8W5t z{H-0!L-+qL^>e~a6&7l-zYDc>Ir(6Q(TBjs4IOMpX8Xzh$+EZvrd|*9?hIm8Z7e=>c}>#x zQ%&n6Hl{i3;q@+NOk{1GeLQ1Ev}WVN=an74{>(~x#}{Sme4dawzwPnUUjR1t7_(PZ`AZw}nsyDnh$-Q}M@ecbox!LFYM z_joH?oQiT4E>0|3u=8U4)Cp!2m#n(bxJPJt#f8JsaUcH%9e#UUjV+gv;l`Qt=oynxK+&C za?Ryh^X}@lKXW=ChcsQ;62Y%fJ*n{D>&5*y)ZTqR#;w0C+k8&y`yFq*X1g-hPW`*T zSLlkr-49kdPtIuzm*j4kbZvtMYo70_L#(Y4hg2$ymMl3LtWvV>k)+!1{+s#tzH65~ zp1XR@%bXc<)zfa=V7j(v?WC6QDHhKZ)?~6wNtu}~If>g!DU9jO2A6}gUkO=0a(-vX z%ODrJN2NjbEpyG&BEu8UHKs3~IDPlF$94s8Jf?Sl?{$kao3^2I(V5;K68nX&PByrf z(VE`nR`bJP$&NS&f(BZ3g4A}uv>6@3EN$}a?RPcuD_WhmQ3v^ z7CA2L{%*S7fe5>Ug^Eqn=JG{doTYy*A*y9V5#PhQ+jm?i-nnCFBp?kr*0X;pukd`eUZWmmhPs$DHJy>C%5;T$)d)qlTn{c-ZSfRJcJyYCdk zwF};)AHK^`KmU@%cmBA>-)YF{kWPhAD((CeM+X>ri&tZ(YfWlR z;|SysQ1w}Ta@9OH%^xqft^H>7=hgkXr2`1bvW^^R%nOS)=g%_Ti&&4x^&2X67xX3w>0h&m;4a+Q3JiciCZc?}vVY~NQ; zdi-w3zcdHs0v3(R)hu#MjXRy#xKA+ui0`izE)smSg5kI7^tstvIsUMH3$|tYzo_)} z+cl=E71t=Po}aSMb*uNAYWHooHvj&9WASYBi5J+_8#-KPY*qZWZOWOYs#ks&Yp)2A zQ8~@1Yxt~lU+`7IP0Q|1Jrl#RW3Q>ywEcHJ%_x*wGC$hiD7h{qX{n6Q#`SZTEv(}1 z@~Qr<#8A6XJ)5n~dD26dE|s4LQ}6Jue&$kW-EI(O5weqm>(hbk1IA}f=R9AqCf#v~ zk6nxWqxn1@L3eCr=N9a8EmMBIyB@yYb{hH7Q_Dkwo#elZ zmJYjmc74p+172@ z`&vG0-kZI|@8Z=tVixxcO&rUhkkYcl0BK13~FpFKc(Jzbue@Szs19N#uMES=08k-)_TrX zWW8$Q?EU@9la78&IX~~5!@cu1S%+?3VKew<&uKlWT4mp~#K@W%XLz5zZ*TX$wKe&MYI*_ns7Ts7hh2vFE`Qh&{~^`2KgJx+4J@9SvX zvnu3!EUU#M}a%(`)tmGWfbD?N#AEx>zU5`91dXAF1c56bZbdjbpHD2{r8?FG!^&hFS)fwi0`Jd=!O%Wsy=c}Mkh?Q zBCN}Eujy}MkFSvv+r|9t#k%mdTmpZTcRbc#l6X2bd)kF2(R}VRjlr?bW?TL$+@HVM zH`ul;CGAYv++`^ZrolJEcpu;JFz&s-w^L`}ct7@yrea zSqvfkpZ3^(9Hm!8c}s&n14$VH>o`O50ptxs1?5}4ljZ2y)R zAI3imS$w-zN?e^|ck=Y?DH(38N1DX4m#0@quQeCFRCqMdbJm^Ut#7RaP8I1*?AE9{ z@Jy27=0mP@|GhhwX0RTV`CeY;(i|{9f2;b!Ioz+7%u8P$`MiyDp29I(pNPjxc0Es= zIekU%+CAA*!Znj)6&XWyIo8}|)qmKZB=mNw&c+Q+hGpVauWB9Uu}zhKWOLzPrbFWH z*FC*uWw(uX7o7Ccw!fBpR%K3ZYw$zsSoa%`YsA)1Jg{f}UbD!*{cbMHx0`}yv+?-nm&3XsT6QxLuIe}4(9ZlA94|HsbaAM~cC zvA3!&^f;*ew0P0ug=b~=OQcq}d^Om#;?4vH@fR`0R(rqfU6Gl}A=B?v6wX@GyI^i} z>^iU3@1Lsn#2BCR^0}mPbbWfVY97bVS1C7NM9OM- zzqzSy{Z{|~`}1#SzCCW?lbkX!JVKjS)a>7_*PGuynY;W>@q}Z-$7P@A_;K1~uK6gl z^s=zX@(((^95bSH+5)TUuTA(+^yTW|vMF}2toh0wX)e9fad@AI!T(?E_F3rx)p73( z^Ae_P+RQ1^;C!UPT=r)A{K_ZyJ?)e)`l^UT9CGGZB*yY5azaYYAKmvGZlB+O!!NIP zYTZ+Hfr!Ns&$3^bu62p#eGTh^7fC1o`Zn2q^V)!I|0IqkPx{j& zbm#1*irJo*cCJ~-v+o=Co16n5m85o_>6sAtUQB$|lv5jI&UF4?w4&#t%u|zTm8_4~ zKFL>J*t-6L?7NwZ+2645-v05{l)ne1|Fa*s!`GVDz5Dd(6I}DGZsynSw$7O|>&t(O zjhDCaU38ly^|0`%*N2&9cP`5Bd=~Y4{`UW?99`KLICFZRsS$8Z4!U{j&BUV-Mf?AL z`@YWuwie*T;%~1W-rcr4dH&gjPrgoe4_Ib*`N1Rkd!N*Pzu+y8(oC?sdGmePN5?&U z%xhfby`ElLWfrx`?}nh0^6U>mHIF~aN7qU|&3YsG>D%6|%Wuy-#ILz9XvP(fmgnKc z{QgnGg`7=wOzRqobS$6OJYRp~?3|Nl_i`*0^k|**>BGA%x>?&>BW4S8b!yyMl3lIL zZ}fL>e&ZpDld94zVG|}EH0m!pb=^7rXyKK3odacRFBXMPFNrw2PWw&adG)6X){Ktl zG#N|TQj=$-7=2tEUQu^iMy{_=OMoH5U*^c`1HV=sj@=P;;>r1QTkd<;H7X4`=Etw1 zqk7gu&?eGX!y}tBy7ss5{I(k$tYYU6aJ>3@^&(S!NFe(k>^)_Lff}k|K(hC z;L=*r_|R>Y6`yKi4?UlxaAkIog^RdVc5}e0u!|y#eg`c7D*I+5a|F*{l}kE@jAGkX z|6CaVd&1fXzuwL1OAo2qyZBnS*KuiQvvmJtxBnxV7jpCPJ%Nk=-nXqx$7)<shR2=ZrSIm{$WM?ypWqan(x+foO86^k-xuubCk!*2t#@6g{O;FffhAWGHK!-UP8VRmwdHC`h0Jg7~3}QII>(LKD%uy z_dCXUsgtU8Gc&jPU$~g}`&@YL`^LKgg<;Y0+V65VzDjhg`?hWSP4~F+_R!=+p*u&P z$ZrdNB0gu?v>mf1xEi-uKMrAf(=7RBx53fcZ`Jp={EB+?bJLNPJN29``k9%$I7seR{S!S; zS+9Q|Qt@p^8MoNJ&9hxq&WK!5$Y@@{Y2;wvmVYET`bSRLxxXE*ya!S}HWfIX(BXV{ zhgtmG!dV>}el~}#wC^ZBn3u%+Yh{GR&B9a3&!oQhc=Yc%zWrTuzf;M!Qy;zsowab2 zPheOYb;!NBSLOCfbBkTsx*;du$CoIoPDsCTRhyxBmb&b+oX_bOw%JwuS<%n#r+v^vzl${&fH3 zBU9@u-q^o=&Gh-S-gas8IqC9yzGQjKe)dK*>Dg`T-EY7D`>So{lUu>Td@j;-ZH1}h zyQ|3ykDdG$Zr5Vo`>Fma2ZyE-tJ}$ifBroDeLwO2@4KIKPkwT+6FE|{K}C64+x0)! zTjp4vQ;{^yw^b@oTdZunx~XB_`^vAGeoneR)hrtiMP(Z?KVY92&+?mxagmTkQ(k(%ELg%kncp%?&+>wr0I#>i1|$27X9#C zF!|D-!^%h5H5+P|O-BDjTH>Y-p7iU|n zbGV_H`Epa`iRs4Y7M_oHym+FlW=CJXSYhEM@q$f8Sf%u-l8)RC5~Kxt`JOPr=W@R&7 znANefYg!14=%T%A=PnZAf5d-u^Yb0|4xi86bl(1J?Q51V4UR>;r%uEj-}JyPX+ac2 z@*IgBE(fEPmf46*@HCqCIzTCJ*N>>*udVYG3;DH09tg3nHQ(;2Fzw+~jnI?xHMWXq zr}PMHxn)ti$Ta)a@q3qcU6Z@>g~zkO`t5H0{Ipv2H}(7fhI=$br%c~26S@9&--gUS+L;1n!jIX-_On8{UfW$;DOBX;!PX^_JLg4iV87D zH|xAm_d6%`Uh>68_Xh?4&-m|WKe3(RR74fS6pR0?A&)Y{e|ul;(PlB}HZ^ZNbgi=~ zTx)XlnyOc^eNL)P%5Tqm_Bw8TYaebE*PW7G<=s2XW&(FoxSidXdnYy9K)9@EN&!s=9 zOyZmJ$IS6lmbuKI;~pp0EHjIpw)I4{*TNXz;~xL5v}fISejf8%MLwFl>)Hh-j=5Lr zWf<16oO!<@J~caY*`|e+f^thUty{}e#pm#x|LUOBEbb%u`sYcVb-cTB zg7zG{XXbnUmZkDp{Ww(}v^b?|lG}5J&-?bepDfPY>UZal`pHxOZ@ceLwU>IeVRy&O z`y2kr{C*%B{_$banxdpy`YKOb_S%{n_Lyf(G&R3^ zOX=JP3%Qo8Zz-*Z8nc>DOXThU7q$C$?dsfzmkt!oj9$Z8H|eW%uNr&&+3PhoMN(3y z%m@?{=j~4l4HA6RRN=k*AZyu?6+2%1D--zj`9%Ao9el~0hfKJ+j}*43cO+lx^H#EB zs+DrTQS|U&)7N>YQ|3?3IpFGFaAW$*eLF8j&FPG}c;bSpbjY0REr&h#{SIJx=4q?3 zOYuubW>M|=V~jh$iK-jU?%3eLd9JvD$6xsEFQ3yIQM*2OMqjd>tQr}h@o4+uhiBH$ z=-Yl@-7n};V%JignUhr>)l@w(*teqOg=X!gOJ5iJ3Cy>9>6xgpeq-5Y?xX1^(v@TG zikp|SoQ>a=@YnX==Gt#3@BeOm`+m6%kM?R2^H^1<&4SvtKiQv@@yTv@v|{t?EaT+Y z1sUD7O_SFNzLURpZoAyHZO4pbOnn!LU0m{>9(?B_byC_?YU=p3)zF4$r3XO272H z*QULTMSG@+EK7K2)&xdx(~gO*D&@J)JvZH)s^ijDWvg0j%JJ{xjRrQ8jcuGB)+sZ) zUo`Ld-K=ku`=94TDboduNSqt^9ftW5c6zGM}&)n(c#)zKYsE`uitk5 z9_x(74JR(mJ6fwDZlGq7{P-a!s|M#;P4k)Ck7ag5uR7u2zN62u{p;G*Zx*J+`E_nSGzPsf?jS@ZDeT@HHEc zrkwVl`)c{N`Xk>SR@uMioxa;h?R~ZO$&{%YOhOxsPg%IHu-o#zGTO#%^XyEawHi6U zt}R^q#eexk?uRq>@Bh8`+qB;4uP(P(9?Lbn{xa#^Rq5ER2e^Oj5c0Y(uhFhL<-OVO zFT(vvCnwsSFgE+R=K9?)zYbjNTb?GfzUM%U?Lq&|?CosFa-N^woiisz+wgm(cIdZ= zjC#ozkWkk-Mrv_%l=3E1W(U@^dLxY znTN_7wcUR`*cCb-J->U8AzjeCwVPceeCMo3=NKb?*f#B6cl}J5RAdL!iWbw4o+aOJ zFBRohkjmPSTCl7Cfb<3Lj@KgT&je;ZGFI8`w`j_?N%@q;Fa^~|n%gg85GT&X|o*sSv zL*XhhEsev>6%HhI-d zo3$SUW!VmiakC|wtO{a^lX6chW-pXk`}xjqfvPp_h9Xm2S~l)v658k`|9M?z-T5U8 zkL*0pHYq{b-llNHO?$~LZVNix)#k1`wEw2%_dd6W+TQ0fOtFF@nUf*h+x~HL9Kjln))!W>#yBAq4y?d_; z9^dz1*Xg+r+!n=fMpO%aF^(w~@!m9j#{>6__NYdI>DGBwi>}|Refav#zt!tEZ=SwJ z(atX2b}z#=4-`D7iCC@c-jF3Jiy7q|D&b-yf0+NpX)Y{qD;}|5Yc4fz4O!Rxyi9=mr^$mLw=?Toi|kbuJClNUd#x?Xh|be3`L-+R zuG?>sw<%K>zTbObDi24DPv+f&MH`Pz?S8=S?Q%7%_wdwf;m(VB7&g0K%Y2;l`=0jg zH&Y+Czm>eTKkRJJ4fp(gXZ6%3|1Hf9zs2+M)8jkeBk%qHy}T|ZdSlnRmaMYJkFI`O z=e=(G=2y`#Z<(gFcO?HiEZiS)TuH|`W{FaG=0cTqjTI}Rj+{IBw!3^;k>}RCJO0>I z|9!Ms;c3Qp|Gys;t(}hVaAsD2GymP+j=O$4Z>yLd*t`6p;(^mf_txxU2)sL~=UVe3 zXZF>#Pb~i&Kd1X`x&7ZpU*Y1liSwpA6?{I(Zg*hTNiAhXKC26Cdn9IwKIJcwU2J@J zvHdnZqlNA4?Q_BtW_`?@t@(4UV8W%Hv(~xitkNU@ND)9^Es~5@xG?NEm`DTZ~7^9$9MC&6een~v+`j*eRsd8ZIfifk;6g( zckj;^>iAfEf-}(8cBh1i!%Nm5NA?D+on)KDU)-?MWNl2I=Z9C)jk1Av*e4mw^*svy z8XWP%_es=(maf8rzP)<|!Yr7$S@aaz4wjxZaoQ<;<7-;f$)61wS&ChE*eYcHz58Un zf+N!9KU0dMY~qq`@!L&?B3YWRTNt6<}6j`X^GEON2d)tQSUN{sIF+y4!|ZFBSW z$4{rj*KgWBui9?u?9y#>xu(2*!dmm^bo>^-w~d-+=vS*fZhk6vUHjB? zh5t$ss$b4NiJbFNLt}EO%rxDEmj5vmEi!mAK5G8qe3aO?{hV3sKJQ069zE#FDa;H>Tsx^xWWM>& zutST**dpHViq;Go4Qu8w+vLydI^{JdczUkV zqY2)YzFqSybr%0uk2dFZ{kk`T|8c3%A%SZL-o_kkUwz`zJD1)0Y!7ZTHr>DfqbhpG z{`;#o^1Tk*a%<`PU9+Dou$%9nI{EwjBd#5{s~g_Gv8y^__vb`;fDn`YACWC<w{IQcU;oQM{_)3!w3l;ViXJ~WV^Mu`F|Eq2AQOJtriO$C3Zil{R z{b@LvE_&p+{LRmk{(hLbeB&DL9Lc#Cu1(ip@P|jW!+rJgr&o8jiXx`gb zeRaZ>YkoZ+U!6X;&tdu4(s3eCfxq^sxbST_wRPxzt{HF)KOvqJO9B&g<7l%k0lp6E%<$;aC7b4 zYd*Z66JJf*Uz;%7wx&WquUxZOqg40tx0Uw)rnDD7`76;lZ(CFxPp*Z=vtujW>p#8} zXMU>x`r?fXS=QU%ZIyfVg+0(s?2*~JgnBK*ygApF_f{~daWHd8gea{zro&`&^xV;m z9W_6T-q)|=i_H>`Qks<T&lS-_dBWL{ybTo2tls~^={(+qO_I{P=wRI~i zel4Eh7tWQNw7B%#{!|r@F0Gy7@4g8i_jh>}b@a@~DI%Xkclc#6YEQVll{t9MjfYS2 z%K*0huB-ZbspD$k&- z#e8uQ?**x26EE23@Z1;Km;H!+5p%}BI@=3wVo7^;BK4M+t zYi+r2$^pegz6`B@Y+)=Y*w&G#=_CE|Y4=0?PKXHYWiVQFN^>n2>+4quE#eIJSJ)9Mo z@Z#x;si}ECOkM|Oi17T;P~GI6YJU2lkxtzO&qd`5Hm=(uK5oi9o$^s8_VLQ)-)=9L z`=OW+m1oOQpLwo`lmF2>-Amv1hAl|tY)@(n?a{rbU#an^OEvZK{q-}{=5?uB$NAS( z7ERb;=*0MXagW)ey+>lB877r2xubq=|FK)UPbR1p`hI;Hez)BETC};?+DDI6+%-LW z48Kj#{QKye?6>ItzbxE=O^$i*Ijir#&f6dzp0hyu3RAY)y0~o(w+cTND16a65_bH- zk~`BMy(-`3BNnjdyimuhGa<_))WXhaO#2rkw81ZV;+$ho{jGM^rk~#Yt@zP3-5vML zx2@ln9d#{&U+mKsq3s>>yKUFbQdwi<#i}is6}(i%;N-1o)}jleZugyzi#)|~q=+Gd zuTgvZHjDFDW0LxKesg+FQ+s(n&hlD@|I~R~rZZef?|Z9iE%Wc=POFG_QMsxv2HOw3 zD?5J4cn#CKpBJYEMVsDBSpH($ccneA>%YG7fAjRD-0nT8Gv~V2{yKYM?K(HfnpYkz2(Ec`Gm4@7W>4*d!~5NAW^64uB$K+G`Gn2`PmG@nKaKklvg!z`iN_%57( z+8hy&spm59vOdc?qGS-Rww>=i&(o@Ve%DidAIMIRwn|;UI>le|yVO#R+3EoWVi!9D zuG{cdtezMs>Dyu=?pNB=cFQ8%arfn_-BYgZS{$=}dc;;Ob+Ld&Wj`;8Zfp3gcxh&q zjfCl)>ZsR?Q*1KYt50TU9{3#6YqW>q-WN@$V$~KS7b%lN>HQ{CBdt$4OLK)9XW#Od zJ1RFx^!p-%nn&F6DSH#vKW+%!e82tTt5ZMM1amBy)5rV$#^3y1SM&B|Prdu+*wr#j-m$&K{psmMu|wCw=B3sr8R7zDjMj z$a|Ht!K&?u<=4p09n)@h7CL0AO+HY5`c8h#mA=PJOMBl1OFlPUfAaL!89Zx+eu!-` z*S%4*ckPc4l`-10A5<*Z9QB!L-fx{_yc1b6@4(%Cf-IK{M8MO#ftacFJsDjcA$G8+xpwJ}&!x zO?-uR=#2Wg-qMQ8auQ36X0x487nt_8;LznpCiBGy_8i;y?UDYQpT6g#xm63pbz<|w z&DU+I`#L@BuFj>MlTvm>J-R;i%A#=HOh*Z?2}QYg?$4NLBOE4V`nX8ek2^x+{YN$v zof#_(mN9+|yz%&0#kO4&tA4wBZnrIeG~w@`A9B_`?F-8`-MXe5l_tJECOJQDtIX=z zc29qNWIt&YXA|nbg2nF5I^l0$b^UKEiY&Vtv6Z{y;I{5mo&)y`Z!yn2y=ARVe$#`; zvmP`$Ebk&-ps?p^X-J!Cn6*K&NpU#%U~@I_f3l9y+8BI znTmIT@ti;TE2U%Nmzeab>^;Y8T$c1^X~R#Mn%A~#a*ge;?>x-+PG(o{yd` z)?CG7xuTVK(!^ZLXY3EY{}xyiskoTKQWWz`AVaQpJ%elIa=HK zOE?*29R6{*f2_iuZRt}t zr}Tf!rn2JGc78rKl{YJ7L>@DXxXsUeo*Dcy@UPADDE}W7648d6cdwYno*i@FH?bjS z-665l&s6fxaonoB|9MG|O5&t6>wDIDS9d5URVd~>Fxa*sAye7*XYs3T|6df|-t%0- z(1Z_BQ-#rIYbqcGWXkZjXlQf9l`$d-sjw?dWz1*pE6%!Pvn5@eC${-Y+59Q6wE#!HwhP?)`t5*k{`UC&zj!r* zRTgqySW*A}NY%UB_q^Zx zZFP8z`!~ytMJ=VQde>*B>G+twdGTiBO5fjW@}6c{I~3hHEc^TI>XMpZ!NnTI($lBh z{QG|A^{879g%}vz(%3)bXq2t*UHZv5_3P=sJ<;MzSA8m3z4yZrzS}=v1 z9n3OoJ+zRoV5v&})sX&4;f9>-e4McxuJiVMsrp;S8@5-cP(Ls@zwFh^>FXnE2IvW`aGr&$)vlV2PwtbH6Pl)htI-zwb@`T08ej9coDw?8p{MvK)%t2r zo0r5CpVCy7KW}FKza?p9u5l=C>4Q7plV%4yOCR#vv_^8Wn%j8}?|tQegIA`?pUOUb z%XHi4Bb>L3U$y)_IemY^+*NbMEd}+yxK3FXc;wOAUUv!of111BFMIvw+wN<(=a#Q^ zP2{M3SiFIIk}*TJph59s1CE70hu9>=pWE&@ZhUdNos@&|u5*(aXBKRIP*7MYu*At} zZcCo!gH(x$Gq*abshcVXi+#;X+u_R6eJtbOnZU>o+8KL`l}%nv4$SO1Kig~p_v@IA zo^D}rwr2UCJ}vhwp5U0y*!_HG*Wc-6N6&Js-B-Yg& zm{}%MsG|F{W_$RKh$7`Bp*#)p>!vPSD-q5={meoAo%au?FD_aze^Tn(>z!7?d-5Wl z{ZO!LXU(?B^0;}U=HREZ)4pcvM_uD=dH&MlVRz=~C57w^eNq{}u7A(vuv~JaXSrv? z@6Y!2XX0+0cWl2G>a;9m=2-#%C8-`FO%Gdt_yj)w`2EV8Jsa#^UJ%We`f9n;HT}g( z9cO3du=3?W9}oLai)Ox`@8X@WHt|jJ_q)mF7q^v&afeM=wt2^gV^bCN9Q(WTH6ve% zawtT;64L6hKB2d)bM@su!PB`b`olwZuYL2Z%}}W7NvBevP0~4UWS*EcxY@ zGxB<7%~pKYF!vT8-Rh66VSA^{Q1eXH`;odfFv+Al zy7)r?`%lJTvjcnN4=k#$xUN^-WA%8_OvPxf8UL^8=5OtfDHT4&ET%i{j!$T(aMu?( z+r-CnYp=xxWzW@F^61i{Vp+AH?_VE}+jjWx@;46WIe&|Mef!?>xlq#bh{jmvDfJhX z#9I?4?fPfvwdmM3nGK)5mEE>>J@e;CU3JBOJqHHWc9&JBt_5vB^E$e7vhl;(7<_ZlatvJZ})Fg>7|$Jq+J{5wp?9zM5B@ab7Wk;w?@3o^UC84 zpO+fU<4qRK@}I`c^;o5{@}z3@qIprjL$eu+*^O%FU+6v%ar2gvmDuU1P3tP_RJ$r` zx8Hb{BH6s;-n7uS7FTWDw!YtZcf*}eLc5smKM4&9s|tEk>i_n)WX!8y4PGy_0-jyr zaFb&z6}0i39rJb4^}IC;@6}wIY#6F5^y{p@wvWi&SE5Oqg_l>`Or9K)amL|{5%0%t zC*JT&3eOjd$9M}*vWh-gC%Z7Dkjr(G)YIL3tXHDfy9s#2-jlf!yO*2G^OMhtMGjuw zn_jC*&S?sZ`R*z6`TfL6j60;J1wQlSOfs(Io#L~vYQnT-$NO%j@B4Iq!jD%zpQb;b zl~B7X#D6^(-<^-CPxkM5dFu3=G@Z}4-yJd%x36XM>Ej4I!m?8&p7Y)`jsL-CR2s?z z-po`sJXqlLB}3)uA$tuzSG5ZZOrJcMaX?8^`b+58E@F(ge8% zwNzIlvx>Gm24_vC|Cr)w>3L#Ord(oB*9M59owe)V=|2?hu-9;RdN7Ag!F!{Sn)(CN=})<4m_M@m zGk5#_Tyyg+54W`m`o42o5oYV?d(HTIhKs`am6xZ~O+U(VZuR$195;8j_sMRYTo6~T zeB2jNU!qzAvAsOjTg&2KWH7@8>JPlX|!wQ%By~c`qAa@H-n!0-vPj-6CPYu>H=>b`7iQ87IMrJmoTX@|0 zq?mPC{_v^EsrUS3-!pH&m;8Re$mv<k$-k0Mrk{Ihrf|d0g8cs8cP)uMbK3vj z`EB3-e)D^$k6l;F9>(r$n6_&FU%S=0$4r=yRJ#}GuAXN#&-V}Gy`Qf?ylcKzxaIJ- zP3Hcxav!#B>*~~xyvo&)_4i}ih6>Xo7p%+WmKz>dxb}9za}l3~cQQ|Nw6rl6&v^NF zmg$j-^LF`b&65I)W;R6HZoX^uoICF6gVY?xoTUaVr|-?278AAO>#M(~nr$w8FVPX1 zeeK^g*0tCF#%r?F*cG4t)c5Lmt^VRWt!hTb6PEc*Vz}NvTh`$CZI#yTTu=SZ)}GqA zeVz8JsM5aR{ncAPeeKJ6^>AH~)4J6H%?G01mZX0OiaD`o&+|K{b1koZGWzHDaN$fx zMIGgn0bEPwDRazG*fGaYUnb&y|HFiq`^|4IZ$A26*+Z2(*vldQ^PH{vv0U4GTRJDExz>t(LHMgPk2j+m3yQY>raRHd{6=ZJrv-1SK3v)`_Y?sZQqdP6#&#Kr6n zPg|B+v?W7U-C1q&`b4wE%We3~7WvJ&$CFUZa_;QL4Jv_U?g8Ju+fJ*s=)6+2T=tV! zNnok|i>VAcg69tX{`^euG7D2!>R&Fd$+8df=cV)~$niTc_53{d)!>ECYz;nry)YZM zooUnLtaj@Ed0lv+Q0P-S54YUCzOXW;;`!5LG?d@8w|C!)nbBfloSB^JN<5uV`F@dRYv{y zbo=eTyR9u(&*+vZO8qnK(9N0KTmt+)^U9{_%F1yzJ~+f@F<<6aB5!ej$DKC|mBo+E z+*~pBQJTJRu4djFEu$#uA5P3Gem$&yzv=eu=@oxM-YQPtvejr_!T!jv#_hYKJ_ePi zKU%-;NR*_zLYLg<7aJd!&FG6cexmOEp;dR9cb9J1CiGg?;Q8mT6GC6a`%k<4bx+;B z&rOnR8f3Chc6x>wnQ_lBc57L2t1yhgua@C<(!27o;@x*Q6*b3NM5pha+K{4q(mf?| zwT~BzscJ)|sfx+H1x@EyS9&lTp7FB^I+?m^P2PLib@y&HtlPs_n%n)7*DmS&#T8GF z&fWbczv}yNw@BK+COLQ4p3NPW3ckDP5+%Y#yeiH z%bqFR%*?_r_=x}g%|v^q9o}hdxsnP00xNFT|GjkGnZZcn5W|j1>5|`BBrk4`=<5y) zn|EW+<$1Q12h8T%#p*oXp0Y` z@9Uo4%-vT1+wS(pw+f=H#oJO&3hlUl`^_5eu!;X2f|R_L98xj8aw)&AguB!?AE}RFzLn+1eQ?n)f9$ z)&4Y^FOxJ_zn~~t>S^}`d2LCb0Uai4;j* zaNjAj;W%sj!>KholWu-4xa@dsy6qp%84?D{RnC){1lK%oNRXU%Wd8G5hxr`x-1Gaq z+@tv1SFU)`^6|*WUk-HeTn4^TEK8qwY3fu*=+u9Z zS#nrSW0!{s|N6)m7Kx0nAGwH%*){LqqPS_P-)!YfyNACM*F8%58S|p}@NH2l(J($v_Ad(^~v%NQiEriA6s&5 zdR_61$0xQKKepWMA@Td@>F75^S@hI7IEi&MCPBh5jVV=C2sA#W^z;1xBG2# zK)PP8+PgDz&R!7~`=F+IWcJQ`7ak@bIkS)>^$h#U&iah+e*H72pFgmrb@pFp^ZS|d zdp^0Huy9)|a-g6p;FxuTON`nE~! z8~ToE`>N;#1zvC$tC3tAlzwF*uXcSF$25aI%)t!-{H7$qG)>EvL-Nbl5h{Wp()co4M@UWjC(XfB(_vYxf72IraZ; zmOcHN&dih5zp^hbYIoM}Q~!T1E0uY_p)Xn8)+RXK-M^SoE$@fqx9RKDjidzy*GAs% zJIZ}|?zK42?pHR;ijPLI1WkKTHQm%sn`ypAP4jopYgRWOziZ>$vj3q*+r|??d`X)2 z{e1tTimy2_ykD28Ddktt$?d8VVPn>sNWW5&}v3&BBdn@O~%=uJwy!)nK zSDU%Ipv9xYS&j>5J+29v6ZTp0>5>T&9jy1;l&Uy&6JJ|Of7Mu$d}LX==Eacd`!mfq z8Xw`bcW+kRZttQYa)`z87K;pV91yqR3Il zJ-)m7WFPumsp$PJlDy7+<*V5jHlKQZ@O$8{`&D0GziF$!c1!pBx=q(MiHXELz47Fc z4v!(jjQb{Ci+HBQJagSB(CWwZ^^05JGS$CYk}@al&NpZs-dC`=#qi~^$P+<}HT!fY ze{}WXI^{Cs`Jb8361(F1s?}}X+QdB>FH91R<$3wM=JZpE$&K~1Hn&W+O#1m($j)`c z3Eu5r;_@D(U6z(t%x|3KU=Wv5*DT^25MxlQr?4=8#g}3!7l!LK0qbWT`d`-c$x-xc z7sI8a(>iu#Z41bBd_4WHd~MwK@&`T+bEB7M@?J{xe9UvpKjwNxRhNS7wiH8_31(S* z7k)9%`6OMxHQRz_ zZcI67xA`YWYIsC1heDM04PR+}1DR8PYl7Mi?0Ea>bdK!ZGf(E)^>S|%`~Fyl$&)9R z>DJCzS&qy#HY`_6uFp`rS2pKIzPjo8XvF}@15>TfN-VE@r)6}x^zM?UErQ-|?B22U zX%+jp0^5@!xf)!QjF-MCyLdO~)8?+<+HTci8()X%EcM!PQCfNy@q zw?XYu0lNx&hhhIE%Xcvnch_ac=Exsy-Nlulcl@)#-Kf;XcXo^Lm8u@#6*gY~b%tev z-X zel}U{o5AmlX$20J=dbVCap>O1bK5UZ3bQ?bRjQ2V^(-OvXJPB&N(EN4mBiPk^}oG+ zF)=#sX5UwT+y!N)<>r!HgnI^-q||!P1r#x{hUaNtlft0tI#rUi$_MdWYlKNfGkH@6c?48aQ9!c|BX`8c7udaF1 zI4^=XZ_oER@zx8Lco}bAQ!qXKp^eJxa7z`f%azNUWVI0X3bvjm#Dl_%jejR zYW|Xhy}4Y!rb#W=V0U<1u37EeI7@gwYvF${8>gij4f&OKrx zJ-jX0tt7WZO-1q<+s60xpI-lJIsUw7{c-;tj?ePNLwcLOTi&rt@{H-u@yM*KdAW#D zYQD0KBVWoxxrb4idWWwpyZB4|&|0JQ+tzib#;HVb$e$`%R`6J*KzV`cTEp!R7Jr?s zJ7axLM8^L54Ru`E^6Ihqt+nvmPDL-Nv*^lFv+I+^byJ@#+GDY#;hFcfm6MK(i1HlE?O}fvcWTwu*ME-R4mtIU zBk^#;R*l!OV(m{l8U#N~IPm|~^|Bku{yC+2#R2!O1>G|BT2^IweYKlL&4=FdTc%sM z*G~SxwqO;*LCrgtgE`J7uKBu6?rULqn*PnRHT&}pI=wnqcu`r#U(j9FIisgLOmso~ zl5?}X0zS=^PWq7;_2ksGIV<0|uVdSJK=26f)d^b`aIE0*co%4Q?-=uyqQ6#$ShSu> zD%^|V+p*pGlu>7>MW^ekqOEUJKH4$9U3G|C%RXq*?aTwoK8C(Uj46p*18*6-`dpv9 zsAK-Q0I$*&zo*EyTL1oVGR}JOCege~qdL!Nvsun$|9lr&!L}|hBIWyf>+{nNYsN?Q zS22ASpO^7W^0oTWGq$sBcii0Xb>@$|vh%f5e_qVH?qF8@nRR-E0#|P#qZ(Er?KX=(-v30`L`G2c+Z_C_zcSFI}Qso{07tVh3Z6)JvtGnlK z2_8~7eS7CG(MX4ieg_HV18Y+6K4+L8C^Xk^a(6(OQQGymdftVMB1X@G7m8^5->dDf zT<6xfDq()9tn{XRlT8jQYUcMu{p+1RKRZ3w=J2|`f0;VUel@ppS@icFa4Ij5Sbv=5 z>!}K<8#}Tt6bWh9J~#9F)$#ZG!z{hR)F971<+>Q{g0I&mKi`maw8+W)(&>mpFe6` zc_&)X_?>=};=xr6a|0?1PH$G5YP0xsgTy{BBgLaLCOd@7H!B1>S!lh#Cpz!)$?QK3 z!tavqdoR3p$M4}+iC}Y;YfhcZLf@#ban;_D&OpZ z$x6YSk63p7o8nthvBBj2XNDZP1+EVB>mMJwqjG@%^Hc9BVmg|fb>|=LEowa?u79?8 zkITG;a@WqRmy$Ov&Rt@8eQNh9*E@DIH%*$tbT+$2|E_I?(4jQ%+uBn9AO2jF`nGw3 z!X<@A&xA6#F9)rOkGXy7(btw4J7&C;va5&`Y5b}9r_kZa=Z9~8ADb5VPCEX9p5T+T z1tQH0RBApJ?|v)4|A+DG_swr*CagX_=f&Z>tJP*2Slm{Bzw>_Hp}n^_6s9nmJ-Rk; zg6QI7LOUK#?|F2m?3r0o|DOA|_O;BAlfslVJu4SDGbW<;z<2hzv~`L+~w6;pYNv6^FN!cHT9Iud123} z!wP1Cmw2>Hye>>zmYe&x^!wggc9E~QZq;7pyVcPUlk0xO&_TJ&foFn&u*ZoxAwiz2 zfiQ9r%1b*O_9G*C|CO0{PGG`?es0}BI}Qxwdyr0v%bBxh?Of-6Rki-SFXQ>SBGHx3B2U5-b8Pr3Bu?C)7iOxbX}Co1tborqn`z&@ zC#$as`}g|SdA;z5_x7iq-Dbr5kEfLPG_7?-Z>m{t@Tr?G% zHm=#oq$r}Kv@d97toCR1)2-8ElUj?82y^*NxumYWZT5Z9lRDF8TD$fZYW2!mH98&p zc))afOqkyOUz3V{&%IuB&#Q<1yr{#uRcee&eU4UnA5p&`AfK2h0w-9bCb&d%EO`cCY%ePMbuW_IIN6!nH*~W!ikB7K!Q~mmX z+3y=KK8hMJD>go`Y5lsh@N=7y+p3WLYjhc0c5YhE@h^&Dj{C+KalsnyPj(D9x{Lfj zxlb!LzjlD*sljiJ1%?{09hvw)#9q3&MAKG7{M8OumtRcpt|66pcW=XK znQKpNGBfoJ&+T7!_?CR_>tYTQrD>`UIO;C%dHFZ#OVkvzgT|%Xv=<0C@Cdlt9p3%? zLeaIAEIOK1#v+GisujHb#I2{d{)p23PNyP8uM1*(*s|B#uIHIxv|KAm>(s)qwWm)R zt25+sB+O!QnHS6;ldvx1o8gqDa*?wx?40j#$TH~ow9aYahc5oma`av^@y#*2KB2t5 zfBtOh-uyiF%DMZlIfn(A&MceReC)dO(GBk(Ra%^lSyouO|7mrehIA&+;%Uo-8?HWA zkJFmJ_rLcNg}Hj!jMw7!@Ug#`rvBbdza(6@Ml(LlOH9v#O9i$T;NaR%TeDh}So3-3 zwTo&7du@IE)4SoQ$+Vwe|G$}4bhK1lSfx~0Gv@s6>?l8x7luwp_u5U_YsVV8Do5uk z+x#P1`@hS-)9$bNoB7+X{tA1o$GQU6eIIY$coAXw{LS181s9T3r~F!)WEVEqr}84# zhi0`X*)3)>pWFFlwiUjxaD2V9=TYX_h7uWu zdY;MqRwS>^OI5hA`G82pV^?1Hd+dK@j0^((=ULiqs;RlRzC5e=I!9IUUd<2dcgv*f zXvMGL_-c18+VV+}aL4oZt3Dn_pY-r)%}_v8Go+J?_GVT zl6Bh7V;&PG{Cs0se|a@4hxhN7k$unBKVO}3f}`?YmgcI%w=09*JUKP@P|!T}3mNK9 z!~HKDNN(zQefdg{UFDM%XJa+Jn_1qxv8Y!Ud^CFv&ubgg>(50$q+Hw|;k85U`sKz| z-Ntr1fB3Jwz$tk1HQ!|Jo&u(o9KR&>_loSidHnakKaIanvD^J#xvA~a>b=fSCMXx2 zpY3vC?cxOX^A3AA7$rT)F>8JKLIIxz6+X--?nm0@h`yL+sUN4Z^o`!GsJ)Yo zUw>Wx;*eY3_kB|zFa5uDy74!|W3FOXXB>|AMenM zf7Byh{%xO}>)BxSgal*Dw{srMTIzY!ylGh)M^sEui2Z}j^VoEaQ&a*TALahd(BQ7# zKV^0P&Q&pNGwy#pcKg&k@p&n7tM2=Tn-{&~KW~>Ewl3ycY{@QZ$(ZoCnr}xxZDrpV z8F#CAN`to5F~jx3EHio;cD%CHH<)I+$MfR#B4+L{3=vn2 z(`U@@+LN&-NXXy#o8ztZe1Q=jHA}LxrcKUujf=4?sC@r>{q=KK87qH073sRBv-8)n z;~E{x8b-=X9A4E_a-?R@`o-jBEmFUleUA-4*PYA7XICc{vaO5IF=}glti^L=UUR&- ziJhkBHhE4FQH6yz8uwBdQ*SitGB_Pi?KyYuSZ(nw|JVy&>q=O6&D?&lZ?V+Mytx8z zt9~3m_iyVzn{Ebi*~*vJm2zz%;th{g>}N*kZjUd?th|1H-{LnG`3*n6O|LzC|Cz>; z{d0V0-t1j6Z&yWUA(H9KiihUTLeAw4MC%scrjs*XF89ZN9mD#%h5>SC>o0-`L=!YQfB}{nBaK z?@7P*G;!IT5<6xl7Auj@c&{wd=UBeK3Ge%+?GC<=wjES)Sd)73snLo?_G-~a29_lJw;KIFu_X;`N7L)FT5 zEz>dSYq1_QZizdsn5I zt}6(Aeo6Dmo_zs7y>_OiDk*JVX%zR1* zwbHLWvkT7_@$EY#`GZ4ja+SINBQ@FkTlU)gd-HD7@1wR)ziT#HE&BC^gV-=~UF&(RSN6R13I348_-Po9a*EH_koC^Fl+v|@{Y_4iOz4T7-yPKbVe!idoOM2G# zGZV_TO^YdtxqT^Win#B@g_beDyDn|hVOnjz?sM7pe=e>&m*~z2P-qS^+iMiOZtugc zqMN1_>hE^29_?Afc6z^B9h2^}Cq`R;uQlk&I2`+bhHOZ@a(eAXN_P5!qgTh-*Xk1wq`jKH*_~oEmiyWf!%9$-Q>YmIf zZwt1LPtESRs8+^ZySKgI_v*Q?P3BG3%QT765C8Xo<7nZst@dfBKQ2D*TPdLy=RB8T zH~Y<8je|wWt8Ly0R#Z<4ap(S&@`m}w>rD@)i+*R?vFhU~hSv*y80Q|Ie=K|Rf{fB< z>ZjxK3ay3BS)Q$*yZ@)5*REY>;}aJ#%sQRC%$c#fBD`+zj}y^zq~7{`oWK*I7Wa75 zr{Mj+P8D5EoxMVOp@{X@y_Z{aC8xi8;ijCMbTXCNA;q5~wxa{98{Fp9j_QJi+ zFNU*w?ZH+txzeexRMz9qaja`_1s35&xF8{XcZ7_qEkl<>xZHt@2mwnLVwdcCEgjk;jMayP0Q~ zZoAGRxN6gc;*Os;bl%L1n0t+D`#0Zi&FFiK^Vb+#O`e$W`!K(4P~Fe%_L-7VR@>(; zu6gll(yb)E>1RVW?y9=pnyURE@$R{b=Qh_C7d`B~S?PBFQHG^W>5WSf>uj=xHN!=m zEh}Xfx;j2eYcxlw zEe>&17QHivo4b3?-19!uzA_v)$UFJ>Nn5_f_d}niw(kqw_wmEwr{d-B7cZ6xlXKeG ze`T@!-aoU7uBVz$D`dzMXn6NXruyu;vpa$ey`L0lCb~Xw4&EjuL~;P z5B>LRBKv9adG)LA{63VN+SgSOd&D9~sjL3_E#If}%Kw{O53qI!{UC8XeSX!tKfmtZ zcdquiGJ9+EY47%LQ@(0=KWMw!7M}YzZV!i5f0)C9J6p2iSA95@*%#@SDWIhPc9o4B z!y6-$eV=ZfKGiyXUUc5UrR%#^bj^K{IJfU%W~ACVC&!Yi?RV}@vtrHXRJblsZr~d7 z`*U@i4*#9+s!9@>tiNSa>pe4LERX#(F$=*Rp;l`rcS!^hw+hy2t(Ps*5}iEOZbet=WuF-IsbgSl856?=@I4d z-N)(*?*B7loN@l}WUVio`VKkVuJ|wEwepeivo+Hj-U~;*du_hP^l75hgt~{V;uY7~ zPA`#ox?@5ApQCnJk}r6wrj^z|Ji0fPtJSS$O|pdRf!D>8#V@R%{k>P%V0r0#waX7w zR%URnT=tTg^JWvXUYjr{L>1qWA0@i1j~C!0I8PY#K{+aoe}y0-a& zkj78DR_p8he^zTgWwxHh@jL&oKHyyhc-Thyp z<<-x+X(lRjnC*PUvC3#+)9cu4%#My?iFsc_q=Q=~#H?Cy_{FD;nK27R)fyAF$5ti& zJa7Nu*`?O(NXsYPCRu?~x4-k$QSsXRO-ZFxuDZo5TK$E5ZP%s6f2S3{uK(rnbwe{zk44|F@0=g^a8>l#sZWou z-?w+q^Im(GaO*x6lV`ypQOp-u7wi>@3Uuzt>{EQ^UpTFQ>i(jPHm`~&_k=6|J-E~P z>E=o1)PUNHlB+{ajrp7T=FVJt^~tmKYuqH~*OdHBo3$qAw&Twjt{(!fUwg&p>+8$e zg_OzP4ZpT>$-9#?H#Kwo>)t*uw(i;4_4N=WHRh%k z@aAS{mTk_KzIyQ5v|MXTVO8GqO&2#@_`bhnM$FgA3p&^P44miY%x`}VM1j?Llsn(y0_MC1NWyRE@-`1}%^m2SH)F_x}d{rPd=BZ0mI z$M==rettSIeP5K{A#wHZ^B$dO3)$tlPhLvZDsCe)gVyt3*5}#IXmXi2&HFA=$`sP- zJM~t`-SeB|LOOX9Cb9mpnfS?zU;5GS#L6;_EaM)bT|HMu~ z-S@AvtGt_a-kY~sG3NHBJ4;_^$^TWoq_q6QgNP^Aa%`e!CZ68!9r&E<#Np=4&D*{1 zNzA?Le{gct^f-sgmgg&HTwEj4S+Gz2!jF4=l~KB`FZUO$Jeg2g{wM2pq*eIzqQ%AK zqSqh3mz|!YYyY<~`c$vDU`@tXF{T;9dt#TC9N=ob{5`2}(Lu)TP0aPo_ECo}z2lge z;$QGn_WN=3Z_!MtrjwKBtz{k7^ zN%ft_4O!T3Fa6hZX2S>X+cPc%Xl^{Wj>Gc(!KRQ$KPn!5EM>9_WM@*}uwTpZ+|=fjE}7YrFX&D` zCG*a?^W|}oq}-&fOeczDddpJ%f2&WK&?YDx^SSgK!@8xn&VFtEb}Hsbg4pa-4bH3E z*7KK7I-0xE=k}s)dMiuLa4wrBz5CR?_g*2FR76%kP>ntraXjYwwbM=WDmTWoFRgh~ zZxdDb(A?hfBF~oUMJt}CZE$hd{M`{?kQ*m@Dun5Bx!M1(m*#&{;$9Idb&HADtnKvo z_`=YgzkUBt+V_BA%`U^b*XHQcnKcC>YBTq~-xiIt&n(u;q87ssZ` zIxJ%|voe>Tpxr!w>b8`h7rbV@zeABzkU4_J^%miB90GQ72(fb zRMs7AO%MF?^wFne`@e^`r3pU~oByEayY&646*gXaJBxOfUfWZ9{M)Bh;roRQF3()O z-Ti9J(J-rRd;fRG>;3=iZ=Za~=jyL*dH3S(eUrcMaBz}fvE}O%uBW>0++(`w*d*sa z*QS@XevQrE>g``I-TQvRJM|TZ$$k6et_wBd34NEGd3SFr%ZZhI-m}+#X`5toL&2QI z;&Z#THT*)Khdn&)x`(a0@bT$Oacp0nZ(MZsj(gY!)BHyB<08=xp(c^vYClXqwJmDR z>>uLuZtl*P|HzbL9C2m$l+bgpMI-souX^%v+ve@Fxnsk&F1o#RgGPSbRxZCeHi_vk z%i{F5+s|v@)o8Z;u%Syc_<>h+svEmoM)xM8g!i0C*6bGg* zs%&cd`)*Hy@6Vg}|L-gM?D~Asl*qrX(|fla4c=$5P^vut#GjJH`I`LEht`@sUe#pu zBuqLvNl%xhO7eke+wA?j4HeD@C^$XL5a(I_W1`U=m$cSXVsfDy-!6EQr1$VA61zaxZR-4#XpwVZIyOu z-j2dxj?nhbD{fNW_w4f4oKbNXQ2KcMo=o?gGc&norKMiI_h~L?(m{r~)5^2zR!%q~ zlBCyrTm4yj&+NzVQ)0@SZ@e;nar@vB-dwGWWvy>dfs@=c5U-0*u4}bdq9#nq1_y1eD?PnN2 zS01RDIwxhX&-3lmUT38QzM8uH;EJxtkDTEkM_ueODkLMJoRk4|BPXB;GH#L_R;SjyopKBYtPT$vpR2G zmhBUpx#hkIo)Hf(#codwmRzuVme$-v<>`v6R;^t=dDc05an5N$^Pj0+o>2HRxzTpd z_obggxpvuX{C?EvYO_#-sfDND%*he)`TJfi+9a0nrmtaH_PKkZ>yELmzCXQi=_&ya zafZbqiyMFH{R(C_C=&hrCvNNRB@CTRlf^dXJlDKnWa;)$>duGS3qHx;nk@Hq?q*y12e(Y0Zaw=O-*`Utd$A>wfw2(?{Or(@wA7wP4TVyZH=%!cKYG za2)TSuf<>Y`{5@E*^5skC$uNM?#q2Tb$h-3f)x%ndxUl@p1N-7sd}l8&GEHc{(NNr zf9BlLYKB?5M;z~by=OkPbjnKELz|6wXGG5}naipz;F}u%@!Oezci*1`Rvk?~Y5(o1 z`l*THfs5un@sZsZvGm$+F3wNhBHoj(x638YVbp%?;BL>nWBc(_5{+%PA!~#m%$hCR z`{qJo%%3~@;y<*e{Z;ytl~*!z$)CFpX-Aj&Rv3Pe;7FM2woIeyX|ndFYWr(ndD1_f z%8h?!7kc1zFsq|j>a^mIvgz~BT3TH*>T2aW@x{Q5asPqeCdZ|A6^Kcl|JW0G?z;Kp zTN)q21!d+Qoo`{8*|qG2qU*^`MiGUnK|K@7*Wakue!;b0??d>?=3Oh;{SRt^#5a+T>#lFH-SDq? zt+9OYHuJEW+{GFDwkIE|3vXSdb>j7`h{aR0BHO2h&edT&wvg*qimcV4s%tG;TGj?P zw=X<(Bi!spiT0L%YkeLrxVA&PDOPAl(k8z>DXQT{Q6FA}bXEtgUnw;;R&Ie*OWr)O z?Z+<5@_hE)ci>#izvA?T|EDcmWqze~WymJiFYeX~)?dGLi8;@n7VBEM`HCT*{3iR$ z8S&=%MhRmrCH!CQ9zIea-jLzra<(B(ZqH5+D$1lC)AvtmD zGMliu`dY5;Vr`;JC#s&=+x1K~?wzZ{`6;C=%y$c~ias@e_a|{xW8sMr z&IE4K`E2QRQcv;E71=jW9xA8yZN6g4up(bHWtP(1jhj-mOOB^y9DBzV_$iG|g-@t- zO~2}e?QfM@`##6bb<{f%6e?eDc~t@K#90>qE6#uf4k_G@Ub%7mW&Jn7PJEJD2Oh zpP!qLpSo}R z{=auWJrO=1bzufWg>=czr{8XKc!hkBD8BHK^@Ej5)tp-o>^`o&`_y^=$Lb3IhR;_W z_sB(`+Fdtw+A8U53(VIj>dTvQC2Uo4*AjBpX%0FT=J<^D&M$A7)|$VY@9X@Ye=EMM z{%RLUZ5$9r-+c~$nernpVPg--Ub=#r~{nMSjCWw|cUU6T!eBGptryCw< zIoOysbIZ7%>C+EM$T+QL!+zyT_$jeH*3HK=5*)66j9{pEyZb+U{ zH`lg!{~p2JW%CYKUuQTM@odwbsaq3MLrxyNUh8#S<$BDzf0tQ$^KR}Cea|BJwWqRe ztDRqeNoDMo^ONE$C#P0;aK1}^!=-eka(iD(NKKk(c#Zvgt8T5T!6*!k{Mi!!h=N8X79>yUA&~JlBYT8MatIwZ=ZRewtly7XH5M&zk6%%PX2WIsqa+V zk9@a_L*uqJ+ZQf9yC)@TF3*K45!8RpSYL|?!XO4XP zoiob!*rvbQ@Od%Y8tIg7_b1Yy?mnE%p|deRn&EOnT(M5n=XcC&q?R5oRGGN5O5n?h zmhK~yLkw1(=~s5Gu1|=PI#IMaT!OReH*@rZWG4Ls%U#WO>py$rAoeS2pUS*I-SquO zT1)rpuMzyMv!vL_yZu=3#7iA>Z`^p-5OUsl4(sjHZ}+!v*dlLQHak2k>l{n&cGqW> z%d~e#-JccC)TzJsZuoS2F`KQuYL7nqOg)l$XQ9Ro=cI|B7#Y7Ed&JvcnpN$%dD~HW zmKCQucy}`Gem`RuU(NCd^Xz{&yPvLpf6Qq9A+A^QtY<9U!&24+6+UGOo3c@-@ZHqc zcbnP|RfXI)S$gCQgV^g6qIGvg!>8Qe^?B{m*=3WocW^F0m>Fs&eT?^R|ASdaAH~m_ zquHKux}wHD!Ee>28BbZ2uT<3SzvY*7(YtfQuFGbBBlM%SpD*Qkby3|rtF`m%>aMcz z_-a*mmImuXRh=ELE7zK;n(e+?C+sjo!D%o1^)&u#4+Y*mJa7BQ<7fB!d*Sp~`Gr#3Q7lW2-_^n4`CneJ-ezhKXcKhZl+AAU0Ze9@H+ z3yRZM-&+1{;h!~CcQ!qUWMRDQV7}ta?yEb!>z{^fUzNK`OYIkv$En`1t$XS#zGeLU z?Y=*B--k2KPhY6*5oh7Kx2-Py=RM!&Q?}>s-=X6>VYb@w;~wQVUFUv(={V1G*2PzC z7eA?gzZ?GV#pU_WeUZ0f<;c; z*B>9Pa+d$T_T~>K(*eKeU3VB7n-|a7%m1~1>f(}s-xt>Zm%GPu=j4}3vQe_y?|=Nf z9{e-^%(>+ogFRVYUN(#Ux}W*#{OY|q{a4f2d%}O6W}g2u?PmA$M03j*S&MIVv%6n> zcGu+J1nY{{7v+`OA@T{l$IYb!Rvr7e=}Yj|bKkcVJ$rGYt=#cl&CPkM%GAC8YQ#R? z^6${=v$wY;&0W8_$>dYTnTf)Asj*Z0*KOPSr78UL6jzr*D(q`RUbTlG4{&g$=~l3L;vSeCo+)4jLNAqFwoHn9iI7`Z6@<&c%JocQZ0{ZkYXOzwLQ{DQqpkjxT#N&$z*QL?ZUMRzA=;b zefF1rZTrOW)VT@E%F?|bzTC1==(UWp)a0#8ul-<_`Z;qk=h4H@F9$i@`gC$>h>xv- z!iPeP-p^97Y4P`w2~4PU(3)7r2Bjyyj{4eEsHAyVZS(gjFwj z!+&c%RXU!!^7s=etG6|ZpLjepJ?lTZ_fMU_f3|V4Rwd_|^p!PcS)v<5{$0L&c*;jwr2WdFJBhqXoQk1sj9cGszh(9?gF zw5F_`dLcY+Eo(?=@Lu22jp3(Rru`~AH#=2w@%#y&tpnaw|C(9!KKZ`p{i?ij%Qk~K zvn&qY{1PDfJm!1%|L^`&zc%cSIij7_xTJK^QpDZV*=vp&$Z4u9>hNP|Jg@^6`7T5Y)rojt!&uwbJtn{yYpWD5i`{>=%mK(ErUi(zu|F`#9 z*1MO%8%0kw6}j20_)`(J_*+t_{LSJ`d;W*pyVThot=)Cvso4(rbeCNKRbp5Lwt_16nmIS+oP=|GVS<)NN zT))8Mo>w+^Y4@|s4eMg=?eb^P{l2*(qrO zPY(|Kv6byor~B4-TIX}VzVYSwReWo~&Ata^JLhj$T*{Zh85vUi%sI;X)YiL~6wfj9 z3oUuQyErP;?Ac$nEk(cEHL|0h@`{;!nEIH&)_Z&IMBnUQH^cd_4Uh1{jHYcGF^yInb1Ghktf+W*{`qw&2J!o0+}4eH zaTCr=P)Km*PAEFW>a;yh=!fjD#`rsIr`Y~8wed!19SfP>d;g_zVO^oy=Tt6s@9eVl zU3ru2g?CBcRhp=GtX@r+Rp9oNsB4A$R_)qdq;itw$bu@to6k>^$}UTjJ7mqZ^VY+0k2>rd9v@Qh4r+{kflVjrmi|=gw9; z>oxK9BFouv&*z2x3f5j!HtCv#%Q?UPX;Zzc+FpF;bqU(fSpNR~o}cb3g_>QPQj3_b zzqk3$A6&Lp{QFC#YnkF<7d|$#pFSd()g`QOWq!iCm~^E{&l%ji6|TL>u}d_UxNKf? z@yDG|r^(p`5A&__*%?C^c)A)sa=kk}y}(jt$7nzP~5<0nM_ zy?a>uw36%T93}p0!Tv*4HT$v|Kl}gxJzu4N_MU=cw|l>Csw(oS=~T&3`%G8s&Cf#=^ZS%L zBF|l2K2^_jdr;gQtGI8U%9+0Z)V$Rlw;`{1=Y+n(>qUNh9YQQm{&$)1eOfiY@3i%D zb(8LVKWgM`efjQjzl2mR%lHMC(4DgICTRmRHa7J{!Ismls_7+#j#m!8D`-?n)yM>5Z!&eb>nD|N|e>4T2>ny1`jn@<+~F~~mgqB?XT zuiU)3voz8lMpoXQYd)=f@AFridbgPK%N9n?-n1o`V{7qzS)WxYg_X0eWuD++KR)4X zV#Ci=#wJF)eIa8*z%S*RZy$ZcpYtlT_v@=9--+M9z1z8sZS7ni&78lrQfno}{%wkyt@5NS z;3Ll$-wS==zYqM)-00?*H@%S2VkeuQ+;<_9iZ$*LtQPVq$$ME(9Nk^y@Xl}L>8wLr zcgblPseeqWT-A2{f{wV}{YxR2GG98e&2!w7GE3xv;YXFY(r%RptOvE5uOzD9{ylrO zx7CcZ;mYc=&!u!7zU_YX=?Qa^qbryClJ)MYwTB9iA9}L;&R_X0{8GO@SYJP|KC>_* z=Jk5dsNYM9jDMswDO%6ao}oVBUi(^x?LqH;-gx}oUrgeqC{+^?Tbp z_XQ^}mG}lUw6-oE2Xm21kG2nY@T{o#7F7MvyJzB0yq4bb*)CL@=^PSE5ENEalXda zn&7s*Z?cm6D+#6&4(%dV$A1>S!Sig3R^0jg^!F)l?vNGEllYQ0qqAyapR zSV~!Iw=}CG>+`8>TNKu}T|LisVyD~J>){rY+Y`cWFn@ge^XmoY13NwB_GHzZXVkI! zF3ZZ0HsdkR_j69uliT~IlrGWBUB>!4?PAZB)rv6}9`D$0|Kq~sr)f*Yfwbn_m!vbUVPd7bkc0Sr7uobK3)6&m1)EImeLoKx7z3*Xz?rBd|vQiZO7&x ziPwVW2{JD06KxCl6lS?U)Nre^{ydHSU$y0z+~gI#UQwrSD6FMryx(b_iNo%*G=Z^4PX3-AAea;JGnO69(yexmThs}d~^J4zD_Se!yo(6DDJa^)Ez=bDUFTCfn znR5S?gk$Zj$4Xx|YLy+_?(OpE^wxXse~u|gGQPI>EdN06t8zqwZ@OB>)aoe?fwET@ zJo)x0bf)vio4e|k?D?!~K2`p={d&#Y7UtI-g5u0C?df`|wefI#MtsVL$kGBUt1a^` zcL*5kX=O;({5D>_Vcn%;EVaDHy0e|Wgf%`}@5P^*lz3v#gzaiygHL)0#yB2&8a~hd z_~lm(L5?fJyc1k6`|3O?sG9ROw(5!Gyt^L)wslW0o%Y#J%DU;=E$xS~9-+ssA9GyH zT(8CZ=kk#?5gW8tz5XM#A(=I*E^G38v(;uYFVbB%UuU1!SeL795pH~ALFqYZ|Feq6 zj9QdTEPgkG6Gi-{x|Br#w3+Sn55!rSIHJF$QIA z&RoasMbm}9t}BtAcbQpm8po{Ja~4)fJ%6}<_mfYb91rYiFIu(AqI8n+=hP{UiE`Jr z_k^(uGP)6R!9(Oz2z0R$LW>wHwzk?vx6a0|Ma8XT0g-RZ z&n27_{~PhUXyz)_Hw&GQ2j*qm^xA#ltn~I7xBrR6@y zc>2lI^;1gsN=sNi*m@<}?~MGmTd%}p_ja32H@{uEVJcVerDd;lmWQl~JatCSwx}WQ z`Rg^8<}bQYTDSh+6R(}Y{gYNM4&HIozM*>V6|FU&ExWey@ULO6_;_f-tn!1R&!e$|>s_7zv z?MjSym+169TKE3A^}>y7BHosr+w-)x@m%%_iRClecD`&anzPJ=%jWX5ixL)++FHEZwF$kY1xpN!qvr{!2su{jkisN#6VgU*3u^7H}JL8C?F^d!745qFwWceNvlw9u!K2OtDFhnt0ulH|E10nY;F# z&zmK9bhq@qnyz-rY!B!AipRQ7@BcZ}o4WeIouaEw8~r!xNzV9v=gG?22bVODPFpT7Iw>!c>_YIq&1>%FBlqAx!2;&JUyv7rh-UAH!PRU`$cdMK=M-Wq6@ zkfU&I(&TSq^_fSz`Sv?X)bqYFm6&)hc6r$Aotf{{cJ{QL4P4c4n6i2AzNe|aBAmZE z=e^yfxRT|GM6wp+nVn{hQ$6dOdsq&|od2+cP43y6J*=zNCNDlH$tkVV%V?S>WS`E# zz}>aY`}N*6b60+L+reGLSai_&GS9!PkiHQ4lD+-Q7lw8#-tLz55k4*N^Pb=CbKi#f zs}DUm@6Ws8T|+`eeRgEx71EYJ>MSY>y*GaqyEdwPulzcet-Hw&}-eQ zK#p}`wn0DlSbdgWJnd)aWG*cwCUJ4)y}lJPO($=;DD7cmwCGxt(?*fEKI7fvIUi52 znlHoBH?^td(uMOI+D@F3dfxMAf33Z06g$JJ&mB_op?$kTBbC|bA2PTcc+yAk#eC{9UU9qX=!*shIr$+ARt)E`bGQa)wXkgWbnD&5kA~Gu?7#L?J=}+Ml z+}-$w!J)owzee@vDY8?3-%|R$^g_f|liu#H0kb5-b}Tx~{!o{dbCveY12!*HcfN61 z9(_psb@_zke#s;w6Z7B+75@bqC!SjR?(pu7O<&hPU*R>k?5aij9WJKO&C`Tkj;-D` zJMt-0{k*I~{!jB-ZpU&jH`@I7!%Yqc?S|_UkLvvVvw78Fx!j-S+>U&P$zs^6H0`U4eCC z3E4v04jW9v>!WRymt9;oq5kovJM9zVI&0R~2a3+#aWDM3gT{+jDqiPXPV$xdW?w!Z ztF!Rsi_o$*f%-G16K6%;F3M@1-~Fs+8Lv*KFn7iR$>!D1r7W2jhekVpIVpW{^?`CG zlTY>zh9@Kbx>&y3mG^JWsh4Xjk1>@j3Amvh^^ak;_nEbF@-35uli%!EtQhmbcZI;E zT}N6<-Taokn$%T!<85Z`wY3-R@(oX!c?I>X-K@LNIQ(pCKda%>vs@7-UUN>l)V-;< z39S2CZs&X2XP4eeyB${35*Kp&OxI|)?7E$w^l3-q&NY)n7wrz+7Idwf>BY1Sal17y zZ0dafZpV{JpSs`w5L^|_D8_PN<)bS$hl)8Hmk2F7ob~FC&z_^kD>Hw`tX-PA`AA`` zLG4rN`;3d{WOAQb&Nw%-W&NosUQT-R-3pWn%IDjK&9mCFe$W5)|F_I}7nlDwz?AE0 zb9Jxf^5snnLtcdJ-LspqxBtx^j&MUJX@mKW2Y0@l7JZscYjNr7BhT0LDQZ|bJ-DO8 zRQYh}<5Y>&wWURU#y^A1k|O1peeBDB8La#Ja+CP#^1nP{3WhAp0$KMS4ZVK3Fod++S|xMq{<0eeR}S zSx0N`1GC`$KYm=LqP-qTX12Ye0D(|$3$msh=!r_7pK;a}N`5`s{ifn_uVp^W^uWnVa>x60&3V7?!F#e7-;BQ|bNV z&ob|{>m{E1V%FxFQ*@k%<*T-nigz z+*#8H7q^vvb>DU@^r0b-;{5Q%pUtP09-kvLC8_M&6t~-kKi~X#wB@XQX%(lPp5dyA zY1bw9slNSkW1Fh{lJoA@)7fR6>~`B`To1JdhQy;|L$2DxHpLJ=b;;aS8n;i zWqL-0C&{1h;r)!7g+)(d9!)CXV-;ZgaJ+5X`=pyj9DbQP^?!c%Pl;zd!!I)}^jYYt zYkm0}-FUf9Nkv(^$h~dh%%1CbF7YQ%V9YY{`3oD8rhWV_*t%Pg`$=Cn!{_b)Phavr z5Xql+({A3LRNmcO1NN^_c{dkAmoIFWc*^|AM(5 zI4ykf=uEKfF8)c6tC<$u^3J^eym0G(R@acQU)PgUgLm>81fIHUz?dg?@$Ba`!53OQ zN($kcx8rv{*|cd|ld{#}`Ob|yUp(qQy>9b1;e);O484--}m&3*zY`Sd3)Z|`-&gKHmjwb%|1Kj-U?%>sVb=& zR`OxjO(G9J(wF_55xe=xO0R9pqLg=OXyi+1*E1-Xu`;gjJoiC&LqHd!yIGgrcDAP) zp6nk2e1b2Y6%@{%Qz~=RS!w&Os86fD&6=mUzVSzl*yg?+q9^Mom4-;oRoe5_y_D}) zK*y7nhNtgbQe`Zj(%qOfbMm!z^W>-mzcbBksijOmJPnm!eK2c!p3vgc&->bvFMvCQ zyW>sToDioaOp9&_tezcfzQ@q{|1VvUzdK+19rz=@PW$%plR_TL+dOAZ(>e85Xwz!W zzTAdoQdyeCyj(T+w?0kfU6jq}%c|4fKfzb=YV@Yttcj*q|2zy$`8n@gvi;vlo0c<8 zf7kK*ZWdpD=7~`GAXClNc`q)PS$H8Cq9Tg(fbx%v_q<~D#kl* zdr!>t@UrEX6~C7)j%D%Ro^hoi>&%*5r(HTLW+X{WmzeC9zsEc8n@zl-6HCU^Ut2uW z`%8`#E?OF}b)oeni{c-zu4X51stheIdwXcrTd|MJRkSR3NM7)qm|@ti5(d=ZO}hy(Tc}~O|y04!$p`?O4wF)MgJ-- zc@=SUQ?B*%ja>`kG?Xu-vX>q?zdZH%)AYHabsuKU?l@LAFa2bwkBa%b_my|HaGi_l zcYhGMYUbac#{AQc_sKqbFF0#Y0N0eyiJ_+1T!O0hQZktvlkL}D@~_=B$J$3(^waM5 zyS|1#-Lp_I`}fW+(-rl*EsH}Z_Y|(#XTQkj)o;Gq-E&xML{fJA3@Nu*=T7 z=VB#q@40xclKoiKiKBKw+uq#pd3i1OY3P0T&Re`P>H-J0xdhyOX{ogN>b#KWFC%vE zJ>#vJTB{|scurLfYx)06zgMo<9wD}jVYS}5>zd}XPpzDr?H(DZ*=@G^fj_Gj*9oC- zQ$OcE7GBM@aOGp^V@ITM&y_DHHEZtZg&*ScvIZl`*hPCro%%>DVdXfyYjr4<@% zjIL?DSsR7B4Vh-VmU>#;-MRIQ^9BEVt12(OSM&U9?dr93igo4Oln(w2`3^td^F8wl ze{B3tGRdZB^ZAY6mYL^!DS0n@)YTzuFf6$RlBfA=jDfxi=E#-YZ#iseO@Y ztN3#Z)!wz~f;Nk{?fGnceC_84*7qxn)1O^uewNL1=KL42uz&o8QWipOt-Mzmcd)u~ zM&u^nbzC$tJ5<)&KmFA2nvjUIc~7>^lW*G6cR6Lwx15|y0zcn=iJTsjt8MkI^=<#L zUnK&0t1HgVdzsTPsmPvn!CeUxjsv}hp-;SyDn7e(AS2~Vu1kKj zM$(^m#<@b4WlJ}vJ>GPl$t5cPg~77i;H9Z?x(z#aGq3n^V9Uoj1y^MSyKe~I6kpf1 z?1Ya|aE9Q?%45cvvSv=&2lp=ipDTUB*`2fYP-_K8<#fSw7vDN))>mnWCrKRcideN| zhM=WxjQYIKS%*brdu=~y%RAcWK9^YKn~?pyBI;U|L7JUn<}|6yeY+X=q$Qpb9`^*9FIHs_IsA^aX28DXf@}3@09RM|GuQZt1&(szGGf`zhcAm z!shHbS${Re%O_kk<@@h1v1Fee-?KH{I@8j=EHvDm7XR`%|MFiRjE@eP&e2}4`m08s z>074Mq?#Yy^EKyJeNmh`b#roKFZ1KnqSA3we8L(ro64-LEBoTitnU z{@!ALPQn?h=xN^>rmog0erI#U+I^#+{jW!#pPKXAMffquonG^BneYYIowr|I?|ZtA z$=G(z*QgK)%m2nE6C@ocM()pC6I1@#bZNbB`OQMU-iRNy8FR8ySPq??5VbVpQ=-mk zOQpNN7y8SGy~>CTzV|=g&LQ{fOQXUsAvX;+T|E#J_;9M|On<2<(}dKvoBkKRa8_I3 zg7}5cbCUm_l?X@{yyoQEb;tSO@65VIU-U#{0xwTb6}`s!Pr9EHT6ZncZ`){6? z=CdNfYrUp5Q|edC_pd@FRU)6RYVVu6Rxf|al(XlwOy4d!DpV0Qi>=kY`S+DYR~|_` zs6FXaTKxKWsJ)%r?gWw5nN9bv%&(nQyRdetO!3ZFZ#f#38xz;bD|uYhDX!4I`(t^a z70WYkE&eqOeoP+E(-@1dJw5*KsP5Cd`wMb!dS%U;(y0*6u;TsfTdNiJmZdTL+@T$K znPc^*Q!np5e9L|KaN$Fr2TZ&5fd zyMLqVr&^A;hR2OpO-iue(X;yf+DEtRGuGu+yZouW`BOJs(FRzpU$z9>p4# zgJJ1+S~vrbMOd9$Iyb1>U+2v9Z+=tjf1DA1T3`2fznGR>U;6P~hTS=1-*uHmnU6Uy&hh8JxU_p!UUGNI zgGC!Ubv}!C8vI+`zAy4!ZP&)YC(bYZvcua>uasl0v*b;2T-~#rRV%TRZ_=b?2bNW? ziHi(aC3L-AReSojeeqF8HnDHeySHiW9Ut$j^1I(oP3==s);1AT{JwgQtHD*J^mVqY zzPVamQb`SyS8x9-vF>&9D-|}4GEG;7yZM0+{p2}MmQJ~s^Wmz|rq)xHHOn^5pT6e! zDzSjqR_~@)*9aP1-_s`fJ$|xu-S>U@Qy(`R=hA!G+wfDR^ilZL4Q<9ZT$g6AJSD-f z-N;`+Iq?79RUYgSx%XXnUY_{0=xph9<`=h5Ka-U{edG)0GhJ<=*HepAD`hsQzs*>h zU%8{^Nv*u%-U+uJxBE{!tNdj}_}Z$-<1))LtR%kn9`|36_4_jOUojD(^YYf0uPtYr zxAFVY%rK*~nHx_?e&@I+u(tb$f5W~tZf3{iSQba#nm+yW)m?H+RxR+_r1o8#!Ef5m zb8FjAetg&bKO*+C%!$AGscDtpnWpXJ+V3NLQSa&Dl({;^TCYwmj==$_=f zqL=4=zALpGn{Jx<3g2}cwg}pYbicY3axNrHn^wf=QcZ#@7IUe7(eOhjF z+~Yz*>Zx~bI}4=3U6*yeKbD-U62cv_f5pZ(pK2@BZZ23LyirSd<4Y-(w*fg)Yl`+R zXlCfVd5-7bzo=QJHjJ8k;`z==x$THbesb2hrf20;tH);C2`pXlf9JPpep=mkw7=2( z$Bi7-aBmaK{VO<)POnsB-?CRI@#t(ipjK!l_N4 z%eJnunci_XJhnbIGBiHFQOYU8(Wh(0wh5~^@;*scuXdB4wtjx#b(Tf!f;Y|kzDyMh zy>#5_?BrKhnit3}aXiED^=Z1mvf~}E{;6q(@$dVwXsb@B>&AV-SHz>&m+!hA|2{Tw z!*sTVd-A^qqziDJyJY$ES);DR#;lk|;qaf=mc;T3l`ON2tGm|s>DTJ@`kzZ;q!m=N zrW8NXHqTvp{Ku43291hr(d(}aKfPUk)wZu(Z&e_t*t()G!3t3+yPv(-7#g=!``Ol? zO|cOd8RWl2tFPyn*BCm%!La3TL~HS<2@LDBc75K?&Nn5#`k{1c)4t?xhAYn|uj#Kk zT)4)NXGZBmr#OY%*`0GfOnrKAQ(8sOV@|1_H33V~D!Vp+-TCR3`JP=dg=bTrUeeZE z_Wx&G(UHJ3hJ&UoiJFgULn~j}6qRn<{pVu)zZrYJ3qRG+ERH^AK6`eg$<_lkij_GQ z@zMHcU;lYtd*|!Q12OWmxMy3wzH`UEUFq4iWz*~vR-VewGF+vsFxNf$*YqTV9qx{~ z%oTDXbC&II|0cirm}bzdH8Z*VB_)@i(OF=>#_AV~fS2N?Pe-zZTzXoKB&OUdo7CiZ zdHIGjlJ#5vFcyFHH%~nxmUeW}Wz%`44eJ)*}(`EbrgmxLwLn^3i?!f}8SOj{9z_dMM97q_v*aCn#>~lr2)q zliI>h{i*QW+90d>_vgYMlOihv?SraM!gjS>`f&PSs7G(%^%>HW&2^iXU(!pL5-yqW zv2xa*Yy6&5+-_{^J?!T9dudJ4kUVHXf@ zvj3$1xmUI;3!kLaL_S{ks;uK?nU4v(XhZJ#^6pjtI2}&=S^e7~vnIQ|w``fbbY9Li zBhjW^|MX;Xg{CS;v1HgAAJ}^I0$b|04>B3t4ZV6h`=$7uWWBk2ZWa6dJ#7}B{fqO$ zN$G#rHdys8ITxYN@AvWH&&^R@J{QjIRpS-E`f1y~OaJCBU9oe*idnPtv%NJ;dM;=D zIJ?Vd-VELE|ISW+`p$mYxo@AfU*~-0AZ)^M{KTlB5FSxvYPTl2oAuD}3%2$i`|DIxfjN?fV%U7kXkFM6o z9tvDkKh5suUoA7IRkO6FoSa%W>vM^yW}w{93z~}_uZ>)FuB6aEdX`B8A4l)vC2OAV zdKv6~D(uyc`2C;%d~z0#3vMf%tM^FKqV@MydGU2gY`d;Fi3Yz}!L{f^rM%cS8@b-? z+TXmoe>^(Ko4q|~&9U7lbD28)9!td^@S43@>D%EY&YWi$HEsCkFVr}vZ~xVmp{B9; z)51-EOY$wx%-nlvLtCNocj2XW?cI{mQaxO?wWbx>K-r4h^R+XKI_?R&$+v8 z=bYMiW{dl!+D{nCEf4Je)&9Ag{gLzIeA@#*ZSM6?mNCp(rZu-||D@!rGt@0EM|xM^ zzw>P0JEoN1!uz8Y<}ewm+?jGr?R3P^@E`McO?@BQeNxZSYCJTy&Pll=HmM&UPyIM7ns3)C3N=Ppj#E|nSQRBEd71P?AQc9R*SF3 z*PjW$_nWW8&{uR|S;vFemvTxE-kZ$hWBPV4F`+KjvU}HunODQV=WYJn+p&&gH_!R` z!7V?-ygOqzsy<2H%%&Nc-M6Kab9!qd$G>%A)3!{zU{-pYSB6KxMo?*)RC4BC_7^W! znHkLZIBEXR6H)sbtvX)`tT0-0`SNocvE;tWC8F;ib4!YNxo$|lJDt;M)=ihuS zo%**bdB%l+BLA|cw59|D=XE=HRYVx8R~QG~Zk^SY!fFaN2RVG<%A;ov@-dy;}9_ixiJ&uV;Bqk_yux*zO`Dl@yW`JAR` z|B`T_6CUp#cQb~%6)F8<^IQ4SMyx97l19VjeL}*mUH|;2JC^i$>h9Y+(c0AWXvo>A zzwLhJ{9M{^6Yy=HMPlVaEB;vLgbO0ReqVMM?YcTGNH2(0Z0#!jG9L4v>+-Jb(y&v% zdeOt^$+MR-{pZssI%%Gge6Jed)wC=ArSGdRt*=AAZaQ92UtYM)rafq*N$HX|x3*1Q zCY!ys<@x0$(@q}Mw7c}$kNH~G7RAIhMTSK`zX|?Wrd7J>MJQKD$2Hd_zuw5Gh6g5` zOWn6U$8z_dA4|7SD_zp?a!zHD=+cG*8w(#DI>3MG__t}yvBjxAm5*MU^`?H^yW&of zz4|u$n&TTyy*gwbH(1_1amCk9H)G1)JFW(|w2sR*_mobNX!jTV@co{Iy1f>o9Up($E53Gz!T)2GaG3*Eo{?}6T@_y5_OPk9@%{j-7a{pkzu{TFTvPfk(&6Q-~_ z`ywaLw)ajm)H2N5VxxL{bv$QIxFIMNx*>Z_9g`pXjnb;?ll-lY%sLq@UX)pLj;k5}dH+4;Cu^IP+mw^!o#pHJPtIJM{K{X11r zhjKI+R^F7l`B?6{7jt;4W8?hBQp;s#-@F>yvSahgwx5wU*mjd`e@L07v$40rh5fw3 zEw?UCSn-P`NaN_MFjKALa_{@s7dHkyUbpVKL)rY~ro!Z((~Fh>YlzR_Q%?~!7J-fIn^&*$@YZ+v6( zTgO`X-|zFaJ7v`8=Coz}$#ck>#;Xo*`iV8l5|rUVYDLaEWPP`kZr-;mOIJlU@4O zPvhpyslNJ4_UYZ}`xf=A&Sd|r=ExQBMlUIqYp8Ls*4FHrgabARnRpAYZy z*4d_KZjqUh>?`q|K{LbI<$dtpX}Rk@^Hm*ty!1p&*2Nw2zs`KBVNG87p*!;OyzsQU z=Xg2_r@o%zlC5bl<>^j`Q&I9=e)^g@njhBOU9OXR+~sjTyLqrRq{>AHwxUi$U2I}5+)Jr5P#eo=DUn$pU)kf_qW((O_lW@)a6 zC-d_Mth%?SYVC^bxrZK1VPCg7e``$a1KU*$=Gl%pg1e6IsEYP#iTvM{=nyI8#3&^j zeRy}8%`92*-M?mK*Ihd-%OX}g&C*N6>!S2K<0kd3qc{n0pep}Dxzx|JZUcH-jl31xX+2a0|7m_>6cY}0(Q!Abkn^Iw<$-d=T?ZSqbf zVTS9E`uI#0@8>)7Ic!nr3Y{(;EN;@0Vk`bNYU$UDYH$A9?{nKZW5LXH9ahIl?@EJ@TNT{b zNLXq7_T@u4sjdgxLjIP=JkEY5xMtN;-;(c2nNiDMo~?a;GkyB}fBpFy)8lLT#Nx_- zo_PN^w(^1Y`6UaKt{K-m@;MvaR=h|* z?a$}!T(fbH-1&w*+;gP)nc^mIxx8hI?y`N$=Fj?g`3T2@i4sSH{vG*p@{?Sn<<|qd zEtU5tROa6FU$iggg35XI?uA>71#2zC0bF&%hQxLEet)&CMTGo-J2`dee03ph95^8W^F$i zI;FdAik2qB&1oTZDRZND`v^$TkHSNaVGm^4G<^&UqCdx6Yc!v*5^DrYGGR zMaNeh+pb^`ZXKGj_<-xwWK*dVM&bFAm%cu^7S9lI^{fwXg4o9ubL>h__33@#vo^mT z6PbQBdApNYPkiO4u7>I64y|R+LQL2UriZRuWM~#XAxiK?R>0z@Pn-U=SALf|_ipO4 zo6Hv6AD%OQ_Pllel+pXJE&H?%_{wYzJCtAbb?ejn|8M!Gsz0q>`_R`RPkCnZykE;w zZB#B@wV2G(;x_4;d&q$`{{GDRPu@sY>*km2DVRCUtMb%w77bzjjnjkKZs+-Z;d-&z zTg$@w!15N~pEGvM+q8!Fi=ssh8)IMQ4708Gx2~6xTJ~|mqNTC&iYl3`&l)16m%Qd& z_{(I++fz=mrP9SY5q0qz?7Vg_7H@df%yD+dqu75=;T|!6!dq`dhbNAde9;d z*|PSf6T$))H@1A6w3$EK`TEi7WQLEk_wJcFM^JO?^aPXHPCd~suM;LPEK!Nxw@t`i za@W2)`wKHlnZg%^{OC7tIeIErKzW)VkRjs379+Yplp6x z{G=^s+0ULgd$sMgPDgaNw~Fr1@B^#ug*xtD5ttuxnR}ix@;pB^#%wK4y8MBI`k&zIYO{`#r2{s-6Hd&d}U zFP${uo6_xhE~NCI?UBlt8yr}|f7@hMo>IQo!Tt5r=JT4XfAddVc0E*2f$Qhi>G7$y zC&C$)=-pW@eSOX1%&s*~_Q7TQw)kGS^u~Gh^WCC-{L`j%wVp0(Ezf%qSW;assVtB? zEo`mvkN4FbGu|)1cuN0$-5#4SN8S~&WY^fAO$po0kS;a(hy16x8-MKT$Xk9XH!`5a z-Z6Fcjac#)qdz;L`Jjy2-y!JLmQVn!R;ndcmTol_xL{!b$P z*sF-LmL`kOr`=B-eV(hm{Z2*Z%@*|sH})m3sTO~mar}jdSxlcmOqta5FDCEad}g@+ z*QHN>&Vm{Ij0wRuZ=u&b>aZ{_no%QdjSBy!vWhNx@r>XfB0<#$QE}my0fk#;uvM^82<83r;;|DB6GH;2o9hWRoQmFDRaV zwIlic@3W%9HTo~?_ldu8k8XDpxO&J~QQr5;cAM4u!5TeZz9wEZz3a1s)uXeqRH3uq zuARG&-n@&CPL?s0bbOk2>G9`sX6v3q6ZrrA5}DO|rlaoJ!3`g4 zf7M8TcgiweDPj?L`$2@bF@s6F!0Rw`M_K;|ZptUMgGvoTz7~WOoN>JM%2I6WvfCFd zmqkDSQgrNm?8BZ1JTpIUN?-O=?#!#0r{YKL3xlN_to63Nf7~aLdSK1R!tQr(zaMSm zmdmefi`v(!(sM82wPa7$e)ia)c}I7|Hu7zc;oE%9`q)#I75~@vq-^m})nIWl5`AxH zyE9@1Af>w&ADFwbz+zw%V<6om;r-%~PSKTS{f6X0x8JluCb-y*xBy zkD1%^tvau7u9^7k&8Z3N-9M;^&Gf5&zTw?225Hml7bI)-!ya7vvT{?O;he3dwLi<> zSD9WtziryrY!5+h^S6(3#N$|Emdwdt_xffOAM>mD9q&7f&fCUof4Be1wEozXU`PJd zWy{xP)UDG_O`YoTL2v8hC%@~St-dt-Zn1Dlth7$}y1QZbs(xo{WOs)%Da1d0Z?!M{ z-!7$qo=Xcr>CDzwcb8uwZ8TJAHOFqkJIVj|HI}~|BD3~ z6;j=EmI==k@oXrPQgsUaaC%Sl%24Gg-(ru7uJuYSYUf`tWu?!mxtz}JtZU9o>)!~8 z`+G|J)a&{Or;IlB?t0C#PSbDy{Up^5Hp^2_2G3a9K5hG+bVs>HA+W0xXs!%ZA{u;*D$hX%zUn`6q|4_Q0BlYal+*KeD=`&1qOJ$`Ky(e+cRcUBkmmp;A}X`0{m-uvPv?>L#IFF)FcHb+l* zwDK`ml}JR0oq}CoQt7qG*{4_M?b?+SZ|`+*VVxFl-?Yzhw}ZDmIJNz5;wMG3a&Nx* zoCw2|93MmB z&MPnY)*d`w6*7ls=9|Oc_R8D5ELo|%?!33M<^Ju}JtEgk&)$y`KYBctarL7X!3R7U zU5v}0hTMH5E4^~#9a)vPsUQ0oR#cSjsxJ<_r7%0H>%PQf6QymEd-e)g-cyL+`jarl z%6)##pXC?XzRu)7Eor;;w3MSPlezfWb^Zs|^lxS~^GQ3*m%y`dVjS1}u$+Gpg7P~* zR-5Xra+|(dtjSY<{h4~UzrBpBww(I8>uSLNBeRawb*OT^_foc=qoJr$q{AJeQ2lMA z@YCS=)pIuciUvgMo_}K*weQ#5yF262AoBX#4 zuA8PSmYpbG@{jXvX#AHFZL6A29x|Qb(ZR9O~a1NNo`&ENV4(;*SuSQzij+;;Q99{{dYbuEt(L)(7Iq{@yv58OUw4P zIEY=iFz;;f2g&X8HinfRe!l!vmC_o0>HC5AK6FKU^PAq;&G`zhW;y0;^F>Q81j{XW`zYpj>GrtjcNK59&ao|@s(=4~$j=-1@1L&KkbkxR?B{8k zx>i}Ke!o{RxQm+Hxuvaar`POZ>6tkWH7i2c-iEI4yzpTncWpWQa;G(|c_(deZ$F#1 zV!`wv#rf&|9r>5F`aYWM@X%>kb?Rlu0#)adT?@QQc2#%gG>EeLM@7c$kv*cZV*MSp zplf-%|84rTt^7_v*;@(a`njKf2-+xRhnD*Hb_$6nIZN$dcJ-C?;zzz7KkuCXH#h$B zltAA|f%&(mpKIWiJL=a{d;gO1n`g&n6iiirU+UJkHY#<+<-L2iGdnv!2~V(a_FEQ{ z!?5Gznaq=aR2O9l)sX=P^iH&_d z8+KW2bUG$|u>WJ+^XXG+IsfRUZhH8Kt;{Jb%)B}_EjeqxbMLvlYvv3G^|Qj`swF3M zx@gWw3XDF-6n}=#y!h#*X&d-n-#9jTTG8oCxtXk6RkHMaMSpm{Nm1JVC}_TqSRq?Z zZJg-`uH}A{@96C^GcWy+{dMAvidYTl1KY%P%AInWQYMM0oV#(B>AJaE!?Evvmn58X z?80|BIUN1Hx}xYv7q3wG)9GgV;YnHxSek$9_D)z4yw>MxL+!G&S|_449sBLeHvPGE zcfMYH{SVfb!i6nQ#hUKDuxe|yTHUbYV6S38^r?uP&mjt1*KJC=GUbq4Bzxrc<(Dlg zIB%YBV9Z-{Uy>o+cH*m5Ywi61eq>#=?f#cq^QpV<)dlbT8~R+3N4zm!H+wZ#yzRX3 zQx&spE(F*8E`P6E|Mz76w8dJ8{?5)8AirrtSN)>GbK+Cl_-AOQJuxoRVC;@$?a`FE6%+&Qsd; zbLYy(Px-&s?6%qC5?>(FYImS?t_|yxy44Q8`rpq4PIw|A_)KcrqCLB&X1VYE6Sps( z`@_Hd|G#vfe*OQb>RjIL)8+fW1pO@E|K)y$uXlmcse@eS=UCdE-TAX)=`KwHAIIju ztHPG;Toruphd^$g=ix^^6)m5O=I%ScaK#xx=|XAICv~6G|GQfLkBT~)7mzWV>-DcV z^EjdS&<~yG3qJ~LNA{hQ)xZB|{^Y0Y?f>-#8`#Cd)&hK*>;7$;@|C~xPj@_ia+34h z-RGyGWRJ2lcj^1Q+_Xr~Z^Ie|b%pg_Nip}gxm*?w>dgM6t9T(lBRBr>?pL3B{=Q-M zoRDo6)O4jG@{!e)aIOW*cb`1HaC=706PF2h9nb9#x@$3OrbX3?o)15dKA#tS@87cU zY36^fn8m!w{y5=BVQBJ+CG9#-(@(sVDVE|m>0&rDtE1%1Ra@b@%qqDgZ#50oy~+D} zH%U%1E>Jjmaaoc>b$899Mz#l^Z+$5W^VzV|LNzyJB?rsV)jg}brCv`j@)5fJr1(Sl znT-?kEz|4$h0_JPoTB`Aw_DamefsxwrgyIPu0VYHrK6L!K-4_7|MzMeA zVhViCx8*Uc<~0}FBWQilg7^OpCjl|1qu=hB{Pc-mY-P**Tg2kzl29qr><8XYSxTPe z&aj%cky*g{`huP2@$bHGDZPFt!A&v!h)j0O>iASof4Nva`G0SJpR%q0{F4kLp8HAZ^UIfVhTk_Xx;54B>fxQ6bbPO-$shT9=X_wZNT*}aRx!?= zsJBWJdVc0f$!KrCS5UiiYR-?fMR$L*ec3zd&7!A$Uqz2T=Lo9)c;(}!{>{Jo-`6d% z=~g|n)Ai+|mQ4Qh&p+I%KK(jyNA^`mU753UEaxv0(P%8V68Hb#`@IYIJW_8vUHW+X z)Pt6n*yg|0{r~;${^)(h3Hdj@17|05X*}jB_t<*9^1YJ6l4ELzHDvcJl~JF&!F}S5 zCx!Y(_bQE;+#)0@rOqw9_q+brO?l1mJw;tLzYS;aUOVH_&5~#LJf@^ov+UQN;dAY` z=OZn-z4epMbnJcl|MzVF%aiAt9y+_f>(C}Q#;@BxDD`#ywWxnBbF+0n)48CsrIT)^ z1w>BFth78EE65SY=eDiz*tN2ikBbhy-`d()E9WrblIB#SlU~xR`vR_f?SI{Ty;uBa zf0p+*i*pPhSWtS=MVI<@bQ?ej+=U$;Nm z9epk1#E&(0uZ%mYohJM)>oh&{KI)K0dyK7MS*>^5v)#<|h3>zyYTrsQZ8`;ZnpS?#=y-l^?RpS+FS z*zog`N?EqNiAzST^!HuI9-hzqJnQnx)b-)qCyxgm)R0(w(XXa*b)HbzOyQ+(%|0@2 zyBl!!S&qc1mNf3GRx|GDo%Vfy=JJxcKaF;OmG!=tsCxX+P1}8H`^0z^tn9Y8>{uIi zX8lsHu%oN&)VI76Fgo^5cdfbkzTM)JWeYF<2M zl;7;ze5y1&F5ur)>wJCd{3A~9AHJ#1Tk&Pioe;a9{P%V0fBn>-)?U6pAa2%-14(yI zSgujh>e_s2!;l;X+&%y5Dr<>z#!v4Lk-@Uvh`F)*@LPdChpV*35 z%TE<;RIxeMeO~2tVbVLXnO6^OW#wJa^>=Bx%VqKHW#>0cdo+(NA*ufNhaZoZ##%S3 zifN?G_Gh#0Ufdxmvc@%(A!Ux0Ucmd}$)X>&a|u138+!KY{x#E0%px~m*KQ5cESUDKI@i~#@~&N9`H%C7 z0v)pyBPQ8PFUaK4TJ1BC(u%!VOK?(gVT5Yi2J_YM=-kKWI2WL-6Y*|x$?au3jRU5XH zp8I-s<5Gw0vh>*P+m__45si;5m;Wgv{Ia%q$+dS^=BcMeUX?wf0A4C zmGh^%!|SS~_zuoLXufWTb;Q>1Q?w<{%54c>vc>%3lF~`yuGK5Po|!Sv|ML8W^F#B> zW-aD0RS#OQpwZG~@_Ns_ZNt%5L{1{$FtA+3d0jr3St~A1+S)eP`OG z?VT2klLTVaj&{G=(X=Fugw1z) z-1=fl^g({v>&GI#EZMdxAa(a;h3CP(R~70{`PUZ}b*y)r8oAT)(a)V_`|hQm`r5`B zwK{5Txwh2f$!nZB3s;qI3;WLV@R5>+oaC8U-CL`ww&+}A@swWlmT!KDY)M1LIn!nH zeKIbuXF533$UL=n%CmcneunzLb<7j;nCcU*2HbY(WxvI7J|JOE{@+NuWodl>r#LNo z{r4hcU8$^ex8=|6ktw@ZZ(K3?;4KqQ(L3!z{u!FFZnq>B_wNj3Dw_ZM(@VyM8Cz^v zWWDnjudEZeFW}kmOz`UF=PtQs4Y{j4L_hVuWQL*?lJoo=@Ml#)XXjF_Nv9{*Om?z8KJ)bKgJxchaUvY&1=cModt~E~en{=X+7l8B z{A&)h+yB`5Y5V-zMQ?09c3qWOSANWXnbDFv8$AMU9ulh8G}wIPqhn~dmjBJBo5oL9 z#!XCL^xMSpW>)^CU^AVd6)dfezD_4{lyY;H-l;fy^y#te^V-|*70GSA7JBUNWya92 ze)k%BXJ@?IxODfLnTcZKzh=>KOEdjpfVd<)^IU|DQk2Tb`%?{QjPOZzAr5u$gU^6Wc1=WHsg8 zuJqi$!V4xkY@a-X=f?%xYHk(Z~Z_-HcC z-B%dTb$`m)+*ZZ)g@uA_PN51le7%P*%$k3)Q$XRM_dd3bVW9?QTmi`ww(u@}(E2Tk zJ#sbE#b*x}r0=mzDUwz`lI{49tt9G8hxpS?TdpZG9C;p7xWw~yj8iiVWH9r4pp;1Y)uc`18ye;AK?#3b$+7}a=2}7 zR%cMc%xOv$2fY`~%$$*xDKT+o;;!p5`wgE({ND3V@saKG%5QPmamOTz&;5P#cMjtc zf%$p8$+dGNFUD`0|8nh#OXi6g>PLGEcsHjk?tWi3NiA)Lg=M(RcgvzrjGaw3T|1pN zW@o?G-QkuW?-@|s7J75F($lRApWMi6YiRX|+@L&L_fU3gO;nu3cBRl|A|5MO^QY^I zK7ae@>I@6^Yu)cZgrBe3dHvZO`&%FD|4fzt|HJ*@9+P5XW_r*^RX}MfA#-;*f0NEdHmjK`??3=cET^N&(mL7 z>GSX4^VKEpGu#tYcI9<_omJ>2r}l1&T5vrBnjZDxpnBcv;_KeXrk=ljq7S9hsD&${?CdCU1l z>Nd~4PRH!CpMK^1ROQ;-w|ACT{8R83uko9|f5Eps>+IQ<=wJKUe?IlgdVBL7wO>yj z{dsxK^W=s3pVULoPv`&p?f%cj^80_6+lPDZ`}gPQR{1~g1FKw$|tldqG$Qyk0PSkB|`g7pD#N6TOoQ@ z%E9Z5Pnm1x>3(tBqFHxp@{99p3?HrE!?f=pOGS45$2$*P?q$2AGW67`g*Dwb9CGrIDFid4s zJhSZL3i)jTHx7B8G2=b4#o<-J&5b_)6=Wu?x*cMZ`=RdK3Mb`7mK&LNzY|pmy|J55 z_!HxdUd_cyO;yE>dJE=kzFW0r#}19xCE_UxlRI~W95wWPpuNsH&)Zkfpg@pq`^hav zA_rbRxVyKFqbsA~y_@f}pgqsili~_{PHAlI+<(03^O-;Tb2k3I^We)Jue!WPR_A^H zAGQB}=g0T${|+Aa|8wPY&iC*2e`n^+U;XHKOZu(9@17Sw{~WsRe&s&7Z`RLepX}K6 zxGu*w(!%`u%Y&<*-}(IaQ}OZZ!5#CM{;pkb8*lXK&&H{r*Jj7pcKwliM2ic7_~qou9kx+|>U0|7Sk;`!oMvWB>f0FZ1jFoSpyU_UDgh^y~JW z`?~wNHsj65mhYpVOJAFJ|2%L1{o;MDZ#8c`&#u`2_0F4uLuU1r?}^|te;&OiUL{##A>|38k?-~an@zwSr4UH`nl7e0T#I{&zO z{ez7!ckV8jCDQfW>{K7`tc-UO{h!V5csg@zI=OzGmF9W9Ro44-mdALsi3W@0D|YUi zu{y!iL}`0s)RVi9iWmQp`gNgWvvQSi+#=4zf|q-jhE#Djxz)$67h!)b%&fz7U-{a{ z?bX=POw>*tGr9mB3h+x>$0Z#nZI|a#!)fc^Zui*Zu1Y1e;OyeukE^Y0qK zgYEO^d-K-kT26m{{OM=$uRVg|eOi2gjqcs zBVGU2^_L9tMBitM)*JTZ^sU!hb=*D6>*~)b z5}I8y7nkTox0oi!FmBcR)zrZE_=eK=-)#rhhFsckQz_ao!BW`ss@c+uS3lmhdUQiJ zujt5(H;#Q4jGvyx?Iq>@Q4BvMm_c|R*yN{&kU-wv${9h#hFzb1l;|$&h&KI}+NK|}Z%@C6j`h)Rg zXInF`^R)6)Whc_+2cHpbS6#{&bl|xRbJ%~ejBXe0S!}v{&3W67gjRDfAJOh@+5Jtl zY44RYv(&u0?nn9??A~Yk`hapI+t=fHpV>H;q*@$dfAaf|`VyHvcT&D4Pg%9TVY9?G zb9Skdre9h2n|*kJtev}fU<@C(|PwjuLm;ZnM{(p1% z`v1rOzde5c@Be>CkKg}i{r|_$dmoiOZ}tEF=(YcJ zSbqPb>$dlQ|BdOhpWgGl>C+WcQ!TM=AqPHsZ=AjTZb#mZaLyBsi!$d$ihJZNNc~ur zmv%O{;gt#dHVJ#&y!6b z6pC^@wzDyqDyE)j^Ltlg?3$+K7h^1*C(9O|+1}7^{iDU|#OtN2{>)v_QS&RXLg&=; zpg+$}Z46K;;bM_{^W#siVT<~wN88!k?zm*kw&aRh`C`%3_dD~S9{qjjtkd0!vH$2Z6x7A($X*}z^yr1R$kAL@`zw$@f{?BUre@Ev3 zu$BM+d;TBU^Utr||MTNl@QeMwckccx@$mGjL#saPK0Y@6;VzDRzO@f5`t?j_*PF8( zn_AMQR=6q4B``v>Nn+Y)wWDC{XXdbI4?ft_=Nb0%bFGkR~Z z6w9cct9>V~)$pU0{$l2>eX}AT9;^6RVDsB$*M&9Lq#BezPqDwbsdw4@)U>Zp6SEgc ziu5gyy&-Y9ShUjMVz2*3=Q)9T!7aki4(!%9wm+tYn3Ec8GU6H^T zfA93<;L998_vYq@I6ufsJSY)7!}C+doll2%>G@nq| zMp8mj&Yc)vwlm%<9&;Xi5@D^N$mn`4F7fiyqFB>H4aZoANt4c<$?+6gCQ)j5K`wbY zb0@LV{@4q)cyFP#YP!Kdxn!?=b+!7rVk&^9H*lv6y%I4k_hAC zr#%OEgg;KmHQ(7eW7`)F8x8r6Fh!|5ixi@1}On9Vz9momUHI zJ+EWA!drFZ$*pqdZA-3Y|EqVu6vF@ znEw6FJJZKA4{kS2VDiW|kY4`#j_kH;hdQ73ET6l;L3_c*RfV>)7B6p0?eLt%QT?eP zPW#=ZZ(`5Hrl?(HGRe6)Ax!Z`@v&d53|=c1E&P8+uz6yq@}a=kQsF3xO|K-EA3CmT z*%#XKueZAB&~M&dYoG2;`YM?Hc<1AvKiRexe~x&!xI*mLxB6S^Dv`}1#%Z_w7AqB41T zmf!pfbWAU~x<8*@wrdf$=tDQoGYfuJW!Kzv+sL);-pTrdx_hSo-7EqR=%2; zldSXc#&zR7mnGr{4w{DSD0E(v{?c4R%Od*9Gmkv>3wjO@Eb=ls0 z_GyP7ntVH3`AjtXg-%gxZE;)oi=4e3TjN^qO}>2PRq2Fcv2yXrW|}$g)sF6CGdjmt zs{ZfFhDU9Gt9r^G1=-XlPTGA_bWcfz%zSS(#_hjDO2xFp{=_A`%`@Ck^r@gaf0hx4 zvf=DKngVHR4NjTs*(@H2di+}Foa`Jsv+nl!dR4A?HsZCBka$`?tEHWt8_=8Fj*t<4(GRhQj07sOmx|V>=N5l zGi>g@ta2|XEo%09BY*v1a?wn;KAF^4iyTicVN@)ZY^&+9l-Rv2FraV8(^r0`SxZH` zW)>*#ZxOY(JLFZA@kzr`qMvy>Z_Ru2)q7deKZgCd{V~39?$Wyg9&R_~*8MVlv+YFf zsne$(EMNalB|`AF$c&@2%uM~vc2%1?9PeAYlv`|l@7#XneFfFsvqg?d_$QoApJmd% z^6)&936n)H&6?Abw&8;B{L0weseNqRr&-Kdj_u<<&3&HZ)mh;PDfTDXQT~s)bcNmY zETv-J_5F<#oOGaDSgt_j!>M}4`yUVad*+H?zZ%s2Y5D9}S58xXr+4QnGj!)oxZ60{ zB2C&m+@4=rRQ(&5n_AlH>lf9Yzq|WJu<)aY)wDF7g@XO-^(Q&m8Y^&}`jU`Q@~W#R z#&+Yh2HE-6iWclvR&fE@)=qt^BWvz|+<*AgYs+HY33`S(DKmw3`CQ1+?0I3KqSl#R zc&2c{ouk@E)0;YqA4@Z3&fQWuW7qVL42lYcRq9&0Olc>MWV_~hTwP?(WaOdzK;Yu< zv@PZ;8zudgZdOw2I#~8SE-EscGx*WtxD)$SbZ+f>7I5O6q1km68>O1l$rUF5n%4YU zuAbp|pj!IRbe6Rn5B5D;=Gk^KwPW*vw|KVn&xWou}=yAyZ`5&-U$hto4m54Qff>u<&|}w-pwKPTW`Vj5{tZ( zyF|TmpE`P+dNAkatY@OftwpXHMBiFh?Um+OlJ~8Yd7JAo^O=?UTK|WqSX_u+<;jwjZ3dd8hx*EB_uQ9p&x)IlnOH>-0Y< z?wMzQvt9n%*MDlFbgj{gUFj^RQVlYA3culeY5is!>VtQ zSaLD12nI!(6DPjExLnn~XL&-b}%e60>#-Wav?;FnyZ zC854ArbkSe?5%T0#*$w>eEx?`5yDF|mvot*7ID|Ve*T2!Y9`aCcYE$Ct=IABb@5FO zK5E>Q`exRHW`&2hd6%mFZuJm9eDaWt-(}Me>(yr5N%voo9CO>Rk|A&PNpa&2(X4&X z6RsSIoOpWbq8st+r4C1zEh`A$Uh)4;#D?{6y+glSh5WRc-1oPuM)Y=PufxJG>)G1o zUNrb~((swf>mA-J?_6itw)n!4nkSrjB7VC*+*+h}Nu{)%>p9DtCm$cQ+?zOE?vzMD z=HKrBTu!t6U-@`_G3k$TjuBZ_;~Mns)2*(P*JgT1%E--d={+#naJLy>5Z8-q0gvOO zr4G!t{yn?eXi>dY+wPl+_6rO*OufJCiCRQ{==7u)7AsZmOfUPCYq9>^DF>f)_mJ6F zzAxqz3(cu4H_~U=9igs1*-~xmJf4^ZN@7eoR-rX(*BqbF>FWFHU#Pj; zZ+JHIR)&YliWHYcWwCi`-!x|ksxrP3GArLVIkDNjN>}D?Y(+z^V1m}kR1r_B>XI69 z^=Hi@jy$Vw#X0@cs?ZC6Fst54=H|AIn;jOUc*Kf6{dn<_`Ky$99wqKmG<5FWW^#LY zuOwXXj235es@TOBe!pdu4_WPgG&lMA{kC6;3qLtC#;`i2Y)yN#_(FAPDto+gi%jwU zg&k7!PhHfmi;UjkC9fL#T&qV~eqo*AldZr1ZdQ0OyChG!AaPDaM75aIsmIkq-%}#L z+*@?H(|-LfP4BoZ%ZxWfJ-yyBdA918ptb|sj|3JLe&j5@y}|RoMPu}XAK3@+vntdrEhY@&4pWgDE<@Dz*On+WVVpj?R6_@O@vNUZ3~s>F+pO ziR|ZFb0xmTtY50yn!jCpP1VGQM^^nj^^yWqPRW0IbWmwlqI^%~>#&5v z4ck~=Cr0rKTCPfNVBL5ymMQPd`RT`4QiYTATTG-E_++bXV-oK;c$qDJ{}SC_&b8e; z`fg>aTby~lSS78Iq~fu3?5vn+GCV5Vc1Z9`6oo5pt_foMrTxD8=n=bv zYzf=VePr!LU!4B!xm373Nm-T8vDyE)WLyl3fZVUN%`>eY#wA6!2A$q@vt*y8klXHp zl&+$Ai+1t-Dk}Xc-yyW~(CrSpsKoN1z$f+-eD1CGUUFfsgVg8SA6DHksGY6G)yJB? z@#Trh(-k%-q~^YyZT9=3M{KCTzvnf{XQLn8Pk6KG_}3FQPTW>Y^y_rF51!0P=iS(y z_hXH&g#Q+qb$^hdF@bP3DZ@&DC*mz_Dx zROq^Y_k$!)^X&=NC+1z|i<5b8SzEn~C!<1+=Z&NAR?hNu;xC_bb~{-AEba(UEXvlu?&hlax-(Yu8r~Gy$k_BhpDDZgx6qk&svl-_UO&_@TX_p_ zHuD@qS^rhRU%z(!ozpI?e(VU3tG|qnmFK0%*%kTKY7=(fmQTF>Rp-Mc^O~$hXO86D zR~1=y_ug4PK_6`ftDWCd8Y=3lrtO%e(!D^E^}NSDZhPq)y_QE7Wu4>}7CV%Czd>J9 z%CG97;Klv>4L6<@P7Lm0i>m&q{n+Ul_mP!53 zVl)3-J9zUL8|&5bxqEIruoducc#yVT#=r2})Gc3mfAg6INu;a{Qk=i-@InXenH|ZW zcW#v2RJd{eh*svv?LeFmhw~{G7 zYXcvNWJw(g5Iv=c=^6JoaAXQx#^D9^EnFxaEO$1>6SFso`6hMAWY(bZnb@Nc?;FiYXgk zEqtc%;4r6AJ$EtJvgC}w{so;E_Oa}K6mGlKnUP_7N~Ukyp4*$(Eb5Kq$hAL|tQ58N z^qkNSz6W(aiTS^;E0q%yZ?>5F#pzFI!%@?@6Q*tXb}l8g$4^R0JbFUn0x8Z9lSJ=c z&rW>#Ytl7VKdTi#p7M0uTfa;}%4PFX#|cu)%a#2^n+v$^wx&li83r=fUUTU4{Pb*! z>F*kgSDlAUI&79Px+;7$YgG*vk+YsQ{X@`<*qQ5R+-r65E8sWcB z{SI2YdbqlisC@hmst=4vXO_Io;$)Kk?z3g;VB z>jLH^7s{&#wdQ|%{%2L1!sOi>O{AqheB1J)Bll9P=)J3*o9)^x|3z&7o_9jd^l1jC z;Vpf&pu5t=>NP8Z6^>S4yMCzs!@C-*?sKc8v(`q}Gl?$t_DGXd-+N$*yu0PajZ@Ws zhOo{$B2m-ze|7bu36T;@dt+CWUb6^I*j3odE3Cj^t{3|L$EzDlc&)ajRi)a>%2Z!= zRGYK++njz5|2yy16w0zwBU;@#7QHoCt=`1z!h9tAf<_PfOSbd39*fl7wr9xgy7KYv z!#s7#jMFzbCl<#({5dIOftTL0o#BTbwN>u(xfgHnMQj$ww3Alf?jI4no>9%x_-A`n ztc5H02d6?NcI&@WDh{{rmC=%x;TLbwuMM2^RdIgdb3~#A)aM8;H@V*T*7V~V-Olz)3q2>z|GrrCQC8mB-(rqJ z&NBDTH}Af&@ZQaeiu8X{+&kAK@>Mlj91Xk|&)zw>Tr?P>YP+*1bDL9KGKCO7z{h zIwEam>Eup7j#QQUo+U2?PNq(O?6^5;H!~|6_iOEwmqn_MpWS%EAo$jl37j`Bp5|HN zWPNU}Z}RewNp+L5U9JUbyE>d+Jk@0Fp%u=wxiP*OGo+n%sUx# z;k8R({;U$uzN4`!MQ1r5e7$7gmaX)f`O@86E%$H#k@a)U&)>;DrS*+!*R|WH>vQ}* z86KXMwcOxN#rHUA4b#fc^%*k{X19N}GZAy)d~o%Hx^wl-G_~N+oRuHsALj8!m;T0#)a9R%FAGRpuuE8|avryyy-*0~ZzVj@(0Jl~dPIob0YszVE}ste7z6wZ7{VnJ>3gZq@kk zc42z#&LpuDe3iM!t^0*v+&$BIJY78JxSv`hzxe0KI13{&*UaSk%O?DKcq4lDnx_Y^ z?pg3v%s&0`pJ~^hTYgUXDlyIX&6Q`>@{AWw)n*=M%}Q=`Skw{yX4{9Q+UhHJ>O@Wt z3OTjygX-#Y2FInQmlw$R|6DX@$I6J*9e>Pc3hB#E_YBt73@=XF8{Vqa>Q=eLK!fq* zc>&|~0#@E>8x%f8Ut!mB@{;>`>(07aa~?BiW4+(bNIcQlvdum{Y>l7OD#nt-t|c1vwiuun_eCCpL}c9vb6Y5OTMp9irYCg)a@$$0PpXcAF zTw1c{v9)CQT<^C^*ZUTHPg4KsC9J1mb~()6w#V`v=c$Z~#pb`oW;3;)WIZrduT*?u zY`L_AZM5DzrA5`o;`^da1hO99IU3LKOrYI*@`Z-!Oe|0IoD$T`l%mx32f3uU9ExeP zIyfVDw#}(IZ(iSv)SS6w_lvoU)}7&;d?c-YUWuat$A+v84!(tZuQPgI4U|6+uGci@ z6XS(hDsj#ZAAUV*wDDE?c=%DebLpF|tcW$Li?shS20XhytLT{jQ5{~!-oO?WL*8w{ zCPm`EI?lPwT*4uGF#Ew2j!D};mEW;A8GkX>sZuEFe(cjvJ70^J@#iIZJgxgKOb^y!k}B1XN-8w*T}!wTk=EReRX-&)+&5~5krwJdh) ziNha1zWj4_%f^qJH^eR4ua{BSRmBy-*?P~+Sa+=n(-Y0!Zo-uQb{g`wFlssRNboGI-hyF9^ou0FVmpTVu$(B{0Z4ei`<668$%j>er3wKyo&f?n0 zz2V)L%?2?mHpFDjsx2*Hn{n7sc4vQN=;TLkx<4H%yw!`DeJ)iec^Uewn0E3}>>B3f zVkImGG9}^}trd4`<~yqdxD=c3yQ>kpTIb&TADfIKe=#{~pIDt6{lQYJ)8Jeuzh#6-(EN-~ z3l(N<%i-%`DO{e~ciOb;&@6>bzl36o<+vsvTJe)rU6#Az$zjoDR}Cw<>u#Q3c;%|( zO)Il~_qTU$-fK{7FBEAvM<=;OV{)r`?!xce9PXw+JCJ<#@3D%B76uYOcX=$G^kS-i zv+dD@MSm~#L|)(UrNx`+Y_jjU{JQ*iy}LCef1XPJYM{UBa)6rJH^=Z*+a7Xf3Tnx^ z|EY<2IlIKk@9Wiw1P7jZ-@jQFyOfx)F3h>8yjrXy#G@;|%gVarz`1EkdIuKPL??>> zU+u$Kl@UBQ#9mzXfSX6^erdr(!GP!k9NV^^RuO+Ay+!qya#uw1p$ge$ylcaci$ti$ z3jWn|Veon}bMxfgoU>aux9sBfzmW5oH;>ua;N-t+v$?;#ng2bYxG>S7anVW5=8CWE zGuf^Pby{7o)R4cs@p;kPABRr8d4DW0Kw!udDHjzFr)W&gQEDe zGn=QJG5J21yFm1wPl#H5tyldryRhm5Gb3UY+07r#;da;Ik+I;EpTe_D_qAH(wxSby zTyNPD%-yfd&EDI%PD;GXC97?YNlcI9%`~;|;`1W5Z-1b<{p3^8wEc@?)>p2ToV~xb z_DGq@towpm_?T;-v+P zWACgC$lFyj&sFe9jPREkfx_PVJ}&DG=V5WG+pyrbE|235#rX>sY!^z^%YLETxUO~4 za`kiPmYB~_S<~5`bJ~2X=35=RND&8Tx1$#~wH>qEF@5fwGfO%$Bn`!s4{Sfmv8b}^ z)fV4X26K9sR?i83-`cVHzHIsPL}x9L*Ke`=IliU8yT}TH~g4=I{is+ zN1n4sPx%C6wwAkl|1bVvr8Z@P@;sr^pScUg6`%8-@H|t(63KtJ%!xxiYnD*O+R3KA z9WT1&M7-MT0}IsnOezm8%vrXL{k~v9pL&nrI>)WG(VL|2luw*>LF0M#^>r@c`qqBy zl{AfB#1x1-9xppH{jQ(rja|zh=+3$Rpa?s&fA#PSylEuz=9 ze$4#R?=7~P}-~@Y-@5+>LJI*mtP;` z7O1gLO@6+5>-NX919n#k&5L!?k6?fOeBbK&X(uO?cqd-Xu$Zw#=UGJg>dBRBlJ|!! zNxtkb>6XDQEgt8e1z(F6OWBxKA3FM`U%_4SRLt8a3l`3m(VuaPIdb||<2f(xTs;yZ z;b*b@!Gpho%F8+u-KISYOBt$yb(za=}{x_bLm!3}{tF3BuE z-{nn>n8h!jojxhUe~sG0+Lkx2Q3b-+)+A(J{CDRV!`a1c=T54aZ}PP2wvl~bc~e2< zgjMWMrt*E_&ij@AtP5HFt-8;;Abwu7o@ayQ_gBaEzMnE}x8rU72N41%Z~gkqvGZfD z@pFYe4lKRBdfz{NJ$L!r1icAbT?aR}7Wk}ao3dAUHA~U%pT~A5I0de1SQAlYwQ<6P z7be+^GQlQ3EIypuogY5&6Kk`161hL#yq!0G!)@j8#N_0R+hWy^*aF%XFQ~Y?{ej=R zl}_QD1)Cd%$rQ~&;*D~9#dCZT8an)Mvx-Scw%{4oZehBvkaz6ciOt={lY z*ZHILf{0bq4d%tf{?JJgQ{ZM?`1$G4xM_DJSTdLCG|6h8SR>OV@%jI4PnQiU0^Bv? zn``ZEF#V1cnUccWXvCePS$dYxgURnd&pgY&eR4Yiz7qRO1L z?z)BeZMorR5bm?RlF>pe*tvnVc)86)PGN1fPX(4*5^Gneh6=AT?0e9(RNrK?HeVZi zA&axa!KE%zfk)p8T^01a=4tNq13tR7~#oyhQ^!%9ngioPtpZw2FvF5U< z&{uKT{pk9U3%=c-w@FMk_nP&2RaDBEex~fA9=p{V9f#YUt+(7LdmV5~HG3sD*N=-E z67FPQtjj4&T=Km^foG<}%mfv;ZJz8h>Oa4GMPBWFI`P%4YrgN3cr$(E{aRPN>C|*; z`P_N;Mf z?k~F6|K6gmT6xY&$3>ggR{!ZVW}m9u=VuT&cf;rD2a->_1h2TctbVz^@cFs_p6poh zU^SL49a5IvU=0u}U(X#G#53(}nS{s3>;sH?OnYX}f4J(TaZ0eva}i;$ zFsGyq>Tl7FZZrJa#?NCn$;&+XNVa%UsF91|FoiXxAK%$$GY;zpZ^8*iQNCt z_$ak!`6|B5gau5-H+v>93cgRTKeKhR^{n=*v$Dh#YD4-zHyd$0kkOr#;@$OV#*O{E z9XIlYGe?|l-rasB_mlKN{wZ0z)HQ1l=SsqUvojn=bXM38V-7V zQ>2)`X0^QJ`1NnWRiXLp-$P=bWWKx|y5`ayx$7Bm#}_rXelp$YD8Bae!$}6eUUJ>n zdA!W;xm#rHldW6N*aTLXuX=It_Va6zzf*jRo^7i;`QXah#$B^Zx#Eu=;*D=x+j6m+ zheKrQ#VNTFy|(5L?k>6EFXY!182BZqz~H%hjJNXP)XTe!(sH@K%UsXh=CSz0hp6rI zw?z5~d2Vo7V%C@P<#JVKpZ2k6okiBdvwyQ$SgwiEQszC)Bg#1Oi0_~14BayfpCRpLaDB4+)pt${52*49{CIUPXZ{qA zGWDNb*IguvmR)`)F2q&--ukKEjvxEk%HAb?`E*cYqL=IBiXPQWo-GR<)QwIZW8F1- z)4xq}vVHE(0dG_9rYz(>qqjgaqtCr-{w$UGuOEvS&ubF6@bmcOLpNhwfA0EuCQo!; zi+q?kEEYz?crE|e&d0(zwZ`rUG@2D_-3yO-w%i~Feos1x;TaeYDR2JJ$mr#yABdzt%&2M>?=xLpaI`eWlp&p*vMnQlh1eInD; zzMgGAv+rQ|ECH@!t=5k|XSR7V`L6Bc`kqz9XQtj?9rN+!vY&T%tXisId1=;OEjPc5 zT{g?#9DexsUis#;)1A}i&Y0md>%og3?|Q$kd)37%utue|YQ5X+U9Ywr>@Z(axY$10 z`YlU-cEpwiCH_w}m<(Q+9$T-Nvn63;+5Ho5ulI5mHN8%b&%76^J9qU1ry1w=y0>^) zEskI3n6Klu_k8iQ>bK2{GKD7cT-_pelXaf{@?B;-W4BR zCYVoq6cEL9@CJ)SbJx`)zS9C`_-anlIg|U&tJfrvJIX5Un#A(U3)gd;Iwr`_HJMp- zO=+_+yYsn!mOGprW%O$+45*AHDI(Q`TwRs9_~`aAt01p5^wq`O7Y{vCd{vj#@Z3 zyym)CsLi9lv)-+-Z?a{typ?vztWU~A?0ud?i)zj;spO=deZEiD8XjErCi-l*op$V> z`=)`n?^&K#(5Y$qd#B@t&7se~PtM;wzkB~-Ro<|e_*tobGb3IcXcPE%zH*)HYR*&j z!V6BDY+P~3PI2=wwF~7RX77Ds=B7~Sd-1jKar64H56>!mpRM~LTt4&Nzp#@69ZFYK z%d}2Z#k-UnIlJewFs}3Vn{fKz2C4IQ<)>#odcNr8h0`yUe{H)F6zsyTa{J=i{@*_{ zE^s{DUfJQXak|o^H{ElEtyEVo*STNvc>A+6o$ZTfPOxt1Nae115`5fYFT*0Mojz;r zR_%TuSW~vHv-If48}BtN*C{=&+TC)8PjI5o#|4{BGGy0wtbH^;Ej=l0(WH|%DvhR1 z@3?4@oLAJ7^=NTXQuWLB?2riEXSP~Xz1s};GUZ$A$lc!au;~%|l(2_BM^06Cww(zp zI2I*VpuFqsHjAlBHv2wDi5y?gDEe6}CQ9Sm&+noE`LRCf>yK%Fn>(khIp#OFVdCry zUi0++F+E)sep-9EkeNr5&aS@QrJQao?%UzbrHu)mwiVXPZsDjWq57uxc@YB`wXv_CW7Ls$9!4d>)EAM zPjdIz{lWFn;#)TkI6b=e=f1AbW^JagVlyl6u1cOLkh%W2_WAc~KIYkNjo(xFlHq(o zn{7?!&F^|H(N&w~EWHzP%KfUNd6>#63zr6Ue!oXASn8fys7DxT%?w*?@H6Dz8RnPb z>lIg>s}B3X-y~wRdCrd~i<9}*C53X$E3o~R*gbPjL`=3s_M=Y~evenof4pju*W#&4 zENNk@d&MIRkFS5H=f6SlY{8nC2iq)k%+5T0QI(;@z}h*v=&xAD&LA=V@0S>*xYw`F z4vP(HE1sJ1-qp~J&EQ7CnC)^M{)Uf+zqOZC+(-p)rlJm1vbCB64n z;_eV_a&Y?XK4*FeUyIXF+Q7yEF$Jmy^K&3I+K1e5ZO z;AdH@IJLc36bbXxRe5y_L?rMYihTBN!&R1vobA`|ELl1EdzJ9IO4p|q98b)BZ|prb zX+BftBTMdU=Qp#txtR1W?rVKyVrD6~@tw}Y)$&I+zllG3`_RG0 zYk9={W?f6Wi#>go7PHfy-(<8uZFT7M{?43L``-%dP36m(xhyRE1=j^#o4-pszfL)_ z@dnF!=Dn_GqW8|){j{aCX@}akxLdvVTvv3*t8D%z()LNl`sdA<3DwE`w?)N&%K6Nj z&#-p=xi`G?9#vks&g>YJt@HWNk=cKYYBFEX^{6(w>*!ZiV*fq1b(_;-r#4?kq~J7R=LEa~_dfFjHHlRnydS*%}j{TfK2@{mX*QC#<$zEomyC zlArG}>+ou)ZHrAWzTfuB=WT%=zgpG?;U*;y>x*3P&AQX|>DF zm7OTUe<*U1;={0s4@z|R8=C)8pL@u3LAepj{>SXyJBsyZPR`U7i#u{ih&eT*zNf`A z=GCt2L!@54V4QANB0>@y@KD z7h5?x5{(057w)hVvJqU!eCy$dQ2sk_RJF+Ywz zUz=Im<}YOZnYbj*aQC~CXS?j`xKDH3pTow(nO3jp7?i$Sq4iBmMM}NHB&BX!r|Vto z6Q&=USTpZxkje)C7y5H{K907J-Ed~c!VRw8mZx^{1)gC4#o<1)b3vess?>zOHOrUv zXj;6Gn*8MAK}ng0^GYJO!_)%>e)fLUJeB8C(5=*Sm~(s1N#nI^7C-tX_VV|qxh^*i zRw~&K`8po+rZ8NsEB`d1 z|8j8NDlolzUnfSCqk{#B(Tr&)vf{b{7S% zF9;3ozGIU%Cv28lSLg>PFZ1FfH)~Ej3$^%lX`#t<3*VZ%_q5ox7W{gcwdLN~2+HF+r!^W^!K*ZGlF(Y%{QI*y;8^XNTWdK*RscVJ)~!UO5YIZ_$sa8lT-gy z-|6Q{H*!zo*c7<#&-EDz=eS;6of7gc{pHg~ZaPjTFK$NM2>*QcaKEwMy)=m#@l*P5 z%&eGa@NwUqrZtClJ+@QxOWyEW$EHWH=FXMl?~cu?omuo;n@?Ter0wNnq5Rutiw+d+ ziCu6>;OZ>NGXbV5k-Qs|R98BNRvnn4Et42n_2$C#V;BDJF1WJ)&BCMI0hdE9?eDI1 zsnOl0x8YFBmX@4ja`M)*0}OUcYa5*XEv6EwkmsQDe*Tl}y}c89JT_Z2&J+k?Nk6JB z`8oSV7x&}u@7|go;q5%bkUHrQOAo`w!#R_`Y21zY`frEc<9qwoM9koD{vj0b`|V#N z)p{Z2M+)Z!rQc>2uB_sAk}+SaSF_II>)q|mOz&Ub*mI6^z4p1Q`X~NT#tz+{0N>L?bvW+75Ds(6`hCW*UO*K$gw)@bYk{TKi1Vw_tX!+Jk=_> zXGuRrPWt#n;&}J(B@P-4@8*6x+t9>m<#j1BWy^Y`HIBWtg%T6Uo3hFYcIgGF*FuGjZe-ekQv|MZ(* zd1Y_n4;@QbChAzreK|qcu{hDa=2x27c)3z*N}SV`C^4J#pGr?>+)cXl=vWv>J-?`1etAN8 z;9Spz#R>NPH}%XG1@6j|nsfU7_8VcWH*6Lv>FJexJS5K49}#bEFL{q)qx6cK*B+>g zbJlR)`&74n&WeX`HKjHd9Mn$iI1#+1=*iah&I)sHB{h+w`wzMZ}EQD%Z|`T+)BFZ1y?1+zPva4 zS(wDzECl>ICTJMr>(eVG=Iw|v`cKc+yxfP;z|5^K3ntf;W z?(W@80kih^op`tP{?8^oC)UeJ=KXVbKVgxTlJ9z~5b*EfAK}=WCL3=?J+|oYv-A+H zFxSd7`y7{;D3%dB;!LH7aiTx@Z0V^t_0seY%(W<}huXxFjK=P9seqrsYOuSRLn1>zf`jYYua( z#BCNXi7`vse{_XWc(C7+Ga4oA^Hp{PNS_ds+I4n2gBa)9=GzN3&6Et^pR-rp!m+sX z+TV(IC+4|MSz=PKdCPKsrL(iU(*5~-jt5HK4BBkO5EAgMFXV+OYeFu^>Yjd!IF%Jl zlNN1#6YZ|!_Lw_z$pekPQ{TI$KT?QU^Fc~Jds)*|x8vJR9oA(RKHgO|nWyJX>btTK z&BBd_E#bVgl^30CJ1uyFXyLsrz56x}j?CfT4vsyZIr-sjZ6S=VKQ`e5ikJ+png`$pye0aN>ldr^- z`knq^Zd!5c!OHY_Pr5q~p(+0iNyTLHW9$)eZK9Zaxyx=^+A)2xSE zin-_8wD^@gD>1wmu2OVEx1(Uf zrLZNKE#39!f{oX-+9%d@nsVHISvvX2)WiG@o1d?r5S=Zn-Z{x|o$%eS-5wWs9+N%X-`3%B&-14?b^s7PFzaXvyQ>X&zQ-hZvG(#%!`V!tc+X)KRWBBUydD zq_rkj>-B@@f0^$KJ$mbrBF}pv#Ke^|RLk{-L96n`vU4?`>rUHi^*CE!i8gaN zbM|~k_2+d(#cNVO-r-&2E2?U+A-wO5)zK4kK5bBJm^oYeeW&O1rrPa+Q=Dss-HuWg&5Vw0>P&L1Iw(k0Wx*J8_sw;lZe|J{l z(dY2X&v?@toea8}yrgGLn(_6TqOqm9Qb_xQKEwHf8+N=Y3fBo#uv0QS-5q8d-YKyC zN8a?w=`O7kxz~C}DR6Sg+_;(9v{XgPMNcC8c-b=Bv+qJuLZlhY6ISc-eBphv_oWi& z&3C!G3NNQb&rrGdudjf6%}%MJKbzLSYq{$xJ%g*HNFl+~WR1wg?f$F^-Nh>|?)ov= zT~9_#H&;s0eA|su*R5+-9?SBK``Hl@b;4e?Qs?C3{>5?~4-+=j6iUT#tiH5s^}ZS#JV-`C5HBcQM|r&ihx}>a_2z$ep8BH(maU&A+`l{afI@ zx$>)5eD1J26Uu&R?REjPr9OMvCBtTXeZ*Dvfc3eBRP3$U0=d0?;=*Cv-09?~21VnaZEi1e0iKb9-Cw+YI;TSwU^D`%do2n!m=<&;IB$?_IA1@)DQx^;jlk zetLap(s75WYR5GDw%xUnZ#fzJ*ZosWddcXuKASyjepS&tux z<&!AkSp`^gC>SJ{NR9FEsipOdF?VezGA zo`hrjW~ZAguKZ*E&+EyF)kh1x`vP`X-qYVw6u0eS%sQ>rld9*;lV6&=(tFRgU!406 z2|JxldO7!CN`s-JtFpECVO@UTuKQ-|Zp3dj^_``Amq-l%LnxH;AA&fWEf8h2j&&^Gj2!q|NG zVBVqBtEJNfWJR)ySAW=}|5ROj&b!6{$H}?#?fjeS%opzXW3@eJDFDe(RS#2-%#JOX4W?-HN) zVcXwL_`t@(>KGbgv{Pq_dggq&%){bO)4M0C6(?DI3}GlKZMT_KP&NI!rP{)>&7Kd` zr+2Nqq zGv~<6{@D6xveWF&D9dee4Lq)9tvQ?4L_B`+)is7$Fvm>tL4sVSUtd}8KFM1tO-oI- zZr%{m9`RQ6;n8*6I}drRWtg-%*F>a`Sqf1 zv&36ePvkn>H&hGLej4x`DY`FVL)W&j+3TFT7Uq#uU9+EueThM}67OW9z(5PMdl}^s_^e z-&MhhGUcCjw{cV-@Ga1lahfU3nEdWYz~8Fa?@H5z9v5^zsC((zsk-IQ#mYm~Z2T+t zFYdVi<13pByZA<-YZZqtD?9ByKP|s}?b=lnb}cO6{J1k&kjeYt`SkT-SGtoA-Sn`D zm=$~M`O^b&?ILNDey?81Abn$1Ti+S$Z^zg#oSyqzM*NM=j(`J)W`8%Cwz&D%!(CPv zzsZKLjyxlNKV+fbn*+~(pZoBAD&tYkIV$U-^;!jw-te8rpRM+#aA(oO3u_HTt0O0W zd3tin?8xXdZQ4yTtM)`osb8}+NZIt_$5ZXJQ0AnCP0CGLKjtks{{2m^&UKYbtouH) zpA8H5dH*wf$JvzED-Zdud>kybH~eYCwXJe5o!+;Le`9eLIX~-y^D&wgwLCQ%?1#1t5JKRx_wO(^Q{p?RRi}F`12U8wDQNJwK53Xw#F&c}5cYx_nQ5Hw1dF-fO*{H{)lH zVMA%Qy37WJjwvU2k8I-TpBs8a?b>XYr$?G(KZY`AB+iNmZJK&*GPA$EcTS~-&9}{a znnWL2{0?dh=GC{&%l@zo7TQ-RpVQzOc*{=HAfbe#GjFXvzU6bEXiN6|OZGW$mvm z56J&_Nkq*5*DFp=d8h3^9-T=#`Y3janon9X*S48T@n2_ec>Ukm^)d^$Qth74U;nLR ztlrDr6tzD0|4P1}KSBaS-~9N$`~O*)dj7y?r{^gDw)Hvde{8Yo#eih}o$)L=dOq{c z_FnUFpYT~pEzr(qCwIBjj8*rf%*v-o{`d5@>zg;{*Q%cW`;MRX88sbyRGoeL)wGEl zH=c|4{jAC@Zgx}a`R}4xTLakMH<{k@aa#TUWJ;iSvy`Q@H1`W=#&gyi5I&P-*+rv+gmryqpip#g{)gwQjHG z;q`Jym>TjF-n_OfW@(LOEIwP&kiMoprePjiLfrl+>!c3$>%>KA|1^*7w={~br8nRiZuh%PD5K+;PnYYZYR=sJ{mZO$yTK*`j zygt18-I5Je=ReleJ)9FMoqb*Aa*snc|8bvVFZMr4D%!qk|K3&IJgwU4K`gNW5kBi~ za4)Mk&bh-S=6LtKX&aV*Nby*`;Z*wH8&Qq=4?l9Pa@x9Ub1?s+S8m}wVLoj9<%Oot z562!Um(Pu{y)e}#DWTfEdBguh&&>Rdij&)GLZ)2fKYlixBf-o|Q%HMz>-5<>B}KOM z|4>;srBR#X(TO9$X>sAfk2Z9cr8zZWvLN+Sk5M)7ow33DKDWlRRH@HE>HG5iY;=I>}6MXHoqo9>-@M z&D)ObRb;&)5U+Td>AG*vqi2UR_V6jpow`fu!P;kc#pXmZF|I!;skzEKR$=Pn_@!Rn z=Z*y)O1M`3?npL%F|1KpL#eYiQdbj_p(G8z+!@gg7r{&6sH4`e zj!E;i+k2%p?AbLz|ILzx1$i~04Lf+=?p}Ft`$uz^$LcpLYuB#&nPz9s=ebtu`S&cY zjQcEGe3!bjSftx3v{j~@aXnNqvm{^n?(~9P_ax6Zu|KfRKB&%bqnDHUO3YVqW~%xM zuW+XXqm!&T2d#5u(k`(ao_{U8DK5No%e3y@HaAXP{P88(H%av8=FA^?XVQz<-&}mr z==GjS{zk^VNDI|vwp-SIa$Me+=5cg`lSz0&`u&Vo4#F~%@~>>5yx()<%LnOxuAP~ z?9IzA`{cIHPW@miYb$*9O>o`jh}oN_IZ5Pv>bW*KC%c3DT{c5=fvIdq(ouuc)+ZIq z-)*>R${pNwv1s9{bysUP>ip93wwpTNF>1-lL+f0%^j9#6F&8kbFNqE3{HENl;Sux>cWDJ8SPzf~>D=ZwqSzWFTIEBxdq++f<^Q$EM;KhFp6$8-3b zh0buKu6#c8n#{C>E3Q|9S4o9V$+fxr{M-6#zvARC$~|#cGmFdA$!s}pW`5egz z)Zpp8ZnaxiLu1I-%TWx%!T-;_KK5YFn*Rzb3{)Sl%WqiSsNSZ%T~+Cm_Uo7I+=~u> zvpO*OuuAjZ-3%4AEKV}!#;%9-ZF}CotL$FD9L?HPx@&f1qsyAuv&NlUG z&~4n^J^zBh2G>Jf`(~^ze!R{j*z%I0{wDruGi20nZSG|~lTc}@{Ji7l@=q5Q)tDA~ zT?xHjJ8z>&*<|^mZB<(p%v+{xK3>H9~? zATOOk=yiIK+&_-j|NeU ziYyApTDPv2%(7wbTYa+VTi=ChhQrVAJZEH?^s+E^pU$*(CnjYvSARV&Q4k^1%qh5W z@{=7e1ovxwI<>@)BW6zYp;aZ`3{xFt-@l%0&2>|}q?*sPLHg#YN_)qP;ekzz$%~WQ z;_mm$opySg(jzEq9=Ew|XR~#NZ+Vn!`dZVUj(?h^-IvT}tEuPjmR=Wp=6{mG8U~9$ zY}!uNp0`gwn90yv?DYP^zWrB@cCv&i2TWG!I{0<1b+Le|`Oc#6vkR1-+!U0PQnWUm zIqmxAt1Nk}lWvGvuG2i}pzZQ*`hy>jx+e9CX-){}6yr}co2ilZaN^0hLweg{HWoSF z(o@j5p~EwqQE_96=8TLOCrNS9=GSj34A|-&$i?wqJ5}k@Kz`0!3v7q+$9!>UDrFUgoZ1p?> zZN>K|MsnKyDH85DFZ9^;!k?I=hu-_eTK3M{$$KZRRY~m9jJ4sM`zF2Fk<+6Sb1YEu z=~lM1Q=J>%v#mcG-)+XYF4-EQ@dR|DFSJ)+Y86B*x*PAoxsA1T-+9KEL-;Y-b zH7YKV4$*zDw&aIOfaf((P^m7XhAL1LrULTkiEwn_BQS@$QxoztfXHofP`Kv@M|U#PjY>Tcw}J?j*$Q z5Z+e)OWwQI?w^Zt%$zX6AQrP@Yi#S70v5WOtlr|uG1s{`g_YyP1sj#!qUk$Q`tn4x zZTqx#hJTtW72mlslxfMGE$)E^cT$A^nCR(lDe&EMDQ5xm7)3Tev*$Xk}8*XSc3HUcrZ!*qjRfm3~>Q`?xND$r_WNb~{=GPU_#7 z8`ZGovaYLqutaGPf9<|Yt72`=Y@C*`Ec5o)$FecMtv4#(=Wbnn<%yiiF6pDjZ(Hj2 zeL3*kd-YuDs|?yAXR{s^Cp~YQpv{^)v-{K>|D4$1H3A3a84ax7_l2b|NX__g zgKEN}=wu!G%wawy1Fr_H)w(EgN}{^S5M_^`m)rkaGs~Z?aaq-%nlefoN&Bl+!}kNSkL7_ zt=#2VewtGA6wRu4w$2E7_^O7-ar4wf=XJX?Hknk%{AGB){#@ZojU~6-9IQ`Xe{CF_ zoO*A9)*Drwr#j`;la(J{I~fwV??~hQt#`UEef`Vv*=T87o6yZeL7me#?vA{63nKmXyEIeo$rpX}}qVnfKnpl2qY_0LffCs&Qb6BQ5412J9ruVsb z$DhZj?8(nQywt9Xx$4D~+%FfoZ`-d@-TUQ1>%k}SQOlY$VzlFCm8_lJ)oYO_D=;sH zO_WJ$ZPtS+-r~Qn(egI*V5+m%x=n8NqLxg6m}bMs%`t3cf{l7nt+KVjCvDqUJ-Ra zqZl-Q-}^cIcDqjQVo|Kw(hzN6HBWB}$K=0UdL6q9kEdy`m7et0vz0yB^XvTU88@ng z-iIx*)=*(}a_Sd8y0+*+bds%gNwT-!8e_4NgDZDDQQP$KxS>{x1+xO@Z?ocX=Y)N_ z45c-uyBF{5Zr{e8@bu8x+GfQa0+(D$x4hE|@;v!0kuTr3_nLrg#Vn@nMn;C`8al2$ zf4qA0JJI4T3U_*CVlS`GalfA4`*iXlooA(Qma6OQ30|~kX(SKdGgZqRKI^oJ)1qE= z^_$-MDYx!m+~ zvHHrMT(=M{Gsp72Guh2{%iBYpInKv?-~9i`f2BDOQ|wniZfg;&*`WGiUA;EPye%I} z?`ZB2T69NdhlKp>t$)hye{&8LY!g}c>*kuKC01*aOnXQ@u8;t7W}z$(wAws24_GH`tkJ)jV6( zvrkHhTk4Vfl+px|5c{4@5gmyUExc!hE?JiAf0w?kVBGsW+9q2*Ril}ed(rn(iHDX1 z9G=QFE!m*Gdeb_$nCPB=6P8A1Ci~uzF+5&qa-q`a&?YzYf6~tK>34Mb?#nx#Xg+o1 z!PFZS_a{j__|qzJLWq|^#O2fX%B&?XcKu*^a6Iny^w0S|*6Sy2yfE>}o4=OJVoVQR z)V#h(Dq>CNx2P%N&Jql}1-DM``+8M8zof&rCI%BBw;C-gW zp$(4micUMW*eoo$JaKRL+{gQm&bF|U5T3)N`TY6j-w*z^Rg`f4Im`9%vf?h!*aMHZ z>RwUh5GnY)#{P1Be3?+y2ldWWtH>!@%hs3rt6a+9S#dR`!{(~wxoRgrr_k23Gw+^G zYy0vj_<7_R8T$`)_X;N)zT0uSG;>D6#agaC@2;c<->_I<_Kd0Ek7HTu|B??sd>d~* z%3d@hTkVBq`0O0sw{3~*Q#7Bkxr)!Ott@uGY{AE|_*-!3!3WkW4ZE-RKS|(J_mr@m zC~L<%WAgd4+b?>W3RGR( zX3 zfje&}EL_Gc+?3r_9I)>D+}a4|5QgqWvmBI|4{&$6-CHL$$M(tQ*}{<<+IGc$Fl1YN z=lw$8mEOkf=P&usx~^68P`%#2+7tHQnN&p#^Oa=hawr~Kgd45{7Mzsswfo9+C* zd6%!w_s6fg|LK`^h0NlbWp1!y`orHx;wOr}+q(Xq-u}t#nGcO;+SfB(UErc1ns9T1 z^)_BE4?P(X3ybu|cW;z6CVM*>WQ#^}OtX&l^_hL)^}3H<3Fe9yd4!Wi!?RggIOZmV z{MVdNeSE3VqvO&(1@ot@yW_gyAoIhuDQyS*T)XB3M~$n_asq^2GCNt(B|=o|;MW#Cyyg){v;mOQphO3rk7;cy$5T0`J?~@2+)-NadE0!$wCAY>{d+sE|44L{`h2fWcjmqC zixT4I?A;(OFEjtyf)?ZO2P!gOMAurj1{NJzc+}fONrox^oWqtKUN=Mvx>Z;ecvpND z-7>Rt{;U{9_y4s!4_M86!YbpVa_56}`(*YV7Owt=je08lZ&~+uZ(Q;G(T>@&KVEDt zQ(@kJ?rJyp#MK9lc?<((4x1XEEu3}7a@r1ladGdBH*DnZPS&g35H!Qao!i)JHT%rF zHf!Z1*zPTTSaG*}bHCt8g(JGklM^(je4nNfHvRha8F|gzvYV&>w&3uz5ek;KYu~l{ z;>IkVFU1Odu`f?N-}|;GcJqds8rQD8#Q#p=ecQH9Vk~Jaap=+IGE2A`cw1tpb=ki; zE-lOEtM3<6VLKS>JHxN+o9WNsoLPHjCx7smBA(OR{MO;5rS4BNOI3@h7NVT&61y%; zeYW$8r3+KB|K7f(N97VFiv-U9Ouv5peEhMFvr(HG6sJv)Jp7G|&oJ4yJ^G-N#vO;9 zFHgC3?EX3T*hyZoM`Zz5;S)IHQ%k3%+4`-g+ybvBBWl*ucuTWZE5xPX=Mhi3TJdshV3{;n)I zko2nm(TY7B!Ugl?c{g`XeZ1UYo#~C7`eR(eDtsbsx66d&JDs&-z6G^jV$rsHwxV7A z@ZR^UPfkD8aL_O_XYK))>AwnZ^)hx4FF#mn#MW%>T;9FVL3lfB z>wHmj2e&gNd~W`;Y<6-mR8?QtI+tTnqqO3Ui0y2y1tpc8hnX&UY+`U_xU6_~pU?q@ zM_O{5s)O?{=)G9yet*@5nLJFB!#?ynygbdoz2W{2#=KUaf8R=;_ME)Zd;4eM`)SvA zZhtW|W$6^bm02AM-g+M=8aF!@9_co*bloFRxcic*)TMI4YqgsjdC&DMJvi<04%tmX z+f!!vC{Fua<*~*hmWiQIcN?4gzFu$6=*GwCWmCS|{`LE&lhL}HV^v7{&W9^~ol5MP zp0FiwKYTW6nbD1%g;yOm7Np-YXMb=q?q#C=>*o%ql(t5Eoc8zP71c)t$G=?J|Bca} zeR22eqdA<)8|~TIBr`nnO6G)w8wbu(n(L&nJ7B@9W1TjyZ(J@o_wP{ucY(9#{=1gX zO*s;iZxS#3pJC$`72)WY`6r)5E8qE`BAtB7?8LsN6y49EY)^Dqm0!==zsb%w>Pw1> z-z)8}PU^Dh*&(tEAN=5Ib6B?Z=gq^3-xmA1Z0}lLthdMf`m^$f8m1HGd@C1xGd1nz z`jTB6111Q|E1$7abM0NXPT1V8do8@ob0XDvlBnX;tf}{k<)8H3 zlk+jV8kXu@BRMNI zuG3mSeWCHv*ZS;c*- z{rC9Kjg|myGZ+1T7Wv0*SeLP@r}OcPB%AyHj5Is5^JINy^e&gDjz7)#E_!c?KD+h$ zPbb-|J!cACiVP0d+g=Qryry z`!&y;egETf=^HlZ`Ru=KHZ)&$dqH2TiG$joC!d5wEMLo&^gOcB4sH+K%hD9F)MsOa z&9hB&xfi*z?W^^iVz!TC-{h@sx%@dBXU=%#)iyinCO3!MoA8wFnya1i-kylMx<_;E zsow=hlvZ9(S=96M%b&ed^PF-DQr!IKJfF&a=vh$m_1z1Ny>dhOqdV3fJXdJfaqEOh z{brw+f=Xu7WZrU%ZWGv95bK+8)b4)e#2@;`;V!iGi-EX|WS+eEyt@E$vO@I2(rS%x|mfptIOE-n5iMlPSyxPJ#y&!ekJ(p8@ z{0o~r{_QSWHm66w;rMrzw`UJ0F!D~#Ze98D?2Q%AT5F3^cCkJB$g1PA$J^u|dv=1V VjmA;+Qw$6Y44$rjF6*2UngGd!=$QZj literal 0 HcmV?d00001 diff --git a/services/skunkyart.example.openrc b/services/skunkyart.example.openrc new file mode 100755 index 0000000..d89d5b2 --- /dev/null +++ b/services/skunkyart.example.openrc @@ -0,0 +1,13 @@ +#!/sbin/openrc-run + +directory= +# command_args="-c $directory/config.json" # if SA wasn't start, try to uncomment this line +command=$directory/skunkyart + +name="SkunkyArt" +description="Privacy frontend for deviantart.com" +supervisor=supervise-daemon + +depend() { + need net +} \ No newline at end of file diff --git a/services/skunkyart.example.service b/services/skunkyart.example.service new file mode 100644 index 0000000..6531cab --- /dev/null +++ b/services/skunkyart.example.service @@ -0,0 +1,11 @@ +# Note: i didn't use systemd, so it can be not works :) + +[Unit] +Description=Privacy frontend for deviantart.com + +[Service] +Directory= +ExecStart= + +[Install] +WantedBy=multi-user.target diff --git a/skunkyart.example.openrc b/skunkyart.example.openrc deleted file mode 100755 index aba74ce..0000000 --- a/skunkyart.example.openrc +++ /dev/null @@ -1,11 +0,0 @@ -#!/sbin/openrc-run -name="SkunkyArt" -description="Privacy frontend for deviantart.com" -supervisor=supervise-daemon -command= -command_args="-c " -directory="" - -depend() { - need net -} \ No newline at end of file From c5514c3875b9b782688047d547dfd6663a5b77bb Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Thu, 1 Aug 2024 22:48:05 +0300 Subject: [PATCH 02/25] v1.3 --- INSTANCES.md | 7 ++ README.md | 90 ++++------------ SETUP-RU.md | 42 ++++++++ SETUP.md | 42 ++++++++ TODO.md | 5 +- app/cli.go | 166 +++++++++++++++++++++++++++++ app/config.go | 48 ++------- app/router.go | 6 +- app/util.go | 23 +++- app/wrapper.go | 112 +++++++++---------- config.example.json | 14 +-- go.mod | 4 +- go.sum | 4 +- html/about.htm | 63 +++++------ html/daily.htm | 1 + html/deviantion.htm | 1 + html/gruser.htm | 1 + html/index.htm | 1 + html/search.htm | 1 + instances.json | 20 ++-- main.go | 18 +++- services/skunkyart.example.openrc | 23 ++-- services/skunkyart.example.service | 2 +- 23 files changed, 445 insertions(+), 249 deletions(-) create mode 100644 INSTANCES.md create mode 100644 SETUP-RU.md create mode 100644 SETUP.md create mode 100644 app/cli.go diff --git a/INSTANCES.md b/INSTANCES.md new file mode 100644 index 0000000..1637971 --- /dev/null +++ b/INSTANCES.md @@ -0,0 +1,7 @@ +|Instance|Yggdrasil|I2P|Tor|NSFW|Proxifying|Modified Sources|Country| +|:------:|:-------:|:-:|:-:|:--:|:--------:|:--------------:|:-----:| +|[skunky.ebloid.ru](https://skunky.ebloid.ru/art)|[Yes](http://[201:eba5:d1fc:bf7b:cfcb:a811:4b8b:7ea3]/art)|No|No| No | No | No | Russia | +|[clovius.club](https://skunky.clovius.club)|No|No|No| Yes | Yes | No | Sweden | +|[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | No | Romania | +|[frontendfriendly.xyz](https://skunkyart.frontendfriendly.xyz)|No|No|No| Yes | Yes | No | Finland | +|[lumaeris.com](https://skunkyart.lumaeris.com)|No|No|No| Yes | Yes | No | US | \ No newline at end of file diff --git a/README.md b/README.md index ba6e4b3..6eaa831 100644 --- a/README.md +++ b/README.md @@ -1,83 +1,33 @@ -SkunkyArt +SkunkyArt [![Matrix room](https://img.shields.io/badge/matrix-000000?style=for-the-badge&logo=Matrix&logoColor=white)](https://go.kde.org/matrix/#/#skunkyart:ebloid.ru) -# Instances -|Instance|Yggdrasil|I2P|Tor|NSFW|Proxifying|Country| -|:------:|:-------:|:-:|:-:|:--:|:--------:|:-----:| -|[skunky.ebloid.ru](https://skunky.ebloid.ru/art)|[Yes](http://[201:eba5:d1fc:bf7b:cfcb:a811:4b8b:7ea3]/art)|No|No| No | No | Russia | -|[clovius.club](https://skunky.clovius.club)|No|No|No| Yes | Yes | Sweden | -|[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | Romania | -|[frontendfriendly.xyz](https://skunkyart.frontendfriendly.xyz)|No|No|No| Yes | Yes | Finland | -|[lumaeris.com](https://skunkyart.lumaeris.com)|No|No|No| Yes | Yes | US | + +Instances: [`INSTANCES.md`](https://git.macaw.me/skunky/SkunkyArt/src/branch/master/INSTANCES.md) # EN 🇺🇸 ## Description -SkunkyArt 🦨 -- alternative frontend to DeviantArt, which will work without problems even on quite old hardware, due to the lack of JavaScript. -## Config -The sample config is in the `config.example.json` file. To specify your own path to the config, use the CLI argument `-c` or `--config`. -* `listen` -- the address and port on which SkunkyArt will listen -* `base-path` -- the path to the instance. Example: `"base-path":"/art/"` -> https://skunky.ebloid.ru/art/ -* `cache` -- caching system; default is off. - * `path` -- the path to the cache - * `lifetime` -- the lifetime of the file in the cache. Units: i, h, d, w, m, y. I -- minute, all other units I think are self-explanatory. - * `max-size` -- maximum file size in megabytes. -* `dirs-to-memory` -- this setting determines which directories will be copied to RAM when SkunkyArt is started. Mandatory -* `download-proxy` -- proxy address for downloading files. -## Examples of reverse proxies -Nginx: -```apache -server { - listen 443 ssl; - server_name skunky.example.com; - - location ((BASE URL)) { # if you have a separate subdomain for the frontend, insert '/' instead of '((BASE URL)))'. - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header Host $host; - proxy_http_version 1.1; - proxy_pass http://((IP)):((PORT)); - } -} -``` -Pretty much business as usual, except for the [`X-Forwarded-Proto`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto) header setting. -## How do I add my instance to the list? -To do this, you must either make a PR by adding your instance to the `instances.json` and `README.md` files, or create an Issue, or report it to the room in Matrix. I don't think it needs any description. However, be warned, this list has a couple rules: +SkunkyArt 🦨 — alternative frontend for DevianArt, which works without JS. +## Setup +The sample config is in the `config.example.json` file. For custom config, use `--config` option. +See the [`SETUP.md`](https://git.macaw.me/skunky/SkunkyArt/src/branch/master/SETUP.md) file for more info about directives. +## Adding instance to the list +To do this, you must either make a PR by adding your instance to the `instances.json` and `INSTANCES.md` files (you can use `--add-instance` cli-argument to automatically add the instance to these files), or create an Issue, or report it to the room in Matrix. Keep in mind that your instance must comply with the following rules: 1. the Instance must not use Cloudflare. 2. If your instance has modified source code, you need to publish it to any free platform. For example, Github and Gitlab are not. ## Acknowledgements -* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) -- helped me understand Go and gave me a lot of useful advice on this language. +* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — helped me understand Go and gave me a lot of useful advice on this language. +* [meoww](https://codeberg.org/meoww) — translated some sentences into English and wrote a service for openrc # RU 🇷🇺 ## Описание -SkunkyArt 🦨 -- альтернативный фронтенд к DeviantArt, который будет работать без проблем даже на довольно старом оборудовании, за счёт отсутствия JavaScript. -## Конфиг -Пример конфига находится в файле `config.example.json`. Чтобы указать свой путь до конфига, используйте CLI-аргумент `-c` или `--config`. -* `listen` -- адрес и порт, на котором будет слушать SkunkyArt -* `base-path` -- путь к инстансу. Пример: `"base-path": "/art/"` -> https://skunky.ebloid.ru/art/ -* `cache` -- система кеширования; по умолчанию - выкл. - * `path` -- путь до кеша - * `lifetime` -- время жизни файла в кеше. Единицы измерения: i, h, d, w, m, y. I -- минута, всё остальные единицы измерения, я считаю понятными и без объяснения. - * `max-size` -- максимальный размер файла в мегабайтах -* `dirs-to-memory` -- данная настройка определяет какие каталоги будут скопированы в ОЗУ при запуске SkunkyArt. Обязательна -* `download-proxy` -- адрес прокси для загрузки файлов -## Примеры reverse-прокси -Nginx: -```apache -server { - listen 443 ssl; - server_name skunky.example.com; - - location ((BASE URL)) { # если у вас отдельный поддомен для фронтенда, вместо '((BASE URL))' вставляйте '/' - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header Host $host; - proxy_http_version 1.1; - proxy_pass http://((IP)):((PORT)); - } -} -``` -В целом, всё как обычно, за исключением настройки заголовка [`X-Forwarded-Proto`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto). -## Как добавить свой инстанс в список? -Чтобы это сделать, вы должны либо сделать PR, добавив в файлы `instances.json` и `README.md` свой инстанс, либо создать Issue, или сообщить о нём в комнате в Matrix. Думаю, он не нуждается в описании. Однако учтите, у этого списка есть пара правил: -1. Инстанс не должен использовать Cloudflare. +SkunkyArt 🦨 — альтернативный фронтенд к DeviantArt, который полностью работает без JS (JavaScript). +## Настройка +Пример конфига находится в файле `config.example.json`. Чтобы указать свой конфиг, используйте cli-аргумент `--config`. +См. [`SETUP-RU.md`](https://git.macaw.me/skunky/SkunkyArt/src/branch/master/SETUP-RU.md) для информации о настройки фронтенда. +## Добавление инстанса в список +Чтобы это сделать, вы должны либо сделать PR, добавив в файлы `instances.json` и `INSTANCES.md` свой инстанс (можете воспользоваться cli-аргументом `--add-instance`, который автоматически это сделает), либо создать Issue, или сообщить о нём в комнате в Matrix. Учтите, что ваш инстанс должен соблюсти следущие правила: +1. Инстанс не должен использовать Cloudflare итп. 2. Если ваш инстанс имеет модифицированный исходный код, то вам нужно опубликовать его на любую свободную площадку. Например, Github и Gitlab таковыми не являются. ## Благодарности -* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) -- помог разобраться в Go и много чего полезного посоветовал по этому языку. \ No newline at end of file +* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — помог разобраться в Go и много чего полезного посоветовал по этому языку. +* [meoww](https://codeberg.org/meoww) — перевела некоторые предложения на английский язык и написала сервис для openrc \ No newline at end of file diff --git a/SETUP-RU.md b/SETUP-RU.md new file mode 100644 index 0000000..6ff3c23 --- /dev/null +++ b/SETUP-RU.md @@ -0,0 +1,42 @@ +[English version 🇬🇧](https://git.macaw.me/skunky/SkunkyArt/src/branch/master/SETUP.md) + +# Единицы измерения +Размер файла в кеше измеряется в мегабайтах.
+Единицы времени: +* `i` — минуты +* `h` — часы +* `w` — недели +* `m` — месяца +* `y` — года + +# Конфигурация +* `listen` — IP и порт для слушанья; заполняется по такой форме: ip:port +* `uri` — URI инстанса. Пример: `"uri":"/art/"` -> https://skunky.ebloid.ru/art/ +* `cache` — Система кеширования; по умолчанию выключена. + * `enabled` — Состояние системы кеширования; требуется булёвое значение + * `path` — Полный путь до каталога, куда будет сохраняться кеш + * `lifetime` — Время жизни файла в кеше, требует целочисленное значение, дополненное суффиксом времени (см. 'Единицы времени') + * `max-size` — Максимальный размер файла + * `update-interval` — Интервал для автоматической ротации кеша +* `dirs-to-memory` — Массив, заполнив который скопируются все файлы из указанных каталогов +* `download-proxy` — Адрес прокси для загрузки файлов +* `user-agent` — Строка, которая используется в качестве User-Agent'а + +# Настройка обратного прокси +Если вы собираетесь хостить инстанс в Интернете, то вам следует настроить заголовок прокси [`X-Forwarded-Proto`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto). В противном случае, все ссылки на вашем инстансе будут вида "http". Ниже есть информация о том, как настроить обратное проксирование: + +Nginx: +```apache +server { + listen 443 ssl; + server_name skunky.example.com; + + # Если используется поддомен, то вместо ((BASE_URL)), укажите '/'. + location ((BASE_URL)) { + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_pass http://((IP)):((PORT)); + } +} +``` \ No newline at end of file diff --git a/SETUP.md b/SETUP.md new file mode 100644 index 0000000..ab30165 --- /dev/null +++ b/SETUP.md @@ -0,0 +1,42 @@ +[Версия на русском языке 🇷🇺](https://git.macaw.me/skunky/SkunkyArt/src/branch/master/SETUP-RU.md) + +# Units +Maximum file size in megabytes, requires numeric value.
+Time units: +* `i` — minutes +* `h` — hours +* `w` — weeks +* `m` — months +* `y` — years + +# Config +* `listen` — IP and port to listen on in the following form: ip:port +* `uri` — Instance URI. Example: `"uri":"/art/"` -> https://skunky.ebloid.ru/art/ +* `cache` — Caching system; default is off. + * `enabled` — Caching system state, requires boolean value + * `path` — Path to cache directory, requires absolute filesystem path + * `lifetime` — Cached file life time, requires numeric value, followed by multiplicative suffix (see Time Units for details) + * `max-size` — Maximum file size in megabytes + * `update-interval` — Automatic rotation interval +* `dirs-to-memory` — This setting determines which directories will be copied to RAM when SkunkyArt is started. Mandatory +* `download-proxy` — Proxy address for downloading files. +* `user-agent` — String, which SkunkyArt uses as UA + +# Setting up reverse proxy +Pretty much business as usual, except for the [`X-Forwarded-Proto`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto) header setting. + +Nginx example configuration: +```apache +server { + listen 443 ssl; + server_name skunky.example.com; + + # In case of subdomain, use / instend of ((BASE_URL)) + location ((BASE_URL)) { + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_pass http://((IP)):((PORT)); + } +} +``` \ No newline at end of file diff --git a/TODO.md b/TODO.md index cdb4c95..ee50111 100644 --- a/TODO.md +++ b/TODO.md @@ -1,14 +1,17 @@ # v1.3.x -* Написать Makefile * Почистить говнокод * **Доделать парсинг описания** * Избавиться от хардкода под Linux * ~~Реализовать стрипы в ежедневных артах~~ +* Сделать нормальное отображение ошибок * ~~Исправить баг с навигацией по страницам~~ * ~~Сделать единицы в конфиге более понятными~~ * Добавить возможность включить темплейты в бинарник * ~~Реализовать миниатюры и оптимизировать CSS под маленькие экраны~~ +* Написать Makefile и скрипт для автоматического развёртывания инстанса * **Реализовать отображение контента, отличного от картинок (видео, аудио, etc)** +* Исправить баг с эмоджи, когда некоторые кастомные эмоции могут не отображаться +* Добавить флаг сборки, который позволит собрать бинарник со встроенными темплейтами * Улучшить систему кеширования: добавить рейтинг для удаления и копирование изображений в ОЗУ # v1.4 * Реализовать API diff --git a/app/cli.go b/app/cli.go new file mode 100644 index 0000000..4d4f849 --- /dev/null +++ b/app/cli.go @@ -0,0 +1,166 @@ +package app + +import ( + "bufio" + "bytes" + "encoding/json" + "os" + "time" +) + +func ExecuteCommandLineArguments() { + const helpmsg = `SkunkyArt v1.3.1 [CSS improvements for mobile and the strips on Daily Deviations] +Usage: + - [-c|--config] | path to config + - [-a|--add-instance] | generates 'instances.json' and 'INSTANCES.md' files with ur instance + - [-h|--help] | returns this message +Example: + ./skunkyart -c config.json +Copyright lost+skunk, X11. https://git.macaw.me/skunky/skunkyart/src/tag/v1.3.1` + + a := os.Args[1:] + for n, x := range a { + switch x { + case "-c", "--config": + if len(a) >= 2 { + CFG.cfg = a[n+1] + } else { + exit("Not enought arguments", 1) + } + case "-h", "--help": + exit(helpmsg, 0) + case "-a", "--add-instance": + addInstance() + } + } +} + +type settingsUrls struct { + I2P string `json:"i2p,omitempty"` + Ygg string `json:"ygg,omitempty"` + Tor string `json:"tor,omitempty"` + Clearnet string `json:"clearnet,omitempty"` +} + +type settingsParams struct { + Nsfw bool `json:"nsfw"` + Proxy bool `json:"proxy"` +} + +type settings struct { + Title string `json:"title"` + Country string `json:"country"` + ModifiedSrc string `json:"modified-src,omitempty"` + Urls settingsUrls `json:"urls"` + Settings settingsParams `json:"settings"` +} + +func addInstance() { + prompt := func(txt string, necessary bool) string { + input := bufio.NewScanner(os.Stdin) + for { + print(txt) + print(": ") + input.Scan() + + if i := input.Text(); necessary && i == "" { + println("Please specify the", txt) + } else { + return i + } + } + } + + var settingsVar struct { + Instances []settings `json:"instances"` + } + instancesJson, err := os.OpenFile("instances.test.json", os.O_CREATE|os.O_WRONLY, 0644) + try(err) + defer instancesJson.Close() + + instances, err := os.OpenFile("INSTANCES.md", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + try(err) + defer instances.Close() + + for { + if Templates["instances.json"] == "" { + print("\rDownloading instance list...") + } else { + println("\r\033[2KDownloaded!") + try(json.Unmarshal([]byte(Templates["instances.json"]), &settingsVar)) + + settingsVar.Instances = append(settingsVar.Instances, settings{ + Title: prompt("Title", true), + Country: prompt("Country", true), + ModifiedSrc: prompt("Link to modified sources", false), + Settings: settingsParams{ + Nsfw: CFG.Nsfw, + Proxy: CFG.Proxy, + }, + Urls: settingsUrls{ + Clearnet: prompt("Clearnet link", false), + Ygg: prompt("Yggdrasil link", false), + Tor: prompt("Onion link", false), + I2P: prompt("I2P link", false), + }, + }) + + j, err := json.MarshalIndent(&settingsVar, "", " ") + try(err) + + instancesJson.Write(j) + + settingsVar := &settingsVar.Instances[len(settingsVar.Instances)-1] + var mdstr bytes.Buffer + + mdstr.WriteString("\n|") + if settingsVar.Urls.Clearnet != "" { + mdstr.WriteString("[") + mdstr.WriteString(settingsVar.Title) + mdstr.WriteString("](") + mdstr.WriteString(settingsVar.Urls.Clearnet) + mdstr.WriteString(")") + } else { + mdstr.WriteString(settingsVar.Title) + } + mdstr.WriteString("|") + + urls := []string{settingsVar.Urls.Ygg, settingsVar.Urls.I2P, settingsVar.Urls.Tor} + for i, l := 0, len(urls); i < l; i++ { + url := urls[i] + if url != "" { + mdstr.WriteString("[Yes](") + mdstr.WriteString(url) + mdstr.WriteString(")|") + } else { + mdstr.WriteString("No|") + } + } + + settings := []bool{settingsVar.Settings.Nsfw, settingsVar.Settings.Proxy} + for i, l := 0, len(settings); i < l; i++ { + if settings[i] { + mdstr.WriteString("Yes|") + } else { + mdstr.WriteString("No|") + } + } + + if settingsVar.ModifiedSrc != "" { + mdstr.WriteString("[Yes](") + mdstr.WriteString(settingsVar.ModifiedSrc) + mdstr.WriteString(")|") + } else { + mdstr.WriteString("No|") + } + + mdstr.WriteString(settingsVar.Country) + mdstr.WriteString("|") + + instances.Write(mdstr.Bytes()) + break + } + time.Sleep(500 * time.Millisecond) + } + exit("Done! Now add the files 'instances.json' and 'INSTANCES.md' to the 'master' branch in the repository https://git.macaw.me/skunky/SkunkyArt", 0) +} diff --git a/app/config.go b/app/config.go index 3fb8103..a6ac756 100644 --- a/app/config.go +++ b/app/config.go @@ -21,7 +21,7 @@ type cache_config struct { type config struct { cfg string Listen string - BasePath string `json:"base-path"` + URI string `json:"uri"` Cache cache_config Proxy, Nsfw bool UserAgent string `json:"user-agent"` @@ -30,15 +30,15 @@ type config struct { } var CFG = config{ - cfg: "config.json", - Listen: "127.0.0.1:3003", - BasePath: "/", + cfg: "config.json", + Listen: "127.0.0.1:3003", + URI: "/", Cache: cache_config{ - Enabled: true, + Enabled: false, Path: "cache", UpdateInterval: 1, }, - Dirs: []string{"html", "css"}, + Dirs: []string{"html", "css", "misc"}, UserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36", Proxy: true, Nsfw: true, @@ -47,42 +47,6 @@ var CFG = config{ var lifetimeParsed int64 func ExecuteConfig() { - go func() { - for { - func() { - defer func() { - if r := recover(); r != nil { - recover() - } - }() - Templates["instances.json"] = string(Download("https://git.macaw.me/skunky/SkunkyArt/raw/branch/master/instances.json").Body) - }() - time.Sleep(1 * time.Hour) - } - }() - - const helpmsg = `SkunkyArt v1.3.1 [CSS improvements for mobile and strips on Daily Deviations] -Usage: - - [-c|--config] - path to config - - [-h|--help] - returns this message -Example: - ./skunkyart -c config.json -Copyright lost+skunk, X11. https://git.macaw.me/skunky/skunkyart/src/tag/v1.3.1` - - a := os.Args - for n, x := range a { - switch x { - case "-c", "--config": - if len(a) >= 3 { - CFG.cfg = a[n+1] - } else { - exit("Not enought arguments", 1) - } - case "-h", "--help": - exit(helpmsg, 0) - } - } - if CFG.cfg != "" { f, err := os.ReadFile(CFG.cfg) tryWithExitStatus(err, 1) diff --git a/app/router.go b/app/router.go index 33c3189..f87aa50 100644 --- a/app/router.go +++ b/app/router.go @@ -11,7 +11,7 @@ var Host string func Router() { parsepath := func(path string) map[int]string { - if l := len(CFG.BasePath); len(path) > l { + if l := len(CFG.URI); len(path) > l { path = path[l-1:] } else { path = "/" @@ -54,7 +54,7 @@ func Router() { var skunky skunkyart skunky.Writer = w skunky.Args = r.URL.Query() - skunky.BasePath = CFG.BasePath + skunky.BasePath = CFG.URI arg := skunky.Args.Get skunky.QueryRaw = arg("q") @@ -75,7 +75,7 @@ func Router() { default: skunky.ReturnHTTPError(404) case "": - skunky.ExecuteTemplate("index.htm", &CFG.BasePath) + skunky.ExecuteTemplate("index.htm", &CFG.URI) case "post": skunky.Deviation(path[2], path[3]) case "search": diff --git a/app/util.go b/app/util.go index 11f81a1..8c26760 100644 --- a/app/util.go +++ b/app/util.go @@ -32,6 +32,20 @@ func tryWithExitStatus(err error, code int) { } } +func RefreshInstances() { + for { + func() { + defer func() { + if r := recover(); r != nil { + recover() + } + }() + Templates["instances.json"] = string(Download("https://git.macaw.me/skunky/SkunkyArt/raw/branch/master/instances.json").Body) + }() + time.Sleep(1 * time.Hour) + } +} + // some crap for frontend func (s skunkyart) ExecuteTemplate(file string, data any) { var buf strings.Builder @@ -46,7 +60,7 @@ func UrlBuilder(strs ...string) string { var str strings.Builder l := len(strs) str.WriteString(Host) - str.WriteString(CFG.BasePath) + str.WriteString(CFG.URI) for n, x := range strs { str.WriteString(x) if n+1 < l && !(strs[n+1][0] == '?' || strs[n+1][0] == '&') && !(x[0] == '?' || x[0] == '&') { @@ -220,11 +234,10 @@ func BuildUserPlate(name string) string { func GetValueOfTag(t *html.Tokenizer) string { for tt := t.Next(); ; { - switch tt { - default: - return "" - case html.TextToken: + if tt == html.TextToken { return string(t.Text()) + } else { + return "" } } } diff --git a/app/wrapper.go b/app/wrapper.go index 51d76a9..250e88b 100644 --- a/app/wrapper.go +++ b/app/wrapper.go @@ -31,20 +31,7 @@ type skunkyart struct { About struct { Proxy bool Nsfw bool - Instances []struct { - Title string - Country string - Urls []struct { - I2P string `json:"i2p"` - Ygg string - Tor string - Clearnet string - } - Settings struct { - Nsfw bool - Proxy bool - } - } + Instances []settings } SomeList string @@ -229,48 +216,49 @@ func (s skunkyart) GRUser() { // посты func (s skunkyart) Deviation(author, postname string) { id_search := regexp.MustCompile("[0-9]+").FindAllString(postname, -1) - if len(id_search) >= 1 { - post := &s.Templates.Deviation - - id := id_search[len(id_search)-1] - post.Post = devianter.GetDeviation(id, author) - - if post.Post.Deviation.TextContent.Excerpt != "" { - post.Post.Description = ParseDescription(post.Post.Deviation.TextContent) - } else { - post.Post.Description = ParseDescription(post.Post.Deviation.Extended.DescriptionText) - } - // время публикации - post.StringTime = post.Post.Deviation.PublishedTime.UTC().String() - post.Post.IMG = ParseMedia(post.Post.Deviation.Media) - for _, x := range post.Post.Deviation.Extended.RelatedContent { - if len(x.Deviations) != 0 { - post.Related += s.DeviationList(x.Deviations, false) - } - } - - // хештэги - for _, x := range post.Post.Deviation.Extended.Tags { - var tag strings.Builder - tag.WriteString(`
#`) - tag.WriteString(x.Name) - tag.WriteString("") - - post.Tags += tag.String() - } - - if post.Post.Comments.Total <= 50 { - post.Post.Comments.Cursor = "" - } - - post.Comments = s.ParseComments(devianter.GetComments(id, post.Post.Comments.Cursor, s.Page, 1)) - - s.ExecuteTemplate("deviantion.htm", &s) - } else { + if len(id_search) < 1 { s.ReturnHTTPError(400) + return } + + post := &s.Templates.Deviation + + id := id_search[len(id_search)-1] + post.Post = devianter.GetDeviation(id, author) + + if post.Post.Deviation.TextContent.Excerpt != "" { + post.Post.Description = ParseDescription(post.Post.Deviation.TextContent) + } else { + post.Post.Description = ParseDescription(post.Post.Deviation.Extended.DescriptionText) + } + // время публикации + post.StringTime = post.Post.Deviation.PublishedTime.UTC().String() + post.Post.IMG = ParseMedia(post.Post.Deviation.Media) + for _, x := range post.Post.Deviation.Extended.RelatedContent { + if len(x.Deviations) != 0 { + post.Related += s.DeviationList(x.Deviations, false) + } + } + + // хештэги + for _, x := range post.Post.Deviation.Extended.Tags { + var tag strings.Builder + tag.WriteString(` #`) + tag.WriteString(x.Name) + tag.WriteString("") + + post.Tags += tag.String() + } + + if post.Post.Comments.Total <= 50 { + post.Post.Comments.Cursor = "" + } + + post.Comments = s.ParseComments(devianter.GetComments(id, post.Post.Comments.Cursor, s.Page, 1)) + + s.ExecuteTemplate("deviantion.htm", &s) } func (s skunkyart) DD() { @@ -298,7 +286,6 @@ func (s skunkyart) DD() { } func (s skunkyart) Search() { - s.Atom = false var err error ss := &s.Templates.Search switch s.Type { @@ -365,15 +352,16 @@ func (s skunkyart) Search() { } func (s skunkyart) Emojitar(name string) { - if name != "" && (s.Type == 'a' || s.Type == 'e') { - ae, e := devianter.AEmedia(name, s.Type) - if e != nil { - s.ReturnHTTPError(404) - } - wr(s.Writer, ae) - } else { + if name == "" || !(s.Type == 'a' || s.Type == 'e') { s.ReturnHTTPError(400) + return } + + ae, e := devianter.AEmedia(name, s.Type) + if e != nil { + s.ReturnHTTPError(404) + } + wr(s.Writer, ae) } func (s skunkyart) About() { diff --git a/config.example.json b/config.example.json index b4d1ce2..0934fe7 100644 --- a/config.example.json +++ b/config.example.json @@ -1,17 +1,17 @@ { - "listen": "0.0.0.0:3003", - "base-path": "/", + "listen": "0:3003", + "uri": "/", "cache": { "enabled": true, - "path": "/home/skunk/projects/skunkyart/cache", - "lifetime": "1w", + "path": "cache", + "lifetime": null, "max-size": 1024, "update-interval": 5 }, "dirs-to-memory": [ - "/home/skunk/projects/skunkyart/html", - "/home/skunk/projects/skunkyart/css", - "/home/skunk/projects/skunkyart/misc" + "html", + "css", + "misc" ], "download-proxy": "http://127.0.0.1:8080", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36", diff --git a/go.mod b/go.mod index 7e5e771..8016fa3 100644 --- a/go.mod +++ b/go.mod @@ -2,9 +2,7 @@ module skunkyart go 1.22.3 -replace git.macaw.me/skunky/devianter v0.2.0 => /home/skunk/projects/devianter - require ( - git.macaw.me/skunky/devianter v0.2.0 + git.macaw.me/skunky/devianter v0.2.5 golang.org/x/net v0.27.0 ) diff --git a/go.sum b/go.sum index 59de12e..8e79784 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,4 @@ -git.macaw.me/skunky/devianter v0.2.0 h1:2vnMPb1Dax37CbAOfmHcSoK8+1goFkWHbtbh31Ytsww= -git.macaw.me/skunky/devianter v0.2.0/go.mod h1:ZLn527xBlnpXrUB1B8z/MhyeiWVK4nPWjyfnhWOE8Is= +git.macaw.me/skunky/devianter v0.2.5 h1:aAc6CG/ghvG130Ob7gGUdK4IV3MSeCD5t3QIJjto1M0= +git.macaw.me/skunky/devianter v0.2.5/go.mod h1:ZLn527xBlnpXrUB1B8z/MhyeiWVK4nPWjyfnhWOE8Is= golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= diff --git a/html/about.htm b/html/about.htm index 31f58c8..edb576d 100644 --- a/html/about.htm +++ b/html/about.htm @@ -3,6 +3,7 @@ SkunkyArt +

@@ -21,43 +22,43 @@ SkunkyArt is an alternative frontend for deviantart.com, written in Go.

Room in Matrix

-

Instance settings:

+ Instance settings:
  • NSFW: {{if .Templates.About.Nsfw}}YES{{else}}NO{{end}}
  • Proxyfing: {{if .Templates.About.Proxy}}YES{{else}}NO{{end}}
-

Instances:

-
    - {{range .Templates.About.Instances}} -
  • {{.Title}}: -
      -
    • Country: {{.Country}}
    • -
    • URLs:
    • +
      + Instances: +
        + {{range .Templates.About.Instances}} +
      • {{.Title}}:
          - {{range .Urls}} - {{if ne .I2P ""}} -
        • I2P: Yes
        • - {{end}} - {{if ne .Ygg ""}} -
        • Ygg: Yes
        • - {{end}} - {{if ne .Tor ""}} -
        • Tor: Yes
        • - {{end}} - {{if ne .Clearnet ""}} -
        • Clearnet: {{.Clearnet}}
        • - {{end}} - {{end}} +
        • Country: {{.Country}}
        • +
        • URLs:
        • +
            + {{if ne .Urls.I2P ""}} +
          • I2P: Yes
          • + {{end}} + {{if ne .Urls.Ygg ""}} +
          • Ygg: Yes
          • + {{end}} + {{if ne .Urls.Tor ""}} +
          • Tor: Yes
          • + {{end}} + {{if ne .Urls.Clearnet ""}} +
          • Clearnet: {{.Urls.Clearnet}}
          • + {{end}} +
          +
        • Settings:
        • +
            +
          • NSFW: {{if .Settings.Nsfw}}YES{{else}}NO{{end}}
          • +
          • Proxyfing: {{if .Settings.Proxy}}YES{{else}}NO{{end}}
          • +
        -
      • Settings:
      • -
          -
        • NSFW: {{if .Settings.Nsfw}}YES{{else}}NO{{end}}
        • -
        • Proxyfing: {{if .Settings.Proxy}}YES{{else}}NO{{end}}
        • -
        -
      - - {{end}} -
    +
  • + {{end}} +
+

Copyright lost+skunk, X11. SkunkyArt v1.3.1

\ No newline at end of file diff --git a/html/daily.htm b/html/daily.htm index 22e9275..c464268 100644 --- a/html/daily.htm +++ b/html/daily.htm @@ -3,6 +3,7 @@ SkunkyArt | Daily Deviations +
diff --git a/html/deviantion.htm b/html/deviantion.htm index c00c1ae..50710b6 100644 --- a/html/deviantion.htm +++ b/html/deviantion.htm @@ -4,6 +4,7 @@ SkunkyArt | {{.Templates.Deviation.Post.Deviation.Author.Username}} - {{.Templates.Deviation.Post.Deviation.Title}} +
diff --git a/html/gruser.htm b/html/gruser.htm index ee7de73..a219e36 100644 --- a/html/gruser.htm +++ b/html/gruser.htm @@ -9,6 +9,7 @@ {{end}} +
diff --git a/html/index.htm b/html/index.htm index 3347306..08feba5 100644 --- a/html/index.htm +++ b/html/index.htm @@ -3,6 +3,7 @@ SkunkyArt +
diff --git a/html/search.htm b/html/search.htm index fee5ada..df1cf85 100644 --- a/html/search.htm +++ b/html/search.htm @@ -3,6 +3,7 @@ SkunkyArt | Search "{{.QueryRaw}}" +
diff --git a/instances.json b/instances.json index eeb329a..cd95b78 100644 --- a/instances.json +++ b/instances.json @@ -3,10 +3,10 @@ { "title": "skunky.ebloid.ru", "country": "Russia", - "urls": [{ + "urls": { "ygg": "http://[201:eba5:d1fc:bf7b:cfcb:a811:4b8b:7ea3]/art", "clearnet": "https://skunky.ebloid.ru/art" - }], + }, "settings": { "nsfw": false, "proxy": false @@ -15,9 +15,9 @@ { "title": "clovius.club", "country": "Sweden", - "urls": [{ + "urls": { "clearnet": "https://skunky.clovius.club" - }], + }, "settings": { "nsfw": true, "proxy": true @@ -26,9 +26,9 @@ { "title": "bloat.cat", "country": "Romania", - "urls": [{ + "urls": { "clearnet": "https://skunky.bloat.cat" - }], + }, "settings": { "nsfw": true, "proxy": true @@ -37,9 +37,9 @@ { "title": "frontendfriendly.xyz", "country": "Finland", - "urls": [{ + "urls": { "clearnet": "https://skunkyart.frontendfriendly.xyz" - }], + }, "settings": { "nsfw": true, "proxy": true @@ -48,9 +48,9 @@ { "title": "lumaeris.com", "country": "US", - "urls": [{ + "urls": { "clearnet": "https://skunkyart.lumaeris.com" - }], + }, "settings": { "nsfw": true, "proxy": true diff --git a/main.go b/main.go index 43b95f0..0224816 100644 --- a/main.go +++ b/main.go @@ -2,17 +2,27 @@ package main import ( "skunkyart/app" + "time" "git.macaw.me/skunky/devianter" ) func main() { + go app.RefreshInstances() + + app.ExecuteCommandLineArguments() app.ExecuteConfig() app.CopyTemplatesToMemory() - err := devianter.UpdateCSRF() - if err != nil { - println(err.Error()) - } + + go func() { + for { + err := devianter.UpdateCSRF() + if err != nil { + println(err.Error()) + } + time.Sleep(12 * time.Hour) + } + }() app.Router() } diff --git a/services/skunkyart.example.openrc b/services/skunkyart.example.openrc index d89d5b2..9309251 100755 --- a/services/skunkyart.example.openrc +++ b/services/skunkyart.example.openrc @@ -1,13 +1,20 @@ #!/sbin/openrc-run - -directory= -# command_args="-c $directory/config.json" # if SA wasn't start, try to uncomment this line -command=$directory/skunkyart - -name="SkunkyArt" -description="Privacy frontend for deviantart.com" supervisor=supervise-daemon +user=skunkyart:skunkyart +name=SkunkyArt +directory=/opt/skunkyart +command=$directory/bin/skunkyart +description="Privacy-oriented frontend for DeviantArt" +error_logger=logger +output_logger=logger +no_new_privs=true +umask=0077 + +# if you use old version openrc, uncomment function lower +# start_pre() { +# cd $directory +# } depend() { - need net + need net localmount bootmisc } \ No newline at end of file diff --git a/services/skunkyart.example.service b/services/skunkyart.example.service index 6531cab..2699d83 100644 --- a/services/skunkyart.example.service +++ b/services/skunkyart.example.service @@ -1,7 +1,7 @@ # Note: i didn't use systemd, so it can be not works :) [Unit] -Description=Privacy frontend for deviantart.com +Description=Privacy-oriented frontend for DeviantArt [Service] Directory= From 4db018fb7f01669cb5e4c1da4b56ccfe3dbadd6f Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Thu, 1 Aug 2024 22:54:59 +0300 Subject: [PATCH 03/25] instances.test.json -> instances.json --- app/cli.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/cli.go b/app/cli.go index 4d4f849..2247223 100644 --- a/app/cli.go +++ b/app/cli.go @@ -74,7 +74,7 @@ func addInstance() { var settingsVar struct { Instances []settings `json:"instances"` } - instancesJson, err := os.OpenFile("instances.test.json", os.O_CREATE|os.O_WRONLY, 0644) + instancesJson, err := os.OpenFile("instances.json", os.O_CREATE|os.O_WRONLY, 0644) try(err) defer instancesJson.Close() From 1537da9b16dfda1ecb2730b5d1de3b9005397618 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Tue, 13 Aug 2024 15:59:52 +0300 Subject: [PATCH 04/25] =?UTF-8?q?=D1=82=D0=B5=D0=BC=D0=BF=D0=BB=D0=B5?= =?UTF-8?q?=D0=B9=D1=82=D1=8B=20=D0=B2=20=D0=B1=D0=B8=D0=BD=D0=B0=D1=80?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=B5=20=D0=B8=20=D1=83=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=BD=D0=B0=D1=8F=20=D1=81=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D0=B5=D0=BC=D0=B0=20=D0=BA=D0=B5=D1=88=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 +- SETUP-RU.md | 2 +- SETUP.md | 2 +- TODO.md | 18 ++-- app/cache.go | 132 ++++++++++++++++++++++++ app/cli.go | 63 ++++++------ app/config.go | 16 +-- app/parsers.go | 8 +- app/router.go | 33 ++++-- app/stat-freebsd.go | 13 +++ app/stat.go | 13 +++ app/util.go | 136 ++++++------------------ app/wrapper.go | 40 +++++--- config.example.json | 6 +- html/daily.htm | 28 ----- html/search.htm | 30 ------ main.go | 3 +- {css => static/css}/skunky.css | 13 ++- {html => static/html}/about.htm | 19 +--- static/html/daily.htm | 13 +++ {html => static/html}/deviantion.htm | 20 +--- {html => static/html}/gruser.htm | 16 +-- static/html/head.htm | 24 +++++ static/html/header.htm | 14 +++ {html => static/html}/index.htm | 8 +- static/html/search.htm | 16 +++ {misc => static/images}/logo.png | Bin static/templates-noembed.go | 148 +++++++++++++++++++++++++++ static/templates.go | 16 +++ 29 files changed, 555 insertions(+), 303 deletions(-) create mode 100644 app/cache.go create mode 100644 app/stat-freebsd.go create mode 100644 app/stat.go delete mode 100644 html/daily.htm delete mode 100644 html/search.htm rename {css => static/css}/skunky.css (94%) rename {html => static/html}/about.htm (74%) create mode 100644 static/html/daily.htm rename {html => static/html}/deviantion.htm (72%) rename {html => static/html}/gruser.htm (87%) create mode 100644 static/html/head.htm create mode 100644 static/html/header.htm rename {html => static/html}/index.htm (61%) create mode 100644 static/html/search.htm rename {misc => static/images}/logo.png (100%) create mode 100644 static/templates-noembed.go create mode 100644 static/templates.go diff --git a/README.md b/README.md index 6eaa831..735cc17 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ -SkunkyArt +SkunkyArt [![Matrix room](https://img.shields.io/badge/matrix-000000?style=for-the-badge&logo=Matrix&logoColor=white)](https://go.kde.org/matrix/#/#skunkyart:ebloid.ru) -Instances: [`INSTANCES.md`](https://git.macaw.me/skunky/SkunkyArt/src/branch/master/INSTANCES.md) +Instances: [`INSTANCES.md`](/skunky/SkunkyArt/src/branch/master/INSTANCES.md) # EN 🇺🇸 ## Description SkunkyArt 🦨 — alternative frontend for DevianArt, which works without JS. ## Setup The sample config is in the `config.example.json` file. For custom config, use `--config` option. -See the [`SETUP.md`](https://git.macaw.me/skunky/SkunkyArt/src/branch/master/SETUP.md) file for more info about directives. +See the [`SETUP.md`](/skunky/SkunkyArt/src/branch/master/SETUP.md) file for more info about directives. ## Adding instance to the list To do this, you must either make a PR by adding your instance to the `instances.json` and `INSTANCES.md` files (you can use `--add-instance` cli-argument to automatically add the instance to these files), or create an Issue, or report it to the room in Matrix. Keep in mind that your instance must comply with the following rules: 1. the Instance must not use Cloudflare. @@ -23,7 +23,7 @@ To do this, you must either make a PR by adding your instance to the `instances. SkunkyArt 🦨 — альтернативный фронтенд к DeviantArt, который полностью работает без JS (JavaScript). ## Настройка Пример конфига находится в файле `config.example.json`. Чтобы указать свой конфиг, используйте cli-аргумент `--config`. -См. [`SETUP-RU.md`](https://git.macaw.me/skunky/SkunkyArt/src/branch/master/SETUP-RU.md) для информации о настройки фронтенда. +См. [`SETUP-RU.md`](/skunky/SkunkyArt/src/branch/master/SETUP-RU.md) для информации о настройки фронтенда. ## Добавление инстанса в список Чтобы это сделать, вы должны либо сделать PR, добавив в файлы `instances.json` и `INSTANCES.md` свой инстанс (можете воспользоваться cli-аргументом `--add-instance`, который автоматически это сделает), либо создать Issue, или сообщить о нём в комнате в Matrix. Учтите, что ваш инстанс должен соблюсти следущие правила: 1. Инстанс не должен использовать Cloudflare итп. diff --git a/SETUP-RU.md b/SETUP-RU.md index 6ff3c23..994f193 100644 --- a/SETUP-RU.md +++ b/SETUP-RU.md @@ -1,4 +1,4 @@ -[English version 🇬🇧](https://git.macaw.me/skunky/SkunkyArt/src/branch/master/SETUP.md) +[English version 🇬🇧](/skunky/SkunkyArt/src/branch/master/SETUP.md) # Единицы измерения Размер файла в кеше измеряется в мегабайтах.
diff --git a/SETUP.md b/SETUP.md index ab30165..169e7a0 100644 --- a/SETUP.md +++ b/SETUP.md @@ -1,4 +1,4 @@ -[Версия на русском языке 🇷🇺](https://git.macaw.me/skunky/SkunkyArt/src/branch/master/SETUP-RU.md) +[Версия на русском языке 🇷🇺](/skunky/SkunkyArt/src/branch/master/SETUP-RU.md) # Units Maximum file size in megabytes, requires numeric value.
diff --git a/TODO.md b/TODO.md index ee50111..84678b0 100644 --- a/TODO.md +++ b/TODO.md @@ -1,19 +1,21 @@ # v1.3.x * Почистить говнокод +* ~~Сделать порт под FreeBSD~~ ✔️ * **Доделать парсинг описания** -* Избавиться от хардкода под Linux -* ~~Реализовать стрипы в ежедневных артах~~ +* ~~Реализовать стрипы в ежедневных артах~~ ✔️ +* ~~Исправить баг с навигацией по страницам~~ ✔️ * Сделать нормальное отображение ошибок -* ~~Исправить баг с навигацией по страницам~~ -* ~~Сделать единицы в конфиге более понятными~~ -* Добавить возможность включить темплейты в бинарник -* ~~Реализовать миниатюры и оптимизировать CSS под маленькие экраны~~ +* ~~Сделать единицы в конфиге более понятными~~ ✔️ +* Добавить просмотр понравившихся артов пользователю +* Добавить возможность включить темплейты в бинарник [P] +* ~~Реализовать миниатюры и оптимизировать CSS под маленькие экраны~~ ✔️ * Написать Makefile и скрипт для автоматического развёртывания инстанса * **Реализовать отображение контента, отличного от картинок (видео, аудио, etc)** * Исправить баг с эмоджи, когда некоторые кастомные эмоции могут не отображаться -* Добавить флаг сборки, который позволит собрать бинарник со встроенными темплейтами -* Улучшить систему кеширования: добавить рейтинг для удаления и копирование изображений в ОЗУ +* ~~Добавить аргумент &filename, который будет выдавать файл с нормально выглядещем именем~~ ✔️ +* ~~Улучшить систему кеширования: добавить рейтинг для удаления и копирование изображений в ОЗУ~~ # v1.4 * Реализовать API * Реализовать темы +* Перейти на арены в кеше * Реализовать многоязычный интерфейс \ No newline at end of file diff --git a/app/cache.go b/app/cache.go new file mode 100644 index 0000000..dedba83 --- /dev/null +++ b/app/cache.go @@ -0,0 +1,132 @@ +// TODO: реализовать кеширование JSON и почистить код +package app + +import ( + "crypto/sha1" + "encoding/hex" + "io" + "os" + "strings" + "sync" + "syscall" + "time" +) + +type file struct { + Score int + Content []byte +} + +var tempFS = make(map[[20]byte]*file) +var mx = &sync.RWMutex{} + +func (s skunkyart) DownloadAndSendMedia(subdomain, path string) { + var url strings.Builder + url.WriteString("https://images-wixmp-") + url.WriteString(subdomain) + url.WriteString(".wixmp.com/") + url.WriteString(path) + url.WriteString("?token=") + url.WriteString(s.Args.Get("token")) + + var response []byte + + switch { + case CFG.Cache.Enabled: + fileName := sha1.Sum([]byte(subdomain + path)) + filePath := CFG.Cache.Path + "/" + hex.EncodeToString(fileName[:]) + + mx.Lock() + if tempFS[fileName] == nil { + tempFS[fileName] = &file{} + } + f := *tempFS[fileName] + mx.Unlock() + + if f.Content != nil { + f.Score += 2 + } else { + file, err := os.Open(filePath) + if err != nil { + if dwnld := Download(url.String()); dwnld.Status == 200 && dwnld.Headers["Content-Type"][0][:5] == "image" { + f.Content = dwnld.Body + try(os.WriteFile(filePath, f.Content, 0700)) + } else { + s.ReturnHTTPError(dwnld.Status) + return + } + } else { + file, e := io.ReadAll(file) + try(e) + f.Content = file + } + + go func() { + defer restore() + for { + time.Sleep(1 * time.Minute) + + mx.Lock() + if tempFS[fileName].Score <= 0 { + delete(tempFS, fileName) + mx.Unlock() + return + } + tempFS[fileName].Score-- + mx.Unlock() + } + }() + } + + mx.Lock() + tempFS[fileName] = &f + mx.Unlock() + response = f.Content + case CFG.Proxy: + dwnld := Download(url.String()) + if dwnld.Status != 200 { + s.ReturnHTTPError(dwnld.Status) + return + } + response = dwnld.Body + default: + s.Writer.WriteHeader(403) + response = []byte("Sorry, butt proxy on this instance are disabled.") + } + + s.Writer.Write(response) +} + +func InitCacheSystem() { + c := &CFG.Cache + os.Mkdir(c.Path, 0700) + for { + dir, e := os.Open(c.Path) + try(e) + stat, e := dir.Stat() + try(e) + + dirnames, e := dir.Readdirnames(-1) + try(e) + for _, a := range dirnames { + a = c.Path + "/" + a + if c.Lifetime != "" { + now := time.Now().UnixMilli() + + f, _ := os.Stat(a) + stat := f.Sys().(*syscall.Stat_t) + time := statTime(stat) + + if time+lifetimeParsed <= now { + try(os.RemoveAll(a)) + } + } + if c.MaxSize != 0 && stat.Size() > c.MaxSize { + try(os.RemoveAll(a)) + } + } + + dir.Close() + time.Sleep(time.Second * time.Duration(c.UpdateInterval)) + } +} diff --git a/app/cli.go b/app/cli.go index 2247223..261e103 100644 --- a/app/cli.go +++ b/app/cli.go @@ -78,16 +78,16 @@ func addInstance() { try(err) defer instancesJson.Close() - instances, err := os.OpenFile("INSTANCES.md", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + instancesFile, err := os.OpenFile("INSTANCES.md", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) try(err) - defer instances.Close() + defer instancesFile.Close() for { - if Templates["instances.json"] == "" { + if string(instances) == "" { print("\rDownloading instance list...") } else { println("\r\033[2KDownloaded!") - try(json.Unmarshal([]byte(Templates["instances.json"]), &settingsVar)) + try(json.Unmarshal(instances, &settingsVar)) settingsVar.Instances = append(settingsVar.Instances, settings{ Title: prompt("Title", true), @@ -113,51 +113,46 @@ func addInstance() { settingsVar := &settingsVar.Instances[len(settingsVar.Instances)-1] var mdstr bytes.Buffer - mdstr.WriteString("\n|") - if settingsVar.Urls.Clearnet != "" { - mdstr.WriteString("[") - mdstr.WriteString(settingsVar.Title) - mdstr.WriteString("](") - mdstr.WriteString(settingsVar.Urls.Clearnet) - mdstr.WriteString(")") - } else { - mdstr.WriteString(settingsVar.Title) + mdbuilder := func(yes bool, link string, title string) { + switch { + case yes && (title != "" && link != ""): + mdstr.WriteString("[") + mdstr.WriteString(title) + mdstr.WriteString("](") + mdstr.WriteString(link) + mdstr.WriteString(")") + case yes && link != "": + mdstr.WriteString("[Yes](") + mdstr.WriteString(link) + mdstr.WriteString(")") + case yes: + mdstr.WriteString("Yes") + default: + mdstr.WriteString("No") + } + mdstr.WriteString("|") } - mdstr.WriteString("|") + + mdstr.WriteString("\n|") + mdbuilder(settingsVar.Urls.Clearnet != "", settingsVar.Urls.Clearnet, settingsVar.Title) urls := []string{settingsVar.Urls.Ygg, settingsVar.Urls.I2P, settingsVar.Urls.Tor} for i, l := 0, len(urls); i < l; i++ { url := urls[i] - if url != "" { - mdstr.WriteString("[Yes](") - mdstr.WriteString(url) - mdstr.WriteString(")|") - } else { - mdstr.WriteString("No|") - } + mdbuilder(url != "", url, "") } settings := []bool{settingsVar.Settings.Nsfw, settingsVar.Settings.Proxy} for i, l := 0, len(settings); i < l; i++ { - if settings[i] { - mdstr.WriteString("Yes|") - } else { - mdstr.WriteString("No|") - } + mdbuilder(settings[i], "", "") } - if settingsVar.ModifiedSrc != "" { - mdstr.WriteString("[Yes](") - mdstr.WriteString(settingsVar.ModifiedSrc) - mdstr.WriteString(")|") - } else { - mdstr.WriteString("No|") - } + mdbuilder(settingsVar.ModifiedSrc != "", settingsVar.ModifiedSrc, "") mdstr.WriteString(settingsVar.Country) mdstr.WriteString("|") - instances.Write(mdstr.Bytes()) + instancesFile.Write(mdstr.Bytes()) break } time.Sleep(500 * time.Millisecond) diff --git a/app/config.go b/app/config.go index a6ac756..7d159e7 100644 --- a/app/config.go +++ b/app/config.go @@ -4,6 +4,7 @@ import ( "encoding/json" "os" "regexp" + "skunkyart/static" "strconv" "time" @@ -24,9 +25,9 @@ type config struct { URI string `json:"uri"` Cache cache_config Proxy, Nsfw bool - UserAgent string `json:"user-agent"` - DownloadProxy string `json:"download-proxy"` - Dirs []string `json:"dirs-to-memory"` + UserAgent string `json:"user-agent"` + DownloadProxy string `json:"download-proxy"` + StaticPath string `json:"static-path"` } var CFG = config{ @@ -38,10 +39,10 @@ var CFG = config{ Path: "cache", UpdateInterval: 1, }, - Dirs: []string{"html", "css", "misc"}, - UserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36", - Proxy: true, - Nsfw: true, + StaticPath: "static", + UserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36", + Proxy: true, + Nsfw: true, } var lifetimeParsed int64 @@ -56,6 +57,7 @@ func ExecuteConfig() { exit("Incompatible settings detected: cannot use caching media content without proxy", 1) } + static.StaticPath = CFG.StaticPath if CFG.Cache.Enabled { if CFG.Cache.Lifetime != "" { var duration int64 diff --git a/app/parsers.go b/app/parsers.go index b39e172..f93c18d 100644 --- a/app/parsers.go +++ b/app/parsers.go @@ -41,7 +41,9 @@ func (s skunkyart) ParseComments(c devianter.Comments) string { cmmts.WriteString(" ") if x.Parent > 0 { - cmmts.WriteString(` In reply to `) if replied[x.Parent] == "" { @@ -80,7 +82,7 @@ func (s skunkyart) DeviationList(devs []devianter.Deviation, allowAtom bool, con for i, l := 0, len(devs); i < l; i++ { data := &devs[i] - if preview, fullview := ParseMedia(data.Media, 320), ParseMedia(data.Media); !(data.NSFW && !CFG.Nsfw) { + if preview, fullview := ParseMedia(data.Media, data.Title, 320), ParseMedia(data.Media, data.Title); !(data.NSFW && !CFG.Nsfw) { if allowAtom && s.Atom { id := strconv.Itoa(data.ID) listContent.WriteString(``) @@ -284,7 +286,7 @@ func ParseDescription(dscr devianter.Text) string { parsedDescription.WriteString(` c.MaxSize { - try(os.RemoveAll(a)) - } - } - - dir.Close() - time.Sleep(time.Second * time.Duration(CFG.Cache.UpdateInterval)) - } -} - -func CopyTemplatesToMemory() { - for _, dirname := range CFG.Dirs { - dir, e := os.ReadDir(dirname) - tryWithExitStatus(e, 1) - - for _, x := range dir { - file, e := os.ReadFile(dirname + "/" + x.Name()) - tryWithExitStatus(e, 1) - Templates[x.Name()] = string(file) - } - } -} - /* PARSING HELPERS */ -func ParseMedia(media devianter.Media, thumb ...int) string { - url := devianter.UrlFromMedia(media, thumb...) - if len(url) != 0 && CFG.Proxy { - url = url[21:] - dot := strings.Index(url, ".") +func ParseMedia(media devianter.Media, filename string, thumb ...int) string { + mediaUrl := devianter.UrlFromMedia(media, thumb...) + if len(mediaUrl) != 0 && CFG.Proxy { + mediaUrl = mediaUrl[21:] + dot := strings.Index(mediaUrl, ".") - return UrlBuilder("media", "file", url[:dot], url[dot+11:]) + return UrlBuilder("media", "file", mediaUrl[:dot], mediaUrl[dot+11:], "&filename=", url.QueryEscape(filename)) } - return url + return mediaUrl } func ConvertDeviantArtUrlToSkunkyArt(url string) (output string) { @@ -255,7 +181,9 @@ func (s skunkyart) NavBase(c DeviationList) string { list.WriteString("
") prevrev := func(msg string, page int, onpage bool) { if !onpage { - list.WriteString(`
`) @@ -180,7 +180,7 @@ func (s skunkyart) GRUser() { } folders.WriteString("
") - folders.WriteString(` - - - SkunkyArt | Daily Deviations - - - -
-
-

HOME | DD | RSS

-
- - - -
-
- {{if ne .Templates.DDStrips ""}} -

# Strips

- {{.Templates.DDStrips}} - {{end}} -

# Content

- {{.Templates.SomeList}} -
- \ No newline at end of file diff --git a/html/search.htm b/html/search.htm deleted file mode 100644 index df1cf85..0000000 --- a/html/search.htm +++ /dev/null @@ -1,30 +0,0 @@ - - - - SkunkyArt | Search "{{.QueryRaw}}" - - - -
-
-

HOME | DD

-
- - - -
-
- {{if ne .Templates.Search.List ""}} - {{if ne .Templates.Search.Content.Total 0}} -

Results by request '{{.QueryRaw}}': {{.Templates.Search.Content.Total}}

- {{end}} - {{.Templates.Search.List}} - {{else}} -

No results :(

- {{end}} -
- \ No newline at end of file diff --git a/main.go b/main.go index 0224816..190d79b 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "skunkyart/app" + "skunkyart/static" "time" "git.macaw.me/skunky/devianter" @@ -12,7 +13,7 @@ func main() { app.ExecuteCommandLineArguments() app.ExecuteConfig() - app.CopyTemplatesToMemory() + static.CopyTemplatesToMemory() go func() { for { diff --git a/css/skunky.css b/static/css/skunky.css similarity index 94% rename from css/skunky.css rename to static/css/skunky.css index 2126968..bdc894c 100644 --- a/css/skunky.css +++ b/static/css/skunky.css @@ -22,12 +22,19 @@ header form { header { display: flex; } +form { + font-size: 0; + border: solid #164e3e 1px; + max-width: fit-content; +} form input, button, select { background-color: #134134; padding: 5px; color: whitesmoke; - border: 0px; - border-radius: 1px; + border: 0; +} +input:focus { + outline: none; } /* BLOCKS */ @@ -146,6 +153,8 @@ form input, button, select { header form { font-size: 60%; + max-width: unset; + border: 0; } header, center { text-align: center; diff --git a/html/about.htm b/static/html/about.htm similarity index 74% rename from html/about.htm rename to static/html/about.htm index edb576d..d2278d6 100644 --- a/html/about.htm +++ b/static/html/about.htm @@ -1,23 +1,8 @@ - - SkunkyArt - - - + {{template "head" .}}
-
-

HOME | DD

-
- - - -
-
+ {{template "header" .}}

SkunkyArt is an alternative frontend for deviantart.com, written in Go.

diff --git a/static/html/daily.htm b/static/html/daily.htm new file mode 100644 index 0000000..b3b6044 --- /dev/null +++ b/static/html/daily.htm @@ -0,0 +1,13 @@ + + + {{template "head" . }} +
+ {{template "header" . }} + {{if ne .Templates.DDStrips ""}} +

# Strips

+ {{.Templates.DDStrips}} + {{end}} +

# Content

+ {{.Templates.SomeList}} +
+ \ No newline at end of file diff --git a/html/deviantion.htm b/static/html/deviantion.htm similarity index 72% rename from html/deviantion.htm rename to static/html/deviantion.htm index 50710b6..f357dd7 100644 --- a/html/deviantion.htm +++ b/static/html/deviantion.htm @@ -1,24 +1,8 @@ - - SkunkyArt | {{.Templates.Deviation.Post.Deviation.Author.Username}} - {{.Templates.Deviation.Post.Deviation.Title}} - - - - + {{template "head" . }}
-
-

HOME | DD

-
- - - -
-
+ {{template "header" . }}
{{.Templates.Deviation.Post.Deviation.Author.Username}} — {{if (.Templates.Deviation.Post.Deviation.DD)}} diff --git a/html/gruser.htm b/static/html/gruser.htm similarity index 87% rename from html/gruser.htm rename to static/html/gruser.htm index a219e36..c8227ef 100644 --- a/html/gruser.htm +++ b/static/html/gruser.htm @@ -1,21 +1,11 @@ - - SkunkyArt | - {{if eq .Type 'a'}} - {{.Templates.GroupUser.GR.Owner.Username}} - {{else}} - gallery of {{.Templates.GroupUser.GR.Owner.Username}} - {{end}} - - - - + {{template "head" . }}

HOME | DD - | Gallery{{else}}about">About{{end}} - | RSS

+ | Gallery{{else}}about">About{{end}} + | RSS
diff --git a/static/html/head.htm b/static/html/head.htm new file mode 100644 index 0000000..f7f6b91 --- /dev/null +++ b/static/html/head.htm @@ -0,0 +1,24 @@ +{{define "head"}} + + SkunkyArt | + {{if eq .Endpoint "search"}} + "{{.QueryRaw}}" + {{else if eq .Endpoint "post"}} + {{.Templates.Deviation.Post.Deviation.Author.Username}} — {{.Templates.Deviation.Post.Deviation.Title}} + {{else if eq .Type 'a'}} + {{if .Templates.GroupUser.GR.Owner.Username}} + {{.Templates.GroupUser.GR.Owner.Username}} + {{else}} + gallery of {{.Templates.GroupUser.GR.Owner.Username}} + {{end}} + {{else}} + {{.Endpoint}} + {{end}} + + + + + + + +{{end}} \ No newline at end of file diff --git a/static/html/header.htm b/static/html/header.htm new file mode 100644 index 0000000..f8537a3 --- /dev/null +++ b/static/html/header.htm @@ -0,0 +1,14 @@ +{{define "header"}} +
+

HOME | DD {{if eq .Endpoint "dd"}}| RSS{{end}}

+ + + + + +
+{{end}} \ No newline at end of file diff --git a/html/index.htm b/static/html/index.htm similarity index 61% rename from html/index.htm rename to static/html/index.htm index 08feba5..78f1d8a 100644 --- a/html/index.htm +++ b/static/html/index.htm @@ -2,12 +2,12 @@ SkunkyArt - - + +
-
+
-

Daily Deviations | About | Source Code

+

Daily Deviations | About | Source Code

\ No newline at end of file diff --git a/static/html/search.htm b/static/html/search.htm new file mode 100644 index 0000000..74bbd38 --- /dev/null +++ b/static/html/search.htm @@ -0,0 +1,16 @@ + + + {{template "head" . }} +
+ {{template "header" . }} + + {{if ne .Templates.Search.List ""}} + {{if ne .Templates.Search.Content.Total 0}} +

Results by request '{{.QueryRaw}}': {{.Templates.Search.Content.Total}}

+ {{end}} + {{.Templates.Search.List}} + {{else}} +

No results :(

+ {{end}} +
+ \ No newline at end of file diff --git a/misc/logo.png b/static/images/logo.png similarity index 100% rename from misc/logo.png rename to static/images/logo.png diff --git a/static/templates-noembed.go b/static/templates-noembed.go new file mode 100644 index 0000000..7a3c541 --- /dev/null +++ b/static/templates-noembed.go @@ -0,0 +1,148 @@ +//go:build !embed +// +build !embed + +package static + +import ( + "bytes" + "io/fs" + "os" + "strings" + "time" +) + +var Templates FS + +type file struct { + path string + name string + content []byte +} + +var templateNames = []string{} +var templates = make(map[string][]file) +var StaticPath string + +func CopyTemplatesToMemory() { + baseDir, err := os.ReadDir(StaticPath) + try(err) + + for _, c := range baseDir { + if c.IsDir() { + templateNames = append(templateNames, c.Name()) + + var filePath strings.Builder + filePath.WriteString(StaticPath) + filePath.WriteString("/") + filePath.WriteString(c.Name()) + + dir, err := os.ReadDir(filePath.String()) + try(err) + + filePath.WriteString("/") + for _, cd := range dir { + f, err := os.ReadFile(filePath.String() + cd.Name()) + try(err) + templates[c.Name()] = append(templates[c.Name()], file{ + content: f, + name: cd.Name(), + path: c.Name() + "/" + cd.Name(), + }) + } + } + } +} + +type FS struct{} + +func (FS) Open(name string) (fs.File, error) { + for i, l := 0, len(templateNames); i < l; i++ { + for _, x := range templates[templateNames[i]] { + if x.content != nil && name == x.path { + return &File{ + name: x.path, + content: bytes.NewBuffer(x.content), + }, nil + } + } + } + return nil, &fs.PathError{} +} + +func (FS) Glob(pattern string) ([]string, error) { + trimmed := strings.Split(pattern, "/") + var matches = []string{} + for x, s := range templates { + for i, l := 0, len(s); i < l && trimmed[0] == x; i++ { + s := s[i] + matches = append(matches, s.path) + } + } + if len(matches) != 0 { + return matches, nil + } + return nil, &fs.PathError{} +} + +func try(err error) { + if err != nil { + println(err.Error()) + os.Exit(1) + } +} + +/* сделано на основе https://github.com/psanford/memfs; требуется для корректной работы templates.ParseFS */ +type fileInfo struct { + name string +} + +func (fi fileInfo) Name() string { + return fi.name +} + +func (fi fileInfo) Size() int64 { + return 4096 +} + +func (fileInfo) Mode() fs.FileMode { + return 0 +} + +func (fileInfo) ModTime() time.Time { + return time.Time{} +} + +func (fileInfo) IsDir() bool { + return false +} + +func (fileInfo) Sys() interface{} { + return nil +} + +type File struct { + name string + content *bytes.Buffer + closed bool +} + +func (f *File) Stat() (fs.FileInfo, error) { + return fileInfo{ + name: f.name, + }, nil +} + +func (f *File) Read(b []byte) (int, error) { + if f.closed { + return 0, fs.ErrClosed + } + return f.content.Read(b) +} + +func (f *File) Close() error { + if f.closed { + return fs.ErrClosed + } + f.closed = true + return nil +} diff --git a/static/templates.go b/static/templates.go new file mode 100644 index 0000000..28a057a --- /dev/null +++ b/static/templates.go @@ -0,0 +1,16 @@ +//go:build embed +// +build embed + +package static + +import "embed" + +//go:embed * +var Templates embed.FS +var Enabled bool = true + +var StaticPath string + +func CopyTemplatesToMemory() { + _ = StaticPath +} From 9d2361ef6e7784accef0c445402a13bf2dd14fcf Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Tue, 13 Aug 2024 16:01:38 +0300 Subject: [PATCH 05/25] =?UTF-8?q?=D0=BD=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D1=88=D0=BE=D0=B9=20=D0=BE=D0=B1=D0=BE=D1=81=D1=80=D0=B0=D0=BC?= =?UTF-8?q?=D1=81=20=D1=81=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D1=8B=D0=BC=D0=B8=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B0=D0=BC?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 735cc17..7081701 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -SkunkyArt +SkunkyArt [![Matrix room](https://img.shields.io/badge/matrix-000000?style=for-the-badge&logo=Matrix&logoColor=white)](https://go.kde.org/matrix/#/#skunkyart:ebloid.ru) From d9a6cf4d62bc807709736b2311e7354bbf4ad11e Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Tue, 13 Aug 2024 16:03:00 +0300 Subject: [PATCH 06/25] =?UTF-8?q?=D0=B4=D0=B0=20=D0=B1=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7081701..3af7e64 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -SkunkyArt +SkunkyArt [![Matrix room](https://img.shields.io/badge/matrix-000000?style=for-the-badge&logo=Matrix&logoColor=white)](https://go.kde.org/matrix/#/#skunkyart:ebloid.ru) From 513543cc7a24330e3d9ce96d3b55e4726397af50 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Tue, 13 Aug 2024 16:04:24 +0300 Subject: [PATCH 07/25] =?UTF-8?q?[=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B0=D1=82=D0=B8=D0=B2=D0=BD=D0=B0=D1=8F=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D1=8C=20=D0=BA=20=D0=BA=D0=BE=D0=BC=D0=BC?= =?UTF-8?q?=D0=B8=D1=82=D1=83]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3af7e64..cfc302f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -SkunkyArt +SkunkyArt [![Matrix room](https://img.shields.io/badge/matrix-000000?style=for-the-badge&logo=Matrix&logoColor=white)](https://go.kde.org/matrix/#/#skunkyart:ebloid.ru) From 2f8c35ba322e3c8c6e0bff8f7818d4eedf002928 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Wed, 14 Aug 2024 19:18:06 +0300 Subject: [PATCH 08/25] user favourites --- INSTANCES.md | 2 +- TODO.md | 2 +- app/cache.go | 32 +++++----- app/util.go | 59 +++++++++++++++++ app/wrapper.go | 142 ++++++++++++++--------------------------- go.mod | 1 + instances.json | 2 +- static/html/gruser.htm | 17 ++++- static/html/head.htm | 11 ++-- 9 files changed, 147 insertions(+), 121 deletions(-) diff --git a/INSTANCES.md b/INSTANCES.md index 1637971..d032d24 100644 --- a/INSTANCES.md +++ b/INSTANCES.md @@ -2,6 +2,6 @@ |:------:|:-------:|:-:|:-:|:--:|:--------:|:--------------:|:-----:| |[skunky.ebloid.ru](https://skunky.ebloid.ru/art)|[Yes](http://[201:eba5:d1fc:bf7b:cfcb:a811:4b8b:7ea3]/art)|No|No| No | No | No | Russia | |[clovius.club](https://skunky.clovius.club)|No|No|No| Yes | Yes | No | Sweden | -|[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | No | Romania | +|[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | No | Germany | |[frontendfriendly.xyz](https://skunkyart.frontendfriendly.xyz)|No|No|No| Yes | Yes | No | Finland | |[lumaeris.com](https://skunkyart.lumaeris.com)|No|No|No| Yes | Yes | No | US | \ No newline at end of file diff --git a/TODO.md b/TODO.md index 84678b0..5a0da71 100644 --- a/TODO.md +++ b/TODO.md @@ -6,7 +6,7 @@ * ~~Исправить баг с навигацией по страницам~~ ✔️ * Сделать нормальное отображение ошибок * ~~Сделать единицы в конфиге более понятными~~ ✔️ -* Добавить просмотр понравившихся артов пользователю +* ~~Добавить просмотр понравившихся артов пользователю~~ ✔️ * Добавить возможность включить темплейты в бинарник [P] * ~~Реализовать миниатюры и оптимизировать CSS под маленькие экраны~~ ✔️ * Написать Makefile и скрипт для автоматического развёртывания инстанса diff --git a/app/cache.go b/app/cache.go index dedba83..6506cfc 100644 --- a/app/cache.go +++ b/app/cache.go @@ -99,34 +99,36 @@ func (s skunkyart) DownloadAndSendMedia(subdomain, path string) { func InitCacheSystem() { c := &CFG.Cache - os.Mkdir(c.Path, 0700) for { - dir, e := os.Open(c.Path) - try(e) - stat, e := dir.Stat() - try(e) + dir, err := os.ReadDir(c.Path) + if err != nil { + if os.IsNotExist(err) { + os.Mkdir(c.Path, 0700) + continue + } + println(err.Error()) + } + + for _, file := range dir { + fileName := c.Path + "/" + file.Name() + fileInfo, err := file.Info() + try(err) - dirnames, e := dir.Readdirnames(-1) - try(e) - for _, a := range dirnames { - a = c.Path + "/" + a if c.Lifetime != "" { now := time.Now().UnixMilli() - f, _ := os.Stat(a) - stat := f.Sys().(*syscall.Stat_t) + stat := fileInfo.Sys().(*syscall.Stat_t) time := statTime(stat) if time+lifetimeParsed <= now { - try(os.RemoveAll(a)) + try(os.RemoveAll(fileName)) } } - if c.MaxSize != 0 && stat.Size() > c.MaxSize { - try(os.RemoveAll(a)) + if c.MaxSize != 0 && fileInfo.Size() > c.MaxSize { + try(os.RemoveAll(fileName)) } } - dir.Close() time.Sleep(time.Second * time.Duration(c.UpdateInterval)) } } diff --git a/app/util.go b/app/util.go index a5b978d..8e8ef6e 100644 --- a/app/util.go +++ b/app/util.go @@ -16,6 +16,8 @@ import ( ) /* INTERNAL */ +var wr = io.WriteString + func exit(msg string, code int) { println(msg) os.Exit(code) @@ -50,6 +52,63 @@ func RefreshInstances() { } // some crap for frontend +type skunkyart struct { + Writer http.ResponseWriter + + Args url.Values + Page int + Type rune + Atom bool + + BasePath, Endpoint string + Query, QueryRaw string + + Templates struct { + About struct { + Proxy bool + Nsfw bool + Instances []settings + } + + SomeList string + DDStrips string + Deviation struct { + Post devianter.Post + Related string + StringTime string + Tags string + Comments string + } + + GroupUser struct { + GR devianter.GRuser + Admins string + Group bool + CreationDate string + + About struct { + A devianter.About + + DescriptionFormatted string + Interests, Social string + Comments string + BG string + BGMeta devianter.Deviation + } + + Gallery struct { + Folders string + Pages int + List string + } + } + Search struct { + Content devianter.Search + List string + } + } +} + func (s skunkyart) ExecuteTemplate(file, dir string, data any) { var buf strings.Builder tmp := template.New(file) diff --git a/app/wrapper.go b/app/wrapper.go index 5e8b6c1..e0e5054 100644 --- a/app/wrapper.go +++ b/app/wrapper.go @@ -2,9 +2,6 @@ package app import ( "encoding/json" - "io" - "net/http" - "net/url" "regexp" "strconv" "strings" @@ -14,65 +11,6 @@ import ( "golang.org/x/net/html" ) -var wr = io.WriteString - -type skunkyart struct { - Writer http.ResponseWriter - - Args url.Values - Page int - Type rune - Atom bool - - BasePath, Endpoint string - Query, QueryRaw string - - Templates struct { - About struct { - Proxy bool - Nsfw bool - Instances []settings - } - - SomeList string - DDStrips string - Deviation struct { - Post devianter.Post - Related string - StringTime string - Tags string - Comments string - } - - GroupUser struct { - GR devianter.GRuser - Admins string - Group bool - CreationDate string - - About struct { - A devianter.About - - DescriptionFormatted string - Interests, Social string - Comments string - BG string - BGMeta devianter.Deviation - } - - Gallery struct { - Folders string - Pages int - List string - } - } - Search struct { - Content devianter.Search - List string - } - } -} - func (s skunkyart) GRUser() { if len(s.Query) < 1 { s.ReturnHTTPError(400) @@ -82,7 +20,7 @@ func (s skunkyart) GRUser() { var g devianter.Group g.Name = s.Query var err error - s.Templates.GroupUser.GR, err = g.GetGroup() + s.Templates.GroupUser.GR, err = g.Get() try(err) group := &s.Templates.GroupUser @@ -146,51 +84,65 @@ func (s skunkyart) GRUser() { } } - case 'g': + case 'g', 'f': + var all bool + var content devianter.Group + folderid, _ := strconv.Atoi(s.Args.Get("folder")) + + if a := s.Args.Get("all"); a == "true" { + all = true + } + if s.Page == 0 { s.Page++ } - gallery, err := g.GetGallery(s.Page, folderid) - try(err) + if s.Type == 'f' { + content = g.Favourites(s.Page, all, folderid) + } else { + content, err = g.Gallery(s.Page, folderid) + try(err) + } - if folderid > 0 { - group.Gallery.List = s.DeviationList(gallery.Content.Results, true, DeviationList{ - More: gallery.Content.HasMore, + if folderid > 0 || (s.Type == 'f' && all) { + group.Gallery.List = s.DeviationList(content.Content.Results, true, DeviationList{ + More: content.Content.HasMore, }) } else { - for _, x := range gallery.Content.Gruser.Page.Modules { + for _, x := range content.Content.Gruser.Page.Modules { if l := len(x.ModuleData.Folders.Results); l != 0 { var folders strings.Builder folders.WriteString(`

# Folders


`) for _, x := range x.ModuleData.Folders.Results { - folders.WriteString(`
`) + if x.FolderId != -1 && x.Size != 0 { + folders.WriteString(`
`) - if !(x.Thumb.NSFW && !CFG.Nsfw) { - folders.WriteString(``) - } else { - folders.WriteString(`

[ NSFW ]

`) + if !(x.Thumb.NSFW && !CFG.Nsfw) { + folders.WriteString(``) + } else { + folders.WriteString(`

[ NSFW ]

`) + } + folders.WriteString("
") + + folders.WriteString(``) + folders.WriteString(x.Name) + folders.WriteString(``) + + folders.WriteString("
") } - folders.WriteString("
") - - folders.WriteString(``) - folders.WriteString(x.Name) - folders.WriteString(``) - - folders.WriteString("
") } folders.WriteString(`

# Content

`) group.Gallery.Folders = folders.String() @@ -296,7 +248,7 @@ func (s skunkyart) Search() { switch s.Type { case 'a', 't': ss.Content, err = devianter.PerformSearch(s.Query, s.Page, s.Type) - case 'g': + case 'g', 'f': ss.Content, err = devianter.PerformSearch(s.Query, s.Page, s.Type, s.Args.Get("usr")) case 'r': // скраппер, поскольку девиантартовцы зажопили гостевое API для поиска групп var ( diff --git a/go.mod b/go.mod index 8016fa3..2b4844e 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,7 @@ module skunkyart go 1.22.3 +replace git.macaw.me/skunky/devianter v0.2.5 => /home/skunk/projects/devianter require ( git.macaw.me/skunky/devianter v0.2.5 golang.org/x/net v0.27.0 diff --git a/instances.json b/instances.json index cd95b78..74049be 100644 --- a/instances.json +++ b/instances.json @@ -25,7 +25,7 @@ }, { "title": "bloat.cat", - "country": "Romania", + "country": "Germany", "urls": { "clearnet": "https://skunky.bloat.cat" }, diff --git a/static/html/gruser.htm b/static/html/gruser.htm index c8227ef..6593951 100644 --- a/static/html/gruser.htm +++ b/static/html/gruser.htm @@ -3,14 +3,25 @@ {{template "head" . }}
-

HOME | DD - | Gallery{{else}}about">About{{end}} - | RSS

+

+ HOME + | DD + {{if ne .Type 'f'}} + | Gallery{{else}}about">About{{end}} + | Favourites + {{else}} + | About + | Gallery + | Favourites + {{end}} + | RSS +

-

Daily Deviations | About | Source Code

+

Daily Deviations | About | Source Code

\ No newline at end of file From db53a8bd9004098e6a1507e5826a833fd9efa954 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Tue, 3 Sep 2024 15:36:19 +0300 Subject: [PATCH 10/25] =?UTF-8?q?=D0=94=D0=B2=D0=B0=20API-=D1=8D=D0=BD?= =?UTF-8?q?=D0=B4=D0=BF=D0=BE=D0=B8=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TODO.md | 5 +++- app/api.go | 61 +++++++++++++++++++++++++++++++++++-------- app/cli.go | 11 +++++--- app/config.go | 5 ++++ app/router.go | 58 ++++++++++++++++++++-------------------- app/util.go | 14 +++++++++- app/wrapper.go | 1 - go.mod | 2 +- main.go | 2 ++ static/html/about.htm | 4 +-- 10 files changed, 115 insertions(+), 48 deletions(-) diff --git a/TODO.md b/TODO.md index 0853df6..fbca5d8 100644 --- a/TODO.md +++ b/TODO.md @@ -1,11 +1,13 @@ # v1.3.x * Почистить говнокод +* Добавить фильтры поиска * ~~Сделать порт под FreeBSD~~ ✔️ * **Доделать парсинг описания** * ~~Реализовать стрипы в ежедневных артах~~ ✔️ * ~~Исправить баг с навигацией по страницам~~ ✔️ * Сделать нормальное отображение ошибок * ~~Сделать единицы в конфиге более понятными~~ ✔️ +* Добавить чекер инстанса на работоспособность * ~~Добавить просмотр понравившихся артов пользователю~~ ✔️ * Добавить возможность включить темплейты в бинарник [P] * ~~Реализовать миниатюры и оптимизировать CSS под маленькие экраны~~ ✔️ @@ -13,9 +15,10 @@ * **Реализовать отображение контента, отличного от картинок (видео, аудио, etc)** * Исправить баг с эмоджи, когда некоторые кастомные эмоции могут не отображаться * ~~Добавить аргумент &filename, который будет выдавать файл с нормально выглядещем именем~~ ✔️ -* ~~Улучшить систему кеширования: добавить рейтинг для удаления и копирование изображений в ОЗУ~~ BUG: почему-то всё переодически встаёт раком +* ~~Улучшить систему кеширования: добавить рейтинг для удаления и копирование изображений в ОЗУ~~ ✔️ # v1.4 * Реализовать API * Реализовать темы * Перейти на арены в кеше * Реализовать многоязычный интерфейс + diff --git a/app/api.go b/app/api.go index ddc67c1..3d0871c 100644 --- a/app/api.go +++ b/app/api.go @@ -1,6 +1,7 @@ package app import ( + "encoding/json" "math/rand" "strings" @@ -8,27 +9,65 @@ import ( ) type API struct { - skunkyartLink *skunkyart + main *skunkyart +} + +type info struct { + Version string `json:"version"` + Settings settingsParams `json:"settings"` +} + +func (a API) Info() { + json, err := json.Marshal(info{ + Version: a.main.Version, + Settings: settingsParams{ + Nsfw: CFG.Nsfw, + Proxy: CFG.Proxy, + }, + }) + try(err) + a.main.Writer.Write(json) + return +} + +func (a API) Error(description string, status int) { + a.main.Writer.WriteHeader(status) + var response strings.Builder + response.WriteString(`{"error":"`) + response.WriteString(description) + response.WriteString(`"}`) + wr(a.main.Writer, response.String()) } func (a API) sendMedia(d *devianter.Deviation) { mediaUrl, name := devianter.UrlFromMedia(d.Media) - - var filename strings.Builder - filename.WriteString(`filename="`) - filename.WriteString(name) - filename.WriteString(`"`) - a.skunkyartLink.Writer.Header().Add("Content-Disposition", filename.String()) + a.main.SetFilename(name) if len(mediaUrl) != 0 { mediaUrl = mediaUrl[21:] dot := strings.Index(mediaUrl, ".") - a.skunkyartLink.DownloadAndSendMedia(mediaUrl[:dot], mediaUrl[dot+11:]) + a.main.Writer.Header().Del("Content-Type") + a.main.DownloadAndSendMedia(mediaUrl[:dot], mediaUrl[dot+11:]) } } +// TODO: сделать фильтры func (a API) Random() { - s, err := devianter.PerformSearch(string(rand.Intn(999)), rand.Intn(30), 'a') - try(err) - a.sendMedia(&s.Results[rand.Intn(len(s.Results))]) + for attempt := 1;; { + if attempt > 3 { + a.Error("Sorry, butt NSFW on this are disabled, and the instance failed to find a random art without NSFW", 500) + } + + s, err := devianter.PerformSearch(string(rand.Intn(999)), rand.Intn(30), 'a') + try(err) + deviation := &s.Results[rand.Intn(len(s.Results))] + + if deviation.NSFW && !CFG.Nsfw { + attempt++ + continue + } + + a.sendMedia(deviation) + return + } } diff --git a/app/cli.go b/app/cli.go index 261e103..0480bdb 100644 --- a/app/cli.go +++ b/app/cli.go @@ -4,19 +4,20 @@ import ( "bufio" "bytes" "encoding/json" + "html/template" "os" "time" ) func ExecuteCommandLineArguments() { - const helpmsg = `SkunkyArt v1.3.1 [CSS improvements for mobile and the strips on Daily Deviations] + var helpmsg = `SkunkyArt v{{.Version}} [{{.Description}}] Usage: - [-c|--config] | path to config - [-a|--add-instance] | generates 'instances.json' and 'INSTANCES.md' files with ur instance - [-h|--help] | returns this message Example: ./skunkyart -c config.json -Copyright lost+skunk, X11. https://git.macaw.me/skunky/skunkyart/src/tag/v1.3.1` +Copyright lost+skunk, X11. https://git.macaw.me/skunky/skunkyart/src/tag/v{{.Version}}` a := os.Args[1:] for n, x := range a { @@ -28,7 +29,11 @@ Copyright lost+skunk, X11. https://git.macaw.me/skunky/skunkyart/src/tag/v1.3.1` exit("Not enought arguments", 1) } case "-h", "--help": - exit(helpmsg, 0) + var buf bytes.Buffer + t := template.New("help") + t.Parse(helpmsg) + t.Execute(&buf, &Release) + exit(buf.String(), 0) case "-a", "--add-instance": addInstance() } diff --git a/app/config.go b/app/config.go index 7d159e7..eff9ee8 100644 --- a/app/config.go +++ b/app/config.go @@ -11,6 +11,11 @@ import ( "git.macaw.me/skunky/devianter" ) +var Release struct { + Version string + Description string +} + type cache_config struct { Enabled bool Path string diff --git a/app/router.go b/app/router.go index 2bcaf41..cc58f93 100644 --- a/app/router.go +++ b/app/router.go @@ -13,10 +13,9 @@ var Host, Path string func Router() { parsepath := func(path string) map[int]string { + path = "/" if l := len(CFG.URI); len(path) > l { path = path[l-1:] - } else { - path = "/" } parsedpath := make(map[int]string) @@ -54,44 +53,42 @@ func Router() { // функция, что управляет всем handle := func(w http.ResponseWriter, r *http.Request) { - if h := r.Header["X-Forwarded-Proto"]; len(h) != 0 && h[0] == "https" { - Host = h[0] + "://" + r.Host - } else { - Host = "http://" + r.Host - } - Path = r.URL.Path path := parsepath(Path) - // структура с функциями - var skunky skunkyart + Host = "http://" + r.Host + + if h := r.Header["X-Forwarded-Proto"]; len(h) != 0 && h[0] == "https" { + Host = "https://" + r.Host + } + + var skunky = skunkyart{Version: Release.Version} + + arg := skunky.Args.Get + p, _ := strconv.Atoi(arg("p")) + + skunky.Endpoint = path[1] + skunky.API.main = &skunky skunky.Writer = w skunky.Args = r.URL.Query() skunky.BasePath = CFG.URI - - arg := skunky.Args.Get skunky.QueryRaw = arg("q") skunky.Query = u.QueryEscape(skunky.QueryRaw) + skunky.Page = p if t := arg("type"); len(t) > 0 { skunky.Type = rune(t[0]) } - p, _ := strconv.Atoi(arg("p")) - skunky.Page = p if arg("atom") == "true" { skunky.Atom = true } - skunky.Endpoint = path[1] - skunky.API.skunkyartLink = &skunky - - // пути switch skunky.Endpoint { - default: - skunky.ReturnHTTPError(404) - + // main case "": skunky.ExecuteTemplate("index.htm", "html", &CFG.URI) + case "about": + skunky.About() case "post": skunky.Deviation(path[2], path[3]) case "search": @@ -101,33 +98,38 @@ func Router() { case "group_user": skunky.GRUser() + // media case "media": switch path[2] { case "file": if a := arg("filename"); a != "" { - var filename strings.Builder - filename.WriteString(`filename="`) - filename.WriteString(a) - filename.WriteString(`"`) - w.Header().Add("Content-Disposition", filename.String()) + skunky.SetFilename(a) } skunky.DownloadAndSendMedia(path[3], next(path, 4)) case "emojitar": skunky.Emojitar(path[3]) } - case "about": - skunky.About() case "stylesheet": w.Header().Add("content-type", "text/css") w.Write(open("css/skunky.css")) case "favicon.ico": w.Write(open("images/logo.png")) + // API case "api": + w.Header().Add("Content-Type", "application/json") switch path[2] { + case "instance": + skunky.API.Info() case "random": skunky.API.Random() + default: + skunky.API.Error("Not Found", 404) } + + // 404 + default: + skunky.ReturnHTTPError(404) } } diff --git a/app/util.go b/app/util.go index 71e7d89..c992466 100644 --- a/app/util.go +++ b/app/util.go @@ -64,6 +64,7 @@ type skunkyart struct { Query, QueryRaw string API API + Version string Templates struct { About struct { @@ -131,7 +132,7 @@ func UrlBuilder(strs ...string) string { str.WriteString(CFG.URI) for n, x := range strs { str.WriteString(x) - if n+1 < l && !(strs[n+1][0] == '?' || strs[n+1][0] == '&') && !(x[0] == '?' || x[0] == '&') { + if n := n+1; n < l && len(strs[n]) != 0 && !(strs[n][0] == '?' || strs[n][0] == '&') && !(x[0] == '?' || x[0] == '&') { str.WriteString("/") } } @@ -153,6 +154,14 @@ func (s skunkyart) ReturnHTTPError(status int) { wr(s.Writer, msg.String()) } +func (s skunkyart) SetFilename(name string) { + var filename strings.Builder + filename.WriteString(`filename="`) + filename.WriteString(name) + filename.WriteString(`"`) + s.Writer.Header().Add("Content-Disposition", filename.String()) +} + type Downloaded struct { Headers http.Header Status int @@ -189,6 +198,9 @@ func ParseMedia(media devianter.Media, thumb ...int) string { if len(mediaUrl) != 0 && CFG.Proxy { mediaUrl = mediaUrl[21:] dot := strings.Index(mediaUrl, ".") + if filename == "" { + filename = "image.gif" + } return UrlBuilder("media", "file", mediaUrl[:dot], mediaUrl[dot+11:], "&filename=", filename) } return mediaUrl diff --git a/app/wrapper.go b/app/wrapper.go index f78d8c8..a3d251b 100644 --- a/app/wrapper.go +++ b/app/wrapper.go @@ -42,7 +42,6 @@ func (s skunkyart) GRUser() { group.About.A = x.ModuleData.About var about = &group.About.A group.CreationDate = time.Unix(time.Now().Unix()-x.ModuleData.About.RegDate, 0).UTC().String() - group.About.DescriptionFormatted = ParseDescription(about.Description) for _, val := range x.ModuleData.About.SocialLinks { diff --git a/go.mod b/go.mod index c7dc4e6..a3cbd52 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module skunkyart go 1.18 -// replace git.macaw.me/skunky/devianter v0.2.5 => /home/skunk/projects/devianter +replace git.macaw.me/skunky/devianter v0.2.5 => /home/skunk/projects/devianter require ( git.macaw.me/skunky/devianter v0.2.5 golang.org/x/net v0.27.0 diff --git a/main.go b/main.go index 190d79b..3dc4374 100644 --- a/main.go +++ b/main.go @@ -9,6 +9,8 @@ import ( ) func main() { + app.Release.Version = "1.3.2-alpha" + app.Release.Description = "Two API endpoints and template embedding into binary" go app.RefreshInstances() app.ExecuteCommandLineArguments() diff --git a/static/html/about.htm b/static/html/about.htm index d2278d6..94bbf5c 100644 --- a/static/html/about.htm +++ b/static/html/about.htm @@ -44,6 +44,6 @@ {{end}} -

Copyright lost+skunk, X11. SkunkyArt v1.3.1

+

Copyright lost+skunk, X11. SkunkyArt v{{.Version}}

- \ No newline at end of file + From 5a8a0987a2db22de6b9dd184bf40a3e2d16c5bbf Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Tue, 3 Sep 2024 16:14:19 +0300 Subject: [PATCH 11/25] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=BE=D0=B3=D0=BE=20=D0=BE=D0=B1?= =?UTF-8?q?=D0=BE=D1=81=D1=80=D0=B0=D0=BC=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/router.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/router.go b/app/router.go index cc58f93..2625374 100644 --- a/app/router.go +++ b/app/router.go @@ -13,9 +13,10 @@ var Host, Path string func Router() { parsepath := func(path string) map[int]string { - path = "/" if l := len(CFG.URI); len(path) > l { path = path[l-1:] + } else { + path = "/" } parsedpath := make(map[int]string) From c39399403e031a8c1ad53969770e4261d2c9e7aa Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Wed, 4 Sep 2024 20:22:58 +0300 Subject: [PATCH 12/25] =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TODO.md | 3 +-- app/api.go | 6 ++++- app/cache.go | 1 + app/config.go | 2 +- app/parsers.go | 6 ++++- app/router.go | 8 +++--- app/util.go | 15 +++++++++++- app/wrapper.go | 59 ++++++++++++++++++++++++++++++--------------- config.example.json | 2 +- go.mod | 3 +-- go.sum | 4 +-- 11 files changed, 74 insertions(+), 35 deletions(-) diff --git a/TODO.md b/TODO.md index fbca5d8..01bc524 100644 --- a/TODO.md +++ b/TODO.md @@ -5,14 +5,13 @@ * **Доделать парсинг описания** * ~~Реализовать стрипы в ежедневных артах~~ ✔️ * ~~Исправить баг с навигацией по страницам~~ ✔️ -* Сделать нормальное отображение ошибок +* ~~Сделать нормальное отображение ошибок~~ ✔️ * ~~Сделать единицы в конфиге более понятными~~ ✔️ * Добавить чекер инстанса на работоспособность * ~~Добавить просмотр понравившихся артов пользователю~~ ✔️ * Добавить возможность включить темплейты в бинарник [P] * ~~Реализовать миниатюры и оптимизировать CSS под маленькие экраны~~ ✔️ * Написать Makefile и скрипт для автоматического развёртывания инстанса -* **Реализовать отображение контента, отличного от картинок (видео, аудио, etc)** * Исправить баг с эмоджи, когда некоторые кастомные эмоции могут не отображаться * ~~Добавить аргумент &filename, который будет выдавать файл с нормально выглядещем именем~~ ✔️ * ~~Улучшить систему кеширования: добавить рейтинг для удаления и копирование изображений в ОЗУ~~ ✔️ diff --git a/app/api.go b/app/api.go index 3d0871c..fdf8270 100644 --- a/app/api.go +++ b/app/api.go @@ -58,8 +58,12 @@ func (a API) Random() { a.Error("Sorry, butt NSFW on this are disabled, and the instance failed to find a random art without NSFW", 500) } - s, err := devianter.PerformSearch(string(rand.Intn(999)), rand.Intn(30), 'a') + s, err, daErr := devianter.PerformSearch(string(rand.Intn(999)), rand.Intn(30), 'a') try(err) + if daErr.RAW != nil { + continue + } + deviation := &s.Results[rand.Intn(len(s.Results))] if deviation.NSFW && !CFG.Nsfw { diff --git a/app/cache.go b/app/cache.go index cbf2432..975fa0a 100644 --- a/app/cache.go +++ b/app/cache.go @@ -127,6 +127,7 @@ func InitCacheSystem() { try(os.RemoveAll(fileName)) } } + if c.MaxSize != 0 && fileInfo.Size() > c.MaxSize { try(os.RemoveAll(fileName)) } diff --git a/app/config.go b/app/config.go index eff9ee8..745d2f4 100644 --- a/app/config.go +++ b/app/config.go @@ -89,7 +89,7 @@ func ExecuteConfig() { lifetimeParsed = duration * int64(num) } - CFG.Cache.MaxSize /= 1024 ^ 2 + CFG.Cache.MaxSize *= 1024 ^ 2 go InitCacheSystem() } devianter.UserAgent = CFG.UserAgent diff --git a/app/parsers.go b/app/parsers.go index 3a318be..b7f15fd 100644 --- a/app/parsers.go +++ b/app/parsers.go @@ -9,7 +9,11 @@ import ( "golang.org/x/net/html" ) -func (s skunkyart) ParseComments(c devianter.Comments) string { +func (s skunkyart) ParseComments(c devianter.Comments, daError devianter.Error) string { + if daError.RAW != nil { + return "Failed to fetch comments :(" + } + var cmmts strings.Builder replied := make(map[int]string) diff --git a/app/router.go b/app/router.go index 2625374..32488cb 100644 --- a/app/router.go +++ b/app/router.go @@ -64,13 +64,13 @@ func Router() { var skunky = skunkyart{Version: Release.Version} + skunky.Args = r.URL.Query() arg := skunky.Args.Get p, _ := strconv.Atoi(arg("p")) skunky.Endpoint = path[1] skunky.API.main = &skunky skunky.Writer = w - skunky.Args = r.URL.Query() skunky.BasePath = CFG.URI skunky.QueryRaw = arg("q") skunky.Query = u.QueryEscape(skunky.QueryRaw) @@ -128,9 +128,9 @@ func Router() { skunky.API.Error("Not Found", 404) } - // 404 - default: - skunky.ReturnHTTPError(404) + // 404 + default: + skunky.ReturnHTTPError(404) } } diff --git a/app/util.go b/app/util.go index c992466..c698090 100644 --- a/app/util.go +++ b/app/util.go @@ -139,6 +139,19 @@ func UrlBuilder(strs ...string) string { return str.String() } +func (s skunkyart) Error(dAerr devianter.Error) { + s.Writer.WriteHeader(502) + + var msg strings.Builder + msg.WriteString(`

DeviantArt error — '`) + msg.WriteString(dAerr.Error) + msg.WriteString("'

") + + wr(s.Writer, msg.String()) +} + func (s skunkyart) ReturnHTTPError(status int) { s.Writer.WriteHeader(status) @@ -203,7 +216,7 @@ func ParseMedia(media devianter.Media, thumb ...int) string { } return UrlBuilder("media", "file", mediaUrl[:dot], mediaUrl[dot+11:], "&filename=", filename) } - return mediaUrl + return "" } func ConvertDeviantArtUrlToSkunkyArt(url string) (output string) { diff --git a/app/wrapper.go b/app/wrapper.go index a3d251b..a2e0fa4 100644 --- a/app/wrapper.go +++ b/app/wrapper.go @@ -18,10 +18,15 @@ func (s skunkyart) GRUser() { } var g devianter.Group + var daError devianter.Error g.Name = s.Query var err error - s.Templates.GroupUser.GR, err = g.Get() + s.Templates.GroupUser.GR, err, daError = g.Get() try(err) + if daError.RAW != nil { + s.Error(daError) + return + } group := &s.Templates.GroupUser @@ -63,12 +68,7 @@ func (s skunkyart) GRUser() { group.About.Interests += interest.String() } } - group.About.Comments = s.ParseComments(devianter.GetComments( - strconv.Itoa(group.GR.Gruser.ID), - "", - s.Page, - 4, - )) + group.About.Comments = s.ParseComments(devianter.GetComments(strconv.Itoa(group.GR.Gruser.ID),"",s.Page,4)) case "cover_deviation": group.About.BGMeta = x.ModuleData.CoverDeviation.Deviation @@ -98,12 +98,17 @@ func (s skunkyart) GRUser() { } if s.Type == 'f' { - content = g.Favourites(s.Page, all, folderid) + content, daError = g.Favourites(s.Page, all, folderid) } else { - content, err = g.Gallery(s.Page, folderid) + content, err, daError = g.Gallery(s.Page, folderid) try(err) } + if daError.RAW != nil { + s.Error(daError) + return + } + if folderid > 0 || (s.Type == 'f' && all) { group.Gallery.List = s.DeviationList(content.Content.Results, true, DeviationList{ More: content.Content.HasMore, @@ -172,19 +177,26 @@ func (s skunkyart) Deviation(author, postname string) { return } + var err devianter.Error post := &s.Templates.Deviation id := id_search[len(id_search)-1] - post.Post = devianter.GetDeviation(id, author) + post.Post, err = devianter.GetDeviation(id, author) + if err.RAW != nil { + s.Error(err) + return + } + + if post.Post.Comments.Total <= 50 { + post.Post.Comments.Cursor = "" + } if post.Post.Deviation.TextContent.Excerpt != "" { post.Post.Description = ParseDescription(post.Post.Deviation.TextContent) } else { post.Post.Description = ParseDescription(post.Post.Deviation.Extended.DescriptionText) } - // время публикации - post.StringTime = post.Post.Deviation.PublishedTime.UTC().String() - post.Post.IMG = ParseMedia(post.Post.Deviation.Media) + for _, x := range post.Post.Deviation.Extended.RelatedContent { if len(x.Deviations) != 0 { post.Related += s.DeviationList(x.Deviations, false) @@ -203,17 +215,19 @@ func (s skunkyart) Deviation(author, postname string) { post.Tags += tag.String() } - if post.Post.Comments.Total <= 50 { - post.Post.Comments.Cursor = "" - } - post.Comments = s.ParseComments(devianter.GetComments(id, post.Post.Comments.Cursor, s.Page, 1)) + post.StringTime = post.Post.Deviation.PublishedTime.UTC().String() + post.Post.IMG = ParseMedia(post.Post.Deviation.Media) s.ExecuteTemplate("deviantion.htm", "html", &s) } func (s skunkyart) DD() { - dd := devianter.GetDailyDeviations(s.Page) + dd, err := devianter.GetDailyDeviations(s.Page) + if err.RAW != nil { + s.Error(err) + return + } var strips strings.Builder for _, x := range dd.Strips { strips.WriteString(`

/home/skunk/projects/devianter require ( - git.macaw.me/skunky/devianter v0.2.5 + git.macaw.me/skunky/devianter v0.2.6-0.20240904171839-b3c99749f133 golang.org/x/net v0.27.0 ) diff --git a/go.sum b/go.sum index 8e79784..323fd90 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,4 @@ -git.macaw.me/skunky/devianter v0.2.5 h1:aAc6CG/ghvG130Ob7gGUdK4IV3MSeCD5t3QIJjto1M0= -git.macaw.me/skunky/devianter v0.2.5/go.mod h1:ZLn527xBlnpXrUB1B8z/MhyeiWVK4nPWjyfnhWOE8Is= +git.macaw.me/skunky/devianter v0.2.6-0.20240904171839-b3c99749f133 h1:ziutYUyDmdbsptR8Lj4lNmZUxfgwGsNbHM1mO9ATph8= +git.macaw.me/skunky/devianter v0.2.6-0.20240904171839-b3c99749f133/go.mod h1:ZLn527xBlnpXrUB1B8z/MhyeiWVK4nPWjyfnhWOE8Is= golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= From 191984b31ef228c4077904a2831a2af593352670 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Mon, 23 Sep 2024 09:38:32 +0300 Subject: [PATCH 13/25] v1.3.2 --- .gitignore | 1 + INSTANCES.md | 6 ++- README.md | 12 ++++++ REDIRECTS.md | 13 +++++++ SETUP-RU.md | 4 +- SETUP.md | 2 +- app/api.go | 91 +++++++++++++++++++++---------------------- app/cache.go | 8 ++-- app/config.go | 9 ++++- app/router.go | 31 +++++++++------ app/util.go | 23 +++++++---- app/wrapper.go | 27 +++++-------- config.example.json | 4 +- instances.json | 22 +++++------ main.go | 2 +- static/css/skunky.css | 22 +++++------ static/html/about.htm | 2 +- static/html/head.htm | 1 + static/html/index.htm | 74 +++++++++++++++++++++++++++++++++-- 19 files changed, 230 insertions(+), 124 deletions(-) create mode 100644 REDIRECTS.md diff --git a/.gitignore b/.gitignore index 4686488..b52ba21 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ **/cache **/config.json **/skunkyart +**/skunkyart-* diff --git a/INSTANCES.md b/INSTANCES.md index 70b68dc..32b0e50 100644 --- a/INSTANCES.md +++ b/INSTANCES.md @@ -1,7 +1,9 @@ +JSON variant should be used from master — https://git.macaw.me/skunky/SkunkyArt/raw/branch/master/instances.json + |Instance|Yggdrasil|I2P|Tor|NSFW|Proxifying|Modified Sources|Country| |:------:|:-------:|:-:|:-:|:--:|:--------:|:--------------:|:-----:| -|[skunky.ebloid.ru](https://skunky.ebloid.ru/art)|[Yes](http://[201:eba5:d1fc:bf7b:cfcb:a811:4b8b:7ea3]/art)|No|No| No | No | No | Russia | +|[skunky.ebloid.ru](https://skunky.ebloid.ru/art)|[Yes](http://[201:eba5:d1fc:bf7b:cfcb:a811:4b8b:7ea3]/art)|No|No| No | Yes | No | Russia | |[clovius.club](https://skunky.clovius.club)|No|No|No| Yes | Yes | No | Sweden | |[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | No | Germany | |[lumaeris.com](https://skunkyart.lumaeris.com)|No|No|No| Yes | Yes | No | Germany | -|[art.bloat.cat](https://art.bloat.cat)|No|No|No| Yes | Yes | No | Germany | +|[art.bloat.cat](https://art.bloat.cat)|No|No|No| Yes | Yes | No | Germany | \ No newline at end of file diff --git a/README.md b/README.md index cfc302f..b61b0bd 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,12 @@ Instances: [`INSTANCES.md`](/skunky/SkunkyArt/src/branch/master/INSTANCES.md) # EN 🇺🇸 ## Description SkunkyArt 🦨 — alternative frontend for DevianArt, which works without JS. +## Build (translated via DeepL) +It is recommended to build with the 'embed' tag because it embeds the presets in the binary. If you plan to modify the templates, then do not use this tag. You can also add the `-ldflags "-w -s"` argument (GCCGO has a different name for it — `gccgoflags`) to reduce the size of the output file. Here is an example: + +`go build -tags embed -ldflags "-w -s"` + +Pre-compiled binaries can be found in the [Releases](https://git.macaw.me/skunky/skunkyart/releases) tab. ## Setup The sample config is in the `config.example.json` file. For custom config, use `--config` option. See the [`SETUP.md`](/skunky/SkunkyArt/src/branch/master/SETUP.md) file for more info about directives. @@ -21,6 +27,12 @@ To do this, you must either make a PR by adding your instance to the `instances. # RU 🇷🇺 ## Описание SkunkyArt 🦨 — альтернативный фронтенд к DeviantArt, который полностью работает без JS (JavaScript). +## Сборка +Рекомендуется производить сборку с тегом 'embed', поскольку он встраивает заготовки в бинарный файл. Если вы планируете изменять заготовки, то не используйте этот тег. Также вы можете добавить аргумент `-ldflags "-w -s"` (у GCCGO он называется по-другому — `gccgoflags`) для уменьшения размера выходного файла. Вот пример: + +`go build -tags embed -ldflags "-w -s"` + +Готовые бинари находятся во вкладке [Releases](https://git.macaw.me/skunky/skunkyart/releases). ## Настройка Пример конфига находится в файле `config.example.json`. Чтобы указать свой конфиг, используйте cli-аргумент `--config`. См. [`SETUP-RU.md`](/skunky/SkunkyArt/src/branch/master/SETUP-RU.md) для информации о настройки фронтенда. diff --git a/REDIRECTS.md b/REDIRECTS.md new file mode 100644 index 0000000..2469977 --- /dev/null +++ b/REDIRECTS.md @@ -0,0 +1,13 @@ +# Search +* `deviantart.com/search?q=$QUERY` => `/search?q=$QUERY&type=all` +# Daily Deviations +* `deviantart.com` => `/dd` +# Deviations +* (`$USER_GROUP.deviantart.com/art/$ID`|`deviantart.com/$USER_GROUP/art/$ID`) => `/post/$USER_GROUP/$ID` +# Groups and users +## Main user page +* (`$USER_GROUP.deviantart.com`|`deviantart.com/$USER_GROUP`) => `/group_user?type=about&q=$USER_GROUP` +## Gallery +* (`$USER_GROUP.deviantart.com/gallery`|`deviantart.com/$USER_GROUP/gallery`) => `/group_user?type=gallery&q=$USER_GROUP` +## Favourites +* (`$USER_GROUP.deviantart.com/favourites`|`deviantart.com/$USER_GROUP/favourites`) => `/group_user?type=favourites&q=$USER_GROUP` diff --git a/SETUP-RU.md b/SETUP-RU.md index 994f193..7d7d04c 100644 --- a/SETUP-RU.md +++ b/SETUP-RU.md @@ -12,13 +12,13 @@ # Конфигурация * `listen` — IP и порт для слушанья; заполняется по такой форме: ip:port * `uri` — URI инстанса. Пример: `"uri":"/art/"` -> https://skunky.ebloid.ru/art/ -* `cache` — Система кеширования; по умолчанию выключена. +* `cache` — Система кеширования; по умолчанию выключена * `enabled` — Состояние системы кеширования; требуется булёвое значение * `path` — Полный путь до каталога, куда будет сохраняться кеш * `lifetime` — Время жизни файла в кеше, требует целочисленное значение, дополненное суффиксом времени (см. 'Единицы времени') * `max-size` — Максимальный размер файла * `update-interval` — Интервал для автоматической ротации кеша -* `dirs-to-memory` — Массив, заполнив который скопируются все файлы из указанных каталогов +* `static-path` — Строка, являющаяся путём до статики. SkunkyArt при запуске скопирует содержимое этого каталога в ОЗУ. Однако, если вы собрали фронтенд с тегом 'embed', то этого не произайдёт * `download-proxy` — Адрес прокси для загрузки файлов * `user-agent` — Строка, которая используется в качестве User-Agent'а diff --git a/SETUP.md b/SETUP.md index 169e7a0..cc89118 100644 --- a/SETUP.md +++ b/SETUP.md @@ -18,7 +18,7 @@ Time units: * `lifetime` — Cached file life time, requires numeric value, followed by multiplicative suffix (see Time Units for details) * `max-size` — Maximum file size in megabytes * `update-interval` — Automatic rotation interval -* `dirs-to-memory` — This setting determines which directories will be copied to RAM when SkunkyArt is started. Mandatory +* `static-path` — This setting determines path to static, which will be copied to RAM when SkunkyArt is started. Useless if you're use binary compiled with 'embed' tag. * `download-proxy` — Proxy address for downloading files. * `user-agent` — String, which SkunkyArt uses as UA diff --git a/app/api.go b/app/api.go index fdf8270..048bc2a 100644 --- a/app/api.go +++ b/app/api.go @@ -9,69 +9,68 @@ import ( ) type API struct { - main *skunkyart + main *skunkyart } type info struct { - Version string `json:"version"` - Settings settingsParams `json:"settings"` + Version string `json:"version"` + Settings settingsParams `json:"settings"` } func (a API) Info() { - json, err := json.Marshal(info{ - Version: a.main.Version, - Settings: settingsParams{ - Nsfw: CFG.Nsfw, - Proxy: CFG.Proxy, - }, - }) - try(err) - a.main.Writer.Write(json) - return + json, err := json.Marshal(info{ + Version: a.main.Version, + Settings: settingsParams{ + Nsfw: CFG.Nsfw, + Proxy: CFG.Proxy, + }, + }) + try(err) + a.main.Writer.Write(json) } func (a API) Error(description string, status int) { - a.main.Writer.WriteHeader(status) - var response strings.Builder - response.WriteString(`{"error":"`) - response.WriteString(description) - response.WriteString(`"}`) - wr(a.main.Writer, response.String()) + a.main.Writer.WriteHeader(status) + var response strings.Builder + response.WriteString(`{"error":"`) + response.WriteString(description) + response.WriteString(`"}`) + wr(a.main.Writer, response.String()) } func (a API) sendMedia(d *devianter.Deviation) { - mediaUrl, name := devianter.UrlFromMedia(d.Media) + mediaUrl, name := devianter.UrlFromMedia(d.Media) a.main.SetFilename(name) - - if len(mediaUrl) != 0 { - mediaUrl = mediaUrl[21:] + + if len(mediaUrl) != 0 { + mediaUrl = mediaUrl[21:] dot := strings.Index(mediaUrl, ".") a.main.Writer.Header().Del("Content-Type") - a.main.DownloadAndSendMedia(mediaUrl[:dot], mediaUrl[dot+11:]) - } + a.main.DownloadAndSendMedia(mediaUrl[:dot], mediaUrl[dot+11:]) + } } // TODO: сделать фильтры func (a API) Random() { - for attempt := 1;; { - if attempt > 3 { - a.Error("Sorry, butt NSFW on this are disabled, and the instance failed to find a random art without NSFW", 500) - } - - s, err, daErr := devianter.PerformSearch(string(rand.Intn(999)), rand.Intn(30), 'a') - try(err) - if daErr.RAW != nil { - continue - } - - deviation := &s.Results[rand.Intn(len(s.Results))] - - if deviation.NSFW && !CFG.Nsfw { - attempt++ - continue - } - - a.sendMedia(deviation) - return - } + for attempt := 1; ; { + if attempt > 3 { + a.Error("Sorry, butt NSFW on this are disabled, and the instance failed to find a random art without NSFW", 500) + } + + s, err, daErr := devianter.PerformSearch(string(rand.Intn(999)), rand.Intn(30), 'a') + try(err) + if daErr.RAW != nil { + continue + } + + deviation := &s.Results[rand.Intn(len(s.Results))] + + if deviation.NSFW && !CFG.Nsfw { + attempt++ + continue + } + + a.sendMedia(deviation) + return + } } diff --git a/app/cache.go b/app/cache.go index 975fa0a..f9225be 100644 --- a/app/cache.go +++ b/app/cache.go @@ -27,10 +27,10 @@ func (s skunkyart) DownloadAndSendMedia(subdomain, path string) { url.WriteString(".wixmp.com/") url.WriteString(path) if t := s.Args.Get("token"); t != "" { - url.WriteString("?token=") - url.WriteString(t) + url.WriteString("?token=") + url.WriteString(t) } - + var response []byte switch { @@ -127,7 +127,7 @@ func InitCacheSystem() { try(os.RemoveAll(fileName)) } } - + if c.MaxSize != 0 && fileInfo.Size() > c.MaxSize { try(os.RemoveAll(fileName)) } diff --git a/app/config.go b/app/config.go index 745d2f4..2ba39a9 100644 --- a/app/config.go +++ b/app/config.go @@ -56,13 +56,11 @@ func ExecuteConfig() { if CFG.cfg != "" { f, err := os.ReadFile(CFG.cfg) tryWithExitStatus(err, 1) - tryWithExitStatus(json.Unmarshal(f, &CFG), 1) if CFG.Cache.Enabled && !CFG.Proxy { exit("Incompatible settings detected: cannot use caching media content without proxy", 1) } - static.StaticPath = CFG.StaticPath if CFG.Cache.Enabled { if CFG.Cache.Lifetime != "" { var duration int64 @@ -92,6 +90,13 @@ func ExecuteConfig() { CFG.Cache.MaxSize *= 1024 ^ 2 go InitCacheSystem() } + + About = instanceAbout{ + Proxy: CFG.Proxy, + Nsfw: CFG.Nsfw, + } + + static.StaticPath = CFG.StaticPath devianter.UserAgent = CFG.UserAgent } } diff --git a/app/router.go b/app/router.go index 32488cb..eddf0a9 100644 --- a/app/router.go +++ b/app/router.go @@ -3,7 +3,7 @@ package app import ( "io" "net/http" - u "net/url" + url "net/url" "skunkyart/static" "strconv" "strings" @@ -57,7 +57,7 @@ func Router() { Path = r.URL.Path path := parsepath(Path) Host = "http://" + r.Host - + if h := r.Header["X-Forwarded-Proto"]; len(h) != 0 && h[0] == "https" { Host = "https://" + r.Host } @@ -67,13 +67,13 @@ func Router() { skunky.Args = r.URL.Query() arg := skunky.Args.Get p, _ := strconv.Atoi(arg("p")) - + skunky.Endpoint = path[1] skunky.API.main = &skunky skunky.Writer = w skunky.BasePath = CFG.URI skunky.QueryRaw = arg("q") - skunky.Query = u.QueryEscape(skunky.QueryRaw) + skunky.Query = url.QueryEscape(skunky.QueryRaw) skunky.Page = p if t := arg("type"); len(t) > 0 { @@ -84,12 +84,21 @@ func Router() { skunky.Atom = true } + if CFG.Proxy { + w.Header().Add("Content-Security-Policy", "default-src 'self'; script-src 'none'; style-src 'self' 'unsafe-inline'") + } else { + w.Header().Add("Content-Security-Policy", "default-src 'self'; img-src 'self' *.wixmp.com; script-src 'none'; style-src 'self' 'unsafe-inline'") + } + + w.Header().Add("X-Frame-Options", "DENY") + switch skunky.Endpoint { // main case "": skunky.ExecuteTemplate("index.htm", "html", &CFG.URI) case "about": - skunky.About() + skunky.Templates.About = About + skunky.ExecuteTemplate("about.htm", "html", &skunky) case "post": skunky.Deviation(path[2], path[3]) case "search": @@ -120,12 +129,12 @@ func Router() { case "api": w.Header().Add("Content-Type", "application/json") switch path[2] { - case "instance": - skunky.API.Info() - case "random": - skunky.API.Random() - default: - skunky.API.Error("Not Found", 404) + case "instance": + skunky.API.Info() + case "random": + skunky.API.Random() + default: + skunky.API.Error("Not Found", 404) } // 404 diff --git a/app/util.go b/app/util.go index c698090..9c8d400 100644 --- a/app/util.go +++ b/app/util.go @@ -1,6 +1,7 @@ package app import ( + "encoding/json" "io" "net/http" "net/url" @@ -40,18 +41,26 @@ func restore() { } var instances []byte +var About instanceAbout func RefreshInstances() { for { func() { defer restore() instances = Download("https://git.macaw.me/skunky/SkunkyArt/raw/branch/master/instances.json").Body + try(json.Unmarshal(instances, &About)) }() time.Sleep(1 * time.Hour) } } // some crap for frontend +type instanceAbout struct { + Proxy bool + Nsfw bool + Instances []settings +} + type skunkyart struct { Writer http.ResponseWriter @@ -63,15 +72,11 @@ type skunkyart struct { BasePath, Endpoint string Query, QueryRaw string - API API - Version string + API API + Version string Templates struct { - About struct { - Proxy bool - Nsfw bool - Instances []settings - } + About instanceAbout SomeList string DDStrips string @@ -132,7 +137,7 @@ func UrlBuilder(strs ...string) string { str.WriteString(CFG.URI) for n, x := range strs { str.WriteString(x) - if n := n+1; n < l && len(strs[n]) != 0 && !(strs[n][0] == '?' || strs[n][0] == '&') && !(x[0] == '?' || x[0] == '&') { + if n := n + 1; n < l && len(strs[n]) != 0 && !(strs[n][0] == '?' || strs[n][0] == '&') && !(x[0] == '?' || x[0] == '&') { str.WriteString("/") } } @@ -215,6 +220,8 @@ func ParseMedia(media devianter.Media, thumb ...int) string { filename = "image.gif" } return UrlBuilder("media", "file", mediaUrl[:dot], mediaUrl[dot+11:], "&filename=", filename) + } else if !CFG.Proxy { + return mediaUrl } return "" } diff --git a/app/wrapper.go b/app/wrapper.go index a2e0fa4..5cac175 100644 --- a/app/wrapper.go +++ b/app/wrapper.go @@ -1,7 +1,6 @@ package app import ( - "encoding/json" "regexp" "strconv" "strings" @@ -24,8 +23,8 @@ func (s skunkyart) GRUser() { s.Templates.GroupUser.GR, err, daError = g.Get() try(err) if daError.RAW != nil { - s.Error(daError) - return + s.Error(daError) + return } group := &s.Templates.GroupUser @@ -68,7 +67,7 @@ func (s skunkyart) GRUser() { group.About.Interests += interest.String() } } - group.About.Comments = s.ParseComments(devianter.GetComments(strconv.Itoa(group.GR.Gruser.ID),"",s.Page,4)) + group.About.Comments = s.ParseComments(devianter.GetComments(strconv.Itoa(group.GR.Gruser.ID), "", s.Page, 4)) case "cover_deviation": group.About.BGMeta = x.ModuleData.CoverDeviation.Deviation @@ -225,8 +224,8 @@ func (s skunkyart) Deviation(author, postname string) { func (s skunkyart) DD() { dd, err := devianter.GetDailyDeviations(s.Page) if err.RAW != nil { - s.Error(err) - return + s.Error(err) + return } var strips strings.Builder for _, x := range dd.Strips { @@ -312,12 +311,13 @@ func (s skunkyart) Search() { return } try(err) - if daError.RAW != nil { - s.Error(daError) - return - } if s.Type != 'r' { + if daError.RAW != nil { + s.Error(daError) + return + } + ss.List = s.DeviationList(ss.Content.Results, false, DeviationList{ Pages: ss.Content.Pages, More: ss.Content.HasMore, @@ -339,10 +339,3 @@ func (s skunkyart) Emojitar(name string) { } wr(s.Writer, ae) } - -func (s skunkyart) About() { - s.Templates.About.Nsfw = CFG.Nsfw - s.Templates.About.Proxy = CFG.Proxy - try(json.Unmarshal(instances, &s.Templates.About)) - s.ExecuteTemplate("about.htm", "html", &s) -} diff --git a/config.example.json b/config.example.json index f4909a7..b38e47e 100644 --- a/config.example.json +++ b/config.example.json @@ -1,6 +1,6 @@ { "listen": "0.0.0.0:3003", - "uri": "/huy/", + "uri": "/", "cache": { "enabled": true, "path": "cache", @@ -12,5 +12,5 @@ "download-proxy": "http://127.0.0.1:8080", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36", "proxy": true, - "nsfw": false + "nsfw": true } diff --git a/instances.json b/instances.json index 4b43a06..a3a2f4a 100644 --- a/instances.json +++ b/instances.json @@ -8,8 +8,8 @@ "clearnet": "https://skunky.ebloid.ru/art" }, "settings": { - "nsfw": false, - "proxy": false + "proxy": true, + "nsfw": false } }, { @@ -19,8 +19,8 @@ "clearnet": "https://skunky.clovius.club" }, "settings": { - "nsfw": true, - "proxy": true + "proxy": true, + "nsfw": true } }, { @@ -30,8 +30,8 @@ "clearnet": "https://skunky.bloat.cat" }, "settings": { - "nsfw": true, - "proxy": true + "proxy": true, + "nsfw": true } }, { @@ -41,8 +41,8 @@ "clearnet": "https://skunkyart.lumaeris.com" }, "settings": { - "nsfw": true, - "proxy": true + "proxy": true, + "nsfw": true } }, { @@ -52,9 +52,9 @@ "clearnet": "https://art.bloat.cat" }, "settings": { - "nsfw": true, - "proxy": true + "proxy": true, + "nsfw": true } } ] -} +} \ No newline at end of file diff --git a/main.go b/main.go index 3dc4374..d7009ae 100644 --- a/main.go +++ b/main.go @@ -9,7 +9,7 @@ import ( ) func main() { - app.Release.Version = "1.3.2-alpha" + app.Release.Version = "1.3.2" app.Release.Description = "Two API endpoints and template embedding into binary" go app.RefreshInstances() diff --git a/static/css/skunky.css b/static/css/skunky.css index bdc894c..a7258c8 100644 --- a/static/css/skunky.css +++ b/static/css/skunky.css @@ -19,11 +19,10 @@ header h1 { header form { align-self: center; } -header { +header, form { display: flex; } form { - font-size: 0; border: solid #164e3e 1px; max-width: fit-content; } @@ -147,21 +146,18 @@ input:focus { font-size: 80% } - center form { - font-size: 60% - } - - header form { - font-size: 60%; - max-width: unset; - border: 0; - } - header, center { + header { + margin-left: 3%; text-align: center; - display: block; + display: inline-block; clear: both; font-size: 200%; } + + form { + font-size: 60%; + border: solid #164e3e 5px; + } .content { margin: auto; diff --git a/static/html/about.htm b/static/html/about.htm index 94bbf5c..eac4e47 100644 --- a/static/html/about.htm +++ b/static/html/about.htm @@ -6,7 +6,7 @@

SkunkyArt is an alternative frontend for deviantart.com, written in Go.

-

Room in Matrix

+

Room in [matrix]

Instance settings:

+

Room in [matrix]

Instance settings:
  • NSFW: {{if .Templates.About.Nsfw}}YES{{else}}NO{{end}}
  • @@ -44,6 +44,6 @@ {{end}}
-

Copyright lost+skunk, X11. SkunkyArt v{{.Version}}

+

Copyright lost+skunk, X11. SkunkyArt v{{.Version}}

From f857340dceb7a7499b92af34557d6bf214fceb29 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Fri, 15 Nov 2024 22:43:56 +0300 Subject: [PATCH 15/25] =?UTF-8?q?=D0=BE=D1=84=D1=80=D1=86=D0=B2=D0=B0?= =?UTF-8?q?=D0=B3=D1=80=D0=B3=D1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/router.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/router.go b/app/router.go index c7dd623..ac65c3d 100644 --- a/app/router.go +++ b/app/router.go @@ -11,8 +11,6 @@ import ( var Host string -// var Path *string - func Router() { parsepath := func(path string) map[int]string { if l := len(CFG.URI); len(path) > l { From f692d1eb2d99e9a5c8030b196729a9fe896bb328 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Fri, 15 Nov 2024 23:34:29 +0300 Subject: [PATCH 16/25] =?UTF-8?q?=D0=B7=D0=B0=D0=B1=D1=8B=D0=BB=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B6=D0=B0=D1=82=D1=8C=20^s...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- instances.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/instances.json b/instances.json index a3a2f4a..3024c59 100644 --- a/instances.json +++ b/instances.json @@ -1,11 +1,11 @@ { "instances": [ { - "title": "skunky.ebloid.ru", - "country": "Russia", + "title": "ls.404.mn", + "country": "Germany", "urls": { - "ygg": "http://[201:eba5:d1fc:bf7b:cfcb:a811:4b8b:7ea3]/art", - "clearnet": "https://skunky.ebloid.ru/art" + "ygg": "http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart", + "clearnet": "https://ls.404.mn/skunkyart" }, "settings": { "proxy": true, From 86203ebb7b37e8f14f8fbed31710d07f37d2b473 Mon Sep 17 00:00:00 2001 From: vlnst Date: Tue, 26 Nov 2024 02:32:05 +0300 Subject: [PATCH 17/25] Add Docker --- .dockerignore | 6 ++++++ .gitignore | 1 + Dockerfile | 23 +++++++++++++++++++++++ compose.example.yaml | 12 ++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 compose.example.yaml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..6833fbe --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +cache +compose.yaml +*.json +LICENSE +*.md +services diff --git a/.gitignore b/.gitignore index b52ba21..63ca398 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ **/cache +**/compose.yaml **/config.json **/skunkyart **/skunkyart-* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..fdc1919 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +ARG GO_VERSION=1.18 + +FROM --platform=$BUILDPLATFORM golang:${GO_VERSION} AS build +ARG TARGETOS +ARG TARGETARCH + +WORKDIR /build +COPY . . +RUN CGO_ENABLED=0 GOARCH=${TARGETARCH} GOOS=${TARGETOS} go build -ldflags "-s -w -extldflags '-static'" && \ + echo "skunkyart:x:10000:10000:SkunkyArt user:/:/sbin/nologin" > /etc/minimal-passwd && \ + echo "skunkyart:x:10000:" > /etc/minimal-group + +FROM scratch + +COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ +COPY --from=build /build/static /static +COPY --from=build /build/skunkyart /skunkyart +COPY --from=build /etc/minimal-passwd /etc/passwd +COPY --from=build /etc/minimal-group /etc/group + +USER skunkyart + +ENTRYPOINT ["/skunkyart"] diff --git a/compose.example.yaml b/compose.example.yaml new file mode 100644 index 0000000..5eead70 --- /dev/null +++ b/compose.example.yaml @@ -0,0 +1,12 @@ +services: + skunkyart: + container_name: skunkyart + restart: unless-stopped + build: . + ports: + - "127.0.0.1:3003:3003" + security_opt: + - no-new-privileges:true + volumes: + - ./config.json:/config.json:ro + - ./cache:/cache # Ensure cache folder has a 10000:10000 ownership. From 866429cafc8a3a85a8f5b28eb876adf2003e5491 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Sat, 4 Jan 2025 22:29:34 +0300 Subject: [PATCH 18/25] New domain and acknowledgement to vlnst --- INSTANCES.md | 2 +- README.md | 3 ++- instances.json | 4 ++-- static/html/about.htm | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/INSTANCES.md b/INSTANCES.md index c9a198a..49f21d8 100644 --- a/INSTANCES.md +++ b/INSTANCES.md @@ -2,7 +2,7 @@ JSON variant should be used from master — https://git.macaw.me/skunky/SkunkyAr |Instance|Yggdrasil|I2P|Tor|NSFW|Proxifying|Modified Sources|Country| |:------:|:-------:|:-:|:-:|:--:|:--------:|:--------------:|:-----:| -|[ls.404.mn](https://ls.404.mn/skunkyart)|[Yes](http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart)|No|No| No | Yes | No | Germany | +|[lost-skunk.cc](https://lost-skunk.cc/skunkyart)|[Yes](http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart)|No|No| No | Yes | No | Germany | |[clovius.club](https://skunky.clovius.club)|No|No|No| Yes | Yes | No | Sweden | |[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | No | Germany | |[lumaeris.com](https://skunkyart.lumaeris.com)|No|No|No| Yes | Yes | No | Germany | diff --git a/README.md b/README.md index f4b1b14..7f914bc 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ SkunkyArt -[![Matrix room](https://img.shields.io/badge/matrix-000000?style=for-the-badge&logo=Matrix&logoColor=white)](https://go.kde.org/matrix/#/#skunkyart:ls.404.mn) +[![Matrix room](https://img.shields.io/badge/matrix-000000?style=for-the-badge&logo=Matrix&logoColor=white)](https://go.kde.org/matrix/#/#skunkyart:gnulinux.club) Instances: [`INSTANCES.md`](/skunky/SkunkyArt/src/branch/master/INSTANCES.md) @@ -45,5 +45,6 @@ SkunkyArt 🦨 — альтернативный фронтенд к DeviantArt, 1. Инстанс не должен использовать Cloudflare итп. 2. Если ваш инстанс имеет модифицированный исходный код, то вам нужно опубликовать его на любую свободную площадку. Например, Github и Gitlab таковыми не являются. ## Благодарности +* [vlnst](https://git.bloat.cat/vlnst) — написал Docker-файл. * [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — помог разобраться в Go и много чего полезного посоветовал по этому языку. * [meoww](https://codeberg.org/meoww) — перевела некоторые предложения на английский язык и написала сервис для openrc \ No newline at end of file diff --git a/instances.json b/instances.json index 3024c59..a38c86c 100644 --- a/instances.json +++ b/instances.json @@ -1,11 +1,11 @@ { "instances": [ { - "title": "ls.404.mn", + "title": "lost-skunk.cc", "country": "Germany", "urls": { "ygg": "http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart", - "clearnet": "https://ls.404.mn/skunkyart" + "clearnet": "https://lost-skunk.cc/skunkyart" }, "settings": { "proxy": true, diff --git a/static/html/about.htm b/static/html/about.htm index f6502af..ae2da3f 100644 --- a/static/html/about.htm +++ b/static/html/about.htm @@ -6,7 +6,7 @@

SkunkyArt is an alternative frontend for deviantart.com, written in Go.

-

Room in [matrix]

+

Room in [matrix]

Instance settings:
  • NSFW: {{if .Templates.About.Nsfw}}YES{{else}}NO{{end}}
  • @@ -44,6 +44,6 @@ {{end}}
-

Copyright lost+skunk, X11. SkunkyArt v{{.Version}}

+

Copyright lost+skunk, X11. SkunkyArt v{{.Version}}

From 92d4f4864a35ce3d121ae61166bdd229b78c7d94 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Sat, 4 Jan 2025 22:32:18 +0300 Subject: [PATCH 19/25] =?UTF-8?q?=D0=B1=D0=B5=D0=B7=20=D0=B2=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=BE=D0=B3=D0=BE=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82?= =?UTF-8?q?=D0=B0=20=D0=BD=D1=83=20=D0=BD=D0=B8=D0=BA=D0=B0=D0=BA..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7f914bc..e5f404d 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ To do this, you must either make a PR by adding your instance to the `instances. 1. the Instance must not use Cloudflare. 2. If your instance has modified source code, you need to publish it to any free platform. For example, Github and Gitlab are not. ## Acknowledgements +* [vlnst](https://git.bloat.cat/vlnst) — wrote a Docker file. * [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — helped me understand Go and gave me a lot of useful advice on this language. * [meoww](https://codeberg.org/meoww) — translated some sentences into English and wrote a service for openrc From 32c61ec8ea577fdd37f7d50e1c176273960aa3e0 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Tue, 11 Feb 2025 23:37:59 +0300 Subject: [PATCH 20/25] clovius.club >> orehus.club --- INSTANCES.md | 2 +- instances.json | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/INSTANCES.md b/INSTANCES.md index 49f21d8..836b2fe 100644 --- a/INSTANCES.md +++ b/INSTANCES.md @@ -3,7 +3,7 @@ JSON variant should be used from master — https://git.macaw.me/skunky/SkunkyAr |Instance|Yggdrasil|I2P|Tor|NSFW|Proxifying|Modified Sources|Country| |:------:|:-------:|:-:|:-:|:--:|:--------:|:--------------:|:-----:| |[lost-skunk.cc](https://lost-skunk.cc/skunkyart)|[Yes](http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart)|No|No| No | Yes | No | Germany | -|[clovius.club](https://skunky.clovius.club)|No|No|No| Yes | Yes | No | Sweden | +|[orehus.club](https://sa.orehus.club)|No|No|No| Yes | No | No | Germany | |[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | No | Germany | |[lumaeris.com](https://skunkyart.lumaeris.com)|No|No|No| Yes | Yes | No | Germany | |[art.bloat.cat](https://art.bloat.cat)|No|No|No| Yes | Yes | No | Germany | \ No newline at end of file diff --git a/instances.json b/instances.json index a38c86c..0b5972c 100644 --- a/instances.json +++ b/instances.json @@ -13,13 +13,13 @@ } }, { - "title": "clovius.club", - "country": "Sweden", + "title": "orehus.club", + "country": "Germany", "urls": { - "clearnet": "https://skunky.clovius.club" + "clearnet": "https://sa.orehus.club" }, "settings": { - "proxy": true, + "proxy": false, "nsfw": true } }, From 048bb470ab8dc3adce83d2e615f3ab369efa2199 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Sat, 22 Feb 2025 15:30:29 +0300 Subject: [PATCH 21/25] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=20=D0=BA=D0=B5=D1=88?= =?UTF-8?q?=D0=B0=20=D0=B2=20=D0=BE=D0=B7=D1=83,=20=D0=BD=D0=B5=D0=B1?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D1=88=D0=B8=D0=B5=20=D1=83=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BA=D1=81=D1=81,=20=D1=84?= =?UTF-8?q?=D0=B8=D0=BA=D1=81=20=D0=BD=D1=81=D1=84=D0=B2,=20=D1=84=D0=B8?= =?UTF-8?q?=D0=BA=D1=81=20=D0=BC=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=20=D0=BA=D0=B5=D1=88=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api.go | 8 ++++- app/cache.go | 72 +++++++++++++++++++++++++----------------- app/config.go | 7 ++-- app/wrapper.go | 13 ++++++-- config.example.json | 3 +- static/css/skunky.css | 30 ++++++++++++------ static/html/gruser.htm | 2 +- 7 files changed, 88 insertions(+), 47 deletions(-) diff --git a/app/api.go b/app/api.go index 048bc2a..d2a5655 100644 --- a/app/api.go +++ b/app/api.go @@ -41,12 +41,18 @@ func (a API) Error(description string, status int) { func (a API) sendMedia(d *devianter.Deviation) { mediaUrl, name := devianter.UrlFromMedia(d.Media) a.main.SetFilename(name) - if len(mediaUrl) != 0 { + return + } + + if CFG.Proxy { mediaUrl = mediaUrl[21:] dot := strings.Index(mediaUrl, ".") a.main.Writer.Header().Del("Content-Type") a.main.DownloadAndSendMedia(mediaUrl[:dot], mediaUrl[dot+11:]) + } else { + a.main.Writer.Header().Add("Location", mediaUrl) + a.main.Writer.WriteHeader(302) } } diff --git a/app/cache.go b/app/cache.go index f9225be..e03db67 100644 --- a/app/cache.go +++ b/app/cache.go @@ -38,17 +38,7 @@ func (s skunkyart) DownloadAndSendMedia(subdomain, path string) { fileName := sha1.Sum([]byte(subdomain + path)) filePath := CFG.Cache.Path + "/" + hex.EncodeToString(fileName[:]) - mx.Lock() - if tempFS[fileName] == nil { - tempFS[fileName] = &file{} - } - mx.Unlock() - - if tempFS[fileName].Content != nil { - response = tempFS[fileName].Content - tempFS[fileName].Score += 2 - break - } else { + c := func() { file, err := os.Open(filePath) if err != nil { if dwnld := Download(url.String()); dwnld.Status == 200 && dwnld.Headers["Content-Type"][0][:5] == "image" { @@ -63,27 +53,44 @@ func (s skunkyart) DownloadAndSendMedia(subdomain, path string) { try(e) response = file } + } - go func() { - defer restore() + if CFG.Cache.MemCache { + mx.Lock() + if tempFS[fileName] == nil { + tempFS[fileName] = &file{} + } + mx.Unlock() - mx.RLock() - tempFS[fileName].Content = response - mx.RUnlock() + if tempFS[fileName].Content != nil { + response = tempFS[fileName].Content + tempFS[fileName].Score += 2 + break + } else { + c() + go func() { + defer restore() - for { - time.Sleep(1 * time.Minute) + mx.RLock() + tempFS[fileName].Content = response + mx.RUnlock() - mx.Lock() - if tempFS[fileName].Score <= 0 { - delete(tempFS, fileName) + for { + time.Sleep(1 * time.Minute) + + mx.Lock() + if tempFS[fileName].Score <= 0 { + delete(tempFS, fileName) + mx.Unlock() + return + } + tempFS[fileName].Score-- mx.Unlock() - return } - tempFS[fileName].Score-- - mx.Unlock() - } - }() + }() + } + } else { + c() } case CFG.Proxy: dwnld := Download(url.String()) @@ -112,6 +119,7 @@ func InitCacheSystem() { println(err.Error()) } + var total int64 for _, file := range dir { fileName := c.Path + "/" + file.Name() fileInfo, err := file.Info() @@ -128,9 +136,15 @@ func InitCacheSystem() { } } - if c.MaxSize != 0 && fileInfo.Size() > c.MaxSize { - try(os.RemoveAll(fileName)) - } + total += fileInfo.Size() + // if c.MaxSize != 0 && fileInfo.Size() > c.MaxSize { + // try(os.RemoveAll(fileName)) + // } + } + + if c.MaxSize != 0 && total > c.MaxSize { + try(os.RemoveAll(c.Path)) + os.Mkdir(c.Path, 0700) } time.Sleep(time.Second * time.Duration(c.UpdateInterval)) diff --git a/app/config.go b/app/config.go index 2ba39a9..813453c 100644 --- a/app/config.go +++ b/app/config.go @@ -12,12 +12,13 @@ import ( ) var Release struct { - Version string + Version string Description string } type cache_config struct { Enabled bool + MemCache bool `json:"memcache"` Path string MaxSize int64 `json:"max-size"` Lifetime string @@ -93,9 +94,9 @@ func ExecuteConfig() { About = instanceAbout{ Proxy: CFG.Proxy, - Nsfw: CFG.Nsfw, + Nsfw: CFG.Nsfw, } - + static.StaticPath = CFG.StaticPath devianter.UserAgent = CFG.UserAgent } diff --git a/app/wrapper.go b/app/wrapper.go index 5cac175..5fe1dde 100644 --- a/app/wrapper.go +++ b/app/wrapper.go @@ -36,13 +36,12 @@ func (s skunkyart) GRUser() { for _, x := range g.Gruser.Page.Modules { switch x.Name { case "about", "group_about": - switch g.Owner.Group { - case true: + if g.Owner.Group { var about = &x.ModuleData.GroupAbout group.Group = true group.CreationDate = x.ModuleData.GroupAbout.FoundatedAt.UTC().String() group.About.DescriptionFormatted = ParseDescription(about.Description) - case false: + } else if false { group.About.A = x.ModuleData.About var about = &group.About.A group.CreationDate = time.Unix(time.Now().Unix()-x.ModuleData.About.RegDate, 0).UTC().String() @@ -186,6 +185,14 @@ func (s skunkyart) Deviation(author, postname string) { return } + if post.Post.Deviation.NSFW { + s.Writer.WriteHeader(403) + wr(s.Writer, `

NSFW content are disabled on this instance.

`) + return + } + if post.Post.Comments.Total <= 50 { post.Post.Comments.Cursor = "" } diff --git a/config.example.json b/config.example.json index b38e47e..70e1c1b 100644 --- a/config.example.json +++ b/config.example.json @@ -6,11 +6,12 @@ "path": "cache", "lifetime": null, "max-size": 200, + "memcache": false, "update-interval": 5 }, "static-path": "static", "download-proxy": "http://127.0.0.1:8080", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36", "proxy": true, - "nsfw": true + "nsfw": false } diff --git a/static/css/skunky.css b/static/css/skunky.css index a7258c8..09cc71c 100644 --- a/static/css/skunky.css +++ b/static/css/skunky.css @@ -1,6 +1,6 @@ /* TAGS */ html { - font-family: Ubuntu; + font-family: ubuntu, system-ui; background-color:black; color: rgb(234, 216, 216); } @@ -45,24 +45,22 @@ input:focus { justify-content: center; } .block { - max-width: 20%; - height: 0%; - padding: 4px; - border-radius: 2px; - border: 3px solid #091f19; + padding: 0px 0px 6px 0px; + border: 3px solid #000; word-break: break-all; background-color: #091f19; margin-left: 5px; margin-top: 5px; text-align: center; } +.block h1 { + padding: 8.5vh; +} .block:hover { border: 3px solid #4d27d6; transition: 400ms; } -.block img, .plates .user-plate img { - width: 100%; -} + .block p { word-break: break-all; } @@ -185,6 +183,20 @@ input:focus { font-size: 60%; max-width: 80% } + .block img, .plates .user-plate img { + width: 100%; + } +} + +@media (orientation: landscape) { + .block { + width: 20%; + } + .block img, .plates .user-plate img { + width: 100%; + height: 30vh; + object-fit: cover; + } } @media (max-width: 1462px) and (orientation: landscape) { diff --git a/static/html/gruser.htm b/static/html/gruser.htm index 6593951..4e8e3d1 100644 --- a/static/html/gruser.htm +++ b/static/html/gruser.htm @@ -30,7 +30,7 @@

| {{.Templates.GroupUser.GR.Owner.Username}}

{{if eq .Type 'a'}} - {{if ne .Templates.GroupUser.About.BG ""}} + {{if and (and (ne .Templates.About.Nsfw true) (ne .Templates.GroupUser.About.BGMeta.NSFW true)) (ne .Templates.GroupUser.About.BG "")}} {{end}} From 40d3d89623836fbcdea6efbcdbc4611f20528cfe Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Sun, 23 Feb 2025 22:03:02 +0300 Subject: [PATCH 22/25] =?UTF-8?q?=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/wrapper.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/wrapper.go b/app/wrapper.go index 5fe1dde..ef1fb31 100644 --- a/app/wrapper.go +++ b/app/wrapper.go @@ -185,7 +185,7 @@ func (s skunkyart) Deviation(author, postname string) { return } - if post.Post.Deviation.NSFW { + if post.Post.Deviation.NSFW && !CFG.Nsfw { s.Writer.WriteHeader(403) wr(s.Writer, ` Date: Wed, 19 Mar 2025 14:45:29 +0300 Subject: [PATCH 23/25] Add sa.dc09.ru --- instances.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/instances.json b/instances.json index 0b5972c..725e524 100644 --- a/instances.json +++ b/instances.json @@ -55,6 +55,17 @@ "proxy": true, "nsfw": true } + }, + { + "title": "dc09.ru", + "country": "Russia", + "urls": { + "clearnet": "https://sa.dc09.ru" + }, + "settings": { + "proxy": true, + "nsfw": false + } } ] } \ No newline at end of file From 71a07e074edf9251b4d53c3bf4031f08cdc48027 Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Wed, 19 Mar 2025 14:49:35 +0300 Subject: [PATCH 24/25] Add sa.dc09.ru --- INSTANCES.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/INSTANCES.md b/INSTANCES.md index 836b2fe..e5fffdd 100644 --- a/INSTANCES.md +++ b/INSTANCES.md @@ -6,4 +6,5 @@ JSON variant should be used from master — https://git.macaw.me/skunky/SkunkyAr |[orehus.club](https://sa.orehus.club)|No|No|No| Yes | No | No | Germany | |[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | No | Germany | |[lumaeris.com](https://skunkyart.lumaeris.com)|No|No|No| Yes | Yes | No | Germany | -|[art.bloat.cat](https://art.bloat.cat)|No|No|No| Yes | Yes | No | Germany | \ No newline at end of file +|[art.bloat.cat](https://art.bloat.cat)|No|No|No| Yes | Yes | No | Germany | +|[dc09.ru](https://sa.dc09.ru)|No|No|No| No | Yes | No | Russia | \ No newline at end of file From 210c69e48c2af4d1fdb53c0654ed33a21688696c Mon Sep 17 00:00:00 2001 From: lost+skunk Date: Mon, 7 Apr 2025 13:53:47 +0300 Subject: [PATCH 25/25] Add da.opnxng.com + lost-skunk.cc is now in Finland --- .dockerignore | 0 .gitignore | 0 Dockerfile | 0 INSTANCES.md | 5 +++-- LICENSE | 0 README.md | 0 REDIRECTS.md | 0 SETUP-RU.md | 0 SETUP.md | 0 TODO.md | 0 app/api.go | 0 app/cache.go | 0 app/cli.go | 0 app/config.go | 0 app/parsers.go | 0 app/router.go | 0 app/stat-freebsd.go | 0 app/stat.go | 0 app/util.go | 0 app/wrapper.go | 0 compose.example.yaml | 0 config.example.json | 0 go.mod | 0 go.sum | 0 instances.json | 15 +++++++++++++-- main.go | 0 services/skunkyart.example.service | 0 static/css/skunky.css | 0 static/html/about.htm | 0 static/html/daily.htm | 0 static/html/deviantion.htm | 0 static/html/gruser.htm | 0 static/html/head.htm | 0 static/html/header.htm | 0 static/html/index.htm | 0 static/html/search.htm | 0 static/images/logo.png | Bin static/templates-noembed.go | 0 static/templates.go | 0 39 files changed, 16 insertions(+), 4 deletions(-) mode change 100644 => 100755 .dockerignore mode change 100644 => 100755 .gitignore mode change 100644 => 100755 Dockerfile mode change 100644 => 100755 INSTANCES.md mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 REDIRECTS.md mode change 100644 => 100755 SETUP-RU.md mode change 100644 => 100755 SETUP.md mode change 100644 => 100755 TODO.md mode change 100644 => 100755 app/api.go mode change 100644 => 100755 app/cache.go mode change 100644 => 100755 app/cli.go mode change 100644 => 100755 app/config.go mode change 100644 => 100755 app/parsers.go mode change 100644 => 100755 app/router.go mode change 100644 => 100755 app/stat-freebsd.go mode change 100644 => 100755 app/stat.go mode change 100644 => 100755 app/util.go mode change 100644 => 100755 app/wrapper.go mode change 100644 => 100755 compose.example.yaml mode change 100644 => 100755 config.example.json mode change 100644 => 100755 go.mod mode change 100644 => 100755 go.sum mode change 100644 => 100755 instances.json mode change 100644 => 100755 main.go mode change 100644 => 100755 services/skunkyart.example.service mode change 100644 => 100755 static/css/skunky.css mode change 100644 => 100755 static/html/about.htm mode change 100644 => 100755 static/html/daily.htm mode change 100644 => 100755 static/html/deviantion.htm mode change 100644 => 100755 static/html/gruser.htm mode change 100644 => 100755 static/html/head.htm mode change 100644 => 100755 static/html/header.htm mode change 100644 => 100755 static/html/index.htm mode change 100644 => 100755 static/html/search.htm mode change 100644 => 100755 static/images/logo.png mode change 100644 => 100755 static/templates-noembed.go mode change 100644 => 100755 static/templates.go diff --git a/.dockerignore b/.dockerignore old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/Dockerfile b/Dockerfile old mode 100644 new mode 100755 diff --git a/INSTANCES.md b/INSTANCES.md old mode 100644 new mode 100755 index e5fffdd..38cd5bb --- a/INSTANCES.md +++ b/INSTANCES.md @@ -2,9 +2,10 @@ JSON variant should be used from master — https://git.macaw.me/skunky/SkunkyAr |Instance|Yggdrasil|I2P|Tor|NSFW|Proxifying|Modified Sources|Country| |:------:|:-------:|:-:|:-:|:--:|:--------:|:--------------:|:-----:| -|[lost-skunk.cc](https://lost-skunk.cc/skunkyart)|[Yes](http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart)|No|No| No | Yes | No | Germany | +|[lost-skunk.cc](https://lost-skunk.cc/skunkyart)|[Yes](http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart)|No|No| No | Yes | No | Finland | |[orehus.club](https://sa.orehus.club)|No|No|No| Yes | No | No | Germany | |[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | No | Germany | |[lumaeris.com](https://skunkyart.lumaeris.com)|No|No|No| Yes | Yes | No | Germany | |[art.bloat.cat](https://art.bloat.cat)|No|No|No| Yes | Yes | No | Germany | -|[dc09.ru](https://sa.dc09.ru)|No|No|No| No | Yes | No | Russia | \ No newline at end of file +|[dc09.ru](https://sa.dc09.ru)|No|No|No| No | Yes | No | Russia | +|[opnxng.com](https://da.opnxng.com)|No|No|No| Yes | Yes | No | Singapore | diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/REDIRECTS.md b/REDIRECTS.md old mode 100644 new mode 100755 diff --git a/SETUP-RU.md b/SETUP-RU.md old mode 100644 new mode 100755 diff --git a/SETUP.md b/SETUP.md old mode 100644 new mode 100755 diff --git a/TODO.md b/TODO.md old mode 100644 new mode 100755 diff --git a/app/api.go b/app/api.go old mode 100644 new mode 100755 diff --git a/app/cache.go b/app/cache.go old mode 100644 new mode 100755 diff --git a/app/cli.go b/app/cli.go old mode 100644 new mode 100755 diff --git a/app/config.go b/app/config.go old mode 100644 new mode 100755 diff --git a/app/parsers.go b/app/parsers.go old mode 100644 new mode 100755 diff --git a/app/router.go b/app/router.go old mode 100644 new mode 100755 diff --git a/app/stat-freebsd.go b/app/stat-freebsd.go old mode 100644 new mode 100755 diff --git a/app/stat.go b/app/stat.go old mode 100644 new mode 100755 diff --git a/app/util.go b/app/util.go old mode 100644 new mode 100755 diff --git a/app/wrapper.go b/app/wrapper.go old mode 100644 new mode 100755 diff --git a/compose.example.yaml b/compose.example.yaml old mode 100644 new mode 100755 diff --git a/config.example.json b/config.example.json old mode 100644 new mode 100755 diff --git a/go.mod b/go.mod old mode 100644 new mode 100755 diff --git a/go.sum b/go.sum old mode 100644 new mode 100755 diff --git a/instances.json b/instances.json old mode 100644 new mode 100755 index 725e524..ceec4f6 --- a/instances.json +++ b/instances.json @@ -2,7 +2,7 @@ "instances": [ { "title": "lost-skunk.cc", - "country": "Germany", + "country": "Finland", "urls": { "ygg": "http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart", "clearnet": "https://lost-skunk.cc/skunkyart" @@ -66,6 +66,17 @@ "proxy": true, "nsfw": false } + }, + { + "title": "opnxng.com", + "country": "Singapore", + "urls": { + "clearnet": "https://da.opnxng.com" + }, + "settings": { + "proxy": true, + "nsfw": true + } } ] -} \ No newline at end of file +} diff --git a/main.go b/main.go old mode 100644 new mode 100755 diff --git a/services/skunkyart.example.service b/services/skunkyart.example.service old mode 100644 new mode 100755 diff --git a/static/css/skunky.css b/static/css/skunky.css old mode 100644 new mode 100755 diff --git a/static/html/about.htm b/static/html/about.htm old mode 100644 new mode 100755 diff --git a/static/html/daily.htm b/static/html/daily.htm old mode 100644 new mode 100755 diff --git a/static/html/deviantion.htm b/static/html/deviantion.htm old mode 100644 new mode 100755 diff --git a/static/html/gruser.htm b/static/html/gruser.htm old mode 100644 new mode 100755 diff --git a/static/html/head.htm b/static/html/head.htm old mode 100644 new mode 100755 diff --git a/static/html/header.htm b/static/html/header.htm old mode 100644 new mode 100755 diff --git a/static/html/index.htm b/static/html/index.htm old mode 100644 new mode 100755 diff --git a/static/html/search.htm b/static/html/search.htm old mode 100644 new mode 100755 diff --git a/static/images/logo.png b/static/images/logo.png old mode 100644 new mode 100755 diff --git a/static/templates-noembed.go b/static/templates-noembed.go old mode 100644 new mode 100755 diff --git a/static/templates.go b/static/templates.go old mode 100644 new mode 100755