From 015975d5db25157a1fae838c72025a9dbb35e480 Mon Sep 17 00:00:00 2001 From: semi-yu Date: Wed, 10 Dec 2025 12:43:39 +0900 Subject: [PATCH] docs(readme): Add project explaination - Add project explaination in README.md - Organize project docs in `/docs` --- README.md | 76 +++++++++++++----- .../BACKEND_DEPLOYMENT.md | 0 docs/README.branch.md | 29 +++++++ docs/bravest.png | Bin 0 -> 33636 bytes docs/graph.txt | Bin 0 -> 15554 bytes 5 files changed, 84 insertions(+), 21 deletions(-) rename BACKEND_DEPLOYMENT.md => docs/BACKEND_DEPLOYMENT.md (100%) create mode 100644 docs/README.branch.md create mode 100644 docs/bravest.png create mode 100644 docs/graph.txt diff --git a/README.md b/README.md index b7ed850..140f2cc 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,63 @@ -## ๐ŸŒฟ Branch ์ „๋žต & ๋„ค์ด๋ฐ ๊ทœ์น™ +## ๊ฐœ์š” -### ๐Ÿ”น Branch ์ข…๋ฅ˜ +### Bravest๋ž€ ๋ฌด์—‡์ธ๊ฐ€ -| Branch | ์—ญํ•  | ์„ค๋ช… | -|--------|------|------| -| **main** | ๋ฐฐํฌ์šฉ ๋ธŒ๋žœ์น˜ | ์‹ค์ œ ์„œ๋น„์Šค์— ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์•ˆ์ • ๋ฒ„์ „๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ง์ ‘ ์ž‘์—…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. | -| **develop** | ๊ฐœ๋ฐœ ํ†ตํ•ฉ ๋ธŒ๋žœ์น˜ | ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜๋“ค์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ํ›„ `main`๋กœ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. | -| **feature** | ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜ | ์ƒˆ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์‹œ `develop`์—์„œ ๋ถ„๊ธฐํ•˜์—ฌ ์ž‘์—… ํ›„ `develop`์— ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. | -| **release** | ๋ฐฐํฌ ์ค€๋น„ ๋ธŒ๋žœ์น˜ | ๋ฐฐํฌ ์ „ ํ…Œ์ŠคํŠธ, ๋ฌธ์„œ, ๋ฒ„๊ทธ ์ˆ˜์ • ๋“ฑ์„ ์ง„ํ–‰ํ•˜๋ฉฐ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋Š” ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. | -| **hotfix** | ๊ธด๊ธ‰ ์ˆ˜์ • ๋ธŒ๋žœ์น˜ | ๋ฐฐํฌ ํ›„ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ `main`์—์„œ ๋ถ„๊ธฐ ํ›„ `main`, `develop`์— ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. | +Bravest(์ดํ•˜ ๋ธŒ๋ ˆ์ด๋ธŒ์ŠคํŠธโ€™)์€ **์ต๋ช… ์ฑ— ์„œ๋น„์Šค**์ž…๋‹ˆ๋‹ค. + +ํ•ด๋‹น ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๊ฒฝ๊ธฐ๋Œ€ํ•™๊ต 2025ํ•™๋…„๋„ 2ํ•™๊ธฐ '์˜คํ”ˆ์†Œ์ŠคSW์‹ค์Šตโ€™ ๊ณผ๋ชฉ์˜ ํ•™๊ธฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ๋Š” Spring Boot ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์˜€์œผ๋ฉฐ, ๊ทธ ์™ธ ์˜์กด์„ฑ์€ `build.gradle`์„ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค. --- -### ๐Ÿงฉ ๋„ค์ด๋ฐ ๊ทœ์น™ +### ์„œ๋น„์Šค ํ•„์š”์„ฑ -| ์ข…๋ฅ˜ | ์˜ˆ์‹œ | ๊ทœ์น™ | -|------|------|------| -| **main / develop** | ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ | ํŠน๋ณ„ํ•œ ์ ‘๋‘์‚ฌ ์—†์ด `main`, `develop` ์‚ฌ์šฉ | -| **feature** | `feature/1-login-api`, `feature/2-home-ui` | `feature/{issue-number}-{feature-name}` ํ˜•์‹ ์ถ”์ฒœ | -| **release** | `release-1.2`, `release-RB_1.7` | `release-๋ฒ„์ „๋ช…` ํ˜•์‹ ์‚ฌ์šฉ | -| **hotfix** | `hotfix-1.4.1` | ๊ธด๊ธ‰ ์ˆ˜์ •์šฉ ๋ธŒ๋žœ์น˜. `hotfix-๋ฒ„์ „๋ช…` ํ˜•์‹ ์‚ฌ์šฉ | +๋Œ€ํ•™์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ํ˜‘์—… ํ™˜๊ฒฝ์—์„œ ํŒ€ ํ”„๋กœ์ ํŠธ๋Š” ํ•„์ˆ˜์ ์ด์ง€๋งŒ, ์‹ค์ œ ์„ฑ๊ณผ ๋„์ถœ ๊ณผ์ •์—์„œ๋Š” ๋ฐ˜๋ณต์ ์œผ๋กœ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ์ค‘ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ์›์ธ์€ **์†Œํ†ต์˜ ๋ถ€์žฌ**์ด๋‹ค. ํŒ€์›์ด ์„œ๋กœ ๊นŠ์€ ๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜, ๊ณต์‹์ ์ธ ์‚ฐ์ถœ๋ฌผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ถ€๋‹ด๊ฐ์ด ์กด์žฌํ•˜๋ฉด ์˜๊ฒฌ ๊ฐœ์ง„์ด ์†Œ๊ทน์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๊ณ , ์ด๋Š” ํ”„๋กœ์ ํŠธ ํ‘œ๋ฅ˜๋กœ ์ด์–ด์ง„๋‹ค. ---- +ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”์ธ์ด ๋ฌธ์ œ๋ฅผ ์‹ฌํ™”์‹œํ‚จ๋‹ค. + +- ์˜๊ฒฌ์ด ํšŒ์˜์˜ ๋ฐฉํ–ฅ์„ฑ๊ณผ ํŒ€์˜ ๋ชฉํ‘œ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค๋Š” ๋ถ€๋‹ด๊ฐ +- ํ‘œํ˜„ํ•œ ์˜๊ฒฌ์ด ํ‰๊ฐ€ยท๋น„ํŒ์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค๋Š” ์‹ฌ๋ฆฌ์  ์žฅ๋ฒฝ +- ํŒ€์›๋“ค์ด ๋‹ค์‹œ ๋งŒ๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ๋‹ค๋Š” ํŠน์ˆ˜ํ•œ ํ˜‘์—… ํ™˜๊ฒฝ์—์„œ์˜ ์ฑ…์ž„ ํšŒํ”ผ ๊ฒฝํ–ฅ + +์ด๋Ÿฌํ•œ ์ƒํ™ฉ์€ ์ฐธ์—ฌ ์˜์ง€ ์ €ํ•˜, ์˜์‚ฌ๊ฒฐ์ • ์ง€์—ฐ, ๋…ผ์˜์˜ ๋น„ํšจ์œจ์„ฑ์œผ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค. ๊ฒฐ๊ตญ, ํŒ€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์‚ฐ์ถœ๋ฌผ์˜ ํ’ˆ์งˆ๊ณผ ํ”„๋กœ์ ํŠธ ์ผ์ •์ด ๋ชจ๋‘ ์•…์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค. ๋ณธ ์„œ๋น„์Šค๋Š” ์ด๋Ÿฌํ•œ ๋ถ€๋‹ด๊ฐ์„ ์™„ํ™”ํ•˜๊ณ , **๋Œ€ํ™” ์ค‘์‹ฌ ํ˜‘์—…์„ ๋น ๋ฅด๊ณ  ๋ชฉํ‘œ์ง€ํ–ฅ์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ์กฐ์„ฑํ•˜๋Š” ๊ฒƒ**์„ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค. + +### ์„œ๋น„์Šค์— ๋Œ€ํ•˜์—ฌ + +๋ณธ ์„œ๋น„์Šค๋Š” ์ต๋ช…์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์‹ค์‹œ๊ฐ„ ์˜์‚ฌ์†Œํ†ต ๋„๊ตฌ๋กœ, ์˜๊ฒฌ ์ œ์‹œ ๊ณผ์ •์—์„œ์˜ ๋ถ€๋‹ด๊ฐ๊ณผ ์‹ฌ๋ฆฌ์  ์ €ํ•ญ์„ ์ตœ์†Œํ™”ํ•˜์—ฌ **์‹ ์†ํ•˜๊ณ  ์ง‘์ค‘๋œ ๋…ผ์˜ ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„**ํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋‘”๋‹ค. + +์ต๋ช… ๊ธฐ๋ฐ˜์˜ ํ† ๋ก  ํ™˜๊ฒฝ์€ โ€œ๋‚ด ์˜๊ฒฌ์ด ๋‚˜๋ผ๋Š” ๊ฐœ์ธ์—๊ฒŒ ๊ท€์†๋œ๋‹คโ€๋Š” ์ธ์‹์„ ์ œ๊ฑฐํ•˜์—ฌ ์˜๊ฒฌ ์ œ์‹œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ , ๊ณต๊ฒฉยทํ”ผ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ถˆํ•„์š”ํ•œ ๊ฐ์ • ์†Œ๋ชจ๋ฅผ ์ค„์ธ๋‹ค. ๋˜ํ•œ ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ์ œํ•œ์„ ๋„์ž…ํ•ด ๋…ผ์˜์˜ ํšจ์œจ์„ฑ์„ ํ™•๋ณดํ•˜๊ณ , ๋ช…ํ™•ํ•œ ์˜์‚ฌ๊ฒฐ์ • ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ์‚ฐ์ถœ๋ฌผ ์ƒ์„ฑ์˜ ์†๋„๋ฅผ ๋†’์ธ๋‹ค. + +๋‹ค์Œ ๊ธฐ๋Šฅ๋“ค์€ ์„œ๋น„์Šค์˜ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ์š”์†Œ๋“ค์ด๋‹ค: + +##### โœ” ์‹œ๊ฐ„ ์ œํ•œ ์ต๋ช… ํ† ๋ก ๋ฐฉ + +##### โœ” ์•ˆ๊ฑด ์ •๋ฆฌ ๋ฆฌ์ŠคํŠธ + +##### โœ” ์•ˆ๊ฑด ํˆฌํ‘œ ์‹œ์Šคํ…œ + +## ๊ธฐ์ˆ ์  ์‚ฌํ•ญ + +### ๊ตฌ์กฐ + +| | ์šฉ๋„ | +| --- | --- | +| **Spring boot** | ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ | +| **MySQL** | ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค | +| **Valkey** | ํ‚ค-๋ฐธ๋ฅ˜ ์Šคํ† ๋ฆฌ์ง€ | + +### Github ์•ก์…˜ + +| | **์šฉ๋„** | +| --- | --- | +| **Backend Manual Build** | ๋ฐฑ์—”๋“œ ๊ตฌํ˜„์ด ๋นŒ๋“œ(gradlew clean build)๊นŒ์ง€ ์„ฑ๊ณต์ ์œผ๋กœ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ | +| **CodeQL** | ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ฐ ๋ณด์•ˆ ๊ด€๋ จ ๋ฒ„๊ทธ ํ™•์ธ | +| **Dependency Review** | ์‹ฌ๊ฐํ•œ(severe) ์ทจ์•ฝ์ ์ด ํฌํ•จ๋œ ์˜์กด์„ฑ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ  | +| **Docker Compose Test** | ๋„์ปค ์ปดํฌ์ฆˆ ๋นŒ๋“œ ๋ฐ ์‹คํ–‰์ด ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธ | +| **Java Code Style Check** | ์ž๋ฐ” ์ฝ”๋”ฉ ์Šคํƒ€์ผ ํ™•์ธ | + +### ๋ธŒ๋žœ์น˜ ๋ฐ ์ž‘์—…ํ”Œ๋กœ์šฐ ๊ด€๋ฆฌ -> ๐Ÿ’ก **Tip for New Members** -> - ํ•ญ์ƒ `develop` ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜์„ธ์š”. -> - ์ ˆ๋Œ€ `main` ๋ธŒ๋žœ์น˜์— ์ง์ ‘ ์ปค๋ฐ‹ํ•˜์ง€ ๋งˆ์„ธ์š”. -> - ๋ธŒ๋žœ์น˜ ์ด๋ฆ„๋งŒ ๋ด๋„ ์–ด๋–ค ์ž‘์—…์ธ์ง€ ํ•œ๋ˆˆ์— ์•Œ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•˜์„ธ์š”. +- ๋ธŒ๋žœ์น˜ + - `/docs/README.branch.md` ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด๋Š” ํŒ€์ด ์„ธ์šด ๋ธŒ๋žœ์น˜ ๋ช…๋ช… ๊ทœ์น™ ๋“ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. + - `/docs/graph.txt`๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด๋Š” ํŒ€ ์‚ฐ์ถœ๋ฌผ์— ์˜ํ•œ Git ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. +- ์ž‘์—… ํ”Œ๋กœ์šฐ ๊ด€๋ฆฌ + - ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ Pull request ํƒญ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. \ No newline at end of file diff --git a/BACKEND_DEPLOYMENT.md b/docs/BACKEND_DEPLOYMENT.md similarity index 100% rename from BACKEND_DEPLOYMENT.md rename to docs/BACKEND_DEPLOYMENT.md diff --git a/docs/README.branch.md b/docs/README.branch.md new file mode 100644 index 0000000..b7ed850 --- /dev/null +++ b/docs/README.branch.md @@ -0,0 +1,29 @@ +## ๐ŸŒฟ Branch ์ „๋žต & ๋„ค์ด๋ฐ ๊ทœ์น™ + +### ๐Ÿ”น Branch ์ข…๋ฅ˜ + +| Branch | ์—ญํ•  | ์„ค๋ช… | +|--------|------|------| +| **main** | ๋ฐฐํฌ์šฉ ๋ธŒ๋žœ์น˜ | ์‹ค์ œ ์„œ๋น„์Šค์— ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์•ˆ์ • ๋ฒ„์ „๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ง์ ‘ ์ž‘์—…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. | +| **develop** | ๊ฐœ๋ฐœ ํ†ตํ•ฉ ๋ธŒ๋žœ์น˜ | ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜๋“ค์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ํ›„ `main`๋กœ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. | +| **feature** | ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜ | ์ƒˆ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์‹œ `develop`์—์„œ ๋ถ„๊ธฐํ•˜์—ฌ ์ž‘์—… ํ›„ `develop`์— ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. | +| **release** | ๋ฐฐํฌ ์ค€๋น„ ๋ธŒ๋žœ์น˜ | ๋ฐฐํฌ ์ „ ํ…Œ์ŠคํŠธ, ๋ฌธ์„œ, ๋ฒ„๊ทธ ์ˆ˜์ • ๋“ฑ์„ ์ง„ํ–‰ํ•˜๋ฉฐ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋Š” ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. | +| **hotfix** | ๊ธด๊ธ‰ ์ˆ˜์ • ๋ธŒ๋žœ์น˜ | ๋ฐฐํฌ ํ›„ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ `main`์—์„œ ๋ถ„๊ธฐ ํ›„ `main`, `develop`์— ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. | + +--- + +### ๐Ÿงฉ ๋„ค์ด๋ฐ ๊ทœ์น™ + +| ์ข…๋ฅ˜ | ์˜ˆ์‹œ | ๊ทœ์น™ | +|------|------|------| +| **main / develop** | ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ | ํŠน๋ณ„ํ•œ ์ ‘๋‘์‚ฌ ์—†์ด `main`, `develop` ์‚ฌ์šฉ | +| **feature** | `feature/1-login-api`, `feature/2-home-ui` | `feature/{issue-number}-{feature-name}` ํ˜•์‹ ์ถ”์ฒœ | +| **release** | `release-1.2`, `release-RB_1.7` | `release-๋ฒ„์ „๋ช…` ํ˜•์‹ ์‚ฌ์šฉ | +| **hotfix** | `hotfix-1.4.1` | ๊ธด๊ธ‰ ์ˆ˜์ •์šฉ ๋ธŒ๋žœ์น˜. `hotfix-๋ฒ„์ „๋ช…` ํ˜•์‹ ์‚ฌ์šฉ | + +--- + +> ๐Ÿ’ก **Tip for New Members** +> - ํ•ญ์ƒ `develop` ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜์„ธ์š”. +> - ์ ˆ๋Œ€ `main` ๋ธŒ๋žœ์น˜์— ์ง์ ‘ ์ปค๋ฐ‹ํ•˜์ง€ ๋งˆ์„ธ์š”. +> - ๋ธŒ๋žœ์น˜ ์ด๋ฆ„๋งŒ ๋ด๋„ ์–ด๋–ค ์ž‘์—…์ธ์ง€ ํ•œ๋ˆˆ์— ์•Œ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•˜์„ธ์š”. diff --git a/docs/bravest.png b/docs/bravest.png new file mode 100644 index 0000000000000000000000000000000000000000..8112ba001da0778fdd0a7366921daec6001e178a GIT binary patch literal 33636 zcmd43iCa_G_C9WFE7z-NTSa896-7ZnW@Jh&bwCWL7{ZKz3}H0PQ$Vj4WL7|sG0H4c zm?0oR%Mc+9N|+O%5&T zCEb4bS*RKC;8vT0yX0RP&QYc#%WxF9b5gSUq zidgZDmR9=RS9iEJ>{(pwS4X~@ec;qs7J6}SanSEc&+gt$CO^LJn|j7F`GaKYsdKK~ zV()i#i}3|MeFh&@*wpHll+x1al~MXyW`Y{;Cd}59y{3EOgChp z#BvP3R=2OvY%iD*_`O=PI<=@zt2u|U845~DGOg^HVoPyW^IBvGrwG zU7c=D-p&)dI8Hv6*tdkjpF`vBvAiy-nm)QRIC5mZIH`*$*EnA`=_jO|YvS;w@nm%* zg}Db(5~LFv(0wEK^Q4!F*{i;X2?JI*uOKJE^l) zZhGs=;I*5CArVqxRPG5_Yijexr#xyRqCL^68^HPaVxWG@lmXXLEJsx=3H7Yp!~# ztk*S#`N=%|{7iLTOaawhwKadIG$(% z!5^W1Fouv4_MdCXbqg3+=*I7?Zi0X5pG|HH8hGcG!kXy9%|Gw`JjeQG;5AM9h^GWCRH6r4j9*o_QEBgYAaOTyZuVb@Km^=4hxmZ8N zX5V%_q!RnrTv^oF9Q?HrEz{zNox8X4 z6XND%N^AI5bKSZ|gRk7}RgU*_8{x(~w|7;k^lPvDVmXbn8JZ^PqvedmT@aRnCi%sd zB}(A^eFfj{%wv~@vYb@VBF_8*21iW^NG=#Jkg(KjU#I@1E022m(?Tg=Ft?WX z>KF~iBZdyTkN#Ho>z}t(l(LF*7)Ixe2G6kT{(Je72hfYhA*v?H>hw;|qcq65g5MvP z5f?BdV5iv_=oY!2ZrEZ{aN^6HwQUgNHa<3*u9Xo#m?Rg}`n$B)6%>BCxpCnL$;Ap- zjG8IID0$tlo_?XlyWqq(I~{Aw(XL|(OWme2!)D;g1vU!wi{&z?(_f}(F0o=^P$a*2 za5nc&itGZ_$`a-%Wn}ziPz&`Y7Eraw=-ppJj(dKE&T;2 zgm&(_5FtgTQ(~}RR^}BMsw=E*%`>IDzF|n>LJ%;S+8Fi%_(U=?sRsv(w%_+1)+)U)<=Pf zUmU8`WpGl`e)@8^sI*+>N!agKlM52cZ6gP7d|8BcGoZo19e3+nLJy5p!WcTKX|i7) zN-OoW%M8l{5A~JUMh_i{ z%;K1*6yZCay^W;#qHLb@5o=5nfed4$tdi2YP%%3m>u!XEDAUW=G#=bJ(b=4uc53IL zkGR!pV`s#O&l`i&V0=gFYLq%TscG_G?iQoZ=_|4yJe4)FrmWZ1-Q1DT&oG4Z+Td1- z1CWp{<8RHelli+_h|YdT4@rT_MWp-GX5^Vp4K z*%$Xao1dhe-D&=@;WyvG+t_vJay{ML>i3{-Z|3VbK>oa~|Vztw0>N7|p|#_Ndc; zK2HW_&CK;9K&v7NE{n*q1f z_y1@P+++-1t_8f%iT&~U2IzZ_SVzvU(;ocFsBp&yo7#l;dnVb7@FZ< z;^@)u22+;#+r*ZQKtG&oe|7F_>I-BXJ$U2G-Z+^WmJAldAT{mFhWoLInqreI%Y6Qq zG-q=^fI%MoYoe#wvj2Y>$_x1{LAU-pFzv>&fvf*r(G<8CnA8#aDDkhE-ZqN@d+G4X z|7~RsAO-oq^4M;bgt)M_^_Kv~Q;!)fI$z)w{GUrsi0d%*zpqC#SdUP|_30CTU9>xG zm^?&^)wQ$k&sx4Tjqv?H zmntk;mY=45*+V`mWvK#eQD%3A^rtZ)`P*7WnW`~3rs%ZO+gsc10oG0(C5?t0sBrvp z)j`wwa&qVhhWx{ydg1~}&lHjGlKfv=)`Z^B`l1BpJBVgp82o2bWq^$z)P;YsNcOe} z;hi5isLd~acDWW3L-c_Pq%rNUcC)#VgYf`vlT+varxOh>+z-?mL==MbG^L#peiVXU zZi|y&Y+S;>(MUA@ulu?WEq$e^$FLN+<_qNIIY5Ia0T{K=xyczsjei*ezX}?{ERe3n zU(OejZa_Ui8C4eQNVxHlo%gL9FB_c&CV34pgfk(De7Tr}gc?_~5USADi^BieZ#C3! zckCP*_2SE=i0wtk$Ih)mP~)%tVOuVCOjx1w7d*is6@kg7#|A7+w#=uqivG`au-BRY zwN;VykAc0&9N>XV+aSO0*DoS#3xPzYRoZ4FLWY@=4t*If7Ltt;1Rua2Dft|2DKJB* zW2LN6!BB&$)1{jWvwqWU%VDVCSLWN3xR)EUy|_^GK(mW;fy3OvPf+7qW@D*edHxGp z1#4>_zw_OCEXwlh#Q(szooZE}rt>a|-@#M{kFdzUZE}3b$=^tx$l7)?w-}y1yEGp_ zW2q>W&x|gd{g=h=zu)?GIqEck07wyLbeC>gk`d|qsy(1T@Ow2e4!soz402)#vI-5I z;MuyvUwPa%+g8-_9Jtu4C}>&hGJpcU>#WHra{iZv&_AAr#+)^lQN3)Vta$#FPW8@q zGSXkP|CZqx)N?$*#%RP)<5kkZszfkW@Vi@IdwTcScaT|V7CMF|)vfQM_ZDsM2o}0o zs&|DSw>Vr$uItxVRMdU7r|R!rLfSic(Ojg@5JGjAtpe`~-};}?-kW6q(D~WM%J;6Y z2_R4Ng_5W>BD!=HH5XaF( z#eAh1^Y=CSDX2XagmwyxD~gAi0%Ov?s+fPw7;+DF2U=a8m(%O&c4hrz&X8H56oIdN z;O@<_Mp=H4Vzu(;% zn!FB{KGXGB3le zbnYhp&vNS&14SY=xp`N;^x6zZjqlQV0~S{MHv8kN-$di?i&FF>@2oUE-Fi2(^&!5BH9Ks#Yq?wy2Y8EiC9^qjVdQ{3Al&Tf=gSI^od4BoPC=j zpGPNx7<;2uv~r756LMvXU%eVBZTE!9qfJk$@mF$Y*p0E%0^2Y_$n$bRseDnSf%LG@ zk+`|ieQPPau#03;gU{~Z?eM(0Y1f^C{#q!mikmHP$EwFOixQd3oa&2{N+Ts`S$jFGaMTUomyKnI=S69D%N1D)3G9Vn|FI80M@?5w0!|zB)euQ&^hk(~3h!eDZ z4q0xj=@;qqqA(RlS_&;FmFhs|8G)_!MPC^L>#907)1MBREEeZR5Yw;Xxdd7%-8}%T z;_h<_A~)QV`_0fVmI9;l?~9Sne#DK9ho$BAN9lj)mH{{uzO`yO`dA4m(ib#S6B%kV zP_3U@J@az>?yQ2H59sau})$iyVumT^kSdvNS$@Z1naGZTrS1? zK)ikAsgWc#Bu*};#El?>F^J$1ny9!0($- z_v+7rVTP$lk@MFdzXFzV^gmFpW-wy6e|3q#zI->k;s9@GS;#Sm%URTLJmRk9-9cn` z66Y@+JPJ|<6z)QLuC6xrfY`3q+Hk^eH3XX$2L}+Je(y2amWZ^=c(J)MOn>#M6ec2L zf5?M-D6b`cp1wPb#ChO<>yOBK+$+_o>hLX)kcfFlfV?CG$IUfyM^Yp@8MEf^CMRT0 z#hqh5ZIaU0SeDaQju6CdFeAIBTQv*_3jAfvs;f+*eWV`8e~YtE3P1OQoU~sLYqeo^Uy?xj#?bJwsobZV+stVs?f8UKC$>j`lK4 z$v1&k>exI+u;Dq5U!}+m&gg{!rFaI6^+eYw;Wl4whCPsA-{xkcj(eDdi49RxcLG7&yGY`6J?1o@fDyUN zDn3pj{2&mNT@MqZ%&6G%m>XKt4+WHwi2JM7?;2?WzK=@Xnxwb`TM;-TcOOHBDKasx zyWX+4n7A<$cvD~-KRco_rQ5ke@kyQ3>e_s}v9=y~mIJ9jSb5j|e(|W9ru@w5uhH=Q6 z8JExPsNN#6vpWm;7Kp3B6IS}#U`@5koN=>UD5x=JFB0{$-z;OR1`F^&g1ZRE37hyvdE!)s+Z zu6;=}0)aNiXv?dRK*v@B)te=btmiXFPv>t}HF7V#i%3=u`h8HjxbUlw8LTYvG9QZJDPf%7gq&|sQd*$$kv;@6 z;!3e6U#0TC>&**mX{@Xh_-fDdumsZDG#Wo8mcD{o<*FTt<75s~*Be>3>#6oehVLco zvQ*8b2F@Qgq<0j>v*ZX9c#8z{+-FVJ!`>wpn-{lwOzSW@ob$_{eJ(Q&J#*&8G%*N@ z?$eieQ;2h|%RQzq7#0Qwwzo%~@%Er4>13J(OdE6jTw=&v^V`h0O>TRjQc@hJ8eQ%) z!Iuqe7T@@GW~{IO(9aimbLyTWMHGPi>^Fi#BFAT%9lLpRV75_Z{<1c~{NETM1h zMA{<4!wjrK!p$_1DEoWIZM|AWXaMbAvZYFU_T2L5>>dL!Ftamu4#6<~V4G)=Yi#`W zTQjFDRn4nhcwDFNV1Zns{ZScMR!h15Qp&3KAB7-Gb#05Y&Jxiae6&~7xg6WXyNOP; zip51_~U&z{WKe=Z0$>QIkQzz0|L4 zmm{tWxY=uj%o=PZ&N>YusHoMW?M3^g0yLegW_=HtC9D52!Isa#W-oeOxuxydVi z7i!u>I%U8v%|Nsu^-#O|e+v2nS2ZfA&qi5gQY#c0GYU^^Kf?^UxfKL*9u z?G@=$nAw;vojjaUc~tXFPglNUC@=8PMM?I6EAF6hUK70DXL8(bK=76z;vuT#K9>5t z9v}s4rRB?E0P~86GNeZGBHlWlp#QUNf(lA zvVAJ6y(nVy@M!N(V6x#1#;N}E30M=If}_Z+?d7sjERXvt;u4~=maA(V`FuN9CC z;~LSvGI`v8R30swcG4aY8+_39e)A~ND@gWL_oVauqr&xtvtW_kkRhL|H=Xo)Cy=kN z7-COD`<+v(07b4C62M5~Wsk+|IHwW*;Vm`d z?0VgyB>V`=|FTebQM`TmWXYk%Le~$3{&G=v8$nxXQLb}!fp;huf_Gh*Zrv^mI|(Q5 z!eX_%1qfB!S%Db0`(6AD>N5Z}(tU|8&svp*vovBU{XA7-&{L5<61mFt_vgr6SyLL7 zv?SN0=;jfmW1_)ZN}p8D6XeednL-_yd#1M&D-I9aCng=VKXtMVThvzs;%<-bqWujv z-i}w2Io4GChWYx&F+st}Pir&xs^Mbu&oE_0+A<@c=wck+uZD~imcpQ~3R>mqZ4@ZE z@82ZUUKIawGQV(=W~e;C?;gflZ_a3b9@f4j@Z-Xl{g3KaV16QqYowHVN{gj)&G0HH zP0sk9gwm&5mYLFO&&A;f<`Rjw)>39Y0-@lth8Xy)GqgcX81ohcpfAwU;g-usOJq7R z8KXqrh(u9Ys^43J@H9Z^5*~zvqdIw@a7O|4iLDMNlkp*$F%a%;PbeEi;|2WDsqejm zY8#c?rz6Zj0q>regIU)AMK_4)2#~eB0a1;3VXbu-i=yg7NNq(=U zS8`ec9~bpK>wN0!O0#?yt}UFEf0(%X-c`5Ku%ZN;6{UY!!Kd4Ni2aaTZ%<0J*RS9Y z1>c<3w(XN;>?v#V;Z$iGz`A9$7Cx2raO|B7Y!%@+VP~_bkz}}-=Q*HsFCr`Sz8c{_ z@CA9Lei|}^$&QS&)M_~GbOCWyaHc=Tl!Q_8GH25B+Dwo}KI5tAH@|P)ZtFWLf#5yV z&v!W{wFqz2wzt<=zBHxLpRv+!Z*UsPOL?l6B*w8mu9TVr>r09(VMb0)$um+iH=T5P zmHf5_6V=zxZ;rdfe{8{{J$|e={cwa#FD}El)Z=_D`Ub6)KtdhQTn*j|reH+%XOV-c z)Xc~2^z1SNM|Ol228hb zd@ok+wv1r6AYyc1ZS!d-sLGhcm0=I? z?7ci!o3>E zwWf=InX+bashfdBkcquaTZAw5#mlg8Jxpzc)elD#Eyq)sn{^ zS_oNYs~Mz6^*O|9tl9e!eIJQ1oyb*TJ~mfzB8`jzSK^C|Gv1^m@xh|}VROxoN0?cD zPU)JppnlVQZ6w{;Y^`Mc&wWBm<%H3tVL6H;T5xTBv7sq{gSxS?@uX*=mC`631JlLx zUS#Iznzmfi5!qed{Z`BQj3-XnN~CYnS8x$jP3br&()1q=94YteIhwR6G0$&pD9PKz zY0vX6G>0Z$Dc{%lCc+zaTwxKZl(;x;M6O~VX)t9u6VFk-lcV~T&*oYauFh=;H+qpo zuNtmYKyl#@^QUl!pLwosd{9GAqt3z8U%O4a^d3|%2^(&_Y_?tkZE`n35^C43^3H2o z&P!r&W$SvM+0;#4=F7a0OB$JW=iu-AGoHZ3xDAY!pEV3uqNiJ8=Ry!FwpWp(-&;0) zx}D0)9xS>!EeG$MGRC<-6{CHMW&U9d5ZTv^gZ3X1-+vbuvieAUX(|?-EsdEirzQK= zv*Re-YpBI_EAEIRx-v5Z8Ga-33K-27QG(pvNyEw1=VB#p(oH@TVWme!zOKC>7HjqE zJMq%i2v!=)QCe`<{i)L4%UQ)|TJr(2&ux0Qz82xNxq2ivs{fn?v^nSp?p73TNk0OT z9&tpYfj0@pI>nAW&P*_YV3K*Ub%>zq)5{y3?UM8IB5U|i>v#Mv$OXbZd#+(UWDYB* z2ILg^$?eCObuGWUXTNr%3*-K|g~1Fgm}v+gZOx}>)^dtaS6CxWZg!7lD4$Au<|2XJ z3L!wC8nhH;(Hk9kwS76KbF=$2+7_dzrL=Hoacv7*xR%NpCOC#D!O8g`4-I)nkP6HM zOL6|@P?E7(C`mZP>>~F@7ep~(vlnk&;FTKIetuK&GBRS>?@E>pV#IV3g0t!xVXlxv zpYPHbiv`KBkL9YMe%K>jdoL|&Qa8>SvqlXr$p46ISpm*aR2zbe$w{&0+Qf+)bbOncRv9QvnUX)3bTD~*>iiSU7GRo9 zVf;U)pbS&>HMFys9JW*4&+B9aAu0o6@XFAd<` z`6K*}uw_4E>mg(*z)Qso;|jIx9yMmp;9H~8JiHa(Lbw(v*_hvB4{4BTCHXl$9syo4 z0zI^a&h*YvS4xXKu0+ppZCL{4Mve7p@=aT{f4;uD^eOced=;)mg^Mkk(W}p)K*|g^ zYtUF%C_?rqJUyX+&I-2*)Y}c^CyN|XK$tW_trm9#1rk-^7SXQG4@r*w5qerjP&vB# z@Rt4<$}5s;I&$%1KIaOmv@&DICxhfGB=;yQP^2^_hnoSFuK;3Kh7&aay}}TWJLcsK z_LMX5cT-~!JfT`dS!G8rr$rg8ftr7&?nOhO)1qCoAA)H7nNeTbBh7*X-e<~V7qG6% zWkdHSh(CdM?fd7<@PO3wsEAVpQsCB;zlUR(>QbX%5|nvDRNbryQ<$vINI<{SQ_@WX zile_aLwF8AtE0D+K|k zFvbP+YUW3DdDzM1<*P6CQ`Fp#%&5FAh9>tik57ftI4B+O7fq9P%3)%KCO0GX;llw= z|4`nH5;yOxqOB-^2Cc^(&!Gly+Gr6%UMMx@;`Y~yK_wAyNkcD6gIa%9ltIc2hwr)E zw7-^vBUb@*r%G)uQpA-^>rFL;zgAalyvqH?iS^k?>eR?v>%te!-r0isztptPgb63t zO4j>OrpM_pG z@vPBzOh4$;%s5UiprF)qDhIqMp0t4Rr5$yLXi(S0IagowaOilNN(Zo}IQ1nHpj5MX zlCqcO1>Q4teJ$H?UV1j;^JOVizGlG0&dvq7Tj*8pk$KJXMR6#O52%CGUBIZqUkiWV zn3Lp6C>nac7->ST7yayX)CH;%3WvGW;rgHG9x*&qIjvme5H!)`ww%$jHE1rH1n29) z$?)2;m;Kdv(oX?}+d+f6?I_qoAW-tf09k-Ee}#0{LCAbd&#FI&*8l9BURUR{+9XfUInta;@4fT%OA;G(o_A0#lR_O`*&Y z&-NZs(i1Cue$dK$$*@8kj?0dkv_zW(qnB%pZOi0~+tP~|QGigO<(qzfg0nbUglaza z&#AQx+fPCGG3)ncV18M^=Ir5SKJB1DvWzGF7*GMlHmHd}J8G2coR<;^H^RkPw>q^4 zEcBPZViSPHmBubyZG}JL*k&IW9EVQ|Bl_Tx3T$SfQXNz@Gz$QAr0rPvPfejblzRw< z;9~xSIbHao@jZYcCcUQ)(Gnh@H!l zXbn;9Zw~_NjiLkh{68-PSW&bftGyXGttjWvN{?$Sg~k%1b!5Bd~x?m9PQmjZNTbz`nRgQUnT;E+@j2K?MKacved)2V{y!L+~@ z^$S|5|1h{AgV(lg$0lV*K+VhRBE#6U_;lj}ph^8kbxv*`U9VI3()H1^x0i!OIWz<> zeMm-qY;6ql|6|nGNzxrcdxk3orP(%GLHI(0`m^=|ugpQZk~BM9gRN0maRxph?D}_q zd`zlTTq82W`v|nxY38d>HarM0Y<&S>QjwQ3*f__Rw4*El5mUH@4X}uRVEp~^2qW=8 z*G}iHoBSH%)MzO{`AQ+j{K0 zUqmaW^{K-d0e&xh7e@W;jVF30kl9!M`8H4}6(BXVcoqI+ZFjJc`Nn2m#-LJINOh)% z0p=0lU*axc6Pc?#g_RaNPy<*sXpvu(>%hX~4Gh#H1b3e>YfDzX7p%l@tWk*AN%!aF zKGJP%Mq87L6Vr{61|XbDw4bivu~%1*t+JD1aBHa>F9%}UA}zTZGXpS?PL#oNDX^9^ zR@j-RQyOrJ-O~!WeT$;S4s3I38a54p&sfS}TcJacxlR9QIf1Ifc9i0{_tJuhID3#< zK16@Fdt%MSpQJ4_c?VRebVnLO(FFWODCCad$;IW*C6$3n4!T z;wT$%n%|VlNTX2KXb4E7BfE&~j?s;k;dH}{SPlZ^j>~cn^Lw#0n%q#LEu*IZAAqY^ zvuo?7Iw#zqy6>HJ^W2*~dSh>OkVDhJhedX-MtFsX2Lgkt?BPsB6W)(gf5ZU(ngfBr z3BGBMdj52a4;aKbtJKfV6WA-$01AMbd0>uq<9Zf;qVF4p=^v#uQUc9>4qv7aN5iji z;fWhBS8O&pcv2x&A#rp!8BT-3h=dA)X{Niie7_2tWKS?*J<;}F@xf9b`mLBvkfa-# z*7fs~tnR|eHRCW-h@7}r?hMaYd@9XdnK+Z!eWDB`9U-!?#c}>IrIq%XnzlOL#ar?7 z#bsT^ey0;D#KGr`-<}rB&4XS3$UNP+_&K}3yw&|J#6=NqO)2%|gyBgQhV}GIt_V#{`Yf6-!?=bZza8jqR2xG;C1n0z~f= zo{r&*lD6+<>_yp3yYJc}JpGfNvKtd&Ek;zCrYR7{^aG?bGf+8VFz2oHL;YG+tMVA3 zW@H(EU({zH;1apXf}g+|PMIJwTILTfd&yvvNZl(9_QwrYL}+yT6JDOBv;ot&kVtZA zHuabR-)#M1Q?F@)-O)B^jgafB>bYAMLN_GY7*wcttTw?k3CHbCQ0jLTd@ob$v>YgJaGd@i6TR0mqH9L_IlfNKB^PSf3S}j`I za4BgzfPHkJuX!8Kadj|C-dxy2nm>+J?JYj{td7m2z-1KJyq<1sgM{%6VWqFDb6r}6 zb*Yo_;T&3W>L^jV)|0Q`{@&QeXReBu*&nCVwmgLmQ{ zQf8Q178_1Tpz)#<5=<#G=tGxw8H9?-$8_X@Y}(~Bg^E!ld(jyL-v(0C`A+;|zWrfO75B;W-{L(QlI(6?k@8d4`4f|W{ahUD?m`8A4Z>UWO*%OP7 zRFR4e_?}%{natJEUryL3nj1g($z|$u!|Ync%h~i zsp^_UOFPUCGBFax+}V!w{_vbR-wYRvzTUDoA8gw3adUeZ#>qwPT1Oei<%w~eZhZBC z&4smCe~ZLefYnL@pNyW6jz2 zex0=w$o9+8j&IF#-IVCA9}?RidDu_>B=sMSvWqGA@wj)R6OEEahP1QwSxX069edX6 zw1cM95@~7_VTsjMuB(27ggr0D|M4D>g9dBc-&GXvSBd$dSf0*pgjHuA82zJuB}{@A zfm{ymz3CB55(B%{_W`R$)xR;AKJ!ZS_lM_4WWc=pR_VkJoWOf__G#Sg^kr;jK+Q^C z@m5dp?2`+N%9VrzE&#^uZXr7?{1&L+pWsx&up`PzX-!m4_+!?pHRzC1CY49;TI_)68UAnYn%>h#h>z#4jB|J7^5KM$BlyCHlYzH}p_Woh?v219{b_7XyMcU8=Wp&(ay z3^)GD?lesSW#L)HQoIhz?mz3LHG4?1MLRJ)0=ocPNlTDLUwAO86M6B9IZO&w|yYd#QmqY<0mg(8T7_!EW2RC$XI4j6xOG>)hg7 zusGu3OfuQwV}gY#>jP1>m-DITwgPT31;2FPi}Lwf05TQ4DJ0;--Yn`CI;5OAoHFgB zrT8If^v(o?|BvCiq0-Ir8oQBm1m)&g6PSOIYKot0a+5xql)+cyp!qsIf%EIAJzwVO zqDKP-TurCcz8vN2X9fxlf44l-Yie?Cy(5?p@`(A7N!Gws5da$-qMjo=*9TfYCsP@w ze{^~M;r?#23vhr~B9I{+x5oK&_&n&m&eL^mEk{^3`b7Ez>Ss4$-Sp#AeNlWD8m$}F zX^CsJEU_gG9{c!2d;X=KR_=N8AsYV@xbExtW&k=krtRX%x5*> z3`ERda)9ehdA&pC<+Y*Xll7g9xXP!^DC&)Z8_Ruia|6E z*z&^Mb;8G%OQ47~+h&B&G>ut%Q;baV(2pAs;1)=M=HELf}YG~GEAf&^ShsI z2NAEvdp{J#=WV*ghnarqy*St%h11Re2b}?KAuT08_-qFBTKdP30u-mrxf|~(*TB6y)V(fN~F(k z@NE)c)Xkgo`dJ$Vh8mZ{<|}Oh0f}C&H*Tvw{YECby^I&rwvKXW@30Abw}{uGZiC<+ zh-SRGy1%vw7g!HG;X~58D4wJ<1RR61H(9ICmjAr&nn|Ym%>!n=F@@A>$zLEu1aG&w zKf5+-zntnn!W;(#7%9ib?Vb73ma1z@MnDB@&_gQ*)kuH zG73Sr>KVYI_@ZpQ&y%R`?_)z&W$;cD>6>0W_OmE0~Nn;xWs-D@5hs_B-KZym9Y63Actd!ALIML`Z8PGeJn3AZ=M3NE4 z(O+cJv747MmUFeY93m8dxY(o_=K9zWiI$ zOCKA|X7n{c^@SULI3*dH^so5tXH`ILwq*@vv>s`RszV0F_Jz;pYX8KfKOE@Vc zO5)%gCpTIwWL6H#tfWU|t^(%b6ZGWElcBcj*j26;ar2Yc>dKUuU|D~4mA5eJ^N`LG zS%r9HuzGNYj);>v92q#U!IYX=o7RiK+;@-gUHrvzl)<N>H+W&<2lTjL({;_~ z4HUx)OQSWkj~I}<{O;Tp2JbBpnIG6| zK8?sO-`CR?Y-%`RPAntCpS2E5c>nQmd4y2oz?F|=SkEryw1hq`+JEVF(f+#!+#^4G zLq}`5Kip(!&6fIxuCUItdUi8d651Ddi#NIChuEvmrVo=tr+d6!wzdkE8nFGl73Lop z&PR7A%nX=#x1nAFQbWYdVGB{(J)a)8wqv7wf0Vcq{T7r>d8!q?mcnoKK}UpM5obBn zp3bk}&(C_1=8dBt_*IV)LNA83t&|gSAdkS$tUosZIhk<+GFWepU`I_NTq@sd`p~{j zJ#kfcW)xe|!-<9kEj2a+CrOQ%nzrj|@=UTjMc0MsXpEy1D^g1nfuEHNt1DUp%`V$S zsSN~X>@lZKEhk4&b!ni6)|-H88YThlb3xw}c=2n5tMWGO!~>P%K?s7CBJOJbwOTJd zs{1-9Cwz-{qO2^ki{4jsgOjLff~~>Q3FP#tMPw&tF1pUAtVTQ24n1(85^a-tB^zYt zcQw5I<@!oY%E&_X!%2Mu1H63JXyf!Q9r|8)a$=p~^kr{5sO+iJmTdshR{a;h(mn&p z%ieC2py#v7>>&gg~)_2=EtmhWBzio;If8Fesn-fJb zR>8?UmKxm^M_F?ntZKZv>?_>3fI^M6g2R5d!lnk|^QSvs3a*R)_we}nsVLSQJK}xxI&qE?i z@Xp}KmFRo<9~ABTCwmm&iABX-69L$#LCPp>ovps8YfT>CJKS^HYL>v@3ETLqRt7dGN@6?B;dJ;UU`bI~M+Nb={EzNM2s&G})WTb|0i`EPW@8Er=6;}dl z)OP1vcqmAh>B)wLhfTeES?_2n_@4wZQr3$bh>Y?Xd)`|5pK-6cA z9W1ec+2=-ukGc4nUBqD3!!5LSim#EMKBEOpbF_7MVD=~si;e85|Gb!efh^rfkqqUg z0GifwedKB+-+;XtHB|ZegA@5q*y)jJE~pQ7I7$nG#92io+uY|z*tV4*I+jq;l71u+ zr~ctcPqT^EJ&hRdo`XG@2o$dr7Vr@|L}U41t%Tu6MVu7CLJ#6N(z*m@u?Z zP7a$UeAyF5lTb0N15cl(Nd~4vIDeb6RIGh#k1$liqj_gUz1b7P{O}vz30B}JjrmcS zUDY>O6#sNL%+vnFSz)OWPheaoy=4@l*UB(Mi|@N;;!)yeH|5=|%}&oCy#5w|%+@7= z%;mTXYtg8x)+Z99cXjoJ!^j<8e@JJLRNl;lbMe5z#rTc;`O+Ro*@VfQ26_J5&~^eA zM*?J41&7#lnd^O8$jfGTK1DU1KHd+5nY8a7vw%(-u9g^lCx_*Bhx@c#7bHA9 z<3T`oq3rrvI-vXApvv(a11nKZ@|l8IX+0&mwyerT0bp_D*9csH?8MW32Cs#A6ln^3 zezx|ggT+5-kpvt*<7NnpQC=zd(H`%aavFr+>MO0;w3q|402C1!Nk9oGMrm8@o=jbB z2P=|L?W*4DnSDq4P)^9mp+~a9^`J^8q8|Ze%}suL^-36!AoSh}JjJCY-1ORNQ0Ky= z_7}2@X4I+enjmND`R11JL}Ow}&s-=}uhwm=+Z5?zJ2Ao|KvJ;0HSs{Jj@#U{a1jTK zJn1x0537DEGrdb8Q=-7Zr)l*}Yk6eS^s@5Y1DQb{A0h_15PI-jsz12E2*n8 z=FCy@or9E5TFyhR=4(RA*r2U zP`UOqje!Q*1!P(8A@dNVrN2|2JYiH;2DtAs?+6KGh)(&lj@Q?_zi&imscO43cCS$b z&Zd^;2gmdSXS{J6$_T69-1u#q=#$Tt2~}QL%1+j7eVQU;YF5YIE>6VnW}HNgNt|3B z)l*sv0Cbb|>71xZW3(>c-`i&JRhU!r-tstzF2ANx09T%yVUX)2A3(JdJemaxw}g}^ zp*#MA++TC04?0daaAc1g^{@yZPwEEc20r(f|2EY7X_o5ZK;ir9*E1H8r-G#RzhJ2t ziZ45eEf&QC?l_tMtF8FS?6Thg2?1!Px3`j!wQcr5#G@kjl}=uhHOMq|XmUbZdRL8g zeeHv)5*8H-pR;fDM&q1`Cxn}Vmzej!;)+5%?PdC9>+4+eP{?f5^~1bCt~SCu9;4I` z%lcgE{AyRd9NV3+nWdfa(uLW5A$dIxFu-6S)kog>m_)_Tra&dT#){(MYD$@nuDJVO z4HHsBz6>=7Bt*&Iy_f97bhO0<%(mjs$p*ZDOp08`XgxZRQAPw%-@3p7*RruSpvN7R z@T7CdEbC(LFa0*Ot7!koPjdqvwWF`^P5?fEWO`JX zMO5?Y<57XRhQ}Y&#`(QY?mN0@7MITn8eC_zLc9U3u6r!9`ci-f#4}i{-($_KSp*f7 zI=^}TzF9Cn0@$KKEih}FUIz4H1=Ncho`DiBqEAbge3(&)KDRkZ9peBNDNskhMjr}c z-%S9(X%G0nZ|%L1T-UHDip-x=CQ{OrpPID(Y}&yX1%_iKxdO_$8wV?nZy8BtsXjds z9r5q-2()+qWm|8+wLpm<{Dn&<RAFkAgMClA+VvW4Ml(U^B>l#`C zxx@a><;}uYh)m73yR@0|P!@F@pa^U9GUgLRQSiUAN5>P`Lgqj*umw=@k6`H>y#bxK zYu7)c>3r6oQRY;qtdN~0cO$9UCvy<0r6t|&I`?Kq(x0flq!Bm3veM+Wmuxd-fW^~ky`+$Ck%GS8f^hB@rh;hYS;E>BszA#lK@}O z7+LBD2h7fi^if2?=MpA&z9OUk_BDp-iT4Fw(PdQ`kQqE>?a)a^-a! z{FeA40N3}AO+aarGEfip_P&fcBb~qHnmKj<2R3~wOJe1_ve-Fq)Yzp8`K+LM1NPZ6 z?Bgi?f2rgu&l67zw`_li#(R%M9!B-t@)`!1T_G?#TJ+%hQbMQijoGe2uI8sFp?9T$ z!Et^<-)PFo$xa>`2GnMv?usJ)(BKP+kAP)h5hoV>Vtu9fxiko{j%FS*vEa-$RkW#U zDHjkxak-d$SSA(9P2yJ%)T=M$*I1}WKILZL_X67mV041LOKlu|Ww+1!-&3wPi+Mf; z$C#VO97&%ix4LD`5>vH{yJeSPeoW`I^{IA~oF*v9s8uhQ< zyx>m(lfX5n=$^lvtYh^qyeZR%e=?`%o}%VkxS0LrcBkElPJflKt>|Io;GKh6aIyWJ z;Cnr)(mrj+v}6j-ANJFOv(JkqEh;z@b>9wFCB1QcXQRQ!M@>M4RMf}&4w%96H1Dso zW}qq)_$tQ?b@oxiGj7p~@sQ#0S~b5-uKhczn(+5ePcTUS^(#{2{0~;F4?lwM0)P*r zJj47H3=y9S&2+0Sc=r6^)>&=9^CU*x0-5*s06TyTj$svq@-hpt4WphTggXDs&-V|p zSM0K&$~!TQ4aNKD2=0w#KjFIQVuyo0O@KEnR;IoIwqmo+(bknk(lM{V>cGfij7Xch zA|T*^%)rr5`*(VBU`!&b&qC~}s}VO?1z<#$OmOIAL8ib=uj*T9Fnt}E&v_w`{XqKb zX1{2lb+F)=#s}iDea;v>^=Y&fh#O>&sJt6L+?{1A4QpKWJ+EoM?8YQ#^g;kJR@ypAS=uT z>GIE$)OpCeOe+hA-I)n}iS+IrtSW2E_5RxWWWPcq4ty12lO*TmSv}Qu0^VstfpRR= zS(%?<`tPBS`m}!&RW1)cPxYM=_|wNrFM=A@cjLQi*9@k>w?B?Sd6bW}O)ypzm8mRT zUFznYQ^daoz9i3Ol%5wu6Q z3~d_NIlP)H5<_mGH1%(FJ%GCYR-2AFs;?$|=x8RZ@J<&vY|`{x;6E&EpRE2CfM_DC z-^1$PcZD^_;9}0a`@lnikTUT|Y^dq-(}UIS>aD)p>4y6RcYBQ=gC>pdS3I3M4i~&G z1>f)LNyI!Wba3s&Ol8gS2d+`-8K6vQCL{KydcWd;Lu`rfrTXO&_1J;W82F zmR9p1Er}Yns{D19zXIPVG`?uD%wvPf@t0)NAI;gS*Ws_Q~hzPhCGDT!BSu#Ux zeFSA%kUdhAy&{`15-o(N7?6Y^GnyE}FkpZ%5(4jeNBZ>mKkt|K>w6r3zVv9kll!`_ z`x@tUp1*3WUm_14-$o21=}0glZee83b! z!)|ox9Sm-Xev7PM?r)bZe1>Pc?UqE!TY2t$3G0!1Y_9Y=vPwHppLQQvnvJ$W z7r|nrgOnoJfxO5aq70=w&AoTl2hyjs5_O87ZOtxM!(eg7&qU6 zUskyhkB(R%jp(KIUl!DByH^MGhd{jnDuO?etb+s^SFeAwn9BQ>yNR(AFWqv;{bY=8 zNTRi(xV@s1*t4%62yE|;KB~Ihqo*a75`^dsP-NM^)g$M{qCC+Xe?qEWD;wb{i#5U7 zsOj77LwU1R&K;;X{=U(J2B8lH4FGBcz*Y5%wa+RVhrWRl+Zm=Ji&}FmZ&C!~m<%LTCN_=HEOMO`OYJ6q#h-wJOOp%@N9JaXZC?Rof z-3Opy6E?7N*}tA{U?n`?)Z{DmEmP-&i#PCQJSw~$Po6|SlwP+*T}QOM(Wnh%KIs1$F@Yfo;~T@j=$;u zMB`?{Wx*~I-bwc@BCjxE2#H9(OTYbQLmgwBk>=g!HVD9a-}-e=kggJIMPL3fhR3MC ziOh`B-^K8IeSn?`MGN0};Ex^=+x4|KyNd>ptqbc1e7ZHgHFtDq3-s~B_ZH^+)*lsK zbcJaqz0zqA2R+xdgC5obSU-54`E)0hH6pja;T%S+tqO^O8-GBpmTP($C0&;A9e7ZC zbJKJ&S~Uw#5vwMJTu+Ij?37AN)@3J5J}vXjjKVXB}_ess0zrxXz`hyl!3f^c!=IF|d4weKG4W~xf5jKLPAwSzSN9US$0Ko9) z+TX&)UyYt7!l1jH-E0N}R=nq+lb1>ikAN1GU~_|7YU~B^1A!ARf3Ymaq7*TTQEv;_ z;$7sR)i)z_v8uh(4K#Co^*yinX8z+)eWAUP(~iy^kM|R-+!|S0@n2wKo9*0x3R>&yV)&7Y)YHOm zk+kGeqDG{Vvk)U2J>B?GC01?!81u;`^Z{Y;1Tp1aO*uN?=cGVolFp^x1|#FGPfZ#1 zC!qZEm|y3r;1yr~hV8tn~?@zC89&}OzI;i#_O3nlF-hn5&fif^4yDDV?oQ7ME zr0)&xMMMT1QjSz+Nw#xlnlq+3M<%hmdKRh?MAWdn6?vW)1i%iy z0`68nfqLx{{fNO>No!*5oEFqn-}=l5&X9;gcKWWw2M#EM*2iR;Q!BcEYAC1#{hiht zWturKdmpo&x6E^8bPrkT3D!zO^8?C?QAw3!T`|+k#OgHkow@*2)X3nhWNp^RVaw46 z!{h3YRoET3vRG}ynIpH zvtyj_yB&UE@28k26(CIeE%2uVP@Y(TYVZJlI(!1?cTraBK270)6bIwz8-;Z!cd2QH z40B{@YJ@B0p*Fs56n(w$L&812y^s~i>&k9Kt-oJY+h-N|vvX%VTA;76G>g!1*WWV- zr(MlC3cUPv@n~;)y|nG0=)M}H+-r=32`i8)z$c+YOmqh8!c1`Ge{k_DP zT#h(-Cq#z^h^hrVesRU>Ax1I5Ps(5)bMBcInz_CU@1&J~!(dfaEWGgQm_f+>oZQN> zj9t@juN)^kJtTQAp%C04@WJ;=b`sTcaT56rzFzdNnZ>!w2|QNGMO39PtX6}N?M1Ao-!Z}Pl;_|89d6q*m+(7 z^ZCb`?%NSAPZ#^PP#v{z!15vA_sUqAjhlaOPOL#Ur)mU7{)R{$bf9Mp#}iq%JTS*j zh=sx5Xy4;LX6Wb{$S$EX9}6Y?c|Kn`!%vd@&S@SBC2RXlkyr$LRP|188X;e zkI7CkDuCG>k@Dw)jZXgPb(`HF@z4@!@8ct0u(*3C^`Y)jSy!RWjDPn9&QdBULWzz$ zI)@D1Rw6jV;>e!lQsq|JbiAmOZ@^h9XQ;huX3YD(v{6+?q)jAu@So%~`fUjd^SKPK zHl)ui*zlWvA6C}I!Qr=x7VBEFTBt|_Q7hhk!AemcBPEfF%|aciu@W*rbExzHbF!U( zsB+k~l2Ex7n2NsLs|)!WUI{<%Ckk>oA>zf?&<|D?uDly`dK`IT8uw%9MEL6!C-nt} zU#B4%z*>IcYomc$R?f&_C!U>^)h@gv4LQI&T0SZd1pF-C`HR>Kl1>jxs|gOeU65Mx za}<1NUmyp*en8Hy*6-Tg5JwisT|0piI8?1lyQk-T-|&Z_tIE>$J!FQypZMC6*1EyL z$n{T)Ej!t)tz;1rv`RR?%-cpKhGG_2eb^_)1!a5rZFf;dRK5m2z}ouGlkX*Nd%b#L zL2M9?lm1#{p(ihjofqud%2{UoHrqVM#7^3$i_cHSZz^G@yz|tGw93{BF*q?XW z*EtDQdAb<=m$F#UI6R9lJK+Hz^pNB(Sh6nw^isi}?3x-AG~-lNhh|tH(Pu59;Y}Zsf5W9}^6litp~4=dkVlO3=U5jjmF8@~>P6 zZvb7jeBc^=7^&4n^&0`3KX}H!Y#n)^ANG7KXuPsO$G=oGqW%%+reBgq{cg+tdyQg) zkGR{)y31qubm&yHp!z|YHepyLIn;Cr`(0wy$d4Vp1eCu^wzWI(NoA^^fN~J}xbl<) zyK*+K4k6o}9{+~K55|qC$y@+TXhB|Ac8Fq7*+;cYzSf_z7s(Bc7Vy{SF z&`C&-8Ru{t=M7?63ub8zN)D<*O`Yq0KPQ@(;U|3y9D|Ys*V>e1<@7b|C~v%@$GS_` z5=VYbJv8YCsu6%HDfn9Jmy^!>ozKj#oMvPB*kRu|ccMYEOmtU2!graxD7zbuO37M=5kCZ@B`PY3>_E$SP-4L|wewws z-rkJ8*?4|>vHWg|F11f<-ZayOPx+`u?cSZZHL`YY&({FWnW*Awjhiz4!-hhx%DHKx z+R<8+@elN~Mg{<7;B%?VU z34L|+c3Ys|JOu!=-1_V>ZfIrw#ohtnM#VD%=#{PFOiu#?1H#F*nHtwtMV)Gf7C~uL zBOw#nDPJY4XH18OggVz9?C~*;<&CSYIBA!=2+gk!2@c_zk7owPU?Ls-Va5q1ADkVy zKw_rJwOfCx)2hcN29Syvk#mMlV`$a2Ref&``u?(@yPb~KUZZF-2T-rjvUOztuu%>3 za9_*N9H#&$Jq9pP)DrFY$jR*uV7qXb4DQJDPEnzq@V#_?tCA}&Ikyg}?nqshuftsi zR)N%6?q0_DWNDO-2hlG(t0n1Bg&{{LId%WLZ{oaPJzT?`AOsmf;gNr+|4#5YOc zo~Az3mV|gGMw{CWJ6aA77F)z~oltV&d<dTG z422Ajg!24825{1;pL9xc5XkoXULXJSmYRXa2$LkM7P{G$`|i`2`{ZVE5MiXQFMj&W zIG9LooL%^Rgs0y-wDi>MG}c{2s3$XzM4!CTi@Ju+b}0+fmPyU%Cy1R|TQ2s5sBA8< zuIhaAigNJl{K{URJ?Ch3X?*_e?Fg}@O9J~~Oosht{r;NL%oY^?&C)MZx@Q{pN>ao+ z<|%b#z$+rka7e~MuX0!vF$4p8*9n=(z|r_iMAjVgag*`2A-r4j7IYK2xS^^D!s4{u zkAz4;zcQ+<^+GJ^d90EbHv28%#;=0gUYw{_ZUp)|%lmRHKUJ-8D>>ak%1Ib9)3`v8 zF>a=wnksLUC1kgLl)3<;ZpO{wU&l=iu$?AWFjs393xZp}RNJ3%ntuNUy%03MTgQ_7 zk-;~ktA7BND?G@e-eRZ~d6`9Dcd0e|5>B4ERWsqcX;@ExYn@-!D>AXUnJ9xPYow?< z>2dH0nsFj{BwzXarDlWlLJt)Z3lr&M>k(<4!b^N2SMO_HV^3Q7XqbU3z}7jfENh(5 z?G(`6;+S2vn5XO>!X{ln?c<|Xn16=f|Vr3=bp15|x5 zL;3+9^DD2WBqr|T4rvh&v%}XJ4IJtG+omOMt5KKqjSZo_KZD753&QT!dzA& z5P?Lfk+x3!0jEMkpKP6?sjR{++9KX3>g?2cB!7c63M9sD0?1}l=S5sXlYz1O0!a*3 zI<|H%j?#?lTENVlrrDk?7UqL3s+vZJjfP$f@rp#6!w3)sDaK|| zDUNn;A!&$U^k7K0p@~rIF01UDU9o6^?(h)`9P@aU(~@>$7N)kvX3 zhT6orW0{z9(dieVQPpH4yNQfR4~8Vr*SBOa<%3Ej3nl^94gtK!c513Q;1a35A8Q+l zk%AG{z?)Ks>`MQ)I;Vv$`G-n0b8=G;y|V?T*)>R%CkF;tNg@YiSSo%B&Y511aayQ= zoHI8vyhxq{GUW0U zCE+;Gw?`3aes_mIo(MI$7+gQ$_^A^p{UA6^(tX6O2De}CPmCdkTdeX?L%4m!HLr-V z*>UBx{(|9xtS=l9Fv0lVk}V`*tUf%RYWoV!xTB0l;*VunhS$ zGGXV_98OOo$#+_xcor=Bb5&|P9a_UcprrOeYZ#KQq*1@j29ZdRy{ABh+Hn-RpI+X= zIy0`5=8~^YHTmt(j5Oh7Kz41)ZeB92ug%dzv+8DILGK@owSfU@Ah5#9&0fZz8u}}Y z>!BXb&NRNM-2Al_?50MRx?Tpl&kh;o{M7%XR%0_8YIGF;KDRJd;1w%PQOe#aN83 zw1aKjIN7}oW*<|BXathtq=CJtqJH1hj zonPTm%_XFLLHx~$idNLz2lF#Vyux^E2S}|VlBG2k<=a$DXc%B%o|20P;MuO}=Vtx` ztr{P0m`qT@lYHwJ5Ay=Z7qUds(ngkBJ-_!H$?+#!O`R8^e`$5<41fIy9_vxl8)Rd^ z!reIt?2Xm&=lj&ku(u%~=x^fl9gNHZkpTF02s<@Ak@}O#x|k!pN(dyjAUB+d;rmS< z`56G^5n+ps?rl)qUz_x}o^zG-!4dDI6qMH}w^*)Wu6wZSG^)$a!rd6onE6Lx@?+*H zgH>)1MZ8^0eXnwWhGu5{8-|XvNJ3n6!z=NHnx;G{2e-oGBWQK9Imsx0LfNfmBC8orZaXtzIGCW#;&K8+!?Qp^ozW-5RH! z1F>XDx$|(lY|`VEw)9&lJN?avL75!oJy246bF(XGeY$`|{!D72Fbb;H2C>saomV~U zfwNaM*{uzul{@HE6ki6UW^vT?te#&p#(c36h^jpi1{4}7IZO|@s6449DLqO)VnQ3+ z+dZ(=->K)84Fb-w6yY18w5J0vcnks!vu*@v7ad8Ys_l!6v>%1{r z+T9u8Ub^^VZso@4ioJ`Tlo!vKnj#?$d>S@e9t#S#4*%SB8N@o=n|%KTn_;t`8r~c3 z*j65SHj|$nt7Va>C8(lxz}Zvhqt{a~#yEJYG%UXbwX&RIfQAynPJ z^cxN}^N~Gwx(uPZ({cm+GMH(%KO|uL8?=_zRAu~68to7E9WLmCy8gvBh|R@0=%1SqTy`oOeR!nuv*7P_l& zhU;g)P>b?)As0TcM?xz1e?8-u#PGkxe=86A#sA##<{9Bz4U#7C$hSiX8r(_w%Kcnu zY+IWq$YNfY+3S%5`S|?Pls#_P`w8>UU8@J;YY+Fq(*#_B*Z=z}>yP?IZ~$@7T(mF; zmG%Ua(=&w0sc4=kDve2g*>F4=EE`PwDlG*K92Ca-uRGVTM15`9qo-;zs|3^W^yS?Y zB76L<#-H|&3U#A@kTn}s2-sdHZtfgV6PP~uBc!w|IAik;cE`q<#QaJ8Q7^(3SA{8i z;`xqlMBF7y2K%*L6WR>kjMD@Ax z=`HY-_HpbpuF`PNaN>{f3U6~aEr#JAfabrX=KykBN2KiK>%(5NZBvx}KnM~^-&y+} zMbH39UQunU0Y1$1++BbK<`(KiyW5)1Wb3EuOf@|%d4$zemWX3=+lef2lenTVm6-32 ze-CB@4?a3Stbd9W6ALE}C?;g0y5g_2DI<5UvZBjtg0sSu3l9wf-~Z0@dF4h1!F0O- zOpzljbZr(#0u0|idcH$cK4texu*Rc$rxBuSX26$>h)(S`ufY{LnX;T zkz7R{|3%huYk3(Se4=O9mxH|R6ELbG%J<VnBW)Gns&;uW7ZFg%e%s7|0klmO!!6znQsA;fDx z{>@T@?x2{J<-A@w(1$Zg&N}!#dG>XUoSBRfM`1@nn~?+@UT;@bYqt#_@(2*P>n-Bf z39-3z3hu{z?u+^)k633}ez@UvyiHrhvCJ}9Bon%3dZ;rah!%gR$S~mgIOSDg9JU0G z>qAQ{icl_y7_vjqE<&1AcA3H|eQieoW5KT{B7mpYqgpneMZAU|L+GFafq`WTPuk+h z2}8x1(_l!NJO6`Uv62cOgD2$K7MRV-_PGwdzs#^p34xxDs%rU5df^VXK|+!D3$m z!oe`H)ZVYJQgzU1%89elDnOFpPpkbwHNz?bmF!@L*$AR$>t4inqjO;-=mi0r|1w1 zuBZk3=#2Tr+qvs_m+H^clKs<6h93K*6^_5QLJHa)!c24WDYWv;HjqjfKz7=|6K(vx zX*9u2`5ahUe8RA`kDkBI;vr*<>=+f4y=H~%y9@i0BLVfxbgXbP}Rlrh%&-2DXT zaG$ke0V#CJvr2pn-2z9wz!VqOnlG`8o)Oh?sT$Aw>DZKJQ5$&^3H@B(yk|tIzg@x= zhoShK5sprzaHrKv0qf-c%Bv*3Oae8`dUO(>9_8siAeo% zEUqE@Mil90_*EqQ>17S^6qKA*=MmvN&>V^Mw$)hQ(Ry$xv@WmJ4TKR~MJbQU1bbv4 zHUOEZwAdjh%W%p*n(*N5s<6@b(@d)E(7p*p>e4o&+ic;0GPon4Jbjzd>i>0 z2gyO`lP$nTMGLd0r75Q|awA^ovG98%g&tP*#Fw-;jiZb2RQ9Fx+Y9&#}WuY4hQ z5aRI`*?`3$Zpe~7M~Js0D{{_R%6YYaD?)r`e63} z4YUI;N=bR{2$*ceGs|pwo-{|Nj@m5x9=3c@t)~;1S9MG9>H*RiE=b_3bI?CM0G+^cuxBDJFB7C#=BI=*Lq-p0=!b0wQ5C(T~8QB0+w z>O$`;1-qsBMpEH5ythw6W*he%$bGdvMNon>g0UaM&@ z37xkO8WgWjBT*(4tU^JCDRFE^qI%?`EcGe-s@oB2VWGCJ>wA}kI6UIaW>?X=JAivO zI`RuWl#6?7%rM3EM&+o1iGJ59b5oo&864l7ig^lMEV`^DZ`jG+;BeDv!AYH1-6Lri zEVl$2XMew@uK5Rqp8gv%7P7+lMg1SitPiyz&lYQ!tz9eEhOA+ZhddPIFY_ivMd`r3 z2o+V!mGgDO!qh(O3yOLLk`+~$5g3FaidIch{fGJqI2OS)QE(I96u9Kr94A}4R=_qX zE_pNCZ|vTUIRR&!wdi-Y*^?Hc(#9n8i;slsRS#Dxe@IB3T9A6YKixp8S)& zv#m^99^{b!=)Zi4sBMs&TPPh}f0X%eN=Up37I6Qi^ckBx0>l$ttEy$TZ$iX&P-ug zMf{2WLRI#|TAwJ{txDORb^P6@ICiRvy7G|*o=Hc1aU>=?dUhbPMonfWC}1Kh6OSA0 zzCq!8!PC}?g10yxMrjX4uCVQ^XlI0G=AbCw2Z`?cyt!0AAIw!j$P@iw)_A&j*(_OS zr6fiEek>o)6&U{Nig3>Tq+2}%rIO9Jb5@NfkEI)ltiL*{8iQWfHRP}wjSOwGYYaxm zH%=I0_Y9-j}_P&24CqR=LqNN(AU$;jyf;THN^*@gEkjx_1zx zmf%+g$;c=^>FgEf7kb?`K9d;N=}$jR|7a8XZdF)g-$9T}{Ax{C_7mY)$I_n=mq!Yc z(ITZI@#n8WvnXK%G3Y}y2-zv}?V&89f51gH=)R%ig2qW)?ri^D|DouEgfTNqjL-n~ z9ZA|7tF3AhttLI%-#2ti=C^%0eFK)ybR;cXb=$sT^y0k>5Gw;J=@o!;VL1}ej*q6T9S1*`#{`j+=1i5 z8n-Gt30mH7j-8`Fe|Gt~o6&&C$mpeqQ{S9#o6cTj?HtD18q|7Xh6tF2Z4keAzS30I zS%{}KDmr*#_j=1MbZik88Lszsr66E-guwY(1@90Xl(#_X(EIUO-f!vQuD^E2&41Y1 zr6cFs3enUK{T~u~;%R2GK0_S!;7~wVvotjNPa*l#RlojRsP#{(J}-2~7JFzOtj+q) z!k$u?Zm%G#Fsj=B(57Q3tYMjVmtnBZWDIo2pu$5}`6fNOP|FOr=pTE$b}m~UwKMTs zgI$<)QhKLred0C7038JGQEQ_T40=Q`YYDcxg^+OtuB(In3jEK?;(9&yVC1MzQ-s4R zKPOstz1R0XW`1gU-m)D_{AumuAa{MJK`-Lh)luP)$q}w=gF$Woi6Zj4jSu#N_dqM6 zwjvVL60zb=JMThJ3sQ-WIOzcrO~MYhGN0p8!I$T9PxNp^8X|?;vWoS)Rrc^sFq@W( z7PB+E1~R5grAaJ7e_p2*5#ualHF!ZY)M|C~+DV#;3O%80v;`aWZ8<>=j&*5ZH}poW zldX$@c%x;nYGOhrj9&6_%$A_!kXu3tgdyA)xuvdrb{7$It8VVQ4$3aZk{Ngt1~4~s zh!uK&Doq#F(|hCSD5$*D1F5lt7=A8dmAqKgVPRmY_f{s2Mq|)b$VBZ>B=SdW21Hu@ z+qS#`!O78gUvSJkWy50s%`fyb4gWd2Gj|sor%A@4q%r-Gr?tX~I2_2n2f0O<#m)0M zlAV*-8HBAU{xY@rEaj$KLEh#~hSw1f1t%F{XQRYow;#5A^o@G4WmGR{D0PFb;xca^ zknj)FQ4^)=UEzoVkYv5etfyveowUqQL%Q9{=Df!Q)~m8_Qz)oTV6cd6PfG>CxgnN zrFSY>!STasS}Ie%tQk3<+fbfSQtpgq9B-`$06xhX{pJ-5vSd&l%82@E)0=G^o2hnm z_F{_3kh~W*cp|dv=@{RuLq~lEOE@-DGlmy?pQ3&uwxC$86jii+#a zTv6eFQNEE{w#&|))%w7Ya?_D@_>O#0eC$h}rM*t8+Zq8}N(y{N_pGz~p_=N)I^5sM zALE$C%Y>bIJRY}52S3X4me;{*tri09VaujZrN3@^7N_0)YIx#%N}qVEwUf}SM;+K* z!Cc!nMQY)AEM zkGliM%TaKX{uelz+&=AP-rwLb_|aO!Y=0Uh7L=_DVfGLC8~~KKVHuHJgjGqPNiagt zY6Gg|pVXP=)X1RHjU7GHDKyUqRE4I*XL>9ipDI@rx zxqs~kRdxhU1qfjs!^oqAuxT@-lW>6=aPDxHw?vYX?2MRezQn! zkkdSIlvs^qK_KO}f7mBV3xOc}thWdSi*y-2d(%_#|G$ja0KFkE@|(-41mO06yy1=@ z)=B7cP;t!vj~gDyofus<3wQc2E3+yqqJ8H7{Gt%jX#e+BvN`|rDt!*&AN#XcdWfSP z8z_dU|9m)y*!~#Q!$Iu7eywH;^S>P0Y#;^<90tXmf6VJd?Ue|3{BQF#DAA<-PxG|a zGGOKXW0Zz?Kk+RP*z!N0eYW-UfV+4iP|`>L`~adOJ$22@^gmXHz)FBtn*%7Q;4s3S zhrcGkDH~nJloAPuG%RE{M4$fLATk9rWebZu*$F2lwiZnv@cYpbJ z177MQMwW(6M%I;|@AD_7$%KYp9?$Y(ia#n|lB zqZ^m0h%N&|F%^h%&1uK~ZWCy!A1X11zFYst9!=DD7iY^5RQG=zJ{w-|x&c{sBXc$U zCF|UcR;`O#bx_|01hjv558Y_~8fXwE)%HP#63fK1I`a!Qe43*mD+uNL`f72C=74GE zcb|V`do{S(s=%;1msDT=I25uvzd0Bi|9z?PqS0}qq?3(6O@&-mt%8!_ z#uxNNPF#b~J*4H3FzcAlA74*L{OY_t;ILs8?vtAO!{?9piroLQhCg(()mnV`5FZkO@_AcUj=k3K) z7s+^bZkQjx7DxJD+M-8Kg!`)fu<<)yP?Slk-HGJ#NsMe@uzD<@I5(I=w zNxl5{=g0)5hQah+uNCE$Gd@p?JA*0Vzd))Nlrm;>Q#Z^?pD92u_UA2;!u(sop6v6V z64DUQl4H}7SD#F#(5gRoz@}B8bHUdkn-;AotBb#Befjg{cWMxCzQBBF;iO;Bs<0lB zPw3oup--)6UY-P)VS(8Uk_=AW`T0BVvPG_Lj^@1%2`89x00=a_V7$?xw|tOSBK#|c zk4KFAof+*+W^s(ijYEUy*8R04To1F>R=h>yXiKkJuxq5i~csy*1EhR z&pc#QV-2}5DM{W-_l%9NB%~s*p}^h_RusFinRgM^KW;ov9WuFHK#d%HDd-VMQs_T^ z%+tvD%%m_@*Ju2CMsADD4GwR#&&muhKXu3mNjG*wRo&3{%0|aYzlL6>UI-iqT9Srx z;Xw7ijaP*@$$_m&%(w}c8;3|4P1gSHV4Yf{|C_wgR4}lGC-8_c%A&}GylG<$oy-z> zHNZhEnh~*XS$03 literal 0 HcmV?d00001 diff --git a/docs/graph.txt b/docs/graph.txt new file mode 100644 index 0000000000000000000000000000000000000000..81699a156bb71a2ff97d191cb5e9d0bbe9124170 GIT binary patch literal 15554 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