From 2caa783cfdaad766be0f479c5912284e5f1b9d0e Mon Sep 17 00:00:00 2001 From: observedobserver <270001151@qq.com> Date: Wed, 5 Aug 2026 04:52:01 -0700 Subject: [PATCH 1/2] feat: add Codex-native looperators agent loop --- .agents/plugins/marketplace.json | 20 + .gitignore | 11 +- .oxlintrc.json | 6 +- agents.md | 21 +- electron/runtime/sessionManager.ts | 35 - .../cooperative-mcp-checkpoint.md | 69 + .../desktop-interaction-parity.md | 92 + .../fable-5-desktop-reuse-review.json | 23 + .../fable-5-plan-review.json | 61 + .../gate-a-real-loop.json | 92 + .../gate-a-real-loop.md | 58 + .../gate-b-desktop-right-browser.png | Bin 0 -> 51192 bytes .../gate-b-desktop.json | 54 + .../gate-b-desktop.md | 78 + .../isolated-install.json | 1 + .../localhost-sidecar-checkpoint.md | 87 + .../shared-package-checkpoint.json | 64 + ...odex-desktop-agent-loop-localhost-first.md | 570 ++ .../graph-light.png | Bin 0 -> 163783 bytes .../graph-narrow.png | Bin 0 -> 119667 bytes .../graph-wide.png | Bin 0 -> 151220 bytes .../loop-panel-wide.png | Bin 0 -> 123436 bytes .../production-embed.png | Bin 0 -> 164186 bytes .../interactive-resumed-live-graph.png | Bin 0 -> 148961 bytes package-lock.json | 113 +- package.json | 8 + packages/agent-graph-ui/index.html | 14 + packages/agent-graph-ui/package.json | 59 + .../scripts/build-embed-harness.mjs | 51 + packages/agent-graph-ui/scripts/clean.mjs | 6 + .../agent-graph-ui/src/agent-loop-graph.tsx | 396 ++ packages/agent-graph-ui/src/agent-node.tsx | 101 + packages/agent-graph-ui/src/demo.css | 60 + packages/agent-graph-ui/src/demo.tsx | 74 + packages/agent-graph-ui/src/embed.tsx | 97 + packages/agent-graph-ui/src/fixtures.ts | 434 ++ packages/agent-graph-ui/src/graph-model.ts | 496 ++ packages/agent-graph-ui/src/index.ts | 44 + .../src/inline-agent-loop-graph.ts | 466 ++ packages/agent-graph-ui/src/inline.css | 407 ++ packages/agent-graph-ui/src/inline.ts | 12 + packages/agent-graph-ui/src/loop-badge.tsx | 27 + packages/agent-graph-ui/src/loop-panel.tsx | 123 + packages/agent-graph-ui/src/loop-status.tsx | 35 + .../agent-graph-ui/src/relationship-edge.tsx | 160 + .../src/relationship-inspector.tsx | 53 + packages/agent-graph-ui/src/styles.css | 813 +++ packages/agent-graph-ui/tests/embed.test.mjs | 58 + packages/agent-graph-ui/tests/model.test.mjs | 78 + packages/agent-graph-ui/tsconfig.build.json | 22 + packages/agent-graph-ui/tsconfig.json | 30 + packages/agent-graph-ui/vite.config.ts | 11 + packages/agent-graph-ui/vite.embed.config.ts | 26 + packages/agent-graph-ui/vite.inline.config.ts | 19 + .../agent-graph-ui/vite.library.config.ts | 21 + .../.codex-plugin/plugin.json | 23 + plugins/looperators-agent-loop-p0/.mcp.json | 14 + plugins/looperators-agent-loop-p0/README.md | 21 + .../hooks/collect-event.mjs | 159 + .../hooks/hooks.json | 90 + .../lib/event-utils.mjs | 127 + .../looperators-agent-loop-p0/mcp/server.mjs | 304 + .../scripts/capture-environment.mjs | 98 + .../scripts/create-hook-probe.mjs | 92 + .../scripts/create-mcp-probe.mjs | 63 + .../scripts/extract-desktop-evidence.mjs | 84 + .../scripts/generate-inline-visualization.mjs | 829 +++ .../scripts/normalize-events.mjs | 310 + .../scripts/probe-mcp-contract.mjs | 101 + .../scripts/run-hook-probe.mjs | 108 + .../scripts/run-mcp-host-probe.mjs | 105 + .../scripts/sidecar-server.mjs | 271 + .../skills/agent-loop-visualization/SKILL.md | 43 + .../tests/hooks-and-normalization.test.mjs | 129 + .../tests/inline-browser-contract.test.mjs | 282 + .../tests/inline-visualization.test.mjs | 122 + .../tests/mcp-server.test.mjs | 83 + .../tests/recorded-artifact-fixture.mjs | 150 + .../tests/sidecar-server.test.mjs | 109 + .../.codex-plugin/plugin.json | 24 + plugins/looperators-agent-loop/.mcp.json | 17 + plugins/looperators-agent-loop/README.md | 93 + .../lib/canonical-json.mjs | 76 + .../looperators-agent-loop/lib/contracts.mjs | 2079 +++++++ .../looperators-agent-loop/lib/control.mjs | 4970 +++++++++++++++++ .../looperators-agent-loop/lib/data-root.mjs | 273 + .../looperators-agent-loop/lib/fs-utils.mjs | 576 ++ .../looperators-agent-loop/lib/governor.mjs | 584 ++ .../looperators-agent-loop/lib/graph-view.mjs | 145 + .../looperators-agent-loop/lib/identity.mjs | 392 ++ .../lib/privacy-scan.mjs | 74 + .../lib/projection-to-graph-model.d.mts | 9 + .../lib/projection-to-graph-model.mjs | 430 ++ .../looperators-agent-loop/lib/projection.mjs | 571 ++ .../looperators-agent-loop/lib/recovery.mjs | 277 + plugins/looperators-agent-loop/lib/store.mjs | 2524 +++++++++ plugins/looperators-agent-loop/mcp/server.mjs | 496 ++ .../schemas/definition.schema.json | 53 + .../schemas/event.schema.json | 36 + .../schemas/governor-decision.schema.json | 182 + .../schemas/graph-projection.schema.json | 441 ++ .../schemas/identity-binding.schema.json | 135 + .../legacy-native-target-evidence.schema.json | 96 + .../schemas/legacy-quarantine.schema.json | 74 + .../schemas/operation.schema.json | 71 + .../schemas/report.schema.json | 165 + .../schemas/run.schema.json | 131 + .../schemas/transition.schema.json | 75 + .../schemas/worker-observation.schema.json | 72 + .../scripts/probe-capabilities.mjs | 128 + .../scripts/probe-collector-latency.mjs | 150 + .../scripts/probe-governor-latency.mjs | 310 + .../scripts/probe-isolated-install.mjs | 329 ++ .../scripts/probe-mcp-identity-host.mjs | 296 + .../scripts/probe-shared-data-root.mjs | 206 + .../scripts/render-inline-graph.mjs | 618 ++ .../scripts/run-p1d-headless.mjs | 408 ++ .../scripts/sanitize-identity-artifacts.mjs | 114 + .../scripts/sanitize-p1b-headless.mjs | 476 ++ .../scripts/sanitize-p1c-headless.mjs | 414 ++ .../scripts/sanitize-p1c-resume.mjs | 262 + .../scripts/sanitize-p1e-headless.mjs | 450 ++ .../serve-graph-ui-browser-acceptance.mjs | 317 ++ .../scripts/sidecar-server.mjs | 657 +++ .../scripts/validate-schema-fixtures.mjs | 212 + .../skills/review-until-clean/SKILL.md | 69 + .../review-until-clean/agents/openai.yaml | 4 + .../tests/canonical-and-contracts.test.mjs | 577 ++ .../tests/cooperative-loop.test.mjs | 393 ++ .../tests/cooperative-mcp-server.test.mjs | 433 ++ .../tests/data-root-and-identity.test.mjs | 557 ++ .../tests/fixtures/lock-worker.mjs | 34 + .../tests/fixtures/put-event-worker.mjs | 11 + .../schema/definition-invalid-lap-cap.json | 13 + .../fixtures/schema/definition-valid.json | 13 + ...vernor-decision-invalid-missing-lease.json | 17 + .../schema/governor-decision-valid.json | 18 + .../graph-projection-invalid-corrupt.json | 93 + .../schema/graph-projection-valid.json | 93 + .../identity-invalid-missing-token.json | 9 + .../schema/identity-valid-capability.json | 10 + ...-native-target-evidence-invalid-field.json | 19 + .../legacy-native-target-evidence-valid.json | 19 + .../legacy-quarantine-invalid-adjacency.json | 18 + .../legacy-quarantine-invalid-count.json | 18 + .../schema/legacy-quarantine-valid.json | 18 + .../operation-invalid-missing-report.json | 14 + .../schema/operation-valid-report.json | 15 + .../report-invalid-missing-revisions.json | 12 + .../report-invalid-missing-verdict.json | 9 + .../fixtures/schema/report-valid-product.json | 14 + .../tests/fixtures/schema/report-valid.json | 10 + .../run-invalid-consumed-over-granted.json | 21 + .../tests/fixtures/schema/run-valid.json | 21 + .../worker-observation-invalid-duplicate.json | 17 + .../schema/worker-observation-valid.json | 14 + .../looperators-agent-loop/tests/helpers.mjs | 76 + .../tests/plugin-graph-ui.test.mjs | 155 + .../tests/projection-and-view.test.mjs | 751 +++ .../tests/store.test.mjs | 1233 ++++ .../ui/assets/agent-loop-ui.css | 2 + .../ui/assets/agent-loop-ui.iife.js | 16 + .../ui/assets/paired-scenarios.json | 1411 +++++ plugins/looperators-agent-loop/ui/entry.tsx | 153 + .../looperators-agent-loop/ui/tsconfig.json | 27 + .../looperators-agent-loop/ui/vite.config.ts | 40 + ...nitize-looperators-core-control-probes.mjs | 463 ++ shared/graph-core/index.ts | 2 - shared/graph-core/types.ts | 1 - src/components/terminal.tsx | 8 +- 170 files changed, 36714 insertions(+), 68 deletions(-) create mode 100644 .agents/plugins/marketplace.json create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/cooperative-mcp-checkpoint.md create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/desktop-interaction-parity.md create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/fable-5-desktop-reuse-review.json create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/fable-5-plan-review.json create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-a-real-loop.json create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-a-real-loop.md create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop-right-browser.png create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop.json create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop.md create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/isolated-install.json create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/localhost-sidecar-checkpoint.md create mode 100644 internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/shared-package-checkpoint.json create mode 100644 internal_docs/plans/2026-08-02-codex-desktop-agent-loop-localhost-first.md create mode 100644 output/playwright/agent-graph-ui-shared-checkpoint/graph-light.png create mode 100644 output/playwright/agent-graph-ui-shared-checkpoint/graph-narrow.png create mode 100644 output/playwright/agent-graph-ui-shared-checkpoint/graph-wide.png create mode 100644 output/playwright/agent-graph-ui-shared-checkpoint/loop-panel-wide.png create mode 100644 output/playwright/agent-graph-ui-shared-checkpoint/production-embed.png create mode 100644 output/playwright/agent-loop-localhost-checkpoint/interactive-resumed-live-graph.png create mode 100644 packages/agent-graph-ui/index.html create mode 100644 packages/agent-graph-ui/package.json create mode 100644 packages/agent-graph-ui/scripts/build-embed-harness.mjs create mode 100644 packages/agent-graph-ui/scripts/clean.mjs create mode 100644 packages/agent-graph-ui/src/agent-loop-graph.tsx create mode 100644 packages/agent-graph-ui/src/agent-node.tsx create mode 100644 packages/agent-graph-ui/src/demo.css create mode 100644 packages/agent-graph-ui/src/demo.tsx create mode 100644 packages/agent-graph-ui/src/embed.tsx create mode 100644 packages/agent-graph-ui/src/fixtures.ts create mode 100644 packages/agent-graph-ui/src/graph-model.ts create mode 100644 packages/agent-graph-ui/src/index.ts create mode 100644 packages/agent-graph-ui/src/inline-agent-loop-graph.ts create mode 100644 packages/agent-graph-ui/src/inline.css create mode 100644 packages/agent-graph-ui/src/inline.ts create mode 100644 packages/agent-graph-ui/src/loop-badge.tsx create mode 100644 packages/agent-graph-ui/src/loop-panel.tsx create mode 100644 packages/agent-graph-ui/src/loop-status.tsx create mode 100644 packages/agent-graph-ui/src/relationship-edge.tsx create mode 100644 packages/agent-graph-ui/src/relationship-inspector.tsx create mode 100644 packages/agent-graph-ui/src/styles.css create mode 100644 packages/agent-graph-ui/tests/embed.test.mjs create mode 100644 packages/agent-graph-ui/tests/model.test.mjs create mode 100644 packages/agent-graph-ui/tsconfig.build.json create mode 100644 packages/agent-graph-ui/tsconfig.json create mode 100644 packages/agent-graph-ui/vite.config.ts create mode 100644 packages/agent-graph-ui/vite.embed.config.ts create mode 100644 packages/agent-graph-ui/vite.inline.config.ts create mode 100644 packages/agent-graph-ui/vite.library.config.ts create mode 100644 plugins/looperators-agent-loop-p0/.codex-plugin/plugin.json create mode 100644 plugins/looperators-agent-loop-p0/.mcp.json create mode 100644 plugins/looperators-agent-loop-p0/README.md create mode 100644 plugins/looperators-agent-loop-p0/hooks/collect-event.mjs create mode 100644 plugins/looperators-agent-loop-p0/hooks/hooks.json create mode 100644 plugins/looperators-agent-loop-p0/lib/event-utils.mjs create mode 100644 plugins/looperators-agent-loop-p0/mcp/server.mjs create mode 100644 plugins/looperators-agent-loop-p0/scripts/capture-environment.mjs create mode 100644 plugins/looperators-agent-loop-p0/scripts/create-hook-probe.mjs create mode 100644 plugins/looperators-agent-loop-p0/scripts/create-mcp-probe.mjs create mode 100644 plugins/looperators-agent-loop-p0/scripts/extract-desktop-evidence.mjs create mode 100644 plugins/looperators-agent-loop-p0/scripts/generate-inline-visualization.mjs create mode 100644 plugins/looperators-agent-loop-p0/scripts/normalize-events.mjs create mode 100644 plugins/looperators-agent-loop-p0/scripts/probe-mcp-contract.mjs create mode 100644 plugins/looperators-agent-loop-p0/scripts/run-hook-probe.mjs create mode 100644 plugins/looperators-agent-loop-p0/scripts/run-mcp-host-probe.mjs create mode 100644 plugins/looperators-agent-loop-p0/scripts/sidecar-server.mjs create mode 100644 plugins/looperators-agent-loop-p0/skills/agent-loop-visualization/SKILL.md create mode 100644 plugins/looperators-agent-loop-p0/tests/hooks-and-normalization.test.mjs create mode 100644 plugins/looperators-agent-loop-p0/tests/inline-browser-contract.test.mjs create mode 100644 plugins/looperators-agent-loop-p0/tests/inline-visualization.test.mjs create mode 100644 plugins/looperators-agent-loop-p0/tests/mcp-server.test.mjs create mode 100644 plugins/looperators-agent-loop-p0/tests/recorded-artifact-fixture.mjs create mode 100644 plugins/looperators-agent-loop-p0/tests/sidecar-server.test.mjs create mode 100644 plugins/looperators-agent-loop/.codex-plugin/plugin.json create mode 100644 plugins/looperators-agent-loop/.mcp.json create mode 100644 plugins/looperators-agent-loop/README.md create mode 100644 plugins/looperators-agent-loop/lib/canonical-json.mjs create mode 100644 plugins/looperators-agent-loop/lib/contracts.mjs create mode 100644 plugins/looperators-agent-loop/lib/control.mjs create mode 100644 plugins/looperators-agent-loop/lib/data-root.mjs create mode 100644 plugins/looperators-agent-loop/lib/fs-utils.mjs create mode 100644 plugins/looperators-agent-loop/lib/governor.mjs create mode 100644 plugins/looperators-agent-loop/lib/graph-view.mjs create mode 100644 plugins/looperators-agent-loop/lib/identity.mjs create mode 100644 plugins/looperators-agent-loop/lib/privacy-scan.mjs create mode 100644 plugins/looperators-agent-loop/lib/projection-to-graph-model.d.mts create mode 100644 plugins/looperators-agent-loop/lib/projection-to-graph-model.mjs create mode 100644 plugins/looperators-agent-loop/lib/projection.mjs create mode 100644 plugins/looperators-agent-loop/lib/recovery.mjs create mode 100644 plugins/looperators-agent-loop/lib/store.mjs create mode 100644 plugins/looperators-agent-loop/mcp/server.mjs create mode 100644 plugins/looperators-agent-loop/schemas/definition.schema.json create mode 100644 plugins/looperators-agent-loop/schemas/event.schema.json create mode 100644 plugins/looperators-agent-loop/schemas/governor-decision.schema.json create mode 100644 plugins/looperators-agent-loop/schemas/graph-projection.schema.json create mode 100644 plugins/looperators-agent-loop/schemas/identity-binding.schema.json create mode 100644 plugins/looperators-agent-loop/schemas/legacy-native-target-evidence.schema.json create mode 100644 plugins/looperators-agent-loop/schemas/legacy-quarantine.schema.json create mode 100644 plugins/looperators-agent-loop/schemas/operation.schema.json create mode 100644 plugins/looperators-agent-loop/schemas/report.schema.json create mode 100644 plugins/looperators-agent-loop/schemas/run.schema.json create mode 100644 plugins/looperators-agent-loop/schemas/transition.schema.json create mode 100644 plugins/looperators-agent-loop/schemas/worker-observation.schema.json create mode 100644 plugins/looperators-agent-loop/scripts/probe-capabilities.mjs create mode 100644 plugins/looperators-agent-loop/scripts/probe-collector-latency.mjs create mode 100644 plugins/looperators-agent-loop/scripts/probe-governor-latency.mjs create mode 100644 plugins/looperators-agent-loop/scripts/probe-isolated-install.mjs create mode 100644 plugins/looperators-agent-loop/scripts/probe-mcp-identity-host.mjs create mode 100644 plugins/looperators-agent-loop/scripts/probe-shared-data-root.mjs create mode 100644 plugins/looperators-agent-loop/scripts/render-inline-graph.mjs create mode 100644 plugins/looperators-agent-loop/scripts/run-p1d-headless.mjs create mode 100644 plugins/looperators-agent-loop/scripts/sanitize-identity-artifacts.mjs create mode 100644 plugins/looperators-agent-loop/scripts/sanitize-p1b-headless.mjs create mode 100644 plugins/looperators-agent-loop/scripts/sanitize-p1c-headless.mjs create mode 100644 plugins/looperators-agent-loop/scripts/sanitize-p1c-resume.mjs create mode 100644 plugins/looperators-agent-loop/scripts/sanitize-p1e-headless.mjs create mode 100644 plugins/looperators-agent-loop/scripts/serve-graph-ui-browser-acceptance.mjs create mode 100644 plugins/looperators-agent-loop/scripts/sidecar-server.mjs create mode 100644 plugins/looperators-agent-loop/scripts/validate-schema-fixtures.mjs create mode 100644 plugins/looperators-agent-loop/skills/review-until-clean/SKILL.md create mode 100644 plugins/looperators-agent-loop/skills/review-until-clean/agents/openai.yaml create mode 100644 plugins/looperators-agent-loop/tests/canonical-and-contracts.test.mjs create mode 100644 plugins/looperators-agent-loop/tests/cooperative-loop.test.mjs create mode 100644 plugins/looperators-agent-loop/tests/cooperative-mcp-server.test.mjs create mode 100644 plugins/looperators-agent-loop/tests/data-root-and-identity.test.mjs create mode 100644 plugins/looperators-agent-loop/tests/fixtures/lock-worker.mjs create mode 100644 plugins/looperators-agent-loop/tests/fixtures/put-event-worker.mjs create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/definition-invalid-lap-cap.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/definition-valid.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/governor-decision-invalid-missing-lease.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/governor-decision-valid.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/graph-projection-invalid-corrupt.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/graph-projection-valid.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/identity-invalid-missing-token.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/identity-valid-capability.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/legacy-native-target-evidence-invalid-field.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/legacy-native-target-evidence-valid.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/legacy-quarantine-invalid-adjacency.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/legacy-quarantine-invalid-count.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/legacy-quarantine-valid.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/operation-invalid-missing-report.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/operation-valid-report.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/report-invalid-missing-revisions.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/report-invalid-missing-verdict.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/report-valid-product.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/report-valid.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/run-invalid-consumed-over-granted.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/run-valid.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/worker-observation-invalid-duplicate.json create mode 100644 plugins/looperators-agent-loop/tests/fixtures/schema/worker-observation-valid.json create mode 100644 plugins/looperators-agent-loop/tests/helpers.mjs create mode 100644 plugins/looperators-agent-loop/tests/plugin-graph-ui.test.mjs create mode 100644 plugins/looperators-agent-loop/tests/projection-and-view.test.mjs create mode 100644 plugins/looperators-agent-loop/tests/store.test.mjs create mode 100644 plugins/looperators-agent-loop/ui/assets/agent-loop-ui.css create mode 100644 plugins/looperators-agent-loop/ui/assets/agent-loop-ui.iife.js create mode 100644 plugins/looperators-agent-loop/ui/assets/paired-scenarios.json create mode 100644 plugins/looperators-agent-loop/ui/entry.tsx create mode 100644 plugins/looperators-agent-loop/ui/tsconfig.json create mode 100644 plugins/looperators-agent-loop/ui/vite.config.ts create mode 100644 scripts/sanitize-looperators-core-control-probes.mjs diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json new file mode 100644 index 0000000..9cf4a18 --- /dev/null +++ b/.agents/plugins/marketplace.json @@ -0,0 +1,20 @@ +{ + "name": "looperators-p0", + "interface": { + "displayName": "Looperators P0" + }, + "plugins": [ + { + "name": "looperators-agent-loop", + "source": { + "source": "local", + "path": "./plugins/looperators-agent-loop" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_USE" + }, + "category": "Developer" + } + ] +} diff --git a/.gitignore b/.gitignore index db17b81..9aeb8a3 100644 --- a/.gitignore +++ b/.gitignore @@ -153,14 +153,15 @@ release *.sln *.sw? -# Local project vision and design notes +# Internal project documentation (keep the legacy path blocked) design-docs/ internal_docs/ +# Local browser automation state +.playwright-cli/ + # Local verification screenshots acceptance-screenshots/ -output/demo-screenshots/ -# Headless acceptance run artifacts -output/acceptance/ -output/ui-acceptance/ +# Generated output and acceptance artifacts +output/ diff --git a/.oxlintrc.json b/.oxlintrc.json index 9b9d6fd..c4e2676 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -1,6 +1,10 @@ { "$schema": "./node_modules/oxlint/configuration_schema.json", - "ignorePatterns": ["dist/**", "dist-electron/**"], + "ignorePatterns": [ + "dist/**", + "dist-electron/**", + "plugins/looperators-agent-loop/ui/assets/**" + ], "plugins": ["react", "typescript", "oxc"], "rules": { "react/rules-of-hooks": "error", diff --git a/agents.md b/agents.md index cf7916c..d776b84 100644 --- a/agents.md +++ b/agents.md @@ -4,16 +4,12 @@ Branding boundary: the customer-facing product name is `looperators`. `Orrery` / remains the internal codename and technical namespace; do not rename code symbols, IPC/MCP names, environment variables, storage paths, CLI files, or historical records solely for rebranding. -For project vision and designs, please check the documentation under the `design-docs/`. +`agents.md` is a protected repository policy file. Modify it only when the user explicitly +authorizes changes to this file while knowing that `agents.md` itself will be edited; general +permission to edit code or documentation is not authorization. -- Vision / initial idea: `design-docs/reactive-agent-session-graph.md` — why looperators manages agents as a graph instead of a session list. -- Design (current source of truth for development): `design-docs/orrery-design.md` — the concrete control model (Skills membrane, Master Agent, scopes/clusters), UI shape, v1 scope, and the §12 Skill API. -- v1 plan: `design-docs/v1-implementation-plan.md` — phased implementation plan (critical path P0–P3 + parallel workstreams A–C), with goals and acceptance criteria. -- Internal implementation roadmap / current post-P4 baseline: `design-docs/internal_docs/plans/master-agent-plan-council-implementation-plan.md` — Master-as-Intent-Compiler/Governor/Replanner, Plan Council as the first high-frequency workflow, reliability convergence, correlation/barriers, dynamic topology, and concurrency/safety. Its rationale and discussion replay live in `design-docs/internal_docs/commit-log/2026-07-12-master-agent-plan-council-direction.md`. This roadmap supersedes the old priority of expanding manual canvas authoring first; existing kernel semantics remain governed by `design-docs/session-graph-kernel.md` until each migration phase lands. - -- Verification: headless-first, three tiers — `npm run test:kernel` (kernel unit tests, fake providers allowed), `npm run acceptance:headless` (real-scenario acceptance on real providers with the cheap model preset, artifacts in `output/acceptance/`), then final UI acceptance. Commands are documented below; scenario-authoring rules live in `design-docs/AGENTS.md`. - -For development and technical planning, follow the design doc and the v1 plan. +For project vision, design decisions, plans, and other internal context, consult the local, +Git-ignored `internal_docs/` directory and read only the documents relevant to the current task. ## Current product surface @@ -126,14 +122,13 @@ npm run acceptance:membrane ``` Read the failed run's artifacts before rerunning. Scenario-authoring contracts, -workspace isolation rules, and evidence requirements are in -`design-docs/AGENTS.md` and `design-docs/headless-acceptance-harness.md`. +workspace isolation rules, and evidence requirements are kept in the local internal documentation. ### 3. Final UI acceptance UI acceptance is the final, low-frequency tier after kernel and headless acceptance pass. Follow the Browser/Computer Use assignment and model rules in -`design-docs/AGENTS.md`; do not turn UI clicking into the daily test loop. +the local internal documentation; do not turn UI clicking into the daily test loop. ## Provider setup notes @@ -169,4 +164,4 @@ npm run cli -- graph ``` The full CLI debugging loop, programmatic orchestration client, and browser -preview setup are documented in `design-docs/AGENTS.md`. +preview setup are documented in the local internal documentation. diff --git a/electron/runtime/sessionManager.ts b/electron/runtime/sessionManager.ts index 4c76166..26daab2 100644 --- a/electron/runtime/sessionManager.ts +++ b/electron/runtime/sessionManager.ts @@ -14,41 +14,6 @@ // - workflow proposals, wakeups, barriers // - resource policy, run queue, launchRun, provider event stream // - checkpoints/diffs, reports, persistence triggers -// -// Split-out knowledge domains (import, don't re-add here): -// runtimeCommon.ts shared value helpers + validation sets -// workspace/gitWorkspace.ts git/worktree/branch/checkpoint-ref/diff -// workspace/workspaceFiles.ts workspace file tree + open-in-app -// workspace/workspaceService.ts public workspace reads + open facade -// providers/providerConfigNormalize.ts provider instance/runtime config -// sessions/sessionInteraction.ts attachments + request/input normalization -// persistence/runtimeStateRecovery.ts state load/normalize/migrate/repair -// terminal/terminalService.ts embedded terminal subsystem -// subscriptionAuthoring.ts author_subscription input validation -// workspace/sessionCheckpoints.ts per-turn git checkpoints + diffs -// providers/providerSetupStatus.ts provider CLI/model-catalog probing -// control/commandRegistry.ts command kind + handler/policy registry -// control/commandExecutor.ts serialized transaction + effect authority -// clusters/clusterControlRuntime.ts Scope/Master/Loop/freeze topology control -// membrane/membraneRequestRuntime.ts sanctioned agent control-surface dispatch -// scheduler/schedulerRuntime.ts fact -> gate -> activation + timer lifecycle -// sessions/sessionRuntimeController.ts admission + provider turn lifecycle -// sessions/sessionCommandRuntime.ts session commands + channel/interaction adapters -// reports/reportFormatting.ts report/prompt render + payload validation -// queries/runtimeQueries.ts read-only state/kernel projections -// external/externalIngestionService.ts source registry, adapters + ingestion -// workflows/workflowKernel.ts the explicit kernel surface below -// workflows/governanceRuntime.ts wakeup + Barrier state machines -// workflows/proposalRuntime.ts Proposal/Patch authoring + commit -// workflows/classicWorkflows.ts draft/handoff/goal/connect + deployments -// workflows/planCouncil.ts plan council orchestration -// workflows/reviewWorkflow.ts review ring composer -// workflows/goalTemplates.ts goal loop + template library -// workflows/workflowShared.ts workflow resource compensation -// -// Growth stopline: new product workflows must not add new knowledge domains -// to this class; register the domain here and put the implementation in its -// own module (see design-docs/session-manager-split-plan.md). import { randomUUID } from 'node:crypto' import fs from 'node:fs' import os from 'node:os' diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/cooperative-mcp-checkpoint.md b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/cooperative-mcp-checkpoint.md new file mode 100644 index 0000000..3b1cd56 --- /dev/null +++ b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/cooperative-mcp-checkpoint.md @@ -0,0 +1,69 @@ +# Cooperative typed MCP checkpoint + +Date: 2026-08-02 + +## Scope + +This checkpoint removes Hooks and native-worker observation from the default Codex Plugin +surface. The loop is explicitly cooperative: root schedules one logical role at a time and the +worker reports through a typed, action-scoped MCP capability. + +## Product surface + +The default MCP server lists exactly eight tools: + +1. `looperators_preview_loop` +2. `looperators_start_loop` +3. `looperators_pause_loop` +4. `looperators_resume_loop` +5. `looperators_cancel_loop` +6. `looperators_report` +7. `looperators_get_loop` +8. `looperators_get_snapshot` + +Removed default surfaces include Hook collection/readiness, worker prepare/bind tools, probe +tools and inline graph rendering. Calling a removed tool by name returns method-not-found. + +## Capability boundary + +- The token is random and opaque. Its plaintext is never persisted; the shared store contains only + its SHA-256 digest and action identity. +- The durable record binds run, logical role, pending transition and pending action revision, so a + native worker's independent MCP process can validate the root-issued token. +- A token cannot act for the other role or a later action. +- Cancel and terminal state revoke the action. +- A new Governor MCP process rotates the current token on root `get_loop`; the Governor must not + perform that recovery read while a worker is in flight. +- Exact cross-process report retries remain idempotent after the transition advances. + +This is not cryptographic proof of a native Codex subagent identity. That limitation is deliberate +in the default no-Hooks mode and is stated in the Plugin README and skill. + +## Reproduction + +From `/Users/observedobserver/Documents/GitHub/orrery`: + +```sh +node --test --test-concurrency=4 plugins/looperators-agent-loop/tests/*.test.mjs +npm run test:plugin-agent-loop-ui +npm run lint +``` + +Observed result: + +- direct Plugin suite: 60 passed, 0 failed; +- repository Plugin UI build plus suite: 60 passed, 0 failed; +- shared graph package typecheck/library/inline/embed builds passed as part of the repository script; +- lint exited 0 with pre-existing warnings; no new lint error. + +The suite covers no-Hook start, logical bindings, token-plaintext non-persistence, +cross-controller and three-real-MCP-process reporting, implementer-to-reviewer +and reviewer-to-terminal transitions, wrong-role/stale token rejection, pause/resume, cancel, +restart rotation, idempotent and conflicting retries, concurrent reports, issues-to-cap, +verified snapshots, prepared-start crash recovery and real MCP stdio framing/tool dispatch. + +## Deferred by design + +The existing developer sidecar tests remain green, but the MCP-owned product sidecar and the full +shared ReactFlow production embed are the next checkpoint. No Desktop UI acceptance or fresh +Plugin install is claimed here. diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/desktop-interaction-parity.md b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/desktop-interaction-parity.md new file mode 100644 index 0000000..7566b2d --- /dev/null +++ b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/desktop-interaction-parity.md @@ -0,0 +1,92 @@ +# Desktop → shared graph interaction parity + +- 日期:2026-08-02 +- Gate:A / shared package independent checkpoint +- 状态:shared package independent checkpoint passed;Plugin integration pending +- 规则:`not-applicable` 必须说明 authority 不存在或 fixed review loop 不需要;不能用它 + 掩盖 shared package 缺失。 + +## Authority sources + +- `src/components/session-graph-panel.tsx`:ReactFlow shell、selection、MiniMap、pan/zoom、 + node/edge routing 与 inspector/loop panel composition。 +- `src/components/canvas.tsx`:Agent node、relationship edge、loop badge 及状态视觉。 +- `src/components/relationship-inspector-panel.tsx`:关系结构、状态、stop action。 +- `src/components/loop-panel.tsx`:lap、issues、recovery、timeline、stop confirmation。 +- `src/hooks/use-canvas.ts`:projection→flow elements、drag、position、selection semantics。 +- `src/lib/graph-view.ts`:portable-ish node/edge/product view model 与 label/routing semantics。 + +`packages/agent-graph-ui` 已按本矩阵扩展并通过独立验收;Desktop 源文件仍是语义和交互 +authority,Gate A/B 完成前不改 Desktop import。 + +## Matrix + +| Desktop behavior | Classification | Shared/Plugin contract | Acceptance | +| --- | --- | --- | --- | +| ReactFlow canvas + dotted background | direct reuse | shared canvas shell | production bundle 可见且无 console error | +| pan / wheel zoom / zoom buttons / fit view | direct reuse | shared canvas shell | mouse 与 controls 自动化 | +| MiniMap pannable/zoomable | direct reuse | shared canvas shell | MiniMap 可见并可操作 | +| node / edge / pane selection | direct reuse | controlled/uncontrolled selection props | click、pane clear、live update 后 selection 稳定 | +| keyboard node/edge selection | direct reuse | focusable node/edge labels | Enter/Space + focus-visible tests | +| presentation node dragging | host adapter | shared emits position change;sidecar 保存在当前 Browser session,不写 projection | drag 后位置变化;snapshot 更新不篡改 authority | +| durable Desktop node positions | not-applicable | Codex Plugin 无 Desktop runtime position authority | sidecar 不调用 store mutation | +| Agent node card hierarchy | direct reuse | shared portable AgentNode view model | role/identity/state/activity/report variants screenshots | +| provider/model/vendor identity | host adapter | optional bounded fields;无可信数据时显示 logical role/runtime,不伪造 native provider | present/absent variants | +| running/master/managed/frozen visual states | direct reuse where modeled | shared state/tone mapping | state fixture matrix | +| latest verdict / issue count / report summary | direct reuse | typed projection adapter | issues/clean/done fixtures | +| relationship edge routing/stroke/dash/arrow | direct reuse | shared portable edge model | four review-loop relationships 无交叠/裁剪 | +| edge label, active/recent/pending, report count | direct reuse | typed relationship status | fixtures + live SSE update | +| Relationship inspector layout | direct reuse | portable `RelationshipInspectorModel` | From/When/Then/Gate/State/Stop condition visible | +| relationship stop button | host adapter | injected capability + callback;default review loop maps to pause/cancel preview | enabled/disabled/pending/error tests | +| Loop badge node | direct reuse | portable loop product summary | headline/lap/status/stop reason visible | +| Loop panel status summary | direct reuse | portable `LoopPanelModel` | responsible role/verdict/stop reason states | +| blocking issues list | direct reuse | typed report issues only | file/line/severity and empty states | +| lap cards + report timeline | direct reuse | bounded typed timeline | issues→clean multiple lap fixture | +| recovery guidance | direct reuse | interrupted/capped recovery model | restart/cap fixtures | +| stop confirmation copy/interaction | direct reuse + host adapter | shared confirmation UI + injected cancel callback | confirm/cancel/action-pending tests | +| open responsible Agent | host adapter | optional callback; hidden with an explicit unavailable explanation when Codex cannot deep-link | capability present/absent tests | +| open final diff/provider settings/workflow builder | not-applicable | sidecar has no stable Desktop runtime/navigation authority | no fake buttons or shell commands | +| freeze participants / cluster controls | not-applicable | fixed cooperative review loop has no cluster freeze authority | absent from Plugin bundle | +| drag-to-connect / create arbitrary Agent | not-applicable | fixed three-role recipe; general graph authoring is out of scope | handles non-connectable; no mutation endpoint | +| source/clock/cluster synthetic nodes | not-applicable | fixed review loop projection contains root/implementer/reviewer only | no placeholder nodes | +| kernel/activity overlay | host adapter | bounded typed projection timeline, never transcript/hook tail | SSE updates typed activity only | +| light/dark theme tokens | direct reuse | shared CSS variables with Desktop-compatible tokens | light/dark screenshots | +| responsive wide/narrow layout | direct reuse | shared deterministic routing/layout | wide/narrow no overlap/crop | +| reduced motion | direct reuse | media query disables nonessential animation | browser media emulation | + +## Independent checkpoint + +Plugin UI may not import the expanded package until 1–5 已通过;第 6 项在 Plugin 接入后、 +Gate A 关闭前执行: + +1. portable component/model source with no Electron/runtime/MCP import; +2. dev server and shipped production bundle; +3. automated interaction coverage for every `direct reuse` row and every applicable adapter row; +4. machine-readable result with zero console errors and request inventory; +5. light/dark + wide/narrow screenshots including MiniMap, Relationship inspector and Loop panel; +6. static audit proving the Plugin does not ship a second node/edge/inspector/loop-panel implementation. + +## Checkpoint result + +- 结果:PASS +- machine-readable evidence:`shared-package-checkpoint.json` +- production build/test:`npm test -w @looperators/agent-graph-ui`,6/6 pass +- dev Browser:真实 Chromium 验证 zoom、drag、keyboard selection、edge selection、 + Relationship inspector、Loop panel/stop confirmation、wide/narrow、dark/light。 +- production Browser:self-contained embed 显示 3 nodes + 4 edges + MiniMap;0 console error, + `performance` resource inventory 为空。 +- 初次验收拦截并修复两项真实缺陷:受控节点丢失 measured state 导致节点隐藏/边不渲染; + 重复 dimension change 导致 `ResizeObserver` warning storm。修复后重启 clean Browser session + 并重复 panel/resize 操作,dev server 无新增 warning。 +- screenshots: + - `output/playwright/agent-graph-ui-shared-checkpoint/graph-wide.png` + - `output/playwright/agent-graph-ui-shared-checkpoint/graph-narrow.png` + - `output/playwright/agent-graph-ui-shared-checkpoint/graph-light.png` + - `output/playwright/agent-graph-ui-shared-checkpoint/loop-panel-wide.png` + - `output/playwright/agent-graph-ui-shared-checkpoint/production-embed.png` + +## Deferred Desktop migration + +During Gate A/B the Desktop authority files remain unchanged. After Plugin acceptance, a separate +change switches Desktop imports to the accepted shared components and deletes the temporary duplicate +implementation. That later migration cannot weaken the Plugin checkpoint retroactively. diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/fable-5-desktop-reuse-review.json b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/fable-5-desktop-reuse-review.json new file mode 100644 index 0000000..c4d4223 --- /dev/null +++ b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/fable-5-desktop-reuse-review.json @@ -0,0 +1,23 @@ +{ + "schemaVersion": 1, + "reviewedAt": "2026-08-02", + "reviewer": { + "client": "Claude Code 2.1.218", + "model": "claude-fable-5", + "mode": "read-only", + "subagentsAllowed": false, + "webAllowed": false + }, + "initialVerdict": "GO_WITH_AMENDMENTS", + "blocking": [], + "acceptedAmendments": [ + "The shared package extraction scope is determined by the Desktop interaction parity matrix, not by the sidecar's current minimum needs.", + "The parity matrix is a required artifact with Desktop source references and classification reasons, and the shared package must pass an independent checkpoint before Plugin import." + ], + "finalReview": { + "verdict": "GO", + "amendmentsClosed": true, + "blocking": [], + "consensus": "Desktop graph components and interactions are the authority baseline. Extract and independently accept the shared package first, integrate it into the Plugin second, and change Desktop imports only after Plugin acceptance." + } +} diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/fable-5-plan-review.json b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/fable-5-plan-review.json new file mode 100644 index 0000000..36fcbde --- /dev/null +++ b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/fable-5-plan-review.json @@ -0,0 +1,61 @@ +{ + "schemaVersion": 1, + "reviewedAt": "2026-08-02", + "reviewer": { + "client": "Claude Code 2.1.218", + "model": "claude-fable-5", + "mode": "read-only", + "tools": [ + "Read" + ], + "subagentsAllowed": false, + "webAllowed": false + }, + "run": { + "result": "completed", + "verdict": "GO_WITH_AMENDMENTS", + "budgetUsd": 4, + "costUsd": 1.721317, + "durationApiMs": 118095 + }, + "blocking": [], + "acceptedAmendments": [ + "Move interrupted recovery from SessionStart hooks to MCP process/action epochs and root-authorized reconciliation.", + "Specify capability validity and revocation across pause, resume, cancel, cap, and restart recovery.", + "Bind each browser session cookie to exactly one run instead of all runs served by the MCP process.", + "Distinguish host click routing from the ability of the Codex built-in Browser to render the localhost surface.", + "Return a safe actionable expiry page for consumed, expired, or old-process login tickets." + ], + "keep": [ + "Versioned store, canonical JSON, projection digest, typed reports and transitions.", + "Idempotent requestId mutation handling.", + "Platform data-root resolution.", + "The full ReactFlow agent graph package for the localhost surface.", + "The existing loopback, token, cookie, Host and Origin, CSP, bounded SSE, watcher, and backpressure controls.", + "Preview, start, report, pause, resume, and cancel domain semantics." + ], + "removeFromDefaultDistribution": [ + "All seven plugin hook declarations and hook collector entrypoints.", + "Hook readiness and HOOKS_NOT_READY start gates.", + "Stop and SubagentStop continuation governor.", + "Native agent observation and prepare, poll, and bind tools.", + "Identity and shared-root probe tools.", + "Inline render tool from the default MCP surface.", + "Unpublished-version legacy recovery and quarantine tools." + ], + "scopeGuards": [ + "After Gate B, decide whether to delete or retain the existing inline code; do not implement a new inline surface in this plan.", + "Treat a self-contained signed cross-platform runtime as a future release gate; this delivery only validates and documents the macOS Node prerequisite." + ], + "consensusSummary": "The localhost-first, hook-free default architecture is sound and honestly describes cooperative governance. No blocking issue remains after adding MCP-owned restart reconciliation, precise capability revocation, run-scoped browser sessions, Browser acceptance attribution, and expired-ticket behavior.", + "finalConsensusReview": { + "result": "completed", + "verdict": "GO", + "costUsd": 0.774847, + "durationApiMs": 36835, + "allAmendmentsClosed": true, + "blocking": [], + "scopeDrift": [], + "summary": "All five amendments are closed at the specification level. Start implementation with Gate A and Gate B as the only acceptance gates." + } +} diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-a-real-loop.json b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-a-real-loop.json new file mode 100644 index 0000000..43cc961 --- /dev/null +++ b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-a-real-loop.json @@ -0,0 +1,92 @@ +{ + "schemaVersion": 1, + "capturedAt": "2026-08-03T07:34:24.000Z", + "codex": { + "lane": "desktop-bundled-headless", + "version": "codex-cli 0.146.0-alpha.9.2", + "userConfigLoaded": false, + "pluginsFeatureLoaded": false, + "multiAgentEnabled": true + }, + "plugin": { + "version": "0.3.2+codex.20260803073424", + "defaultHooks": false, + "protocol": "cooperative-typed-mcp", + "reviewSurface": "mcp-owned-127.0.0.1-sidecar" + }, + "run": { + "runId": "run_d19f85e9e12f20e88104fdd9e968a42428b385559863ad83402e1137be30a6b6", + "status": "succeeded", + "revision": 5, + "currentLap": 1, + "lapCap": 2, + "nativeSubagentCount": 2, + "rootThreadId": "019fc685-4648-7df3-aee1-b90d46b49745", + "nativeSubagents": [ + { + "role": "implementer", + "threadId": "019fc685-d665-7351-b9fd-0ad07ec51c4f", + "depth": 1, + "reportCalls": 2 + }, + { + "role": "reviewer", + "threadId": "019fc686-9fdf-7c31-a6ca-b24d7a4d6828", + "depth": 1, + "reportCalls": 2 + } + ], + "reportSequence": [ + { + "role": "implementer", + "type": "info", + "status": "done", + "fromRevision": 1, + "toRevision": 2 + }, + { + "role": "reviewer", + "type": "verdict", + "verdict": "issues", + "issueCount": 1, + "fromRevision": 2, + "toRevision": 3 + }, + { + "role": "implementer", + "type": "info", + "status": "done", + "fromRevision": 3, + "toRevision": 4 + }, + { + "role": "reviewer", + "type": "verdict", + "verdict": "clean", + "issueCount": 0, + "fromRevision": 4, + "toRevision": 5 + } + ], + "fixtureTests": { + "passed": 2, + "failed": 0 + }, + "reviewOrigin": "http://127.0.0.1:58094", + "reviewOriginAliveAfterMcpExit": false + }, + "crossProcessCapability": { + "originalFailure": "root-issued HMAC token was scoped to one MCP process and worker reports were rejected", + "fix": "opaque action token with durable SHA-256 digest and action identity", + "plaintextPersisted": false, + "threeStdioMcpProcessesPassed": true, + "governorRestartRotatesToken": true, + "preRotationTokenRejectedAfterRotation": true + }, + "privacy": { + "capabilityTokensIncluded": false, + "fullPromptsIncluded": false, + "rawRolloutsIncluded": false + }, + "passed": true +} diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-a-real-loop.md b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-a-real-loop.md new file mode 100644 index 0000000..52c9724 --- /dev/null +++ b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-a-real-loop.md @@ -0,0 +1,58 @@ +# Gate A real native-agent loop + +## Result + +Gate A's core real-agent journey passed with Desktop-bundled Codex +`0.146.0-alpha.9.2`: one root Governor created exactly one native implementer and one native +reviewer. The same two workers were followed up across lap 1. The authoritative typed sequence was +`implementer done → reviewer issues → implementer done → reviewer clean`; revision advanced from 1 +to 5 and terminated as `succeeded`. The final fixture contained two passing tests. + +The localhost surface opened on a random literal `127.0.0.1` port while the MCP process was alive. +The origin in the JSON artifact is evidence only and is intentionally no longer reachable after the +headless MCP process exited. + +## Core failure found and fixed + +The first real run exposed a genuine architecture bug: root and native workers each receive an +independent MCP server process. The old HMAC token used a process-local secret/epoch, so the worker +could never validate the root-issued capability. Re-signing from root only repeated the mismatch. + +The replacement is an opaque 48-byte action token. Only its SHA-256 digest plus +`runId/role/pendingTransitionId/actionRevision` is stored. Independent worker MCP processes validate +against that durable record; plaintext never enters JSON state. A new Governor MCP process rotates +the current token during root `get_loop`, so the skill forbids root polling while a worker is in +flight. + +## Reproduction shape + +The real run used the Desktop-bundled CLI with user config and the Plugin registry disabled. It +enabled native multi-agent support and manually registered only the source MCP server against an +isolated data root: + +```sh +/Applications/ChatGPT.app/Contents/Resources/codex exec \ + --ignore-user-config --disable plugins --enable multi_agent \ + --dangerously-bypass-approvals-and-sandbox --json \ + -C output/acceptance/agent-loop-gate-a-fixture \ + -c 'mcp_servers.looperators_gate_a.command="/usr/local/bin/node"' \ + -c 'mcp_servers.looperators_gate_a.args=["/plugins/looperators-agent-loop/mcp/server.mjs"]' \ + -c 'mcp_servers.looperators_gate_a.env={ LOOPERATORS_DATA_DIR = "" }' \ + '' +``` + +No Hooks, Personal Plugin, Desktop reload, Node protocol helper, commit, or push was used. Shell was +available only to the workers for editing the isolated fixture and running its test. + +## Evidence boundary + +- [gate-a-real-loop.json](./gate-a-real-loop.json) contains sanitized thread lineage, revisions and + typed report sequence. +- Native session metadata confirmed one depth-1 implementer and one depth-1 reviewer under the root. +- Each child rollout contained two direct `looperators_report` completions, matching the four durable + report facts. Rollout text and capability-bearing call arguments were not copied into the repo. +- Automated tests additionally use three simultaneous real stdio MCP processes and a separate + Governor-restart process. They verify token rotation, stale-token rejection and cancel. + +This transcript inspection is acceptance evidence, not a product protocol. Runtime authority remains +the versioned typed store; looperators does not tail transcripts. diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop-right-browser.png b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop-right-browser.png new file mode 100644 index 0000000000000000000000000000000000000000..274b29da98d39f20e279bc7e8abb876d556e338b GIT binary patch literal 51192 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

17Wkk3}Ojj%izFIZxae73of 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 literal 0 HcmV?d00001 diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop.json b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop.json new file mode 100644 index 0000000..1fe56dd --- /dev/null +++ b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop.json @@ -0,0 +1,54 @@ +{ + "schemaVersion": 1, + "gate": "B", + "verdict": "GO", + "date": "2026-08-03", + "environment": { + "codexDesktopVersion": "26.727.51351", + "codexDesktopBuild": "6119", + "codexCliVersion": "0.146.0-alpha.9.2", + "pluginVersion": "0.3.2+codex.20260803073424" + }, + "loop": { + "threadId": "019fc7b9-aa76-77d1-ac72-e4c3855772a8", + "runId": "run_6fc56d7d04232a324a59cd132a18b8246db045adc291eb3a2540f8746f9f22cc", + "projectionDigest": "bef9a9a2541d8c3a60dde9bc3170010dbdf4d8e38aa3870564a3cae385e3ef16", + "status": "succeeded", + "implementerReports": 1, + "reviewerReports": 1, + "reviewerVerdict": "clean" + }, + "browser": { + "surface": "codex-in-app-browser", + "verified": true, + "live": true, + "nodes": ["Governor", "Implementer", "Reviewer"], + "relationships": ["governs", "handoff", "feedback", "verdict"], + "reactFlowControls": true, + "miniMap": true + }, + "controlRoundTrip": { + "threadId": "019fc7c0-3a1f-7733-a0c7-88b01d291053", + "runId": "run_5b9e832b226b7a2312ef9a6d633ec6b4fcd4f72d18932b18503c3e70f9b79bb4", + "projectionDigest": "cee9cc4df8fd12acae291635df4f2f596c4779a9b8e5609fe9192bc63ec11b31", + "action": "pause", + "source": "localhost-ui", + "domStatus": "paused", + "mcpStatus": "paused", + "subagentCount": 0, + "workerReportCount": 0 + }, + "artifacts": { + "browserScreenshot": { + "path": "gate-b-desktop-right-browser.png", + "sha256": "5a1cf867ba74795501868100437b77298c6baf14d49affb1205c8c92fb97b4df" + } + }, + "security": { + "defaultHooks": false, + "loopbackOnly": true, + "ticketPersisted": false, + "capabilityTokenPersisted": false, + "transcriptProtocol": false + } +} diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop.md b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop.md new file mode 100644 index 0000000..bece097 --- /dev/null +++ b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop.md @@ -0,0 +1,78 @@ +# Gate B:Codex Desktop right Browser 验收 + +- 日期:2026-08-03 +- verdict:`GO` +- Codex Desktop:`26.727.51351`(build `6119`) +- Codex CLI:`0.146.0-alpha.9.2` +- Plugin:`0.3.2+codex.20260803073424` + +## 结论 + +fresh Desktop task 通过 typed MCP 完成一个真实 root + implementer + reviewer loop, +Codex 内置右侧 Browser 显示共享 Desktop-derived ReactFlow 图。独立 run 从页面点击 +`Request pause`,DOM 与 authoritative MCP state 均返回 `paused`。没有默认 Hooks、 +没有 shell/Node 脚本代调 MCP、没有仓库修改或 worker transcript 作为协议。 + +## 实际步骤 + +1. 使用 Desktop-bundled CLI 安装本地 marketplace Plugin,并核对安装版本为 + `0.3.2+codex.20260803073424`。 +2. 通过本地 marketplace Plugin detail 确认 Desktop 显示目标版本、1 个 MCP server、 + 1 个启用 Skill;随后创建 fresh Desktop task。 +3. task 调用 `preview → start → report(done) → report(clean) → get_snapshot`;恰好一个 + implementer 与一个 reviewer 参与。 +4. 调用 `open_review_surface`,只兑换一次短期 ticket;在 Codex 内置 Browser 中读取 + localhost 页面 DOM,并保存右侧 Browser 页面截图。 +5. 创建独立 control run,start 后不派 worker;从 localhost UI 点击唯一 + `Request pause`,随后同时检查 DOM 与 `looperators_get_loop`。 + +## 真实 loop 结果 + +- Desktop task:`019fc7b9-aa76-77d1-ac72-e4c3855772a8` +- run:`run_6fc56d7d04232a324a59cd132a18b8246db045adc291eb3a2540f8746f9f22cc` +- projection digest: + `bef9a9a2541d8c3a60dde9bc3170010dbdf4d8e38aa3870564a3cae385e3ef16` +- status:`succeeded` +- worker reports:implementer `done`,reviewer `clean` +- Browser DOM:`verified`、`succeeded`、`live`;Governor、Implementer、Reviewer; + governs、handoff、feedback、verdict;Controls、MiniMap。 + +## Control round-trip + +- Desktop task:`019fc7c0-3a1f-7733-a0c7-88b01d291053` +- run:`run_5b9e832b226b7a2312ef9a6d633ec6b4fcd4f72d18932b18503c3e70f9b79bb4` +- projection digest: + `cee9cc4df8fd12acae291635df4f2f596c4779a9b8e5609fe9192bc63ec11b31` +- action:右侧 UI 唯一 `Request pause` 按钮点击一次 +- DOM status:`paused` +- MCP status:`paused` +- subagent / worker report:0 / 0 + +## 截图证据 + +- [右侧 Browser 页面截图](gate-b-desktop-right-browser.png):完整 localhost graph viewport。 +- 全屏 Codex Desktop 截图不进入公共仓库,因为它包含与本实验无关的本地 task、用户与 + 系统元数据。公开证据只保留裁定 Gate B 所需的右侧 Browser surface。 + +SHA-256: + +- `gate-b-desktop-right-browser.png`: + `5a1cf867ba74795501868100437b77298c6baf14d49affb1205c8c92fb97b4df` + +## 失败与修正 + +- 已启动 Desktop task 不会热加载外部 CLI 更新的 dynamic tools;必须在 Desktop 识别目标 + Plugin detail/version 后创建 fresh task。 +- 旧 `0.2.0` 需要 `LOOPERATORS_DATA_DIR` / `PLUGIN_DATA`,因此出现 + `DATA_ROOT_UNAVAILABLE`;目标 `0.3.2` 默认使用 looperators-owned platform data path。 +- 同一 one-time ticket 被重复打开时,首次兑换页正常,其余页面显示 + `Review link unavailable`。最终验收严格 mint 一次、导航一次。 +- 初始验收 prompt 为禁止协议脚本而同时禁止了官方 Browser 控制运行时,导致 Agent 只生成 + URL 没有实际导航。修正为:继续禁止 shell/独立 Node/MCP 代调,只允许官方 Browser + skill 的内部控制运行时。 + +## 安全与隐私 + +- 未保存 ticket、cookie、capability token、完整 worker transcript 或私密 prompt。 +- localhost 只监听 `127.0.0.1`;公开截图不含凭据或无关本地 task 元数据。 +- evidence 只记录 run/thread id、projection digest、状态和可复现产品版本。 diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/isolated-install.json b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/isolated-install.json new file mode 100644 index 0000000..aa98b40 --- /dev/null +++ b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/isolated-install.json @@ -0,0 +1 @@ +{"capturedAt":"2026-08-03T07:35:30.825Z","codex":{"lane":"desktop-bundled","version":"codex-cli 0.146.0-alpha.9.2"},"commands":["env -i CODEX_HOME= --version","env -i CODEX_HOME= plugin marketplace add ","env -i CODEX_HOME= plugin add looperators-agent-loop@looperators-p0 --json","env -i CODEX_HOME= plugin list --json","compare canonical source tree with plugins/cache/looperators-p0/looperators-agent-loop/0.3.2+codex.20260803073424"],"desktopRestarted":false,"globalConfigModified":false,"isolation":{"cleanedAfterProbe":true,"codexHomePathRecorded":false,"environmentAllowlist":["CODEX_HOME","LANG","LC_ALL","LC_CTYPE","PATH","TEMP","TERM","TMP","TMPDIR"],"inheritedCredentialVariables":false,"temporaryCodexHome":true},"marketplace":{"added":true,"name":"looperators-p0"},"passed":true,"plugin":{"addMatches":true,"addReturnedJson":true,"enabled":true,"exactListRecordCount":1,"fileCount":87,"installed":true,"installedTreeDigest":"59b77135857193515340769cc46129748e35c24379b14d8e9067490f2740cb15","listReturnedJson":true,"listed":true,"marketplaceSourceMatches":true,"name":"looperators-agent-loop","pluginId":"looperators-agent-loop@looperators-p0","sourceMatches":true,"sourceMatchesInstalledCache":true,"sourceTreeDigest":"59b77135857193515340769cc46129748e35c24379b14d8e9067490f2740cb15","version":"0.3.2+codex.20260803073424","versionMatches":true},"probe":"p1e-isolated-plugin-install","schemaVersion":1} diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/localhost-sidecar-checkpoint.md b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/localhost-sidecar-checkpoint.md new file mode 100644 index 0000000..82d5a29 --- /dev/null +++ b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/localhost-sidecar-checkpoint.md @@ -0,0 +1,87 @@ +# MCP-owned localhost live review checkpoint + +Date: 2026-08-02 + +## Result + +PASS for the headless localhost product surface. This is not yet the isolated Codex Desktop +fresh-install Gate B. + +The MCP process now owns one sidecar per open run. The sidecar serves the full shared +Desktop-derived ReactFlow graph and writes pause/resume/cancel to the same authoritative typed +store used by MCP reports. + +## Product protocol + +- Bind address: literal `127.0.0.1` only, random OS-assigned port. +- Route: stable `/runs/` with run-scoped subordinate routes. +- Entry: short-lived one-time ticket; redemption redirects to the ticket-free route. +- Session: independent HttpOnly, SameSite=Strict cookie scoped to the run path. +- Mutation: exact Origin, JSON content type, session cookie and independent CSRF token. +- Live state: bounded SSE snapshots with projection digest IDs, Last-Event-ID support, client cap, + backpressure close and authoritative replay on store changes. +- Lifecycle: MCP `open_review_surface` starts/reuses the process-owned sidecar; + `close_review_surface` closes it; MCP stdin shutdown closes all remaining sidecars. +- Expired, consumed or unauthenticated entry renders a bounded safety page instead of exposing the + graph. + +No Hooks, inline renderer, host-private UI API, external asset server, `0.0.0.0` listener or +transcript tail is involved. + +## Automated reproduction + +From `/Users/observedobserver/Documents/GitHub/orrery`: + +```sh +npm test -w @looperators/agent-graph-ui +npm run test:plugin-agent-loop-ui +npm run lint +``` + +Observed: + +- shared graph package: 6 passed, 0 failed; +- Plugin build and full suite: 58 passed, 0 failed; +- real stdio MCP test opened the live surface, redeemed its ticket, loaded the page, rejected a + replayed ticket and hostile Origin, executed pause/resume, completed the typed loop and closed + the listening port; +- lint exited 0; generated Plugin UI assets are excluded like other build output, while source + warnings remain the repository's pre-existing warnings. + +## Browser acceptance + +The Playwright CLI opened the actual randomized localhost URL in Chromium. Verified DOM state: + +- title `looperators Agent Loop live review`; +- verified/running/live status; +- 3 role nodes and 4 relationship edges; +- ReactFlow zoom controls and MiniMap; +- node selection and inspector state; +- pause control changed the authoritative projection to `paused` through SSE; +- resume control changed it back to `running` through SSE; +- two control POSTs returned HTTP 200; +- console: 0 errors, 0 warnings. + +Evidence: + +- [interactive-resumed-live-graph.png](../../../../output/playwright/agent-loop-localhost-checkpoint/interactive-resumed-live-graph.png) + +The first browser run exposed a real production-only failure: the bundle referenced the Node +`process` global and fell back to semantic HTML. The fix defines `process.env.NODE_ENV=production` +in the Plugin Vite build, which removes the unsafe development branch. The acceptance was then +repeated from a fresh sidecar/browser session and the full graph rendered with no console error. + +The cooperative logical `role:*` bindings are intentionally not projected as native worker IDs; +the UI no longer makes the false claim that a native worker identity was observed. + +## Remaining gates + +1. Gate A: a real root task must create native implementer and reviewer subagents, receive typed + reports, exercise issues-to-clean or cap, and prove cancel/restart behavior against this live + surface. +2. Gate B: install the packaged Plugin from an isolated source and capture a Codex Desktop system + screenshot with this localhost page in the right-side built-in Browser. + +The official Codex manual documents that the Desktop built-in Browser can open local web apps, +share the view beside a task, interact with the page and capture screenshots. That establishes the +intended host surface, but only Gate B can prove the installed Plugin experience on this machine. diff --git a/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/shared-package-checkpoint.json b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/shared-package-checkpoint.json new file mode 100644 index 0000000..65afd32 --- /dev/null +++ b/internal_docs/experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/shared-package-checkpoint.json @@ -0,0 +1,64 @@ +{ + "schemaVersion": 1, + "checkpoint": "desktop-to-shared-agent-graph-ui", + "status": "passed", + "date": "2026-08-02", + "package": "@looperators/agent-graph-ui", + "commands": [ + "npm run typecheck -w @looperators/agent-graph-ui", + "npm test -w @looperators/agent-graph-ui", + "npm run dev -w @looperators/agent-graph-ui", + "npm run preview:embed -w @looperators/agent-graph-ui" + ], + "automatedTests": { + "passed": 6, + "failed": 0 + }, + "browser": { + "engine": "Chromium via Playwright CLI", + "dev": { + "nodesVisible": 3, + "edgesVisible": 4, + "miniMapVisible": true, + "zoomChangedViewport": true, + "dragChangedNodePosition": true, + "keyboardSelection": true, + "relationshipInspector": true, + "loopPanel": true, + "stopConfirmation": true, + "wideOrientation": "horizontal", + "narrowOrientation": "vertical", + "darkTheme": true, + "lightTheme": true, + "consoleErrorsAfterFix": 0, + "consoleWarningsAfterFix": 0 + }, + "productionEmbed": { + "nodesVisible": 3, + "edgesVisible": 4, + "miniMapVisible": true, + "consoleErrors": 0, + "consoleWarnings": 0, + "externalResourceRequests": 0 + } + }, + "failuresCaught": [ + { + "code": "CONTROLLED_NODE_MEASUREMENT_DROPPED", + "symptom": "React Flow nodes stayed hidden and edges were absent", + "resolution": "Persist complete NodeChange state instead of positions only" + }, + { + "code": "DUPLICATE_DIMENSION_CHANGE_LOOP", + "symptom": "ResizeObserver warning storm after panel and resize interactions", + "resolution": "Ignore dimension changes identical to the current measured dimensions" + } + ], + "screenshots": [ + "output/playwright/agent-graph-ui-shared-checkpoint/graph-wide.png", + "output/playwright/agent-graph-ui-shared-checkpoint/graph-narrow.png", + "output/playwright/agent-graph-ui-shared-checkpoint/graph-light.png", + "output/playwright/agent-graph-ui-shared-checkpoint/loop-panel-wide.png", + "output/playwright/agent-graph-ui-shared-checkpoint/production-embed.png" + ] +} diff --git a/internal_docs/plans/2026-08-02-codex-desktop-agent-loop-localhost-first.md b/internal_docs/plans/2026-08-02-codex-desktop-agent-loop-localhost-first.md new file mode 100644 index 0000000..64a94b5 --- /dev/null +++ b/internal_docs/plans/2026-08-02-codex-desktop-agent-loop-localhost-first.md @@ -0,0 +1,570 @@ +# looperators Codex Agent Loop:localhost-first 轻量 Plugin 计划 + +- 日期:2026-08-02 +- 分支:`codex/looperators-agent-loop-p1-data-root-fix` +- 状态:实施完成;Gate A / Gate B 均为 `GO` +- 目标:把当前研究型 P1 收敛为普通用户可安装、以右侧 live review surface 为主的轻量 Plugin + +## 1. 已确认的产品决策 + +以下是本计划的约束,不在实施中重新讨论或自行改变: + +1. **localhost sidecar 是主产品 surface,不是 fallback。** looperators 是重图、实时、 + 可交互功能;主要验收对象是 Codex Desktop 右侧 Browser 中的 live graph。 +2. **默认 Plugin 不携带 Hooks。** 普通安装不能要求用户信任 + `SessionStart`、`PreToolUse`、`PostToolUse`、`SubagentStart`、`SubagentStop`、`Stop` + 等命令 hooks。 +3. **默认模式是 cooperative governance。** Governor 与 worker 通过 Skill 和 typed MCP + 遵守协议;默认模式不宣称可以强制阻止任意 Agent 结束,也不宣称能观察每个原生 + tool/subagent lifecycle event。 +4. **Hooks 只可能成为未来单独安装的 advanced governance mode。** 本计划不实现该 + 模式,也不允许它阻塞默认模式。 +5. **Inline 退出核心路径。** 本计划不再以 `::codex-inline-vis` 为完成标准,不继续修补 + inline host。已有 inline 实现只在 localhost 主路径通过后再决定删除或保留为可选 + 静态摘要。 +6. **右侧 surface 的准确名称是 Codex 内置 Browser 中的 localhost Web App。** 当前 + 没有把第三方原生 Artifact 创建能力当作公开稳定依赖;可靠基线是返回可点击 URL, + 并在能力可用时帮助用户在右侧打开。 +7. **looperators Desktop 现有图 UI 是视觉与交互的权威来源。** localhost surface + 禁止从零重做一套“相似的图”。必须先从 Desktop 现有实现抽取可移植组件和交互原语, + Plugin 只提供 projection adapter、控制 callback 和 host glue。 + +### 1.1 Desktop UI 复用边界 + +当前 `@looperators/agent-graph-ui` 是一次简化抽取:它保留 ReactFlow、节点/边选择、 +zoom/fit 和基础详情,但没有完整复用 Desktop 的图产品。以下 Desktop 模块是本次抽取 +的 authority baseline: + +```text +src/components/session-graph-panel.tsx +src/components/canvas.tsx +src/components/loop-panel.tsx +src/components/relationship-inspector-panel.tsx +src/hooks/use-canvas.ts +src/lib/graph-view.ts +``` + +应最大力度直接复用或提取到共享 package: + +- ReactFlow canvas shell、Background、Controls、MiniMap、pan/zoom/fit; +- Agent node 的角色、provider/model、状态、报告/verdict、选中与 activity 视觉; +- relationship edge 的 routing、label、active/recent/pending 状态和选择交互; +- node/edge/pane selection 与 keyboard focus; +- Relationship inspector 的 from/when/then/gate/firing/stop condition 结构; +- Loop panel 的 lap、当前责任角色、latest verdict、blocking issues、recovery、timeline、 + stop confirmation 与终止原因; +- light/dark theme tokens、responsive layout 和 presentation-level node dragging。 + +只有依赖 Desktop runtime authority 的行为允许通过 adapter 替换: + +- `runtimeApi` mutation; +- 打开 Desktop chat、diff、provider settings 或 workflow builder; +- 新建/连接任意 Agent、修改通用拓扑、freeze cluster; +- Desktop 持久化 node position。 + +这些行为不得在共享组件内部硬编码。共享组件暴露 typed callbacks 和 capability flags: +Plugin sidecar 有等价 authority 时接入;没有 authority 时明确隐藏/禁用并解释,不创建 +假的本地行为。节点拖拽可以作为当前 Browser session 的 presentation state,但不能 +改写 authoritative loop projection。 + +实施顺序仍遵守此前约定: + +1. 从 Desktop 现有实现抽取/扩充共享组件并独立验收; +2. Plugin localhost surface 使用共享组件并完成 Gate A / Gate B; +3. Plugin 验收通过前,不修改 Desktop 的 import;Desktop 后续切换到共享 package 是 + 单独工作,不阻塞本次 Plugin 交付。 + +## 2. 为什么改线 + +当前 P1 已证明 typed report、有限 loop、projection、共享图组件、sidecar 安全边界和 +真实 subagents 都能工作,但它作为普通用户 Plugin 是 **NO-GO**: + +- 七个默认 Hooks 带来项目/定义信任、hash 变化后重新信任和跨版本字段耦合; +- Hook readiness、native agent identity binding、prepare/poll/bind 与 continuation + governor 把核心流程变成一条脆弱的宿主生命周期链; +- Plugin source、安装 cache、已启动 MCP process 和 task capability 可能同时处于不同 + 版本; +- inline 是非公开宿主协议上的只读快照,却占用了大量兼容与验收成本; +- 当前 Plugin 暴露 15 个 MCP tools,包含 probe、legacy recovery、worker binding 和 + inline render,普通 Agent 很难稳定选择正确路径。 + +现有成果并非全部推倒重来。继续复用: + +- versioned store、canonical JSON、projection digest 与 typed report schema; +- `@looperators/agent-graph-ui` 的 package/build/test 基础,并用 Desktop authority + baseline 补齐其节点、边、inspector、loop panel 和交互,而不是保留当前简化版作为 + 最终设计; +- sidecar 已有的 `127.0.0.1`、随机 secret、HttpOnly cookie、Host/Origin 校验、CSP、 + bounded SSE、watcher 和 backpressure; +- preview/start/report/pause/resume/cancel 的领域语义。 + +## 3. 目标架构 + +```text +Codex root task (Governor) + │ + ├─ Skill:规定 cooperative review-until-clean 流程 + ├─ typed MCP:唯一 mutation/query 接口 + │ ├─ preview/start/report/control + │ ├─ durable store + verified projection + │ └─ review-surface lifecycle manager + │ + ├─ native implementer/reviewer subagents + │ └─ role-scoped capability → typed report + │ + └─ http://127.0.0.1:/runs/ + ├─ Desktop-derived full ReactFlow graph + ├─ live SSE projection + └─ authenticated pause/resume/cancel intents +``` + +核心 authority 规则: + +- store 和 typed MCP 是业务事实源;Browser UI 不从 transcript 推断状态; +- sidecar 只展示 verified projection,mutation 复用与 MCP 相同的 controller; +- UI 不直接调用 Codex collaboration tools,也不伪装成能唤醒或强制终止原生 Agent; +- native `agent_id` 不再是默认模式的授权基础;默认模式使用 role/run/transition-scoped + capability,store 只保存 capability digest; +- lap cap 在 typed report transition 中结算,不依赖 `Stop`/`SubagentStop` hook; +- pause/cancel 对 looperators 状态和后续 report/transition 立即生效,但不能强杀已经运行 + 的 Codex worker。Governor 在每次 worker 返回后重新读取 authoritative state,禁止继续 + 调度已暂停或取消的 run; +- 每个 pending action 使用随机 opaque capability;共享 data root 只保存 SHA-256 digest + 与 run/role/transition/revision 身份,不保存明文。这样 root 与原生 worker 各自的 MCP + 进程可以跨进程验证同一个 action。Governor MCP 重启后,root `get_loop` 会旋转当前 + token;因此 Governor 不得在 worker in-flight 时轮询 `get_loop`。该恢复路径不依赖 + `SessionStart`、Hooks 或 transcript。 + +## 4. 用户旅程 + +### 4.1 Preview + +1. 用户选择 looperators Plugin 并请求 `review-until-clean`。 +2. Governor 调用 `looperators_preview_loop`;只创建 draft,不启动 subagent。 +3. MCP 同时确保 review surface 已启动,并返回一个短摘要和一次性登录 URL。 +4. 用户点击 URL,在右侧 Browser 看到 draft 图、角色、lap cap 和待确认状态。 + +### 4.2 Confirm and run + +1. 用户在 task 中明确确认;Governor 调用 `looperators_start_loop`。 +2. start 返回 authoritative `nextAction` 和 implementer 的 role-scoped report capability。 +3. Governor 创建原生 implementer,把 bounded work packet 与 capability 交给 worker。 +4. implementer 调用 `looperators_report(done)`;controller 原子消费当前 transition,激活 + reviewer 并签发 reviewer capability。 +5. reviewer 调用 `looperators_report(issues|clean)`: + - `issues` 且未到 cap:产生下一次 implementer action; + - `clean`:进入 `succeeded`; + - `issues` 且到 cap:进入 `capped`,不再签发 worker action。 +6. 每次 report/control 后,sidecar 通过 SSE 更新同一张图。 + +### 4.3 Sidecar controls + +- `pause`:立即把 run 设为 paused,拒绝 report 和新的 worker action;in-flight worker + 可能仍会返回,但其 report 会明确失败。UI 必须显示这一限制。普通 resume 后,尚未 + 被 root recovery read 旋转的当前 capability 可继续使用。 +- `cancel`:立即终止 looperators run,后续 report 明确失败且不得重新激活角色。 +- `resume`:恢复 durable run 状态。普通 pause/resume 不旋转未消费 capability;Governor + MCP 重启后的 root `get_loop` 必须旋转并返回新 capability。localhost 页面不能主动 + 唤醒 Codex task;UI 显示“已恢复,返回 task + 继续”,并提供可复制的短 follow-up。 +- `start`:仍要求在 Codex task 中明确确认;sidecar 不绕过对话中的确认门。 + +## 5. MCP surface 收敛 + +默认用户可见 tools 收敛为: + +```text +looperators_preview_loop +looperators_start_loop +looperators_report +looperators_get_loop +looperators_get_snapshot +looperators_pause_loop +looperators_resume_loop +looperators_cancel_loop +looperators_open_review_surface +looperators_close_review_surface +``` + +从默认 MCP tool list 移除: + +- identity/shared-root probes; +- prepare worker spawn、poll observed worker、native agent bind; +- inline render; +- unpublished-version legacy recovery/quarantine。 + +开发 probe 可以保留在测试目录,但不能继续污染普通 Agent 的 tool selection。 + +`start`/`report` 协议调整: + +- `start` 不再读取 `UserPromptSubmit` hook readiness;显式 user confirmation 由 Skill 与 + Governor 当前 turn 负责; +- capability 至少绑定 `runId + role + pendingTransitionId + action revision`; +- mutation 继续要求 stable `requestId`,重复调用返回同一结果; +- report token 只返回一次或按当前 action 重新签发,durable store 只保存 digest; +- cancel、cap 和 terminal state 立即拒绝全部未消费 capability;旧 capability report + 返回 bounded error 且不改变 run。pause 期间 report 同样被拒绝;普通 resume 后当前 + token 仍可使用,Governor restart recovery read 则旋转 token; +- 默认模式接受“持有 capability 即代表该 role”的安全模型,并在文档中明确 root 理论上 + 也能代 worker 调用 report;这不是强身份证明。 + +## 6. Localhost review surface 产品化 + +当前 `scripts/sidecar-server.mjs` 从 developer script 升级为 MCP 管理的 product service: + +1. MCP process 内维护一个 idempotent sidecar manager;同一进程只启动一个 + `127.0.0.1` listener,多个 run 使用稳定路由 `/runs/`。 +2. 端口由 OS 随机分配;每次 `open` 签发短时、一次性 login ticket,兑换为独立 + `HttpOnly; SameSite=Strict` session cookie。每个 browser session 只授权 ticket + 指定的 run,cookie path 绑定 `/runs/`;不能枚举或读取同一 MCP process 的 + 其他 run。ticket 不写 store、不进日志。 +3. 保留 exact Host/Origin、CSP、no-store、nosniff、no-referrer、client/backpressure + 上限;所有 mutation 只接受 authenticated same-origin POST,并要求 idempotent + `requestId` 与 CSRF token。 +4. SSE 继续传 verified projection + digest;重连使用 `Last-Event-ID`,projection 不一致 + 时全量重发。 +5. 页面使用从 Desktop authority baseline 抽取的完整 + `@looperators/agent-graph-ui` ReactFlow bundle,不使用 inline 专用 DOM/SVG + renderer,也不另写 Plugin-only node/edge/inspector。 +6. 开发时可以使用独立 Vite dev server/HMR;分发时 sidecar 提供静态 production + bundle,业务更新协议只能是 typed store + SSE,不能把 Vite HMR 当产品协议。 +7. MCP process 退出时 listener 干净关闭;进程重启后 `open` 返回新 URL。旧 Browser + 页面必须显示断线状态,而不是假装仍然 live。已消费、过期或属于旧进程的 ticket + 返回安全的失效页:“会话已失效,请回到 task 重新打开”,不得只显示裸 401,也不得 + 泄露 run、token 或本地路径。 + +借鉴 Lottie 的是:稳定资源路由、文件/状态事实源、live preview、浏览器与 Agent 都能 +观察当前状态。不会照搬它的未鉴权 dev server、Vite HMR 产品依赖、shell/npm 启动或 +通用文件删除接口。 + +## 7. 实施顺序:一个交付,两个 Gate + +本计划不拆成大量独立阶段。所有代码工作围绕一个交付版本完成,只设置两个必须关闭的 +验收 Gate。 + +### Gate A:source-level lean loop + live surface + +实施: + +- 先建立 Desktop → shared package 的 interaction parity matrix;逐项标记 direct reuse、 + host adapter 或明确不适用,禁止用新做的简化替代品冒充复用。matrix 是 Gate A 必交 + artifact;每项必须链接 Desktop authority 源文件并说明分类理由,“不适用”不能只写 + 结论; +- 从 Desktop authority baseline 抽取 canvas/node/edge/relationship inspector/loop panel + 和交互原语,保持 portable props + typed callbacks;独立 package build、dev server 和 + browser interaction tests 通过后,Plugin 才能接入; +- 从默认 Plugin 分发物中物理移除 hooks 声明;不能只加 runtime flag; +- 把 Hook/native-agent binding 改为 role capability 协议; +- 收敛 MCP tool list 和 `review-until-clean` Skill; +- 将 sidecar manager 接入 MCP,完成稳定 run route、ticket/session、SSE 和 controls; +- Plugin sidecar 改用完整 ReactFlow graph;inline 不进入该 Gate; +- 保留 store/projection 数据的版本化与幂等性,必要时为开发中 schema 直接升版,不做 + 未发布版本兼容层。 + +自动验收: + +- **Shared package 独立 checkpoint(先于 Plugin import)**:package build、dev server、 + production bundle 与 parity matrix 中所有 direct reuse/adapter interaction tests 全绿, + 保存 matrix、机器可读结果和关键截图;未通过时 Plugin 禁止 import 新组件; +- Plugin manifest/安装内容中没有默认 hooks;全新 task 不出现 hooks trust UI; +- preview 自动返回 review URL,且不启动 subagent; +- role capability 的合法、错误角色、错误 transition、重复、过期和泄漏日志检查通过; +- real root + implementer + reviewer 完成 `done → issues → done → clean`; +- cap、pause、resume、cancel、被拒绝的 late report 和 MCP restart recovery 通过; +- Browser production bundle 显示三节点四关系,并通过 Desktop parity matrix 中适用的 + selection、keyboard、pan/zoom/fit、MiniMap、node drag、relationship inspector、 + loop/lap/issues/recovery/timeline/details; +- Plugin bundle 不包含第二套 Plugin-only node/edge/inspector/loop panel 实现; +- SSE 实时更新 status/lap/active edge/report;断线和重连状态准确; +- sidecar 只监听 `127.0.0.1`,未认证、错误 Host/Origin、CSRF、重复 control 和慢客户端 + 测试通过; +- 一个 browser session 只能访问其 ticket 指定的 run;跨 run 请求与 cookie 复用被拒绝; +- 已消费、过期、旧进程 ticket 显示明确失效页; +- ordinary Codex task 不触发 looperators 命令、不写 store、不出现 hook failure。 + +Gate A 失败时不安装到用户 Personal Plugins,不请求 Desktop reload。 + +### Gate B:fresh-install + Desktop right-side acceptance + +前置:Gate A 全部通过,source cleanly packaged。 + +验收: + +1. 临时 `CODEX_HOME` 执行 isolated plugin install,安装包中无 hooks、无重复 Plugin、 + source/cache digest 一致; +2. 最小环境启动 MCP,验证 data root、Node runtime prerequisite 和清晰失败信息; +3. fresh headless Codex task 只使用 Plugin typed tools 跑通真实 cooperative loop; +4. 更新当前 Personal Plugin 前先核对已安装版本/cache/process,不通过连续 reload 猜测; +5. 如运行中 Desktop registry 无法加载新分发物,只在所有自动 Gate 完成后请求一次 reload; +6. 新 Desktop root task 创建 preview,用户通过点击 URL 或手动把 URL 打开到 Codex 内置 + Browser,右侧显示 live graph。宿主把普通点击路由到外部浏览器不归因于 Plugin + failure,但 Gate B 仍未通过;只有“Codex 内置 Browser 无法呈现该 localhost 页面” + 才判定 Plugin surface NO-GO; +7. 公开验收截图只保留裁剪或脱敏后的右侧 Browser surface,必须显示三节点关系图; + pause/cancel 至少验证一个真实控制 round-trip;不得提交无关 task、用户或系统元数据; +8. Inline 不属于 Gate B,不得因 inline 未渲染而判定本版本失败。 + +Gate B 完成后,才清理默认 Plugin 中已经没有调用者的 hook/inline/legacy 实现与测试; +清理必须单独验证,不与首次 live surface 跑通混在一起。 + +## 8. 测试层级 + +### 每次改动 + +- contracts/store/controller unit tests; +- sidecar HTTP/security/SSE tests; +- shared graph model/component tests,以及 Desktop interaction parity regression; +- MCP protocol tests; +- schema validation、syntax、lint、`git diff --check`。 + +### Gate A 验收 + +- production sidecar bundle browser automation; +- isolated data root 下的真实 typed MCP server; +- 真实 Codex root + 两个 native subagents; +- restart/cap/cancel 故障旅程。 + +### Gate B 最终验收 + +- isolated install; +- fresh Desktop task; +- 右侧 Browser live graph 与一次 interactive control; +- 裁剪或脱敏后的右侧 Browser surface 截图。 + +不使用 transcript tail 作为协议或通过依据。原始 prompt、完整 worker transcript、token、 +cookie 和 capability 不写入仓库 artifacts。 + +## 9. 明确风险与非承诺 + +### 9.1 无 Hooks 的能力代价 + +默认模式不能保证: + +- 拦截任意 root/worker 的 Stop; +- 观察全部工具调用或 native subagent lifecycle; +- 把 native `agent_id` 强绑定到 logical role; +- 强杀已经在运行的 Codex worker; +- 在用户只操作 sidecar 时主动唤醒空闲 Codex task。 + +这些限制必须出现在 README 和 UI 状态文案中,不能只藏在内部文档。 + +### 9.2 Browser 打开方式 + +支持目标是:返回明确可点击 URL,并在当前 Codex capability 可用时协助打开到右侧 +Browser。Plugin 不承诺第三方原生 Artifact API,也不把自动打开作为数据正确性的 +前提。 + +### 9.3 Node runtime + +当前 `.mcp.json` 以 `node ./mcp/server.mjs` 启动。Codex Plugin 安装本身不等于目标 +机器一定具备可用 Node。Gate B 必须记录真实 prerequisite 行为;在对外发布前,必须 +二选一: + +1. 未来分发自包含、签名/校验的跨平台 runtime;或 +2. 把 Node 版本作为明确 prerequisite,并提供安装前检查与可操作错误。 + +这不是 sidecar 架构问题,但它是普通用户“一次安装成功”的独立 release gate,不能 +继续隐去。本交付只验证当前 macOS/Node 环境的 prerequisite 与清晰错误,不设计跨平台 +runtime 打包/签名;后者进入对外发布前的独立 release plan。本交付不冒充已经完成 +跨平台分发。 + +## 10. 预计修改边界 + +主要修改: + +```text +plugins/looperators-agent-loop/.codex-plugin/plugin.json +plugins/looperators-agent-loop/hooks/** # 从默认分发移除 +plugins/looperators-agent-loop/lib/control.mjs +plugins/looperators-agent-loop/lib/store.mjs +plugins/looperators-agent-loop/lib/projection.mjs +plugins/looperators-agent-loop/lib/identity.mjs # 收缩为 role capability +plugins/looperators-agent-loop/mcp/server.mjs +plugins/looperators-agent-loop/scripts/sidecar-server.mjs +plugins/looperators-agent-loop/skills/review-until-clean/** +plugins/looperators-agent-loop/ui/** +plugins/looperators-agent-loop/tests/** +packages/agent-graph-ui/** # 按 §1.1 parity matrix 抽取/扩充;不以 sidecar 当前最小需求为上限 +internal_docs/** +``` + +Plugin Gate A / Gate B 期间不修改: + +```text +electron/** +src/components/session-graph-panel.tsx +src/components/canvas.tsx +src/components/loop-panel.tsx +src/components/relationship-inspector-panel.tsx +src/hooks/use-canvas.ts +src/lib/graph-view.ts +shared/graph-state.ts +plugins/looperators-agent-loop-p0/** +/Users/observedobserver/Documents/GitHub/lottie/** +``` + +Desktop authority files 在本计划中只作为权威来源;把可移植实现提取/复制到 shared +package,但不修改 Desktop import 或 Desktop 行为。这会产生一段有意、短期的重复代码。 +只有 Plugin 完成 Gate B 后,才另行把 Desktop import 切到已验收的 shared package 并 +删除重复实现。 + +不移植 Desktop sessionManager/workflowKernel/provider adapters,不迁移 package manager, +不开发 MCP App iframe,不创建通用 Canvas editor。 + +## 11. 完成定义 + +本版本只有在以下结果同时成立时才是 GO: + +1. 新用户默认安装不出现 looperators Hooks 信任流程; +2. fresh task 可以 preview,并在右侧 Browser 打开受保护的 live graph; +3. root + implementer + reviewer 通过 typed MCP 完成至少一次 issues→clean; +4. cap、pause、cancel 和 restart 不会产生新的错误 transition; +5. UI 实时反映 verified projection,并至少完成一次 interactive control; +6. 普通非 looperators task 零 hook、零写入、零干扰; +7. 裁剪或脱敏后的 Browser surface 截图证明右侧图真实显示; +8. README 清楚说明 cooperative mode 的能力代价、Browser 打开方式和 runtime prerequisite。 +9. Desktop interaction parity matrix 中所有适用于 fixed review loop 的项目均由共享 + package 提供;Plugin 没有并行维护第二套图组件。 + +若第 2、3 或 7 项失败,本版本 NO-GO;不得用 inline、普通浏览器静态 HTML、mock graph +或单元测试代替。 + +Gate B 后只决定 inline 代码是删除还是保留为可选静态摘要;本计划不实现新的 inline +能力,也不重新打开 inline host 兼容工作。 + +## 12. Fable 5 评审问题 + +请只评审以下高价值问题,不扩展到 Desktop UI、MCP App、Yarn、通用 Canvas 或未来 +advanced Hooks 实现: + +1. 默认无 Hooks 后,role capability + typed transition 是否足以形成诚实、可恢复的 + cooperative loop;是否有被忽略的 authority 混淆? +2. MCP-owned sidecar manager、一次性 ticket、cookie、CSRF、SSE 与 control mutation + 的边界是否足够安全和可测试? +3. 两个 Gate 是否聚焦核心交付,是否仍混入会分散注意力的工作? +4. 哪些现有模块应直接复用,哪些必须从默认分发物中物理移除? +5. Node runtime、Browser 无法唤醒 task、不能强停 in-flight worker 是否已被足够明确地 + 表达为 release/product boundary? + +## 13. Fable 5 评审与最终共识 + +- Claude Code:`2.1.218` +- 模型:`claude-fable-5` +- 模式:只读 `Read`,无 Bash/edit/web/subagent +- verdict:`GO_WITH_AMENDMENTS` +- blocking:无 +- scope drift:无新增实现范围;明确阻止重新实现 inline 和在本交付设计跨平台 runtime +- accepted amendments: + 1. 初始建议由 MCP/action epoch 接管无 Hook 的 interrupted recovery; + 2. 固定 pause/cancel/cap/restart 下的 capability 失效语义; + 3. browser session cookie 绑定单个 run; + 4. 区分“点击被宿主路由到外部浏览器”和“内置 Browser 无法呈现页面”; + 5. 为已消费、过期和旧进程 ticket 提供明确安全失效页。 + +评审证据: +[fable-5-plan-review.json](../experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/fable-5-plan-review.json)。 + +Gate A 真实原生 subagent 验收随后证明:root 与 worker 使用不同 MCP 进程,进程内签名 +epoch 会误拒绝合法 worker report。实现因此改为“opaque token + shared digest”,并用 +三真实 MCP 进程、Governor restart rotation 和真实 issues→clean loop 重新验收。该修订 +保持 Fable 要求的失效语义,但移除了不成立的同进程假设。 + +修订后由 Fable 5 再次只读复核,最终 verdict 为 **GO**:五项 amendment 均已在规范 +层面关闭,无 blocker、无新增 scope drift。双方共识是:按当前计划开始实施,只使用 +Gate A / Gate B 两个验收门;不得在实施中重新加入 inline、默认 Hooks、Desktop 改造 +或跨平台 runtime 打包。 + +2026-08-02 用户进一步明确:localhost 图必须最大力度复用最早的 looperators Desktop +图组件和交互,不能把当前简化的 shared graph 当成最终设计。本约束已补入 §1.1、§2、 +§6、Gate A 和 DoD。Fable 5 聚焦复核先给出两项措辞修订:shared package 的范围不得 +被 sidecar 当前最小需求限制;parity matrix 必须是带 Desktop 源文件与分类理由的 Gate A +artifact,并在 Plugin import 前设置独立 checkpoint。两项均已合入,最终复核为 **GO**, +无 blocker。 + +## 14. 实施检查点 + +### Checkpoint 1:Desktop 图交互抽取(完成) + +- commit:`b524f481 feat: extract desktop agent graph interactions` +- shared package build、unit test、dev/prod browser acceptance 均通过; +- production embed 显示 3 个节点、4 条边,无 console error/warning、无外部资源请求; +- Desktop authority 源文件保持不变,Plugin 验收前不切换 Desktop import。 + +### Checkpoint 2:无 Hooks cooperative typed MCP(完成) + +- 默认 Plugin 不再携带 `hooks/hooks.json`、hook collector 或 hook readiness gate; +- 默认 MCP surface 收敛为 preview/start/pause/resume/cancel/report/get loop/get snapshot; +- start 返回绑定当前 pending action 的短期 role capability,明文 token 不持久化; +- wrong-role、stale-action 和 cancel/terminal token 均拒绝; +- pause/resume、cancel、restart rotation、跨 MCP 进程 report、并发 report、幂等重试和 + lap cap 均有自动化覆盖; +- 验证记录: + [cooperative-mcp-checkpoint.md](../experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/cooperative-mcp-checkpoint.md)。 + +下一检查点只做 MCP-owned localhost live review surface,不恢复 inline 或默认 Hooks。 + +### Checkpoint 3:MCP-owned localhost live review surface(完成) + +- MCP 新增 open/close review surface 两个 typed product tools; +- 每个 run 使用 `127.0.0.1` 随机端口、短期一次性 ticket、HttpOnly/SameSite/run-scoped + cookie、同源 + CSRF control; +- 页面直接打包 shared Desktop-derived ReactFlow 组件,不维护第二套 Plugin graph; +- verified projection 通过 SSE 更新,pause/resume/cancel 写回同一个 typed store; +- MCP stdio 集成测试验证 open、ticket redemption、page load、pause/resume、close; +- Playwright 真实浏览器验证 3 节点、4 关系、node selection、pause→SSE paused、 + resume→SSE running,console 0 error / 0 warning; +- 验证记录: + [localhost-sidecar-checkpoint.md](../experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/localhost-sidecar-checkpoint.md)。 + +下一步进入 Gate A 的真实 root + implementer + reviewer loop。Codex Desktop 右侧 Browser +隐私安全的 Browser surface 截图与 isolated fresh install 仍属于 Gate B,不能由本 +checkpoint 代替。 + +### Checkpoint 4:Gate A 真实 native-agent loop(完成) + +- 首次真实 run 发现并修复跨 MCP 进程 capability bug;进程内 HMAC/epoch 改为 opaque token + + durable digest,明文仍不落盘; +- 三个真实 stdio MCP 进程分别承担 Governor/implementer/reviewer,typed report 通过; +- 新 Governor MCP 进程会旋转当前 token,旧 token 被拒绝; +- Desktop-bundled headless Codex 创建恰好一个 implementer 和一个 reviewer,并复用两者跑通 + `done → issues → done → clean`,revision 5、lap 1、terminal `succeeded`、2/2 tests; +- 全程未加载默认 Hooks、未使用 Personal Plugin、未 reload Desktop、未用 Node 脚本模拟 + 协议; +- 验证记录: + [gate-a-real-loop.md](../experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-a-real-loop.md) / [gate-a-real-loop.json](../experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-a-real-loop.json)。 + +下一步只进入 Gate B:重新执行 isolated install probe,然后更新 Personal Plugin;只有自动 +安装、版本/cache/digest 核对完成后才允许一次 Desktop reload 与右侧 Browser 验收截图。 + +Gate B isolated preflight 已通过:Desktop-bundled Codex `0.146.0-alpha.9.2` 在临时 +`CODEX_HOME` 中安装 `0.3.2+codex.20260803073424`,只出现一个 looperators record,87 个 +文件,source/cache digest 同为 +`59b77135857193515340769cc46129748e35c24379b14d8e9067490f2740cb15`。临时 HOME 已清理, +未修改全局配置。证据: +[isolated-install.json](../experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/isolated-install.json)。 + +### Checkpoint 5:Gate B Desktop right Browser(完成) + +- Personal Plugin 最终加载版本:`0.3.2+codex.20260803073424`;Desktop 插件详情显示 + 1 个 MCP server、1 个启用 Skill、无默认 Hooks; +- fresh Desktop task 使用 typed MCP 跑通真实只读 loop:恰好一个 implementer 与一个 + reviewer,reviewer 返回 `clean`,run 进入 `succeeded`; +- 成功 run: + `run_6fc56d7d04232a324a59cd132a18b8246db045adc291eb3a2540f8746f9f22cc`, + projection digest: + `bef9a9a2541d8c3a60dde9bc3170010dbdf4d8e38aa3870564a3cae385e3ef16`; +- Codex 内置 Browser 的 DOM 与实际截图均确认 `verified / succeeded / live`,并显示 + Governor、Implementer、Reviewer 三节点、governs/handoff/feedback/verdict 四关系、 + ReactFlow Controls 与 MiniMap; +- 独立 control run 从右侧 localhost UI 点击唯一 `Request pause` 按钮;DOM 与 + `looperators_get_loop` 均确认 `paused`。该 run 未创建 subagent、未提交 worker report; +- 公开证据保留裁剪后的右侧 Browser live graph,不包含无关 Codex task、用户或系统元数据; +- 安装调试确认:外部 CLI 更新不会热刷新已启动 task 的 dynamic tool registry。可靠开发 + 路径是安装后打开本地 marketplace 的 Plugin detail,确认目标 version/MCP/Skill,再创建 + fresh task。一次性 review ticket 只能导航一次;重复打开应显示安全失效页。 + +证据: + +- [Gate B 记录](../experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop.md) +- [机器可读结果](../experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop.json) +- [右侧 Browser 页面截图](../experiments/artifacts/2026-08-02-codex-desktop-agent-loop-localhost-first/gate-b-desktop-right-browser.png) diff --git a/output/playwright/agent-graph-ui-shared-checkpoint/graph-light.png b/output/playwright/agent-graph-ui-shared-checkpoint/graph-light.png new file mode 100644 index 0000000000000000000000000000000000000000..b3606b0cfe3e27e112a9c5fa062ad7cdbdba5027 GIT binary patch literal 163783 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 CL~IQJ literal 0 HcmV?d00001 diff --git a/output/playwright/agent-graph-ui-shared-checkpoint/graph-narrow.png b/output/playwright/agent-graph-ui-shared-checkpoint/graph-narrow.png new file mode 100644 index 0000000000000000000000000000000000000000..77ad23e3236972d83669256b3b0962b7d6fb7fe8 GIT binary patch literal 119667 zcmdSBWmr_v8u&}6gp$$J8XEW@*)?VxF-#cG5)D+1`7)Y?Nu*lviz0tzL!U@E}!VM+D0j{*a zqnp9PqQrXlM)reO#*qm=n6ZCyCBc61rCX<&m3`5>N2&?+HdGK@0xVC;V*NGS0C;~RdD3+&7ax;&%Pi*9N#s5k!nSB_ zGt$z+7pTUh?}FR?QID~WK14V5_aSl8Ecx|6O^Ye54OBI>2hvOqs6{+ch@(;yxnJP} zzFzk1K*O`YEfBT&!le*f+7ooX4#{C7mO2zW8Rp$LGpQlF0F08GsLH<{QnPT@#DH{VY7uma-j9rIU zrv6uTg_#~=r;04z(^s>rU+}!JP`2)S5f^_t3QD~5jPKjcI%+^lb;}X!5v&yAN6uUK zmf{oi1Bptg17+$>-i`yydPH=)GY+yyyx2*1lDs|r@-5la2ce^960$%<$ozSLw_z## z<6HY#{7=MB+8mdgA9CjuiNjil2b*FguYdc)C84VUD3{ockgf@6Ckv4x0llv6tg+kj zZZ>45!Kw0WvmY;{t1vr&wodAa`ikd5EqBrKPskm%cA=WQLugV`5(bT0a#gW-_`+eK zOJJ4_TNvwS9fbe$;)g0zP~_Snz|16XjS}iw?hh9eGtdH z{QP{>vG6vtIV(D`<$ZiVs1$gA<>NtXh|x__n1tCZYhRB`c{OSyJAAH@tX!wnS)-LzW>eo4vp(}BHQrGPY6Abf9VN1 zK2DIj6oN^M?P8d}Lpkx{qy=_|*j2Pmn?9Xs7I)aN ziun+Q6R+cx7^YKS6d7!l;nK&W@1mYARGyQAWjI-5%|GD0o9S7~x#YDu3PB4}9Fqi^ zv;e!K{Wb1mT{;~XMo{NfTf*JuC3Pd7kmJ$~1_fhw9gsC@a18TjP`X5+VI6n(zfs-z zBlqb}xwOL3i%uP+o7W)}Qr#*VifTSSV#-VbBK&ercLeA|Mnyz=db;pF)>pQCD3sFA zhu(KMsk{}wf^rzk=Tm4L*&RbGO5&NH=O>#IJmKOZJikXT5GUr@9ZKxHTr6R1sX;Wt z=$wjm(TRIUaNK1OD}@v>;(jlCkdLhwRJE5Xfxx1liz6xt=LHF#1rf4@%CWgzA7#rv zJ!qD3)Bu4fIE`I;b)Kd@IF--o%gf9AO2yU1^y#k>Z5hT4C)6--a9|*?8IW?GHFb$I zj+2<)@&?Rd3oJmxdu~SeLL|c*Z-FG{-f1xYMb{yE_0H6PFITZInz6%ic>$OT<=g8p z^7g$vm3GugOKD~MgPHKk4$Kpd?$#)?gp5=QYKO_=zXmL2ht7qyh`ko{;)xf}DJ`Qu*6WhHH zoHtz0B^T6Mm%P5w9!ab;W(#W8!|Juxj)HYKb)c{Hs0!bUo^C|(BeoLmTCNvLyMDD{ zd@PoF&OderVyv^g`;Hq{g={9J8Y?e=Psu;x%J%Dyl^(;uAnd4d>nzd3OwX0z#w&a} zEW;t&N~J zu(BPA(|nI!-R|DozRHx@zoA)pjc*NaZweNsG6i>cPjkjUoJie{Wk zk2~~zLab;0Cr!I5Dk^+UTX{OAy4{vIxf@*}gsg5OF3#@bY3@D&0W9{XTC@1BAtfb4 z!Yf|Kc~N|Q!g-pt5BI;T@KqEQr3gFmy=Puha6SBZ)#1Dze4kyRJGX~i9LN4PH)8C~ zP#I|p-O>KT`xYe=U}q2g)oizu!aK6`5Q(j<%-%{_O$>m!8~gs)x?A zHq*WwNf(BFVUGz6gUnW#R5tCDh`I%YvFg|Tj1gnt!M4EKyj<~xbyH{ouf*BoK>CtRxc!xp9iaya= z<}S=I)YUEUx#sVc+aIj6Y7uhNO_|1o68h|*aelanG|@OmW)&I$VI?I&F+Ws)wTGgWm%|2CpY`F&%pWX8e%E<(gx2W61suh`4UT$ zB=>#gVxiFKjFgQgRL>OqyLrYEa5JLu^m02H6u9Yiv#vOni4tZC7P+wK%=hn?dSn(fr0*L2ysL{ zvHb@?Yht+uw?$y&BA>q>WifUxq~@5ATARk|5hQ3Ma^(9~2q>QIdFyOOfgGptEXi*) z+u>w~tiDH@?q{gA5Q>Lf*9ZB>h$21qoPq*{1JS1)|iiSR#rQCZ%K6mFt?BoxDr+)^q*+#?=j4S=ZRKE_Wt}dlfOsX3b{Q) z?H6X3umq2C($4@cjuk0vzNUX?H2s6A2_}}A@elED(sc$I<$?O@YUSm$ko~#MKXS?k zOTR~Vj5S3t7!?0gl9@m5?sd=vD`|M$b9y0q1?r<*&Iu&Wwe}Ll926gNzv+^}ATT%V zD-EqYwDp*oF=3wmxoJk+OIM>r_NJeT=Rw=r|NsBRYL%f-U8U0j$|b`E~_LH!VL zdOm1_ap~-_;BQWP8|~*O0becS$B$b;qXt1Jq@GU1O2^o@f;^YWBz>yWQr|JPvgzd(aZbxM8pyi9LnBx_B?VH>q3X2!vQ0C(t5!sa(7E=rWI^Q zyMg~yDv%v@)}Ot`_-D+T!;yX7-WV;9GCRDlE0hy`SkXdIe*&&#nW2TX!O1uNyM;j> zIEqFSfNjaP)i%RwyP8Rd1_tx8>mNDISLe$U9$TqEO?{6At+t0~I$7PP@3;B5>p`qD zTo@YO(}xK_vwRNT32a$s3J$kpL-#H4oRF9MxXB+!X6UfYoAoMJd~6n`#7Sv+LS>y^ zGX}(wRV3k(&p|Ht;-S;b(gEFo5h%4H=%FNU2n++0M&y9a%m@=BIC&#)`lEshe*L1S zrM?cEsRTtl#&~A8`}>wk|KzgqE&N$Xm;>VFBVI?i%zyJ3!zY6FqK8G1%;tt1-5H`2mb!X7>0c4&P&a zwvvv>NLTkNB5b;=r}s<*1xA8>Uj(3z8w4~W$eBrUU7TN2NI2UD1YlZV3coXi93o!~ z(44WS1^p!9?NkXb_f6cNE_QqOjyRHF&P@3oF+HUF3MW}Wz&hK1r!xrc*t}0Lhr!m9 zm5c<@Ibzq--ntTL;^S}+7!nVtvUBV2L*}b3p*2KfSYCaULCu>nE#SI_&o&&jfT&e7 zsj2>bHZ(RSq`WgGfpd%(bI;k^8}Ubx)eXK3FDNYRQ5yq}9Qh_i-#_mc2a*NB;0sKw zLheEU|GG&TyYX8b`E!w5DISs%s#eQkt5Zd%Ho+lW0!q>#g214NC?=tZ&ChIr?}@j# zrom7qX0~gf8VY9lZ3TW#+_wk0L**Ti-0ez_k7qHzFmY-}h>fK4@{Zc>s7s?e>?)dk zwg%#zRiA0SF*g15h({TmOx*nza0Y1iwt$!>__=nQ;Tn<<-6_SvV+r2C0FFVUgE_E? zAKtxlQB$iw(_f!bm&Q*IVw;^(Z-6JOK(Sg#`*^Bm^uo+SGFQFAaIH+8?ZzbGt+4iV zAgFZfA&ckQ&Z&{hE!fyN=E`u+Yd+lwW)MBY;;FC=*_@XX&M|GGkh&4LM?Z(b$A;Xj z6FRD$^b$!uEPBk@dj~wL9er&CR_@x}bgb#gqS88{$Kg6}M}0ABJ86Rle3|Wxna+_7 z2|(HiMgH@(NGg(dvrzmgZYi0a%Cet``OH#0kZ{)1E<#ujPIErzM_BRUV}d2;9(QOo zUXU##r-&0r`l#}q0Dm+~8{N^*&ZAep*GDd!eUwMfLJZ816KHn zb1gm@smvFGOu&o&BF1KU0XX~YFDOpK9~t5Xtk=z&Qp_&Cr8B|$`p=mH9AWsBddFkS z_s%^^P?GSyfk>KRSPKmMM*Aw=0ZU~8u%Qf()0BvJGhBzhJ|)laJuv`crVzu0jozrg z%(;Nq=iMFpwPD#q-2SL@0jENk`bFn>>-o^(0dp4AH8e*4&Dj5P0bmwmY1>DXWxJE(4Nw{wlC z-n0sT8(xt2#9vuLW}+!po>Ey_{X0XQhJGA-fuoH+kIlbzvkH9#WqtMb^FH&I$ujmh zZ%bW%L23O&wFeCgU zUO`1g#V-rOZ$|X?CBCDQ%#SsoZzat8-rtlP(HRg19Tu+}!8hA-lBst7h(r z?ZM#Kfv!(?Y{pL-o?srrTuTGCL+r534ct%vQYL||Br@d?r-|@`4|2Z{h$SL~l-Gh6 zm9E0ENQ}`PcNmoLlJnHKwBj_*1@HUrRsVh%4Did)M>XT#fcqX85%@ynfo*e7s$z~R z8v?hOyhbk0{N{As(sG+JwR6fWAflJK&J4dx06JxR)I|U#Q5ZU)5XGXG{v@Aw!W>2` zcTuGDY+$m=T(QyW^!L(|#Fvduk$Qg0q--)WS$B^>*Um>z`T4aeWT%-b?sDY`W!Iq% zR&_>}38RU5Ih-XsW?e1L>ksB=LXSmi`+shKPb-4WD}6U?Rkz5~#~$myK3*)p&ZY|M zi#p8P*>AtDI?nDtSEg;`D=96_3-{V+r8oQ1JyYZo)cN=(L0yVf%8$rcM5Au;V^@~u z1;q~-9A##gsr*fhy(#!PCp3DiI~U`i*3V@c@hVovsH+#ZZo+%*plV-W8HyXlfYf#V zr1{~EU{FP;!=nK?0}%Cm5WhTmAZSs89L|%H8IKE{H|AD$APx-xw#clJ0oK0wr^VO9 z*8=SxaxSDi3^(I^w?5F4qj>}-RJY6NxE&|4`K213bzWVb-G3wZIzrDegO2^4W(DtO z!7(!E1x3T{Z$r?Q7O`3xziSz!p->!%u{>THdv)Txz^xB)b#={KiQX4Tm+!3q-5C^u zxxI)jf~$}c)$(@6hMuZU6Ga6Yad;@-R}%R@iKs6y?En8{r~c2h|KIaxY{Wort`zr%IlMpfqMVIOR4|ZZx}Hc_Q24`NT_;{{P)oi=F99`SGueCogLK0QPEJX#`Se7v+}uIn zI2L&un|*h87ZVnj$COGA_Vz>(J!&tlEiB~hn5}3jp@bu7# z-Co!d4jfEk2c*7bzI|w87jPp^@M_6l1G#5|aR1921t|`c_O!p3ml@OT7(~9TMbeBv z`LfNegKrr+eI=2Ql$4f`y!^lsh?9b(85tS>s70`@McrQbw9;56x}S_X`^I$>e|V>9 zkv3XXT3%XKXebJvC`8d+<=6IHM)&G!Y z&F$hG)(U^|vlhM*a1{Y-&v@yM)a=i?2MKRaF(d zZ5j_C%yK^GX_bVvT^vxX2Bc;jwX7$#kcxi}{xJ*kW+}n#E1AP3m$2wt@4umzl)9c+ zF4g6e$H8&QnL2Gplczxu<8K)upf3y0o1<9?tQy-}eU6WsRAm+2Ql-aQdeFw*22$_Dwr&?0GURmxMyYJ7R zqRt|m9zT@Kiaf6_<&!*|&4#47%)NN`Zs!T2v#Td9JzX(2H3vidaIGx8qK*Crvg~L1 zD-_1g`F_dTRn1ZA7O~$CWA@y5Xozn8*yS&MG_bh}*%kbBOclFiWMmYAhqocqKrD}9 zZiRoRXm=O~eBM!`Ta55%*V!6D*%-YRR%s$|j`poxgm6TIPc_YN}slZbjI~Jyf#+ zp3sy$EOT_0-r5@cCbad1>3A)?b3HQ%mOkk@I8mEwQx z-L;3YD|W5%D_H4!L;OsRT@M(g&^IOmac!u}*^=Ri1Dp=bZJP_eGEXziQSO$`16wLDD9 zSh9C^IChgG7$8XX{OTU=*5v%#G0@HR!oolow+$+onVK(J2hAiEpX~gRbcA(bwUzv% z@u(f89`<{Cn3i#$LK3qY!2-b!ko2*gS=fbBFulHt?an)5b2#|VE) z#+h6DMGb;~?QuB2x5(dMt61c32%?z~0!7j-*d%a?bCu@j7fUYkeo7a97woaHWpk$` z5_-VDK@g0?q~#B)Re4lmO#M-~^TzR=KDjSP`BP|&Ek{UmA@_6f-7dxKbdS>!btxZD zR6VZ(^5^r2msKEfKe51iU>f9b*68&=T*Db^fplvK^?Oav~gCcW@pY~MeUPokAZx1BOA zcep54r7I-?M+!Q`@gDv5kgNyL9-Bq1GY=+usxbdH(eafyLC~5I)ZaR-|na%6==2fLkzIorV!xVHO?cjYrwsTVdW|&WT zB)$x(G-?ZNXS1p#a`p{xq7hY z?MWcZe&%^ogwS0T^sw>Kl6(k!%;5ZR4BDQFym1rzef5E(mdbEg5-(o#>coJysR_ZZ z5EHgK=3U(ji|91ze1cm$^(^KSJO2AmCDaB6qDB6lhpNgdHH+WE65km5FnHEse|7%E z#V?pMiH#ec(`d#{7d1!be0E(9wxf``Bob(#^uULIP+hI|?!nfk2+|a?JjgX_u$QaC zdE5w%@EiEX9>n_ELgc188T6Upwljd@&*rExk5ToffrO7yG&rc zz`#E?ZA20;#&^9l%ie|nf8>(@O`CPL)%&w@UiO&LQiziyGIq?BRBLUB+;11m`4=W z2-i$BsPY@!q*%p`pZ;g_eru0Ocp>l8Y+J4dT&4P4md}Ek51Jve@9Dm+%EMP#>gKra zF4Bhl(A!+BkW<{u9kgHp+-S)d{ zH-S>m)jPaXSSv!>K|D>btbbD!^UHuM(}$KrS4TGhua1v<8aL-hj5O=t2!sXA_2Y#xZOgE{R%Trp>NHAkEYR7~4+ipZoK>=s$ zkZcHE@Tb{j=ka!wD(W)9bIuh^L1jqlP~ZVN&JQFTXjt*9vgU7@GtLum-I{CTV$m=( z+_;+XC3t1c0-ptSg!b^NB=e=9;7)>qI)zytU6=B)rqwsBj+$W0DXpo}XZt#DmD%!} zM6dNcYK6o;?^$$!K627Ud4Yao$FE&}dq20#Ns`DhH^1wIxjV*H=+;L9Eic=RJ1u&2thagayV3S7AtJjlaX@^;PaJ z-(t7JBsQ13X+w_fw(-Xe6?OFsLceQN>RQu^>jh_>au)hp8jz^i2JU1uo8;kVR??1^%_aYfdq z9wkDGbC9Qm&mwQKj@}0rWXu0@0eTEyQR-4&3$hWbUTFL!f}WDcT;kSK1kJ)N9{eRm zWl$07=Z{AUOr#Dc1RcZI5?lp?r1$jUc?dl`O{N$-d=9bvId+Y zu?gQxdm%NU>l9CL%N9*MjiX5!b@*t{+7-xom@NI{&-3c4tG^4?wkr{fidVJUs+sxY zZ^*jZb{<@pZa{Pi&Z|ij6^s+Gx!x~gJhxQ&6HX)`SBf>OOYn?ud|}Y+d)(h=6Ef0p z#0O!lK8V;^h1UGhjuD9e63-yJH+lh00(;-~sjG(d=*AlH{HGfJ;qYirQtPY^*SP;B zuXCFJzK6>30dMaF*0Vp^Rt+PBcm3H1`x8^}%7=EKW=F=zrK;^K1ZUVgf&9JP)Rj5kr%opZ_Jh#(>+R>nuWNj+TzlBa9*P|x8DU}h zBgxqi@Lwf?Dr3C|56a8<7k8#*4Etl=-g#f=R(2peil@lsBe9W}cPmW?k+1I1o#jxp zhQ`Ewrrzo4+EoaO_}(#e-M2XYT;7`LVv;l#r>FSA6F9dxJ$3Cuu2qz*<^VvVI&i)NqP-^)@a(418`qZ) za(MV-X=KEaxrJ5a8rlF;<$reMzW0V5=H%I?-)6SBlU<8$c2>D;5MTG6`>rj%g?y=% z++Md^hNE%I|x1u-jUcC5f`Kw7k2WYET$L zx|f1|X@4Ehl+)R&27-um34_!6nS2@Ozhlr5A9R!8`{JiVrA~xD^H#!|9Tu(TG(=&o zr3&AeN}I2a49H7EM$G%vZZGdfRIk1>FVgX57=b{mE#p`}M4%2pddYgZSqE}=Wv3Q% zJyE=MX6(E!Xr1kgAK6+h*8)F9!K4H^vQna)qj;!b&^VI3&Hi-IfY zJB<(1{+*p>U10Pi=S4EF5s_M&s(`rFm)I9XM8Bg7kYL?pa$Pk6`sG0ikg0@|_wx1R zfWy*krGr29pLXtWQPl9JK{4lcJq_U>o`5EpFnZ{_JFv zx|p1Yuvr%d+BIzEJpGu(Svjq#x{@!7=YE=8_5BwX+WH#a9K?gX_odGCyf$Djz!6Zp`z}4RM;s1Pi?$4`I`AP zIQpZy)}(22b|Z2#du@E7oU?0ksCym#OxLMorB+fjF8Bdn{nkPB;v?|A+>PmAK-+m# zrVa8OXy}=~<CTphcdz>B|(W1pU$ zmKTu+CV(w^<_uX|TA|M`8UX6!aM39z9((8W7m|?KI`0dgt$WaM;*;~;>{Ldm|Bq)m zOwJ@-ar&9`-h!{EthlsfZYRAIyI~#ZxqKB*fyl)Mhj+@6a~<8?YR`3f2q2CVIcByj zUv}im;G@DA)O;bVghdp1#o@RGOvr7zodTa&7XRs8X96+?@`B+5ap8b$>EA|l;bnAD z_UQ(n_a=%93XtQ{0b`@QopkS^h>WBpQ;i9;_23S(hKFJdNkp+ye!j|Vf}JgNw(EJ` zHv12~z40m6BEFml<3oz~fkNkb+PFr=5|TL<%1rK0wF(;?P-au{dpesgq*POdSVv#sf4V(3D%@`4&@y8 zKPu;r1@UsebzGL4QG&(kwRsaJHkz9YR3=nHjXKv+*%0r-^F2Efik31q>S-?H8IYyc zwfKwOFV9JCvDIPmLEMGgQhrDUp>ZztB-1mkhKQZZ@^X9P27R%v3B&s0H6_G%e_fVD z5&;&jEWfeA!YtCD9w4K7e))>;O}wu`X|%7))YL1$HAjSphu^hbax~yUUmwWxP?Cfx zafHTEqy|hc)IC2FSTB3UPmG7N_DgPq^v-{zQQ3PLZI{zZL(f{~5;@xtcPMMbcQF0`&>b~r1n1xCQ)e@heM zz1E)Y>Uxoo;JUeqtFRh9vYOM5+C1{_`~6q{h5Y0P?DbA zk6^i2ljnb$?f;tW(VMz9)A318(oS*0{fd_LEJ{4PgzvkfXfl%by;<@Ji8S)^P)vhp zO=ZWK)Y{z*T5(hNky7hv-eHbKX*#rQ>*IZx$ppY27B?A~kBNR9Gp}qCdtNSYT2v6T zd=t(3VGx|#g%uK3KeXy_3;iVn?xk~^lcyqoZeK(2Sx^d#1+>5;tAl6dyqCdF!0imGDNpa z8K>bPSfr-fO<5(>31MQ(qRR2TK785uOD>!y;*jd(&g zYE$2Oc<_a`>9m^{=Gj%WU8I$cy#sQCD-ZD(ux9H^O1fA6L>#c;JRoWEVi{NFqy0!~ zD8pttove4P-%LA_Qd)BmIc(U2tmYIJe!ZX%l1X;y5kgm`_t<~9)!U(d%knH%_viRp-Fc0~p}LwZM%vn6>MW)WG|#4~;95XNjii>J<5hL4aetjw z{H~ncAsa6Ijbpk2{md*@nc(=9?8DU zuge(I(z_W0Ou&g|a{*16K85~weY(>H0|Qq+ty((7($pj;{7O})io@breBj5q~}G)c5#EZhq;V17wy{?$I!51DI|)xZ5*?`JGe*Iq8n zKpHGRG(GJkXqF83ULNja<6946gxH}gk19<;sKTl9Gca`}n+Sva^MXy3q_ z($s+lviwL+_MuQuQ$#1yiUx_f`5ZC2Pev9^xpl$GB^++7z6bU@i_Ncp(24YE8??;# zP>G0PtH87JQOk$q~)w`lx74(1`p2Fl;@g>j;W*HCPoF@;rgBRCL4RqC(fF9 zq5%|Rwj%nl_^ZeZ^S%+FF6W25l(!zwI=*$3#17Jxb8u;5BBv0?b3(?{j>OmeRfS%?)`e_goK2J+$)^J z^o%XsLp%2#XwWrJ7*${_k#0#|Yjv|&q-9t%NFXCDEUZ(+ucVM{-I$N*q&_D%CSOIb zh~Htg+HzP5brfw#1(1*(x95xk{H>?A0PrWn?0-GKTc8@%%3%*{>vvjhCnF}R#r@2% z(y%H^C3M$RBq$a05Y!b{HMO?N`F|9DwvbCrj(vEKlGg8c z8bcxfhrt1*@#h2h(v6ZT3?atPmL$VJBloT8v)^++dxnEMU-E}28;82;H@=b#Sg*4l zzqCZ?cu&e@ZY4Q0FW@n8UiUGFKt{d<$-RQv?D+bfhz=E9d*=W?{YFt%I#1RgQa*+O zvJF@%>l@KzB{qTIg0tu*dKBuLPO|hu=yi^CpJ^EX_gxIm* z<+nq;dX)1OPfN>6-Ofa#ui3+>=)WWVG0h8NyJwm-;7RbNq&Qbikz0H-^RilKv^F2j ziNqSL9hGZ6Zkm{wI6oinWYcyz8RfZB><=q)+Z_X#zv;EEkTz2oz$4P}oBAD9^~)lQ zG<(c&u|KW>JmSsouT(WPZU={lbbQ8M7{qR%5ZC)T6u@2u+5==0?A4eE)i<%DTYw@3 z0W880@Wc7f+vFm-`r6mRLg8a#b~CJyl&)vK6gL1SocY=&yR}uK$p7l#@4xzK-rF?A zmo6K>fVylGK#x%F@^f<|cG4>yo3^c#gc&XX%#Q_fOT63y|MZDS&OE2M;v|@gQfA1( z0LYYWe?CmnjZ4U2ka=Kh6q=sKSYlh+ko2Q+d1L6ZIxx;zb9FkHk9%KqaOGDflH;w4 zTVs7*v4vYtlFk)la_^Pl&~)we^fVT|z}#5kugnF>p^M^Cu+ZUQ$d$W`|6mDOzBAFB zBzagGLonHudzaV8FaeXo0(>nTZYj|D7{aSY^1hszOcrt?j`$J2)Jt36}o-3Ed|fEA1I4W%vtl z7&g!KDgXjJqTc>%t7g7pY?jiCTbX1YgY%BNHoQxKhSqwep6L^(i8F^HWNBozXhk_5 z5AULmYA7E3r*T1vDPtw{FHpUob0Z+YA$QwJ0of3EUI1u$7?yyRhhu}|->jL{Mi=ut z%z|DK0oi2xQ#l9j(v_M>_rsae_uk$HR#s0Uac$ivQh*C3+-oHApC5J)Ld(mWJNj~) z-0pN!?_H<`?sq)+Dei z_lfW@sMX~2b5{s*pQ{IZySouie{k;8raS(Tf>nyC@&o|=wMu<2|Mas(-do&k^Lg8D zh`%EGL&LxTJN#jHvp?$Eq{ZVHfQ-wt@Xu^|E~L%}*a1$2eE^U=&mwLB++h6Q4lym` zFV|RC0?H6Or8kO>)nhJK0U1eC3K+7kWagI^6TpO}TsAm1DLG0&o(vLRG9pZv{X&qA zFtyx3K*#uDG(E)0G&Q^jv*MbP&XNsvh+zSJG zMUL9wjYUpH_y2RKoXHi1&48sLo?QUs*V_I;LLK;%Vl)GO`xCqn2mrgcdb@R{jb%w1 zjpBNg0z~Pz$BpToJz1~xR|^UXfOC4+24CrI=gWIB4Od|C+3Nyp_|9efcnlo$aA*Jl zty(y*WszE4WnEnz0JkvfgVq22vJZDXo27aqfxk>?FSc@W$lqY-!)?aj>1v?%V(YE%nD9OUwLpVJ8Jg zEUw_HZ|m+k8p{CZUQ!|gq8l6?J)EoR0r=o(>P=DbUuGEatG9QUZOMPTgC3B2R_4`q z18@`04vFz1&_J^XpvUUUlaTN11|HrLIA8+YHW)D?W)XDI0q#!R( ziQWOi2ObYznw)%KYfnND;$C;P@tg+-$MOE~E|HsS4NyR4l+R5|W4Nh#G5rNtz_rAU zf4~iPLVUcbj)94$=~v(yQ%@$g+BGK~_0Aws&_0cao{UVVjFrz5{mt*pma4f=IM~?M zuvUI;Swt9gAw7;h%uP(_YwA3zPY3?jxieB?Fdc8vybCPf$oUPplGhc6ty}Ko?jZP2 z+Q3*sbL`%)YF^rw*u?|QP_IPBX25lfAn-c{?e(M zXCnXd(&d~%x^jbvf24GWimRqHM1k)M<>m%ki~KnvmgXJH^z>7Zm=C8dDU+wXSw~f| zCv($^(pkQjOhttY4-X!mKDEb%J8RnaMQ-l--Al4l)m&#p{SH|agNOaMM`_PZ)t|Fb z;=gDo71NCS5%n3>Ov#f>+Kh;4tX}KTa}XpStX^)CZU;h`dKpxW^AG!bCL;E|s<5lQ zi7C1|COyu@WL$v&E$vkYGy`61SR>mpGi`?F$(z5zHLJ=7; z=`zipH(Nh`R`5Jsow?kfvK-!-egtg5Z-DNDMmB+_{ZOt5cF5)EKBdk0O;3$lYd$5D zYzhxcYF#nBsFSK>j8|-cSe-LbEUfE ztj?&RC-=weakTVx0A{E>3KA(5LVa}wLi#0--2PgKOzIz-ul4q3Pj^LGOLk!_w>S~F zSq&$An0<$_=gt(O{1jG_v3j;;6deJ+XP|5yUx~e7u9nU*(VHc=juP*)1&7$%KZHy7 zZ!W4jP)QDs&6{7YB0x!y&SFt#WW!zQ&DP-LB@=9U^%A+gT;d5^b=ji9M`dUDA3i!{ zJDc2nd~8!h8e;gn_9-~*n*?k0viU}Z1ll~h34uY&ij z`06rjFFw&_vop1-FW{@wV%Oa4e&H3}pCRu$IGyGHvFolz@T&fDR!pGOm-##Kqs6Qq zt@?@>dy#QOj&09|f>K1bA(6YTyh9^=0E>Pftu_+QY%)-99`bYac+-(5)Zy40H2cfa zTfMajR~Y|2|IMM@4!)&9mbZ&k1JkEtc%^Qu>+rQReWsVnR#|SsRK!ubZZ-Gi@i0w0 z^*i!m=~i6>qlc+ufe6I%GjP(K=^d*7?}VYgb!RsCTwd0DYx>@r84`CD|JM8|ui!9h z`@(V!J7ii(CNLtnVsKZ=_=CaHEo@4t&)gr|S&SOzt!$764Nn{&CqnlyqLMirZI6o|Zz8dUwNdE)@roE=oh?BR*1I zmyxM3bY@Fk2H#RS9$*2O!bBDPwu0Wjor|2B8FA#rza`qm| zO$dPlyxMSL_oILb)GartyfkbN;o+O=i0v0bOW@}v6Jm*x+e5-&lhXI zjF*R_2q?*cmWs;xyWYd}8D4v((NA=lPbVq_jz^Y;zFU1cVuJ_1HPw~<{=4NX2}$V3 zTxURqQwlHiE-g=nVmy0=yNK+= zY-&BCBqbMq6CYB?`$4(r(MR8|$}lh956op`Jqj-xES#6_5CydLQGcboegq#&z~je$ zk`IX>)8quJKD!Y;Fw1U*nZ_&T61-Ppu2%p3hyUm#q`RvHf0xnz+BCuE^aS>IqXkz68D6T9=5XwQL#ngHn&z{5Ov_ zUN{-sB5ZF!E2Y8qU{!v`vFzVK&asJ7QRa_P2GS8o)lIae+-~? z7n|wvi^Q|HRJR*VFGc*1zKx7XEKJCWQIqSi0lNMMfR+EO%KrJO2j^X^pR-8$Y=3r)`2e zPd}F#o(Jv<+Q5Ai)@2vuPVj(|&80WWq$2anhHzbjH+xy zgTp}-me%xGX1`osnS-A6U>xpwysod&hpynJ<2Y7CU*XHBFr@T#8UXmXjH-7Ov>nHo z`U>u(-@SSs#73Gv=UIt$^vwS})T2eW-?W_zvrjlf_g=)#A6rA@Ll7YK8}c737&=XAy%J2`0T8e(4Xsi@*>b(EDK zU+0cbe_Ye%o|w`5$uOxAZVDt=Id}+K;hF|(i=(LKJ|)CXuj^cHrn3d@!Z9UD`0~mK z4;yp}%aPAsP<$j~k-KU33sykC?pv3O9&39)WF9Z(!}y%MXu7_J$ZP`8C+{2)M?;NrHi<6HXRUgd#d~w&ZU{m92-SMs?&u_Ry;b3RiKX%;l-jJJA(Mzp=Tn9?; zd9^r4q9aKduj7lQ!?=-3P~qSU=6>as}HM|v7m3wE}P0A|i(`{1-5^!9S>V%&xLyqR&ab>%nU=k?$E|?(Q zscv^!2|s?dQMcznH<4GRs7q#NxXCQ$u>Lvnnwcm--~r`a$QeZa2aB7knMVX(N98~L ze+T;-+6FR|0jn!Kt{ewD+!T`v{}hQ!O_el*p{?&uw~4v3>MVx~r2Gk4oI4*mwPJ3A zw5^|Ta{8l23vKHQvsx=bcU|Bt&EJeC8b(IE!{?=y65<|9QtXN`M(y^RB0TLWPoRqC zgZ%C_t7Rgvs=Pbn`uu8<7qSnb?STCp_V0}VzP7=rwi13b`}eQoe6`C#ZR-C1L+JQD zZU`DN3>4oWw|~;*!@vD{S<1>u|MK%zB#p}SkLpS0bm21t zoNfEFJZSp)gUllhYHFh1$AI>FljHvo>2)jjqe@Vbd z3p>C5$L;wS>c+{`qPbKjCto>sY-)mOc{70KOzE)+Z31166%#XL=F#9YmHW0)6D8aMxh_W?lsazXUrzi-5-rX%YxOPEr8|8Dhe zE8~`LaLmD3rN+3q$>#WWZI(YVs-*&OJ;)G%9m)$jVhNc+mBxSFWj0KpR6 z-Q5{1c#y%}2Z9d}T!Kr0;0}XpaMwYC4DKGBL4yRB;DiKn=ecjab$`G;ALhfEQ*};t zckSMLt+iKM@G&wXiRd7zyEFO_<^S%l4x}K}*VH}y32dwjM+DW^#q^Af)GXMDq{QN_ zBELm+oeCr^qriZch!j!Rg-~1k>!4rNGUt`BKni7Zd!lj!`jwS_F#Zo`>O#l^nF-FY`vgnkr5KI|%z<@(E=^P3pWkhd7`zLbn6vxU&+rRRfm3H=0cjI1oN@B#ba{pgGCQL<-KOX+*>gWVYnd|64Mj59%5W|Le zTfE!5jg1YeHxU$wi*nB&AAH8UJ2s&)J3gJP9T#3&o#UVkLHrZK08&5$La!lQRhDmHAY!9}2PM7Wr2d#HMRnu7XV^KJ|i06wXwN;x$ zSIh|HSRa$)aWHuYsJyGs0J~bv!WHSqoj>pLyP9P5Pa8wnVhuVz0@m)cK*c7{CM|sK zdrTfiv&BjkNzOi`eB~~RIX>Upjyy11a6{Isbbd*6o4GnWJDZwP$6_MJ_?Pcnu>;@k z%JT9NU;LJmarNSa*ER;$$il)ge$gLZyOF#e+P4zwX32ow&8Ouwxq;lsLGb)g$BaD9 zM2Klo-Z)!g3??nUEsN~emRGQt`Fr`A^<)=V1@aV0p-V;9#S za);GD$vajerbS)WM}&2~1FM1D8E+}%7{JbF_=*bOzF@Qv00bDn9-&%)(AP(m;`hKL zHJ8&#Ny#=|Y%MIJH_`^p&CeI(vU_DsKrFSb(S(sZ6pU@Lyw8ZCd$3k^lZJpsD69AU zj$S!wbrw>0gQ;dtZR?>Xk2?k0uHKga2mvJF%oi$kK)jU=%abWgv%WXvDqvWcG5Y(1 z4G6hj8@G`>Vo!f}rl9(~K5^ummn>&OxekjPo%1!&8JF^6&-7X+@Z^5mf=ogD{&mu^i_-AH%hOqFJNY8l``l**P#IJZr9OY}{84sq*+>C_9DACvWywcHq z?8!E${MSdL?m23r^-^9q)hA(XF+lxXIa%V&9cn0LYM%hs4CSsjGBb`6zgqc0v7+fK zIN4_t#-hHmltz2~TI=z0o{3-9dov0=iDwyrkxDXympnm(aofw1T%G|dad6%QFXEWtt5%)OSflB3)Nn`pySr5*@_T_cjc%+8c##1JRDr2N}+|5@A%fdXI z;zOIs8pQ`gk|f1fNw^fv)!N?xYR==?(VP-LanVx>!*j?_btbR zRL|W2%zyYZdP+EwsyWb~T7+$JNG0XN(#}pyZ~4guuEXUM2(!CF`2ID{y|&Y{R+Srl zN-A?!DwIUoKm<}fvU7EHb&YHByO6Gj6QValh+8)eLNsSlZ?^GmJa!04JOIZxX9}Jw z1&+ie2~i@v#*}+t`}(u0^!lkpz6!$nX6HE&33VJXhd96X6$J`F++7auvu;)w{ufvJ z&irkvJc|^dhi-ySqD`=9T1qoB&9GAY(OaTRWQK`HdWHJd4^(hbK&NxAKjaL6=H!l8 zOtiDwL#sl{(+fzSDRe=OJ| zqeOOoi}4B_8Hp(ZA(q<4KOcKlQBm;(KYdEwQmMm- zWNXUKJ;uk^#_Zv;HLxMt;tH?7+c11k(Wt=@#naQnkFSiDsGb}vdcs|q&(ba|7Q`SQ z^H^m=O?{&+v?s}|Y%6_#HuueE_C-H7_NZs6hS@*locm{HL5h(5CA-bfGKALOANHM~ zGU_&X%1sPxEDyX(nN#wL2;>%pU&_dCYgDd$M&7q|olpj7e zDKpP@FAyj4@AzlJx}%k`gR#1^`nwH=>@c~CCtAItNKcCNQZvav_ow1`{@j3ACQR3F z@-1;MlU!=b2yT8gxVH+?)#Fy=9^RLm_%B)XB!NqyoED_74>C7*6xO@MQt1Y>M;5nk z?2V|asm@l`SK&krF8Z?6>s{0GQr2&){Bp<&$a;G=s$MOlTRVOVV5R?ZNx!7PY~I9+^WvsG3eh_1%TtsD|- zI};txU;u1BXr1XTLHiPb<-S1;xtn}{+oF2t2R5m#Q7h~BA^ z<})@iT=-75-;$k%pSkw9V~k9U8g^$11S+t5U(o4i7m$ZnH`FAky#Z|QDMW-{bUd>v z>b>r!)y5b1=G(!tKMGdxCL#wWV9PLl>LSV>oUYv9O4G9LE-of<&?!_|3VxCfCxcVw z%JL=o5RT zkaG38)c4iTKEW@$3W$Yz=Wc9Hq^*six43^TV?u&>oJj$QA4jrpB*-R>=jQn-y@brI zLL;9dx8?^2B%L_Rsdg}4`Ur)pum3%rP^Bmjm@z9in0bA*ahvp`3+C}Rf7R7Wu%CEN z+J4wT`d!*&7QeD2O#?4{1*@#0NnD|Z0 ztFp7wQt;2nFUcUJB`Onc%3r<`J>cLlz)z4ZG(>GANLP1(p~n=f0e7){W{fWElWrip z`cApqz6}5;$2xypE5(My*+?-(q?qArZ)o1NRoo|Z9b}nL2?QyoiO04gz0#;^UzP-j z<-JXg-veoqqhAf`Y!!A;^nA+WS;_+C+o|H4JP~ z*yD1)ftzoZ>({7SUn`mwbsqgM7J$}XSy>6S&9$dLR!%4<_{0dw7)U~|Nj|UrCTA3H z5)+F(ITW~hpXNjvE2TSvqBd*9`@YwgYDD}Pt*M4p!;w0MI0{xzLas3AcbD_zUW)#C zIPDbyw2DK+kGh&WcHa4C`no&TY8lQ?->s8~gij}lE~HOBbe?(Ea)pwGuK((544h(f zrmt3#nWp8BNU*=Tj3A||K=H|CeM1yx6ScdMUGk|!2)bbUV~^tmUw8G7x!Y!WSaZH{ zd|eQp9O1uS6I~B%jE&Yxl7C23uz}j$5k&JBzMj10BG8X9NQW$ymK$XWu2}+kVr~{2 z4(_hYRh8NGa5t~cd!4-Y2#V|i*{*IwzHO#am#jUeWxW{_IPMw2Dhjg;X2vXe^tI+H zn0wtx**Y=htpeEm6Ww9!MP7CU*sZWS_BT&X;-%+DgaZ#O7;?gvB3QGV zA;nUiMGjw2E(^5TOVDpVw4pH90K-a^M?o7$%@i`~9nrG+JUpmtRFHk9OluUbQ&Q?( zUFS)~WwhK{?Z3#3XKl*Pr~A5Rl^MFJ*}ZIK2|k`2;)e-s@{>ti3*!-}Teh|e^gmmd zAYoF&rwnGFqBRqJXLafhv?!CbPK6zv$1uL;uO89iZvtNr3$owjzCTuEn6dL3U?SYh zUJfgkN(C5(rZAYe`DeC}qf)eJaP1u~Jw)8bU2#kZ%l$e_YNaJCNAcNS!%x^8U$I zRVTu+UnjCx$oAsF6wA7%HfH6Zw1U#iNhiMjw6Ijs;9P-mr&kn+wJKwHGeJ1(v*ItdWv62@@>LkjT&&K)OE+QBm^T#Yx? zfWWRpZRRFxXN3Y>2_cgvd78@{kr(lB+`q+f@8E%*dRQp%C)ty##?MI-wbS_@2^D*!XD#`YAO=vnID4S#85GVP6*(!39!{ zq$ZEwUCpRO-*|W~TdXFkXc8rBlt<{Lt9Sq(dKqnD5jyDs6;_YD7@Fy`jxzVZpGddJMQ#b+a zQh|f~S#QGL|4|r_w1{6}Yui#B5!0UR^Vh&I=T@jxH1A`yMx6k0eDYoLRw5Xc&d9E_ zRj2fo(K*xe=o?ka_9jRTwW(b(Gi))qIuwby3n0>5IWtdSg)x+S2+53}a9z|)32N{4 zP&KUJP5!`?hZBFN08b2z1Tjy28U`|#^yYkSjGe9txn;SsQj^rWR(U$rijKfPzdPx6 zw8W0SvW6?R#OIt%-6{EZKdq*|Q|Q0eVL8KUejJR7gZH*yI`Vi|ndA6pn{Y`xC4u5$j~d}!!!t~Wqs8^c=R zBBtjP(P^uPpC{7eLXxny6;1rX=-898(gDWQu}K$;R*9@txr&Qn3STV}Q+o#4fAxSrJEGj)$D`cV3F>81wO9MvXD~LT|ca+<5d<5cQ0f zEOHl)@i>aX6nh(qZDrd8IHNq=wTRf>mNg@7ENsC{U)?a?6^w7d#vL+6YDkL`9nklo(!I83 zNFxqsw+? z2(8H~BqZONy1i{dZ-Jnz)xul6n#9aij99p1${!;XT!a}|IMhIT&U3Y<^h)Ms3<14- zYtiYOSM70@!(H49et#Yz)w<+GwBdO5a^&lv)cld4E3<`grl++Z*=U3|?ves7tyFLu z@Jwk=-_uz_F)%n~d{QEV43f2Vw$~HREW*t+fABH;W2jTCjG+y;5Ic_v9*fX{fP1*0 zib!Xgl2Cg5WuTILa(3?#{eHTiKIl?`4!lAN#>zT#lxL67ub;|HnK(MTNdz=KlzahA z0nZgqAhK!I@m#RaX(`b!7i(^9A3U5w5`_3uz`oKLCfqr&&ml!?!Ggmj15`OV*- zmXlsk&At~eJPHkzB1n4iz<#yIOlCFSG7pc@VeoARt&$B2?LEQG)tO+(*J|LsyETR2 zlq#)pXRNF{|CoA<;$HtMw4Z+6N;g4O^LSnye!mHxzudK^uhi%)oC@l==z9$(R4>#}Mt6fMJ}V4P!sW z>`0h;0ZolYE}M8^^bRIHIZbcN#x>5wVasUoPbW<8|_C%Atvfs%qi->`{1Z%r0t*IC@$$ zH)y2VCiQxMI2R~p9TSbT09u5$Dm2fT=h}fg_$|t1z~;>W0?-wEs9x?=3{o?Ki|{r7 z5sWwA6ciiHPaA+m21>Fk5y6*6<7!mx*RB}$ByH)z(8FSHG8SBpFreYP#0Du?4!tq% z{##;fzDwY~hg6gNTL_Pk4YK=#yA!Elr3gKKlB~>Ao-OlMiBEFxDU*6A2!H4I9MEw< zX^5fV5M324j;-QbxhS6OcM6!%?Hwy!Eggr}n$(=W(WG0Owbj36Y}$f^XY<^A2z2@c zlT#1am(V2tTq|?d-0KubB!Fn;hq_qxsg=Z}Sn%7{TJ@1^%IY}zgdaJ=S;zcm|rNo#SHL^{S@R7EL`#NBv2-zT;jght6VY3!b3PS#UEgGU zDCrxti47%5=IN{N(sJ<6FX#C!CS@X(HENK$QpOF$7&ASp?~r*W-Y=W%AFcIwo5e}K zBJ$e6XyJYLflpMZ5AviboN2S6=5H{cJ7+M>(qNO3KN88zBCIAcIO>16EU_b_GQzPH z`jBTaVV@LsZ&EwNe?o6?#IiJ#PCexBzO}K~c;pG*JGMfJxYzqI6x0Nd^4${YL{~l! z{Gns97e!`o@MO8y^VC=5u;Sx?RPE_-5)SDWDtIm{TL$c`00cCca;{-!on|qT>GpWk zFMLd1CveL2?6d`{Hs_Hk*%|u42GTBJcFR>&B-$JB*Xo?nk&YoQ4m=iiz#r1wUwHJ% zeEnTSOf|=laBEznO)A;NFIbev1UuRGi@(;%D0H33zN)7PAd$;}BQw=M+v&7PHidl0 zY;vBwVE(8}(*+8x4NysJ!>t#RE0K@c2ba)hq)^Fi7-nXyQ%MlkIF}QhyY?V82i}ve z#N0Law!8T09|IlX{P28WaDthP#%>QlQ{nUldP`JS|G_v$;jOzg8DYfjnbC3dp2`>H z-^q0)y&Gp~Mh8p;l5GiJoeuVn%tvlr6F&`|g5WR(a4`#Xr52UoV?}blSB^Mt7Fp^D z{&R4~to-$I;t+wU2N~sZY)XpwY22(d=A9Lx!c|)b3ZcXb=|ejU|HOqDo8HI=(}6wu zKSU{B_I(Pdl&8b&xut*l*Gg&c@bTB%8_dvcv&ji953DGnu%3-Zg7lvo#pWU`H=GXw zfQ1eeo61+BZz|xFZfj8TgUa;BJp_K27{g z4Ja9|yc4DNTWXC_Lg&HJMtGQ#_w|e2Uubi?t@3kfkb_eQeYr@Jd*ZLM!akk|gR79c z9g9R!Ya{$qF=bk7m0t!X2Gw-{QZIRy)Ll}R11`J*Dw@6hk;p4{O!K@NLl$Uk^R8Z7 z@XRW|myXn&@Qv&+%)~&!r8e`Iryn7S`Jum--f79Zy`C{CPE(TOyD_xkg{ntr-3_>JGeqw|3CBk23Z25w*ub+? zU}tWKueI(&?jkepM^RV{_I)=9k}w*G144f5#^FGM%maJPmb&6a#)g3JqWR zD{p6N*RV4lLK&Y>1;V2#-rE*pHudoGqN!my)bZjOvKkaf&h;XG+_C33*+9qUr>G!V z*kMRhB*2VU_FyP7hN1RXeWby!5d5ZFJssw$dDU=Bp+MAeQwg#Xg?6n0g9;-jBl2&{ zH*Fe(=$xFK-{ybze@(zt_7iD4BFw8*N6s+I*H2o_mLoRmUH`o{CJ_-Ib<7zE*Q4Dr zYSQBzo>>@xavJ1hw{o$34Aff?Vo;kYvL5$Z~zRpE>O}Dnk%C`J&0>zsEBpfYBwa!@tF$QJd|DH%tPX}oYMB_ykPLjO z19IRG06~ZwX4C&-0gGhLLqL|sNlRA0zBPiyu`(@YkcnV5%q1fw)tAq#{LUvLJH4tv zxjfbfcVzKMLipI^n&fa~6-Pd%PCx33K$@{D&SD2?4`#EGsn2%c|L!`niD|%b?yp6V zY1%VFCP$YFlRm? zK7@_pXHT$MuOAuR!#J8`#>*mfjQ(j9(nA}DC&_Y5kw8qatU<0Tyu6YYuNSP6^IJgQ z#Yjwk5qJxjBfa%4FYdMd2QXDKcifO_UF?PThNH*pN}z2RzYPpEkS~_B0MW)yeMyfM zVVFO`JCzI?vC&ALB1XxL>0%jXA%}m7#K#vXXM@yPjbxE3T|rR_0(f*Yxo%8sMp*8i zrQ}B2J=@O=a_H}3u8g)D9ax~c)*;nldo8P;M5aUv>BwrC@8>GZnTWVA;?|&UnqubYFE-6>IHf zft$~hjz>$QwS_H3`2E)Ctpuw@LPbHSpqOUpksh03Yn=_ zveCh9ef3CDG>!j58&6HCjW5j4ZxkDOSyQvIJ1XU@{YAqj)85wFUL<1B=zlvzl10=l*+!+wiWvemV_Phoc_$&Mn&yD7ac6Gk zQdG_$s{#$#aN+NvrtB5kuR|W08Lc22c?7Lft!P$UTl1dDQ4&eCVNb};(BnEKYw4|f8BaMJvqrS$+;E8 ztWj)$SIYgv@6^S?rV+$a&}Q=}LhwUjD*M}DYzqB-Qrn4tzv5+Gjrn~q`wz8%o8B;Oce|SMfZs=b7hRKGjMRHLH0l~YCFFx@m z@2#I6D78$`KWP)j;#SAX7AX+X`rjV?eE3aC@x{IK`nMly1hv@m%8LCbrP^PAo}d3< zt0l)qf~wefrE6fdVh)%z`&i>rz0lgsCSX7zJgc?9&4R>YOoNz{b6i?cEBq z6#h0fsP(r;1LR8iUFJCoT}Nm7ep2E$e*dJzS~q89<@;-2CqcCuOx?V>B)^W|ri>ga zyNiQ~=w<>-!R$S0pM%gsW5M;?BU*ohiKqqLd{tB^Dp2DuL~Tx`=@4!}#QsbTTS`K2 z%P>4@IqEwMYP=Jvw6#fXi14`~(;GP&V8morsmSp0VjYRBUfvvI%M1}06WcC3{l#EU zmy<(FP{J++*;xIXZ*^WSd1+AmR?vui<15h)lZaqA(<6`a$0(nv-}DcObsJ6@ARCM- z9bqo!D=ZFuj(QAam;dw_+en7&kB&nwAt98kvKXbNvK){7x`gn~a;rpf_HW>wEMpXE z@xR?f@4Y10U)aT_zk(h(kAC6HJEY2w-}~s_Yj2Q=dHNbVP{dM72HbM6g=p^sujr+v zdlerF#&IMR0{SRyz8Ai(`ZyNdBG?m4<(0noaY%-Uep+ULA2|#St6} zx&jn(2`STP1uh+FZ?#fZ_Ua7v_xE4F^@SDOwoFx@s9^G&e1S|y|M-4(2CJ_2aHd&G z6*BPPAf=O3H%tj5*Y`?il+1$e`IOkZYv}_my@^CG zWQ0_W{S_*k_=(;q8;JA(NdY>^+nKxS*Izy*>0emr0jvk#mas`SS66?57*6ik1|ID1 z>l@^d=BT-pil?b&#{v3~kcsKVmHGT^KGzckzbdV%X{ear1a=l zDJ6aQ7#VA&5bII2w8U!BxrNDbvfjI1O-xymfiNmJ)N{42vsoOUZ?l!Ck-DEoF@WiE z@Hfq~5e4JZk;k>ht%wylP_6>FjR)GK4XRHQa%!nHb;e|l69qbI;|M<|pp6&PJ%^}Y zD)PU|NJ!=aCduIjil5H&@r_rP=J4~`RDfGPVA)^q0!QZ+CCIOq6|{5X+~dY6Cv`M4 z4Kv_ojgDW!)aDu(LrrOeo_tKZt#lWiW_lyTZ~J2T&nw57(toWBk2j5Q>hhAqr8(no zMliLjehLg3=s|z(6^``;Mmqeqv4foauIds|@2=`xLWBnw>(IL#dF>m$THU5DqfN<6 zPM{wP0d8iKGb4;-<6*dLP=n<*J^@d}6;`}P*W?pKxCB^Gi5J8D^ci$s9XjL$aTpSCx~<)(`_t*fpk#!o=2S;Ict zSk;;p_i62+1SLb_Wz&BouHwG#UtxavIqvf}n=tnCQseR8zxQ6CR(0KuCpu(EUD-$g zUFZE77X7j!So*}d&{mXuM`HP7DhGP&F8FQiyEGR%Gu{ksPKDxG){!c(Ws6!zOdl_L(1Bk3v>?`SV z&ozLWkpkR7?jom>MxO%havY;ElRzUMVh$O6hm}+m=JG@?Er=QvO*Yp8y4!=T3kLU? zP0Sn%K^@^jQR?3&Xv=tN+IG%;ejx2Fs-(hv#P<>mLORGw59L?FD`}Y7cdGE-rd3iF z5d4Ah9`MuUd;N;WsG(8+ijhJ?AAnrO`5`sS_mOS%PiA?JgWmzDc#7d1DOD=GSk&3hA>-FO_F4GHvG()d+TLi#{UyPpD0aQvWZ z6p`7f{qVzO+6Wbrrd8iZGWM;{oaFA3fC>UQxq~~$ifEH$KeBv6XGv)Mzj5e=u^SuI zwbkIu)~oEmt(BHVW8TIzX<0Q+dbn?uLK2>XTNzk0gk{z0^&RYs~bWMSe2g7vmUw^-B zXwBr7F8;IHGu7^%hVc@?CuTTDO1T<)3jd5rq;K~QiJ3zAJTxRt2mASai%Eaq&ox4F z&Ik}|awTBk?5&-x!tO^uYp#DU4j;- zW7d!lBap*4YlxrXONgJPyww_f`VP2=iyN3h$#^ctW)IWZED=n-JHuxt;IFOhcf5~q zni$MJ@H}PF4 zar=_f)N1Ss+kvS4LM%`$>KofvxhCPsAw9wb9e&ki<&;{hZh1RExz5M|6`Tw=Tya1? zu(h~j3riu!_^6$o|1XvUl%P0@V8PSBxaDz~ckazN%LV7@W#F=>(rvc-hT&4o)KSz5 zl2HXe4uK(ai{1G6kWz6jhG=$=+@TtRRMuy5* zA1ZzRLizdPDTI!jML#zuMSYX}xc>28!$P=bp}hedZx^G(JsLLpesrMft(?_u$myt6 zgw-+9-X`#tYs!0vJPjD2&cb{$S%Ee|E$yzdt_qK|Pw4 ztVraofPFWmCI3P87U|r!m~lIgipUX18XjI|o;4@{-g1Aqkzja3cV=-x>eBnFbiV`Z!2-rBVNMC9OT z%h*8@xkVT3SON+@G4&C266mUt(>?x@hKB^%wTF-Tl*41m>p98YqvzQibhTTr zT7C<;Ij8lh0WuYH-;HKeZR3l+tDqLV{{}JD}g4MM=%z2|c1Q|XD z`~t*yFhU2f`k7{a(>zvo#<-zhr8H`>WHg!?9dBL0_^|+u!r$$?JsiV(`PF#7!x{JZ z&CT-S?vhGIH`C8(E89=QLYBgL-{eBR(XOQXSEuH`S~~?Ar$71AiPwrpmk}?kcf>S#R>8Q&UM^}aZR^Q2xY9yzOjs?PqXEqtrAf2673i!7= zwtqoF#wZJoMw-lm+5UuCDtb5ah_Q>aV605C63di=ZsT60$xG5)vVf%>@!ti<;j9Bs z0}~}nqc9$7a+Hxa^5nh(5fXM1M*%#2ZTK>wtk{G zTWshJae3KP9UCM%jFF0CI;m-GqNq)*CLvCk24olK$9f0AKx)a$n(Gly)uW-n`%HgW zRP-N@C5LX4KF26|*V{riw2)=udMr6ZBljHK`X=!61~uwrlcgEIN-lF4#2}@YZ+B8+Db_Cr9%7}qCY!lbSZ(MCTlL+3M z$O8=Bq~gJ96z*xXbbb;$8#+7zSxPFK*iB$ub%Vi87fkD8TAzee6d*)q1F^0)TY$t# zd)BXOC<_p<+%yCHbCISS#c6BaS&Nyab@zn?>mVhACj&VwJb+{E`vN;plLqx@P^$)X zgZ{f`*-I$7G^+>_V$+>@Ip3&aul@1i!N!%|I zJ2fSp8sFH;>!Xf5NUYd=m2fxUTk~>lrIq$Mt5J+@@%^{-qJi95|3N+8G3~F<%p8R( z^lwI*Ee+AD2onoz02h<)e=Bde!4+|=O#N-|t~ik?v-1)duZ>I4*)4^^wU>?VR{Ztx zo;uj^Yydm-F{}3$-EuJ>>q)>}cEJfW-!+AA#`PW;=3R$vC9LqQ0R(ytF(*t+jduMB zNafvT2LlR5bcR-J(^lv)c(^-v1Tz9~3aJKO^YrwpwnBZs9EQm4>@?>vFSV6@cZAZI z-?T|=->*;5MhtCy^=*}xt5NRIUc#MK!B+#?Hs9E57%!CY{eU3eFy%=1d)e8XzWCE= zJ;yn;iB~^-P(O)}T;$K@tcKr0^*0Q~r|#RsTj6P@3$GadTEtL34A0m+TdZ9TI=#7I zpC3%gNDCSj>LDDYL{THy;$20RXPW^$#eJMU66frUmmot4KYmM|Rr2?Va9k*8l`t5)eXpDk>5|RNDS60J=D0M9;16McFrp*p!4aBX9NRwKs4PqNappQS+BiwKs`S2gLoPJ3yL@JliJ;KS%9% zd?hthX>D7P^32INh+9q}nowYHF9jmwSHRyK!om%a6J;wX zolr3tczj)Y!w&uFZUI>H`?g$AZziFed`(KzoWy#;X=!TpyTHzXCsCbgV&HY(oqdLU zK&P--gDir^T%(D>8(yT;v?>PA?+zjvKhnBvHFR=WzHnUz&#o1P1*)EgkAqfmwfI)+jxhlM>PvuXT2>**Q zOoGyeN2A*I9mQ0FCEcFi{?a@(G9_PbT4vfnRgj8OAo`fByV+|_8O|@WO3kQ%FHf;9 z4$;S2wbIivWcCIrWvD0rHj~n@`Sh8wN?rQR8In?;>Guw3d_rwo!Dv(C7(iKT_5BVJa*W0plEbY+8YMxH1x zJpzH3XXNJb1ZDQ+W)JEKA^9Vd+Fu`pGO#fOi~z)aX-*QlgF6hjXKJqDI5r=+K(5jd zE8oLr?MRl49z{!s?|hD!&le2^gB}lG@UlMQL5{Q7Sa^$VSUGIbM2Zy&stDrnVulM> zyb>l8*~fR7WwAxtoa13bcVPOGJ{J@?DA+$)z_&XkZ}mwl0<1G`g=w#aSyo}^n+oG_ z{hLZ=R_Le@AMZJ-hNBi8;o^tjuJN=lz4IKbL&#o(|4~Yl zN!#1ozdv41WzJzA;>T>DcL2$!pE9E&3%-9^Rgvoeh8?^Efgc1n5m z$$Z7tBlgK5Apdda?d3Wd8oAU<|beS4uuj zUa8uL49=bN@%Z@I%oPd}pvPWVihd#gry~RWYz`*U9;DFDL^dE4Zp1nc>;bpi66=pf zM90n(5f5W)X+u_)NZ4sZ(_VdGe3X)RQqtH;*W1_nP%*F%COzWn;1H>ts<35JQ)t%c zZvPbJ^52LfB5f>f#iIvH0}rG^JzLc2$jl<_&NF|4DwfQQSBFNzZ76MgVPRo@NjkwZ z2q|gFY4Q;KlREgecH=BigQl6v>^D}v*TitXxHs?v2yc)u5v8c6N*4!(xc^NUNA%06 zKIL*4KJmGsuyM%%>)(?$DwYy#(khj4W=4e5Bu5O=ww|24m25E_1fxkO`<=A%y z*{t``^R>f9@!!MBsf4Xo$&AV^%9K=u0D#G56OKK-rPT7dev~LpaSH`wV>Eq~O&57V z!^yH%Az5g%ho+Q_HvSd{C+&BJ)Te*VcBYGEmAUa>!!h4K%N(WD{z$eLP{g4{iR0U) z0-@iF=;JY8e(xW|Ef8arf`e9A(I+#v-8sm3G}S; z^*F6kLQWMzuv+Y&3k^x-t{O_fCY;6gIninf8YS`Cr?49d$vgY|WZ`UWjl!59Fuz1@9bZV~d zd|WSMBk%8%zm~R^Fs|xcjU662P+56tDILIiacZOr%}dL};_M(G1D1b;<@VN6L{lHF zHdVG~Y2%BC`>Yr!y5PhYKSf3sI^%;g=LN5WSN|$qvl#ZXF=#Zd@z~m|_8*D( zP!Q?U`1aTo5-AV+W>Cyy5$PdmeQK{KOYrBOIeqkN2b1pB%$+38sx1EYA9ph!^ALtg}{DNZdX=dVo9oE z4HNa5=-{pJN^bBIkN!Gq0C&HdXIfgD5;Uepx%cr=J?O~${0&eqJo|EDh#fF1P>h~^ z@$;=UY`wq8{N#k^WBNqaO5AUjHJg4dc&TrAGR_XUUO@3oUjLC@bi&%LSBTWF4hcD% zNLKdw+yR8gmuh~6$?|}!CQB>X*yqh%Ssd39ptT@#odgYhF!Vr6YOpY7x zVn5J07r@&~Yz{>?G(H)ONQjC>*x^+g3>t+E1|K|NqC=}cu!)L?5t)3ta|5>%o^?5d zCd)|N#%T<1o_~5cfQr;iA%hs>Y|X8`(&HzR>e;6}$Wn+fTbo_o>??>pBVH0~Mk^Lj zkhi0__F)`UyZ#F@>FMaOL}LfFcqRbiKU&WVyPFGtrkzGq4dyakjmW4CEuMv!dYoJ&{?@PcdedN3@WWntS@)l;^+v8h-myKwV! zrWmdeU0yp!>IWQV+rMO=8~69&=9_qc!HADd;kvL?wRG)(S6QVj%rMKDHWckr4x zZs2$UTY(&YQYN($)53z5UUK>`FPAf&N?qjne{TP%&EImIwkjD_t4UnOd75ou&i+v- zT%I^nb6cS?=u9WCezDuRGd@KxF~Z!~XtAxd3;xMg^tzkM`MAtLbzI{j&IB__h<1*e zA-8*=D7rH1l5?+Qu~IuT&FI}47fB5Mmp>KIpUBAYI4=6r&oZ#hcc8WmeuoI;E(U^g zB*t)GmQ4nOeIDWXtanXJSFGj|GxArf)!82QO9o>Sj!xsMb$#MhD-$*cuo}2j&tw<* zXqAuS3?exe9R)U5gGFHAYC1w>2oBJ8Jhr#=^Gj%fdj1(5vEn`U!gj}(dE ziGyhSM8q%b`}W*9l5vjDy!x?4OzQO4WP#X|aMLV(d%^y~u}D9ByZ zOm=XpfW9%Z=Y6b^RV^WLTOF`e`tL=KVg)UU&KT{XUt>n-KVVyEm?mB8H!%G=-L0NL z`Hz^ctmov70EL)KE20(dV|$QxH|_5xGn1tL>Qv%!(QM|ou^8zV#W&rS@Iq+ng9If7 z9Y=`@)4KJW$RwQ}oN3Uw#^i4^#fH>V@emem1JUig^x{n?JEK8YO~6*1>}Q4>ae_?Jhe!N6 zCsk&QvnRLJ4u0RhJYR*tCd| z1J>4(7VIxZ4O>=;oE31>mv?T3@8;`@C8h5LMcmC{_-Y`M^CFfY<=E>w^P!cjR3E8@ zCIzfjPEQ8xi1`5(0cHR-{Wo{>bG;a@_p>r^-l?3dJ@wQaseS}vt-VXV^2pD@xMU82 z+gj%UMp2H@a~1io5NGx=*X@j5i!uKJE;lI1e-Ot4GCXySzW2zOZbh&CmsGw+!~;^q zPLNpJg_lCh&}%a^ZlZTY`*`&*fu^`a8rXGA)oN|e+MOdBh7_)sNR#^xk{Rv111fv8 zf`l08Q+f=pNd0l{9^E2q>$-2#ltk61IZ|l>_AN05bE5T1XS?r>Hbjsv0~M4GK7v~D z^Zz{AeMmzO4t&ysFY71dutEPzjEq~ulc9r0yjy``LOwQl!WVeVT~g6w^s?TOKQU6> z@3P`lIsGu<{L)6Q8SAwVrCuw^ThxuDx?5$o{E8BxN%~8t;JZ6J=?V{?QAg5I%HS1^C|x2s@L7H zk6u=NC-&s~^6rlubs<$lLm}Zdx`LI-p^)jWu83!1H_H$kTWythPM%5;2gj*(hzvDv zm2ak*C<$Vf7GJ>-t0)Yk4;{Sy2nz~`eyk6wU9ln!-8(kcbz;Y7zR1lx%a1 zX11UPdOt;t^QY0j^R9B&WaoRrr2pO;+}?V7KO#7 zmT%8_q#Tla7-O@$Jf6kokxfJRvxU40<{U_Rh}kWgcqeu`N+0Bbv-$1gWa1CbueA#a z7xh+COpp}cD63a(p6>4kxU1&K6vh7Dj_V|q@@q3URk^N2F5R{3%15a78To6_tnWnL zpa=iDE037uymEZgYZw`g#EAco*zJbrBN1V3H+XQSI&5xZCv7hmAC(P{WxylJeDeJU zuDsRtYGSGa$;;(lYgb}#mkH80b`EV`a>+*6sM_JV7c~;jRV}0c^h@*Osd<}nH0bor znX(%~V(zNr;jyTeot@pU#XV}5D#)>u_Ln|S@hl-~&FM=-eIuBYgCAydtm3((l(P1J zcsi@7IJ!1U2MI0#8g~f6-Q9w_yIb(!Zoz^(1P|`exVyW%dvJG~`ew~P+;BrLs;j%s zsoHzL`=JnnR%p!LqS=yXy=XIM<@VTwWOk$V&fgQMa5Q-yU9*!fR z&-_J+VEamHLc5mNKR#+Tz!sv3&HSStN_RW@DL@V1sya-`xafPpI)3w$7N*&}QY|+} zS5*DMqbn5rX5)bpCKuzBC-};rdjs6@lbEyouh*dSrOz}2lBJuYXpqyqof?y$M}LPG zCd}(b)avmVOgPGF@7C0()+P@%9bFm=oCw~?6ed)ho8qtVH;r7X^q7ZvD%5F<5sRc! zY>f3L8`>&E^{`_(_ddcWvN@TEkh9;M!`JM^VuJ5chkNRywnJ?^G(gPWbiZhF@v@8Q98n`G#xGJmiGJt$UUO#x--ykfkKW5$s7!mwK(*>?J#qqpO~3O2)<2o0 z&+{s(TlU*IzhHo%ULckxkc-4opR+x2Bi5vbtS1jxv@Z#asPLPV?LFx)m4Bv3@AquU394yE z$rHlzi|2=-wfQxJVL-wgnz47j7Hw#w4aeCiF;q`nRS#N;5&fgc1?nI)G`ye->lhR@ zob<2laD631;m0ZSGY;B|J4Zf2!4WBBHCIj%fPQ~BYHgI=y-4G5e|sCSI6s0isTFL!Klbxjda#Bg~j{%ykYJ|JbcCf%yUupO}yVaE} zf}Y1MX|yv@!=>Pj7V@QLCU5~)@z+z7HX?xp|k`!B3(iGEPR_SQ0&3&dqigT?xK1BdW8(M&31WbCf?TT8cN)UR@H78W+Tg%ChX&DZPl^z zoT#~RZ;emJpD^4>uDyRs=*^C34jw8P0L#5~ViB@(89w2$7D+sy3&Jnj1W z>gS9)p{1kH9Ba=7+6r!G-+26z7lcz~>pqkb2KMNTnP94V7)ank3na2vCi})Qd?F`5 z^c4U-(n+m3(2~m=P92A~=~oTzc27jbiI@Pg1ge-=eyJ@@vQ&UWnoS9r+ofkh8Thc6;Iic(q*W@gRrmChi1pdS=7$!s;EaU{;Z zWiD=+PKN`anyJ1}BY!Wr>uxy%CVNTyA}&~}^@DKiHAVDz3j?CGI}5P-gFt@D zzVg!guF|fB#J*Zb9py*{u7wJ32`{74KnKmnfMUeBO+oqB%U<+JO2=!~k!qgI{bo?- z!Vqm=v;}FkMul9zcif!v56phJg5vL>AatjjxS+BjX?JWn>EEWM(T`&Lrq5~Vz3Gjg z^E|tlu+Ns1boKS|EXuTdwy%MEC>_p0Mm;sPyO5}pq-H9Hxy5-=ujAw0bs0qVkZ>9F zzhr+ZM@KR8a*s=a0eBfi2{9CdzU^DRDKj;l>d)nNm2=j5JN(783D|*T)O6g!?jX*# zc*^ogB=mbNh2idmDy}>CujJokB8(}L#dx>~41KO{sm!$Nq-jIFKnY4^bDpUMTtdup zS(;T*#L3wiiEJ;EgbaL$pWnR9A5OCLV)3ae;K&|^CgE+?)N2jJw4^+ya>L+LdDN74 z8EKUENql}VhGsM!r6FmfbxE;CCxf+yo%r;Y^GW1w4aKW}YS*Z-K0DfaFj@_3@-%YuFD3+h z_5`_Dx(>6^!zkXQ-%eUYozL_$$kUO|VdIn6va5BD*W z&8lhgq5SF`uR|nonpsk}!J%!`_yarG+xBU2v*OBgD)CB>Rk>LS9ez4c#@sy}*g?dQ zvYCET)TJ0b1SOFvwqomd@_oLi;?kuD3UaL!W8X>N(e=WmDfTmG&^cj%EKZt(aTqaW zbO4z^j3!Zkw~VXzY2rN8fC{j54BnO>ZPvu-%Hw|K4xrv`^*{Q&8io!{Roc?v(DPf~ zv}S&bb@t`s1iwbfZz$PKEROyHP8YtJUVMRmiO{eBZtnbZat4nmWGe>2ee*2+ zzoFd@X(1|_DAVLQ44Z8H0Y0Yn(OIh*)PEnnPeICIw@`9f9`8%x7TK*XeF^%G)=KKx znutF#ub+o72T(6Qtxh=bbkKFdC=kqhxPQEUrj4AO&|yF(`Fhi5GD*PnB;+#kVs!6@ zt?P{9h`gNaCVwWASC&Xue1mm?j*^4OrP{}^1#yAWPP&DF!n^K(r1?f^qUvJiKx7cS z@)D}L{a7LO=rY*aEzN&QV{Sv6@|lr)-{E*icMlzlwa&&V4>u{ZDL658wphTC+vN6) z$YWOl(#L?naIqVvYC}^E+ooaCSB<1*$ZZuXgPs^}ug>{}9 zW}G8E)cf!ywIDa262w!KpN~_SyEx$c$-TO!ym*lhMK)>dN|mq&B<6{PYFXUo7~Ivt zc-w42*SK^4l)M24lix=pksC-A@hvIzFI|;I>E+^eGrMyfpY12p zWl<&%;-lAv@25uq>GAgXRwaW~`FwaG77KYO0uNvZo^Klc1fI8Q8}4Zc3U5m0Sk2x8%d0WTep)+|Z(AN}FfJcLpS zUdL4rS43~uubMo(X~Z+c#jb)_fAf;`hYICnYPs`AJAf!VN~Q#>-t|WA)*!Q=e?@WP zH(X#}km>grvyS^gR3)L10#4J?cTBZoL!L|CETyBvL5_;`)o;U3mlgA8?jcIond)V1+j52nhyezFY z*wYR%a$Wy6v9dln?|8Vcn`0aLBuEAAeNtXtzLwF35==v!LAKGWmjUR19-U773XFH z_}|_Q-2r7HJcTfyGMuMm5yGCdl`cW+7CvGVPx)|YPcDI$wq2I98&3=OJt)+dTIdNw z{P7Hbu32SIzv3rXTf6%zvC{$I{d8rEO56(mSRw7w{W-nt9!SW@yH%xwH+#(y&ARHTp%0kc%R^UnlTr^QA} zTwI(AgvaU1m!FuFB){fH2SVg<-|`opEhIu(a9eGtNI=bSJ{fn*aNeOl%yNRjF|>ns z^cJ7jDG0si+Dci;P@b(=A5CQUFH+`0?qjDJWNO>^k4o z@@Iwk*nPp_{AYzjw3_ydr> z-e>MPzxoz|FJIb*Tw4l0%#b3Eiv#Bes0 zs;Vj~CSxz9*Z>I}V>lyqzSd%I-Uktz{?qgN!{(>)$x#bwAuIS~J)E-K)%b^<&DSm-vzJ|8Uz3=PCJ*6Ty{8Jgo&LE3AhNud*}m_7 zLJ<+<-w5urvpt`g>t($ctD6f_Z9lnGk-JX{wYptEI1k0Y(YXgv&b z(081WiS`&a^G$BFMWsiiuAqet| z!>HAQ^Zu}af8lpOyci%v^T_P?_Ga;Q|BTcB{@*mlKkKSaNbb##OT8^#*MIJhW8@M@ z#4ZcvP71s(SXB_e=gY#~HvRDb`M*N}V8B2bh8BWH`;IpR?gWHo*NC9g%KUYV{0xCk zMpo9^!fykd36#)=fdFH*wx$-S7^Elg?3&mND%dQbmB^cR`T~k;!<(OLTP@~0KpT-Z z)w)A88>W(?RdbyfjrLgnfA1^h`%syZMT^j&f?YwtHMznfED7MCGeuOgH6G<9Jzy`W$U2!WAbv-nNL`OwK zu&&j!Ye9Ngac20-a*-tFr}|j*VAyzVn=C#JKR)O$({pDH zRXBPZ8Kh0u>5+KLWO!Js!CPyN$e+q_Q{XK=!3S)H z9ALCZWcU(_MAYKCj_3Ws&9PMH5(7N2l!%6+eEBUFCUmj!1`zA8=pOO=q2Zt`@{3ZE zlf}o6UQLjI#I@($NsH@#VevA7-yq0uqrd0pzX!q9!LU1Co2w(%@clhp`z+EF+^oOo zjCu$Ai8=vAKkDEZXc37SYq4|aGX9aLE$Mz z3AnlnG(KKe9FI!e&7ihC|RG2Zaqa^7HsIA^!`Xn>m8!ZmP!JR}H z#i=^z&5|cWD(<^fSLJ;CMvR(7;NE5QpkLLOKPczmVaeZAP(HH!9?vb4@tC7+5EBI8 zjN4&DiM+;h#TabBdmVCnEP)3YOZb&W)ASh&t96EMfx*i02?@;xdV~N`(IlF?zJOwF zX=&@`iP&c^nuy<1A=}qkPR>Q&cY8Nx9l$(>0Q^d)p{=+iHGs=a0f2z|j6#V8ZI<-E zkZ@hRmUTQI?*=2jXEEO_UG3i6!iNHMled`&1)=H`0|(kA!=>Ta-tBbzj-ZN0<~caI zUj;#rMS zfiO{z_p1tiuUFPCLY;35GHPl`ggnl^Pksud{hW9XLMk<%GU2eP@8X+(9@4aq?p{-pr--vfkV zl7k2QU|d$j-h1)NJ`W)-ZbP4LJb7n7$1RR7p8G87X+7kj4#9qs_O% zx0jp`A|^8)FCOuGS;+Neq)$sccSmV^@Y_F|B+`k?1*WK zr|>t$)3g+b2^>zC$wz<_a4Dk6LKJXvUGox>&nCc%(lRo&1|E|?RApBzMz9UMFLw}Q zM4L3^wA!tf2^$UWfG>=Ey62xXWdn_}4l3kNafW|-1)eXX77e`4-yZbo85YiOYC1nA zE^eF}`#wXn)rli%4itCX;Eo3_pQ^C8faoBmGj<`)e(#UDH*EVlgv6|4ni_W5CZEy3jcKJuuxyKdB+C1rd06 zFqWqA`h@AUEnx`^bo1J)sR3bGX`3$$b2`; zr19bObq`?VzKS80Bg{tR;39Cf@JSksRgaA!tv5Jz2w^4SQv6c>#Orpft9}0OE@60B z;LZzYpqZQ7Lro3yUZ5;3)cYVkW-Jn^YETEw!<7%A&qUIT&hzf9#&!MxSZTewB#kwW z;w5zaYDR1|^zE7&$otAzUUl6K%3rEk60J|HSXpK=fiqaBh;fkF z(|qisc3)il^EqTRGBPqA-ALv0>GqFjXFRBhu`%Ue%q;TcwSoL%--4Y`xc?0S?7pNy z>K+ds`LXT6$dy*Ns`p{3;p8}r<4_#^9RAh^Tz+G3l34MA)&kt4RM=BDNptarRwoZz zUen{ar)EM;G)-J7pXt{>(_Rlp+$7Z8xK}%^_n-@Qre&g-#ce~!=!*|JH+!ErnxMgx zc}@*QKG0r#KJ?lULhw=<)$y09it@er(eB#*PgRss(%(~rz4+oO-*f+dp&F?nz%MYY zYiZ#bPESmVOO36j>gOr!eygacU?&p#HI36u$aCIrRh88~7?l~DmKL%D)z^S3@NcTT zoB+gWKEahMY9s;T9Ee(N_3I1((*v#g#Xnw~+A;ETahEG9$s|&$R8Vn@nMw!6p6bgN z%c8|nAJ%^A>CyLTaBVQ16lnE-ONwa9sfM^uAsGl<4EQpRVaO^4m&Q zmj||0(=fodLTDC9vBXcD#X+bszD%o9MAQ=l&1o`*_7V{CSZ8cQG!``?OO|rxN7_nD zpk48}((&xq-2kZ(P8;2q(^=FdudaMub?&RYWUxkD0%=#4@hl#!q-+XB=}A(5wu{oe z^mMR>U_nN93ZujZtX9+tq@j<`aK{YGShjp@bXr;(z#!ZCSRmEC9(g8#U_33asE9a| z`w7DPkt2KDPb19q5-6kiSf2pV@{gGr) zxB(hah?&}nKf80Ougq5*&D&{Bn%|$FSEG-cywJ2pUli=^?VBku(T-oNwUfzw3(AU1 zUTbEuoo#S8X#Eib(e8N2$QWm~OR-F#>vNWQvQX)H6+CF9VRE*DX=Uu|ODbzib9CDG09yq>m6c(eo68{k$R0p=w3yVvA2 zA2flquS# zT15o6Yedxlv;fmGDcuj2Wk%_m>PdXF!czMs+-xd)xcXR5!|6igNIP@$dmZ}@lF@DZ z&MeiW5+U#0$G`vZZ{REz;3)82phw9-^6N24xN06 zy5@$_hk}~va9TX=_2TV&Nt)$%o`a#l11k?9*mWY;vR@b>M6syrr6De^uB<$>YTwS~ z=et)X?Y8#h?&3o6XJRIP2dKbb{E>ld7I5}N+2#0cK`@{EBd~y~0{mwoAZI5g_F37R-SBy)4Po-`N)+XFIlk^cytrt8cn5Iko^SIOlYd->o338oZ+A5~*W3kh zrlnqFwHjK>!dUwQqjf0U+#rTV1%N5HQ|PPp|-fkNkb%D}K8UM2dw%K-91Dc?jB4KrY`~ z*%Kn!dU%>up3PrqF<@fR>P684I_9zHFzkJ?enLs)_3!IVv531=Y4C@8bXA)4V$Bt+ z9h$BOCg%2su@l`u-~xgyX+_e1CuPTW73+-~kVIXK7xsmE(a(@;iNH|b9V<4KXG>vl zz(&^edA`O{wYICtb#u;=%he{Ub%7`!HI_N^CG{F-RR)cCVs-|_!y^+%(|HP4 z_d~Plv7Mr!6XLuF6H(q!XxV@BVr;U$RwCV>fAadgT>4iE0{zR6qMvL&JnUWJi(-$a zzt^%82^I4_+G+6btYP+U`XVRKevt_<;tJ%u@ToZxM7R*;?a!ra9(_>={nmdwc8l0C z;?}Siv!_*Ec|G;k!f2oqtqrmD?s}HUZ1L`Ds?-`@GqaQYQ>ODh5Q{ObXoIiDbG|04 z{rQdSrA)v5IY3KnLcx>5M|qz;qbWCZJt^e?^y>_c4xW zH*NXSYa;%~&!&IY!PspQLr19|FVo_pV_H^9MJ!16N=%SiD!Tj>PMgU>1-(*Jip`8jA)S9sQjKcfH*$rb;LuDlg061tXhaNi% z#y0S~@R?j#m~Xqem-+dgVbICzJizStepRb|JxJW{&;xHFyvF%O65ttHB-6cz>N#$e z#R7Nepo=Bf$@WR0gckU8iNEscY5W!zhJ&+DbK|RdVxKN8qjfofWvS}P~Awj$}ne%5l*SUJCHP3RIQNp8S%d z*hiLGR4w1ow6)&)3VSfwOzjL2wtZIl8QlTzR1aSrVPzLY3V!L`7X5nV(WT9&RyN({ z$tF0trG|I#=ojge>_8)>ltuY1n_it?Osj@=x%;+ac*^QXiK=tFM#gq12!)|ojMR%ETkxUOkWg(+Nuq z-p?Z`#Kr+f;AAMku|qqwfDN}zzg8P3kie#3S{r-|4<_?GO9%RC%5 z*TGRA)5kAMr$~q?*jqdsl^Rx8s>I{g>nJTh}g=)3`sv2BmO?3o(tqc&? z6Tjoizbu^E{Z`TX?~(y3O3BB%laLoRfH{v`4=D7BRG^uY(yn;m2gjem-ReoINnD*P zW&8r2%NDx(8VUcC5&3L%UQ+E_?9~8{q-N{y1fYbh-bRG4IwNEOFkXuxNi{)M(5}{8 zk*(Z5NYvL!SeTM;#u3kIcyFtnlF`z4w6cdu7?{MPzXizXGV@J6YA|EI%vb7VvG6p+ zXD%d_=mbi%WK}!28-N9RULsCeMxDI`wn59+6_5=q3@&6(S)Vl!09KCP7Ss6w15Ejc zk@6v$#D@uQ61A~;B{~kGk%--$#Cdp;>08T7ptbiR z?%>XujI^?QQjdVZNMgE4x5Is`Hu8paM5pASR%#u) zK=^j#wIHb^*V-}D9uv@$qL`Y!K%p-zl`5DePa`ept0 zXh@>NyaDN5YF;tSnpC9N3BF}8$WW9~$IRP;NqQ`=9x4&MlFk^U!z2qgJ!#U*)NE^XI|~@-Mu&YBoT%t7gnbydK=LMCa7WCB{3td9 zfoA0D)F#zNA!GvV{Op+$Fja)z9(PUoDyx5(9WewO_PMJygKUiJCQKUbj9Z4ZQGX|d z&Qq3H$jFJ2h-H!74+XFLNC~VpT}PNbsuv6;+hZ=V{eBUh*6u9olGgg+rYPMv(xbMM zRD+Q4}^&W z=A&Y=YfB2-`cp3~J~#7wj8&2@E7Mx;^DjfG8x@qVeGVh%Dg@*$&oo20HWk?-MsSBkW2_1&*of7u zlf81Aum?1a?YoL90dt=Tpk~t~r&0_({6ss4Oegxlcm|jA6W9|(KiAW<6W(tw8yf7g z_-9*po&ckmpD3m`CB6{@t``^ERkS}~8i|vgy}qvQC+Y((=1_D~=a0v|TgGhKvMS|H zxX|ZwGhegHL$FZarwFAwi*6p*_eCdFuH=U-sF8bdb^VON%x0A`eqfr1~L^~-bYKsjQ--8|Mve4VZB z(2z=v(tiKnFMqdhy}IhVM?ykK!XcJ2*i5IuclZnQ3yWX$tHv{D_z-|bDGfazJu$J8 z7P|iN)`HKwS02s5mL(;t;f);Z!GA1O4&b_|DMjAig&yqqIqkHIiib+)qgOb7Y)wVs zFU~K_FYU!uznS4)b^e{J(5V6%l(fVwn+k&Uy_S4YG_lvApdq__#Ea~-H^7#bPl;LX@LnLh=m3$(N|j3{_}?EzNy^AbICPc3>S|Xb_eW)%wvCK9rrzZ~MpF#R zsI>0^wLyR*dvFk&N3Ud!cUdG!WY452@l-lQfqFGjR~LDFEZulm!^X>7Ra(kNH!5EM zzWgye!-6l0EC*Ii)IE@i zj6PzOmJy3zCG~ir4QVaM2Ud#RrT|m8i%nTWBXkD}1UYMBruI1;ABc!yChcEszCfJ? zG*ihpVxC#iIR1lZ{S8r@&lL@1>GooJWhxY_;2SzFAdoDgFKaslfxo zSo_mHrWqAlaf#emu6Ltq94!=`imKNP=Amtgez|E;U|7ihv0J}WI6R47U z6;_9UXe0vjgq{%JCCS={S;MGqwb?E&=rbNc%<>6Sq&tH!Vs^Gn$`*rl0Z#Q@SgtE{ zbyGF>;B6ME6A1;lK)0zA(hFK7XCN{X$;BQO9C74^y16n-;M+D)=*4ayPXvpz)kiZRmv{?4}NhOzZNPy7ktVAr(^a}Q(mM= z)ZMVhYMX7Xk)ai0TRl{+G)`I10reV1#wM~m|C7)u9lG|vDJS5R%qVsMjTyiX9d_p* zhlr}V@0=Bl!TTGRH+7mK#BFPxOvkSdlizUfum0fKp`y;0mU^~VQ{rh}cqLEW|5)Z- z-;MdVhUUs!j7CrjfI?F)d-s8sGYx*4J7?Og!h=*^2=tvn6|MgU3*O}+a&(r%jo*yj zyUhJoRDk~r0YNx%AXa4G6W*j4j|IQ5+s#(x)fr7iRJ5P?L!!FT!ScdRWXY@X%MBKT zHIY)AX=*gsd5>ki!+RJ_Vd(dd4Zu6Fm&m-g1nprvFIjAs0M2_#zWUXlP$WWjtJ|Q3 zq0=wxEq5z^*WLFX-U6Edt}xhG3|PXVx$m9ltQ6-Vqxf!4N71jdNN6MRJ1_hLdVzZ| zJ0y#n3>7E>he%U-zBti1ay*G3We$%s{J!H4OZ|iEp^!mpV`bAlmQ0lnAAD1ptXQ<^ zHrkP6L9{uPqHKrh`o(p2b3w}lQ0DRW>p>$W z+EPk?@|pf_!3Qr#N=j;rshT)kiP>uIaTu1s@gZ~Z{dJa8(EH=FX36_o=qu~RLm(=* zUJ+v%+eD-YHpPqtW6a?}WHX#6)u-ni_S@{|OOIB*tLQ+?fg7o$DxZkEs zgtTIjwRLjZpkc>8_Mi$y3x0MBpLLF>B8TNYq%k?{fWB1JIm5of-`n(TyeKSrIf6Tg zbjR#F-Uah0fYjF6T=U7})k}Sl&d8|D6^7USDWYJk82y(>H(NdAIx9fVQN>J6UEWf$ zTLJ?}%TKoY?VjAG{)LtL?Xnf0p9$ZCXbRbjHd*h?D0MK5$-YWI&NG!8eq*Js#33Fc;?VCKG z(DVmsI!EPa3ff&GNTeKKzf$)CY#Dy9yWp$Xq)Y&7DXtmWBk~jAW|E6X2M*v|#JT*Q zo0}UL5O?{x^4CJiQ-!L{Qm2ja4SQ)nHX%h#i|7s0kb%!|eAiLLL!jcE0=?~;(^vj> z#w_*Vf$fU`i=&K7CjN6um~ZzBV)N2GxUZ|b7n?rKLiVSD_q*@|QG39$^;loW8%)5J zf0)Z_&>P8qah?JUE4<1*u7&>211w3e2evNq5i6>o???cvp_RaUQ0-6D8Yz!^YLHc8 zZ`?&jVCvY=(DAC%z`OYt=S}IiE zGvNmAnlL85hd=S1KWfpBj~im=K-gd!I&LXcal+fc*WuQ5o8N7CT`-=+`PJ`JW_qL4 zZT~Zo{~RnzmgupxO(`^@B$4gd7e~2W!DA?$k2M8w*fA zD)4^lYL3q~)@^gg+}fOzi{B!RC)KPyNwSq4zc=%fsk{ZFLZl8#2>a@9k0i-N3U;SR zs|i%s*c^%cBI5U%^jl+#w%ZB!0B zwD$me{QdO?`;TdNnffH;Ay=WxP zF0-Q_UI+l7(QoS_teo8dY+dx+G0p-hS!&I z&UeHy;A}-^y90}-e^_uax4XUKZZbW7t<&|K$`VbN*ZHFT7dXff0&Xk5AC{jBoiHZ_ zZb&j}9QT!fi~7AUdu?Hhl#zVAKKW(&b=MR7Ji;UqFYx>=&@k|Tc{J*Mke0vyc)e-d zdh>fYv+#;ay*=a1#^Fv+Pq%A2|0SOp&caelY9VhYpsc_2zJnMS-SqJO;e57$5qW+f zccO;8`E%FDU2JW(d(!tbj@QuLt6l%+>|%x9aQG)`;2qL9Ge0hXXIdW4Pe=smhVIut z{(kV?kQDGU%`=G@&e^Wi5g~CacQC;fjDH*|Xo5nL*fadQdU#G$?2f~Dul95#@X%+fZcK+Uq7)b!K5gYDmzJ7PWfM3%JZh(8-Hb>%R>pDwf) zSuq}tznt|YOdL&B-+cJoE*#Y|{7QA}zwWmpx_e1eOTs+Pdg2AF6kvgm5xkORs+@c~ z+@4=rporGq&%AgJ<@s`I5~!tS9~thw^Q(i@7WKH!`xY%Q*}zArP>}ptF;aLDU?K!Y9+o+e%MP61&fpk&ak4U!*l~Gg1f= z{CGY|85;0%yuRpslVlGWftN`p6_s#3n<2b)+8MU!J^%Nx=_9VDs-%wq;#h(T_ymIV zweau=OWV0|*f4{UrqYmypwqqNoa+2|#%xniw6U`zf<}wXFdVjPI`W;8Dk1wTVVQIF zbU85ack(b)P1Pe~#1S07-_ce#xz<^C z8Z|BLBF0nlkNnvjl`QYqjiXQ^pJ@tC|7yR>_w>j(a)AH61KEtcz}VDK!- z|Hgni`$bRk(`F3}!y(`OCKBFR+yJ`(0etHR{j%OT>FEBNGEGiJ0%@ASJdDIlSB51F z(yO9n15^UGa{Eo;&ezupp9v2qKYVsidob$Lg>J{5T@kiJp18UqCc1>P>NatrEY5guD7yg~XC+3^^CrWo%HLM|&ygWM z*1IaI?Q)Iqx)`hzBsM>+p7^T6 zcq-dte#-yAAC(B-Qdo!}h!B0+dG1cI0+qy||B9L)Nx&^Xj#MZk7hw6k0_-mI<3D8( z)tX9ET3WQ1!h)y1**yIUutyR*e|_GJP{?xHPzxpW&Fv9{xV_WJ=0C|8wHV`5Z>Nl4 zkX``Dz{UXR7PPuH^PStmMt;fMe~4`fXKT@3Ga(&nAihKJ2aqHpbnSzmLR1j&<$QhG z@go+z_+|Z9%}_o2TYV`ck6B-_gWLK|;#ZHqz$lRW{V5~q5YI~z<7Ec$f&IdPuwe)M zV7Xp83@E6!!)g=Cb*D|%*xIbueA)+R#g~1J4Fp0}Ev=k$j#@Gtf3)l6qKh6HhykQM zzjr~@+7+*lbq$iHpC5sf-N`{Mep%>}?fVU(U2nnksrw^x7Lbs_>s3P^AgKJOFnWz_>?1=%Z{uBa(QnshU${i z%i=@LX1WMZSs4xCLB=$rn<jI(X0$tihQyk*pF;~5-|GZU0{3B_3l!j^BwuLWK#(6A?!Z;uv4*ib z3BRI3oMyagXzznof&o{oAg~pyq3@fP&RTjW*6`e?5Lyv@w%RCE8wIoa+wjx%_cKOm zeKU8MPF0@&X#w9o5+#NH-ffLQsTZ12uRK7{S+-%8Ajr4m>tq$T1^G>K@x;u!&v@`{ z5W$`enl{dedaH6g{f0fgnRs^!ebWNsnezWJ#MfbZps>IaKvRD&MiQYS;-oA~ZZcdy zHmf)bqc5GwQ41ldNAE0KhXq~2CWkl{pZu|ym zF3F%w2@-t!+Y4m0F`f#eqC(KRW&ZHm7O#=)4`<3|L->^CiO#?*G`Jvzu4_r)YR0txUd~jdDn^Z*~#%q#_tZh zuQv=w3-!F=_@VNGHdWKRJ0Bej;2iS5#gA%<$TU2=Yrleu|E)y;PgQ6N7rbvcqEbh$ zUym5#BFDRGB9`5I2kLbiZCSD|_C$I(CQA^ITTBM;$8`XyjbmuRqe($Bwe4EM#dbbK z?!?-PrrMn*Jiy)xp<)xH6r%w{LGBwO~pqR=R>0+ z)m(*_f~L34N*&6X>{n?qcomly(HF(ID`priSkCmD7-m&qja>p)mX54*l4`QCvsdUf zVwp>VI2V9yg2$*hh%-E*(SEHi2iREpLywP-@8FfETRto<_&%+DtAXKjTsODBXkAX; zs9nBAk%F_V`{D`z1+M*J1ODfw6Rbol?|Jm@zqeut^!V6VeJRFOulmLNmSewUT~kb* zhC2L)I=d=l1pu@F)3vIF+KWS;B=E>lessE3rm|=@sN+Co-LFI zj-fS`PXVd%#oWG=hL901(6N0>aOh4w%rCI$(XhyNVs@7}uM->N{?#SH!2crhJ?f0l z{$1JgSg1=Z{tLK8GNsp!vh4~iggVyJ~-X1FC9!g?`gFA4>Hg!3vc}gtIX4c#`7DDm0R-3M!_y(V9Ia z;A_H8{!zxWI11Kfg!E!d<(vuHs(N;&o>1OITcDE(}i~F20b5 z5b2UdGiW2UAJQDZ?GnWq9}my>#+q`)-|8{zPfD{mgTA9exM8Kabb7n>hvVm@H#QWa zKmT$sqQ6GQM(P0PSg?^o8VBbGiqH=>D%p67Ae7Q!N$nqV0Kz)s1!n>1Y`%C(M|b*E}pBm*ltigRGC)apR7xYIm)pd4C_P_4Y0*3q3&V*r?@*qY!o~ zCdH0V;_`f-=6@@t2feKwjMpAQ(+)@QfR^7VD#YiuuBX;5Yfk+BeTM22aTxo;^_y`K zle(OiFVz=h`!~{X3+y8r1Lb|~RVOn)lC&x0jnf;4UkHnq^nRF^@>Nsh8NW{nRfwc$ z^+Xp@!VpGZoHE=^t^Z{3byS!PLTzCqZ80JBi+=d0%%7NmsQ@+c$A{eR-Z_-;-%0QG zCnKnBY$ywt!&_%rfrVwuh4~UgiPHB}7kYm(H;2Ut`4sAed7z%TmDdX2*|9lZ1TEh@ z^ST;t-!cCbsQ^pf=B4%><3(C6!MV8OSEP(D6CzFmaI<;<2;7Zl7pjJ-*@n(9m|n0= z+Zvt6RgBGyv}9#w`3$Jl;=6vMIPv8s#=uK<2-QPTrVh>Jx;cp|M0Yx2FCx1d2x&J% z(t|S(*R%u2J7>6+sEbNdI4z+_0u-lIH40q6S5{VfANFPAAcytcPy$>W?1-=7u9e5) zKD2usbYdln-xV!d9~FXdHIO_{^?lV9xHSKU2$5X6LZiU4ff5)b)l{K7E3oO2@x*Ae z)#|a$fx|0&&!E2PN5UC0^2G_LVZ;zR3a=D;I)D%nl=wYp+WUKNh9M2 zBkDnt%X|b4Gt;losLe4-y69n8c`d{fO4l%Upxpi0V!5ANT4%d1a;MsO{CH@WA^AgI zy;F;caWjT}qLQg7wAhl8=-OL)8PpqTBuvL=bJIFqJb1R&;y1N!+`XA`lPfylXr3v_ zqa}6qu_{?;MhJN}E*L%UehUF3G7{e_h(Qc~A3f*cRXUn%hG&Qri`*;oV#owe2#s>+ zQej})uVa@|_hL9r?Owhnx68|JGpr8}C5J8@*ags;H*e{X&$wAu<;paHGde06vu;@d zBGUz*2$~5E%D_!y3&^AAh2z&$2O$k&4HpPaHFiW(bly^oh{86H`awr|#q}K(1|&AD zOTEg2xUcbV)>yQ}8smgbqiiweYXukbtU$1m=*_Ar{_O%8>k+~NZ<1_x2`4!3-u_*}D&sxsP(x1~rMEjSe zoXg9scI^6go{e)SjU=mBgINW=OcGI$;k6r7#bg5XUa_71mcLXSeun_X}1l3>^VLKsyC4qU)c zyjx!jx4Rsf@K?q$weNESDo*=pse|v+4d2d>Sfm?g4Jmr8KK9x1F{O>J<`~i04gP5f zBvw9$*X*gR{B$<9vf0&%nwnGE{`8yNIM(&8wk%Os;0d{qOo;xhD2mt8Qk#S5@jxf- zz1)v*NblP83yRcweL)wHtJF`5v*s)fB!}J1&-fkfF$(59K_p>oW1`JHSfb;};OGIM zCMD;g>Z(mrvwNF9WSSI^e8{7$O_h+GGW7E^H1so+l7gRCDVKvSM@}jETRO4=;XTs& z`rreEi4qTeo#c8jw%n-tSH0AaQRS_a6RAt8}`b!XUu*4`Yy z0*JYbOcL<1x84Ls>5Q2*4_jM3anNHTjXZxG%q%s2^-6n+6l(ST_WcV5=G}nuJsrHq z(2u;YZ3jYiXt}wvalgr_@^Q$>suuUqwEKD#lE(VH{EIlOFv?cyR=(K8m6o<;Jx5Ew zpiUj`HOV>bV`V%al_Gzt6-5>&QIjp}&M`qT9ex2M1D%O2CH+XHx$!8I0&~qe$H%T2 z>i=~74pf^k+CDF5K-l1wg%={pn@kmLGg6n6^eCf9+W7d-^Liva)M6>7{t7g*NL&2~ zeSR7g3RTyOugTEWCde4np*s66Y$IK?f*m!xYCEaIY2G)_)fc6o zg#!K-M5nICdODTv(RshnLE7Pd%la}He~zi?y-uc#{?%d&@b7zmvWH(!xxlJccw(XX zK1x$+i@hXwL%gKmg?$t4m52Q*yNLHT@HuU>tD{=Ad~L5Eb@LT$?h^Qj`UqQe4SNux zGICt7C@`}H<(mKxo@0SRVu>edK@_8gy687llOS`Lhk)48*0>Kv#-FcwYqNPF{oA}5 z(B^QS7tnEcwstBmr%fd*8Q3{-_WcuIO5wL7=kFsu1hOnNx%L++Au)hKyYrB^N(LTw zee{DZ?>696#{4;s*Wm9voU(FTVEAxh{2C6EL^-J4Wj+_-Di&wk3I{b|@-L4%hrYXs zKGe!VS-IDhwqo*Lz;pZ|0)2Af7%!}r@QU;O`_s`eU0BY#A{)vp3>!~?dz4`aZv6j! z1VV>!wRs$x+_&1ScNp#88(ee`j^Yi*?jVj$4ts4R+?}mpu4m}r8cFI`{-u$LL5ooQ z2L$N+d1;Q+R52x3MGKEGDE)}TbMvLcmii-8sW>S@nnt?{sEIs3M%{|*%lD633}`+U zQg95KOlh=@`jWxQi1_qf-~LS#fN6qgM^^o3DIy|%%k$W>i+atJRC50%24Qkd>nlyAI2P^hrXH^{ zj7mY;9%Wl%9ysM)bSsxaJ{YW!8lRCzI-jsu9C?RLt84ho>;*E5ni+<2_tvZLL$b)4 z^~Re#<_R11KiHluLZvt79rz6`-J}f-tGpIyUvIN=t2@VNl;#!|G)+x+RIV>-Ib{Wi zg};9v%T*;huLm4|`NW@nboBY}Q5DU4#M0v5>B)vh!*=yh)%%sQ+aWb_%Y4q=bf4u* zmb7gv6-Ed-8!#_-6zHBTpY9zhanty6H3v`_w53h%z<;9g?atU67U75d0=uS4H@P<; zrEn}4Y4%C8j;hqH80mNvMoly(M!bc^6ls>bH3Z|$UHxOpy zvXP;oB`&v&m-8ya=PyY^U6P_3tt(F1Uu~;MV`f;aM}Le#BDY@GTN^W3c%q zblP+J1+9%?%};)m+k%iUF;AntBz+chq6x8R1{}JFPq>$nkCBT&xPdC&17Ks5t_{uM zU_1`6C`0P_-K4SFv8?w3 zwhJQVV|yLD2&KUd-|*b04HbErMBMSQ-Hn0Q$6LE;zEBM!e~ z?-lNn)M^qgN~O_F)ip>`(qYF{@M$Euf+-rjQN~s8aM>s#Qip42>96);ex;9>WI4Zn zn3?f2K&}efyln6o#>dB>Rr|2`+RiXc`EWWVDi`1176c?GmsJg2GB^x3=gQ2Jo~u>8 z(fYGKhyEhL27{!7DI@Wdc?tceh>^P8PS{hPC+m|aCp7C`qXRm}?|+!b6#jcC4C?vB zCQcbCnsoq=lpa648KPx1&BfrVCr$_R@w%d)Vq(2|!{1ELz5BI0CnfLiZrUT@<_r*_%mL9;1hL4rOx{RGe(hqaw** zuohA;Sgz#wndlwFy%lhk!>{x9JxTvJ+;nh-sTr}LnE`IR-Pg@Dcm=cmme{47`rw;| zU$yA_{~K*}CnEm*59>!7uRAa5UyAZ2^lb+b>^@jSoItrDcg{}R(Ay}fh+$X+#E5f? zjzNcV@)+e3q%xBwRik zNQfoE8GrqI1P&cZ_rsqf6Fo+iT?RltF~cTy(c;|TIyIdTsV}pad}mvx#<2`(eD6?h&H26O2=I0N>(-(HQNFG$@n^i zqAf1kO^Fzs9W$5fKo-DjV{spl3mMNNIyU%MCU&M-DRqE8*jFyz&lysDJskWMFfc0l zlt?2X7wQX!;0$Nql~9(A=e`%W-8cGh;-I#Ux5{8dhWt0nhXderGA1NfqFB0M#|M~Q zLlivCG(rF8kJCV>{1%447{aswcU@wXY?_GZDJ|{n5&9--IS{>$17v|<2@J7i`t9$3 zq%)W-j-qq3nUI+a)4gFf-*Xi7S$&slX}jOHDViLv_(N4$8Ju|tCk$N=%dB+d3c!`h zv5%*QXOIs%w+c=OFXpCHh)f5`-HYXpP1B{!(Znpm4jsY`m-T6_ct~}jRWQW|h`lsr z%m-hyj&*Bpf%g%Vij;H&ofgu<9nR0TI*cx+qse7n9@D@-v^XN!Cib~%{gP{c5Zs(?l|yv?`hnGa zSJq-KP7Mng??-fe@b9}M91}YNU?&};3+U?jhAQNr&<=KC(im!jYMn=@oLuKvm;x+H z09p9_dBSe<*Ey?x{5O;kdIX56bL;gn&*Kb-iUG_=ge*I8!}`Fi|M@>yOV5$a3YB6p ztwI(@aMS603a;)6AerMn&@!eFZoN_Kq#*AB6g?Ixkpc+@udH7aIG=H?$qs7)|HZ?u zB0HH^KqlwWUd%I&7PbpEl_D;=D7EJ9VyR*giigY0%Pz0f`{PAKK~GA<2nVewcHGe5T=%#M1@^9APC1y;WXAR~JW( zr!ju+IBIzZv=G5jg0Jg0nTE3~W6Wa{J{4z|)y5_I5Av z=&5-;I5Jt6O+{;c`kRsbfsTwq&CK#@J4^%YzB7&CXhxPsV=BcfmeeO6V^arPEyGm-h!ZFMVJed5(xZMh<5&P8tQxYLc zgJHYgK~J+%oky-K0fR|0-Su6m6up+9B2rq-bftET zvLupRp*9OX8dOG-25qBIfw~twle7q)d5(>ZLs8A)qUYeCRFKXnFmxU)8W;e9vgqR` zCx?fnAX$7aM@fBo&GKl!W$4vY-SOy$ZHs=xzQpHB9!8d|MrdCCak7-YdsxVorEF|W zc;>l!DAfAXQ=g5nacmFY2!-47L&BNPiD&lm7uOG`C&b|xYF>i53~uFXj+o7Xn^epN z9V%8$e|+!8+ve(~wtiRtJSkG%br(ujpF$d`Z6u@t@n^wdkn#H-{S=gUgrsN{zSyuO zF>>Jt871S(pp8+7aGvi2=K&+|%xVJiEn;c~AFCKu^0M~38xJ0b;d3~Qipq1F)r&Py z0(ZTzowxd0gmV4(77C^1`l*=om)q*lr$|dg_#0ME3FAh#oT)#x%IlVoST!yuSt;A3 zG*zK1l*N6nEo_sWd54$9ZbPEH>zcL8libm^F92jd`=%aC@Top zY0*81TxR3I`&t&SfD0rZsyLZyjNelHwu`weKPEZik^J4#-1(b6^a`e4=grKgsMTa1 zwO6*_D1*tMSI)iNVS;1v*9-c4!%)(u)cA_R_VZU;Z1N?QtcXxB2r}h0x;Lr6htm(a z$EJCD6yOp+Z2ws7KYdlGkz4@M%^}NkN55 z*mFC5WARxmJze#0gEfNJOETS%vHQq-)$*OgWCUF!pPg}i+v>;5sw&-eWW$$>myGo% zY8q^#)NHesw(m#dO!$9bo@KNAJ=z~aNiukW4S60+*m+_(J$0ac*jvno+;0TKH_NZ!#YsW^@qZA2J zZg3lMggP%(&MFj{!716H2G&%Kk-s*JJV(fXGcmb7COtZr10@Z~^xwfzoFNy?Z!QtW z2E?`-|0AS+_HXm!8_F*_ympHr1M8IG;TRM%Xad?5gQyBTyt66fr)5FbG^h8N+fB0 zIw^t#Y1D*|v1w}OlQDE4)APwZIu&G{oMuOSV%KwBjH={&FY?!OytR))Hj&t5FZVrN z7Ke6YRO;g|!`A&JBz~SwVM?j5cKlum^yOXr8cYZ2e%4Q zW}myU>T6^-cvRJ`(@oARNfqpChU zDnVDX$sD9Q|GOMs)+$vgqKyb5_6FV60Zi%uV<&7H=n z)s^Y#yL~dwe|uAEzlLJ)%748~7ALMg-K}sI+c7`@#OD1-2AZuR;bJot)EiYdooC6A zZ|OL-O3I2ZLMKUo%>s7Q#jS>;r^H^ctKWGAUbw6*e9bWK{=BhH0SH44sn}?=Lpf<9 zxr-_JOyT8W+LA@?XYFFfH8q?AY^@&1q-ueT6Jp@cooKU`|@k)F=$ zZWw5P06ei5uwwIkR#0G;j*S23urn35re<5g+3mg8A2C*d=$isVtDBqoS#?B4fDbHU zH0HP0PPv{>QuvtRWKdWX4=fXIJzv*3UJF}lb@`Ap#;JFi*wakqlG-Ky-Gg3QrpWDacKcoFB*k?G}wP|}$&v!kN02FoEVs7K5Q z^Cxw)BC)K;`K@0;`1n}<(9$8C+e2pg!&!u&)g?U?mGzO7p#q@)YxuR3%Hio|m z!c*?{HlAHqd2pJ0s)>4ee30MM;<$Ey zzxsTGa{fl4@mQ$R^K!Mc^M+zVXwWX+^#EwOP|04XG4SwmP?=|~6%q8i3)OF&3jP7x zlv>xl%=&EaoV1X(ri2CUcJh!(==x57e+UAa;_LMpS#@Hal*T2sy#F7p|0>5si0w9@ zY6U$$8lK4!CY`-(_5_K0J3ED{z73?*YU}Dgbi1})2>wEpSw)hvtAxFVu5NB*-#))+ za9zpBvl%Y|eTlelab~=TEq>K?zw_S6$#SE4Mi(PipozBJOgV7_JLvMWSkD#gdUcD0 zfQsh_anNKkdKHZVWYur;7a6TijnYn(vt|Oj4|e!XL#fC)mz9+d$M(GK;^-%NJRA1f+ftbuW>wR zcnS%1G`cI#(Vh{J*kCQCkYKQMEt?KZlJL^m6z;8)m#F7K#A``xKr4568l342l= z6)(4pVDXsvfm^)rv{}sI^CI6e)d6|x1;2Zm+8^aq{@xDGHaJvZZ6yRPS zBVL{7E%Vh?Xq^T41(HV`fBr871?rd` z;;S8m%OzJi$1CISF`S6g^4Et#?W3PXV?BD;iL_pv;QhpXJqEl3@FVDwgII&0phU_- zkf85R$@w3!fEnhMqb&%I7w-!iVhGPF4dmqJq8Mz-c5{`RdV*1)-hgB55ehghV-mS$ z-*$Qtw6o9z9vijcrFtsyz#h#Q_xuu zH_It5}A=S#z zpV27rLLKQ?t$Hq&74&$$67;Atxu*+yp%d~PsPa2ydp)UM)-G3555tyy!PL~ddPQ0; zA!Cu#tXVt_=x`Ir1iU*J_En!rBs<0_>!H0uAu&NDzhMx!0?QEXPFF_9gV)J<4#9Qh zZWncsT?0_^rQrI}iHf38*a$Fd3M7Gx%T1`8wZizd zg>(d$MvHI@5dEH+d&^UuBe{zJ2s{BQk(x(I)-Ku9y>Bw$G&VwXZ0l^EdfZI9i;+E) zJ4x!FjhcTBdKUm69WW&*dj3*7hMkWgNFQ$BOXw@xgmw7Q)461Ykn0D$Lr}wPwRqWf@Ne(Ov6E!m7aA=oV=@&TI=OMd8rEs&_VSQHJMvb{Q6i>kDXV+tuw2Xr^ z2|WG>iC*E4@~0LEZIA4#KgsD2sP8Fwuf`dzSxTJ>R!sN(E2!{yjbo?_JO_f|B0jgq zRvUvTF8wmDvr~06WF;$^D?fe8GB&m;pWQQ6y-*sAUJDVT<>RiWmkAp;`y3U<&v1;* z?d~h(ZJhJ@hT1qjvcl<5YCTkfgx^24v}#P%R3_e1TJrOt?QC|sXn6wL=Q;QD(lG2ocqNd zOImD`h>@r)8L$7L{0~{O*XEO#1WFxJB0NTSwry*TEs53^Y5@JSVa-Grq=l>QI{2Sd zgaLtbpgzQfe4V5a^@waY#jFSxhWG01s?uv^Yd|W|m3BXh1OdL1ax?JrClmyZ!QuMQ zlTZWY%B{D8EglrK7^Di{^s;$jg%YD+{i3b1SOH|L5Rdqo9Kf`( znF7p$?=>ct8lNTlz%KPJpuI$e(U>H}KF+n`6f}7+0RtCO4+0;hgbQpm=I|8?uH|o25FSfkXU&>!#CO1-FZf3;af;q=trq&`%i%RiKjE6cYI<`?_#5R?shAQtPYy)9%J=f5X5_6cNx#9xav6g|j2D42v>M^lNGe>h zSRTo^@n{dXsk=X$?+B*?)T7C*xGHDqr7*0#mVk{NiB(Y$Zf+MeBslJ<;oFE3%}Pai z`NP9QoE`$JAP*$^|1jv$R|dxNpDisuw0`>^t&(V(yh}Jt7OflqZY{92=8Bd_7oy|| z+g(vNgp#?vUMn}$q7+&(q@o#z))dnn?s9F%XXNDkU05Hja1IB74r!e0R}f^6FG@_HPWBF4|4~m7)mDdm(G9%Yham@8PX+2YfQ{(~`-x|K0jRUbPp^U` zFGt$=#f62@rIsM!w>^@~b@~r#bQ(gR_(;3)Pj52iSw2?HIVzKu zkI~27%e+>}v*hMpWdeNdlF23RtJ!Lh+Oq9^%3OI!_ej!9)V|68M7U$@0dSu$!z6o0 z3q{DnHb+}Z19MOa(v4#>ICBiiYVyR#Z1mf$J$Qlt;Zl|Z#&?{r#x$Uwt}>TPnKFt@ zBBMqG(d0<>e*c%jC=DBhCRvX0gJH*|vff?_Wza-=cf&}p=(XY&IZvNKwo))0pc$0J zDXrqYfYq6``H0z2(mQ+#qM;9ju@glAM)e7$!1l?GA(Su|klcYnp(N1LeZ9e>h=XEn1Q&Bi}5$N*!tsn5vETQB| zzXfXfEhtf`V!yq9{@G=NRWH!DN~(c}k!e*JMGRg5%b#fVTGWEz__W!~h?i;e3Dt)( zV(dSn1ndpuQrnS=PUBNHo-=t|fq!~kE5-#GGWxe4M4GfurfQ}?dszOCxi}gTH7TQj z|3cu|IOUcA=;2@j%Gu5bgST>=LJLu4V!=2up^8E^u)8?Hodlv06x!m*L=CZFGdrSm zI?L$m;wJfENic7_IsJ%Et1y7It$~7`P0@q0%DKm} zJ=oz~Q|4oQPjQ8ozzD9xRZEOI>>dunGr{ezy{*&4j6Blh#G?9ngdR~UAkG)7Nlm$hub`1zIvd8Mt-67n z17C#heK+L?D)4aW9yvwfNSv8*5VguZ6<>gz5C_u%&d2+4ljMth%qcPT-dF#9aJ(9@dN65?-cMR_y{8i(UJTZ#i%vjB+8`s0*` zb4;dC(0c^8u5QPV-{mrO+g|`A4|;B39_l+8Wd&Uou0Aq8p}VmQ!1C;-;nXws*2|<< za((eS^?}d;$uHQNLhMlDKR76xN#j*>(+()M>j4EV3mFm&i*bZ#EZU5Oj04Zu?ysi? zukgT|uG8&*E|GgJ)gn0*X%i+_tL{k)&6>rCa53%Y?85hU?Jksx3 ze;Q#%;lAr%Kq|I8l3#`zEcl>u8G?OGXWZmASw{?+A?(Y0f2w@*weJ^D{7f+RwSfr; z`>Px&Ql>oTs}X0%NT4g|y6dCspw%Ci1`qDGnN6W$)YPA=Yj5%Dr?vJ{XS#=a;fWb9 zDocXKj&r~9Lb%=gW;v-JtC%;3WV*(V*C1|k5)igrHQJut9((Gr_|Yx>D02gw^~DX3 z-rN2Vn`>VQo}5mn0{ukYET9wOcq*I@ma7yOvGNqq6Y<0;NIj`6?s2{R&nAM%dAzR_ zHEjV1#L|gIgE}HaGvsRdIO3qTTFlC3{#VVe2Lf7*T)!9A=O+^4%()&;e~pu}Dn+be zPCrXVl(Ur|m;-JHUVNh6I4&*KEL3MoOSY8`qx_UKAEr1H^dZL)B|`I*R)-}`w%A3+ zIXC>RA`he0hy!YQVZjxEP%o{q@P6*X3z?S;ux#FPBTAbUMgLR8sA~wc=(vXT28ZHa zb#<6p(%5D~;UiiS|G1_ui^`Q0s(yIW-um#tHxe8FhjXGzDeW9f|7SO!vXDbeyY~h& zdpy}}vX-_PGI{l1VZ;<&4|U7;B8J`17IbD?+HAlWOZ0iZCwc)Y=9H2uAniRHY(`@< z(=}S@T*8`(mjikX1ww!3d0-ma}@W#X~YdkiR&RSpA`paFz_xVyslu z3<{+1aX)XDf;3W@RI1IDmX+wG%saR+IBk_sGZu`_gS5PcP=mY4goE zUwGe*(twbenw8}7a8=6in|x_dWiW^&(HU*Xb{oWO!l*BVJ2yf-2AmSINar1!Ccq~f zRYR;r2+EbA;KZ#bN0t3G{06+t`BX#cjrl-lkZ=}fN20+pl4=!>`-qha?yRrXg;1^q z?IzvRL$p%jWi6?$yM>G`2Jp(H&_pE5*CNo?Q8fl29-9P9WwSM7W0A~rVYA2#*~+P~5IXXx(wb-7%+bgmQq z8_4w%$13eGQjPoF=>to=eu*a*tf{Pg&B*VOGrlr5AMKX6`emBKt&qAO>NQdl;D zyyfH{Yo71bS!h3`ak5)JqrkM~?AbK%)$?R2W-Q%Q!_-uZtKb3F%hN=U&v|$gc!>(r z$L_!RL0uv=eI^AnQqxsyDnwqPLvN92Mn3Z@P^kXrruNDhLn8OrE7mav<*@ZDc0+#u zD_Gqsu>+2dFH3dPxw(;yR6W-<9r?o}6z{4;Uw2K#yx-27nsi_lYl&Ue-fy^W4$9bau7k)gP1J>` zn%{q5sfOcP;O!X^O#v1RA&{%9cY2IPa`t#rB^-BNa|)0O!9abJAO{a=Y4*lEv;)%#At9(W?%8^KmGSq#lri5KGgZeMM6SM1K$Oi<>kje_Ch|R z)$i@QDaHK9J9*P7g*}Vrk zgH-(W!Bo~#&ey=kS9YOnBXDGjlZ}N^r0~n%)XGNjf16bL`fYWu@mX%@=qUXyQUPo4 z-xHko+~2Ktt(2>XWAb#^atL|t4%eFoUTy^VdG)rK20ls}+Ba6tUR=tZYk$lMes@!h zy&lrVsF^#{^j-%>4{2A<<1r{ZeR7DT@9=U8@q>4svd!~J_-zrAMl&kzyGzaF+2Qc( zDgQf*T1km_UKDJP5$Y`-_C5Kcwtbs4bgNP61;Wl|Evn^V(q{9G1qDl1{OqE~p$I`I zkQ@!VVKBqc*;3pJU6$g{dh;wZ|_pzXtGw8f=%Ia(76r0JJq*J3(a zuB+J3S;F=vXD2>uTHSR4|MHiFXe!($Gn}!~{V=^jKq=bFN8?bJe~5JLdm}k`Y-{)6 zrgu0-g98In{{(zSl`pz2hg7+Ug$mq=Ek=QKgQ35U5AC9YTU)J$&x{Re2EzFc>b8nA z*o?7Oq%!4+uFiwHutIjG=};uj5AB{mO)M7lj>58#!n;iCw`DJqH|Jqu0%@y%Yc2WH zCb3B2&?Mr>w8Ah_u~2j>ZvT@@%P4`D=JYeZ$SYxC;c>#**8t(Z~6N!UpMu78~$_2C&46-@7g+KrUBo2S)n zAME3x?!rKuCFBHFg7iqu{mP0Vh3E6#X*Olx;eJrp^2O@Oy**!dkEzGt0)ptT;6sMfS3KWG)80$CS+a3 z4y)bCJkQ@l^b&JQUkfY44J6-$-0i|))2hqq9bVx{kI>08yp3~ zq@HjB*A(aCzB#|wXh=Ai7Kuhg2VpOBevc0{Huh{2$c(Ew@W>(P^9Fyv9n)6^ODdMY)VNE+} zObpaMP{g#RMcNYk8QeI29p0#0Zn|WBTT9Fbz|+aI!-sW+`-NBKGKmVkj{UERZBsY6Y!hN zf~7(sbVmpyR2*$dpV>AvJ3V8HTz1`yYZ>t@wZy?%(1chg26<*&7ZoSRF5XWvyvP^(|bid7;#Jnd-Lf2+nHU@6(VDQ4@dGZ4KFE z?~{#~>&xo!1GK7mLuA6e{$I1`S@8v zng=-)!)S76XKYYybd2I+to=Q*v@k@%z~HIDjq~;78k;nm)LS?BVo}d!l^4!g{jBpP zL`^K9r|1fV=4k{|w^dzFw$+uD`5xq*^4sh73W@NZ_~y&*3w!M-G43A_{A;)y!m>mm zki+e(fiura|K|DXLlpG%7?m0Wc9g-ZNZHM8*?5E6Ql*E*$iMk_mE1$wK#tw(sdM;W zKhCaCPYQFt+ZEoL2|Y}I1-w>PDP25Lrzs*$v+RD9ndE*K(C;j5$)AlguY*2;hS(7O z^t)d)WZs63B!po#sqdTeTlp;gw~1W$PU7N-4zW;SeCsb?s^>rNAy+#a!IC3Dq+OJE z*0?@Ke=7PyB!0)nqD*AB?EVliy$V2L2&Icqb)}KZOGz=*F`?iAsH&)RI6szB1wFy7 z63~2F^%)At54gJ=x!RE@9h>Z^Yi_nVsDU-HgA6utkcrn96dac42L+R(KqNjZ9?1|H zzg`ZV3&`_N8+)z3K@X^MMVRNo2f2Qd#>PL~@xF5As_W^ot$|@hFfxqXALU##hXV)# zUKM;EUCttM#bLn@&yC)nB1X%K+BAQZu!hF#qhovU;J#$As+3(AC{LAIj7G9l-Q&-? zZtDbgrF2d*B=zr-HkE>4h?VWZ!s6nn6|ELd3k~k~*?xOkU{Z;AEFFoLwPGphH{{lB z)U!ARNn?(TVU>Z4UT3Aelni5IEj)MK?SlO2bpO#+dS?6*)_5NRJ0hT2%>S?elrIf+ zFNCXW9Y#FkQ=4sMDW%lrcu)`DVWSqlmPi&P@-|WfHRw8#%mKDaDdf-q$D=mo8)V^+ zoJz^Z$`#?iNqoEf8oB3v=nRhtSKnExq|>R_;T8d~{+79T7;f;EaL|}>Vqf)#TO;fiXFw~=T9Ju&TWDUMn=Zp1HbtMqLRzw`NPSb zIpI56ORXd5At8Gr~nE(PtaeJzQ|dP>!VD;y`~!UQL9eGXr%@x5 z$C2W#^QEV#)_m?#jNu}JHW&;?)C1L^bvQo@>^==25?q?*$%?P) zuS>;vC!LlOSP+^lwF~65^=;|nHENFtdS~_do*MHYGRL)Wx1Sio&iSABXTx&Q-`4dG zxG_f9B}PsoaeOiRKd#0|kH{D#{952NT|V5~Wp7b&VqPudcpLN6;h zD6!vo_;AxmIW3*>+oomt5RMGzhTX zisC|Rwgp9KSHU$G4Wy7w5VYvp*}Y7-!eg>ZNC$kYrB}5+OF#IB{MA=<5mo6vvJcd! zyo(I-P%stuuxeYcBeyiWnCkiht<3DawN(nS7|`RL>kAKCtrtQLOGa;_Gusfawu>~A z9qiX=7#G~x)X>fZ&R5R+{O2Sww|ORj%E^R!#!{ny@D@4KD_BdcCS;v9=vyIX<+{#YSj!R9ReB0|G_Da!KT!mYhw z*GnHOJ_&MceJsB!GoG|ww``aMt4HUAiW?iEkhgbJ&+S186+n%F_i&7%p#i`Pn_)1p zz~u2CsFBg6HT#gZr$}a-=!v~B5N&%bJZ!@7i6w9`VE(mrs&uWMHJkW<3c|vx$D`g# z#)DS);=BuY5;qtUQ$I9}NkO})Ar7@-$>{tDcWb}# z!Sbcl*z~bA!Op=O#`67DU3F0!-7n#d0xIUBfwKPc!x;~=gi=1!7~Bsw^(R`RY?Lzr z!kq!}ePFt6$5I(#Gg&Lb&A-251_5fqXN#f`5)YSR?oW{CaL*;7oz35zQ@QV{-0zQj zw$60}N17Vnj9_p0!E}el=524Xh$JT(ix0e1vKR@f>gLwOzAJr??fxkXHtsa6WUSD? zHWQ~W6GGK>qP0%qfDTg(22!AxE%`@8^319oemxpX&IAs@AhxqEE7hMA&1X)B101y` zErSvhO;Wz!mM-pC8+ZTeZ+1qfnKS$%(YGtS%+fe4;C>(=#WD8v2nx)Ag+i{ynwk># ziszTtinSg~QQ@KBb)dBO>yR0jhAd2pfH8vU=1t2&DJn(sv4o88$hx~2hTzTljTfbp zv8sCivZ{Zkm)W=bJqWV$3Y0SZT*H@{uu-idWK8C82$0s&H4by|2Vy%?1MC;kd4i)gbkf#DbPJ7y>hx zq_?!dG3zmfsJ4yGAzax`Ry#GZY_}<*=Un3ftl+H0U_>$`6I%=tLaFmBv;$ut-IWX+ zhkyh&jSqsSMw?0H`r_A$jSn!n_$PTEy3OEnP1JqYC#o8ddL1T?r4Eg;ww3I$h$hqh zG6l&3<;Wu1NWmRyoh{dYQzV{cg#Rg%;<1uoN>Fbzp`?iD#N6EV1){Oe$mHpLtMWS< zU&<$UTtrcYv*enN87`;$1-mUm6>4iG%oS`bqrft9C3ePK7KAe$`umgLYFXK83TJxF zGkSlxsgtaVS@xWm&#&T$GIeix~Ca6WJN)98*F}2jliB5fEVV(wdzzm~xbQB5u+4MryoF{btL(FFv|q`N z>!RO=3N~CEBi?&pqyPOW!3omcb7niyf$vB-AhJk1zV{Sh+Lr}%oG8I*&yrOK|LC;8; zb?KsZ++Znd^I^XL!O`(bw`YVY6Jf!cgYjmLg7kx_$efni|y|O`PDmq>O~b#I2WHS+1!&S?r=N2jkMPcy;DB z*Uy@og|67$nm~v!>8hmT2P!J6CQcqc$}}s5!-6pNoMP#`Fu)(d+<8(;-yE*+MJNs9 ztn7D595l2@c@`g~Kb8vE9y1Ysu*2@|%yGhg9x~z7(n@NR!R=lX50(sOk*m{T1k9^n zBT`E<_x1fLL))j&yTfl6NB((O)&F@|i`{mOMe5I-Tb7sgkB_Vm`W~x4EELCNPPSWy zHaovN`UZ;)=mhU{M^Xp=&cmEa9M^|20v(&K4ry22(uv|2s$E4zfn~Dk6PuY@@yOiT zyq3PU1a#t|AK|4A>oHz*H_6VPHyP{vESqd%ITeskmE#uMd5x z87DOOtoYBg%7m5e=I*7S!Bq6=ynFEZ$%Q+QxP7@nfRvisoq(Qx*pQhf9^T-yn?1Iy z-S8i3>oZwwxB<`y&0(`Vy?bC)byc#UOpzNKpT2B3Q>lbHFoZyX@;RjIYx0n!hKr#- z!-OU*anyojSXdZ*5SckrFgN$Lm3vD|%UMxE8yf{HA`0H!I)Wy>hEg)c9lufLL*FNf zl#7lM@sa`qoJ-iCI63j$^IhD+L>RTV_9@qi9EVf;xoP^ue+2TJan7-^Iy+v8z@nKs zT8?q%v;v`%hp%9$LWTtCwBdOp|iRLdgX4^x=%xJkso;GVJDhkT%UzBLyPew7;SZ140XW zlsThV$R&1M()N2BP`08DKgjAje#8Ct;M%8^82!XpX+4W|L9zoB9Q3$JnOvOl##riS zd`D(H>>+pDzRXY#8#|+vzx>qdkmIc_>K;3CCVLP#5PDANV`< z!}jl7uN#NhxP!P}2(!PaxOa$Fm9};L3lj!e5G5Z)NGxV@NV^m&NPn8)>2k_J*kie3 zH;GudXwQ1xr`(8;M8Il_4{=7F*N(fa+r--X;CCrI7Z*87NEk1K#!uM98wFNb zeg}jwU6r5X?U(}d9to8PhcQ+wETuAUp%n7%uIa7H-^W?Z!^0X zJj!Thr#aR*hBy<{MfV1R+(hxsORjYSALkAcxs3ajpx=;1ioF%=tLO_}l&?Cm{av-* z)@J%@6x==e)8^|xcjpJ}yIb-RmaL5f+o5Q0{Fa@7pDMP|Ey;)7F$p1mE8M$EDg2IWf#s@Z zN|nZzzq>n;QN)9PH);V+eq?V_DOsI1Ev_Uuj7j}c@YbHU$#yubL1gZH;E8xl^{1WR`H)_ zfl@!Y@~v5iJU0_lk9Ll_3z`jT@rZupQmpOD6zvvlIM=i;nn70-X)Py`+V^SA7G=Qq zKuZ%)(@1Z2H#q*lAKZNg9F&KrP z#zP+Ql%s2$+}yxA4bul`pVT(?v6JJ&S)b9x!PcfyUBthX<57T-8&*1pR32a(Z&APr z86W>8H&-_Qyr}92R`C;zwCkUoAEZr{%5z0C=p2v@Hlap)pz#+ zn8i)AO%#~?-EClF&y9>KA@aDV*4!u9O+s9S(Z*G}Z#K?$3~#pEJ@-#366GjS3#IZe zl@oCY;wgy?KPIbZg~_m`s3U_r>2cKjB~#X9fSUeOSl`i_sSjS9tLP@{D+|8Zl!p4 z+t+=~Ish#EOfAKmj6My=3l{_a-cZU`F=_IoP==tDQ0>c1YmQ#m;$`2M^>>ib>L_4>Uc? zT1PdpYft<`ZP7Y(jvYOsMA-U*HkG*@jj|n^(BY;h_$kM!$QdR3J2*FyI?FLSB5kQ- zhxVJaC0pQI`wy%I7_h6z4sT>Bx!y(?x8fok=`6`5y4o5B!5yZEvoIzd%E&Tqj0jYI#Gv8M}QSO%t$lZ3; z=dKHBeVv8`gjrzz18^GC;>953m1&o^pDiCBc1A`jP@?@H1boP9di*Z~5I?WI!+lH( z>q7P(XB}8JRUJn~98*3lg+59G#R32sGWk(4jhBj9>4;)x@?$2Ozv-7RSn;Dg7wcs2&MkdY_5D_ zl;opd6XvWx_)7){*q_$wwE~DmhIcj`43d}+YI37v%EK(SM_IZ1xr--Lg^|T2aK|nu zcT;t)y{b9BLD4al;+WC>wi zPNEz(K+S0gyk;+XDJ!xU;O2{8njdftYoEeLD%+oG89dIGk=U$k6;8B`{V%#Cpwm>Mc&8oGMxNdP($QPi z+q+-i;R!U^)m^;~gYc^3*2`sQXSeQug`MGgcXUvb52Tr&mvtN_X|8zK0*3hMh>6aO zq$K+~-Ok6C6$FwF^t7z1&O2rX2Ahes)dU*FA8o;e_U(<0mF~~WiVuB~ivl<{oCF&W zscy@hlT~_7V>b({cqG}AOW%C&Utg|YLLp?snt&~jr}{%VxAl${Zx@wiwyxorh=QCW zc33Dq!qA4%!H|MQX*^?GnGE(1SHf<^L;=&%iW#*w8-e!#geatgy7_A?=kG>ZYH+%Y zQ4Uj}b3ry&X-f#Jbm_K6$!z$V8F|bM%8!Fj)sJaV!8Uo;tc^mqxC!yz=Rls;En^xh z;b}-w2_BmPbS!`6H2P_-`DDh>U!>N`9S>MB(}CLpPXb25Q8ocYA7}qHjB|dgoxag{`n)s#>Pg) z_j&N`$kvfLqqMge{jc{Zc-YwaAK5^q?Te@GyaJQ%7yU-gse@gdY}sjWm+=Bm7S z7LijQB~^NxSG~Tvjf>H@o#%S}Mq7AX9UUE4$g{_vm*o`<#p#jsG=k!Zw5QF->_B}X zn?t^;j@$Ph`sc|TpiOC?br=tcNn1zpp>vJ~}YBZp2HI_}>-c8Usl_ zhF&-H=N*%e&wU9okt8CUX=Rm$^^QoqCau4H&e~wur99T%NF;~OF#}KjMkGBQ{?INh zE!$&Bk*I>HVHu3-taybyzP7mU-fZ_L1vbGWoRm$pj3kNURL&flAAUXg(6tJGEvsWU zj~3LOo^!}|%}?a)QD~mVuXsvy3ixxr4-#@r&0w-i15pFUu=x=w=dwLB!`Na;K5j=G z-Lt9~LZrgT#LCc=S=`oju~OZ(B0wZ6&O;M-->4(&9T(gW^f{BvneWdzlP=L>NE{x7 z9|{yiZDweGWK~7y9_a6%9ziE@f~G>&{vdxk@2d@KUx~(J!%|(<+GqhGM}&uCW;W%& z=S=0#b&S#yaNH2RONom+)Yq+=d2C#6wL4y9GZUNYN7Q4apn%zlJgnP@F^W%5IDY)- zjSJw94@Ti`s=sbOE@V?Ff=9~Yr4Y(5Z1@`{ZQUCzxrT`6ML}Lv z@P|zuD#zZX?Ndl|+B5wem#Upi@seOTJ-}2Awk*ghQ%+zS$;TyLv9SvcpDmw}D1jVTFVjII zcymhtTa0<*xw@RqZM)d~a@yI6Zw_+&1015OIbuO#uj@QnpWHz}=u;Q2@g0E8ZG39= zTirMIeLuxf-~;e;OEcTtQHVK#bh@41n6-VT^O*@@VgDsKAlG~{*HBlNt)qU_g!2iK zUiE`sMOX7Xc*17q&lS`oSGRM&Ljahc4*-{V2Cq|X;mGuyMW(P_|078Ug5kmM*SN$) z9HF)3kV+Jd@`?&nQ`UIQM*=L=Lx1EHN{U!uYnAr!efU&dPBgh5n$QHonpeK{Y7E%| zdIdsN=SjSe5gvOasm`avZEEH_&#{aqkx0df*$+4q&rt2F*GIeQ98(!;fN&6(dg#Z5 zZcpp%>?|EcFsAq2n+5sa+m4@q83CR69fP(;B4qhbg3;YM1^OouCxzr3f#-U!2wWyO zh|g8UfU>(_x`9 zv-)M0ZYGIQ7&)o^u6Qope;xM4Zw<_m#Ax*XP`MQrm+posdJRs8R9M)^2vVjJya2v< zrx_j*F=O4E@&z^slRRS~HW0Tj68oO=&&MGV67;$Ob)!tWUcUb|rE?=)x^n%&|G z4SjXz+c^vZy|jpk#Xig}7z?&N(ESmfg7&LoIM=!WQAN(UB;==$aPfBgi6jBa-Ax^=Pqd5RIR?+l-JXxaU~?r+=)Zm6)`un&~?}WacpGW5-OqJyS5+6-# zaBDcH`Kma018ngj%D(BbHY}VNNle+n_6>iuu0&eteWO>BP;o zAEY=GkKwrg(*lr?TE~_0A#f>)iJZU=T+$4Q>F$KEPt}}&x=f&w!)YxgRUtr3zq^gk z%9=XzYs{`+S#s#qvEx1<6~l`(H+Sjk&Nc3X?&GFXR_vKj-R)8oH_9&Zd^$!Tyk|U?DbuuCO4i-!mLJaoav|QBb%%hqxhPgG7Bx zR503&Q9p5BKO93E-Q6(XZ$(V3ueW=xZc*(kXK~IPI{!*0@!2Qw*KM|1nk{i5wZOo| zeceKi;pCjHY(Cl(3kspbPtZ56yKL;~iANWC+Mj14+}KV~ep#~O>{5y$61a}(eDx9) zyFgu7H>+F0!or%bc-}0l5;mWE%RZyk_ITq|>CkV|BOX%l6K`ZFIOM4e?@zi#Q{Ma`w)2&ylRX3oEF}Pa@jZLv=KJo*spDl`TieKuP9``^xJy?r z2+i}l3x+44N(gi&Ua01_{LNCF_i;-4^^>qKie&5Hv$w}H0O#=DIe%d@8zI#q=5s!g zKwrC_@G!cudr1}%QP=f~*WCbc)WaMTU>@6)$K3C_b$hQbk5w^(zVh<&F6VOOC{hGM zI{|+;(Bi`esl+?Rnj9YEzigQRt|BT z|H3_Uj6heHx8+Im0X8TrSzAZ*lsUJi2AD*x%A&i8MSMr=JiudQ$4^;6Ddo7zf!+UB z>{!szwF--;ltrrQx$=IF41jzlu6|k$4_2WyL<{XOcYH2#t2s=Sm5>S$p-xnF#r%@@ zws@vw4pI2)r|g`d0tcrHlbVO>-nDM53ADa#k4``I{v6*+W5V}#Z92v> ztCh`NM*Dq^uPn~?Lfw%jd70UD_In(&go>PJjD1yp#OYdbHk=h=o4F&;tGN zbnGb?rNVmeGl5!QMirT?*xEuYt7`P5jZ9Ezq)x|EIBu4IFju#dv$M6dbo%7Z=b9QP zj8736n9A~~6-SPXB)$jt{?AuclLBLUVpTIGnnxcox3jkwVjq}qhWl{F8f&-xx)(PFtijE;WVYmB{}@utxP za9$=v>)O@qu)|(naLdH0ZkXFJ-qbn8Jl?+5E06ts;=d&K;@MJSH<+zT?ux{Znt02F zrik{Pc>|TD``OMK*ZP6Ng1j?I&?JV-q-j{d<)s<0BrT($;LQ8!^XH)GPcLS}vwWdwXO9zY z4&}gsIHdj+bk(VRzy)dB*F*er0P6^ZJ)F-OzdR|pY2N2__qw=Tu7jXs1qF$PmWHAN zCL3)IB9EY}s_Tc8EQD5HMQU{e0|T`$*M&Qv>b_d$TmV5Fa# zy2<{X-@y+di%H20g`8zxf>6$a1Ur@1?Axb#DC2jvdSa!yklrw z%5oQrOsWjSIPjS@24FubG*JRfJR|UZMOX#Sp+C{c1iq`Ekf9&(t~9>W(&3DLzb6z=SVL6rabw9WsSS zmzan$EHj}(Tacyds0!e8>3?jprX#BSwBlJQqd)oR z!gId?=xo-|GgnWV`44GYMBZ6rdjLji5p>>V6qJjartMe>K$EicpQWU{=K=Ou-8{4* zUBAhe*Xwd|ZUOv0bMeFOK(_Z@!$7w0?z}#UbtB6_aq3!_gud_edY6V$&-4(w12BKgWCgPwE4-Uqk1prC0;o))x=|9u5C4{kM zfr3a{x<^h{*3QP}*IFSA4`4w^9;4=>f{9iyQAru4#-a0a+1nq>^0-@fh#MO_C9;!Y zSG6FwrYvt>K27hNmB!9y-HH5r%B86&jZSg@rnoXJN}$6&$^l6%nCFe9t?efWFN!$J zTMnA!4?(^x*lqIhg}odG*l=_RLrzxD^O9TAJ%KA8g=!Y;ZsgwrvV+$Be0+>;B2-+{ zX!#l{GS?-ic(Jr>$^?4{@S@-;5e(OIJ8t->q+VzKoV)yhq4YjSU|Dj<#PNa{r4(npR)d`2&vK?zJiQ5LYdNYx>BR zo(d=T!jxqmcL{Y5Jb;IV3s;Pjj$S?(|zegS!P94?`V;Mh94;yKQh?>}vq z?_7N{{X1?jUUT;&}wK08N9{Wb6zsEf;}H3Utbeu4G=xOj`5veUWh+|9Pwg z0AZa7Bx05Fiv$Wtgm7wRVqaFQ*Ei847LZzA;CKWUA%YIQs$u$FDY)y9WIg*)fi#c@ zR$he2ZXo<&lnywCWflCMezfyl{d*23tfql&IfZ#FjQ^C?pzdHK_pZ30eX)N@5ej`K z2%q>uF1LZ^1?I-kKq+*U(G84`Qnda~gd`bzVmAO27I?G(bSV%{q284HC5Bl1nb;!+ zxr`tk3ViS1=WrsfN-Ej{2Ta*0)g|{QTHm)KRK=@5Sn<&A$QV)3>7&$2)I<@>RpNsK z?ahF|1*8DS&Ml=$<`mJF!>r#+_+M_q!DM=cX)3fxg;F8kR9QjjpWd1+Hq+>+id2x3rrYHd9|vcH$=v%Rl1TYWt3Ae;ktFPCLagiQ@J z&M&TYoSIA51!-U~w*PA>43x~Y*#vvz?rJ^d)ri`2m4(Y&lAfb*QQb`$p%2Uexk3Tv0o zbK+BsBDM124qbT}Kgt)E%-A>8X|Xo=_)#}9Pk(iK<(DZ{Zmk>JG#_7U4+*kAysPU8pY?hI`urC0>M|`#QZr0y z8!+-X{jT+()qEN{J}9H7nqJ$s~-kJ)CVurBd0 zHGw~&q^_Z1t~1eOoO5er$}_37o~?S&^wfFT@D5bq_d}*QjACQ(`>ca82o;F{Idtqp zcG8yf;z^Mb8xsO-#|B70Egf+5;Ia{*o+kr%|78B)o~**BiO3oegHGc%cphBtdjet; zH$jMudutdte$XGlnj(x^puHg;icAbN^4A(9GW=qXM8pQ-P^g*wliE=+upr8`zQj0FbXa$~+wcs4mmf>z{EOj;46hvmvAJeOz z^d*~L3rJQERLyW(SIC9prJU7<=NKyGlk=HcP3M?k;Bm-@7O=8In1YPgz5@M@O}!-zfWz6X`90)QWJ# z1Ap!eR}sVtt&#+FHA2GUIP<(=Nxtpj`qpMZ5C~kLp{CZ#{yi`uV)lRz@L@vGV4gY- z`n3-b;{PW!`wYI@-p0acu;Roua^|EEUt0wW!kSMr))uuGOq2BqS}v2DXfZB z2@mEOo`50YtohhUkA)$fVL~|je_B9NTpX3NMDDLtxR3@YDHS>ar|;tVl+35{F(h%! zZjNj~E7-*?zcYJf4(+W}!3bAT&feSEOODQt{EYzpnUx6_0i_3)+DQa)EP|Vj-(?9^ zr4htpnFi*~StCclySdg!F=V!zJyJ_HOeGYL4v#Q^>wMB38ghH3Vu*!aCUZg80{|xI zdr*kj9UNc!I`>OPS`wSrC1ZMp%~g?GX6D(>^Xxa5%c}?zP-`rigj6)XKyFFN=7QUL z+wbp?fn-Hsr?lOFU8z-p)_VM#B{k(i)6O zeZ4g1=5uRD87eA?%GSM)cf3y1*CWiG#HvKOfL+w2X{A!fX(l*q#&l?`NmxfkUzo5AzXx(hK8~;Bq48cLrnzb*kha&<15TlW^uw*6Rcx*q7mQEcZqc;Q$o+hm>6KyzxoO#~GRh^r}zd2xYnpQ7B7#wX-Q_< zBHsuSB2WzU9^JWOd=be;Z^+J2dDf8sfU9A9Jb0x|U}?L}x>_PkW5B;Q%fEv{&D)Q_4U1?wjOrt`o0UT2zsNuSvf_7ho1!ax~a7;A0{|7ks7 ze}?bDar}I7fizhfjjw)tnN1uzcrw`yinR!K`#PEdok@Fr1_Ib76Gfm;>DM6`8h>6E z_Qk$a<7IS5pQek2HWCIBBQB7#SC$Iip9k@X<)aYy?2-fa#(%+X%c)|%PfNwG-zOEb zQ(ysaXRB)QOz!{yQ}qKPwwWPd$BicL=f;oXqKjOAc0x%yz}0?=AQ0;6u*--k5s_pD zblnH!?#}EvGi5eRT5a|bua=Bj*Ak67Jj(BVk zX?LDCI&l5QlU#G;74dzAEBjK_*+^g?Ha$}(Cr@(<7VAL*9fh@-fOy4ze1-`sZ+Czw zMN#ifyh3pn!DrRL*@U91j^d>J{tXFF`70d-2cZ@r+ZRSV60O}9ZQ!7hjR^? z%Xh1Flc~OIwIifof__`gpTMpAL-Cu#lai$F8cSNf8!^2l*!l{^I=AfjHqqAFYDLAt zf$%_oXzANELjDeP-7WHwng2B~qB4+qvT4ot+kW&|PKNtK4>C)u_gIW^H%U1XD(5v> z(0*At?^_b%=c_to+)R({F{s2nOSxa{*}&cx*5-BO&@+P{9szJ#e2iT`z^@zD`BRe$ zL=k}(TEdXMa%7ovH-|~uKfi=TF3<8Z$9a%=$UsUdX ztJU~#z#mn3#9B8Hs4l6u`mgNvhe?W7p${Oh^sK`3dM-POLtz%)a%j(6H7JE<`Z)~P zvQIG}X5t|FTaISv8*0WS2n2Mn>ijB}`e|zX`CkT;hnQJwvTogYfbFi3M@2jI%tqwl zJQE4KNX!TI^rT>@ZexW`{p(cOoQC$KP<`z9juMy4Mwk8K4#eMQ*TJC^cyFR_8|T9k zzMd@swD^HDUhiwtL_XI8+JkW4f3bL&;%69oUO%(QZtegovER*K1lM<1wK3VChcg(c zA-a9ZZ_nx~$Dai)(cvLYpFYAMpasokfgaYXI-g=Sb5g7kPcs{({QSsxna?FgA0~@} zdR^BeNMUuShi2p3+XM9-d{T_A{=Bxk9ZbHYJAi2KwzVIjrvVB~!5hFeh-Dz~K4Ca~ zdlH)U>sQ3@QP=Zd48t)&=poVe2inDLeR1cq-&Kf}b^$@;dI(#ZKZ*!E{qH(0^7u|+ zq5yrzbQntV6f~cUjz8TxY19clBh;>HN1e{-*w_P@2dGFrz^rKHOU)e##bvbf8$xlK zD~^fh57!AaF$7UW7@ifaFU*K>WLv(cbNgK!hJL%K@=1)^rL&Vcz1FW!17!?VZ7x8z zp6Y|KD1fsTdOFA^oespqNh>>zyO*)cn{aunF;*1`sjpE_}%+Z1&#uTO=`OGns6DYt!jI6zJj&nWih=T#iYB>-@O!PPf$19_{(7LMSyr#-!8zUZ?{=5P1oIT81haUKDn@{iE9|x{H#4 zdRf%{?!E(Ri2L1pOi3}Z8mY2pyKReygWRXK0h^c zPDcL)AeB(dwgLwy@hut&FdG1fNB}^Dkmm&)7-|RnqHyj)gv3i1D!L)0VY#kPi9q!t zEG*n@Unf@G3_w=Sy^@W+D1_!OzPaEUx||X*C)->W;Pb5ck}%?Pc|W<8odr{2(aRy5uTR<_Ui3+98sMLC+ggVH zJc%61Sp+eZnM%bGu2bsor)SPvpneebjr82$HV8PeB{ZJT zI*k!P*D34`ddL=P>Xi2*l4oK$?tb@wAMNaz09N_KUB3U`?gy~r%(E*Jjq)cih#@rb zC%W)c&tTj(FpECe1p;sVPZo275N@?Je;NA@4FhwF1`27kot-_0m0Lm=$lTnAS1%~) zB&7NH0;tq__A)d3{hyvEs&|&=9QM#@w=y-6fY-|d?1vs6rpmB4tvN5ev4(XI%W%1^ z4Z|)H%_fVNI&7|`ikO%>#*X7uQ=h49dGPj9aJ|X|I#jZu3{a9Fbsh~U0k3|_WnyaP zGLl%x4+w~@t#t+|{me2z@A*riu1o+x_Pa@p9IzB4Cx0!!Z(WdDw zKojt=7jfRf5Q4Pg(9@52oPeo0S;{^61qA$`Z*aX7uCY^o6UctuXXaCYt)bykv~8An zy4t!NAA`=P`#+?yHLL^YiD(j#Dvh=o60%%cnqZ;f?`&@`reJFebV*8u2CcAAA)sC0 zAY}(e1p+`fsMCKC7^1*&4YdYeO;|g0Ua2}ZeYfZrOUC6y?Tj)<5TVc~V! z`t5L^CA6ZH!Ta>DxVYXFc)UFe5P%QuMdLFm0!5RE2%4WGE`GW-Vs{(_XeiCQy?+oT z`@!oKC|X4$WN_$A?ar}+yUi?=YFR-M+}Pa{Fw8QC(%PDaNOo~GGXVvr?CJ9_5AqS8 z?531EpL7_c_3M40oQrx4w3B#q~rvi-xQSplA>=pV@7x|4kqPUBziGQ^I!VC}) z==lX+AAM+(0>PXPfmur}I@{I82AMOky>2Wx*bgy62}Zxd5XhK|D*yD+v2gfHo^`4M zr8*h&L$?3Rw&vg+v#vLp@56#X)$}e+ae+wN11chg@awhE-Q7Ph5+@VmcZbfqCy;kE zkunkvQ1!F|0l(eI;yPZZZXS~ySnLR#Ykz!>7pG;F1#fTzRXz#Vlh{Y*jIKa@Pg?fZ z3x=Oq42vRaIk?n`Pj%*--v3VvuzCtbVi0^ju~DG{!o0JWqVNU2&&^A)nw0dB5^WFci!OAzB~8+X_L8;KuBJC zjAhDdMC^4}1C+VGmxt1bGui)o71AfJMCqHl@(o+8gqsVb3oUwV+ot6nrrf&5ci=`j z{4H{)R)b7&Rzd)KE6YucNUTH=F z$kS%8R2PYR*E1?m2~Z9TWMd~>50wmMN}1W&?XW~;Y#9lz!rR1Wr6@kkd;-O@BapL|Aiu6wD4GQX9(W;5HBJ! zl-atXA=#mgpfTTjGZbpxvr3%gS%gH=b0J_!60?XTh{(}cqIjX@k3$^_gzV=J=RdII zgKOKt-3SsBzIxVaFlv*H)dKr$cx|iEl;`IXF{r@Gr0E0C;#+CNE3SeAu@a4|_UXo86tgrvU>nDZPsIPr<~Gp!NlRReHiLV?Yo9qtB)HoX5Fo|# z&bcUmi097#_5y_|B_pl@(9f5;mjx~$D8;T~Y>DrFX{n{-11YcY>GkK25r<_gBD|g^ zkoyrJkX|*H)ctJv?jHBG!*nkHZ2WZgx4Q* z|CmKI!%&aEC2#AlIQyv$&;r3%%!Is-w0AAdcfpp~Ee_WywQ$Je7jC@9t`}Urp)sdN z?EY6{G(WA|Nxv5EuRk9fYXeIqE|&$m)#pRSMynlm+sVd$7@mW}04aKI0yt%{t0D=6 zvfR5SGY$FuE)$f&NDr3Ttu{XAlWWISouLa>lbD&bUaXD^{%^jl!)A`}I&wd%3Bsz` zgzci6e~gS=dip%D?6G3?iu}5d8rJflyp-0wcnkli-;`nNP;c!1H{8o*LKF`L1`J0; z229B)mZ>Gx=;0=)?*wB7Jf6^Mqd1hxjj~H)ufUjDtekm>;#=eF{8hqBK9sGwI z0OAB4_%2lal#jl?RBHiavj7M8m%8rT;WRSZr$yAZe=M~ooHH^7>Ir>mbm8kKyC$K_ zRgY{ku{HpyMu9SSTCS|9Sf^Vd43WPP%*W)wf>-`I*N;`lA{Q>Nq2jR9l6n4{?_zd` zf|kvY&sEMq+&54vUkXowl=t140PNxOY0lohtjy%qxFDN5STZ&iuSi6k7kP@cukG3Z zjc*AKI1|qVoULAeVw&Y5M|0uKHrf$R2tm}&$JlCWHdrQjuWYS?E1NH+?yS#aF(>cg zQGZP>*6f8=VQ}SQaK&D}0*YsnarL`-Krt;ZD(roiz^IULTInH_dR)#K=AXlBN$JdUSAUi#)zb^tx?Hw!d>j zg)W+ce#!lcPm}ZSOSt)>V^y+L#`x96%nYW^C(Q3`a`DJZCT~PiZ)`SaOM`oH^2FaW zuWsyH-3sSc5p}w1+SBQAA)!a3-Qp4&Nwyc^guzmBH(E0U!(7Laf2h^={=@nUBmrm} zD)hNIdAI^7M#qPOn71fGUjy9Me4t~!p|60RtRZ&8?GLPiWH3KY7ve5e*k|uJ^Z!_5 zKdRLsAUyiWr1!OM38)L_Upd6t0!}9*SN|25vz_K5iG-+XaK<8R?`P^ZV4G2|@L>$IVh@-QI;9sS~NE^?Yu zj=GoR5A5THFp7H@2;uHxrJVbKdAsO)_iM%L%>WQQ)O1fz!Tk8N}mv=fq&?b2t z^aSj|1wi}t{<=5x7IHqmE6QVv7HYOIzD_1n2qI(j-D_DmY`y{-lyd#Y)uwe{Zi}M~ zLWfrLq^FyPImi5JpM^$1JQle=M+O=Ne_*ZA^ps$F8rUDiPW*SkiGTaId~{qkai2Ca zko{D*G>g=-k9xdt{&k?i8kP5s+2*I}4I3VFebcj95Ymfab{zEAn_wVA=W`*~RC3_x%156YFW0_TA@FRj0)>+)fJ3s0(Z3IMeZZ>?(;qef7-0hDa zKe0BO8rKG;-ZYEdfpm1Do zePA%1V|{sTzFwe}nxJmwWN0XC(q&|Y2sO?&7HM`vzo@rv#V%M)mNwB`^6Iv^xD=O| zesI$<7!0O6`(Q2^B`Z0Ae`;4D;0~*hg*dVq`(w>%`uLi8dTwbcj5Woc)Mb{pka}E2 zd&I!=eBTx%wW3Wb* zKDON^OVrq2w7?7pdyYQWpqcI$Qtg;PD)Dy6cSL z`Q|YzXXmSw{b`W)se*Ryg57rhG2SmJq7#M34-fDeOJ;*vQ|Pwh6-D?RuVSP~y-=y* z-kF8usuK2?oTYnXEkS{`bKaWE>q%aLkf%830y;T%sYsQ<{<+KL@F!R*BrrDmiPN`A zddJ6zaAruO9)`Rz5{<;t&#&Bvx7Y!}2D-q}s^| zxQ9?P32CbcIs#57yK_4%xpTh1*Z6l|s9g!Qie@LX+;m)IYvpLH0ibv|4$a^|{|pUu z7lA+zEw@noR58Cb1BpUwud&Bxg4kC+eT9)X8772RX)wo3Y{D+7Y@dJ{%gq3I#*$To z?ma9;Z*Qa$K{I@RLK*SnyeSSGZBuyQp?~Uo+(cAD&U~S~21Mm%V}3SN{-If#!Z(Ob z36RBO;Hlv)73Ltl_#>6q3HcuMTl7f%bF6=OC@LxP`0u{d6dY{qgR!jDwKb~tW`jCM zt1$m?vk9oto4ovflUQmptNIlnfkiKl3_VbTxODH=T0e3{zb*Hu31#gvhSEX5sbE`6O7}11L6f1I6_)8KL6vx-J)X?R>)OB@)cL~8*=kEF9~bWBN*>+R!OU?7g&NLY2vDz@z`UfiT|66C=Adm}+^~j9U1AU*!E4f&bbeuZ!saQIhXHjgOoX@2sMRwD3zm5w3_YnF(=8E7i3}1z(Kv@)lvQL!g<=DJ z;VlIkxgQZZNdZrmwzhWhq8KbPfWHRJ%*o1GhraorAx47X#_s_o7R?8JU|{U#2Bho+ zD;gMJ{Y39V_$YT5K=N;c&^M*?gSoduB-kVaR9GaBhe1f_AVfwn)crx_&9KkBP?6nt zd=`-&he22eYC#{3{)xAw9xd#(I&1BE(FK2BmB9X|UpyP5)j7NC+UeJxkktw00xXVK z3{WiG3>G6P1q{$DS7-o}qJLvTYRD+J&~_+p;j&XE>-+p+j@cQG?;#Y%!*@f9oKN7{{x!Hf~cn*haHZW@$qmm#A=*R?J$apEXh$rVR%=HvcB8>h0{bQ<4%Lbj`AJqdjW*Q!Km!E zlc&~ZvgXJSZ1Bv-K-6bI$G7XhKtV{7fWq8%5{ROi(}74zS{C+CY|#ZdiKv2czfIQ6 z>Hy|uJbw(u1%K>1L~sK(6YL8h;eO#?R9x_u0~1JEA3@eFEH)?ie+gdbG{j&-AO~AhYjjveS}dC4wq;$f#;oDjLGyySYctvT|3FSokPbf z^rI)B2H0_(+4s8J*4+f1ng<_)wLTq0M|0=Ka55CA6x<2grTu^7MvEt}IZ4xY)yNm1 z06jS6a3nDsKZR%*m8zB!tZ&@cg1I&$9qSbU5G8h;z4c)vhRpL2tycydGzI+V#6wZz z`y~K4)lUW-(YQz@Iz%j0_Rn6Zge6=eKK(kv9kxFu%i5pPbaQQ1wjGIuoIe*S%6}Jfmg(z+_}QONGc)0TgzxUU#R$L7DB5%+nb7ev^D@LeDI&v$$VLmxTrtl~CTHv` z(ZmUtZIp0Lmp2Nvxu1Igw_=3$+>XMA2ITkY=&~2xx4?5y0J0%zCaHK#`!M zufOfePyX9|x_?nF9i+1yY?aPap2-D?%oG4!auOb7J1wM1|4R)qbtJY7_|SiuwMc0c4s}i4|ApF1evccAbFp68BF~xvCt#M7P<*o$Q-`4uD`RbKEiH{O_}DTZ zoj5}P^xVxNA{H0Ws&Mq@bm#77`ZLW3{*BxKaZ3Ma`@oTh+}Ehq-FW*4q~Jqe{1~0` zfQb)=ZKF?gEWHyt2DPSAqtzb)8Y|{8=e4+2?EiHCZk0FtXIAn?hozi9-(MlM$o&s# zRS7t%5+KwG)^N|wLRG{Bn;>Xc6t;Dy)8B1flL#P*VtjT}A9fIR2?B6-I^Ts*f3H2v z?TBcu@3%Oa8{G?Ha~2i3<*>D0`)G&@V9wbE;eum{9=E$D2iH(YSerI34Ox8OiJ-5) z{L@6g7=JoSGL>?nl@m?*7MS05-bWpNC#6GCjS|i7+WhzGRAV3lFm$F1Vt%$srnfVkm_n}HC`>^xcstnpsVr`=tdGJDLk_6mls)T+?`=2ZD2)XG1e)WO#9i)u%4o&z`3d{iF+dLRg&vpDu{~ zs#mlf&&zQHZt=3u1>S=ZIN`;NtQ-Uy4j{RfOoPI_rQ`(Ua-2|^lUMQ8cQ+T+aAj5C zb9YC4*S#YY*{>7LIU=qSfK^ktoJWg07xpYGmtj=16L1 zf}8={^c=L%Bqk(F3!=Ji4~Td3y0EIKW(E_r1y-JVA<~~Mef6c>%omEQzqlNTzY8TB zJk#YZ{fNNmVSX1cbm@wZ;li5@!Q;KH7$pI`+!GiQ$>5hM?M8iUg;A0B2iRJ!qlfD zQD#7YW2X11c4s({*6`PB_Y_iqXY=y^#74~>=7jb!q$#Hni(Fd*j}*|$M}Xc0VMA*C zL*ZXd;^OZ4_^yu$jz132%@eNOfIsY?u4!Y`%9Jar)6X%8$44nyCw@&3vZw61L!}Cg zjGQ+r-fRR9VQhNb9~XV@f>4g&>{`~CAqW`B1%Li6UN7Kx8pm4kkaklc3jRM`kpQLIHkU<}#`^e)y^xf<_Hz9`HJlc;A zzqoDrli)GRwBS?9HBME&FiW%pkCZ6p*=w(8)!G)=pE{Pu6116xDZ?(YMJ5R^9p|b= z!i-R&L~o*cSA7il`8&}*kv-<2Z5=l%Qi6YJ*)2gv(4+mSMJGem+8?BXvEb|{%zBR< zOYWcIYArPFme#%AD=tPIGk0C?P*k@d5ktx5`3VPygfn01qZOuiZ#1U=`^r)GX}2(p zS&N{3jq!lHsoW(T;6T`#u>9v;kbu7k95C`?c@(9Pn`ATfxdA&Q%*?(wF%$g*qd{lp zIPc_i{j~sFMzSnQxokdouNpkZP_I#zXn_8KmYW+roet3`1JG$|%fS{V^-B;&X_TwT zh;Sx;EtvkM5FUOcn%gW89TnA2gB-0#6KELr3HTo*3=hZLPPq$X{M^@&r2t_cG2+!U zPnzMQb9-GKDphK_LmPmrc_(x5r{FLtDjT*OCT?KKX&0YKP_|N0A~ui3b#jo^XzZ~} zLys{z{O0$tgy}$1Rih%Nf%vmlCJRBhVP|AqX zV2dHHUm{{c4_SosicOl(bRbf<=FwIg^leeEoJqodv5({K5PRcfhsZsXr>=to7}OS1zycTPtzvb?yeDomW5 zySu%wFA&mRKvk4BMpLGKf_ZyAWtFQ!fJ!1wh)E-sNZ8A!{5n?smt#Q9Zb`Ks#N+ba zUBlj2{Cz6olUojBK`;3W1M;eb*pPW1P?ALSe|ibSBg=kAV}1GSsfsOyj*GfnG^v43 zppp41?BK$$kaDYPAVfh%h9h16CPlj3-XXbHqQnXfjXmXub;OBuoFyu8tU|4nr8xTt zXW}QlYxFP}nE{Jh8C$(N8T#Yh5xxAf=SDYa^rx)wZ+gu5&xoXN%##lB=*gHO>#xqKM(ya_1t+J#A3VWo*g``< zom6OuS*DtgF$HuS(?xA;W}8q?gfY1nDmWJ28a9p9V=Fl4Mk(}}!)7bgbx|aj(Z(MJ zkkd!QgG}VefK95TX;XrMpA-GQrOQI-6)$H@6+753@k;T#EsaJ_TTKX9z~qTKrImV^_0kW(!U8 zOrPIa3${f2X@EM%_)a68OSGt#lMw+`9M{iPw3D+(0teXYC-V&?y`Jm@Q9INC`;|&} zJevdu5PSFsyS#b$+!u|#eJA8tBgZALpgEOlJ~OI%nOX&*scUEg_$`p;ykbhSFG0zM zMEg2D5@mkgSXBCb4zr8Brx+WfZ{pkF__|NgHXaD}|P8;g!^pjWj73;<$rW`K6fLpS-K z!PqtRVS!(uM*;)3#np-X8ItXA(uXlPz1aohWb`D^@;-nba-H>~I_y`_8tq zq!172!bCcsy2D7nPurf14UKKwKtd-)Ad?uIery(Fu$u=~Rs@Gx9#+cJTkYPBe$UsP z6>T>IZO@d+v$;{>>(!>Wmf39rE(<oS&(yA|M&nCuJ)| zyT#OJuPmk*x_l&&QoIfHnJPBJrS^V75krmocT`b1O!x$cvvaZq2P$dX`jN`6p449@*Nt~IQ6DAEC8Iec61*mPf^vP>QQR|0vFzI^7kmnBS-e(C^jf(>6|;h z`F2(jNF7R7yuC#ULnA^1p|_X`M8QAeW$={u4bo1{`{zyYfoA|+OaDN>q4PCY73@RB zBDL7&BY;hEp|t>Ty;U+MCNqFF`1bL-7iR>Bs$rQEWMuRhoPa8u`b(E|G`5W+1e1q|W9o_XJ>@CkI^7>wujG6+JR*;chF}x7EWQ>XMNY zY9A8%87FAs|e?a*Zu;SE+Y>|4uC|O+#L!RLLF4{@#T5;?K8;{n&0L#y6zB+nMeLX!F6HK1&5}ug2BdMYw==audK3N%YGJ)lnFFpld|s{u!4oXPZ>-LntWDxtHkz7Z zZRi<1kD5nS1qT$GpIMQSUx@MUu*LtNl1_g?>xK%67cDY#^vr$$;NyXp_!=U2ckv#6 zciSQq8*co>;0@o*#5BvomKNwefctfOgK~Tiq^JRMWC}fl&I<&p)Y{1oPrzz0-SV|O z^mkCl1u)E&mcs^RB{?>mrF=yQ3YV;cNrDpp8-C*EDVAT{Ywg}F{W?J8W$w_j4+VG_ zmA6I`8$W{0-q|7~C8bqA2jXJ>ot~6-Sh|Y;S^#<;)&#mbcK|*tfX8QVT4dcF@)2+W zb;uuy8NCR3H;A*}hZnuJ-TguNPMZk`BxZ+{3;vOne69e<6ObFplAVsi#hfP|qD3p_CyLnYv8{0j8j*<<39?z$vs0 z7!nZP@LG;2hBm5RX`faBW<9W|+iKcZ4Cfg`zx!CFkVI=*QbNL6O^Ui|Ckjn$zD8Df z9QAy&vR#}V5`8wN@$qeYNKx`zHK1`_EQfTAQu4+&DI|ZZ*Rkb(rJ{q4#_S>N8yCZ{ zU$SqE$o9b(Gfp2bohn8u=vg*L@t_+?S<-^b&9VFzil|#Y&5D6@(~TEFpuGJE-~#_S zs3x=Q{v9IHguwhZWD9bb-EqwnK>h*x<>5giS02b>nwMe1^-HnSUqX<=2SyQDY{FK( z(e8qzcr28eG$3TcSxdG$UUro8!WP)05Oj~LLjaBl9Ju5g`2MhVzZ|;Lf8KTcNLwTc zfpGyr5a9zYNRx381?5&Cl#MVNpY**%<>ldC+Ug{HGAD&|Oa*^{=TGn4!&1+jjV_5o z{K1)`Xwu;uk|{rc42M}ur=_7JomLGyxvAqGw=PAI?-(cG&s|SLy^T4lP-`62R8(|s zc5eHg@1u|UcZ1ks16{gqegU#_5Dq=E)t{=89Xr5No3?ODdv+?~50;mgcVR#qa4&0y z>4YK%W(N6v(oh0M--ptL6b-c^S*NAWm2G@lLX=j>bEV}y!@{k%h@0D4prRX5F0wIc z7_QO!0;GbIpf3WG5XApF`5GhjNRVmNmhHq;oMF$Hd-U}U&>lG-chmQyPGRlS)mw|@ zDm{dUpVkwW6TU8fJ9m$u?3lN$;z|OC@TEgo?>x0UdC}>AWJXfZ&_shQRFDB9kEK3P z?uX5FMAS~|z^hx^Tj9OU(XkZlj*N`Z00btPj4TrSr9&p+!@g)H`LNf|GfiK(aWab* zX-CZRWNK25;vy=GODp0)xa-cdB=`6C#;HTcu5d<6Y5{ z^?xf{o6cdq;o{*YyvJW9!7KPmQIN5h&=-zFt5a?vCi-)Y%CG0@Y`R~+UjEO1t;KkQ zz#l5-uO%4IfRs{_6bBbC0rgY0KuZFH*f)|ycmRA&m>E9h%B7*bdiq_Z^FJIaA9FXi zM420P*V`x$PR<3{x7^J7y)_`T3~2C%)sd|%u@wM<^<2=mxI!Lj1%>9b8QgjG#2I;4 zz#PoO&E4Q}1z8+vsX!B0?UNg*avkQAk)f|i`G%cREDA7iK*v8BwB=lT&!gm{+JL=*gsI?!clqm4Uq(k%QV1`wxXK)SpU;~J;R@%=;~)PFXoHzw`*_7J4HYNnHEB`CGtO!A-u z-m?}KAt46&l05}^o_{lv&2sag<|H>qvKIN~_amQ6V_|2dj@se)|ZN{RhYv z2*bV0c?NPI@$=IaH5G_uk^2RuO37VAql+>^x6j=CuO#Bg$QZ0II7|O-u#Z#TC+=%W z-#{XiN+{RfD#M6>P?fgcxjc6n!Q>_}{1Vh?IFKCuoVy{`6u^Qtog7?T&q`5ZQ@q*k z0dA_^)f(;IeKL?-srO#I5Nb7bJ2A$=iI6;vw2M2)KCYB@4}YPln=fAfD8s9tAD@Q9 zVftCl)O<0PgoO4XI4kU35O7~e-bi@Cz4S$z-o(u1?vjRiW^|R{*flyhYI3{3-}03m zIHAo-T~M)HeRjjC3q=e%=2nSci$B(G(K}#P+!Aosxw&&;mmN6b@ta>-wwFrD`H>l| zG&c4%Wdn+01%e&;TLD|nLDn-g7<28jPx+N$ai{5E%u}Gz!qQ!~&%^Z(D;XTT{BlT@ z@!NpADgwG6+q$e?BzAtU=n6@eY;|?1&6~q{i`jTETuJ@lnEp$>lurI^pSbb^2jW6! zPZ`$p=m(Hy#_WBC80?$)qvF}7$EIHd?*1H?qdna<7+M%Q(_G^Byb#br z5E3UXr%CTP8i0iSXw*8d?xn-fgBau|$sW&RX|QqjosOTvN6ZsW%m}I*_51e*lkaP+ zrNM7KZ>#l|i&?&{R=(g3{Z{Y=DW`#-bGFr{N?3A z;X6P2J&XuZtXTE@=ABgA;?I8+Y z#@epSf#0FHA)gZu-Rz8VeeG2B=ctKin8Z3*7jk7a%)s@)9%wY{ilPi=$EKKo+}Lir zwf`8r41H*VeuV)G%D%0VibC7|w--?B0S?{d{zvScI{b(*I>_jSu?gB6s{1X|h%cZFL08@gCsG32sN8Xh9jyn8ZbzU)gL*tC@cN(wo~W6Sem+X~&C>Jew&xCt@XCx#Wc3k}Oww(Gj%%@C zHk8kc_~+iL^rUyezy0RnlQx(n{qeX z=O*8mFsN4eUBSjS==UyRWv&4i$sWs@cz=3Kao#t+eiUJopWoQi@(u9r1p; z4G~;lIlaNh(?}wb<*pxApsu5a6O?L#QK3lEth5kx6!$=H-R&T;8f>u{`D}O8G|bkW z<}=z!2175Km7`^(Y{AVG?cxC3uI52ndWXNd8_}0hRXWZ|$UU3=JOu$B!4BPrqDbkT zN4zgLd#U(TcF#>PYwwy`YC`z!{sih~SH7*GPIMiUi+EQf`TR9kv^c<+1zkz>;!awK z$_aW!NB?DGGF0W{e+cVr{G^qN>_OyO&m>8EOxcYeD6m{VfM`r95g+03b^W!R!gE|Z zF~B;=#_!t(($z9%=xg;frFf=H|i?_@0#P9$l;?)Cweg1m+hk^ATtT!Fw5Tnq3Xk> zOfZ_IVaDC~DbreIDY~nWi+%Itxx6qVmKVx}$T_bTkuZ&U=|DzBt8WjMU0aXwM^iT) zUIXi99U|E-bH`&G?MXvDr1_?uW7{SyZBO5m1_#v5=lYP1j4$hKjB2DvQ)*Vb%zEw) z1IcfT5~q$ZuA5SDRhvbVWm`kxSzQYfp?lO(5i{m)dUezG!STmj?S{Ok55$(9bY7cY~g z^z*ZgiaJBjK2`T=S4ZGthAE!9YGSXM+S%q5*Ncyk+6Q;vaoOf8`FjeYKbLj!xPH7? z+bK=~g!a_fvx!n3EAxbd1&U4QXA{s$xm9B2YV^`qgUf$M_1L}o$!&L zG$O zMX+W?#ZEakBwprL0b zO-YM;7!2^WsLdzE&Q!oqUuii9N28a}=(HW3G3oMfaRH<+0MVe^ErAQ5s;)cw`}=`0 znIG|zL#`Yw&-6!28ca5V(24-G=}m@!ImF6hntXAbO2taU~R|A>O-{*!^yYI*}P)2H_>l zk7u3heko-Zr;9Oc-+!L)Xv4!FDFr2YJ^p%KH>;TBBuAa$kA6i^`naWDJf)g~j>$z% zfXpxE>Qy^w=r3RT0b4Kxe3`hUM@vN|m&uNkrhPnq4}@Sf+HI~ZX~j@}`2*7+Q%e%n zKVx369c%W7JH5Vabl;i6ikBq1qJlY0{KON^F-nY&JAF_BP#O9v%b5K(adXrDqd_2N z1|zP!PJ_McORzp+n|EVGJBgH#A3H$60Kfcns`em$2Z_f z+QSp5CzG7%5ac@L8ONO%)|jeY4VgD2?z-YvJI?8d6VXrY-x^?^C0yh+b)rXZ;aRsu zXz0*dbjkj*ch-*o{hLkL?d`$25@XAi?JID%MzhI&F%(S}saZZz<<>0hIr4Je=x5jR zkhnJ3F%cFD9+(cxH9KN^y)<<*Jw$JNE~&eNme+`F?Y&*-Jp9b_DRVuzyjZBY6g{QE z$1cU&9NY6#BaF+{23afG7r*=a?DPsBZb{Vl0GuvEN8P2*4JrZ7#`W&LpcROy=S zY01htp$?5c{ky)0dU0)gNt{EN;^yStYij0}S;c1oCjzgD81R0NWqFeZwt`K=dc6Gb zYa%bc-Nh;Cn?qsw@7}*oBAons7fM6Bjz?j|x=Kmk#e$lq-Ks}A&TyRREk;Cy?_BUd zdMB#X$0pBs?ND1EIXP5VcZH%kHVr_6&FRHG42GSux2|Uc@~2*Tefk-$y8rpa0?n#2 zXq**Ji7VI#$qc~2vU@dkN1pQ9^u8Oa6bU#PneDz8;x7*P-1 z1TdWWJjy&xa@iuhuZM37xmN)X_)oH_-l24}bAalsN4Qv)bTSYT5}8PUPixC!phItg zvxMJ-+yt`)g0+M<#+!?32H6Jo;7|0l!#z@ISeaN0yH}vkwEMN^u9)26qr1OrtuZkt z+qxn@B+NHED$yuT_)#ZLgt2UL6^r4c@py@FG6I$%!G}X902OqU2FjBoU{ox21}b#( zVh+K6Jd(XCe>YvbycJC9{GJr{bg_DCMeWC{-*fAsF=PEtX&L1~YI-6DyN+BsZ9Pwi zZA+GU9XakI)zaOw!UG*-K%t?8e(9i*KYKP!T=l5}uDMs@JN#4ZQqVb!{Y6Sqt=D%BIAs{ z@R~+#Sek9^RQKJGwVlt9^j9k2nMBz2VTFRS~0=1o8)_-F; ziUeE)0+VdF81V?u)lb?7^LBHIoWR&>zK;<@bzj0do~3=VISL`hS#%z{+MMjhH*t3u zS&ULCst8or2|7&9qE%-{Zg(=`q7i}3Y@begoWY%3%lueN;E z9XX}E_&#t)JVg)a7HXRcGc%zqF%*X#OUd<_fl0N@m14f^Nj$?e%A?o2?0wn5*GaoUTq5iNcZzNqe=4~rqrG-2G zXOz(g8~~-jgG5J&8?gnV^6W5cx@yZ^Ns8WC5KqS{Z2Tf+1hR$964a z4gR3=!iMJYb2yt_T&5vjKkWFhYRS?c_4#uRzGL`_i!`Nfa#{QI!tw@=xE7e83g!ZD zZPK{;kXiy^+q);Zh?rX)qn3H_-!96ub=_twdz)gnv>^}K824~ z{rgs*aM0#=b_K~Uj!UXjS&-Rx2Xq`EVAV_#>yA^R0@^TUm|rcNqdzv%jaov^skYI&kMPe2m9GK%h9G}76Ok%)Mp21rbirF3()E39RTxT zt6j6v_J4Z;#Q<{JvBq+pmBOB{_Lh(Je$;ic#VoOzaeC=zyTfI$&=2U-1r&juten~k zNrL2JS!>q%2QLKzHX zJg9b#;Soy61@;^xzeMxWco|1`eR?D*6rey%W>iSex#E?-jA86TfJ~xy|NQlRB%)B4 zHgLq?r2$360T=KgfZY(gV_>^G*-0oE6QlfFE$VPvsAI z+XFEF3U${CAEFsOAaCa=m2iZ`$Pw}O**i@}nOfVS+uY8@b#FC~motq^VQ`ZP1hTF} z*>iehZ({sp6G-^X&g+Uf#&Gf;u(o8pO9B$r*QGZy{yz2Wz+AQkc)?O;aKQrK89M*7 z1wVZyx!=xv$M$+}kFZlOtF$TOU&leA`DlbmD!f(Brw;n?Yl9)j<(SBmV+2F^XE!uK zFGRtP70TGSiY)Ry6`K4@P#zz*e2>Ag3g1dQ@!VKbrd%Uz1A{l=*V;zk^hU=bQL1}lggzRLtVoDMs2Oo2n zE>?&N!C)Cwjo`epcOuqu68b7+>1`|`G;KGO{@gh(qUSQEilYWF5>Ag@;rgp!APAK| z@{qxY>}3;i6FZEKJx;((ZZ6>C)@oUfRfTA_OyO!joER1jp zgO5r70b2KBWK`68doPE6@aR6j&)yUlW2G&+h^q$Onn%IoG*#yon^L1#u-3$rChM~~h@=oAL&m0bVSBm2o5B1eDg=V#ua!* zt4(LD|3-eIFjmeq4A*b6;L1zvGMVy^Tofqmw*md@Yr#!ovf+BW=^L4M%%2yl-jr!m z<84bazxs2qes5URyO*0$4gc4(*~!^azc)L`C`-r9-tOe%NU*{&Fr4;!%j$)=lRaI% zC;}Lg$&}7_+}iFN&YS#-Lf4-@1ys@~q||}V3t=G9J*2sE{8c}od543_s8r+#&Tt}K-a1Rt6SAOl~}F6f1UZf{dA_sW+O%{=)70lACVkrpnIBy z2?5AW+KvNaiC@=OR^sC0Asek^0|3H=o9pC0d^Fh*kr5dEuuox-2*Y|=7EN0;_71kS z2^ywm``zF+S=TO`)h-W26ChBlX=wEDa}-VnOR`c>K((DE46FVVv4DXDGXo0?yo5>( zn+YMyd+Mb_J)wDT7d(s`ARyL|=%Ri&E ztwO&oa-vvX_@+iUnVoiBH2w6-nf4)S0gONTD*JW%aQ|>`&%8H!s${EmQFi+>ATiHA zf=z6T*s&21kTcBP4jTo82`s(n1S}gsf4PzSp-~iui0elCOD9?$+pQIi^m;a?0~Rpt ziQEmnv<+{Zi|=3}~IVzGr0V)KC$;0%%`VGEU0FWqu%-k?#l1MJls1I;%RG z2JOfhPNt^4IEupTpyyzliWc|j9%@CA+u+JNmt-a($199X1%wVDQUlMCF)1Ylkw=Tk zu3V$c8&A54N4@mdsJ+XQUdOyxzQ-2}zmgJ*d;WHv-(%yGR(AIFT32_#332A%nt9=i z7XHhWgz|G}x{gXIS202kjg}i9arYv0r{~RH_|6WtV-kR@!;JNZ9=+@YQ*81B5hqX2 z5sK&T-uCtz02ipsGC4WB&Q;qJg_zBRDlcoy>!rT&Ka48@{*~IA+T8At7>=UJ;NqvQ z01WL6JIyUjm-uC#6 zGncfREW0|Fa;Xr=^DAXi^qSsA_EN16~0?#mPzqR>x;A{-fVE-o~7w)=ZG z?$&%qAajd-Iw%h z_EC{ZhwR<>aXt3|#8;^ihc9=%Ezi$T7(!Qc!R453Jv49Nk?gdzbj*2~CiBzFoPR|7 zoB9~xGjzo_@VKT}Ygwtgq7;4^XpO+)aBP306L2Mbad$I?2CsOX6C$rcTE40!HixZ-|GcFgarmqe|CVlFH*vbBvy zZ8Z_hOOA+JFIQH&)jFW zDB2T%hYDbG)YofUyJW^8yH}J|CN6pB&s#?zM~ni=&{eVO>bR0f z(vpA)B_rD0{*A-%A^BAk%iLjaDuxR#%st7HNeICU4&d`3Kj9`Da&^?%UL4_NvE%p); z>KYpGjy*E@GdHZy%C=z6{#n(DOT@9|C6!|+^_67zvc%jLn$?W+lB@9cu%?ojI(QH0T2A_J* z={S-0E99~zirxsz$+TNPmKW*;h-|Y0j(g)1x(7>ylk7A*H(ln-%OiMn|tTmh$` zu&_tna!Z!+>cAh%5LRye5R-YP|E->PW@ctAQy*4kXb!KSp}t;H+ohZ{l|Po#%&y|! zINs`^7_c$QZGBYxv;XRcw9qMtzJzmt*%2d*5NX|DCng%c1a*r1Ga@OY6Ffg}qVd3I z^d8I0cV|m9=#=QBtn6dPHZQFJt$@H`-|()T9R;Xm%NGHS5LJlrANWi9;-E)@1GB-x z!eU`=;l__~%RhE;SRs@D5TM%J-@h)n0b#;_zlQ*>NESLDa=bz=Hd6#%d?5 z>WN=89&im$3Vjg+b+>tRRy=Pr&VBrVN&>()#j%Ua%R)rhY+44l^9-ze?!MRQ$p4Z$ zVdtn(C;Z|o52yG34!enObeKR%Q}f)B-?gRhnByQ2g(qDeFwr&H=6JXQnm0g97r?a* zuTY{k{T&b^@g9vkt4v}7GT*v7&TC11AeJVnGyqZ2qycx<6uA5204^Iq9$043dXO+a z;ty*ez2nj>^y^l=c)r%~%|TOkH`QlNt3HuI09wblmpiz>8kA17vW+kb6v zt>5L4Ig}XZaRuMN({q1hb#}JaXd8%!-2j~yJUlFfpiDBRvz|Xzi@!ZWvQdz~R=f$>gkB@7ie~x7ibZ(wlfa(!>qN--c!RLo?C%BbCC`Ey7Oc#-z((bklTxl;sXa}N#6U`h_h0QafXnE4*78?k zbbRwzMS$=x0a9;aGD>(6%nZTeISrzS zl0O9LLMS#5ZQdr}Wd>uTa@H1m6cLu8$v?BV3gQz5}Ifc!NJxm z6rWY$>%Cjnr^-m|h~F%Cab_dl|6{49EQq{K6zYQZNzu0iu~9{|LsIHj%roTvPhRut zMRP2<^p0ucDghLFUxhxvPTdDpYn{3BFL42>sT(Uqm-VZEFfBn31cf3`l>k8NFYY3X zj_bj#pI?4?`Ti?HmU>w{754B8hA`wtR*`FNamAK$J?8yJ;~ggsl=eDagw&{;#&aGAfQ>>lSx+ zg1ZF?PH=Z8IKkcB-7P?Hm!KiIySqbhcX#)%$zAuoZ>{(K&h&K6)Ku3wwf8<}A1?L8 zbYmLTNEL+8>X#1q-|^#f&alodO^fA0!CdgpM+HDSU*1E&B8gA+F2+73nyG-_L(=X@ z(Tb2l2zuzT;>O2=$9y+sPj5~)bAHYG`qeGk2Gku&MYkKlJ?_u(WE}PN!|^TzDh$TP zo8duTU%cvfY{pM3V;h*7`cRr8P#jQ!f+8YmM&E_euBcd8YRc+X52I`v0tUV_2J$=k z27^I1zE38z%ytT6XNp0PplyczfxXGu{5ew2>-tCmA^0%0wpOlMN;azp>g$oy?oujT z(W6n1h5!sFtgEd0!dUDon5zrT4*vO$}^=_$jqLTXuF3V;b|N7G~ z(1jqGsAaRzlV!S2DfJ}1g8$Y0dcN{DPF#2LnA?nFb!EEoEw}>>0yd~;)6Bx+ubI-7 zgX3ZsjkQaQ2&G|v0G6Ub9Jk)D-wNNlHh+i5^BOSb0YWzdEOaC;z$zRBaNzuLETqqJ zV0=XG>`^$xGAO`0`GdgL!Uit05a?j`a0ysiC}qm+7b_aZ5OOh@p5^s~`n=!wtEs+C zAlB@EemTb`s-`*DbS+yxHL>&+k4Xhd|Nbzr%{Ge(G{+wvA*i?CE(JKOk@2QjOuda# z#`hZQV|jJ0s36gbdE98I3#n9rNX<+haz>iqg|BH&V=~9y?}chUj_-F*OP)h52M#Ut zl%=xscIOSZK4vv-(|Lp2BHPn|^XI1#S~VHC8V&Hv9=}m==|V zKWHevXp!KD`Anp~`}>;?%7BUT*-}#?3`;s8^M$`@{}yNx=HvFap0HJ)KV_>z&0h(> zWdE6))_JdzPjaO@teV^&idhFrWnQx2J{#JN7g5Gub&vX$USPT|y zqNt`oSJrp_oYdRR?k6S|R>2rN{;Hi4Gx3v4?WvSXKgy6|=#I!h(?)xO!#JbZ=8-!pi!=C5X!~(3kx*ho+ z9H!^oqFc-YFFYeic(iABy~3BbTY}f&_(5(2)p-zgo%G@t^Wnc!GnQOYLA%B~t-%aM zHIECZq$mm%2xk@Lh1GBOZTS^$1FO4XDzt$*Hy-#$Sew${r&e00@_#wWFMgLcC2ykJ zSiuatgZR}#I!!JCljdeP(WU7i%Efw000IwzbL`jDsmNM|#0mA+>P?k}c~1DZ7|F@E z%VYT-(=kYX9NNIg5vJnvFb&79duz_hmfwW1 z_`HPl!h;>#&EBm~i$@Qo^Tk_ZSld_!C$8X`c75+vK9o-R-ci2IZ#6wXj|zcX+1qyK z;y;atsNe_9@WoCvJ&n0uE+?o4A5q?n(c+O&4W1n2q4hTz5M?pW5}@+JQ>rC)Xd+)) zz{NxSjN_C_s*!uQ((**$L|aqBEa}YFFJGQU5jj@atqx$i(;bt`Qn(D0WUx{#XVbe6 zS&|vJ#D7VWybKNwwtDP3$E6LL5yo$9KQkdy?pJD=4g zi8!vCU*|D+pzclwB+uWqS%E5o@)Xw*QUpzcK+EUs-s_lWsLiRdC81r79 zB;5Evs;{cWNGuv@X@`NX1mJ7lD6%dh(~~!r{2M?U2SLK8xjC%226U!Rh%d9rPDtQ* zm*^96qZ=Hgp$e21;OL7GOmPak7^t*Fn_~G9jOHX}q~*A%Bw-xrsWSaYZ6M&<0{Pew zF))HUyvkTrZ7~ZI?NdvXGWKIB#lqC+uruxXSv3>y!4ieQkOCcS|-l)X4^Fw6?!*HGhYn^aZEN(r60)Nu@8C0`~$-~$j$z}~&k z_Ul|n7z#s>R@V>wg%$e=i=oaUIq+SmhtHtY1o8Bp>(_sILFb-W1trE&vA9T-QHCxb zq7*X11t3V^aMUN$9Y2~&?!XyW%aqjD&Mk2tXSQ7vPpwr^dHZ~CH&jB)zN9)-M-t`o z75gODi9&-fiq5-%!{RixB}rEi`M4wD(;4Y0UDsn!Imuu`s2m}}$x9M|0M{(0bpIm% z_~-P*h`8`X)zdSOB^O+>xP20O z1=4PuY2tuiW(H(`aKO9v-7H~bTT-XI9R`Ng{unl2@5?Kzyx8ypea0fl5qL#P{}$4z zzWyNGFq=VB}xbtW)(AVvlQ$& zzD}NyTZeRW46cwt$TrVAh2}`kFA0#C)yyugSd>{tSe2uamxoC`QYYydafAJ^@`}ER znR>BE5y~fXngty>k_?s5Eh*#ZAwo?+k92?u=!GVAHC>IG*vZC_t@>`ipTn*Yxb1+x z)c3YTT{t|!VYiE@8h1uyR4KK#78xI6ekG@JhM|8*S}yR|K*^3t(3T#D>7 zh93DRiQNNvGJ6PaxB(iq0>tc`h1Y2Pb!4%KS)HZKyhLp~*SX4}-@lf}&UxoHDqH&U z#+9m)8Kt2$4_)(fv`pm3GQQ=MSu=S*8ajsxrkJzJQWRCfA8nn(PE*ajQxclJr z-qxjF@ya}0^e`>6VqKH!o5ac}K16MpbL1}t_*QFQ_!obKck{#I`*!LXJc1x1&Id8y zfO1-36V}yJ`6f~o#`Er4cCKPj6d01I6dZg zXMjw6Ku~Z$AFu{QI}Ji-^@1tC#fjikw$1drDs@zP-N^3BCd+0pGn~f!@;+x{1=eSa z-&U5`BT*E>}wVFHN3p@U^)Vj)0zKPEyD zQROL3O77A{Kri_+^4=Cl(oc&*8vEJtzLP*k zG_m$^YZ$tL4g-p_(S#+ zzY-+;B5w7!5l8*a;Tni|eH5L!OK*hLb@k3~esxP$0mNVWtegX9m`qZB9(|hk+5Qz@ z7^P~vwn&1iZ1uR?AV!`?>^+4M?Fu^Wb#s$YhmB-?XqQo=0BEg2|2z&f+vluwoXxV; zFBQeeQ=$qg3L$n;s`HVaCtSQ-7rsu>027usl0QkD>OAS&OT8$=c3JYbgO%`}!2t$sclq%PU7!BT*&o zK&b30kNYH@w;tC&ZEt&VWDsUabtfmgH4*!?J6_!4fHkbP%bhz-no4&}ZS9Svs!ldV zP+l1*di3c2wT#1Q$lp229Va!IX=p6nj{6a8I1~Rcm*}2dyU7hY0a)jIcw_z(v-37F zhHKxxASL^!AfuL^)ddr1uKB{DkbP<+r9CQE<0y|FY(&O(HDOYrM#V0Okx)vJu=u=i zrbjm!@+iChnDDGc^|syYU`g6b`ecMM^XjhBWygkSXU^3TEaq~i)^{Bzk2!Iz)Wh(N zZ|6Tfk==essa6cKXlmbgC@~~Q9JOZ+m^kN8pX8+zwz5wgI&`bKwPkQg)?E1q>b@;4 zIXCYtTU%q5KD#ACVhLp=E}yQ|nVMP#^*P(#Li#*hwlqJ%_`>@ywAjXcuc%qH4kG$C zn>a>42K6iJqQ{E)^=1aSOo;lEVP5kmK1dKX=cBl zLqAK93(=nmnVDp4l4#WUeFnevtbUG&3O8|ig>9vYBiSy_eEBSXIqCe1&u0$;jV|ct zmD|WbJT_`jV^gj0ZXtWy_7ndueP;IMT{2>?a*@`mp66qr=0nR{g?RnRlyl)9R`>hi zv7hPmG8z^&E#6wpoCI>yw+zYo2?EhWRTl8!_#CqHe^p?Ww28Pp25qqQe1tiPGRp(s zEiF7fwY^$D1MGHKgss;YiM|Hb{TLJ#q(x49C}JkMkA z^l07DbM@05bgr^*rC0HHkqzOP$+W(mD#w!E?hM}VGaX$hi`S7Xq`}A8n4>-ID)i|< zUm27jaH99g)+c#)^P%ZvK0Om3NZj$ESnry$(^uPcB()Th-fqh4#3)w|Hj5c!g>?A3 zzIN+JZ>pDI1xMqy+xBl{U6>)Uw}UI=8}x3|+hRf4?U|7x)*b~+Ru#Ir84R36f&n72 zu)ep(_AS9ptZ$UvZY2BY|HT60DoF*P27}L`h(Eie%f{Z%aqjGT_Pa8y@U9uzBkEo) zix!zyXpXa5RdKDz+x`g&UbCz}IaB8(yB%%99nH#e*l52smS1CivTca+H!e;JoR~2w zTKA=&A%O^b+(rHk8(_Dw*igEu&#i94?4GgIz-PF;?@EmM@vp{#P52`{Kif>Z;1?t+zI%;vp$iCA$m4kI+_$UP4O z({5d(ZC`BO9BtKjFFO+REBtQ88D#=HvRxaX5%|bnp(xZsd<%w0MoP=dC^Ar`4K~#8 zd#ofZ5{C`8wc=5&6C9d`tSF~~G7U3sxRu=f?)y-)Ohz}p1gXcDCUVp+ygV`ZW9KD= z(>DJ!E|kjU!`X^}5OgC>4i`gG6flC!;t;h+6B?5dH=Fa+rf9wf&th%sf;|t*x3u1` zS-eIiNTcUS(?O{@+$0X&dFdl_Ik)9gDu++%Y*?TAK=&k^HmK7MK*_?RD<+||l;`m` z>R>H=y*q@wkl$beF2F6m{7?yT2e+|la8&%8Cg!hu-*zNjxvuEt=iCXzy}%EM2z(&f z4XUks!;#02@FP6xfp(8yo95>}^}|yCy9h>Q{Q*??Uz`le)u64JJ#0YJ{vOav@$YT$ z(7k%XXcUe%rN+Zup}!js5Rf<@k(bHS!o)qg%i@@j0PL@;4+&Y@{g!rzJ?y^_ETA{1 za(dS`wpQ`|wvVC19-h5h2n9mYt@Cx&JEx#|?La5+2=6@yI*J(PXD7m#Vs?j{h*-o) zXxVN1ajGPgqW3o54d5#*h=vxsma8$W0lBp5TkH4qgox5&toDq%uua`A2r7maaxI4^ zh(c~3TQaM}WxuFoW%9K%D600J42C4Mbaccd;X4;8u3@PxV;Ng>Yh=DpG0O>uaTy8B32ITUChf|O+pBjStmhFEFX+R zYnsL^>YB{t<<~tcaQjB>S;;UB$6+DhfQKEwY!V$p5?@9$Sx5M58scsuR$8KFv$Do3 zL?ervj5u-U_Y@i|Rei=^LH{O?-2d`7BYTq+XC)>pkXwN{_FITK5&5>^&vI-EAOo`t z82vPVcTp9@>c7-!!z)sk5SauQ1LhAwz@x*f>7q0l{&nux6D74aB&TS+6bd;KN@O2~ zDC%06h(Vl$h?^;e0m?=KF?8<7={CuYWoj_)QIy4m?%R;%PVk7 zX(_4iUQ4MoG+-F>(#fAkfYRAk8iq7pn-ho<6|sje7Dhhym-yf8(Cx`-Xv{CorGr=$ zkv2iqKwUUbAOxW>YUPEM37g#bp@_j!C1SO=F!UM5cbzn?Rg*_>KXKA;Uo)E+T~*w`v1Fhj=Iw z1C22KJU>6;P3PxXXcU0x(9~^!ngao%i+;6fOA)NSY4=sQRm)C)S*z&g6>RM62^V}t+Zp>q_}gIsT__^*OdA@Se1;pC zQ6Gi9dXPsM?pLcFNNfOkGr2t6-`PVV+Z;Cqnw%SRv!EI<44Y4NfPscwKSO7a=cvw}wTiJAriBt{>k` z@Xn`z2Q!9TCQZ+yWFz&(c4gn>kcf0;I*k~V5DNB3s zT{Lbl@EO_X*;8B@1UE~=$-ws6_igLuhc34F<<<>)QBij`$KL3cv)6!p3Xl6RYXCXl z0wSy=&bY4q)#R#&rDOis%ST5Jfr8LJ zc=)29lg#QCJFFhd0g6Fs4`B$LL!!vCs2OexB|LNoDV@cXgxto)hV{VN?rm{VcyEj! z)1t=b;Z1sB#PbTM%}yLP$~k~WI^hL+F>34iygjVnpMP~StD)fTwxAjET9)vQ-nwu1WOj0$ z#55)5K)*+u;)>fg(pU;Ry3I+OmF zqR)>WGgP@1@OQKsU$lyj7hbm2HrR)Zszs?70ndu{hK8MsO@0BKE>wPx8$H1;nZ~5) zX|go}D%q?geh)8UZ$xbgWkX)ep0$aX`>Em4ztgP7H5#2BcG!0(i|uxsho%`#FBhBZ zrKQ9A(JFFWr{h1ws8sy+VhA~`m+;*X*lpj24@>;;`K8)ikwJULGhM4GDXfoe(-*Dq zqJ)Q+ueCIn$fpCdYH0na9CwPpD6BRbU%P%kr>CHBzH5zdf4f3gC*-nV9dsY6*M<41 z0K^z_1O=apwo9A2p~j88#F2>>gyHqweO;IFChQv6UV|ywh85^tPeb8Vz&scZ-n3_U z28*%f>NlIhC%^(1(v0O#)79@|>};R%S&P@~ZyZ&Ytpc&|y&=}>_DANXfi3}Zf!Hwi zdr_l*fQA@g5w;gQbE}WkZlMa3foPT7P|^rTfXhl~BJFKhoZ$x#ppX*4Q_*t#rC|ip zz-50m<{1c}DQacfzf`HZ%mrjT7rC&7N3C~fIjVnv(*PX zEXkjBK%ET%H<^6ROoUI4^Q$pEf}1jOI$rGQo3o`hL8R@)5530~y8EURHRJ6dXxLce z&8K&vVd63KtGArgpsm84V4UvlbB){M;=~;5S|I!2`o4BQ%$K~M36Qa67=I4!xc>2k zU|95oDH?%ohQB(wsm=5kmSM~&Q~7Pv`pDNfx+acb2IuCjPr%n0J2Syab>rLx-<5`U z77*ACZU=N|?oLa$Y4ROTI7BJ}H#kI550MT@hnzrY#8+ql4(CH7bhUUZQ(tth@tm6eXSNo z?19HF59t~EoaH&@%t4nhtWmRH(e}u2zS#XdJY6#}GCmZ%d;RXDp~_yd*9cAs(4kpb zS%5?j8%+Xai1^DPHV}i+Lf*X^r)+96YY(CVq3rLwAe!cdRi6jC66_y$!Ia z57*pY&nqwfuCL+n@epO~9UVm=+O{EBp1qDJ`wU!3BMi_o^1t2ntLcwry7EG0Z^Zfw zgZJI+5pf*ee(hKVZu)rFp&JOae`6rt*28E(mf4*0ex|_+IRK#tAx%P4@$i-#4XgQRQU_ zkHmrALGKH~enjh2Q}w>@3@}GO04BTkB{3N%GTPSwt~CyUh;R5lOu<>_o5tKS1}LnH z&IYOP^Vq)KIB_hBNhsR{&nrmlv5}DxU`k_lb8uP5mRNb!=gWgsZj{6hZNacXV{p&w zu>%5uxzSk3v>S9rtKP96szZ|~d2CTinOU6HE^^|6H_@W=y!HEz*Hemi_(ufA7K>^$ z5qlRD$w|0ld|_sqms!ohvMnF4o!-1LyvYti`WH&FTjl;H3V72PW10K6^a~Rf0;pA6FbA{$d}K{)adPC z{=3f)Vt)nNL>d|ztgv|XD5x54r&WX%m@gDRM-sWx@Bv9*7b2Rhf?u3SURj;{FzifM zIA}vfU0tfi%p92Si7Lz~l+{`8{Fg-2uio4w!5A~-xjoG%}lRw0K`2|-bK8n=PY^>sxrT>hO10YvFj>Oi7c+#g9rKh{AfC_1uI3rQoZOl6PMht%$L^&oB5yx;LL+oOC1m zgj!b7%&}T8{X7wEeH7e;>%dOU_qMIm$uL>Q$~FsAqN2*`&#c=Fm!{V5T-43)P5If0 zO5)6^eu@@-rpPMKQt)Q7pZ;rE-d2#CJ9p1l&1hi<(-HZ4cFb6=<1H;Js-a^Y-Q}m8 z2tiCCN){)z^i^}Q-a-F)NC1rEv|e2ntCWk2MuRf`$Vrj)b4X5{2$;~14RXP7DADOw zbomfAc&v>2EqS#{t@GAxO<4yxks{$8kmrDbnxizW&OU!)s_=~JYQyaTd7wNDrr-xY z7p2pdx2IH&M6iY2#izwyVzplbG9bt&xzIL{p$IA@8W~kC(qflV@2B&LN8P&_D$huI{rdADJcFF zr&X|ZuN)UFIhL`9Z2sX6E4^{my7LfRyNyIZ{#V)Yn zL9I2I>{VXz5a_>$^$f4_T z89v7E1$oZUS0l&c@DM{q)X`w{%;@5oa@Gpaxw#BpkAQ91%{E7`vKE4%XMhvv5xlK6 z)ZT0nvUQ@liFkwobNHtNP;tMW!;^+)e?G&Q=d5Axy+hMCSh-F*Mixa*>bm(qZO5Y& z`@)a6S5M=_gHBz*>@#MCuemy?%U>a_dCg9&a-3_ zP;>~?-VGJ$1~&`UEaH5%H$RMXU4Ptvfh_8Z0qn^*FFD5`XH2TC3#FudE*%%!vS#?- z9|0HHb57UCg36Z)j<+>3*$H9%ueC(9^dwt|HWVULk~z|LE#Mdew9aTL7_{RbE{}E{ z#3=}u3shMKdAk=sK^Y1QEo+Hm%P06fk&j$Sh|cLRz}CojD$m9THq`BqP_AxQo2{28 zE2gxbN0XJ`p9K|WdaLSITqV3?fZTp+odh#hnb^;!vm|Ny24x6hxYyKIV;mMHO-1JI?l>l=ePe|0p>vGff!GDk*u%E#8oae% znz8L}9Z&Zgb%LdBtLb(~^8NYp&>0e_Q8L}=*@lthNlmd*$(V^8sCWwa)t+_>K=N%fl0VQn&ne)ooA;+{yoT`6+qM&;wzVj#J0occBU zrJ*_3pglk4%iCuU9ojF4uX|Z~A>KiYpb!8t)!HBnfAP)VsF0A5u)9s_G=p%JPwa7G zzrNrg1hMEp6N`b%&l1Af`3ejiaGVvs!cVr}%FiBh%kgio^c69JKR(WPd}q2VxkBJk zW3VMbF$l&v2bv=ylz$((%O(-Rn>t%zth5zA?!xn1H}`wT-l`+M34`kzpJPE1pNvHG z?yXFP?mg$}x{scwGdy@sVJS1aiLx@VJTkMZE<%+-@>t>mTje zw^PT-=dVDavimhtC^|Xbvua6N@A1WAle8wucg7&LH&4>$;g9O@tM1A&Wy zfjt4&Qk`$aeaQIltysaX5RP@&7KiTqsr(KBPyj9wgo0Glb`C#RtH*R&u#uPohvWn^ zVop^-JI8Y5%+!a*1RyEgpoh@pc?iwLm>dvskm3r8GjUDT;oX18*Cld&z{hQ3aR6ci z6OKYKmQ#Qn?QtA_*|d1v>%pW?j%oBgAw?Uaxz>#}4n`IuBI+hezb8c69l3!#d1N3a zn_9x2*L*7>Ki{Z39kBB>tJ8Rau9lFWz~S@C2O(2Z6d}h#CFws*VYO$LN4Lk;gZ$4B zlvZSU>M-)^_9Q~Y3k7|-;l+a1d6mL!mUWAdzxpK#yk;Tu8}yEx1S5{SyHf*TE>fnp z9jikxur~k?gsDfv$MmpN4S!s!5f*F5As0USO1L6yifb0s`Ni0@^mG_gs3R*0=90gM zXg*>r`u+gYFB{d9sXi9cyS6^5d@K?{tO4sJm7tIuLU~kieK=0P;UT-mB>T0ho}-q7 zQ+QvG6|kB+9-}1N44pYFE-5)XFr#WMDJiotH>Yeh2MP|XEH>7eAZ1i^buG6{NGCtn zPz;`AV6fD&c#cT9SnYF8#A+t~^>q1#Lb=6>hXz1{Xd$1iu>@m#NdOH4eQMZrtyozi zL^@))(?m$VYAHl2A`KngC}W>V-O-J{$)=U1C54dQ!HiROTa_lg2#VL}5c(UX&<7sq zLb7&@n!m1qiy&!|$Kh1#s@@FQ=!n&=E+;Ob_ytCZwCx{kXcjt$Dx!`rS2WWX6wDiA z0|I(y!8i`h!`b!!U2f!0BA+Pwi<$WWwOF{_g04pMQ<)b;{D4L!WCSq@|LAdi2nIIeqzb5_vSR;8 zT$ZQuG}+yxgpVpQ_7zZDtc6o$dmSmATk)e)X4&mcUo$h;`Ts@) z)4V-h(a3W@epq;$r_^6bNqN54B>?>(f%(aKb0>4&em%keeuLO@;?&I0>b8ql!Os{! z{Mn?Y&kEr0gR{L~2vx}OqTgnQ1CkMr_ZfLG|2CV=@u(}iyqH-^Unga^lSv5q12{99 z*sr&^P#fQqIA?gQtfYhl85Hs}SS*b8%e@X6dTN7YyiXR$L~r0&RxatY7F;ejC|-b! zj*ZT95Ou;scW+cnU0KJxPBVs(ZxD`2_F#apxwNb3q)MOX+8SOs4VH}ht!*)4T+ zWNjxv1h+z;iM-h9>B(ZoB?}8G&b=>(>1SFXK#IA2idaF!Q_0AsalN3- zsH*nOjbn;+4iuV#jqSEtx&k5nr0;ej{w?6A=Wi6D`2UO9c2*TqOOc14eV+LsRBGZL z#AuS!M@`UVSLD7@b~xU>(I(IiD-Vc4abFD9C=V$u#Iy3Hx{X7Y92q)4Bh3+3RoC2w zq#&r%#)bD9l=f{&N>B?4Mh)mqI?F@JfUTHjAaD}rXpEIbx6Kprsef`=hm9Az|6VdS z_(KAMD}vIaQzAfL^w3z!H2a-q`d5_LR>;nZzQc%3%^HD`XH5E@-GX`O1bZ4g&J6@= z!lI*TtlP(fi-r<0j7P=4ora*ka^qons)*OMVED4>@|AUnpxGp*+~Zun6EE1cLiga{ zfcO$(Uj2)T4hlp#ICcLvdQQ3jP$*j7I3RA9N@

yV9^zJh~WicnAy@c+3g!-b2?x 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 literal 0 HcmV?d00001 diff --git a/output/playwright/agent-graph-ui-shared-checkpoint/graph-wide.png b/output/playwright/agent-graph-ui-shared-checkpoint/graph-wide.png new file mode 100644 index 0000000000000000000000000000000000000000..cdc612750f57ee4902c017ee61a792bffea51de3 GIT binary patch literal 151220 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%0AoiJC*0%0Vwv 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�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 F{{j0B3?u*m literal 0 HcmV?d00001 diff --git a/output/playwright/agent-graph-ui-shared-checkpoint/production-embed.png b/output/playwright/agent-graph-ui-shared-checkpoint/production-embed.png new file mode 100644 index 0000000000000000000000000000000000000000..8ff7afa1ce4a14fa11cc621140b6eab5d67bea8c GIT binary patch literal 164186 zcmdpd_gj-))2)gKf)bD>(gakbOYh{NiHZseh}3|fH0hl{qI3Z%DxkCoNEZSkQjAffP&;tY#AcYgZSD)`a*ZB|5Pq{+4%ic4yW@gRWuZ-^-oM*bkbmGK`^S5v5Jv?#Z zbmfT?boGplD=H~CYJB*Q&Fts@sS5{uw)o;W6T07~87O>yEQkG0SFu_lJ44pCYTt8&u{~SNtZ6I0r#tjMldBa zzR-=GL)1|Z?DWv!Ah{{N7qv0S&4{cnTYn2XjJva0?itck-KR!L>C7ST<0{xeMfb9O zezx}^w!?jg&yLM_4QUcJ{d$y-i%O~7 z!+^TJ>8Y{5$bOpr&Lh6#u6wnNF7(GglaRPdUBH?D1Vv=gS+3`{zFlvE`_z};VKvts z-xt?8jXas-8eJ@v0j_3sOg2cSpG(~9vGQ$ohTN(PXJ`ZXRXGo3w@7{dHIfrH3>`L8 zepY`4)))8{N5|3ve}7rP)WD#~OY(*G)S_6ub)ml_dnE^t5R(LTa`Ku};EO2C)W85* zsYEJ(Ui8|p>*?`6h})u)rtGn}W4Sd^tSkM?sc6c-ahgFuPzReIao|pF3-6_?^Nh94PxBQc-ba;KN}AAcL}# z)I_8*2vUajq3Xxe)upAS^Xy#GmclwIhUw)Rr0$`%u^}VP+t%s|3VSo`G`Ws4{mQMSc|h!20DiCs`w>3UPMj19Hp?ACd4#@g++h-Gx$Y;&HI*4H%vdk?QE z>%+4Xk&*g+&oPaGEk_S@#Dy}GD_1_S*K=50wr;HV1+d?bXQULs#O|{ey?P7ddeFbI z#AKhq*HYmz_d@Zegh|m|kM)&}xFlx5yP=%ji$C34W*%bWy{2bp``L}8IT(^u$T$4S z?6AXKQ6QdkXX0C!L8zmho!89KYiRu{Oqdb@$YB?>ZgM=F^95+GMlPgD+T4+UN;6U7tu>F4P669#kLWU-ME!e8C2ye-jOVWo_+x+Eu*XbJmc)!m^XFMVAn%gPZ`|Knq5a!@y0C~|KRiD_ z%<)Q{^L_Fa+B%zunDo0+!>ha*^-o*u2p@^Ic*x4Uw@z$l*g2f~h9hr_YC+feiA_{R z_fjJqfs+9Dz+pT&v9G z7Rk?7O?y{WDqe(UUc5(mD;S33lnEOs9a-0+)Wa)Yr}1C-Pa3`JrBV6pCq7YiY4rkc zThLT}x(3pFgwPv?1`+q4+aMNFUTvK3s9Rh-=JH{3L7-Rw=l2PFcSC`9>ezMe3zZYc ziVVfReB2Isf7_h~rn&5GM)Q$HV@$Vy7*}v4yw)8b9Fz=2rTmcE*ji-+Ei9ZrzdxfH zHU8AdQwBm>(e`~tIUr#UHj1>!S@^!@)$SZc2g2tM^ZB-^@=k7gJ^h7t3A^rJOB@iuK{T!RtoMIpP$ur1{I_f{wIBC+m^F)_ap^2D5!y+X} zZG|If*yu*+-eRjQBT29kJQ{d@Bb@2-BFA6|bZv9f-3<@Fv9YpY*$`TAP;C4Q(%#?S zKRavp>#R;M`n!CLSOF{DY8{8ojOGp5%fe=16pENAW8XIvypQ)TJ43tC!p2czLPCW_ z?Md;Qcj^aam00G6#ok8Y0*~pE7>T$YQ7!@KM)mxHfuMh+ii(PYABF-D3|nL~mhRQU ze;rLrBMAgO-qryLj|OfMk7;ibV8>-p+9~hQT6EOVSMCEt?hn?77??T2Fex# z9Nf~jm*i=&96x{JKXp<|TgNVcW|R><=_LG!qBxa|tF48TlHrJTTBKPc0>LX;tVsO# zo?5u=3dLn>_=91syO;TiS0b4NNdegQEQSlR^Yb+{is?r6zL!vWAiqgm;K0ZT!e_t1 z4YDoYR8e{^)(^7Z2t+L)1W`EcDKW%;A{ceN0AgBpLLE^WwGLK^ki}}y!J49`CIk*g zBJbZ?r-&7B=(e`zaR84;1Rqsc(vf&tMh>x?fhdx$Ic1R>RRfv)`g9!(+~tu?fX>bZ z<3cf_TH959(7jTba%+UryLYig=l8%&5-icy7)s36R*okWCu-44?ob3?;^VucDr8#W z_wF!lzzCug%wN1+qL=krmJmJGw2P&^6wH%MYG&w31j&kT$4N+&mKDb!+xalg-ti(W z0yXa^l0*kf_+XAC7s!NCqfQ)Y4|U0a=WuXR7aj&~o-az{2X_zb_~wYh{F;7v+j&(Y zdygmQeRIM(A^?4)HZ#x#@)TxQ?QpSFbV37*qR#lE60Fxg$QOcqcJ%)gw>PS)ym7tt zLxir@yd(r}{k399=>CrmGZ}SiwA5iP^p0kvu&A%gL==fRwxs6b$!g5)Squ;y~ex31k$;+{wvEiuCOE8ylJDo z>=8VIl2nvdQMXS31JoBkJ`iOLz@xUB4uboBF8Orwg)I`1`|UJP1=>P~dX5_mL-(&; zB~K9&6PLM2b=RNkQrc$R>_#&DgLAlySW+eUuUetDOCU$Bp7ou5DwKC7Myge{aFm&r zjQ9<=Y>75c<%qEOR3mn zNRvjWxv$J9ZyYG;gBEs<80z2rZQt_{pVVe{9J+4Ca8JBxeeM?sihot^Mv93sI_Ql7 z2F!J#LzeN=zSHkKZECjpmC1F5r6B=bi@py7^Dsk0E~=3>VU5qCYx(#D_z(6l_f?3o zV>9(+1NYa}NXXI`IOb?N(0aRUwI}BIX)||WEgv;2AH9ne1=bWfwSL(QH1f#8=fqPL zz=Ks=DH?*5HV{)^4Pq?;4g_zN(J$mw=evyrZiTuKzvtvTWhsLPW#O9Z8Of$P&$@*8 z1O%jAOb@s7jmQKeD4W(#?P{m6ZB0*@lKU?lbuV4Ysupfhn_EzDxF8rhmNg-OJ>KO8 zX}COGAA=)D)wG~<7i3Rp9TkV)YQZM}dOs-oP9M{#se>T%z@+ONMC74hICpv{13-Q6BYg?rLgG097%&G&y`lu>uVxs>$#h# zK#=qxTh%m*N&#si!bD*~(+p^e(shmH4Ac<`XjA1{?lp5vb2&BxJ;^;8Ws2bqb6aX& zI&y^`pe2XvQ$|Z7AseMK=1Zl>BOuJ##iQ4@!Y`pmBwseNGYZjsu?4`PNgJo?@e5Q(X~2P~->lF+W|F#$v}SBX-4X82%Xc6A63O_+53qrrs5vS#mxN3O zqh7SAeLpXfAEnoDCV;@gg?>0Rf%0|h9E3MLpKE?=6yi7|h%m4_<`?_R1^9ekvw}bN z-%G%g&b(y+&G>qN2o$HDx>+}Ktr2wXQxI-B`BqDq|5Isy@7WCtc_aY{BToQO{y&6# zD~_k6Sj*+78{w2p5OVF)LK0GK25T5k)B)U z#FL8~zpP!wB1sK)JAT8#wkNNgflhzJ)i!% zG}oDPfL2Cr=hISX+d|Tg?NZ_N@bF`sO`buFH<99$4Y}j%yIa9J_b3dn4y5)7dIT+{ zrfb)IT6_BT;=J7tZm*|Xf-9i=+y5r6()T5=i&U4!| zhe+oKH^d6tdbe1N)R+1K!nigVtb^CM3l;b!wQ|{eb4Y97I#fjk_vSlCLELJ>p*s6F zLvX5w-)44tnIVexJ0Im)!s@p|_A{qQu-%s?ra;u0CI>tnbX9;OROa%A=IJYtj+HhvhxFJE5r zG|+P{bq|9eOZkr|hL@C=K5!CHtq}$YLB_7%5B75WR8WyCzFV{A>iY4P*v3^?f5m%N z1Wo!9nbZ&Rt19ixDCs@}k=uUnE9xt@m73SAH=Q9Wer-|yiMJkIVWDSe{IT#%=h^x# z>2%(U7g=SS_Lx<#3{=9X^R+GKgJ#O$St#e9CWdL93~p}BlVv3p0+%j@ch?<`HrgJL zv9kt?i5gET4iuCWrb9Y4onXPPD=k^_+{rZ@a-YV=FwhPcQN+dqrc&B^lK4hKucnHDtMf;N^d5YG=mnYuMRMLM( zIdDj#PN$gN^`n9rgaY@ChjPnI8(oewjaleD`GjNxCpbfsJj~h~2k|86L(}an0M13 z0enIVC>he~?X;wXKOGQj2fMuGAUZaP2ASaKGsuv!*Kn;RjUE3GlXZOqKGYN9XoTp! z?1^b5m51RGDJ;rM6H@NgmXmtPl?W6OUE}hyW*;1Q*X^6ZartZcj~v~unjs5l`UsIQ zi9oFr4sqg^Uw8cO(M)stE#Iv>V4mi zTzGR4>}H5hGs80`qK21PShq0kcTfCkjhP%Q< zxb@Mb3?{hMtd{ES2^ve633hL~+~1OpYnbyi#FnG0DFw&Gebw@}xS&pKb=E>5xyBGg zoCHGPfzEc1O2-W6&RD?G*#q+2qA4eKu7xXMO%=zkQ z2R^lx(y5I0qP#Wt2W-%+1Ut42=`oN-PH1AII-#>`Q=q-s3=CsRsZVq6x8z4zcKjSH zKarYX9k!y2GAOdXaN)Z?JS-IFCR4vhza!1oQc|3f>4TdZ+sOfdMkWV$D*~GaGQ+ob zkly#^=z(Qp6)37_EqO&9guri+`cyU@o4PkTQ3tQRq;4AEtDSlo3+M*am5T0WKDsF; z-7uTwc1%3p3Y)c`TV%v7(cI$bM-j@@%1RSZz$*m1sEaaTJMA#a!?~v)(ru1H*~VT&5sUNj z$fHfcIJlTh>h0jG&l#WF6)z%~|IJ`0!Qe)S&v6f^f&99_W@K!})CvT$@wt*a{EopO z+8|i#saqWQkraAt%J=YgUjQ_tme7$FEjCdr%*VG{{>#i9D?WLqwfz>v_|wl|>aixd zmsa6I=LS4|`z*e$_HI$boCFW=5Q`ECgvpGI4c=^KClLsHt=VBo4w&FV|z6n^Z-9R8kg^ zp2l^^^RHjq!f*3&0AH~;afdt&$ZgW5XDc>EU)Gy^uMzxkp!11-z}4Ugv86i<`iy_< zpVJW=5&4^D?Js+JO)^q&O1>Yuy5kgm|2>K-XhTt#Q9VS>y~qnJ*6cH|S}P2Oa?UkV zn{$Q$C=I`0CxgzFA3r`@EDiV4s2DRdGag;?!v~M?N^){yP4u9v1@Db7Uc5M7<%>=D z(0s#E=vJL?=jRXdosKeUZ09!C*F9ZbBPj`aOLtEG*ZZ()x1?tU5#Rzyej5FUp8dsd zMcaszb5GAFv7Aj}X1Si>Dq0j2VMUNO+BriXnV#B*)zvQY8y*>XouoWIHkLkrUgs(8 z$>UWHPF7Qk9OZGawzKmJ7nx)2W>tbBl5?%aijOw1T7ac_G#J;oS_mcYrXS9m=bvKy&?YR*+{r+zuk*@^ z!Z%heTTjovcP>Ld?Mkq$9|b>7vFT2IdFrLq~hb^vR;m3vBS~iyde8k%rGHKEslSd{3fmhnaPTyq zEzG1+_u*mws198N1A|9!>E||s6Ng^`X6*lAOcPY^t1lMo7Ig>N^}OjjUZ`!6;xJgg zpRKCR#l-|ud0IC5qIb)Qn;VZMrdvLg$2d(V zK6x%g{zp4XVqCr-GOf+cuZrK;7-LFu`!(#+(z&v=6<6z342P><&i&?`ei$?`>t$%@ zb~~}HO-!Gwm^R9y&9R2}{dMGP{QYUvE3eY?=kYm3*_WfrE3Kt}C9y*0-@=ev4L~4P zm0M%`d&K;D%@}odHywF}T2fZFUIe5}%miYFrp6?~WBNiyt06n_Eji-Q`km;tHSyj< zPbiVpxYa<~>4d3l)j7z7_WGjtD~@TyLiPsgcLv~<`=q@ht>76L97Q3hTUuG!k}}4c zaA7z$i_isLj3x3()PX;N*4I7jK9~a_q2u;3;`W0gk z`nhdFUezg)ZvGucEF>WiHeG?w(RG2?imgO+?n#yY;$E|R9?x@zlr~pZeG{|&8BJeE zfzzL_Kd!F@`{HJi1LQg+PnEd&jH&Wd*DfL7$wbwlwO7U`&m583jUhqKUXG5Y=MwDs znlG~JPGn4mJD6blPjJqjND~$*)yp0kW|YZC=2l%ucX4!d{D|`O^73*F3i49`FkEsl zla7+(*LgrGf_Z<7WrdKYFikil$rE{)W@sC<(+8!ZST*k)5dxd=w7@qJRaR7NuWGAt zd&HCrM=q-a$#Y3wuIaWRKa-$-n`???puN0sLskE^VFZ|13W6WwVc$Gvj&cD|4v-JY z{a9`Jy;BKXjAc#{bGQY7cu8sbw9UnUpcGi)z07aH_+^QT(5ttEc`bUEf(v6%Hxd5UjvDo+7T^OXR z2g)tfc~ExC;);LY%+H$&Fw(TsGEfy)oG+&-dihH{qS?G@e#uCKx*`MJk#B}up{NWg z=Rn6DwNE^^8`h~ea8)rf$OHQDb{+3LSqsEU#Sw6enALM01?|do9cB48P^{a}_a*BuJmwU>}%Q;UX4#q}DAF=6l zABaCloxy66KCBKEF{jfI(DufvKjMN&Q@z22YJKgBqdn1ux9O4=r4J8Q z41kiS-s`-9hwV%3q?naGqWdoq1LZ-lNs*?erZOfp-i}MklAJ?Cg7~>@=gX)IsaCb_ z5i7S1=jz)#0h*>jNu*EvulH2~CvECoQzySa?MUF+ZP9grl|OHrIBQ>c_XD4x>il*q zy$$k7`_>G2etXv57Z49sTTIq{cf*$@gB|Z}XFPk0=k0W*_X0h47U0i-kM^;xV4%t} zH$$8*JFxONESeV#n$>38i5Fa^i4tb&yiLgH^g}#%vF~uE9ThSJa(L$KeCzZHE6WUq zm}tAtY)+z)t2mrzELZQ=v{~$JCPA7Di|rhJpJ@#26va(ci#~hjbiFccitv7-D$Jmp zHUj#;jprl4^BTs@SvPmI?$I>YH;?b}45c~ulzT1A`)F16_;&ySpa(-()VBVHLXO|V z-G_w)0>R|I>R}{%BJ^O+z@u)iW2wvhlar-c>On<3w^T1S0#2OxVy1Up@xF%a&#hz1 z+VSa`uP*p|$`sujPB8yR(&_5!pXKR~NtojYb>YH2AnLC9t7OqNWrHvx7z08Ix3vCW#PMf&e2LH6Dr>?;Z1I7kdc+T6f} z^)=!UL?jJ2a=e$TN2c^Zlr{5Lb@OqlKl96Vny^|pdhupM8N_MeNyEST8dgRl&^tb% zruD5xhh=)1AT2G(#8VkAQx%9+tw$IJjKSBU(Axt^p^t9}#~s9_gM|9TH$rz?1tG^Z z@UWiY5)*DIOUdbS5f&i17DYh~-PcS#X?XvM68nO#Ao=?%(HvI%VN=!AtAfB*g8 zsmUKM;mAz_JHf(6aZuv=LZYV9GP4CN;F4ZaYMd{6hfo_vaRapRh3N9Dkoe~gAmzYT9?8VYX%lrHLTSj4FVKXx`@=m>`2E$sBExDX8`+IwPJ32Zt zGA{k^{zO8#6Pjs2ny9fG%ODtXD+n}(@mk1@5%}UVw0v-oiP<|7nh{&w^FfpM4nzEj z0tdpzY?s|7kw}@Shlof2t6h43a1k71968`oe~2>&;j-OB-*Zl{g$-w%Wd50v3%wz2E+qxCeA;F=3PDxZ$=wXuf~&5k;cZ5V>!oI zh{(?`sV^ugu{Z=vFHr9MvC&27Y5tZx^z4rxx6GZuW@f2g^gjW#r84pJ^J^jy<`BwEne* zUd0Meh4S^{*z<3Gdxj2ccEpOXp25jyV<-0rVt=}dSErM7V`JQGJ!z_kqWY3oP1>hk zCZ8J6kKO*bB7J#8^vdxcd(5543yNgzZnoBf;Wk&VdD8yO5w&t%FHlJByw~4dIo+c7 zVw1J7Z#rHif{yO(PhQ%Bc>0Y&FIE%=0~M~yr2NOWbN>jfU(!*0!h7k`Z%_DfhV6=J z_8IzrjdJN+Or>*>asS-hoZ6&g_&=8&qgNCzPZ!i_{K=N~)5ceHR*+1>Fv08>jVu)t zl$AhS!xMus*XuMbL%aVm_k4R#oU-q(ECX*wBk)9m2N(V_k4#BLY38I~ ztn+($%fv_@p$4`||G!SIlUt`7TSOpMTRpx-Ug5#MUW^&V1<#KbV8VJVFlj)qGcF51 zs+XxT2P!`~>zN$xEHnedC`jClf5DFiXSJ&ZSviRx*JhW)jLIhuFKgx2d#v@L`^_Zh z}0;0PvTZ4(xi32Pzk=CS&>WAg8`C&UfK; z>#+!JpTE@1H5M{Ut{<7@yMv9B03i;a7}`oYRwzSwW*#(n;iXWJJ%sR{s17?0yyeeJ zlsbX}j>o_AhwdUAB6 zQ2;$q6M~NB4e*DvIo)?xlZ?NiEJgmZeL`Qu(WtKwC4C@>OCg}kg^Ppcv*OEqM&`{u z)pRD)vqMK{d#>wWK?qC=Gv>3X$G?mjr3P$$9Rhhzaz~9PEJ>^HI1E`W$H7kHv+^;L z7au&HV_TGUFvm?(7q&6GHeFlk#7W=nZ@%lHa&!OMJ677f(Nzabr(;^Ghzd((4aflC@4 zvcACUsZqQc8K1LHxJTmJ2L#IgD4(L#dDRMFymTEludvZsf7$Gta%ZSn|0R{Dm7*iGETBbCMd&CsxAiUXYwe$#3!eAuRoPgwnuJ}@&UsDZ%JE+5(%%xc zHnB0Q^&o1nJ)5WugkX$max)ePVb)4o_gVtg0!E`en6}Jf?rN2Q z?P?h>jGB%Bn+Sn4B8dMNLfl-WA}%}4j+efSu(1yl@14v0_knVK&E8b=3BZZgT0z}Al{wIUEPF^y^p3|>R>wgj6kz7rd_&1lO zxJ(G^n9R?!NQqQ2cJK1Gjdl{JsT_#4P7CNU~bSv3YW9kkul{g8nHI}Q#1}#>n{myuEKFa3NN-t`v9LzerTz0fbPRbHz1~0Ak!Pz zUX0(6$U60UOG0OFNQKv_auHz>@6=e*O#OUkQpNGmVn@U!x2YyEK?Pd-uxu^an}CYD z_;GuQ)_LZ4eZz#U58^r)ifXz!8L;kk_OwaQ{Cb0C5`5C)F>ietxcqv0EcMljv+ljJ zABKzSforQZBjdh0%~Ik{`KFd<*oU%;882-Rm%NLS`LppeOz1#RcuEe=CmgLE*@Sh|%Z|Eg;K= z&0d?Cb=yEfpxRL_bp4wlBownA5KzvBy6>qP`mj~qsHaL^bV~N80_HP ztncSv4W;!SrQ08uzw&d#4HG~b3+*3b5D&8mjh$KtGwPsgNZa6FSiJyL$N{QINiblk z1cn!2W4%9l-Ut$4S4VnU6m+IX*ljMhVoDRoe5_Jti5%Yf6d|ojQ>dx&=m>W@$D)S z3~7hv9QKsli$PbBW469Y3tObr{W$fvOE5C3e3_f_zB(W=@z{JFQrCt=Gy-7i%2(S( zm8tv30>MVzu)xK25O{RNSXPY`I6U^Xt(DKx4tVG z`fys0WOSWtF@WQ}&>wYb0zmF2qhSzoJz1=XHmb))9gAqW1p>JQH+ZHSox4yUtz(nz zcpx^x=Jj5%Q~pV@H|*k+8B-)ym_#Z{r+GP?OSA8yFE__a@f)&ahGYOLl1g7HWh+;}ER zs%AhRy(QVgAN5nz=OoM}4-S~Si2i3IDRJm#!kcT%9>Hr?PJAIxY1#Rp?ESLJ>PN$N z>y9_>fk7C1i3{8o|5$vCiu?n2415#9kyjI^1RhhM_xw$^)6UAM5N2pV1s%f7VOWHJ z6+Jq0fsy^ZS^e69O`S#m2+Fs48EPFc*g2dsdc*58fFi{hHv2D)*;Z7Xuv-XmhroG-JV1vUUU;$A{idKUj_N&wTe)0TA^_w$p<#Tz7i>vEm78ZY4 zS}J~-HK$o+GdUgoZG&`hxOtHlc9pi$M+Y6end^l)kRM&cY;21_T3`nNHa<+NblP0} zT+y(10Qiq5(1^p;SClV+xzwUi$ivppG}P+GQXxlxEyz-*r$&guSZRC`7}q?h@9ZYi%I4&m4tE9pi{QV?b+SElq`G)D0q+^g$QmLC0t~)JXjkTh4&W(rj0> z0YlFCL3*B3j{mp>>M(98ZNc2c3|O!_o2-2O4JU1<|44mbZtv+`i>VwoXmTy%r4eJ{ z_@q#WzFFkesV&yIC}kKa-yF8HpU2Gt;Ppg3rU}CZ;V2hsON-&Avd82XyMZ^r>g0YhxM_H?Ys5_Xtmt;nw#aqvnHf!h=2077S_5Z} zqToMU42@M_4w9hg!`|8^!nejPULJnLO1R_1U?Y0x%+64$;`(WsClPN&jh-YRmVvg{ znmR?frB&AxOnmDp7wE6D=18m9_qO+ijY27l$T1Wt4--GZbCH?R)A-8uH~SvJI64uh zzkS9j;mm5k%V&IO!pImt1uQ`wH&p}fLx%Cs|L~R3ARa8_?9)UWSA=5-69Zt+H2CAN zdGF3PhQhlZ>U*=QU5`HJF$%rho@WR8ObVq#7e=v8!2w^d>j?{srF^`_b%#Fq-_HDO zGoz3LL(tTU=&}sD(i;y&QTBnP5y5%d0CZEVe+F!2W!Xd{Ly>Dyeb7WZ2(bv&v^8Qb z5U|pmq*-N0O0;31)dV!AfVU-B-S5{=sMX$5qd6645rf!$Z^7OBT=k2%`P-e{0rGb5 zR*gj9^fAp}V+jur@(CDs|6hI%L8Yz&19Tu!HT!^K)%=a+fSBtWYjAnG*A}jy)IH;e4%LLRCS1 zaPP+N^G$h92JKD*X;A6$Q2dMpw1K9=bcS46sG%Vf4M38zAiV{h(8@2hKa#osmOL-N zpNW3MCS-83`8}46gWUmxo{8zpW?ndzGPAPc?C;;~h9DthZr;2JqmB1>%(-oBW`N|? z-*p<^0ujUpNaG$gbVJsjd45n|Jhol3160%xEXR z&hPJ69t+)!`9)D*i>+_zWDbrv)hZ%Fo7uImxk;ys(E4|kS=O1T6@|YsbVKMtn-GUI zk8=8j(cz7B#76u)ZC-N+Xirmd&C}7KO4#1Z?)#>~^$UNOq-{KzcJ2v>xrqtwB+yA3 zh$o-V8@kN!*XN!Hm+3wZ@-(!++v)1+#&CwFKsfXJVR5-MMx=0i`;uiXD%5m4tQ)|xN8I1PpBUQGaCEdY@%u@4720GnE>z5Z|Nf7IgGqMi zLxnK;5FhS;8^Uujtf5-D`kHsOfEscd8X5|68gKfNXlo2w);>*F=2q(F>Pl~4pS6DS ziFv;d^UL4#%x{Q^q>G$q5jvphI?YKTvjc)J|2YVx(>=bjzC(P7Jf-?Kqq3hMT+(qX z|2T*FDH6xU@``qZY$%*L7JXN|N&Ae#FA-L%RBqPyMG2Gpd4%Kd+~?Y`jsH?C8Y!y< za%qCj{mzWnDgUr6p18o+cTR;x=rPrf>FS?y`?6=l=h<44jf(FZgT%CMUDn8d!LP$u7oNQKM*w@7l|_<9Hq?al@1NB^ zdP#VqL%+*%HWC^*ZuB}2E+pE&d*-L=ALFZ3R$}Dh>=6$-LRO1|!-FgQuhJH;tnYkP z=wAYK+wY&k^j~e?y<5hyCb>EqUx$FSEps}flan*{n@;>6=eW!FNi{OpUGxfb8u7Q@ z@P>kdf}Gr&KCFExo4e1+gYu#Y7wbF~`VSdeEYu#3YCfptF5fOmjN;7wrU(JKQxlVH zWA?1-+}|p*@5-W2Jxxh0%7!sM3UoDl&mQr`@A~KOAU&Id>FoS#+=9!5O;( zvE}HC?B|;rK4#Tzs=v8@HZ|ZRKIKAVV+e2NrBWZ&X~w5g@3AqjZ-3p&&9xu!WJ-Db zu~4UE_7b;}^-7JatA?k!Qppd|D~T%8Gb2OeGzD*Jwe-lN?B+UsxT1#jbyMlJnz+^* ze1%69Xnwy1WbuV#>Tiv7Y9~zRlc|uX~ zs>axY&aJ_*sUjvbr88&F=s$?k;Jis~Yy?N1H#avoEgl$nFrdWC%PTHrdi&CS}f(`A*$6beN+YH~7;d1PW_c-quHS1bTy^vMw4s?m$M;IPqfbO$VzJ9k7k>Go>JOpk$HWYERko$W>318Wxe{IIrA z-*WkSW5{IDU6)K*6T6$)l^>(kywFO5IFs^~dHSx}=aV^tJc_+^F*L6oHWoO3gFOU$ zK2F%iGAGJbsTIf6|y0>Y1wWocV zVf#k}Ghu5&^x7pIv+ilX>~H-;Go%$==E&A_?cy0?XjZYR))9#@xJ8Y(qqEAuol4mo z&#|{&|Lg-yYr+wT_)ZU#-fvH{uCxw6&*UdHENgzLM0wswVLdA}qjj$);B$-o<8O}p z4T`)5H*fm8v_c>2W+X*6kO&No>WvH1S6tfbvpCGT{wX`V${!YhnWx4&{jQpMz!cP~tR z+kCveXhKJ)TO9IU;ep`!$0Kj?TpsAJW_M4I$DM36@-I2!<^PHCCL!k0N#bTEMniH- zrZGzH(_fsMFL+NqdMfu-(#*Md$mv~@hJxpM+NMT`aTNWYy+2oJl(?EoKXiVX@@+pD~DFJ^p+6hvO3c6@>O zdA5*vv}PmG^l>pEjGrdat+Xt7koZoqbs6OmpH=jhg=!Y)H0i8GmInCSMFEXB2R#LtqJKi1W-X)Z9E$B>UChyFyC0mQJ zhJ3V_X=IX!a3orzdi_pYc7|0(C9%*>DfWQ!y?ExTDPP}N?)#7LoA~P9=FC#L*sy(9 z!Hcczvy`6v#YEOip?gmHEaiD|E~}3Q5SO*9YtBZn0Fr2Da1@mk=N1TQrO{V*g3r|y zx5&!Qe-`WZAGJ(-Dwa`V$^4Oa4(Xv)SwT;oGnJ*=oV4@x>wAT$!RBO}{QzQ|twheo zT~C9%cUE++8~e3K>Cn%6^2lDiXQ-^CaAmSGeB#x%_DE?{2$OeFv^Y-W#QhyF#RVE` zYkN-H($dPty-iB(ec`K?k8!$l)Q556)(N*2boVS<609sGvhQ>GhUTd>lMJ85o{>-d2^X7A@j3oY ze)qRiALU|yTJMYvo4Vw--LQOD+*0@UAKDrDi{Evg#*W=qR7xA-bcjXYOsEl0Q0Huz zuc)~FR$S^`rRKoNI9m>J-N3-w{<~3#N7J0O-@efDcXUsiD^C|1$e!9ny4nu%tCfCC!fWY`WHbz<1sIIx7#KUYaxDlK;7C$lj9F z9{%O|kF@e770#guiGnfjJF+pmXPh8sKdjSb*xVZT-UYFG8Oq)M@#ent`1u3V%-g)9 z`CYev0A4I4KE&q|SjIQ|CLujy(SEM?xK_|ICdaLdB0V=zbLM%3J4 z-{VmowYH6$QCjvcEcWNT^Z76GjemXWUiLofx*qn+%(oGDS)btT%P(Y|zM-vkFFKVT zJZ8Fu9buGB>MY+n)GAQ%;1K{kM!r(6l7n$-f0$soA)SWx1HNX1$4K6bPT=7v$W@3J zx__BxBP}Bphu!77qAP2WRqz7*@oB`l?{qr{K8eiH@&x=t&zC2w_?CbDjPIXSkr=t( zC|?(tAO2D?GWR8NVtYf@pG(B>fU>GG5ng1#7*Wot-k^UTapi1wLRCKR7c28nBU_%u zZsFYEnEyl6H-^Wxc7MmVF|n-)8&2$rZQE(w*tV02Z8tU>Ck-1nY8$J1=bZC@uJ_w~ zoa^3uuY0YZ77XM1VG>Rib*`SinvbGf!X~LrQ~A-+zbqt}R0hR+D!It(Y@YK+T&O1i z6sBslvAMCS;^=bw1%DtpLuTs}-r_qt;-8trVo-_A$_24r8zhq&vX<_tKKw0!O(gWm6pfUs5rdF}j$PIA9)q7h&n2y2$+z&AShjcFu{_(Y z)v%`evhYEMh}N$KkGsA4Hc?!dm%6nYb0k!J9Sd>)yE1bP;ZGWoR2cj3UG%?AY&$3s zA}h<{{)=E=tH%mieE9J9daJ$EJM$RF*ZVs;$@c3aNX=J+&Yo`+}4vaaH!@ zdn%-9-tOxGf*~g$$M3re4n~wYh0o9?Zt`;66EONnz6lgqpK=RWdM|l}t3*j@3X1!beoCFk zLQH`%`C3_BNb9Aq{kIfnQDrKpo@o!yv;?2bz6@f1nBxp@_LqbTvnoT%JxwQy-AByg zG>8=bc@4+3*THgXc*qre-^+X#dL_7rgu&Jt9m*0eq-Wa{NcTIP*3F^p&DuBS%v7*S zh+UY^Y+e&^-QtjW!EfU=JB0IC zq}ej66zIK`&u(t8iNh!#e|DO|w?hW%c4L|PkGq_X4GRl{>WL`4mjKMT4DTYLp)wzz zoQrv!Y&};OzJ|5px$c{GBkZ{jIH5cy^}E+Eq@z<($p+EdAtaYrJYu^7{f56ypTXq( zU8)7>xqp(D^;Tb0N-HPjeEkFBHq&im*oqU$)G=;&@X=z4a64g->L6c|vD9bheo=EV zfJ_&VV%}qo^NGow6Nq!#+PjxLaa#Z@)Vx|cK|UP|fLL-uLLpZXhlxT4h2}RflAPV7 zlJK58T?7*%I6q>f(~0;}TeFQ~QJ&39_&3q+H8V~6kB_Y7ln**vm(vBr|4!6DQK8Rq zg>^Kta=@?GI>!CW;1eXMdDjjOd_sTDOPZYFuT!hQ`LN&J7%t2SzPxa7sFN3*BPL1o z@SL2oAv9a|m18-6UCLJ(3ZKNh2ENnHfIFSR8+~EU*`z1< zr7e}xV&WK5=8TJ&9T4D2*3Egs=$6f`3RX5Z;uoLgpRl~KUZOkA1XZDz)yCI}00T%F zl&kt$HT%)X#!@mzW+~B9C#lD;27YL1k210>Yavy2WQ?ZlgOf1KPTwe;1cin}~WpBphXo2n&YX)Yg(b zGA=UclsgLPFx_S2LVP>3Ha4I>T9VGUO+iHHp6p)l)wb4J*vm>9f4g z_xD@C-^?&DF($3!;8h~Y!U6Z02kT`9ZWDCdOJ==kYNu74Rke$n8W!9%nn7a=kl3?j+FUBzoLyXr-HoIQL$MsfB2RgGxAm+khH*q9> z{d1hA6X0yoP?Ib`?cY);kTPeJsh5W>k4r{iAt@q5WPV=wa|82e*~l;wc74!gY$b%G zi`kU^4yI|(aBX1C88;d;Vp03lsyIHy*o!+c_qf}Mmku1c{V{oyrvWa8HrU=U6|8x$ zrv=GpG?M4uy{BefCzz|fw-I*J=?&nvQ6P(1hS+C0{XBS)F=0n>eL8yLi`#;GxtbHE z5BpjWE+yno(MGDgFzY=Zl);FrJiRQP4w!-XQ)cay9*F*0Opr%U+E3hCTP<-9?3D_l z?}=V=Or3Ypas69+S>vwO?Ngv{-&QIuq6uq?z&n(Gs2BaPn$ z--gO)HL;k-yPib<9EoqDQPIWWeYZgW{1Tl&&+{q+=wzay{G{kEVPg;XnK|N1H}Chq za+Z@S0!JAqtvFaEqG1zdF`})^qL4V08J!sc@(TihIE!loJq!Pff4Mbj^8F|?nl*pz z)Hd8*g;GH#?oEaVVAWctDjC5$!RPx1y1w0Uv+h8|I~mpJ1i%)yp94(X3A0j`i6V%18SmFw*d`Q;oBEDjZ1W;C4czNRpBYpv~`Ve`FWt`oqsO)#rF} z6emfmc%;>WGHBG!6AhG;yPdnU^dOyuU)-&pKZ2(;4&TUAZGDFed#}hT%t(QtZi?Z& zU*#(k9>L^EIH3jJI)z~pmQcjFWtm!MWiK2o;3^K@^o&*tTRZ>La3%0Glh>%uiM)G( zn?=y`SS+=ZD&8Zg=HaaKCtm5t_6M5le4zumK#gw;6|M-tMdDfG(v$C)Iq!;i(8@%$;3~f+2kk(9PV4hhG4PFKj5L$=5(CF6S1||v+Dp;oT zl2?*Z`r*+S>p1+xag3WsOLcs@ow-ljud!_z6uK19yqp6kUeZ{T%UB3xRXaVRmb|QW zX(ixT)KG(%#WDd}qBD6*t?{tfNyMvoI=PzPgJ{a6K0;&nHd1-~# zt|Sj~= z(8Qr~OmqLogr@lC>GE3E7kPX!Zu*pWGhFh6vz`29$Y*4r*V#b88h;}@&fuD_lR>f> zz>b^saJx|oK0-sVj1Wg_mWAamBrmI~f%7jJh`W&{H>{SBRDhS|&$_NXDDOnsQ2IPm zt@=VvHObF52%-aPDCVb>$TOTGexAzVclf{;r>l82cVRc|7X}tWnQ|_$_~X1AlvIpk zL@d8)Z#s#3+%}~HHRWQ6^#KU9J5MW?6hC$`3%N)*^v%eMEI2!%z&6<8SDRIsY2qn$ zzS5=2NkHio=v9-5tyB`xKn;r3!|7IoeKY%^q5CNB>d~Hv=lR7 zWBls-tdS9ku~%+bc8@N%ZX`!LyK)(anIh?VtPR?!LJ7013D@1odQEZ<hQMut(0~=PV^1{wt+LrYG~?1-v!8k5nz_9Nkcm9AIjacAtDQ1>K@SEMP!m7`sr@Ig|X8n*s z!Jlh1Rq)qi8l=GUuCsYO0FtP9Q?hsz*7FYz-{?08RQCo=L5Bv%E|J6)sKc)r7 zj#gI;`{Gxj%G!~l5#>UZe2E_t(HbdIiY7wLrWM!s^4yX3)k&33AEGyR)kgGVsRT|e zY!sYme#eK!E3X(mrHoPf@>=_zGBq_^Cbm;7uA!WBZvWoS0Yx_>Kq)>`(?eYZRgod%I;zYDB+FKpGrR1qLMRc%S zzmlV4{NJ&_LW?|WJWk&-hHwtHA10)=n44QHAsZ!(Q2L>$v3+f=SX#i&Knyy_=QQS04)kEb;wmqsLf3$tiL{w_#U+({3@vk13}_o>@bMDZs}5+9dG zE9yML{BPxRG@MhTHgLi-Y=dyWI;60%ZB<ue(`6C@Qg()k9olvy)VW$@?V9^_C#=CtVvO&TO_^A7 zevGH{%qEn^F8mIn@6Z%wk z_!&MahM9^|lfQA(3APE&QcAhB-r^mqDbj&o#3v!$`><`~JffIVLde6dp{~E8a|tXt zk|^_640MN1bfkuJve8j2&M>K76*B=6Zu_HhWTa=&{%CGwVFo6@p9t?3WXjLcwFoCF z+h`5&ID`TwKMhIvpRK7x_wkJj*8K2hbE$WzGp&rZcuil)q>E23AdPX(4ScmeV{?cf z)U_oVL#cz%Ma$G2&h!Hp7&^!NS)5Q>JN9Euc0~zPn|R6V8pA4*=R;8Mcdv7ngeg_i zB>rK!BR$~1GMIAfI-!);zKFhUB@rQQ;J}e()zOKZS~{U*q;WhkFE{2~XoX(jlb+q; z?7ZI;m{Ps%@Kkg4v&odvcuqA-2&kze_)6M^Bo`-#YZY~>sYm#xbf$a;1J)}hIJ{<- zM`*xzN-g@10V8>%sL@~))2%czUpEWw6le;@?@@bFU8mozi%A=6c`nZiKFk@CdpycOSnVTuV-;-Bvcz0Bymd!2al^Dm5GPl#RG2 zCw?|F_7-f2fdT0z4sSw2O(0e48`Xc`A~qz=g(RziMy9{;=Y;6no@vVHx+cySP{I;@ zcc5Mt1g)j^HLZP|(Pmy`@4dsp-HSi1H^cjhX&77akC%Fgg0%#p1y|mdWCk$sKI7E| z)l~e-U$eKD;wpJiR!G>b3Z&pX5>gUb>}}g$ZSbj?t3=n@dU()%q91>j}(lb-s+f`+G!N7x$7~>0V=<&to%Fs3*u9ZB^vZRoyN} zJ;X28Q>9ZuQ=tJRV>4<(Zj8p+!d6%O@<&*IR(##&N_Ng$9SgNgG=C(3JWN1){>m-8 zcs`;leOSG7k|RT~@n7LZq=)RqbFmU_WU+np$Q7#PnK+1)DUt+he)0n&zbk~gskWwbdf$=6scFlp|M zSnR_7DMWs3rQBj4?9q7zD5y_X!?>D@mYtrnA_lQHV? z$%a31F3*c~E1#Eb5~6jns~TvuX{?(36pR#6MkZNo4s0v5>t`>E-2YnL#rX=M3;bt- zf5KKu!O;zV@+#rF2v1J_Wb)CMpPyex=X5v#fw}j-GEs+ruf_FhdfMH@Bv>?e#VL=( z^!TJ-d(T)s_v>qAf?jurz`C}c-JGDUa9=g?%hLeV-~Qdjxo%NMXC|C%jAL9`N1DA$ zg}3Z#!}aVn$i>7(O)ULXRQPl>9{->GM*S`|0w~wc{@w(w!%qF@z8D2&(&OmYc`(h$ zQIkPuEo)AFeIxA2t23bPUCWv|LcJBDZjL~4wcqa3j1ZJj@^K6km;X=zzO*gmE6a5sxJ8?@6%h#2ab z=96ce4pMHuC{ZsKt!G73#j_&PZ7vn;CoolYCwUAl%fP#5&W!-If;0F;W1LNCU9 zM$}-gfq}}Z$T!>^9UPikz|bE65)$W{9xK{_i$k%lq_`A~mhpF{RP zsR=)}2CDBs9A;gb6<|F*jb?r!A?B65$d5;DQ0pr+i{xo?Qt9IngE|MkU=CCWu(>%D zu)dugAK1uI&<#x|OaK|UNbM>^GoxWEO98^sF>+|#lIlw|q{K>7pCI;}AD}ih3BwdP z_ShqLaxZ4;*{$K>(BcQ%19Zfrhstu)$$-YR<>jrb^;AV4cbL)DtpK9OSLr&Z$T#mh@_lXSr1Y%Lj`&k~J@0=*)6s0EX*iOSa4_}S;O zBw$3}cQ9U0YXT97yQYppb<-s!S*Gjq+TB%`peY_NLeef%NKw(j&~VsdSDAdZkVn#0Kb&XPTl!}b9@S&ovgzW+Ioen#iJ|NPpLiHJZC1XhOX- z-c&iUsnjyo5wE=j%p(Kwn~1`r``OBpdH&|eN{ECObr}=S15IH80+FJ~$jIuJ1Y?)K zd~tisx1nZT!_mfoeq;-;UB|7xd>_5*3^I8Toa3tlp|*XWezThQSVkb(rJ=YQ-D$;pUSrl-R^e zbDXELl%^dej<|jx++OK$6~;;=mSkfV?nSJFIWy{{U+pmZ2b??O>2i9-ji>1m-l-t&yc#e+zoqly7#XwD zgpk}WG;b`zfiGB((hi*Lu$BuMMRf%3;r$N_Aha+UJtaCEp~al^!~if!{URr$Y-+AQ zwV)tUlwiGRarX$*+0=e5oaxXs=b^c*@b)GP`lc`xN^eJ`d0$3@!XV$Ob;dgCj;%?T zIyNR<=KqzpB$c=;UYUP77A*L>Gi6J&1cOjV8-5FZ7Vfp-*pa*cR=5)fW$89Y8IapZ7u@dV)f?k(o=(QfFpmtO^q#lH-P4X_vUSCs3OaqM}i0QC(ZB2K3_?u}x z`wd9O0_-zkQx2|ag$jSTL3~!=nvoHni%uCTlhH4GstT40vVMJd6s>Y5$VJ+Uh#gyj5#>rTf{v>&>c^{Krm`a=e?jnXVrxTESbfaVx zKi}FR^}FU_L4@ODwJp04>4<+z@=YLk_3@x~*L*4b^jAM2>REn7mEdk)zP?-=b&!HU4(qQH`HQJ%yNmA= znjeE`^IsbvCWaFHG4Sj^0-fXhH*xam5M7yd#eO3ecYkG&JvwJCi19W}j>7X_dFB8N z9aAG0d2%pFOXaV5_6DT7sUb9D;Rg=Sgz}v)9>DZSD@aQgcmfXu`bn+a=0h9dC}Y{s z?Rtg**nVwtEzn0|k@mW%?nWI@(&~GqTxodG)Z}Lv0le&XoVbEGuBS ziaJ0HPL#*V0G0+(3R%W2Nk%fAz7q;z7M-Akjoj?*R&Mx_lnCMH^0ji%42^%qDryw+ z_Q}tS#I#&3&ttn^7&h*9AbFk1McBtX_MiB+X6h)(WS0I%&nmpreWUITwT2A#(?oOg z&aYw}`Uf;lYs_HzxQnoux{8(J^7Xr`#7ADq-%V=PF`Dj1xM#KIO;db^2<^4Ypk-m6 zA5An5-zCqPCp3s$+a0s$r0bEb_TP)^b_7`2jb2TYucXK`g|4iLDEjHSUpc38kX^^H zMr6Rvm;Rv{TGcyvbfCmUTBA#1SHl|^Slx}`)(APmH6SgYZh}I{rE1dYXwv)Y=9o15 zG2l74k(yFBOd4j&xeFkx7v2anM}Q^_3t2(625e0qoR4)e{2vh|18I^=pMO!&&+5#_ z!nI0IG~)ym>Vu@BZ$-y5#*{7_72=+$WD5Hbl9_hX@BU{@#Y3Ge^gm+N2Y^AsDN{@; zbMx(}6fkpb5;Rr2>cV*GF%Cdm3)G1zLTsz?sdhNtW`f$`qX8R?t8wmkwVKo6l8uKA z<+nAWa7g@-f{nv1u`fQ!7G9p5+{|7!oJX-rE0xh;FD)p54Ryw zE;H7%!~N?{3D_g%rqldgJGGx=kO9K+Y3}MsT?A>U%vSt#F`8a-2&n!<-m{)FQ0UH1ik8Kj}#QZuuiIt_Nv%6Pv%<&VU2dC@be-$yKevk(g3mYdC+zGY>C^r0w3}n?=^!4-ZuLy@vMG(thq2yEW zmeP`|0&BtmiOspFW^DTkjA+$>Yb|uL9brC~;-8zCykB$?W~c!@?{P46-|6s{Vr1qw z@JANY2pLM()HHBk*X5@C_3#E@m~QZ&J$~3Q*3ZX2swf8VbcNh%w13pBv)r|+rR4C+ z$X~@PM&}K^htat!1^S=g>Q%zJ7ceS)O2zM_ZifwBXH}ItMymEt&77m;J?@iI%=iid zANn*TlRKgCWYJh_A!SS=G}Bn09f6vWhL?#Ip4Xu{_m}?TfWl>3anCCY+&;IoAH!O-y7|1i<@JofVo_6mb1$wEdIUX)Wm`XqM}|` z9NE;PoSy~D^lNf0;m)&VvOafs*7s^_bM{;{fV*#*3=QNe+u^K9_3Yi4btI)+toFJv zYWNpuacnN3kUp#^Fzf}aW({4~WxAxW+FgsrKrZe2+rm86uVl~ICX0AMF3BL;h~zG* z6&mK|T|fMUDdwW-{&@l6>=f~30`dkCz`uK_S2vwi6NUK)z71gLgI97dtV}vkJL~cbz&VTF_4k5X1Mx^y7p) zlQd^;NOx%|qO$wQeSVAEMY2_j1(17--~umhZiI&Lmzv~Z^djOf{a8cc6YU(Hy%Vz) zDH8$#N1_vZ^~#wn$W0NEd@T`YJMEXGqlanDv*cQ$Bbk!-1LOh6SdgSBCt>3uuL!Ob zcwA>b7$Q9+x-PmG>A=(_8&(OTQsrD)w>JujABtcfX}Ldv+00{7t#=37oh(p@dlsGa zjnrJPEOZGV&vM6^%dmg5hj?J+W}rmZm-Iz*YYa5NxbF_sT(jmn-Wj^=hv04E^8J$e zFNKBs4>JoVp2hqIPQcj=w|eC8BB z6cDcoq+U&~--BHUw|U=ywg4y_&}(on3WZ!%}`liI#zQmZN>ay z1@kI`23}<1tP=?%<9UM^djs*`_VqaY)=(P7&y_;MY@FJch^GXM#Lz&aB6lWo`oJIA z+HAl0z^4uOS|WV4xE43_De~N}PwwU*v^I^J?Rr4tEA0G-vZHml9I2j zz6skdU^{K|UEiFxXzprV?_L%<2C};w3=OFpJs9~3?rmFlOh~14HfKYcV3XEx+Da(q zyOHT|UuqIU@A4^Fc$uS!YN}MMu7J4K&S>sW^h*ieon<_uUha-&LIX`=eV;vi zm-R4Sn1fya>2Sk@Sa!L?%KxjE+C+f#{fYv(I4XRsS`+1hUPrHAJ73Dvy@BB>eq=azOX3Ux+$trE zvjMza@XNQLwlD}%WNyn0;h|q;+KNvf@fX-JdE$?psgw(R7QxuK9FhFBq}_KL6c#|H zFUyiOJL!jMK_EISm0aMUxE*BA2R0pcF1B0KRKSY&A`Ulqu8AHhb#!;*HFk#CgBo8)<&$K?tF|N72oEy~0F( zU(@C)|36k<`37&1s+~VF)L*y`7C0K`M~JHO{U-l8{GQh9m-(&iRLpmaY>*a{-$LYr zjA*VX{U5ZiTTe_K=vMbaqWVG2pm`?YT0c3)eHLq$sgVz&VqfSdj;@fD_pFwx?HWF; zPX4OzuPD_W*qPuT(U9D;a&hu4TX<{g+Q7+o(UrYiv)Og|ksO`= znL5`4l7mExLdx@`-s>QI8LMZ`4cR?T?;)y2FU`163`(aQ((;Jcp6&ZqK;sS`6Gq0YZ7(V zndKAA+8b#Q%nI&hl=#;jz25MnUu2^CsQz0ZI7wBhE}uOVjq}B|v4Aay@ApiSM9J3` zCb*kM8jQtGUwn@TsWNC*2&0`&3fb$6EH^B zI7LMGY@K925p7a*mG9J;>iH(FRCC(7UvcWpFJLgPaQ9Hd;K=g$xU^~F?D%|@R5I|$ zm{(wWM55w;J&<-#)ND&dtrJm91ZiwvRGV0GvUyftFgGi}2>H2xs3vm&d7ZoPC#Y=l z_(MMOec@Uxo{+>bQRbEbuj9IUqvPftA^iQa%U5sie6CGHKBaTr1nhm}iB`(Q4Z?GK zkgxe%BeQFf+=0ryTywgo8sV@ZQ&~LHM z&AVhXO2(~?)Pr=?&I0QD!ksiUCegW&$JXCO5+X))gU+$!VUXi)yGejM|4YKEU632dY$cQLSU0NzQ3| zF74OO>yQYRrsTuRZSc#~kV?TVM;m^NgU_GFfeUHE)+7%}6I+PA8f4Enrq59DYo;he z&y`gj%jETf`BIKpDl#xGh%EdgViPA^PxGw$!U=^#)=25Lf&8I~##%paUxB(TO;ewy zDmQ^mC%?VU+<0q}K0M$cTo}q$uxY7cx6HynMvV-saeNjlE&Deg7J7Ld<7NReldUy# z3kZU=znle2Fq^8~dCoJHM5-r)%r$o_n#L&|LlXT>5@rv>d}_H!hxpa?FOe0|Ai(S13ZcAYy{~VbTqw(a-8*O^ zb`$r7D_;b)pKud&sue7A%9W-oe^TLkQtII7GYho;n6oZd-CcOqhLlIz8pfGQK65g< zIpNlF5aoT0T8e+ts$`iQ*3#f{i=#he2|r25OE#T#AZe|%ZbuWUv-+T=Q0qw9L*chT zWR$C868rU1E|gyfMtTymis*u1vFEP-@tDX*ZL>eH&0@)R`M<`;%$@la3#jHsD!T~c z71K-H#PPgdIFcF)pI*bJ~7#H62G-$r>glV1;d;)oY8+EI^{=I)&+7M1&8T zM1m)>F?D33`=IL~P}p28srE7U!}O_VGVRerCyxCq;ekCQag7024F)B8KYdVg)lYqB zop@i4B(TMmo515)RBAZ2DgAyaPi}%+o3JNg#Rtvy_uJtUyv7u9ll)hl@E`;j zeZ`cCK8nf$x0PS%(PXFNc&29M{=K>_?&HZsWsRXQqy}B~7O956J8XLTKle#RsF$S` z1GSzgt>1jBSQqV6U!I~?|Fz3n{L+w%Y=QRTpW>@to~r%5e=ZI((fH|oo?!91kL8Kx z=wq@7qW{r!o3Ywc8$`=^zxVZ&7)zFg4-mQ(0OF2T{)DejNveXIZZ$*vO{MpK!&aYV zcr4_g{iL2XloTn+#1l(gOsG$Z6lj(2+%)V#F~iI z;{Gsv!0F~|_J5cBBtNL;3j+xie8jUHUIpJ*@Ou;djEixWk8G%WC@?P$cSD4*Eq*$@ zuO%PENCdkj@Aq$Rhd%-Q4`;p`(-I2KI%rh)OfDYWz?Mc?11Q$$C`3QKe^s()UMR(= z8lFHqyGd>`=JO`Z8}kL!G=t}k6ynRSkgO0(6CwoSEVFtTsCR4yI(PE7!j%lAbGrgk zx4wx%HZG;^0Vx|Aj&D-1wq5V6LT0E&GKRNNP?G7vS;V!&O{bv}HVrfw$&VC2N1RqX zYjj(}RgcF|Wea;I-*Y6+-O!GHKcSJcUAB! zrq41E4NqrZf_~zJcPXUQ6~1YLxPQs6lsWwuoGwJoOb5~*Ap;F3$Q@B##~JxcojlP$ z`}1F=yfE{N9?m_kq@CbnM+m(zPVi8r3X#4Vd}VPA(LTgrm4B+uaSVRJ=Wzhe#+?Wf zmmtVSWrB#1Ghozz>+6*Lb2_SYW;0f|tRTriW4*);f8HmpPM8BjL3cCRcLFeIYqUjPlYn87J4Et^ax-y907dxx{s{ z(Oe%oRNe#JJ*f!<|Kjpq%Z_O7{^BJy%3XuMU<4RNjOBRtVtIAdTAmtlM0Q;6B#1n% z#kYeqHW5i<%XOK{hf>JC z`wi35;{UcC;t80^z{_~fS7BCFSrA7XpxJ1#pO~|Uob@)DJ7HSTL!mvQS=u`SG;^(8 zkDD7ZkP136ee*SD1j?iBqA)apufL@#J}vWOh5b- z{T0EAn8&Fl-FG+wdH3gWY2HA~>B@0Hnx;hLctnhHU=+%PZ#M7n`a3%L==j82l!mqa zt@!yPq#x>YZ>{|&zqOwLYSjMm@#>b8uX=4`W86Or2UUhuzt{P97stCD#%^6bJsSWZ z@WP~9f>vqm^Jkn!%9F6Rm`l#XcTk^Jk~)4=U9AqCkqi0Lt5l!&?d9Ibr!G~;+PY7K z#mQKW3v6AkH(dokN`SqUt*tyn3`PYYppwgv?@v=yCPKk)nfZN&?{TOyF*~$y-rb;= z=x;CYZ*6aA>M;D~{G>{U6W-+e> z)rxp4`>F~_^`ngb`pZM(alMqi7*aI6eSPr z5ar3rz83K;!OPA4nH6dlCUErj)?QmHjIfQfMI>J(i#qR3s6^X}ls`t>9))=;-Ug9ZIBEAqGV3%y&?5z>L8WN;Jp zWv6IScu<1_xBoyDWhE^ty&1E%3k0mXz_4qdhmD!!qg53P$|6+B#tD{Eb~-*`$(X$$ z0QW-oe8@l|xu%>y@~|kEgT|7Q9<{1Fp?VnU&z?SeVIyp+dc-)<@77buZFICX4ChB+o zx^g5=Ic#AQ9i&I?!Rq0LL5S<@8q27d!t6=VwK7<9`EFKU00-Y<)lOwjF^lC&;~V1A zGgvl$e@JznmS8uca9OQFEyF7>r7TjWncrqRQ-nt=BcXYwH)*og`D1Jp(*6q2AvlE)EgtuS2fxy=%@6yoIQTHny-%CuZnlPGIlvEb@yWs_Ve>7~5-aIwnjJzR%|*{_pX53-P9 z61ADl>|u*WqyCOw2F}8`LLApuelTooY|J870=o00H_=mgK%eqzRlBk5XzcRxNmo~P zb~YM11CqdM6_N3&5<20dA@na8oyYGO8s@WcYM0|wf&NP9WfiP#)4C2qJ;oZ4{QLq| zmjkHR_|BA#smeiy%h01)hmEW!7D4~wdawJVc1$WJMpCBtNHiw7-MoX9jV$7^S%wZ# zRJGth&;-}nNu_HqNl+%n$&1nb2|A7nQDWhfvEJh8NVtK`&#ywQiNYo@*59%BY>L1 zt?8?3S#ga2!ve-IS)$VUPjz*<70dk@2)TfOsAJwvIxeb#f!Z6S-OqeCF=mwnx{=&= zlLGf;7U5(~Kg-kNtDKQi7gL})NDwnpr4l0}+yi^Z4g?Opn%fFqO9z{gy^V|G@<_`~ z!32oD;U~xxmA^PupxN#(^Cz`stVSCRw3QHL+1faC$eaKtM?m+;G}8soeYT zY)LOvm@)qv5yg|egs3uU*JL?mQ$n}EgVAO^Q0ypx34+)yJ@uj&ixRMWA@Yvj zmjbW@2V$I(loOoA9r2Y=%GoJr8=}geF__J?D@_+t_rlBU2#I7H6xGPiqY&Za$t+(yzCe6&RP{i$#ybnOI~g>ZFuG)>)}*2se3=}5##Qy%B>Cj0NVJf zTyylJV_~juLXpWaHVPETZ~oK3LKUQ2O{_&2kpbW9j8hn>aVVF>v+s8gqAt<2_uxNz z+@g;WCQea}svbY#3gG4pz5$iBQxA##ri&!}4P^r`axMgIFAdYhq#MMmFwq8Dq`O>O zVoKHYgWwCE3H`Ad$5~w2DODPf%Xmqzn%XM}kl5j4 zfrpd)Fwg1l0)uo}_vj*fJn3d>hL2#3#gzf)5zF8!$+h1t=y!jD;O|HTOxxHP}rLcbTh*^r746h0+WKq)1ZSDQ^ zgz80OwA}EsW4lQVs%#4?5D}5k8KwuV`0<~}DkN#EGa&$uS#bte!+jR%#ixqYS$Mt) zA!_s5pwa;8puP}Kzkn~x?P56C*t1EiIs<{JHeUZnK`9MlXANP~{9)UL zUzcgLL)tlnU5n%(@fw>Vs~sYAHX>i{!NEV`YW zwPUu_Je$`4C~Yp>ib21+FB2lxW-O~hFHT?m&S&wu%}B%|F$#|R&ooREg&q)pvQO%) z8;vcXG-Le9xsiPQDU=hoo>Un4GD}4-lQw|N(0uB>)9j=V-RuS9?hKYg@nB!R#s?<7 zw_~yTAvGkrRZIZxoa$FcrY?dZ3D$0~C)_}kce_QD6XVsMJ8&vZ4p52WX?ZJQPni&j z7hL->TUsf5XlO!GFcpYBD=%Zok<}FqMyurWeWnEFBY&-v^T-$N$EJDts8>DX@y^uo zn{*9y+LfHt(9-!9mK^bKD4GWx+wCt;sD=HQyu)!iP&wHxEq>DprI)fa9Pl}E1HYh^2|CLll;17&d>E6WXg#^rVi#5zF`z~IYEMrWlf#>1DN4EPA^aeDtoU($g86uN z$UEUEn?(YUc~ zH?|u$Nnx{a^3be9Lp4*=L`<*SZ(g^$O+B7Uww$h{jY2nl6_g z;@92cvfGFRE3n4Ar$!Rvh^#x%9$REK>nq5RG7>JeZKJNM$P~r}2T2svlQ1VXdQ*lv z3TxtnJ*yOs2-4Vl=ImEob8CvKKk`neWD*v-Ln{W+FwZ1O$LtusEBa#bFhg~)@gyC% zSCxDkn|9?(GDAqUhf*=(jjm?MsD`8To8Zz~Em;@P07%WCm8CS6Lr7Q!JBVc!{13Jb zi?SYx3wI<9M{QF_HGB@A=Ha*G9enuQ0cGmMt=*^=a9nX1}@2nFb*R7u!cN zdrIxVS8&R13x0rzJm-A(1JuIwFp@OKG481HPEo{P_xSa@&SDUpVLf5|X4N1K{%H5W zZdq_fGZ#(+Jzu(iiTAYP;y35H?~%!75jY0mFJiVqq{X^FlSA$WuM(H&m(bt9D%xhh z!cPBQjb_;){l5_=U$QB6p$Qn4$4!j*hnhM!G%0jw>R0!zgpkb?vT;QL6KjaAv(6pP zkv2$L8P1Pb2Z39Z&(2wmzjZu0{&wIkEZvG>!d1PIxz$dMJ4@ayKCx20aPYvL|0v-E z&=dq*YEp8+=IbeA^8H?y#$+lY0hDvMHbAaPu$bgO#yo&s#u2)tE}CyexKXd>E-mL| z`|-=$UTxQGlKPQhwJbj5xickpMdA04Op!BYJ{H|*RBWl5yvhPo+VUzasC#)ntu}8r z&1E3FeYKiZTy>7^#i||*n>zg8^;{^~GdI2($stuGP-c@$>q<@Ofn|q z0J6kmi4J^eElq#w5Q7{A@8>y%~A+41pPANh1btg8b$L+850v1=~*{dr!h^tr^42ORBSX0gIUoh zQ(AZia49xEjP%EVFEWAA?Zf6{g(wZ{qLTuXcA?bpaOdY__SG zHqyqsq~zMn3Y2HV$|g$w9g!fLIcSs1_mz2&bA(8`20FkEfW7}W%hJaEk1p^(7kz1_ zFp|F9`Sxrh;d!*_VQ@!sj=NatJuwe+dHH4yL{)#j7!x}G#CcP$%0|NTbUN%h9_xUO ze29kVXH?a&SQf;&2Bj>km;RC!H*_b*c!z8g=m2*a;Geh zf1J$G_}(ry-wSJm3ivY5Jwa@|lA<=W*`Y?E;2S>&9LMOdZwRN^M&ZTiKVzTvP=)mv&LgI9A znO5iR$r@%V09!*(u{!G$%KDn5yNdNn>G4joPvi>t1OLaAJU}$wf5omRU%G|(DG$VA z=Ar;hOU!qU$6(Nbj8y0}q@ffGbik`*RzI?-(osa~hyMLEbVv=oTs0Ul?l=W)Ht-xi z1bfllR`Dc;LR#lgZ061;x{~hEW)BKW_tryxycW;ucu1E?i}op4Q0Rqc6**KbNq{FB zl#c(HNDYkXeoAY_^5nVKu+~s1L%H>Fy2QH>K0V!bTD=Mi(<=#`{Bzk0I|Fvu@yc|( z5f`650i)h`~XBCC+|fro7CYYQedB zVG=mpHkr84HqQhF`#-yCo(SCX4(cdAc7>^WA0-Geh>rK#2e$$F7*nXIYF+AR_xf|Y z1i-`csFf1Q%gm86_%u!ra0j4k%b6H3Za0hS+ zt-qG0iOwGK!oj}#EzWG6y~$C3)X}keuQ0wrJG$;Ta;?;cNdmfEhk1hlP2Kz?K~%p|qC$8TbO5EjuGoTB4SSG%WGv1^w3?{H zHPV^c1uCi)exCJ_7~n3(`{$H_1fFbKo|*=Iu|zq-JOOaC*cGe!-+4hpVUzE}&-fn6 zwzqHgDJ={-+2eN4pp8hl>%EW~Y&pNRg~2k$JnC($-BZA@=^smQYwnev(pMQbn+ET$ zS20Hs7=3#0JoOA>v-qu#tOChq+dm1b#{J1?pLP9ReP^2H$94FuS5g|~*&A|b^x?r} zssg=V?EoW;#m34#Q|cAgkl?%0R?$EhzlAv)XE$%hxPzYFKBoY1-lMjuxew zmYLZW3AZfOY3|@~cV3DA|13bEF=J@v?rd-u5d%3yjo*}xx4|OOCs}jd#O{HLidK^tGeihlzF`i$j#JY^d zjyU#br!$%*My?LekzF7itD+he8?FJ`DtL=M>vi+9`ODw!u;Mpvb=E#Vw79SoPkis( zZ6vSz*v08))!fYbeJ@*e{f4E%P_w{5We&a3L(A-5=eflucCGVI-!6o0Z(_#1-|YNR zYXp#dPNowPXh4?j`89s%KLgJJ^O|b%fe}^9C!LQlkuc`~(+?spEfrSD|NYYbYns8o zvN+l>45Z2?hq6!nAodF^p%n7fAszsA^lTean&hvDAkQ zYq`s=d$f^B@gYdcSyNR2M^9=Y)w7*RTvV#-E5#C?CXLJ}Z4g`}XXFKa>0xxFJvsD` zc0@DQ3J}yPmMIuRR!+K~@35Xnpt|v7#|JfUF}>NDTRL7jkE7~8a0!>rn~h_B&kyJ{ z;{5v_?pxKa#+8bXk(;utssUeSC&|setX=Oby9DP=r4dE0)Mp#bYj+i#Z*~LL4H2WZ#vjwN0_+avu?*TOh*c3}l8=kB!*)dHIzmfzA`fQ6 zPGo(}HfOC8^;P8kK_C4Nmo3vlM*JI)IBkuc^gDzcwJ(lsemCfbO3ECS-{!BJ=%zQW zm#*^z{AydJT(G)&?$0aUd$4(z1y)k@^ErUS*9Q2p ze<@jh+T8{mWN3p|i2u+PHGW01!JN0gof$-(2{SBsS-$d4)nvUD#>M5T{jFWV9B}7o zeB>a-if&a^WnIQ4@}HjX!3iOcpI2!iGlRdE`=6)}_EUbAkGLGKqOzza# zZRH+IDH$CB8mv7GG6;Aep4KuQP$Ebr2|uPVUE6u+?5kvIgx^zqFJ_eOWeL)uO}B<( zNUdl@TFb`V8swq(kgWZa9Ff(%WBS`!r8dJ3G#P2ofC48@?~h7RAaN1HIn`eNWjAT# z%-a&BRXC#GhPGRMoezTc9m~*57TQn}*O^dF(_tZVebF>ILO%)NTWc?@ngAaPPIP;D z9l7P+Xl6^K>a~HcyCzzHJc6IQ3?_mh;pdwaQxc>R3N3yR?>VAtV6j&_4>Bk&?O$?X zIDFW`wVc(J#P}_Ay~5*KLG6!0soYU`x4asnLmvoFDu`RP$(7;el(65Qnsy}xD+J=W zsD>m0+NEYtVe?c*{3-*)|dD<%d;%xD_$1ouj=RYqJ4Ceq)T4}slmKKfZ(kok!sod0Y*l3H7D!+f1p~6N*XtQS{tzcroVC<=A zvoO&K@=RZ!5G1YeExQgUB_g`GJe#`j@e)dS8@>X8@JV73B9gxKzlIzHaP7>`XZ%dE zR*R6~PX!wu!K=fQdCvBcM~k2mQv)Ux@MbUx2^m)h@qY1zQ$S#2eO{O#PsvgFR)Idp zj+5LW_2lXC>3IqWQ4~3tZ8v?&D1dA!TUy%d;p2m4h2BA08p596JjIEJkADfmh}dUH zB1*ficx-k3T2n$KRSb9oklBwYN=0TTg?0hZG=c;D1;NJLreh)WAgP=rNJ0{lv#X03 z|9Z)|+v^EfA}vp1c=dd#A41N zhQ-s?7LFl|O=!M6NlJ%l_p%KyJsOO&q>j^x1td?O)bM+7UDlT(+*K*)FzNL=ohQzx zsM$Pi%FJ7`{~`Y=L+ZOLSB#igv1x>mLRDyTRQE7@`CW&}K#-5k(&p+tE)u$L!W~5c zw|=9`BI)KR9^OUxd{%gjeD4T}ighKfZ{q!b$I=|{W7tCB?G2z|MK|lR(HVFNQj!=Nl3wq9 zV}BS;#rC{=`R%I$uVT@<`wR^lF)@)|5Z($zEHq>Y&`f59zcWzmuhL3AUv=7Ua=xFt zfooThwGV%%x2;*gwASccrJ<0P%-kr+v}VT+dM}~P!bT`hJkKv+Ohq*vDE<2a$~fnB zUK22^qEGyCqxuzeKotIhx+U6J2~N^NHku_iK86MHx~-b@*y{c0T-9IqU&2S+&GH^u z&@$k4A&jwSsKU1ND@F*|-If_P&5csqd{pbSq!gWNqsaov-%y5g6^NAyS%2JtQ2%mP>^V3RQCq<2X>^!2>k9Q zBEXz(93%EleJ&XGAVm?kiQ#11n_^hfjAvX&u5tCHbu-7!PT!HcdzQ6cCz_-O&s@33S$Yhi0pAzC9Ly^eZUN|UBB(?qawlYrF+ z9jt1oVZQHq8=VbGV<3^_a z!%8j@QKhu9vAjG6$}(U;R$Yvfk^KkVMO$AV3)K&1$za?qE3lSA%L}C?8l#9J_Sfpp z&gN1&y$NQgAyk+|Xk%?{M0^hCvGDfR;;*H({?z3>RUr!#00j?SsHxIS0{uV;6WSsp zFd3W!<0VOby21I}t0>hLQE^Peq-Yl^1)qSD6gwwxVPTP9)kebM!4W~y(_K?j(Xe8| z+CKkIeu&H2SYOXfZOK&aM_V)Q;Attz1v~FhuB(u05infK%icJ@V`5|kPP|2ic%4C% zs89RsO&5J)9ztX`04JB;b428q zY_qUoSjk^3%H89Y%w*&|dF1vspHRbx5>@=+PbJmO>^fSrTn(Xk&arM<3JRQ>0QL%8 zDV$8G4DsxQ(>C`m1VnBIf&AlR8n81u1Tk;G$juiG(}Q`?k>NWl+&_%DMtKCrvJoZ( zgM^LENts+)5eJgYf3-LaFEiS{rkehQ84r(wj+Y)3%NTN#8xF(6Wr>Gf34Gx3di2th z9-&7wQu_RP6I&;|8Pw+I=NE46sbh$PVC3fFqM*>8B8F#Pr-diBqO<7$1~)|V)8E^7#OCe&JocYOdy~+2+mA+!56BcV zxKXls@fygLnpCh}`LBR0k{bP-S9_^PUBg&^Rjxolay_KbQu59Pa&{1JEVW8LsYC*G z9(9GK0aD~P6ee0v_HqWN_hC!b^eqJEd57&=Lu+|#4aPYBb(`BXTX5=;r7S0Pej!%M z1Obwm1ZIZaqKKuNDwE$rIZisIt=sJ@y9x{!ex{FE2ZkwE<{bU`eeKzU8-SdP*Y zI~WjVYfXSdE00BAaK3?xk~?tRreyG9w`=Kph-#*cxMS3=ujkQp!E2* zx@4F4lqbcWVbk*PL|D(RQPWcGay<|(An>iq20NQvr9`$e1VUc4LHb7ll``=+W!}9t zPKkNVq|IVT`jCu<9+tFK8ss!cP3+CDX8RIj3!^nzdK;s}Zhal`$0b?JoOHg|1D5o> zL8vtn!u3sHeLk`=SflS1P8l)jsAO!w35xG&q-Ya-PcHuN1sTG2MHiUZauEpE#tXR0 z=Uc_PHa+ew__dk~fhD#VZ23ckUre5E73&0XKs@N|9n^TFK%J>o)R??d)~q-X(f4%gnQKuW5_S)+ z4}G6L#`L1~YXu2!bJC>uoRi@P!1$vA6CwP_$f5PXSU1xbJ!AV&J(u}Il*h@TqxQSP zDpN8l`ZNvxNy#parr{olSk$n!l{^g%+3RL{L4NC2vW2LIT8bNiRM}2K)BGfg%Kuqy5e$zC<)jY&2AP zw5b+nQO&y~Ni?LirywHu5D=YelA1Nh{TGQ)`ub9n({i#VGr57+<@)z$vhhPc<*4#D z8rLJq6fv`(rqVFvZ3XUF?FUs=(pz%G9ANZY_v1i3v;dY|TK-QhO!G_^%k>Pka%)p{ z+*O$FY&|Yt>Xz!#;Ehk05_F_93AEkQfpA_SNY!4&DQIWlXCZ?PQokJMU6A?{NjyCx zIYaiGBv7oUu6h%*Fsgx)va%4xy{_H-H%Kl9{_qZ#wpc6{w`h}n5 zxn!NlS!jJ6o7;(ST~v1a6heI?eHA~M8EXuHiQrRExV3#C-ZP)?&M$`OEuL`uZR8%` zqcs}qB=8a;O`IaLQ`MS_dp`R3GTMsDbf3&LDm+g)?kC#EhNojcA9Mv}iFqnr)nvkb z0JC5>AQ4Ki0ZaulQ_pR56)> zB7~jHrB-I~y{`w|$dLRvB62|AN}=JOkkxF^G=L(UiS03g()tR##+y`}ZBu8f_{dQl zO#~exe1CA`j?J{-Atpg+qVl(4nb zgcogR+lmOcDYyHX`}iDpL2TQ-9Ldt*Gn5a7g%_*PNslj*Vt2CkC#9I&;I5UP(jv`o z<-?trBkdBW;M(rT{O!xK0iFJ7%t_QL8if<|!e{zaT7HZ=$4E_wQ+cE5zz-GqUN#gu zbE2Xv@{FpMlXNgCuR3Lhd5Rq)!^zbXIFdlgN)uMiE@LD$xa993GJ9G?3SLQ1lW{SSkD zny>rM+s z1EV}>3HLU#wJnsRD)a)upLV{MwR0sS3E-HgfL*m>Hhh$AQ%`pMp^1{zwH2BQxVF2F z)j0_sxG#HS|EdXCi&Bi6*u~PDBWFslP!i88TbE;F!%6L`6nug>Y9xGsa|8_+$&;kh zoD9^3uKRhJ<4W9X8z$moXQ)!!Zho~#NX=Cna2;7ouP$#&1(aq*=W3xB$tq`*#-qNs znpL5?I!U(uTXvEulKp4b%@+JtNHj)Eo=A@}2EX+=xyDYn0P_TuAcT# z_7v>D;H7{lj+Tt(z(SwFy0ggK?q|vpu#{BtY9{NMo#Th)xKAD(lNB8ssyuPXD35;( ziC=HC194(>`y^DgdCbNRs3!bcY9e*iSpZ^PZ&dbbqupoDjCB=t=8G5bSdBZjOJWP& zfeCHt?sdQl}tR*ikSEGbTj$^*r)zBa=`3rW5GT2J} z!jg(SYamP)$~9~vJzk|gao#FdEyW1+svLkk)3uIs6r4%@=j-7!HLV*)EUF8{K9a|k z;>W`Rrq>Q6|4|4!Nevw`&{QS~drRF+n@MYp&OOOi5xF%ICP}9qD{$CCcgXG$#%+y6{E>=>JU6;8<)BYPz0pNf^DS z1ejaQ_v@?|JA5tjY4Rajk-accNxfk^BC&6k1nk=7n6^1fZ3U5`hmIA5I`W=UsYFCn zZ~3t+dD`5h7^Jk?ZS^G#=JhZksQgCMh7o*|N2c9T9U%8+LPK_o$l(CBP^CF z1LPRCWPnGRar4zklJ$`X<~u>kz?AYDIw_OH=LG4Y>9i4&?l(T%$||idsxjnCc>5Rf zKhFLw5}LjY_{QLBK4hv1B0y}@K`R*L4fpf5o!?j+yNwU%sYF}QgM5XfWnwuHVCh)n zY^>4QALY+fMsi;Og=USwhRW6%g#nD6U4`=7-$Fy{?lRDMjnKuOLcUT2JeGuMcLG@F zD>&n2M;GkT)efS7q#$n%DHyR|O(EFiOVU)732N&(dBT%Zc9k3=jphzd-Qr(b=e`Er z8J91tBGcS)ma_X%+-K9Aamk%TFvojXpwu7RQQ9_NaCy0Q!yRXtm;^#4ZYx`Ovf|MaV1>EvR{57k*#`cKN~P) zUuH-T2|JXV;oP-UgRbuRj`Qy_ry-L6TE}!=&Ov75mvemydzT*Wu5`=r-Djig)DOr7 ze6FXBhb1>`pjDLoMxO~m7D1!2S{#t`9w~9$FnCwT93RE&-Uwt;i4V`h+|NB(e=XBS zBSpTI=povn>!1}VJTWb>Q0-}8U3AMADLW)Q7Cv%+o$iK=l6gx4$uHx!|7^;*OZN&3 z3E}XQ=T}TAz|7a1MGh;L_&N|UmqKgr^-?CE`h?m-A?|0n z`IpPw4K{|js2A2_r8J%%n^0N%o=B}xXanXbzj7@Z2bz}l-H6l1h-w)wUW31C^08VM zA>nSBtFo7$&gpt!ICvnMLEbk#e`Px?dt+l4492nGn;AKrA?R;?@Mrno9gbop4d)S0 zJpINbuQ@E(~02u*qcAP2E2cj<4cY(MwBB4PaLXdFPYy$rRIQ9tBa zAj1_!QZlRltwA_==s*?Sm^b>~>vGXpqH3z@m5Q5}mDfbkEl#7HhcZNOqX^wBZWWvi zKG(Cv`E3=g`*9=|2S$PNT=S9M^i^V-Z=~M-1`FKi@HL?%;0ti{xf-O%r8a{wQM1c0 zh4C;bCgpn}$4i93B2jIPi(5-wiELXr##PRt!lUY!-QGGHpfB)RCY_DTvo+LK@Pw}^hETtn&-Y?_g3(+?EbAPch zf<1MHLGYPwvQ$F0wA*;Wo|PM!q%6ir>cHbe+}qaJe4}PIloFzoB)*~*JzqeD4&nEw zSmX-&y!R>)1cnQMcz!EHG0dMqMWYvhkq3{eQ7!oJA1Y@gHTId2f@XnTYJ}rElxPAb z`*(yW0t!0@%w1(vgj07o{07Yo4K)D+(FnR|5LoIr@@|8TqKF_~Q_?qJuPCyKVd6cw zrs`-M`iuX4>Dc(9{4LCZV(EWjlG)jGA2eEj2!NSW)TllXo#^luD<*2klCAYlOLtu)&Tj6cU)DH#Wr15fL0&xUV!IR z-4`r}EVfUQK13smh3xY|CJ)Q!4OHPG(V)*;V7})9OgL~KIE&HRNRdL@u zP^Cq%FAiK_7HiZ9v@`5)h-By|=>N;<92|xYQ&-EBsJafn6$xT@XrxbFC?Z!1;7lOp zKOD^^{pmz9&!;w0%N?Fgv+mkenEVbdEk$sT*XnTY(NhX02IKW@5ilPwD>wvDK;!(; zSf=aFfm-yhbu2$`)xjSH0-u3C3;c3Q@@jCB1Bq%1N+W0XX{(}2ADLHCJViR}G>22X zBe!6zB1?1OUdHb`Bvs9XHX1RK92OCHg72rS8v7y9({Ket-qR4?gQ8sVF&<`qH9za5 zBD)s9}_*nHUn$XeSvSV@e z%Nc6gGea^<;%Ew~Q&-;-XSfUDD#u7hbo>fK4T<@xLuqb85R@UIJmJ4bxT0iwP*RO2 z>EKHN&P0Kx^48eNE+UbL2s{6*9+VW5K`9m>A!i7A4?l9=(&K>WmRM|rK#Z?W zfk)4!OgpyO7D26EEn}LQznf(!&=ypP-$P=n?Y;Ta-*TMl2aAh!&Fc8&-?q@npgQ&4 z$69&^7{YBqm9dX$b(J4b!)pT3D{Ym*DZ;v zOta*iz-Pcxy=1%TLbajf8LiLYnxt;o?6YrD6bh>Szygw5kE-wrqw$=@QvBD!NXl`sA=v^7#tsYuf)) zGiC?>S3u;#llO8?UOJTuVhoAfT=%gJr8bUUm|*Zk^Qa_InnHx7p;i{fKFN$#7u3z3%&YKe&!)ZE!8OB3Fzmnyd^ zy1M$2o9(cgB&G1^ZRt%v!Q<^HQD~w0IeHohkJ}wbO$#Ef!PrQEY#F~ z*Njazgf&eW@;bg^?6$f4+drQDxa4Mvc9cW|U{J&`fL%|Ru5ELI zmkiN?e*Ik{ZH+8_u41~PNXu0Do=gO-ddMpQ3uZ66mRS$7@ByDL%W}zugiQ%b3NmMt zc@fpq%@ny<>pTeiZ52)68~~Oc>cSN$6G2#v`V9`tbX0TdkzvOO6)sg3<%+QN{$z51 z)6!H`$h+fF^P-nQ{O)_(3(L;U2+*=9x|;TAGKmU$QW73*Pq2~t_cnat757CcW=$N3 z$0K(Aof;s_b}z#`t&5x(PyMIZ%V8x9BOpsU0NU#$^V`hyaTi0})WLU=j?p%T3bVL0 zmRt!d&@O&%3A>EY6Eg-Xyc%uW9h&?!{BNI^=J5*X8d%@;aJc2fN|HdXKC&zYZ6rSr z*}_ao?~JuPhctbPWD8%de9gR*KHK8u#C?~&Ogw^4LUN(si5jkNAylZ6#nARrR$;<` z!;3ZR1xjifw8OUGVl>MVO4kd9YV1rZycT>;rEi#Ow;XyOIM*(pS~%)Wt%%6eGa-;P z66v74h;U;{Lw$F)CzhlV_i~NOq9_cO+<-JzD|fcH8DU`a8evZ{q0?~@Nl5!_3usos zt3FROoMPheUsm_t4(d^lruFjV|Aa(KEtr^A}`N5N7Np96!espGU!kdP{-c2Cs0+FiEV><-%Z zQqW!2eJZ%a4nv_mnok5N5}Tnt_mk{LS&{zYvz9!S#G@MjejZeO8N! zYHDcJ{x5`1PnTU)(yreltR5ib0r{m(Yq7AiW|vE{W}cMqWB9)sqRoYPGtL~Vokr0R#UU+2p%-U@2izK9)UsZi^*TGLHGUr9lXukXtf%8ODL%* z;+X#8t|lWx+c^F6>gr0b$96(2V6pDg`Krq%*w8Dxgsl@gb~1B)brm^Dw$$P|;qLY& zrth{zv_#x#tHsIEvNKh3_+(z@`0?pUGkbiy_dS!~)l7g-^^8RXfTDhd8K3w;8Dz?s+)ga0iXXL7xA z5V40f;mH7fZf0e zgy10MPG6t3vo`tfO4zE(;cU35n$yqwBT=8k8Vh4l*=&$g(_7da=@c&r(wY^S5#-`f z$Cp)o3z2B|8M9r4$t7Qp???ZH2fy&`_+;|S(|QDyCbzcLumx3c$wgrs7@Yph{X0UxKUy8L0B(&5 zf5IIB^h%I|9R;1KahJrh^j`3}StX^en`R?X-R2`h84yitMzTaLr3&e}(A9GCj4S~t zI|q}a#F)v5S!{M7X$A$t2;oiiMU)&Xf@#Q?1xHAmVFt0I+hP59Bxsk{xS*9yh(`Jm zjYNo5Z5BoW+!cz$irK3awSy6L+NE)EooosX{jkf4aZVz%%aWm}SFJ)T)D4cm@)YoT z!}_Kex2;b~E%pTmn>d0=j03hhn-(sxDD@Vz@>fL4G*n)AH?>E?T|1xAEE_CBI-vWo zicUqf!^@BaN^U3;pyqkQDj(~K6SlBf#4$1Q0LQ(1}Zp)L3hsmoA#0+)p= zxEXHLweucQ+_d)L6Z4!2!{}CMzl6jrPc(aSn5L^OwuAGN-=_1(9Y2F8U{R-N;{H{? zYc|Dz9_v`uH%#ux;m9hnKalOVB>|z{2r{I0qXa8i^KmJ1u1b4@t`s4AlS!wLCpNDm zJuM|DUp6RADB=#IsHi@a7Y3R|-T?y8Yf8IV7UoT~Wav!hYT1;i=gVp)bf9Ymp?kf> zg3C>&fY}fxpkT4+wJ_P#RSmzLZW@y=ILkKcgKgUPh0iS2U!y)K>6cXewWj#3@{!)u zxqG)*z(SwQ2jSy31s>jj>}gD_dV+6!DB{`H*(l@J-r@pcaI<&nAsqJC%b+oJfsw(hrf4t=W1QVtT zJ$Nx&4Uvua(jOM0%Pd8I*EAg!gRHv!S#x5p>8H9!#pq9~X{Z`^v@{a){LF-A%Rh74 zQCng_ndEj|LXU8}k*nP%V90S`6{h`8-0Zvg4!zlu^?q7=}dW*#02Q`n~4%1G*xR951a3a{G=z1)oB-$(BO;o+2x!vrz%dh}$BIJZRB03Fu(;Kz+%8jOV zx(D?4%}hGuPhmAG$#h0|ny|GR$w9VHRLncIR!LNu^D2-xl6-h_TrF->#pn`sKmWpl zBnnjDjXk%sZU))3*N>6+!6?UrThD`ME0T7w-YhG(S+3ZpjBiS-~k} z!ZkXVg$x>COn4aao7ZSXak7fC8Ym+DgUL(Od;&KPzgc;?)pV>7&&JzkIUHbA#VdR> z0!zs>@qE@pF({NDGqpkE==nrOnDnq7*19rGCF!?NFNrsNw;ncljvg7)t@yYe=4j|W zXGMcv=R43UxDK=9cRe173=S54SUZ@NmH|i?hlG1|B*;=88cDx?$yT9K3t)NWv*57s z0dOLc0G<3ricQbaYFSruR1wN{AL2RA6V+1trmn+htqdKaz>C$BA zJPg!u)uZ(+_fD<9RgS>yQ8jcQD#AH1ac4VtTMD5>l3FOkI9V*vq4~(F6|dTtZ2D!F ze$oc`iZg?TNkvppQ%#=8(u>9(8j>L&$E|~ZRSqwU&A>R&gTutDdOwTip%#zXE*M>5 z2I9NKrcYOFiI!Wf=hA=$MwbDQHlkG787aL2lQm`BawW`j%zvU)o3Ili@J?u{ewC;K zArn_QxC}`r!#VG+4NZ@#!ET8==*?1!@0gW3p_N2{->~eNt7gsn#5P(th=lD;H9>VK zDFW&BI1Ga1YQIqHZ+6%v|9=)>z~5RyYDb)-$sCwRD=lz>d8a}<89DJ->AVYlwkk7D zS!sJvCmiln>K5&}h@Llly~Xf#D(W?i@~ETQ#mlai@7-`iy~|lw?WgHREvEhZBH0pt zn(l}45kU+&JHJITGO~1*Vc*c8T$p3vntz*Tv4BhRr9qmi4+3uVOsb%4)F@PsNyQJW zUZ**}u-q8ohNai&IXKx#kg0d4nO8AWc3v|BR-N2rH+>M=5n@Vg8LLEc)%wwxE{`zA zF^Lzo=PZdNfSj@az9d=KN_xN9=c$OxGPDT+qq-15p@^u`)TD4Q3XNW0d9Bl@a+^O~ z_5;{_MToUS=?}Z|n@smviLNax5(<3!n3>=|w?o?=WQW_E8e|K^EXVU~0Lb;>Qex_% z(7mHnY8tfj09?~~eHo=rv$R+~XyUZYY?dY7`k1(cMX{7T4X6ztL2mOE=r&f`R!VfM z#;ndqz0GbT3oKAfr0CH(Odj7zzZav2Yxv!_;8$l>o6e-`d30$#yl@C|W;xQ)< zqaH@_Fv^sU2zl^_E=*JL0HgN4 z{^yKel+C;tBi|)r`=lpbqLB$9#6tV#+LPMMC}kx*yD7D&XwZY2kf-2=qLSM};0&QL z8JrLwX!s>Ts_mfY6(s(KR?L>ywj;V3-g$WeSo|5Tu!Z%C|BG=7@`ceAN z1Kz>K5#b3AKuZFhGK_;xyQ*)uqommO=Z$vda)z`^Pv7ipdz5;_1uUpFl1RM`=>-UD z$4FEJtuw60x*~BxAHf5*R?4U)XS-A0@yJn;@c3=?FpmsfFGPTIG7bIV9gbH}%I>YKOFujXUzsWwDxHl!n#_ zUo;1lW#7Zuf`Z&D4Zh(l%_nJ zw~Mt9S2pQV5b{8VL8lN%$`xao4oROj3G6pHFPX2e-INILwDS($lUqvs;Z!uCBwWa{ zzfh@)rz~sw#Kse{3qEU)gSzG@8Q!Rm^bwxV*lx&aD^YWEU*}4M!(9Tzc7W}LAsIDfz`~{Q9Pms+t2d@-YWo6>uAbtbTZ_~%kB72`0)yAc>++# zQ$dkJ7JU_-9bwl%7S92IQ5Z^;{N zWdSfpdn~`cAW73Kkp2W#5&wCF9ut%55)J z?5@ZJPC!~2peHv`l#Q5Ca+0ZU*0nUrWvKh0a%gjxB_K*+O#fb~Vt}s4T5y8UfCmXj zBQZGw$7R=IJLghBcknCC-zHXg)QXEPY>gC(XbxdXiJ>W~n|Iu4W^Ey%KL`ic`qd}< zWcZg7SqgaRBKI9%6HXzHc=NnQ|_-aTw8S!U9^9y3d4S|95`910+fT(M zDqJ6>t6vpG84pUrX?k(>5l3Y-Pd-5L5Mk`4czdD7!O(bV!_%qsNxmyCb4iL9QE$Cf z%}v*(xR4y zCMLoMg-#lwpPbV{u%PssN5>Ney%!b*t{}O7#q$ZMmI|`^~4UWLNCa08; zDq3@d+h242j+rk9rvYz3v4#qpOuDjBL!4i# z87WRykrg-)HSSIXqd3MOTE08Un*}!HQv8?W+E`^R{6DEb(JCQZV!mw|# z+!3$rh)bPuVSQa|aob$T5e{L5EMuEgBlQZI%94rU}`8 z9}=-FaS_)JTWPE$Ei~~nLy=Qb;tk6K3ELBwGcwuT34wqXZ%C(+w?| zq7p)CHq%u|X)l#2oI*Jz5TuH0dQA$CZpo#if|U}FHsO#2_^orzEQ?+_mh#)M@kfB@ z!~|f)KjtM6WTbGDCvBZ8_H^7P2;YZLskxW=aEvi4+{p3Bo=?c7`H_?ogg+s|`p;#Q z)&f_^R8ikrqH8HN@-0LM%TV^t{kCsT}Jr^??aL5LL> zpku~w5UYI%`TXn>W%}~9XAfHNA*51{I9=%X5D9elAVL^fwh9WN>^-PcXXfc*3mIjE z$x>l4H+%LVRxCxp>i38Z-=iWsMkoO3Yx~Y-KiUOHm2hZT8YC#7Tt`&@+OTnSL#zLg z=Uv16R5HZ+m$8*J8(|}2K7>ePGf~?~kbxD>#42cRm14c87z>H1KcV=ASF<}zy4Xgl z^d@q9C7rn@E;dFlE}K-Obdzr7nnC#(h0(~=(qh~cop?y0@~wxS9%86%OE96-hYT04 zJD%Cspm<+8?-yy}nz12{H%YP)pDm3slNYAT&?AN4ps;G%)I!VBkzAUxgJi!!qNG+P z)Y?LgERd3Tpi_Sn3pQJ4ae@$ySV(+2lFAof5mvr7|1i^)7XBDz>ncv20*_MJB z@)g4OkJf|{N~MZp>mf3YhZLd+rH2@5+Y)T(FrPS#-ip#1rhLDI=#2s8I1$G=lg^GY z^A~173p6g<2DPD>6C2#C?I6}~kmfO@U!|p#odNj59J)0Z>VQo{dH9Q6q|^VHelr+r zp`veT7Ws5XC0(1oUpaILH9;uQnA92ch^d=_lEUvNQrD|kJjRl&U%n!ludVD-C;O2q zCLK90WTj0f80nuqh$Yi$KrM@?!;q|nCZV>Y>AOcnUM5Y<7f5T3fZ8&ddSX>5k9ZBiF5QrXUD)f?h9!3CR%wa?+#RkeAN*wE1;UW^(38f*U8#jO?m+PMZ zX(c53p^golFk?g1eJI8ZQID~pdj(#7N^~7YEF^)Gh+$4K)nMW< zFW=-Q)7x#>h!FTMd*Ce6Oi6UEDIm}0281nsiLv4ytXGabK}QOq2!sxLYM%+zf(Mqy zijujB#QB8W|6;mB&!3PD75OzGHVeUuLWs29Pq3M=ah*`M8tHqZ`TYpX7DbGtxY!X$ zWTqun8%gXFLMk4ajbno*YMUEQ97m`eZCocrrg1h|XUx#v)ATbFH}e(Lgu-)FacOMG zb{^9ah1FwN2#rQBznds)2}G*#FSnO{Iu~f^OPE^&oi`}cuSB}Kea>{d&e%XYsv;Q# zA*}e16^fWFNJli1U!y3_H;Q?xNBGsg+jJ^nsa@S%sI$*@Lob3^TPN7A%3HL?^v-F;1A_z{DA41XFR= zhfo>HLmTPMT3DSH3Rl(u01yC4L_t)n>PWq512N;1y=-74R;x3RjWA%uEd(XwNxIn% z0t4wSSW%GZ{2*p|Y}oiCK&)lKihK+MqE2OQGZqUe-6$9wTmG|-5GKqJeF*u_xv|y7 zz*Z)+HKIk1@m|r`=+sPt+9wL@`4&=+l0BsmiRxt?-$HD#AWAnB8EJ;Km6-=IL<|Fm zL>)B~Cvx2HN2+wh#_4a#7OOZPPn7%u(%43VvBa9MAR7`L8+fGr2AP?M zX)kRHQTYlAxruT^5ush2SEOH5pI~X2O9P#M02}Amb33S=kQa>{jQC+VdoiIzXA%_& zZ-prOP9`-oYa9KjDNR$tkkWVz>V@=}b+u&+ij(DXngHpFoB%eP{rCOegdSy@?eEZb-U$T|{h zUHpg2gv9WNoMe!!KX8e`tp=mq5W(iRVIv%v6Clz25=BH=tRs5mn2LoY;PO#o3yFFN zdU6QehY$;PLM)^R94SIte?lYQLPozVeHr8ssY9%Z3-X`FmLl!9A>>lts|ay`kk%8) z^%QqBkfm8R6jk}*nAf}4e4Iz> zyg~XN6g|weOMItHDBi==Prk|;w*<)$A?8_p7A5IWKAvj~-6a*PvMa%UI2ge|v@Ef; z(u9T=#KvQ+D4wqTSasLhmZ; zlHnh;eAHALB>KrnUm6TS4kQ6{*su<_)8%qFA>#A5wzT??jo_d&46$xhm7l02L!x(! zk^arf@=<%X)*|Q*3CV|$$Skg`3T9NSqK6e9N18ZN$7#Kd{R!2UIt7!#D0mgSkFs_` zWXYdUj$@52g^9~40-mdP`Z3o?*Cvlt*f z*k@U&IlGT#5bZ?>2XutO0D*|}K3$w@B*BSy|bN;wM)x@93jj)#0cAse!m zL)K1c#h*~6mJb*THWq=6ldEfDZ=pPu+zW0{I zoU!oe^n-bNu+P$~Enk#rTNrC_=)Qt{Jk}HAbhzr8j?CZoiUT`O9(Y@fCn?4g+t}P7 zzen-8*x}IaD=Xuc9f685skC)VbQFXokoE&J9K>$mQzCTUp!i+_Hyvy5Wa4t`94Z-z zsRHeE`DLn%l;X~!x@;m-rrMe$*2KY54$@RqBq`>i92f0uw4U;^XTRUiJWzYDtj=K1 z9#q)h#J!;ioe+>_7fqSu6~d9Mb5YvH1LbD1ob(TY^*K}Vb_bi7)+W3<&uY!rI zOnYpI4PT3{RZ#UBwPm_pE~rUebLIT4FTu}~2HqCuNrpski%%3-JGOj z$b_LugZg3~lb!pgs^L&YLt#y0X+ul3ueBLjt3z0s{@m!5Ii_dEsQTvWdD~v{lh%{^ z-x3#o%Y@d^ zem;ckCm(D535kBlTFewyHPM!Wg-KIkV^N5WA}dIgab3HLyy!?!Hw!h9<8qlI*U50i zNS0hRai$-{rEY?cAJt3g^CyY^b58&5%MF4tJC% zAtgFBJ2ty}R7xft5wgXS$}ZyKKOzbnf*`;lT*= zo073$8&u?D@)N(@gR)$S%4+M1Dryeb)K@n&H~XwDXELW2la5EBe>$zaSCf0&9fr@m zbo{Wy*yyj4s6IAUeHmcF(S{~)8?V2()FLflR3MG<9g!-E#Xe~8G zsboU!vusilL4wR5l0dk4!OBr%hsMRl^1rB}*deZALkKB+jbuBFAlM1v^2Mt&v(mcv z?B;U2#Eio9&#Dm3tt79mdSiNxDjQI+o2xaijv-Eup1$?fcRIf*h45(hW^N9DJMXy5VwHhaDEzh6A{ zgmJi{sCxH$PZU%Mbs2FyeQsh-4`dBsUEuZcjxedi-|82<^};EKpw?Eu(;04M2)`=U z5oTp*qi89ba%fV0OBLol4H~@FU-J05PR-o{Em|t&-aM+D%^+lkEBh@IN zO|C(~G^)0EAB1&$SoqWXG3lL?`;45oB7gdclTy-BWZ{jlCk4nKB;%cQ(7DcBgB9WOrK{4?QhN5vb9>x!>CCf;yp~+EJraE^zqa^sPWa&}6O3F7Cl}5R^33*cA?zFUSY01c>hy8v^;9;`Gt*xybc{?28(Kigg zRv3O^R)%jB;@cE{qZ}67)X-8%b8-=kljCCkcEWhXiyU;;ia?|I-MPb*U!YOpziwz0 zCGhYYh4@c@XvGwkS8?HyN+@UMiuKvaiNm_(^vlUqWiuBGC7H0S?8vH>Yo<({n2?x& z!oaHE*SbBf0R#F)MMbHfrT$?i4Sw<2H`At1&d5j;?B?SCr8T>D9$wPy%{@{xEXK`! z*{Ak1B=$(XsaEa_j>05xfY0Z1I-MP4_|aKQTK{PsjovDj*b`%-Za!gR*t9@-t#+NY zj6gVED}qyT1ZJ%Rl{HWqAa?kM8Gl9G~CGGS2i-=>XQ8XKF24jmL76OF>a>{;KB8a=#Ir<@Q*poEI@%H_*eOg(N= zVqzi+18Y{VhdvrKXh2l7YSs$+&EY0*aBj5)1^c68UCAklqTnZs@P0z9KfkiFCMMdW z_f~klytI&*S#G3_L$<@E<(Zjj;>qKZfF@ZHX{zW|Nc_4M#fFB)7H>;JQoL%51(Ai* z@h#L1D~?pgCB%8$E|pcxW%HYSBYhGhkN{QEb!oUWV^$6J>G)dRRNQQ`;tp!Nl9r| zRwh4d;mU@_WjhOj4*)sPTmsZBEqo(M1k34Am9bt-LHW8b*FFG|3r9YYmo`FG&N0@* zs6#et+0K2-b``+*pW3%aYJ99Vo5_RVlGp34sjf*&PYbg?)z#Hbrwf$bs$znY1_33- zB^jCNAU?5%!Ci-!>@VM6RXfn_jIl!O{Bw@A;YS&sb|!EZg%umWTzj9Nw4OiW@gC`; zQ6%t(%v$EFHt5S~Vd5gR)yy&dxpC`t}-t zfjt^AaQ5=KW6GT6#Uy&=$* zUN`8rvA$?m>53mZ51*bhVmh+%M}Uq4x~`8pc<2&_|lr$0y z^>dQlPb4ic!%CJwIg_;HTQR%n$LZ981v{kR$m>w}+ zv&*Q;DyXdwvS1;k%U-28<6WuKGmQ8wFrAQ6U$o=!itqcJer|$`a0!@U>jsA11bBC zRR6ST&n4rB4epwQZ2X~+h~35?h;HdAKo`Gk-IJaWpAr`%d`}se%Y-OwXh%T^(jYB~ zy?bZrqJx#*Z3j{=wu!w1z$W&N07~rZ_BF*swRl?#GUBDBaIC3N@d?)v`OIWOomU*G zS0AbI(?+uv#gU4#^wbO#3_{V7h!58Z`Af=lEQeSMu_i8sVlkNaPM{0lv0g?@xppR0 zJP&K);(wekhv+{hDL!8|E{H`T+|lPnE?xGcq|aG{vR_>U?%S1G{kx|FHAp* zxTGM^!eoA;1tMXIfcVFcs`9#~d7JYm^~nornWzmL$2P!vcIkxSKW^G_q^^OVf0fb~ zX@}XE=)~mTfu%wJ!oH;d01yC4L_t(`nJA#RdV68T!JUUvZDO}!g9Rn_?FSMMR#Y6U z+AJpP5D|@Qh+oZ}nf?0nAp~hN6oHVRl!;L&*i@uHI)@4wkdTdN;zS)MVjL+RKnx#@ zlp)c?#r2}>s!`!T5;#PvI1*CiIFg%4<9_jjCJDdvf}bdEBSc6kTf3lhI8K8$Y#gHi zJ7K4x(+;osnWref9}Mpjanc0Bitxf8q+6nDX7XnO8nQaGc!@*X68dF+tOY8 zC-%;@7mwMnp#n%vKpKm7MTQPbaE7H-3a7C`KvC^=l+ z3&_OR+9W0iBNN&%KnPP}$QD9lqaAPCV>IGOjtdq$bzET<)YH)m8)RY0kf&D(WGQ4V zhrFfGp<_do{?k|vv1Q945j%?wbu6gjE34VFF+F!+j<}ns4I4ICfSu6gbk^?M!qX8w zgI+cR@h>^s^s)5{O;!CdO#nq4J)Y={AFC z!-g(^G+YkHmII~qXNQmpiFuO5!V)o^(+BMxpsdSZMnL-v-h zCJgy71g$1C1#FSf0PSfZlx=r3O%;kYQKl39P%cTSUS}`zYr}{-J2JEoB2642);=i5 z1qo5-3S$FQhe+xHWhizKA&NY5&(Y2im`x%+1`=y_twT0!*f2(?5hqmbT+L4{vJFrC zL)0E9{4w(Z;mwJNu?k{ASTmq-f^@Bgh_M(VX2N3agb2wKhcGSC+VU#~1ZI(-O+_Wh zh7B9W05)-b;X&zVd&z`EC#IJ`6h9?tkf{j&PhrJ|lB#5TrKk-XCIDhDu8c3LKG>PF46y|JjbfY~jgp#|Q(%!{{n6(7T_hESfWdK{FCX3de5E)tsktU9i zsVz`Cl}=+7)C-Z+1Imz17aEG>PEp4BO)q#4L)=tc5S@@>Z!2oUh6xgKx_e^c8_SBM zl>(AsP;l8}Y=&BEp=A6+<`k~57GkZnkRGC?u@fpoWwC;7kpDYSRhJMQZCea%*f0SI zQ3=se^teI_i!x!GfCTuZWLt$_N9y+aeA$)t%{H;yuweoq_T<=De`{W8?JlH{3AMzf zjOqWj!J+*ugi58jVTdK$8&X^HoSw*r4I6>bP`r=#%M&) zotW^$icvx#4ML>6uF%_(J*iI~vSGu9Dd3yf?9Bp_Vd#yK3Dwy(^hk`Z{dtAO5N5&< zEre#Oan@+Z|2Y&cg?fJqYadcs{xD+!pmBbGK{1_HNcgRY3pvz=1Egy^5bT5~kXNCQ zPd`*!7m*wiy6RO-A!1k3MXSx_#c?@#$c7CYX26|BoX}K$h)A;pP!<-AgnSCGVo^~h zl8kkVokfMq%*|3?ULmPpj35b**U z2`$s_p9k${Ary^pT5}g-#d;}}mUrogL=K52u48=^cq^SOLL3=}ND~)ABFBZbqr~t( zq_GMz#sDIxApKCZ7|7;GZ*8T$xu^{rfxuCXx3&T?#y~`b-9(M(o>Cf^?5O$$sp*p- zX5j!ECyXhPVLj!UM%*$KA!agBO>V-3L{s=_u)3ic*|1^50;=j8X@oHAg90KI2$^+kdqIIXc=Vh zRmSB|st?k$2MXy#N~dk{d!_w$ZP>7(g`iRby-6z&i$p%M4h%~H5h+@T5&5#=yr3po z31_~c$`7(8LGe?0 zO>^s?03l3_p$LSM+=Rkpe}H6eT^G=80+w zV?sTsuK4|ueSit&g$81re$)JfJLf`JR1hK>y)DI6HC6QuLGg%gr!y%wCObJHAtoBx zuyM3Orf~z=Pd7a>f+7j@iy(O|fRrvy0w`2suc&L-ReZSUNF_v2kN`68lA6>jJEK!- z60%|AD1>N+QOSfNXKf-P{u$*yL$s@fP>8c3HVdVDnOZ8;@AAK*JVmXAlImZy93sYA zNLf9HypB{fRw6mhR1R6Q9Ex$-a;UNvvLVe$#5*+Q5Y}c$5Gx!@K7=8lvAVo$_lC*? zd*V_uVv{paFofW5_BA#)7Oq{8n4O#1duUu*4zgjRgFPIIz38EF&o)BQZXxdwqUi zV|DFHz9X{xk483Z zbVR7kcKjU22w|M@P4Et+^r+FxV{C2?)Va(QAx(6Mp9`A8{Aj1WInAc(w_nCx63FJckk2j zA!Osoz!rxciWJ5sr(Y`853w?fL);Be5h6v1G;t(Z0#$Ln{~X*tg>-vE@eXVj652}1 zJ|XsxVq^v>$CvI{TYX@6-iWCn(V_4_MasIvMF%!6LpE%5Fo=YN7@|VrFJ835SpGxe zA0H<|0XQ&~A}mcOLZ}D!ih44ViCipDrhIN@LgMzP!G4q0?JL?s%c%UNX zfr{!S+x8$EHjWl3G%xJ#GK{nqiZw3abB%th7K<|CAQJ{#AwMDWcxfOFCa)Rute78jS$cmju@7r)uCffR~;5|lnAg3C%RmX~Ppe(EVFq2RG+PyXU1 zOY0ljPXx7btbxeRVeJ2wjf6G?w3iPd!n)nBHF_C^6b{VDZw61&toP(aLuqX$k`knh zSYizoi&hzbLOtI?>3IR-V#|4JA;)cU+$f?u&tN?dLyeyymUo&7+BWEK^&Q%>B7DQ3 z7Eorvy2Xi|x<|z&2F(1+uM6J);G^x^cl7Mh;VM-d@6u?m+M?{q1 zF_vtC(#;O)y2pGkut8#Zp(wE4v2r+4n$3E4P?z`E?JuCx^^s4`0!U)2*1jeZ)Utfp@Jfs)9oekeF% z-@1Fp!P0)6vrMu<4=-E(8$|l_=?xOyH?zK7^y|ES{raLHapmQgPMbQVbLY;;hK=As zbP}{eptQS;K^bOO|3nC(7ecZSN)|Igwvnx5qT$WZw@|y=r)bI3W3Y&RsN-9x33(Hw zpNM>1K;J@@+!@%`y4WUhD7vnk`69oosul}eEGg@DV@5vg+LgaoB_p_ z@7>aA@C5Um^MC&Js;jSqNKQ`nhK(B+Em~p=gf`j$rbNNh6YDX^JLO_5@s9E~FoL0u zp>Q!Sm=UE5a$K@ZGTwvYV`UwdGL#9K$je?7Tb&Xjtw*qcZ3jwnGg8|^AfzrvTZ@V( z_6ub1h;(r$*0@4@A&6!w^UVC zz4yTkTF%Ik!xIyP4a~Ri*zw_qA0Ie)2*k^qZnz$@z5D)$*Isi~&z{2M^VQe0^7HrJ zeb>J#D=Xi4^X+Zhc69EPbJbN>4Cvnv@miiQzWQd`)XA$>uidd@Cs-~ozUV?^ zD}`D@)xrF@ND zl9Q5Pz8*7X6j1e}k3E?sel|Y&#wEEA5`PZufCo-b;|11Yj*6|b^7V2*q@D%0k)my=4N=O zZQ_}O5KPZ*k2^X#+U3%je^@J`PibqUK zOMUs3|3U|D-Man66Q{3O@q5>gdiJQQuHLgJ|Eeo5A3J6= zRPv=)UR%9pEfoIFyYJ8c`Ii%>A2)saG%Y&|8LF$RpMCCyfdl%(AYZh2Y4^O`M<00* z{W$e>NBC#LzS6cZJ{g5t&s%PK~+*;Y@W09ssK z+u-%adOQI$!-pG48zO0`X%OCd_kEv!_C?Pg-K%SAzWnN&FFyNt%H&C#H*b0Oy$`Ow z>WcXIxM%+TJY;*~v4;zbihuz3?b}yZSAWIjmw?0w=^*JHcl;?388&R_YyW*?#fp{x zd;Qh--v4m;u%VJb_|Yey0uSKzde1oPJWxMD&R>3A@Zm?F?A*R7DKQaJAV2)Uv(nPi zewsJm{<0r400FSNx~8F_0Y)865$6x>?Q(W&s&9^jfln?0W<00M3FXJdCxkl-9aV7P zpvB-&ErdwD)RSf4lor6i{)FN^bW)W|B1UHw%DIur`Gj&hYlXvl=Mxg5@Fzs3=N2+& z6)NK*Qz-wEZHDqy!uS)CAif-+LTRWxoHu+5Y8!x&Fe)alxvn}Y-f&YgV6fn00FetW zI2XS3paq;Vc_RG0|AB{r@q#HEJ_hjp_;%KpAQNudymj?^AF`i~#~*w6tFLDLz@-+O-sT!NqL)@|tCJr{n`lp{yV4;7cZ_s;)Xe7@7q zJa6ybeNZNRHa`9I^EIoM1M9hW?_Qdjem3UK``P|%gn;TQ`0m$&Z3kx0__(%`MnK+d z_4yATI202Tos^s$6{TQPSX-MRq)mD;lKloTV!a1tx+O+S0nDBt+XmUX5h)~0oVh4H zQd9%c|0EwmY)!_7yd_mNlLqucZ3EyD6Jld3>l;$yVuQM|u&@Z2Ghh&bQTyS?xiC(4 z?A*Cz;m;shfhvdcZ7>Od*!IHn&+3+-5Rria&!u2n=^s zRWj z9Ks0`)&UBjs=9{Q)BpnEs?}?{=Jkfigz@9fJNIm$BT7Es&Hfs`)RU$j|HBV+fr3sy z{Zz>L`>Iu)I&}gXyzbg-fEgGueAv%FeGe4((Z@5T0;$dLm6!i>{Bg(q`?>!B2~&A~ zPk#REZ@l^X|K9rHyIEVeZoT}{OF&HwlzzqKm)?8#9ltJE1Wdxhg^SNQ`%GHS*s)_i zpE(1@ZE;BnvT;lR=Hc@4a(Jhp5QGp?Vj7#=&gN*hbU1c6x*x@@O&ppJmy{$X!Iv+v zSJbhA5G;ft?J~;mt>>VddLq3o_}CBy2t}hXzZajZNXP29V5L*Xu@sj}RmZ_n$p4QS zlci8Oq^=N_%Eip{w4tIlSZPH>w09iLHJv){_nQi?*x+_NP{^!*&Eldn)&eukm0R&IAg*Yr*mu{d^Wc4*a@EvnB3vB@#4#` zLgF`HeFlF$dUXG0*0*f=f4}+0%^TNjSoix`XPr({&OGC^O&eAN^S5* z9+4ITkJzyG_Y2NH7iNH+yLNZ$))ko1zg%+_Tzc_8|AzQwmtM@Wv$Mbc0xkhND^&wZ zSi9=C@dSr^Iwqg!RVudW_m(+nuXNR&4bM? zJ`mVY8>6Yk7cdWeXQxk}29d>M7B@%#f3vjcgqKsHmu@udj!>2>$4s)kDNcn@&V93jteRSyA3bOP@L# z+R2BoqM|Y}DZ%M7P=l=T8VZOH0br z(vw{-H!}7o40u*yV?$$eb4x-(99WiB&&AgK38}@eqM|A$Iyx%G<3J9{T1b0Iwh_{r z)0L&N8xsT8(#pW^Z;eaIKy3`-Z`CBpm5Gn%w3xsGwzjtVT7AF&zPhrq3benFIC;{< z*x1Jk5EVn(OKtl9Ll14ksl{j5R)l3Ozq#1z>!FV6?ko){2S74y7W8^(vHhv!dnu zB@&lypR`PDEF8A_Njva}t$x3i%4iW269WPjAVzuY^_a0^Abs4}v0%_EDJ`YT##E4a zL@8wnuj`5B0g;r{6bQk_DDjAr%>j7CiHvbUhoPQTz9EGXrI3 zX(F(*&pz`cjZYXqo~|}GXE7tPMlpmQHZCXVVydfapfgPwul9gU?0%Axk}RbYLISsm zS;(V$BlL>b+XA9yYAWRf*!#?1pPDa(z5>lL3~b)r#KH}T75?N|1E$lI)MSfXXUE}A zdvx#q@rUo7d%?v&&HEWl?#W5q=K%D-k34uk;u{LHA4Iz6n&o(J>}0-jNU zDJdK+KXBjO1N!%;DZP62+O~ZM81}(Bbi(n|XMVb7o}7 z-Z4?pYQu5_X{v(}_%YciMKSOhg%5Fdc52{z#V1gwsF3cU4tZr*N}YSPNM>l{&^ii7HpgcCrxe-np-(#Ygq>Py^9Y zC~N8w3J}7-dv+HbK3vW@lB!hf2+5}uVx&;9E92CGX#LtPjg8GFHb|A8U-zuS@*|b| z_U!lhd;u(h3KM{i#c%hHedXm9^w4?Lf82u+FF(pgN`w@BBE#=*CkGEJfXYY%D>^C) zEP)W&vSr(+pL_@wImBrbITQT;LXQ0cE)c@>G>+K1=jFm@WB&YK7A#r}gLTa4Q6T9- z1TMY*-dmr1^gjK|%*>RYKjJgq7P6CY~8%QnHMTT11)_2zWt!z^!Zv;>B@Y{^`e?wKuqh`Z>+1Y??9rSWdIS~ zb;s?9-z*>xKH<6DK>rKEVQpRA%9X2r`0*#2?VPjE1cl4OMN7^+<8-|itAq2*4;*?Qf*;8org%Be>e?p0; zWHydRS=s67nQ0*I3!8=EpwBI&Hx3%sH!3O$)EJZj!0f4mlFfq79m<_ZRb9rfSVJ8I zDy_p!H(dYFBafeQ+F5_O=E|*Gw{_~&2^8(Xb%C|;@h6_9d(518;&hrBJ{$jj?gg0r zFS+>tJRT1;3ceqoe)h$jIX|3m!t}$356_wNJI1Hm%Shtw3u z3t;RHqJl9V{!2|yPDmIS9UC2R2FDm{W;QwOKd`sk<)-Th7JRsVP}mS?8a34)BQI%=#91#I&?D z_%P3!{oPYfJjxa#)kWeF2MrpSk)95QL?Hie-3*&HWY8c8f$1zdcyQQ|!2<>kkl5LN z{rYa*whc6?QzlPBmVt3(-V}BSXOD!55Gn)GAeE~-4kTiimS>0G!%0brqsNY*7Upo! zr(bVw7aX@cU{0bN5vPuc6UW6R#Gz7jG-Bd}@gqkJU%X`Lh7B9vdFzdv|8X02^Z?xP z&)aC^FFQn};|kyVV8((4i)ftY|KhWcf!=rT+4IV)udiLV9&tO9=fuay)6*<~ z65%O`_v4L;i2>sT(eda$rOv(kMk`Dk>`ILNjX+HuHcIfIkmmmlPF1=zuUKIk~j7G$uAK zg^w96<^uh5H(gvTAe?ANU05_3tA zl;kn7f>S%jMj_7z24dh65))J_$0W9li2HiVd>Rv{51>_c^L;5?rGlGil0+zoa|`1% zA0#Zb7z@S%4i53$Lce%=q2{)Tpz-kjn9N)hCX|)A=9;TO+xOqs-+b?V&KKyiOD_T= z-v8cs^}6eCdi{;JAmyU}yWpCuucVnzI_U)Z**FD08+Y$y_0u8o#l| zF>DYD9$>xz60E7IrPgKz^cy9TFcIRC&mKdjBKczkQkP;q#~xg@vji4YdwvZ zyMyG6@laD|0 z+UsvV_Qcb`4g!Oy$NP`nI*-SEd05ustT+b>FH_GotGyc)*ygM!4vVZ;J%zmR1 zv$_S$+2ZpZE#mQKcdR#^TC`2UMZa`4 ziz<=Uq_VOqJ16jAS!+LdIPaWWkSGt*bLpK92N5(avdATBrLc-*F~W+eON7PmsFu}} zQp808vdxgH$+#m?MGN8EOE%tp<}~w1RMj^w*t&b_z~1KBe69W|FMs;v8I#}teaqyY zU0zwd_Pt9_z302d?_G9kZfbzN)D~~uJtD7jUS?RX6cVn#;pREt|FC}TN|)0GjJ_w( z2KO*>SRT;?(6=fcF<5BX**^)&%F5hsj}iN&qD{K0h1Gcjy(@{mb=PbHu+Gttymo)%PjA321By395#3080QVN9P z$^ar>lom44tAwr}*(*g%$e_UH0Mk-`#NDpq#)b zQ30_J%k9)7tF6wgvSGsts;am>rHp2z!&No$vHobc{N>^~5SN1|;UDKMfGOpy)8*|a zj+9rxhcz?9=o5yu?1uzy3aYM3OKbC8IsQQG%HQ6nXaAsX3FZ5W6%3Xl&e;h?nGlJS zv?9*V=!`*7oV9gA%$`yxm8U$Pkd0&MtU@d27E*^rULqyT=LNC#F|L~wVoe-NRzafZ zF~KIt{^yT`9!3c&4MJq!_ndazx=d&hAc<*Df7abYLKk3UHd*==5Wr{9{UmIJ3DDT- zs+U%;-T3~;U%+&nm6=iB(D3||4}3Z62QUD(_*(k*?s>ysE`vO8yz|ka;?l;(rW>xk zEH)V6e>4%Ofn(_5qkfiS6s(1C@;EkvR|=>$-Do>ANmFTeht!-0Y5{&xKpx!t-f`)$=vzbpp&J?-Su-Pj?f13EPn&ewNyh=B^3Qu7d*PXf;Is0-cRwCAd`O?(J>LK5 z3t%>2j=K4;SJAC2RA^~wLB}-O$%l|pis^^u{)D2nP~)0s98y7z-+fg3EG%j9bj~Vd z{Ck*A9?iY7prT|ijIm}zj4cp&pZqUVaN=Ig@^9B z4J?EZ(h|P-`uk~<$AbX@*iMKFW6`dS+r8()0(A)pAS(_v7b7AsaDZYls?($CS8 zL)gTV$W{U*`w;4cdQiCzvVMb#kX}`l!V@u;mPiOs5eQtK3kYjrh!|30qjQqt;ymuu zI8LzdoScxA5UwXx2)O9~&L2N+Oj6>X<%p+_4;XIzo^3kt6MwU}`Sll{TD@-Lyk8by zcl9MRzx?)&TW${m)}>z4r+%Vbq8r z8R@AXe5ZE-GWm_CwvxRY&K?4i~26y-14#6!65IneR zaCdii4el<%g9LY%;O-8mpL1RBAD9n4yLVTuy4Nb+W_Vjc$pYmI0mVtOc}LKl9<~ky z0$UvG(WNaw&9i@0n^!T>Y_JpKKV@Tqd}%)+==R=IclBd5`K?3$5crtFY?I1kObB_~ zqPps!bltp<%PPtlGX?JFcxj=HL0$~#e*@dh=ZszlEBk`cfJDY;y{eXjl%UT$JBIJ} zGhE$_U)z2zjm#+V>E24D`tZ-r+gSU#TtOrvg%pQ_!Wh`7e8ilolTMXzc#sB4_|YU3 zik7=!q*1~MwWVwcHw*z&R(O|QgG9JwY@ zAygV`-m!1RR0#!`o8Y%h4EJI>UZMr-M6WyvDHs){Bj~fHuW{I$CARF+V2O{UakeYb0+@vRBAI`oW78w{{F2J5|(prt+Wi)dbXVyU8+8 z+rl!wC;PAp1@`8v8DO>N;v4SdFOg!AJgSy*UE3KDLK%*Vj0xZZRK=Xq+tskrf)YV| z9Ox6-CogN2!_Cadl`h?jzs~!{G*Z9$diWK2z4`0xZ*tYRo0m!dxXrsdilSrIEo~Pu zK)h~3^KQ|jLRXF`KJ@knwzRc9t$Cn|Xe8*^_BQYs!ZuToF z=};Po$9kR3<%Tu1rPW#=Cgyq=XNd9Z3pn=u_gkmn$NOTY6~CF(cLrBtn|wb#Y^foE z$A*ZY*v2x*u;<{{qXTy)a{BRI5-!**4T8y>*oi|P^*5Z?*c!-mza#`p_Q;Dd=PRv! zXn2d^Zg}sgO5(-8Wb(Az!n_>W`{NUKqK}5t?RNtAdXM#QebmL6Ld=f;=m1ua3IGe# z65h&G!*zW+r%Vf3gz2bh*Ep(>Pv1$@h>kOgH9|Au6Wv zBHXx~;4e=3jl*wY@ZkM{&TvqFQB@gxqGu47tH`G;j^7jcK46;{To{HVYdltA53;P( zzaq#=)Dbk#^Cf2g3>A9^jRkXK)!9r%L)TT&w6%@(YGS)ga_T}Q;dYcBb2-4u4b$rh z9*pmk_GQH+W<1MYU~0BB&0S?+=ED@LUikbf{LKLNbP4VsPZj)=^n!CBlbrBg}FWq z7G)zRHd+4b0(q^Lgo83`JqorYdXjxoQ0&^I*d0eCt$U^$Ltwl-()4DH_C_BD5H~H3 ztp9doVerPab{j#O4SWqA4rW+-R^@g(%gWNFv)v&K90g@W+8@&L^JS1$NZEOx$CR`1W$>>M8mRQ z&6yHO@hdPPNuTF%l4#?|`5?ZLV3<|Kq0jqD?@p(8+9gpZ$>|SQk3&8!7NcA{2=^lo z9BpGu%Fr@+f8@Tb?c6uN9j_0Gk~-})rilN1TPj(5KXAOftaWxq2QIei#3*m;=i9^E z*HyjqmUHCI=HGuX=}5h==Em0^i$Y?2b#t7t3Ll?ujRlVm&5xU(pI=^9R$o8I zF&!)Vy8rSpdYARsHJ@CS)mkg)GFyWVZWg*YaQv%#F8KbWtz~gE*#qmX+j5gf^XB+> z_rspc@zv~gH3^@pXeY{f=Z;CLlD>sjt2+r&vfXncveEk6=1fS=3+Cd-389@r*`1-% zY$W#!Bk!16kbEvMGg{^oEJZx5x;A#B2yzjQ70xq;*4MD_Q6CCrn35kCRil0B{SH)wYwjSSiYC+8;VIheNWqqK^crev8L@!!7C8}u zaU|^iPkBxwdQn?@W?B_C`T8VNl1CBDgkA3U@tf?QWF8_a1h%`B4q{)n^YUhb-FG|+ znC9QF-LWe_oE*TX>_oUH-=(ab;GnuyzJ7({h}ZlKudb%5l9cGX^j!)p>iExTN}~Wm z8+Zgx|J_j9zRQKgewda9?b;_)R%>62lbB2S@PS4808Ws<0F3EVFT%bA2z>tu%YCSDb*E2YXL*RwBWh#P1vVcV;#U9 z33a0H=}CNHsu_)-S{snN$&-Q*cX{Q-R905T@3^94}P*?1j378+J-j!IS_jOpSc0Vn<__&Wr@Gcu7@<=^ogS-!~sf*8hPq z^!LXT0+kRm0Lk4ir~jCXs~tcq!usUpHkC8ygD+r#KOC zhUA<6v-2+<9ptga!c$4+U*~P8;uvknr6e}*{uK1-{7bA@3%_D81r*Dv!FSy=`Di%HvdS zdqF-VndPNfI_e+NA12WMshM}TDrU^ZJgYeUSRN1G?q?+|(fh{fZ!V4$=PC3}WYfiv z3RYk@C}rblmG8M?Msc;yx+GCXDW9V)=tB9&g}b)E$1M>38K*!>0uy>fI?UP&H+jUv z1FsFdk1U;!zw7hisR&#UGErgu%?+pJNdhY+EgR}=X)1f_WGT|#AJG9^Ni;FK7~`vy z7u-i&`y%N2K`00;saQF&)$^pgnOb=AqPCW&NVjr2R!r%#P@s(fcr2ToTMQAj5J#~q zvZiI)dlx8kqThfvW1UoVEsOyfj%c&vBl$7cSQ@qEkZ%4i{B)B+moT{JvO9lSrPIjl zv+)+!7vlLaoB~|zz%@O=m!NHNbBcN0Y_p=F<3O-IA?z&NY5y2L*UhZ!eShln$*%P0 z-iLZi%VUI_W5?Uw4;I&?*B(C?Ymj1w5)u;76R=;GgcuRCd^{_=ZX%r~a*Syas#zjB zF!S7-=5=C~=!}bn`r@uSv_`g76_aT43pd`cI#-ikt6Muao4-ifuS`9!@Cuc( zSrLT569VrW*As%Bt`i+pquwmE0(QGa`z+7aw?O*>JNolzct|0O6W^xwaQ^v|>j-^y zX*#F3y1YEvzrd9>n*|)qHDvM)7Sxo#&u&-;wr}Sz98zfD!V#Z0z7h!7+BY!pXY?L^)4XP!xJjIhVUnli`as06grG6 z>MygYT7$MF8;bO8z~OXBGQO>qr>8}4jyX=_CSI4pHze3^)3lC3RL7Yo-86-SIZ6Zv z6=H>}>ylK_vgvLlZnNRS|Gjh8p+7dn{7eIJCp{S|{f}A>v}v`Gn4Upx0#n(G55Z-1 zi~rDOxuN_x_=m@+^v}C`$N82*jX(=uzAO;)IQO~=zo6wrb$PkJCA?cjf;kMAt~AI% z%(_ii`PUP0YQIbLygi00eVlnS-@Px6)qmsrME>&l(%2Op>ATS?fk{4KA)zeA&WVgO->YxLJik!86_sQ(eEi0p@5X9qb%{_B-9W>3ohIdvnF@~-tC6T0!V08R2fer!BuK8AQv#Z<+XU7U(^MUgG*h-r-KnjxOwtOik z7E!Re39f2ty8c={O5;9$dN7O!Jt0N^sSRs)yj(Jrxghe?uX@E-SPC{8OyeeQY$U*J z@Ok7=5i_1$Ov^&wQ-~uVMU$$oQ@}WT5WM8mdh}x8zoX72-09FdY%KW;r!UjemW&{ES z<*&(C(lnob);wA_&>0#T6`sP0yG-@at0!O$FzO&TovV|Elg(%5%TO zJ6&mM8cRjCdx|MUB5Xq$OIHYW?K(iUFG|Y??aw;=L{@uQF?Q4TBozx0<&{_ZT$G{? z{4L;KgT25{$Wz!}v6-d%;6!iGS&MLYi(v+RazAL;Ay@9j=sRLjdGaelYZ^K;U;pk| z#pHphC(>)A9{W@(a#8CaIZU*Z^iKPCQIeQr8P6?WX#vw4(6zw#cBi^Q3i{;yC4ucJ z|5!v-!Xl-}sHcXrY$bQc6A>q%Ve>rPs4}0zXnA}Ro`({(G_-p$f z+!*m}1Z>~VctBB#B9VDEIxauZ%ZVf03;!&o6iTkA%Jv?)wCxtgA;%evN>mR_m&IGN zJN@Ch_C5 z#X!K@F=d|s{gU+OjoZWG>>QWC^@E_)0RMv`RL}X1TJgs7BnL?NJ#!{5ssNK7UYa+7 zt!K=thw}5Cux3o?qAzQ9hm$x(lsIW+iO71t*}CBif?H8w?FJb-VP|45+~IwM(|OGw z@*!#IsKYty+P$CdbEl9R9Wr!`lk|in;!QN!a)JChcJ7#;^7&q4VI=#lgJcN5BzUIW zUx#jopIvVEZVCf^QKbV^v4L@s<&m#$t%_faj>nVAzyjgHeJjm5;%oK40}tSCs3XjF z|7Szwb}Jk+^#`c3%Zr))*ml1xcJ&h}C);GgbxTS$xJg*8?3wU$qP*x||7L~<)b`rP!0qsqmSXB*7`kT1c~~(e{7(xIZzbnc zEcEV~W`g^Z^DuDQ!gxPy59`6Ql#S`qO9$(ori9z8%{nel*#EWJa{2eVN?zLz0;LPn zVr%c<6wEbbIoscGMSwxaPx(?!i7e5=y7R5GZl*wI{Ku#JUIoH1azqpXkxA#thh^iS|5zQ2x5|ic&MOEH)Wk zo;28akx?;IQIuwxh+s%`7}RvtRm|jG5_Sdy4mE$oPfk?dWaZETViNu_Y=!u%V#R+* z!`W4ki2J^-rmkWdpv;(=rV|K?F!5nj@;GsaqO7DUu`k>gr?rd1{%l@L!J5sVyKomk zwNbge$Pl9Kkk-RUKjRRxjg3r5hDg57iUfQbh1|p)KLJ{~eBQI{lTk&G&mZx=07mKf z+~W-{!QK1@EHDa2#orCRg+;46fAyv~Rw%=e!XqI0K8u|tO@O}VZlTfMsW*J;%$8;nd@;!1=-xd`pwKEn#ny*T{j! z_Jsj)12vDaSZ)*?yWFTGId!&N2g}vY)8w8}xq&+P`=CFukh$}EFz4)QaRUvU=lc!* zR}OZUwKA>rwSEwJm|I(ePUhNdLg_fzc)Q|M8OxMYn}9ErfQDB2kFYQ8ShR#Uj0P0^ z2FEM^kK6I_MKv9l+W4TTC>r%zdQ_H6o|yw(rCW*#}ZV82|V%;nnU zs=b~jcVb}aGnWph+`sZV7sOvofg>&CNH8L8eb;Tj^(4Q0X?PiNbPKYy?}^^yr)MW5 z#u9+D(h_}@CmCXZ_c9iV5xhKIAmpC|Ew+W(WW7FB@2ab=p7_T{#aotljZik3%@}{9 zmP?q9PKYBzI3x5&cc@cMiXLy#Bv8LcYHPoif2krBXwcK~)KPv5l+nT*QCbN3JW9`C z(RP2Zy`?Em=cvWs44O)`&TuU@E$k(=El*-Zkr`pBjqKP0ea-<%zGF+oXe03s*3Kj) zFOa@DRZn9kv><$P0tq8`gQ`>ldC64>1IZ_8yM98s9sMwy&i_h+CmzI{E z;_N1kNHW!`ik?9pVi`#_+aDJMCQ5|g4w=s+xFDF_7>P}>HlzbAC}a|~AAM#0eY}K7 zIq7Mm(H#QjyKVOwTf?`BR0c-eniwjRFzeCZ(|fl`TT`Zw_E&J{9}3QrGv7s8;LcLq zsc%N?YIE1Qz(wG4o;_M=iqRKxAu=UeG7}e9(xQ!;6omQqAi@k5wndAU-?iBn6#>ZN^lp_yyG&F7*47%W2W(2VdH zE*R-JYxN;AI}rxf*rEA~xy9KA=g~Vq*yo|a!F<-5?%c_h?a{xd+sG53I`_HdY{B-D z!s5W0s;#n4IYJ?!amlrSPsH*Ru+SlYv%kOGIQbQ7sL$XFa(ijhH-DG3G znDoUeZ(fiK3Pc~Scxhoj<6Rok*0|2vP=m?hfV_&c=%@($%T7?DFa#{dd>~yKBhJgs z1Lq@Va26FFb|ul;YC-pc7B<+Y>=m3>7Sfl4WyXPo;x5uaLOw}JS@nS4O*|V%79A9d zJA)C+==XIq3@J)&3W>J^FgorPQ^)T5yK5{Se3NqzJ!32Wl_%RFxvm&YC$olgp#XI2 zH{4v!oXvmmy(uK)?7g-P4UQZ+XXhB6w9J*`a2gIhM`BO@g@=dRg%TGlq}KV~?+QU} z%To@ATv2e1N-Kc&7JIe}BgmmvZ77zo$=SiKx!fu+ldbxc=$bsq$#ZAdn?FCu**zqb z##ntd9b?G0;I@$3LyMNYT3^WbU{2mny!&pG!y!nu9(QnaJd29x-W7P#|MkIrD3@UM zNWY3!T{7@hTJ%^o^X3RQfgow|(^es)Y13#%v{S|grtq<`9}iJ7UXxD&FiC;iN3Fmv{u%A0p>yDt7>#HmxH zBVX7GL~#`m!XwFVzOGJ!phtBBQNoN1CTr(QW&XCF&d|!zQ&aQv z@kw<46zRvz`FGKuD=b!~q@*BjKtabxMSWr`3nZHSsAP6^V9tH#WF5PaMZwIy<+EAY!2xMlECE z>?FWeIujjixUY9)-x`Jh$U!BTdEs384eDuR_xk)xZfZCs97VcRlH716WL5n z(CZb?>FN{#gH1m8sV|kgV#d&1#If%E86WmfKR`-8HG()DcH$W*xroJb`H01=RL=dK z@edtYQd}rk?&v9S${4f)7Gwp)p39XuG1N}Sd^MNbJl=8fh>XPey5&e4UXUNATyk-N z#l{CKiQrPO+z{(R7joO4u+6!B{a8j{zWGH_vFWJh>Q8UTOEj%F9w9&f){SJyUyA9E zRTUNdo-K@kfrX7t@h_}mH!ll_~NsivY-26iJ> zXrH+P8RuuDZhTb`Zf0fS+gw%CSK^?W;WHI!0m39SfT*N6PODrjNM!_h&{mU3+^DJN$bKbKRUFQ4{fmT zO`QnU0mXG7O12XjR*_8!N_!^~OUv`CrXIxReUEoGXC0U2w4aGJ+qOE5MF&fxBRvm! zpkdcgs%vUWNlN}OHEl-Skr7kzX+-^PvAn!|bpNcf0=w9AwsxJKkzr|R85f_FautiQ zti;Wa5?R<&x7@k-VMol~x^kP(9Rm7fj%mmPBM)=ouLaKUP+-!C3OSMe4N#`U{v}Vb zaAIxrS$gi|LEAlX1gJKCPKPo7#-w*rJHJJv@}v%I341411b8L#N2i8Q@)}NKsgb;e zxc%ufNJSila7UF}`ZiUfx^`d*c)M z7(^ZGKM?*2{plx>w#89~g(tcV!S^OkGbFha@2jDazzcs7>i+e>>GaOZH~fq{ zAh2ZW3}0+7h83c^gv?q>7APNbQbT&s#qD&ED0^3)aHpcO-!QV9fp7`K|cfkfj=mzM73*&Z807*GCN< zic7-VV1L~d94vME{UTl9qf&kWLkDl+*I>%|$!s_)Co5v%nlB5pqT!StW5EHNvg?n( z12Ey8#WggX#SA;F_Geyk#w_z|<&7kbD}$sUMl`d57(FJXGAZv|9TSscrXcbu4B8J7 zv5Cx5iT3V@V)P98C!@5__ztqe$iuZ$_O<4GI^}_TzyvGLm&z#D;Ww&*wY9aCe1%Ih zvcBk<$G>l&Sa0pt!Ci;j(=}L0xUV|YxvlK3Z~o5UCiyG@4EO+8#0cB==P6knsiE+8 zVIFQSXxF)JTNZ}q4ZBgn;jpmQwLsVnzwg&AYp?wt$dJ@;-M&%Hy5G7C0b{3Em&K`6 zsO!Y398N}hI;q!FQG!xxo6&x@sqRk_%DH+aVPs1=-*Fa(PuKuvA%r?y4goc#Ko(iy z8N?bIxKrj%964$H*JLxUhkd$XcI<|)HWsWGJ&$CE(h`xK;9$l8HtcAPq8eB+hbvH6 z&HwtiZFz3B*x(F+Ay)WwciWb>wu=qcH!@rFw8|F8MjVFD(mSLQ$$KSk#kiq~R#{GSVg@_1jI`&d#o0Cm9EL-N0 zm*&hBbz8_w)r7iYen+XlQz}w1l#n&cHAu2Cy-Yp|1H)!uo<^Dw3U@UmPyFjE>|=_< z4e4`(vdXvYWTI94p*-Y3cN#za)28fR7D(1a;OwW`uVM9h>?9QSj%oq*C`tSHL_rOl z*axd(lvRpziKHo>+o%)pky6=B9v_AkDG3E?X%XcZ(>QyH_+MRZ zZPavZDx=P)ECLrh9q{*Sm-h@Tg2K$))DVdG)HEK4aL(y%lhg4s;ZM05;=AJ+oGXz+ zrRuYYlu9@gqzYp*uo= zp;vbR2Ld$k+FCYYmak8TDI1y^_UX=*A`kP=9HtX#&F-gz0C1Rqjf0Vro7auWKgqFX|R+gxb6XK1Tp*E!$g3fey0+k5yH435<$|35OaAV;UNKjWf)1uZ(a0U zT&;is>U^z{hV+bt&B;zpZRXz52mTT9Un#KCc%SKOi~i*maE0+X6z2PEte^jV@VuVS z`XN06+$K9PvgOZ)|{-*_0pT$<4G10!b-(lt|0SFAQyn=qY zUWd~F&GtXoexaS2YHsW0x96kV0K{8I%e^XBp$DghvreZg!o_aPtaJ+t3(<2mZSD7` z6%Ox*!!KqgJ~s8D3&0r4>+UwQ%woI=Q;w>|a_qq1lgr*j>f`Q(0W8SIng8FFnrggg z1FXuoFJ!a2LC8mIn8L5eTq%;0Zq$(^e8$S}0F4?jP^8Q-*Eu;R)go24Q=qD&Xj6}( z&0t(mU@)4OgUY~dOm(-H`MV$bn^wK)S@L_uk}wa25QAVBIC56gr<@5C92P!8(Ss5Q zF(1Dv#v5a)E@X@B=Rj^%D~QvBAQ)(5ibccP31-9QTIFTA}L+z~E2U5rBQyd;4Da)qUQa zMr;O64z>HiJ$iIEmEXA^;KN?M9kyCaU^!e1I}B%%NlLQVcZYJ4(MacAMc#$p z-F7PhMolH*w&7JmcCn~@X-wCL={^lZCF%J=r`W~(*m%fPP_U9Xas3)Z30 zcTn#s@dP^#xg1K_P4>qaAn6>RmnvkV;M2vVjS}gzSU;};k9(W7t_aP|Zdl-OOGxX=@ zw|rP|vz5|k1ppU2ZR8R5d~P(=_;eTmUm>l_3_84K>2_PN=IQD5a^LlvbS{0k$o79} zv}`_IY}{{1h=vtqYj-?a_Y!f}E>Zj_XnMv1ke~vdi)5frf*%(G?F$SIjXFX`MQma4 z9!^Hjsg;O$oDO`~9zFc#2cy7*c&9)v?(pdG(~c4*-X+%ZK5DD1Nbe1dM=yreIQ|f-Wn~s=xHM!FX8Rh$F_YO3( zgM$O!PfHcvULJQx*@)!K>b6+IkG{P300E5PheN3md#t5mRF3&5YnjLpos8zCVb(F5 z+$onOCqkLc>D@4NO8&z6aFju+si`UGuyHD3%f}D#w$-psswSIHh~$ES)cp_x`+$fQ zzc{Hbr@wBDtzQtlta|+X3s3RU)~3{1dI;wDc`p4KL({t4#)`gr#co0NI?H=jS(mX2 zUm{;5R31)@a)8U9)J6Y`dpYJ|n5^db|Xv6$& z{9g6F-S52Pq5@~+ccSt)bbmr^^qM!OM{5md1(JTzp^dM4&D|H98&#dg51ZbceX(zy zCV$g}J(WrIjYU&W;#T;YKPyi47}9@@CgQex-2+yvXBz}OiH@Y-W;CC}bj`ru!g;+c zVg;-}KOF0>wMP>#>$Nm%o3?zgsVFZ;+}WB-`A&dGa=SRgqG4z1klV33KBPq2{`2xE zd;}#)1PR5PHD}%Zy76A%1}%#apXJ#LfRfqrYZRV|m&-@zMEMiHeHr4KX#y?RzsPkoEkmUpnQ0Xfj&sREr7o3!XRi0VC&9JaIHt~GoGG4DS00*|N@ssd) zo%9ZLr+m@4JzQWQRA-->5)W~VmTJE{$>Q;e%Mea99Lj#dqClWwk%vjxyTA&7P|?x< zvhCI-J9m4nT-V$HepFQb(^fy-Czms5Y=m;Me|)zMJ0DoSBjc!-uP3w46f35(+H*<> zWnRM1y6lPtk{#=M z?Y1`1f{;{LZQ+X*^c*QjcRk}tJMT5StKsc2sO@?5T$fVn_nE&nT~(;XEUcp}ja>2Y z@VX3a|I{XKn6d{YB(DGXQy71B>ZJdHL>DoxEZ|W#tL@YG>}`q_&&nv3KYHIZ4(_=h zwY6icz74EL!=~QDL>>p%!JaMlC)&JDKSw@X%LGGO(1CZtFfgeu@y0XYo}9=z%vk+* zBt+Trg#-PNNy5BIBp=3ah%oc3tGaL7Cv0yUipstGyZ)9&c&IN0o6sBlcjaTtF@A2rb3M^^~8q<421aU^(#JFk)GIDEw#4RmF)$Ukp2X! zTvSZr@UW1ROKq2bm_(dVaNL{ghBz%O5*l8PTE#R%l6@&;h#a{J>*4@wZA6n`=%60eM36qSBFSfFYJCSi{OvIYr zPyN}89za?ZL88fF#bfl)7mtY97t+QsXhnD6Uj=*|>77gqdS1w5*fyAN_Uq&&qlfk= zC|J!icwiD(?1BKh%ca*oA(u9Ho*)JB=-9q>N8kt^V=}SjfFOOnU3z`K^3!?uHR&Y( zBoEWKw@;qVdR}jD+UM>B4^b6kPCxO#N@IScFJ`b(N)>wSB+L)CoSbQ+($V285?1HQC{))@^s?Pwoz+f~LjmbLwj=O2 z%oS*XT<#9P+;hY_^=_pxW|Q!&Gp;pL;%Ex*iGttYkPM{bCo?O<@`|Dl)Wg3+=#j19 zMkB@(gAA4$Oh6^Ul4Ac_Mu>;;lvuH5iny{Q@D?s<3iFGBXuo&m2Yd@EmBGI7@lFY4 zp7fstCC98>!GoT?xq87LbcH(#zC9D!UvYs@5(KO=#}&j+{M zTwLZ~qD)MGKn)@IGA9FbL>Mf88Ou7v6Pg7v+W(Yk%;s&(-{#Tn&&~H+oeav=o9Q6^Iir`?p=49_z0Y z8CCDk-){zwZMu$&kE@`-KroDcI5B5#_2}-&O!;#=skh?yTiRlI;%A^d_7T2caD98W zZ3&`Yw;S!`dD#WPs8823)m=e3A2J==4)%PF3V4Sn!{!{%(@L_C5P(0usuggS_~q#9 zA1<`h{He-(B{kCT((`^5togk9d{Mvf-OIlEqg&ZZMn(ppspc7erQ=!d$VI0xgBR;T zIhC=o`o%rnE_}OMPL?G4Z>mJEZ6~?gg2QT~)pRYGNkr!&&OfIlllL^^+#BZeLPoWK z@M3Q?!=tI|aci2K+(e|BfYJ4)! zm>E9%m(qoebo*=T`+)p^59T;|nUyOoyGy?{{3ChnR}U68o-PKp&%7SGR)pWIG~d=? zT5hU6NJCn;fn21otro9qm;!Tx)eP!ZE75DA3v3Wn0UUV+pni4VtlcNW;DU2U9GL(6 z-jSnwI@JlLP0D4^zw#5NbzD8zBK3TsTE*K93lp0vllHthiN;CkxPN#E_~XZQt(^g` zM^F?Q67p{XZBtjXl!Aegz3Wjt;Uo%;Fw`OA)D4c|Fm`DJ3Q@)FY!6JonktBfv12V?T0p1Ek`ANXEK5XOWjx z7^vVi15ym-4JbiksXoS%;RQ;XCMGqcM3Z4UUXMWq(r8muQcp;e=Kg8xW+J^BKT9Ko zfdmGZwM>yKn`UVRvcbMp&u~_R`?^AZgOp z^E;dGpCIP7YWc?z3e1Xjl{NfrL;>D2Jv=DcSRNGsuM=sazl?BD^t*%Q zG-WAKyu=nyf|O)uw)BJvowkJI;1d%+Dk{p=6^VjL5I@G0ly&JY$b`mfwau^_CrU#P zjtn!oqm5NPYNyv^cz`@5Db1Cejq&NRFg_BcbCxoVAn8BZnYD;2dfzolwcpa{CO3B8 zjYModo5lIS>ay|=a-%MW5?~k9%UG%bs-TOD-A4L4Fb|`oA;hAfx_fx|i8CBXWkHrq zyW{vNlB(G1e_Fs}2^?fAkP;n5zl53wb6_r&w(YL*MCS1d&ypFyYkofq}G5*IQiaGAa~Xb>d1QyHz|Iq@wuB-!$MEjT{`_|2O05@!^7cmKaX(w(^p7Ze(|EBV|u3#=0oNM#}@&F2EhrYbR zvxS>MpYxH4rl9;$;KCJ&RUaR3Qk2FxuQr>ZO3`)ZcbAcAA*f(xUeg|^L0s~rY6e?1&gnASv{P0983LMO+TXmV9ZB-5O zqWu4yPYl<69VZT z-kosb3tFY(LjU^bK`Ci})=;Xq0F2uMf-}wze2_PcEQsE0x=2NTonoB{c3ZYQ;{u z2{Bw#)FL8w%tAhNmoGhxg1d^pTzOBLZe@_8aUKZtp&M%rLK<#2`kbShzsQnt4!#o* zPaZ;hxdja51tMJIX-N4Az_es5m*%$CWx&_O4Rn#8FEEYeBQ=xOUAsK|oE@QE_IUyy zzrLJ=#0@^yBJYz1^02dba-xFjz+$r5$^qHS5sNT34W8IOr#p(JLOsi-Nm-^g_CiQ+ zRR9_+Be$YiH`(oBDtuy%nIVd$(V;t-5+%_0>H}o;|URLPtkn zqx_xKY^dTZewMJSewn1HHY-+KmIYFCtwK6pUcXqfB1&3|pM@+frS}Fqh46E8jj@Z1 zP;Z^OKIMJ;LF=p&#hGw5Gh5*fyKPx)Crj9Eqj3LB9<(z?Py}TO$IVuD7lWgWNP2v3 z#P1;e{xySk^1+&-hQC)09`%A|ayB(&{y9M~xoOwiZ1WT|KjQY=*H%nGRFBDmTDB=D zJ;MvpX9{B#uzr}%@5iD?xeoM@Bgdu2Vl~Y@7vX+E%EZL*kbWHJgo)51`Q&RTk3hXkwQlFV4YTq6!ObNL zccr8mFwXeLS7)H>nF7s5xVDHd`+fRrU5WesIT@rF{nIc`jz8Bcg+OVY@j$oKP1nhA zRmmGVu#n&;*WuXER>OY2Fye4RkaT0=^~EEL4O!~(waethX{W~3gTHJlx;>JdobV#{ z>?~Vm-7GQc_zjC&LQE%hD+)E`%yb7K2mvKbpHM>Pg#_upRT+h0+9(vT-5Wle`n3}a z)a${Bm`T5L2F8HkW*{V2I!;{HeCaJeU~8XEOvCx_;NKPHmE5K(o9E~?(2}IM8wDHC5b?2}ui+t-9WSmRZrYQr$LaFbt?)1GqLlirLq``Mr;Tw}TWxR0oHl>- z(6nSKk#G)rZlhU3`|nSHN*PT*`@yDi{W9ZbW>{#$JnV>295U>F*bOjHy8 zt#F?$wJ&~FMj>pqS1ubm;XU&O=iek<;l;aS3R{j$xgjWAr9$3i+942;10o=cL1Oqv zcxm``G~{L}bwvgi5&Fq$?K3cP^ICXS(vPykP_MDLbsy`fusa}!li>*FJgNL`Hb~1- z{j%5I`iH1c`t#&Gq*Tl6=5XO;V)DRsKC|_|DdIp*(n?VZ{I#{)4?GJanH>o(kJ7;; z!YD1WqgX%no2cDxVSEe|4Ar+t><_94cCK8QUNzb`|8?X%g@N>GCC20Y90@0aGK zW(G-yW~Qb0HB`1Vx2jZ$^yy`FpNkaN<}R1hDneJDB>O(>UjL;DTen*lk8aQ2^Xquc zjqEhc-l$3iXV9;udIbBX|D)@jqBCj3ZS9V2TOHfBlaARjI<{?hjE-$P9XsjRwrxAv z_3eMHefA$^lOyq^Rb|MG_?#6S$EEjIj^yGem4}-e-Fv0y(dc{ZWk~npA*7UG$8Co0)dnPo zeR^J<^HvvQPPoiSFQSKsvFJ_qdm7UD=XLeJ{;wI^4zY)BQ<7@!} z5>#s4%23Ep??p^{r@{FocPTl^=POM$MMV%K6dPP( z);gfVRb7h)CU3f4kDpwAy#-HSXL(+BevdbAOVw)~jtgx-{2~9#+qR{O)7_-*dLFHw z-B^sS*LH+~3=OYxm*<7Vu&68*uX5e)Q_~yl?`5M%SwvCpibdORf8lR1rCLzvET-?+ z0ENOsIXfOA#+mgt+*Bam(>Z-yI(!GN`RI-?8<;B0Ephe{?O|-~TBjM&zzzd7k|ys? zLm*OhS+$au&00lA_tkUf!ZJod=~$Ow5F-Cje})dt4tDoPj^= zs25*HLSVo;+(m>^e|MIg*3EirWA~2w6z(U!5!KJ{1bv|DFM{70*_W))7cZ#E7O^PO z2-;mG#l;DzYkJ<_;YgJRJXG1FS{Kb||gByKerO*33*xi=nAo-u_ z%!O6WGdr7rcMNUJ7hFqX<-x6%)9eUhghdQn-H)F6{_ZK;YC65U;RrR}WZw0e!AL=g z0AglC!$4%zGDpSba08Q=5ebrWx~*rYmsgMLyX&ila(C^mJP0CdkC*a+Y_cc6ui4F- zocuIeOz*!RO;#H)7S%1k{G9r`7>O9u?;LfGKFMVTY|PDXo1QagZf;tGB7MCPlF;vy zZxQYm1wDmsa8{JqLbE3F@z^RKTDuqK+bbpCf1 z(C`};>Dafgvfy265P(oqGN~GFKmD;%|LFQ#COz>PVnE_7aJ?-myzvcGC{}L+6%|!; z56^BiQOB;d7t({kRrU92*(wPJPm5tE{V~7LBQTu=Jt$Kh*GA znwS-?-vF+4awNP2uO$*5pBI7^X&!E{!s3J)2ghPwiO{O6l4rL~QC6qZ$D{;hNH!vK zLoE@?rkBs`YuldlffTNst4$_+qVl9S2h z1ABc5Kyx@O_os()d|_IC#YqT!zGv)}$N_d|C&sS$_;`RooKuj`ztQGgJV^LW0vIpF zu5C2Qni-H|F}xsjDU4}UGVr)V!$Qd)v|@c>p`m?TWO@MW0$rZ5Nz^#A!K*VqLe6D+ zTG|Sz`>VUN{DU072VGU?c`SV&C~ja&rRV-|0idM-!E&W$lj~6Rd%(xr=hFm|zfXXq z_v;{?L7uWog1$E(t9p5}v^>RR)COt7Wy@up-?^(fYSFC*7RIi_xt})(~jHxI*e z{3^^8^eizob()&@tgb{KK&%FIgX3WEoR%HwrSVu~u3h-PeJIQ-tKj0{`aPd4-55(S zXm(`Mf7$=!mRdEIMEE)%vrDPbK@i!?B=Un)Z;^bmz25+_f?E)9uf={AH{T9+ATwO` zyr*_gwp*LrkWKy&FkGkF<`w431SZ<=`dBF%szP&mUUy*IUjXE4JNaf$LU>0y0%qkW zPGm~;dY9D{z}qNH`P??1Lh1G!x_m#NUHXA9_*(Mv|EV1=0`q}3KAK%#>0`#Daq)cdndSf$zYi!o;)P)8~TSvzP8i+Q~^akre z+~zg*TECpHu9uzU3tq$OfK6;x%jLF*j2F%YsQqyy!I#tEJ&MkoM|g8B6Saj*BHwH_ zLpJ!rua0+2_(Gzi4_pEQaVXTkkjTpksAzdG*7>5wYIG}&-;1`m#D0?d#skjC#CjzO z83w3-ny&JuM#`kx)i^cf@MRt-;au$W5T;e;wq6R~1reDYD0H*M;<&+{eFfQG-u?)Yqgq3iEnFxvAJ%w*j1 zf&-=*@X}2esvu!FLxNpIiO-3%PlSO}Z|ow}y$PtCkOUq(__l|lwc6g@rcVk>iXJZ) zJ|3C{3SB-Q-(H++>s&$wk_odC62vGsevg*xV=;uJ{l@Fp_vLlHw@2opW)8%Ku#Jt5 zfK(2was2A)^wVvGr(z!6d%4ZHYIiwFiqD2z5O^ru+swGZ83zL_t061!$DE8c8J3^m zGT!$iSh-NSoc>^wo}?Mnf@z;2NHBTYJdM1B_*YCrAoRB zoT;Ou5um;O0pF|wwD-0AYNyj6olB44 znJ1WiWu~x5=48ilsy@;1Eo-Z_J5)$`xU`wjz%wV1AF}m3sL!FuZ3=)FE$`q|GMx?c#BauXU;cg za4Vo>_Sxc8C_&<C5U!%U~mU$S=cRa$CSs{QJll4yJE zxp*=1K^b74BDj~Gog(;$`}6(ZE#ixHiF9Y? z_aDd1q}5LPVPj}1bM5!dj147v*&O#`W=Tdh6wPZeId+tSGGngQlY~r&A;I|D3oLV0 z_?gC_&s5H*;}co{;GjX>6?0sx{C;%w_k0o?I=sk=Dxf;d#+_u^Fiwz%oM?t>pCmy{j?FDXLBca` z7A+AKx!`B7)FWHUBNGOVY@x2)gA778{LY%7^|8vZm)X^9k3C)rCbV}A*VyLEkU zJaWbS0G;9XsasF796nejh7_0n#H-;t_Mqu&kCa>n3t?)u7oq3tyOVqduU)T?+b0=4 zeGx!5=t=n|TfP)prw=LSOvN$fs0dlVC>y3O}d9}}wqwJer zN&Oz#RSiYxd!)x`0^X-}_YI75viySlFPAd}ri;#x&mT<1t(o$1mDR1gq%HT`ds7&e z9ic)^`ihG8>ncb>S;9j|hlt2>!qP};02Jw?2rG;1AQ=8>;{k~Z2U~sn!kqM;^&S-) z!F2rnwQ^43-J>_*?XrWMjK4|pNyp%7849Ey!O=_9SjFMQFz&4FPUKwBwgY#+2XJeA zwb|pW=gXYTRX`Q$INW$#pXOx~zsz+((1Q)162}VwOULVbwTdML06*4p@gIax30D&_ zyMX>1FBpN;wcfE%{il-Q3m%73qMROlfVc^gNIrr*+m*3H8^|lDFBb8HU>nKZH*qSB zZ^p#-Gk;^#GX6NU0=H#w*I9ZZ29fq7cg=;(VdeKiNfsYJE$iM($`;qrxJnN)xa#$| z@e`38`KA7(K)~6?i^Qw&-zs^MaN%^p1Q&qTSkLa)0MrmRN5o54LoZZ<1HIq$` zwP@!VM#Y~s*&b{kDG;(#f^TfYNPV-qNPI9G&w#S*vUTrDNGA6w4_1Q;^Sjx!tFG_J zOF35WWR5{S9#`(vg2p>hBRU(GHAm_(5aARE>h(Bm+?lkp7SPU=HXtNh?ta{3p=Pl749@N~{6bS(KOR)KxX9Kj-eQZ|$mZZZA=^58rY!5%_cJ!u{#*`xH^e z{Xg6Hqs~X?$Y<5d%KSpgOqi_)#F;>H)32V#tabo#_aF1|=Tr?k&u5EtxLE=f zEhN64lhfVsj%d&ChY_=_Z)Q#xYANuj(bhEn%RM2|5zge_kIRJ(sHnNmt!(6El>KDN zV)z8I=ca)%TM#=P`=7ZG|5}=tf8lV#2kpwwl0wjZknh3|R8R1~wQGH+Ne~_3;K9tv zmMa@QmU*rx_Tm4ELq+DHl_tWQ7Yj?IvpAgp2P8SQh)dVWFP796SkF#N>vH`l21J>? z@9lZLMmodc&)s zfn_Bn6#}E8ltm^l3T0m9axLm!bdda7&wmX3j(E89Y4hc2R@ruV0#&y|2!-EhIk)^Y zJuPR7M_JEz0s{*#;-f8hJh8R*yD7Rn?z|x?bMLyxXBn-uar}tVhVVcgQFhMwvt%MI7mOqr`Lpn0o~Z-J$W21@XYQ zfKwbJnF;>%^fc-iI1=7HC+)gE;wfgaO431WTOJ*2=>k6Rtrdx5Nyv2vh6d|!mmty5*XFMd;8(Jj&J(5kC zPN7mW^!?sMbJt;Wr5*BW23No;5OWL)d&8wdF(Wqeg{Wq!0i$|wJOpCkGMFk04_OL> zhrw0Ct`!kK1YI!y*Htf>m0#4zxEv0Xct%yVIi3r;HQkziyPc0t3P{r%$9|TV+ZAp0 z%f(`^K|V-8?dNp0@Rxgc-gmzZv=R;LpUV%0cs;ustu|@j_ln@tA*mxa!XBQx!_sLZ z1N806=);nfVn39h_x#{Y1()p2IW;W+?~_c+o=W0t)W&@u`ANTm!!6XvuNeN62Bug( zgk8CV+k78a1IniyohBCt>k##94Z7tGDEb zqVIbLmb$uax9BE_aJ;3h#w9h_&)(hAVaz_6Ee2I!uJf%BDfn0Zn6VC`L;KXO2m* zmkBxg$LfgpX^y4z8_$9_t(q}pvP@Ti%wsV?3KFuYgs2^=jo`Hv5Vc0Yy0fC2sx&%- zFiu{$)-lSngZYoc%njQB;?JcEKd>?dS*&t+>m3T#&}4WuoJKIhB=*Kee-{o<=aU^4 z87n*v8?f7?SwlX%^?|f=gXy-+>fm6m+QJzh&lij?Vq7g(gc3Z?yx-%~oq^s5&>C6%o;mOI+z6c^3)^&9i=HcyFMJio7&k*2 zM=tzP9ROJpS{nUX=}4QL9XS38nq>E&pyop>ldT<;F-2i&^(M!Wuvzxn9j`SLJKZvuqYq`F8Wv{*U2Jn<(zME!z=IXZ2}8 zW$beksj#t-w!tSwkrYq^NV zOMYhu{${>+ZjT2d52W#?M5M$*BS0PW9`WAn5~q0{(>idc`Tk$FSGW6*$sx_u_DqMd zfSk?ei(+8!1w~DL5Kai9QdPJ!eSokQ1j=kP_-{(gQEHhAV)a4lKE7tf zw*CNc1;ObCqhj(@?(H8KDPGd`sS@S{^0Aj23|vo9B{_Z*dyj1FoLSy|Y^OP3@W}7r zyd>9ZJp*QDrpKFz^($*vKA=X@Dk^sXh`CP>m)G(+Doy`Hrs^ou;TEo@>*KBb!GNjb zKHo`ABVe%g?vrwRR=;|G5lqKzqR6g;9W09Sx^nHyfxj@*e!UQQYtoSjFwoG**cj}$ zgFg?lD)8RKQ+|PAf=S0fU_1k@{BSQ`m~H0^&jz2CKOGeQ)PLpOLmHPY8#_!40srpP z!r3t>tEJ6sa;!Vzc{|Y|65%ou9n1p)LPAguc&#tr!<9zoCZ;=_ft5I)o6AsVtmyv0 ziAwHTfXBb6@1O@d&Yx+qf_E$f?XDMM9!=6{|2p2c+W}I*yIHyTH4Hqb z%bz6zkMog=?t0A(#9yMMZ1w<0ucqT1bUe++Xo`C;NixS9r47zHFE{A=ZG`t~su1j? zt%C7ilp4s1Xx`o5J_*CLiA0fz@}xqF_XKJ^cNjKC(gajFugzTIS(NCL93}_c0;tqm z&W2>sM+23%K3&Zt+h{e_14BOs{nkT9pum;G5i}j}iGBB8Fu?-F;Cr2iL&Zp)gXm~+ z0_2?WlzRT08H3#|i|T^BU_zmQ=jPRL6O>7MrYMxAZQ3-BcmkVPzf3DnHq@G|2`qaw z07>9;eGh5VLeK1R##j<5MJ5F2aEtMyrnRh9HU(eNAmCZd3PSlHvZf2c34NfZ{S{T9 ziGT~8{6zxxCOSpDx8gNky2JSOM1UNW$R;6M0KBGS@CIkYbmED7{j2E_ z>||LIe?pp~#tByOG^YvOOz-tU73KKL59vbq8N@kD4Dl9lhfFp; z$#yJ+={k(e-x~i{LR0EN`^`?JRucAKWnEZptGZNc8vea{cs_rAzEsX0&@1@YRZDo= zva3wxbKkLR@oX%~kqQp=;Y0y%EcQM-5?m%KpL)ySvJmmj%_oTzd<2x!BZ#-5I@iFj zgdt5U50UI&PF!m^G>mPl=`_6%NV0>(t>J5&!0**?e1L5g|BD2@DmY}TgAL#ejpyt> zcmlpRK(U)<2Bzzd+U)@eODH!nF{7lk>MXy@{#nb;>DBwA&=-oCf zxSn0YpD&mbJylhWGZu4QMk7iWQzsz0O(c?j&6Pp3@tufM7c7%`jZNRGqTjg_x#J}n zlSp^ww^#vq>78gPyuNDWCH2($VNvk60_nZxjhAaHMm~_5C|vj^>b8(K?<$F_aNK{w z*rs-2u#ylwj#`lkv&ywrz5dKoe-Hb^?k2k+l(G|Q-#l)^wy$N|14{8V7scuvI6^?J zT6ocJ<2Cq>C-`)9{z#saQh#I>;a&0=kUorb6bIjej#M*~%wkP6S4jxz6s21v@@cNej_2^Ccp zUORu92|K^^flvV6FwM+?#ph z>~KiLuCtgL?>t}l3P+V@J0THb6sI^Ef+ zwA|96oib(Y)W4YufmE-3tBST6DZAVP1c&z%Q~3GC<{;gKRy`;SDnu3MV$P)kL|O4l zZv*9Sv=O+=8B*s-FX|h%Kw@I@EGbbx?YuaV2pv-dz~9Ly43g;<{v7rsVJHk22o5jx zfsUpjp>3^vK_=yKnojue3Ub#{$vMbXA1-e>d+r9v8KCvMrW_1lh*3 z763SX6gjoKfWXlxj{Zr}Lk?sMr&BNj$~zEp^kohel|;L@Hy7nLh8c@?S-kzV*jpI1J47TZ%iqi-~p8D469EW=wPN!?@N;(}2?-o#Y2(9(3@m zM84)~2uW^baO;IA`YlQwGL8R%DxHjl7(q%b;y}H(6!;-s64wSrTr{m{o#+6%2N=vK z@$a?bX=jG-Vw%)6m#i|1_BqOU1h5_(ZTl`~fqngeElzba$OdHlkKM;w(;;=9a6|n# zU4;ktqC0N9^2sK%=6C5%gqRm@nZ-+E>H(fSunZ+K6v7{7*v$8=4ip0ky#b~DJr%>L z5dT07odO6zfZ@x=@C;{tctixpEWS7<=Asv^V*#;Y+Omu7A5l|`7S+l}VJdgzvytKr zW0Mi8iLgF@ewgK2!yxhYS7cm^lPHn41uz!{O&sz&hPZe6qvuk~=$3rBXa-fz{OW_ezx07ntA)1OW(ts?J%!A&;6)vWY2S{$hB_gJR zrO;BcY5%RnqB2867|JqDS-^XxBTGBDSb>GrkHyhIlCzT9i&E>l;cE z(x}OrBbt8R<4gv7iELPjZf~>99YIl@F}yB6C3pM~VXaCnJRh^m_fj0Qe7~2aD zHWCrvNTs~o>KSYf&~vN~gDx(wIVQ zTu()BY1AO4nq9n3xVSt3l2<{H*)}A)jYm8nR7j#d*LrOf@QO_Xm+29$2rfbgG6Li} zcu0)VIop@}gxND;5s}L2K-W=JzYYDG#vHy9JGM6v|Bd|nQqofmW42COhiX_vC$T$7 zHW-jcH1u^si23@0@cZb|)K*sVZKI5HSYr#Zic4XN3^o>~Wg;6v=fL6b7PCR3MdM43 zSLS`jDjYmEv!!dO8cO!9zW^pKI*E&Lz@D$g+1UXoR;~_bpW6^J#%L>m7Tpi@*CXMj zodv_jUr>NeUJ$L+<|FRd?CWrnHNzb3`b472$9L^16NT+3LY-!oIS~DN?*kWd#B$T~ zXMP|=5w#l{=3JXDQV zfb z22vn^UYylkQLtog5HmF~k=tWeQ|oTD{B*=F~$`D$mg#?)n!w?FpNKGyu=!qeFtD+5Dv(MRQY)Srq)KvX;^CRtKc z^z8)>H%g)vo-x@VyDIuBIjo%{IWKuu%aK0+sD` zJO2ncdn^$kM7iMIf3UM`2;A`t_DC|M1sm>iCqBM8}1S{jzwxgyXE+zbGI@ZWkJKq+`%4sse9 z=kIKuo~D2Lczyl1;g^Q+8Y|HsKV2YWqzB$Co!0m+r4=;_Kct|CcZpVOnTo#LvrCV; zgKsT@Njq=7VtMfEccyocVHC!P88N4`WRUTe-X(*pf)6|bWp`|XI)r5ANl@p+^ISGQ z6Qq6a#@B|?ys}X0z*;BXjX0J$oSb-rkc*1W2zc-EJb-mML?C9|RE1qfx5=A)+$-@^ zs#5Y-WibcGdZ_2F10Zm2oh z?;a>Jgz7`gdcQXqYkUGOHo0^r$Q3TwUNkRnAtU{+3IkQbl3^?^@Ealyahcp^^M_p$ z^HH+Ez}tmCO|58e`#(qUF>=r|557v43$)s;j>!2o5$sLr9bpHD6B)JKivM7VWQY~y#US8lj?XlwCcS*w6XYE>;58+l?mat z;cymxZ|!X7B)by-8%TX@cfCv+$bbULoh0IE@sqRJIF1+fsj5=;Exq?~`vBuX+HVG? z9?_SHAMtJ|9Z&fK?{%h05_I3=u-|mc-wP<54LpR^zriT0!DOY& ze5Gb;Q}Lk#u;)z4*;Cp*^dFh2S%&85SR(mu%i`0^byi5VKIG(K!j7^syWe@3)~oc| zcee9p0hFCq&;6~AcL+QJ$RDbKH*ho^ZNCI#R{x7NN#Rbb2dx{&8Lr~0B^uOXC5KCeHmH#e8Z3n z$zP&S3FJr-k9;$6v2lH_{>PUCnogU6SoBVoo+^cHBTi^^VWC)X z9D^=dHayArs1zd|mi~4SJ-4_VVrSt}CNv|I?lxpH1QMsuW530}eRxk#F4j*7ZiyU!`Jcc{IJZ4VbCQ zTMoZd^i<~C6yKW*QLO9f0m|<`nFD_y|B*A<{cUVq2F;5$hGZVW@rh}#t!wLObGP&H zkbb#j|E~gray_S)iQ!#lH^DZ(HtR~M-wt4R6;;_mCUdhEvE0nP+?xu9ex1wB@`hGY zj8p-Gb)kvO{|;j`qh)@sUHS*XWzSkS!h&is<@7UNI(!+Oy89WvFO?|#J+|)zT6{hX zc|dTxf0Fl1b^FWpax@IR7PIU9wH?SQ(9m@SiGnw{Dptr?u2HA~cE>VNxL$9-;kj}C zpyztyVcj-%Vp(dZY69R=1ksMS0&NstO%7dd)pU7;$2Obv`(XKp+XL+hc*4Hb%* zkM6rkZ$R3>VYk8TGRu_?5*60a^#(KkX%O?ay~hYFA(Y*Z7cbg-Lc1--{;pR8M6Z=s zsR*EpWdM?s_gpmmtFD&B$Aq&1x1F8p?-0O0fB60k$A^0!&2*vT-Mdm0Hl`ZVPtSCs zgk=s$=|Kj*7xfa=8v-}t=L1{;?}F=@Tj=>G2_wue;iGP1sRY{2jpxgB)qE9k#7ajBFO-$?NY3gccuT63#I>5V!n^&-<-Ite zVjiI+>Tnex{nrkYIF#Mjr)z+i_3G}0q4QWr3IxN~*;y5sAs6mjxU(-|Dp)Xcd5GG0HcQvzBUxz5a0N*nrlCK zy*`R?0tVvUUBa)F#8MSi{_-jOg>24Jy!!j-I#H_LVN`4(^Jw@+XN1JN|C!W+t?D*! zp=15OF)d;VS&cT9;>YtJk&|VmetYay48*o2*e?GL0!er0P9U1&w8h z-@1Jr=3NxhG^WoU2x%B5CP!IDz-YWC z4BBc6BQUom0zFX;t2iA`rtbWL?xlf}VDzt;$nt%2ignA|xWzEK5F%8h?07_0h**@6 z^ZyJ9^Bk*#B!K}TjY}+e_m)C4WRSI9%_r#(s+C@%^?vo)VAG;@=QA?1>z7vD8P3YK-*w|pBw#o=mx#q9%enn_8!uw`teCL9@31h!#yeg;!nG3fC(G5}&O!AG4jgP%`+d!v zP-h4J0Jz|?TKA|tQTF51GhM`?Uj^@Cc6;O&-svIlX}D>?~^LS0pCJ zpFe7U)O@>%Lc)T?!;Wp&cKngi<2?e!3L|k8QtjdD@D?5qasluo?t#?}0gvYT>}+7) ze_%;*4|2xt;E*6FBz6vt&=rPBxN}8tTs4?EbrUr!tCj{#SUF-kImmHGK#x&l!- zhDKs^4$=iG^gIcd(zGXYJ9K!vi&a5gtvCw!_Wg=*67?6co>V7gDAY+ zifJibeN_rT%4hb*3qAeLs6iNFauOi}T#o*FmoXNV$RR7>2YJ@;lceWRQPVmqsr}C5R>c} zNFOW{q!r76{mJ^jvjCR1d!cUUKS(6)X;eGEXk-k8vMnsifK;LP7xz9ff3?KGkUPkL z7%2GTGkflJ2F^OiO=9NE(0jbWZ^aVU0n4$SJCw&ueT*f>GoT{J%T}t#A@&24NRGb( zFe{0fnGN@kck1fusQB(r7y3_}!Pl2)i2ubB5uo7(Ar{#Cw-!mExNEHcE|-GO4DXRc4Bx7+r9mr`;IwjpZK6nL>@>%xAx0!oF%inC58-{El+=h3)cFMknevn~nuuUw z`B`zFgF}PA#|coz9Vkd<241Ew93{j(ph>jgfZyaqu$$ylRQ74X)Iwq6o1U-*_yMpj zGYFrNw@xO9?vr+(Jl=Srs2QQaKsbr~WhuYyB1;DJev4F!n9Lw4d(hcafI&ek;5 zhxC|SRf>{|cC*QvyxQ*VA1gXc5ht1DhGql59T2r_e|k%c8)0rhs^DyAHoDUXpfKam zNCB%>X;qb|FsVozig>|zgk4ngb5W;1fnP(iAivp6(z}O|E;Gpk^j>(q&BshvxAT4u?chc%gcgDH^US*btV!G- z96kOgEo>o{4+^I_oawNfGS#to7(vKx_EUq?Fg1;z2uDn+KFD6+Sr%zbQdfv|TNhal zi`a0_5%Sp^e)>m5+RNWLLiR280hn03y_gB_s#PVxYehuQO2LQ-5`z@g=j zsfgY3fbCvtu!~W*!T2`SB{8}4JcxOh!r`+lC457|i(pO1Lr=k1*Fj7e;Kn(DfK-Si2eQcWT#dwxITW)rZQR3I-hDJ?MCJG8Ou{<5g(ZmKKuII*j6 z))2())VG;qz~?R0fBaR&2B`5ko<&IvCz0-W9id#=g58<;6WBIiCwU#ik3kvIN!Lfd zXmKA3TO7Y!1NYT5#D@EdYR77wcat8BCh3zf?(=sLBg9F6k&C6b*xE_q)J}6cY9CLA zX|6UX)^ZWc;}1#0NXv(z{XjC>SgD_v`tieG!9q<3v3pqg)?(=iS-S+ zwQfd+k}=HNe?mW9+&eeUGjr0iGtvE(=Qx?nE&Q;vdP?}n=&dAHJ*MIIO}}zJp5K5y z{*E62DH-Lyn>@d`SZl3tJ>93N#a~?HoJ{4wu?}swIyL)|16qs?#0YI5#2=Di7;LZl zZBN6n7Mq%#oX#%(eau>5H~xoy^QQ=)T)L`WG0+X0RrE1!BLZk)3?un$_8^3iZ*Nn} z2}X)`@|oQHWc<;?aACF^dI%%fg0^&2-}Z+7)EYls2tregCYoi%rNvJohDo)U`}z`U zZc?ZxV_{*0hux)lVd~j)e21sYoS?7j@7=k~&i=_-($Hjvhns>^9|D>gh|nKqZp zVav0w+*x6IzRYYd!n_hEKMcqAp}>0})?yKtP&p1i44q0&jNswX+U~j}Ur7_j3yG7- zw1osEqHH#q3agG8_A9cd3aou@pd7Y^Rm^och!Ql``Y?*xpkhTy7i^^E zwmve!MCC5K^KB>XN4Dn3B$!!fb=(HKi_;_@LOmJb@Lj#<#4ARHKstxXtTd&3SZem> zrW#Q-?eNr|0_Lu^Joue0Zd-Wg0~ ztLuv^;D1A89rtWo1|A=V?49M(W9vp?~eR zgt=alsMQPzNa`(o&i-b73T*?c^xnsz`W5G6dv$fwKi8r70_&hD3uPS@NLgRRDaa!ha&LV#HZ~R?no^@X zo=Ari7vP%{_l4y-zjFydijw9P@e*x%9Cz+kN>fW~6_^e67AbhUf0Up4VI9gdjMD_M zu;IgxUbf5B<=2mw<8kN-Q7`BJm_H4%TnM-kG)EYIM#k1 zdv?u)nyTrXtlY>R$S0C#909A}E}plquNi&c!o~z#dr#TVKHr;%fKL7Wg4b$O=YF%J zLB9Jf7D?E+v&L@whB6zXNaQgR5lkYLbL*$pQY}>aa4i4L`g(1w%IR25Cs;ZR6-Rg5 zS*&7O$IWBH-$!|KKhccm6t~Ts?Bv(iwW~l`lNaWA+S^KA^$`bTwk6*SgN;!q%rY7hq-lOmHjA!Yt z3}qD9A4tR;ma@}LLH-W!14%_%!N(l4ZAx=?x6Qll7+rP(0^P_hZA9*n{wu%hc!CSW2sa@CG)}T*WUfT+ zklWL0#_Q|#%4r(eXZHkaC%KQ6Wj$GAQ}dUHwYJv~6z$UeJ>Y;*fk*mC*8e2b;{cBK zmq2DPPc}ymw&HD$s#@4gfaZ zyk=ZIJ|XbEt)H1?dB_;=`98nOXX~`ycmA2;d&1@GEy?zPuqE#3Y5usqtQFDI1)H+k zTxZ?%wi=n6>VoI(=sfPs&em%QAgX+}|94*o1{M^{_c{P^G!d5NcXQS*9NrT3$Sh=~ zZRM*ctQt1ZhM0F9>r{%LOMp|B7>ioaG(nnNpvM` zNJ=Dm&|e!muLOMd`MpiQviyVb;RPzRt=s*O2wf!~VPr(w1nu7yuYK*;w2-Yl;$QUm zf|SosUk}wn@R~-htnqeULcRJsM&ibY%ddAFx4Y+~#jg&#+Jf$ehXc9pmzh3|KA+{_ zXnX@mcfE(&jln)^e4pGX#ac}}#Ri1(J=}W^3BCFdVHDM*2;6eKTmtCM9c$QVti`R* z-b+7Gl>)cgj|ww>A^ZSW(UoABH$?nnL1$<K|O_kCy?5 zHB&yrA3GLhW#S<(2G&2D4P`w}+@~RhC%7I8)50>e@$jBDzTWixjUXRJfYO+u`(DHs z-JH7l{TWIi4UiK1z9&G?eNHr|_+F}LWV${6oOb={MQHYUMN8?tS!~bw*dLk_G-F^} zNjoB8O9H;OLMgci{;7+`xG9UB7)Ni52F?@zT-%L#&nUiQ02E^R8w=0j68x%>VGT=iS-0-c8)_py|QuCD_V7rfT)QrEM^ z@_o^iE`kgrzVBrRt8gTwEJo=-?)$p$*u%8P^5V=(6)S=YnSLC zwr$(ybSD$rwlT3av8{=nbZksGv2EM7liUBpU8~TpKz$%NDvisO z>_{Nj$N$A`@SGbEbJ6npl?9oJ$L<4Nz6*jI_hNFiy36TxvMN*@R_dwTjv+uBBGm7F zGzW4NU*i@5n$3%3Z7C8fd$z{>5;K)n{()WHk3fZAfhv#OVB$>q^L0#G_+z^n{>G_W z0Dfe9vGdL{o25o$!+pK^hsOJ~r;*V|CVS^qTKT`7m&d{E_LmW9_c!V4j`zr%4;W7} zCLXt6cKX7FgWlQj~ZQR_$L>0f^qj}S$X1)CT7;3c(% z%yFA(quz@ic7asR{OsE2-A%Z_W&a0%PR7N*~%*{<~W%cdZ z{pjRJ4C@OtR9HKbyssV+2V0bOpsox{63i4-zk9#V50%JV26Q24mPK&015h_e6tPqu zKSGW?XwC#v1^9PDSx%I)Y%>0|CwmOeYj(SLYOT8`hQI|TSg;vXGu6Tgl3|!GVMaBQ z{CfW*0m#{A-TlRJ0JkJzTK07!*)q}WmF*VsURCAy%J(v@-Hmts_ni_2d$P9wV*y~T zAp)Wf%M>T!udlMdqYJ;R&TaTW_ldy4-#k%SJl(iY2}9G^@wJA|s8B zjs1q=ShWS$JGo?d316vY;;FZ3z(a_Oc?sZ8u*%(T9i3XeJS8b^ZhFW!wx^pLntF-l zg)Nu~v(^s;0kHw}NJvQjlxe)_H-GOYcL+*dNc< zk?C-U3|P+2;h8_W$1HMz?16O7eW5_KBhuV(f5!5{mLcBd5Luf~R^y0&bntY1L-Ine z5$On(KVkS>_4S1XlCCEDgU2f?8L~}BwtpB)IXY=b{p%UHt7^t#43>vml0MA#NN*`A z(q~%Cyxk}8mt(4mqoqQt@J0zR9RF|8HugFmI=er9`)Eox8{%mXtq?UCQZ9Si$|A6k zPUV-$LxVvK-GVgWHW|1ZPG2B7^cilW-@4~_KDxp+&qO#mCBE>(VJPnhDlG>FW^nQ3 zN}sgz)_2>l&&_#Hys^U?1#%Mu71de~AT{e!!i^TtU)LLr$2*=x35zI8ueH3QM7hYM zbRNm2q&NhbwETdqdnYx2SQ+)g6iv!BEG@{%qj50MiY_-`F7r;)SCEXGoCDzCD*&=Q%J*UIj0|N+$qk);}X8Dcc|ePd7yW# zZM1c{fp&Y2H?g^OJa?k2?LGuyuqRt$hWf>o!9KJiLlXut>raR`acFM7flS^o^8rLv z&H=r>SIKQA2eGYCT6qBHV_0sKMVjD_YGkbeQiii3#h-M}#!FbPY$Z4Fm4aTa&|1uy zAA+nOGw4-*F1NZQ41Zp}KmBWL2*RJTt+eIjbSYSq)A*bbH2F9LW9W1$%2_^)Xt}u$3tY!JH*+;mQUAT zFr^GG)cm^#nN;_S(9^Y7z-f}Ej>gqP!XtR8@P&uK?n*tJ@qamnMn^34o9UC}b$$2vO)5#UG+8WI&eSaB0S=f5O}S6k>p#SU#hW}%ktC@9 z$k3Zs|BUJN&uv*@G=gnK$-K>npGaf%fy2QRAw9MGN~0C+_1LWrO_Z`OBoJ@#Z>`1> z-}y)TV>cbki2n`2s;vVQk>|h5wmopWN@6b}w5vWtvx}xWs{Jsmuy^%`e4YLGqi6%P z>OVYKNv-BNe#R4;C0FgeZ9X3!PQ`L*4Q<6pDle_AVn+y_`_!M!cAwqR8BKiD1|RLq zj~kEbHR!(2@Hqke_2tFCMiklB3@E~7Nei|7T11`eXk}!34CUk?LPgMTnG2F)28tApCvd+3&FLJkU}pL@={#_G=}j_MiEl$5NK) za*m&6Y^6vJ^p(;iH7`j zen-8lt*gr~x5D{t*@?3VoQ&wY9(Ex6e!g6RMlW?{b5cD~05vq;CI{)K|PKRY1yd2MV?v4NFzGRqOu>9sOY;Hv7}NyxBkL$?C5VDb^) zTuWmC=bw8s%ng{=(Ep2XoX4!eq-_R(`3u!eULvz0o)VW@~vHvyB zW)(~d;N#=Kc-xk34on9SB-(CO{=9s@-JJZFX7~3PI#<{4;AGUU^Bl>Y%pe5ZsGis- z*mWCSz4rN!Jh%0?&)LCg7x^zo9+aew!oou0&6|wP_ZM>pRI<&^hfzQ8E8?*cxXDNj zRu3aei;vCD3-jDFTs3hP{<qbf4r!fy0_U!)MUfsommlOH}AXTUe)G%^pF+1Mgq6( zO82jx#jcmM(2tKG0p%~x-H)9}%-;4iPqW&WW8<8Zs;LR~FcBOyMfT=fy5C-(J03sp zH`;!gCoU7TiLQeR-vg%^?ez6GS$unN9GkKZsbIyW{;5K> zY853#eRO|4dNnDSPY$P?n`{=~1m(xk?!rT)<;n3C^^WhMd-s@hma~+w`rCD#vC?#N zOT$T)RVoJHeTlPt}2xO%B`}<=U-gSDfLMz)0-14uPhkoB? z!foe}Od5`%vkoEXchx5Q#!TJb?7FE*bC&f!?{SPtO8XW95gGz`Rv&HV1CZz03-343 z3U`nFNl!21i>mQ+ej#~Z5x)&iH@x0@hxu)8|o>NjgjD` z-a{=fN?&vr_Q;Ls4ChVR%iC?{Y-$2fAi^OU!arLr`o)PWFIg(Db(NLH#kf1~GUr_; zg{~%~(Cl)#YUiMqsrc7>33AYUnlYR$v)mpssdGGzWBokt3en9o+3mQ(iKd*^KvwML zGUvy~9kV6F$RNWW{Vv4Xq4vkylHde8K;6yvGi1&%6$K~xG(6(_c(yl6+>=fjv zDwXHfjw7iKbL{9P|?mp)e&%O%&1G%+5wEHZbRcY7j7 zOrmk3_Rbx;T2>wIuw~}<86Lw@LQr(Ti*{*MafAGrE0w15*A`7Xg=r-4UA*!PS9YAx zQ(zHhgqOr^?-ju3en+DviwKCp8G9VAs%dC!^10hynJvI=^Vkp!8Fb z%vPc^f+>}ZdAP*+F%jm@&Z%8qBtuXcoQ|IVOC!Qcn1X`NI*(_wlq)6rC`E=GCV+=b zQmHQ{abck;eZ3I^{8?&AP6oteuz;64`oDI%M7u4M;cU5#~PM2jXzDK5NegGAf2hq{`3$mTag(j0Bn z-xAb?NSGajB=o~lRNh<^ER4O_8(1?G2tdr2=?op?S`;PXQ$K1g5W6l)2kv(O+E>DT zzqx7YxIYomny$~{Yr}&G6%VMVBtKmbxrZ42w>`%?DC5%Kp+xgN(I zwp)Lb)b8lvn^Zj8+iF|mgI@{&0b>5|wM4`kDGxk^TTPC21J}1D$l@zLb})%=bBcdU z)`lb$oW*@r6jI|vHY4401qRBfWaNP7#cWxECXi@88(_z|M0{vaO&LW4DW{AG)xr&u z!$^=sixAoDw`c-L!s3rs@mLXYFGqzsS{MO%?TLq?@wl_)4`1{@ND zM3;xiICb_{V zfXv@a=v|x4Wx+x@mv`)Pls!B)MXx`@0K`D>;`q*bSKXhFQs%UOEo4WWXN4cuI332* zC=@^ufI8)KcE*b~KNuTjDnElP#<^4$Ll1$UYjTC9a_*mC@!iCVzewmjdwKcGeaa6* zK`&Dc&-F7uKaa#6bj+a+? zl1%*#Mas+eKJdQ>NT3ATGNqVObJ;Gf2(#oev{8nN;>=VJbzbr5FX6{fAe`(ob1+od zR<-y2QbWRECeUNE<`JFaO)-*-#(?W4=8xT0NvR|3?d{z-zqKJ`xjcj&b{CE{Ehekr z9#Y3H+?J#zvHA5&x9gX(-{)^{mPVv`FB#c7G^IMz+ZZ3ON9e#_tW!kCv4(A{whHp>G%~$#>EbPj-rnn$-U51MC2uy&2>D_iDk`@X0hrt3$@;aG>FGw#dGU^p zjy`;Tw~MOMQbIgDvJH(+8&z>}>gy1#f8pXl2VUt+YsQ`UX$|Y>7#T?lp~eMJS%lZ? ziyEW;`s{Aw@5P0=%cV|hd;2(d#@cKm}iuO zJu~PxUuk)uNEp(lM8K6sVRyhdHoaR71YhXbU2iJB+lunQLc~xRrWC=PAU7nem7Y}T zAdtE=?Z!PDWj0Yz{cB2^Qia{zaA=&RMa77moZQIxI4s25O*dB)0F5-r&(X1NW@gq~ z$f^eA1lXMdBBI5k>Fu6UU=fm!K*0;;XDF?%8N3YwO&(q|oT>GbvpS3>O=8blb$q)X zRndXtc_Z{mD|_pU-Jbl_T=;`TSeTnu9a7Zj|5yNRxI5TlM)1pg(4>5OynbA2I$A0x z_0CjCggSeaRaQ~9{N6i90fRCJQySSdZ}805<9C&UV#v$K*E|_YYHD;l6O+P{;*c$y zKK$orkJ8f8K74-)P~**xg0-pHlL^8#E2tcNq@YU;0*XrCa$`sXC_;M2$0|tT-P{k1M^t@i>FL=8$r)+m z3M;vf&O|JVRsyTof4ynoHSxWK*FWagsPdM$b4gnLvJIDpq>V0)a8;p%;uW)B1cANZ zDnSg78x45M0t4culb5R6**v8Q)B|n2MoIQESoRf-V#vMS2KF=@JUk|NO6VW?G0a(C z1T`Hk(Xetzy`PY_<&`!)r+vG-mU%Trx!?m)lUsU~;Df&*NyQB|5rdMFRWThvjRP3y zn&w=6gK_N|7(G|Pl*7@OkN~v4CkNy8bC7iuy`tiXI0S=`D*?&MH+~hxK+aeoZ;I82 zmkqbn_mAHc8s8{g!#3;`;O~6{E36=wiLXLC3S2gRV>v<)1Hl{xzBo9+fvI$D#4g%c zRsGEtMq)-|xml~kbgwj#RIj1q{Zyl4bKR!&x+pryj) zF>OHF7bPU1IeF_?Ww_64xk63GYlX(qAW~E^uTcriL|g6Q479HLubf#eVN{+$vL>71 zwkaC@&@_&#bSXf3SLLed{E5vTrZkI?4;+#&sni2iu!2^wJ+y4vFet)v^qQO!-2W7z zLg04HbvetgPGJ63KFoC9on7g<02vak(DkW8GsZ z))bR{KVr~I{3#EFkc5#cU(Z#Dmry$e0YmV49ktF)uY+!p1mVG#Cn)1a%IpI4QPrr5{ZpYoz&iTijAb;??Ef9 z#+5Y^W18bqwoXyYw*>H!2J{WQ@K@>F><74Xbp#M_8W@VB>3QUJgp(4 zFn7^gQiRnVZ-#;BO%jJ2{5dn|`B%gf;6AQW1``Z@7oY|)iT>EdLlXysF)+SfqAs(_AxtRCjx;|l88Ir{JYPv&5P}66 zLnoDUVuOG-6p%S)NhC06=pM6&*Y*?+i^4eC%wz#1NK-s#4mxPPRx`DlFqHMQeKxw? zE2xqL1#j~`cytalk7~G4{{~{}^3vuo_VgQ zo*VaJ!julbDv%wCgpsf&@Y`hHDe+bLO~TX?A52H+uC6y z*X9r>@RBVNnoaQW@xO0gLQxzR6vi#6aczA1M%3d#jcJpElc@Kefn!hR5BMsFf4jLM z0BGY9*cD+~#3{}Y;a^WYpo36*qa#e0VLgz98fRB|MSV~taS~q4slDEuI)iYC5_<~+ zySGCGU(bBg{VR?9x!*8ggMpkbh~WE_gD z9K|X&_LZp4{hUBd^L=(0=!lV)ZW~!z@1YWJOJEyr<4=zilCUug=CcBLD|G2qx2i8$C>TJGi0LB>>r(?=VZ>-J z*Z=~*AJlU{%%MMFbtSwW2~Fyr3t;Cb`~zj%Swj3){K)d;%c?r#?IO zP3BQA_?z3#mwtHwVMklj#?`F%4W~7Cw#N%CN%jo)k~VX-+NAC7dAaE1FPFVki2QT8E!ABb3(I-UnkkG zEOj~^$CW2LZl+shub%#39{oqcO220d3qfeZI=->4z_(>LoztIWchQqZ%8O3_u3Ksx z?9M2~_@(ILL4Wge ztiJl=_PS(wQvdB_<3CJidN8Mshm#U4yYY3K{I1<}5v1?7@m`Xu?}ab-I=Z=0Z!!G3 z_lGLv!72(1IP$Ux8~ouye2@Dw6i!1f@hxmT20KtD#>F_760E8*F*8|uhX8X5)+b4N z;B2@D>GSQ89gL5)mKRU_7wvoeX77txb(@XWMAb)SDpjG6zWUq4F{%rP8VI;1A*|i{ z6;2&HUd?ae(SmU>Y5=l1ukG6x6M0czBt}T8Wx>c42L8)4-m|gHqER(hXJ_BfRedk8 zia=XyRY@s9-3Mm@LEra0>v~uE$9FJ_>$UlMpuWoAs^-&DRbTFPpN_csvdIiyMWCim z2Qc#|Y_d@aMc?>@j7ZrM4%8~QVV!SnHZK!@e1Dt05TC2BvozMk4d_PJOGDhVFD;!yy-(D*g$ENcSpi+G8 zGh1_FM(>ad!}-H&e4>B($!N_(MNM6~T7$b13<>E$tFU|GhldpO(cbytU%A?|?vk7H zgU9Xy_a_)GjermLdU{h0620W6sXdXZtEw6E4eZ&1z7Uac_6?L_oqI*(8)o|IL=19* zpA=q2`P^PXoTBl*${SRkRYE4@^L|)c2J`MHzswvINd@8?Pq~{LUH&cjKqI-jhBAiE z7R!u{j;3j-BJtzPC8uU6>v3&|F? z?uQcFJ}rE{V^q9{xQkrMD;jodN2Vm$t4~8KxYs^H^FpyW1Cx_5Oic|dDYlh{h)Ad(x&$*6%uPe;VU^076-XSsX(fnmj(!Siw>$T}uwUEaG!r40@ z23p8>xhLb-QwoF9lW)h3)Gk~9@;?0i&sWRC z1?~vJ4QSa&9duJ3QZX)KBfz0G2u1>{B$cph@E!Uaqok`KEMDdue3EmodqU6EaBsR& z-~Ge&MO&u!>OW}=3=|Q)*x-Lp(&S!$SWQYYnG!<~Ml{!ZpMH_o`KX0w=6Ow2*M+ks zM8j8$@m~-VB9&^SP4|X0zQUhV^$?Q>{^C`!4Se}r`)b?Sh|i_putji7Wg*o0*nPr( z;roRMP5>q>P1yVa?4R-v>n-dT=bB^$bq?xp@ZFc;P!|=;`ly} zr(Z5lj_-+NtiZ=!IJM0E>-*AcAc3|&>bNfv?8{&Ln_`arQnsSLsV^bsGo!!Cc zr>ojQ5-qy+>dIh-kRjM`B%1^ErSOGHzD$cg77wgV|LD5Z6^Z$7gp)7%3LU6Or~pR5 z^K2Njzo+wrRQyazNRmRK*noKJgt^R-4WkI_?grHQO-AOwlh~=g5|W~L67%Z4#CkWc zdKS^&n$6q6&?cKzSX0~=Pod9a`hHp2(2UQINorDfaIUoYxusQO^Fw$7EK`G?`cfj7 zh65K&-6b-Ik4c=c57Q3Fn)2d^L`OW?lb9|ULZziXuUC%Rn!(~tVAPXpI z{MnqJ_Zf}t$_Wz>Az}TJrEq1|Q=T2a`?*=|OG_^JzTG7}zqST`uc~Ug%s$!C z=`j1S`F0~lGk#7;82h$6JTY-me>mA`vHjQfJj?HM5IrkP*L+g=7EFoE#&+j5e;!;^ z`|LXz;6MjHzx(;R+glugJ3{65hO6)%&tCUbQ{#8XFZNJPQqy}m1dqlEzM zL~mX$v_wm7)%Jb3M6N!Z6M0RTXAOD+Bgd#4zV(jw(XXonUH03CsFXbZyihl01XLzR z(j6@R9}6hegyWp<7P;O>oIlKA8EylHkqmO>qI9-Z9+V}P@M62}fKXQWM%&d_XhiR@_eJ^1~6e03y(d#viIePxo~?FB7w zG1X!NM-KLP6eDiUkZj>nISCU*_)hZ5kd4 z-G9AL>Mvc5Uig~@L{TZh51`I-NVq3gKjNzh6B$b9u0_-}Qd*I6z98a>oa6U*sP9@`0w6A^#2jVK;Uw6a5X2Jn2WiDb-WznT44iLZLuLu2{9cVOA9e)nW2bN$KU8}P-J z3Q`)H6Xw)<3J3KmU_wdU1-*8HD584Nz2+#1`q%<60c-I`*Ex|*f;EPhIX#`mS5d$_1|TcV&o(Bqv@9d$YM zYA@rNAa6UJTDZW*ZYE{Ro(Ld@80q%rVk`2*Dw($}pY>oJ5QUUmQ&K`SHVI1bBMg0L ze?kw0!io&OI_FNkbAGJRyiNLh8}wmU21bEV-Mt$Fy0_!@RP_3~flaRxXqnf!gKnM8=z*<>$o4X)N+boQsZ=QzGr^e1lby~lv)vC7 z#Btj`e0#6m=fW`RLY@xa>+z)1^-B0QoqxN@r7cOpSDInmJF3>fNm`NaeN3zd8mA}3 zI5`=V=^riyU*|kbw+{0}LiOE0l4D}z&>*ok<1k0nD>dtX{m9!JxdR7HfV@2FrEk}LlE>0XlEH{mq5ptbOWPE22w zV4Ff=Y1PXMwvur|DU|1=0eWSA`udeG2zSAsx&*SWc~cQ97OIaO+Fc$H?Zcvo}UvYmZ+JU{Usbiz3Mj# z5=Alh7LupSn|WzwX5GClzDIP89?hyXIB8Z+V6&M3dZ)u}k+Mp83gm<;p~cSi(X%=T zASbpV%~4_}QyyX|XWf(p8S;~ENAfF_rNvu>(?Cc`bz^S~PU3!XVoBTI~lB`(^CS;7a6%$-N1K~`lXku!v-(X0*bIbJUF zlOD@WN!bw&DoP_$pdD~&*-xa(LS$u?U$4|Caic&YW6F^b&zDY_B$ zZ28l)w3HT|Dr$0gm@9{_Eb{<+51fUS6yKy>H5l89Ma_IC78rK!QU2xYKPdl)r74$$ z_(EO+4hivbjtH(_VQE)0*pq3CLJ#sy!rV#+3FDzE;cOV*+?$`1_VuW;@l2i#u6zfE z+P_Ec{Z$G+q8n7z;-x^xv~8^&%(`ZzSdG}X=&Mq zk3JAfPe*t2EGSs9x3@QAU+fsheRFd=5JQh@#TeYwwD8vMjfSXahHEO(rznTCC8H+s z2K&^pkTEnJ%$7CwH-|idEf8c%(}a)dA|H2dWFz7-f%{bKps6&NhbDxi`Vm_fe^*A3 z05rlODyJK&wpr6u)nW0oq6DCbB5NR6WoT6kc;K;?1~5RZZoO>k$nCkD$hX~d`Whs` znhI{o(m<+4;!l&=cf$vWNJ(WM|A>-V5T1}_%DKXE9gHioGF(hWW zHJ3a!T`Z3sPE`7*1z&$6&xsvgvB?D6H3LZZOa%gf78tRXViroc`4!!iw5M*UUTN;c zCBI1qku->mzBhEgYP*@!BaZ-{>ONMpKH!8RJ-x0H^;5|6MaAp8CEWOJTwZJn=(LrZsC{2BB9O~Y;p^P8SssAI`-yaE^V}UP;%oNpG`>wy;C^}T zL$SBZ7C$hB^IcjL0i3R^H~*Sm;#H?K$F6f=2zn$58O&G6Veyo`MaD4As?JTWcn~Y2 zR+sxJ%OxJE;0-DkY*0~Lo{S$U$fBhklIUI?264$p>Vj+6sK2kut#`F#2s2)(frVkFnu47qN3K(mLRW18&s;s)5 z);;x##@pUXwFVg*{66$8nDAsL$|UpsUgBG@Pk&WN>F(;lenNP#)11XdzZKKpIVw?` zu+DjcHe}MrwC#_eG6uCIETJIZoY);FQJwEO3x=~ca^Vl8I*PZKi_L3@J^S^(j%NGj zuxvZO4edW$f06>><+N~y#xMto>?5B24ttHys5Le%zpag zl?3a7ydOOIQg6cgM+NaF2+D09JD#wLyOS*h@;fYiJl7J5n>`L%F2WC_rdA}6k0e< zUqeJdl6yEkm^^BSHI-3IQBbIl@dyt;B}61j$8TX*k0FIXNxI9O?dj`$kbBaYh=hS1|?Bpc>oPo3&#nRcu3`=%=Zvxva3sXX68hjquaOl!B`D;-6mK?;1L-YurClM|Xk^&(;8~jV!ar0-$XPK<70DxHV!f^TheOZo^EgxT?J!r58HS;bi4kA&NX^1L_>41$xhlZ&&nk;zGUd3kD9MddaxBUNWOLogS= zPfh+1Lr>ZWW_Brlk24GXtDIuHFwKHoB@jMtpL|MGN`UfN58O`PVVkXo^5P45@v=@8 zw5#>YKgBxS6Nf7}@wj%S?G=o^wjf@6j#|5`Lsz;PcxHFxkR~zAqZq7N7M;INRZ)ZG z%u-kmt(h)Nf;;CmBULdqT!&poquFH5Y47WJao$fK*HW9zpL4XK0lj4H&>9{;gg*eT z)1LMcUtlWf#wzKC&d-Q#PEL5&*4x@!eGG;=(WhUv&6ywuDO0lq7&+rO2&690P6Kjy zE&uBJe1GrGTjV+ev(kCn(<1(7b4il@&;4n*yq4QB#w9OO)zDOAf(i4?R#TY!bPyla zUfXVslbfm@_p%H--PG zdOa!F<7i949?mGsNytkfNgnI^R9>;O7vz{;79hJD8)Wq4j zH31%;KN_WYE%KB1M`ZD* zfzq{R$9u=R;JQ_SNj*ktX($UoArVhBpF-+9PU@|$)%oflUz+G5)LbQvi77P7V0c~5 zn${4oGZlb!87Pu5sy$!W&`IrZ%gax-RO)1)D zT?s9`Lhwg)KAez{50t;GD&DuV`$T_hw|IG^#-7B-Avim}Z*{!BhHZQiZ=P2ffOV+* zsMcZ?E8$6c#x^dnUtbODsdY<#T-2N*$yr!d40wO0B=0Bf z_32;r(d#2ZC}NPy^)f6SVx5sFnZFbiC;78}@NgW&+kR4M>xUrOi!JwgF~@pHa0IFn z3L^iVna9Kp+drL~HBF)KXr<(;CZ+gmrDbgHo9!620}FDU?TWlCRo|2z%1(4w=G;Kv z_Z1QjxgTxhwT>-Cm^LA-M?tI_Fvf~7(xZd0m4uSuQL_oKFDPW$wJIvR zisGijhqwD?`w(wh`f~O>OAE_@7@j7nbhgF_wcs1~sszaiYR80e-=2dTxg^E!M(sFd zWk{!NheF@fSWnb{$0F3~8Ba~v#SP+^5LpQYp*0hqsNpr-;y2vlB;C=YMBtI?jOHGt z`M_|_BU|~HOO&k^4DS^b&+YN;rbe~T7axtTfJh27}N&ol8(|N zM5~81tpod%c=xoO2Nwk0%+H;`PCm20eAaW(2P8@Ngp+qP9(%G3h#+tof|7Gu6jfI# z$i^g1cO_}giq#39?H-ibD5UCU5Meuu6u&Tw$Z7d+mLNvrBO$syG!DV{l3nB#Z|)2R zrP`Kl7SEo}5e6m5GIT)Cuft3eOUS^H78Q%4M()KNsaH2QH&<7?=?vrSM888L7ZnwW z^Sd@QbrzQy8G&1Yct&YZS9yTZTB>tDii#zn5@8}JH*GQu@P69tSlHS!GH3k|P}b2{sxh~ln+Tfj zT4ALP61AkM?{r;Q$`jSE4!6aE2XRdoz?SBk6NLe2l+cLkA3)$SA*0&7TPz~2zd4j=ip#CBN*0n%C)?r@vyPafv};{= zMn6PB>_nz=h>@%^pP-us+LdX^E=c`}sMk`FzlUC?epaf=?4Mx1za|<+xq~fLe(gPG z7l%@X6%vXYhy`ONr-^+Rp1P~OtfBu`vNYm`7Xv+I#XUZekv2ue<9qZS6w38I?(yXg z4Rq3vr(NOek3Pacvy#T|;d!_EjB%|U{p-;O0J3Uf#rx8n-&{*gwwkLC$YbBdjiu{~ z=a043IBam*|2_osmsfR$+bMDU+)nLIjLQ*Ig>&H}RkR}MSl3$8Swl)DQ0wRo~tvRANqhvA4TZ5WW7gNjC6zjr$C)hg@BG!Xl zi#GgTJ3&rV$!HW<45Lls*gB;MEkY8F5{+$Y>r^YSTHb9N;-K zI)8E!GSAvqBa+LvE<=cQ58GG&Z5b##Svx4AI>_4U%Bt?eAmFOv>*lY2dAWK9(MHrq zk->&6-{cE~5KG%Oj~H58^A~B|H`-nL4=YpSJ+OwJJc(T^$)vako6<|CZ;LgekIbiQ zs?Di)+bOV>=ln9!q|8g;!Wxbaj-#Vo?+J`qgk`D-jxbENND;}R8ze%T7lINh8>1Sr zO&BwiF69~pO_pSJi$i?=AXQn(O}~&>e?^pf!A+h=)vHKh*ZPxI!9mcg6n0u0fra0M z_2O;V)qTZKknph9s1AsUf2W>5qzYf*jWk8Cfy>eA-!T~CB}H3-iYE^Oy=uNS%tMi% zkvOhYR^x|6dCJzZ+|3%6`%#-_ze;GmuUz3w~l2FWN$E*YU*-}QCJhi~wf0=$4 zBcPd_d|&Q&f<>d`Fv^q@M%PyWVAXV{dx+7J@1GVBng!A7(&#fIa!Z047CvO8w0u`yj#GifIbv6fD|Ezv2f_^Ey&_{o4V-4*jy3;H6Mv1MFZ-|CjX70H9r3hPU=)K z?s;~815z^8oK(~nMUn$pKJ{Wc`*;cuM?~5O#4qeqgv9_uMw77{{!@%E)&50jAXoI- zNc4V6jagXCQ1d{!A^GkyW6cFRsB{|vG@Ze1#=3KHF zrBeNU+Cc)V4)`)|c;c0UfeOu9#E*jGNxpS_z!KGmcE2LU@OlrgG99;p*{Oj8iw#w3 zhjD<`IeguZlbYb&eSUhXToDV@3>jKjhT>w%QAxy2PvafX32zZSCVyh%xLf$N}n-ZD zlW&-F^PYh!JL)@i;BhG0$>HP_7q}oN)BChHD4&QF>C&=PB`#>>&ph2od4BSf5EZnL z-J^}~+l^!}jug4Yt_4+j5)5-d0Dgl2X=BoEl-_x{*9TM04>g~ggOPH(6l-)NHnbDC z9QZ7SrccYn5zuwImPFVDDnJz}JPSVWO1kGJ#{D;+lw4bS1Fx)fVX-^4tpY-+JFis> zQ==pj8fPtC5YVo*idyeTA6p+1BAofg9hjr0E-^BLjZ1l4)yktv(`nrDe!{^jR>q*A zvXz3SlPtx&DPfGFNE582ReohSnEtrGrVZh%3RG&GnRzLv*r7mY%6P>MV{4<~Y-dk! z{bSHu*keh<&P3-5e1;&E%!*0Q35lSxz0X#Zb(#;h!dLLXhQ!TkiWddg`e|I2`(ZMw z@^^4aR5po8VHDY}rufHk@16~L!Mg}@o~TQSp5NY#U~PxXTqa=xd$W_ugKX}8H%+Ti zQv}J=iO^KzXb31m$FpU{)5MF`wf3r{npizyf5p?{Bhs(G&y*}W%sPSx^P6={7eg)#X7<5C2-Bv(?d;RB%i^j@I_qJJdW> zCdn%Ta(EG7p4-Jz!MEnl9@h~K&XT#o23^f|l+?6>;gY+keNeVipB7aQFc;;kMNA8$(KWfK}SRT?^}9FCcao=vH(k#oZG zV&P(Vsq_JlzJa3Z^|ZK%*AH1Jj+X$}R}oSCGhC%=(D0btkTZ|wY_f{D$T@Ea#m3BB z7girh` zvVUbLHA-m-79It?9GhUY<)KLam6HhT(2~FykNcA(VhC+x{xd(Hq(p%EbxqO~;`&?T z6TtSNMinwViwhK6c<{aSIlUMzILf!`WA2bljA%_=J_Z83jiqdHh67<-fE0=ftM^}i z@}}41g8tdedo;IRcYG(*r^nYvU4Ttnr}E7CVRciwi}0isL+$;S^)>zd zC{Y3rOU(3{ywzY@hlFXbDe;C{BcXgozRTV3QmTwPmhZF^N87d$7njPFwJXZ7IXY=^ zVrUm_4-tfjIpTYN0-JZw@GPMAr=DiBxQ?zo)qQTLQ5J+=wRhC0=T5#Tmj?$BwLC1Q zcH`a@Pnr`-V1?FVIAkg4L(^sZ?<^_iJBKfq1&f|~pfQU>yvGe1v5%%zj|s(-Y~)tu z(^880j7wqeWq>|Nb`Mj~W{(M~e|6bn_`v1(JxE?tXPDlFoK}+;{QiRpG}dpk4I_d5 zVL^y5GCnvdr-s3nWrI4BjJ*W4x!Q3#J-_PfaZJE0WCiHGzqaRdz9qs@Q=QJ1vUIx@KJ3k-%b|v&9XP*&D95 zBDSK9tjMT;l#~t0-8z<&!kiQnQj5ZWZZXayE2lm%j~|RE)0dK+Ok5313RY<#x3FVR z-R17W4R8;|G&L^Fd$)MAWX$kO-~B760Zy*PtVs*0vSKIoM>>%L)Qa(W$_S-?ngbhW z^7;ILJu1BXjd3WAu2{(;lI_Aqc=rag@YgY;%wc(RR>DEC35u8$eQNj|b6@-1+fhVp zX8F^FeN%b?v2!?z-yPCTF&Kk}hI$%s^Jk-4KJtAy`}um;`TUJ=VyfxJ1nnFxO%1vB zMJOo8pU@1)e*mZiYIP3i5&*hniX&9ST%6yHqG(kfORhE4<3dO7=vLMj?~}@9X>xE1 zo*+hEkRS0WUcf6)9w@C3a4}OH*Or%zox~o+3+y|h9};mW0&JhGlo@HIQ-)8HkGzF6 z+(RWJD0tY=uzx6eXyM)uu%3bnW4OsrLY2G#!S_(X*5%a$79S*JgCtOuOg9r^kdyXE z)c4H!TtfzYr0}}A7`aWh#B)M!;$X%ndBuOOko3f_HeHGEYd0sbY!NoRSSV!n7=(pZ zWMaLDnk3Sx`&j)1A1Und*2}p6%p)_$Kc~nhrg%%_T9(^SrH81{OFM?hZI$?izJ{lT z5(_!e=M@PGI25_-i0#`O`P1Z?_ap zn1!XqeA2%=k5uwwh5nj~SHK!Z#rc0Uods7MUE8da;I4xPcMlFh2Mg{xxVyUtmq2iL zcXtmG+}#OIa0zawpYN>q5A$CX(X#rODCp_ye%ihIz zrwB_BW_EF#@5IX^6O31fqq0=4H=C9@@dnWsWcLeyJPm-n5! z`)#SQPpKJRVJEBDf*h=^qIETpggibW2!V_#_9%5dm2Oc^ugq$8VGw2E`8%KV z**JUN&zI0_tS!TQot>P0$_0N3{La4ytJx?8cU!(4f2rZ8T^DaEx+ zNZix$c+{4)w$d^%B*ZTV{99V$PK;ubCmR`n%F^8+Iy>`x^wh(II^FXBV3jdGj(ps! ziP&Un+@HO}`kOBMT5Of?>yy`Wr#a$$P-EkKR1}9a^%GwuGqcjC z*O);|pv$Q$DTmO(M;Rl)%oj+ln@JR#7LVRI|GDTK!59xxG!b^E$5)Y6=HE!G&OT2* zXnyI`!Mt?IhJr(#aWtM~XV0gXh85}08yxIX{Pma+8U1t8j+BKv47!hMJ&|+_``SJQ z$Jt;jAaRe<1Bw$SmIog;LW(eWLecunGPt~zmX~*BXSMo5-P-zjdfLFw4%LS!9PWq8_xE7W~Pm3v5`lZ#k;|ma;QHQXiR_RRak9O>4Xet6PQ!CoJzdpE^$ZB_N! z`zt}B+jZ+d$)8s*%!L;!VsI#>Fn2&iC03Ujk#iCrebXBNmIP9#XeNcSePo_wOG8mE7SXbB`)^ ztsyS!QIC)3Upo5*bL?~!8oTBlytg^;-pJtB)Zpc$-PS6(t=*$G0sd6~r1%^lVn8O zM=fm)6*b;CF;PZDL(3JOqAU@LXY4!?p7_r~h=vOKXc4$(roxFK4pOeW9UXUlF*Q?Z zT4^a1w8(LdBOX{%+#I1|H*J*4nTw!#Eir_;PPS+tYn?ND{Ha&iB(&&F*+Eyik?5`5 zr1wHM(9&Ox1+EisDk(BSyFhvU&GRY#R`Wyjtgr-boGO?O z9J6_RLnNaRoJDSkf064tFpc(UvFFZ~WN$LHX5|AXC6d&m?JRngs|c$eTd6mfRo>%X zyl7u$e*W@la=82Q4t5kliL!=LG12vDkA zC?+iwJAaHtHVH8A>B7FCPpiRGi4G^<0f$$U=DI4kmlb*L6vssSt3DE8GF059! zV3Nb{PK&{)5iEfZNi=o#)HwOrOB0J$kSpD3RX3+Ib>kJjEV&s{4EY9UE&DF-nA8)}#daw8(Melo?nRJ+9S+ZL=zqZme0s54{j zS!Xvi(KgT0KE;tgEBr@&S_k3#57>D9omL(b9OY+%MTxq3tiaUmQ1wI1xm?U z`i57bR1aHsphwWGRioBhtSOzuUL&WXDX~c0*5j1Z>qy2U(=5ghWwbq=SXG!wkCv^_ zx$wp}#?ERMM@anCiwXssxtBaCQxr%5u$3=6YHgU3;TG?>?zxkPQmI^$m8ydM_PAg3 zerMxYcj}roT}mDW8-QM((rEH+9mMJsmosl!rK?a22L*m} zPyXNvA5fMW$VY!lEKW7UasMy_deBvcd{yX zpuNnPJmYw283c7-fYByM_M=<a-qW)x_!pt`Y$o0 z6fn``5DyS}d7!#Cp~4QA)PrM`sq%KJFFeA@Te8>|nTjMjC9C2@x;e$ofjgxZ{_c^P ze|`c>Dg?3oH?W#mLB7%>I)_ub6{nlXQLqoES1G6of?kDVBQT9YPXkowvf2?^Zia-7 zmxPqXiZj1U`CU}vCi1Q&6A46zqd%A1YMsP-;}PgOL$l-GQ&N^QP2frV1F4$kt!YaI zDaJ%tu{wXi7VR^=O=Q$M)t6ehn|CRD{VWG|Lk>sFX3n6T)afBRko>rz_|Q-ta22%yWeE%bC>KOq;2}>_2#Qc$$!{ieXe_B9i=bX@@p6V$*U<{c`iI7_dxI7KM(1 zfNsN^<8!vNB!`x#M=@X7pfgg&6wMP#`VyY%6vJbq_0i4(d%5*@{3a#vH{+hlZobGX z<=C?q*xz$l;5)|>a6hc?@H6x{l-vZ`#9L4pNuM!})a<4>GrQqQw|JKC^P$}HcxtAH zycM_8=dqe9lZSf?b6L9uDN`hFE@p_<>s}NBt}KBw4oM4Hn#64aw4zq5_uF3m=%-Af zgK*=bvz2dHd}^`F_^`Ly1EQIYy-H%bz5={X1B!2*6KtdDvDZ*Zlzjd`%=Uvi`?^)0 zLH|{m8TB~{?bp(>IgivW?Up*>6!{_FiO2bjk}e|nIXV1I{toW4F<61&K-EXA^p?m!oCq;A zE?<^V$76?kSZT=dioC)Yciuk+MVKbI$DK>)wBW6LXC-10VXMln6rJN2Qn4z!33Q%a zi_-Jiyw{H^L&cgq@hGlLHy1@MCGgJBq;8YanNU5BNEcOrCwiGJUR_ZT@Y#4qKepxc zQO9DC`FVsjJXLUmMj5Z=9WJ7$+~qz}eYw@-Y(B~!S1)7n?BFlNeDVsFWwNuYMHb)c zmm9K0IwtMo0}}zv^Go~enn*+AujWz`9W8reTLdi! z^{$BwB|~^BYAC)!esoY>AjfFD z-hn+hpTKVAq9B$NTBXdqRSGAH{p)Uc&DcEFtfw3(0>jXpJ`OHxTcwfHC>bk%_n7?EvnU zO+Ncs4J*_dfXF;W@XpHp&35Hoe#>A8ACyCWWjxe-e?2=CJ(7)l-3%oo{QVh!0Y7({ zyRq_weJ{ES@wz*;-eMEH4-Q1$ z%||tMDwk)}Z$0@lI#*H6^>4bKsFM(Zp&x02TklKJ=QnsZdPmiF*$na{m%H*@OZ|D+ ztO)SOAEt{=i`W_jNf17jguJB<+;ifgWTbf7WhA_m*yRz`>3W^_76YpldzKu1t<-*F z91ZT#r z2{zsF^=PKm?(HsPh7Ug#b^YK|CcL#nPyascv7)@tfVeQ8r#%R=#^3g^e&BP22tJxA z58cl`*woUC&tvddEzfSmrX}-Ltn>UBKQ9LLc%SsaCHvhKAC`1=oy7$8c0VP%*4VTg zlP(ioVb-FZB7FUh$Lo9g2!bg|NcDIs$jH|A*EWAQOnF8_y%+tI-f^;3^EPz6TB1YT zRQ#4k#rH0~Ga4#Tb82gxkPL;UTEtB(CmscSTA8XeQ72Jsj@UN6k&n;~qEX|_LRWE(Z%?R8a2VHfmneFQKmX>#n z`C*v3Zg%TFs?$$Xm9J7;ic2Yzo$qmI)gKwQ=!!_phXk9i`KEX4dVJSH=6d`gk2K|I zz8}6$rJhO|7(MmEOg;Ka84(ccKW+fQlc2nsGH31==#Kpi?e}TEX}1}KB{}A7>j%$L z=cNW~|Kv2tFj^SVxtH~}6c%%r$Dk{K8TWSVKl2UBDoNCJTo`Eq<3qG=a!fnk(+Gw; z4^F?Wym_y333S{gkIBDWC9>Z9HmR)iHCoEsf97j$;0OY_{GANry70bPr(622tU8m3kiU}eE1O(t;%x~QJKHocp=y7;^1+~VE$@pGs&@U zF8TQQP=4XNUnwN|=}&f!&~1jngRk*PmlhoiiO`i}S0^&=)I-l-s>7Dsa|-p; zmOiGZ+ynidHYcoM2PJrSPA323f{bl&DjLg3mDTwsyP!QRS^Iv@KxTVkb(w?&vPY=rZ5+hnm?oqa$yi68VvkK%XeF!0Tnl5%C4`v?MUCS3 z5qS3rb9Ix%X=h}&o#4ylxrRnO5pxuNkzYo`KNu`%C<$$!K@uZnQJV5UvZ(nv1W`(Rx;ScwD;gNlZ?J zL7e>=BoihI?r#$I9FwJ^oh(o1yOO!QnY!@v;^BZU$EF03x1l)-{w_D0cTBH=Waq*| z@`~8{n(seC7jJ71A60r>CllXc#z3?=v9OAA3ZLC)26h@k1AS|qW!!gl?U@b{08%?myE+>opQdULlYk%gf4 zUC(Qk^ZUk(do0mggo+ADl6e%tqS{suD?aqS`II3?@V140klDj*W2$ec zIx$Az9bc*7;LF4!>doT4+pDkL0YzP6_QOIL9$^<3FvUAv4)?Z#t-{egM|Rq(72xKy7YLy6P1opu(-}$sJ0!hm!xLvJ^@UK%sMFxe_!>r~Z<36IG0`!H`vF=VXIN#j z^eNJ<(pXY##Rh6V%;^(M+L6f*Mdk+Cgc;9IgwlLO@|98ZkWK zo_wQ8jndP6znL4W!P#vg(uCeFQFvxbP14(X=?E}DqxH@u%3@sm!1tU%8k}lLbqF#` z4nn@Nx9ig2?@vq02{C@}I(|1e%nn!toceWb9akh{HLN8cZH#y=jR*H-;Y2?li37X5 zyVINJPon*=8TUO*ZgyO06H^Ir@h*d~r=`uS9%2 z4wr8E2+_aRWwwMC{>eW>dwJPqc$@^D!OQaY_dxJ<;p`Y=OlbE9sk3ckP)hYvec8}) z`dZ4VRi&+6kJ)6U^aAlikFx^#a4BVa4Tft2l{|tj$8yTPk zI&{RW6pNgi98(S*3R%VPUj~-#i`AkC)O(#U)ztX7-|J0qiH9rwq^G1_F}Y$NK8V%Y zCD(p;NftIThN29-Rfr2=q-WC^zqohq&$U9p&Z$X~4RIG9tD_|p4H_b?^HyRM-TtS_ z!}_km4;yj)k5N>lNnXY1aq&1O%#9lwK9JTIW?P}_2AOr&$sE`a2F${oJp)!PO8$H& zcFknzn?4k~+O~zydTPo3PST`M9Fa`Vo5b*U=ay>&KVN6H{GoqrJq@NrR1$xGL=|~3 z*7oK2rDwwPWhAG)_^s_Wnk7!sqy(pb68Mg8)YPnBMmLaTDDx}4AmGS+pSIZRmyKx*gS=#zUlfsykfL%_@14eHy{xx59QViBKTDU285`_EimZ5_;=&Kl9C5(8N> zH}cRbWC$!vdbXSFJp2w9d?~v8yI)@ol(Yr8Zl1RMF|k#JmcMMj^i6%+rrARR(pp5@ zW4&jivLj)PzqZ~d-#dIxWBlGntX$0%Dl15FAJ)SY zh10v8TyKXOd&~PS|K+iM{^?KgVjlDC+poP4lfAoAD$eML6;>Km7!s??ay@DcACLZT z^*i3Ih3Q1WnDkFx)w$B)(I;3#&)&WI-wV-Vj&-I1u|FRE1}EoH9)-!8S*oBw>dEAU zGD>ZSe_{g3IdgPkERYy$$EeWL!kt(~L4s^6<5f&xRf7J5kkmw1o8)SEoX+bZz{d%3K5wn&!D6$pX8mgLvGz9oF($UQ>GEfZ;L}z8#(O64nbF8`;zKwg zq+tYJwQm|e>`c6eXg`?4Qh^D#!YZfpo*m_MuaoN;U=-)*zdM_?-aNh>nA8fSU8c>Q zf6v-lcH*Y|+dXy8`l7?L`y9jkZst1Y2_focK0zN%p{%#E_3k&jJungZtp|#4{>Dp6;|&ZXTOYU)dF>|Udpzf4kPWE zwqAMgKt2AwH=$QvKs-}2Gi zgzge>&Axv{IS}j@2P!vwy=`xFFX4*iB^z2791f;3{SI051sJ$(ZJgZ&jw)({wht?> zNS+_ZN@NU89~$QiPahL{VDChau<>%(p|Cw(CkNdRdPwwo+Ry0}>DIjNb-nL|h?@1B z?+O5f`0Fihcdvre+|3*kn>61OYVQrXy4+>)&(-q$wo0O!C-g`XBJmF!F|U6n18`-T z!-W2U_)&8QlI|qV+(c}@z#2{W{Qm$bALIY zv63%|Z@e;Tl__aV%D4;e-BVSSzA9V@^OdICq5eI!AC;!ti_Cw(QcgNm*w5HYC9XAe z!fzCGeGUC$KnU%vE3E#F=)a8<1EN9(=Ue=Ip)BzV`*Lz}B2~6rp?|6N`Uix;Ox)Rsj>vVtr^Qf&KWyb^- zq3ml-i#a-eYeh60!~CTYUor#kO}{HHt-oE4*1qD;_gEi{lMmM+FTCzL`5$+#h_BN^ zxfGQpQ~(Sn;QWRg5SRa_1psF`uWzomoJk-oDUN}OuxUZD*oOj0SpLmx!!3fzMS0eE zO=$`hp%%W@NK>oi^HOu;5|{h0t(`2Co-Uni3@}e*3U|bj@2A^(*V22mz51zd{~&mE zw`he=|Gbc?P8MLOln&b54jGP|qI-w)9ELOvng(;PUqD&xJ8QqUaPt$W62`Xx$lLh` z0qE{O83Z_K8rk9Dr6`zfLgZ$qu#Mm^%2|B-{<`NmSrD81xmbE$>V9RjLTXbC+(Z+F z&5XCec+4rB{Y-59EdKBi5kcB47KB;9|1|{>v0bM!!Tn(+tHj7Z43Fo&JX9E%$AeNDHs`D&btI?v%k)_(>T>Wm<2By+?P@aZ+gl z4ExzFYq5A?>c?(MEcj&eB-TFn507#hxaOfswpqoBnAtg(bLi@9)E2g5`04Q- zQmzQavZawqrtWHhY^<&Q_h$Sh6k}-Hw!bZ5Obs|R7}cX=Zek|}TO&c0r%rrK0-P?b zEd-v3D`R%?YA5)4Iy14VGH7U238#3Y?KwCN9_G6{#}c*p%&E%MECv=|d(?)p6~PDe zWu5uCRt@uOuoPp+KLERuRtKX(CAl+-boipy;OTWi$ESs{WU{5j&*jA1ee=wX9pQo$ z$$#rELD;4@M2eFktE5K31VmR&G4vO8d`rS?IiiA8j3Ec4s{k zdiDzZ%+M<7m7}Urn24~DoLN$J7Js$ApnJI?px0K0~EOL{8W z@RT-CY%K3?75E@}J@FmNypwjMjjO#;xLhZOEaFCoSba7)nLCd7DIX^(uj^pKRPg2Pcwk^H|SnNE{m%y_lr;` zX{%XDJ!%_OtWygcZ+Ah1^W30qNv4;PghcyqrF=%f7(dL{qSjx=P%)a2kRbjpT#FBA zVX941AqB*Gy)W0!z&~7FEw%vg+_kz~)oamY#p=g0_(y_*l6z&QCpBWns;X=k_}r$x zK0>>`k}HUP19ni<@j9HyZBBt;B=`U5FsrAGA_PmW6U+Fhx{T&ckyw zH_k+cyP3LMathZR;EF>1%)_$_tqvNROh;Ra##iC6ds!AHO`iHlfrs4P@$lMkkR6w_ zKUy{Rb1+ok5>`G#kcyKt$-`hj5^ZdhCNVMU>iLyY{ptBxgHd1Ld3=tIUDq>lMM*_v zX>E?r^tcdU5bOk)Ueu)Wn;I!8JbpOLa5ePh1Cdr}YlW>!4RGE2h6kaogc zV!nAthrw2M1(qDbW<(qp#*HqZW^wXSWpq7r?@zC&_uXj*uXFnl#QJPC8YaXOKpxyE zTlb#%9%dCe3oJpr@6P$w=h=)ymmt=+$4$FKDN#h)J4K5CjNa${HOU-6$n2Lbme<&y zo}Q+EHC2|j8i4$OL`H!~D$6r9S9Z8~6%r_eNN1bpwx($eq;pa6jGpEucb zo&7p`Kl{IMbLO&4jEuEoiBO)Nkz~5nO`%;H*lR6k$SDI6pl#SfVPr&2MpH{!DMxAP z`sw?r{M-6PX_456-5DB(^@sTJN@V()f5i<4WnPIu&fn}Kg|d_MXse@f;&Hsh9f*>v z;rjtdc!(YWI)2&nvkwfeEM1MYZH?`DrYbh)6tJVn2aszT9)-|vex`bFoHNp{5K5#-@mK;Baz||UW62?9X#p6PNPp2 zW5hyG_-TJHlQ?~#j6O7ir=7Yuz>*##A4!fzh}T4g)zzsRFB9dV(V~d>sQLI9LTj4f z*Aozmb_KYIKD2gSu6kIuu?bs-JyXbUO3vHG&I>Oh>@ugTJAtjIvVpy?q2;ihbUV)N2A4mPi@bLqyi|9ny^dkqj6eEGTbj#)&)P4^A>p` z(cnxN)##goH)~kkhQ~RjsgqwdrZw-UyA4B&ev*{Di?Hb(+=~ zZF4kqf8m!PpR?(f+Ul2C{Y=UDp$$x|n7GH}C6%#{n>XsQ++aGJtBcFouEyjkVLqK^ z6f{v8TVRPt+;<0v1<`$$vU&NSJAA$RJ=fU6&&;axr90h}Rdr{jXPSD^X`|L!m#H6o zBu`&pbwi!J5^0JEZd)s>qnHZAASGDLvagjSKY`wZx9HH=ebu;#b?c%ID0JAw8e_^H zuvYRG!@ezuDgSbp#X%03_KY(G+nrq&1UfGfg>>|F?)mgGU#Uqmsuk zt+%a&cJchD$!wWm_1Nw0tF9QE;?0^B6^4`G!-{lb{<51Ab#xJA0@6B-_wj)W#s?@p z5NNPY!#d8PSVFw&w_ZpgEt~1{^*{yv9Z%qQtQwkqt$Q@%lE$Iw2J{ogf?&>S6QzF< z_3(fpqg885!B;8CDl{@Zqr_{>|qvIgptQ?j;Ry*4yktc*A!EMSxlY@$uuxYr|U5lP84 z1cf3Ir7WP;De3W4A^!}U;xCfsUkBCV*K5;gqb7CG-hJ!%hlY)86CX20eQKr)zA7*O zNz6-`etH^4+A5JQV#M}m#V2H$&m=7#&j$vj2KF}#38uh&>jU)rsxlaaUBTJE4cP)Y ziES&;4^r%kXW2YesJixqHveo_=Pj-(knTzBeE6CM5(!h}g9h95;+nW%6ac59r4?D5 ziI{c$S>bGfl(2RC)x+_VR_5k2^+{b}2khTSq#>MTD@{JvrLt;ys^1DD>&=9a$HvWQ z2U*Mz$*7R#|Nb#Bwv`E6WsGg446j#fE6%?gvHzfy^WAqdTuR;V+hR35sL7InGGCs1 z*J9aOQJr(HKyH;X!KQ97cUue59U08umn0e_Z!ryhTNLanF8MWx(`n#~Dh$OFhcM`6 zsCeQrk*XUMk$f$4ci;`;cic{-|#viw`OUtF28&}xvm zQK@nEblBaKZOaRxD;Xpi7lG-S75N#d{RXs$GdXOHti0hBq*TpH8=7B}yFoNiL%M@7 zBWY2Bg?XFQzz4S#TC+P7RDv_Va~%4VJh_^Dx8?ILs&dC4M5*_)ZBvj2}YZEseHLYD`P1 ztK?R*TGZESeZAvtq^azJrg%ib-1rO9>WDN9Qp2m-BK4z)doTikvboU5jlHyoMB+bT zqtF_g+p=OFp*J@+hF$us5pN#6f`GB7$Lw5+@@K?!na_YSh_V!ge0U}TsH3YB(q|iq zS2ib=d~q~yx&aW~E84?}?D@1IouznHA$E+xU$ygM+7|3(nt2%AwZ z{-*^X6(@uB*&3Nzx!~tHS{jm=x>?IWw@aOZz=8M>-8 zCA8fTQkGN8p`^syxC#ORFyLk)etqeUvY?kEbhFxl_@)O*U{ROXXwjE2RJijDyuK8BAlV=4chxX`nL81 zKU7Fo{}r~Anu~S_L-bPPvQiGeX2web0qHsJXQjVNb zDb-bkywvjv(C6>M&Tb2S^wg{m1X~}_iVD!+>@DKDVZP#p(R0yR7}XM982F`Jo{6B# z|L4sq50@e{*%VCY6mH1WtP~F=Mfi2vRm|9ELWYc__R_Sy4V`Na5 zpweeN)$|0*;<`pgOfsY*vM5zSmVWaw0*059iOAqT4^!q60w8zc-KiFuY$rMahP7lk zGM4q(;$~}v1#Lx&us#)oj|-u+cvfW1fT99fPQ|!&lQUwFq1GbjQANW?C|wZ2mYp8j zefHp}^Dq}6%$yqXT;yt53N`-y%tJJo&*9>`kk(;5iYz@ zdZ92}OpimDe9$A;hkC7x6Ug%C8BnV3h(V-i^j@*a# z592Aq#=fFd2twn#is{oDe`Xtv)d>b}bG+FiOMF=A4o4aSRMSfZx*iR%;VBpZ z$tCpYC$jaA3dO?HVVf{nzQBeLvP)&WOU2t<+u+*!F7Po6byT;B&gUFM`1)i>N1Zgu z5_b)A(v#h$J8|S0+{*#%gko1^h#5r=9cAZ7Tb{Owk4jan!}+yR!BPBfR(bn&!x#Zt zkHYubUy3qgj(seCOHd2*$Gn8v;K{BJPqhYJfC4|u3=D-SIzb*$02r>fe~;vU>HI@- zms(nu-v_3;q(y72B;wo8L6&|cB%estEAL~9sDI=kU z_nDqR`jI(*VN8lTxt?;KC%$N3Zh;Pgiuoz5FG&3HE2KORqj3OcI|QB2087ZXir*Cl z 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�!%k-Vym2|Cu%U47@1^Q- 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
+ + + diff --git a/packages/agent-graph-ui/package.json b/packages/agent-graph-ui/package.json new file mode 100644 index 0000000..d4887a4 --- /dev/null +++ b/packages/agent-graph-ui/package.json @@ -0,0 +1,59 @@ +{ + "name": "@looperators/agent-graph-ui", + "version": "0.1.0", + "private": true, + "type": "module", + "sideEffects": [ + "*.css" + ], + "files": [ + "dist" + ], + "main": "./dist/library/agent-graph-ui.js", + "module": "./dist/library/agent-graph-ui.js", + "types": "./dist/types/index.d.ts", + "exports": { + ".": { + "types": "./dist/types/index.d.ts", + "import": "./dist/library/agent-graph-ui.js" + }, + "./styles.css": "./dist/library/agent-graph-ui.css", + "./inline": { + "types": "./dist/types/inline.d.ts", + "import": "./dist/inline/agent-graph-ui-inline.js" + }, + "./inline.css": "./dist/inline/agent-graph-ui-inline.css", + "./fixtures": { + "types": "./dist/types/fixtures.d.ts", + "import": "./dist/library/agent-graph-ui.js" + } + }, + "scripts": { + "dev": "vite --host 127.0.0.1 --port 48311 --strictPort", + "build": "npm run clean && npm run typecheck && npm run build:types && npm run build:library && npm run build:inline && npm run build:embed", + "clean": "node scripts/clean.mjs", + "typecheck": "tsc -p tsconfig.json --noEmit", + "build:types": "tsc -p tsconfig.build.json", + "build:library": "vite build --config vite.library.config.ts", + "build:inline": "vite build --config vite.inline.config.ts", + "build:embed": "vite build --config vite.embed.config.ts && node scripts/build-embed-harness.mjs", + "preview:embed": "vite preview --host 127.0.0.1 --port 48312 --strictPort --outDir dist/embed", + "preview": "vite preview --host 127.0.0.1 --port 48312 --strictPort", + "test": "npm run build && node --test tests/*.test.mjs" + }, + "peerDependencies": { + "@xyflow/react": "^12.11.1", + "react": "^19.2.7", + "react-dom": "^19.2.7" + }, + "devDependencies": { + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^6.0.2", + "@xyflow/react": "^12.11.1", + "react": "^19.2.7", + "react-dom": "^19.2.7", + "typescript": "~6.0.2", + "vite": "^8.1.0" + } +} diff --git a/packages/agent-graph-ui/scripts/build-embed-harness.mjs b/packages/agent-graph-ui/scripts/build-embed-harness.mjs new file mode 100644 index 0000000..1634052 --- /dev/null +++ b/packages/agent-graph-ui/scripts/build-embed-harness.mjs @@ -0,0 +1,51 @@ +import { readFile, writeFile } from 'node:fs/promises'; + +const outputRoot = new URL('../dist/embed/', import.meta.url); +const libraryUrl = new URL( + '../dist/library/agent-graph-ui.js', + import.meta.url, +); +const { desktopParityModel } = await import(libraryUrl.href); + +const [style, script] = await Promise.all([ + readFile(new URL('agent-graph-ui.css', outputRoot), 'utf8'), + readFile(new URL('agent-graph-ui.iife.js', outputRoot), 'utf8'), +]); +const envelope = JSON.stringify({ + model: desktopParityModel, + mode: 'snapshot', + followUpAvailable: false, +}).replaceAll('<', '\\u003c'); +const safeScript = script.replaceAll(' + + + + + + + looperators Agent Graph production embed + + + +
+ + + + +`; + +await writeFile(new URL('index.html', outputRoot), document, { + encoding: 'utf8', + mode: 0o600, +}); diff --git a/packages/agent-graph-ui/scripts/clean.mjs b/packages/agent-graph-ui/scripts/clean.mjs new file mode 100644 index 0000000..8e089a3 --- /dev/null +++ b/packages/agent-graph-ui/scripts/clean.mjs @@ -0,0 +1,6 @@ +import { rm } from 'node:fs/promises'; + +await rm(new URL('../dist', import.meta.url), { + recursive: true, + force: true, +}); diff --git a/packages/agent-graph-ui/src/agent-loop-graph.tsx b/packages/agent-graph-ui/src/agent-loop-graph.tsx new file mode 100644 index 0000000..a43687b --- /dev/null +++ b/packages/agent-graph-ui/src/agent-loop-graph.tsx @@ -0,0 +1,396 @@ +import { + applyNodeChanges, + Background, + BackgroundVariant, + Controls, + MiniMap, + ReactFlow, + type Edge, + type EdgeMouseHandler, + type Node, + type NodeMouseHandler, + type OnSelectionChangeParams, + type NodeChange, +} from '@xyflow/react'; +import { + useCallback, + useEffect, + useMemo, + useRef, + useState, + type KeyboardEvent, +} from 'react'; +import { AgentRoleNode } from './agent-node'; +import { AgentRelationshipEdge } from './relationship-edge'; +import { LoopBadge } from './loop-badge'; +import { LoopPanel } from './loop-panel'; +import { RelationshipInspector } from './relationship-inspector'; +import { LoopStatus } from './loop-status'; +import { + assertAgentGraphModel, + createAgentLoopFlowElements, + orientationForWidth, + type AgentEdgeData, + type AgentGraphFollowUpIntent, + type AgentGraphModel, + type AgentGraphSelection, + type AgentNodeData, +} from './graph-model'; + +const nodeTypes = { + 'agent-role': AgentRoleNode, +}; + +const edgeTypes = { + 'agent-relationship': AgentRelationshipEdge, +}; + +export type AgentLoopGraphProps = { + model: AgentGraphModel; + mode?: 'snapshot' | 'live'; + liveState?: 'connecting' | 'live' | 'retrying'; + followUpAvailable?: boolean; + explainAvailable?: boolean; + controlAvailable?: boolean; + onFollowUp?: (intent: AgentGraphFollowUpIntent) => void | Promise; + className?: string; +}; + +function joinClassNames(...values: Array) { + return values.filter(Boolean).join(' '); +} + +function controlKind(model: AgentGraphModel) { + if (model.status === 'paused' || model.status === 'interrupted') { + return 'resume' as const; + } + return 'pause' as const; +} + +export function AgentLoopGraph({ + model: modelValue, + mode = 'snapshot', + liveState, + followUpAvailable = false, + explainAvailable = followUpAvailable, + controlAvailable = followUpAvailable, + onFollowUp, + className, +}: AgentLoopGraphProps) { + const model = assertAgentGraphModel(modelValue); + const containerRef = useRef(null); + const [width, setWidth] = useState(960); + const [selection, setSelection] = useState(); + const [followUpStatus, setFollowUpStatus] = useState(''); + const [loopPanelOpen, setLoopPanelOpen] = useState(false); + const [stopConfirming, setStopConfirming] = useState(false); + const orientation = orientationForWidth(width); + const flow = useMemo( + () => createAgentLoopFlowElements(model, orientation), + [model, orientation], + ); + const [presentationNodes, setPresentationNodes] = useState(flow.nodes); + const nodes = presentationNodes.map((node) => ({ + ...node, + draggable: true, + selected: selection?.kind === 'node' && selection.id === node.id, + })); + const edges: Edge[] = flow.edges.map((edge) => ({ + ...edge, + selected: selection?.kind === 'edge' && selection.id === edge.id, + data: { + ...(edge.data as AgentEdgeData), + onSelect: (edgeId: string) => setSelection({ kind: 'edge', id: edgeId }), + }, + })); + + useEffect(() => { + const container = containerRef.current; + if (!container) return; + const updateWidth = () => { + const nextWidth = Math.round(container.getBoundingClientRect().width); + setWidth((currentWidth) => + currentWidth === nextWidth ? currentWidth : nextWidth, + ); + }; + updateWidth(); + if (typeof window === 'undefined') return; + window.addEventListener('resize', updateWidth); + return () => window.removeEventListener('resize', updateWidth); + }, []); + + useEffect(() => { + setPresentationNodes(flow.nodes); + }, [flow.nodes]); + + useEffect(() => { + if ( + selection?.kind === 'node' && + !model.nodes.some((node) => node.id === selection.id) + ) { + setSelection(undefined); + } + if ( + selection?.kind === 'edge' && + !model.edges.some((edge) => edge.id === selection.id) + ) { + setSelection(undefined); + } + }, [model.edges, model.nodes, selection]); + + const selectedNode = + selection?.kind === 'node' + ? model.nodes.find((node) => node.id === selection.id) + : undefined; + const selectedEdge = + selection?.kind === 'edge' + ? model.edges.find((edge) => edge.id === selection.id) + : undefined; + + const onNodeClick: NodeMouseHandler = (_event, node) => { + setSelection({ kind: 'node', id: node.id }); + }; + const onEdgeClick: EdgeMouseHandler = (_event, edge) => { + setSelection({ kind: 'edge', id: edge.id }); + }; + const onSelectionChange = useCallback( + ({ + nodes: selectedNodes, + edges: selectedEdges, + }: OnSelectionChangeParams, Edge>) => { + const selectedNodeValue = selectedNodes.at(-1); + if (selectedNodeValue) { + setSelection({ kind: 'node', id: selectedNodeValue.id }); + return; + } + const selectedEdgeValue = selectedEdges.at(-1); + if (selectedEdgeValue) { + setSelection({ kind: 'edge', id: selectedEdgeValue.id }); + return; + } + setSelection(undefined); + }, + [], + ); + const onNodesChange = useCallback( + (changes: NodeChange>[]) => { + setPresentationNodes((currentNodes) => { + const meaningfulChanges = changes.filter((change) => { + if (change.type !== 'dimensions' || !change.dimensions) return true; + const currentNode = currentNodes.find((node) => node.id === change.id); + return ( + currentNode?.measured?.width !== change.dimensions.width || + currentNode?.measured?.height !== change.dimensions.height + ); + }); + return meaningfulChanges.length === 0 + ? currentNodes + : applyNodeChanges(meaningfulChanges, currentNodes); + }); + }, + [], + ); + const onGraphKeyDownCapture = (event: KeyboardEvent) => { + if (event.key !== 'Enter' && event.key !== ' ') return; + const target = event.target; + if (!(target instanceof Element)) return; + const edgeElement = target.closest('.react-flow__edge'); + const nodeElement = target.closest('.react-flow__node'); + if (edgeElement?.dataset.id) { + setSelection({ kind: 'edge', id: edgeElement.dataset.id }); + } else if (nodeElement?.dataset.id) { + setSelection({ kind: 'node', id: nodeElement.dataset.id }); + } + }; + + const requestFollowUp = async ( + kind: AgentGraphFollowUpIntent['kind'], + ) => { + const available = kind === 'explain' ? explainAvailable : controlAvailable; + if (!available || !onFollowUp) { + setFollowUpStatus('Host follow-up is unavailable.'); + return; + } + try { + setFollowUpStatus('Requesting follow-up…'); + await onFollowUp({ + kind, + runId: model.identity.runId, + ...(selection ? { selection } : {}), + }); + setFollowUpStatus('Follow-up requested.'); + } catch { + setFollowUpStatus('Follow-up cancelled or failed.'); + } + }; + + const terminal = ['succeeded', 'capped', 'cancelled', 'failed'].includes( + model.status, + ); + const control = controlKind(model); + const requestStopConfirmation = () => { + setStopConfirming(true); + setLoopPanelOpen(true); + }; + const closeLoopPanel = () => { + setStopConfirming(false); + setLoopPanelOpen(false); + }; + return ( +
+ + {model.needsHuman || model.cancelRequested || model.recovery ? ( +
+ {model.recovery + ? `Recovery: ${model.recovery.reason}` + : model.cancelRequested + ? 'Cancellation requested.' + : 'Human attention is required.'} +
+ ) : null} +
+
+ setLoopPanelOpen(true)} /> +
+ , Edge> + key={orientation} + nodes={nodes} + edges={edges} + nodeTypes={nodeTypes} + edgeTypes={edgeTypes} + nodesDraggable + nodesConnectable={false} + elementsSelectable + elevateEdgesOnSelect + minZoom={0.45} + maxZoom={1.5} + fitView + fitViewOptions={{ padding: 0.24, maxZoom: 1.05 }} + onNodesChange={onNodesChange} + onNodeClick={onNodeClick} + onEdgeClick={onEdgeClick} + onSelectionChange={onSelectionChange} + onPaneClick={() => setSelection(undefined)} + aria-label="Agent Loop relationship graph" + > + + + + +
+
+ {selectedEdge && !loopPanelOpen ? ( + setSelection(undefined)} + stopAvailable={controlAvailable && !terminal} + onRequestStop={requestStopConfirmation} + /> + ) : null} + {loopPanelOpen ? ( + + ) : null} +
+
+
+

+ {selectedNode + ? 'Selected node' + : selectedEdge + ? 'Selected relationship' + : 'Verified snapshot'} +

+

+ {selectedNode?.label ?? + (selectedEdge + ? `${selectedEdge.source} → ${selectedEdge.target}` + : 'Select a node or relationship')} +

+

+ {selectedNode + ? `${selectedNode.role} · ${selectedNode.state}${selectedNode.nativeAgentId ? ' · native worker bound' : ''}` + : selectedEdge + ? `${selectedEdge.kind} · ${selectedEdge.reportCount} reports${selectedEdge.active ? ' · active' : ''}` + : `revision ${model.identity.revision} · digest ${model.identity.projectionDigest.slice(0, 12)}`} +

+
+
+ + + +
+ {followUpStatus ? ( +

+ {followUpStatus} +

+ ) : null} +
+
+ + Bounded timeline {model.timeline.length} + +
    + {model.timeline.length > 0 ? ( + model.timeline.map((item) => ( +
  1. + + {item.label} + {item.role ? {item.role} : null} +
  2. + )) + ) : ( +
  3. No authoritative timeline entries.
  4. + )} +
+
+
+ ); +} diff --git a/packages/agent-graph-ui/src/agent-node.tsx b/packages/agent-graph-ui/src/agent-node.tsx new file mode 100644 index 0000000..78e1218 --- /dev/null +++ b/packages/agent-graph-ui/src/agent-node.tsx @@ -0,0 +1,101 @@ +import { memo } from 'react'; +import { Handle, Position, type Node, type NodeProps } from '@xyflow/react'; +import type { AgentNodeData } from './graph-model'; + +const ports = [ + ['left-in-upper', 'target', Position.Left, 'upper'], + ['left-in-lower', 'target', Position.Left, 'lower'], + ['left-out-upper', 'source', Position.Left, 'upper'], + ['left-out-lower', 'source', Position.Left, 'lower'], + ['right-in-upper', 'target', Position.Right, 'upper'], + ['right-in-lower', 'target', Position.Right, 'lower'], + ['right-out-upper', 'source', Position.Right, 'upper'], + ['right-out-lower', 'source', Position.Right, 'lower'], + ['top-in', 'target', Position.Top, 'center'], + ['top-out', 'source', Position.Top, 'center'], + ['bottom-in', 'target', Position.Bottom, 'center'], + ['bottom-out', 'source', Position.Bottom, 'center'], +] as const; + +function roleGlyph(role: AgentNodeData['node']['role']) { + if (role === 'root') return '◆'; + if (role === 'implementer') return '⌘'; + return '✓'; +} + +function activityTime(value?: string) { + if (!value) return undefined; + const date = new Date(value); + return Number.isNaN(date.getTime()) ? value : date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); +} + +export const AgentRoleNode = memo(function AgentRoleNode({ + data, + selected, +}: NodeProps>) { + const { node, latestReport, pending } = data; + const runtimeLabel = node.runtimeLabel ?? (node.role === 'root' ? 'Governor' : 'Codex worker role'); + const stateLabel = pending ? 'pending' : node.role === 'root' ? 'master' : node.state; + return ( +
+ {ports.map(([id, type, position, lane]) => ( + + ))} +
+ + + {node.label} + {node.model ?? runtimeLabel} + + {stateLabel} +
+ +
+ {latestReport ? ( + <> +
+ + {latestReport.verdict === 'clean' + ? '✓ clean' + : latestReport.verdict === 'issues' + ? `! ${latestReport.issueCount} issue${latestReport.issueCount === 1 ? '' : 's'}` + : 'done'} + + {latestReport.type} +
+ {latestReport.summary ?

{latestReport.summary}

: null} + + ) : ( +

+ {node.description ?? + (node.role === 'root' + ? 'Owns the cooperative transition decision.' + : node.state === 'unbound' + ? 'Waiting for a role capability.' + : 'Participates through typed reports.')} +

+ )} +
+ +
+ {node.activityCount ?? 0} events + {activityTime(node.lastActivityAt) ?? node.id} +
+
+ ); +}); diff --git a/packages/agent-graph-ui/src/demo.css b/packages/agent-graph-ui/src/demo.css new file mode 100644 index 0000000..46fb03f --- /dev/null +++ b/packages/agent-graph-ui/src/demo.css @@ -0,0 +1,60 @@ +:root { + color-scheme: light dark; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; +} + +.lag-demo { + min-height: 100vh; + background: #f8fafc; + padding: 24px; +} + +.lag-demo[data-mode="dark"] { + --background: #07090a; + --foreground: #e5e7eb; + --card: #0d120e; + --muted: #0f1511; + --muted-foreground: #9ca3af; + --border: rgba(255, 255, 255, 0.11); + --term-accent-hi: #a3e635; + --term-emerald: #6ee7b7; + --term-cyan: #67e8f9; + --term-amber: #fcd34d; + --term-rose: #fb7185; + background: #07090a; +} + +.lag-demo-toolbar { + display: flex; + align-items: center; + gap: 14px; + flex-wrap: wrap; + max-width: 1120px; + margin: 0 auto 14px; + color: var(--foreground, #171a1f); + font: 12px/1.4 ui-sans-serif, system-ui, sans-serif; +} + +.lag-demo-toolbar label { + display: flex; + align-items: center; + gap: 6px; +} + +.lag-demo > .looperators-agent-graph { + max-width: 1120px; + margin: 0 auto; +} + +@media (max-width: 719px) { + .lag-demo { + padding: 12px; + } +} diff --git a/packages/agent-graph-ui/src/demo.tsx b/packages/agent-graph-ui/src/demo.tsx new file mode 100644 index 0000000..8384179 --- /dev/null +++ b/packages/agent-graph-ui/src/demo.tsx @@ -0,0 +1,74 @@ +/* oxlint-disable react/only-export-components -- standalone Vite entrypoint */ +import { StrictMode, useState } from 'react'; +import { createRoot } from 'react-dom/client'; +import { AgentLoopGraph } from './agent-loop-graph'; +import { agentGraphScenarios, desktopParityModel } from './fixtures'; +import type { AgentGraphFollowUpIntent } from './graph-model'; +import '@xyflow/react/dist/style.css'; +import './styles.css'; +import './demo.css'; + +function Demo() { + const [scenarioName, setScenarioName] = useState('desktop-parity'); + const [dark, setDark] = useState(true); + const [followUpAvailable, setFollowUpAvailable] = useState(true); + const [lastIntent, setLastIntent] = useState(); + const model = + scenarioName === 'desktop-parity' + ? desktopParityModel + : (agentGraphScenarios.find( + (candidate) => candidate.name === scenarioName, + )?.expectedModel ?? agentGraphScenarios[0].expectedModel); + return ( +
+
+ + + + + {lastIntent + ? `${lastIntent.kind}:${lastIntent.selection?.id ?? 'run'}` + : 'No follow-up'} + +
+ setLastIntent(intent)} + /> +
+ ); +} + +createRoot(document.getElementById('root')!).render( + + + , +); diff --git a/packages/agent-graph-ui/src/embed.tsx b/packages/agent-graph-ui/src/embed.tsx new file mode 100644 index 0000000..ab02f1b --- /dev/null +++ b/packages/agent-graph-ui/src/embed.tsx @@ -0,0 +1,97 @@ +/* oxlint-disable react/only-export-components -- self-mounting plugin entrypoint */ +import { useState } from 'react'; +import { createRoot } from 'react-dom/client'; +import { AgentLoopGraph } from './agent-loop-graph'; +import { + assertAgentGraphModel, + type AgentGraphFollowUpIntent, + type AgentGraphModel, +} from './graph-model'; +import '@xyflow/react/dist/style.css'; +import './styles.css'; + +type EmbedEnvelope = { + model: AgentGraphModel; + mode?: 'snapshot' | 'live'; + followUpAvailable?: boolean; +}; + +type OpenAIHost = { + sendFollowUpMessage?: (input: { + prompt: string; + title?: string; + }) => Promise; +}; + +declare global { + interface Window { + openai?: OpenAIHost; + looperatorsAgentGraphView?: { + update: (nextModel: unknown) => void; + integrityError: (code: string) => void; + }; + } +} + +const rootElement = document.getElementById('looperators-agent-graph-root'); +const dataElement = document.getElementById('looperators-agent-graph-data'); + +function promptFor(intent: AgentGraphFollowUpIntent) { + const selected = intent.selection?.id; + if (intent.kind === 'explain') { + return `Explain ${selected ? `the selected Agent Loop item ${selected}` : 'this Agent Loop'} for run ${intent.runId}. Separate authoritative projection facts from inference.`; + } + return `Please preview ${intent.kind} for looperators Agent Loop run ${intent.runId}. Do not mutate it until I confirm.`; +} + +if (rootElement && dataElement) { + const envelope = JSON.parse(dataElement.textContent ?? '{}') as EmbedEnvelope; + const initialModel = assertAgentGraphModel(envelope.model); + let setExternalModel: ((next: AgentGraphModel) => void) | undefined; + let setIntegrityError: ((code: string | undefined) => void) | undefined; + + function EmbeddedGraph() { + const [model, setModel] = useState(initialModel); + const [error, setError] = useState(); + setExternalModel = setModel; + setIntegrityError = setError; + const hostAvailable = + envelope.followUpAvailable === true && + typeof window.openai?.sendFollowUpMessage === 'function'; + return ( + <> + {error ? ( +

+ Snapshot unavailable: {error} +

+ ) : null} + + window.openai?.sendFollowUpMessage?.({ + prompt: promptFor(intent), + title: `looperators Agent Loop ${intent.kind}`, + }) + : undefined + } + /> + + ); + } + + createRoot(rootElement).render(); + window.looperatorsAgentGraphView = Object.freeze({ + update(nextModel) { + setIntegrityError?.(undefined); + setExternalModel?.(assertAgentGraphModel(nextModel)); + }, + integrityError(code) { + setIntegrityError?.(String(code).slice(0, 80)); + }, + }); +} diff --git a/packages/agent-graph-ui/src/fixtures.ts b/packages/agent-graph-ui/src/fixtures.ts new file mode 100644 index 0000000..31dc2bd --- /dev/null +++ b/packages/agent-graph-ui/src/fixtures.ts @@ -0,0 +1,434 @@ +import type { + AgentGraphEdge, + AgentGraphModel, + AgentGraphNode, + AgentGraphNodeState, + AgentGraphReport, + AgentGraphStatus, +} from './graph-model'; + +type RawProjection = Record; + +export type AgentGraphScenario = { + name: string; + projection: RawProjection; + expectedModel: AgentGraphModel; +}; + +const edgeDefinitions = [ + { + id: 'root-governs-implementer', + source: 'root', + target: 'role:implementer', + kind: 'governs', + }, + { + id: 'implementer-handoff-reviewer', + source: 'role:implementer', + target: 'role:reviewer', + kind: 'handoff', + }, + { + id: 'reviewer-feedback-implementer', + source: 'role:reviewer', + target: 'role:implementer', + kind: 'feedback', + }, + { + id: 'reviewer-verdict-root', + source: 'role:reviewer', + target: 'root', + kind: 'verdict', + }, +] as const; + +function makeNodes( + states: [AgentGraphNodeState, AgentGraphNodeState, AgentGraphNodeState], + bound = true, +): AgentGraphNode[] { + return [ + { + id: 'root', + kind: 'root', + role: 'root', + label: 'Governor', + state: states[0], + }, + { + id: 'role:implementer', + kind: 'worker-role', + role: 'implementer', + label: 'Implementer', + state: states[1], + ...(bound + ? { + nativeAgentId: 'native-implementer-fixture', + nativeAgentType: 'worker', + } + : {}), + }, + { + id: 'role:reviewer', + kind: 'worker-role', + role: 'reviewer', + label: 'Reviewer', + state: states[2], + ...(bound + ? { + nativeAgentId: 'native-reviewer-fixture', + nativeAgentType: 'worker', + } + : {}), + }, + ]; +} + +function makeEdges( + activeKind?: AgentGraphEdge['kind'], + reports: Partial> = {}, +): AgentGraphEdge[] { + return edgeDefinitions.map((edge) => ({ + ...edge, + active: edge.kind === activeKind, + reportCount: reports[edge.kind] ?? 0, + })); +} + +function rawNodes(nodes: AgentGraphNode[]) { + return nodes.map(({ role, ...node }) => + node.kind === 'root' ? node : { ...node, role }, + ); +} + +function scenario(options: { + name: string; + digestCharacter: string; + status: AgentGraphStatus; + revision: number; + currentLap: number; + lapCap?: number; + lease?: { granted: number; consumed: number }; + states: [AgentGraphNodeState, AgentGraphNodeState, AgentGraphNodeState]; + bound?: boolean; + activeKind?: AgentGraphEdge['kind']; + reports?: Partial>; + latestReport?: AgentGraphReport; + pendingRole?: 'implementer' | 'reviewer'; + needsHuman?: boolean; + cancelRequested?: boolean; + recovery?: { reason: string }; +}): AgentGraphScenario { + const nodes = makeNodes(options.states, options.bound); + const edges = makeEdges(options.activeKind, options.reports); + const digest = options.digestCharacter.repeat(64); + const timeline = + options.revision === 0 + ? [] + : [ + { + id: `transition-${options.name}`, + at: '2026-07-28T18:00:00.000Z', + label: options.activeKind + ? `activate-${options.pendingRole ?? options.activeKind}` + : options.status, + kind: 'transition' as const, + ...(options.pendingRole ? { role: options.pendingRole } : {}), + }, + ...(options.latestReport + ? [ + { + id: `report-${options.name}`, + at: '2026-07-28T18:00:01.000Z', + label: + options.latestReport.verdict === 'issues' + ? 'reviewer verdict: issues' + : options.latestReport.verdict === 'clean' + ? 'reviewer verdict: clean' + : 'implementer info: done', + kind: 'report' as const, + role: options.latestReport.fromRole, + }, + ] + : []), + ]; + const model: AgentGraphModel = { + identity: { + runId: `run-${options.name}`, + revision: options.revision, + projectionDigest: digest, + integrity: 'verified', + }, + status: options.status, + currentLap: options.currentLap, + lapCap: options.lapCap ?? 3, + lease: options.lease ?? { granted: 3, consumed: 0 }, + cancelRequested: options.cancelRequested ?? false, + needsHuman: options.needsHuman ?? false, + nodes, + edges, + ...(options.pendingRole + ? { + pending: { + role: options.pendingRole, + kind: + options.pendingRole === 'implementer' + ? ('activate-implementer' as const) + : ('activate-reviewer' as const), + lap: options.currentLap, + }, + } + : {}), + ...(options.latestReport ? { latestReport: options.latestReport } : {}), + ...(options.recovery ? { recovery: options.recovery } : {}), + timeline, + }; + return { + name: options.name, + expectedModel: model, + projection: { + schemaVersion: 1, + storeVersion: 1, + projectionVersion: 3, + runId: model.identity.runId, + revision: model.identity.revision, + status: model.status, + recipe: 'review-until-clean', + currentLap: model.currentLap, + lapCap: model.lapCap, + continuationLease: model.lease, + cancelRequested: model.cancelRequested, + needsHuman: model.needsHuman, + integrity: { + status: 'verified', + verifiedRevision: model.identity.revision, + }, + eventWatermark: { + eventCount: 0, + }, + nodes: rawNodes(nodes), + edges, + ...(model.pending + ? { + pending: { + transitionId: `transition-${options.name}`, + ...model.pending, + }, + } + : {}), + ...(model.latestReport + ? { + latestReport: { + reportId: `report-${options.name}`, + ...model.latestReport, + }, + } + : {}), + ...(model.recovery + ? { + recovery: { + recoveryId: `recovery_${'d'.repeat(64)}`, + ...model.recovery, + }, + } + : {}), + counts: { + events: 0, + reports: model.latestReport ? 1 : 0, + transitions: model.identity.revision > 0 ? 1 : 0, + operations: model.identity.revision, + governorDecisions: 0, + recoveries: model.recovery ? 1 : 0, + diagnostics: 0, + conflicts: 0, + corrupt: 0, + }, + timeline, + projectionDigest: digest, + }, + }; +} + +export const agentGraphScenarios: AgentGraphScenario[] = [ + scenario({ + name: 'draft', + digestCharacter: 'a', + status: 'draft', + revision: 0, + currentLap: 0, + states: ['active', 'unbound', 'unbound'], + bound: false, + }), + scenario({ + name: 'implementer-active', + digestCharacter: 'b', + status: 'running', + revision: 1, + currentLap: 0, + states: ['waiting', 'active', 'unbound'], + activeKind: 'governs', + pendingRole: 'implementer', + }), + scenario({ + name: 'reviewer-issues', + digestCharacter: 'c', + status: 'running', + revision: 4, + currentLap: 1, + lease: { granted: 3, consumed: 1 }, + states: ['waiting', 'waiting', 'active'], + activeKind: 'feedback', + reports: { handoff: 1, feedback: 1 }, + pendingRole: 'implementer', + latestReport: { + fromRole: 'reviewer', + type: 'verdict', + verdict: 'issues', + issueCount: 2, + }, + }), + scenario({ + name: 'paused-needs-human', + digestCharacter: 'd', + status: 'paused', + revision: 5, + currentLap: 1, + lease: { granted: 3, consumed: 2 }, + states: ['active', 'bound', 'bound'], + reports: { handoff: 1, feedback: 1 }, + needsHuman: true, + }), + scenario({ + name: 'succeeded-clean', + digestCharacter: 'e', + status: 'succeeded', + revision: 7, + currentLap: 2, + lease: { granted: 3, consumed: 2 }, + states: ['terminal', 'terminal', 'terminal'], + activeKind: 'verdict', + reports: { handoff: 2, feedback: 1, verdict: 1 }, + latestReport: { + fromRole: 'reviewer', + type: 'verdict', + verdict: 'clean', + issueCount: 0, + }, + }), + scenario({ + name: 'capped', + digestCharacter: 'f', + status: 'capped', + revision: 6, + currentLap: 3, + lease: { granted: 3, consumed: 3 }, + states: ['terminal', 'terminal', 'terminal'], + reports: { handoff: 2, feedback: 2 }, + needsHuman: true, + }), + scenario({ + name: 'cancelled', + digestCharacter: '1', + status: 'cancelled', + revision: 2, + currentLap: 0, + lease: { granted: 3, consumed: 0 }, + states: ['terminal', 'terminal', 'terminal'], + cancelRequested: true, + }), +]; + +const reviewerIssuesScenario = agentGraphScenarios.find( + (candidate) => candidate.name === 'reviewer-issues', +); + +if (!reviewerIssuesScenario) { + throw new Error('reviewer-issues fixture is unavailable'); +} + +/** + * A UI-only acceptance model derived from the paired projection fixture. + * + * Keep this outside `agentGraphScenarios`: those fixtures prove the Plugin + * projection adapter is lossless, while this model exercises the richer + * Desktop-derived interaction surface before the Plugin imports it. + */ +export const desktopParityModel: AgentGraphModel = { + ...reviewerIssuesScenario.expectedModel, + responsibleRole: 'implementer', + nodes: reviewerIssuesScenario.expectedModel.nodes.map((node) => ({ + ...node, + runtimeLabel: node.role === 'root' ? 'Codex task' : 'Native subagent', + model: node.role === 'root' ? 'Governor' : 'worker', + description: + node.role === 'root' + ? 'Owns the bounded review policy and approves every transition.' + : node.role === 'implementer' + ? 'Addresses the latest blocking findings and reports completion.' + : 'Reviews the implementation and returns a typed verdict.', + activityCount: node.role === 'root' ? 4 : node.role === 'implementer' ? 7 : 5, + lastActivityAt: '2026-08-02T18:00:04.000Z', + })), + edges: reviewerIssuesScenario.expectedModel.edges.map((edge) => ({ + ...edge, + label: + edge.kind === 'governs' + ? 'Governed activation' + : edge.kind === 'handoff' + ? 'Implementation ready' + : edge.kind === 'feedback' + ? 'Blocking feedback' + : 'Clean verdict', + summary: + edge.kind === 'feedback' + ? 'Reviewer found blocking issues, so the Governor grants one bounded implementer continuation.' + : `Typed ${edge.kind} report advances the run only after Governor validation.`, + recent: edge.kind === 'handoff', + pending: edge.kind === 'feedback', + gate: 'Governor validates typed report and lease', + firings: edge.reportCount, + maxFirings: edge.kind === 'governs' ? 1 : 3, + stopWhen: edge.kind === 'feedback' ? 'clean verdict, cancellation, or lap cap' : 'terminal run state', + })), + latestReport: { + ...reviewerIssuesScenario.expectedModel.latestReport!, + summary: 'Two blocking findings remain before the run can finish cleanly.', + issues: [ + { + severity: 'error', + message: 'Cancel must revoke every unconsumed continuation capability.', + file: 'plugins/looperators-agent-loop/mcp/governor.mjs', + line: 214, + }, + { + severity: 'warn', + message: 'Recovery must reject actions issued before the current process epoch.', + file: 'plugins/looperators-agent-loop/mcp/store.mjs', + line: 91, + }, + ], + }, + laps: [ + { + index: 0, + status: 'issues', + at: '2026-08-02T18:00:02.000Z', + implementerSummary: 'Added bounded continuation and typed reviewer reports.', + reviewerSummary: 'Found cancellation and restart recovery gaps.', + verdict: 'issues', + issues: [ + { + severity: 'error', + message: 'Cancel did not revoke a previously issued continuation.', + }, + ], + }, + { + index: 1, + status: 'running', + at: '2026-08-02T18:00:04.000Z', + implementerSummary: 'Applying the two remaining fixes.', + reviewerSummary: 'Waiting for a new typed implementation report.', + issues: [], + }, + ], +}; diff --git a/packages/agent-graph-ui/src/graph-model.ts b/packages/agent-graph-ui/src/graph-model.ts new file mode 100644 index 0000000..1998900 --- /dev/null +++ b/packages/agent-graph-ui/src/graph-model.ts @@ -0,0 +1,496 @@ +import { MarkerType, Position, type Edge, type Node } from '@xyflow/react'; + +export const agentGraphStatuses = [ + 'draft', + 'running', + 'paused', + 'interrupted', + 'succeeded', + 'capped', + 'cancelled', + 'failed', +] as const; + +export const agentGraphNodeStates = [ + 'active', + 'waiting', + 'bound', + 'unbound', + 'terminal', +] as const; + +export const agentGraphEdgeKinds = [ + 'governs', + 'handoff', + 'feedback', + 'verdict', +] as const; + +export type AgentGraphStatus = (typeof agentGraphStatuses)[number]; +export type AgentGraphNodeState = (typeof agentGraphNodeStates)[number]; +export type AgentGraphEdgeKind = (typeof agentGraphEdgeKinds)[number]; +export type AgentGraphRole = 'root' | 'implementer' | 'reviewer'; +export type AgentGraphOrientation = 'horizontal' | 'vertical'; + +export type AgentGraphNode = { + id: string; + kind: 'root' | 'worker-role'; + role: AgentGraphRole; + label: string; + state: AgentGraphNodeState; + nativeAgentId?: string; + nativeAgentType?: string; + runtimeLabel?: string; + model?: string; + description?: string; + activityCount?: number; + lastActivityAt?: string; +}; + +export type AgentGraphEdge = { + id: string; + source: string; + target: string; + kind: AgentGraphEdgeKind; + active: boolean; + reportCount: number; + label?: string; + summary?: string; + recent?: boolean; + pending?: boolean; + gate?: string; + firings?: number; + maxFirings?: number; + stopWhen?: string; +}; + +export type AgentGraphIssue = { + message: string; + severity?: 'info' | 'warn' | 'error'; + file?: string; + line?: number; +}; + +export type AgentGraphReport = { + fromRole: 'implementer' | 'reviewer'; + type: 'info' | 'verdict'; + verdict?: 'issues' | 'clean'; + issueCount: number; + summary?: string; + issues?: AgentGraphIssue[]; +}; + +export type AgentGraphPending = { + role: 'implementer' | 'reviewer'; + kind: 'activate-implementer' | 'activate-reviewer'; + lap: number; +}; + +export type AgentGraphTimelineItem = { + id: string; + at: string; + label: string; + kind: 'event' | 'report' | 'transition' | 'governor-decision' | 'recovery'; + role?: 'implementer' | 'reviewer'; +}; + +export type AgentGraphLap = { + index: number; + status: 'running' | 'issues' | 'clean' | 'capped' | 'interrupted'; + at?: string; + implementerSummary?: string; + reviewerSummary?: string; + verdict?: 'issues' | 'clean'; + issues: AgentGraphIssue[]; +}; + +export type AgentGraphModel = { + identity: { + runId: string; + revision: number; + projectionDigest: string; + integrity: 'verified'; + }; + status: AgentGraphStatus; + currentLap: number; + lapCap: number; + lease: { + granted: number; + consumed: number; + }; + cancelRequested: boolean; + needsHuman: boolean; + nodes: AgentGraphNode[]; + edges: AgentGraphEdge[]; + pending?: AgentGraphPending; + latestReport?: AgentGraphReport; + recovery?: { + reason: string; + guidance?: string; + }; + responsibleRole?: AgentGraphRole; + stopReason?: string; + laps?: AgentGraphLap[]; + timeline: AgentGraphTimelineItem[]; +}; + +export type AgentGraphSelection = + | { kind: 'node'; id: string } + | { kind: 'edge'; id: string }; + +export type AgentGraphFollowUpKind = + | 'explain' + | 'pause' + | 'resume' + | 'cancel'; + +export type AgentGraphFollowUpIntent = { + kind: AgentGraphFollowUpKind; + runId: string; + selection?: AgentGraphSelection; +}; + +export type AgentNodeData = { + node: AgentGraphNode; + latestReport?: AgentGraphReport; + pending: boolean; +} & Record; + +export type AgentEdgeRoute = 'direct' | 'lower' | 'left' | 'right'; + +export type AgentEdgeData = { + edge: AgentGraphEdge; + route: AgentEdgeRoute; + latestReport?: AgentGraphReport; + onSelect?: (edgeId: string) => void; +} & Record; + +export type LoopSummaryData = { + model: AgentGraphModel; + onOpen?: () => void; +} & Record; + +const digestPattern = /^[a-f0-9]{64}$/; + +function isRecord(value: unknown): value is Record { + return typeof value === 'object' && value !== null && !Array.isArray(value); +} + +function requireString( + value: unknown, + path: string, + options: { max?: number; pattern?: RegExp } = {}, +) { + if ( + typeof value !== 'string' || + value.length === 0 || + value.length > (options.max ?? 256) || + (options.pattern && !options.pattern.test(value)) + ) { + throw new TypeError(`${path} must be a bounded string`); + } +} + +function requireInteger( + value: unknown, + path: string, + options: { min?: number; max?: number } = {}, +) { + if ( + !Number.isSafeInteger(value) || + (options.min !== undefined && Number(value) < options.min) || + (options.max !== undefined && Number(value) > options.max) + ) { + throw new TypeError(`${path} must be a bounded integer`); + } +} + +export function assertAgentGraphModel(value: unknown): AgentGraphModel { + if (!isRecord(value)) { + throw new TypeError('agent graph model must be an object'); + } + if (!isRecord(value.identity)) { + throw new TypeError('agent graph model identity must be an object'); + } + requireString(value.identity.runId, 'identity.runId', { max: 128 }); + requireInteger(value.identity.revision, 'identity.revision', { min: 0 }); + requireString(value.identity.projectionDigest, 'identity.projectionDigest', { + max: 64, + pattern: digestPattern, + }); + if (value.identity.integrity !== 'verified') { + throw new TypeError('identity.integrity must be verified'); + } + if (!agentGraphStatuses.includes(value.status as AgentGraphStatus)) { + throw new TypeError('agent graph model status is invalid'); + } + requireInteger(value.currentLap, 'currentLap', { min: 0, max: 6 }); + requireInteger(value.lapCap, 'lapCap', { min: 1, max: 6 }); + if (Number(value.currentLap) > Number(value.lapCap)) { + throw new TypeError('currentLap cannot exceed lapCap'); + } + if (!isRecord(value.lease)) { + throw new TypeError('agent graph model lease must be an object'); + } + requireInteger(value.lease.granted, 'lease.granted', { min: 0, max: 6 }); + requireInteger(value.lease.consumed, 'lease.consumed', { min: 0, max: 6 }); + if (Number(value.lease.consumed) > Number(value.lease.granted)) { + throw new TypeError('lease.consumed cannot exceed lease.granted'); + } + if ( + typeof value.cancelRequested !== 'boolean' || + typeof value.needsHuman !== 'boolean' + ) { + throw new TypeError('agent graph model flags must be boolean'); + } + if ( + !Array.isArray(value.nodes) || + value.nodes.length !== 3 || + !Array.isArray(value.edges) || + value.edges.length !== 4 || + !Array.isArray(value.timeline) || + value.timeline.length > 32 + ) { + throw new TypeError('agent graph model cardinality is invalid'); + } + const nodeIds = new Set(); + for (const [index, candidate] of value.nodes.entries()) { + if (!isRecord(candidate)) { + throw new TypeError(`nodes[${index}] must be an object`); + } + requireString(candidate.id, `nodes[${index}].id`, { max: 96 }); + requireString(candidate.label, `nodes[${index}].label`, { max: 80 }); + if (!['root', 'worker-role'].includes(String(candidate.kind))) { + throw new TypeError(`nodes[${index}].kind is invalid`); + } + if (!['root', 'implementer', 'reviewer'].includes(String(candidate.role))) { + throw new TypeError(`nodes[${index}].role is invalid`); + } + if (!agentGraphNodeStates.includes(candidate.state as AgentGraphNodeState)) { + throw new TypeError(`nodes[${index}].state is invalid`); + } + if (nodeIds.has(String(candidate.id))) { + throw new TypeError('agent graph node ids must be unique'); + } + nodeIds.add(String(candidate.id)); + for (const key of ['runtimeLabel', 'model', 'description', 'lastActivityAt'] as const) { + if (candidate[key] !== undefined) { + requireString(candidate[key], `nodes[${index}].${key}`, { max: 512 }); + } + } + if (candidate.activityCount !== undefined) { + requireInteger(candidate.activityCount, `nodes[${index}].activityCount`, { + min: 0, + }); + } + } + for (const [index, candidate] of value.edges.entries()) { + if (!isRecord(candidate)) { + throw new TypeError(`edges[${index}] must be an object`); + } + requireString(candidate.id, `edges[${index}].id`, { max: 96 }); + requireString(candidate.source, `edges[${index}].source`, { max: 96 }); + requireString(candidate.target, `edges[${index}].target`, { max: 96 }); + if (!agentGraphEdgeKinds.includes(candidate.kind as AgentGraphEdgeKind)) { + throw new TypeError(`edges[${index}].kind is invalid`); + } + if ( + !nodeIds.has(String(candidate.source)) || + !nodeIds.has(String(candidate.target)) + ) { + throw new TypeError(`edges[${index}] references an unknown node`); + } + if (typeof candidate.active !== 'boolean') { + throw new TypeError(`edges[${index}].active must be boolean`); + } + requireInteger(candidate.reportCount, `edges[${index}].reportCount`, { + min: 0, + }); + for (const key of ['label', 'summary', 'gate', 'stopWhen'] as const) { + if (candidate[key] !== undefined) { + requireString(candidate[key], `edges[${index}].${key}`, { max: 512 }); + } + } + for (const key of ['firings', 'maxFirings'] as const) { + if (candidate[key] !== undefined) { + requireInteger(candidate[key], `edges[${index}].${key}`, { min: 0 }); + } + } + if ( + (candidate.recent !== undefined && typeof candidate.recent !== 'boolean') || + (candidate.pending !== undefined && typeof candidate.pending !== 'boolean') + ) { + throw new TypeError(`edges[${index}] flags must be boolean`); + } + } + if (value.latestReport !== undefined) { + if (!isRecord(value.latestReport)) { + throw new TypeError('latestReport must be an object'); + } + if (value.latestReport.summary !== undefined) { + requireString(value.latestReport.summary, 'latestReport.summary', { max: 1024 }); + } + if (value.latestReport.issues !== undefined) { + if (!Array.isArray(value.latestReport.issues) || value.latestReport.issues.length > 32) { + throw new TypeError('latestReport.issues must be bounded'); + } + for (const [index, issue] of value.latestReport.issues.entries()) { + if (!isRecord(issue)) throw new TypeError(`latestReport.issues[${index}] must be an object`); + requireString(issue.message, `latestReport.issues[${index}].message`, { max: 1024 }); + } + } + } + if (value.laps !== undefined) { + if (!Array.isArray(value.laps) || value.laps.length > 6) { + throw new TypeError('laps must be a bounded array'); + } + for (const [index, lap] of value.laps.entries()) { + if (!isRecord(lap)) throw new TypeError(`laps[${index}] must be an object`); + requireInteger(lap.index, `laps[${index}].index`, { min: 0, max: 6 }); + if (!['running', 'issues', 'clean', 'capped', 'interrupted'].includes(String(lap.status))) { + throw new TypeError(`laps[${index}].status is invalid`); + } + if (!Array.isArray(lap.issues) || lap.issues.length > 32) { + throw new TypeError(`laps[${index}].issues must be bounded`); + } + } + } + return value as AgentGraphModel; +} + +const horizontalPositions: Record = { + root: { x: 30, y: 82 }, + implementer: { x: 370, y: 82 }, + reviewer: { x: 710, y: 82 }, +}; + +const verticalPositions: Record = { + root: { x: 130, y: 22 }, + implementer: { x: 130, y: 232 }, + reviewer: { x: 130, y: 442 }, +}; + +const wideHandles: Record< + AgentGraphEdgeKind, + { sourceHandle: string; targetHandle: string; route: AgentEdgeRoute } +> = { + governs: { + sourceHandle: 'right-out-upper', + targetHandle: 'left-in-upper', + route: 'direct', + }, + handoff: { + sourceHandle: 'right-out-upper', + targetHandle: 'left-in-upper', + route: 'direct', + }, + feedback: { + sourceHandle: 'left-out-lower', + targetHandle: 'right-in-lower', + route: 'lower', + }, + verdict: { + sourceHandle: 'bottom-out', + targetHandle: 'bottom-in', + route: 'lower', + }, +}; + +const narrowHandles: typeof wideHandles = { + governs: { + sourceHandle: 'bottom-out', + targetHandle: 'top-in', + route: 'direct', + }, + handoff: { + sourceHandle: 'bottom-out', + targetHandle: 'top-in', + route: 'direct', + }, + feedback: { + sourceHandle: 'right-out-lower', + targetHandle: 'right-in-lower', + route: 'right', + }, + verdict: { + sourceHandle: 'left-out-lower', + targetHandle: 'left-in-lower', + route: 'left', + }, +}; + +export function createAgentLoopFlowElements( + modelValue: AgentGraphModel, + orientation: AgentGraphOrientation, +): { + nodes: Node[]; + edges: Edge[]; +} { + const model = assertAgentGraphModel(modelValue); + const positions = + orientation === 'horizontal' ? horizontalPositions : verticalPositions; + const handles = orientation === 'horizontal' ? wideHandles : narrowHandles; + return { + nodes: model.nodes.map((node) => ({ + id: node.id, + type: 'agent-role', + position: positions[node.role], + draggable: false, + selectable: true, + data: { + node, + pending: model.pending?.role === node.role, + ...(model.latestReport?.fromRole === node.role + ? { latestReport: model.latestReport } + : {}), + }, + })), + edges: model.edges.map((edge) => ({ + id: edge.id, + type: 'agent-relationship', + source: edge.source, + target: edge.target, + sourceHandle: handles[edge.kind].sourceHandle, + targetHandle: handles[edge.kind].targetHandle, + animated: edge.active, + focusable: true, + markerEnd: { + type: MarkerType.ArrowClosed, + width: 16, + height: 16, + }, + data: { + edge, + route: handles[edge.kind].route, + ...(model.latestReport && + ((edge.kind === 'feedback' && + model.latestReport.verdict === 'issues') || + (edge.kind === 'verdict' && + model.latestReport.verdict === 'clean')) + ? { latestReport: model.latestReport } + : {}), + }, + })), + }; +} + +export function orientationForWidth(width: number): AgentGraphOrientation { + return width < 720 ? 'vertical' : 'horizontal'; +} + +export function statusTone( + status: AgentGraphStatus, +): 'active' | 'success' | 'warning' | 'danger' | 'neutral' { + if (status === 'running') return 'active'; + if (status === 'succeeded') return 'success'; + if (['paused', 'interrupted', 'capped'].includes(status)) return 'warning'; + if (['failed', 'cancelled'].includes(status)) return 'danger'; + return 'neutral'; +} + +export function positionForHandle(handleId: string): Position { + if (handleId.startsWith('left')) return Position.Left; + if (handleId.startsWith('right')) return Position.Right; + if (handleId.startsWith('top')) return Position.Top; + return Position.Bottom; +} diff --git a/packages/agent-graph-ui/src/index.ts b/packages/agent-graph-ui/src/index.ts new file mode 100644 index 0000000..b888caf --- /dev/null +++ b/packages/agent-graph-ui/src/index.ts @@ -0,0 +1,44 @@ +import '@xyflow/react/dist/style.css'; +import './styles.css'; + +export { AgentLoopGraph, type AgentLoopGraphProps } from './agent-loop-graph'; +export { AgentRoleNode } from './agent-node'; +export { AgentRelationshipEdge } from './relationship-edge'; +export { LoopBadge } from './loop-badge'; +export { LoopPanel } from './loop-panel'; +export { RelationshipInspector } from './relationship-inspector'; +export { LoopStatus } from './loop-status'; +export { + agentGraphEdgeKinds, + agentGraphNodeStates, + agentGraphStatuses, + assertAgentGraphModel, + createAgentLoopFlowElements, + orientationForWidth, + statusTone, + type AgentEdgeData, + type AgentEdgeRoute, + type AgentGraphEdge, + type AgentGraphEdgeKind, + type AgentGraphFollowUpIntent, + type AgentGraphFollowUpKind, + type AgentGraphIssue, + type AgentGraphLap, + type AgentGraphModel, + type AgentGraphNode, + type AgentGraphNodeState, + type AgentGraphOrientation, + type AgentGraphPending, + type AgentGraphReport, + type AgentGraphRole, + type AgentGraphSelection, + type AgentGraphStatus, + type AgentGraphTimelineItem, + type AgentNodeData, + type LoopSummaryData, +} from './graph-model'; +export { + agentGraphScenarios, + desktopParityModel, + type AgentGraphScenario, +} from './fixtures'; diff --git a/packages/agent-graph-ui/src/inline-agent-loop-graph.ts b/packages/agent-graph-ui/src/inline-agent-loop-graph.ts new file mode 100644 index 0000000..1fd9274 --- /dev/null +++ b/packages/agent-graph-ui/src/inline-agent-loop-graph.ts @@ -0,0 +1,466 @@ +import type { + AgentGraphFollowUpIntent, + AgentGraphModel, + AgentGraphSelection, +} from './graph-model'; + +export type InlineAgentLoopGraphOptions = { + model: AgentGraphModel; + mode?: 'snapshot' | 'live'; + liveState?: 'connecting' | 'live' | 'retrying'; + driftNote?: string; + followUpAvailable?: boolean; + onFollowUp?: (intent: AgentGraphFollowUpIntent) => void | Promise; +}; + +export type InlineAgentLoopGraphController = { + update: ( + model: AgentGraphModel, + options?: Pick, + ) => void; + integrityError: (code: string) => void; + destroy: () => void; +}; + +type Point = { + x: number; + y: number; +}; + +const nodePositions: Record = { + root: { x: 55, y: 92 }, + implementer: { x: 375, y: 92 }, + reviewer: { x: 695, y: 92 }, +}; + +const edgeGeometry: Record< + AgentGraphModel['edges'][number]['kind'], + { path: string; label: Point } +> = { + governs: { + path: 'M 325 158 C 342 158 358 158 375 158', + label: { x: 350, y: 133 }, + }, + handoff: { + path: 'M 645 158 C 662 158 678 158 695 158', + label: { x: 670, y: 133 }, + }, + feedback: { + path: 'M 695 213 C 670 292 665 292 645 213', + label: { x: 670, y: 284 }, + }, + verdict: { + path: 'M 695 226 C 645 342 375 342 325 226', + label: { x: 510, y: 331 }, + }, +}; + +function escapeHtml(value: unknown) { + return String(value) + .replaceAll('&', '&') + .replaceAll('<', '<') + .replaceAll('>', '>') + .replaceAll('"', '"') + .replaceAll("'", '''); +} + +function compactId(value: string) { + return value.length > 28 + ? `${value.slice(0, 12)}…${value.slice(-9)}` + : value; +} + +function statusTone(status: AgentGraphModel['status']) { + if (status === 'running') return 'active'; + if (status === 'succeeded') return 'success'; + if (['paused', 'interrupted', 'capped'].includes(status)) return 'warning'; + if (['failed', 'cancelled'].includes(status)) return 'danger'; + return 'neutral'; +} + +function nodeDescription( + node: AgentGraphModel['nodes'][number], + model: AgentGraphModel, +) { + if (model.latestReport?.fromRole === node.role) { + if (model.latestReport.verdict === 'clean') return 'Clean verdict'; + if (model.latestReport.verdict === 'issues') { + return `${model.latestReport.issueCount} issue${ + model.latestReport.issueCount === 1 ? '' : 's' + }`; + } + return 'Worker report received'; + } + if (node.role === 'root') return 'Owns bounded continuation decisions'; + if (node.state === 'unbound') return 'Waiting for native worker binding'; + return 'Bound to the task-scoped worker role'; +} + +function renderNode( + node: AgentGraphModel['nodes'][number], + index: number, + model: AgentGraphModel, + selection?: AgentGraphSelection, +) { + const { x, y } = nodePositions[node.role]; + const selected = selection?.kind === 'node' && selection.id === node.id; + const pending = model.pending?.role === node.role; + const glyph = + node.role === 'root' ? 'G' : node.role === 'implementer' ? 'I' : 'R'; + const subtitle = node.role === 'root' ? 'Governor' : 'Native worker role'; + return ` + + + ${glyph} + ${escapeHtml(node.label)} + ${subtitle} + + ${escapeHtml( + pending ? 'pending' : node.state, + )} + + ${escapeHtml( + nodeDescription(node, model), + )} + + ${escapeHtml( + compactId(node.id), + )} + ${escapeHtml( + node.nativeAgentId ? compactId(node.nativeAgentId) : 'not bound', + )} + `; +} + +function renderEdge( + edge: AgentGraphModel['edges'][number], + index: number, + selection?: AgentGraphSelection, +) { + const geometry = edgeGeometry[edge.kind]; + const selected = selection?.kind === 'edge' && selection.id === edge.id; + const label = `${edge.kind} · ${edge.reportCount}`; + const labelWidth = Math.max(78, 21 + label.length * 6.2); + const labelX = geometry.label.x - labelWidth / 2; + return ` + + + + ${escapeHtml(label)} + `; +} + +function selectedCopy(model: AgentGraphModel, selection?: AgentGraphSelection) { + const node = + selection?.kind === 'node' + ? model.nodes.find((candidate) => candidate.id === selection.id) + : undefined; + const edge = + selection?.kind === 'edge' + ? model.edges.find((candidate) => candidate.id === selection.id) + : undefined; + if (node) { + return { + eyebrow: 'Selected node', + title: node.label, + detail: `${node.role} · ${node.state}${ + node.nativeAgentId ? ' · native worker bound' : '' + }`, + }; + } + if (edge) { + return { + eyebrow: 'Selected relationship', + title: `${edge.source} → ${edge.target}`, + detail: `${edge.kind} · ${edge.reportCount} reports${ + edge.active ? ' · active' : '' + }`, + }; + } + return { + eyebrow: 'Verified snapshot', + title: 'Select a node or relationship', + detail: `revision ${model.identity.revision} · digest ${model.identity.projectionDigest.slice( + 0, + 12, + )}`, + }; +} + +function renderTimeline(model: AgentGraphModel) { + const items = + model.timeline.length > 0 + ? model.timeline + .map( + (item) => + `
  • ${escapeHtml(item.label)}${ + item.role ? `${escapeHtml(item.role)}` : '' + }
  • `, + ) + .join('') + : '
  • No authoritative timeline entries.
  • '; + return `
    + Bounded timeline ${model.timeline.length} +
      ${items}
    +
    `; +} + +function renderAlert( + model: AgentGraphModel, + driftNote: string, + integrityError: string, +) { + if (integrityError) { + return `

    Snapshot unavailable: ${escapeHtml( + integrityError, + )}

    `; + } + if (driftNote) { + return `

    ${escapeHtml( + driftNote, + )}

    `; + } + if (model.recovery) { + return `

    Recovery: ${escapeHtml( + model.recovery.reason, + )}

    `; + } + if (model.cancelRequested) { + return '

    Cancellation requested.

    '; + } + if (model.needsHuman) { + return '

    Human attention is required.

    '; + } + return ''; +} + +function renderGraph( + model: AgentGraphModel, + options: InlineAgentLoopGraphOptions, + selection: AgentGraphSelection | undefined, + integrityError: string, + followUpStatus: string, +) { + const selected = selectedCopy(model, selection); + const terminal = ['succeeded', 'capped', 'cancelled', 'failed'].includes( + model.status, + ); + const control = + model.status === 'paused' || model.status === 'interrupted' + ? 'resume' + : 'pause'; + const mode = options.mode ?? 'snapshot'; + const liveLabel = + mode === 'live' ? (options.liveState ?? 'connecting') : 'snapshot'; + return `
    +
    +

    looperators

    Agent Loop

    +
    + verified + ${escapeHtml(model.status)} + lap ${model.currentLap}/${ + model.lapCap + } + lease ${model.lease.consumed}/${ + model.lease.granted + } + ${escapeHtml(liveLabel)} +
    +
    + ${renderAlert( + model, + options.driftNote ?? '', + integrityError, + )} +
    + + + + + + + + + + + ${model.edges + .map((edge, index) => renderEdge(edge, index, selection)) + .join('')} + ${model.nodes + .map((node, index) => renderNode(node, index, model, selection)) + .join('')} + +
    +
    +
    +

    ${escapeHtml(selected.eyebrow)}

    +

    ${escapeHtml(selected.title)}

    +

    ${escapeHtml(selected.detail)}

    +
    +
    + + +
    + ${ + followUpStatus + ? `

    ${escapeHtml( + followUpStatus, + )}

    ` + : '' + } +
    + ${renderTimeline(model)} +
    run ${escapeHtml( + compactId(model.identity.runId), + )} · revision ${model.identity.revision} · SVG runtime
    +
    `; +} + +export function mountInlineAgentLoopGraph( + root: HTMLElement, + initialOptions: InlineAgentLoopGraphOptions, +): InlineAgentLoopGraphController { + let model = initialOptions.model; + let options = { ...initialOptions }; + let selection: AgentGraphSelection | undefined; + let integrityError = ''; + let followUpStatus = ''; + + const render = () => { + root.innerHTML = renderGraph( + model, + options, + selection, + integrityError, + followUpStatus, + ); + }; + + const activateSelection = (element: Element) => { + const nodeElement = element.closest('[data-node-index]'); + const edgeElement = element.closest('[data-edge-index]'); + if (nodeElement) { + const node = model.nodes[Number(nodeElement.dataset.nodeIndex)]; + if (node) selection = { kind: 'node', id: node.id }; + } else if (edgeElement) { + const edge = model.edges[Number(edgeElement.dataset.edgeIndex)]; + if (edge) selection = { kind: 'edge', id: edge.id }; + } else { + selection = undefined; + } + render(); + }; + + const requestFollowUp = async ( + kind: AgentGraphFollowUpIntent['kind'], + ) => { + if (!options.followUpAvailable || !options.onFollowUp) { + followUpStatus = 'Host follow-up is unavailable.'; + render(); + return; + } + followUpStatus = 'Requesting follow-up…'; + render(); + try { + await options.onFollowUp({ + kind, + runId: model.identity.runId, + ...(selection ? { selection } : {}), + }); + followUpStatus = 'Follow-up requested.'; + } catch { + followUpStatus = 'Follow-up cancelled or failed.'; + } + render(); + }; + + const clickHandler = (event: MouseEvent) => { + const target = event.target; + if (!(target instanceof Element)) return; + const action = target.closest('button[data-action]'); + if (action?.dataset.action) { + void requestFollowUp( + action.dataset.action as AgentGraphFollowUpIntent['kind'], + ); + return; + } + if (target.closest('[data-node-index], [data-edge-index]')) { + activateSelection(target); + } + }; + + const keyHandler = (event: KeyboardEvent) => { + if (event.key !== 'Enter' && event.key !== ' ') return; + const target = event.target; + if ( + target instanceof Element && + target.closest('[data-node-index], [data-edge-index]') + ) { + event.preventDefault(); + activateSelection(target); + } + }; + + root.addEventListener('click', clickHandler); + root.addEventListener('keydown', keyHandler); + render(); + + return Object.freeze({ + update( + nextModel: AgentGraphModel, + nextOptions: Pick = {}, + ) { + model = nextModel; + options = { ...options, ...nextOptions }; + integrityError = ''; + if ( + selection?.kind === 'node' && + !model.nodes.some((node) => node.id === selection?.id) + ) { + selection = undefined; + } + if ( + selection?.kind === 'edge' && + !model.edges.some((edge) => edge.id === selection?.id) + ) { + selection = undefined; + } + render(); + }, + integrityError(code: string) { + integrityError = String(code).slice(0, 80); + render(); + }, + destroy() { + root.removeEventListener('click', clickHandler); + root.removeEventListener('keydown', keyHandler); + root.replaceChildren(); + }, + }); +} diff --git a/packages/agent-graph-ui/src/inline.css b/packages/agent-graph-ui/src/inline.css new file mode 100644 index 0000000..ff84e88 --- /dev/null +++ b/packages/agent-graph-ui/src/inline.css @@ -0,0 +1,407 @@ +.looperators-inline-agent-graph, +.looperators-inline-agent-graph * { + box-sizing: border-box; +} + +.looperators-inline-agent-graph { + --lagi-background: var(--background, #f8fafc); + --lagi-card: var(--card, #ffffff); + --lagi-muted-card: var(--muted, #f1f3f5); + --lagi-foreground: var(--foreground, #171a1f); + --lagi-muted: var(--muted-foreground, #606772); + --lagi-border: var(--border, rgba(23, 26, 31, 0.16)); + --lagi-accent: var(--term-accent-hi, #65a30d); + --lagi-governor: var(--term-amber, #b45309); + --lagi-worker: var(--term-cyan, #0e7490); + --lagi-success: var(--term-emerald, #047857); + --lagi-danger: var(--term-rose, #e11d48); + display: grid; + gap: 12px; + width: 100%; + min-width: 0; + color: var(--lagi-foreground); + font: 14px/1.45 ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", + sans-serif; +} + +.lag-inline-header, +.lag-inline-badges, +.lag-inline-actions { + display: flex; + align-items: center; + gap: 7px; + flex-wrap: wrap; +} + +.lag-inline-header { + align-items: flex-start; + justify-content: space-between; + gap: 16px; +} + +.lag-inline-header h2, +.lag-inline-inspector h3 { + margin: 0; + font-size: 16px; + letter-spacing: -0.01em; +} + +.lag-inline-eyebrow { + margin: 0 0 2px; + color: var(--lagi-muted); + font: 10px/1.2 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, + monospace; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.lag-inline-badges { + justify-content: flex-end; +} + +.lag-inline-badge { + display: inline-flex; + align-items: center; + min-height: 24px; + border: 1px solid var(--lagi-border); + border-radius: 999px; + background: color-mix(in srgb, var(--lagi-card) 88%, transparent); + padding: 2px 8px; + color: var(--lagi-muted); + font: 10px/1 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, + monospace; + white-space: nowrap; +} + +.lag-inline-badge[data-tone="active"] { + border-color: color-mix(in srgb, var(--lagi-accent) 50%, var(--lagi-border)); + color: var(--lagi-accent); +} + +.lag-inline-badge[data-tone="success"], +.lag-inline-verified { + border-color: color-mix(in srgb, var(--lagi-success) 45%, var(--lagi-border)); + color: var(--lagi-success); +} + +.lag-inline-badge[data-tone="warning"] { + border-color: color-mix(in srgb, var(--lagi-governor) 50%, var(--lagi-border)); + color: var(--lagi-governor); +} + +.lag-inline-badge[data-tone="danger"] { + border-color: color-mix(in srgb, var(--lagi-danger) 45%, var(--lagi-border)); + color: var(--lagi-danger); +} + +.lag-inline-alert { + margin: 0; + border: 1px solid + color-mix(in srgb, var(--lagi-governor) 45%, var(--lagi-border)); + border-radius: 10px; + background: color-mix(in srgb, var(--lagi-governor) 8%, var(--lagi-card)); + padding: 8px 10px; + color: var(--lagi-governor); + font-size: 12px; +} + +.lag-inline-error { + border-color: color-mix(in srgb, var(--lagi-danger) 45%, var(--lagi-border)); + color: var(--lagi-danger); +} + +.lag-inline-stage { + width: 100%; + overflow: hidden; + border: 1px solid var(--lagi-border); + border-radius: 14px; + background: var(--lagi-background); +} + +.lag-inline-stage svg { + display: block; + width: 100%; + min-width: 620px; + height: auto; + min-height: 250px; + max-height: 420px; +} + +.lag-inline-grid { + fill: url("#lag-grid"); +} + +.lag-inline-grid-dot { + fill: color-mix(in srgb, var(--lagi-muted) 30%, transparent); +} + +.lag-inline-node, +.lag-inline-edge { + cursor: pointer; + outline: none; +} + +.lag-inline-node-card { + fill: color-mix(in srgb, var(--lagi-card) 96%, transparent); + stroke: var(--lagi-border); + filter: drop-shadow(0 9px 12px rgba(0, 0, 0, 0.08)); +} + +.lag-inline-node[data-role="root"] .lag-inline-node-card { + stroke: color-mix(in srgb, var(--lagi-governor) 55%, var(--lagi-border)); +} + +.lag-inline-node[data-role="implementer"] .lag-inline-node-card, +.lag-inline-node[data-role="reviewer"] .lag-inline-node-card { + stroke: color-mix(in srgb, var(--lagi-worker) 48%, var(--lagi-border)); +} + +.lag-inline-node[data-state="terminal"] { + opacity: 0.72; +} + +.lag-inline-node[data-selected="true"] .lag-inline-node-card, +.lag-inline-node:focus-visible .lag-inline-node-card { + stroke: var(--lagi-accent); + stroke-width: 3; +} + +.lag-inline-glyph-box, +.lag-inline-description-box, +.lag-inline-state-box { + fill: color-mix(in srgb, var(--lagi-muted-card) 76%, transparent); + stroke: var(--lagi-border); +} + +.lag-inline-glyph, +.lag-inline-node-title, +.lag-inline-state, +.lag-inline-node-subtitle, +.lag-inline-description, +.lag-inline-node-id, +.lag-inline-node-binding, +.lag-inline-edge-label { + dominant-baseline: auto; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; +} + +.lag-inline-glyph { + fill: var(--lagi-worker); + font-size: 13px; + font-weight: 700; +} + +.lag-inline-node[data-role="root"] .lag-inline-glyph { + fill: var(--lagi-governor); +} + +.lag-inline-node-title { + fill: var(--lagi-foreground); + font-size: 12px; + font-weight: 700; +} + +.lag-inline-node-subtitle, +.lag-inline-state, +.lag-inline-description, +.lag-inline-node-id, +.lag-inline-node-binding, +.lag-inline-edge-label { + fill: var(--lagi-muted); +} + +.lag-inline-node-subtitle, +.lag-inline-state { + font-size: 9px; +} + +.lag-inline-description { + font-size: 10px; +} + +.lag-inline-node-id, +.lag-inline-node-binding, +.lag-inline-edge-label { + font-size: 8.5px; +} + +.lag-inline-node-separator { + stroke: var(--lagi-border); +} + +.lag-inline-edge-path { + fill: none; + stroke: var(--lagi-muted); + stroke-width: 2; +} + +.lag-inline-edge-hit { + fill: none; + stroke: transparent; + stroke-width: 18; +} + +.lag-inline-edge[data-kind="governs"] .lag-inline-edge-path { + stroke: var(--lagi-governor); +} + +.lag-inline-edge[data-kind="handoff"] .lag-inline-edge-path { + stroke: var(--lagi-success); +} + +.lag-inline-edge[data-kind="feedback"] .lag-inline-edge-path { + stroke: var(--lagi-governor); + stroke-dasharray: 7 5; +} + +.lag-inline-edge[data-kind="verdict"] .lag-inline-edge-path { + stroke: var(--lagi-worker); + stroke-dasharray: 3 4; +} + +.lag-inline-edge[data-active="false"] { + opacity: 0.62; +} + +.lag-inline-edge[data-selected="true"] .lag-inline-edge-path, +.lag-inline-edge:focus-visible .lag-inline-edge-path { + stroke: var(--lagi-accent); + stroke-width: 4; +} + +.lag-inline-arrow { + fill: var(--lagi-muted); +} + +.lag-inline-edge-label-box { + fill: color-mix(in srgb, var(--lagi-card) 94%, transparent); + stroke: var(--lagi-border); +} + +.lag-inline-edge[data-active="true"] .lag-inline-edge-label-box { + stroke: var(--lagi-accent); +} + +.lag-inline-inspector { + display: grid; + grid-template-columns: minmax(220px, 1fr) auto; + align-items: center; + gap: 12px 18px; + border: 1px solid var(--lagi-border); + border-radius: 12px; + background: color-mix(in srgb, var(--lagi-card) 92%, transparent); + padding: 11px 12px; +} + +.lag-inline-detail, +.lag-inline-follow-up { + margin: 4px 0 0; + color: var(--lagi-muted); + font: 10px/1.4 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, + monospace; +} + +.lag-inline-actions { + justify-content: flex-end; +} + +.lag-inline-actions button { + min-height: 31px; + border: 1px solid var(--lagi-border); + border-radius: 9px; + background: var(--lagi-card); + padding: 5px 9px; + color: var(--lagi-foreground); + font: 10px/1 ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", + sans-serif; + cursor: pointer; +} + +.lag-inline-actions button:disabled { + cursor: not-allowed; + opacity: 0.45; +} + +.lag-inline-actions button:focus-visible, +.lag-inline-timeline summary:focus-visible { + outline: 2px solid var(--lagi-accent); + outline-offset: 2px; +} + +.lag-inline-follow-up { + grid-column: 1 / -1; +} + +.lag-inline-timeline { + border: 1px solid var(--lagi-border); + border-radius: 12px; + background: color-mix(in srgb, var(--lagi-card) 90%, transparent); +} + +.lag-inline-timeline summary { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 12px; + color: var(--lagi-foreground); + font: 11px/1 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, + monospace; + cursor: pointer; +} + +.lag-inline-timeline ol { + display: grid; + gap: 6px; + margin: 0; + padding: 0 12px 12px 32px; +} + +.lag-inline-timeline li, +.lag-inline-footer { + color: var(--lagi-muted); + font-size: 10px; +} + +.lag-inline-timeline li time { + margin-right: 8px; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; +} + +.lag-inline-timeline li small { + margin-left: 6px; + color: var(--lagi-worker); +} + +.lag-inline-footer { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; +} + +@media (max-width: 719px) { + .lag-inline-stage { + overflow-x: auto; + } + + .lag-inline-inspector { + grid-template-columns: 1fr; + } + + .lag-inline-actions { + justify-content: flex-start; + } +} + +@media (prefers-color-scheme: dark) { + .looperators-inline-agent-graph { + --lagi-background: var(--background, #07090a); + --lagi-card: var(--card, #0d120e); + --lagi-muted-card: var(--muted, #0f1511); + --lagi-foreground: var(--foreground, #e5e7eb); + --lagi-muted: var(--muted-foreground, #9ca3af); + --lagi-border: var(--border, rgba(255, 255, 255, 0.12)); + --lagi-accent: var(--term-accent-hi, #a3e635); + --lagi-governor: var(--term-amber, #fcd34d); + --lagi-worker: var(--term-cyan, #67e8f9); + --lagi-success: var(--term-emerald, #6ee7b7); + --lagi-danger: var(--term-rose, #fb7185); + } +} diff --git a/packages/agent-graph-ui/src/inline.ts b/packages/agent-graph-ui/src/inline.ts new file mode 100644 index 0000000..b9dafe6 --- /dev/null +++ b/packages/agent-graph-ui/src/inline.ts @@ -0,0 +1,12 @@ +import './inline.css'; + +export { + mountInlineAgentLoopGraph, + type InlineAgentLoopGraphController, + type InlineAgentLoopGraphOptions, +} from './inline-agent-loop-graph'; +export type { + AgentGraphFollowUpIntent, + AgentGraphModel, + AgentGraphSelection, +} from './graph-model'; diff --git a/packages/agent-graph-ui/src/loop-badge.tsx b/packages/agent-graph-ui/src/loop-badge.tsx new file mode 100644 index 0000000..4fd15c9 --- /dev/null +++ b/packages/agent-graph-ui/src/loop-badge.tsx @@ -0,0 +1,27 @@ +import type { AgentGraphModel } from './graph-model'; +import { statusTone } from './graph-model'; + +export function LoopBadge({ + model, + onOpen, +}: { + model: AgentGraphModel; + onOpen: () => void; +}) { + return ( + + ); +} diff --git a/packages/agent-graph-ui/src/loop-panel.tsx b/packages/agent-graph-ui/src/loop-panel.tsx new file mode 100644 index 0000000..16969b1 --- /dev/null +++ b/packages/agent-graph-ui/src/loop-panel.tsx @@ -0,0 +1,123 @@ +import { useState } from 'react'; +import type { AgentGraphFollowUpIntent, AgentGraphIssue, AgentGraphModel } from './graph-model'; +import { statusTone } from './graph-model'; + +function IssueList({ issues }: { issues: AgentGraphIssue[] }) { + return ( +
      + {issues.map((issue, index) => ( +
    • + {issue.severity ?? 'issue'} + {issue.message} + {issue.file ? {issue.file}{issue.line ? `:${issue.line}` : ''} : null} +
    • + ))} +
    + ); +} + +export function LoopPanel({ + model, + onClose, + controlAvailable = false, + onControl, + confirming, + onConfirmingChange, +}: { + model: AgentGraphModel; + onClose: () => void; + controlAvailable?: boolean; + onControl?: (intent: AgentGraphFollowUpIntent) => void | Promise; + confirming?: boolean; + onConfirmingChange?: (confirming: boolean) => void; +}) { + const [internalConfirming, setInternalConfirming] = useState(false); + const [pending, setPending] = useState(false); + const isConfirming = confirming ?? internalConfirming; + const setConfirming = onConfirmingChange ?? setInternalConfirming; + const terminal = ['succeeded', 'capped', 'cancelled', 'failed'].includes(model.status); + const issues = model.latestReport?.issues ?? []; + + const cancel = async () => { + if (!onControl || pending) return; + setPending(true); + try { + await onControl({ kind: 'cancel', runId: model.identity.runId }); + setConfirming(false); + } finally { + setPending(false); + } + }; + + return ( + + ); +} diff --git a/packages/agent-graph-ui/src/loop-status.tsx b/packages/agent-graph-ui/src/loop-status.tsx new file mode 100644 index 0000000..d3c9c52 --- /dev/null +++ b/packages/agent-graph-ui/src/loop-status.tsx @@ -0,0 +1,35 @@ +import { statusTone, type AgentGraphModel } from './graph-model'; + +export function LoopStatus({ + model, + mode, + liveState, +}: { + model: AgentGraphModel; + mode: 'snapshot' | 'live'; + liveState?: 'connecting' | 'live' | 'retrying'; +}) { + return ( +
    +
    +

    looperators

    +

    Agent Loop

    +
    +
    + verified + + {model.status} + + + lap {model.currentLap}/{model.lapCap} + + + lease {model.lease.consumed}/{model.lease.granted} + + + {mode === 'live' ? (liveState ?? 'connecting') : 'snapshot'} + +
    +
    + ); +} diff --git a/packages/agent-graph-ui/src/relationship-edge.tsx b/packages/agent-graph-ui/src/relationship-edge.tsx new file mode 100644 index 0000000..91f6c3e --- /dev/null +++ b/packages/agent-graph-ui/src/relationship-edge.tsx @@ -0,0 +1,160 @@ +import { + BaseEdge, + EdgeLabelRenderer, + getBezierPath, + type Edge, + type EdgeProps, +} from '@xyflow/react'; +import type { AgentEdgeData } from './graph-model'; + +const edgeLabels = { + governs: 'governs', + handoff: 'handoff', + feedback: 'feedback', + verdict: 'verdict', +} as const; + +function routedPath({ + route, + sourceX, + sourceY, + targetX, + targetY, + sourcePosition, + targetPosition, +}: { + route: AgentEdgeData['route']; + sourceX: number; + sourceY: number; + targetX: number; + targetY: number; + sourcePosition: EdgeProps['sourcePosition']; + targetPosition: EdgeProps['targetPosition']; +}) { + if (route === 'direct') { + const [path, labelX, labelY] = getBezierPath({ + sourceX, + sourceY, + targetX, + targetY, + sourcePosition, + targetPosition, + curvature: 0.32, + }); + return { path, labelX, labelY }; + } + if (route === 'lower') { + const depth = Math.max(sourceY, targetY) + 88; + return { + path: `M ${sourceX} ${sourceY} C ${sourceX} ${depth}, ${targetX} ${depth}, ${targetX} ${targetY}`, + labelX: (sourceX + targetX) / 2, + labelY: depth - 8, + }; + } + const direction = route === 'right' ? 1 : -1; + const depth = + (route === 'right' + ? Math.max(sourceX, targetX) + : Math.min(sourceX, targetX)) + + direction * 96; + return { + path: `M ${sourceX} ${sourceY} C ${depth} ${sourceY}, ${depth} ${targetY}, ${targetX} ${targetY}`, + labelX: + (route === 'right' + ? Math.max(sourceX, targetX) + : Math.min(sourceX, targetX)) - + direction * 28, + labelY: (sourceY + targetY) / 2, + }; +} + +export function AgentRelationshipEdge({ + id, + sourceX, + sourceY, + targetX, + targetY, + sourcePosition, + targetPosition, + markerEnd, + selected, + data, +}: EdgeProps>) { + const edgeData = data as AgentEdgeData; + const { edge, route, latestReport } = edgeData; + const { path, labelX, labelY } = routedPath({ + route, + sourceX, + sourceY, + targetX, + targetY, + sourcePosition, + targetPosition, + }); + const reportLabel = + latestReport?.verdict === 'issues' + ? `${latestReport.issueCount} issues` + : latestReport?.verdict === 'clean' + ? 'clean' + : undefined; + const displayLabel = edge.label ?? edgeLabels[edge.kind]; + const tooltip = [ + displayLabel, + edge.summary, + edge.gate ? `gate ${edge.gate}` : undefined, + edge.stopWhen, + edge.pending ? 'pending' : undefined, + ].filter(Boolean).join('\n'); + return ( + <> + + +
    { + event.stopPropagation(); + edgeData.onSelect?.(id); + }} + onKeyDown={(event) => { + if (event.key !== 'Enter' && event.key !== ' ') return; + event.preventDefault(); + event.stopPropagation(); + edgeData.onSelect?.(id); + }} + > + {displayLabel} + {edge.pending ? pending : null} + {reportLabel ? {reportLabel} : null} + {edge.reportCount > 0 ? {edge.reportCount} : null} + {edge.maxFirings !== undefined ? {edge.firings ?? 0}/{edge.maxFirings} : null} +
    +
    + + ); +} diff --git a/packages/agent-graph-ui/src/relationship-inspector.tsx b/packages/agent-graph-ui/src/relationship-inspector.tsx new file mode 100644 index 0000000..0237d45 --- /dev/null +++ b/packages/agent-graph-ui/src/relationship-inspector.tsx @@ -0,0 +1,53 @@ +import type { AgentGraphEdge, AgentGraphNode } from './graph-model'; + +function nodeLabel(nodes: AgentGraphNode[], id: string) { + return nodes.find((node) => node.id === id)?.label ?? id; +} + +export function RelationshipInspector({ + edge, + nodes, + onClose, + onRequestStop, + stopAvailable = false, +}: { + edge: AgentGraphEdge; + nodes: AgentGraphNode[]; + onClose: () => void; + onRequestStop?: () => void; + stopAvailable?: boolean; +}) { + return ( + + ); +} diff --git a/packages/agent-graph-ui/src/styles.css b/packages/agent-graph-ui/src/styles.css new file mode 100644 index 0000000..88fb150 --- /dev/null +++ b/packages/agent-graph-ui/src/styles.css @@ -0,0 +1,813 @@ +.looperators-agent-graph, +.looperators-agent-graph * { + box-sizing: border-box; +} + +.looperators-agent-graph { + --lag-background: var(--background, #f8fafc); + --lag-card: var(--card, #ffffff); + --lag-card-muted: var(--muted, #f1f3f5); + --lag-foreground: var(--foreground, #171a1f); + --lag-muted: var(--muted-foreground, #606772); + --lag-border: var(--border, rgba(23, 26, 31, 0.14)); + --lag-accent: var(--term-accent-hi, #65a30d); + --lag-governor: var(--term-amber, #b45309); + --lag-worker: var(--term-cyan, #0e7490); + --lag-success: var(--term-emerald, #047857); + --lag-danger: var(--term-rose, #e11d48); + --lag-font: + ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + --lag-mono: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; + display: grid; + gap: 12px; + width: 100%; + min-width: 0; + color: var(--lag-foreground); + font: 14px/1.45 var(--lag-font); +} + +.lag-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 16px; + flex-wrap: wrap; +} + +.lag-header h2, +.lag-inspector h3 { + margin: 0; + font-size: 16px; + letter-spacing: -0.01em; +} + +.lag-eyebrow { + margin: 0 0 2px; + color: var(--lag-muted); + font: 10px/1.2 var(--lag-mono); + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.lag-badges { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 6px; + flex-wrap: wrap; +} + +.lag-badge, +.lag-state-pill { + display: inline-flex; + align-items: center; + min-height: 24px; + border: 1px solid var(--lag-border); + border-radius: 999px; + background: color-mix(in srgb, var(--lag-card) 88%, transparent); + padding: 2px 8px; + color: var(--lag-muted); + font: 10px/1 var(--lag-mono); + white-space: nowrap; +} + +.lag-badge[data-tone="active"] { + border-color: color-mix(in srgb, var(--lag-accent) 50%, var(--lag-border)); + color: var(--lag-accent); +} + +.lag-badge[data-tone="success"], +.lag-verified { + border-color: color-mix(in srgb, var(--lag-success) 45%, var(--lag-border)); + color: var(--lag-success); +} + +.lag-badge[data-tone="warning"] { + border-color: color-mix(in srgb, var(--lag-governor) 50%, var(--lag-border)); + color: var(--lag-governor); +} + +.lag-badge[data-tone="danger"] { + border-color: color-mix(in srgb, var(--lag-danger) 45%, var(--lag-border)); + color: var(--lag-danger); +} + +.lag-alert, +.lag-embed-error { + margin: 0; + border: 1px solid color-mix(in srgb, var(--lag-governor) 45%, var(--lag-border)); + border-radius: 10px; + background: color-mix(in srgb, var(--lag-governor) 8%, var(--lag-card)); + padding: 8px 10px; + color: var(--lag-governor); + font-size: 12px; +} + +.lag-embed-error { + margin-bottom: 10px; + border-color: color-mix(in srgb, var(--lag-danger) 45%, var(--lag-border)); + color: var(--lag-danger); +} + +.lag-flow { + width: 100%; + height: 390px; + min-height: 320px; + overflow: hidden; + border: 1px solid var(--lag-border); + border-radius: 14px; + background: + radial-gradient( + circle at 15% -10%, + color-mix(in srgb, var(--lag-accent) 10%, transparent), + transparent 42% + ), + var(--lag-background); +} + +.lag-workspace { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 12px; + min-width: 0; +} + +.lag-workspace[data-panel-open="true"] { + grid-template-columns: minmax(520px, 1fr) 360px; +} + +.lag-canvas-stack { + display: grid; + min-width: 0; + gap: 8px; +} + +.lag-loop-badge { + display: grid; + grid-template-columns: auto minmax(0, 1fr) auto; + align-items: center; + gap: 9px; + width: min(360px, 100%); + border: 1px solid var(--lag-border); + border-radius: 11px; + background: color-mix(in srgb, var(--lag-card) 94%, transparent); + padding: 8px 10px; + color: var(--lag-foreground); + font: 10px/1.25 var(--lag-mono); + text-align: left; + cursor: pointer; + box-shadow: 0 4px 14px color-mix(in srgb, #000 7%, transparent); +} + +.lag-loop-badge:hover, +.lag-loop-badge:focus-visible { + border-color: color-mix(in srgb, var(--lag-accent) 55%, var(--lag-border)); +} + +.lag-loop-badge[data-tone="active"] { color: var(--lag-accent); } +.lag-loop-badge[data-tone="success"] { color: var(--lag-success); } +.lag-loop-badge[data-tone="warning"] { color: var(--lag-governor); } +.lag-loop-badge[data-tone="danger"] { color: var(--lag-danger); } + +.lag-loop-badge-icon { + font-size: 17px; +} + +.lag-loop-badge-copy { + display: grid; + min-width: 0; +} + +.lag-loop-badge-copy strong, +.lag-loop-badge-copy small { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.lag-loop-badge-copy small { + margin-top: 2px; + color: var(--lag-muted); + font-family: var(--lag-font); +} + +.lag-loop-badge-lap { + border: 1px solid currentColor; + border-radius: 999px; + padding: 3px 7px; + font-weight: 700; +} + +.lag-flow[data-orientation="vertical"] { + height: 720px; +} + +.lag-flow .react-flow__background { + color: color-mix(in srgb, var(--lag-muted) 32%, transparent); +} + +.lag-flow .react-flow__controls { + overflow: hidden; + border: 1px solid var(--lag-border); + border-radius: 10px; + box-shadow: none; +} + +.lag-flow .react-flow__controls-button { + border-bottom-color: var(--lag-border); + background: color-mix(in srgb, var(--lag-card) 94%, transparent); + color: var(--lag-foreground); +} + +.lag-flow .react-flow__controls-button:hover { + background: var(--lag-card-muted); +} + +.lag-flow .react-flow__controls-button svg { + fill: currentColor; +} + +.lag-node { + position: relative; + display: grid; + width: 276px; + min-height: 154px; + overflow: visible; + border: 1px solid var(--lag-border); + border-radius: 14px; + background: color-mix(in srgb, var(--lag-card) 96%, transparent); + box-shadow: 0 10px 24px color-mix(in srgb, #000 7%, transparent); + font-family: var(--lag-mono); + transition: + border-color 140ms ease, + box-shadow 140ms ease, + opacity 140ms ease; +} + +.lag-node[data-role="root"] { + border-color: color-mix(in srgb, var(--lag-governor) 48%, var(--lag-border)); +} + +.lag-node[data-role="implementer"], +.lag-node[data-role="reviewer"] { + border-color: color-mix(in srgb, var(--lag-worker) 42%, var(--lag-border)); +} + +.lag-node[data-state="active"] { + box-shadow: + 0 0 0 1px color-mix(in srgb, var(--lag-accent) 50%, transparent), + 0 12px 32px color-mix(in srgb, var(--lag-accent) 14%, transparent); +} + +.lag-node[data-state="terminal"] { + opacity: 0.72; +} + +.lag-node[data-selected="true"] { + border-color: var(--lag-accent); + box-shadow: + 0 0 0 2px color-mix(in srgb, var(--lag-accent) 32%, transparent), + 0 12px 32px color-mix(in srgb, var(--lag-accent) 14%, transparent); +} + +.lag-node-header { + display: flex; + align-items: center; + gap: 10px; + padding: 12px 12px 9px; +} + +.lag-node-glyph { + display: grid; + width: 34px; + height: 34px; + place-items: center; + flex: 0 0 auto; + border: 1px solid color-mix(in srgb, currentColor 28%, var(--lag-border)); + border-radius: 10px; + background: color-mix(in srgb, currentColor 8%, var(--lag-card)); + color: var(--lag-worker); + font-size: 13px; + font-weight: 700; +} + +.lag-node[data-role="root"] .lag-node-glyph { + color: var(--lag-governor); +} + +.lag-node-heading { + display: grid; + min-width: 0; + flex: 1; +} + +.lag-node-heading strong { + overflow: hidden; + color: var(--lag-foreground); + font-size: 12px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.lag-node-heading small { + overflow: hidden; + margin-top: 2px; + color: var(--lag-muted); + font-size: 9px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.lag-state-pill { + min-height: 20px; + padding: 2px 7px; + font-size: 9px; +} + +.lag-node-body { + min-height: 60px; + padding: 0 12px 10px; +} + +.lag-node-description { + margin: 0; + border: 1px solid var(--lag-border); + border-radius: 9px; + background: color-mix(in srgb, var(--lag-card-muted) 70%, transparent); + padding: 8px; + color: var(--lag-muted); + font: 10px/1.45 var(--lag-font); +} + +.lag-verdict { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + border: 1px solid var(--lag-border); + border-radius: 9px; + background: color-mix(in srgb, var(--lag-card-muted) 70%, transparent); + padding: 8px; + color: var(--lag-muted); + font-size: 10px; +} + +.lag-verdict[data-verdict="issues"] { + border-color: color-mix(in srgb, var(--lag-governor) 40%, var(--lag-border)); + color: var(--lag-governor); +} + +.lag-verdict[data-verdict="clean"] { + border-color: color-mix(in srgb, var(--lag-success) 40%, var(--lag-border)); + color: var(--lag-success); +} + +.lag-node-footer { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + border-top: 1px solid var(--lag-border); + padding: 7px 12px; + color: var(--lag-muted); + font-size: 8.5px; +} + +.lag-node-footer span { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.lag-node-activity { + display: inline-flex; + gap: 4px; +} + +.lag-report-summary { + overflow: hidden; + margin: 6px 0 0; + color: var(--lag-muted); + font: 10px/1.4 var(--lag-font); + text-overflow: ellipsis; + white-space: nowrap; +} + +.lag-handle { + width: 8px !important; + height: 8px !important; + border: 2px solid var(--lag-card) !important; + background: var(--lag-accent) !important; + opacity: 0.86; +} + +.lag-handle-upper:is(.react-flow__handle-left, .react-flow__handle-right) { + top: 38% !important; +} + +.lag-handle-lower:is(.react-flow__handle-left, .react-flow__handle-right) { + top: 68% !important; +} + +.lag-handle-source { + transform: translate(-50%, -50%) scale(0.86); +} + +.lag-edge-path { + stroke: var(--lag-muted); + transition: + stroke 140ms ease, + opacity 140ms ease; +} + +.lag-edge-path[data-kind="governs"] { + stroke: var(--lag-governor); +} + +.lag-edge-path[data-kind="handoff"] { + stroke: var(--lag-success); +} + +.lag-edge-path[data-kind="feedback"] { + stroke: var(--lag-governor); + stroke-dasharray: 7 5; +} + +.lag-edge-path[data-kind="verdict"] { + stroke: var(--lag-worker); + stroke-dasharray: 3 4; +} + +.lag-edge-path[data-active="false"] { + opacity: 0.58; +} + +.lag-edge-path[data-pending="true"] { + animation: lag-edge-pulse 1.8s ease-in-out infinite; +} + +.lag-edge-label[data-recent="true"] { + box-shadow: + 0 0 0 1px color-mix(in srgb, var(--lag-accent) 26%, transparent), + 0 4px 12px color-mix(in srgb, #000 7%, transparent); +} + +@keyframes lag-edge-pulse { + 50% { opacity: 0.45; } +} + +.lag-edge-label { + position: absolute; + z-index: 20; + display: flex; + align-items: center; + gap: 5px; + border: 1px solid var(--lag-border); + border-radius: 999px; + background: color-mix(in srgb, var(--lag-card) 92%, transparent); + padding: 4px 7px; + color: var(--lag-muted); + font: 8.5px/1 var(--lag-mono); + box-shadow: 0 4px 12px color-mix(in srgb, #000 7%, transparent); + pointer-events: all; + white-space: nowrap; +} + +.lag-edge-label[data-active="true"] { + border-color: color-mix(in srgb, var(--lag-accent) 50%, var(--lag-border)); + color: var(--lag-accent); +} + +.lag-edge-label[data-selected="true"] { + border-color: var(--lag-accent); + box-shadow: + 0 0 0 2px color-mix(in srgb, var(--lag-accent) 25%, transparent), + 0 4px 12px color-mix(in srgb, #000 7%, transparent); +} + +.lag-edge-label:focus-visible, +.lag-actions button:focus-visible, +.lag-timeline summary:focus-visible { + outline: 2px solid var(--lag-accent); + outline-offset: 2px; +} + +.lag-inspector { + display: grid; + grid-template-columns: minmax(220px, 1fr) auto; + align-items: center; + gap: 12px 18px; + border: 1px solid var(--lag-border); + border-radius: 12px; + background: color-mix(in srgb, var(--lag-card) 92%, transparent); + padding: 11px 12px; +} + +.lag-inspector-copy p:last-child { + margin: 4px 0 0; + color: var(--lag-muted); + font: 10px/1.4 var(--lag-mono); +} + +.lag-actions { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 7px; + flex-wrap: wrap; +} + +.lag-actions button, +.lag-demo-toolbar select { + min-height: 31px; + border: 1px solid var(--lag-border); + border-radius: 9px; + background: var(--lag-card); + padding: 5px 9px; + color: var(--lag-foreground); + font: 10px/1 var(--lag-font); + cursor: pointer; +} + +.lag-actions button:disabled { + cursor: not-allowed; + opacity: 0.45; +} + +.lag-follow-up-status { + grid-column: 1 / -1; + margin: 0; + color: var(--lag-muted); + font-size: 10px; +} + +.lag-relationship-inspector, +.lag-loop-panel { + min-width: 0; + overflow: hidden; + border: 1px solid var(--lag-border); + border-radius: 13px; + background: color-mix(in srgb, var(--lag-background) 96%, transparent); + color: var(--lag-foreground); + box-shadow: 0 12px 30px color-mix(in srgb, #000 10%, transparent); +} + +.lag-relationship-inspector > header, +.lag-loop-panel > header { + display: grid; + grid-template-columns: auto minmax(0, 1fr) auto; + align-items: center; + gap: 9px; + min-height: 52px; + border-bottom: 1px solid var(--lag-border); + padding: 8px 10px; +} + +.lag-relationship-inspector h3, +.lag-loop-panel h3, +.lag-loop-panel p { + margin: 0; +} + +.lag-loop-panel > header p { + margin-top: 2px; + color: var(--lag-muted); + font: 9px/1.2 var(--lag-mono); +} + +.lag-panel-icon { + display: grid; + width: 28px; + height: 28px; + place-items: center; + border: 1px solid color-mix(in srgb, var(--lag-accent) 35%, var(--lag-border)); + border-radius: 9px; + color: var(--lag-accent); +} + +.lag-panel-icon[data-active="true"] { + animation: lag-spin 3s linear infinite; +} + +@keyframes lag-spin { to { transform: rotate(360deg); } } + +.lag-icon-button { + display: grid; + width: 28px; + height: 28px; + place-items: center; + border: 0; + border-radius: 8px; + background: transparent; + color: var(--lag-muted); + font-size: 18px; + cursor: pointer; +} + +.lag-icon-button:hover { background: var(--lag-card-muted); } + +.lag-relationship-grid { + display: grid; + grid-template-columns: 88px minmax(0, 1fr); + gap: 7px 10px; + margin: 10px; + border: 1px solid var(--lag-border); + border-radius: 10px; + background: var(--lag-card); + padding: 10px; + font-size: 10px; +} + +.lag-relationship-grid dt { color: var(--lag-muted); } +.lag-relationship-grid dd { margin: 0; overflow-wrap: anywhere; } + +.lag-panel-note { + margin: 0 10px 10px; + border: 1px solid var(--lag-border); + border-radius: 9px; + background: var(--lag-card-muted); + padding: 9px; + color: var(--lag-muted); + font-size: 10px; +} + +.lag-danger-button { + width: calc(100% - 20px); + margin: 0 10px 10px; + border: 1px solid color-mix(in srgb, var(--lag-danger) 45%, var(--lag-border)); + border-radius: 9px; + background: color-mix(in srgb, var(--lag-danger) 8%, var(--lag-card)); + padding: 8px; + color: var(--lag-danger); + font-size: 10px; + cursor: pointer; +} + +.lag-danger-button:disabled { cursor: not-allowed; opacity: 0.45; } + +.lag-loop-panel-body { + display: grid; + max-height: 640px; + gap: 10px; + overflow-y: auto; + padding: 10px; +} + +.lag-stop-confirm, +.lag-loop-summary, +.lag-blocking-issues, +.lag-lap-card, +.lag-diagnostics { + border: 1px solid var(--lag-border); + border-radius: 10px; + background: var(--lag-card); + padding: 10px; +} + +.lag-stop-confirm { + border-color: color-mix(in srgb, var(--lag-governor) 45%, var(--lag-border)); + background: color-mix(in srgb, var(--lag-governor) 8%, var(--lag-card)); + color: var(--lag-governor); + font-size: 10px; +} + +.lag-stop-confirm p { margin-top: 5px; color: var(--lag-foreground); } +.lag-stop-confirm > div { display: flex; justify-content: flex-end; gap: 6px; margin-top: 8px; } + +.lag-stop-confirm button, +.lag-loop-summary button { + border: 1px solid var(--lag-border); + border-radius: 8px; + background: var(--lag-card); + padding: 6px 8px; + color: var(--lag-foreground); + font-size: 9px; + cursor: pointer; +} + +.lag-loop-summary h4, +.lag-blocking-issues h4 { + margin: 0; + font-size: 11px; +} + +.lag-loop-summary > p { + margin-top: 5px; + color: var(--lag-muted); + font-size: 10px; +} + +.lag-loop-summary dl { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 7px; + margin: 9px 0; + border-top: 1px solid var(--lag-border); + padding-top: 8px; +} + +.lag-loop-summary dl div { min-width: 0; } +.lag-loop-summary dt { color: var(--lag-muted); font-size: 8px; } +.lag-loop-summary dd { overflow-wrap: anywhere; margin: 2px 0 0; font: 9px/1.3 var(--lag-mono); } +.lag-loop-summary > small { display: block; margin-top: 8px; color: var(--lag-muted); } + +.lag-issue-list, +.lag-lap-list { + display: grid; + gap: 7px; + margin: 7px 0 0; + padding: 0; + list-style: none; +} + +.lag-issue-list li { display: grid; gap: 2px; font-size: 9px; } +.lag-issue-list strong { color: var(--lag-danger); text-transform: uppercase; } +.lag-issue-list small { color: var(--lag-muted); font-family: var(--lag-mono); } + +.lag-lap-card > header { display: flex; justify-content: space-between; gap: 8px; } +.lag-lap-card p { display: grid; gap: 2px; margin-top: 7px; color: var(--lag-muted); font-size: 9px; } +.lag-lap-card p b { color: var(--lag-foreground); } +.lag-lap-card time { display: block; margin-top: 7px; color: var(--lag-muted); font: 8px/1 var(--lag-mono); } + +.lag-diagnostics { color: var(--lag-muted); font: 8px/1.45 var(--lag-mono); overflow-wrap: anywhere; } +.lag-diagnostics summary { color: var(--lag-foreground); cursor: pointer; } + +.lag-timeline { + border: 1px solid var(--lag-border); + border-radius: 12px; + background: color-mix(in srgb, var(--lag-card) 90%, transparent); +} + +.lag-timeline summary { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 12px; + color: var(--lag-foreground); + font: 11px/1 var(--lag-mono); + cursor: pointer; +} + +.lag-timeline ol { + display: grid; + gap: 6px; + margin: 0; + padding: 0 12px 12px 32px; +} + +.lag-timeline li { + color: var(--lag-muted); + font-size: 10px; +} + +.lag-timeline li time { + margin-right: 8px; + font-family: var(--lag-mono); +} + +.lag-timeline li small { + margin-left: 6px; + color: var(--lag-worker); +} + +@media (max-width: 719px) { + .lag-workspace[data-panel-open="true"] { + grid-template-columns: 1fr; + } + + .lag-inspector { + grid-template-columns: 1fr; + } + + .lag-actions { + justify-content: flex-start; + } +} + +@media (prefers-color-scheme: dark) { + .looperators-agent-graph { + --lag-background: var(--background, #07090a); + --lag-card: var(--card, #0d120e); + --lag-card-muted: var(--muted, #0f1511); + --lag-foreground: var(--foreground, #e5e7eb); + --lag-muted: var(--muted-foreground, #9ca3af); + --lag-border: var(--border, rgba(255, 255, 255, 0.11)); + --lag-accent: var(--term-accent-hi, #a3e635); + --lag-governor: var(--term-amber, #fcd34d); + --lag-worker: var(--term-cyan, #67e8f9); + --lag-success: var(--term-emerald, #6ee7b7); + --lag-danger: var(--term-rose, #fb7185); + } +} + +@media (prefers-reduced-motion: reduce) { + .looperators-agent-graph *, + .looperators-agent-graph *::before, + .looperators-agent-graph *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + } +} diff --git a/packages/agent-graph-ui/tests/embed.test.mjs b/packages/agent-graph-ui/tests/embed.test.mjs new file mode 100644 index 0000000..69fe8f2 --- /dev/null +++ b/packages/agent-graph-ui/tests/embed.test.mjs @@ -0,0 +1,58 @@ +import assert from 'node:assert/strict'; +import { readFile, stat } from 'node:fs/promises'; +import test from 'node:test'; + +const embedScript = new URL( + '../dist/embed/agent-graph-ui.iife.js', + import.meta.url, +); +const embedStyle = new URL('../dist/embed/agent-graph-ui.css', import.meta.url); +const libraryScript = new URL( + '../dist/library/agent-graph-ui.js', + import.meta.url, +); +const inlineScript = new URL( + '../dist/inline/agent-graph-ui-inline.js', + import.meta.url, +); +const inlineStyle = new URL( + '../dist/inline/agent-graph-ui-inline.css', + import.meta.url, +); + +test('plugin-target assets leave at least 512 KiB of inline fragment headroom', async () => { + const [scriptStat, styleStat] = await Promise.all([ + stat(embedScript), + stat(embedStyle), + ]); + const total = scriptStat.size + styleStat.size; + assert.ok(total < 1.5 * 1024 * 1024, `embed assets are ${total} bytes`); +}); + +test('shipped assets contain no remote or plugin runtime dependency', async () => { + const [script, style, library, inline, inlineCss] = await Promise.all([ + readFile(embedScript, 'utf8'), + readFile(embedStyle, 'utf8'), + readFile(libraryScript, 'utf8'), + readFile(inlineScript, 'utf8'), + readFile(inlineStyle, 'utf8'), + ]); + for (const source of [script, style]) { + // Bundled React and SVG metadata contain inert namespace, help, and + // attribution URLs. Network isolation is asserted in the browser + // acceptance; this static guard rejects executable network primitives. + assert.doesNotMatch(source, /\b(?:window|globalThis)\.fetch\s*\(/u); + assert.doesNotMatch(source, /\bXMLHttpRequest\b/u); + assert.doesNotMatch(source, /\bWebSocket\b/u); + assert.doesNotMatch(source, /\bEventSource\b/u); + } + assert.doesNotMatch(library, /electron|sessionManager|workflowKernel/u); + assert.doesNotMatch(library, /from\s*["']@\//u); + assert.match(script, /looperatorsAgentGraphView/u); + assert.match(inline, /mountInlineAgentLoopGraph/u); + assert.match(inline, /Agent Loop relationship graph/u); + assert.match(inlineCss, /looperators-inline-agent-graph/u); + assert.doesNotMatch(inline, /\bResizeObserver\b/u); + assert.doesNotMatch(inline, /\bcreateRoot\b/u); + assert.doesNotMatch(inline, /react-flow__node/u); +}); diff --git a/packages/agent-graph-ui/tests/model.test.mjs b/packages/agent-graph-ui/tests/model.test.mjs new file mode 100644 index 0000000..179bbdb --- /dev/null +++ b/packages/agent-graph-ui/tests/model.test.mjs @@ -0,0 +1,78 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { + agentGraphScenarios, + assertAgentGraphModel, + createAgentLoopFlowElements, + desktopParityModel, + orientationForWidth, +} from '../dist/library/agent-graph-ui.js'; + +test('all paired fixtures contain an independently valid portable model', () => { + assert.equal(agentGraphScenarios.length, 7); + for (const fixture of agentGraphScenarios) { + assert.equal( + assertAgentGraphModel(fixture.expectedModel), + fixture.expectedModel, + ); + assert.equal( + fixture.projection.projectionDigest, + fixture.expectedModel.identity.projectionDigest, + ); + assert.equal(fixture.projection.integrity.status, 'verified'); + } +}); + +test('Desktop parity model exercises the rich shared interaction surface', () => { + assert.equal(assertAgentGraphModel(desktopParityModel), desktopParityModel); + assert.equal(desktopParityModel.nodes.every((node) => node.description), true); + assert.equal(desktopParityModel.edges.some((edge) => edge.pending), true); + assert.equal(desktopParityModel.latestReport.issues.length, 2); + assert.equal(desktopParityModel.laps.length, 2); +}); + +test('wide and narrow layouts keep three stable nodes and four relationships', () => { + const model = agentGraphScenarios.find( + (fixture) => fixture.name === 'reviewer-issues', + ).expectedModel; + for (const orientation of ['horizontal', 'vertical']) { + const flow = createAgentLoopFlowElements(model, orientation); + assert.deepEqual( + flow.nodes.map((node) => node.id), + ['root', 'role:implementer', 'role:reviewer'], + ); + assert.deepEqual( + flow.edges.map((edge) => edge.data.edge.kind), + ['governs', 'handoff', 'feedback', 'verdict'], + ); + assert.equal( + flow.edges.filter((edge) => edge.animated).map((edge) => edge.id)[0], + 'reviewer-feedback-implementer', + ); + } + assert.equal(orientationForWidth(719), 'vertical'); + assert.equal(orientationForWidth(720), 'horizontal'); +}); + +test('model validation rejects unverified, invalid, and unknown-node input', () => { + const model = structuredClone(agentGraphScenarios[0].expectedModel); + assert.throws( + () => + assertAgentGraphModel({ + ...model, + identity: { ...model.identity, integrity: 'unknown' }, + }), + /verified/, + ); + assert.throws( + () => + assertAgentGraphModel({ + ...model, + identity: { ...model.identity, projectionDigest: 'short' }, + }), + /bounded string/, + ); + const edges = structuredClone(model.edges); + edges[0].target = 'missing'; + assert.throws(() => assertAgentGraphModel({ ...model, edges }), /unknown node/); +}); diff --git a/packages/agent-graph-ui/tsconfig.build.json b/packages/agent-graph-ui/tsconfig.build.json new file mode 100644 index 0000000..03a199c --- /dev/null +++ b/packages/agent-graph-ui/tsconfig.build.json @@ -0,0 +1,22 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": false, + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": false, + "rootDir": "./src", + "outDir": "./dist/types" + }, + "include": [ + "src/index.ts", + "src/graph-model.ts", + "src/fixtures.ts", + "src/agent-node.tsx", + "src/relationship-edge.tsx", + "src/loop-status.tsx", + "src/agent-loop-graph.tsx", + "src/inline.ts", + "src/inline-agent-loop-graph.ts" + ] +} diff --git a/packages/agent-graph-ui/tsconfig.json b/packages/agent-graph-ui/tsconfig.json new file mode 100644 index 0000000..dc70fdb --- /dev/null +++ b/packages/agent-graph-ui/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ES2023", + "lib": [ + "ES2023", + "DOM", + "DOM.Iterable" + ], + "module": "ESNext", + "moduleResolution": "Bundler", + "jsx": "react-jsx", + "strict": true, + "skipLibCheck": true, + "noEmit": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "types": [ + "vite/client" + ] + }, + "include": [ + "src", + "vite.config.ts", + "vite.library.config.ts", + "vite.embed.config.ts", + "vite.inline.config.ts" + ] +} diff --git a/packages/agent-graph-ui/vite.config.ts b/packages/agent-graph-ui/vite.config.ts new file mode 100644 index 0000000..c38592b --- /dev/null +++ b/packages/agent-graph-ui/vite.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + server: { + host: '127.0.0.1', + port: 48311, + strictPort: true, + }, +}); diff --git a/packages/agent-graph-ui/vite.embed.config.ts b/packages/agent-graph-ui/vite.embed.config.ts new file mode 100644 index 0000000..39166bf --- /dev/null +++ b/packages/agent-graph-ui/vite.embed.config.ts @@ -0,0 +1,26 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import { resolve } from 'node:path'; + +export default defineConfig({ + plugins: [react()], + define: { + 'process.env.NODE_ENV': JSON.stringify('production'), + }, + build: { + outDir: 'dist/embed', + emptyOutDir: false, + cssCodeSplit: false, + assetsInlineLimit: Number.MAX_SAFE_INTEGER, + target: 'es2022', + minify: 'oxc', + sourcemap: false, + lib: { + entry: resolve(import.meta.dirname, 'src/embed.tsx'), + name: 'LooperatorsAgentGraphUI', + formats: ['iife'], + fileName: () => 'agent-graph-ui.iife.js', + cssFileName: 'agent-graph-ui', + }, + }, +}); diff --git a/packages/agent-graph-ui/vite.inline.config.ts b/packages/agent-graph-ui/vite.inline.config.ts new file mode 100644 index 0000000..5914bb7 --- /dev/null +++ b/packages/agent-graph-ui/vite.inline.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { resolve } from 'node:path'; + +export default defineConfig({ + build: { + outDir: 'dist/inline', + emptyOutDir: false, + cssCodeSplit: false, + target: 'es2022', + minify: 'oxc', + sourcemap: false, + lib: { + entry: resolve(import.meta.dirname, 'src/inline.ts'), + formats: ['es'], + fileName: () => 'agent-graph-ui-inline.js', + cssFileName: 'agent-graph-ui-inline', + }, + }, +}); diff --git a/packages/agent-graph-ui/vite.library.config.ts b/packages/agent-graph-ui/vite.library.config.ts new file mode 100644 index 0000000..c634b35 --- /dev/null +++ b/packages/agent-graph-ui/vite.library.config.ts @@ -0,0 +1,21 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import { resolve } from 'node:path'; + +export default defineConfig({ + plugins: [react()], + build: { + outDir: 'dist/library', + emptyOutDir: false, + cssCodeSplit: false, + lib: { + entry: resolve(import.meta.dirname, 'src/index.ts'), + formats: ['es'], + fileName: () => 'agent-graph-ui.js', + cssFileName: 'agent-graph-ui', + }, + rollupOptions: { + external: ['react', 'react-dom', 'react/jsx-runtime', '@xyflow/react'], + }, + }, +}); diff --git a/plugins/looperators-agent-loop-p0/.codex-plugin/plugin.json b/plugins/looperators-agent-loop-p0/.codex-plugin/plugin.json new file mode 100644 index 0000000..e3574f1 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/.codex-plugin/plugin.json @@ -0,0 +1,23 @@ +{ + "name": "looperators-agent-loop-p0", + "version": "0.1.0+codex.20260726175228", + "description": "P0 compatibility probe for looperators Agent Loop hooks, inline views, and MCP Apps.", + "author": { + "name": "looperators" + }, + "skills": "./skills/", + "interface": { + "displayName": "Looperators Agent Loop P0", + "shortDescription": "Probe and visualize a local Agent Loop.", + "longDescription": "A deliberately small compatibility experiment for collecting Codex hook events, rendering a thread-scoped inline graph, and exposing the same graph through an MCP App.", + "developerName": "looperators", + "category": "Productivity", + "capabilities": [ + "Agent Loop hook collection", + "Thread-scoped inline visualization", + "MCP App graph resource" + ], + "defaultPrompt": "Use $agent-loop-visualization to normalize the local P0 hook log and render the looperators Agent Loop graph." + }, + "mcpServers": "./.mcp.json" +} diff --git a/plugins/looperators-agent-loop-p0/.mcp.json b/plugins/looperators-agent-loop-p0/.mcp.json new file mode 100644 index 0000000..504a3db --- /dev/null +++ b/plugins/looperators-agent-loop-p0/.mcp.json @@ -0,0 +1,14 @@ +{ + "mcpServers": { + "looperators-agent-loop-p0": { + "command": "node", + "args": [ + "./mcp/server.mjs" + ], + "cwd": ".", + "env_vars": [ + "LOOPERATORS_P0_ARTIFACT_DIR" + ] + } + } +} diff --git a/plugins/looperators-agent-loop-p0/README.md b/plugins/looperators-agent-loop-p0/README.md new file mode 100644 index 0000000..43a0789 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/README.md @@ -0,0 +1,21 @@ +# looperators Agent Loop P0 plugin + +This is a compatibility probe, not a production orchestration runtime. It keeps +four boundaries intentionally small: + +- Codex hook inputs are collected as one atomic file per delivery. +- `scripts/normalize-events.mjs` derives a deterministic event stream and graph. +- `scripts/generate-inline-visualization.mjs` projects the real root and + subagents into an interactive, thread-scoped native HTML fragment. +- `mcp/server.mjs` exposes that graph as both structured tool output and an + MCP App resource. +- `scripts/sidecar-server.mjs` is a token-protected, loopback-only SSE fallback. + +No looperators Desktop runtime, provider adapter, workflow kernel, or transcript +tailing is included. + +## Local checks + +```sh +node --test plugins/looperators-agent-loop-p0/tests/*.test.mjs +``` diff --git a/plugins/looperators-agent-loop-p0/hooks/collect-event.mjs b/plugins/looperators-agent-loop-p0/hooks/collect-event.mjs new file mode 100644 index 0000000..b82c819 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/hooks/collect-event.mjs @@ -0,0 +1,159 @@ +#!/usr/bin/env node + +import path from "node:path"; +import process from "node:process"; +import { + atomicWriteJson, + deliveryEventKey, + redactHookInput, + semanticEventKey, + sha256, + stableJson, +} from "../lib/event-utils.mjs"; + +function argument(name, fallback) { + const index = process.argv.indexOf(`--${name}`); + return index >= 0 ? process.argv[index + 1] : fallback; +} + +async function readStdin() { + const chunks = []; + for await (const chunk of process.stdin) { + chunks.push(chunk); + } + return Buffer.concat(chunks).toString("utf8"); +} + +function continuationOutput(input, stateCreated) { + if (!["Stop", "SubagentStop"].includes(input.hook_event_name)) { + return null; + } + if (process.env.LOOPERATORS_P0_CONTINUATION_MODE !== "lap") { + return null; + } + if (input.stop_hook_active === true || !stateCreated) { + return { continue: true }; + } + const scope = + input.hook_event_name === "SubagentStop" + ? `subagent ${input.agent_id ?? "unknown"}` + : "root agent"; + return { + decision: "block", + reason: + `looperators P0 continuation lap 1/1 for ${scope}. ` + + "Acknowledge the continuation with the exact marker P0_LAP_CONTINUED, " + + "do not call tools, and then stop. The next Stop hook invocation must be allowed.", + }; +} + +async function main() { + const startedWall = new Date().toISOString(); + const startedMonotonicNs = process.hrtime.bigint(); + const lane = argument("lane", "primary"); + const delayMs = Number(argument("delay-ms", "0")); + const artifactDir = + process.env.LOOPERATORS_P0_ARTIFACT_DIR ?? + path.join(process.cwd(), "output", "looperators-agent-loop-p0"); + const rawText = await readStdin(); + let input; + try { + input = JSON.parse(rawText); + } catch { + input = { + hook_event_name: "ParseError", + malformed_input: { + sha256: sha256(rawText), + bytes: Buffer.byteLength(rawText), + }, + }; + } + + const redactedInput = redactHookInput(input); + const semanticKey = semanticEventKey(input); + const deliveryKey = deliveryEventKey(input, lane); + const identityHash = sha256( + stableJson({ + deliveryKey, + redactedInput, + }), + ); + const stateKey = sha256( + stableJson({ + session_id: input.session_id ?? null, + turn_id: input.turn_id ?? null, + event: input.hook_event_name ?? null, + agent_id: input.agent_id ?? null, + }), + ); + const statePath = path.join(artifactDir, "hook-state", `${stateKey}.json`); + let stateCreated = false; + if ( + lane === "primary" && + process.env.LOOPERATORS_P0_CONTINUATION_MODE === "lap" && + ["Stop", "SubagentStop"].includes(input.hook_event_name) && + input.stop_hook_active !== true + ) { + try { + await atomicWriteJson( + statePath, + { + semantic_key: semanticKey, + first_blocked_at: startedWall, + lap_cap: 1, + }, + { exclusive: true }, + ); + stateCreated = true; + } catch (error) { + if (error?.code !== "EEXIST") { + throw error; + } + } + } + + if (Number.isFinite(delayMs) && delayMs > 0 && delayMs <= 500) { + await new Promise((resolve) => setTimeout(resolve, delayMs)); + } + + const finishedMonotonicNs = process.hrtime.bigint(); + const record = { + schema_version: 1, + semantic_key: semanticKey, + delivery_key: deliveryKey, + identity_hash: identityHash, + lane, + process_id: process.pid, + captured_at: startedWall, + started_monotonic_ns: startedMonotonicNs.toString(), + finished_monotonic_ns: finishedMonotonicNs.toString(), + duration_ms: Number(finishedMonotonicNs - startedMonotonicNs) / 1e6, + input: redactedInput, + }; + const eventPath = path.join( + artifactDir, + "hook-events", + `${identityHash}.json`, + ); + try { + await atomicWriteJson(eventPath, record, { exclusive: true }); + } catch (error) { + if (error?.code !== "EEXIST") { + throw error; + } + } + + const output = lane === "primary" ? continuationOutput(input, stateCreated) : null; + if (output) { + process.stdout.write(JSON.stringify(output)); + } +} + +main().catch(async (error) => { + const fallback = { + continue: true, + systemMessage: `looperators P0 collector failed safely: ${error?.code ?? "error"}`, + }; + process.stdout.write(JSON.stringify(fallback)); + process.exitCode = 0; +}); diff --git a/plugins/looperators-agent-loop-p0/hooks/hooks.json b/plugins/looperators-agent-loop-p0/hooks/hooks.json new file mode 100644 index 0000000..dc43536 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/hooks/hooks.json @@ -0,0 +1,90 @@ +{ + "hooks": { + "SessionStart": [ + { + "hooks": [ + { + "type": "command", + "command": "node \"${PLUGIN_ROOT}/hooks/collect-event.mjs\" --lane primary", + "timeout": 5, + "statusMessage": "Recording looperators session start" + } + ] + } + ], + "UserPromptSubmit": [ + { + "hooks": [ + { + "type": "command", + "command": "node \"${PLUGIN_ROOT}/hooks/collect-event.mjs\" --lane primary", + "timeout": 5, + "statusMessage": "Recording looperators prompt boundary" + } + ] + } + ], + "PreToolUse": [ + { + "matcher": "*", + "hooks": [ + { + "type": "command", + "command": "node \"${PLUGIN_ROOT}/hooks/collect-event.mjs\" --lane primary", + "timeout": 5, + "statusMessage": "Recording looperators tool start" + } + ] + } + ], + "PostToolUse": [ + { + "matcher": "*", + "hooks": [ + { + "type": "command", + "command": "node \"${PLUGIN_ROOT}/hooks/collect-event.mjs\" --lane primary", + "timeout": 5, + "statusMessage": "Recording looperators tool result" + } + ] + } + ], + "SubagentStart": [ + { + "hooks": [ + { + "type": "command", + "command": "node \"${PLUGIN_ROOT}/hooks/collect-event.mjs\" --lane primary", + "timeout": 5, + "statusMessage": "Recording looperators subagent start" + } + ] + } + ], + "SubagentStop": [ + { + "hooks": [ + { + "type": "command", + "command": "node \"${PLUGIN_ROOT}/hooks/collect-event.mjs\" --lane primary", + "timeout": 5, + "statusMessage": "Applying looperators subagent lap policy" + } + ] + } + ], + "Stop": [ + { + "hooks": [ + { + "type": "command", + "command": "node \"${PLUGIN_ROOT}/hooks/collect-event.mjs\" --lane primary", + "timeout": 5, + "statusMessage": "Applying looperators root lap policy" + } + ] + } + ] + } +} diff --git a/plugins/looperators-agent-loop-p0/lib/event-utils.mjs b/plugins/looperators-agent-loop-p0/lib/event-utils.mjs new file mode 100644 index 0000000..968f8c2 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/lib/event-utils.mjs @@ -0,0 +1,127 @@ +import { createHash, timingSafeEqual } from "node:crypto"; +import { + link, + mkdir, + readFile, + rename, + unlink, + writeFile, +} from "node:fs/promises"; +import path from "node:path"; + +export const P0_EVENTS = [ + "SessionStart", + "UserPromptSubmit", + "PreToolUse", + "PostToolUse", + "SubagentStart", + "SubagentStop", + "Stop", +]; + +export function sha256(value) { + return createHash("sha256").update(value).digest("hex"); +} + +export function stableJson(value) { + if (Array.isArray(value)) { + return `[${value.map(stableJson).join(",")}]`; + } + if (value && typeof value === "object") { + return `{${Object.keys(value) + .sort() + .map((key) => `${JSON.stringify(key)}:${stableJson(value[key])}`) + .join(",")}}`; + } + return JSON.stringify(value); +} + +function sensitiveSummary(value, label) { + const serialized = typeof value === "string" ? value : stableJson(value); + return { + _redacted: label, + sha256: sha256(serialized), + bytes: Buffer.byteLength(serialized), + ...(value && typeof value === "object" && !Array.isArray(value) + ? { keys: Object.keys(value).sort() } + : {}), + }; +} + +export function redactHookInput(input) { + const sensitiveKeys = new Set([ + "prompt", + "last_assistant_message", + "tool_input", + "tool_response", + ]); + const walk = (value, key = "") => { + if (sensitiveKeys.has(key)) { + return sensitiveSummary(value, key); + } + if (Array.isArray(value)) { + return value.map((item) => walk(item)); + } + if (value && typeof value === "object") { + return Object.fromEntries( + Object.entries(value).map(([childKey, childValue]) => [ + childKey, + walk(childValue, childKey), + ]), + ); + } + return value; + }; + return walk(input); +} + +export function semanticEventKey(input) { + return [ + input.session_id ?? "-", + input.turn_id ?? "-", + input.hook_event_name ?? "-", + input.tool_use_id ?? input.agent_id ?? "-", + input.stop_hook_active === true ? "continuation" : "initial", + ].join(":"); +} + +export function deliveryEventKey(input, lane) { + return `${semanticEventKey(input)}:${lane}`; +} + +export async function atomicWriteJson(filePath, value, options = {}) { + await mkdir(path.dirname(filePath), { recursive: true, mode: 0o700 }); + const body = `${JSON.stringify(value, null, 2)}\n`; + const temporaryPath = `${filePath}.${process.pid}.${Date.now()}.tmp`; + if (options.exclusive) { + await writeFile(temporaryPath, body, { flag: "wx", mode: 0o600 }); + try { + await link(temporaryPath, filePath); + } finally { + await unlink(temporaryPath).catch(() => {}); + } + return; + } + await writeFile(temporaryPath, body, { mode: 0o600 }); + await rename(temporaryPath, filePath); +} + +export async function readJsonIfPresent(filePath) { + try { + return JSON.parse(await readFile(filePath, "utf8")); + } catch (error) { + if (error?.code === "ENOENT") { + return null; + } + throw error; + } +} + +export function safeTokenEqual(actual, expected) { + const actualBuffer = Buffer.from(actual ?? ""); + const expectedBuffer = Buffer.from(expected ?? ""); + return ( + actualBuffer.length === expectedBuffer.length && + timingSafeEqual(actualBuffer, expectedBuffer) + ); +} diff --git a/plugins/looperators-agent-loop-p0/mcp/server.mjs b/plugins/looperators-agent-loop-p0/mcp/server.mjs new file mode 100644 index 0000000..870fdc8 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/mcp/server.mjs @@ -0,0 +1,304 @@ +#!/usr/bin/env node + +import { createInterface } from "node:readline"; +import path from "node:path"; +import process from "node:process"; +import { atomicWriteJson, sha256, stableJson } from "../lib/event-utils.mjs"; + +const RESOURCE_URI = "ui://looperators/agent-loop-p0.html"; +const MIME_TYPE = "text/html;profile=mcp-app"; +const artifactDir = process.env.LOOPERATORS_P0_ARTIFACT_DIR; +let protocolSequence = 0; + +const widgetHtml = String.raw` + + + + + looperators Agent Loop MCP App + + + +

    looperators Agent Loop

    MCP App P0
    +
    Rootwaiting for structuredContent
    + initializing… + + +`; + +function graphPayload() { + return { + graph: { + nodes: [ + { id: "root", kind: "root", label: "Root turn" }, + { id: "agent-a", kind: "subagent", label: "Subagent A" }, + { id: "agent-b", kind: "subagent", label: "Subagent B" }, + ], + edges: [ + { source: "root", target: "agent-a", kind: "spawned" }, + { source: "root", target: "agent-b", kind: "spawned" }, + ], + }, + source: "looperators-agent-loop-p0", + }; +} + +async function logProtocol(direction, message) { + if (!artifactDir) { + return; + } + protocolSequence += 1; + const redacted = { + direction, + method: message.method ?? null, + id: message.id ?? null, + sequence: protocolSequence, + captured_at: new Date().toISOString(), + payload_sha256: sha256(stableJson(message)), + }; + const fileName = `${String(protocolSequence).padStart(4, "0")}-${direction}-${redacted.method ?? "response"}.json` + .replaceAll("/", "-") + .replaceAll(":", "-"); + await atomicWriteJson(path.join(artifactDir, "mcp-protocol", fileName), redacted); +} + +function toolDescriptor(name, description, inputSchema, outputSchema, meta = undefined) { + return { + name, + title: name + .split("_") + .map((part) => part[0].toUpperCase() + part.slice(1)) + .join(" "), + description, + inputSchema, + outputSchema, + annotations: { readOnlyHint: name !== "loop_ping" }, + ...(meta ? { _meta: meta } : {}), + }; +} + +function toolsList() { + const outputSchema = { + type: "object", + properties: { + graph: { type: "object" }, + source: { type: "string" }, + }, + required: ["graph", "source"], + additionalProperties: true, + }; + return [ + toolDescriptor( + "loop_snapshot", + "Return the normalized looperators Agent Loop graph as structured content.", + { type: "object", properties: {}, additionalProperties: false }, + outputSchema, + ), + toolDescriptor( + "loop_widget", + "Return the graph and ask a compatible host to render the MCP App.", + { type: "object", properties: {}, additionalProperties: false }, + outputSchema, + { + ui: { resourceUri: RESOURCE_URI }, + "ui/resourceUri": RESOURCE_URI, + "openai/outputTemplate": RESOURCE_URI, + }, + ), + toolDescriptor( + "loop_ping", + "A deterministic component-to-server tools/call probe.", + { + type: "object", + properties: { message: { type: "string" } }, + additionalProperties: false, + }, + { + type: "object", + properties: { ack: { type: "string" } }, + required: ["ack"], + additionalProperties: false, + }, + ), + ]; +} + +async function dispatch(message) { + switch (message.method) { + case "initialize": + return { + protocolVersion: message.params?.protocolVersion ?? "2025-06-18", + capabilities: { + tools: { listChanged: false }, + resources: { subscribe: false, listChanged: false }, + }, + serverInfo: { name: "looperators-agent-loop-p0", version: "0.1.0" }, + }; + case "ping": + return {}; + case "tools/list": + return { tools: toolsList() }; + case "resources/list": + return { + resources: [ + { + uri: RESOURCE_URI, + name: "looperators Agent Loop P0", + title: "looperators Agent Loop P0", + description: "Minimal MCP App graph for the compatibility probe.", + mimeType: MIME_TYPE, + }, + ], + }; + case "resources/templates/list": + return { resourceTemplates: [] }; + case "resources/read": + if (message.params?.uri !== RESOURCE_URI) { + throw Object.assign(new Error("Unknown resource"), { code: -32002 }); + } + return { + contents: [ + { + uri: RESOURCE_URI, + mimeType: MIME_TYPE, + text: widgetHtml, + }, + ], + }; + case "tools/call": { + const name = message.params?.name; + if (name === "loop_snapshot" || name === "loop_widget") { + const structuredContent = graphPayload(); + return { + content: [ + { + type: "text", + text: "looperators Agent Loop graph is available in structuredContent.", + }, + ], + structuredContent, + }; + } + if (name === "loop_ping") { + const messageText = message.params?.arguments?.message ?? "ping"; + return { + content: [{ type: "text", text: `ack:${messageText}` }], + structuredContent: { ack: `ack:${messageText}` }, + }; + } + throw Object.assign(new Error(`Unknown tool: ${name}`), { code: -32602 }); + } + default: + if (message.method?.startsWith("notifications/")) { + return undefined; + } + throw Object.assign(new Error(`Method not found: ${message.method}`), { + code: -32601, + }); + } +} + +async function handle(message) { + await logProtocol("in", message); + if (message.id === undefined || message.id === null) { + await dispatch(message); + return; + } + let response; + try { + response = { + jsonrpc: "2.0", + id: message.id, + result: await dispatch(message), + }; + } catch (error) { + response = { + jsonrpc: "2.0", + id: message.id, + error: { + code: Number.isInteger(error?.code) ? error.code : -32603, + message: error?.message ?? "Internal error", + }, + }; + } + await logProtocol("out", response); + process.stdout.write(`${JSON.stringify(response)}\n`); +} + +const input = createInterface({ input: process.stdin, crlfDelay: Infinity }); +let chain = Promise.resolve(); +input.on("line", (line) => { + if (!line.trim()) { + return; + } + chain = chain + .then(() => handle(JSON.parse(line))) + .catch((error) => { + process.stderr.write(`looperators P0 MCP error: ${error?.message ?? error}\n`); + }); +}); diff --git a/plugins/looperators-agent-loop-p0/scripts/capture-environment.mjs b/plugins/looperators-agent-loop-p0/scripts/capture-environment.mjs new file mode 100644 index 0000000..d01d3b2 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/scripts/capture-environment.mjs @@ -0,0 +1,98 @@ +#!/usr/bin/env node + +import { spawnSync } from "node:child_process"; +import { createHash } from "node:crypto"; +import { open, stat } from "node:fs/promises"; +import path from "node:path"; +import process from "node:process"; +import { atomicWriteJson } from "../lib/event-utils.mjs"; + +function argument(name, fallback = null) { + const index = process.argv.indexOf(`--${name}`); + return index >= 0 ? process.argv[index + 1] : fallback; +} + +function run(command, args, cwd = process.cwd()) { + const result = spawnSync(command, args, { + cwd, + encoding: "utf8", + timeout: 15_000, + }); + return { + command: [command, ...args], + status: result.status, + stdout: result.stdout.trim(), + stderr: result.stderr.trim(), + }; +} + +async function filePrefixSha256(filePath, prefixBytes) { + const handle = await open(filePath, "r"); + const buffer = Buffer.alloc(prefixBytes); + const { bytesRead } = await handle.read(buffer, 0, prefixBytes, 0); + await handle.close(); + const hash = createHash("sha256"); + hash.update(buffer.subarray(0, bytesRead)); + return { bytes_read: bytesRead, sha256: hash.digest("hex") }; +} + +const outputValue = argument("output"); +if (!outputValue) { + throw new Error("--output is required"); +} +const output = path.resolve(outputValue); +const repo = process.cwd(); +const appRoot = "/Applications/ChatGPT.app"; +const embeddedCodex = path.join(appRoot, "Contents", "Resources", "codex"); +const infoPlist = path.join(appRoot, "Contents", "Info.plist"); +const appAsar = path.join(appRoot, "Contents", "Resources", "app.asar"); +const appAsarStat = await stat(appAsar); +const evidence = { + schema_version: 1, + captured_at: new Date().toISOString(), + repo, + platform: { + arch: process.arch, + node: process.version, + sw_vers: run("/usr/bin/sw_vers", []), + }, + git: { + head: run("/usr/bin/git", ["rev-parse", "HEAD"], repo), + status: run("/usr/bin/git", ["status", "--short"], repo), + }, + codex: { + path_cli: run("codex", ["--version"], repo), + embedded_cli: run(embeddedCodex, ["--version"], repo), + embedded_features: run(embeddedCodex, ["features", "list"], repo), + }, + desktop: { + bundle_identifier: run("/usr/bin/plutil", [ + "-extract", + "CFBundleIdentifier", + "raw", + "-o", + "-", + infoPlist, + ]), + short_version: run("/usr/bin/plutil", [ + "-extract", + "CFBundleShortVersionString", + "raw", + "-o", + "-", + infoPlist, + ]), + build_version: run("/usr/bin/plutil", [ + "-extract", + "CFBundleVersion", + "raw", + "-o", + "-", + infoPlist, + ]), + app_asar_size_bytes: appAsarStat.size, + app_asar_prefix: await filePrefixSha256(appAsar, 65_536), + }, +}; +await atomicWriteJson(output, evidence); +process.stdout.write(`${JSON.stringify({ output, captured_at: evidence.captured_at })}\n`); diff --git a/plugins/looperators-agent-loop-p0/scripts/create-hook-probe.mjs b/plugins/looperators-agent-loop-p0/scripts/create-hook-probe.mjs new file mode 100644 index 0000000..cbcaef9 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/scripts/create-hook-probe.mjs @@ -0,0 +1,92 @@ +#!/usr/bin/env node + +import { mkdir, writeFile } from "node:fs/promises"; +import path from "node:path"; +import process from "node:process"; +import { fileURLToPath } from "node:url"; +import { atomicWriteJson } from "../lib/event-utils.mjs"; + +function argument(name, fallback = null) { + const index = process.argv.indexOf(`--${name}`); + return index >= 0 ? process.argv[index + 1] : fallback; +} + +const probeDirValue = argument("probe-dir"); +const artifactDirValue = argument("artifact-dir"); +if (!probeDirValue || !artifactDirValue) { + throw new Error("--probe-dir and --artifact-dir are required"); +} + +const probeDir = path.resolve(probeDirValue); +const artifactDir = path.resolve(artifactDirValue); +const pluginRoot = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", +); +const collector = path.join(pluginRoot, "hooks", "collect-event.mjs"); +const command = (lane, delayMs = 0) => + [ + JSON.stringify(process.execPath), + JSON.stringify(collector), + "--lane", + lane, + ...(delayMs ? ["--delay-ms", String(delayMs)] : []), + ].join(" "); +const handler = (lane, delayMs = 0, statusMessage) => ({ + type: "command", + command: command(lane, delayMs), + timeout: 5, + statusMessage, +}); +const single = (eventName, statusMessage) => ({ + [eventName]: [ + { + hooks: [handler("primary", 0, statusMessage)], + }, + ], +}); +const config = { + hooks: { + ...single("SessionStart", "P0 collecting SessionStart"), + ...single("UserPromptSubmit", "P0 collecting UserPromptSubmit"), + PreToolUse: [ + { + matcher: "*", + hooks: [ + handler("primary", 120, "P0 PreToolUse lane primary"), + handler("parallel", 120, "P0 PreToolUse lane parallel"), + ], + }, + ], + ...single("PostToolUse", "P0 collecting PostToolUse"), + ...single("SubagentStart", "P0 collecting SubagentStart"), + ...single("SubagentStop", "P0 applying SubagentStop lap cap"), + ...single("Stop", "P0 applying Stop lap cap"), + }, +}; + +await mkdir(path.join(probeDir, ".codex"), { recursive: true, mode: 0o700 }); +await mkdir(artifactDir, { recursive: true, mode: 0o700 }); +await writeFile( + path.join(probeDir, ".codex", "hooks.json"), + `${JSON.stringify(config, null, 2)}\n`, + { mode: 0o600 }, +); +await atomicWriteJson(path.join(artifactDir, "probe-hooks.json"), config); +await atomicWriteJson(path.join(artifactDir, "probe-metadata.json"), { + schema_version: 1, + created_at: new Date().toISOString(), + probe_dir: probeDir, + plugin_root: pluginRoot, + artifact_dir: artifactDir, + continuation_mode: "lap", + lap_cap: 1, + parallel_probe_delay_ms: 120, +}); +process.stdout.write( + `${JSON.stringify({ + probe_dir: probeDir, + hooks_file: path.join(probeDir, ".codex", "hooks.json"), + artifact_dir: artifactDir, + })}\n`, +); diff --git a/plugins/looperators-agent-loop-p0/scripts/create-mcp-probe.mjs b/plugins/looperators-agent-loop-p0/scripts/create-mcp-probe.mjs new file mode 100644 index 0000000..64af51c --- /dev/null +++ b/plugins/looperators-agent-loop-p0/scripts/create-mcp-probe.mjs @@ -0,0 +1,63 @@ +#!/usr/bin/env node + +import { mkdir, writeFile } from "node:fs/promises"; +import path from "node:path"; +import process from "node:process"; +import { fileURLToPath } from "node:url"; +import { atomicWriteJson } from "../lib/event-utils.mjs"; + +function argument(name, fallback = null) { + const index = process.argv.indexOf(`--${name}`); + return index >= 0 ? process.argv[index + 1] : fallback; +} + +function tomlString(value) { + return JSON.stringify(value); +} + +const probeDirValue = argument("probe-dir"); +const artifactDirValue = argument("artifact-dir"); +if (!probeDirValue || !artifactDirValue) { + throw new Error("--probe-dir and --artifact-dir are required"); +} +const probeDir = path.resolve(probeDirValue); +const artifactDir = path.resolve(artifactDirValue); +const pluginRoot = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", +); +const server = path.join(pluginRoot, "mcp", "server.mjs"); +const config = [ + "[mcp_servers.looperators_agent_loop_p0]", + `command = ${tomlString(process.execPath)}`, + `args = [${tomlString(server)}]`, + `env = { LOOPERATORS_P0_ARTIFACT_DIR = ${tomlString(artifactDir)} }`, + "startup_timeout_sec = 10", + "tool_timeout_sec = 10", + "", +].join("\n"); + +await mkdir(path.join(probeDir, ".codex"), { recursive: true, mode: 0o700 }); +await mkdir(artifactDir, { recursive: true, mode: 0o700 }); +await writeFile(path.join(probeDir, ".codex", "config.toml"), config, { + mode: 0o600, +}); +await writeFile(path.join(artifactDir, "project-config.toml"), config, { + mode: 0o600, +}); +await atomicWriteJson(path.join(artifactDir, "probe-metadata.json"), { + schema_version: 1, + created_at: new Date().toISOString(), + probe_dir: probeDir, + plugin_root: pluginRoot, + server, + resource_uri: "ui://looperators/agent-loop-p0.html", + mime_type: "text/html;profile=mcp-app", +}); +process.stdout.write( + `${JSON.stringify({ + probe_dir: probeDir, + config_file: path.join(probeDir, ".codex", "config.toml"), + artifact_dir: artifactDir, + })}\n`, +); diff --git a/plugins/looperators-agent-loop-p0/scripts/extract-desktop-evidence.mjs b/plugins/looperators-agent-loop-p0/scripts/extract-desktop-evidence.mjs new file mode 100644 index 0000000..d797e81 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/scripts/extract-desktop-evidence.mjs @@ -0,0 +1,84 @@ +#!/usr/bin/env node + +import { createHash } from "node:crypto"; +import { readdir, readFile } from "node:fs/promises"; +import path from "node:path"; +import process from "node:process"; +import { atomicWriteJson } from "../lib/event-utils.mjs"; + +function argument(name, fallback = null) { + const index = process.argv.indexOf(`--${name}`); + return index >= 0 ? process.argv[index + 1] : fallback; +} + +async function filesRecursively(directory) { + const entries = await readdir(directory, { withFileTypes: true }); + const files = []; + for (const entry of entries) { + const entryPath = path.join(directory, entry.name); + if (entry.isDirectory()) { + files.push(...(await filesRecursively(entryPath))); + } else if (entry.isFile() && entry.name.endsWith(".js")) { + files.push(entryPath); + } + } + return files; +} + +const asarDirValue = argument("asar-dir"); +const outputValue = argument("output"); +if (!asarDirValue || !outputValue) { + throw new Error("--asar-dir and --output are required"); +} +const asarDir = path.resolve(asarDirValue); +const output = path.resolve(outputValue); +const needles = [ + "var ige=5e6", + "followSymlinks:!1", + "/^[a-z0-9]+(?:-[a-z0-9]+)*\\.html$/", + "Inline visualization file exceeds the 5 MB limit", + "Inline visualizations cannot call tools", + "VPa=`codex-inline-vis`", + "WPa=/^::codex-(?:inline-vis|live-vis)", + "text/html;profile=mcp-app", + "t.data.ui?.resourceUri", + "method:fl(`tools/call`)", +]; +const files = await filesRecursively(asarDir); +const cache = new Map(); +const excerpts = []; +for (const needle of needles) { + let match = null; + for (const file of files) { + let text = cache.get(file); + if (text === undefined) { + text = await readFile(file, "utf8"); + cache.set(file, text); + } + const index = text.indexOf(needle); + if (index >= 0) { + match = { + needle, + relative_file: path.relative(asarDir, file), + byte_offset: Buffer.byteLength(text.slice(0, index)), + excerpt: text.slice(Math.max(0, index - 420), index + needle.length + 820), + source_sha256: createHash("sha256").update(text).digest("hex"), + }; + break; + } + } + excerpts.push(match ?? { needle, missing: true }); +} +await atomicWriteJson(output, { + schema_version: 1, + generated_at: new Date().toISOString(), + asar_directory: asarDir, + excerpts, +}); +process.stdout.write( + `${JSON.stringify({ + output, + matched: excerpts.filter((entry) => !entry.missing).length, + missing: excerpts.filter((entry) => entry.missing).map((entry) => entry.needle), + })}\n`, +); diff --git a/plugins/looperators-agent-loop-p0/scripts/generate-inline-visualization.mjs b/plugins/looperators-agent-loop-p0/scripts/generate-inline-visualization.mjs new file mode 100644 index 0000000..ad18bf8 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/scripts/generate-inline-visualization.mjs @@ -0,0 +1,829 @@ +#!/usr/bin/env node + +import { + lstat, + open, + readFile, + rename, + stat, + unlink, +} from "node:fs/promises"; +import path from "node:path"; +import process from "node:process"; +import { pathToFileURL } from "node:url"; + +const MAX_FRAGMENT_BYTES = 2 * 1024 * 1024; +const OUTPUT_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*\.html$/; + +function argument(name) { + const index = process.argv.indexOf(`--${name}`); + return index >= 0 ? process.argv[index + 1] : null; +} + +async function readJsonIfPresent(filePath, fallback) { + try { + return JSON.parse(await readFile(filePath, "utf8")); + } catch (error) { + if (error?.code === "ENOENT") { + return fallback; + } + throw new Error(`Cannot read ${filePath}: ${error.message}`); + } +} + +async function readJsonLinesIfPresent(filePath) { + let text; + try { + text = await readFile(filePath, "utf8"); + } catch (error) { + if (error?.code === "ENOENT") { + return []; + } + throw new Error(`Cannot read ${filePath}: ${error.message}`); + } + return text + .split(/\r?\n/u) + .filter(Boolean) + .map((line, index) => { + try { + return JSON.parse(line); + } catch (error) { + throw new Error( + `Cannot parse ${filePath}:${index + 1}: ${error.message}`, + ); + } + }); +} + +function asArray(value) { + return Array.isArray(value) ? value : []; +} + +function asObject(value) { + return value && typeof value === "object" && !Array.isArray(value) + ? value + : {}; +} + +function asString(value) { + return typeof value === "string" && value.length > 0 ? value : null; +} + +function asCount(value, fallback = 0) { + return Number.isInteger(value) && value >= 0 ? value : fallback; +} + +function shortIdentifier(value) { + const identifier = asString(value); + if (!identifier) { + return "unknown"; + } + return identifier.length <= 14 + ? identifier + : `${identifier.slice(0, 4)}…${identifier.slice(-6)}`; +} + +function semanticEventsFrom(deliveries) { + const selected = new Map(); + for (const [index, event] of deliveries.entries()) { + const key = + asString(event?.semantic_key) ?? + `delivery:${asString(event?.delivery_key) ?? index}`; + const existing = selected.get(key); + if (!existing || (existing.lane !== "primary" && event?.lane === "primary")) { + selected.set(key, event); + } + } + return [...selected.values()].sort((left, right) => { + const leftSequence = Number.isFinite(left?.sequence) + ? left.sequence + : Number.MAX_SAFE_INTEGER; + const rightSequence = Number.isFinite(right?.sequence) + ? right.sequence + : Number.MAX_SAFE_INTEGER; + if (leftSequence !== rightSequence) { + return leftSequence - rightSequence; + } + return String(left?.captured_at ?? "").localeCompare( + String(right?.captured_at ?? ""), + ); + }); +} + +function countsByEvent(events) { + const counts = new Map(); + for (const event of events) { + const name = asString(event?.event) ?? "Unknown"; + counts.set(name, (counts.get(name) ?? 0) + 1); + } + return Object.fromEntries( + [...counts.entries()].sort(([left], [right]) => left.localeCompare(right)), + ); +} + +function stopObservation(kind, events) { + const stopEvent = kind === "root" ? "Stop" : "SubagentStop"; + const stops = events.filter((event) => event?.event === stopEvent); + const initialStops = stops.filter( + (event) => event?.stop_hook_active === false, + ).length; + const continuations = stops.filter( + (event) => event?.stop_hook_active === true, + ).length; + let status = "Observed"; + if (continuations > 0) { + status = "Continuation completed"; + } else if (initialStops > 0) { + status = "Initial stop observed"; + } else if ( + events.some((event) => + kind === "root" + ? ["SessionStart", "UserPromptSubmit"].includes(event?.event) + : event?.event === "SubagentStart", + ) + ) { + status = "Started"; + } else if (events.length === 0) { + status = "Unknown"; + } + return { status, initialStops, continuations }; +} + +function timelineEntry(event) { + const details = []; + if (asString(event?.tool_name)) { + details.push(event.tool_name); + } + if (event?.stop_hook_active === false) { + details.push("initial stop"); + } else if (event?.stop_hook_active === true) { + details.push("continuation stop"); + } + if (asString(event?.turn_id)) { + details.push(`turn ${shortIdentifier(event.turn_id)}`); + } + return { + sequence: Number.isFinite(event?.sequence) ? event.sequence : null, + event: asString(event?.event) ?? "Unknown", + capturedAt: asString(event?.captured_at), + details, + }; +} + +function nodeView(node, semanticEvents) { + const kind = node.kind; + const rawIdentifier = + kind === "root" + ? asString(node.session_id) ?? + asString(node.id)?.replace(/^session:/u, "") ?? + null + : asString(node.agent_id) ?? + asString(node.id)?.replace(/^agent:/u, "") ?? + null; + const stableIdentifier = + asString(node.id) ?? + (rawIdentifier + ? `${kind === "root" ? "session" : "agent"}:${rawIdentifier}` + : null); + const relatedEvents = semanticEvents.filter((event) => { + if (kind === "root") { + return ( + !asString(event?.agent_id) && + (!rawIdentifier || event?.session_id === rawIdentifier) + ); + } + return rawIdentifier && event?.agent_id === rawIdentifier; + }); + const stop = stopObservation(kind, relatedEvents); + return { + id: stableIdentifier, + rawId: rawIdentifier, + shortId: shortIdentifier(rawIdentifier ?? stableIdentifier), + kind, + label: + asString(node.label) ?? (kind === "root" ? "Root session" : "Subagent"), + status: stop.status, + eventCount: relatedEvents.length, + initialStops: stop.initialStops, + continuations: stop.continuations, + eventCounts: countsByEvent(relatedEvents), + timeline: relatedEvents.map(timelineEntry), + }; +} + +export async function loadNormalizedArtifactData(artifactDir) { + const directory = path.resolve(artifactDir); + const metadata = await stat(directory); + if (!metadata.isDirectory()) { + throw new Error(`Artifact path is not a directory: ${directory}`); + } + const [graph, events, summary] = await Promise.all([ + readJsonIfPresent(path.join(directory, "normalized-graph.json"), { + nodes: [], + edges: [], + }), + readJsonLinesIfPresent(path.join(directory, "normalized-events.jsonl")), + readJsonIfPresent(path.join(directory, "normalized-summary.json"), {}), + ]); + return { artifactDir: directory, graph, events, summary }; +} + +export function buildLoopViewModel({ graph, events, summary }) { + const graphObject = asObject(graph); + const deliveries = asArray(events).filter( + (event) => event && typeof event === "object", + ); + const semanticEvents = semanticEventsFrom(deliveries); + const sourceNodes = asArray(graphObject.nodes).filter( + (node) => + node && + typeof node === "object" && + ["root", "subagent"].includes(node.kind), + ); + const nodes = sourceNodes.map((node) => nodeView(node, semanticEvents)); + const nodeIds = new Set(nodes.map((node) => node.id).filter(Boolean)); + const edges = asArray(graphObject.edges) + .filter( + (edge) => + edge && + typeof edge === "object" && + edge.kind === "spawned" && + nodeIds.has(edge.source) && + nodeIds.has(edge.target), + ) + .map((edge) => ({ + id: asString(edge.id), + source: asString(edge.source), + target: asString(edge.target), + kind: "spawned", + })); + const summaryObject = asObject(summary); + const warnings = []; + if (asArray(graphObject.nodes).length === 0) { + warnings.push("normalized-graph.json has no nodes"); + } + if (deliveries.length === 0) { + warnings.push("normalized-events.jsonl has no events"); + } + return { + schemaVersion: 1, + counts: { + deliveries: asCount(summaryObject.total_deliveries, deliveries.length), + semanticEvents: asCount( + summaryObject.total_semantic_events, + semanticEvents.length, + ), + graphNodes: asArray(graphObject.nodes).length, + graphEdges: asArray(graphObject.edges).length, + agentNodes: nodes.length, + agentEdges: edges.length, + }, + deliveryEventCounts: asObject(summaryObject.deliveries_by_event), + semanticEventCounts: countsByEvent(semanticEvents), + nodes, + edges, + warnings, + }; +} + +function jsonForHtml(value) { + return JSON.stringify(value) + .replaceAll("&", "\\u0026") + .replaceAll("<", "\\u003c") + .replaceAll(">", "\\u003e") + .replaceAll("\u2028", "\\u2028") + .replaceAll("\u2029", "\\u2029"); +} + +function htmlEscape(value) { + return String(value) + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """) + .replaceAll("'", "'"); +} + +function nodeButtonMarkup(node) { + const identifier = asString(node.id); + const dataIdentifier = identifier + ? ` data-node-id="${htmlEscape(identifier)}"` + : ""; + const disabled = identifier ? "" : " disabled"; + const label = `${node.label}, ${node.kind}, ${node.shortId}`; + return ``; +} + +export function renderInlineVisualization(viewModel) { + const data = jsonForHtml(viewModel); + const rootNodes = viewModel.nodes + .filter((node) => node.kind === "root") + .map(nodeButtonMarkup) + .join("\n"); + const subagentNodes = viewModel.nodes + .filter((node) => node.kind === "subagent") + .map(nodeButtonMarkup) + .join("\n"); + return `
    +
    + + + + +
    + +
    + +
    + + 100% + + +
    +
    + +
    +
    +
    +${rootNodes} +
    +
    +
    +${subagentNodes} +
    + +
    +
    + +
    +
    + Select a node + No selection +
    +

    No stable identifier selected

    +

    Select a recorded root or subagent to inspect its events.

    +
    +
      +
      + + Select a node first. +
      +
      + +
      +
      + P0.6 acceptance + JS ready: pending + node selected: pending + details updated: pending + zoom changed/reset: pending + filter changed: pending + follow-up requested: pending +
      + + +
      + + + +
      + + + + +`; +} + +async function assertSafeOutput(outputPath) { + const output = path.resolve(outputPath); + if (!OUTPUT_NAME_PATTERN.test(path.basename(output))) { + throw new Error( + `Output filename must be lowercase ASCII hyphenated HTML: ${output}`, + ); + } + const parent = path.dirname(output); + const parentMetadata = await lstat(parent); + if (parentMetadata.isSymbolicLink()) { + throw new Error(`Refusing to write through output directory symlink: ${parent}`); + } + if (!parentMetadata.isDirectory()) { + throw new Error(`Output parent is not a directory: ${parent}`); + } + let metadata = null; + try { + metadata = await lstat(output); + } catch (error) { + if (error?.code !== "ENOENT") { + throw error; + } + } + if (metadata?.isSymbolicLink()) { + throw new Error(`Refusing to replace output symlink: ${output}`); + } + if (metadata && !metadata.isFile()) { + throw new Error(`Output is not a regular file: ${output}`); + } + return output; +} + +export async function writeInlineVisualization(outputPath, fragment) { + const output = await assertSafeOutput(outputPath); + const bytes = Buffer.byteLength(fragment); + if (bytes >= MAX_FRAGMENT_BYTES) { + throw new Error( + `Inline visualization is ${bytes} bytes; limit is ${MAX_FRAGMENT_BYTES - 1}`, + ); + } + const temporary = path.join( + path.dirname(output), + `.${path.basename(output)}.${process.pid}.${Date.now()}.tmp`, + ); + let handle; + try { + handle = await open(temporary, "wx", 0o600); + await handle.writeFile(fragment, "utf8"); + await handle.sync(); + await handle.close(); + handle = null; + await rename(temporary, output); + } finally { + if (handle) { + await handle.close(); + } + await unlink(temporary).catch((error) => { + if (error?.code !== "ENOENT") throw error; + }); + } + return { output, bytes }; +} + +export async function generateInlineVisualization({ artifactDir, outputPath }) { + const source = await loadNormalizedArtifactData(artifactDir); + const viewModel = buildLoopViewModel(source); + const fragment = renderInlineVisualization(viewModel); + const written = await writeInlineVisualization(outputPath, fragment); + return { ...written, viewModel }; +} + +async function main() { + const artifactDir = argument("artifact-dir"); + const outputPath = argument("output"); + if (!artifactDir || !outputPath) { + throw new Error( + "Usage: generate-inline-visualization.mjs --artifact-dir --output ", + ); + } + const result = await generateInlineVisualization({ artifactDir, outputPath }); + process.stdout.write( + `${JSON.stringify({ + output: result.output, + bytes: result.bytes, + counts: result.viewModel.counts, + warnings: result.viewModel.warnings, + })}\n`, + ); +} + +if (import.meta.url === pathToFileURL(process.argv[1] ?? "").href) { + main().catch((error) => { + process.stderr.write(`${error.stack ?? error.message}\n`); + process.exitCode = 1; + }); +} diff --git a/plugins/looperators-agent-loop-p0/scripts/normalize-events.mjs b/plugins/looperators-agent-loop-p0/scripts/normalize-events.mjs new file mode 100644 index 0000000..9a405a6 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/scripts/normalize-events.mjs @@ -0,0 +1,310 @@ +#!/usr/bin/env node + +import { readdir, readFile, writeFile } from "node:fs/promises"; +import path from "node:path"; +import process from "node:process"; +import { pathToFileURL } from "node:url"; +import { atomicWriteJson, P0_EVENTS } from "../lib/event-utils.mjs"; + +function argument(name, fallback = null) { + const index = process.argv.indexOf(`--${name}`); + return index >= 0 ? process.argv[index + 1] : fallback; +} + +async function readRecords(directory) { + let names = []; + try { + names = await readdir(directory); + } catch (error) { + if (error?.code === "ENOENT") { + return []; + } + throw error; + } + const records = []; + for (const name of names.filter((entry) => entry.endsWith(".json")).sort()) { + const record = JSON.parse(await readFile(path.join(directory, name), "utf8")); + records.push({ ...record, evidence_file: `hook-events/${name}` }); + } + return records.sort((left, right) => { + const wall = left.captured_at.localeCompare(right.captured_at); + if (wall !== 0) { + return wall; + } + return BigInt(left.started_monotonic_ns) < BigInt(right.started_monotonic_ns) + ? -1 + : 1; + }); +} + +function normalizedRecord(record, sequence) { + const input = record.input ?? {}; + return { + schema_version: 1, + sequence, + event: input.hook_event_name ?? "Unknown", + session_id: input.session_id ?? null, + turn_id: input.turn_id ?? null, + tool_use_id: input.tool_use_id ?? null, + tool_name: input.tool_name ?? null, + agent_id: input.agent_id ?? null, + agent_type: input.agent_type ?? null, + stop_hook_active: input.stop_hook_active ?? null, + source: input.source ?? null, + lane: record.lane, + semantic_key: record.semantic_key, + delivery_key: record.delivery_key, + captured_at: record.captured_at, + duration_ms: record.duration_ms, + input_fields: Object.keys(input).sort(), + evidence_file: record.evidence_file, + }; +} + +function buildGraph(events) { + const nodeMap = new Map(); + const edgeMap = new Map(); + const addNode = (id, kind, label, fields = {}) => { + if (!nodeMap.has(id)) { + nodeMap.set(id, { id, kind, label, ...fields }); + } + }; + const addEdge = (source, target, kind, fields = {}) => { + const id = `${source}->${target}:${kind}`; + if (!edgeMap.has(id)) { + edgeMap.set(id, { id, source, target, kind, ...fields }); + } + }; + + for (const event of events) { + if (!event.session_id) { + continue; + } + const sessionId = `session:${event.session_id}`; + addNode(sessionId, "root", "Root session", { session_id: event.session_id }); + if (event.agent_id) { + const agentId = `agent:${event.agent_id}`; + addNode(agentId, "subagent", event.agent_type ?? "Subagent", { + agent_id: event.agent_id, + }); + addEdge(sessionId, agentId, "spawned"); + } + if (event.tool_use_id) { + const toolId = `tool:${event.tool_use_id}`; + addNode(toolId, "tool", event.tool_name ?? "Tool", { + tool_use_id: event.tool_use_id, + }); + addEdge(sessionId, toolId, "used"); + } + } + return { + schema_version: 1, + nodes: [...nodeMap.values()], + edges: [...edgeMap.values()], + }; +} + +function analyzeConcurrency(records) { + const groups = new Map(); + for (const record of records) { + const list = groups.get(record.semantic_key) ?? []; + list.push(record); + groups.set(record.semantic_key, list); + } + const probes = []; + for (const [semanticKey, group] of groups) { + if (new Set(group.map((entry) => entry.lane)).size < 2) { + continue; + } + const intervals = group.map((entry) => ({ + lane: entry.lane, + start: BigInt(entry.started_monotonic_ns), + finish: BigInt(entry.finished_monotonic_ns), + })); + let overlaps = false; + for (let left = 0; left < intervals.length; left += 1) { + for (let right = left + 1; right < intervals.length; right += 1) { + overlaps ||= ( + intervals[left].start < intervals[right].finish && + intervals[right].start < intervals[left].finish + ); + } + } + probes.push({ + semantic_key: semanticKey, + lanes: intervals.map((entry) => entry.lane).sort(), + overlaps, + start_spread_ms: + Number( + intervals.reduce( + (maximum, entry) => (entry.start > maximum ? entry.start : maximum), + intervals[0].start, + ) - + intervals.reduce( + (minimum, entry) => (entry.start < minimum ? entry.start : minimum), + intervals[0].start, + ), + ) / 1e6, + }); + } + return probes; +} + +function analyzeSubagentOverlap(events) { + const lifetimes = new Map(); + for (const event of events) { + if (!event.agent_id) { + continue; + } + const lifetime = lifetimes.get(event.agent_id) ?? { + agent_id: event.agent_id, + start: null, + initial_stop: null, + continuation_stop: null, + }; + if (event.event === "SubagentStart") { + lifetime.start = Date.parse(event.captured_at); + } else if (event.event === "SubagentStop" && event.stop_hook_active === true) { + lifetime.continuation_stop = Date.parse(event.captured_at); + } else if (event.event === "SubagentStop") { + lifetime.initial_stop = Date.parse(event.captured_at); + } + lifetimes.set(event.agent_id, lifetime); + } + const completed = [...lifetimes.values()].filter( + (entry) => entry.start !== null && (entry.continuation_stop ?? entry.initial_stop) !== null, + ); + const overlaps = []; + for (let left = 0; left < completed.length; left += 1) { + for (let right = left + 1; right < completed.length; right += 1) { + const leftStop = + completed[left].continuation_stop ?? completed[left].initial_stop; + const rightStop = + completed[right].continuation_stop ?? completed[right].initial_stop; + const overlapMs = + Math.min(leftStop, rightStop) - + Math.max(completed[left].start, completed[right].start); + overlaps.push({ + agents: [completed[left].agent_id, completed[right].agent_id].sort(), + overlaps: overlapMs > 0, + overlap_ms: Math.max(0, overlapMs), + }); + } + } + return { + lifetimes: completed.map((entry) => ({ + agent_id: entry.agent_id, + start: new Date(entry.start).toISOString(), + initial_stop: entry.initial_stop + ? new Date(entry.initial_stop).toISOString() + : null, + continuation_stop: entry.continuation_stop + ? new Date(entry.continuation_stop).toISOString() + : null, + })), + overlaps, + }; +} + +export async function normalizeArtifactDirectory(artifactDir) { + const records = await readRecords(path.join(artifactDir, "hook-events")); + const events = records.map(normalizedRecord); + const deliveriesByEvent = Object.fromEntries( + [...new Set(events.map((event) => event.event))] + .sort() + .map((eventName) => [ + eventName, + events.filter((event) => event.event === eventName).length, + ]), + ); + const semanticCounts = new Map(); + for (const event of events) { + semanticCounts.set( + event.semantic_key, + (semanticCounts.get(event.semantic_key) ?? 0) + 1, + ); + } + const continuationPairs = events + .filter((event) => ["Stop", "SubagentStop"].includes(event.event)) + .reduce((result, event) => { + const key = [ + event.session_id, + event.turn_id, + event.event, + event.agent_id ?? "-", + ].join(":"); + const current = result[key] ?? { initial: 0, continuation: 0 }; + current[event.stop_hook_active === true ? "continuation" : "initial"] += 1; + result[key] = current; + return result; + }, {}); + const summary = { + schema_version: 1, + generated_at: new Date().toISOString(), + total_deliveries: events.length, + total_semantic_events: semanticCounts.size, + deliveries_by_event: deliveriesByEvent, + required_event_coverage: Object.fromEntries( + P0_EVENTS.map((eventName) => [ + eventName, + (deliveriesByEvent[eventName] ?? 0) > 0, + ]), + ), + semantic_duplicate_groups: [...semanticCounts.entries()] + .filter(([, count]) => count > 1) + .map(([semantic_key, count]) => ({ semantic_key, count })), + concurrency_probes: analyzeConcurrency(records), + subagent_concurrency: analyzeSubagentOverlap(events), + continuation_pairs: continuationPairs, + transcript_paths: [ + ...new Set( + records + .map((record) => record.input?.transcript_path) + .filter((entry) => typeof entry === "string"), + ), + ].sort(), + agent_transcript_paths: [ + ...new Set( + records + .map((record) => record.input?.agent_transcript_path) + .filter((entry) => typeof entry === "string"), + ), + ].sort(), + }; + const graph = buildGraph(events); + await atomicWriteJson(path.join(artifactDir, "normalized-summary.json"), summary); + await atomicWriteJson(path.join(artifactDir, "normalized-graph.json"), graph); + await writeFile( + path.join(artifactDir, "normalized-events.jsonl"), + events.map((event) => JSON.stringify(event)).join("\n") + + (events.length ? "\n" : ""), + { mode: 0o600 }, + ); + return { events, graph, summary }; +} + +async function main() { + const artifactDir = path.resolve( + argument( + "artifact-dir", + process.env.LOOPERATORS_P0_ARTIFACT_DIR ?? + path.join(process.cwd(), "output", "looperators-agent-loop-p0"), + ), + ); + const result = await normalizeArtifactDirectory(artifactDir); + process.stdout.write( + `${JSON.stringify({ + artifact_dir: artifactDir, + deliveries: result.events.length, + semantic_events: result.summary.total_semantic_events, + event_coverage: result.summary.required_event_coverage, + })}\n`, + ); +} + +if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { + main().catch((error) => { + console.error(error); + process.exitCode = 1; + }); +} diff --git a/plugins/looperators-agent-loop-p0/scripts/probe-mcp-contract.mjs b/plugins/looperators-agent-loop-p0/scripts/probe-mcp-contract.mjs new file mode 100644 index 0000000..953a9bf --- /dev/null +++ b/plugins/looperators-agent-loop-p0/scripts/probe-mcp-contract.mjs @@ -0,0 +1,101 @@ +#!/usr/bin/env node + +import { spawn } from "node:child_process"; +import { createHash } from "node:crypto"; +import path from "node:path"; +import { createInterface } from "node:readline"; +import process from "node:process"; +import { fileURLToPath } from "node:url"; +import { atomicWriteJson } from "../lib/event-utils.mjs"; + +function argument(name, fallback = null) { + const index = process.argv.indexOf(`--${name}`); + return index >= 0 ? process.argv[index + 1] : fallback; +} + +const outputValue = argument("output"); +if (!outputValue) { + throw new Error("--output is required"); +} +const output = path.resolve(outputValue); +const pluginRoot = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", +); +const serverPath = path.join(pluginRoot, "mcp", "server.mjs"); +const child = spawn(process.execPath, [serverPath], { + stdio: ["pipe", "pipe", "pipe"], +}); +let stderr = ""; +child.stderr.on("data", (chunk) => { + stderr += chunk; +}); +const pending = new Map(); +const lines = createInterface({ input: child.stdout, crlfDelay: Infinity }); +lines.on("line", (line) => { + const message = JSON.parse(line); + pending.get(message.id)?.(message); + pending.delete(message.id); +}); +let nextId = 1; +const request = (method, params = {}) => + new Promise((resolve, reject) => { + const id = nextId++; + const timer = setTimeout( + () => reject(new Error(`MCP timeout for ${method}: ${stderr}`)), + 3_000, + ); + pending.set(id, (message) => { + clearTimeout(timer); + if (message.error) { + reject(new Error(message.error.message)); + } else { + resolve(message.result); + } + }); + child.stdin.write(`${JSON.stringify({ jsonrpc: "2.0", id, method, params })}\n`); + }); + +try { + const initialize = await request("initialize", { + protocolVersion: "2025-06-18", + capabilities: {}, + clientInfo: { name: "looperators-p0-contract-probe", version: "1" }, + }); + const toolList = await request("tools/list"); + const resourceList = await request("resources/list"); + const resource = await request("resources/read", { + uri: "ui://looperators/agent-loop-p0.html", + }); + const widget = await request("tools/call", { + name: "loop_widget", + arguments: {}, + }); + const ping = await request("tools/call", { + name: "loop_ping", + arguments: { message: "component-call" }, + }); + const html = resource.contents[0].text; + await atomicWriteJson(output, { + schema_version: 1, + initialize, + tools: toolList.tools, + resources: resourceList.resources, + resource_read: { + uri: resource.contents[0].uri, + mimeType: resource.contents[0].mimeType, + html_sha256: createHash("sha256").update(html).digest("hex"), + html_bytes: Buffer.byteLength(html), + contains_ui_initialize: html.includes("ui/initialize"), + contains_tool_result_notification: html.includes( + "ui/notifications/tool-result", + ), + contains_component_tools_call: html.includes("tools/call"), + }, + widget_result: widget, + component_ping_result: ping, + }); +} finally { + child.stdin.end(); +} +process.stdout.write(`${JSON.stringify({ output })}\n`); diff --git a/plugins/looperators-agent-loop-p0/scripts/run-hook-probe.mjs b/plugins/looperators-agent-loop-p0/scripts/run-hook-probe.mjs new file mode 100644 index 0000000..a64d896 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/scripts/run-hook-probe.mjs @@ -0,0 +1,108 @@ +#!/usr/bin/env node + +import { spawn } from "node:child_process"; +import { mkdir, writeFile } from "node:fs/promises"; +import path from "node:path"; +import process from "node:process"; +import { atomicWriteJson } from "../lib/event-utils.mjs"; + +function argument(name, fallback = null) { + const index = process.argv.indexOf(`--${name}`); + return index >= 0 ? process.argv[index + 1] : fallback; +} + +const codexBin = path.resolve(argument("codex-bin")); +const probeDir = path.resolve(argument("probe-dir")); +const artifactDir = path.resolve(argument("artifact-dir")); +const runId = argument("run-id", "default"); +const includeUserConfig = process.argv.includes("--include-user-config"); +if (!codexBin || !probeDir || !artifactDir) { + throw new Error("--codex-bin, --probe-dir, and --artifact-dir are required"); +} + +const lastMessagePath = path.join( + artifactDir, + `codex-${runId}-last-message.txt`, +); +const prompt = [ + "Run a synthetic looperators Codex hook compatibility probe. Do not inspect", + "credentials, user configuration, or files outside this temporary project.", + "First call the shell tool exactly once with a harmless command that prints", + "P0_TOOL_OK. Then use the Agent/spawn_agent capability to launch exactly two", + "independent subagents concurrently. Ask subagent A to return only P0_SUBAGENT_A", + "and subagent B to return only P0_SUBAGENT_B; they must not call tools. Wait for", + "both. Report P0_TOOL_OK and both markers, then stop. If a Stop or SubagentStop", + "hook requests one continuation lap, obey it, output P0_LAP_CONTINUED, call no", + "more tools, and stop again.", +].join(" "); +const args = [ + "exec", + "--cd", + probeDir, + "--add-dir", + artifactDir, + "--skip-git-repo-check", + "--sandbox", + "workspace-write", + "--dangerously-bypass-hook-trust", + ...(!includeUserConfig ? ["--ignore-user-config"] : []), + "--config", + 'model_reasoning_effort="high"', + "--config", + "features.multi_agent=true", + "--json", + "--output-last-message", + lastMessagePath, + prompt, +]; + +await mkdir(artifactDir, { recursive: true, mode: 0o700 }); +await atomicWriteJson(path.join(artifactDir, `codex-${runId}-command.json`), { + executable: codexBin, + arguments: args, + cwd: probeDir, + includes_user_config: includeUserConfig, + environment_overrides: { + LOOPERATORS_P0_ARTIFACT_DIR: artifactDir, + LOOPERATORS_P0_CONTINUATION_MODE: "lap", + }, +}); + +const child = spawn(codexBin, args, { + cwd: probeDir, + env: { + ...process.env, + LOOPERATORS_P0_ARTIFACT_DIR: artifactDir, + LOOPERATORS_P0_CONTINUATION_MODE: "lap", + }, + stdio: ["ignore", "pipe", "pipe"], +}); +const stdoutChunks = []; +const stderrChunks = []; +child.stdout.on("data", (chunk) => { + stdoutChunks.push(chunk); + process.stdout.write(chunk); +}); +child.stderr.on("data", (chunk) => { + stderrChunks.push(chunk); + process.stderr.write(chunk); +}); +const exitCode = await new Promise((resolve, reject) => { + child.on("error", reject); + child.on("close", resolve); +}); +await writeFile( + path.join(artifactDir, `codex-${runId}.jsonl`), + Buffer.concat(stdoutChunks), + { mode: 0o600 }, +); +await writeFile( + path.join(artifactDir, `codex-${runId}.stderr.txt`), + Buffer.concat(stderrChunks), + { mode: 0o600 }, +); +await atomicWriteJson(path.join(artifactDir, `codex-${runId}-result.json`), { + exit_code: exitCode, + completed_at: new Date().toISOString(), +}); +process.exitCode = exitCode ?? 1; diff --git a/plugins/looperators-agent-loop-p0/scripts/run-mcp-host-probe.mjs b/plugins/looperators-agent-loop-p0/scripts/run-mcp-host-probe.mjs new file mode 100644 index 0000000..6929b82 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/scripts/run-mcp-host-probe.mjs @@ -0,0 +1,105 @@ +#!/usr/bin/env node + +import { spawn } from "node:child_process"; +import { mkdir, writeFile } from "node:fs/promises"; +import path from "node:path"; +import process from "node:process"; +import { fileURLToPath } from "node:url"; +import { atomicWriteJson } from "../lib/event-utils.mjs"; + +function argument(name, fallback = null) { + const index = process.argv.indexOf(`--${name}`); + return index >= 0 ? process.argv[index + 1] : fallback; +} + +const codexBinValue = argument("codex-bin"); +const probeDirValue = argument("probe-dir"); +const artifactDirValue = argument("artifact-dir"); +if (!codexBinValue || !probeDirValue || !artifactDirValue) { + throw new Error("--codex-bin, --probe-dir, and --artifact-dir are required"); +} +const codexBin = path.resolve(codexBinValue); +const probeDir = path.resolve(probeDirValue); +const artifactDir = path.resolve(artifactDirValue); +const runId = argument("run-id", "project-config"); +const injectConfig = process.argv.includes("--inject-config"); +const pluginRoot = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", +); +const mcpServer = path.join(pluginRoot, "mcp", "server.mjs"); +const prompt = [ + "Run the synthetic looperators MCP App host probe.", + "Call the MCP tool loop_widget from server looperators_agent_loop_p0 exactly once.", + "Do not call any other tool and do not inspect local files.", + "Report the number of nodes in structuredContent and whether the tool advertises", + "the resource ui://looperators/agent-loop-p0.html, then stop.", +].join(" "); +const args = [ + "exec", + "--cd", + probeDir, + "--skip-git-repo-check", + "--sandbox", + "read-only", + "--enable", + "enable_mcp_apps", + ...(injectConfig + ? [ + "--config", + `mcp_servers.looperators_agent_loop_p0.command=${JSON.stringify(process.execPath)}`, + "--config", + `mcp_servers.looperators_agent_loop_p0.args=${JSON.stringify([mcpServer])}`, + "--config", + `mcp_servers.looperators_agent_loop_p0.env={ LOOPERATORS_P0_ARTIFACT_DIR = ${JSON.stringify(artifactDir)} }`, + ] + : []), + "--config", + 'model_reasoning_effort="high"', + "--json", + "--output-last-message", + path.join(artifactDir, `codex-${runId}-last-message.txt`), + prompt, +]; + +await mkdir(artifactDir, { recursive: true, mode: 0o700 }); +await atomicWriteJson(path.join(artifactDir, `codex-${runId}-command.json`), { + executable: codexBin, + arguments: args, + cwd: probeDir, + injected_config: injectConfig, +}); +const child = spawn(codexBin, args, { + cwd: probeDir, + env: process.env, + stdio: ["ignore", "pipe", "pipe"], +}); +const stdoutChunks = []; +const stderrChunks = []; +child.stdout.on("data", (chunk) => { + stdoutChunks.push(chunk); + process.stdout.write(chunk); +}); +child.stderr.on("data", (chunk) => { + stderrChunks.push(chunk); + process.stderr.write(chunk); +}); +const exitCode = await new Promise((resolve, reject) => { + child.on("error", reject); + child.on("close", resolve); +}); +await writeFile( + path.join(artifactDir, `codex-${runId}.jsonl`), + Buffer.concat(stdoutChunks), + { mode: 0o600 }, +); +await writeFile( + path.join(artifactDir, `codex-${runId}.stderr.txt`), + Buffer.concat(stderrChunks), + { mode: 0o600 }, +); +await atomicWriteJson(path.join(artifactDir, `codex-${runId}-result.json`), { + exit_code: exitCode, + completed_at: new Date().toISOString(), +}); +process.exitCode = exitCode ?? 1; diff --git a/plugins/looperators-agent-loop-p0/scripts/sidecar-server.mjs b/plugins/looperators-agent-loop-p0/scripts/sidecar-server.mjs new file mode 100644 index 0000000..d82cc97 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/scripts/sidecar-server.mjs @@ -0,0 +1,271 @@ +#!/usr/bin/env node + +import { watch } from "node:fs"; +import { mkdir, readFile, readdir } from "node:fs/promises"; +import http from "node:http"; +import path from "node:path"; +import process from "node:process"; +import { safeTokenEqual } from "../lib/event-utils.mjs"; + +function argument(name, fallback = null) { + const index = process.argv.indexOf(`--${name}`); + return index >= 0 ? process.argv[index + 1] : fallback; +} + +const host = argument("host", "127.0.0.1"); +const port = Number(argument("port", "0")); +const artifactDir = path.resolve( + argument( + "artifact-dir", + process.env.LOOPERATORS_P0_ARTIFACT_DIR ?? + path.join(process.cwd(), "output", "looperators-agent-loop-p0"), + ), +); +const token = + process.env.LOOPERATORS_P0_SIDECAR_TOKEN ?? argument("token", ""); + +if (host !== "127.0.0.1") { + throw new Error("The P0 sidecar only permits --host 127.0.0.1"); +} +if (!Number.isInteger(port) || port < 0 || port > 65535) { + throw new Error("--port must be an integer from 0 through 65535"); +} +if (token.length < 16) { + throw new Error( + "Set LOOPERATORS_P0_SIDECAR_TOKEN to an explicit or random token of at least 16 characters", + ); +} + +const html = ` + + + + + looperators Agent Loop sidecar + + + +

      looperators Agent Loop

      connecting…
      +
      + + + +
      #eventturnagent/tool
      + + +`; + +const clients = new Set(); +let watcher; +let debounceTimer; + +async function loadJson(fileName, fallback) { + try { + return JSON.parse(await readFile(path.join(artifactDir, fileName), "utf8")); + } catch (error) { + if (error?.code === "ENOENT") { + return fallback; + } + throw error; + } +} + +async function loadEvents() { + try { + const body = await readFile( + path.join(artifactDir, "normalized-events.jsonl"), + "utf8", + ); + return body + .split("\n") + .filter(Boolean) + .map((line) => JSON.parse(line)); + } catch (error) { + if (error?.code !== "ENOENT") { + throw error; + } + let names = []; + try { + names = await readdir(path.join(artifactDir, "hook-events")); + } catch (nestedError) { + if (nestedError?.code === "ENOENT") { + return []; + } + throw nestedError; + } + return names + .filter((name) => name.endsWith(".json")) + .sort() + .slice(-20) + .map((name, index) => ({ + sequence: index + 1, + event: "un-normalized delivery", + turn_id: null, + agent_id: null, + evidence_file: name, + })); + } +} + +async function snapshot() { + return { + generated_at: new Date().toISOString(), + graph: await loadJson("normalized-graph.json", { nodes: [], edges: [] }), + events: await loadEvents(), + }; +} + +async function broadcast() { + const payload = `event: snapshot\ndata: ${JSON.stringify(await snapshot())}\n\n`; + for (const response of clients) { + response.write(payload); + } +} + +function scheduleBroadcast() { + clearTimeout(debounceTimer); + debounceTimer = setTimeout(() => { + broadcast().catch(() => {}); + }, 40); +} + +function parseCookies(header) { + return Object.fromEntries( + String(header ?? "") + .split(";") + .map((part) => part.trim()) + .filter(Boolean) + .map((part) => { + const separator = part.indexOf("="); + return [ + part.slice(0, separator), + decodeURIComponent(part.slice(separator + 1)), + ]; + }), + ); +} + +function authenticated(request) { + const bearer = request.headers.authorization?.startsWith("Bearer ") + ? request.headers.authorization.slice("Bearer ".length) + : ""; + const cookie = parseCookies(request.headers.cookie).looperators_p0; + return safeTokenEqual(bearer || cookie || "", token); +} + +const server = http.createServer(async (request, response) => { + const url = new URL(request.url ?? "/", `http://${host}`); + const queryToken = url.searchParams.get("token") ?? ""; + if (queryToken && safeTokenEqual(queryToken, token)) { + response.writeHead(303, { + Location: url.pathname, + "Set-Cookie": `looperators_p0=${encodeURIComponent(token)}; HttpOnly; SameSite=Strict; Path=/`, + "Cache-Control": "no-store", + }); + response.end(); + return; + } + if (!authenticated(request)) { + response.writeHead(401, { + "Content-Type": "text/plain; charset=utf-8", + "Cache-Control": "no-store", + }); + response.end("Unauthorized\n"); + return; + } + if (url.pathname === "/") { + response.writeHead(200, { + "Content-Type": "text/html; charset=utf-8", + "Cache-Control": "no-store", + "Content-Security-Policy": + "default-src 'self'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; connect-src 'self'; frame-ancestors 'none'", + "X-Content-Type-Options": "nosniff", + "Referrer-Policy": "no-referrer", + }); + response.end(html); + return; + } + if (url.pathname === "/snapshot") { + response.writeHead(200, { + "Content-Type": "application/json; charset=utf-8", + "Cache-Control": "no-store", + }); + response.end(`${JSON.stringify(await snapshot())}\n`); + return; + } + if (url.pathname === "/events") { + response.writeHead(200, { + "Content-Type": "text/event-stream; charset=utf-8", + "Cache-Control": "no-store", + Connection: "keep-alive", + }); + response.write(`event: snapshot\ndata: ${JSON.stringify(await snapshot())}\n\n`); + clients.add(response); + request.on("close", () => clients.delete(response)); + return; + } + response.writeHead(404, { "Content-Type": "text/plain; charset=utf-8" }); + response.end("Not found\n"); +}); + +await mkdir(artifactDir, { recursive: true, mode: 0o700 }); +watcher = watch(artifactDir, { recursive: true }, scheduleBroadcast); +server.listen(port, host, () => { + const address = server.address(); + process.stdout.write( + `${JSON.stringify({ + status: "ready", + host, + port: address.port, + base_url: `http://${host}:${address.port}/`, + token_required: true, + artifact_dir: artifactDir, + })}\n`, + ); +}); + +function shutdown() { + watcher?.close(); + for (const response of clients) { + response.end(); + } + server.close(() => process.exit(0)); +} + +process.on("SIGTERM", shutdown); +process.on("SIGINT", shutdown); diff --git a/plugins/looperators-agent-loop-p0/skills/agent-loop-visualization/SKILL.md b/plugins/looperators-agent-loop-p0/skills/agent-loop-visualization/SKILL.md new file mode 100644 index 0000000..1f1446a --- /dev/null +++ b/plugins/looperators-agent-loop-p0/skills/agent-loop-visualization/SKILL.md @@ -0,0 +1,43 @@ +--- +name: agent-loop-visualization +description: Normalize looperators P0 Codex hook events and render a small thread-scoped Agent Loop graph with the native codex-inline-vis directive. Use only when the user asks for the looperators Agent Loop P0 visualization or compatibility probe. +--- + +# looperators Agent Loop visualization + +This skill is an explicit P0 compatibility probe. Do not treat it as a durable +or implicit orchestration protocol. + +1. Require the exact experiment artifact directory from the user's request. + Resolve it to an absolute path and verify that it is a directory. Do not + search other tasks, guess a repository, or infer state by tailing a Codex + transcript. +2. If `/hook-events/` exists, run: + + `node "${PLUGIN_ROOT}/scripts/normalize-events.mjs" --artifact-dir ""` + + If it does not exist, proceed only when `normalized-graph.json` or + `normalized-events.jsonl` already exists. Otherwise report the missing input + and stop. Never generate sample nodes or substitute another artifact set. +3. Use only the thread-scoped visualization directory exposed as a writable + root for the current task. Verify that it is an existing directory. Do not + guess a `CODEX_HOME` path, create a global fallback, or write through a + symlink. +4. Generate the deterministic fragment from the normalized artifacts: + + `node "${PLUGIN_ROOT}/scripts/generate-inline-visualization.mjs" --artifact-dir "" --output "/looperators-agent-loop.html"` + + The generator rejects output symlinks, writes atomically with mode `0600`, + includes only observed data, and rejects fragments at or above 2 MiB. +5. Read the generated file back and verify that it is a regular fragment named + `looperators-agent-loop.html`, contains no full HTML shell, and reports no + source warning unless the input really is partial. +6. On success, emit only this directive, on its own line and outside a code + fence: + + `::codex-inline-vis{file="looperators-agent-loop.html"}` + +If the artifact directory, normalized inputs, or writable thread directory is +unavailable, report that exact limitation and do not emit the directive. +Presentation controls and `sendFollowUpMessage` stay inside the native card; +they do not make live network requests or arbitrary tool calls. diff --git a/plugins/looperators-agent-loop-p0/tests/hooks-and-normalization.test.mjs b/plugins/looperators-agent-loop-p0/tests/hooks-and-normalization.test.mjs new file mode 100644 index 0000000..6cc7141 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/tests/hooks-and-normalization.test.mjs @@ -0,0 +1,129 @@ +import assert from "node:assert/strict"; +import { mkdtemp, readFile } from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import { spawn } from "node:child_process"; +import test from "node:test"; +import { fileURLToPath } from "node:url"; +import { normalizeArtifactDirectory } from "../scripts/normalize-events.mjs"; + +const pluginRoot = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", +); +const collector = path.join(pluginRoot, "hooks", "collect-event.mjs"); + +function runCollector(artifactDir, input, extraArgs = []) { + return new Promise((resolve, reject) => { + const child = spawn(process.execPath, [collector, "--lane", "primary", ...extraArgs], { + env: { + ...process.env, + LOOPERATORS_P0_ARTIFACT_DIR: artifactDir, + LOOPERATORS_P0_CONTINUATION_MODE: "lap", + }, + stdio: ["pipe", "pipe", "pipe"], + }); + let stdout = ""; + let stderr = ""; + child.stdout.on("data", (chunk) => { + stdout += chunk; + }); + child.stderr.on("data", (chunk) => { + stderr += chunk; + }); + child.on("error", reject); + child.on("close", (code) => { + if (code !== 0) { + reject(new Error(`collector exited ${code}: ${stderr}`)); + return; + } + resolve(stdout ? JSON.parse(stdout) : null); + }); + child.stdin.end(JSON.stringify(input)); + }); +} + +test("collector is idempotent and caps Stop continuation at one lap", async () => { + const artifactDir = await mkdtemp( + path.join(os.tmpdir(), "looperators-p0-hooks-"), + ); + const base = { + session_id: "session-test", + turn_id: "turn-test", + hook_event_name: "Stop", + transcript_path: "/tmp/transcript.jsonl", + stop_hook_active: false, + last_assistant_message: "synthetic private-looking text", + }; + const first = await runCollector(artifactDir, base); + const duplicate = await runCollector(artifactDir, base); + const continuation = await runCollector(artifactDir, { + ...base, + stop_hook_active: true, + last_assistant_message: "P0_LAP_CONTINUED", + }); + assert.equal(first.decision, "block"); + assert.equal(duplicate.continue, true); + assert.equal(continuation.continue, true); + + const result = await normalizeArtifactDirectory(artifactDir); + assert.equal(result.events.length, 2, "duplicate delivery is not written twice"); + assert.equal(result.summary.continuation_pairs[ + "session-test:turn-test:Stop:-" + ].initial, 1); + assert.equal(result.summary.continuation_pairs[ + "session-test:turn-test:Stop:-" + ].continuation, 1); + + const raw = JSON.parse( + await readFile( + path.join(artifactDir, result.events[0].evidence_file), + "utf8", + ), + ); + assert.equal(raw.input.last_assistant_message._redacted, "last_assistant_message"); + assert.equal(raw.input.last_assistant_message.bytes > 0, true); +}); + +test("normalizer reports overlap for parallel matching handlers", async () => { + const artifactDir = await mkdtemp( + path.join(os.tmpdir(), "looperators-p0-concurrency-"), + ); + const input = { + session_id: "session-test", + turn_id: "turn-test", + hook_event_name: "PreToolUse", + tool_name: "Bash", + tool_use_id: "tool-test", + tool_input: { command: "printf synthetic" }, + }; + const runLane = (lane) => + new Promise((resolve, reject) => { + const child = spawn( + process.execPath, + [collector, "--lane", lane, "--delay-ms", "100"], + { + env: { + ...process.env, + LOOPERATORS_P0_ARTIFACT_DIR: artifactDir, + }, + stdio: ["pipe", "ignore", "pipe"], + }, + ); + let stderr = ""; + child.stderr.on("data", (chunk) => { + stderr += chunk; + }); + child.on("error", reject); + child.on("close", (code) => + code === 0 + ? resolve() + : reject(new Error(`collector exited ${code}: ${stderr}`)), + ); + child.stdin.end(JSON.stringify(input)); + }); + await Promise.all([runLane("parallel-a"), runLane("parallel-b")]); + const result = await normalizeArtifactDirectory(artifactDir); + assert.equal(result.summary.concurrency_probes.length, 1); + assert.equal(result.summary.concurrency_probes[0].overlaps, true); +}); diff --git a/plugins/looperators-agent-loop-p0/tests/inline-browser-contract.test.mjs b/plugins/looperators-agent-loop-p0/tests/inline-browser-contract.test.mjs new file mode 100644 index 0000000..76c8476 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/tests/inline-browser-contract.test.mjs @@ -0,0 +1,282 @@ +import assert from "node:assert/strict"; +import { execFile } from "node:child_process"; +import { + access, + mkdir, + mkdtemp, + readFile, + writeFile, +} from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import { promisify } from "node:util"; +import test from "node:test"; +import { pathToFileURL } from "node:url"; +import { generateInlineVisualization } from "../scripts/generate-inline-visualization.mjs"; +import { createRecordedArtifactFixture } from "./recorded-artifact-fixture.mjs"; + +const execFileAsync = promisify(execFile); + +async function loadPlaywright() { + const moduleDirectory = process.env.LOOPERATORS_P0_PLAYWRIGHT_MODULE_DIR; + if (moduleDirectory) { + return import( + pathToFileURL(path.join(moduleDirectory, "playwright", "index.mjs")).href + ); + } + return import("playwright"); +} + +async function findFragmentFrame(page) { + for (let attempt = 0; attempt < 100; attempt += 1) { + for (const frame of page.frames()) { + if ( + frame !== page.mainFrame() && + (await frame.locator("#looperators-agent-loop-p06").count()) === 1 + ) { + return frame; + } + } + await page.waitForTimeout(25); + } + throw new Error("Official preview did not expose the inline fragment frame"); +} + +test("official preview executes selection, details, zoom, filter, follow-up, and narrow layout", async (t) => { + let playwright; + try { + playwright = await loadPlaywright(); + } catch (error) { + t.skip(`Playwright is unavailable: ${error.message}`); + return; + } + const renderScript = process.env.LOOPERATORS_P0_RENDER_PY; + if (!renderScript) { + t.skip("LOOPERATORS_P0_RENDER_PY is not set"); + return; + } + await access(renderScript); + + const temporary = await mkdtemp( + path.join(os.tmpdir(), "looperators-p0-browser-contract-"), + ); + const recordedArtifactDir = await createRecordedArtifactFixture(); + const fragmentPath = path.join(temporary, "looperators-agent-loop.html"); + const previewPath = path.join(temporary, "looperators-agent-loop-preview.html"); + await generateInlineVisualization({ + artifactDir: recordedArtifactDir, + outputPath: fragmentPath, + }); + await execFileAsync(process.env.PYTHON ?? "python3", [ + renderScript, + fragmentPath, + previewPath, + ]); + + const browser = await playwright.chromium.launch({ headless: true }); + t.after(() => browser.close()); + const context = await browser.newContext({ + viewport: { width: 736, height: 1000 }, + }); + await context.addInitScript(() => { + window.__looperatorsFollowUps = []; + window.openai = { + sendFollowUpMessage: async (payload) => { + window.__looperatorsFollowUps.push(payload); + return { accepted: true }; + }, + }; + }); + const page = await context.newPage(); + await page.goto(pathToFileURL(previewPath).href); + const frame = await findFragmentFrame(page); + const root = frame.locator("#looperators-agent-loop-p06"); + await root.waitFor(); + + const summary = frame.locator("#loop-acceptance-summary"); + assert.match(await summary.inputValue(), /JS ready=pass/u); + const followUp = frame.locator("#loop-follow-up"); + assert.equal(await followUp.isDisabled(), true); + + const rootButton = frame.locator('[data-kind="root"]'); + await frame.locator("#loop-zoom-reset").focus(); + await page.keyboard.press("Tab"); + assert.equal( + await frame.evaluate( + () => document.activeElement?.getAttribute("data-kind"), + ), + "root", + ); + await page.keyboard.press("Enter"); + assert.equal(await rootButton.getAttribute("aria-pressed"), "true"); + assert.match( + await frame.locator("#loop-detail-id").textContent(), + /session:019f9a38-9f26-71d0-b908-df3626a5d40c/u, + ); + assert.match( + await frame.locator("#loop-timeline").textContent(), + /SessionStart[\s\S]*Stop/u, + ); + + const subagents = frame.locator('[data-kind="subagent"]'); + await page.keyboard.press("Tab"); + assert.equal( + await frame.evaluate( + () => document.activeElement?.getAttribute("data-node-id"), + ), + "agent:019f9a39-0485-75f0-b6cf-8beba2cc59cd", + ); + await page.keyboard.press("Enter"); + await page.keyboard.press("Tab"); + assert.equal( + await frame.evaluate( + () => document.activeElement?.getAttribute("data-node-id"), + ), + "agent:019f9a39-1681-7b90-98e1-55ac153248dd", + ); + await page.keyboard.press("Space"); + assert.equal(await subagents.nth(1).getAttribute("aria-pressed"), "true"); + assert.match( + await frame.locator("#loop-detail-id").textContent(), + /agent:019f9a39-1681-7b90-98e1-55ac153248dd/u, + ); + assert.match( + await frame.locator("#loop-detail-counts").textContent(), + /3 semantic events · initial stops 1 · continuations 1/u, + ); + + await frame.locator("#loop-zoom-in").click(); + assert.equal(await frame.locator("#loop-zoom-value").textContent(), "110%"); + await frame.locator("#loop-zoom-out").click(); + await frame.locator("#loop-zoom-out").click(); + assert.equal(await frame.locator("#loop-zoom-value").textContent(), "90%"); + await frame.locator("#loop-zoom-reset").click(); + assert.equal(await frame.locator("#loop-zoom-value").textContent(), "100%"); + + const filter = frame.locator("#loop-filter"); + await filter.selectOption("subagent"); + assert.equal(await rootButton.isHidden(), true); + assert.equal(await subagents.nth(0).isVisible(), true); + await filter.selectOption("root"); + assert.equal(await rootButton.isVisible(), true); + assert.equal(await subagents.nth(0).isHidden(), true); + await filter.selectOption("all"); + assert.equal(await rootButton.isVisible(), true); + assert.equal(await subagents.nth(1).isVisible(), true); + + await followUp.click(); + await frame + .locator("#loop-follow-up-status") + .filter({ hasText: "Follow-up requested." }) + .waitFor(); + const followUps = await frame.evaluate(() => window.__looperatorsFollowUps); + assert.equal(followUps.length, 1); + assert.match( + followUps[0].prompt, + /stable identifier "agent:019f9a39-1681-7b90-98e1-55ac153248dd"/u, + ); + assert.match(followUps[0].prompt, /separating recorded facts from inference/u); + assert.equal(followUps[0].title, "Explain loop node 019f…3248dd"); + + const finalSummary = await summary.inputValue(); + for (const check of [ + "JS ready=pass", + "node selected=pass", + "details updated=pass", + "zoom changed/reset=pass", + "filter changed=pass", + "follow-up requested=pass", + ]) { + assert.match(finalSummary, new RegExp(check.replace("/", "\\/"), "u")); + } + + await page.setViewportSize({ width: 320, height: 1600 }); + await page.waitForTimeout(50); + const layout = await frame.evaluate(() => { + const visualization = document.getElementById( + "looperators-agent-loop-p06", + ); + const rootRect = visualization.getBoundingClientRect(); + const visibleControls = [...visualization.querySelectorAll("button, select, textarea")] + .filter((element) => { + const style = getComputedStyle(element); + return !element.hidden && style.display !== "none"; + }) + .map((element) => { + const rect = element.getBoundingClientRect(); + return { + label: + element.getAttribute("aria-label") ?? + element.textContent.trim().slice(0, 40), + left: rect.left, + right: rect.right, + }; + }); + return { + documentClientWidth: document.documentElement.clientWidth, + documentScrollWidth: document.documentElement.scrollWidth, + rootClientWidth: visualization.clientWidth, + rootScrollWidth: visualization.scrollWidth, + rootLeft: rootRect.left, + rootRight: rootRect.right, + stageHeight: document.getElementById("loop-stage").getBoundingClientRect() + .height, + stageViewportHeight: document + .getElementById("loop-stage-viewport") + .getBoundingClientRect().height, + visibleControls, + }; + }); + assert.equal( + layout.documentScrollWidth <= layout.documentClientWidth + 1, + true, + JSON.stringify(layout), + ); + assert.equal( + layout.rootScrollWidth <= layout.rootClientWidth + 1, + true, + JSON.stringify(layout), + ); + assert.equal( + layout.stageViewportHeight >= layout.stageHeight - 1, + true, + JSON.stringify(layout), + ); + for (const control of layout.visibleControls) { + assert.equal( + control.left >= layout.rootLeft - 1 && + control.right <= layout.rootRight + 1, + true, + JSON.stringify({ control, layout }), + ); + } + + const evidenceDir = process.env.LOOPERATORS_P0_BROWSER_EVIDENCE_DIR; + if (evidenceDir) { + await mkdir(evidenceDir, { recursive: true }); + await root.screenshot({ + path: path.join(evidenceDir, "headless-inline-320.png"), + }); + await page.setViewportSize({ width: 736, height: 1000 }); + await page.waitForTimeout(50); + await root.screenshot({ + path: path.join(evidenceDir, "headless-inline-736.png"), + }); + await writeFile( + path.join(evidenceDir, "headless-browser-contract.json"), + `${JSON.stringify( + { + officialRenderScript: renderScript, + fragmentBytes: (await readFile(fragmentPath)).byteLength, + nodeCount: await frame.locator("[data-node-id]").count(), + finalSummary, + followUps, + narrowLayout: layout, + }, + null, + 2, + )}\n`, + "utf8", + ); + } +}); diff --git a/plugins/looperators-agent-loop-p0/tests/inline-visualization.test.mjs b/plugins/looperators-agent-loop-p0/tests/inline-visualization.test.mjs new file mode 100644 index 0000000..0173336 --- /dev/null +++ b/plugins/looperators-agent-loop-p0/tests/inline-visualization.test.mjs @@ -0,0 +1,122 @@ +import assert from "node:assert/strict"; +import { + lstat, + mkdtemp, + mkdir, + readFile, + symlink, +} from "node:fs/promises"; +import os from "node:os"; +import path from "node:path"; +import test from "node:test"; +import { + buildLoopViewModel, + generateInlineVisualization, + loadNormalizedArtifactData, + renderInlineVisualization, +} from "../scripts/generate-inline-visualization.mjs"; +import { createRecordedArtifactFixture } from "./recorded-artifact-fixture.mjs"; + +test("generator projects the recorded three agents and two spawned edges", async () => { + const recordedArtifactDir = await createRecordedArtifactFixture(); + const source = await loadNormalizedArtifactData(recordedArtifactDir); + const model = buildLoopViewModel(source); + + assert.deepEqual(model.counts, { + deliveries: 22, + semanticEvents: 18, + graphNodes: 7, + graphEdges: 6, + agentNodes: 3, + agentEdges: 2, + }); + assert.deepEqual( + model.nodes.map((node) => node.id), + [ + "session:019f9a38-9f26-71d0-b908-df3626a5d40c", + "agent:019f9a39-0485-75f0-b6cf-8beba2cc59cd", + "agent:019f9a39-1681-7b90-98e1-55ac153248dd", + ], + ); + assert.equal(model.edges.every((edge) => edge.kind === "spawned"), true); + assert.deepEqual(model.semanticEventCounts, { + PostToolUse: 4, + PreToolUse: 4, + SessionStart: 1, + Stop: 2, + SubagentStart: 2, + SubagentStop: 4, + UserPromptSubmit: 1, + }); + for (const node of model.nodes) { + assert.equal(node.status, "Continuation completed"); + assert.equal(node.initialStops, 1); + assert.equal(node.continuations, 1); + } + assert.equal(model.warnings.length, 0); +}); + +test("generated output is a deterministic, network-free inline fragment with real data", async () => { + const recordedArtifactDir = await createRecordedArtifactFixture(); + const source = await loadNormalizedArtifactData(recordedArtifactDir); + const model = buildLoopViewModel(source); + const first = renderInlineVisualization(model); + const second = renderInlineVisualization(model); + + assert.equal(first, second); + assert.equal(Buffer.byteLength(first) < 2 * 1024 * 1024, true); + assert.doesNotMatch(first, /)|)|)/iu); + assert.doesNotMatch(first, /\bfetch\s*\(|XMLHttpRequest|WebSocket/); + assert.doesNotMatch(first, /expandable|Static thread-scoped|display-only/u); + assert.match( + first, + /Interactive snapshot · local controls · no live network\/tool calls/u, + ); + assert.match(first, /window\.openai\.sendFollowUpMessage/u); + assert.match(first, /session:019f9a38-9f26-71d0-b908-df3626a5d40c/u); + assert.match(first, /agent:019f9a39-0485-75f0-b6cf-8beba2cc59cd/u); + assert.match(first, /agent:019f9a39-1681-7b90-98e1-55ac153248dd/u); + assert.match(first, /"PreToolUse":4/u); + assert.match(first, /"SubagentStop":4/u); + assert.match(first, /

      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 Ky{{Lop8YR{W>i)H literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 3ba6f62..0e11933 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,9 @@ "": { "name": "orrery", "version": "0.2.0", + "workspaces": [ + "packages/*" + ], "dependencies": { "@anthropic-ai/claude-agent-sdk": "^0.3.191", "@fontsource-variable/geist": "^5.2.9", @@ -1164,22 +1167,35 @@ } }, "node_modules/@emnapi/core": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.2.tgz", - "integrity": "sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz", + "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==", "license": "MIT", "optional": true, + "peer": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/core/node_modules/@emnapi/wasi-threads": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz", + "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==", + "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.2.tgz", - "integrity": "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", "license": "MIT", "optional": true, + "peer": true, "dependencies": { "tslib": "^2.4.0" } @@ -1381,6 +1397,10 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@looperators/agent-graph-ui": { + "resolved": "packages/agent-graph-ui", + "link": true + }, "node_modules/@malept/cross-spawn-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", @@ -4137,6 +4157,66 @@ "node": ">=14.0.0" } }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.10.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.10.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/tslib": { + "version": "2.8.1", + "inBundle": true, + "license": "0BSD", + "optional": true + }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.1.tgz", @@ -13256,6 +13336,25 @@ "type": "github", "url": "https://github.com/sponsors/wooorm" } + }, + "packages/agent-graph-ui": { + "name": "@looperators/agent-graph-ui", + "version": "0.1.0", + "devDependencies": { + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^6.0.2", + "@xyflow/react": "^12.11.1", + "react": "^19.2.7", + "react-dom": "^19.2.7", + "typescript": "~6.0.2", + "vite": "^8.1.0" + }, + "peerDependencies": { + "@xyflow/react": "^12.11.1", + "react": "^19.2.7", + "react-dom": "^19.2.7" + } } } } diff --git a/package.json b/package.json index ff40a95..0cdac6b 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,9 @@ "name": "orrery", "private": true, "version": "0.2.0", + "workspaces": [ + "packages/*" + ], "description": "A loop-native desktop tool for agent workflows.", "author": "ObservedObserver", "type": "module", @@ -14,6 +17,11 @@ "dev:app": "npm run build:electron && concurrently -k \"vite --host 127.0.0.1 --port 48273 --strictPort\" \"tsc -p tsconfig.electron.json --watch --preserveWatchOutput\" \"wait-on http://127.0.0.1:48273 dist-electron/electron/main.js && cross-env VITE_DEV_SERVER_URL=http://127.0.0.1:48273 electron .\"", "dev:web": "vite --host 127.0.0.1 --port 48273 --strictPort", "dev:web:real": "npm run build:electron && concurrently -k \"tsc -p tsconfig.electron.json --watch --preserveWatchOutput\" \"node dist-electron/electron/runtimeHttpServerCli.js\" \"wait-on http://127.0.0.1:48274/api/runtime/config && cross-env VITE_ORRERY_RUNTIME_URL=http://127.0.0.1:48274 vite --host 127.0.0.1 --port 48273 --strictPort\"", + "dev:graph-ui": "npm run dev -w @looperators/agent-graph-ui", + "build:graph-ui": "npm run build -w @looperators/agent-graph-ui", + "test:graph-ui": "npm run test -w @looperators/agent-graph-ui", + "build:plugin-agent-loop-ui": "npm run build:graph-ui && tsc -p plugins/looperators-agent-loop/ui/tsconfig.json --noEmit && vite build --config plugins/looperators-agent-loop/ui/vite.config.ts", + "test:plugin-agent-loop-ui": "npm run build:plugin-agent-loop-ui && node --test --test-concurrency=4 plugins/looperators-agent-loop/tests/*.test.mjs", "build": "npm run build:electron && tsc -b && vite build", "build:electron": "tsc -p tsconfig.electron.json && node scripts/prune-electron-output.mjs", "check:electron": "tsc -p tsconfig.electron.json --noEmit", diff --git a/packages/agent-graph-ui/index.html b/packages/agent-graph-ui/index.html new file mode 100644 index 0000000..c2cb773 --- /dev/null +++ b/packages/agent-graph-ui/index.html @@ -0,0 +1,14 @@ + + + + + + + + looperators Agent Graph UI + + +