From 2b2ecd8abb4217c0913c1dcd855cf27eb77f0ebc Mon Sep 17 00:00:00 2001 From: vikingowl Date: Mon, 1 Sep 2025 02:59:58 +0200 Subject: [PATCH] [docs] add detailed project roadmap and update .gitignore --- .gitignore | 3 + ROADMAP.md | 288 +++++++++++++++++++++++++++++++++++++++++++++++++ rules.db | Bin 778240 -> 0 bytes rules.db.empty | Bin 778240 -> 0 bytes 4 files changed, 291 insertions(+) create mode 100644 ROADMAP.md delete mode 100644 rules.db delete mode 100644 rules.db.empty diff --git a/.gitignore b/.gitignore index 0799d76..942ef05 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,9 @@ target/ .idea custom-bullshit +*.db +*.sqlite +*.sqlite3 # User-specific stuff .idea/**/workspace.xml diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..669aa71 --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,288 @@ +# Owlibou Tavern — Detailed Roadmap (M0 → M10) + +A focused plan for Dioxus Fullstack (Workspace Edition 2024), admin/editor CRUD, private deployment, legal sensitivity, and SQLx ergonomics. + +--- + +## M0 — Workspace Bootstrap (Dioxus Fullstack WSE 2024) +**Goal:** Reproducible workspace skeleton with SSR + client, ready for DB + auth. + +**Deliverables** +- `rust-toolchain.toml` pinned to `RUST_STABLE` +- Cargo **workspace** with crates: + - `app-web` (Dioxus Web) + - `app-server` (Axum/Dioxus server functions + SSR) + - `domain` (entities, DTOs, validators, error types) + - `data` (DB pool, queries, migrations wrapper) + - `shared` (isomorphic types/formatters for web+server) + - `cli` (admin ops: create admin user, run migrations, seed) +- Dioxus config for Workspace Edition 2024 (server functions enabled) +- Tracing/logging, error boundary scaffold, `.env` loading + +**Key Steps** +1. **Workspace** + - Root `Cargo.toml` with members. + - `rust-toolchain.toml` with `channel = "RUST_STABLE"`. +2. **Server** + - Axum + Dioxus Fullstack integration (SSR, server functions). + - `tower-http` for compression, security headers, request logging. +3. **Web** + - Dioxus Router; app shell (sidebar/topbar); error boundary + 404 route. +4. **Common** + - `thiserror` + `anyhow` error model; `serde` for JSON. + - `tracing` + `tracing-subscriber` with `RUST_LOG`. +5. **DX** + - `dx` tasks or `cargo-watch` for hot reload. + - Pre-commit hooks: `cargo fmt --check`, `clippy -D warnings`. + +**Acceptance** +- `cargo run -p app-server` serves SSR page. +- Hot reload works; logs render; basic routes respond. + +**Assumptions challenged** +- Server functions vs. pure REST: if non-Dioxus clients likely, prefer REST now and use server functions selectively. + +--- + +## M1 — Data Layer & Migrations +**Goal:** Safe DB access layer; deterministic migrations; WAL & pragmas if SQLite. + +**Deliverables** +- `data` crate: pool factory, migrations runner, query helpers. +- `sqlx` wired; `.env` (`DATABASE_URL`), connection healthcheck. +- Migration files mirroring `/database/main`. + +**Key Steps** +1. Add `sqlx` + `sqlx-cli`; enable `sqlite` (or your DB) features. +2. `sqlx::migrate!()` (or CLI) to run migrations at startup/CLI. +3. Pool settings (max cons, timeouts); WAL mode if SQLite. +4. `domain` structs mirroring tables; `FromRow` derives; validators. + +**Acceptance** +- `cargo run -p cli migrate` applies migrations. +- `/healthz/db` returns OK. + +**Assumptions challenged** +- If schema evolves fast, add **idempotent** migrations and a **baseline**. + +--- + +## M2 — Read-Only DB Viewer (Browser) +**Goal:** Admin table browser with pagination, sort, filters, detail view. + +**Deliverables** +- Table list page (all tables) +- Grid view per table with server-side pagination +- Type-aware rendering (dates, bools, FKs as labels) +- Record detail drawer/view + +**Key Steps** +1. API/server functions: `GET /api/v1/{table}` w/ `page`, `q`, `order`. +2. UI: reusable ``; column config via schema reflection or static map. +3. Empty state, loading, error toasts. + +**Acceptance** +- Browse all tables; sort; filter; open details. + +**Counterpoint** +- Don’t overbuild a “universal admin” first—target priority tables. + +--- + +## M3 — CRUD for One Core Entity +**Goal:** End-to-end create/edit/delete for the flagship table. + +**Deliverables** +- Create/Edit forms with client + server validation +- Delete with confirm modal; optimistic UI update +- Consistent error model → field vs. form errors + +**Key Steps** +1. REST/server functions: `POST/PUT/DELETE /api/v1/entity`. +2. `validator` crate or bespoke validators in `domain`. +3. UI: form components (text, select, date, FK pickers); dirty-state guard. + +**Acceptance** +- Create/edit/delete works; bad input → friendly field errors. + +**Assumption challenged** +- Complex relations? Use a **form stepper** or “+ create related” in-place. + +--- + +## M4 — Authentication (Private Setup) +**Goal:** Session-based login, secure cookies, password hashing. + +**Deliverables** +- `/login`, `/logout`, `/me` +- Session middleware (cookies: HttpOnly, Secure, SameSite=Strict) +- `argon2` (or `bcrypt`) hashing; password policy checks +- Login page; lockout/backoff after N failures + +**Key Steps** +1. `axum-login` or `tower-sessions` + user store. +2. CSRF mitigation for cookie sessions (token or double-submit). +3. CLI to create first admin: `cli user create --admin`. + +**Acceptance** +- Only authenticated users can access viewer/CRUD. +- Brute-force throttling observable. + +**Skeptic note** +- Single-origin private admin → cookies > JWT for simplicity/safety. + +--- + +## M5 — RBAC & Policy Enforcement +**Goal:** Least-privilege access; backend **and** UI gating. + +**Deliverables** +- Roles: `Admin`, `Editor`, (optional `Viewer`) +- `AuthContext { user_id, roles }` extractor +- Route guards (e.g., only Admin can delete; Editor can create/update) +- UI hides forbidden actions; backend still enforces + +**Key Steps** +1. Permission matrix (routes × roles). +2. Axum layer/guards per route group. +3. Audit log table (`who`, `when`, `what`, `before→after`). + +**Acceptance** +- Forbidden ops → 403; writes are audited. + +**Bias flag** +- Hiding buttons ≠ authorization. Enforce on server. + +--- + +## M6 — Full Schema Coverage & Relations UX +**Goal:** CRUD across schema; ergonomic FK/M2M editing. + +**Deliverables** +- Per-table pages with consistent forms +- FK pickers with search (typeahead) and clear labels +- M2M editors (dual list, multi-select, or chips) +- Bulk actions (delete, export CSV) with permission checks + +**Key Steps** +1. Label resolution helpers (JOINs or cached lookups). +2. Server-side pagination for big tables; index review. +3. Import/export (CSV/JSON) with validation + dry-run. + +**Acceptance** +- Each table has list/detail/edit; relations feel smooth; import/export works. + +**Counterpoint** +- Extract a form generator only after repeating patterns emerge. + +--- + +## M7 — Security Hardening (Legal Sensitivity) +**Goal:** Tighten security; document threat model; minimize blast radius. + +**Deliverables** +- TLS via `rustls` **or** reverse proxy (Caddy/nginx) +- Strict CORS (or disabled), `Content-Security-Policy`, `Referrer-Policy` +- Input validation everywhere; no string-built SQL +- Secrets in env/secret store; none in git +- Data retention policy + purges +- Optional: field-level encryption at rest for sensitive columns + +**Key Steps** +1. Security headers middleware. +2. Rate limiting per session/IP for writes. +3. Structured logging; redact PII; access + write audit logs. +4. Backups & key rotation plan; restore rehearsal. + +**Acceptance** +- SSL Labs A (if exposed); scanners clean; restore drill passes. + +**Frame shift** +- Treat it as **regulated** even if it isn’t—cheaper than breach postmortems. + +--- + +## M8 — Ops: Build, Deploy, Backup +**Goal:** One-command build/deploy; predictable backups; health & metrics. + +**Deliverables** +- Multi-stage Dockerfile; `docker-compose.yml` for private stack +- Systemd unit (if bare-metal) with `Restart=always` +- Health endpoints `/healthz`, `/readyz`; DB readiness check +- Backups: nightly DB snapshot + off-host copy; retention window + +**Key Steps** +1. CI: build, test, produce image/artifacts. +2. Observability: basic metrics (req/s, p95), log shipper. +3. Runbook: deploy, rollback, rotate secrets, restore backup. + +**Acceptance** +- Fresh machine → deploy in minutes with docs; restore tested. + +**Counterpoint** +- LAN-only? A simple systemd service may beat Docker complexity. + +--- + +## M9 — Testing: Unit, Integration, E2E +**Goal:** Confidence without ceremony. + +**Deliverables** +- Unit tests: `domain` validators, `data` queries (test DB) +- Integration tests: APIs (ephemeral DB; hit endpoints) +- E2E smoke: Playwright (or similar) against SSR app + +**Key Steps** +1. Test fixtures: migrate temp DB, seed minimal data. +2. Golden tests for JSON; snapshot UI for critical pages. +3. Security tests: auth bypass, CSRF, rate limits. + +**Acceptance** +- CI runs and fails on regressions. + +--- + +## M10 — Docs & Admin UX Polish +**Goal:** Maintainable, pleasant, self-serve. + +**Deliverables** +- `README.md` (setup/run/deploy) + `SECURITY.md` + `RUNBOOK.md` +- Admin guide (user mgmt, imports, backups) +- QoL: keyboard shortcuts, column presets, saved filters + +**Acceptance** +- New teammate stands it up and performs CRUD in ≤30 minutes using docs. + +--- + +## Implementation Checklists + +**Pin toolchain & linting** +- `rust-toolchain.toml` → `channel="RUST_STABLE"` +- `.cargo/config.toml` tuned for dev +- `cargo fmt`, `clippy -D warnings` in CI + +**Security defaults** +- Cookies: `HttpOnly`, `Secure`, `SameSite=Strict` +- CSP: `default-src 'self'`; `frame-ancestors 'none'`; block mixed content +- No dev endpoints in prod; no directory listings +- DB: prepared statements only; least privilege + +**DB pragmas (SQLite)** +- WAL mode; `synchronous=NORMAL` (or `FULL` for extra safety) +- `PRAGMA foreign_keys = ON;` +- Indices for filters/sorts used in viewer + +--- + +## Risks & Mitigations +- **Generic admin scope creep.** Focus on 1–2 core entities (M3); templatize later. +- **Auth choice confusion.** Private, single-origin → cookies; avoid JWT complexity. +- **Log-based legal exposure.** Redact PII; isolate/audit logs; retention limits. +- **Backups untested.** Run restore drills. Untested backups are fiction. + +--- + +## Assumptions (call out for correction) +- Using **SQLx + SQLite** initially (swap easily for Postgres/MySQL). +- Private LAN/VPN deployment; not publicly exposed unless decided later. diff --git a/rules.db b/rules.db deleted file mode 100644 index 2dc68b46ce1aa5e1807e90402878b326600f9819..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 778240 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 diff --git a/rules.db.empty b/rules.db.empty deleted file mode 100644 index 2dc68b46ce1aa5e1807e90402878b326600f9819..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 778240 zcmWFz^vNtqRY=P(%1ta$FlG>7U}R))P*7lCU|7t+z_5=20j4o9Ft8xF42(!@T+GD` zdS#ug3=9l>{98e4Hu3-F|Hl83{|*0h{*wUkeZyCS{!c(W$=6Qu!(DmGbVziGgB(! zONtUROX9OL^HRVpUgscJ#}HQqPd^ve2nAFH3jTfyU_}}r<(e(ZTr zAVVa_P(RPWP-2r?UScjR;6V-p1wPy)A{_(Diy*yFjADd>vxlp*w*ol7DtP)SXsCzz z2ZgwL`l#!u`#Cy$fSH<_5Sw&$6@p7j(@OKwiA#2w#gOEh3d)sO@}-Nbn`5X?h=Kvk z6-XLDZZXg?gjo%BJ8lY+LUJ?nAWBd(6GTi`S0Ohwv$#aTkT~Z z$8eumDL|tlD;1m}Qi-+&)Q&98Ndy}SiU1TV6u`DX!^TP>zn~;DKQA#yL8D5~Nl!t^ zRNGh!oFtWqjPRsXXys9wmkuq2xHL66*~D$d@t3xca+a$xmyKOqUY@a86I{Y3mXs7_ zCY6??!Wrx+B`sVSe`%YU0&r4Wa>H9o z$(bdIpm>W<%FoY+aoC^%g=jOuWWdTmZ4sD&21s9gW{QqNL1KDpd~r!)QHf?#3Jbfq ztSn=zG&m+;YGE`h)Oc|AQh`i z9y~eWQ(K&x42l$RMXaNcn3tT9Uj*fVTQ-mc&}_!YE-os{*yaxoW{__{mdy($}=xN}a94ZS+lX5bPGg4t;o|BlDUYeK=wTytKl=#FFuq8SQrA0YVR!(Me zYF;tK04_~+W;StaQFzW}U|?9%Xv@IBFr!hIfq|i`QJ#T;p|w$nfq@|~h=GBjypfZE zfg!J!fq@|@m4ShwErNl8!O4w*fx+C0fq_9ypMilv2-L+F;N@jtU|{6G%)oz{gdW$Z z($NqY4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=Cfery}Mm`2vbA&5GT!TY& z-Gjp2i%RoSic-^4bIMbTvK2Hy;+kCG{{I&S{x1j(qpZ;o7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fuSD)+|06^pw2&NPyo{Z|HHulXXyKD)CZ#>Fd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0+=Dd%*?iH40T9}R)g5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2^4gnz!76w68Z*T9z+lmTOi?WLn(@KQc z!D9a2`FX`9nI)y5n+XKjSQrGA-Cf;N%M7lQj1D5 z)3Z}EOZZq=7zAaVJ)AQVi!zII6Zx507zE`#{XFwZO2M}r@G*fDc>8$gl%|6W;$&oD z5ES+e^(`#{&Hr=opJd>F%72glI{zE~ll-6gFO04RK#sCe_Gk!M7g=Kf+%MX77*p>#|)yp zeVAC81vz~~LG%C2{E`g(8~D@sB?pafMjbL50;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd72%2?1|rJ_c=FX--ZC26+ZX2KAEE;u5`*qQuM+y~LEV3g~uvg$U?9dSU)S zA+DZ20j@#uKCWS|KCCXOx%modhxZgIxcIqwF!3=MYs+#lFffQSFfb@18CG19nU|fK zml6!6q2~EHI(vW&bn}dGbph?!PtD9LDN0QDW8`D7G?vC@QhI4gQD$m#MrvM)dufRR zj14sq>Oge!K=c31{JR+Vckw^tKS!US9kpdN1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLx9*25N6h9L>fl`4N5SJGaDm|!NwMtB$+Kak<=oM6oBUc83c&6b5z}E z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQLq^0nq&aX#amG#@wizM?+vV z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONfcOvq_5Ydq?=bMc;Qz{hhj@LXDn~Wa}27!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GZ|z2!Q7Q zN7w(;GK5FX9u0xf5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fq@SJ(EL9ygE|AB zJD(iySDro|b#8NR76x^$n;e@tYB&s8`@nAOO5tD^7Z+!os$Pd+2LViQItRHr zhPWz(I6C>bDu9I)G`JLq0huW%syzKdT-{xR6as=geI0`$6}(*|b%--4zn~;PC$l6Y zK0CEiK|vwJH6ld8&p$-LFVx3JA=J+^Fw~VulkyUCQ;{5nViJ)?WM}3f`wPVg1!oUe zXKw`!uo_Q41r2rRDhzcUb=cwzbxlo(O}e@Y!6l_>rFrSZg+gX=d`@avYECM|dRTD6 z1H#4C%`wy`M8N>&3M366w;1Rc!mLIL0_;q%Me(_rc@Sx+T{;jRgw)kl$W6^GE>SQf z&iPOy6DuIvaTp1XQd@=mw6xSbQp_zbNi6^yjKf@Hr|Rk|I0oo?=NFfx<|$~TX6B_O zCTFA;EBNN8q~_#k5@&5p(X=ZRH%b*<4`BgM3D2L=?BGdP~1Tc z(ou)sKccRq4$hM5I_hrzLB63rj_`y9G6*kDEQl{pEh>Sj!4YI&w_7Q=rxqvXmSlrN zi#U%Y7Q`2%7C{oLf`S4L8AD{?8NuLS|3c9)q z(6F&m$S)|#%+E{AQP8N;bJ9~#GSxQL0w+l&A|pI0wKzGWC^a*wG%p=m2yy8sB&Fu% zrNbANsUi0DutKZ zFzt{e;**+`npd2fms*sbnX2m!QU}T%#F|~4jmPZZ)YP2RyzHXHv=U;?tHNhq)Zrx= znd#Z7nM50xUX0CopitD+1?BDJjPlI96o{Gn?!jD|o;+;gn&OO!nRzLx6`3g&@!&c? z9#o})S-j9x>gng=8lixyK*8S+(nJ8)fSRVe5kqL zJQ!~XHX2f7@U$p%v5PA!Gj{NTGYOIu5|bP13~(U`u@s`6_zVLI1c-^?tOHFI@XV?Z z6X*{7?kaClErY7w-oDgosjL}9EC;*yfMK^EjBCc)ecE@X*K$RNFW`6Zy* z5yT`}FH$>EK?4>~Itt(fqsgVI$;l>eD~>;LL6Q}hAv>G6t2{2Hi6tdPnMtK3squzz zCP!l~8@sr?JY%yaI1R!j;0$(@^amHlpZYRWV6`F9t>9!(`vMepu!b%uED=~&SHU+_ zN5R`iN5RuiN5R=cN5RcaN5S1yN5R`)N5R`0Uu=PkW{}xjnyIYp;`*|Tjoje83Ch*U znI(y!Dl5I=y(NQQ!Oizt3E=epZ(QHa#VHcN` zWo(rO2P;f1jAn%z56RRpQM_SFdXPfh1&;}M0~#s6gVd0o-4PzeFdSd*25U>rgQpFA zYKv2oL6HLP1L-Iv<|Sw37eP7TyatI)b!IkkYf)SY9^|=rBM`}=&O}h5AxI%}vl%11 zxTq*&n?E?>Kw==wgc4yO5uA}lT125Idw8jgD{x9OOL9`dAwf`SacL4lH7@gtQ;RZF zi@^r!D3s;rl;%QA*HK7K$wWi}j_j3LoRnv14Au?Hw>VT5lqTh57H6cwVlgK%FTFG| z9cmc?O)2q-C16W*6iSP7psbwCWKeqs%;VAo_5Vlb|G{G%qr_+kjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb2435a8tsW)No7WZ;Ts|Hj3^a-V%SOAm__Qz!FF<{gZh zOfgLQe4qFZ^E~ER#4W~klj|(k+2Iltx-x9yj?%aW!IDdJN=l1T;|-w<`6gxwc5z8b z#^yxu2v>1(QD#92gp@`Z<${Re9Opue%|ck`x)Evqd_gknR8Vwol#QSi`ji#9lXVdGpd zS^_1EVWLEbGWzrLvU3Xnk65)V&QD8j;AT?`zcMxrhsz6KUF65)pMGcYjtQ@HlYQVEeGtQFYA z{WWoU2->QPhcrImtvo1SxtUX*U0hR>vDFuxKTuVp@{~|=1gad#SplXUlmhV=NV>ks7Cmx2b=N8r*9Vhto^+RL$t2kR1wNLaH45tT3z z#pYO9c5z)@#$NJ$T8CRRsl@ zqah6gd^W>Wf~}@TiH2M^Lpl?r7hou57c^|Z$phwENCF|XBgZWbUSrvek{qDM%VCRr z;{-g(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4T0eu0;B!^;T^xDz8ejJ(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4FOOHjQ0OQ zp)iU^Ltr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(c!$8~{{P_}zoWhz4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu;s5Ez~R2Zh2Y9u0xf5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7f#Dqjqy7Kk9lxW#8x4Wc5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC70Z<5xuKx#x!YCdMfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85p z9Rj2C|HC_eM}0RM0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71&5E$+MgF;~x zkA}c#2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk!0--%(e?ksJAOxfHyQ$?Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0-z8Wo&N`g!YCdMfzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85p9Rj2C|HC_eM}0RM0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd70NFgpJa3WZTT8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O!#e~< z=l_Ry{Eqr=Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nKp`+X{|^d~8g zI{COF83vJ6(BM)a5g=KRnWCWJ=@;Va?i!@v=O3cr7wY4q5ajCS8szHd>>7+@n?`1e zCde}`u0F0It_seM!Oo5@t~w-J4)$U^$X>9k@mUU53bq%l6v_4=*Wi#KPv;QQtFXF2so?Dzsi1)pD>@2b&&Ow` zXmV-VYq5z3>oPKclVfpVPG(7Jd}3)yKA4Z3HX(WpkxT-M=r!x8vx^%VGPW^;6I^m> zPDyD|Dw0l25p9%2hbd1+vQtoi83T=dXy9W_cu=L#*!TBSpfuenAf;t+^2294A_Tz> zKv++H!c$N{iEXI=;xkipP#vbprRl7}CLV5xE52bm5pIk(#1zwM_Eu#VS5#zdO9aO` zLN$V=i4w;MagyQ|8ke9bJ9~#@=Z+7Of6EWq!t-~t0wNx{+!xOjlnBPc=|(3F9w)=;D&IzZ(yim(R6xXcvIKxH;@U1`Ql3=2U~ z0@b6A(+-d#B*P($fE}dTQmx1?uCC75X$sB?C~8qSDo`gu zYFZR2lJbNCdQpe3tbtmCR?v`Fzk>Y>F5N&W6rZhNm0&v+KtT;HUCAuoN)ppS_CYaf zwsrP!b@o=!04eeGQ_xTki45=zcJ@%$QFrwXaP#-@arINz)FdT8DkvzR)Z$QYl4t}< z1rBmDiTaUBI0X%89D+-8aL7VfiRqeLnhXq#_WqiL5^iyFQD#92BIQE(%FUee?Bbf5 zjIF*XNf#muvlYTq!kTy?a-^nSw3-?k!icgMsf7r21UM-n>PdL=wKu@mb}24MP0ma$ zj!(`kNh|@it_{&eOqwP1!HwnCWN-+e%cJv+Q9=P-mgI0yP=FZ$uIKOt1XLk7AdvGE zJSd>qgJ=pKC?Kox*$h(%u^LMx5N#z?AxheY`U{+*VKzb9rPg|E;8Mg~g6986`~Sl%W=Fj<8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zh!9|5;pF55&Hpn9AOuHQqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd72G zF9bmI|D*l?;TNx?J{k>y(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4FTj37@hw| z4vkUvXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD49^f4o&O)6@jB|O(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@RKn?-W{69CNECW+2Un-vpPXUi6s~O8S z7B{A4Od5=`3~Jo(L8{Gd*u=e685uJ3Qc^353v)6{QsWa#OY*_|_>#n&)Vz}T^rHOI zf_Ot@olhTN;O!czgKU7Vu0oZblb(XQx4&ypfNPMtj)Ho)XK=8qABg4Q=;spd z8sx36qoAj!*TiAPE^VvH(QH~$l$oBMT2xY$9$!+Fm{}5^oS&DLlbKu+pI?*$5=Rz; zc_zry-Q6`v0hcB&Cs#NBAXf!XzhKv(5Cwlf1yrNC!aZF56#QJn^&sMzDGGLAZf0I` zer`cxNoG<`D%3fdDO^sj?w)>J3JSrlKCaFo3PFyZ!LAyPPX0k5ItuEZdBv$kB?`s4 zi8(o`MGBcI3Tc@|#U%gQr@$tLcvi8BSDhKV7>R9G0<*&DEl z2kYX}TwIWvoS9l2pPX5eSdy8a7jK9zV$v*Y!7i?;$=F&7Nk%Bvp;~4O3w=mZLQzR# zVp4!cNM;Ih0#fkw3vmU-tDk>}f?ueQk3x{En`@A(pR;Q)M1w|ViY6#JU0i)!LtGV{ z9fO@6U0iiYO2`V>qk~?SBjp}M8qvY-CQUBQJacw&V`auhVQ_(vnNks7lv-GtS(KU! zDj14V(~!6}&3*$>F3sQ9yK&;FZ%{nu7adTzHMt!XI z<(KEB79r`k#%m*3HM)&p!T9XVyc8V;2s<-HM*&j8<>hPk7MQY&D=Rb3RtKj?B)gE9 zR#0mpg&L9sX~_^Z^}!M!QUsBduppiRc?^`M!6hX;9XortI(sWLHFku6|%%fUA#>x{kV!XGmy}d!)LKdO(oBn`>~er@tRaae%9{ zr)#jfj=FQGPe^Ext2&99OF>hUj9`OB1uPO^AxDx?utWq2Cv>9}TwL88Lw!ON3`sIH zFEu@}Bo$($0%jorGt@u<8plxep!hY=F(ffCK$#Gf9U<0XO+#=cAR9=H8;H5Yk?`~b zPDk-Ru3@e|@xGpZ>Ldjpadsh8sXK;*1VOBUrdcQll!|HU-C&HAuLBAK7tat#&hT{& z^7eJ~p|ST}Bbv;NtE*6!T2!8zSzMw}oSK`M zSCUzroS~4Fs*snMoB^&h!0A;Zu{2Ggs5B?FST`gwDK#f2HBXb2*aEpDC$%g!2b>b1 zSr^qEX@~a|DQJOGgMz*STAC!)s{DeI{Or_91qE=67Req31qEGQh5Q0gYbi0uO2NON zBtIv!BtzFbwNfD^wMZc-H7&I$HLprR!?`HGxLDW4i6npKUEJ81v5ga4b7E0~MaTlBCdHzFyjlv$pv)A^LKCT3 zhfqnKwjDVAzyk`Lw4td<0am9Vw<=*O!IpztN0c=!!PX6p!t7RetQP~tNd&EJNQ%i?O`&b^k@i-hQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kgRGz3&wxf#S689Bun85mT-+kKdsz!Vc`A4hOWW?pt`UWy_M zSQUpjCj)~bSQ@G-EU_pvF|Q<5!AO}Iq=XaMAh1FdbJUo?iZ~QG8DZu?c1(iy8*#u5 zGt^|{W)SCu7-kGM227xsrJxbw8XTetn*V3z-_OARmH!3*ZT_?T`=LG?rA9+wGz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n21^L=vWhb@GJ<>e%uK8(JQf~SaYjz4 z95XV9iHj99Isn!M>Hi;M;D5@0j{htFP5wiJ#cQMP7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2^ga9{-ICKPniIs~*9NOb&K@w)>XHn#2M648G;$jhJ8Ni;Ltr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%#u9YFT~A7S7> zf-W=49}R)g5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2cOd(*!$i-l)&A`dX z$gfzET3n)6l9-d4SE83#l97{Il9}xYrJ+~;v2i$sq!yPz6oLBxJWMPM{EU1jxP!UX zxX!a5U~gyr$hwK;3d>R^76yF=eTFoKGzJES?FzIl(BM)a8z32*nF2M% z(=Wu;-8D!7bTgx0sE?0AkgJ<(kgK1wYcP^CG%`~(75x1aTwHxzLtGV{9fO@6U0ii2 za0^<<#Dg4!&n;-`(Hs=y8XOYj=^R3divof?eI0`$6}(*|6*LNpTIJl>#kI8=J0X#Z zWICdm#gsVqp1PtH$)ng})wDJ>Q!#)DL7fK-5!VrYO1D8rDO6cY>L zv-68fQu82=hX%0@gr}gOpsTCklvtcuY^{);pIeZVT9K;Yo1c=Jlas1YTyS_vNotWo zYEk;(C3#gziAAL5gQV2rVn|Po$uE2nl>hZ~$C5a`VV%ZQ) zz@u5%37pwmW5I!gCXL2*M+q!6N#X+y7CcY`AbB2|4&kwkTpU9bf=fP-UdoGOczA&9 z#%D83A=GZlZAMBa3K|f9#b>7ID8MX=&rH$e(lmEu6Zcld6{*>Yxdmw@smU36nc4A% z$UL_;9tU=DRaM6BXmE5Q%OSH}Q6dsqhQwF|g&!zNpcodENWLVkIHY=E4bC!9*Fg&$ zcoHMcY3W6!c`4N`&MZZbVDNjj3-q_KG4WHM1l&Gd(r0I5{IRt%Q)ZnxXb=;<}QI#o(GDGo>OP zn&Z-o@=FUKY!_%&@bq(WjZi>W18Vv~)M59iLhXjMeIa5*XF%#@Jt}58YGgM=K!bA{xV}Tm4v=7q2dl#0DALtc za0zzQEvYQXEKbfyRWR0dMWmf#aK=+e%qdn#P0lDuRdDkzCbAv|>%`2m@R9(@v1H|4 zg!w4BmImgdWL&D5Uku8l@o9bw_m_btiQlb!T-Q zbr*F_O=3$rY$b)JxedMw6gdgO@+l-iIW*Q-gDcQxYoy!?kweyHk0s|qR1uwj!HHXe zPy-U&9)~s|{au3sT!Ykg6x72#gM(fDKrHeal3=^Rc@>>=4S8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OgB^^{{}1*U8g<`j2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S0i9s;BD|CEQ}s0pJXFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiTZLtu3Nf3U~UsQX4kU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMniz|5Ez~R zr#uWtO&AS<(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~TP0;BW)gFS{u-8UKn zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmDu!07xx@hUzzR?gE4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5THB+M(6)255rLtMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONV6X$w{67zi1OppCiv<5_-h;daJl#Ao+;UP@|3abZqoNosszX-PhqA75OMnv)ZsoLQ1sl9`_uZ-~lIWME*u z3^LF)l1)6)7{4J^nW;J1i6yD&`9+zjFq2RPn;jz9#f^;_+tf=ElX6lamZ2!YA{6Hw zr-tD9?(tDm!L zFvMDo%oI(ya(_Ps7grzG5LX3f$6#ki7grr}T!G^Gc#v!GxdKHs*fj`O1i1!>1bI4# zkmZbkAWvV%phyL8*GL5oSjgxopx76mnWD+1X&cTa9;l5!C6p8;req?gC%8atvsf6r zxVAQ9Ycf&_fJ;MchI3=E#5`P*^jL?O4hmyXB;pHauu5?Ff>bIX0-4;XhP#?z6vI_Q ztVdXl8NbaX9_-?dj*M-^;IJ$x%1=uzE(T@e;)2xV%*34d#H7re%#upnGQKDwj9VS) zfej8g2!UiQEbtZZg+4+(I1CU$KyK(moB<}$LWW>;ps7c55N4c!Eg^|O$$AK{$7iPK zfJz#5E!WQ5=W*c?O0OTg>Jq=B7ei113>SBGNGhMfpjo z@rflRMTVes0`nEN>H(xEGpV#B6_h|oHr|M~#v9YZ`0~u6?9#k+aNt5?ib#J~C6*?o z7NsPXrWS#8gJOnAor%Q-@!9#sC8>EJjo{Qlq|Tz$%;b#n)XWk{njpbWs6UIL?j=EI zaY<@sdVE@9c1b?SqadA#wCwER>g=tcfuhFKPeDW7QC&yfNnJMB&}Iq4~=N9E_Gs_Q7IyJqH9rRJ2U7N_Q^>nP~y>2YZq`m>3< z%Hs+iX8W;=%gZx1tAfi%xCERLf)ZA6VN$}03SmS-__$~0q@?EMCZ=bm z7Jk zg2V?4#eqUXkhtcg=BDPAB!a`kH8U?Qr?j{jmT3IF*~F7=afJz5ivYFngk00YWdfSh zz1YQVZ5i7V!J&rB1YF|&DB+4r74ZQL&p|K-x{;YFc-v=a%0X2g6`IH}$0)!%qu>Mq z7KRlk*s5NbaV}Wv(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85p8Umy1|A%YL zj{0jf1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^D~}Auu}sj|huV)@TTfhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2n^Q{7@hwgt}#36uh9?~4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5I}^$==?t-EJj(QAut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?Tti@V{(rc}?5Mv+Ltr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%#u z5dx$0|A?>{WsQcwXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQM$Iqx1j6HD*Ws zH5vk=Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0*DY8o&QIK#VBhu1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E1VYY2?a{}0!g9rf2}2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-R~{LSS_M9}yO#tkDn{4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5E!l@FgpJ~Tw`|BU!x%~8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*A%F;h z(fNNwSd6kpLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(xQ4*!{Qq!`*-?Lu zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRA_PX~{}Ev^${G!U(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4T0ebM(6*BYs`-NYcvE#Ltr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1P~#>%dwGxmthS9?>CNb96MPyb2Kp>XDMJHoVLJtJk2BukmO&657O%v|CN%CKnG+F*NWLRFU*s2*$tw?TRl>D$@E)!AD?14WIepMr+Eqq>f| zle&(&v$~GDi@K&Jm!@tko4BJip%MXB4y153GH`&}AJ)-q;{KYrv=tYm=H$dDXO<*_ zO8SP_;AmA)fM|ynGWaqeSRp9$fixlt zXfmq@csPJ;#%C=|A=qY$twky|6*Ry;iqA~ZQGi(jsSx;V8SEpC@y8=t698fqM6fA5 zgY7R*Je85M(6*Bcl?g}ZZrf&Ltr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1VCVP{vQ+yqj)p~MnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz5ls2#n7E z5AXOL_1$O)jE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6BpV08W;6bhqwGz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nhIa^z_Wy@>{Eqr=Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nKp`-?{vQ+yqj)p~MnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz5ls2=H>%F$gjqW8hZdRAjAX`O8wq{GK_U={A!Me*@o7z8u~{p0C`W zxVjmSL7@l3eg;bh28KqaMh13qYkj6h)y%w<)QZfMiujz&lG38|%J`C^#FWgE%>2Cg z5)2`RX6GPR#}HQqPd^ve2n8J46u`jWPXR-}2Ey>n6wOAqdUkPRW2Qz!xFd=SQgd?R zt1?q_vJ*?G?&OsSHgRPC!u=Uj?=uO!)gLpvXZ?(102b;l*dBXx7xRi<@gR zH7cUH1L4{dh&gZphDIE&fUAfv0XsoKK>_XxxEyLQl+?0|8>=%lN}}1Gn_85eo0t=y z3$Yu@WoW=*GgLl47iKS#%}_ZFC=K#+qf8#VxUVf^qcyU%$(e~c@rg;9IhiGu@yVGb ziQt5goC)$jR=E;vuEDAjWE{*%SQTi%?E|F^#$0xBYi-6xO}O()5_3}XNgYyEZwq1dDJHhFh>GLUND4 zp8^&IsP19OW*4{BWo*=jhe>j2PDyD|D##poprDHtVz>ld1xPz0Sp5AI&=sILBMaRb z#RaL!nW@DfbKuTE7c0PU2D%E6b`)ozD?o8ZT_(G@r6yyeIy^8+iV`!?(g%u2K86c0 zbs+2qr&Ux1DE7B2X0VH@s&e#kmSv`vm&GUL=V!-*-Ga=9S{df)8m@pWuHYEV73}Kc z>Kvk=9unl}8KSP>7_5+;nU|uYP@ov2Wv;N|b>2jPIi5gZK)CCT74o~#E}6rY)5TcVel!iDTfh(1_iRsd^A z)&r?b)`N-0XQn`uf&8eD1Tr%Tq$F7nBoLpO!WHW0>F=lD=;H(TRB(W+v!`pYx{g9I zN#23Rxk53-Mkp8IrDCuPi<9+WGMOp1#TcGafar#K0Lfd$lzGcJ)F&h~$W>iOA-R+! ze?ha9LUJk8X=piDAsOtkFSimtyf5R6n$EM)Dd+FI1GA7z+sUcXJI6_Vo8t z*HI`S$#aO3OQ8VbJcI}$>I%Rb2DunY;y?Qk(2 zh2j#uoYb<^95AaOu_!S&zAQ1PG!>HFq1GrA!%T#R6jU7ID}~|`P$n%dLCPfxwh9oZ z`niCtD9$e}N={Xf4e|GN4Dk$h_E1MN6zoa`uvuV-+k$k01>-YQxC_)K~c5zcj#ztpw5eRA-BE@oXVtjETG9Of5B*I%7_0aG}v?`I+g7m^mEYxZe>}iBK z8fbh_JI6bXO+4O`kpb+i;=-KFlGJ!m^n>~FsTIjNrNx!9lfwHGr>K)z|@sA3m) zHbia~!HNqcO&}(wa4m)#FxA9^w1VA$DW?IFgEoFLQ#5(MFjUy8Gd7CC!vdxS**_>^ zH8@>>tOXp`NR1G%93lv+D%i#CH5rkb%P>2NlZ!G7O5!0Ds$exvn<1*9nm|?~*$k1> zfKcGzXDDYEx7TGv>M6kN$w|yhF9lW8AO^Z%6;A6xs^QwutcS^Iz!)GWFfgD8J2=s& z7DEycgfv1CtHiJ!MH;FFWI4Fd0Od`Xafo1V4*M)P=`4%#_5ElA_%Flz0%0 zES8y6T9O){o1apF(*YnYFs1!%TTW+aOJp!t7B{yz-- zf52t%C@~rWqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFw8=LnVFLl)c(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@RKna1-{y$1^jB-XpU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhm&hQMh5 ze^^HAsHa9lU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMneE41b7)37pW zDtP(@y9R|Q`1>g!*~As@;p(U0=Nhh8lv)^HQdy8{s~!^M=;9gT>F=k`<>cz_>Bps@ z5bWyX>Kvlr>=^9IrJ$gofTAliMZq&z!7tRuN5MZx!OuTL!8O7&I3!p>1FFqX!7a$& zR{`Xm%#zIfJdpMvSB1gwlW&E@Ln(#X`vz%FjB&(x@znU|7Uk(p8v zpOaZqT9jT14rs8;;!7}u7@DC0?&;^^8liwg8z@i|Kw*oaUjy##_{^sGRJJ3sRFa6LaDdlQMHMODd_G z_|Xi9Wr1Kf1r3OgHPw+bK~r`k2RPhYiV1}~dF4)V8nnQIg*(xu&M*mg)ZngaWM`KS zR_18s#2efti8-KBpS+}wq8S$KkjMuWNJu#cYhmx`ZW#xS7C`f z1nzVkiM_Cq4IKI{<-~+Oc?llkBytly!V6R`bRf>6Pw1m2`PxQSaNDL;7;m5_mXs8c zS+*l-B{8`x*ea+yhJ*ysAi0Aam6=ppk_r!V1zUK#3TN|1fr$1E++g-VrB`MDIZxcsY&0{PeB9J zwD$~A*MZRSKCWS|KH$8dN%fX~W(n0Z0@(MkOb`;}=oz99CK3L?o+Fxh8<`+6V@O2I zke4OEZX+{KjD(m$$tsOJjg0K#=H^U|rtsbetltFfsKi&H2|#)-3@y;sKW1kPt`XG# z0AYVW1*~RZ_Jv00|0y2Q7&Txt1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^D~< zJpj%BGYAZNXO22>Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMniyt5Ez~R zry%e~wT_0sXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQJUBfzkf|5Q(T!XO4!z zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1Jh5!X2fYkr5V_;yYq`;_At)n3@8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OgERz?`u~H}g`>_I4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GZ|C1V;P+l!oA_{?QN^4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5E%R+Fxvkg{Bbnu!qE^I4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5TG;!M*IJihTy3F(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R82n(g z|3CQSXw-$HAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3^7X$Xw=|0xZ@QT?MK zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiT(LtwQ3KltNl)P>9<{!~?aN7&7xxQY(rJb23X(;}c6u^1=N0^3=qF{Ji*rqWpr?qLRvZLo@+~P6h_H zKCq)&SQ|yz#YIJ#+Ota%lX6lsOHy+|n4#S{$kj2#RUyRD$;VXzB&49hrGOP=rYLy& zg}A!A1}OvtdHOmAMJjl^M(V&+H%l}MvrC66bF?~_6lJETrxukIrNu5SK8t_q<6E+9|%`zauq z#})43>Zjo68m?EAS{PqaS&(Y0?i%6j6B_Ip<{IxFPYSeJ2x{$A-A-+M4>1( zEwv~$FF6(6aJ|eFg|z%41vDQiXh6b3QypZJtDlQCm#d#kGk>EHByJ3eikr;5Vo>xU z;*O-af#`&^g=Gu4`>|(;rou)paOk&G6ApbydPd5jMCAsM zlj0#-VWCfSR)D*HsE0mklCNkKgp@+ecmqATG^eDrD3#1qkE$CM^h76o=TM)J&>&YT z2RzhK)J^nILt#lC>T(p)Mjf*+YFWbi*D!x$}dAycK_P zFD^(;&P**PGr6PcCONqW2e>+Wx&~7@$f1s+ZgPhj3QO)#m*Y(CeBiJrkldkWLK7^h z$sJWUEbNIc<)J07{AysNE-V!D^wJ4j+w2q_|7T83W>%Oi*-oB1LR1R#A zi*gflsGHEChQbm$)a5u5dS)XJB-FDBhdOzMI>=3~&Zfwlh zrVgIKDK1FO$%(JZOwGwoEJ;nzFUm~CA`}N3sRYmNU{Qc`vIpx75KItaP-Y5@uK=GI z0?mzp=ShNG-CToQ{hVEc6~L-BGE+3+%KiNmTwHxzLtH`gEzXWEuJB1DxDp~5D4vf8 zxdt{ph0PTxs==;7xFX0kI3&o^IfN`{AkBp-Xn_41pP8bgfMQ=fXyQlHHXJmY$B1J# z526(`Y78D9k2gdUh;0@NV;9%fW^7GHN&#^7XsTnd#5`Or>9Gzm9Tdi(h`|@mV3pwT z1*rthG*B4Ta90zIVz^3(^;C#o9B~V`2okTBp={#5>iFXo)QQeb%z?!!lpEd55W+65 zuFlwMj})g+NpMKULpf1c;u9)GYHUKxg~TP%F^LFFXUAYNvMkiC1mh5@j!H3zBmSV4 zKw?ibm`&VP9DnRV@?s>Y|IZ*m<$`_GxX}<84S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=CK@|d{{r^D~9ixsJ4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu;s znt;*s|7a4dqlS)#z-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2CV3ISg3!wkF( z-3&}kEOOjWxK49*aqQ)Ct2IdGBdbNThw!GZ#FF^je8i!KF0O8lp*|rB2DrC@6(o|X zqpGwxv7{=#s2ILQjtFa@nvzl#f?OSa6yQ3zG)E6vL_Y_Sx<{{|o!|&Nf`zC<7Mna9 zMc74+jX7Fu%Q92T%TUg~Oi4{DO~)bx&8cCYuHgz;q!k>4xgcjuaw#a}m*=Gx#b;;c zrGQc>gqI0sgO8hx&&vmigO0FN$V*L6EJ+20jh}*{0{FN|bPjxzWWn*jWc`H|U5?2rDzCRiIHCT)uTyf_KJ2jy8pm z41Lg0gB)545gaYwkc((AyEr)`F(oxGzN8>NEx#x?HAf-DH6jFjeko{=u8xAPu0oZb zlb(XQVYr#Li8}abQm{@mqNE@`J3GEOIiox^CnptFl7aO*CMlGs<|JpN<|=r5>xQQm zl_;cVCY30p7ArXA=am-gh6E5cwkWft1jW>VqI`w&%v6Q4%+#Dzkih|^dD$hYaHCT* z^HTE^%0b827NzDX;IV^xWjvRrPNNK)xV5-wok-JffUEI}}sZkSrUTJti)mlLpRhF$axJ#6P}ERl8m5+BQ-Wa1rjJBA~zTys?e%((zcu;c^a0e z;AtMyDtJ7g*-5zhfZ{upou&{^fVY7oIYyI9)2&gGO+3<=Kng-m1@J?ikp&rgC_Wjw zv7}K9w40o%Sr$1pz?=*90gTJgfh`rlWQj=uNYRcIRG?Y}B^WU|d5O8HsO6Rdq?t*C z-lWvx3YbBKh zU~eFjv$Kb*v$qCF+|y4%Lp|Kl&COL^M?pR4@SNa~P(ODNJJ{L7)5itGa&ryx^LF$N zaD%J!4fTVZ@~fku?&#y=?&|C6=?7Bk=;Q3+>g(z4sIIAr%Q@+(<(bJDCGnYg@uhiH zsd@0+25+$9(pgZHnpq6emjS9!iip>U5u>3C`!Q1Bv2`$snsY4+Eb1zncH&FYP^?Be3$Ol{iW1P2xd6ATkj zavfLGvajHUF(h{(7nC5SAb)|X86ppJC@M`YE-B4RFD_2bC@raiM=;D5 zT+ybGl$w#4nggmYi$Iwc-2Z`V0yS8`BH&m9H8xVg%>+X|Q(TRVs(esO0o?A<)m3oK z%u7p5&PXj*2uZCdNlVR1QOHk8EmH6b_V#p*Z&W2 z1dLig8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*ObO?db{y!Z8dDM#05Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c;1C#H|3APHFlzm12#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S22Ap}O}|LG9OqgITDz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2AfhrsCk{{Tn8sP&^EFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqai>CFgpKFhd>^+Vl)IsLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1O_++M(6(r zI08nk9}R)g5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC70Xl@h==?t&0(sPm(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7~l{Xo&O);2pF|~Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!n=nw*<^Z#@R zMX8A;rA4Xni6te8$=PUJhK0^Su8twD3L%b8KCTLAvI-hp3WPvrih`$Kh^xD6kU~I^ zr>|pBq=L6=qz++?aJ!I9@beE*@C)_vQ3!H%a}9F!b9N1eyGbK6MN`4wPr=32$2G)N z!Pzm`+0n(72#fL(b5j*UTq8mhV8#=nDX}EJJhi9<<~JgA6eNYiD@ONd0=Z4bafTn4(};aa7B?S&rDTN^2d~qUzSCE>VnV1uwn3S25 zSyIWc0Gg~k{ajol6fiY{A`+Ko1&v}<)8aEzGy@v7*~F7=nHaz>DK5;(EJ=+|EG@|g z^O2l|rqvLaEe!LUjT*Js#cgewT1!!L3YzseO_&GuBwF4<(@sn#f@d=a2wHF z8&AMuH05ZSGRQSJB*@b_gou<0cK}kUp`d}}e;oxhyFkf+OS867lU>|Vo2gL}9P=ni zt0XZeHLoNdLcxuKa2e)8V+%`?gs6b(LrIzt83hdp4RV29qXwIJpfg?j$+DxsrsL2kZ0NvTMq0UB2WDv!~q%F9C1Y#DZ4lPQFFJ~c6B9wq2s?aPU zA>E{<7L{bCXQyVC6eAbVq?GNrQyj!`plIgOG-y;~6L*#+7}4+;W|-B%(WuHUE-TB_ zpNJB*u%Km_i8V6u#v)RzA-Nl02Fouf$lHB|}5X&_uH8(Y{BoQp^QJR~Wm!FxUj;CFaUX-6& zT%4Mhomi5Zo?nznxROgODJhE2EhVOs1}n|ZAzEo>9??pZGl*82mPWMF^i-miX6F;H zG@BTuIjO`pOp3FKZuC?UuQa`wXj3!uGKqC-5%H!br4}b=6s2Y+mFA^GQaYY=o0e0W zoKaGiT9lEP18Ze*X__>uu!*}X;wnB8b8}1cGD|Y^^WqH=Y=-Gg+KtNW;);q)E%M+Z z1R;lDF-$`#Mi3Hs3laqd(u)!Wh0K!FT&zVpq)b6>sDqTEmFq-R9tDY@T%Qu3R+?HA zpOzh8o|u-F8V@UD5JilWzq_j+sAO>r@^uOd4GvM~(zI$+ViWgO#}&#&iFxU%De>j0 zi3Om5M&U9{ZK-HfWEWRgXX?}ihc${c3Ws3|N{FM#5eRez^1>aYjrKvWprDYQm|Kum zlA4^6mzj+wxVB^<`u|}Z zxuaei4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu;sXb6nX|3d>}lo}0z(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S``C0;BW)!#HwBy*3&GqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UoM|814T<17egK4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=CVH^UZ>;H#wRS$#5^v|CdEcmc5!uersjG`G?pZmlorRQrlqAOmlPv&7*?T1 zB(faAm{cGyDitu}QX$mOGceSZQ0OV-CRW53mz1WZ<`Em<3Pq{usX6gj0?De;j7{8E zorxhcFD132xG*QPBsD&>a$v+8qK4bbibf-LaZ_WaMqzM_WTsTa zmlP$Y#HXZYmQ+GW5I?gdGe0jrBe57F#IPJ1-kyFgt`Q2@bSe1zDPYm5paC&CGexth zveAHD+}N0@RU90>SX5&XVps~b8d54^Q9(GuAw?%bD^eDN6?_Uou5PYDu71w0!3b|? zWTt3>{N>{6;~L_s;OrRe?C3%`LqV*A`5Tt0;Bk&@6<86PH9@YyAwizbAp|on#2%#b zUO@xdk2(rq)8jK!G`Te08V%XRBaLxoOoTpooW~nt5oB1_#Mh|DE-o(4)LaRUMX()U zf?*L#Oo7F4#|=^(Ao&2NpGhy?5{nB`vrC{A6|RaWBekfgI5{IRt)w_9wJ0?+IRjFA z;8vfRlbN1c9AA=|S_D?grK#1Z&n9jwjw@)v;Sg^KrWh9U?_!h$Hz``&8+F;mwY8Z# zoWbFkT$GwvQd*Q6pIB0on4FEqWmt$3wrH}rLm84pKqQIb4blR^aJ!I9z?N%Z>d;a% zp-kh{XwN1ds?XHO)M(2tZf(lcC=V~0axzOwi_$CObMsT;p=>Ax63R@=Oil!qQw-~& zfrBWWkd(o6f-*9aFkH8S223WaBuKNjx5aQ_Mtu|AmJWhvXmZavQ8O5-Tpff7b=@WcvFYeBAVu0gJT&aS}< zAirs3rf3q8@GzqUugQ=^L8{qlV7 zNoIOUYJ6^DNorAMVoqji9ymAYDCp`ccqiuNDI}IAXDB4*6f1ZI`}^qzmlTy|my{MM zq^A}aq-G{(q!yJZl&2P@q~;MW0TT0aQ;V_@8Malj(ScoDQ=;p*(I0TTE0Q_xU%_jC(U*HKXS z4s!JK_HgwKQP(6QDJB+`fQ(S}H7|6Hcb(ncy^2oRpfLnFmds1f5@;oROH4nimh%40btTt5On6Qz5?O z(zI!GWE1z-#8sQ1Cct<@R6fHN9!UmHaGS)b(Vk5_R3Dc)i8;v`skxcSi8-+P#1KP> zVPhMAqaC}rzCKg8H#nzYD8Ue5*npB>Fyx8IG71U`gE{g6QW>1I1wr+ zDC8t2lCufvrrWR$UXQyUjWclEd#JrTmq7+be_s-8P$Vsgrob$i|Ta{W+5}%z9 z%G~i8sW~~RMX+!n%5BgbRgBR9gXq@Pg;W%7sW~YMX@~a|DdZ*=Cud~lrRL?N7AGYZ zr7F0lfl8rNf_Yd$K>=!6d@;1z$plq5pr#|2CIbV5G`qO9DRPS_C$prqD7~_YtI>;H z+|ZDz*%p#p$`Uhk5|c7>GD|Asb5hGva}qH`81|y(7Yqf&Wf)3wi~>r*h)9&AG>$Q1 zg-g?=(VI;?+z@90gyGY8LoC6wuTj0xlU>~3m8sDcsRfF?Zv(0`3ebBS$Q>VsJc{+zc@;}G|;xJP0Q9%P996Aa}&eP=599{npZbgg|qaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFswshbp8LZj^0tvjfTKz2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mk05}9j=l{XMFiMPuz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2Cl4uR46|6v`yqn;ZLfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!3h%2#ogs z!ND*}jE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz_1R1(e?ksI(kPvHyQ$? zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0$?yY{|^p^QDQU%MnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz5lq2#n7E59{b1_1tI(jE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6BqV08W;91NqxXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD z4C@dW?f(z!=pFUkXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDfJ0z({XaMu zMv2i77!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVEcAuu}sKdhs7)N`XDFd71* hAut*OqaiRF0;3@?8UmvsFd71*Aut*Oqagqe0RU*Wh_nCz