From cdd52be2f9f2dd23925b3e5d9b8add907ebbe7d2 Mon Sep 17 00:00:00 2001 From: nic <139033898+dicnunz@users.noreply.github.com> Date: Thu, 30 Apr 2026 13:04:46 -0400 Subject: [PATCH 1/5] Harden Mission Control launch surface --- .env.example | 2 +- INSTALL.md | 97 ++++++ LAUNCH.md | 5 +- LAUNCH_PACKET.md | 294 ++++++++++++++++++ README.md | 57 +++- assets/codex-mission-control-demo.mp4 | Bin 431462 -> 432897 bytes codex_relay.py | 20 +- docs/FIRST_10_BUILDERS.md | 56 ++++ docs/REPLY_BANK.md | 124 ++++++++ docs/VIRAL_LAUNCH_PLAYBOOK.md | 216 +++++++++++++ mission_control.py | 24 +- scripts/configure.py | 2 +- scripts/fresh_clone_test.sh | 1 + scripts/install.sh | 13 +- scripts/qa.sh | 3 +- scripts/record_demo.sh | 2 +- scripts/smoke_test.py | 6 +- templates/mission-control/AGENTS.md | 4 +- ...RATING_SPEC.md => CODEX_OPERATING_SPEC.md} | 2 +- .../mission-control/_ops/COMMAND_CENTER.md | 2 +- 20 files changed, 896 insertions(+), 34 deletions(-) create mode 100644 INSTALL.md create mode 100644 LAUNCH_PACKET.md create mode 100644 docs/FIRST_10_BUILDERS.md create mode 100644 docs/REPLY_BANK.md create mode 100644 docs/VIRAL_LAUNCH_PLAYBOOK.md rename templates/mission-control/_ops/{GPT55_OPERATING_SPEC.md => CODEX_OPERATING_SPEC.md} (98%) diff --git a/.env.example b/.env.example index 753e2d9..6cf2274 100644 --- a/.env.example +++ b/.env.example @@ -15,7 +15,7 @@ CODEX_MISSION_CONTROL_HOME= CODEX_TELEGRAM_WORKDIR= CODEX_BIN=/Applications/Codex.app/Contents/Resources/codex CODEX_TELEGRAM_SANDBOX=danger-full-access -CODEX_TELEGRAM_MODEL=gpt-5.5 +CODEX_TELEGRAM_MODEL= CODEX_TELEGRAM_REASONING_EFFORT=high CODEX_TELEGRAM_SPEED=standard CODEX_TELEGRAM_REPLY_STYLE=brief diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..f6d4a93 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,97 @@ +# Install + +Codex Mission Control is macOS-first and local-only. + +## Requirements + +- macOS +- Codex Mac app installed and signed in +- Python 3 available as `python3` +- optional: Telegram bot token from `@BotFather` for phone control + +## Safe First Run + +```bash +git clone https://github.com/dicnunz/codex-mission-control.git +cd codex-mission-control +./scripts/install.sh +``` + +The installer: + +1. checks macOS, Python, and Codex CLI, +2. creates `~/Codex Mission Control`, +3. discovers projects under standard Mac folders, +4. links `cmc` into `~/.local/bin` when possible, +5. previews project `AGENTS.md` adoption unless you choose to write it, +6. optionally installs the Telegram Relay, +7. runs doctor and writes the local dashboard. + +Mission Control does not move project folders. The hub stores symlinks, markdown ops files, lane locks, and outboxes. + +## Project Instructions + +Preview the exact project instruction blocks: + +```bash +cmc adopt +``` + +Write them with backups: + +```bash +cmc adopt --write +``` + +Existing `AGENTS.md` files are backed up as `AGENTS.md.cmc-backup-*`. + +## Dashboard + +```bash +cmc dashboard +``` + +The dashboard is a private local HTML file under `~/Library/Application Support/CodexRelay/state/`. + +## Telegram Relay + +Install later with: + +```bash +./cmc relay install +``` + +Relay is a private Telegram bot pointed at your Mac: + +```text +Telegram -> LaunchAgent -> Codex CLI -> Mission Control +``` + +Treat it like SSH into your Mac through Telegram. Keep the bot token private. + +## Runtime Files + +```text +~/Codex Mission Control +~/Library/Application Support/CodexRelay +~/Library/LaunchAgents/com.codexrelay.agent.plist +``` + +The `CodexRelay` runtime name is kept for upgrade compatibility. + +## Verify + +```bash +cmc status +cmc doctor +cmc lanes +./scripts/doctor.sh +``` + +## Uninstall Relay + +```bash +./scripts/uninstall.sh +``` + +This removes the LaunchAgent plist. Runtime files remain so you can inspect or delete them manually. diff --git a/LAUNCH.md b/LAUNCH.md index 8ce5437..0e17d9c 100644 --- a/LAUNCH.md +++ b/LAUNCH.md @@ -46,6 +46,8 @@ mac-first no hosted account github.com/dicnunz/codex-mission-control + +looking for 10 Codex-heavy Mac users to try the install and tell me the first blocker ``` Attach `assets/social-card.png` or the 45-second demo video. @@ -76,6 +78,7 @@ cd codex-mission-control it sets up the local hub first telegram is optional projects stay where they are +AGENTS.md adoption is preview-first ``` Relay: @@ -116,7 +119,7 @@ Keep it under 45 seconds: 5. Try a second BROWSER claim and show held: BROWSER. 6. Open the local dashboard. 7. Run cmc packet. -8. Show Telegram /mission status. +8. Show Telegram /mission status if Relay is installed. ``` No theory. No architecture talk. Prove the collision layer. diff --git a/LAUNCH_PACKET.md b/LAUNCH_PACKET.md new file mode 100644 index 0000000..999e7ad --- /dev/null +++ b/LAUNCH_PACKET.md @@ -0,0 +1,294 @@ +# Launch Packet + +Canonical launch plan: [docs/VIRAL_LAUNCH_PLAYBOOK.md](docs/VIRAL_LAUNCH_PLAYBOOK.md). +Public reply bank: [docs/REPLY_BANK.md](docs/REPLY_BANK.md). + +## Primary Post + +```text +i kept running a bunch of Codex chats at once and they started stepping on each other + +same browser +same repo +same inbox +same account surfaces + +so i built a local traffic-control layer: + +Codex Mission Control + +missions +lane locks +approval packets +optional Telegram remote + +mac-first +local-only +no hosted account + +github.com/dicnunz/codex-mission-control + +looking for 10 Codex-heavy Mac users to try the install and tell me the first blocker +``` + +Attach `assets/codex-mission-control-demo.mp4` first. If video upload fails, attach `assets/social-card.png`. + +## Reply 1 + +```text +the core loop is intentionally boring: + +cmc discover +cmc claim BROWSER FLIGHT "using the browser" +cmc claim BROWSER OTHER "also using the browser" + +second claim gets blocked + +that is the point: Codex chats stop colliding on shared surfaces +``` + +## Reply 2 + +```text +it does not move projects +it does not run a hosted dashboard +it does not create another account + +the hub is local: + +~/Codex Mission Control + +projects stay where they are +``` + +## Reply 3 + +```text +Telegram is optional + +Mission Control is the hub +Relay is just the phone remote: + +Telegram -> LaunchAgent -> Codex CLI -> local hub +``` + +## Reply 4 + +```text +if you try it, i want the first blocker + +not a review +not a feature request pile + +the first confusing, broken, slow, or surprising part of install + +github issue template is in the repo +``` + +## Approval Packet: X Post + +- Mission: CMC +- Exact action: publish primary X post +- Target: Nic's X account +- Exact text/change/object: use `Primary Post` above exactly +- Evidence checked: repo URL, README, CI status, local QA, launch packet +- Risk flags: public post, reputational claim +- Why now: request first 10 real builder installs +- Proof after execution: screenshot or X URL +- Stop condition: after one post and no extra replies unless separately approved + +## Approval Packet: X Reply Thread + +- Mission: CMC +- Exact action: publish four replies under the primary X post +- Target: the primary CMC launch post +- Exact text/change/object: use Reply 1 through Reply 4 above exactly +- Evidence checked: primary post live and attached asset rendered +- Risk flags: public replies, reputational claims +- Why now: explain install/use/safety boundaries +- Proof after execution: screenshot or X URL for each reply +- Stop condition: after four replies + +## Approval Packet: GitHub Issue Cleanup + +- Mission: CMC +- Exact action: update issue #1 body and title to use `codex-mission-control` URLs and current commands +- Target: `dicnunz/codex-mission-control` issue #1 +- Exact text/change/object: + - Title: `Install feedback wanted: first 10 builders` + - Body: + +````text +I am looking for 10 real Mac/Codex users to try the Codex Mission Control install path and report the first blocker. + +Start here: + +```bash +git clone https://github.com/dicnunz/codex-mission-control.git +cd codex-mission-control +./scripts/install.sh +``` + +Then run: + +```bash +cmc status +cmc lanes +cmc packet +cmc dashboard +``` + +Optional Telegram path: + +```bash +./cmc relay install +``` + +Then DM the bot: + +```text +/mission status +/mission lanes +/mission packet +/health +/policy +``` + +Try one safe local task, then report what was confusing, broken, slow, or surprising. + +Do not paste bot tokens, `.env`, private screenshots, personal files, raw Codex transcripts, auth files, or unredacted logs. + +Feedback form: https://github.com/dicnunz/codex-mission-control/issues/new?template=install-feedback.yml + +Builder script: https://github.com/dicnunz/codex-mission-control/blob/main/docs/FIRST_10_BUILDERS.md + +Demo: https://github.com/dicnunz/codex-mission-control/blob/main/assets/codex-mission-control-demo.mp4 +```` +- Evidence checked: issue #1 still references old repo name +- Risk flags: public GitHub issue edit +- Why now: remove launch confusion before recruiting testers +- Proof after execution: issue URL +- Stop condition: after one issue edit + +## Approval Packet: Publish Launch-Hardening Changes + +- Mission: CMC +- Exact action: create a branch, commit the local launch-hardening changes, push it, and open a draft PR +- Target: `dicnunz/codex-mission-control` +- Exact text/change/object: + - Branch: `codex/launch-hardening` + - Commit message: `Harden Mission Control launch surface` + - PR title: `Harden Mission Control launch surface` + - PR body: + +```text +## Summary +- makes first-run setup more trust-preserving by defaulting AGENTS.md adoption to preview-first +- adds `cmc dashboard` +- removes model-specific defaults and public GPT-5.5 wording +- adds install, first-builder, viral launch, reply-bank, and launch-packet docs +- refreshes the demo video asset after copy updates + +## Verification +- `python3 -m py_compile mission_control.py codex_relay.py scripts/configure.py scripts/smoke_test.py` +- `PYTHONPATH=. python3 scripts/smoke_test.py` +- `./scripts/qa.sh` +- `./scripts/fresh_clone_test.sh` +- `git diff --check` +- asset dimension/duration checks +``` +- Evidence checked: local QA passed and worktree contains only launch-hardening changes +- Risk flags: public GitHub push/PR +- Why now: make the repo ready before public launch traffic +- Proof after execution: pushed branch URL and PR URL +- Stop condition: after one draft PR; do not merge without separate exact approval + +## Approval Packet: GitHub Repo Metadata + +- Mission: CMC +- Exact action: update public GitHub repository description and topics +- Target: `dicnunz/codex-mission-control` +- Exact text/change/object: + - Description: `Local traffic control for multiple Codex chats on your Mac.` + - Topics: `codex`, `codex-cli`, `macos`, `local-first`, `automation`, `telegram-bot`, `launchagent`, `agent-ops`, `approval-gates`, `remote-control` +- Evidence checked: current repo description is less direct than the launch hook +- Risk flags: public repo metadata change +- Why now: improve link preview and GitHub search clarity before public posts +- Proof after execution: repository URL screenshot or `gh repo view` output +- Stop condition: after metadata update only + +## Approval Packet: Tagged Release + +- Mission: CMC +- Exact action: create a GitHub release after launch-hardening changes are merged +- Target: `dicnunz/codex-mission-control` +- Exact text/change/object: + - Tag: `v0.2.1` + - Title: `Codex Mission Control v0.2.1` + - Notes: + +```text +Launch-hardening release. + +- safer preview-first installer behavior for project AGENTS.md adoption +- `cmc dashboard` +- model-neutral Relay defaults and mission wording +- install, first-builder, viral launch, reply-bank, and launch-packet docs +- refreshed 44-second demo asset +``` +- Evidence checked: launch-hardening PR merged and CI green +- Risk flags: public GitHub release +- Why now: give launch traffic a stable version marker +- Proof after execution: release URL +- Stop condition: after one release + +## Approval Packet: Draft PR Park + +- Mission: CMC +- Exact action: comment on draft PR #5 that it is parked until core install feedback lands +- Target: `dicnunz/codex-mission-control` PR #5 +- Exact text/change/object: `Parking this until the core Mission Control install path has more real-user feedback. The Gemini/queue/terminal/file-transfer scope is useful, but it widens the product before the current lane/approval/Relay core has enough installs.` +- Evidence checked: PR #5 is open draft and widens scope +- Risk flags: public GitHub PR comment +- Why now: keep launch scope tight +- Proof after execution: PR comment URL +- Stop condition: after one comment, no close/merge unless separately approved + +## Approval Packet: Hacker News + +- Mission: CMC +- Exact action: submit a Show HN post +- Target: Hacker News +- Exact text/change/object: + - Title: `Show HN: Codex Mission Control - local traffic control for multiple Codex chats` + - URL: `https://github.com/dicnunz/codex-mission-control` + - Optional first comment: use the Hacker News body in `docs/VIRAL_LAUNCH_PLAYBOOK.md` +- Evidence checked: repo README, install docs, demo asset, local QA +- Risk flags: public post, reputational claim, community self-promotion norms +- Why now: broaden reach after X/GitHub tester ask is live +- Proof after execution: HN item URL +- Stop condition: after one submission and one optional first comment + +## Approval Packet: Reddit / Builder Community + +- Mission: CMC +- Exact action: post the Reddit / Builder Communities copy +- Target: one self-promotion-appropriate community selected live before posting +- Exact text/change/object: use the Reddit / Builder Communities copy in `docs/VIRAL_LAUNCH_PLAYBOOK.md` +- Evidence checked: community rules allow the post, repo link works, install docs current +- Risk flags: public post, possible self-promotion removal +- Why now: reach Codex-heavy builders outside X +- Proof after execution: post URL or screenshot +- Stop condition: after one post only + +## Approval Packet: Direct Builder DM + +- Mission: CMC +- Exact action: send the direct DM copy to one specific Codex-heavy builder +- Target: one named recipient selected by Nic +- Exact text/change/object: use the Direct DM copy in `docs/VIRAL_LAUNCH_PLAYBOOK.md` +- Evidence checked: recipient is relevant and not a cold spam blast +- Risk flags: outreach DM +- Why now: get first install blockers from real target users +- Proof after execution: sent-message screenshot or URL +- Stop condition: after one DM; repeat only with a new exact recipient approval diff --git a/README.md b/README.md index bb2622f..74fe0c0 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,38 @@ [![ci](https://github.com/dicnunz/codex-mission-control/actions/workflows/ci.yml/badge.svg)](https://github.com/dicnunz/codex-mission-control/actions/workflows/ci.yml) -**Codex Mission Control gives Codex a control room for your Mac.** +**Stop running Codex like loose chats. Give it local traffic control.** -It finds your projects, creates mission workspaces, locks shared surfaces, keeps approval gates, and lets you text it from your phone. +Codex Mission Control is for Mac users running several Codex chats against real projects, browsers, inboxes, repos, and account surfaces. + +It finds your projects, turns them into missions, locks shared surfaces, keeps approval gates, and lets you text the whole setup from your phone. Unofficial project. Not affiliated with OpenAI or Telegram. -![Codex Mission Control control-room hero](assets/visuals/hero-control-room.png) +![Codex Mission Control launch card](assets/social-card.png) + +## The Problem + +One Codex chat is simple. Several useful Codex chats can collide: + +- two chats use the same browser session, +- one edits a repo while another tries to push it, +- one drafts an email while another touches the inbox, +- one reaches a public, payment, or account surface without the rest of the work knowing. + +Mission Control makes that coordination explicit with projects, lanes, outboxes, and approval packets. + +## Quick Demo + +```bash +git clone https://github.com/dicnunz/codex-mission-control.git +cd codex-mission-control +./scripts/demo.sh +``` + +No Telegram token needed. The demo proves the core loop: discover a project, claim the browser lane, block a second browser claim, generate an approval packet, and print the phone flow. + +Watch the 44-second demo: [assets/codex-mission-control-demo.mp4](assets/codex-mission-control-demo.mp4) ## What It Does @@ -28,7 +53,7 @@ It creates: It does not move your projects, run a hosted dashboard, or create another account. -## Why It Exists +## Why It Works Multiple Codex chats can all be useful and still wreck each other if they touch the same browser, inbox, GitHub repo, desktop, social account, or payment surface. @@ -42,6 +67,16 @@ cmc claim BROWSER OTHER "also using the browser" That is the product: projects become missions, shared surfaces get lanes, and risky actions become approval packets before anything leaves your Mac. +## Who It Is For + +- Codex-heavy Mac users with multiple active projects +- people who run several Codex chats at once +- builders who want local coordination without a hosted agent service +- users who want a private Telegram remote for their Mac-side Codex setup +- anyone who needs public/account/payment actions to stop at exact approval + +Not for people running one simple Codex chat at a time. + ## Install Requirements: @@ -57,8 +92,12 @@ cd codex-mission-control ./scripts/install.sh ``` +Full install notes: [INSTALL.md](INSTALL.md). + The installer initializes the hub, discovers projects under `~/Developer`, `~/Projects`, `~/Documents/Codex`, and the current folder, offers backed-up `AGENTS.md` mission blocks, then runs health checks. +By default, setup does not rewrite your projects. `cmc adopt` previews the `AGENTS.md` blocks Mission Control would add; `cmc adopt --write` applies them with backups. + It also links `cmc` into `~/.local/bin` when possible. If that folder is not on your `PATH`, use `./cmc` from the repo. The last installer screen gives you the dashboard path and the three commands that matter first: @@ -67,6 +106,7 @@ The last installer screen gives you the dashboard path and the three commands th cmc status cmc lanes cmc packet +cmc dashboard ``` Install the phone remote during setup or later: @@ -91,12 +131,13 @@ Install the phone remote during setup or later: ./cmc release BROWSER FLIGHT ./cmc packet --mission APP --action "send reply" --target "email thread" --object "exact text" --proof "proof/email.png" --risk "outreach" --why "warm inbound" --stop "after one send" ./cmc merge +./cmc dashboard ./scripts/status_ui.sh ``` Discovery is deliberately boring: `cmc discover` scans the standard Mac roots; `cmc discover /path/to/project` scans only that path; `cmc discover --include-defaults /extra/root` scans both. It creates symlinks in the hub and per-mission outboxes. Your real folders stay where they are. -`cmc adopt` previews the `AGENTS.md` blocks Mission Control would add to discovered projects. `cmc adopt --write` applies them with backups when an `AGENTS.md` already exists. The interactive installer defaults to applying them because that is what makes the hub useful immediately; non-interactive installs skip unless `CMC_ADOPT_AGENTS=yes` is set. +`cmc adopt` previews the `AGENTS.md` blocks Mission Control would add to discovered projects. `cmc adopt --write` applies them with backups when an `AGENTS.md` already exists. The installer defaults to preview-only unless `CMC_ADOPT_AGENTS=yes` is set. ## Relay Commands @@ -121,7 +162,7 @@ Mission Control Relay is the optional Telegram remote pointed at the hub: Normal Telegram messages still go to local Codex through your Mac. Image captions still attach the image to Codex. Relay remains allow-listed to your private Telegram user/chat. -## Demo +## Local Demo ```bash ./scripts/demo.sh @@ -135,6 +176,8 @@ Fresh clone check: ./scripts/fresh_clone_test.sh ``` +First-builder feedback script: [docs/FIRST_10_BUILDERS.md](docs/FIRST_10_BUILDERS.md). + ## What It Is Not | It is | It is not | @@ -164,6 +207,8 @@ Runtime files: ~/Library/LaunchAgents/com.codexrelay.agent.plist ``` +The Relay runtime path keeps the original `CodexRelay` name for upgrade compatibility. + Update later with: ```bash diff --git a/assets/codex-mission-control-demo.mp4 b/assets/codex-mission-control-demo.mp4 index be84b0720ae1846388a58436f29739a1044b0772..7cde020514028a74d9e7e90d7addd834fb0dbdb3 100644 GIT binary patch delta 77029 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 ?+3f91rr%}$ z5{^F)Bki%S^@a3BYPIx;5d_O?!Nm>Ph?Em{0H;R(AlS4Q_{dD106A_Ci9>=BYI=DC z%Du}?gnNHeT$`1JYffRToG{hf`x$)XAeqdsB7Z94;@}QLzioysftrGbs-Erd0P5v5 zj$LN-IrYbS)O-9eCzILlh!2-(6Wt_ym><9y4+x3d83p$D$>h{{by}1xz z>GVWYO=h+B@4IahDIMKgUyu>y3I-r&m>wSf?m{TC(x@E*Y4-@UITeZB>-H&G9f%6b zu78R#^J;Pyd|0-K9=}FpEQbNWwHge+gT-qCED9^w{)<$ub=TmFqS?nbaIma0uu7WG z!WJ#okDkvwUCo9WowjWgPN4ohrB|cm|62dF2j&7j=ioa}@^Ml`c*PDr3jPbKXL}Z# z$DB(G?-M4F)N82G3{CGH-k9Gi7FgU^Wq(SOo)`YAWQfpoJn0s=rM@%VHIC*igw0*L z+LMao5j(Y_{HTs@>QBDjZml3}z{E2{-x>yEdAONF@JP*rpEHwuE#h=VAj2o&pfz^Z zAOg^=tOI+JN3S4FwZ#{#t#oykgsULhsXuWnrPlz~R!+?VF3%Q>sNe-ywIDJ*(trFD zN({OkV?^YYFE&t^CA|G`U61imL}nHWm1Ci0{+ALr3g6h{QHW#sfm}1^^WK7XWlw!$ zXspV1Euw4RToBeYbljzDdmFQfg<$H=EY7H%SOY1hK!XJa+cmB@k7riRw%pX^35% z&EZDK+ieoqPsK&DP*|j&msVjdadk+50Y}~%nOUAi+QF&(2FYJ(f3p6+>Ah-cqgr%u z&}@d>-3fr`Y5cbV6a~|JH3d4mLv)iCUPv_1U7p6bM_E6^sDR`(LmYB80jRDOimVfy zJ^{(0??YbXM^Oidkgq~jMSrbV1+9hukXNq>1PcFJ436~=xc0(%hj_S?3=kgSz%|-J zRyrG!D^qT|R*hm%$POmXA40m9N0}s^OmuXI@tXqsQzg#c2rf}{^_g(qz^0-|N;`pa zJNoK=l@c+otn2^E^mGQl@{}YTzHCm*Yilnb_KH=SWTgO^V>RE!+JD-}(Q4OXo`C`? zLad-@DbSa_c)&B_WW!iv0Q6(%TuE38l-@e=fjV74+$@95Tx@J5W-en?2!xnDd+MY{ z?i(=H3upF36$CGe8yba`L0c~bM<810ltg5tI;@WNB>P%Reuhhto2cD`t5*yfjE{uE z9c1X3D|41*Xsd@MG=F$V6lCt-gi#6@azhHcadM_9Y@OzjvFmey6p_+SN_!`T3tify1cbDrvFZGIOf(r1vEOc zb~vpNdE7k~6G#aG_xrbfOafZp)}BFYy?pA_##NNT_o!{z^ncER!;MF;O*z^G5hF~C ze^7;i-%H8+Ux0)Wam%dG+3%K*B$VLW#{m+QGino6->%9QqrC$-fr~w;R?Ma4h$Gip zoZnC}V180^ePPpPW6tKd&NV@^T$#&}=lfEf|k_+V** z9vEu{R1x3{dGLq@U$Fv=;)IV=j7-)&2(3B#mP*EaO6U<~zNjvN8m#>rzPQSeyx@c_Yq7iHlD|5^PN@3b4m2(bc*6{3_4d zyC%v=x;|yxW)^^DtT1uj1|B|`X39b9KW%R&yI~BtR9C`jzlOedn$hF>*oXBktQF4+ z!ZvgvIe$NiX2f10b3Y^G%ZAf3K{QAhb#g*L9nOItdL>+I39U39G(HF_@Dc5Zn}9@G z>qwlDhW8cB$v#DUuDI$Go&|2Do-S!7OX{&CwSr;I>6XWBl7e^esJqCJk4(V8`r0s! z({)_VZGMw+U3A3I%p5sk3dRBC=5-ATz+bMZseiPKLe}eA3J30km}TXSVhC^zmQrod*t~5Lj*mWR*N;wpp z%;tzJ27MKh*4|L0mI~QhYXuZtHWh`16(I4&+@WRA4|t}Ncbokb_)6|=NeWIW6`#up z^nV<+$Hd8@1=53d%viV48AY!5>g#q_yb{ej_RB7rW}d68^SmZZAo;nUIo~j-O0bLC z?VSJb;C8}<1KHe0TG`&4KwtZaU$LP>)}ZQ62f2C`fg>eQalnmSF|wflu6WwZ0-#mN zUFfo0Nikzkd^jLR|hi^4O^HE)hEC>zlQ~Zp7O;WtG1- zi`?6KX6lND=x8#qD~;gr||rg->sjOrBjN@4Dg725|EmWckkuYXVT&=qHf@a`aB!OfZSBB_fPXg}h7lYeiE zOh4+0Z~i^^L;n?t8pF;FT%Iy%y`cM_-B$PEes4PK=O`JN@7O_|@?)N>Kp}q^nG*a6 zB~3qX_TVTL{+dJKO?A|&PJ&oo0a)?SaVt6)`?lvh!0(Fq6(VLw$N?~^D3kW^m*^T) zj?)Y_RzvS>tkSU$^m`C2x#dnEgnyG52TZQpw9^si5qMPN#;+rRDsRg^F(sK`tIh}Y zB)Z&!0m=T}{OdVCkz6y~AXviP{9%`HC7CnNp%VbQ{Q%z10PDMkKKdGS0I**Lgv2L7 zi3`Or@=tAaUs3o`UgD_R1g%{BBWFG_TRwW5)Ye@};TIuOmTeY^t%+zmPJilt14c|~ ze{GWo8b~|P)pHf9)ppE%-$CQPAnqU7!k2@*8`7NL6jgTIC(_EH-kSwA!iJJ2Jk0-U zyE=2M4eN-_HV~R8*}d|DTFEr*z=V=0c~z&@w%Pl>cr7KdKntWW;L-DveF<>Vt>pD1 z6*lxb|CUEzf_J7(GrWBtg@2gpjqCfTMt|@LLBX9Z$_#`GgVf^2gkx-!bQ~g$GDi>7 z&&AImT^c=)F3%Zj@0@zV*)qR&N`uNg(#evhG&SyP4rLS@!Qi6c`qER&Q|+X&9!hQf z6>}#=KC&NXxH8XtBEp0SF`}M~ZtPk4S*JN)m=#wgHv95Qt$XXgHh)x=cfgzXS9|dtzLE^%Sa9BxLy(c0NZOmJlE2Wv4zQ{;6Ebhh<5wD0}zh+<#`2j$aov zU@;~7fmIT>bY}RSoz1KxAVs4z@NmMx4+w_Vy8v<}d}GJq`Wwrw{?GD}QRj)dq@kVB zX`v+K_zaDDFCWDi`F|vJ%HvZB1+ASJpq-|RK2W>svs z#`g=?5w$=>DL@o#uFZ@w4z{yQYw=0To`*`97hBQZH}+8OxPOz?shwH9vDXl1$?MtdbrfgKs# zX2ZWlzvY%^lYg#7;mG2Wl2&p9_4r1ftse86h5VX4&nK%XSm`d$1DYkKL>7|wHB{UD zON&F2B9k4>L06DxtVg!&gM*eIXqIZz5U4QCRidcKqt-lGC-__3d;DA2)NA^cpTw7J zHQU|;W=a$Djx$FN!8BriWZe#+tG^p^h@F21rMq@)fo*)e1%T;r zNaX-j8wL2<`CONZ!}yt;Qv`r0?j2|@g#@de>6e-P?xm!5{9u{)vM`c*wYRbIElkUY zBTPScuqj@L7LM8*U+aAM$H#mSOK2LDD6OR1f#4=GImlTma2g$-OpqDe{|xXxM~3 zHkJo^m0U-20~5VBe3HTuhsFQcWIC$_hb)byXa=F<)QL0waP)suaj4Bt9TmL$K&FRM zc6dSm9LZn4M5R6n1l)cI)coSiuoa0yqD@nITyW_B=DUBVX^un~=boMSB&NZLzy$>+ zUA}s|dix?@reK9di&(}Pl*V0c?zg%k+dY?<4CD+?uaaYs;q=>lLWbh0_KfumDZ8j_2E2Q)>*+zqhU+ zB0*t|BE^52Hl1qYT2CUrRvV0)K~1_i~WX@xsr*BtV@N^(-m zR^758T&tfYOy4wM3}=%`MXl9%k}DJ!^`pV&j}w0}aur_Ki>aIpITy^UuI9lF@~mYM zM6B>uhEz#YP(cGd9e7joixHM_(IoWAzNts{W*^&ArM?daO+-7{J}oT@Pd196#kbeR z2(66quf%vTWQdF2%rV2rhI+U4rUJXz2!UM5uyQFbA1T%M1r~*qME=6Af>K~=&uWFZ z&6a=QQQ-~6JugtI5{7ZPlC4=xu+Pb3uetI&{J3z&9F#D4Ev<8!&EIv(@M=UJ*fb?m zDJz;7rN!{2iNc+(4-`I7(?ws<$Ibzq1i`6)9-(I zs<)mW+g~-j>}lrH2Ugmm)kqcAr!2m&)5|WJSIj;_)1W;~NQw21d`d3no}yfH|A9tl zVddf`{jCKvkUOzAbHpB?RaV7ik?^U+6^;a+89u86rvX`Q>Rxf={_`q$A3ECg-g4l) ziS15lg`D+SjFWW3U!Zv+fV!V3dCGsYs%>0!n&-6Rx1yfuwi^gg7YF_UkF6cHfCYSu zowUox*3FDIUbYR*+HpF9G$Tf;mXS7{8H8_9>eEGo=D$2dy`P=lLo|qY%#7$>540J& zU3qTSnUg58WtBh6tpnx6Q^;coQjAh7?9UECadK{XkvZ}YR<(^fG;LNd>=S>C+Eibt zbKXp8lm`Bn{3nNY;*>X<1b??yO@>}3WgwlhBU2z!F~?FZIA`!!(s$k*w0}slg~~)b zlV(=Q$hyNHxre^ZQbdpkG&nST2(`4*)(h=tIDXNo*%f_Vc^| z=tA%XAzb%`QdrTO?Z_>z7$Scerc|GHZ6L7u?AxHio!$K$B`AY8%-h~0%yy3^#5ELNd#d55GddDfpGcwllgCXC-RpRj63ea{#ej-#wEV#Vy6ub|fb*?jI2mpN#d zRkHBY(b@(KcjMci!1QCQjDMKf0H!clw=rMk8mh7C9nLd4iywb5e`Jz^{*!IJu$^H^SlMhaQg288x+0MwWFWRC!I`Nk69&Iel*Zq&Nd!Rk+Zs!!)$XV7 zTv*5^X3YrR$6P~=gD;NOwA^F1x_M8190p`j#igoJRMb^j({{a?RTtS(pN&bUiyK%R zETGO$jw7cK60?6bt%zOzXi%rq1s>gch8N2=#FYeq;Tr}YVJ;WK^~bbr-j8W-d!y}) zEnDGiDeu|s21?Ek2)R4huBk`&MD{;d-RCfV+{^vbeJMe96D0t^PV)tE)v0GX@&;dz zoYqxAu?@r?mHvC`f7HO4{S@dqUw@nxJk-8(YAWnyZuNhGXjzD~*?4BlR$dQp&Ack~ z?2XF?PsTjfb3}iHF7<7zb*^8YKd!PMv3rMJZE8hX?i-BP!8Ci<#!-B!Pga<$vw<*V zLe$x>!muTlUun1jA6+gzh9s`;6p$cfk<1`9E`Z&j5iUszc)K}=sD^wvs_$s5N)aR# zOhii0mivD#HH|FJ1AEX1J)vXCwBE>J=n_r*VhY%UOP_UovfteN7dy;$jWzJZZLLB7 zvto?@%t*&xg34Cw9&+j80YkQ`OmHd; z*%E&T&NVi8O~}-qnK|K%Kbvat{Q0U)0y3|G%_^qKof51=q)HIuTAg|E^Nu&H3+^zY&nHW^`r$um=g9+yRr3k{+z`jX6J!jb%R@GzE0 z;UW`jc)FgwJiYDsRpl#^RZ})PGFCwnFQl`m_w+fzVQw1AIqp^4&f9vo3w6EiYXN`H zDhZv-|BItc7>OfI4>X!p>KFQUkLF>aSdco^AhzdgftUwkULnLEVwAP#+38461M|}$ z+9%d3e7-@`tUXKI5UDZ075+b(2rt}!^++_AoHpBHQtx}ta;-BV(hvr*;z20C`U+2g z^q~DF3P3CNq;HQ$fKUVwdJB*o-*$iX)UrTB;#MYI-x%Rb(fJ+wXYr8(c_~(8uf$LJ z89kv=KX^20w1=2?xP`xqmxO~p6|g%Yt#42*1}xs3@F1FOL64$r*BllPpayX*$-fZw z*ogE*83MtQLz`JUjos?-`SKpsjDbz`!H6aeV1?u&L^VLcR;1}Ke7AZ?NdbQ+0x6zC zGt3?nDcLJuaRZJ?=iEQtjm^$&LWI|Guz~}CQgg|x20DWIiP|vAG@~@z<&RoC4~rwZ zP_1aw0`6aeDoweAaRz^Pyr;zQOb-(7uZ(*~&fqhDxU!VOLaHpyMu~CNO@Iexj$UUO zju{O8WOL)&abWx;MouKC!b>MfRiy=${JX z`n7yNhbjfwR+89P@tDiNsYQ`J%&kc_t=C@GV%6X=Ut1jB%Ml$C!Bc<#RSr{*ajAD* zY%Oz~;EBBNu&VnLYf^e)sc5!O7;ot{*hm=*@kGsSG`jo!5;0!`Vo*rljo;LQNX2Ta zJe3Mp&cGj7GNJ}w{0Y_bFB4~OzOoH0 z`iK9PFY7k>nWD8!ZM4g(wn8#yU`qz7ynspGiJpeOAb{tB+R4N#tScL|Wq-uIekk#W z7bI@G3(P>{;GLW^q4>MimarvL;#VMukxB&*@XN%*2_A-d!u@}kY3(rC9%x|Ew4M-? zyDe|q)>jLyizqAimI1s#o0sh@=2lg z-+9MMdx?pqOV58DEcuYSs@;B+dNKnr!e7hjM3p>WRHZkIaptL1(${+bhXZ*#hsqx= z)sjpso|Yor42fCZGxlEXI@fq?(K;HCvIz9l6?fU_8wg%kCDJ2*YYKj1Gd}u>UIbg^ ztZCCtAhSLWDQQb!RMirI;$H5FTSFe&x{7K{g`mFDEB}9avGA+|0Y>)oC6o6}PtuvC zXHejnY?)cB{U|0@wF^D7PBM-71zXM) zi`G3dVgY}S>-wVh!f!nGN~=kp>?J&ZXkZ5bt+>@n?Sv=N^$5F`!leixyfJ5>l?n$9 z5t@IYDV7WY3;d2I1?qR=RqHWp*`1m9j){x&;DDsnw7=eda{y;FftdIb567H#N%YUJ z_SprGF3hM2n!+W13c9XHk#}$dxF~&F1?Z=0RX=}`WpvFgsr0IbCNY`%Ofk%UM9!p7 zEb0KgTVmm#F(c!M+w+GtGK<+rB_ob^)g39<3vc(;{n*_>eq1p7X@uTXPU}>=wtxwi z{X85IEfVCHGAf@!u?yi`!GHGmJBGpx{54Sc%_~8F5#gU6Ad7UySNl>$I8@V4rTC~t zfdYTt<%59J^P)-Q34%77VL2i+%b2)fdIS8@9j4xh+d*{il`4VNO-vj*8{ol{aq z9jdRRe29K+I>2a70-^`bg#Sjc@M9QHu@{nUiXM!kJ#x(4IuD_`KZW?=5c~A+=0hzG zkm$=n!W6Fs;)R-mo)GE$DDiEaArAw8Q0spiK#8xl4cu+@!PPUvwu=PL9vzugOVYU5 zV#o(M6eMUl&T>~^wf3RN;^PzR7;RxpL`E6TW(5nPqic<4b6S#;>GOK^! zBl~>1Mdw&2-}DU2D&$%Sgr~$z_?4h1-7U6bBFubk%TeWGy1r#OV?LP32-p1tISnql z(X9i?sR;Gw({p!BW8uU7roMB67A2#mQ2E{;HCb)%-?7r3hSKs;(}$3CtO7rwM=_oP zqPMU^ck0mmg0!&9wezRRddQ^cHe7#}sT+IsJX%&`!~8pUn;|@PDUZq(?eQ zdA@IO!mqAik1e+16|@)mb(pg2Ax40XCfbX!A~ ztSD&@5H*#O8$}V0H&%&^CkABgX>0!2#lT!OgYDXV!mArF84G1m+B$8JiQ=!Fd5h!N#vR%RgcicApW86MHeI8sv3{Ix4fKY231EylUjBqOqey4a}2%#<0a&3+V-_$egWlqhNV6D}!f#$bE z53RGgTJBmISw!^;)<=K1sO5dEcWM}Qvdh5&93dq}oOU-yv^8t3bHJ8H(!{D{XFz9W zkXvV&j>dO03uLmx_d6)JD_epyzFq^(K>SagdUBXBTiU00mMhtER zrfow4x_xzJm=6V=A)5`<^$1*xSC=`lq>_`l!vjy(|A_ROL70Ehi-ITUIbqIhibiKt zIje&iJ7=$Sd<-}8Ey*@Xbr6)=arsYl0;l#cBJ3?_9hNiY5;}$UHrN)ijM|pQtW5j$ zAalq~tz726Lx{?Fl9wj@;>{8d#M_@p?0`G4_X!MD0&aR*V|BBs1=#xZ_O!sngu3a0 z7;|>z#A5~Nw#R?(t<0%nu7*)}=?0{ZUy>LXdnP2(5mA#$yLXhT_`PNuH0QHC3_kJocpi+PK9VfDnYwTrQj3#S`H~)zFie`gb6j7;WI{VCS zS8~wUb-8g)8y*uDYfUPz6ZGz@O%UEl()PG^H?n$%;Hhd0k|QX&ovQChA8#Q=4dz`T`Wj#;SisLCe7x{hY|oQ$LE6+g2rLC zlR!cAS`B|PJ46ZytewJIzpD|WNQ6;tKEa2+h?y}rYUfz}v)OVhJ??$0ms z79bDMa@=cVqzHLjieH8-pRMHVN*S@k1e84S;fjCBQx~Gj=aYX%@N}IFK#$?wK|Z~@ zFfawBr#!RxTad{ZBea{4P3y_l7K1!>E+Ao)m4#TU{p}aa01NhCBiTFU5qJ%-fA!?p zUPF!$7!2d6a+~QsNt38Ct$xIA#wl`S5le#pKiRjm7pRofkJY|46*{6=V#F0h3MQK} zA-R7J+sIIJioP{GC=-X#Y`-#by^)17qn^RAUMdFm zP)^NM?xF&VYW@Bs2JW346YJ67STM$(3)LCqFo_fPU{gm4`EjQU#;@#6lhb z?BGIqhI~RiGg&aFml}Wo00RIswiOzr02Ihcv&~q6S=a zQ;ZAz%pi@YH{i0*F9RlPUFK{q4sYBZq_hLd`)pvZNR-F0`*_A$The>Nf=vPJIaGFK zPgK3wqB=*;e8P%ZgwJ))Z_5MoReu(fn`6t1@?}O)~gI z_BKA2*O}69!sW{bU7JE1yF^mWPklg}sKdl)GvKxOIU`m?e?78-)*h#cTaTETx`K4J zMfX@SnG1@gFWwXD@;%}5uo`s)t2yzil;Jm-*7FA%pX`=NwXLGbZv9o`HI-f*2mF%6 zdw{$rJ~>#!q>hc%JQ)s8S1Dy?YwqXpXHW^QxYG)K)>vTHbY>yZ89TPhNG3n-(&&Ft z^hxAmN}%-^e_LJ8*e}apaVjVL+RB>8^=z6Ozhs`JJxetSF#YVo9&NIA31Kqw3bvYO zHdz8cegthwQg9WF5s4mW#dauImJvm(3~MDifAK`UN;p?nMP9FV2}EXE-8di3x49CUlyZsXXe zK5k+j-tnHWPWxKeMV#EhK#nIZC>fjjmp!Isf8_KkL1V5A1y9`bq?oer0FAe(T%426 z1W873ymE2aq8IX**{8w$ ze{Q;CAuD32CGZQ|QZ&CX7?f1K9R3ypBkLkkQD>jkT#N$2O&;as;j(887L|fuRlTzA z6Kou+PNo{0*gW2uY@qxovi=VzET)_-VY78ic^8#Ww?Cd$iMaBx z7~a<}yCiOGhq&@>gI1}Ws8Ui%>20^df561^P{(wiR!gU?r4D57*=4&_RF!4V$<|yL zSW!8?E*GT4go=gcgeW4Kyly2D+O1`@>w^mEN`@hk-=6EWc1-(67e2F z9KOW7Ul@w&SU?deGESunI4}U|T(kt#jV)Y!Ij*F{Dc3^5g5O-{>mE-2M zI6u)|nMU>?skJN+^pGitqhPicixwbiiQK3i@KxW6vJ~2)t6rZ8X0VH3r0B6!gWJmH zqc(>w+{N#Y;ocbWjTc!iUq4ij>gP_uKmo?fIDSg#a2Bz{uV`nL9swI|T z_<|TtwsHO_gQ>$FCEA?i%VzeAe%oK{&A2~lMnsc&>OQ550=d3^!9c|q7xRtFsft;` zL`dVqig;diZIRh}H1)O(9y!$i21(Xv>%*HNeTBGz6rOFLrMo)rL1qoUf4MpxJHS0p zU7%S7V&SFm`_VdRjC^$Z2F0K2|IhDq-LAdomyf=^ zm$q8Oa{jR?&@MJU=IpPF?|k%}ZiKO)&t}&*PXF^yn@8k-a?~R0HsTOUHe>m{(@)PuYvtk&* zbvKlHHMEEBI70({=(W=MHa~uDjYSRuYC-JzKhR76w+JwY(kpsRhDSTq7yug*5j#+M zXX_!w@GCHa1o``7abN@Hjzz(-k2o}w7hBh40hUIB6EP5Hwi6Gs4%?{+^GfxjCgyUr z-cJ_u-^*p>r60Lre?I}{jg7>yN}GrhyA4Pp;d)84n0O3BgxXBY9=g9+uB4AT1AU*$ z+w;o{Tjp85@E@M`0RNia9@Pujg|;QQXJ2kBEB{}E!XMpKiqUd=d*>)%V-r5uaQ83% z;83U5msW<#2=;|78~tJu!v@8DrYPSTh{TjE6J(=DMO2Yce~>S@we#;>fA^(K3bI zf;Lt(ErwAsf8J>6Nv*%ia=o;Z$#~ni3<2Vl92$0` zA$c)=W5b>3#q{H6r$?Xt$ksM9V`WL(xzU5FOWESrDvYR*w97gdx>aDyFiL@9*3L@7 zSWsT^%VoyZZ0Ujm-<8{Xb=qtDCIzi8DJ-sGb;E!le@ok|n{`OA{}}jBIauRX*wMZl zh#h8TcRmgzZo6>!KB^NWY+z0Ec6P6u%HO@Jhs$Z@Yg@8PTt4E&>%fC=za-I~%CS<6?*3brvLqW3~bJlL}rQ&#t7wF|~X1J5c+KP2SjsuJC;wZ1 zwnvZJK&I@!W_mTB0;TTlJ^C-e-=~vxp6m$uZ=r@>Zg!;wpLs#Ae!HX z84gi4WO@NIl>6Y@_D7Gzg6iX#j*nB})1{R<3TvcPb;JgAJ-^qs4Jh&=$7kCCNDA1- z^~DS}8w%w10czm-vi4T<8B z%~$r+8D<>SNlQD8e}f!#VCDm99P5P zkjM5TmhthkO@k4s#@}qj6Q1mFIfCDKo#M9z2Oo1G*CDybAJ*1Mj>^1xrY`@Jf1=GP zBLr^f9-0wKxaIAVs>OU6RZddA30qi8uW-c|{Ll>Zgs)?fHm14Z54`#1ydalMkV-a@ zoM49q@m|QF#r!|o-D*vDSE_!I_bB(cdPwS05YUi|P2@=td9jb;nqax4Jn2W ziDqpFJOv<-NU795DAE>5e;~1LdNJ?+;w$b0HW{95ew|~ z-|e_;4~!V`>_-4S-F~PE`7ofuKfJ!CUv3~=vdc|evb$5-{Jy3VM1kb3fBQU(vauV9 zpi`?P9%9K{M?9;WGhy*k4S19#ah5u|SIQEMSq=$XuO!|CM>rL!(|Cx+948@ydN0HO z<{1b9(mlg7aInFP+vggt2sult-f!3B((omoP>S%D4NUgh~nLx z$C6w6fniilH29RPk#SjRe;gm{7#FMP(Bs?(s6< z2CV*n;2Eq;{8`Td6;vH0iaS136oOke?%#VLrA$Okk+SuBkEvXe8}Q5X015L+v@@>; z$ici3$PwHrWi2SUY|@sBhNC9YSz6@ToO1SGq@Gdf00YEN38!6x@PQZBHzqMvI?=4B%E3ba{^ff`RbBmH;KLx3M<&B zgX**>;8~ly8}8K0EDLUZQ}`%mz2F(ByHU^sdCrXIMx)Q^D!PLaWn1xh67h%}fF{AQ z#Zh=;OFfo8RT~vEIjl7NtH&tIxGm9-gxcXw)q4WPvfYFAe`XoYx}fBndP%~jpb}%q zO^FfRe^ey8@Izjw#UDWlCO3FQ0fs`=_iHgLg;z$x%0SvZA9d5a{0p-9%3{JSyt~N| zZ$fK-=uC{k?@EZJfo?RkgA<29fujM)TWDsrMo`H10|1Fv@GadGY*2}$u)3W-8ZlKy zZPMw@?vfake?*KTYD(TI$fmYh-e9hdg+Y?_$ocPG%JXc;e1MXM2@W1Pk?X_^t32DW zo}OTA`6NR`IEK%T_vqjzK7o9_)yXaz60~%L4!6xw$i%l$Hx53f=#kG@I3+XV- z`-+bo43iDl>AL6gIhQ$B1zt$c{%<}1mIeWluu~ZIe@adKy;@THoB|;`+mk318PPpk zj*@xEG!xcLN0s5EH(E2>?eMa2<>$p(Ttil@AX@>wxVo)?t8&?gN-Cf;nTuSAcF?fv znWctD)jaWq!d@s_=#{aY5b~XKjxmUaCy|(3p$JQ%j4E$hvo(8RxJ7y(V#n((PsrTz zUF@Y6f3k&uO^HYxW^7d(c-B|~3Xjn?jvuGgaOo*C=q`-rz(RRlDMTw+z~EG~-D~y( zptfz8$iA5EKlgRT>y1wwI=ivyHe+?C+R7WvoBv)JVJ%@)p@o%CIMxu9?4{I~#~o-R z)_>^x?Gnnd{`Lyk+2(vQ{n4m$%j~sMI|G&>e~8Gu3hL=W;5|jsCAVK8z?w7Vo>_c}yv{uSh601+lqZr6exFH}CBis}sZf z@cb4$)2FiF-PU*<_L}(z(2(#pZ8Gj`fBdjM&vWOG7Ul4`ln?*a#li{V8318{0)2{C zop3`CO^T}+7OOz(c_t_d&idyV6YB6$=I%xoWx!y9jz~6{FK;p)FJxc~sH{f#bD*s+{~MuRUZ!$bm6mV^#W3e0nD^ZK`$lVQ?>CmO>xuGknojtx?jf|C_dL%r}kY-9d)(#+u#-Z99Y z%RP8-+JD3zpH`mRw;UE(q~b-*$-!my;SNa+Ni!ggz6cgAfOuh@frOgzI58{&v?g<( zI;ri4A(5zZmTL-r1YLE%msz@?e*r*M76^$5tMj+mA-WR&Z;gU`3y<>PRI0sr5Y{gN z&AUN~ojOI?SzT(N1v%EZ;(m*BT+47&j>A_qN8%G>P3#JX3yL+b6~4kkHg*qUF6r61I24DD_K|-<)3s6Za5CW)OvhWO zf1u@(*bTSdkgA_)Jlck=62wA`02FJ}ivLGAP|-AOclBISrsCf1MG@^1l8FNM_~fGT zGUuI0X<*;Zvq6k3XkPbkfA%a4mT7ovZ$^1!l2fh`^>OH!-w{8ve|jP^T+n> zruWXFT{5q~;~-gvd1ICu3XLNL`pL=$@12&MDnWni4F7|ce;ZXDX^u;D^jw~ebs8-S zw0Pw2X{o^G;8P7Gl!~0*JZQkCA#~MW&trSXd8|v9Q$(sojWCcV4a%;Y;De%gID**+ z1e-BWl5`oS#&?-HGHJ;xyp)gjg?>p2ncTNoGqbOWku736QuoNt?`i$BLxuvtxD86F z?mN66jZP<_f7}?sMJUF#L!a;W?uvXEN9w)DZ-?&Ann4fn(FKeAE_BZWO%_;Wth`n@ zF9|@No+IG(2S$g(O85zsABvbIxQp0&_ll=_dfOlN5QCom1}8o#h(#B&y}a}mdTIPN z3fbdY5r0CNN8d&ukxy9XV4{ELRK>ckx~|s=5|1;1e}+`LM*hcS4cJ>2#V~6?rv%x7 zWJq0>dh5%aEcc-EhC_%OGZ{bEXN)1Sz-bqxmn1^`QD1+&u0e39#CWF~S=QPi<7_gA zmqh~u-`LYx8@xS;SiS$~ctFX3iIQKfYK#EnUG-w2{X;xFTGF+XsPT+6n}G5rg#o~j zsotfJf5e-*%*2#X#1U;&^Z_5_9W%HNe3c}qPd(L3DnpX3Zw!0Ia`Ep_FeT0wDKgqj z{Z>I6#Mz_O18Y5?nLqry0<$#fxVOKLr~xpKzih+LL3=ZiF?KJuk?ypjv{pEg^?!=c zMyW{xNKKf{>EG1ty(6~M+wK*;;qM&u$GWF2e^bHr)H7MYbYOun*k_N4x{1*|_&uD? zdT3WjsLbNDc7&wQlD;Hejkn;Tl$^rO+p>3~<9b~I(rNE=liA5+?GP37^CY$4vwj`& z$3+b>C{6~fjsQoj$j^J~tmza(PT)5*hv5p2F#!HcjEZ>;SUVG6sGPU)cSxO?rB8^T zf8TBZ)&@=r-~3B6=Fb_m@M^2*{0;CgjRz{pV2#S1628dQKx?J!zA42z%`4hSy7KR7 zJ$V~Ek9u8r1Mg_hLvng%Tpdqm_3j@lIDH8j=XOsXHIf_(7f!aYGCn_OdeWqcS?c0n zYZYfsrFy9fy*fEEmPVSh|9I@Lq0qyHe>s-}0-3grd_XXCb@gFdDQ&-@Lv_s^{XIHG zsH5RFGbRx%gWosyCiBl{&0;-zKI;*p84)HdX9^@sb{vno?di-9yX&}9t1Ctv3wcY@ z)=;Llo)mA!n=>_D+kM;?^`UxvzK5QXJWN|^(1c7`e%qQwwJ!(BGiX`TrM~Fwe_P=5 zXHSJu0rm@8qB-Jb?H+3uIxdJlofHw12jK|+$Ds1cb}B=MBZiu z89jf7yjF`AuDn74glG*?>jMF5tIo<2?2ErAZt}}3qIrGh8CZac=y{JJMYpx}gBE^t z-0dLiIJ4`OF30Em9Jm=NB*h|gf4GQlmIR;``!a(ZYIl+J9A9!(VQOM=QL(bSUql?A zAW6cDs-POoVc%vPbFlq@rb)IOX}m~N=ei+T-T?WuwiVeESH9()>Pf4?30uWLV*@-M zjPPAfBM_1Up}{I zQ|P5h7E_P78SIB{Pg87c7`V4v{W&oSA|4Ih&OQ3J*&{$amnFGSRmIKo)+=<&Tj3*0 zKw?b3upU7*alwu)&ECl|kU;%LAD0>m`^q5>kbr_Ho7o9NE(Lnv`a@-~MF6onOV*s= z?Jnrje^Q?2nQP7)5gGr!fBBJWK(9@LMg-Y>CNZ}E`oi@+x=wXs%xpwqe$W!i^${L*{VDYu}R&$E?}7 zSl={4aRi5L2j-12yq6tz4T9bqvdzHpHUA zL3PjT8F(DllTu~LX7pvTgq#vGDPsLvpBW(7Xw24DFC*$^$EaBDT1X-}6?U*V4xG6Z?i~%Fii^BMot+@={AmbtbF9!O$KpkC7jSUZkl2*^U=}VpUc6$# z;+Z88fVWZx)A2uae<$OvBrkGdG82UT!nN~3L`EHrCT6ri-AKloS4Gve`_X4R)G|)i zbqMrXCB4UM3J7co8u-&dnEN0(XRtlunzuW^JkPi7=Rlk0-1oWCNB{r>0Q31$rGpNF z)29&)ljYP)Q=dLTR^zs*GEZK#jr_h-_+=cf^fp5B^~oQ>e?>q5v6^zi$tV2JJScx4 zZe4Y*^0?3cf`&9rW1bvGW`i4+k*Ek}8_B=|;vda}A_FRXz&Z#I_1Y4a__7%zN7rqD z01jxhDL0QCaXL1B|513I>J@YrN4c;b@l0z503#EMCq`JTvkht zTWie5f4W5;0;p?+ASJ?WX0baZjqg#+nmpsdefK*K)T6`SeUtPCe4o5~lg)%3EnOKw z>&6?~xZ4es4P}Od!JonuTod_bCA6ePje12fZc9Duupu_jH3*^e*|zO;XTIGgAI1sy zz98g<0~uq^8Es|XB`xhuKlmA91?ffU@}xD(e|DKFYqo(y^T#?Ape=HEu$0|xPq87O z9$YS9%wJ6b4+8-Tt%81r@819)q~m4E?JNER6wrp_>1n^C?y7r+i* z%3Q8Q!XN^&562ahtWyBta3}2q%Gs>J_Sq{%U$Je~&BW)*44A49B5DHHF2Zj{wj(K3 ze-EzsOTcQRuWTjurtj_5TI00*T9ANNt9ZMYfod}4NAAW&!atIr*q85l8jQ+cPWI|D ztB{p~T-~++Pt(I%rsdw}*f3M)YBZaxWD!18;_cz_u2q}dq`Zab59K%O5 z{dR)0%3{;tK)YyKouh`{@+uB$+)?i?myIOt)%h6qp3D1n7(qy|d&0sVKx@owN#6VR z)TT`E3T^AtC92!&3jqj39yBu&kXo38q@j>Hu^U-99|q$@biQ{wE!?aS-$gYDe`JkL zqYeV@(?=LDGTL?X!B`p}W9SUjob~KBRJAAi#pgLR>2h_^NdT$ym!I(+2nj*zV(|09 zub_d8jid1jW(2_t_v1D9NO350DaVSzGE65_L;ped^!uyo+kFN`4(I$l49CG z=3NvyF09UjPjrhLIYXIj4nRfrWJxj;m_-ukHQ`q|z8m7Gyw>=yxbtT`Fve=W1>1(F z>VtU^ zKsY}SKD!=*jX2&{`wwrIf4VA+u+BJo_Q@!7#p*UDiINHBYWvKBpIwEW8RD``Z_lWgm#oVJ6S*?HbmS*_$uB zG9*j)TQUY|Sv*ODqyFwCoAKu9>g#kne_99yDMhTXoe3Eb=i%|sX6z5>il!O>+9KgO z)z((x=+7LTRb6O`P8(rgAiIp^FP;YipOK$-GEW^qFy*dxEVjZ!FKy`x4I+ft6o*iT zQ)m0WI*=jDVQ5Htv%!6Y#hy;Dy^12TJtzYg0001dL7!4Z6+A1KPuKw>S1|>UYOZ@K zMMtaF9Rxvwx>!^3z%7DWU7RYok^lg1Z0DsDz^ZYzXz?`i-4Or)0{}m6;LFV&IjKlD zTBEaSdi~<6;Vl}~nOyd6d%yqy0{{(~00071myc=#A%7IrS#n-r*E;!we)A1sG@c7A zKpwnhr-8vYgSF63000-sG=RxXB?rIKny$GoMWNLJWmjR+zrj-k8~_zAy=IR%g{n6g zL5X`u(S>#yUNa-bx!DRWQ`~v>te&jnlS&!PDC1>%B= zTJfL7qTDUOv-4SQI`P;b4=<2i_56FeWAU4-RWnNYKY?uitv^P8T*O*`eHD;FPeI#L zq-#;%_(I!Kyu{y~esuj!7S1hC^+X5#nT)swN`E%}#rG0!kwu+Qv`#7O7ThTy=n}yC z#~fz_{a?Ox0VQpHM92#u>7zx=mZhq|!i})?AveGyS_q7EMpG~k#e%PK)40v!WOLs? zU%CJQaf;Jq16uK^C(^-|{MTWrdBFSG$7Yg79B1r42%H(~={?=b^~8Q7CY(!76-y-Um-+&s&X45+M3&la3c$ZOm1QUNfT>QJVe;8dGzzz*773w~Ac})-jhA9g@MIrzI`5dNs z5h{T<%KH|+2yDRCXsBq4jG6j!X#Qrs-A|>3ySf1s6C0Ve9v*enhK;D!)6Ts4i=a= z$Nz(oqYw6ve?-CJFWkFwM0F#L28mowDnvJCfesz+FTQ;&a0eP{le#B28~*KFl}Soc2tQty9nY<%_e@U`GQns~bfSVZD^ z`U-L`W^uGM>TK6q*egKrLWg1$k`>`u;(!j0A13X&M(Dnv)P3ZyC$G{+%fm6FNiz6x z^=L_9xHD0$&xRI-1?aj&>PFDZaG@eTxwS88MDUN{s%8phN~ZuZi^59Qd4b>52&Z+h$$=BG8y$s;LGN4*l7V1_0=%~a-QsG2lBN?L zn;d`kw|alk`uFHkw{`LA4T19fIrv*<>(p`iUcO-us8RA49=j^rjz9ucwqdkL0&-Sy?bOq^ z+)c~@-ZIzny84a(9mb(uakyov^Pf&+*0_IJ?VRp3{W~a!&Wg39t3x-p+wD2E#cvu4g>M^RC)5;y3KA z-yVKx^F%i+RtvW`YVW0vGS`(FJ?Lk^VYy^D2Hm=)9Dbw~(8qwV&&nY31`{0%Ws(3w zt2#kkhEaH)CWctM9a;9sWeHlJJC;ZJC3sIB4!msG52oo`8TZnWiYbJp0 z7^30NVJDd%k@>X%A#kqh1Wh~weYs2TPKT~`mGd?eN4#W@KB0K2xjaVsIrzv`KUvMk z^$X$c?MFy&g!sERiT8RQGr_QKClAC>RvETrU%J&Y#foYFB9#(H4uBH z5X+Jyr~PNbzF3eXfG-&HH^D*Q8-fw8Oy16OTOo{cYg^WMHV;}#UC+)k!UkLppGp3L@oW_wLsCx*X}%pdTOZN;;(?{jiG@ld z`P;GOcQPTxF>ow9Cgr37RSurQVu@uR1s4chlHYWyfmBZ)-WNSW#j7uxL*QG5%I`mx5z$CPKqF zWzEB@Y5wavUt8A*Z*}>ZCl%#d*y$p3KsK~Aeg4Qs94CJvcF_Asp>)BN2a5kiF|XcZ zla}DB@J%sXDPE$Y0_^sVqI~jMdYxPqJSHrOW~(SI<7)O(DeNHHJYVri{mY?CH_+Pv z=gO*Zf!3<_6&Lvgy7l~245dvcq}3DR{8^^NyiN*Tk2_}xs%FDYTHCAdjlAxKgGmpd zWwwsW+eKQbx$;#^&*@ARm7oj-5xIIs!hS)5$>S>0u-hjttATZt!)iU_3^=Fd=GRqc z-hN~+@O?e&-~E2i?-??ZCTn1 zOpl0P+9sG1Ko7qh)(|Wupd%!lLM=9dq{m zdLl}4C=3!_F`XIA@xl4-kVt&@Q`gWnzHx%z_#Olhs&tM>Wh;mUrX10?M8ZA%38uERbb(Wv;X0{UQP#s|X(A$jDyS*-k;FXOYWw^%OW z?>-?*Y?}=2{{rPh7{__XHHyOknrwDOyt;`+aka31#hzx|xs1=@Wlt)Mlg#R;_$hl&Aq0s06JFycKELhj6rnf`t- z5yeEpLZM@UkiQQ~jZ7*pm*xm7!9pnVt5Qn$(dhk6jqC~@O-v-jj7gTe2EZQxr zM+1s!dbL}G@yyUyBzMnnR+|0U&>|0wp0+I`p1;_0pBnR0+1}njAcm4ZK)%%>XG|-b zW&1y$&eHZV#0UTii3C7!Iv0mB|5eN~FLFbl=~vaaWQLEeLPg>ZF7NIftaOjjO|)Cj z6`30}7e5-UMHecUnSeZ%34Id0CF!DhsrkVjV%;hlNMtrtryJZYjYj|IsStV2VBx{NGe^GU!+twXV<9PqV;z&ER1~HF7sOFu_!n- zom%nL9aTm<=mUPSYA~Otisaqa17;Bw3-2#d^Mbm0N_&LhywyOQ=QS0-AHPmK&{28DMCJS)hx>t(27y6V~yXn zAB-7|aQPTM{a_a$l}&x;PH?34yhgGj(=kEg*rX6`TpD+6k9n}4wIHF#|L9dfP#}{+ zh=0a$>u1xFuUFOzZsK~p)&qFUKSj8ZGlV2k&lvkwNUrf`kYKEohS<)!2;^)ek8(ZC zn#E=B+=J3@1?5fdgjBw-A9g<|HQ91J6ubmkY}{dUBIgub1uRDoCuD>2DoS(Zv$JbO z`)W)%j~-h-K;JK}+)CLQ-sZpQCy_I5@zB0DKIcjGEWLc!9w&G398_CS&QT?*z3G6e zO{*F=Clv1Kfxwe*{mrP{-l9oqcn6uV{f1tUl^Z%{hh-j<>2-$*`rPrr^pQ{J3iDBL z7`G3u4c3CXhofitlP4UWX!mNLn}mV5t*Tem9>um!)izwVIT*tu z4V_2*R}`lT<>cD3sgsHnJlwzcdH!&7CT(Viv(HrGWBn5;S;GmN_>{=WHT^H_?l;SH zl$NwGCWN5~0OLC9qLT0dZ!}sq5T@UO7q+<4 zLUut=S4>UCXtbEQJ0uVi%j%q?2Y^yhM=HXRgjm#2T#Q{NfXhP*(!Az5YV@XU?gN5D zfi`~)-4UB;B-NdA6V5(`%f34nhEbymFW%h~@?neW;}0PbV~=9fV{aD4wnJ)bLV z9;sJcjo5wI&JJFQvvT8jo(*r^`;a+jd17jI2a9WWeP?21Q;6*n_WQ`k(CnjmQZ+wx zx%BnQpoiWsv=cQlOGH6c(Q86YA@#_-_*Joyt>ujaTZMcH5huPK-yxCK_cvv+PpHbq zS8WTsb5zP~8!ce~6$uKQo@@%kPZ>>Qg>m-nd{bgQ?au4zXXVWYT^@>VfA0;~c{2=* z`Q3sVSYqtq1&^dhSpwP>W|9;#0FK)^tI>=NwAQ~ssthPa`tQOGs+#<4Xcx2Fh$)A` ztFZQoZqE!9Gs@rgtUAc+1ue1q2D2Jn^S9td6vf!#sGAwUo8mFapx;>qjzxp$)&?5& z;v$Z@PfC>QvIVE(UT>AzJRdKDcGG=q7bxpZoc220wT^pun6KHtD@;rdyUljL831x% zsHp?9g$w>;auNtD8%UCV~Nb%+O9n*#v1 z^XP|y9Qdn{+5U|A2aplb&>Hn~p!xqi(C&W{Xd3)UEao5F!n^R$SwWg`A0M<|Glie> znM(AlF#k6?N&aR62>6L7$^>Q&LDNEDEn2@8fD3y6K_~mUTVbFq^-r1HUp4kWajEZ^ ze->;0!tSrQR9du8{dacvz0p|CA^#{W{O6E=D(3%Z$Ow2EA-X!s27Xyxf8bJo@cEyq z>JP2;LRJ4P{}-xyp{nS>pR?h=xcjdKsS8#8TWCUG@p*2&Gj;qCm$cBVd1T&31LxVdCV$|8+U_imn} z;t|Ehvsu5S)iv`fhm^IfWZf)(0JH#q?1gqY8di^?t_Dhd@|O_>pIejg5$vTFX~$B~ zTT9qLVe0)38P$Z^di5LQ&nvX`JOdGH&bLS}%b2yV1+Y1EcxwI z@T0-E5U(%2GgbEFPU|Eg()houU$UFG&Z{|av=8Pn(FQISxq{`o%HV*mhZ z;V1FvU^t;Y2pb9!hv9-QLCp(&C31(2qP{R~l|Gg|M0iSn@ai0`wZ!sXhHI81$n5W@ z^dh6~5?nQsrcE@&EWg{4jA?b4Bri)7VVOX`D1Ra^&icyo)Z`GHE4AG-ZA+{aT~FWN zwVYv+^(}%%Q0SD#42&wH(Hv}zMV7@91O%!91cb^B1Oy}&1O&|CAIF1$AXfh4 zwtuMm2PzN{aJ_%b@ZUBFV(CK;RMnap6Cd{lh;W(9?g+^bfTE@Gm6j_y2DHkNscT;D2fm zp8uu)Gxpy+|F1vrUz7cR8vc(p@ZY=n|7`*P;{PA-_rDPHHP?S#g#Wz& zuK#&SK)CFSid2lz_gX&j$%}~Ui zn&j~hU|oDU9BXmt#`1wLnaD$}hFT#&5%Kz5kk(uGFN7OP$!-RLotV{XVnh0$oGirl zI=2)V>OayKz4b4ynBU3ATZkXYzD^MYuj<(uu7>R$H;*Tb^RqWL*0qk6@wAJu?ox12 z3U(9$nPmljPsVe$r&eY&in%Z+eNTWaeC<{pA$?&SO5!*gdet-4@yiiOrT+qmDSLj) zZ0CudY)t;E7z|78pIo&}h2ja{wj2xnJzb%EkY{G~_mUtHk5}f^8;6aWept}BR2ks; zP7Vh_@|E)qd*EEn2P&bVcKrgx3_D|nuE@h1g?UCzw%-Gsq1~ikTVMUp0cXxF%LLETUv7gk(}*gpNMc`&!gv zX^3E5N47shHvf5b?qiJLY8woCQ$N=1YxrliV>mZ~@u?VF&(%A?<9cCuYQ3BtGdQuE z9G^OH)YbH!Pp%-fU|G_`VoC96ltD8~)R>JRFgBKt$%~^DQYT{I>M012IYBbQV89YP zuCvtslFp~_IU!6Ny4KZ*R&MaLCw?&vv-$PgneyjdXD~aI>SVdnld<01Ek8{rjJ?+a z)z{X};ux|xzO+p^{6zDNQd%5ZmJ5?0jrjw)E?*~g*i357_B02=MHXt-^VFAC2+3K# z(yI#3oSs4OxK^Ab(@+gCFYp0}?3~2(z$b9N%R-AZ5CWE}ln5N%@(TUJbPN?0Kjr$O zn1kw4Jwuo-3xsrB?{lNJWT7V#t8M81b@d0auUq5#Q$XC12RbBrYe{B`yFxsGXzTKR zLf}KXh;I14g3Hlm=S>0!45uiyw#h@>2Kpy??j7aHii+2!*`<2#4wPxyVejC^8WTK99evy$DWrZ=8nay zF}!PF#jcbQ>TgCyLO8qVbSWPFXK(ajqxHr(tSyJ0?x2^}PH$k-d*ue#!;A%Egd+*2 zeYBQ|af(EyG42aMb+n{EyBzeTcKA)~BU0=&EEt>?Z(XX|a9{E*l6+4%sR!9Xp|s@Y z)451jZ1TZrEbTzaFLFC6PM(0}t0S*V*gsPuZZKwLpn68&cM940*oCm^kyT3xBy%w@ z9r8p@nqZM_b3Kys&Pf9U{KK`r$Fx4YBuIuORT?sh`%4(y zYoijKVMPtdJkcMK)Q8T@(OT^|7MjE~*Cm7u#6kq^>iJlJD01)!!O_L-m_;WXqkDN{ zqUap?A;eId-WRoEQr5ZV*QM{c4^zyr4`)m8ebidu@6pF1a$v)pp$G)tD--df-cDp+ z{)SBZdAZW{Hu0mZX z>^IPC=dW-WO`T#=j)Glj%@CnAFY(yaFx}46Jf;Y6mK%Q13JFU++@)e-mM^F zh8a&V*yl3^L627w_w?8h5l7XlUo3wq+Q*x9%zuxE@QiK*?a> z*B$|h7znFAp~=(zi?Z$Fp`bfsH|jodBV?#KXcoVn?v!uaUrw_=xQ*qvX0__KGV1`u zKB{y|wp^l96hi0-m~fsanZUyvB?=`L_{2p$yV<}I$gp3%i|JRmy+rb|lep)vQER9Yzl$Ru)L zP&bUU_$xIWGYQ{QJs|q+3Bn_jxm$=N(7tnAZbG7!%X~+)$$1;=7H{pNT0=z>_+gA< zB&xl)*mDQy7_pn$=*gJe=QM8{^z;QnM;oJ0TynyWVofexBj%xeys1%&o9x$QbWzX0 z9%f!*!;hH(a&(yXyxIIL-*>fQkq$dV~z(h4XWI@kuN zlmB@c*5mi-ItD7!!7b_9tGUmvIq?N#+u?4%>tIF-Z_N~cCufx@-AZ#ON5K_(&ko!k)|&F)E2Hs@z=J~sNaMQ zeiCyRc;0@@Az81!=>#C(3Y8X58SC4nNS2j>rx4BCm_;QzK|VQmr;~J}beu>>Hpk8S z#X6V6R2%fw7vTH_^GX{|(YAw3<(An18^f1H_0CY=6MzN=@vwj z-P0>BLebO4N{%lMCy1qTIT5K#AH$Qj>ZRNcoss@!Mu{3Np>oB^2!s5yI}yQ6;>no0gz+1&%# zt61BmXu651N^B%K;YIdTFWKw()f=kRM}1M|t%wh4sdd68tHSb@YcQst_R5_DeYjfs z`;i9O(X2z0PTDtJ)(fnH3=F?xpjBu(QcuKf0Y>;GkrVJLt_`O6%_76SXn`UdBY)_t zH=9%Iioy#GT;2_JYq=i?;vJ*^F`iA}F1Let)##0gIR!2v%{6}&q4EVHFd$0nDS6$t z3q;6KekT}fG1`8g;e{*7v`OU^lPR`HRmxL7viao5fU)8GSwJ5N`MR2hpF+f%C)cuZ z`LYTUi4bpnY#P#X>4sQ`vez%t0wkFWJY>t(TY=mHPU{dh87lU0{9T(p2= z-TSyo?vGvp;T7zv0}e*Nhn~~2JBoq3?Fa*)+U`$`dY(*U)%d`^@VkE=D}(||v#A}T zKcW2y5c1>|)Tt^)WGvQR#&yioGJJr3DO97TIKyyeSpJG}dwh+nm&Jr7!_oNAG1T)A zvV&x+@tbyj6tUZC&titNXqla3murgemLnh#r1$oBE~E3S+a#(K*zYEprcmkmQmSzP z>pFT27F|Rzqok(|lknubKoJu)hc`qT$k1K`+>|Z_uc^`tHk*yJ2s7VinG^IuZfx`j zH{=hoZCFxdd#%|SJkU~E_9OxPJ^t+eIXK1x((ypNm7hC!Pn>gXJkE(Gr!GC+@6?1= zh`jV4C6DOB0~IFw^-bwP=?n>v&It5Cl0)-Rm)w>hAiNlB$QEeSv}4r^`}mr^aOFy& z*IudcqbEaRU<#Aj>hfjpU=&@YDq$HGFecU9Jw=!&;$Zv6{TW0wa7xQU>P$TQOF&I} z0O$$A;|a?&cPvXRmUYy>kSSh^V(=}!ysUCEi!eS-ZRyBxPlYZ|1S}8ye*-Mcn%61<+|80y71KqaOW^TKk93 z4`lQZzpN1Fi+XxpCLX!rxj6w7D*|krisc{#L;tiOJ56}o-dS_23~CLlqIXGf*j?fU zq@a+Q*zD~#??C>*31Q(J(4K&T)21xajDQlGd z^mkGF!B63pizHv0xP!992r70dGpF?p=sP-Kf_HKlJF48yAMVU4WNE;+ttigfa)i@3 z32SO^rp>=M1z`m)c{U7M{Jjz2-OOE|FZmWkM)9GYNS!nB?{+M+d13(A!CKI|3K+TcU7I&6mq;z>9BdJGT(>h&2*nG$EH{fIHE-JAl8S%YIu~wf{4Z z$bImanLD$CU}wDZ+V<Is^_q& z7bwR)HS5tHi;)KG4DwOs2L;XL61m-g@cAqm4^_nK*B7c8OtJ&dx<(T=6;-ClDQvP~ zT_DC}N5;2XzkUOW_3W>ozMaYjf{u@6M7z$~dXa!rS)rZ$50hVi_1)sD{OS9>HL}r- zTb6;-8W_LsjSw^u5Iug-Hf23w#BI|cvSvh>Mor`Pw>cnj)Ba{vbGb=!u@=(0651_V z?Lx5Xk7F~>gcSB58YfG)<*^ox?xf7z)j-2K$9~{EaX%(9C7-t#iH26+;GBhZ`Yp%G}T-S91q&C?!7IHf#0aW-3Q4rfM^G-py6 zZ}f2J;8#)n%ajdCeO0TXGSH2pFP(qy|JmtA_Nlc5-3^~6r3=Brh1?<0P9J>8uUejAnP#t~wjIsn!_zNp_Tz~`MAX?OGd zKDmN7pEjV0gb%Jt&9@7`m%WSygZj&FVLg8h4fK;kR|TyyxRB>X`6c>w@9hzQ2E5(C z!qc;69Nt}w5gkGBd$c#!bN^0WTU=k@S4c^itCYBz|1GYvB%#Q_Mb10xuN1C64eX$; z{+)J7qYtYgC^A#Xpw2a`Bx#hyz6RC(*%^w%;Y;L*s(tCh@wbRN^CNq%` zxk%rFi#-g))Fgl1l3h}0a(e@#(5Oh{9;OhKtZtpZ=$WR|6ZkTnqZ-CB03u}~G$rSG z#Bo9E<+V7g2y@IN#p9qsFigK!rA506bsp}=M>e5sAM>`U))0yL%bhdoON-mORH{3l|xv1VZ-E=6-sxZ(Vzhw zOia&0vIzq0H6VF1cVjz6P31Xnp2e~9$$=xZH%L4hcBOfVRdEA8-oi5`tL|W$BH9zy*Q;i@d=k4ZLThv7y?vS=0$phZ>5#CF??QQd-trkz zRYOLq(r8S2|09$jnDn`u`1$P0XVHaNbNGAr{Q}V;_v2^&4y?9yNly$!@pD3!be&1S z(9zQRhoUnRd66XGSAKrRi8_5cZk{}Hz2NhNiAbluEg3a$5z(iBzT7r|Kq2+!1aUvF z^rC;`2F02~N?jDPcT})bZo+4%4A$Y*EvauKCbAuvSeJXkIXK_4}S zGqZMlwEZnjq*&(wbNEwU$XyEAJvYCZDI9QlEnPu@JDmec+U}YmH_5;mO~fSxgPN`o zKsDMK)-1H0_OF6bx&#TpspXcTetN3~-5~X(%yquhljQGi+l68Hg;j@z=N_&yK;*cb z7O=4;#@Pcfgf+EDoU|yT%6~97(w1$?)zNrcSkNIAoDy`Z(*D3Z27{AHPBL7}vsjp_ z1mEB%rkvFAABequB66w!6LMvSC3J@GKgV-V{fa7X`+x_Y>)uHf1*?A^G})R z@aky0?W62~(^j(1B~vXVH&t?GNxXW^?%^{RsdKzIBo$fDOE^s&8)(5#%U$88LWgxY zmahjLUa7RAn2AnS+-T0Ig`L6GjgusU)_0`P3bnu^6vZPdY7q3=$=XluE@KaZtnX&x zO%9*Hh%EhJfqM5YK?3MC+OH0y!M!f!cA7P{S7m5SN@&PvPC1%-KUl0u8hLP zY3wJ9IRVDGgB0O# zN#tD(1y);y*}SbY4VZA9VT6ImYpLy6j_pNfSzlhYerIUr*}8RzU#vHV8UwY=VKE1! z1r>}R(pWY{c?$@hLgk--{(uB?5?LXwKCW88lOPh4Vg7M5x9I__q~;WD{p7UeHJwh-YAU6a;xx%8TKz#2nIAZpAZ`G$9oRLl4b3_KE8}GD2`SbUS!11} z?e+~NksSkd%_Ak_!W|?iui9RdSAGmP>D#&Raa2mDq&HnRQkRoQrkzf>ih2+*mHeWI z{_%ipBbSNZdr85kkQKksV$b-!@_SH+^ob!9+U3k0yhLyCzhnx_RlTeG(c4qsshSx1pt|$tZ zX*pLSMpoS3)9=Nuo`QpWB}3%Hu7)R;E0`r0+F0}_u=1X`;MqS+jhj7bK0#rzv^KQo zR(w_6txMA-g?8&MH`Sfen;IuDK!p}S-mzI;cfsLcLh7)|Nqv^g> z)l3oio(x>XJhx(l+r!EMdnjj!HO@WY_BOj$n@~_ z@h!XdDeVOwhN-P$c^g{GVj!B8;|^nN2v?8@M%uUU5ECHz(_>h}Y;EE3Pkp-;l!`~w z3k|DvlOw(jTC!v^4_nYeUX=P{8=lWqnDsDfm=(F3J)hG1UorY`j(XQopxQ%9r8YBy zF(KkX!}cJ#53;+TzF-EX-Y|j@0LaqDs(M_!f`J{(U5ge#U#hB1#cl!` z?`OMS>d~Cfe1nzxiuVQ~^dJ%9lHRvIri&v_TLSyID);5O8+e!$+Oa*wci*1aCS{J0 zP|58+xsVY{9(WJSRTiuC&8+0hJg%OQMAFNiIN^EF4!*=^WCV^%pimDB(8V|24{TSG zNm11Uj7WkmA{e${$dzP%(Pm;;Vk%3Ns>w0@_;eqK%a*SaRCeP)%472|-SX3l8E7AP za;N-IA4Yk3m+}sxbn|O_Fidd(#Y^|U z_*_fc#ZjKFN~bC}4?O=<9J3fvwZ%;=ZL+ePs&#w+CV;K*tLuk60H(NsZ?3; zVPq(yz#gtzNgfJ325`^z^u)y%+v%HFd-O$L^WSY7A(-z zm497;muJ_^jwQ$frkhaDm;WHPqR)dhp@h@KvIG~$2mYG^y719!$DlTf!W{7%BaJ^P z-@AD%Q;dK4=?KBPwpeh$GsLzvr!kz|(yyv*9wyU1_GfGfvN4hE(t=e+#l~--j*Kh( z@I%6VMSaRcM0-|zhIT1CW)^{3(_%^z8?sP9K&tZC-TZeQuWvVsURHOB5xKj~@y-f! z^the#2xE8AET4eo(%MLn65iK@9Dl#AqaYtz^K#sZu0T76eN7(dt8o@I^q{^XHUq1s zi;0<$OH(<;9cB;+3-Yc*HDa`&SY^-51K$2#6ug7v1{u+N`W85}^dG+LZH!g31~_>D zV{~dIE_X=nJdia`Wz{R4TVe8=Mp$WfE&5{?UvyyHG@K=y2r`fdWT(DBIGv$5CFxb` zW-`eP@U`hr-V$F(F#E9ZijEgB2KA@5XSlQo4_;;%dYiQRMz}8J{X@Qm>!(k-BSlK+ zIrVJ3xhmI$??O?i1&C3Z^PNUQwT2b|n)ICpt@mSkBn9boz-ra#as|iH^#0?ksIGrC zdDbX0oWM#~x}MiWKKCG{rsllR$eYnR_|F84727VAdaLRq+8~=4^Xi|ya}w(JY{yX$>}5tm#eGT=sp_`9Q2Iop@y|gf!e4z$r_a%wC7<|=)D0uL|77@J#BCBTj0j+tqUAS z;V+OkJ z&1Uea^@8giI^NHn7$_6)&bs@(psrQLz8^@Ill{g5T9Jx^+zQT!m>;$#YFZ&}DBSLt zO}^8a%`oVJ?#p!Guu`5&v(}j3tJe#83;qqI#&Iyxq6`G;(_$m0Gy=`???O}8m&N*7 zD0@0I;q;hCI#iO&Cbn5Gu5?f15QlGIlT}Ht?8PCi%T&{ET@g+EZBvo@3vi>4Fafn} zM-otap3Rl6dR+$0pCbRtyFdo(!Sa^)-rMS64-04M& zmtwiBsikWEyVwcKxlDe&oe>TZ>Y>%<=Zdhpg44WO0#--?Xq8=HpgY+%&l%golkt>} z@4Aq1V-S4bYlC=$Dun7IMajFXaMgCW2`%;y6Q8!#er&C#q@c`HCDmrP-K!C{&l(y! zRLs+B8^&+`=DVW&O4Kn!E&s6Zv$K#i`}U)YYjRgU9?+gGeP|Xj`Zzl`muS6@f8g;| zDxSUP!a$P)cKgFCEMf(7az-D=P9iPuuQtN}=w8mYj-Y4#ZW7&`Z#yY5Q0laq7qos~ zW<1!HKKHcYr%Z7z%DuY(F>0MMw6}guPgI33k+ouGHVSem{zI-pX1x*@iy!Vr^r}7# zH`!u7$?1e(+ZF!!?0eZ%Sx5Z!zw8gg&%u+s14I0KfE(1TC_8e$WHBnbP=L`TdNx6cQz!(0w-eQ5DWtT56-KtvY2>x@#;x7GT?4J04 zb>`lugMf=2b2ErGnBfln&1i37%Epuv>T!J`0C{inAmH1CZSaZ7Cgk}e;a=*$1U&dK z2bqGGt)47PhITo=U6`S3&_p|y{R1Drx4370@U0-uR5BMtn=*6??-G;x=r&opds!p( z^f0nTqht)v6Ljr>DZ-aLf4C-$5SHa5S;j<=xDdu?$EYPrQKiqPBB|Tm$bDUJg1VVE zF!?+G<-n5#EiLGqeoYpM0?^+5$|)^FYnQ682|K?zGCx!G!CKq@Hln%m@mky6)3m8? zgZf(@X+f7pQ(Tdk7J6uF_S$Y8;ac4L`$>$gmbHO3)gX3?`1GSdTXiiVJVNo-GzHa9 zwBV-4t!xw!-Imd(VUd%$a&4J(ef9Jr;NypBZpQt;ms;UN_x!fURE5~V3xHlrE3SDm zzPQ(5lsF>+n%0+H%Y^4zRnn43C-8OHovYEJktK!_7ZCWvhj7^iL4_x$b7@)=bf$4cBy_5br?k z%TX@8Pn?9Asn@>Rc1yNs{$QH5bvnB(EX)fRK>vlf|LbPckl*A_-_e>%&>Uo{0)42} zr-WM+Z<;;dl8o`4A9}7Hg9t@5D!g|vb2OAyXt^)7bH*l%d2NX;c%k;nq}%qh1U#Cn z`f2j&Oξ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

q>UH*EYS!ApA<}mZ-_x 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 s*I;T$BrEeZ%^d(>y5 str: return env_choice("CODEX_TELEGRAM_REPLY_STYLE", DEFAULT_REPLY_STYLE, REPLY_STYLES) +def codex_model_default() -> str: + return os.environ.get("CODEX_TELEGRAM_MODEL", DEFAULT_MODEL).strip() + + +def codex_model_label() -> str: + return codex_model_default() or "Codex default" + + def now_iso() -> str: return dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat() @@ -1003,7 +1011,7 @@ def finish( return finish(f"Blocked: could not find Codex CLI: {codex_bin}", session_id, "blocked") sandbox = os.environ.get("CODEX_TELEGRAM_SANDBOX", "danger-full-access") - model = os.environ.get("CODEX_TELEGRAM_MODEL", DEFAULT_MODEL).strip() + model = codex_model_default() approval = os.environ.get("CODEX_TELEGRAM_APPROVAL", "never") timeout = env_int("CODEX_TELEGRAM_TIMEOUT_SECONDS", DEFAULT_TIMEOUT_SECONDS) thread_name = str(thread.get("name") or DEFAULT_THREAD) @@ -1234,7 +1242,7 @@ def health_text() -> str: ( "model", True, - f"{os.environ.get('CODEX_TELEGRAM_MODEL', DEFAULT_MODEL)} / " + f"{codex_model_label()} / " f"{env_choice('CODEX_TELEGRAM_REASONING_EFFORT', DEFAULT_REASONING_EFFORT, REASONING_EFFORTS)} / " f"{codex_speed_default()}", "", @@ -1255,7 +1263,7 @@ def status_text(thread: dict[str, Any], chat_id: Optional[int] = None) -> str: lines = [ f"thread: {thread.get('name', DEFAULT_THREAD)} ({session_status})", f"folder: {thread.get('workdir', default_workdir())}", - f"model: {os.environ.get('CODEX_TELEGRAM_MODEL', DEFAULT_MODEL)}", + f"model: {codex_model_label()}", f"reasoning effort: {env_choice('CODEX_TELEGRAM_REASONING_EFFORT', DEFAULT_REASONING_EFFORT, REASONING_EFFORTS)}", f"speed: {codex_speed_default()}", f"reply style: {thread.get('reply_style') or reply_style_default()}", @@ -1282,7 +1290,7 @@ def alive_text(thread: dict[str, Any]) -> str: f"uptime: {duration_text(time.time() - STARTED_AT)}", f"thread: {thread.get('name', DEFAULT_THREAD)} ({session_status})", f"folder: {thread.get('workdir', default_workdir())}", - f"model: {os.environ.get('CODEX_TELEGRAM_MODEL', DEFAULT_MODEL)}", + f"model: {codex_model_label()}", f"reasoning: {env_choice('CODEX_TELEGRAM_REASONING_EFFORT', DEFAULT_REASONING_EFFORT, REASONING_EFFORTS)}", f"speed: {codex_speed_default()}", f"style: {thread.get('reply_style') or reply_style_default()}", @@ -1957,7 +1965,7 @@ def check_config() -> int: print(f"mission_control_home={os.environ.get('CODEX_MISSION_CONTROL_HOME', str(Path.home() / 'Codex Mission Control'))}") print(f"codex={shutil.which(codex_bin) or 'missing'}") print(f"sandbox={os.environ.get('CODEX_TELEGRAM_SANDBOX', 'danger-full-access')}") - print(f"model={os.environ.get('CODEX_TELEGRAM_MODEL', DEFAULT_MODEL)}") + print(f"model={codex_model_label()}") print(f"reasoning_effort={env_choice('CODEX_TELEGRAM_REASONING_EFFORT', DEFAULT_REASONING_EFFORT, REASONING_EFFORTS)}") print(f"speed={codex_speed_default()}") print(f"reply_style={reply_style_default()}") diff --git a/docs/FIRST_10_BUILDERS.md b/docs/FIRST_10_BUILDERS.md new file mode 100644 index 0000000..d237212 --- /dev/null +++ b/docs/FIRST_10_BUILDERS.md @@ -0,0 +1,56 @@ +# First 10 Builders + +Goal: find the first install blocker, not collect compliments. + +## Ask + +Try Codex Mission Control on a Mac with Codex installed. Report the first thing that is confusing, broken, slow, or surprising. + +## Install + +```bash +git clone https://github.com/dicnunz/codex-mission-control.git +cd codex-mission-control +./scripts/install.sh +``` + +Then run: + +```bash +cmc status +cmc lanes +cmc packet +cmc dashboard +``` + +Optional Telegram path: + +```bash +./cmc relay install +``` + +Then DM the bot: + +```text +/mission status +/mission lanes +/mission packet +/health +/policy +``` + +## What To Report + +- Mac model and macOS version +- Codex app or CLI state before install +- exact first blocker +- expected result +- short redacted output if useful + +Do not paste bot tokens, `.env`, private screenshots, personal files, raw Codex transcripts, auth files, or unredacted logs. + +Feedback form: + +```text +https://github.com/dicnunz/codex-mission-control/issues/new?template=install-feedback.yml +``` diff --git a/docs/REPLY_BANK.md b/docs/REPLY_BANK.md new file mode 100644 index 0000000..814a0f0 --- /dev/null +++ b/docs/REPLY_BANK.md @@ -0,0 +1,124 @@ +# Reply Bank + +Use these for public replies after launch. Keep replies specific, short, and tied to the repo. + +## What is this? + +```text +local traffic control for people running multiple Codex chats at once + +projects become missions +shared surfaces get lane locks +risky public/account actions become approval packets +Telegram is optional +``` + +## Why not just use one chat? + +```text +one chat is fine for simple work + +this is for people running several Codex threads across different projects where the shared browser, inbox, repo, desktop, social, or payment/account surface becomes the bottleneck +``` + +## Is this an agent framework? + +```text +not really + +it is a local coordination layer around Codex work on a Mac: + +symlinks +markdown ops files +lane locks +approval packets +LaunchAgent Relay if you want phone control +``` + +## Is Telegram required? + +```text +no + +the hub is the product +Telegram Relay is just the optional phone remote + +the core demo works without Telegram secrets: + +./scripts/demo.sh +``` + +## Is it safe? + +```text +it is local-only and intentionally boring + +but Relay should be treated like SSH into your Mac through Telegram + +allow-list your private chat, keep the bot token private, and do not use it to bypass confirmations/logins/MFA +``` + +## Does it move my projects? + +```text +no + +projects stay where they are +Mission Control creates a local hub and symlink index under: + +~/Codex Mission Control +``` + +## Does it write to my repos? + +```text +install is preview-first + +cmc adopt shows the AGENTS.md blocks it would add +cmc adopt --write applies them with backups +``` + +## Why not hosted? + +```text +because the shared surfaces are on your Mac: + +browser sessions +desktop apps +local repos +private inbox/account state + +the useful boundary here is local coordination, not another hosted dashboard +``` + +## Windows/Linux? + +```text +macOS-first right now because it leans on Codex for Mac and LaunchAgent for the optional Relay + +the lane/approval/hub idea is portable, but this release is Mac-only +``` + +## What feedback do you want? + +```text +the first blocker + +what was confusing, broken, slow, or surprising during install or first use + +not a feature wishlist yet +``` + +## Someone asks for a demo + +```text +44-second demo: + +https://github.com/dicnunz/codex-mission-control/blob/main/assets/codex-mission-control-demo.mp4 + +local no-token demo: + +git clone https://github.com/dicnunz/codex-mission-control.git +cd codex-mission-control +./scripts/demo.sh +``` diff --git a/docs/VIRAL_LAUNCH_PLAYBOOK.md b/docs/VIRAL_LAUNCH_PLAYBOOK.md new file mode 100644 index 0000000..405c68f --- /dev/null +++ b/docs/VIRAL_LAUNCH_PLAYBOOK.md @@ -0,0 +1,216 @@ +# Viral Launch Playbook + +Goal: make the right small audience feel the pain immediately and try the install. + +This is not a broad productivity pitch. The wedge is: + +```text +multiple Codex chats are useful until they touch the same browser, inbox, repo, desktop, social account, or payment surface +``` + +## Launch Order + +1. Ship the hardened README/install changes. +2. Update GitHub issue #1 so the tester ask points at `codex-mission-control`. +3. Park PR #5 publicly so the repo looks focused. +4. Post on X with the demo video. +5. Reply with the lane-lock proof, local-only boundary, Telegram boundary, and first-blocker ask. +6. Send the repo to 10 specific Codex-heavy builders by DM or small community replies. +7. Post a follow-up after the first 3 real install reports: what broke, what changed, what still needs testers. +8. Only then post to Hacker News / Reddit / broader builder channels. + +## Message Rules + +- Lead with the collision, not the architecture. +- Show terminal proof before generated visuals. +- Say Telegram is optional. +- Say local-only and no hosted account. +- Ask for the first blocker, not general feedback. +- Do not claim official OpenAI affiliation. +- Do not claim zero setup. +- Do not imply it bypasses logins, MFA, site limits, confirmations, or account safety. + +## X Primary Post + +```text +i kept running a bunch of Codex chats at once and they started stepping on each other + +same browser +same repo +same inbox +same account surfaces + +so i built a local traffic-control layer: + +Codex Mission Control + +missions +lane locks +approval packets +optional Telegram remote + +mac-first +local-only +no hosted account + +github.com/dicnunz/codex-mission-control + +looking for 10 Codex-heavy Mac users to try the install and tell me the first blocker +``` + +Attach `assets/codex-mission-control-demo.mp4`. + +## X Replies + +```text +the core loop is intentionally boring: + +cmc discover +cmc claim BROWSER FLIGHT "using the browser" +cmc claim BROWSER OTHER "also using the browser" + +second claim gets blocked + +that is the point: Codex chats stop colliding on shared surfaces +``` + +```text +it does not move projects +it does not run a hosted dashboard +it does not create another account + +the hub is local: + +~/Codex Mission Control + +projects stay where they are +``` + +```text +Telegram is optional + +Mission Control is the hub +Relay is just the phone remote: + +Telegram -> LaunchAgent -> Codex CLI -> local hub +``` + +```text +if you try it, i want the first blocker + +not a review +not a feature request pile + +the first confusing, broken, slow, or surprising part of install + +github issue template is in the repo +``` + +## Hacker News + +Title: + +```text +Show HN: Codex Mission Control - local traffic control for multiple Codex chats +``` + +Body: + +```text +I built a local Mac tool for people running several Codex chats at once. + +The problem it solves is collisions: two chats touching the same browser session, inbox, GitHub repo, desktop, social account, or payment/account surface. + +It creates a local hub, discovers projects as missions, adds lane locks for shared surfaces, generates approval packets for risky actions, and optionally exposes a private Telegram remote. + +It is local-only. No hosted account. Projects stay where they are. + +Demo: +https://github.com/dicnunz/codex-mission-control/blob/main/assets/codex-mission-control-demo.mp4 + +Repo: +https://github.com/dicnunz/codex-mission-control + +I am looking for the first install blocker from Mac/Codex users who actually run multiple chats. +``` + +## Reddit / Builder Communities + +Use only where self-promotion is allowed. + +```text +I built Codex Mission Control, a local Mac tool for people running multiple Codex chats at once. + +It is not a hosted agent service. It is traffic control: + +- projects become missions +- browser/GitHub/email/social/payment/desktop get lane locks +- risky public/account actions become approval packets +- optional Telegram bot lets you control the local hub from your phone + +The core demo does not need Telegram: + +git clone https://github.com/dicnunz/codex-mission-control.git +cd codex-mission-control +./scripts/demo.sh + +Looking for the first blocker from Codex-heavy Mac users. +``` + +## LinkedIn + +```text +I built Codex Mission Control, a local Mac tool for coordinating multiple Codex chats across real projects. + +The interesting problem is not memory. It is shared surfaces. + +If several agent runs can touch the same browser, inbox, repo, desktop, social account, or payment/account surface, they need traffic control. + +Codex Mission Control creates local mission workspaces, lane locks, outboxes, approval packets, and an optional private Telegram remote. + +It is mac-first, local-only, and does not move your projects or create a hosted account. + +Repo: +https://github.com/dicnunz/codex-mission-control +``` + +## Direct DM + +```text +i built a small local Mac tool for the exact problem of running multiple Codex chats at once without them stepping on the same browser/repo/inbox/account surface + +repo: https://github.com/dicnunz/codex-mission-control + +if you have 5 minutes, the useful thing would be running: + +git clone https://github.com/dicnunz/codex-mission-control.git +cd codex-mission-control +./scripts/install.sh + +and telling me the first confusing/broken thing +``` + +## Follow-Up After First Installs + +```text +early Codex Mission Control install feedback: + +1. [blocker/fix] +2. [blocker/fix] +3. [blocker/fix] + +the core idea is still holding: + +multiple Codex chats need traffic control when they share browser, repo, inbox, desktop, social, or payment/account surfaces + +still looking for Mac/Codex users to break the install +``` + +## What To Do If It Gets Attention + +- Reply to technical questions with exact commands, not theory. +- Use `docs/REPLY_BANK.md` for common objections. +- Ask users to open install-feedback issues. +- Fix install blockers immediately. +- Do not add new feature branches during launch unless they remove install friction. +- Do not merge the Gemini/queue/terminal PR until the core install path has enough proof. diff --git a/mission_control.py b/mission_control.py index 3bd2c15..ae49a6d 100755 --- a/mission_control.py +++ b/mission_control.py @@ -33,7 +33,7 @@ ] REQUIRED_OPS_FILES = [ "COMMAND_CENTER.md", - "GPT55_OPERATING_SPEC.md", + "CODEX_OPERATING_SPEC.md", "RUNWAY_PROTOCOL.md", "SURFACE_LANES.md", "GLOBAL_DASHBOARD.md", @@ -347,11 +347,11 @@ def mission_instruction_block(mission: dict[str, str], hub: Path) -> str: f"- Mission Control hub: `{display_path(hub)}`", f"- Mission outbox: `{display_path(outbox_dir(hub) / (call_sign + '.md'))}`", "", - "## GPT-5.5 Mission Contract", + "## Codex Mission Contract", "", "- Start with the concrete outcome required this turn.", - "- Use the GPT-5.5 operating shape: role, objective, hard rules, tool gates, validation, and terse output.", - "- Read only the hub files needed to ground the work: `COMMAND_CENTER.md`, `GPT55_OPERATING_SPEC.md`, `RUNWAY_PROTOCOL.md`, `SURFACE_LANES.md`, and `GO_NO_GO.md`.", + "- Use the Mission Control operating shape: role, objective, hard rules, tool gates, validation, and terse output.", + "- Read only the hub files needed to ground the work: `COMMAND_CENTER.md`, `CODEX_OPERATING_SPEC.md`, `RUNWAY_PROTOCOL.md`, `SURFACE_LANES.md`, and `GO_NO_GO.md`.", "- Use tools when they materially improve correctness; do not stop before required verification passes.", "- Keep local edits narrow and project-native.", "- Before touching a shared surface, claim the matching lane with `cmc claim`.", @@ -658,6 +658,16 @@ def relay_install() -> int: return subprocess.call([sys.executable, str(ROOT / "scripts" / "configure.py")]) +def dashboard_open(hub: Path, no_open: bool = False) -> int: + init_hub(hub) + env = os.environ.copy() + env["CODEX_MISSION_CONTROL_HOME"] = str(hub.expanduser()) + command = [str(ROOT / "scripts" / "status_ui.sh")] + if no_open: + command.append("--no-open") + return subprocess.call(command, env=env) + + def build_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser(prog="cmc", description="Codex Mission Control") parser.add_argument("--hub", default=str(DEFAULT_HUB), help="Mission Control hub folder") @@ -678,7 +688,7 @@ def build_parser() -> argparse.ArgumentParser: sub.add_parser("doctor", help="check hub health") sub.add_parser("lanes", help="show surface lanes") sub.add_parser("projects", help="show discovered missions") - sub.add_parser("instructions", help="print the GPT-5.5-optimized mission instructions") + sub.add_parser("instructions", help="print the Mission Control instructions") adopt = sub.add_parser("adopt", help="install Mission Control AGENTS.md blocks into discovered projects") adopt.add_argument("--write", action="store_true", help="write AGENTS.md blocks; default is dry-run") @@ -704,6 +714,8 @@ def build_parser() -> argparse.ArgumentParser: packet.add_argument("--stop", default="stop condition") sub.add_parser("merge", help="merge mission outboxes into the global dashboard") + dashboard = sub.add_parser("dashboard", help="open the local Mission Control dashboard") + dashboard.add_argument("--no-open", action="store_true", help="write the dashboard path without opening it") relay = sub.add_parser("relay", help="Mission Control Relay commands") relay_sub = relay.add_subparsers(dest="relay_command", required=True) @@ -755,6 +767,8 @@ def main(argv: list[str] | None = None) -> int: if args.command == "merge": print(merge_outboxes(hub)) return 0 + if args.command == "dashboard": + return dashboard_open(hub, args.no_open) if args.command == "relay" and args.relay_command == "install": return relay_install() except ValueError as exc: diff --git a/scripts/configure.py b/scripts/configure.py index 2c8bae5..13399cc 100755 --- a/scripts/configure.py +++ b/scripts/configure.py @@ -211,7 +211,7 @@ def main() -> int: "CODEX_RELAY_ASSISTANT_PERSONALITY": values.get("CODEX_RELAY_ASSISTANT_PERSONALITY") or "", "CODEX_BIN": codex_bin, "CODEX_TELEGRAM_SANDBOX": values.get("CODEX_TELEGRAM_SANDBOX") or "danger-full-access", - "CODEX_TELEGRAM_MODEL": values.get("CODEX_TELEGRAM_MODEL") or "gpt-5.5", + "CODEX_TELEGRAM_MODEL": values.get("CODEX_TELEGRAM_MODEL") or "", "CODEX_TELEGRAM_REASONING_EFFORT": values.get("CODEX_TELEGRAM_REASONING_EFFORT") or "high", "CODEX_TELEGRAM_SPEED": values.get("CODEX_TELEGRAM_SPEED") or "standard", "CODEX_TELEGRAM_REPLY_STYLE": values.get("CODEX_TELEGRAM_REPLY_STYLE") or "brief", diff --git a/scripts/fresh_clone_test.sh b/scripts/fresh_clone_test.sh index 96a065f..40eeff2 100755 --- a/scripts/fresh_clone_test.sh +++ b/scripts/fresh_clone_test.sh @@ -32,6 +32,7 @@ PYTHONPATH="$PWD" python3 scripts/smoke_test.py ./cmc --hub "$TMP/hub" discover "$PWD" >/dev/null ./cmc --hub "$TMP/hub" status >/dev/null ./cmc --hub "$TMP/hub" doctor >/dev/null +CODEX_MISSION_CONTROL_HOME="$TMP/hub" ./cmc dashboard --no-open >/dev/null ./cmc --hub "$TMP/hub" instructions >/dev/null ./cmc --hub "$TMP/hub" adopt >/dev/null ./cmc --hub "$TMP/hub" claim BROWSER TEST "fresh clone" >/dev/null diff --git a/scripts/install.sh b/scripts/install.sh index 2c569ce..d9fa912 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -7,7 +7,7 @@ printf "1. preflight local Mac requirements\n" printf "2. initialize the local Mission Control hub\n" printf "3. discover existing projects as missions\n" printf "4. expose the cmc command in ~/.local/bin when possible\n" -printf "5. optionally install project AGENTS.md blocks\n" +printf "5. optionally preview/install project AGENTS.md blocks\n" printf "6. optionally install Mission Control Relay for Telegram\n" printf "7. run local health checks\n\n" @@ -52,9 +52,9 @@ fi adopt_agents="${CMC_ADOPT_AGENTS:-}" if [[ -z "$adopt_agents" && -t 0 ]]; then - printf "\nInstall Mission Control AGENTS.md blocks into discovered projects? [Y/n] " + printf "\nPreview Mission Control AGENTS.md blocks now. Write them into discovered projects? [y/N] " read -r adopt_agents - [[ -n "$adopt_agents" ]] || adopt_agents="yes" + [[ -n "$adopt_agents" ]] || adopt_agents="no" elif [[ -z "$adopt_agents" ]]; then adopt_agents="no" fi @@ -64,8 +64,10 @@ case "${adopt_agents:l}" in "$ROOT/cmc" adopt --write ;; *) - printf "\nProject AGENTS.md adoption skipped. Preview later with:\n" - printf "./cmc adopt\n" + printf "\nProject AGENTS.md adoption skipped. Preview the exact changes with:\n" + printf " ./cmc adopt\n" + printf "Apply later with backups using:\n" + printf " ./cmc adopt --write\n" ;; esac @@ -109,6 +111,7 @@ printf "\nUse next:\n" printf " cmc status\n" printf " cmc lanes\n" printf " cmc packet\n" +printf " cmc dashboard\n" printf "\nTelegram after Relay install:\n" printf " /mission status\n" printf " /mission lanes\n" diff --git a/scripts/qa.sh b/scripts/qa.sh index 7f1a734..ddcfc20 100755 --- a/scripts/qa.sh +++ b/scripts/qa.sh @@ -33,7 +33,7 @@ test -L "$hub/missions/RT-repo-two" test ! -e "$hub/missions/NO-notes-only" ./cmc --hub "$hub" adopt --write >/dev/null -grep -q 'GPT-5.5 Mission Contract' "$one/AGENTS.md" +grep -q 'Codex Mission Contract' "$one/AGENTS.md" ./cmc --hub "$hub" adopt > "$tmp/adopt.out" grep -q 'changed: 0' "$tmp/adopt.out" @@ -90,6 +90,7 @@ grep -q 'missing GO_NO_GO.md' "$tmp/status_missing.out" CODEX_MISSION_CONTROL_HOME="$hub" ./scripts/status_ui.sh --no-open > "$tmp/dashboard.out" dashboard_path="$(cat "$tmp/dashboard.out")" test -s "$dashboard_path" +CODEX_MISSION_CONTROL_HOME="$hub" ./cmc dashboard --no-open >/dev/null grep -q 'Your Codex control room' "$dashboard_path" grep -q 'Surface lanes' "$dashboard_path" grep -q 'Copy approval packet' "$dashboard_path" diff --git a/scripts/record_demo.sh b/scripts/record_demo.sh index b9d8323..857cce4 100755 --- a/scripts/record_demo.sh +++ b/scripts/record_demo.sh @@ -173,7 +173,7 @@ write_frame "$TMP/frame3.svg" \ write_frame "$TMP/frame4.svg" \ "INSTRUCTIONS" \ "Make every mission sharper." \ - "GPT-5.5-style role, objective, tool gates, validation, output." \ + "Codex role, objective, tool gates, validation, output." \ "cmc adopt" \ "dry run first" \ "append AGENTS block" \ diff --git a/scripts/smoke_test.py b/scripts/smoke_test.py index 48009b5..672c61b 100755 --- a/scripts/smoke_test.py +++ b/scripts/smoke_test.py @@ -80,7 +80,7 @@ def read(self, _size: int = -1) -> bytes: ENV_PREFIXES = ("CODEX_TELEGRAM_", "CODEX_RELAY_", "TELEGRAM_") ENV_EXACT = {"CODEX_BIN"} TEST_ENV = { - "CODEX_TELEGRAM_MODEL": "gpt-5.5", + "CODEX_TELEGRAM_MODEL": "", "CODEX_TELEGRAM_REASONING_EFFORT": "high", "CODEX_TELEGRAM_SPEED": "standard", "CODEX_TELEGRAM_REPLY_STYLE": "brief", @@ -127,7 +127,7 @@ def run_tests() -> int: init_text = mission_control.init_hub(hub) assert_true("Mission Control initialized" in init_text, "expected hub init") assert_true((hub / "_ops" / "COMMAND_CENTER.md").exists(), "expected command center template") - assert_true((hub / "_ops" / "GPT55_OPERATING_SPEC.md").exists(), "expected GPT-5.5 operating spec") + assert_true((hub / "_ops" / "CODEX_OPERATING_SPEC.md").exists(), "expected Codex operating spec") discover_text = mission_control.discover_projects(hub, [str(project)], include_defaults=False) assert_true("added: 1" in discover_text, "expected one discovered project") missions = mission_control.load_missions(hub) @@ -154,7 +154,7 @@ def run_tests() -> int: packet = mission_control.packet_text("TEST", "post", "x.com", "hello", "proof.png", "public", "now", "stop after post") assert_true("Exact action: post" in packet and "Stop condition" in packet, "expected complete packet") instructions = mission_control.instructions_text(hub) - assert_true("GPT-5.5 Operating Overlay" in instructions, "expected optimized instructions") + assert_true("Codex Operating Overlay" in instructions, "expected optimized instructions") doctor = mission_control.doctor_text(hub) assert_true("ops files: ok" in doctor, "expected doctor ok") adopt_preview = mission_control.adopt_agents(hub) diff --git a/templates/mission-control/AGENTS.md b/templates/mission-control/AGENTS.md index 78766d7..874a852 100644 --- a/templates/mission-control/AGENTS.md +++ b/templates/mission-control/AGENTS.md @@ -1,4 +1,4 @@ -# GPT-5.5 Operating Overlay +# Codex Operating Overlay Apply this before the project-specific instructions below. @@ -26,6 +26,6 @@ Use this structure when creating or revising mission instructions: You are working inside a Codex Mission Control hub. -At wakeup, read `_ops/COMMAND_CENTER.md`, `_ops/GPT55_OPERATING_SPEC.md`, `_ops/RUNWAY_PROTOCOL.md`, `_ops/SURFACE_LANES.md`, and `_ops/GO_NO_GO.md`. +At wakeup, read `_ops/COMMAND_CENTER.md`, `_ops/CODEX_OPERATING_SPEC.md`, `_ops/RUNWAY_PROTOCOL.md`, `_ops/SURFACE_LANES.md`, and `_ops/GO_NO_GO.md`. Make safe local progress inside the current project. Before touching a shared surface, claim its lane with `cmc claim`. Before any public, social, email, payment, account, destructive, or reputational action, prepare an exact approval packet and stop. diff --git a/templates/mission-control/_ops/GPT55_OPERATING_SPEC.md b/templates/mission-control/_ops/CODEX_OPERATING_SPEC.md similarity index 98% rename from templates/mission-control/_ops/GPT55_OPERATING_SPEC.md rename to templates/mission-control/_ops/CODEX_OPERATING_SPEC.md index 1de86cf..2e12df8 100644 --- a/templates/mission-control/_ops/GPT55_OPERATING_SPEC.md +++ b/templates/mission-control/_ops/CODEX_OPERATING_SPEC.md @@ -1,4 +1,4 @@ -# GPT-5.5 Operating Spec +# Codex Operating Spec Updated: {{UPDATED_AT}} diff --git a/templates/mission-control/_ops/COMMAND_CENTER.md b/templates/mission-control/_ops/COMMAND_CENTER.md index bba6f6a..83efd5f 100644 --- a/templates/mission-control/_ops/COMMAND_CENTER.md +++ b/templates/mission-control/_ops/COMMAND_CENTER.md @@ -8,7 +8,7 @@ This is the local command room for Codex work on this Mac. Run projects as missions, not loose chats. Local work can move quickly. Shared surfaces need lane checks and exact approval packets. -Read `GPT55_OPERATING_SPEC.md` at wakeup. It is the behavior contract: outcome first, minimal but sufficient context, explicit tool use, narrow edits, targeted validation, compact final report. +Read `CODEX_OPERATING_SPEC.md` at wakeup. It is the behavior contract: outcome first, minimal but sufficient context, explicit tool use, narrow edits, targeted validation, compact final report. ## Source Of Truth From 5df2b6d9e50d63d842e9c2c67b1628afcfaec491 Mon Sep 17 00:00:00 2001 From: nic <139033898+dicnunz@users.noreply.github.com> Date: Thu, 30 Apr 2026 13:44:24 -0400 Subject: [PATCH 2/5] Fix Relay detection for installed runtime --- mission_control.py | 15 +++++++++++---- scripts/doctor.sh | 5 ++++- scripts/smoke_test.py | 20 ++++++++++++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/mission_control.py b/mission_control.py index ae49a6d..39de772 100755 --- a/mission_control.py +++ b/mission_control.py @@ -494,8 +494,15 @@ def lock_status(hub: Path) -> list[tuple[str, dict[str, object]]]: def relay_state() -> str: - runtime = Path.home() / "Library" / "Application Support" / "CodexRelay" / "codex_relay.py" - env_file = ROOT / ".env" + runtime_root = Path( + os.environ.get( + "CODEX_RELAY_RUNTIME_DIR", + str(Path.home() / "Library" / "Application Support" / "CodexRelay"), + ) + ).expanduser() + runtime = runtime_root / "codex_relay.py" + runtime_env = runtime_root / ".env" + repo_env = ROOT / ".env" label = os.environ.get("CODEX_RELAY_LABEL", "com.codexrelay.agent") running = "unknown" if sys.platform == "darwin": @@ -508,9 +515,9 @@ def relay_state() -> str: check=False, ) running = "running" if result.returncode == 0 and ("state = running" in result.stdout or "pid = " in result.stdout) else "not running" - if runtime.exists() and env_file.exists(): + if runtime.exists() and runtime_env.exists(): return f"installed, {running}" - if env_file.exists(): + if repo_env.exists() or runtime_env.exists(): return "configured, launchagent missing" return "not installed" diff --git a/scripts/doctor.sh b/scripts/doctor.sh index 50cde07..9f9090e 100755 --- a/scripts/doctor.sh +++ b/scripts/doctor.sh @@ -26,8 +26,11 @@ fi ok "Mission Control doctor works" if [[ -f "$ROOT/.env" ]]; then - ok ".env exists" + ok "repo .env exists" "$ROOT/codex_relay.py" --check-config +elif [[ -f "$RUNTIME/.env" ]]; then + ok "runtime .env exists" + (cd "$RUNTIME" && "$RUNTIME/codex_relay.py" --check-config) else warn ".env missing; Mission Control Relay is not installed" fi diff --git a/scripts/smoke_test.py b/scripts/smoke_test.py index 672c61b..0d22bd8 100755 --- a/scripts/smoke_test.py +++ b/scripts/smoke_test.py @@ -157,6 +157,26 @@ def run_tests() -> int: assert_true("Codex Operating Overlay" in instructions, "expected optimized instructions") doctor = mission_control.doctor_text(hub) assert_true("ops files: ok" in doctor, "expected doctor ok") + old_runtime_dir = os.environ.get("CODEX_RELAY_RUNTIME_DIR") + old_relay_label = os.environ.get("CODEX_RELAY_LABEL") + runtime = tmp_path / "runtime" + runtime.mkdir() + (runtime / "codex_relay.py").write_text("# relay\n") + (runtime / ".env").write_text("TELEGRAM_BOT_TOKEN=fake\n") + os.environ["CODEX_RELAY_RUNTIME_DIR"] = str(runtime) + os.environ["CODEX_RELAY_LABEL"] = "com.codexrelay.test-missing" + try: + relay_state = mission_control.relay_state() + assert_true(relay_state.startswith("installed,"), "expected runtime Relay install detection") + finally: + if old_runtime_dir is None: + os.environ.pop("CODEX_RELAY_RUNTIME_DIR", None) + else: + os.environ["CODEX_RELAY_RUNTIME_DIR"] = old_runtime_dir + if old_relay_label is None: + os.environ.pop("CODEX_RELAY_LABEL", None) + else: + os.environ["CODEX_RELAY_LABEL"] = old_relay_label adopt_preview = mission_control.adopt_agents(hub) assert_true("would create" in adopt_preview, "expected dry-run adoption") adopt_write = mission_control.adopt_agents(hub, write=True) From b0f7971be87564fc8efcba31a67a88279c556c11 Mon Sep 17 00:00:00 2001 From: nic <139033898+dicnunz@users.noreply.github.com> Date: Thu, 30 Apr 2026 14:12:34 -0400 Subject: [PATCH 3/5] Make dashboard useful for first-run testing --- scripts/qa.sh | 7 +- scripts/status_ui.sh | 461 ++++++++++++++++++++++++------------------- 2 files changed, 266 insertions(+), 202 deletions(-) diff --git a/scripts/qa.sh b/scripts/qa.sh index ddcfc20..4ab6ea7 100755 --- a/scripts/qa.sh +++ b/scripts/qa.sh @@ -91,11 +91,10 @@ CODEX_MISSION_CONTROL_HOME="$hub" ./scripts/status_ui.sh --no-open > "$tmp/dashb dashboard_path="$(cat "$tmp/dashboard.out")" test -s "$dashboard_path" CODEX_MISSION_CONTROL_HOME="$hub" ./cmc dashboard --no-open >/dev/null -grep -q 'Your Codex control room' "$dashboard_path" +grep -q 'Mission Control' "$dashboard_path" grep -q 'Surface lanes' "$dashboard_path" -grep -q 'Copy approval packet' "$dashboard_path" -grep -q 'dashboard-instrument.png' "$dashboard_path" -grep -q 'mission-control-icon.png' "$dashboard_path" +grep -q 'Approval packet' "$dashboard_path" +grep -q 'Next thing to try' "$dashboard_path" for visual in \ assets/visuals/hero-control-room.png \ diff --git a/scripts/status_ui.sh b/scripts/status_ui.sh index 8ccee34..40b82ea 100755 --- a/scripts/status_ui.sh +++ b/scripts/status_ui.sh @@ -16,9 +16,9 @@ CMC_DOCTOR="$("$ROOT/cmc" doctor 2>&1 || true)" CMC_LANES="$("$ROOT/cmc" lanes 2>&1 || true)" CMC_PROJECTS="$("$ROOT/cmc" projects 2>&1 || true)" CMC_PACKET="$("$ROOT/cmc" packet 2>&1 || true)" -UPDATED_AT="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" +UPDATED_AT="$(date +"%Y-%m-%d %H:%M:%S %Z")" -STATUS_OUTPUT="$STATUS_OUTPUT" CMC_STATUS="$CMC_STATUS" CMC_DOCTOR="$CMC_DOCTOR" CMC_LANES="$CMC_LANES" CMC_PROJECTS="$CMC_PROJECTS" CMC_PACKET="$CMC_PACKET" UPDATED_AT="$UPDATED_AT" OUT="$OUT" ROOT="$ROOT" python3 - <<'PY' +STATUS_OUTPUT="$STATUS_OUTPUT" CMC_STATUS="$CMC_STATUS" CMC_DOCTOR="$CMC_DOCTOR" CMC_LANES="$CMC_LANES" CMC_PROJECTS="$CMC_PROJECTS" CMC_PACKET="$CMC_PACKET" UPDATED_AT="$UPDATED_AT" OUT="$OUT" python3 - <<'PY' import html import os import re @@ -32,72 +32,94 @@ cmc_projects = os.environ["CMC_PROJECTS"] cmc_packet = os.environ["CMC_PACKET"] updated_at = os.environ["UPDATED_AT"] out = Path(os.environ["OUT"]) -root = Path(os.environ["ROOT"]) -visual_path = root / "assets/visuals/dashboard-instrument.png" -icon_path = root / "assets/visuals/mission-control-icon.png" -def find(pattern: str, text: str, fallback: str = "0") -> str: + +def find(pattern: str, text: str, fallback: str = "unknown") -> str: match = re.search(pattern, text) return match.group(1) if match else fallback -mission_count = find(r"missions: ([0-9]+)", cmc_status) -lock_line = find(r"locks: ([^\n]+)", cmc_status, "unknown") -outboxes = find(r"stale outboxes: ([0-9]+)", cmc_status) -relay = find(r"relay: ([^\n]+)", cmc_status, "unknown") -hub = find(r"hub: ([^\n]+)", cmc_status, "unknown") -lane_rows = [] -for line in cmc_lanes.splitlines(): - if not line.startswith("- "): +def esc(value: str) -> str: + return html.escape(value, quote=True) + + +hub = find(r"hub: ([^\n]+)", cmc_status) +mission_count = find(r"missions: ([0-9]+)", cmc_status, "0") +locks = find(r"locks: ([^\n]+)", cmc_status) +stale = find(r"stale outboxes: ([0-9]+)", cmc_status, "0") +relay = find(r"relay: ([^\n]+)", cmc_status) +hub_ok = "hub files: ok" in cmc_status +doctor_ok = "ops files: ok" in cmc_doctor and "broken mission links: 0" in cmc_doctor + +lane_items = [] +held_lanes = [] +for raw in cmc_lanes.splitlines(): + if not raw.startswith("- "): continue - name, _, state = line[2:].partition(": ") - ok = state == "clear" - lane_rows.append( - f"

{html.escape(name)}{html.escape(state)}
" + lane, _, state = raw[2:].partition(": ") + clear = state == "clear" + if not clear: + held_lanes.append((lane, state)) + lane_items.append( + f""" +
+ {esc(lane)} + {esc(state)} +
+ """ ) project_rows = [] -for line in cmc_projects.splitlines(): - if not line.startswith("- "): +for raw in cmc_projects.splitlines(): + if not raw.startswith("- "): continue - label, _, path = line[2:].partition(" -> ") + label, _, path = raw[2:].partition(" -> ") project_rows.append( - f"
{html.escape(label)}{html.escape(path)}
" + f""" + + {esc(label)} + {esc(path)} + + """ ) -project_html = "\n".join(project_rows[:10]) or "
Run cmc discover to add missions.
" -if len(project_rows) > 10: - project_html += f"\n
{len(project_rows) - 10} more missions in cmc projects.
" -cards = "\n".join( - [ - f"
Missions{html.escape(mission_count)}
", - f"
Lanes{html.escape(lock_line)}
", - f"
Stale outboxes{html.escape(outboxes)}
", - f"
Relay{html.escape(relay)}
", - ] -) +project_table = "\n".join(project_rows[:14]) +if not project_table: + project_table = 'No missions yet. Run cmc discover.' -commands = "\n".join( - [ - "cmc status", - "cmc lanes", - "cmc projects", - "cmc packet", - "cmc claim BROWSER FLIGHT \"reason\"", - "cmc release BROWSER FLIGHT", - "/mission status", - "/mission lanes", - "/mission packet", - "/mission health", - ] +next_command = 'cmc claim BROWSER TEST "using browser"' +if held_lanes: + lane, _state = held_lanes[0] + next_command = f'cmc release {lane} OWNER' + +command_list = [ + ("Status", "cmc status"), + ("Lanes", "cmc lanes"), + ("Projects", "cmc projects"), + ("Dashboard", "cmc dashboard"), + ("Claim browser", 'cmc claim BROWSER TEST "using browser"'), + ("Release browser", "cmc release BROWSER TEST"), + ( + "Approval packet", + 'cmc packet --mission TEST --action "post update" --target "x.com" --object "exact post text" --proof "proof.png" --risk "public social" --why "testing approval flow" --stop "after one post"', + ), +] + +command_buttons = "\n".join( + f'' + for label, command in command_list ) -visual_html = "" -if visual_path.exists(): - visual_html = ( - f"
" - ) +health_bits = [ + ("Hub files", "ok" if hub_ok else "check"), + ("Doctor", "ok" if doctor_ok else "check"), + ("Locks", locks), + ("Relay", relay), +] +health_html = "\n".join( + f'
{esc(label)}{esc(value)}
' + for label, value in health_bits +) doc = f""" @@ -105,202 +127,245 @@ doc = f""" Codex Mission Control
-
- {f"" if icon_path.exists() else ""} -
Codex Mission Control
-
-

Your Codex control room.

-

{html.escape(hub)}

+

Mission Control

+

{esc(hub)}

-
{html.escape(updated_at)}
+
{esc(updated_at)}
- {visual_html} -
{cards}
-
-
-

Surface lanes

-
{''.join(lane_rows)}
-
-
-

One-tap commands

-
- - - - -
-
-
-
-
-

Missions

-
{project_html}
-
-
-

Doctor

-
{html.escape(cmc_doctor)}
+ +
{health_html}
+ +
+
+
+

Next thing to try

+

Run this in the terminal. It should change the lane state immediately.

+ {esc(next_command)} +
+ +
+

Surface lanes

+
{''.join(lane_items)}
+
+ +
+

Missions

+ {project_table}
+
+ +
-
-

Relay runtime

-
{html.escape(relay_status)}
-
-
Refresh with ./scripts/status_ui.sh. This file is local and private.
+ +
From 4479d9c1ca8ee810b50354ff115b8eb8ac30cd1d Mon Sep 17 00:00:00 2001 From: nic <139033898+dicnunz@users.noreply.github.com> Date: Thu, 30 Apr 2026 14:38:02 -0400 Subject: [PATCH 4/5] Refine dashboard into focused operator view --- scripts/qa.sh | 4 +- scripts/status_ui.sh | 448 ++++++++++++++++++++++++------------------- 2 files changed, 251 insertions(+), 201 deletions(-) diff --git a/scripts/qa.sh b/scripts/qa.sh index 4ab6ea7..3d0005a 100755 --- a/scripts/qa.sh +++ b/scripts/qa.sh @@ -92,9 +92,9 @@ dashboard_path="$(cat "$tmp/dashboard.out")" test -s "$dashboard_path" CODEX_MISSION_CONTROL_HOME="$hub" ./cmc dashboard --no-open >/dev/null grep -q 'Mission Control' "$dashboard_path" -grep -q 'Surface lanes' "$dashboard_path" +grep -q 'Lanes' "$dashboard_path" grep -q 'Approval packet' "$dashboard_path" -grep -q 'Next thing to try' "$dashboard_path" +grep -q 'Copy command' "$dashboard_path" for visual in \ assets/visuals/hero-control-room.png \ diff --git a/scripts/status_ui.sh b/scripts/status_ui.sh index 40b82ea..0fee022 100755 --- a/scripts/status_ui.sh +++ b/scripts/status_ui.sh @@ -16,7 +16,7 @@ CMC_DOCTOR="$("$ROOT/cmc" doctor 2>&1 || true)" CMC_LANES="$("$ROOT/cmc" lanes 2>&1 || true)" CMC_PROJECTS="$("$ROOT/cmc" projects 2>&1 || true)" CMC_PACKET="$("$ROOT/cmc" packet 2>&1 || true)" -UPDATED_AT="$(date +"%Y-%m-%d %H:%M:%S %Z")" +UPDATED_AT="$(date +"%H:%M %Z")" STATUS_OUTPUT="$STATUS_OUTPUT" CMC_STATUS="$CMC_STATUS" CMC_DOCTOR="$CMC_DOCTOR" CMC_LANES="$CMC_LANES" CMC_PROJECTS="$CMC_PROJECTS" CMC_PACKET="$CMC_PACKET" UPDATED_AT="$UPDATED_AT" OUT="$OUT" python3 - <<'PY' import html @@ -34,7 +34,7 @@ updated_at = os.environ["UPDATED_AT"] out = Path(os.environ["OUT"]) -def find(pattern: str, text: str, fallback: str = "unknown") -> str: +def find(pattern: str, text: str, fallback: str = "") -> str: match = re.search(pattern, text) return match.group(1) if match else fallback @@ -43,82 +43,85 @@ def esc(value: str) -> str: return html.escape(value, quote=True) -hub = find(r"hub: ([^\n]+)", cmc_status) +def parse_owner(state: str) -> str: + match = re.match(r"held by ([^ ]+)", state) + return match.group(1) if match else "OWNER" + + +hub = find(r"hub: ([^\n]+)", cmc_status, "unknown hub") mission_count = find(r"missions: ([0-9]+)", cmc_status, "0") -locks = find(r"locks: ([^\n]+)", cmc_status) -stale = find(r"stale outboxes: ([0-9]+)", cmc_status, "0") -relay = find(r"relay: ([^\n]+)", cmc_status) +locks = find(r"locks: ([^\n]+)", cmc_status, "unknown") +relay = find(r"relay: ([^\n]+)", cmc_status, "unknown") hub_ok = "hub files: ok" in cmc_status doctor_ok = "ops files: ok" in cmc_doctor and "broken mission links: 0" in cmc_doctor +ready = hub_ok and doctor_ok -lane_items = [] -held_lanes = [] +lanes = [] +held = [] for raw in cmc_lanes.splitlines(): if not raw.startswith("- "): continue lane, _, state = raw[2:].partition(": ") - clear = state == "clear" - if not clear: - held_lanes.append((lane, state)) - lane_items.append( - f""" -
- {esc(lane)} - {esc(state)} -
- """ - ) + item = {"lane": lane, "state": state, "clear": state == "clear", "owner": parse_owner(state)} + lanes.append(item) + if not item["clear"]: + held.append(item) + +primary = held[0] if held else None +if primary: + main_label = f"{primary['lane']} is held" + main_detail = primary["state"] + main_command = f"cmc release {primary['lane']} {primary['owner']}" + main_note = "Free the surface, then hand it to the next chat." + body_class = "blocked" +else: + main_label = "All lanes are clear" + main_detail = "Ready for the next Codex chat." + main_command = 'cmc claim BROWSER TEST "using browser"' + main_note = "Claim the surface before a chat touches the browser, GitHub, email, social, commerce, desktop, or global state." + body_class = "ready" -project_rows = [] +lane_rows = "\n".join( + f""" + + {esc(item['lane'])} + {esc(item['state'])} + + """ + for item in lanes +) + +projects = [] for raw in cmc_projects.splitlines(): if not raw.startswith("- "): continue - label, _, path = raw[2:].partition(" -> ") - project_rows.append( - f""" - - {esc(label)} - {esc(path)} - - """ - ) - -project_table = "\n".join(project_rows[:14]) -if not project_table: - project_table = 'No missions yet. Run cmc discover.' + left, _, path = raw[2:].partition(" -> ") + call_sign, _, name = left.partition(": ") + projects.append((call_sign.strip(), name.strip() or left.strip(), path.strip())) -next_command = 'cmc claim BROWSER TEST "using browser"' -if held_lanes: - lane, _state = held_lanes[0] - next_command = f'cmc release {lane} OWNER' - -command_list = [ - ("Status", "cmc status"), - ("Lanes", "cmc lanes"), - ("Projects", "cmc projects"), - ("Dashboard", "cmc dashboard"), - ("Claim browser", 'cmc claim BROWSER TEST "using browser"'), - ("Release browser", "cmc release BROWSER TEST"), - ( - "Approval packet", - 'cmc packet --mission TEST --action "post update" --target "x.com" --object "exact post text" --proof "proof.png" --risk "public social" --why "testing approval flow" --stop "after one post"', - ), -] - -command_buttons = "\n".join( - f'' - for label, command in command_list +project_rows = "\n".join( + f""" + + {esc(call)} + {esc(name)} + {esc(path)} + + """ + for call, name, path in projects[:8] ) +if not project_rows: + project_rows = 'No missions yet.' +more_projects = max(0, len(projects) - 8) -health_bits = [ - ("Hub files", "ok" if hub_ok else "check"), - ("Doctor", "ok" if doctor_ok else "check"), - ("Locks", locks), - ("Relay", relay), +quick_commands = [ + ("status", "cmc status"), + ("lanes", "cmc lanes"), + ("projects", "cmc projects"), + ("packet", 'cmc packet --mission TEST --action "post update" --target "x.com" --object "exact post text" --proof "proof.png" --risk "public social" --why "testing approval flow" --stop "after one post"'), ] -health_html = "\n".join( - f'
{esc(label)}{esc(value)}
' - for label, value in health_bits +quick_reference = "\n".join( + f"{label}: {command}" + for label, command in quick_commands ) doc = f""" @@ -129,15 +132,14 @@ doc = f""" -
+

Mission Control

-

{esc(hub)}

+

Local hub. Shared surfaces. Exact approvals.

{esc(updated_at)}
-
{health_html}
- -
-
-
-

Next thing to try

-

Run this in the terminal. It should change the lane state immediately.

- {esc(next_command)} -
+
+
+
{'Attention' if primary else 'Ready'}
+

{esc(main_label)}

+ {esc(main_detail)} +
+
+
+

{esc(main_note)}

+ {esc(main_command)} +
+ +
+
-
-

Surface lanes

-
{''.join(lane_items)}
-
+
+ {esc(mission_count)} missions + {esc(locks)} + Relay: {esc(relay)} + {'Healthy' if ready else 'Needs check'} +
-
-

Missions

- {project_table}
-
-
+
+
+

Lanes

+ {lane_rows}
+
+
+

Missions

+ {project_rows}
+ {f'

{more_projects} more in cmc projects.

' if more_projects else ''} +
- -
- - + +
+ Approval packet +
{esc(cmc_packet)}
+
+ +
From a92ef4d756d0470fb9aa14133eee235393713f8e Mon Sep 17 00:00:00 2001 From: nic <139033898+dicnunz@users.noreply.github.com> Date: Thu, 30 Apr 2026 14:52:38 -0400 Subject: [PATCH 5/5] Add focused CMC launch packet --- assets/cmc-dashboard-launch-crop.png | Bin 0 -> 43117 bytes docs/LAUNCH_PACKET_2026-04-30.md | 108 +++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 assets/cmc-dashboard-launch-crop.png create mode 100644 docs/LAUNCH_PACKET_2026-04-30.md diff --git a/assets/cmc-dashboard-launch-crop.png b/assets/cmc-dashboard-launch-crop.png new file mode 100644 index 0000000000000000000000000000000000000000..688d70b33eda2d2f9287451ca4fd82db65045b5b GIT binary patch literal 43117 zcmeEuWmJ{l*DZ>`PY_g6T0y#$?i7%Y15%PocQ;1`L_oSb58d5Iy1To(yWwv9z5g-p zhkM7kAKx+F%Ljc1a1Q(IXYIMxnrqI-S6)^e9hCqT0RaJB;^PNJ1Oy~-`KaKZ$KXG~ zd0qwtgck@BAB2>g;&*0|RIyD7kr&<|JrNaB`XH<%*edpnerFGS@wOG$K747sL=+0K zco7`D26Yr5UNG9)t|6XN1d7|_0mHg9x{``BDjQRiH z5bVVNc@KpW5HFbQPX%0*ZWderZu_?`VI)qDjxegAhK5J?%rrFbDJjJoFKTLPTwI(l zqYe+P=NsI=%!&sRWoyrKadA1HZYg(1GAw&!HhH5Zaog9}Z4T+`>XM5GR#`72pO1IM zaafM#DDUp<(9_eClf#`{JR01u9X@>E%zW(S1F^9g8ZXr5dRQPFIYRFDZ`47KiK;49 zjMrf!c6N509gDK@oNAR8ns@qUW_d7}_m4x(&suRYF^5ciyu2o3c|yd!aUAotj-=Z$ zk&&P3s?_xK$j+zDrYrI_YtQng=lcuwV16^&$zlNn_ctt=k`c5fCMKAkH#crn($QAO zYch-~JRUb6>RnD%9e=iCf`tfXL}N2f6-yN|uhL$)K(%VDBCUdTzyG*rR1II3zq zqO2@t;4!(evp+m9J1813j~lA*!$pLCRbNiGO?`n zHmfB)AyN^v6w+|v2s)L;+Rc&J>gvn(AkymjjIW)FZjNuTu=beVSD< zV`Y7djE>LG-`v^UEK+H%zPfkD4%cmbk7Z!DIp=t}1f8pQ=CeF|%Pzc{6Ud<9=yta9 zeMT)S+xrQM`D9gSz2t@Un-%e(=Z3N*4pw=S)f!1BCnr3W1trcU_>5ZbSZLnAr`hDd z^;ziuvl~@CywVxAiXO{mT2UutI+iCZBcVI1w0o1k8I`A69KX-+eDwDGzT!(e2GV9! zir~dQ9Br&Xv;9^rFfb5fG^dzUynU<6>H!&SvXrIP`=gm@S>LLr!acv_H;Kw<*E^Bz zWT)jy=}&lfj~%;{H8pF&T@r(XUtkh#oL;7>Sr5WYIy)sAg&ys+H@K}XEd0spU_u>x z^ZxyJQUThn>*)E0R_NIYr;Sx*Wt8FZr_@~R$$zxT$Ue+|&(ol=_|-it|EMpaD~c(J zNt=JOmLt1hI!l4v8PeL)5>BgW(()_h<;%tCO3QVR(&P31@hk=RKi|Hq6lz_35Cbvt&q}>!~vu6hT@#V#AM1Qq&i{fcZI)ar9aplZg~Xbn zxibmTFTkCvvJN}Y*VEJMjb(FptDBUXGBWIshi%abG+i8GeMQ!RK!!{7yJO<;&d;Aa zo$uwt;R2cQyv|2uMuW_67N>8o&!P3R**}ob6cZgC9ibNo0^|2art35+1@z|1+&D*z z%|4Zu^LJy@bq_!lK3KZ1L%YlGdL&4OKt(|@S8MCp@LJ;czI?vHBl5J7aP0Hv`(C$% ztQH}WiFX@~#I62m`!L;|cDd&1clC`G~Rr{s>+4 z*M&dd{qdLmDD^)U0*j=jR{cbHDn1xJFoMnwmPpp@lo&hGIccc*>wYCvQtLgOpXqUvW8f z4TNB|2X1tqJLW9k-0f~Z^CwMtBUD>q8O*_|-Eb408scF~H-i{&icdfQj3@FlERTjM7IOcc<)irIkItE-taM-Is2F`=S^g@e#gM zspGuTpS8TTB$H~9JlU;HYQ4P9+0LZx+Kr*G?h_baiDQ2v$YE$4QPtH*qT6nlN7kubMeI~4 z)88;PzRAIb%k)@9a@wSL?PGA&%S}doo|7sx#y{ZD1$1DX;{^_(dIjk_r!sxtQ0#Bl z=med}3SIfi)02(Gkta&V#@S4Xd>J7DzZ;+dH0BU7Ii~%9T)Zl6$W(<{&$tnW4UN(_ z+qm%Xul&-oN$mBL^#(V|F)W5%L^AJLSXgL%XkVo$!X*818T6F9qyy;tJHs+_lx@Q~ z!kMQRo5iOpEgkRg+&5Dg)XRdoa8{)yM|?1dL%Bx!`aWHRKCbH-q>c!NRNeNmIGr_EBWB^Vl-D@R@l|>c&&G~)^VL#g8O!86Tz>_PWZ#zTab@} zNCm8|vT|;4*1!iwQ2U}Ii1SH=SW}amNxP?qmz#Sl&1X7#(S2gT15tb;BL9y7vV@9C zrTG5$Y~yUV+&=7|kkGK%x!R#J8I3ZSqWRaaPY6e<)V3|>mnazhB7GzK)ccoO(Dl5% zf6DtLCME`$tF;r9`{Pw|R_#|-{zSZI`sYtIIzfpD={4^0vthdR~w5OuE;qR`OLtSJe$(IJ==+BG;9;#vq9+Rbi`E-qI9 z);YP(_UD-f+uPbeOjS4WgMF#7UKX3JIgO8xzeo(Dlxc9-o$8Kaf~`wP*;!jlNJ@rR z@lSS2DE-NFj13KyoG!9i?Yc?M*QiuXy}KCn4D&YF*xz4YUzdX-avs9gl!DiN+FDwO z1U!DPO=d&HY2`~3FOSy+Y}bCbQ2ecjCkyPa3(DiSiudsE=^LQ?YmM~+!<6m;F9YKv z887wwM@I4_j@k2g$jHpr$I5rm-b7HFbx+J!J9~G_yVUqfglv}L6|02*$&|sKeXCj$ zzMFM8ysY;HgLHyokUsLnPpA*}b3J?Iu@dvD$nt7;ls^ugfu&`?R)JRi)jU+xe8wJ} z$=j>_N^UPNuXt{In~ee89hi@gI6(faFB3(&$Lsgq{bNl{@lD6Qag`ud_FsJv6^)?3 zyrl#{k^^26YoD2sp{}N8lUi%e^8N?}I!$hAVtAKoKZoTUE`xfwwhw@{gXgRs2Mcdt zG9CjU#nKE!(iuXp&&(UBVDl!UM5@CO2M34qz1uuY6cm&wI+e&U3ToU2zIkqz zB0TT8{WT;h-&;*hZ3y?vEI9dh$RI=AOqLq%P$Y1io}Mlj7Rt)XGO84O_NqdH<~#+t zTdS%H9L^yv9_yvAvo-c=a@+_T?-m{o${j(teE?dF+bsbO9%1*Rub6v}`n)3y+IbGL_iIhQ4Gzlqb zKRn#IoJHA0?FvUOk=jhzU(poTqPN~^@o|!e#Bhd;w8h%+ zd=1-&)k7;+R??FNq3PNk1Wy(|Z!ER?-{|)vq2Z>_h-QbvNjTXk^q1SvyZX)d=jxlH zuseS~C$(Pf8Z9caic(>OWJtfP;Ec!)fyKneqH5RF+^s9FBqzUCcfQjPArnnsx7wf6 zlwIg0tj1$OYi+%~L6YQBONCLldR23Ca(>h^5)?$3&o5+Ju7^9iGP%(_yHT^fzvEl% z#-xy>e&uq$r-?-V_du*L18^8VTyDSE!)Gy&jXOJD6mi_2g{)Oq)kQIB2a*cN)(GG{ z>-ED+Vl_U>3`)9)(_~>QDFYt|P20ukX z6d{+*h!<&B1eT^@0Yg=E3|URfMH50^HqCOR>zxopT5qY4y^558fYy!1I(Ff7d%P(M zl;b!JtnX=h{x(!AS`Ui@iRF^#6jZyDDb4-Y~ z5{E`ddz(5iy{tn%^5REh;V2v*&1%CE)f4p@8Sj0)Z?B&RbEyMpU+;+#F~pjX%akR~ zHVl3J1+8%2z>94cTj=sCD5RtLrgu>~hS}ksn9J+$4t3On5-0Q5uV0S)4S44xqobEU z1BHc!=jyCinftrDO(%*{KpD!;4r>o2w%woO(?#nk`vt;O-~8*FyE9F(R7{O5`8SJc zaX&mu@sYzy|HB0^g)YULH_<&$VDUJ;oxrD#$e;) zcUFq>>a}!$R6ru&!OO)}Etk~LG&l!`Moot3r~aXLlRWs2h|-t9Bd#y)H=y5rC+$u{ z)5-d)n;#Ut>!c$szOm!uAd46X3JU57elsrC6ZOZ9Fv2(O45i5X(&~qkuYOB!biO?f z2TkAk{=BVSo)+B0eeo@wO2JA=SAW0Uh0W%WJ{Fa%m8~t-Ts=J&F{0&s!)l>h#;-d7 z6JOc`Auri zo**~JkKG+iYiH&ukw(K~e8Jx;4uRx?#v1%7>a`BL#={vrJUnPg0w0!3{jA62O>i2@N=s|4 z7MIe*C3}lRe9jaU6mFzMnjd?D8_fLmS8?(Cc@}o|3K>FP#HSB8!iMX~!i?EslW0@7 z_IiK6-LcBb!D6#vU;L+c!l3==Pvi>?#bn_r;Z@pEKDZ!r5x>1Utp{90)NETIaji}x zyorI*c5}HsD306SuV@_vD_|fpb#g$}e0SV0FvD~Jn%ASQCG;Al@qC3em%JOpRrl+& z-p=e#s;aO4(p15@ZxGgzo7A(4+6Z61?9(a<=meZee6F8rw1{847|4{{2dyHS!FAF)G6lu0 zVJIjAH!IWr{9=`tmtIQ&6GvVneDGD=9k}4{4RRi>e5|I(~ z=G#h{jfVX}pdXmoSD2Y8k*ybt$WgL&U5`yn>=O#q`=U|t$$VXoR6u9`;f&s(2Yc9h zb`G!ORTdGkrQ@B)v6&8@jdmOE&o|(nv9eSeP1VU5eY7(A_#z6Qc|GzC1H(Q?(Rxm9wy3x`u|P@CH9VD? z-+WAX^N!r-q-*Y`u%KX3seQ74ynFkYiqXe5PodVOms^D?N#^z};NjkUyXOGsP*5|0 zER;KwpiM5(Tvv^Zlk;HkcAC4!<&==sd?3qNPjBgxrM>ENrXB^#R5?#Yf$QPU%k%q8 zv3t=EUe`{pNA*LZLse$51o2waAP+m6uhSXIL=S-}cqW8^EGr`;vvwMDbY-afX;Ksd zDXsFx(Jyi?r7Yp+DAfF1Vj?AzS%dkA)6_I{cl+KySNH2z>H7xP?ND!HC{|RIoLW7f z%GIpKz8vENm5q=N4z0}<^5xYDsexvfmb#^{}^#RA^Y&?sFb9n&HX_jsx=J_jUV1uBO^}NJDad3QP9``(y7L9 zU2ID&-Ke;eWi5%{V`FdE)U520h*%W8K9Bj5)mf;?co~K=v8g=L^!W90$}P{WTRk>C zELq`A&M#!7t7G@2CA~@uRpVeL_!8S2Z)w!$MBHO#(fAD8rgkfh?mTlf4XJm0SI-JQ z!=@%7;?rgOIcaGuE~=I;r3tmC`AhP%e_m@F8FiF*uanHwb{gpEDW}-Xoy*AGu4sPe2KiHc0kIY7Y(c)4S4Wr2(zI3ZkQN~}?%ro*`Y1Z294S7RQ$Ev;T zH!(C_Vl`BKKfUIRo@37c1|eP#)O3L)p+@8se1=1u4ya2>v(;r$cz3HdHnLnD3$%G1 zL(Sta{m17Tti9)Ks*iB8gU${6-D}x>ej<1CA}B&2wRZa|*^+Fra!N{X%~>68FQcEb z7+2e!WWd~+T;$@)<+bO(Ib{8)>`aS!PQpJ|lO6!dpIv|O5$fIU{+3MN1U@Pk#3{?1 z@VR#VhIU8hzQD!Y**dDz5n7(R{V89t&;lFDX2AB=3pL zW;~Z6nu`%$mB{CQ!N%Ry;6`yZmbh4=Ua^~(opQN$DwSiwHD+ZpT2bnRR7MlDN%-m@ z4ToA@{$i*>SYHxOItM?!yXhS2a+z6Cb3WdpQ$<}Z8z~zBgtR>W`n093`|XeCSw~|Z zG&R4p2}t?H#MIW-0|=39w7JNV2p8Z|&|wr*fI}+zwHv%@8$19rK3Cem;L;a>g@vir z;1tTFeMeG{QW79W^^#IL;frR8T{3+By0SpO>r<9iZb8qf*>C|`zOJfjM}R3F+#|pO z9OdIryOYy+2KF)x42Nf(;_jb@7;j-+iYLT@f;fr!`8N+wv9av& zVA#?&)?e1aC_^HlNT{i)pQy+D0m z9PfwPvof2ru8Z|Z z`{78f6FHCP_e0yI>lHG&Mmftq=k}X(QD^>ITJEUL zgyW3Lb$zq0=&3Ue*0ao?Xke8RDfPNxxORESPc9T(?oS5Y_xofprTVP|8lcy)xV`&T z7zwVZXdV7*a)!!#fts#7{(B^r4r+D7T#b(e8_RP<0+RnAIACYz=JsDYQZQ`nY^Jg1 zM&|R#izZ+o%POfC_WLq5^;_k09_shE`fEJ7xVD(B@{~&!^rx`p{LnE)USgOPgk%*>NZO+L?vDqHt;JCv4&GW z<9D@5vi~41-rCltm>mWYHZuB03cj+nTADxYSX@S%?G(D+PvY$Co?7;~xI`p`ETdPw z3>JDCiB6ZblB*-Lfxb6Yk%);m8k4;g%LIQzRnUG^T5o^LyiILRCwYyn)D@ZAarKsx zQZY7_mekZGc0Lgs=2pj-|26-evYw2zpL9I8PfqgwTpfRrBVlGd4@Y4KVfq3?$8?;M zY-X3?hYza0n6OJ67B;q0M&oW9om*rXh@xU5pR=H{or?7=n+Wy}BowOkJSq07{<<$e zm(64pMlCywT{kOG2dV1=$3{=D;b{EnF!#Z@8C~$A$5-dXfgVlGL`X3E3%rS^yYzPi z`?i^ZiU^DfLqC&(1rR3M>g?{`x&nA|IPI$5<3kCrC{A;eLP1uxo|LJ>2$Z$6`Cboc zHEs3PK)XI;NX%)ezeabr+8;BN3(}nC_&Yp4Fa%lMK-4c*p$=fp%C*-M6h(v#%SAJJ zJ-r_%N@EmK&k5Ni_X`+dKbjk3qS`X)WX065ZK!hs{4?=dD2|q0rcX@U$I5N-es#s6oSFAqC2S(3Vc~zK)UP7- z^n84=_uAUg8Z8$=fK;}w^g^gC-^joCItl*{;a%km^D@E4-2tITse4OnpRm8ttV8U_ zD}L7}6;}F6ETSwiL@uho-~Plv!t3_=G}eB@C-Px5!u|7M0E=+p2}pv{UkCD6fdwfk zA+cAt@AHvb^HBjyf?^kNaO{v3ccMLxY{EA4;R3Nqu}$5)KXv5 z?;44lyT+|D(t%_#`7u&}7gP2W5&cJ+A?ib1Hn!`VPET*X9OM1T>f$PI3T3uQjj&AF z`k&!)ZtiuAi2|GZ>mr+`S39E2?O*#}%vHLgDR+C{rlo<|u~+v@;t=4d?i`UvNxD_? zwq}adjN_Qe+hsK?tk}^N$1l`m`@_V2AhACxUt3xZ1!h1swfJ~k4g^#p+FN}KUcp_j zr|NmeX<$5Kc`~ijiSEePmsivlUed)C#5KhjU85-H7AkdppgfY)qI?~`=#gGVii_J+ z6A&Q7DYS>PM?dAOR0JcYt^cKSD8|D074y}>?b)(0Woj6+*%y9iyF%0cM|L(X?bj?+ z4WTiRtBs?xD^~ZReb4QcYQXOWI?c|FMY94lbpZ7{`B_Re2i%$K~C??&LLO_$B zg_4N_uxNVehs|K{_46-#m4dCTl!C=&3YWIL*jV*9YOn=G*sfSW!c>WjxUQVKVNQwS ztF;w6wW-KEzAC6sZnrm1iT~MuBPHXqGFp5r ztll{(ev#&yQ^M8mr1_i=of!;MYu!;v8L%Rkt*VVK-L1~f`3t{6++3yVsWczQ?1F8j z>B*rk^+RqHa`LWvz!RGAK3hMgp-?| z0TcV+Rm@*jdeNOSDf^X2sY(3sk^FkQ)>_N?iH!ipGw#-f!$nQ5Yso-16LC?|64RUr zu9~BD4zsaT;(8hGW?|9-@1^VJe92$34EpAt4{eShZt~-JDfv7-^wA>{zAE?qvvN=s z+wDwE=T)^vF)acV9PUiBm2?YRsh=JvWHX+u5E&=SXchKEG#$0h7{U*bi%{0H&>aP} zH>y+41)M5Xq#F^+jT51jtj@su;e?!)+ zw~M?QzQD$KPCDUyerCV;OqHO86GaEwdgFXwlz8h14>QI*AhC%UbVvAMe=M&?HR zn>^w#0{19;)%#;BcLqIqK($)x=Cpb=Nha!7ZZTbLaoZNvmy|9)UgoT^b$>O=B74_n zxI?Fei(3FDpT^P(acv^)Zz(8<=ip(&Yjv%rMwG*pf$~Lt*wyVaiF~?U0*)4%uqPkC zhXt06Gp4q|HeUY@3MwsO9L+Y}2dDKgLRHrHR<*y{SE%8p3@dj$Pby*pC@YRUjSPF^ zYr`v)?;ay%FUjm*Rpjv$7^~;3M$%|_j8qwu&de!}!B%btmk}v6*qcD{W4_x3cxufW zEA`Iur52ohTyt)A%h|i7$*?zXzM~UXD%t!S5bS`gL?3E>6fv6Zw5Xe+l_bER!Rb2D z;mek=r9he^qE%~iH??XTe?c}ufo6bC%2(|YFcn{=PYz1q%Uqf5$beTYt<@=6@vmNO z+)oZSmv|juZrH_0;hkmvxk;m{^f+A_T+W=1D*PajlG5nm!JpCEbMbz@-d)DKfwFg6 z-qFl#=X<@zWSZKSFQWb9w`aR?EhW^eeKA}fJ1uJ1uP%-@r#Tok*z@G;D6tu`K1hVw z?Tz`&?ReW#sh4d9-zA;iUpjoEkKu8-VV!1P1!cn@Ujn(SI*(pG*_oWNpKMZBV0c+U zm7jC%0Z1Zj! z4>Z)XwU{s;n)6S&dm|Z|cxSj3=IRLtyVJFmjClP?CPQ`h<0Q9Shs8p-X{~aap_PY| z1hLWBDWtmdp!Yi8;fWT$3(VgJiDpBoyIji9IH_WPrpmT%(*2^~lC+TDmlV59Z8-H!1m zUyz^QF;7LF{yvAM$+_?IZ<{dl?um%v%*z3-4C1cm?%P*>O)Lpri^rv@Y1{3A=}L0q z#_;dt8s)n!XM?A?czg5p*;fA*1CZgt&KAvI!6JiE_BlU`3$KU3c>f3*QiDG?>(O+*(m`)qA(8k?B3x&`2#rMqZKO8V8|E500RD*2$Om|7U*7@M4) z_o}y4@KM^YUsn2*DJAK}#S%&*c$?GdYR&5S7DQ7OW%%S|O>c9C2?z*~&+SIVu#v)0@)VG)n$D{kCfM*ZRVjT6usil z;*n8JPJW4FcKLJ?v3TN3YWR#}`~|{`{fu|AT#_W3cKpIp8X8M}w>z^74~gpabJ{<& z-^t>8PP&mhd!+FBpR+?&7!pDzc}tdf1y5NWg8s8}kI7Wr(DD^16^{toGfI)4+W4jV8GghP^Xit#?@Ag@K@_|^ z>85eF^HqQCANHQ%FVhMq1=_w9#?`;_0f0U5%4GQx2`~7!eg5`^tMh`1QK#+f$ z^*=`|Xj=ycVE-y753b$sZel#+rT?-u9P1h99(?ZvIP#+lCRcv#R*9x+yO<4kh9=sHXo`FF|TDm|R-Y10N zgZdyz6=cs+NzRIjw~zy5B^ZU1-XRiX?=ci`Lh2ZMb`R<|tw{l zxq^}HITVa2@TOh^Vd%{MVQuBvaAyDBTs_t7eOmxwrN!*pUHE)G{v&2I938L^-{7rH z-u{UK&^Lp&Ex&ZZ_+X)g(7OldZE%<@40LrHuXbjtbHN~~qM~Bvei}?kXb`qHH}PM+ z3a5emye3agO$DPrQ%mi>fq`Hx*faLara|< z5vwsO*^1uR0-dKmj4S{AD{Y3>f}u+Yxj5LruF=uc-DyV#b=LjqN;xyL8L%8Ma>6Ag z)h^a+P2{URR>^g7btUC>+8Cw73sxOL zC{?CbTkxuvCmZWAY%HnDdWe`yDkMPh91&oy@0?B?n~-zeh3=jrJ= zUO2z7w`WKr*uwk#+k07co3~)!<&gHZIq*Iv_3o z{#_`7Hp1r_ems>N$yTAxa!1*h_CBDBgP=t4+1uMkF=#Yhf%1NkV2CG`VRPp*TrO$u z<}EWv2ax5A=T8gfS|6=s%O&v-j-`<~fOD_Us5Cc*@%;IGmG$uTxdq5v1_lOT{HQbj zos`q+0Ia+DCwfXbY;~cdREs zFY+L`VJuj~0m7MCV)ZJkMG($0vAFuT#y=Su3kliHbiOJb07Xf6RH4o-jSDfi9jB$% zEqI}~w>OhU#S&2IVA4tWzv6MY$&^bZ=5a_Kq~4W|=Zst z^~;y3`FQyFqQp{Bj7-Wo;ebG3FapvPAmaPQ-ZWEvY#awf2tIR7;O_GB33Pup0$(3L z{$oFqqwIgiZ$A+7M;1!W&+D*1XA5+O=H|O#yM`ZCL*YhfHyOSE99$OF^FYxnt%`ib^K$udgAB@AZibG)F?w^s-*_R=IB$Dmq)A1Evw=# z;^FMKH#e*1M9y^b^)+cVHCG^fj8=g1>f#O{FPK=vFmkd%zT5}$G=Lx-R-OYhl+v%{ zh=GU`pUs3-StdU}ABIP3YYNGO4ajC9(tgSlWCEIn4~@~t#mA4A-lG(W4KixgeGrPm zBoC;zoPWe^gUfgmRh}ctc7{Xu$r=@4QY14Kg&{ZQ1-HN#3VWvkWC6!L-c^kXwk!ha z%r{w10RHLRZ|mU3ERSz6{tFoKB$3=WaAqzLK9?Gx^Jf)NZA8b!DDba{dz|kP-%6=P z-NByqAcJPlW+}rry!tXskE;7i{Dr|F7?cC$sX_@XDl#(irsUbP6B0Mn6V+bbfnu zyXk|aS>>uZ*Vaj&Q&}45cKK`rU6C&mOWa+y4_TKfAwJ%tjt#=cSMRw0RiH;=ZH!Sq zSrCXjXnKL@a_Aap7jiFdJr*-lyWVXloAu1$A?cvrl%Zd;!?J5?LGEI_E~=D{iK$nD zKum`-*l=o$tLd}oA}4#PXKC349l#V71nGr82yP-ChYxG7{S@6eYWp4f;;Wlpsum=x ze!TCCeh=a77#|OUJccnf@IXCq>4)p<>o=hwVv|W1I~ErgDJdy|BtxVbXlTr*D-yaw zPas*r)^Ly8thXKdZ!NX>kVH0j<)12Db*Vz3P}y)B{kMilgjA&yrEaefJ>5b=LgFuQ zO&>lmaZ@UXcg@KOYYaJD9#>~`|e5XH3%UM=d$t6#saqV!K3gjQn8oSA<^4x4pDNjr+tcyYL4;Ku` z>U@TnMoEm<0CESB@EPo~;4skEkj2jS(F!%Tb>gD3cN7ZTtpojcxJP!)bcHz~?N(bm zl#tED?k7ay6$Tm_)>+EOy!`xLeJose(5+1xQ0eNXmh~4%^%JaurJH%>qJi6iV3P<` zCxh@Le&@CO#mUlj%Xz=9bdWilo5{iOQVl92(_8Dfe|dQ+)$`rE8B9H&MF9viQVSQp z)PE@W%Qfjg#2jypnkv}?&BfMO{&w&iPcDTBIVG<2qcxxBdpFSq1(uw!>RM>>>+xI_ zxmX5Ka=fVVJb`@Vh?dR#L+h)nQ$ljF-zSHM%0<@L@+yXeZ)3ZEg%Z9sRlTeMsd2R{ zA`P=RRK-FA=pdba78Z2QLMtkmSGCU~CzZ!A-(m!XQiz_v11Twvba9M9!7*ErLcj0$ zz5)NyiqPM>=Jh(j=QB_*MA55B!W44)6ebT=yH$1;IY54Ky1Qvjmw-%_8Oyvp1d?1K zp++EW4v$70^+Lm8_P9Ek1otV+qFd!G9po_}f5D8P0I=B=$sj_r3Q~`L*F-r`!f+Cd z(gMM#&ECvqfhLcsi3u^EOSnrUlV!gzAqub=^#PpU8p%EewGJMWmX%~_adAD6^87?6 zq*KZ|0J0UJxI6Hq#(}Uowf&9>AmqqUJOHbv`2buB9L%)Tmdo<$K+^TNo_N!TVS3`% zRxl`NrDSE-G~%x!&_mhm?v|EXr9gf)8cgL%s0gm&RZR>e<{8TVZai!tKg&r&N z3{hyy&|jf~_cwg-exK97MQl8a$>uIwO@bz491db&*g zNus|3Xz}9M&H0@UUi1ba=`>Sg*{p6|1NB&)a~M|T1gk^dihZ?%Lq#|( z&~CL)k!H|y8}^wwaBTzmy}P@+HrxS5y7f?UbZN30BJIa&hk*^fxV)SNJ`a!IzkhG= zC30GaM&Q#_fPogMHv@lgP&FJmU!7!^RiLuV0_|o3hLr>3>-rCfh@K#KLP(|?+)dJ|pM9O85a1 zQ2I$vsXj;x{3e(Ii4R=vA12giC+m0EIig(s%7pEd8B_)*#KWPKy z-yUcifPKeUSC`TD6R048NJJ8-8CH-xAFBssWl^gi_srEuLk1(G=CDzVP?)>pKU^Io z^8;uEVnZd~e)w0GJB*AB1EQ6$|7Nkt9XVv3j&MX246Q1w!-d9MBEiVl2=G9{J(o7na{tPf1_uimwyMn%j3Nu z`TO$M8i4zD&6_LI(9oFf?>8K*Gd{8Tv!I|%Wb*O1?Qz>GaD_;r432i+GZ=lHshyYC z?FVDqM9vy$XIC$gp?d9R~1U!N)rBZ zldwpZ;qaPyY=x2dw%F`b-=~IhB!HVnwFerQ3>%zwDLmOE9`|sqp|`BMD^b7jA!62G zeFxB^i^H(+aBR@75FrQ_c%oV{>YAzqQuHjfGE9^v+`75{@I>773HVdviFhmE>LM?0 zXNP?%EhD9W`{m0QPT7E~0n)ntFGF(juLbTG)2NJ%jTL-qVvSg@sQCB-0>ok>vG_jm zC)Oa|xLrt$w6NG&<&D;8;;C2u5xfsxc%8t@4U{)DrrHX;Sc8k>d7{&RZzqbQxlJo* z10n%I2P>Rq=FN@4FF>xl#7tw_{TSh*8FeD|ebK*j zm>!6U=@NaqTTno_?44hSfu(f-Zo$^q<}6}pX!v}0N_dtne#=@-IayGstA9s){&kX- z{3>lAu>IJ^q!bi1GFI|K*IsSgZe0jnjdxT9Td@*kn)Z7<&;b9WXJ*<$bK%aj2ng7M zz|dG!%#aI%t*);xUv~0wam8pNB?Jfm(NDB~69%L-MSJL`QAhSu2^!<4q`W4776$S9 z6O=qGy#29ZP-B@3fiPd+r%K#oBO|OGQAwvMA7^UZ@iM3SfJo+ny-}L(i77?Jr8ctA z^#ExgI{FnFn!ojOTXbApX$nZ<+<$vU*TGa#kS3?AZK<}n?6=A`Ha7ITBR99#VNsxy zgF7FORat)l$5-YyTMq7l2z;gQjRpjL^_@Y}%x$*<>gy5B9Hs1+jtW7o=?Gi-VW>8Y#kUpaeFatD6MsbI_QiI|0ij^eNb2#LOCW z&cj)FSZ2SW;}-W=R5zZryCRz+~|fOrsT60ftL-d7+Pc6W0F{d6NT(7tO` zn28!0QR~a{)z<;`gv)N@-Rb^RIh{G!Tm_~@Y!nDU>W#$!?2TwYJ-|QO<)3A^k~wpM zdfgDae%6*0mu;8RpvdpC@?(IexmDHriM-stzA+7`Q%xmLB0|(SL^l9B9(sbo$9SO@ zv-4G*bnn5;W*X4Hn9Ucv!e~c<_p^r~FKc}>EYw`eV!qC0@hAW&6*<9njDD&rdMX7^ zHyO>r{>H~A07^Cm=Sa-#%JXv+Mr;O?tF>MY+Wx7@NelwkV6iy9Yf{t#7DL(0lek62 znb}z&vQ)dGP|i`}az5e|P?D1if@!n=dTgbm^8#rBFf!Ju;!;llozmXgs_3Zd#EAm9 zRFH_AcCHNX3}(~QTY!a@OjMdUXS@cw{&S{tg0K3%!)4>@KU{!uqwomWI&zJ=W2 zB6)8JQr+P3X7K*7x%PydkCKl5IFNKwT%d{n`rHggiWK&l*YSr3Y7Dlll#Ktc3+F=? z3av#Wi~Y~~1+-vw@@mm{=0oY$pgH%t%~tC69o_^bCD$R}9}sMSY?1y6vTU*-IG2AF zDZml}W7{0fRoNVZot&Nm&H(fet&b2^h>V_~-31p7ywJURP_M2kXu+5Z5K z;U4wCbtEnQ44n^{*L8Fje&Y{6d-e>d>?5P2JLFyw--3A$U_NAwC+Fvr>eKgLl8XV$ zfJh^^+tphW;!@x*0FKso?Ccr5M5LrlL_$^cT`MnNz9d5UqmBIcxeBjQlBWs_3+Dm4 z7HZalihNTdEQ5&CDwy_3 za=@#C+mgU#8@a~rdKRCYyl}L-i<2kV84BB&2NnVVFuS0B23NQk5vpTt0dauvIRfZ` zfv{lt<8PODfTsX~;MwIK-d9-6<^VolX>+#B_!zJ#XgIWGPKUy@XpqjR)SZD8PcCau zWpK``Tu!&zgHlb*OATazuNByO0iNOe!c^7NWa8LGwFUM;v1)8F0=ht`wDbo&_1xUt zTSxbXLf;hKI{@&Ynzfh%a=kNR;AqLHVHJpNDapc>x!>9{m?6SL_>+__2Iu&zm+9dD z{{3#o5(@_>KP^oBvd{|TfY{hr>`;9SFqG9WF(IJPmE{5?t9FB1C-92{PGLzOIIFuf zs0I7is+5%#z@3HROgYWZpE)Cn?KVrm@1k9M{rnk8r^3#_0Ho&~-yb91g2_pMv`jB& zM<+PFzJRv@_~pwzGBWZO8J3wT6_gYo4+49Ae;*2{USMc-zrA8>=At8~prBx6+}j@C z0GZihrYhtP_@A1ZY=93K5ck7lW04#f^)#`Up%nhW#YJOD#K4gM?VI2xx^P!i<#SZj zP!3&r`J#-BmDxw=gzQeYSLJmQb@lE?YrS-{4<3GS=p**_cXoII+Y2~$UgwoDuCUNh z5a`t|rvx#!I-rAf1);S!u9PL8Nal!Z5FHsC8y${KNGO$Z+v2+n(COxEmoUm1bOk2| z7u2&*us5JJUb#yKodBQ`Ra2?zdz(a2ZJ|Er`?IJxv~LH8r>CbIQ)r`^@=zPsNoXnf} z2%(tafq{XUnN;&>hwyk%M*uMDpb0QZ!8Qfia4?Ci`;L!e#e z&}Q+DUZnYkd7kooJo%V@$n>LYz%>%!EW;8r0|OZ!hQ`6$uMs?{r4_YqFAl$exT`i3 z)gA-=zYQ?9k&`b!6DN7E*8->rYF^tIq05_jD4u-c2pAQSfJ8|c0|8hZ6qW`?eK85? zph#rCh8QcQ_DMHhgVBkrt1BZ5s1JbUr4-ort)U#;!NBrzbJjZztff|yLNa4dfgldd zu;@h)e(qD}&4Gy{o|FVLI0z}vr1h1Z$+L2EAqioUztk{z`}+C-O_Ppz1GsYiK!6fR zvVowk>E5x_O!cah*cx|?oV*9iX^INhaon4UC_n!QA?CD_pR2i5&eEy@epUcwv;v)A zCiV3U4!!69J2DS;fAMXR3b1tmKeSJHDy>ZC|W%11D{aC#_O2ai+IrOdtKueC550WNev5_;)bPqEan4VN>>u zAmSn;(*v7{$=BT6jK}!-52!;C5WbQEKL`^AMa+Gt)e2xiI_e@X#+7r|RAG`hn|Hmf zRXZT9v=)H?W;Z1xdVDG>8S?Dfr<9csxU}5ZCS<=u(SygDdc};m=9ZmR2)^ zu~`#<9F`I8dq|#2{wuiYYCP3CA(;pjvbiJKniwZV9;n)-9IlJZDhkK9P zs|fbAFvzYi78P(rbrU%cBsWS$(l0WH#>cyXJ(hiHr|xC>Sp5-q#5mj z10ho{%~b`%vl5-}JL2ObSz4N@{on&(mz}w7jYyzsV#1b=4rg^48H)qHEqtBdzDwEgk;x!{^vju-5HHKR8XJOPh%043NE`S3qU0-{EoMGKAjjZ&1(;D0qj_q>1MluZLIc__=wnpucj=`Qeo0l2f;HYCpoZb|jW=oNZ_#D`7k6(NRb}6OjbdP+f|3dn292PkpnxddjkGA; zjpSA-0g>+R?#_*Lcc*l-1-5j&i~D|__y3Ob@r-dkoY&zelpWXgyH?CK=Ufs;u6ziy z10H6h%+5j`vBeNB7(z-S$Ry*qp6w=n1e6ZMhP*B(;We)<<{AN9P8I^ZG+^c3SGPob zYVv14&zAa9@%F4OEdx1s{t;VeD(LVgu~AUG33qXau5hT}6ZLAy)1NnTuku_$^ZsM_2|m-EApx^Ev8gAnybfDObPdEAVN6?&KBX4B0Q$(_RQ4peyE8 zShw_z9@{=D2XMoHDaz^TcC;*p^hI|MTy~)!_i0aFogvDMMz-Mf7rUauV#et;r(M7X z3OzF0=oRF+x3PFUaC0j~EG!=h(*0L+TIZ~f2 z!chp=U1pNTfZDnNcnAij!^4zn>NA76>QD^CM5o_37faj@2J}+~1D^E1=`u-&DHG%4 zosn!smGTeX)I)Wx@5Nde7l(xQ6=D=bE8C4xfG;Fg1M)O#Ea4F*Mx$5vnO?)aO2BH& zQeuKg!(q8VFPrbjp-BbzKR{hdCYm#mh+VZqgk>KLyNPsj75kKA29Zf zntwcag0fX?Z+5bS+GBz3jzp7S6VZ_@7Aen1x9S9Wp2ez+FAqV(&i%8tmgn@+-93Ze zcs>tbd7HJT%8DToGOL@n2EwWz-oG19^(BXr0oCnrGQF_0D({%+oV>C#t##${ysf?YiCkcf`$ z3}ytO&EP<}CH2X|xVSJ5C_y`?w7>dQ`fgfa6(LkK(bXUH;=8wqF0BX0^>aA^S3P76W1~eE3ZSJ^qT}=jdohX!;9O%(jE0&DI+8^U`P-NC z*9uD+X^VKB50_lVK%1#xhCUa4(t{Pfgnv0Z12X%`CZh|^p6G<7<0 z;I~v+UM_uAq40%?k^X9dQGNhl)8(H%IVgY_Q z)Ldn+Tz=Q_LH(7?108A-FtkRtgI+ryWjpT24hFeUNyR31c2USDCKIn#+N`e+S*2zi zObTmW;j-I$>jRvWJ|N4m7{><)zWn@08q&8xAlL)&LYDjM=XWlsHwJGlaT>*HAZYRP zyyHFrfq>c9B`H_^w@2z-JjUNE6u0sV?t!ul;MoxGI2g@>P(R7P%`3OgJMAeDlMdjc6dMj% z9_|o06@}qXt(H;NxL>)xS7tCk#k_OOHl+NXi<+zBA<#Jb;1)vJ^oo%&7mgn8698~! zeZ#n;{nYWBK`z`8^Xu0yUES;_--o{%)?df|?h-LDqmNZLl<8%Po7xC2%^GlCSDg zjZSs!?Jd57C;i`c=JM-jIedU*$y5V1K zG{Pv!2?Vc1%Yx3s;Ag6P&<$rFw};T99W{>#$eS_yHCD^mj$`qB z?;?^&d7Oj~0yXgr?03HBuKN1&P#)?&c9f zo-IJeQz_Q}b$Z#prHGa5HI3Qv!RKA)m0m6=JPFAzNd!f|w5V@xrYa)%0*yyxlqwA; zGig7Js}Kb3mcet_4@dRPVDyT}`qP&JHw-GzgXK6*$my%oH4~5}z;R^7ZhpLEeU*P9 zf+dZu2{8t<^W=qh^9Fn{guKUow?wPK1C#?`-{|gQ*JsvUR~HX)MKN!S#thp!(W)=8 zNxm%ll^r(qQPIlA@880h3Ty8yOd;1B7XzUMpz0OiXuR|Ip8LlEW_3dXswIX3Q}q#g zwyU=ZlrHM}7vWsQ9Hxz)st$Hm%iT#I5cADl07^kW*X8BYGl?*xN|YcXBa=k@q)qC_ z4GMJ9@5)H*u1`xzp)`rR;JIj2Cky$-vhK77JaIs;FuvXu3o)#XYR@E~cj2|Ga5)uJ zx$CSK|K(XVt4ivhKhI}%`fvy- z0l@8vU32sEV)RQZD+lySB$pPXL2Eb(6`3;q_vnM%kwgI>+0LMSXS?y@jBJA$O@2i6 z;+;7rl~Cy9fR;7m62d%M55TqRI@ApQf=3$?mx%3BoIUC%b0wgQoCyljaOw4n_ zwcdm$%N7umxn5eYNHemWo!VWxj=>pPRdwB+ zTr22-Q>0G9_qmAJSjMV{96TE6csCea51_QV$d^k(#F5b}BS}g8yRE^IG=iawr*WzD zp^PCDbV6^w(0q)6L5RyiEQF6wVLP(30dzHSV7_rm>t6U1+8o)wa+~#1=wE170JEYp z64T4hX2{b-3X;mxrD=wvUzrbOqRNgvJcX`ayCy4Y+#7%CRA<3OEg>{;Cl1diTMuAb zeQjWg0?oB6?wqN~X3fBq@hJ06+Qp+IS+ajYH&ZS|!)P9y6BnqF=CjeA^a&puX->Ib z$}dhBhI-zXeTzAIYszS@@n(Ne?~KGa!^Zem z$aSq%9=9ln-eGh@fG$dlyDgN&G)J$PJzDGhYTsz(^{{Q!9ONCqWQLostHI zjs@==7NvD!F!Y784SB=irhkEb`fJ|D1}s^^V%val!KhjLcw6G_=+zrlI>PnTQc|n2 z0J^1#GNoOG*-8ILcy<#RHg}Hxf*lCU#70rN!1`QM$b%r<`Mj&YA)r6gtbMCtzq>JJ zY^0J@o?QlWSozc+q=-)Fe;vSHu>Mcmg-;A1IOUr2v$K4f4#4MCEcloL4|p5>Egz^Fes!VxE)K;`Vgtxr`aR>SAMrKo-Xc9$ zXY6;Eu;QMiCp|H|GYhO_NUJGc zTYW!eFoS_apTqjF$wvJHZ`<`@FS08Ij{9U-#R^%985%WQ^yz{^i1P-%PqMFdk+(BK z&t_d;#T>`78ax(IJaX^3Su5Ea@h$WtOy6Q(dtaWU)l%d z;T*hv3gk3*z%u$Zu_OExKMv=ekEscH;TEc1Y2U!Cv;L@{d;VD9Y~bwqX+an+eO z9??z8Yck9U$ZxT-2Bq&`uGfl# zrN3XcybAhD(HUc~OB=~im7>nkk;H|f3Gf=mDB(ex`*b;C(Jz#X^%FWtS`p6cF+9$h zx?RLDl1s|tFUAL|oLBQ(dwG+kDyZ-oii(f7=Y@#>alRCqB#uZEE-ooqoo}O+IO4}a z!B}l5>lN8c^WS|*LO^FpEc?vZ=Oxx6)}Dgy=z9C+ z@e&ZksZKgNb{?J15lGgPH9MZ2*teVEQ?24CL#09)DVAJh!=l&y8NG5rA%+S%W1*jg z9}zy+=*I2%cTKs}Sh>Bf*b9q@QT*4z;Vz24L8Un{s5|*vmRNwIr?8p-2LW3?3)OJc$7$JvHi zdB$_MD|IvR@G{XWxXA`kucWqGLu;HS6-OJZUH9b-J>pMg4+&X;3ZAhlVD!}Rw^{k}PfZUCXu z0;*SkkEZb_G26H9KHz)516LU+vRH|S;-;pih#2u>PR#~|2NOM0QdSf*0E`_t*tkZs z$4~>^KwpKxIBBpX3u!#Yq zJDE2TdeZr1>29Sz{FgGxHENx_YH76B)ULcUdikkY+{_FGWwr%^d;G>u?5AipfTx1= zOQP`1f@tMZ!6I*VC@akR+i$>`U?O18(5#aM4~p=9G8Y}GZol3ox3sU2DRsJ~HByI$ z`U18@{t`+W?C{*PCZwPh*(spmFGP*0k=}_FE$9`v^s<4nQ`%PsWsg!me2}ZeQoW* z-h{-gVCY}pl*n=26G6<-I`!jF*IqX2id2X`sNiEQJ3AFvz660#7-4w0vjn;1K<{Or zK0r0nmaB#7GMxYt;i$5@3m)0Dh)mr8BXaR5_x5~WVm2rQv*Y4s(q$4Q_}SLr^yaIo zjJlF#DiW~yx0x#G_T(m6tUN24`V|WPc8tTxEE8wOia$aQJhX@7W+d?09MLP1W`?c) zznYs1Cp{HHKYqEDK#-My6b#d zA6m_nlE-psb2yjM@3N69&y-QL*u$`@TIdHB{cGzvmWC+%wUIpPALdv~*{|tbMAa}R zVFXh<^)?|t|2YIxNdsV@8jVOcZ&m?18T!(O%W8>Xl|7d>Vjzx^3s?>|MqYfy#Kp{m zv&+j&+vZAKZR!OdF*(X``pcwi0dN%w`ay1_ZKml0tpPSRc0^4jEgNOiWPP+5brJw> z)>N^_m@u17=3O}H(2RRTZTh``x;C0wDnUCvoWbeFQ`Bg|rv?vaVah?1E+miY<%1exP(7*H~M0!IJE0tU2_t414=n<`?4d#VOtpZ>NaFkVlXG&wi8|0dbeU3DfVx$m3V%;~+Lyt%mRGtf z)P+yRACHk6%#|rA1&%ZnxxNaU<%3CK|9+pg)~fOw`Zw!>^zjR&K#`?CEgTx*h@bh> z&cPC@j8>y=86o-pgrSRG6n}dO8^4QEe@rO>hRfV?Ea#7-{?-rfJZXq zWM&SgSoI!_G}IO-NTBD-2;ZzfrVe>zys0dFwA2ips@U}pM@33miqAxyaZgwM z9*ZHP(`DL6a1*|tX~<><*yHYBP^59et#NZu#5zC~QW7PeAafmZ~yw4sP3bPXD`j?uHS2`@}s&X)^iz?o0cjieeOrDbNvI>?O-4Wb^Lar zCadyLjszceesYMRDtKNhjMTXT9drvk%T+zmoKNn3F-Ve#;gZnR1uO_7?16P)6gwNT zgx1>*U>%^~?l1;C#t&z?4U`3!2xnW#(s&k9NGNkIS40PgGC8H2Lg+|DC1qhO#p8Tr zyEW;qUHZU;GR4Y!Yo$9kPt?gO??Is5neg1K|66$zIGZh>{!#S_#NT5WD$(sSq&sVU z$p7_gM=NOF06S@Ofg+dDthmWXhqsmqRwqD*wM3CAY1N*gTohW36$O8+d&LzGAFbQx7uxV5OoUifwMzxcG^z8(NSYL|NjWz^UvOR*c+xSl zieVR?lTUxHpJv-yQ{URX=IrF16v3z)RNKh zojO@CiV7X$<>WjBAh-XtNAo54t4H!ntwugyq}NIk+9)OW3d}~!M;~1Kz!(L_zI2q7 zIwQGL{jS#Mh)yCDu&0#@E{ zV%L$Jk-=uruib?6;e<53TvYFcwnos&!S<7gApLZs`-C)i@7-hEctD)Fp&T+eD6f)^ z?lQ1eeEaU*yCvs4AlM>~Ja~68|H`~P<0!B4xqO3Z*uf!!ey-1M3ySp%m4m}wXCloq zQ)iHTrCf(cAmp0Jep=!dl+!HLfu&H7_vdi2;E=V}PKOvm=h8jTjC=PkMV|&^NL7kz zTcGV;_K(tUw2n@DC)tccKU$#i0>mr%gQ@7WS+iv(0i`?(lNBYLdBcyae zQCQgd>ed1``-R^ng;G6bFI|pSgCO&bKgYgH+B0a@sx47C7{SM!JG(I+1tA@Ziu9yUC4f8tye7Mpf{IS>K0G&&<4+9j zpeg?qg%^hr=%2A9xTuas zzYheB@@1x^5&P6~{T-p#B3OVjJptBJ3WE6S+2FM(ZJ*USJ`oF}cZ4SWeI;^`A zX5+MK<>G90wH;da7m}a29ho;d6MqeD=SxSs*OD3cFE&zHnM@_(^of;DpV{Kzv z_vI2$yoLsYW5mILd?ZPz2eRjDmy_0>o}S*`{I~8{kdu`ru?7JZ!N1LIzmr^Kbp`WD za`IDN`yKv7YWMe0qg{9#hl8J~=gu|z&!1bJDzklkFT^1G8)FhW;zUGY3k%w%c3eQ^ zgunJSyqMduLWfXWZ${$=2FZcLX;4WTA)r(%Kx+`*Pm?2qf=Fh`zEyMwjSe0|!15ND zZ4t&s#hYT)L5{-x)Ne|_bNAR!8R-&(ZYUF8?vCMgJ}S3d6xHehyL48Qae0RYcz;XL zSJo>ZpsLcwCgydihB;A;gs`Y+veW>0c}8-WbzjV$({b5i&V^jL{5OGBNw;gC4B#@D z>70m3v`0P|`lXKxMDnwK345zhm-^?_rX=>W^#aU#VtkORD*I0%KUTV&USo`s)_Ff2 z(jX46adLVE|Mg$_X@~yfz_A^cJUf)e&enJi@Xp|PRQ!+@4zgqX5*8Ww(LkpyEE2{; zE@vm0TO%*I6zB0$!C}E8Pr1m$8X?uwvlF{bvwI`JOY-XL&lL0MU+_eD+`;4S^y<$1 zY;WHYJ>0c<3i4r~(TcaQ=fFIlUYjruVoOJG!926&Y&~W~8r=_HU+te#j@2q`LQV6a zC6DVqYmJT`_UaeT4ct?*pAE?8;CJ;6Ov$i4}|A)bac@uxPov zy}I}4TnE0v&NW~qM|4mX>n*B}8R;o4L09?cQ3A}mAlL`nt^O@FQLQ)+0%*6j%4NE- zF&V<9eBkDEO;smaY-J$fH*IadzOv)q*5bu8{)X`ChXcPaU%p&WM3KK|5a%Hr`VH5{ zLZ%^A&g3{((^V!}!qHq+G%`MhReKh2CXrvlosrLFB!;e~*XzOvsDJ3m!0Sp8n*vuAs?^s1J z>(o?N2R}Gmk*Sd20yqC_*RHjbTo8clUDJ)bY57G`A)fCPCNjU~<_6_6Wo!?cBb-BO zD=1|+Te(9A4}kzFr=!lJD{}b8ljZmJ5haj6VqV$l+S1Ye1!XDqtvDerqJb=>p4(9- zpVEuT9!7@RX#?j|t7;)%`-`HcQNCE7N)5sP;K3#+K+3r>QeSLE1oi>!hz z0Di%7AyOW&-oQWX&VssL2Vmcl)A6ue$^3!W_ZxZA3H4rhEi6%Uva*5D0?Q={{yi6C zk$f;-WtUfNWDUcy@eDaV#;6OiHtf@h;PU!CJ1dhSs$*}We<}jVdLo8Ym2BHKGz$ta z3}Tr1VGhqf3?_8TUvlXIOelnXai?{F?u#4o?6&OXF2W$>a_R5#>|Vw!NL2T$8B1<=B>^MmIu?LBAgNJvGSY@3Ymj2N!B*?FE2MP z?^pP2P*(kb&Xfwao;=vOMr#@z6=28E)FQ^C9BHWz1bCP_k>lexLOckZTiUA?3+o1| zYwI9wh}jHovLoF~t$>Ve7=!4Wn84B}L;E;vNhkCENMK>`SFk>Q{MO-W1T~-bUh=2@ z>FG1LG0c7sx%AHu^-5je4MEA(e)5C9HW>z*7!;mw>3jc#!McgWJQO=SJN|igwy3_5 z5y;RWq9BgYKv4n0(g?aKrehWg04S>Tbaa%<&9y$wzYTuJ%F6o9_1!mDSK#2u{5s4t zM6H=6Wo1oN+xrAk=5%#>gQbCNrw{Brx_uk=NF)q!P0siRnu7+6rZbF2i-4S5N_qc+ zt47Y-y+Lrd9Tsin6%| zeu&>Q+jr|+i0QPdgjQ*gKTbmfiCSDEeEjfNfoy?_f{$DabzEza(o}{kxw4A1{zd|e z8Qb7c^KJ9s`wQggzvDGM0ev^s1lJVHUgqa=+wk+dWc7Y#32UgBA~ubW^W^f7s50NG z6iQ7sksWbp*%=0E4OO}}!A7)X<` zk&#P-E@7I#l`bAxOCsRnQRKyzRz|KIJ7}nzFlOD}IScoSos7^oFvzzUY}%%P?;A-_ zL@Y;0fToddnl3iVDhxA2tnqF$)G*3Ro6Y%0dh1#4CJa*HkI$oivmHa}Cf7Vr( z_MPj_$!2h6f5sw4iq!3GBz#YeCPp^PqoB9>GD*4bRO32n*qlCoE`j7_%TWri@kJV)DL8JoON7eVL;-;b&ffm!nj2js! zC)^;p{_X2f*=UT zVCn+EjG95*B_r#;RG0UHo!!|2e}!`XfboP&&XztB_~49%*2`-WJ( zNhZfLF6ozu2vgpj)M^RRD!QXQ;#y$D2{BuzeXlZ7|^>&=^;{qt)FW_oUbE)I>~GR{W!5 zM7>v-rgoTCi@S*B5U&LBOXUYdy-8cagRJNAc}BLcwKUPR(d8N>?Se*q%fD;cHb?b~ zv*p5geni`N#obg`sw!se@DOZy`XkaNqT>cB?$pFM(X;FxNh#@7$Mvs7^kv+k_kFRB zvzA%4COk_qOb&CdYZUU~kC!nRDkD=F?2=1e zYuze3yo9@9N$kIw5x?0sdySb@x!-6+_(e>`n@1mMiG@Sa0c02_sLT!yK4W7PUWpOraz5%D z${LAeH7ImCl*N|6&-k@l!J&jnGw0(A+c+|v+oH-!IB0Fx^ii92eexs4mfBmEbIdYR zYlIv)`>AeJR;HdDw$`}@O$e4$rpQ-KUHCe!nQ2R?S03vLlf-P7bCNHoLz<@W`8scdSj_@yKtUbl$AN zB=mhs6YEucd;gY+FNF62i*5v3ABjfEip=G_;5q9v-tABG`A5x*#E5AF_%bqiRHwX+Du^;nPvC-&}1}0-~sk;Kk$m0hfdtzOxt0kfBug}aAuxUkK!G%qMuoI+>XASO&rPMLn@_cdcT-{q6?UE0A_Yi+3QCoQArC|m;h~}Y`pQ}$|4kiUC zPm4w-4epF}uvtY(yWGuvN-9aFaqsIRUM7Xjfr8hkVga#TzR$kXbtc@iU=TC6l%93i z@LMWG@;fJeBSBy?xU<@RXSPn)*H7Jz87z{hZ+wYwNvg0lX!EDE?!yK7DHfJcC8`K^Q)amivRw;b@ooaC^MoN(WB8e zp|b-*KhJ3K9iHFy7Nfu32)IbaweFKQtnA~&b;ea=l^^!{kVdd(`8Za|wXE;|GNzfh z?7Q}U*DFRcGXJNnBBt_ng{Whj%sQT1@*-qx$Nj}k9HTDDv3S=9x&0uggzbE9$Qh5m_g(kBqTntTZ$;ouNI+~RDIu0tdEK3I zc%UMc(pj^(fL)iV3Y&L(C1s^_)RXCi!v}d|IQ=6PH$6{$e_8YRrkzYkV67pt`gO82 zAGgl1c5}ZfLcHJvS#t$>Q!Entg{(N7^^i#m$*!Sflz-W>l|l@LKR#dbpswQSIN~M7dv? z_4H3Zv0U?LEX0oF-xtbQJMs17Ap6|cpQa1$S^acj73L4?C33O(3HqoGtHDP zwA7elym~WgJho=7+fXz5pm5E79VI6;!oH~3Z75F4*5nw`vx!zm+Ip%-9|Rg?CL4Hv z3s#v(Exj&PGpiJ6JM4Ct=wqBg);ivzE5(_)ssGC}Xxl2UklypqLfdenG1SIMOxV`A zCPqE6g!JTX7pg7VgIuwO_DNUB{Z=OV^_6ZgKFFoI{`B zdn?jsT0qO0eKvk8WcgxdC0B2;fkK9_l8V@V@f)h6wf z=vK(#jJC}&ZtxIvmPihhf0L?dv?2cMm0jPpwn4Mkvzg2ReKYU1)TUi~F2%qA0lhes6OoiqrOK#MdW1$0#Zn zkW{n$WZ-S`hd2bed|gHBtahyLT+OzMGdd_qw&HR2{B{r2B$> zMXp<+{WAY<-$E(Rn>b~}3CYQn)A?(L@n9-+M3v%?d{`Y2<@?#qSYWK!Ds1iIW;<5m z7&p-0znoM1uIcdSvyKhTiJ#r$y z3)f2a-VDP*6GDgckXsJT66=SnLhhz=V=dN2?e z&b=%19vIn?&=G|6evd=2;o-_5CWo4bED!80%nBY~!<8$ja;J14WIl?`UU~ImX17HC zfg%;1!uFJWL;`9oo0b33<{1kTC+_ik#f{V$Bev%=kOJTKwa&*Ik@_I%BDUz5t_qvi! zok#vCsRT}ck|Lj&^fIBR>yn92iIX|a+~itg{mLAGWdWW7oY~Mm#2qyb_gk`>)CDs~C*TB&OxDcz!#bfByBg z>-;Q1N?3fdr;xehWKgE5mS(7};mN%3t(Cq<{M$pt-_y4o7WdLla@r&BFQ&|y*ZX=Ji<4sFVqyK~h{yY09-rpF% z{pwmIbU>x#7H0PCz;t&0TRLw2mUPHj<->aqw456Y|BD6mY*CdQStvZC&T6F%lKC3P zhG$}O=d2#Gr$EMso)=+F1N^@1GJSqnn#R4Z%P#%973b(>SDz!BT$+1dJoiqsJgBCZS&>A{UHp!pBXIGVfsz{UHB!mLYVKz#Qel`i9QtJ z(!2`_%PcbeFd}LaH5v-FBggbR)G0ayCph3ePa5%RB&pOGg~T1U(`x&~T5oUf6OGgx zkBU}R=xTP9n^N8Sf|O?RIF|=9@+_C{Ri8Xo{u4j%i4s{=(Kw=n7CXDYH7vg91GH}M z%~Kx!oqn=$+VVUTQR6&D*3K|EFBfo}PNXO(^PC=C6GS?Yh%b{K2oAag%#{hISVqXv9(<8=2_-u} z^dq@MGrGQ}ze8T^bTrd3V#ecUKIiB<_VWXgmvqavkE!AkW_p@^!HELBQ(o~d5vet? z!w*7^N(38SG7)2Nn8aK1tSjr|ezB)T6_%8Ud6C~yT5@L=78qlfrCwh?`1Hp@PFeq| z7-h8sQS{z?;FJ#sFXI&Yi%Y1P{mLSV$PiAuWWN$om7@!iI;b{jcmEXod|OzfiH5U? zJ>vVHz*V6+p&hc9e?3YB-_0l=Rta)!Ix}*UAFZ{O?aQ_FC2EFwpHM_1qR4&X>-+R( zgtt)n`cvGsM_kK7Vlw^uQAIz$@m@B+hj$vg*$t(RTAaIC_vAz)=}yz~ zd2;d~+pF08nDX89TOlF_)Ux4eHJuzT>*3!_t%pV8blka1%}F2bhO<0GAGK}2+81%D_#@28{8H{~&ZQbYGD$43 z%DvIEA>7;F?>|;;pQ>9=Tc85jONzJtUJN(K+0-3LcV&We2nPI*Ny;jmEm%{droNw@|p4kbX zMuwg&RnnNw{p1$*VkIP(7ir6|?qAL>FJR~s2(@zI9}=k@?z0Xf27fNySh|Z*{==aPu_R-CHJQCj~@`sP+@1ZVf{sKo=@7~oX6iECL0~R zSJFO)pNKkwN~f@WG^;Ez+zyrDC-6$9sE(impR=kcD@*kT<%6@z6|0fgFDWNo79?bR zyKDh}WyN#mHd)PDac7)77!^=!PJTfiy(M)k5s%&}X~0@C+2e$&+#YTFUOm^D$OTZ;YCG#_xD-?2{YIF^SY=gf880 z`N$4Hsy{T#l_S&$Ba36cd3@GIl~DOWM^dq(>#nchjN+z=#DPGs(x}TkqIvMyb&VS> z%W;wPzM^kPJs&RmaH4Yt0Sc2svQF@Pl0rIVrGE>1wzFm^qk?xPy(u}}DzBf2LT5Wp zz7e{kY$MEttm8V^`#fFgxnr}jWwL2TwpwE>_=J!-qw%z!?R%n4oJE>)KyS8it$-X! zC#fb_)nJKzI;#*T-Mmh!<&(NOQyCyJGQ9Xcz!!G}X(Yh$8mjad?iKf5&hKaHblW&- z%K2Mlh~>Hr37>s0WKGdjc~N`DuzR}2y&Y*Y(2ldN5R&?l$&7mk`#4cP zz}L(+YB*y0?2m>*3VAjE%{a|FT$hFZW`(*(+|Vi4+vk2XKRz<0n`6H=SA&*t}yzZ zpT65Q8_H)5i5W8>id0BTXc>EH?N+qWp5JqWwDOS_uNi0U_PlG+=hJixhE&b!?Kgc>$bJ*HUFT#E8e-+?=mBjra~Z3# z?5Le(?d?x-PanSi>wGLt_B)R)XTpMGsLE|O*%V6#`&nsGSQ(kafGRe&4}qYBXpV0s zN^ivb`qdWJRr|ULUT+)PcjBo=rB7Oy#<6E zGcNBu8{_oMVykdD>GwX)v+vj=TTi5JNPXxVyIOm^;wOQYHn(s6Mb0rK_j>E~#`{48 ziHwhz7>r>yG`4A7p+as`RgiSD!B~%PnE!ix_n+y`JvLHO9ddW93PDa1yap$GD5>2I z_`gDPLW>Y(eGu{}(m z5(=VAv3Bb)ngF+2;Z}3x!q7mbV!{0wBY&PHgu2Cmlf6v|clBc!r&efE{L{52Ln%YA zSZe)mOmES&FMi{L31ap*l4OSY~uNzOI~| zvq#PjZ1B?r3^ULiaJT?_n=O8UE#v|}jfn^l=hQP-9BNS3h^WkG~m=sbkuOdqq zfJ`OF!c?Tbk+E9uw<}+ebw71-lv{G2FbX3toK~map%sXL5)>9jBT@qPg zyU&tVe@*;#m5BkpjZH}~eu@gwl`k`*NyjLYsz&q;?c>mzx#S0NM`76qFMA zZ?2xPa#&ee)#7x0T@oQ>waihOA-|%ftE&jB55T8=u|?}4DJc-njJ35JHTv5J*1*EQ z*OG))pF)ihJcICalF{u~zFbwieCOixalQjS1Gu_@QztB3I0lc-wE@r$gP`cbM8fwu zs6~NFUi35~JRD>rb>Ixgpk7%F2Ica^Y%gADrF;_Y15O{<=W?dB16LzQqb5=|1$4M~ zLegU-0bK>hKI2S4^)q>aj^$Pflym+|A-;I{`26%so0}4@Sok!*!S$oxz}gy3qNJ2I zUXt;OmNo;J(xN}#iA6uxx*X>TmKo(vhdW?AcforMRe)hX`wFlbfb5;*fCA|@$m!aq z3sb3Tr?1d_`)5Z4#=>pTXfHG-1f*#0z=Z?lOVN59P$GdG`X0*@JSGA(Yo$}CYK(}Q z1lXx;q)WB!ntwiEf&0D$iuS>&Bq5w5JK&xLTY|xo`|8N_^o3j3;0)ZLfq|gH{a;tE z>z{$HI~g4n8Y(CzB`KNe&Ddn@Lg!!)v<+Be4&;gvOH1J7J)~4MF)@h@VV;+63rm>+ zMtqGUwF3Q-=7^G_FV@EU5Hc<_hCL>^ ze?R{|7?9A;-aba(<0kSgv<7xYbaXUmyV;zZZ@1UTQ!X{SkAXoLtMRBm-g1B7@UU?v zIN$i)e^D+^eH&1iM8_3()SOkeS@jv1CS#OLMfTs8%292B1(~Ivwq4#-r>CUNDMx!> z-~$HczuRBFM1$y{1OE>Y<2j5+-;DX;g~=KXrUOfrPI53kkNQ+>NQJ%7-5v8(%tn3> zqHdr~z9<8UJ?L=Jr~`|68dll6cW&Oi$M{p7$>bU1h5P*o@L7QK1S(iPwgreh14wy= z;kz@oVj+6$3UA+D=JfJ zT>Wrym0KUAe+CJK%-TwS$}Ivj+B|S5?CX$-nxDob`7aj0-iHKgV-f-cjv$SEMJ&o0 z@$o68Hv6-hK zg*7$fE-wSmS$_rO3AAWHCfzH6=g7a_tm6spyrrceRC#T`^VBAb-gx2=#Jy-USOAfJ zqqF%s2Ijx48H$$s?8f(-rUrxYy}!#}1zum8;UADk8r;A_8ygoo!g?AT-IzDw&^b9fb8fqLZOmzT{{jI+*!y8>sUDEtBqt}|2k9Tf`{y(? z>F|q#NRS!@I~w59VS_VWRYe5|?xW+pmzerusB8ubzggsJ)Btr`)cs<~hpd#tt3f!s zChXtL-?9(E9nWBtm{L?!M3ar_3>jFO23^B|T7mSUYQQLz`tU)~`|I#<%1h};5H!21 z)^h55@daNQd-Clj-~3~H4{sgvf9#b1$JY>k zCjXyM1$@>2gY)zm`yzhTY5p1=4Zre*_cA$0$iGJOf0WEEGn+2ek$?4zYJdB$pFTb4 zRn@^M6Y}*B9(}aM{2R(g|16+7ApkqD$z&0{e=fQU$vpssW~f zYKkRhGZzjRMzmIle?ka1U@ABFUQIK}$LfByH# zmFE~IF#x7=N&Isfpw+{q`2TKcmh|$)hon#i2VE<0Wc!^IbL-!C(=LLj|Ns0Eq?-T! zNMGM@j{O7t?w1Yx`}g(12`=HSJ#0Yo0rzdxR8^SkL&^UxyZW+WyVCm=_>!>RX?Lo^ zDowSF?BRmbf7bO70;`pu^gabq{5YyNp@FlN;NQr2;0xIYc#$pRB{AUm0#1UQ)ipKn z(uj@GZ6FU?`K$iVb*cN?bMZZZ3Xc146oAV{`9J^s|Kgnedq4jF@`C>t>>86^rck1h zPtS)MFoAdXp$L^!+zhNL+&ceN`*yK#@u||#WMN}8CjHP5 zTX2MHb%2R+M>lMe?09;;1w1BR4M<6(IW%>468Nbh`3CqJnk^8%GsWb`cZkQz4U8Cr zP#piOyYv2PGW*uJIsz&qTtGlUh$6j?p!84$2T+P29i<3D=)Hpj2%-Yg0@5K8488Xv zy@XzcP=!zu={=BePv(2?y8pw?Z^_C!S#PrU+50?i_VYnw7QVUYSU{xXgo@PNzCQ9N z?ZxFfa{1ZdYOjDude?H7|3{r7Hb0t36{D%9srl@g?R-A5Nk#%th+D1W!o!gO+iKG_ zr9E{rhEgz*87kF@cW^*Ic@j2|BCRUP`?~p@n_FdkVq$buG$W=l_9pc$Q013JQQjBX zFc{7bg{o8pEY`MmCFcHg^)sc_9%Sdoq*CEdqN|zz!PLYUrpmGD$%WwWr^@Xi@o)QI z*T8hNvsxNm*P-R@e7fWdxB%44B;mAQXC9j)B0mrH_dBYT7iK#gR}7G3P~l#wVl!;zNE(gCB>YaNL|FhC&Q zE(=FVLz&ve_z7=Y#t58X05B_-mE<+=O5@s|uT7J4{jdrmCTZr71-Fh<3A!#{>l}fR zF-QsM?GuWD%zJ)+1-JlsqRG@8Mk3&h$=Upi^T~Q|r%)j{y2#ZxIL_6I-oLMS>dkWN zwt~R4_u{oN%W{0!rnFayS zmfZDh42_6Ng*yJZIiUL7BwflkS^S=SQKL|Q?+lw2 z&!8YzbFKG47ZlArw7Y-!Yps2|d#j0xNyJIb+C+DhYTxA0yKiro0 z6+eVX_%dy_RtYetn834c+P=}_<>JCd;n8d+lgM5aT>raXmHU(&#SIn}l|U%~vqz)f zPB##($MZ2|8X|o=*CVed4W>7GVP)lm_VqVYYj6sQ0WB1H4ysXi>O3m(g z77BX)t{0hrlq_LCazsd^9?#Ub>+27GzpM+n;g+B$QEcM1JF6zG_=A`dqS^%zK^d8| zDF5}INbzdx&cV^9FOtwX$+(i>k^9Gl4^8;GEbvEeWvX2PHwTh|asaCKAP#(0v^1 z2PU1YER6ru^jNoge>Gf}7{d-3%#>1{%Y+9SHo1D|@<$(UndT+sY2NkQCvfoy*Ss-$&tPKU|p-hr#5Zap9dG(qN>x$f`>>Ix;q z-Ifo!jvw`anFEZ5MRrb``G{qwz0}0AXbgX4^kY1j9Jm8W*C|JHCR5+vPP;J*zn0w} zX$O+%e4VB}N7~8+I`0A1v9`ffmaM9^mo$T7-hC&tmhp-qb7`(v;0|GeoUPN%De}XP z-kF*bG30v@a=-+ylPP{B#|mM78raw*%h*UQEel-p*&?rBXUH4Oo^c2{@d)kMUEIbi zUr-Xxz)gGp%*w%~rR+_a!%{&V+}0+36!YIomF0P@~x#aZBBo%V>0%V zN!9LIEZcK3Irq}xaBeZ8TX}V9$Xx9G8Qa1KoSa|C0^8yKVVoR0ClWS|)J1R$p_vcXy{Nn#;UZ;N%6g86 zG#|o;G}_IWZlC;@H4WoAe%$#k9i1jb;eRse+7GD=fX~)DgL?Tm>#ZauBqUVi#f-Z< zJyVh2$jbTlX-#ufOGmdt)6Cy{YqEO+O9r0lgN4@ir_b5tfo>+JQq>j` zF}#jvy-GpZlX{x;VTZyUX=}fRGA>dD;ODagNOjPm<(79&2m9?sw1LQ1H>^Mz4L{|J z8-1AzU(!W-lo&et@diVD@36gy3Wvk~bWYVvm#Fg9o+#=~vIkO@7>kSSXT>p`D_D8D;Yb$Oi!?{2_{6ifD(^VirZ%>Q?Tudp-Nee9{0lC(mg$1E7_>nl&JZD<&SyJT zjGlS!PtEjbHNr2*BadaVr%d3t%q(y+gOcCvUj%AVN>qEQeBP$kU8)mQes zs3@%R#hE2)`b%f{IQM^E+!cwcAt^-F2khJi;Bs{tvEwmTi_`Az$NJZNHI-|aa$xqnaB@$n94 zn&DGP?vs_gI>)GGDyo>RM-&{(9l&24i^I{-5 zA=RkqW6V3gawpRUhvDHecaoW+@I4PXC&{j@gBan*z`eZf?|26x>4z-)C_A=LC06d_t=9T}%L6uh?{ z6skI~!Nb9k_A%$2<@%~1E~|p4n`YZ_tl6GO`CMvOXjqRmPZ9K86x$jHCH+lWtrIBC zKL|a;*Gf8BzXmV=4i*;4R8>)-VHe+;N!8xTp*-U;BYKpj*`BjFaBx73nNq0!hSVi$-jqV?I6`g>XkJT2)$~(!CB{M z!~_s7EZ`)dxQ^|}-z6g*9!eJNGr6FhcOhTQ7Y1;qKUV>G8vM^(32U@n ze0X**}3N-&*`g4c5j9+K8Eq?{%VnuEoZHpFT1PgF) z@gjOfKW6>k)p)^bHUMq* zy#V$8UpSX*{@4#JR%}U|6;nQ8Kk0kEQ+yDH*B8z~og@Kon~@f(BPajU^T_DptzkL_ zZ4z1DyY%iZ)n!SEf|r=DB&eIq@yIEMF+$PdEQHey9aF`|IfFjMK5P zsXYjbc+bRVIg@wc(ooJgU)yNd;FjGHKwb(Qtb=N=N>7cBk5`rpC#Jv&OGMV~p$rxr z3*d0=D_dDM&$sx;`_VweRQzTpH|r0!B*KE~57)IsjyLD&85vQzxi8VE`QcawednKM z#Q|LZR;x?*o+?sEPUV|c)z_!6)UZJ*A_8{8W*u_Hm^q#3moD z?1t*R=8)8(Fw~=pK4pOhj$Q*r;pN?YgMzI$;9$G><)J8MmaJ<4%&0vP?A;d^K6gGp f1Wzf+Rr`-iH9R3`ny$iW@;lU2G@leJnTPy0cws?! literal 0 HcmV?d00001 diff --git a/docs/LAUNCH_PACKET_2026-04-30.md b/docs/LAUNCH_PACKET_2026-04-30.md new file mode 100644 index 0000000..89f8b8d --- /dev/null +++ b/docs/LAUNCH_PACKET_2026-04-30.md @@ -0,0 +1,108 @@ +# Codex Mission Control Launch Packet - 2026-04-30 + +## Current Live Context + +- Repo: https://github.com/dicnunz/codex-mission-control +- Public repo state: 13 stars, 1 fork, PR #6 still draft. +- Pinned X post: 2,059 views, 11 likes, 3 reposts, 2 bookmarks, 1 reply. +- Existing pinned post angle works, but it explains too much. The better next post should lead with the failure mode and show proof. + +## Required Launch Order + +1. Push the local dashboard proof commit and asset. +2. Make PR #6 ready/mergeable or merge it to `main`. +3. Post the new X root post with the clean dashboard crop. +4. Immediately self-reply with the repo/install commands. +5. Reply to questions with exact commands from `docs/REPLY_BANK.md`. + +Do not post before step 1. The screenshot should match what new users can install. + +## Primary X Post + +```text +i don't think the missing layer for heavy Codex use is another agent framework. + +it's traffic control. + +when a few Codex chats share one Mac, they share the same browser, repos, inbox, desktop, social accounts, and payment/account surfaces. + +so i built Codex Mission Control: + +local hub +lane locks +approval packets +optional Telegram remote + +mac-first. local-only. + +looking for Codex-heavy Mac users to run the install and tell me the first blocker. +``` + +Media: + +```text +assets/cmc-dashboard-launch-crop.png +``` + +## Immediate Self-Reply + +```text +repo/install: + +https://github.com/dicnunz/codex-mission-control + +git clone https://github.com/dicnunz/codex-mission-control.git +cd codex-mission-control +./scripts/demo.sh +./scripts/install.sh + +the demo does not need Telegram. +Telegram is just the optional phone remote. +``` + +## First Replies To Use + +If someone asks what it actually does: + +```text +the useful bit is intentionally boring: + +cmc claim BROWSER FLIGHT "using browser" +cmc claim BROWSER OTHER "also using browser" + +the second one gets blocked. + +same idea for github, email, public social, commerce, desktop, and global writes. +``` + +If someone asks about safety: + +```text +local-only. + +it does not move projects, create a hosted account, bypass logins, or bypass confirmations. + +Relay should be treated like SSH into your Mac through Telegram, so it is optional and allow-listed. +``` + +If someone says they will try it: + +```text +the useful feedback is the first blocker. + +confusing, broken, slow, surprising, whatever. + +open it here so i can fix install friction fast: +https://github.com/dicnunz/codex-mission-control/issues/1 +``` + +## Approval Packet + +- Account: @nicdunz +- Action: push launch proof to PR #6 if approved separately, then publish one root X post and one immediate self-reply +- Destination: https://x.com/nicdunz +- Final text: use `Primary X Post` and `Immediate Self-Reply` above exactly +- Media: `assets/cmc-dashboard-launch-crop.png` on the root post +- Source links: https://github.com/dicnunz/codex-mission-control, https://github.com/dicnunz/codex-mission-control/issues/1 +- Risk notes: public posts; public repo promotion; do not claim official OpenAI/Telegram affiliation; do not imply bypassing confirmations/logins/MFA +- Approval phrase: `approve X launch @nicdunz CMC 2026-04-30`