From 83849b75d44cab3d01d7ea56f6c839aef8e20046 Mon Sep 17 00:00:00 2001 From: tegwick Date: Fri, 11 Sep 2026 00:31:03 +0200 Subject: [PATCH] Connect policy-gated browser review and audit runtime Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a07ff8-19d0-7820-b4d0-1353833cb7fc --- SCOPE.md | 42 +-- docs/browser-authentication.md | 33 ++- docs/durable-review-evidence.md | 31 ++- docs/evidence/2026-09-11-browser-result.json | 81 ++++++ .../2026-09-11-protected-browser-review.json | 93 +++++++ docs/evidence/2026-09-11-recorded-desktop.png | Bin 0 -> 138643 bytes docs/evidence/2026-09-11-review-desktop.png | Bin 0 -> 147186 bytes docs/evidence/2026-09-11-review-mobile.png | Bin 0 -> 144698 bytes docs/flex-auth-review-contract.md | 104 +++++++ docs/protected-browser-review.md | 166 ++++++++++++ informed_decision/approval_http.py | 8 +- informed_decision/http_transport.py | 11 +- informed_decision/memo.py | 6 +- informed_decision/oidc.py | 3 +- informed_decision/policy.py | 184 +++++++++++++ informed_decision/review.py | 176 ++++++++++++ informed_decision/runtime.py | 130 +++++++++ informed_decision/store.py | 92 ++++++- informed_decision/ui.py | 122 +++++++++ informed_decision/web.py | 148 ++++++++-- pyproject.toml | 2 +- tests/browser_fixture.py | 116 ++++++++ tests/browser_review.mjs | 117 ++++++++ tests/fixtures/review-policy/fixtures.json | 58 ++++ tests/fixtures/review-policy/pin.json | 6 + tests/fixtures/review-policy/policy.md | 50 ++++ tests/fixtures/review-policy/registry.json | 18 ++ tests/review_components.py | 79 ++++++ tests/test_browser_auth.py | 8 +- tests/test_http_transport.py | 8 + tests/test_policy_client.py | 114 ++++++++ tests/test_review_component.py | 76 ++++++ tests/test_review_controller.py | 254 ++++++++++++++++++ tests/test_review_runtime.py | 82 ++++++ ...ounding-specs-and-approver-ui-ownership.md | 46 +++- 35 files changed, 2381 insertions(+), 83 deletions(-) create mode 100644 docs/evidence/2026-09-11-browser-result.json create mode 100644 docs/evidence/2026-09-11-protected-browser-review.json create mode 100644 docs/evidence/2026-09-11-recorded-desktop.png create mode 100644 docs/evidence/2026-09-11-review-desktop.png create mode 100644 docs/evidence/2026-09-11-review-mobile.png create mode 100644 docs/flex-auth-review-contract.md create mode 100644 docs/protected-browser-review.md create mode 100644 informed_decision/policy.py create mode 100644 informed_decision/review.py create mode 100644 informed_decision/runtime.py create mode 100644 informed_decision/ui.py create mode 100644 tests/browser_fixture.py create mode 100644 tests/browser_review.mjs create mode 100644 tests/fixtures/review-policy/fixtures.json create mode 100644 tests/fixtures/review-policy/pin.json create mode 100644 tests/fixtures/review-policy/policy.md create mode 100644 tests/fixtures/review-policy/registry.json create mode 100644 tests/review_components.py create mode 100644 tests/test_policy_client.py create mode 100644 tests/test_review_component.py create mode 100644 tests/test_review_controller.py create mode 100644 tests/test_review_runtime.py diff --git a/SCOPE.md b/SCOPE.md index 12f3857..c9f3b77 100644 --- a/SCOPE.md +++ b/SCOPE.md @@ -4,13 +4,14 @@ > direction belongs in `INTENT.md`; the current stage belongs in `GOAL.md`; > current work and gates belong in `workplans/`. -## Status — 2026-09-10 +## Status — 2026-09-11 -**The domain core, browser sign-in shell, Approval Engine HTTP adapter, -durable evidence store and Audit Core delivery adapter are implemented. The approval surface is not deployed.** +**The protected browser review, policy consumer, Approval Engine adapter, +durable evidence store and scheduled Audit Core delivery are implemented. +The approval surface is not deployed.** -What exists and is tested (258 tests, including explicit checks against the -actual Approval Engine and Audit Core implementations with synthetic identities): +What exists and is tested (344 tests and 12 Chromium checks, including actual +Flex Auth, Approval Engine and Audit Core with synthetic identity/custody): - layer and stance declarations — `layer.yaml`, `pep-stance.yaml`, `informed_decision/stance.py`, with published-equals-shipped asserted; @@ -26,24 +27,30 @@ actual Approval Engine and Audit Core implementations with synthetic identities) profile, bounded server-side sessions, protected cookies and CSRF sign-out; - `approval_http.py` and `http_transport.py` — get-by-id and human-entry transport, declared-control checks, real entry correlation, no consume route - or automatic mutation retry. This adapter has no public browser mutation route; + or automatic mutation retry. Protected browser actions use this adapter; - `store.py` / `records.py` — private durable packet/memo/presentation/ disposition storage, append-only acknowledgments, transactional outbox and submission correlation, safe reservation and backup/restore; - `audit.py` — idempotent Audit Core delivery, bounded retry/blocked states, explicit per-class count/time-basis comparison. Heartbeats are generated - without hiding undelivered evidence; host scheduling remains pending. + without hiding undelivered evidence; +- `policy.py` / `review.py` / `ui.py` — fresh entitlement before rendering and + actions, exact response pins, immutable observations, required highlights, + accept/return/discuss/decline and visible original/unresolved entry state; +- `runtime.py` — explicit owner configuration, rotating credential-file readers, + 30-second audit draining, heartbeat/reconciliation and delivery readiness. -Remaining: admitted policy package/caller and entitlement-before-render -integration, L3 review/acknowledgment/binding UI, policy observation persistence, -visible unresolved-entry recovery, scheduled independent audit delivery and -native deployment/custody proof. The legacy `evidence.Outbox` remains an +Remaining: native policy package/caller/assignment admission, registered human +login and deployed binding, independent production audit custody, packaging, +backup/restore and operator recovery admission. The legacy `evidence.Outbox` remains an in-memory test double; the new `Store` supplies durable atomicity. Browser sessions are ephemeral, with no approval state. -`/readyz` returns 503 until the protected approval path is connected. -The origin `decisions.coulomb.social` still serves an nginx placeholder. +Without owner runtime configuration `/readyz` returns 503. With it, readiness +requires recent audit delivery health; it does not assert native admission. +The origin's last observed deployment was an nginx placeholder on 2026-09-10. See [browser-authentication.md](docs/browser-authentication.md) and -[durable-review-evidence.md](docs/durable-review-evidence.md). +[durable-review-evidence.md](docs/durable-review-evidence.md) and +[protected-browser-review.md](docs/protected-browser-review.md). `INFD-WP-0001-T08` remains open for the live end-to-end proof, which is gated on `APPROVAL-WP-0002-T01` and a deployed `approval-engine`. @@ -91,7 +98,7 @@ trail. - The unreachable-engine stance map, built to v0.8 obligation 3, with published-equals-shipped asserted by test (`tests/test_layer_conformance.py`). -**Built as domain operations with durable custody; protected HTTP integration remains:** +**Built with durable custody and protected HTTP integration:** - The presentation record: what was rendered, to whom, when, in which locale and UI release. @@ -102,10 +109,13 @@ trail. - The browser-facing OIDC client: authorization-code + S256 PKCE against `key-cape`, scopes `[openid, approval:read, approval:approve]`. +- An L3 approver surface calling `approval-engine`'s approval-entry mutation. + **Specified, not built:** -- An L3 approver surface calling `approval-engine`'s approval-entry mutation. - The evidence bundle as an offline-verifiable export. +- German browser acceptance and the broader step/awareness UI. The current + browser profile refuses unsupported locale/step/level rather than overstating it. ## Out of Scope diff --git a/docs/browser-authentication.md b/docs/browser-authentication.md index 766fb21..f2b7c65 100644 --- a/docs/browser-authentication.md +++ b/docs/browser-authentication.md @@ -1,7 +1,8 @@ # Browser authentication and Approval Engine transport -Implemented under `INFD-WP-0001-T08`. The service currently supplies sign-in and -sign-out. It does not yet render memos or expose an approval-entry route. +Implemented under `INFD-WP-0001-T08`. The service supplies sign-in and sign-out; +explicit owner configuration enables the protected memo and human-response +routes described in [protected-browser-review.md](protected-browser-review.md). Install and exercise from the repository: @@ -25,8 +26,9 @@ The entrypoint listens on `127.0.0.1:8080` for a local reverse proxy. The public origin/callback is fixed at `https://decisions.coulomb.social/auth/callback`; Host, forwarded headers and return URLs cannot replace it. A development HTTP listener does not replace this HTTPS callback registration. Deployment and -registration remain pending. `/healthz` checks this process; `/readyz` returns -503 because the protected approval path is incomplete. +registration rollout remain pending. `/healthz` checks this process; `/readyz` +returns 503 without owner review configuration and recent audit delivery health. +Readiness is not a declaration of native policy/login/custody admission. ## Identity boundary @@ -84,7 +86,7 @@ POST bodies are empty objects: Approval Engine derives identity and evidence from its verified token and discards caller content. The adapter extracts `(approval_id, subject_id, approved_at)` from the matching actual human entry, never `updated_at` or local time. A `409 duplicate_approver` triggers a GET of -that original entry and returns `duplicate=True`. The eventual UI must preserve +that original entry and returns `duplicate=True`. The controller preserves the original presentation correlation; it cannot attach a new presentation to an old entry just because a duplicate exists. Other conflicts remain refusals. @@ -93,17 +95,12 @@ There is no automatic POST retry. Durable disposition processing must reconcile the current engine entry and its correlation before reporting success or offering a retry. A failed dependency must never be recorded as a human decline. -The client is an internal seam, not a sufficient binding flow. Before a browser -route can call it, T08 must connect: +The client is an internal seam. `review.py` now connects fresh PDP entitlement, +durable presentations, actor/version/acknowledgment guards, local responses, +the transactional outbox and the original-entry recovery rules. `runtime.py` +schedules bounded delivery and reconciliation. No consume route exists. -1. The access-engine entitlement decision before rendering a named memo. -2. Wire the durable presentation/version, actor match and required acknowledgments. -3. Wire persisted dispositions and the transactional outbox, including return/discuss. -4. Independent audit custody/delivery and entry-correlation reconciliation. -5. Native registered KeyCape login and the deployed Approval Engine proof. - -The browser currently exposes no memo or entry route and no consume capability. -The legacy `evidence.Outbox` is an in-memory test double. `Store` now supplies -durable atomic state/evidence, and `audit.py` supplies delivery to the real -receiver contract; see [durable-review-evidence.md](durable-review-evidence.md). -Native custody, policy/controller integration and live admission stay in T08. +The legacy `evidence.Outbox` is an in-memory test double; `Store` supplies +durable atomic state/evidence. See [durable-review-evidence.md](durable-review-evidence.md). +Native policy/caller assignment, registered human login, deployment and +independent custody remain in T08. Disposable browser success does not close them. diff --git a/docs/durable-review-evidence.md b/docs/durable-review-evidence.md index 7242c43..301a63b 100644 --- a/docs/durable-review-evidence.md +++ b/docs/durable-review-evidence.md @@ -1,9 +1,10 @@ # Durable review evidence and audit delivery Implemented under `INFD-WP-0001-T08`. `store.py` replaces the domain tests' -in-memory outbox with a persistent internal store. It does not expose a browser -route, decide entitlement, or authorize an approval entry. `web.py` still has -no memo/entry routes and `/readyz` remains 503. +in-memory outbox with a persistent internal store. `review.py` and `web.py` now +connect it to the protected browser flow; the store itself never decides +entitlement. See [protected-browser-review.md](protected-browser-review.md) +for configuration, policy observations, schema v2 migration and readiness. ## Storage and recovery @@ -56,7 +57,7 @@ These are internal delivery records, not cached approval validity: 1. Record the human's accept intent and its evidence before an engine POST. 2. The controller must obtain a fresh applicable access-engine decision, verify the session and compare the memo's carried digest with the live approval. - **That controller/policy integration is still pending.** + `review.py` supplies these checks and persists the exact observation before use. 3. `begin_submission` atomically reserves one attempt. A stale presentation cannot start; a memo cannot be revised while its entry attempt is in flight or unresolved. Network I/O happens outside the SQLite transaction. @@ -76,7 +77,8 @@ does not prove which presentation caused it. The store does not attach it to the latest view or automatically POST again. A crash after reservation likewise does not reopen dispatch. The records remain visible for explicit controller/ operator recovery; no recovery path in this slice fabricates that missing link. -The remaining T08 controller must handle this state visibly before shipping. +The controller and UI now expose this state and remove the submission button; +native operator recovery admission remains in T08. ## Audit Core contract @@ -103,8 +105,9 @@ and auditor identities. That is contract proof, not production custody proof. Per-class heartbeat generation uses the existing 86,400-second declarations. It does not emit “nothing to report” for a class with undelivered evidence. -The host must schedule heartbeat generation, bounded draining and monitoring; -no background service or cadence is installed by this source change. +The configured `AuditPump` schedules 30-second ticks, bounded draining and +five-minute reconciliation. The deployment owner must admit its private +storage, credentials and monitoring; no running service was installed here. ## Reconciliation has two time bases @@ -127,18 +130,20 @@ The GH-DEC-2026-014 commitment-only limitation remains. ```sh INFD_APPROVAL_ENGINE_SOURCE=/home/worsch/approval-engine \ INFD_AUDIT_CORE_SOURCE=/home/worsch/audit-core \ +INFD_FLEX_AUTH_BINARY=/absolute/path/to/flex-auth \ uv run python -m pytest -q ``` -258 tests pass: 52 added tests cover transactional rollback, process death, +The prior 258-test milestone added 52 tests for transactional rollback, process death, restore, actor/version/ack guards, concurrent clicks, original correlation, ambiguous submissions, audit retry/refusal and actual receiver contracts. The opt-in suites use the actual Approval Engine and Audit Core implementations -with synthetic identity/custody. They make no policy decision and spend nothing. +with synthetic identity/custody. The current 344-test suite also exercises the +actual Flex Auth HTTP server; 12 Chromium checks cover the complete disposable +browser flow. No native credential or paid provider is used. -Remaining under T08: an admitted PDP package/caller and exact read/bind request, -protected review/ack/accept/return/discuss routes, durable policy observations, -visible unresolved-entry recovery, scheduled audit delivery/reconciliation, -native registered human login and deployed-engine/custody proof. No Informed +Remaining under T08: native PDP package/caller/assignment admission against the +[exact consumer contract](flex-auth-review-contract.md), registered human login, +deployed-engine/custody proof and operator recovery/backup admission. No Informed Decision policy package or registration was found in the checked Flex Auth examples, registry and docs at `88b3543`; do not substitute a local allow rule. diff --git a/docs/evidence/2026-09-11-browser-result.json b/docs/evidence/2026-09-11-browser-result.json new file mode 100644 index 0000000..6350d02 --- /dev/null +++ b/docs/evidence/2026-09-11-browser-result.json @@ -0,0 +1,81 @@ +{ + "fixture_only": true, + "browser": "Chromium", + "checks_passed": 12, + "checks": [ + "PKCE callback and secure browser session", + "Entitled page escapes memo and packet markup", + "Server refuses bypass of missing acknowledgments", + "Explicit acknowledgment unlocks the form", + "Complete attachment download stays behind entitlement", + "Return records a memo response without an engine entry", + "Mobile review fits the viewport", + "One actual approval entry, stable on browser reload", + "Audit receiver holds all commitments; unsigned decision gap retained", + "Real workload caller refusal hides review content", + "Sign-out clears the session; all forms carry the exact origin", + "No page errors or injected script execution" + ], + "fixture_transport": "real HTTPS on ephemeral ports; synthetic issuer and TokenReview", + "native_human_login_proven": false, + "native_policy_admitted": false, + "factory_attempts": 0, + "paid_model_calls": 0, + "final_component_state": { + "entries": 1, + "intents": [ + { + "disposition_id": "disp-8ad75d50-1222-4512-a74b-253a15e7d159", + "approval_id": "fixture", + "subject": "human-fixture", + "state": "confirmed", + "attempt": "980d4cd4-753e-40f7-8026-f21923a340fd", + "approved_at": "2026-09-10T22:29:05+00:00", + "presentation_id": "pres-5673438f-ad6c-4ce1-bf26-edfc9211e476", + "operation_id": "c60eaa0c-b627-4f59-8e84-d35fc69d4963" + } + ], + "outbox_states": [ + "delivered", + "delivered", + "delivered", + "delivered", + "delivered", + "delivered", + "delivered", + "delivered", + "delivered" + ], + "policy_outcomes": [ + "allow", + "allow", + "allow", + "allow", + "allow", + "allow", + "allow", + "allow", + "allow", + "allow", + "allow", + "caller_refused" + ], + "decision_attributable": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "entry_posts": 1, + "consume_calls": 0, + "tokenreviews": 12 + } +} diff --git a/docs/evidence/2026-09-11-protected-browser-review.json b/docs/evidence/2026-09-11-protected-browser-review.json new file mode 100644 index 0000000..3eb46e1 --- /dev/null +++ b/docs/evidence/2026-09-11-protected-browser-review.json @@ -0,0 +1,93 @@ +{ + "schema": "informed-decision.protected-browser-review.v1", + "observed_at": "2026-09-10T22:29:50.412419+00:00", + "base_commit": "2cc32168acedb19698fa196911385745fbf897b1", + "contract_source_commits": { + "approval-engine": "a0a602976eef818f36dde35f76f7f2e589bd051b", + "audit-core": "5c0ad522fb36092aa7ec2e8d72f63a5a91853b5b", + "flex-auth": "88b354377c8e26b162f1234e673072f1c06dcd89", + "key-cape": "139994cfac28ff97163ce4bf263f2bb035bbe0a7" + }, + "source_task": "INFD-WP-0001-T08", + "source_task_status": "progress", + "verification": { + "command": "INFD_APPROVAL_ENGINE_SOURCE=/home/worsch/approval-engine INFD_AUDIT_CORE_SOURCE=/home/worsch/audit-core INFD_FLEX_AUTH_BINARY= make check", + "tests_passed": 344, + "tests_failed": 0, + "tests_skipped": 0, + "new_tests": 86, + "schema_json_valid": true, + "flex_binary_sha256": "c7a1f35aa2cd7cf2733272923ace7fc4b4e55171db4ef8f3d0d6629183dcf1fa", + "browser_checks_passed": 12, + "browser_receipt": "2026-09-11-browser-result.json", + "components": "actual Flex Auth HTTP server with caller enforcement and Approval Engine/Audit Core APIs; synthetic issuer, TokenReview, assignments and credentials" + }, + "implemented": [ + "fresh pinned PDP checks before render, download and each action, with separate workload caller", + "immutable policy observations and original act binding snapshot; decision_attributable remains false", + "English organizational approval UI with explicit acknowledgments and accept/return/discuss/decline", + "original confirmed entry and visible unresolved state; no automatic mutation retry", + "owner runtime configuration, rotating token file callbacks, scheduled bounded audit delivery and readiness", + "atomic SQLite schema v1-to-v2 upgrade; old UI-release/profile refusal" + ], + "browser_findings_fixed": [ + "no-referrer produced Origin:null on real form POST; same-origin pages preserve exact-origin CSRF checks" + ], + "component_findings_fixed": [ + "native caller plain-text 401/403 must remain caller_refused instead of policy_unavailable" + ], + "source_sha256": { + "SCOPE.md": "b4568fe033b443d66833d1501fd5b04e01c9d6e95b44bae9666134e914ae758a", + "docs/browser-authentication.md": "9354f8a95914cb353b93256df9e85c455bcf425107f507dd8f1ba6206026794a", + "docs/durable-review-evidence.md": "f7f4a15faa479f3a132120a6fae27837bd2673afda93df7dbd29e8171a7911d0", + "docs/evidence/2026-09-11-browser-result.json": "f405f5d11ae695a9ca8098f6c6a5f125042a62c3af9e87f21bc5e266b6f5a397", + "docs/evidence/2026-09-11-recorded-desktop.png": "89f6e5396094155f2b1e04599f0a2b2d040f4dce004afa4dda752f234eef566a", + "docs/evidence/2026-09-11-review-desktop.png": "e050eceb62cb389d516e4a889c67b1610df3f5539d04efdbafa4874700e90ca3", + "docs/evidence/2026-09-11-review-mobile.png": "3a0b5b1e37b3a54c4eb34688b04bb38b18181b94106b062150fc1b70aa4f3f8a", + "docs/flex-auth-review-contract.md": "3324b7b022fb5397d02520310bf43e0bfbff8c919e95ba9fecc94334dae8caf9", + "docs/protected-browser-review.md": "28f5666a795997db6b6483ab6c3e0c6dab4cc7df948e57f1e5d02e5c45968317", + "informed_decision/approval_http.py": "203f462ff78f1409f2f924d4723197fdd502087c7f6da319f46ffffce2a9d478", + "informed_decision/http_transport.py": "fc9c1fd05cc89120d70bfcdb4c60fe244b81c8054d21505df8cfa9c5a229f7bc", + "informed_decision/memo.py": "697058863a4e6de2c143a2433eaaf5e15e5e7375dc5459af6911b146567e8b5d", + "informed_decision/oidc.py": "35b37bae67968c2179b22af8151afe2981d5468debf4488771eaf3121b75e221", + "informed_decision/policy.py": "7bf814a8332ff054bf5f1f651d8816a408138b1f197b17da0abb7f87411e8812", + "informed_decision/review.py": "c2d2aa1cf48d10d85b3606acf2830ab22701c1274221e5e2760d29901adfd786", + "informed_decision/runtime.py": "6bc6a74657f526743cca6c6cdc0a86fff43d8282e0b867dc9288344636abe5eb", + "informed_decision/store.py": "7a58b36d409cb4161b65985545e13573a5196779b4c6e95ca03ce45c6fada808", + "informed_decision/ui.py": "69fb7fc1794c8842f42e7f0f5a261c4cf64176053ef0a532db46ee6566621219", + "informed_decision/web.py": "00300dc25af3e272db7de748c255f8b1aa0b0182a54f2573e874ed5865da0fd8", + "pyproject.toml": "26e77b2da1ce7d6f1878fb6ca46fdb2acebbad0f6e17f5528d5a1f1d01defe42", + "tests/browser_fixture.py": "31feaf6e3351d9560498ffac2f06cae602f0762a01474bcff2c919c33db3cfcf", + "tests/browser_review.mjs": "0285f2cff70e5d569f31c7e99c8b3a5b5ce98b3eb51c2203de3f2e958f2ac684", + "tests/fixtures/review-policy/fixtures.json": "4c84a411383bfdbd32e15763ce2e934eefec570d93bc68389d6c81d11f3d4243", + "tests/fixtures/review-policy/pin.json": "91c77e4daa0a1c8c394e14e6b0c9d9c493ff21389fefa592656aa363c1104611", + "tests/fixtures/review-policy/policy.md": "cd0a5a79db840e1dad7cabece3976d1683387c71d8a5507476f49b421d180c24", + "tests/fixtures/review-policy/registry.json": "cd358b139f5987dcd0b4c8ac9fffee7d86951b15a22216f6ec21240a51ec41cf", + "tests/review_components.py": "415ef229aedd4def7af737274b4d341ddf4f40a912a8103a017d901b2cdecf2e", + "tests/test_browser_auth.py": "c70e24495d2f968c0a48e4082032666b4f4325f60d7e736c5a27d0fb99ef0f33", + "tests/test_http_transport.py": "d3dcf8051a7acfd152a583f7a865327ae60d880b9b07abc5f5fa9c693e95354e", + "tests/test_policy_client.py": "8ab6f8a06e8b28b4933e0d8d23650c9781a5365343fc4926080c7c2d5e2962ed", + "tests/test_review_component.py": "cd28100fbc66b64703f065c2a3638486043bee5e3e4a6e75de19eb58235f0d47", + "tests/test_review_controller.py": "df3ddfb60dd06728ee871225df96da13462d69f648f214a5ea1b040388c78d53", + "tests/test_review_runtime.py": "e230d9f590b86675b4d42f978cfd2bc769de404b3f5ad510a400ff2fcec62bbd", + "workplans/INFD-WP-0001-founding-specs-and-approver-ui-ownership.md": "49f68a11c301b436655144d4819e827d0ec036fdb2b4463d2679ce8c36cc3b3a" + }, + "limits": [ + "fixture-only policy; native caller/package/assignment admission pending", + "unsigned decisions remain unattributable under GH-DEC-2026-010 / FLEX-WP-0024", + "no native registration rollout, human login, deployment or audit custody proof", + "English organizational approve profile only; German and wider product acceptance remain T08", + "uncertain entry causation remains unresolved; no reset/retry shortcut", + "audit accepted_at and source occurred_at counts do not prove completeness or reconstructability", + "production packaging, private state, backup/restore and recovery admission pending" + ], + "browser_routes_implemented": true, + "native_policy_admitted": false, + "native_human_login_proven": false, + "production_audit_custody_proven": false, + "deployed": false, + "factory_attempts": 0, + "paid_model_calls": 0, + "remaining_live_task": "INFD-WP-0001-T08", + "factory_gate_task": "HFACT-WP-0001-T03" +} diff --git a/docs/evidence/2026-09-11-recorded-desktop.png b/docs/evidence/2026-09-11-recorded-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..ac148beff3cc92cb5fccce8769d24f8b4fc23227 GIT binary patch literal 138643 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

-nt?DEHFB9S(jkn~O z8{D}jImb^^+#I*X&){w)iz+torIbo%O^Ir#$gQo?Z==S0i?n-1;VBPhwhcAr+;aJ- zI{1PA12zfv0?!KPdYy@z2NC(*U1v0LdaU#542Ud#uE4KK9-Xp`DL7l>NBp_YsooFD z^1X(er)G&rC0U8wAbU`@OiP5o@y3QiaV94I9Rc4Xvr+59eIuIb43ZHyJsd>v(zEEA+p!frvf2x*=BINjQD?!T+kR9`Rxx7K zUzW!Yh$~~cysS*M+Ob-R3U0^KcB|~p3y1sR*b>^tHAMS5>rG~d8SifFd3C&6*Rphl zZfZLtplpXm|qcbrcWn=-Ro-EPU+R2p*GiL^O2!&hFsXGtkWc8WouI zfU|zsk1G54Q2bfT_c#*qqbqWdn3Y0$Dc0w<~BT}8!# z5yqC>EsMMtm{Ft?9_h-0f43X9%CCQC&)YM#3D*6f(TRtPYL=JVLK_9xc3!xcwDOM2 zc1@*=x!FlY?)vsL!!#N^;g<c7)v_yh#TM z)_LBse%M)t5|GscOa=3`i#a`#`tBk*?Jq^_-EO*!*_b8H^|;7p^xZ0DFOg=`a>zvn z8Ai+mpoa7PZG$1Z)jUS)GzNF|&TA1pG&c@aUhQ^Ab)cg{oQrVRvIBt0qHt@#4A)p0 zLT&be)<_oXk`dGcASt(Ra9Z1A z4LeuI>a332SDUXq$1?H}s`S0B%V{2dU=e2r)-M%-hr-udH6VX2Z^Mpk!TFx+ z;?L^Ic(;E3AD*NN?V@FZT4q4KHJ+K?uJL+$oehUa8 z9lJU29gF&s7D-Urt;`>|D0wJq_8EeWphpIKM0IGc@^? zaPo^*Qbv55$(NO4$Z&fzvalFY6*{Pvp!SG~@tgq4x-N zzeVo7Z&e&VN-_h>0I692p{uUv>u!91fucHr5&!1=o z#P!@~k~CnzRVh`OhepFR@J(TnQS-_v*Jox}ym*5}Kx@W*lZ{~&vUQ_Cd7)-Rr*9dv z&aA|3;_U5cu3qstPSbO#eDR#wWCH8gId?hTO0oez*U7IAGu?Z9EKMH9&l^X^`>CbL zSDpn0hj{h$P&6A(lClv-jnKxn0>#^9NkX1gp1aSIC#9#%5#k+jBdIDHPA%rKqu__E zw&Z|pGK@H{xj-4K%=Z{)6h=Ez=~sDvT&V`!0z4cdxoq?1W$)W1$r}8vfBPxUy{-=Y zsSPe#tfRb9$Ng#HH{vW!CHzaBQ#tn7#@a+j#gvGAwONGQf%NssIljlRgKmXJyVgSKUu*iUbqhhlf-O`Z=SyrgU5u@yG0Jl`% z)Pf-(-X%O?+pSbJd-(8U&rXIpr2s$qgwyC?vN$65*0guq@0h4$cA)=_%Ea`>JEH*_ z@h8&-jxuol&W!F{As4I_=OOvOm$|J6<{`OlyB%RHDspD?y}=!+e;;8;SV^gPtM|Rc z$LRs>zJ=bZy)s~vlx|=~IloQuE18QV*ZLxlVzd(A?&Wd>S_)4g!@o9{0SH z6hZRIBlA`euJ^`NVyU63zfYuXI28uVem_;o;wJ8Wt1@^VIWV^I?r}=Q4lENFp{*mz z1xqidpIWFXYWdxylar-4ssF`LIUV$Hp>v&AtNmZ$QOmM6J{@7RMLX9pNMvI#eH%QEzfII&rFR5=pa=YOgvR*KCc1zzA zu=%DzxY%k}+WLAEo(9nMX%kQXV#TO9pp3mw!Qz3 z=;W3)<=KBJbr!h&dDR3Gc+?vBgTQT%Vt-giKzk-;Gn)8ijH9hHNPY5q-=KAw_n6W)v)gK& zwpM*jv4*bzr_Y4(+*s+3Gg_W?_GL(=2i-7(@>8i+%6w)0A7EYJgYc5d7(gfC1Ho+~ zzIoKy93^Y~EALXp`IM84ckY><3-c?w+U>K0E$1i6;?JX`V$W9}_gjrXO(%_>^jtoL z4}AW!8j4CUmsJ#dCYgHf0krG)R4EXrP_p-OXXQIN|Go5t;Yk6k%7v|}4!=3F+lS&8 zYt|Qc;4c3!TlQjy%}_c?#=LzZ`T}7E=V;39ourJVGQ^8fA4R(|H~U~;^Utkc4-TIO zKZ$@+fWw&jv1Co(=x^)}X%Y5aQI4|NYOAn)+bicRqr^i7$vZNoC;9OY%n#fMVarOO z;Ag9g;-Q>+dvx2D_7@i~6_?cYrDzB7o zyQn-hl8yWt({~*p!_o_R>2}suGKhTVx3oVl-uwW{H(STayQa;4&Hw<Vq(mP z7IFE7AKnYQf#W zSqi_*%Mbe^E}G>1UL-MeQRj2H0X2;qiCWV<6mG71;Ta;+9UK-Y`8cF_M9{TNN5pSo zC>u)9!!M9)%aN}oK1HqD$%V4`ZDX>HdCRC=xJY_QY{=DJKL4x@11Nb(1LK16(0ZGpF7=Ke4bfByjH=OKS@>#Oi3A zoqqYUDb4)wgUF}0y$=W0I=5LF=~9XiZ(k-|H>Tw;yx5!5s1ClKk01czjB0*J&sAmT zDquSBxzK+4e#P(JUCFryX%TQ|_JQ@=@O9Ch^WSWZ6y^H)d_6`KI9Kgy&Y!btob+-I zW=T$WH*#ecy=4OeZNV8!6eHO4RaDV zBX=urjvLb4M6jK=EekpQ2!)qMm(rtQ-FZv>Rwktxw{C~;Q!@qSU={LVFzc5o$PdZ( z>wxmlgXg?WmCNb#owc|A9aj-Kf`RpaRr)AIKIJ}iRKEn;oPyQ;tNNzI4xp3wr+e`k z0A0SwlB}_x#aR}gFbo;o>^CGs%bSNfc?`x8?<1nWb%z$9jbttwDxpft=8wBPcTZm9 zRu_fyg^}97;VZd0t*mt$88F|wt({nQo#rgG^k!U~uzOoS60%k!5J1?yTx9F5(zE%VLyx%|clgQf8iaUumgc+ps z^3d^;S&^e^pj0ahgySdZm_K^$%&SZC4e%Rcqu`#19G|WbnG^rd!Dn zpkYft|L1t*l34A@$I7IrO3#~S4JrdYS%fxNN4TEZlf!_b+#xhX+270ZxzUQeP}`>2 zV!y`GvlJ&1^-I?HO-YDqBm}11cfxk~ zx+e4u+<3~_1i9r%V%2!5!67BAg%YoE5q-?xdJ#WF0KL_9?{0^R1xlLSYL^qYpECVg zIn4cqRzTG7ZGeh-xy)B048LVa<$G9jl4#b+KSL&#Cs-7Mvy)YMZ^7q3hSN+#+}M8- zOmq#+rswtoolMS(hg?sUy4=EU*z7O1sd6YU(s(aMGde|M?&Hlb1q&ZrQfH{Yb#Rz? zSS1&tego48Wn-hYfL89sd)d$$sF)TUsHtA7ki9M`;2q{{`!Pbw)#dE<`zadQzq>{wJiU1(eZsES1v4%Of!evaxz}rd;L_rgaEnB=ceCiw2O{A=^o@WsqQ#@Ihs1>=X4QGIj&Uea+ZVqQxn6falb2_OhVl4qf z=2;?A>lQy&_u;u32%(7xyckGoAYJT>DYEZnC4j~w5Y_M(p(x_fm+MI{J$}v#%%&*p zsJUj)ZFxA)uNZ5WtSLT~O>5NPhy57QoQF&laGgA59!fuh>c~d#m2x;A;!a&%SmMfR z>0wrfjZxz0|6O%J$ygdEvUIiMy)P+=U=f+~aUr>Pu$_qhAs#LC92?7j^e!u-pp@A% z!nt52X>J6&;AeSdMQxaZ{8EQ+Bll|P;;5bg7kRS|0*$~6zMfp2e;Mq6UnNUl*qTW5 zhIRBSXT(H3&RSJF&=a(r?(BJP#z!gsbyDvqGaYKmy2rhSFA1aHw~4W#r9zQCldFF`Gql z$@#;yEi*+3iZr3He3(6m4+=bpG^F#Z)37ImclSndOrl<0D@IB@fmmMXm#?!8iXG=N z`Cdo7Ki1tD%_jv4CNXMcs1Mzk2Ygb+-2+aBGB zFEgUcLVO?4(U32924tFuti)t|WJVI4wD;2ObRm<)6%~1R#;rX@j@o@5G z2QOUT_C&=<>XB6U;78ltZ2C8pHZlpD2!ilBm}{pI^Fgy$MA_X~SRn56YE~JFg8Xew z?`BK6HE&f8QajN$_UcGP>z6IdQS*Sf!5tYE#gq_i^0x%IVWG@&qm`FYg!ZZ7F${jX z1KS~+sUP+HSXLwX=L012-ixGYkH%9)`Zew@3|Olgew>9}6FGLP)3AaLY@>3Tii)h> zZ+x}u`>-Bpn>I-xu~7}RtW7vG^{AXo>iS-ciHQ!#xJx50HwWVPamp;$k%t|18bnhy zx!k$KZ5S)VqnQct23JvF)9&t>7tY|KAQbs}jq&0`ok@l%)A7vVvff)CL7o~~QMReU zxzsO^Brp+VZeQLD4h+XBa)`3ek2@l;k*Ftl@6vY}n$y_n@-oynAaDl2zw{njjFEJN z>z>SqIGfP}7;-F{iBc2`4BbVBNNtcnCQEO=?q-{70)EGy!?&nf77@fSe~xlHujTQV zk}NB7;d(}7#58AsjrhzoONY51A6Adc=;AfBRcKin)?7c)xNND{^>rfK0|eKh*)TsA zn$k{o#*2@?V`VR?OTy=pd^gGlU+#N%pNVkrQUryOeo3UK5}dQ=jDH?lF6eNap1C5q zAFv3Zi^h;LYd|=PH*vQJ(ON*Jr23}oz{H7sV|%K5nc9CeDWb3js|6DhPiE?x0Zo;N z^knF>pe94X^b;DIB>dBA;wgtB{&jEyorQT{&gr6WWg>03`N7})^H(N4LVm-Ar*D}? zu_S;~Xj4hAksfa`VkLyV6;13_8D{EkP^r78p$!mruTA+NusN{TI|$L zd9lmtQ@+oj-5tbWt;o~lGb`$OO>qqZB>1tpEP2{u%y-)Q7=3v;%O%xhd!-(79uP&~ z+EpD9iaBXP`C4(h26>f0d8Y)kDyd3;^PIXxGJ;@&!=f-DW2%PFLuKL*pE?!)RF z_HFDU`>ZjolnceBc1HC~o2~4V;;muIzWx=7AW2uN#RZU^+3I$;)BdGe$Vsfh-_;$t zT?0zrMJ#unI=A1fOl^yj`%E7qoh=In7fQrHXPSWQg1RPb6>nVunQA~=PXPOQ6= zc!f{(NJYe`?7na>LB}sHV0nuw-~%Xk@UDX2aYcYS1Z~zPx~*p$oy2>Ch5&?&ho63g zU?*yU_@TeG@;6^+A7>H`z`!1zkRX{gy7*UmdPlT z-I)o~LtI;@68}c&ZJAR&Co^1##l_#+)oNk^Di%l=HG1Qaff8+tbbClu-T9@ON$PjF zg)C2Z2zUD;w{^&^8W2(+$BDD}=bphX+3!?$97c7}ycaN9ME7!X!?ekjdXzn_Q%?Ue zpVrE43L4ECD4J}-buCw+R1$AGsX4UU-2QsBH=O0h>07^e*|+K{Ol#S&TK&$d!c=yh zr86#?-g9A8ZQ_}R+6rv>8yMAaXa$Oy?VV3R=jyNaonIU-F;snXXMR|7I8w+IQj#&- z2zDJEt?9`;eJ=5+e!^jW3o}}lH&PYzmWmnkszS~trmrtlwqe#92bOu5_b5~4Y0nTXD13iYJ@6K;pS3ON@9zM zzHqwP?z(VV|3W+=a0NRQ&dxDeQg?+M>rZAiyMwsdMCm-bybWA~Q=C~j5efW@R-a$# z-R&tGtlSZaR9D{YcDrf$A5!wv>hD6hX?4x|D}EJ^2&c?7bWLl{l~e6fXN&2SFI==OBh*Ikh=~F;63_IE$Q#r zKBpg@Cbkkev3rx3mvG^;AN}o9U7H%#N;%Z47qBDz03P;X<*i)#a=kDwCff(RfXddS zmKkF!dQNta_!dcV_thFS`%f;}qQ!ezolq;HK^Hv&1fq_%IogY)Jc!tK=SshuO09y4 z*z%(mhpW5Ln#6I{A&K~zD!~t~F>RYmdq{MekM5`|*lU}t4(p0Fp#{F;yO0P2-tM+p zfqr!^)!Q=LwqEYYHf&E<9(c;i9cmhjf!)2-9RiI<;)ulwa;5RGbHdoS$im}gb~7?k z=I3_8Jz;6w#jEYv_t~a7KKtcraFWkPCi?!son6Y+<(qJCjUN@sAC~~FwqtxYXJk5x zlFvTTu%dr%T= zJa3sRo@sJ=I>?{6lCW%y%o$XZ;O%h3XG^sgE|5HG!)-hBue78T>E&p&nCrRlZyO5S zq2_MDSE4#H4a~5yW8kXC`#bi8oOfcds{2`!-?M@(tAZZ<7d^hZJzS<{98KH3IRIY$U$nhtSR8A&ElLy;f?Mza!QGusa3=)!;10pHA%YVi zxI=&d3D&qb5Hx7x-nhG4LvxF)wf6qLd-ivqbDw+e`;Vrox~l7atL7YYj4_|3=#J#k z*{w8ROi&5W5#|s*L18fi(flcwt0=>Ex9S&ZNj)eBL=x;SgsZ#zE0-o)vK9MpLldb4Epxf=PoqQU1ip0dPqI`+K~!heqG-P=dPFVGLH64JF>02B{$s4 zUyvm#1voT1pQe_)ZVU7N!h9b^`^}rSKSh0&fztB5PWy7#;{12luYJcA61`IVouEx! zp!aaUw`s|@uTSzNBti1Gps6PrL~OB7#cp^mTk^3YhW(AamPbya_MdGUraq;0lx{M! zx3Ph4^?MK+iFqtRqoidvji^gc(5A@1r%UYA@##1?~MKvU?v;7lAD(Qci#<_-_0g*WqOG4;v;hEI|@k5df?_Nq~^} z*LMF8?1nx?wM<+GdeJwN3KUP&(lamRj9qR&k7&>yF3y!D>hfH9Y_09ILyc|C2Phzo z3yaN*CWygyuZEJ2Zt?0h<~w>X@EA`6C=;G3JOx|fn_X=Dh4d z^%*WgyyG%F9oKQD3pVr`t5ZjZ@<=LPZplBpq2vXApj?y6De9Reaj^2D*r0TI35g)S z`TmDzv2(c-2W9?_WcO@bYI5JF*C+@@Kj$a>ZQ2Tlx)zT^+px^W#Y*kgHp)Ljh^p0J z22FNjni+~T8QXtL?_!=ijK8sqn>lrRyJPkAuX;a*cQWI8CJmn{{nES+?Fg&YIuR}% ztY~9cQP{)LAWx)oKB~Wsd7%8cm*27WLNUwi_8tLSv!`JbV|%)iO@G!6={R}ONI@@_ z*Y?>Y^Pba0+!cO#uLgB9iVRya4R@BL1?Y`|`iONOkyAY5Q?t1d}9S=>Uua zj)&JAST_?Y_LIH^pO!1QIX5ePBV?l+Sl8andD<22GOFBuSMq(q+FZ?HpKlL0zKm`x z88Wx!o(~a;D_#iR6Y>;t3TMxEHd36WkLYVRkJ12gfd*~8r09*Br1bBq_>==y=kRz{ z4d+AsqNE8RTIoNEjp)Sx?s~jvP=>0|*^5t+mf06CJ){pi_)Ie|3O-q&NH*}l{5i2o zv^A#IKdqOJUEyW)WVzOTelrK*Ue7W0WTtvmWy2Y=`&+qx7fZ~u>ia=2o~k3#A4?kT z$tte<)j5ED4vWpN(hSD4$MJFy;<9HECv%6fAC{`}CybHmosKj)QTkHQQ&nv`7NNUG zcedx^tA8PA0)7w?;nDu&(5ts@kb?lG<=leit&ryVJiG{!@&haUsj`oA&S0F|MoUc% zODJVE-`C=op05GwOtFx0@om}`$7sKoPV!V0(@~|>7R=7s(C2%rr^ol7%1>&J(M~Yu z>6*3q&zT5OE|AIC9|VUh*Uj-O>m^t7cE4^E{fS<~8FjJ8zi(F~p=Wh>iIy%z?)Ua2HSoz$2GX+3HS_qk- zRacdo*AARITJC}ssx>bT;871`@*hJ&W5{)&g)bnYiaW1CrRZD7D(Ut$p;tGXX8uin zYpan*N;AW3qq66SNX?1xKgBVR5Q0pr5CB;EO`vd1n`3{YM0zT7#%WYCdO;!{;_D>D>T+MxZbu*Uf{N#W@xk-0$ z=^a)U@J7-w7<(O{*SWqpEeG9=G>_L{9uFs{NHMydW2Ix%%1gKKLDRCbY-A`%Md#)k zQ7G7+K}c_(vg$TGKYG;y*(_nOraRlF5xK~Ty}(VDeDl^|c;JG>vN}#S-O^6~n+Ee^ z9x|%LjQQN?@}*<6oE`9c7f(zv9K<9j@7P<%V&HOT<)WgSaQNa2Y<$X}JrQ8ieIVxO z>2!z~wCr8O_^A2NB5%`vkBYDScPX0VGP$hl(WccA3s;33R;63w;HgxD&6ZCUKy%B` zLAx+633@J_v-rN4uKg!IP_HBjEXc$VKUHH)$)meos9@*)qB)@-WjsnU>?Js`dbA>G zP3kT*WH9Q=cuZ%+!jJ+ZPt7)t`;t(;nyRE|^xHyutlKI-$tcQld(T$EB8NfI+fq-^ zsM@{lV?Q6@T8uw|Ntb9%!NxGS{(8jEz3O(Vn^L==Yx>s3%9hQtbIdyUIfj(LaTCW| zvM>prX=`1OO{F|*&bSSr-Ds(h%xU0LwHPrX4W4F$;#_7~?E3xOx}G{pP>#5;Qr4|} zu*o7A|JAwp6KnXocI~AUJzdc`xqWk95vxG7d()4CTs7Op4YugV!Mo4SaW=$884B56 zzRYB|H&HlXC4+uCdufN|Hi!z_lE18n68Qbp>P(?^H}C<&smv9n_be>A!G$dtt4k7` z*V#p%!p`pfnjU43_4S0hB{NdyCGyp9>6W}a^qU>^on4Sz#hkcluU2P2SH1^vOq@3ak=N=L=JRV{(Ik$o} z(z~rkTx}>xM$&NmCgfQ06cyixK2MdsJ%bnp{qcRjBxY^{4u}TR^D`~@#Rz0bLqLrz zr7Ib%!-r3FxhqB@cv=4X5Z>8~uv84perUHS4k<8_knHS*YQpp0;-#byG-cQ%1E9lx zF^p~BMIZ5cOUy%J?y9gSPdRG1IK12_nZ<}E1s_tObya7yEGQzDJH&O|BvdfvnbGF+ z&ESKyh7r=u-Os_$S^;Z_e>2hX58K+a^H9GPlePpuqH21?irG05t9woqJS6kYoPp{; zlX^7mzWMm+^#!L>80+C?lVAFB+j~I8MsDLX3QSW~oZD7iXdrz7g4ZD;92rHn~X(o6>Y)f*SU##8u3?;)U|;7JK2L zBWAfxtMV1+d`)GjQMewapJmDBtE%5FXj+lRZg%)OM8=0Q{` z^naue=_b0{6mb3P9`mAfR0TBbb`Hp^HeH6^oRt`M>6pWU4OS$ut3?ucbLp7E^N;)a!|=?=l29m)4^a?&$Sg?UeVLJMmYL1*a3o3#FT6 zfV;7SX_hu;-ME1&Wye=y)fpYi5Z&dBlbmyy+)p+OHn8*j!;7%B8ivpX^5h%a85XXh z;*M)|<@Iv!oPDhbb{xi$@z~~m6)KwMwR7`0_0zd_f6vanTl^W}n^#gIsB)!k5_S2m zGVUR-A4q(#Bm$NWcZrK@-&Qub?&xL11KV`3?+qNg>W`{+tiD9O8#iY(mfbmP?3dvW z;+F|1O7KRjOF0|PE`RKOv-y3sg1tln;V?(d405Gjlz6=(j}vUoC=@^EKpay$=W^A$ zCdj*)pZ>r=@F=Y>yX7;NAHQB(DSN(Y%G%>N&)vQBz_MT(8s^qEacEjGqlT@Qj%sRu zMw|yYzwfb>u;5@yHgmF6>nkd~q6HSGZ^Z^LBS$ZZl4yXtFHerd zK8~vK==GQ8XtikXmX%l6ikmMoW4$MVDyIlu1k``eWPoTvD%PKNP#0WCn)v#AY6GMU zYnIhyR8nde4(o##@D@>$VAkPa(!+icuAv76r229uLzKAPvA>SzVo3BT6PV_I@0C?` zqkalpaT2M7R$u`Ac7TZ1#Ep-gnH%N~?UM*;!1-VaaIlkvi>|lB$1af;mZkTqA|OVuBtwp8Q-hKPOA9Lm5?q<&G77iZE%)o_ zY26eSOpOdCTSG3|dRAhC+l=6OwEBthKDaqYxGwn_$=glbtP*j6>Ajq{KBitqzp>++ zKj2>jai!zVuLpfUE4rQNiA`9Qu9$db7qGDxW0DOG^Pf?$?hLxF(>jQ0^Vh!_$chl$ zadTg_6b$~1agMRIHmuvp`F?eyAA6TLQ8o3|a?evB@?kK*y1bwcdUIB&(lwyT|H{d; zdbtLVBxsZVffPdAXp-NH%_Gl9;vs+?2un~ZD66Q12`8IvGGc^9>QgSUzU0Q@5CmkvZRVA^=u9ko6>A0xwTi z2K)N8!GVNY@k>Wq%SK+Or{~a!ParmiS92fnr5IWjH`ITO^$ngNhaNM%oiNWQ;2Bh=x*8`Oe+VoJAZ+qOx!=4I zQsgllo|2oIZVAbqs3Zcb%H2QjJ?J9^DC1?{E=+EDO&nG3;W4s9Hov&7_g_-ey~j8p zAk^ZqmWsy3;az6BZ-nQhE8pAf@a7pd1XwCd!n#i7Gx+itoGX%WO*jxl*=Ng4T|5?2 zvj#{Gt?gJmR+(OA+4&(qe*3#j5H=1Y^$v z$rLflHoHOii7F!I_nI($x$~e0eN~#ejU&HI5`G0S_`M6c&=$X1Btu9hgZ+0eO}jga z13Z;8-TrgY2=-f&J8Bq2*|VLGTP`$f@)qmiQ!lgItb!!_Zkd64-)}xVC^8Jy)KaT; zmxjzz_+8V#rn0w|LyH6m+#h4DUC--Q9G!v$x`o{kVV8_iQO&p<-@?*_k>8HInE=eW^ZFQhPF zk#dVWk+)O7eUqY^JTSgB!iU>j3d7C*d>XM}L1q_%+dYS-xwt!3epRi>yeD?85$lg?jB zp&Za0@IN@;!_}^>kMnn`_P7(;l@9XO@J~NAd=a&^Im^vK5E@O|BMLL}g%LR|e;P4z zGjp@cb=1`?=MN&hD)a7}$M8J6`2y?*B*z3~wy0ubGy3oWY;CKg@o5X%Md4u=&xiL> zu3!BPAgYNAc31D8ydjU&Kl~&kD^Adg41BEy=DB_pMNp_V(-EyFZov72qoo2J{Kv9- z;b&RQP9MW`wx%o76br(S4h_cHAN65cFqaxFhi9}M=t$64V< zh=+2411K>5oEFOe8STwq$3po(E$R8+I&8)d|!k`zG?eu2!# z{Q0lWW^TC;cXQ~4m4w>JY3Xkni_0yO`VuuS`}Z+3ug^;shic+?X71n2042Ojl`i%g zv9X(nC?HO{I{_ui!V~Ta9m4d3D1}TK5E>qH+3gn2FY2SD40WNAr9t;$Eu~^BwfiUs z_M9`gIpOgXtxW_33J>{-$FJm#KBkTihAN}rrtW6ev_YN zi|Zlod9Fo`W2(a}G3%mo-;wOTl@J-%wSnnjeqzZ4oK{o8@T%%vqw{UXk>)^d>un?W zyeYY=0XEJ5SwDlHcA9ZQA%$xM=}03%0up&2iA}nB_RvvklYeYa!Kl1W&vPX_$WR;? zuLRG83SPVBx7Zx3Av}j9D4r+iiBVBWe9FIzb(z)k24z9!$zNJIUrK@dnHyh)Z@n37 z)Jq*Ucf-AUa)-*;by6{_4KGh}^iH-W+#6|LdN4sUdg~h*_{3Yuug|vfZ*|R?Fs7~s zdfj1B40^;an91ePhMx!gsq?C7ePmCRL-0Y6RIZENb{MLU12^&(pVZzm`6(33Kjz=sePLMy<=bBYdN|=W`=4Z}% z9FJ7?LLF@9z4`-{==a|`q`&-%;sAw9?-U>EUA^71+ zECytx4dX-l%}@N1TO)c(q9*LN)fca(-Wyn7ZdWN_?>=a0{CmpKJN!U&b~(;J2V1V4 zMe1vLIj|a%!kyM~PGZg4uP361a23?DkuIC87S?Z0NXlr1bN;(J!lDs3K5tO(EmK?b zN-Nosi6h|G3Qm&Vt@IxH7WDBSWm&}?%Bb?A2 zUethi`|aJzK))XJKD)|2UF3t7>;Jlxda>&@h4$u3Cg{j^xpP%`Q`wcQ5j*!_68NQ% zk8fVCM{p&L;%!J>#D}%7T^8aqNl|kr?R>v{6`i|%gf5&gHFl;4 z(ODyLSiqkl&?aFE+Q(7ED%KakSapV{O#*s)(j2A}vGrC3Q0BUU zuQoj2Ocjug@{(Z>w}pYuw>}}8wqk~*P4(?tbCiOTGmwH4Ss;4P?pVzPO{C8GZ_(5A z;R4WnrnS3TVJ`a=hkw21d_L`pVOOzj#Dgo1fkB8rGpEaCvK!l=24 zKTUtYj>G8Ys)uMw-fh1$qDIBiu(ru8{G{XShQ~uK7#P{0vX7ZO9B%)Rt&k>R66csm z3wk-Q)Vr?Scs{hjaHH@r!ClNatEV?Jqt?s+tM=5B#KEA~`-=9BMs85I!vzo#iOgmu z@8>o5tZ3VPqu+BCmhUF*LPuvhEC%g@nEWDl%O}y+My_Lh*znYJYeyXpvvF=*6(Ez^ z6^+-usCeF2GJQowj}*X2ztHs6N;xNkPlioMNG81@f8;O-+3nJ5{`OaXCLQHPoVM)z zETX`b3cP)9R!H3?LQVl41V|jh`5CL@f}Uz+&Pn= zllatGvR^%1Th1t#nDBUYZUxO_&V5>#XkeF7rFuB3lp7D`Gwe-xF^&2`<`dlwdfHD$ znH+L1&YBm%-lgxYc_enEGFwER0d*8QLu3Wp62IQg)lrWX@Yzr_g(0rVic9fQ}tSyHOs^6OO47r7xA(g^Id8U&Zsmdhy?brSex65n7ihf0eRz$Y z78?4bYgGN`6*@4}KRnuM)`0J<&H-lgC@6|SAN&_9v@5M-xn2D?#Qyw$eQrTCLbJ_q z?+%Ovnlbp}61vnG+`{GV4*koR{V?2`4cO2V?LIOyAoFI&^1ec0!dV{T^Z8w!iv`UN z?x!F#!d~=nColu}K;$79>c^z$hdd@KD)MRG=4^nWU3i{71`ZxI<6nr(9L``}766kgMYegI;Gzc*n%(nm^}#~%W5GVS#ZTS<+QtBF zKHB2j^X1V{TJ8fA=I(=o01P(`%T7nV#dYA$HY28!ie=a}&SSEw6-X)UxMAw~cIC%2 z2~&AgDQkF($i1@l3bnJ6ujS}Xf0gN&+U$Tpx3GC*@JAT`lTSOcf!;hAZa#)R za~f~`g&|){+ih95o?LDe_r`TyAT|k|5;}e#M-*xj?irL7)~d}!H+coJ@kS}p+wfxX zZ|*xbCSc?3?R5++?2{vvTRUu4<46nVOGsG=_%dx+xa`lcT+XGK9#iL2k6 zEU9(vbWzwrik|U_v{v%Co!jzQVD{294lf^}+qBM~@`}j4F~~F+Z9SEL>i#W+&1&o{ zF5ka3RP1ZDkz&m{Ex7;-i2C={i_rx4a1qbS^OmO6Gt{LVT1_(Xsahut1=loq&BTzS zQl-eZ=IiUSvM zg}q9IX?1QjqUXGMRUA(|T%Uo=OKLoLr9x6tix3-h4MrxwI&OLWpWl~dr8CyH~S&5G- z8u7_M7Od*6uk4YZpt2^(Ez$Eos#R~ywxIlNNKWn|`I+eS6y|VIPu?-VkfD%+1DOw$ zf7^^4NOF>6JdJdmZSWZZ$pja@vXC(sM<*#YWi4zp{Zl|X4)2yj2-6-Yw!6K zO%!J37&I(KhDa)J9j+cQ{nQI{z=TT4>B3=7tUgHx_GX?<*XQC|ER?Mk>ja-8+KINK zm~#)eBv0&ibjm&T$9$&p*+kdyuU_)i)aqP=AJKc~tJC4+7b21JE7XUlc`_BE#&|qo z*_C}Zev_A9ZaT*vLA=8I0-Vtl;vmr**(PF}H&^ff5!0Q3*Zv(yb<9w4EDwQDZcO!4WzQU(zx&PW;sCj^ z_+JT_XSS6ve^xcm?qC!5BLaiit$r_xLK?Ei@<+_VZuWBoxrxm2tsl^$%6jbY%4;Gd zdMQI^)VecMc_~hlzNDd<+^~a~C1LMLwSqHc_wz=|X*;O_c=NH|!#qz2pEWhlZDxsJ5 z(&0{SdkxKflP`v$O9ytFhsn?LGN0k^qJxd+zXvh`C|?e_2~R+EQW96gm% z2+57;=xHWp`cPAqq?myzsLg29=$kpLr?YmhNuu+=7L!ZdH@(rJ?B zVYFEf(cjQXz8)Peubwth%!eiSnp&5_ z=!zNM9=#9!kW-Vt5zf^%`LO<+L_^BDBISz(Fe(2A-xfC$HEJ|GxODf(-e#0~`8qAw zQY$N1Uru0z-CMFbT$oF>zeQSeouL8#mx+{w;DV3FP2uah)eQXNT@FQGQDgW+*5AG|Uag>KdtqmE z9ag>c<7<4=S*5h9fx0?3zB31JyWv8Wak$UnuQ(cd0n*9x2j*UDWd--Rs1~rE;ZQ2b zg3?Sg87lT6qW&y(wei@nDYfeV1nc!c`HzwJJ_O$TD>oLAv(P-lEnI4ish}l>i;^ku zV`V;Qj*2{@jDmTc-Fu6uC?4$@yc}gkzh6TcfjH0}&*F$rKx=bm-}6ZGx>tf2sC=fn zb%;m1=_IHtE&!2~vUrpy#&e~;sg^>#2(Gn1Rdr-0 ze{)e@elE5r8uOKKJH0PKgk=V=K`J(F4&>8=Kk=G{`cW=%{H9&8m_5xQI)a5tNP9kL zX%V_EynJ`@i+^aRcW>c?k@4K?@CqpNrQtJPiy*1I)ZHE-BI{dqp@ZAW6C?lIng$y) zYn{+JD+8?g!nHGLyIch*DJSfne>3TT(0Adl>=xMhKU>e-9U2(_ z3V;0$Xi9$*frYTzOoKlPuf71tPBjsaj=!n9%$J*yVtRexbR=aQt?7rp<8aE+SV40?U`BZirhj5V8z-MH5dW zfoPlsd&eB!Jr@XVHx-}&QUct&;Cz47X2vMwPgE{Y{pl8FAPr;-C={Q7n4h%Pf4;Ae z%ni5`DCon~$LoCp7Uz#q{|@@QTfF)^5t%*s&C!wd z=X|Uz$hgn4Re-JNIH-VRCb;U)3rqWeq2~*91IU9uJi$I-e}8)nx-~s=Au|U)coYep zy*>TwhADn{gAMG9@&{?mCl~hUI_T`P37y#*E4-gLyn@O(>BPA^o32%}cUV2TuH`W^>Wp7^bQ*y(=1kc$+jWOd;B3Gf z@$M&6fi0xZD8VHc9Idm_gCO9mAy)5GTj4pJ7~yy=n7M%=J}K2ASCv+ifQKG-J?+(m zMHq7;n_+{k1Gj1R{Mb5jJ5X5R6CXLQ9+rnbtnZe(%XfxuTUhJJ5ffo|1y7(IU!xHv z_fS$|G5Rt)D_SRa+wK~)kF1-p+(ya@k2GENowPD5>>7IHRvGXQm)};(lH4>T76&^T zfjoXLHtojgjl1|v`rj&3QmOjIg4aguyl=M+$Ma~~%*rg^xK<7pou8ei^-irn6kd8( z$TvXA$}`5hX~aXNrAu42g2i9L{N3H%PUrE6XNC17+a&pr7>Wp=NW!0MAXBc*JH z%1}Vpq3yjMaEbA&iZR5NaBfXf?rUS)c5z#Ute5XsAxgKtH|~_G%*YCWoxQPt>+o~+ zxO(Z}tGR-OSNj_yQ;m^Q+k?*eS~OPHUB4sMDCxa(&T}^`2A-N~JTZ{o zZ@c=7+%ZFU7*1;$em%PM9>a51;ywE-weuzOMKLz<61Ky!rH=4C{mJ&LiDoYyB53MU zznd+EaD4u4R}AzGBCsKNOyfdiVmP`#DfKd)uEPVX?-qN&gvfvKs}tUpgVFwr5<`Vd zVA)6AbwLHjLHj1+AQ%ndI4|Jw^TItg`_??`^bf%J!?8=u0^siMqK$w|989fuv|u_c zm0XTVjJu0ja}5umVHHj_o%zZ2Cvg7rrx=Gljhdb-gLMdt@r;kgLmw*w`t#OKs7)W1 zAlAjW1^NhyIX<_iQDF2bc~%nF37@uVTI8G$ui0h2QrmwqGzQlqSo0lm)pI&;LdHt5 zNwl>Ed08=gr}#LkDQN8*#W3@ejx|?W*L%&hvyShfk}PAR5EB07dv@TOl!9)MTeh9t z4huVWXt2W>7V$oWNVqq$W{~w45NCA1gLtSS5`{!G)_%dh-Qm29pNU`rtu=*fgFXi%MDs*k z0+JnF@F7s!dG$Apsg#$H@fu>N(BM?uZL1)ABK)avUF;T~?-8uH*}-=|aSTUc2W=Op zoKXaX$O&lmGg(A#^_GOEK2w;!3*z1W zVP|1%%6OtraF|W3=CK=2Q-gX^p6o=F~?kzJQB>m;< zy*Zh{F0B|C^P)`Yd_mom6IMdgSGO$Q!4&{H`d2 zvQb{kQd}0kbcamEK8>A1aW$Zui;oWY*nfYL)x)1I!w3xp{nz}n*#?Doi(7Az9aD4h zz_Mx)pZG_mW4V!GJiL7F_x^Jgk@8wn!0v6A930g(Y6{WV?cclBLjOFiFm+hPY#xh* ze2j8o)8|i#GfVCd9^4|?CQ2T*e`0^Q4{vf>tqyIdIS@Rm#PFD9D(1#fFt{sw-~qPO zcS{)skF!QWIiGjqF|Kx{XQh|q3A7Sb^jgmoPSK*ZIFI$h0icMR z1Be(Z`NI$;^JjiC~9}oAmLiakO?$;0&{8qWIhRe>4 z&)kTep#uT##@&Enei_D6!Rn}RK6A6YstQ2c^&~qI1&BZ)qSky5^E)u-x5I!~2^bkT zfPjS&_hFNd*w<^6J5wLxAs`3?#zH>2($(T-auc_&qk;RPE|OjGmoN;l^uMcTOZw&tti{xNmi<$lH*p>z2&_VlFGFO;UVqGQR$+ z!szChP0L1PT+;IZ2&*c91R`jqm1xtBV0a7Ov7GH^o3Cw(b)hm0IxmA|(awnhfR++gD%*raZ z30@Duj`#d6H@gGUEV}dHKG!>ss?YAfWj!Nw*%T~Fw;oVd*pE7Va=4IVM)}vI!?9K; z$2g|^;{T(#{C(w|UM1gUSW|-EkHU8|^%7Ftqm?tk;DoZwV&V;mC^4Z|^~dyVdp3J@ zDd9fNaWQ2;{V`?j*^NWlBMtf$Sxo{Gv^t&)TtsJW%F`AY& z$CXI+<<`qY1NCkaEnSr8?E}d4(Zw0{vi)bxeyjB%V#DGe4%}xX3*JST?i}C68v-AC z4OAu>$bOHKB`Q|C??Y;eb)U7ZB&9FJ8M}da{9Emj^ug2pDo)a+$h6uEH@C#jF9>jz zEU-c^jDI{`2vUXm0M1=QOu zOgi7v9Trj#Fpgpa?Z1@2-w!kBNT0?8yhuFlgj5TSq~RHfwf#n*r%@HIBjZJfk6r86 zANmCLvS%bZK6SE;)%7{DDRGb&9}5V3q~v4qrP<)3`wBJX@@FBQ83f6fBay@8M>8n! z{Oe+L8-$3-mHR}Kt_U1xQ0nda+PoWqq(B;5rXXh60t3mI%qw|+MxU9QKG=LraP$Wn z*OQv~%ae2ni{rbs7|z~4MQU<-xkuorza8sM#G|96_cza9A?FrRxon96TEh=Os}&XW zw^mi#ylO9|5n@-Zc|+3r#h{W!QqvTxZ~5SYJKz@~HDV~wY1EVcK9|Da4N9?vt6xu; zN<^NC^syTZJ&lcVTDp(2F!8yO3n)1-dAH}m;c3tJSrYh~jquF&RP*q#zPkdP5B%OQ z6Lu|q2LoMjE+RVp4w8F+){eRxT_S7rtx5)yWhybkylGh@V<1F08d7pjb3}(TXz2~G zV40KUotK?WPRWOHf#hK>Yn*U`+%W?C>37Y$Kb`ujhg>JoD}D!>w4LsNIh`~rS$xka zu<9#Lu0vO9CwxW*_MO*>$NxxT;yWlBQ*1!(R+6qV2lPJS&IKOcq%ya}HcY=uXq%3B zBWJsb*M*wn)3!XB#>0P zb-DV{`RSbhm?Q9b0fW`tq~vr|8?wM3s~5v#r>HW74OC%3?to4R1B}Kxg1S^g^&Qb2CZAetrYc zDx*+<_pFck?hALGrX99^e!dpct%5$beHs-4Ee5Ajjz;wf!o*7A9->JFWEIKLMqg*| z0}3mLd}5P{ma20M!{hOibFpUqqr}$FT+0z*1yvq?5qI@d!Vg*1Jt|8z#a|z9k#;v< z&5RPdIeO5y8L}sj$Mihz5gdhCV7AS26t9jI$GLp#niLSL)cYpcGD^f38Nq7C7%g<% zNt6W_Z}pW^a<>jHp#nR)xy#kGI95SehYTQNUk+7rl1D7C<;j{rL#cud><&hP^pZ%2 zkTz3-B{enxg&o58-bS}YmGm-uPTJJNR30yH>? zblrwN@|(dbF7{t8Z{km{Zm3j0|HSON#HcIOos%W$huigq@P;Gc0fAHY=5Mi7t_f$pB0QoDp%&GVTXj-Jxcyr$4Eouyz$U9d!3|fne=iw?WlwY>sp;8IHAg$ zhqQ88KN~CoL5`A=Ovl*th-y}@ozxSX_@RTNS`UTOsItKf&Xnw_96(_~O46?(N?J%o zK6VLo>WI$c5adqZF9r`%15tkaWo83^q3sijsG$Pq=_Ttif3?X*@Fll+-U`0_WsnkY{OP~psN9Z9eLuTz2 z+?VfAoss?pFY|K6dq2P=rouF5W1EBoyT4sJ9DjZ&EXPibLFO3ZP`H=2r~}f>_+?1g z1NiE^I6Tcb=vu?z$3i)f1y;au3!wQfID;~R{z%8KTX=e`;hT|eSg^t@{fU?UWprM4 z;*Po3d1cnns?XZrqAvPH+1e8vUrUbmsUI;J_xaDf?*gw^IJEG+)Z+)M5!={RFziR4wL>e307CPRvvz zVz^1TLG2E(8DCdZPZ!DGHa~;E7Fx5jGTDBc$W+#ie2qX^zyVyP_GjLh?vWnd?-6F0 zgy~4)nX64ran})aI=S14Pt=2|wv!8ZoMt!!E7S=Wwp;j3>lN;F5$?~YkxtN7GfV~% zU=eu=6(vy0&VmJ2?UHU)c^3ubC+NF)>2oojgLo@jT?D9AqJyocbit%DK2C9Ov?$)K zm9D+==F%{8NsEYt$>5x0QQbg@})P4 z)`V;F5Lnv~`NVwQaK2m$w9y*61$lQmyPu(gv?_;v<`0}pT-2A411o*sYg~M!Dc`Zg zK+m1_qXR0n_s!gy6L&-5*>cL6iES7Q2$~b%CW>-k zg|t|hGq{hgm3YKHa8|OS!!?>jT)j7{Zo2H^Yx)*6Lz}Gjxn3rVDbCS5$ErZ}Du7uf zpZuBB9fS$8=--W~{zUXU$NTXOzP|(Uck^lJ{1RG z?h0qj1g{vrc-Tu*~tmIH#48mXuL`WHM&gm>TroruKd`~4Q|aHbWsVK9FHJG z2=)$8RbWvhF*kLw)td^fB#oQ@W%Vo_DCg4tSTtH7^tKiSChzmCAb%Uc0YB+C*o}VeYD-xN3C6Ukn-+1cYtw=_@5cK6clC> zCshcVhk2r>UYCKHh6ZV+hIR$D8OQww9_|)IzmC5{B;*KjvNbgGz=o6i<$Q~$MlmxT znQNJHG{SR-I(;S97kimL;Of1oO77i4m?C>)`RJaT)(H&|H}L$8iMC_7&0k#Xk_JtL z`;+7B!Zh~_Z}q*ybx81`(std-Rhar-4V$y4GvF8_9o=xF8{xJ_{mg@JAbLZD%l@~? zAh58=B<$H%UaIc&)Ycp`N#TAHl#F!A+)_DYbvlCFL#)7NSpd@|XIg%*&!hPhbgrQ1Cf2q~vIRG|kY=t_|`BXjVi6 z=EVi$Kldc~XWgI%NkfL*b&DkXhHvQa9@^s^hvo)2?AX-&s{IUwD5| zDjVGzsn|E8XJ5pg%T|KPZ@qSx>J$PM5{oKy?377-u4F=*{E@%GwA^-kTeiV``l)7)MoRo%)J}3Iz6?iQQ>Sv zQp9odu1TdGD>S!7S~fK$DG67NS*trHE6Da#zPJSB-xh!MD|gO;?|B*)P+nxfyhD&a zJsbCHLsw`ep=_Ua*j%hJDMr z(*WleN$8eT=fb+ZoYHW$F>fdLW`zl>q$JjVXZz*x@McYgTh7U?5QBG4)CY+mpo%E6 z^6!>Kz*oP^vUPB*Bxrm^L9j=R;`fQ-*yBM4*lHMf$li_rt&SppZTkQ5(b5u|Yuz1I zc85rAerzo{{3#KUT-bQsRz4kUq4M$P0POmEX8qX=?qWg~Y>DC-j;hvviewh_U z74_|WdfN|KIKTrl)&ee5=7oNt9sBM4lrB#6b+FZtq>Xrh(sYz4M_zP8nFNBBL7V#Lf1BnYZW^$UR%r zY6_@&v7B z-}|3W_VwlL7kw>fY+hl-%XeE-Y@AG+OR1F=u2gqjoNGXx$7bTWX*yJ9}yk0t7;YWU1{Z9MK( z4$wEfO~kux^BQ8qzIVRMI!WmB{kzAGslCeO&$g;FpW&m_r!cbjy8_kQ>82GPqZ5_- zvkf*Afi}9$f(@TMtMd8U(+W7~dey)0fN63vnBf^IwNlbrlyQ{o=Gey%TGTAX|ID?F z$B_{{&QQmpVES?!vnOJ)(@nP1$6QZ!4YHj_++}Nb5HFH5k4dA0mCZ&K@Lp0AmHlHD zkX*=yIRMEwNCBvaDCd39YM-!jmb{KL;0`Pc4_}TxxlPtdo)u53K)FZ?>XQ z$8%0)+QIcj(xq;BwBI^eHp*%{GvGgNH6Qc4`sl6KXC6>H4_JB!cQTFeO54QU4-C%^ zCqnUktI$$#vYwx_ZR#(c%Z}mBis4PGw)lEl$Mj^WP<~>aUZQ1D&0H1h8Llb9d)io` z#beT_TOI#ivudAxxNy9XzF#}@s{c9dn3i15{OKPgZ$5#TjW7V@2u`*n*-g|o=gJwk zCSR+3aOF|`TlJzooE|l-T6h80v{=`E3A2k)(d`YRmZ9DwuGS#uv#EobLd|?0N|%rC zP;vXHD_#l9LWvGniL3bCv0L|VoB(RXf~VBF8K`1=EjuQ%>#p-`)LVjFIX~IJ45lEf zt>N#6qv|@DPYufJ>&o7>WA+}8@>odxq58u*2IsfAN*&tW2ZgX^u*?3bKdJptxH)q? z%x2?l3#qbxV@-EW)a`F^VSaBPzp+)V+6S2j)ZHSKubk4d%`_>{y>U#_G}>Ez49KrG z`LBOk$eJD9JW#8Oxmm(eAFcC}kkpx()heVl=cCWh{WEwQcRKc6Qi50{7bameOg)~P znA(8Ji&g$7oxfhkzH89=W7?c1=5t5Qu)rxref`n+l<(k5SxZQs{h+cuq)hiT3GCV? z9uL1TKMS%1(4^oVA-Z&pDSP?5kNW3ye*G^{(O@ye=@pEUo=-eNIh2_6Sj(a(rq}!K zQ2YuH3+^h*?N$coxh68BZVgX^xUVkXnjQBG3*It zM*pHd&L4rPyBr37vsMYxqb1zmP0O=qp8O4pv<&Q@#td7H;R)0Pe3;59kLI4#q$MOr zh@V~Ct2*!h)rh!74&zugN<|w0{&e-1G5|3rvT4=P=D~HNjkOwKZ-ei)gZ?rn6YlJq`cG>6N{31xx)iZ^9BaJ$LkM16ivZC%H^`Lgi{Sdpdu32T{ z1sBg;6wj*r#&py+GFBD4VyWdu!ixCyov%q##T*%#Un2~}qvj^u1x7))LCg7_F}VdG zlEYbb19Uv^K9Gt_?*$OIZh}5@8vC35p3YkHYoQ8-wLyp4`RbU zfmW06XLAK!fX3P^)520WDO5*&UvLAm`L}0}eyg02Bv z7yoSaJk^)nMmUsvAYJ3p3-dX1mDhhV%#v>souZiB7^&RbL^c3;Ob}^YM$YE4@K=`& z71lrgBk3Jp80ZkQ-Gc~=u`=l=O`6xaiK*7F9v8pV0Gm1OS2_6ZhHjJY@CO53M|gvz zmKr+U!HUyuh(;JBO9s%h#Xca9)?>6XF2}mmX0#mH#@(PT=yk6eg8ux zwejjVT|VH5ADM0dL$dp@q3Owmv~Wg=$**72rxEnkfsIO~-Q8^WDP*Uj2eKGUVsuF> z$-LV$QoGsfr{{XC>wHDZgQiABp1<&|BjKArn-W+vmfQV$G=kF%WN^MW6;%eBF_RGZ z6n)fc(>`vG6w}R8_zgM#WKb&q4T-jt%OK<#?zP@ z`64i@vRro`VtQDTZ7ydxv9$4;k`70@}z@I;=ovgc9iY4hUu#7%u#HIy4mTz_Ifr(js%w?peyi{_ktG zu+K#FLGQxNu6d+>(|3wKPgqV$_80z=pI#s7%Xw#QglTMn}*#2E{L^v1y^fK9e zd$Hq+hm$`7aA-7iTgo2^$w`>j*qNsTo`px(Y4_8msskJCQ^FSv(l*cGmCkV9RqLH+-y-|LCj@81pu?i#<9&>UkB_*Ta6RG0zusEOg z>_)Us)7xbc6F1vbsCh(4VYpCy#KVD+E*f06sEh`5 zf2F**XVV>N^W1qqwx`8C@WCO!EUg1~-;WYGL#vFwrm|qUZXw$^>YCHvug-xUYp3co zr(Dp*15?ySxv$mS@p~X>R$jG>y~WekPJ-JxyrR0}u_|zFNeube}w-N!5rc zdGV!y(}pUztlHB!;$r5A2nVaH|KRwA-?EX0ESH9?TGuFv<2hY!Nmp>GvDFZ=+fF1U z6nhmG+9TwRO`rK;>^!)g$PIpP2xZMk_;BfA{0KzOkDu&fcvm3{0^g5=dcb{?Xa|IBC#9NO&EWGZ+sEV?~cPFFJ<6^BZ4@(O1;JL7$0R9hkf3Fg>G!BDK_9 zU8#fo8RfNPxW?S<7uHU|?HfTep9b$w ztx412)9c3ZkfD=rp{!2$4)RUrcVd4PAE{LNb$u_aQ>Q~$TD^)y?Tj5)^CPX5enQ4m zFTiPjiCgmd*N6QJAgSop-p>Nxg;Gv#4>NWj@x`t?u$ICu&QVgAA-CN})Bjbyft&z! zZe$4j(2Yx7-`0n;ZzzDyE;bxfQcs~wP;q}N^q|P$BD3)&s{nl;>eIf%S5_4YKMk#m z@i;+fV;(@JkjYiW&ZT{BwZUnBWtfk4E{E^+eJHr-77kqsu-PW8%o)T4;{;ht8;`vW zY(BVXm^h^7b9|YEr}h_Wihuurk1Npe($FDb*v3FoI8vE42*ny2!AQ#r@w=G`H2t{3 z>@#n460?ds!Oxy2Paf#fdh3@x-*ZG_#+W6CUg|?(E5!Z<=dDK0S?$TdeMwbaYwNQ- zJpI_z-o{Vk6w|Cfh&aHXXFg1|8TEaB0yl8Euw1k$$h_O(AUmN|KkbknQI@m6xNsaAnCVrHvR2u^QgL1x;KhPuJIQYpmNeE$oYi>K(Rc znoWj4B>a3dV^jQ;;V)|7nhA$n_o9;|_6r=5lm71IWd&S95_DL%c*BAni%X5TJQ@M1 zKQB-_tY5z_2a{;c=WR~Dv<$c1z z(H%D7IP>6RoBfDvt3nusrUfG%a+{&dxM-m1^woR}_qNMvyE{_oeKb{ITFz=rwruSD0C3}aLToko z*E&J6HbQ=~*EKFYR*HNrMboH|F|AracU*k#;D%&%p;;}goR^wXrmKb&DXQM{ec)he zbAC0Na#Wzw&0Sr?GC#G%+HNvV)>=LAM0$E0SxQfm%&PaL%^`Bnc$sN2eX61bYGIpI z!cm|VbeHbu@-C!abqwa8Ya^ag%dUqt{h^T|={6dEXN@nvZhU_*IU*RsnI(TSo4sGq zudH7uXO^QprG|J{{#!pk7Wrb<&C%)yM=|M1Wp%&o>mz!O)hE#Bssis)ncaQVZNNBf z_8OTFQATFL?XjyUJ%&-YQE!4Hl6qE$t1v#51jcmi#a1=GJ5~Emrwjq&AfzLS9o(a7 zb1!>y+oI+NN9o)nbBoKNyN7Ac1!_oBVg!#VPnxvIWiB3v2zI&*!uW8M?%OP-zS%z^ zJ>x1#1^Y2=eo))9J5V2zCP;82XOf807I@*upM8C{S;|V8$$^FO(Ws`OUys}%L8_8@ zPal4_+hr+c?GZBkFgrh!OEqE}ZjUEJrx8ZI4-L(FC;9ukVmc{ZF=zaqHZA(?8mzgX zw#oqe*_lpk`h~|fTb)x`#P{QhhCKEsyX9W_z}Eh&mFm^HIQs#N6V1$oU(b9aN-O!Q zMp(E{4|uT1 zCBchd?farGU->&Eu7~b+tv_nF4s+rDVg9Yuhm>6`hC~bd&^oW6JDq7Jxd@`3#roXT z$l9%S!>0R@k2qK0;MW&3Wwa61J5{Km4dLfyoq>wfdoCyXW&?t;WC*#MKx=$wje_io zEl3l`gRkek*+E$hE)M6>4*s$|kjnkXO2){VDc#vjWNzjyn|GTsN*4p1v3*I2L)l($ zW*)O58gwlB1+6t0pKzu&a*kmrF0E}=?rsNFPFhuOqYLdH?w$4$)#+8uW`(sQ3b!j@B+Gdx}B|Tv3*vmkb>i#iQg{XtZ4|irIss{%W`9Tep6_d{2`2%?9+L{v7q^PQ7 zwIWReyO#Qoj#`2nevysv#PMwm2uqp}`MjngU)=jb;=vuX)MsTt+R7KNNA#_uPnVC! zi$d+0Sv;>)Hs=FM)oNCzK5qBuqpER_!hl=E9cL~=1Z#Ul$z?4f4d7JY%v>KlRoc8iPr_TSn2tC zI(oKwb|GT8YUiFR7G3kZUfu`{``~)KG6ciKvaUc%u1qWbI|>g{@zN?(kwO-2PAaCY zsSAp-w)zt4WtkAd*UR;2r`+jUwVjgl`dW43(i+h~t6|{vD+d-J@nMFMW4)w4@qY5x-4ruJGdnj z=DrkT$(OuL3U4#(uo|C?phCmCIia*Ds9>dSKH;V#MBuZ*V4ug`_!DL% zFy%MR#E6V}vbZPRk^f>$o%N}~b7;AzY4z!pyu=J=8)I6j^{89ZPtJx|sDV)jf4+2G7@VhNu$^tCi9bnZf+39Vj0){=qCHUQni7FmY6)VQFPB8p-(AzP0XU{|MP( zLB0+F0_}japB$r9=9iY9=q7Q)4W5`T$l42Do%p>NAU)obG)-DofLtlnm_A%6l}ZFN zWS2ajygjxQQxGI|>^@=sqZ;WL24UELq8yQ@JAy^weW@KqYuYyO3O-Ua_e*^k@};v& zR2HfoeD7RT+;n>TB9z%mZXtB=j)C;*O>hG#xhhJIrvwchy(5EecZzCXh8Rrj#%?;F z7>8HI4bq-&;-Feoavtsy=I#}_)p@0|bnGtYFV&a^IzSx!IRz=!m`2?-H?*p|%}murmsA^Db`pi0tOYtTn>FG0O^SM2wuGic^1{z%0^q|$i@ zVQ~PjB(TuQ1mrQFM#cnp)z3SW=GC1}cEnblf*=onLehyIG#K}x;e@aVmkm?TsXS^O&!vm-`?XKF(C7m9 zwzNP6nJkArlGRcFxkLXrS=NAp9r-w%nKk{#y9$Oy|Xk|XI#NT-w*hg%!OueBvj;f@o zQpr)m^XI@la8PBe9v5xJvGAujVC;*fBt~_Yn>FK(M(qV&x!J%b_ zF{nJhk?2G9*hZFmBZ1`u zHwCpFH12f*WF6tY5SJR6g^65FXMw(Z8h!GcK1sWco=QWODe9Tr+>VG_wguv6TY%mi zQFsRXT+ZxZK00yj!+b3B3E&&-7RgbL;0@xcXHM(g3ED$Aqciz<02kx-*uq;^<|pNSoM6))~PtK|vZjskl)_i=ZI=!r!l5B|VKN<@6c zovN9PKmwf{5`J7g(wFyw)+le-0$$5+sjT}&P&B*S;EGu`G$J>Dp@(LFmSNjwnNS}8 zf_C#fQ}gE$89u&AbzRo)2h|`zRdgA6X0U~_?#ukz#b_-1PSc^q`FCGQ#1&|*GwSR?|wA+nYYf? z@65$c?r@Is3yOJD*lNh1<%K8Ur7Cjf+MW+%C&&;rszPgpiYdp!G}XtB zAN&3KRQqw46JUM-FYO@!w)RW(y@X1^Yya{qJb0G84s1fsq<#QChdzocd+5`uzvqbm3&#In2l)RWg6O(3Is(JJx2-+? zDkAPX5sTqTfgA=b?0vjv6Cf#Zx+dg6UztwIKytSgminH!%6_u?B!FJ@-6?5As!|1(GhDPaD3 z{v<+6WqurD3y2gV%U16+&pkz)?t+!7H)kg~Rt;@7>L3-K1(Q7jT0ZysG1VJ%7V~g7 zow584i$oJ|)aGQ%4STxK@t`0)^?iSj5|sPk_kz9Lz2IT5z$BJKH7yaT4u-f4K^q^T+7k*`;@Mh?VJBZmx*SE;Y}@&-~C%s#3%Axba!KColBPwqKXkk zX4wfSs#}B}`a-9r9`UG=XG!kV)liJkbX{%@fg*(nzWLje`_~e0{5>rNG&j6_ZYdnc zHP0Lx-PisH2HC)6q@6dKWuPI5oZ+e#_DPY0IgazyMq4B5?^ zq66(<=^|J!4#@hedmd$&nS8YsE9XC=zSzM=aXqZ;Ow#eVRUU<*jxDyHwFF%s6@Q*D zJ+iUT2p03jf%iKAZe-kmh$8vL1Q#=fk%j42t_T1XNHE&ofU z(YqrgAs8>=@w_sa&GENQ;(tLk2iQZ*W(jKh24iXZuH_hQlnwt z#t-6~4I7V-b4U7?jj$1k>|R1A{gb|)gf1CF{8dg7(nqGWb+dzaj=}Z~1wxVh%NzMy z;-qWPEF<&;bdjB1sfL8M_=b$%q{X{8(_A)!s z1&ZbKc=KfYq~GeZf_+@Aufpv62vLa#t1S;gFTp0o%V&>CepZ!8Ho1y%9GvuRhNz}MSlLxxae@7(&Fr(2thR}I> zNnrqW#*LNrBQ<+*;}`Zm;JX5r${*A+M_eeXgH@{;#jS4jZ$cU984J($O8Q%aYIxjG zvX!N&t!aha-bg70HqLMK2w4ULUHbdEq_AO}^Vew?9wO`9vSBJUj-4f2;pV8)gb|m4 z!B)k;t$pKIn|pQtHurfBY(X88?H7j>io1|9UtuT9hMoPaHQqaeiTC(vRCIN8PuF*+ z1U5ys!|*QMBG=B^e*8OGrHNpTGf=9Tq1JonZ~^M=(G_b5W^mM@DR0~PR2LZJb9v$q zQbL&B^(ZmC2=ZvS{mkXb5$=^U3pV5ObQ=md2MvoZY%slpmHQW6a}!|O#Z6m3G4wB4 zkM0+X3X4%DxTqWJ@fih<;DmM=t_(wA_-fc=wak}t;88Ja;dRW6QX_jF$6_f`$OAq4 zg;f%(^cChFM$zBk29V22gNUrwX?^_@6NePg@!CW{ubSZOzs<)0Ez31Fz`*ry4Pc8{ zYc{~LbmZ=Q3BGK*{@|M5%l{^0;o|(a;ZAAeKMZ$|t}MX;LplGtwv7!FXBqQHsa&&{ zICUG^#JIrKNYTJYx2~Pc{|z-rr0BJPJktftR_Sj4KeaKD#Pz5F0-m;1l^OgvgaBSBywZmn!*oy?Jre=nNV3Ec7nrV@X)3$M#$rYgB+Fql^W4QbT;h>FRnn@it;2x-Sb< z?aJ&e6I{Iu&t6nmzhqmGm+c$_mm|YCgD#Noc8wCFnFhzkRR5SapVZ|?@%wV_RIhbr zoK|8dXsFRnq*p7MoDJBwiViyrze%|~E!psp$nB-+CtEdYz#|5mFCgk#;t?k3Ki>;h zIsNe-y%!VTMB|6E5A*uab;l!PmF+48L_j!twSUNc*A|8#05@Qp9AErY1klVR9#K5i z8Zr1gzDLC8Nl&2yQ$>@*@OL`;{yBle>0kefwVCHU9X9v80a(|TM1Vk?ZK1VidPAxy zbv>+m7>V}cUZQH~d3TZmnE|MWhtPQEO2lkt+cecZJpKrEdV1SIUEo4|Rnc;QD8B@t zh;A147hQ;9=ja?*6QiWV5>8;+h~dEjZ5^> zRNk3li+-?YmI^zChX|&xVSaKk!b0&cieZOja^7;av-)BL`q6=ov>i@RBM?9Rf z^4l!gKDS5hd2h_FmUfV5bSQ||m5}4%eAA)Z>|y~i0sYKnlN-nSW7dTTy2Fa7 zL4zk*pHJG_iz~DYLqRU<5DSh44fP9oAt~}p?!VytI5NEmKNG%QtfHqx z&5*w~q9;lr5OJWK#!(3slb;+jEn8hsZoBOK4*7P$#+RA}Pl*WROl#;tVYxok#2P4H z7G?&}Z@<<&w_V~dqVD0aq5?VVU|0`UwfYKaW;Lgi=k53`5&2mM&9MxFvyIQ5)boFw zb*lbxVv9_}A94C4)~dtPZ?tO8;dk|fye41k`b-5_+hY$vfu*`IJ2x{?-o>Vst;?a( zmH~Frqw2WhwHa76R>i;y^7TONk`b7$GKFaH&42NI5LeI`IctMxy78mCpL-1MBhbu0TAx+afhJp-@zQQq+L6rIau75hqN zQFAd?(>D>#0`fn|1|{DDPaUThdG%^d7hJBp;{QZo{d(_cZR!az`D0~C7Wh);FXE6c zik&5p-G_sjI)C}w*_1E$7D*&H2|KL#V%m3gzlJH^ns3(GDmhcT@YlZ(YkY~Kn;OzJ zh;uo>mVA!0GxVPwPIf(KY5uc>_n2&?*eQe*fdH{yagAOj%9<2uq;-aGm{ZhSoY!J& z6xa@?NuA5_FI(2{L7DcJWxtvKOz@cwezZ7;s*=IgP`iH>i4Oc6mZ6E6qo{o zCnj4C2rVoWX=V5ZYgZ9A^`d-qYEMrlMo1y6F_|ON{+! zV^mZK$O4?yl24g%q44O4liJ9lS96D@d+&SJQe?}8eHD!p>l3FHgdX?*tqmA6d%(|FrU?n95ufrhHJexNEM zu8Fr?LvBz$j$jhbVP@soKPL2cd83A*TkuWJ{8`4UV~#!OcwYn3h$Uashu1_JI@lDV zacfhZlU1;{kX`3W0V}H4u=LB5u*H&LR(njyoISHXKaAdaII5elUOfsAA}YGAN|qm)sgRThHe!Kejgcxr9*dbM)xvyVt$} zoHtL!yor|fJO)Jyo-B*xrnC6RI2oyCQ>>`gpT<|-$!W|sXm-?@1 z>A_A9;jmu+t>v~f$<25}h-@SI=6d66(HC#jj*Oas8(k&|3}N9}llEnlC~O4_V2zN}UvGES65)tBqGKmD8Ge=u!1L zpO$f;P2U>PCjXZUZRp1;sFFnqgL~6sYBBqa^%>lG>&(YtE{qKrb2OC|UWFY*sw%5# zau+wyUUK>{xbKFaB*d(X$atFi8^JeBwY@5r_&cHKlx8v!9p{W1vQivDf&D^B=_~mwzdHe|fW}JvrAA^RxA7XJ$I&?!+p6dz*tAvawY9VKaj&`;&7N`j z)zhrD8R=@bTo1#QL<)#d`;3X+%(ie}fcjKQD;>>_@HX&npx@Kg7&&HCR$-1G=!=^W zhTzfQBcFoyo$7!Or4cnbT$zoR9G-RAf4mg*n#oj|MiE4pC0m=n*7D!U;{yXroU452 zoo%d7bU7>2LqT&F5s9oKzJFD5ngZn%o{%=1_;my)Z9WBLqrD_I=+i+ayB z8)MEOC=K4qY`Ezo%scx2S0u*xjADh~Htp$d<5E zG(&-4!~RDPCcl#{t>a12wywXff212~gYN)(fZbZ3E;#w?Ktj606i~>1O-!TFR68KD zf?Z?*ZsGZ-KX)HK7g5c$Twhq*u3<;m7Zbtra6dWtBqd!fuF$29r|pLaO7uIlrBfwh zI{k)%yoI4WK3eiOfj-}v1pl-1dY5GKIZ68j{*%)n8g@bYg%vcm=YipyqEo8aTifh+s9pJdBQ(lUCJub-)9n#M<5#G*7a zt_eTWn4w;fHvp>_etWzL;c;E>rv4No9Qic)2)mVxZC=XIF5u+=0;-Yb>tyNb?PWgT zcG!}#y)15x3@6Q>_H&$YJY9dWJ^lM~(N^;XfF1ReAmgEjBxQS18z`845`8s?3{z@b z5IOtHl3nszI$)s*VzR7NIYoAvGL;WaB_q}MYD_<&w8VPezSvef`ZlDjaQl!Z%pvO6 zz|14Pq+}hvWKQnKR0~gBKIKx{H2P$G_W>^vW}hsCJihd4iGHPkBM1uNfOC5p8asT; zRs_H_1@4a4o57vxWumX$Pt`LBdA9S0{kO!E{arF^mX|p7=E-?G0O$DEE4hjqJRXURr3qvZClehy~ z^WO2-Lc8Pn`Gt6M(O{cVO>U#Ss-gLj+Q@v+Gi)<{7lF0OtSKq)3t(_`A|cgMOj;_d zUyaNavhc@o-Zq=lCP~G&ciMJRp%`fqQLeBUvl;|DGsA;Vp@E=Q%c!1)9q|g zY7eN%uxyP-)FO+|36&8+(~-hYU!3)G%JTHNJ>gu0_CAf@G*&G3w`lAVY_6-$b{wYL ziLjdO8|fa=7B=pwUP~I5__QzQR68*k6SX_V3%qI<07a@_E-EG`~U0a9`Dzfg8xoYk@S(Kg+5rpWl&zuPm@ zGg2u&S7?1~u{lm_BC^V=_l~2i!0D?_$VHW(bU%g=BzS;K^BwU%)HNI~m_*1q=vGZ7 zTG^|3;h0i4Zrb46U40BkKD8b&d@d%Iu&2{y0Z4)?>YY5hkr_<&BSD`7x-9|+y=b>$ zJTw9s>4dfu;;ER`4MB{TSwJGaeZD}y8stCex4BzxSM=Kv-Yxgd19wFlcV=|fmkC>I zalO1fnZ5#B*1?|!!%uWIyx+JODW<++#jtB7UlXOi8YWZie3+x*&$PE8$%-_6MPT}h z_)G+n_bNt>C+Wq|s8ZfdQ}@R6B}oc_YI=oNsrx!~Ar54(czB`dgPJKKCDZO_0)Y{8 zuLgAn@}bQI#;dS}lGMe+VevCgMA%m$Ch`6P+&VKv&pkgW@veU*dIK~iHk7buD3UZN zPC22BFeMo+H{e1qKHae$rwI#*Ay=x*f`xKkXbpGu>?u*BOTNahEsXm<&M*sBQ&P+y zEM;k2vG|SDTbKu*^s6=#(5e^<+Yd0U2B-Bqnp-0h*n>*>=WX6-Bwm=tHL{~E{gySi z($d}6ykrqUq11WER;dzR=$}5yg^x*a3sDeH!?=n`e$q^dSpB)iECGn-!r|bBHG=rs z0wN+Nid8wH(PjF=Vge_hq1H0=<(w?)Ag4|LgQu*7X4rDx*iGEsnDsww@|<*3`H!)&ai zc9w6rl*jGm%JJQxQ3vY=cO&`PA9S+M<<|bwZ_t>{*2T^$hG-CJ`)w$&;s7!5^8$?V zHEo-}dGU6fiWx*rDG6fTKfxQwKjuY+ELwNxZWhmOy-vRK0u0cPm6%q~;=|g(A@7MH z_|{lP0?qB$F)t0zM5P2VO$=whzKj-psz0aOv?>kx#@eW#f0U8uxMI@6SHL22gy8rU z5<=L^qS;$19yYf7tf0}-K;PyAw7Ho$MeOY#1RX&H2U)|bckbpG*yo00u6^xY;-*1b zFV`O&E$gz~*&)6@O~Ye0AR`F}|*?RRUwE@}aEZ6al%h*}vF zTkL^CeBPkW{Su|bV_4I0*>}`ttwQa@4VQywlgicuRSSMU*&FYjH=y>!FdJN!0q@{> zv3)W0`+f{>FeL&X zU7XC}Z{~|4h4&A7a1X z8ZTl)=l>>%Nj6dZGORspN=;cPIpeJX!|D3%iTVK3`l;@Srb%6$31L(8Yu|bOy&8B< z_GU+kxC@i)76EmkVsj7>MnIp??>~4x>~>W38Yi1~Zq4E2$*pT_Cx3ysXvVEgzBe+G z;t|ztxDGUmac+VD&;OH_J2=)b78X< z&(k9=(FBTp9p;07&%a#9WYTz2F0A#Whw+z|ptr=)1jWR|;Ioz-v(^izv;ZKGxjGI5 z>R6}wb>k}e*~)XzLBYRaHJBcCU7Q;Dv{m5 znxn`sQWzIB^cC5EPGVGOHESlJE<3&6t89j$X$B zg`H*s3EE#^MQbieO;PB4(Q|%Z!{}3m;4bh4F4IIhVHQF!c`-x@bwdNm%qgyKx6A5t zw@32H#5%gh)c@c;I6;$6XslNpP@ObQPHJcv9=J_@5uDX8^KDIm%&>}|pM)*Jbf`)} zyUYd_KGS>+GjV-p>6QSrc7%9l-To}5_8{N)gl&-F z*JS$nqy#z1E3XFQZ;sY>JKB1z_Mp~B_UBFCwK}~$W(nv3GSPYC=$!rgXX$891u#+T zQOu_-Xy$TSYa;{kgw1&4Hx9x)u&;&bh-*nz2tAdw^oMHQr;j%G9VK^kDt^1{#SY!X zXrRTy1q%6&RRLZ^O*qWH`7`_Np^EnFFKiuVxou|ipWhYL*YY_(s~X3D$ztz#V9xAr zRaP`Uz&CH@kv4t;PjPbXcIu2-F1z=H|J`JxCh4ojO7?u@45al_TaHV!iWo)nOcaoo z8zPihaL+D9BFwP-gV0 z=~MXK>_g|&-jluStSwC&LtNR?)Yk^D@uGsfOsTkes0cZgY!($trJfn>A6VZqzi{42 zaayZeKTsy8qJ2+6)woZlaNgcIhuY=87@)h9ANKdXkN7F})` zz1t`%&AY%dn*V1`lX z&3X$ZML;I&D(O<`Oe)twCWtPV2v)O6Ld!Mi-sRcuW3}H3)KDZ=r|gXsA0K?^f6{^>e;Z<6mRa6F43CuI4hU@c|P383>y>=TN%TZVFGCgi+a3 zUe0mqZ}&MIJ0=LCf|xw#C)($8GFK@$j*m!7xYK={>czmXJsH8fe^!tDL5+Noi4}}& ztaG?V`v#A_Kpi)E&hVrwm}Vrd6LI%nrvtx190N`3g&s4^K?oSnQ#& zGU%}wFNM*GT>idvp^aR<`H?QZ@CBx8+C3temiZmx{o*;SbllZN)si&m#mqg6cHMCI zKxc)Ak>S)rE$ktBH%eY1NgclqSem<&W(+crN7n|3Fa_a7<)IAxAnpfcK&0~|27 zkWo;zt*1>R;Ubq{Z6SQU^L>b>=J$F(R=SYyoCnV9t6G}sZosBrt^q@HVx_PWC9{!& zINdp=#7tNvV1;1k&)qT*i_Aw_aZz=Q9WEg_HamFN9SJ16vB5;^lAF_WAk=eS>_b(KUvUoOg(`;4#n_pO>>!3cGNs&!s_pxu4 ziMrmUUZXz!v2;$z8!sLbNQrVK9fl~9QtZIX z`jXlDbn~GE4~aVcG!Aw=zxqDVg(&%)$~y`c?_<+Sf}Y!(kpa*gW2`j zJEL~d@~l`^(gWVO5(8b+?YAYiHfl;nG4Dj~-~`u5dAZKSe!GP3(LMinhGyCLcGQz$ zb+T4VczUKGxl?Z4S9RIy4u^bj4>_jNGGG^FrJ@=NGI^SwA=Snxs-+^}%q~*Y7~?#T zYRS-hp)x6oJ?j%B4U*IeN5B6&?$|{K_gRhA%aqetL0^(X8uV6nWKPVU{L z+-AP0IM7VMrRz?=Pfx?`dZhdBGv;@K2ku|nTYfX<#!kN@pjb6Br z`8}xQ%Ny-+0hAc3gy#h}F>=#CZqb@X0aB~Ca}7t*cL3e;+u50U*=?w3N%|06G#$A1 zk~ZiRhrY+?jO9_P)+D3~JrbCJ?}dz3SuxQKGF{)lXJV??o!*9i(tg{kXEJb@js*xX z7&ia{4EDU;q%|scD1$Vk--G-lJNA#F-7O$K@)M7}Gi6U} zME69u9Nu%9ZCPqg@4XgtZGreo8*yg5a|P^X)WY_d?=Lh}p!(lWo{HB$x%Q{?-DrC0 zgO2#zirv@%B|GTwKkxR(G@Hv$Am$S#YE#=9{q<}$XF&4uBib-yvUZY~ z`MMoj5u+=ypO*8X_cV=6sVN>ZJ%Bh-zJRmFjV5 z%_iyBZ;j{xItw)NdvFz^asd}@7v`pAN8L4emN=1<@b|d#(SZNiE*l6CDVmOT$S<|u zdHW3vZxc!g@;CVb$qEC^jX_qO{|i<3^&HQ&vs-+i`F|&X{cAK204lEkol*Dy5=L<) zFZk=<x9~YYzBF+3YbU?okcH55dNv&FWq6!T_DoYuR++a?q1Lbq zj^$A69v$!I`Pbw5b;q7xlh1%B5Y4{8_N`NW_Z!3Lpy)$+*+`}|AXlr1-Uah#p1M%1 zPNLZmTWjZ{$9YXOTk#6kEz9ZA#&8OB~Dj*%pcxSC^8>ct)dU|xY@Dj0daM0w};YShG0pXONyu2KDi5_3m zeh$bfXg?Lc=kNjepOUX4SoA{bsAtnh<@J#q; zBER|&_mqJeYhFNA-NN5l;ZLAYAC9F?K5l5Uzc8$i-<)6c0Trl51s!I=dX?wk5>!7G z=2(aPM?WdL^D{^rrux;(dP?}cRR!0Iq{JqG_eT*VtSr%9!q z4%E0=7-O5m0sqPl4Q%zvd2KVxQXeI9% zCVNts@D%lW>JM3il2+s3rXVG79zM)gAiCb0eezWcKD6e%XP|7lkWrSahHebvj!!zd z>d3=Zn=`=DeTG23XDE!x-{;mf6>{4XlZ*Po!yf#Uzn%h2qZ4-v2t@+?#{>YI+GFEH zHi?3>T;rVE=GPpBI%_g(VO4hZ(K9;=4<=Y8uaqxaondz2K#|6++52v9Y&G8UWvBcW zXp@zS8X!;|W#kE5B>I{xb>HWOxt=kK&)CEP0iQFXJ#tsT!lDUg%H zNN}I2Zz?L?(fY{ENNIT3{@F!b&T73oLGm&96ka>hG^{dBh7_FbP58=YRhiS^=i53< zL3Kp;o>#WjbrLXkYU^brN0BaaX_(>Xds@q#Q0TzeJ5)V`4y^vh5A$$+^F#%Ff!8v6 z>1{P+hbi{Sl#q2S!=~Kl9QLfN#ao({A~BH6514}K)L5f}0$WY1)Opm~7#)lz?c6gD z&F1V{U+PbqMGa(SQ)8<8am}?c0@Eo(J;RV{&Y*M0A6Y+TC}!>ISwlD7oH)@W zi&mG8)E5_db0h$im|;E&@I!K;KW4PA;H)*IXPlr_5Rxd*@^edhH52DpF+3a(UMeVe zzja3+i^(uxGq(!XSN zcdIDkV5{0HOLQ7lSn;Lpb39972OqmM%4*iFlo>ys&siale(+d1IiTbxC^awaxNhe| z9peJ;!r7+6DK`hAFeQIQ$W0P%H?Y7a%3eJ*Xjj9qRn$CovB)W)B0Kd2COg)t-AQGs{LA6I&4p(;BiOpZ>G{Qbf``{XT2TZ1 zZzd%ldB5=F-AWg&s@R<(=EBsu34_VLZHyzdh@W#hbP5ZqgC%B}XhSSiYn#)y|8h?W zv`$v}f=6_w4=PV1BsNQ_iQP+@hLM7KxFvj%Iga1WkKSZIVKW@P!Hcot7gE5kQF3R_K0GM-_35of6BEe z@zE8xr2TtfKdhvMUbr;e>p7bUZ=gbpD=+f0PTRUZOs3QqZ2D}P&HV~~rgcuStAtNN zvQF>(4X0eGZ6g(W{vwxnR{2>}Z>uP-WJGgWJxQYUQzKt2y3PyoQ&}kIS6|7f$RFA= z;!D+(2q>z!Q1~50D#&*3z9oNYoNY+hQL4Bykb=A}%iLJYZ}q9}NnWW@zS7+e(pNk|)O8Ox&Hz~e&0Dpq5_i33>jEq0#U0y*sz&lK^J8fSkNt{bteY>Q{@4ZyI>Q>}dd?BvMp) zxN^BOm^C)Z3o?6uXX&-zsFvAXF&GOjkhFsAolC1hoF-v~y{0k2;LC$`8zfxsiB$!qMPR9>&I zzR`P`!Zi}F<}JlV=az;nESkh#IhB6$=k2WOSNiF%lt!W6MbsZY4BvGx-}Up69xp#7 z>!hmYRO~?AGQtOxFL!nL>3q`}|D>yC>|o|TH0vE0?-^m||IBbJOT$_();HqoHeaLX z189MoycB|Ug|zpYqBuHNk7RL@jR(jKP@37D0|(Ono*1sWhDo@XoxEH8@NZv00#-im z=(*7_erQoOkFBJkRmH#%Lgr_eV>6RaH>6gC5;+)KyUuVDWN=A{oBk4gRphHldAhjC z6Mf(SyZ?Jp$^63$RRfnpC)t!+?M?4Bk(RFAlpGN@3!B&I65q56bYw+V`jM;n#mH$M z3eoMquPjFE&}&lb-M1d#gnn<#eVEO1&2lvK)8JJ}IySNLkpuT4kuwI>PmL*)^rDlu z-w$c%qYW4Rgr?$1mgCYw+Q~!dE#S2#sXb1UKaSKJ#4?C}3*7{a%P^>AoxTnALuxV( zeX2*d1;C^K}-sZe0O~eoZist z@nH@8U%BlAbBgv~Xg9vMv$l_>R7?2qwzTupDC~(^JV|c3dgGV;uLBT1odYaJ(ZH+` zsk)jAfkJjhUVFZAc{v>LTdlaads+1Q;c5Or_0$XexobK6oa%1Fw0e`3!DJvE${$oH zvGc|Wjy;;Lv@Ely{`_&4z4Z|y(w*!h9iMr;bpoq}?|Y7=>xVA!3LR;qeGkpH<$JFw z{WGNR@sJA5p>y#5;r`<&h552qTs*Qxf3(*!)W(pTd|5}AZZm0KOJ(Q@&4v^IIifdp ze$pn8OqyUM6pF|_Xofi+))gP;(Z#$LjHipbHw9Ir_{Dp*^5MCTR*m3CXA95Jya|H@ zpq^Lm-w?-O5^_gRLwRfcLrY7j$u&0NyUUJ&L91sBATMOyYb+=8D}k3?a|V8ol$p`P zy%f1yQM)u6c57lmU|qqeg*%-2-&;Z5vvyY2_7L9Q0YZH&WcN??M++_Z3Zrna3g88~ znS9Xd`zr;rZy zU~v7M{~+Z0-ZCdp2RqsSrI}kvU>hR+_$iz4%vO1u|H@bFm8KVLw-2-vDuv`5`*YFy zKWg%q*4cKquK1!m6Ch0!Ds@*qBdh32o#Vaq23XBn%iCrxhRT_u_Dg|Cr~qa%Zsp#k zoldaV9vHzrIYv3DBXguP^XtjAM(xG71!?v{_1qIG^`z+!ZKi8A^PYt?_%R%o(1i{p zY+Q@c88z%nyR$en@QLZ{L{Ht9r(Ya;{#M7O8?Y?*WA1KDU=%r;QZg#e>t)}@GGx5d z&3|WeHpNv@0Ua$OMVKVL04w~_O!gNC(#Aa({!ihKg(K1t1#Yyfu_#G^{c0o;#CIi| ze&ykyLu~b8-(E%48J9o#u!b8trmb<`x3%Is5b`KrcV&2@JzN&@{;8?0Un+xz1; z!f~HBykw-aYR+O}F|0Sp*eNsSyYLzL4cwz87x9t`qr|@}$VG4hltHtW_9@!*{Ln48 zF~q9vK-Ey5Kp6?dh;j&`$qIaelFt4 zQi3WJ{n>|s2W^g7RqR%AA~%?wHJe=~9_@XY?%Ip)uou(v`v=vNpLic@+k>{y!Dgi4 zKIKA%(^}*4QAV5*64Vh8qil8S>#R9mOL|rFWfB?6J!fWaNaQ|xoh@$JQOe6JAq7a5+=@i*0=>tqG4IZ4Q)rqgy*^7c?MC8fEqC2uA5U`{?H zTQfsY%%O~^<_Qr(^eRrkqi_S)qkS~TFADP&M15&!S>>P%X+r4>(I2Qb3b+4gd;GG} zk7KSTLGtWb10mJh7j@(EYkZFIeNiZzd51s>Ro%Cj$u_JjaXAsSkSc0jD?i3c)XL~x z0K#HMpYG~DiG{xYTnXQ{~oohOm%maQe##QmH~Ze2|_&RAovU}HT;hv~H|pOUml6dS%W z?ak`MT#m-E`xr-My$}6yz^|^u+n=_jF9TKpFkTjoZl^0VvC6v6(>;3u+QVrHzU#JD zPV&WVW2U+M@YV*Ve3!B}D^?UuCE;k}#>X1V5)RIq7ZmfAYMAK07UH(l&`}K!N zuZr5_g>N#pH}&QvPQF3-Vh#IP!|_Zyvh>Qz(zX<9Ao1Rt-&*py+yGSOOIkrJ1?!l^ z;sOamV?e{ldC}a+BB!E>?bA)p4V%g9djfpid*y?Md`0TTPEW!$$EOTkD;!igsp&;c zbAIJD9gF-h5ioJ{QPdQBC?qXR3!GaOP`>(HNn(>?4+;FF75y(K;D_ypHF;;hIiF;+ z>^CRLQ>zB6zHxDN&2rk(l3K|ARxrkWQ-zn*@4eFG70qu@lDYchfs&Lb#2;2mrDff` zq?5RT`XDEjsUaAJuMJ{eG)l|N_%iT8rQ+L`c_U`x9q;!)mm$mH08bF|J%m%b^7wDQ zZ&Muan2aRq;GpPgfCW%5GO=i&keih&(qZfD79r$In`QA7S$Pb6psB81?2m=QR(W)e zyn#d?Q_^>V(9r#I?V|M&qv*X_1D)xC*{f}3f^fE#?6!#y{zp&h*rh#MX%&|FCTpZm z#ztYMFrFAD1jd;qHr8p8qsQd)sT?nJ^KcGI2o1y7^XV@ukrlXgaxmFsVx z<2b44A3OrQUj@>{K3TvrSa0SRM$z7V`j~SvVR(QhHr1BSfCjJ}fgvDm&GZuxqkGxD zvcWXT-m>%Qp$X>?*NE6{Zq7pO^7htE*)A2*r5Wk^J#=jZDe9%lWSPan8{L-lh|`!W zBtssJF>ik++qL`7`Q^JT`Nc|HI4|tqa3N37y(&`+QnELQ=K817jRL#mZ7n^1yXdZV zj77AuxFxYAuGa6o=@njf#2zr2l3ULBAKMV*^WxZlO$3_M zeE~vkoc`YoAH9BwK*(qWQ-*H5IUvl5SbGarpjKgaAD_cu0bEx%9Z$c+#|B_69vBqe z=UwQ$^OJ>`nuj_>($4v&Zo3)R=lrj_ubMXIzee9=Fux;_)iy+a*Wv+^;``+F{2M7; zb?-jq*Qi{xT2mHFGI0}j(+1UY-bm~V*J}cqs+^VcAu5p1angv2^owl2L;;s?pZt~g z+Xt8BE^ZLrcrpJs>h|fU>whyW6LH-7^p9YO9|8Vn;L3b@^{IX`Xd3Q z&h4SWQA{_8jOq5H8gO6upAL#Q1Kqe~?DdjWBL6B8Ke=LZG)wWc9x6R ze5zYz9k&su(_srDB{IGYu8!!D+b_C~Q~KviVLNL6Pgqs(ZW|?+iC$vQ96-vdiswIQ zGhP46#uH!k%4G*Zb1C3wx7;eB5P98`^wx!-=c_)nhX#zEe__Fc@l#`$iQ0c)k4Sco z2qSV&&rN7|spiwkfp_cEuX0`~I=AT{ApA1ml9ww>ZV<&TBC1PLRZ&`Kx}o#lFBk6= z;I%A}d58sp2xtcaW|ZL29vb&k=|KJT+fM{n`aCf%Q`-07ZFF8eYS7-MD)pfpSem@{DyTo}A$>bWu|8&IY1d{d5e^ z1m8;JwrzjXq7H0O^+ zgBaYIR?I}Zcdni%42*$s@rP#r_61;5Fewh&#k!n@ zFC=hb7h}B$k@wk@Pd-e{un^|4oyEm;&A+t0U*?d@e3vE;V#tCh5%D5*E((! z4#)-3RuY;punZz_Dd6vNYkwzaCh2lm2o{3_EpN9n`v}QZN@nL?8ow9PIx_HgMqZcvJbe3{ZGfF2{cN+v?Mh}7EYtIgj z>Nx)}j6az3UzB$M|fJE(j^t%pVr*U8rPk%bE)6@+=AMIT03|}T8diukE ze+j&&e(H;_fde|*d1i~_YCZBb$AiS0X%q#Q9td19{~MW z)n$D;m^vqpS^)a6_hL}tUlaKgXrT#zG^NEY(F@G*RNUtIV9ne`%gx{aH*O>USyBGe zh9w@)P8vbsn?pkEz{#Qtq*Oe@5ZKS(TV7<(rG>UZPlsI3k|8HpjKNJcOk8 z4h1>o!9?ok9-R`h$ZxZ$$#pVrjoNQ16l_e+_@T0njW^|XJL|Vzs|Vzs;>GqICRcO{ z6GQVb_iX?n0a^uYwDG-2r>uE&XgbzK&P7%KRo{L_ys^R48J|5mK!<>n4Wj+KKTlXT zwgn4MO*qoBas8B~5AyzdGMW#3PAL~}^0S7mq{a5QK^@ZDC8b{~#Pu7S+d6HiIhvOi zgR`4SC{h)5O%7Jrks=-|1rz4)EkRi%48~L_FC}isz<4XF5rC=!dKP z?++2TG+Q%tw2(-T2wmHl=m(aSpRxuGC>UqgCfeI*nQ@&`W4uDj#~IkDahGkKq6+`v zw@r#@Z!6|n4ZTCBDRkBziF^KoLY>VoiJ$rjmeYQgJMLcyebFpBbaYZ@3Vj~ec#tIfCU>-o4j-C?B#}hrd_C=-+tA&q z5{jdp+77QT${r$7=xFO;&Ckz;>hSA^mO(4veGs%$z40bBMvn8;E62QyZU(!RAVp@t zFr4Celo$;XBApF2lw&w7*1y=`PC6g$nxbqO-Nw!uN_6sLeRY2nr(htGPfp*z+&_@& z_Ri(-0QatM9S2LE7_~Qh5<10ZwVUAX%b(UF@JIbi!6ZTZ?kb~xBOeca zMI~H|_WBJMDBTod(sgT02kKk85~@}}##RIRmi!gV9bsZF2sd$axw5HOK9kmS4Q8_1 zrwayy)+XvpX)o(`bPlB~WWO^|2HDSX_~*l5%f2s_b~T0oa^yIoa7Q&N@t*A|zAQc- z(ZdyG;iFM+I-)`6$8*1*+{L)TIffnMd{k4H ze3J)~Fd4M;4imIJXnAZCq{lYHFU4oyJV2w9j(^Zl#5Xxb9bYZR7ZI)*0#qcRBJS08dp zD@qliOI;RKHRasV#^BA;hpspb4PyM#%&K3og#{|3-eqa2TJgB|ck%FAuUMTv-IH*q zth%Jrnp9`O&6K|To8-%hC+?=v)~~Z|^ze|EugICK|mt z9hXdJ{5)cxyufEpX#G`5WmLTdic+=TFG}wsiA4Y{^(W>zIOpcmxr3!`mT&_W=^q9o z?fLhRl{1dyAP)-Hn`#4;xWbdz{%uyROAm+rW?JgQWABaqa#JrFJH3I2igQUYL{G;H zlt6xq&E8v6gnVXuB4RZ&vGHuoX0t0(MW17L>Kg1?gV619`)xIUJHir~w19_Resm>b zy}W5|PG%-sRv)YCjHV{Lc}Nkicn#jZdixK%t)STvh zcj|zI4n#!8x2^&+>=*fWpRgI3)@Zjsk4Vq*&E)d!T72kh9RlDxZ)|DsRnFeW(A8^5w z8R#=olT`lb5M)3FpyHGj8O&u0Qw%<-zU z8BHQ1Snu)zobD(sQUbFk(bsRG;zbKXe~#kg`QZHu-V~2GlTOkqcNcc^$#BlU5thMN zLzqzk{`Iz~t4JxSr0|wIqBPDo5~#8U3UPV~op<%08BaCvcalIy{3e|cQ&VW6Df9V6 z*hunj;%kRKQIOUBL@}w%kDK=OCnx3^Ekpj<*z~nrNOrD^_glaBIljKjP%O$X$bLM& z)_85Bk(qh@Ub>w0v+S^_BUNjTnL>zlM$KFSyEmF;D2zKiUGF%Radc;=1ViJG5}{gi z#i&Un2#Y-gh9>|l?R`>q^HRzYqw>!A%T}W?dIiLuhelM<6&BZ~pYsiJzGI87ZiyDx zq4X#r_gBbx*eW{a%%&#yAgArxH|d>m3$L|;v*JPZif=18Y|lInAu9C zXt*6>@F;!Atwe1+tq@y|6mgidL`(VbpkSKREeBlPL*RE)5uRuuh@A!+ajAzX8?bw$?a5`Sr$1KP3hAiqb zGO$k-Yqs4XS&mg4*I08MqCmZw7g|0~{CvK%+%o13v-azqHKWE&^tfC2(V<*j;=Lqe zeJ6GgxJ9{NN?k#_G$xIWtLTx#>ZScTGA+x}oj{9x4Qp*HuySv!GE8r_WKQskAj-ioFC zwPiJ42zCjD`ywUUNm3I3CG!=GPf!q&nX{-CN3w(u+=&yF-N7;UmTQP!h5VQ+(C)l9 zXV~K<%CgbQJz_KKSnqCJuHLXmDYo4_VXduL&yo5(sAZ!! zf|caxzF0?XkVNgb$;^{BJ7TlDE3eW@ub$;B5{kKJ6YkyL;QH)fIZ}=+e{>!nOv*S7@&6~um z$^Yp@{oKf_SpOue)MFJbT<5@X>yh&Yl$inpFr`kQ*IsQGlY43bHX)tN|E+6ny0ygd zMpH0giuJVvp9<*w(@J^K?Em6pn0yI>ARNOMrY)EUj{Kq*j>c}wGuHMEICDJ8gaVk1%No?DOQZ8rjP^e_?Mv8@YfkC$qF|ZqDUKw&b zWqx~#Um&!~y{d7>CzYnSI)p4Bp4~4sN<{H_u;c27lGYM7-!2WBcxPF>z7^z6vaPJ{ ztxhp`g%PiMTr<#YaOEhiS@yGl8T~rFJD7&*e%9SUS{6pN8LK{S>n$fZa{cpjw;$f% zDQD3K5r@W7dNVAfg`R}|4$G>j0C0GBQ(j?(UCifOkK61cj%hCpzWLl2^PL)Yz0+8X zT?gf?+!oyXkVRPn++u-)EzYO_puP|x{7Y)Pawv+}ZGe!0Z2L0wbzV5p9*S29a8ZXg;F;gC^XuY`>|HJnErFLj znv46rIJcV#9W?|wG;=Ni3r{$zC5e@i>hZV+lT~|CHTl&i13zT6sxyp8MsG9r`D>WQ zf0a09$)OeT(~n)M&ws#yH_Y%^2w6acIv>9olU%XLOGf%2=&EGhN-BiKX583Yf^x*1 z5!HGbhPrgNGT7dO*k9yOyCBxQ{JZ{>GO`YrdTD7@e1=SC$X?ucndPfnXX4^_OUQ-w zCLOp}0IBDwGr~QRsb;i<{Qpd2Pwx+>{~}jRahCmsDpyfNBFXkq<98~XPbwPJU}$A& z&7t>30|zFA;--%Twy~`7J1~p0tvOh=kNm#B&T-S$_C%jpLrv)PMe*r?1oBVJy+Wsl zW1Xt_9RjyVb}o8#Q8{d~YyH7-(O|lib4SIYTSS+l;3H065nYNF7Df-Y6<3RGW;cH7 zkJrZrjIjPw3J&q0ow9m5+AU;yg;!veM}wE!R+y%hRFqcLTve@R`m*PrvDsR%h3X)! z+I=_vh>UQPQi(2T*kRfV$DNjHQ+1$^G)PK0R!o!! z6G9}-4!&t!=csyA1!M}Xmlbv(RX7fuwhOi~I8)exO*w8=!x(jXtIcSHeWq?RtV#~k z@A$q0W1;Phzx|5p3bM*Z>nmw8?jz~*`Wlw(z8t5;$k#yE*0#Yy>}#}l_fd{Y10*uM zX4u~RwL7{SNzU%??j+NB2N}`^3_HV|z{aBu+7|}O?(EDP7I8;2|>Ydegfh5O0Gni;t(@6@NRoW6YF?WHqD zd&MY$I~;0vggYPa=1*s!%~Xb1qGcM}8&w_(HM z{hgRuFl@cvX7{uGR9OSWTV*^eh;UZYa&J&Gtf7|$%3G=Z*lLZLX<_2A-J51q{VcLK z!fWbqV2att8ZxV^eVh+NgAR5?nCE`4$?29UtHqJL&U?J9HB=Oao=_bUz;+m5Yo&GL$gs|Sbq)pHo z7O|28sjpR2{Ik|T0Ll4_>yo<1?5Ax&Ml#7@e>B_v}F=afjAqJhfE`f_mc{FW2< z*Gv@mZ8U4cmkGZ$C?{B;eEjvCO}mD9=LlwVF%X()NWS0Gefzcd8{QCEZy%F^4vCn@ zujSEWlG6s)RpcBWbBe#Wd-rNq*5R@Pd{9Of7U17m(tF&*gesx99-`DgoyJh!m$ds% zFxa`~-t(W);U?*qEvd>W@3$h`?NuY(gI$8%EDiOMNudJUy_0vg@=3$T=k0TD+0tx= z?F;{P&%FGd<9DJO9zq!7_sEsAAtjW0ru{+kd(e5*R22prHugI?tDPr1%KzFmL%g{(@Q{^uN)wdIKI`Qwf=QFYWNbbg z9)k>`u;oOf2a=AY!<@2ysc=chh{-Avb;!{c$J6}LTDe5ongPMxy7P#CWt$|fLA$OXfA*ssz3yb^e>-YlUzHy@guwb{BH zyPZuIHbN?cOh2PRkZ(ZSnZm4pDv3~=teNXc2=^2mHgR8yj8y#0jZv;Hb5ax5BB_0q zB1eT5C0qVmoGyee&>!`#Bco{!aB8&fx0h!tq$UkG2ar z#rxFe3Im7{ZXtANtbL#fhZcZ=S3RyD>V)X+r92*e=yOPdnWosUz1}_RA*}Irn zm*vm)7;rizvWL$WnE45CS~V=6HU8QThrI{5!l5nb{n$HP@`d4!qBO#s(z`16FZe&C zXPHjYuQzgOfDS*gNB@%YS*^xO*?siwqMo{4b(_>=`<7?Tk!yrckk^=Szzl>oZ2yM! zwlqO}Hw2n2eayR^JRh+KeH4L=Ppw@{+g3f$ESkCN5lJ33pvsduv>`)&8JTWhB>%nG zF2Uh|*97DYA>Y2cQ=`RrJfP1XF@q|G?>0}FWkku;ef|}(hxD$jTgcmF0|T~x(166u z>QA61o=ZvF+t#`m2#e{l{aAudmDhIZx7m9I@w5V-G^K|42Rkimt4>xuvP0gd!{%ec zpMGYju0iKNg2n<2143qPs?ael9((vy&bSQt8l9u=wnRGC|Kd159~}8R%1pP;d8J7P z*3@v0;y>SEw^r-88xZSnDyZu0N zLfa%%MMMf;pDqH)cLiG-mxFR$7C+%P)ZyL}{ENqp^jyYbfsUypt(S1KzNJ|VK-!k=iG*fW? zO!?(3_%YsRH!ls&(Kv!;@+<)&$hPdilp6NOaNkS!f-cojuDT|{ql9vi3O@FfUVmaU z=%ld?@)x390nB9$R<<_3S!6QVJr@jWMbv`}>7lgtVU)&b@1Ybsjkl0U z#c}7--KVd1T_Sc9igkMA91)-3lDWH#>I=y+DwWb~H6WEPT#9DMZD^>IsA zaP3`vLl~bA(k}O{TWVtCyetYqmB_PY5XgZ`F0q#H9fXR3a$Aa6#qp!k*{A*KL=iIR z0<%YP`QrQM-!~1`a?}o>q0x3(7|{Y{uEO&r6pyLrJe|kX*H`p+;4B31R>FYs4rh!g zCwyNG?j^>;^;&Mmx`M6e{h#`|6S#lzBRLk|D(nbEwU1LKgXyua!dz$45d9o4V&Y!? zH2Yt8sb~K$X8g2nJHqcSO@lEYOC>P@XA8UEMF2)Qybj=L!1aIPoc{^F`isE-@8x6s z59x_cZ5+4u1-k(dO(+|oJ^_pZ2=sl;{MQ0~R_?|vr~ah}C=SKqlrKqCuJ&7T zRU#-ujGqBH^reXbXc==jcfN{SO#yK3P%d=}!q4@J(EJm?Hg54bShDgA z^}Ef0r(pnU9t_Y{oRu{938~R?_?&NsDd&Is6Tgcr7Zyi<1jRFez)CqYFHwCaw zE>!N;Nu0xe3HWgDRFLKL64Be74BQFG_nqtonF#3ZKlp#^g;2V9`~Yp$1^6jzV*C8K zVBqNm-Dco)HzkfcsS8-10u9POw2NI#9A9AK019QGzQO|ZyEhYh&?o8%>CWuaN4$|bFr?5Q(OKBmx?=_*khJ3q%pzG5KTKaV5RlN#bxD`Y4L6&OopdRB zwLBKXn~$inVM*_;PliD`32t3B*PA%a$l)r;o)o$U+q0-4rZK*e z6a;9Ty&6<(x3P6EDV)C;`_ZBlu@q?Nds?u7DB`l&guUXaR`e2#5ET&i?#*h&M$4P0 zaIpo+mB9aa=6bxhT>fNq3u*ZU384(TP8p`As7#?Q*OX9yB^jAq7(Wnck}oUC$Ko>A zlygd4L1|b}d{&D-`aW7E0_2uqrixFj+j*@NJNLOADs}6RKWZrtF?GiLZPKl~P9X}N zs^>gd?loS|uajoGE=(CU>ydT|)TlbU^od0(`|^dkM8r=F5HVV1O5vs@K16Wz>fXM~ z%u>X*udIgv{9}{hi8)H8cguPJTMaul7;tlSOVDCM7?;qbM=c#CwI=y#Bj`sL8IQ<# zFrPWG%L7A zprZ0rF4s@5j)UMg4}%n_$f4Se$n?b)F8LXsYY`u<;K)_Qk@|iT zAu)PaF6_zrdk2qB2uy7%OxD_^0iF$OwCIW(PLm;Lk7R$L_1J1<%Lt?)5OXy4)#1&J z+axgiqj5tAEM4TvOOgyVFWb}>%P5~Og6GJ{>Siodjm=<#4ogMJ2eFN=TS)9qIr1~5 zstLsra}z*c6`^=N^mMP|e!$Ofl9iAARnOuMtkGT}17U*+Xl0O*Zt$ zdc)gZn^>5{v}#pP8cYN|23bw7-lr&K^L2T3cI1}6kM4`-e!|N8cKqIOU`L}mbo*F} z7X0J%hfi1Qm&o`jQ^gXSAcv7k6>l0cl@d#yP?v~b%sYL(!lU&{PbRcIT)OVz#)X5u zO|4A3wHrCekxA#-(=r3#+D_Y;n{+079SQC?>kU zOhXQ)Pt1r`eqR^g(&MUoO%hJ#^-^m&erLvRa*!QcNt&ul!yenp6rH99DUI|X=NpL3 z8{s3oYv%;^cn^zJi!v$0;S=J=3_QIddQ14NXCSaz@8~2BH$ASxnPCy%& zG<1Uq4BD~j<^)cPttd#E5+tLMS(_Xo`p_^f6d0MKKRboX&5ro z$lfg|Dk}k)kQ|}1)^Y1rgN~BZlsvn4x~$-0G5cEn)=u`>!9~+T?KBBS)%U89YAcez z_TwX16Tk^SFTBk}4YBJBoySVqLd77om(@-^(z`RpG`IQ4W|(@ZB=Q@D`-~P;T`k`{ zCVh`wktPv z4m&;&MLhLxHevL!4fs6ln``!a7%e9 zW~z2GBy5*9-lVMj)RKjz;r`sj;E05H2|uXZcMsLse+A*Ae6bYu!Cd9=kco4DJP5t_`MnkAw2@WV>u(`*?{(KosB#98L8=bQ zU-hxe9A5xPnlLNk5$`{-@i-eBa{SPsoZ7~F8goQ0k~q7bCZ-I3aKdJ8Phm7r8ra^O zN7_4iUlX*Q{Akd>$kt#rK@VlH=w@9fk%_jpv%^~cj@%zv7WlhQ58Xc5lfi_^yj2%J z%UkRA9RPSTgA+TI^u0aDUY)Ha5kB00Mg~>+B;J*f_NwvZdAF8tYtLN4%;!$TD?9qm za?WxS+s_PI>#Bn!<_2U})#xgcgX#KI$g418I_>vr=$UrDgBY_?wqSl0{sRiPr6QS} zYHY6mKoj7X(T0F+Wi+3_AbiJMG1U-|~x(q697wZoeLrsRyftm$nRmXGE2Hu$B z3)Pv=m7niCRt=xl^Y+8{bN7o$dH2uMD4;ife_MYo-?BQ=)*nTGvW~$KH+3 zST@;_eG65dPCC>+3E-^QYSKKx?uE_b6*WI9_eNB^SDX$!&FHVH5NZAqw4S&eTY2Z$ zlohf>)$Z+wRi71~ zrOW0tyHVVAZxhCyA?=OLvMHIA6k#Eeicjpt>~9=V$6F|xQM+}&90k8=m>5E$B#H6a zPz&l`+MO>H?nhUf-CK*j@caZgpg`gh+FhBLYy2ta*(3N`pTkwPWZ5^y zNI$?p!ZF?igh0Pr2%PPO+0cJY?*GCV|1cywFY#^DJsl3yypUf2Ee&8XUR?h_2T=S! zH`wD<>56+vL;caCZJ$?tDl$}O3Qi}2RIJ=sG%ue&?2yBnwd7?O-8*5TJQ>-|hfz1x z#E9>;la$eGgw`{(xSU27$;An4R9I;04&>7)o~)&S5_5IDeh3|=LCFm~W=O20!qYSM zkWLHCR@Nt&D1P5bC$(fuw~)=*^R)i8{p0!pVA=q*VxnF%m{XpK4sL-%?vif6Ix`J5 z`leRV*R_2{9q^g^=%r25MJ;{xJLjjyzglWlW=^+GP@ATtBt4YDDEt*5O91#Wb~mE1 z=aT6G@}x>x>Jk6!CEy6?dFl2^nPCx&YmAIal^rU#z~;0@lxDud|Jb1@aP0{AZ6M@k zkf2Iqe2f2`iDAy(rLbF;eQ$cdX_3hh@lXHr6Bnp!&Jf#bPP@2$dV!D{Ps3MXq!z}# zUXbSk|Bew|Nv(Z?ixn&y`ki#3qFzV4sRk#!TFe8W@vzCg^G>7cy0ACXb@2%?OjXZj zNAkuGJ|`O^@*ZOXWlTbLKzp-#?;!{kZ;?q$>%(Gha^qR%cmOr`{M6jEe+_Zxe8Zw6 zCv$!5GnK~BzP0&GIVGT;w}=#9JbR~b+oxAkQ}c*h&8x*7x6wyijk?_)85td$+4ebV zQ#Hp+M-2?yK5CnGh#(e8P(#lyoQYPKYMxtf%&z6u4X-5BAgvE=?KTG5E6G!aR>>RP zwYWG;z!8SF-IMwr8|c&n-JMWuSn{=W=SpTVw-Q*MBY~dO`BdyBy2}f;HN3q?92GKR z6wh=p-eqT1nZ13b4!2*wA7YbkJT6sx_S~a$g&I29-3i(K&{-=if;&xWz^70x%a?V! zdab^d7S*0Gv6scVdxvg%zZN*>IsOu5(DE+PKwOv7ebsCU>`^=ldVop ztFKUlQpYPFqR{3=rCseu2e(nm5?D0}O*QWxwLhk|{azir9#DhSY%QO;?@=zciff5$ z3spK|%eBzHmx%Ug{^+`n!tE_oORYOz!DYDZ#N$|ciQCP581bSNZ3 zSRRlIP=m!Y2~|1fK33i=0Bt)G;;J5^$TcGjw!yg z=Y8)t`EaRUtOQxP72bECeW+@-A zWZqfI>ju%j2cL4X&@gU-*?fGYxXJ$Js4D7u{mkup;v)_{l0FJM=T)EJ%9cM61hg_0 zyCRcS_C!iUNHg7~6Ak0y0yCBXf&Lskvbds<9!%h{UwSn9)m~uY=jaX0W?)vHrb9x? z5!sqt_f5>6J+5PKBO-Xeko#vKsp6)`j?3_DgEyyn1`NlTz|SO?Y9nD}l%8`)8loHm z<+4XHC{bdzCuJQ0p2LudY4LcgbqqKXAz+RaUuCXkCjmnR$Z$ z@_y4ERrzb_#s?z{>#{Jk75j&>3c{9pVv_l6}@^=DUGJkzeaH+mcC^_FXbP z<&Pm&+tw&yb$GZ2q(^SR`Rk(+J|CA9r%#ftxv!1$X~SuEb|eG)S?e5(-P-OAM<%u4 z7_u4dW*A!smT&2V$v656!$vv|JfdC{@!HWMVpIGjjJ=#zjoH^`&O%?A+V6q2uc}Er zZWP!pdRm=l4XkAH$9Tmo^_B9Y#Ud+d~zaj zP4bNW3e}@SGQ5r4161Q2n+jZUHr-6R482>$&0_UqaQNYiyP9vkA56r}RZax9%X_>z z92Kj`u2FNab5k+YBE zs_Kj`9wtL9*G{oJv>nX;NNY|P{dS@|JRG@In+_yPoatM+J3;SH#oX2z0U)u84) zDFjr0csO-H+RhqWbIntB;!e$Obh1S%nczsR$WLftlbP23|u^Z3qfzuS+k%4GVR5@ zD%l_GqE&uvy~{adrZu@NBTQqFhVdxTRpSmK+J9D^a{RTh>io??_3(YseSH`I3hAMf z{oLj!*rVqL%`QrZKK)f{nvqexJre|goBZe40w@{!+w4xTAzU9*Q!{zuV%V9*kvrNe z;y*&Q_N|YWUPn)teuZIJ$-!p2_Ag#PEcW9F7;f=}4+*U@E6O=LlX8YR3)nF?D1Uuo z=e!uZ>y_C#&;PyhV3%9H!bc;~{H!9XM`N93{^iH$gOW2_u$aK2Mt?f^cvDK(20&gvOr=V@O~9Lh7_|7KI4 zT_v^cqB+$pE`-<+%$8@m^VJ<;z}(aP9y&W!t$c$h?uhNrt$SL}Ff<|iKIrI1IEQ2G zMqrsK&FybGm)c#f?r>=6FqGcya1#JsA~uiNm^rCj z&yvVGH;`pBOf6|@r(92L%eSQmi-0a%xJdj}r{^uE!*B}*ugwuoF?S@vW!<&Nb~zM~ z_`drC!S#m=@hAry3!E9##|WhmaV-I_Dw$4Zv_arP#+L7%_OHQD&gl}%>XLN*o(a-5 z|5Sx7H*5U(uu&PRO%f6y`=qR(2duY&=#aFq!*|X{{Gt=~&f?>jI$wh9Aoo%;Z!T>g zh%w5qP0G(qG*b@WQVshjy#5f=tEpN>86n)+EjTUR?wQ8UXal1tU?n{y$-%{_AnKOI; zbnexwdWY-Hl0la|zwkUc0I}T;4(-M;gR^cSXMs_7nm;#iSDQ^ z?_E=6U16s+aC^#e5pGM0KH-K#@BxKBN{*=OVr1x&>@5mv3`99gUw^Fb)ZBhv*+tC1 zV4(dc(=xDWhiJTt0v4YqQ}?)%gRoc#?S0bHyJZ9sQS2+VL5CitMI4L;?PX+&?XE(; z6voG`;m4AiYTY-b>AGsJKiQv)4igVD@O zxfg#Qsd)s5+T9&6%6G#%X}MgQZ{`sZ4h3sI-cq#8|H#Wk4y%SA!+L zGi20WwlRN3T--(OEr)`bu-|{QJ_h$!zOhGRIi1TNORr?~Jc}<+T~VZ2-ErNH>*j}I z_)~x}ds$iZ{dY1NLK_H$OaA88T|mk~f`wWuaY**;hlx2Qtpm%n)NLF))3L?ibKD~z zC)|oawqFgXwu&SZvQVO!gRJ&fytW|NnVly&mwIPEg~MMwk6(8CAjp;(Qiq$wx~#Si1qY^=RAtw`O-}fjYqIQCQxz<;;-C}IE zyEe7AFyYlykJ?quf<#No4yb zpEUEZ;3LmkzIL?Q%PR`uP}j@~k3Q-4HW{n@oA0h#y=Rv7eCPP)gH3^r*Z1Z=Pr9(b zRiz@eTrQ*^-xofJgX>dwkJ;udvS}K7VGyau9gTxuf|=a5?mNMxajecjlbOPpgjKXq zBYouY>j_MdjZdiN6ErPOP{Nx!@0Eaa_C4B;uCRxZvB=50ZAgZR{VpO+-uY67@J}Q6 ztF-GsS}~>8TBhJ$4khY44##?lWOuvN5%0&y_1Mdr9VBRzXwi%$2H8?L5KhEP+nqLd zAtG%GUw9<~RYqXdxAyxGq*UPasV;B?7|^k2V;3oVJsttGD*1OW09oXA1Cd=uZ<3>1 z&0|}%)+Q$;%K8m4oj)6Vv%#*xZuG9{4PSuoEg~KCs+62{bS1{&8DWR*w4$DiGpC7J zfmLSF40CM1pIAX1s-R*@R~llK4pJ2+;YX3~o2TR(Gb-budYmp2EQF$6Q+uCZw`?lo z+zU>33R%ziAonbC+IsGVoIEuHskV%5zRGuXFKAZ7zzj4)UTk2m?$$&~iWeV#Y7BgY zcHLjso(q*CL}ImKz=kP7|C3csswQFhk z=FOL8^lqFBub?xccrpC(N5-Nd@BC}C?}M0AJ!t>8@M0@-&~2Z!G4TII18TO*i}sfUSPjcPPX6e)QTKal?0INs)Ln~&pY||wKMpHUbT?| z1|-@QS(enNdW;1;a5+ybnC^ahwvGcjLA|}RgD@hgMF4ox2z2M=nke9`GE#*lmG(tA zwOF1mWrmZGsBVzPx^yK)(^m!rq(Um5J})p9N-jS;Lv*qBCY|<#Tf1Eno!liWcI` zpGG45ruZmIxSQB`1AiQcP@alsnt{y9l-J7)l@&Vg9&Lg;eZmgyohqrq|Pg$OKOoNzzoVhZucU3AutxlQxp%S%5en>{Dt^SCfatr%yE zysA3aby^&B3sX$z$?W8Rde{-Kr#QknIG6vGDq1^vJSp(hqF9Ose)NifFvDpfCg4Ad zIix#`jSmgG&r>HFch_J2JeB(mr2{f(=X9aUiSUcEa-=Zxk5iY`i#oZ;ha)VSdq>h& zpBPV1&ZdZx&6rhM8-g2F0@P2XW=+ygX6Bl!BP+_-qPPV{AWc44E-QNC?IeVqB8qe6 zZ$CPQm2*pLv9QakqI<0y=;8*!RpIvZx>3>+<% ztk!@gU+?6aAcS}4yF2jq<^RMT?f>r#KCCC#JO6kXEN|af29iQy%)r;c>;Dn8&;R+( z^xwbnzjcw=EHg5(b5$rci!JsSJ)X^-^s%d$aJ?#!9s#4tnh1^VBl~N3^Up$>bCzHW zv3g8EBnEf|8XI2wzU@ARq(XEB;rnR*Y`gRR{xWYtfahNPD!y03m+Pd`%l*(60V$+>aIv@g4N@Es(17Q$dhDl z!spRi`HoA$`#(19ID0^*zE}9Dp6g#xa#WE@MDp0L?R>vzKc{vWk)$aj4?`^A<+}S4zeM(PY29zuXJ=s#H_z?65*2H!TvidF|pr`5RbpWbfTlUh*$gOFe zu%(!i$v#VekNJVD3x;=7~Vma z77(xSdgDujxe~C3;|pdTxeI2Rq|-q0^a>+;$DP1Zuv911$aYug%pBa^`F`cpPoCSh z!Y6>dz+5lIE(_Duw1+=gi=+F4<^T=Y;l)5cKwD%}Tf8Suj3$64xV#p$ZnI)}|uQY5oBp9r@RpJ|}g=ztvFTT)7wP5EdanX+G(wm(AD zr!jQzF>nv(;}!Lh)Is(9(yzBSHim)hteDsGT2 z={zr$X|@@tl?!0h$$ny!_)6 z6!!fuKqLw6&hErvg_z&Gho%vVXEC zALuRtVe|>c5Fm79@9Mcuv7%z*_(f`UOp;r>ekkyjQrCQf8T6!Y-lSz~d;p*5-nVZ~ zQEM1Dr%KM;aJowe+X-@=k89?VeSITQs=4?tx}rrc{TWa!urFrySp9|vp95OQeC%*^ z!tb>{{;FB&!)P^rOkZ9i zC?xU8fB>$Y$<-j?iUkVBtFmEnv~(;HdX2^c=+*~l>Kob+gD5AChFG@6y5Thh$u!)1 zKehB#BK>>pxV@+ed%1_`#xi2mM_A9@j*+eLTmp;KVW@mO$!iC-*Thj(yKmS- z=L7}&o$Xk8&MV(OuL>xh05w!7bD(rw(+av}WXPpf@QQk*u(a@A3<2h{zjI@}LEuio z$TiZb-TD=$w%9j1mft6pzC=pvx{27JL43`c4JtV0#QGD{aKAeN?~XpQskXR*!Aet2 zsb-yc#^AyerTqh9moR(0k$|uG2)u#+SvA&(%3HEGCY-tmhP&Rn*P5N>RA_~XzLUPx zJS8*}$WA$&x>^B7r!%^(_e`C=h1j5mN0yh5sWm0u|AZ5N2NbO??77Rd-tOg#Hjkp1 zGF8E5Dc0v~6(_#gPA;ej_?~#b9M{F3eWx6fl6rNM^*J$*%_fg6DK~xV$wSw)0nu;I zMeYsF@bo!pwG5Kyf1Ny0PqJJ6zB0Vr%`7o7=5-LJn7;aMrS@Ks?9lrMN^6pduYW}a zb4Y3kq=(NbeGDwKxH|MMWY^(q|FmP7tbsIR5%o1;1!bil9fuL5tV@mKbRGDzDNMPW z!J7%;%vZIu*q{34V)|vb%Q56N10QzV5dOy^lHE5?k9H>iweZ{l79KmT@W}-xOIdbK zvvu?_=4(PrXDWmHQ(L+X>d2iS-Wka?!+tOQqnpr0DHgb4Y*BDyWSec;BWqhq&zDQ9 zE0}AjMQ1~HHlyR`mj-vEKh6VY`Wp6L^ zx5Lm3SZL!kDgbeaqGy4tJG4#hQ|$%4-@}IFB06%HS@(~A%*Z9XK!hJy%_F^zVgm+n z2Dh__4>bIRB^EXe#fAyEZFGm+FB;@ptZIFx@JFlJirsC;mphEKhZpOyyC$f@2NgrQ zZu$L3Z`anFv!|vTLQ>99Pke33tpUW}CqC_TtFuXo_fisqzOb$5(-J3B!%%!vF8(x{ zcNh1S4*%waErF{e9rrn#B1QuLH8pN8ZL0R^Wl)stukdWSJJ7vbaC!;r?vFaiHEPdh zt*xNfeVfadI@U8g3lDrUtO^HwZkG=UIVOF2#Uk-V(vensj&_9J71Nrxl%Huapq=mL zGHeftJpfu6B)tm?a8pd)zQu)ss5AX4ncthQRc(V(%KXfnr8YQ%d~mUam^!)UCqwX; z?TaHPtis-3KayNSNBF`?lsmiB9!T>tm$mzee(U27D`asxrGCes5@OPl0XLO^(9jxj zKa%lOCIwDeFF9q=`GX(HR@aRCNg)l5-X=iRB~CeK{X$MI$fL!HS+Xv~pa&9Hh{Og0 zcU<;V;IEd3mDUXV^NW#FC#clgDya(#)48c-xXkhODLRgEdU~>M-ptA0h^W9-(sZYL zBKa4k6oKzOVUq7^2#eKH?axhPrqnxYu_!D9CyyMm?!xvk`XjankXqPDt-8~`&(x;P z`Ll-8cJ2AFvT|sHxcKmU(i`H>QS|ukynz#`yetC1Y64AlY6Su8=b03K z;=TJzH@Qn+zPdZF*INBl3h}#sNOm&l%(^^*J{cU%!5mSrG+OK(rZ*BtpZ3GZru>M> zBynqE{lw_>o!r^)OZk)}O$jOf?9w$)@TPif3#?z3-$$;({*7AvWuT% zza6(l_Ii@;G6_TPGRte)X^T-uPZD7=7PDLtvcB$1^iB#d;!)Mquxwes`By9G$FDT=Rs+4qZ8~=J0Q9%q%6mQ{7Pc z)4NNZ?;wk`|2XOUe>P2*8f$)HoC1;XyQwcocAGhWQSiY$nr&^JrCF3K#+=Z+ebl?3 zNof+wWevM^E{ax%-l>fIt?npawBZ5TwC;~pME1_Ds)TcSOKGR11h1qy5 zmXfE;#Db}8yU*mtaJqhtc?e^MrH0~H{=eMEgE^!*Uhw_7=-#eCk-h$d^9?bOlir#m}P}7 zJ^goPq18=KRUrQ(o%8kvwfQVb%uA*vQ2BH>>?{X;nqfaEM>2lf-ty@IZjFdhg)CXz zWgmaB$j7>p6cm6iIesk>$Hc-p1gv4*J(ObNUEcv6*NR!O7 zoXQvE;E?{QO~1CBHq@lX0x$fs+PdyGDLxI#qcRXT7nq=BX~gep$V#l08FoH$lrZ*w zz-G+%*)+t}-T$EB<$&Pux*D0@LL;^0_-J{On0jD7RRqtLOkowbevPo z`+LiPIQNtOh714j4t)Qa13w2CNdM8u|0AXVUjGrB*T7$CeEGvOV+1VxcX>L9{r`ET z^U&KL3f(-C-xP^PV-6MIN_2PbGo>XYsN7|J)%{`zrz7U)L=HW4x7_h?#Qe&*iRew2zq zShI?V@v{Yhl?Jmz=LfMlk4uTGHT7aC>D5F&o8gH(%;FME%Cl%}0vCjvxr4o@ex~0f z`fBPtf>aa**AzGNQx14B6U}AsQrNkyXkGqSaX1y!t+Xq}ed=vIjve+cgriVrq=4cI zS#Exw{qIehk`Q*5!TP_!e}8o03Bm^m{=+37T9Xsn#=2PD`77r~j_xn2-y~U#=eU*k zNq{%Mgm{jG4s4Mep`m_(uDdP4C3b(Zd*0`O;}MIe>twKiGd?n~G{k{LF7t}>K@&7>mv)FCKJ*tP#-Bx8#|y!7C`9oWQE zv06&Khd?_|a!HsOqRu9K5ki`ma(A!YgEe|Tb(ns@EfI$IJ7UED8ol=wZMPCpaYZ1g z61CIw;YWFEVr7Y0T5MVtK8%MxYUccHs$)_se;4|f{#oJiR@O}Hu?^RhJLgL4C#hnL z$OL6d5)iYLv;R_08r%d+qA2CM$?}rT_vAGV43HiXs$=)3OI%c5;JP zBIO4hrX?IsqPOQ+uYc{BvElkSl$K}8vTASsi+(R~G<_!9s$pOulE&bq^z+hpb_)`4 z3%<)y0|9M$mtKMKuZUXFT&Ja~pX*FAz*+r$*0YTrepS7^1DW+k>tf_-ISY2X`AH4}TEYAwqLf(n&yu(?p827iFevl|-xB^cwfU0N<5 zb^p&?&|^~rBJ3cC6v7r`&Q-BOCHu=bV{L6ud+Id0T4P5%*WTx5rln2-3n#d}xMO8C zqX^%v?!w+^_vHR~TN0$f#>ZD`{UP`XB zgS-a9-%6dAfoMca*)}5xFoCf%rPqUH0~P27R{Npc;7tB3GKI3Ts@nUaGCwP?X6O@B zOF&_&$v#Q5FH3$KOx!J7w(IlS$JIcF(=Bp(0A-0*JP0`LEv^VKPp9Dt%8EDhvzv?T zLgz2-z8#H=5pwRQupnV7T(NxUL2VXgq0hr*7Pm5_xE>p@V!y#aq$v9!E44#BcC|O{PN~uhP?hI zr7U^m6jf24p-Rqm3u9NRpk>4gh9h6~OBcj#o0Vma8?DnZ(y{Q4uE%KA352}G9*r%6 zd^j3PHRi4G^I{1AWAiUj0w4$h&&>9@mj08oPfINEgJgJ-L`8RY#yBpeR4ipPHUzK* zxoBCI85{&Ym0F3tYb9#N7#9$TEL|EM+e7Wo-&ywmHKdDZKHe6bMgfD=*6{`nFN0Eu zIRV4|F1o{tVVDUW{>x!u?=BI)$IJV=y(L$U&FqYXdz+qnr0%yL|K)CYnb*2XB7;Ei z?Llywxv-q5j~3OgDZ6L^fVu6%fV_#{tja zKWA@%y_tCDZ@L&e(+T&361JGCT(d7uOew`H76YXnlm^yBBsb0GOG-i*veuR){f@f zY8pFl>_RlV69J8r49>2Ydy--a~K&JL$U_e#VJe)Onzt9m9_0bV~nikPU;=8AZv zs`b1O+bi*a9$pbgwDs>2&3y34m@Rs5G9zLi(E>wx;gA$?8QvF}ZW?OAzA?6Y-bZy{ z^f6STm(Na)WaTu0;(7h`)$swVMS(dswHr?*XlrGgjnWIqfLrePN8mqGX4SZD^``+- zt>{JA#N$||TpWBKZmYA27Iv;cw+sS2BHaHFy8oPcOaSfV0VA|{o$pbM*upDddE~tG zw;|K(;7n|K8E?p0$GNv1_)Bb6#S*pj<}|8*uY$1Y9Km^d*z+8ZUp(>lbaVFF@`XMK zZ4dvp0(3g8YogVI&$c^j{w29(y54^@xfT9iyNju{-Up6IucmO9{4{AZy4x`rMH(Ln zo$E_@ZEM;Vb2R1H#sLSZowxT*MrG^JjVnI$Fm?D7n5Ho}U4N@Urh@14?A11V3z3D8 zdor%+#3_Qs6ivLPWn!M6TQLQ*E@XG?Y%B}?y`v!EsPUvojJ0s?9oB>R{UMxI;RLgN zK`OLxD~_l9^LCTgRAxfcShC5eF4*bu=I`ure#Xg^OYLiz^z0cMRmnfg-oeKQ8?#dG zlB;6tYeRa8eWbM|FRGXuvWSWFwyICkazi?#$QwGENmKcU_Vj6 zHD_M`G3UrW;%ybpIh{6D-}x9-Tw_OrQY%adsh<>N?~7J=uLkoQFbH%9*{;j_)Ky}u z>StcKcC22YFpzcdVIrje__kbL7ON6HAU;uP?4*~NFAKIi<#UN(+cU4rt)Q8Y{230$ zxW+Rkxh>Xw^I9J#ywnX~-Pwsq3Kx!}fTgAd)Q|s&WC#R}mviI9dc`HF7 z6CJnvaUu|S*zo9x=Gp~$Dr=67IC!p*0ky;JEgm;Y>F_^xIJpP^iv|j8bI~n#(1|QR zSz(u}hK=la!`SK}5~@NMJ@g_dB~`*8;^LKD|*^@G)@y70zBf2TBIxd^OgcQ9g?EB z*^0BI6rdog<6rM`MuqTBo&~6#wZ2JZ+mvbt>5@+952MKm`W4yDinQ%N=v$>S6 z7D)2R=B;!=WwJOPX$b7x*c&er^KqF)QtumQH{BZesIE~De4=mlNX^#<2?hcGh_&(! zPrCdMLuP0V41Gc;N>06}A%;Xw@tWlA-O<=ZjAFT2bMd3 zIw-eACEGAyis-V*^~-Wizw8r28YFqS@HvW5aV^6@XIHSM_9VkQv_Cc(jA(N&Zjk)d zFMO8c`O2%vBgJsNY16WD@8_W*ruUE2UB@OYm5}d3J3jy&P69T^nN4;CxQV z`@Ci#J|X%VWzxP7KKx45F7{!A&mf zguPpbsNiT86i&kUE{{wiXluZGEw0-s2-NF?g@aB6ufr|~E(^3gtPXUq6B6lRw6vr6 zhZ9NDQe;zE;&$#Gkg_@wFeEoV=izPnk)y3yCdll~i zK{bn|=z8+)@g6*5>j|PXbE>Y@IA_4)!Mv79Qs3B6Jl**3G9zu@;vt-~x+^&6=v~`u zj~AVvAME0s$Mt!x{);K50;;O=(kJR#?wc6#$j~5WiOhus=4Pm7*Z8X48fjxeVI(uY z(v!6O&(5{6`z`ebilKpsTJK#I_d?LZUSv)JDH#OfI~)NTEMKLzW(yNyVYm9b-9Cua zp_T%$&VeB1m-uypw)?6tkDzxRdb4-rIUwON8=xR81FXk(Q$eOU!*z|)3qT+c(Dtg(@OIls_a>(-b`+Bd2r`Fe+)}aVV z5oz9M=Ev~>RHHiXgUPk@nG_Ak=UH3FGz-$Ecs(8+z>UbDtG<8Um4vi|_)Pe-rXDk? z$WFdYD6m-dSDmDrlA9_MrWaQ#%?Uv|W5p+yT+6k(RNcj|jGFRXk0W@6(IXiOKE}d) z3}{DMZV};U-!lFV>|K2Rr~09(-c|9nG28v}U;+v~=4CrtBx28wk(xTHckSeyMXATk z?XC2$v~&Jo=WveOiQd2|Fmd-aTe-mkr$UDQI#p&nW3ATiyIsxP;JYM|z*ooum-rM^ z$(2`8OgmsK2BE7jNf#D}8n{Eg)sC-9nVeB?yyCxU0** z3P~vdcL_7g=pobilHW3aIj3VRE~EyAW7;V?di$@9>-iVK?O`1=V*RoDN8k7^)nD0j zazpZ}Aet<39v|fSSkPlz2Zrt6z-Pwjtmmh|g6*B~U*I!fSsJAL56q18|5@jYF>TkN z@7|gWmkxuapQx|iaBQ{}ZEopdt0cR>axAGRGcM~2$AbT$PU7u1$6q|ny{T+0Ah{)E z|CgC3Z)T#XUyB#q@s#-VHsLa+z$H>BK#Zd?J6BpjfU3)1Qs!~hm&1D4&FAzbV>Mj7 zi+WM}4--0?zPVbA4s3;@8;NsWQBHu;VDehl;EGbyc7LcH2$GVy_oE?j#*#c1I=)b3 zrN}-vd_z47cJQVJxKA6^ChY&HvjagH=|QEk&SNre~g4tAwhUY#Wp71ovWf{Zn4g#pV@r3Yc#$0yXE? z{fpHLcHRB(i1FBDr`R3ba@&ad)UWe&*?pg( z+ajP|0e{uOxd$6IT?HtkQkUpZJBtdbd&@C5&4l-^>m}~w44%q;0t&xoDD4M({9N8y zj`TK0!lA0dpO#du4b-sB5PQ|1%OS_8RQyw7I&vp`(+ z?xOB?n@+{(6XSBwvt5vT_%C&AfB)S44`*+_$F6b9TWdZxJ)JJNxp_ym_t4w6yQQ}@?}&F^+v!|M+xx`c6f~b}_ZAf3 z3~ZK_^ve3S*M85RSYIO(C*|SABv0HOQV^SU(qdBtvPX7}Imindx}5dkx&uE1k7nZn z6t<(Sn9lGS0rOYZGZ=Vdwnx7cebw?MQFLrEgl_z9lHg->hqUlZbNWN?{-VkW5bZvy zYGFTLtYFciDSeTdnWc8tanWi2U~dQ~>jhE933kbh__|13=$q%J>o%C0E7=--{&D(|ETMw7DH!pZakNh0Ko(1zN;&uoPwtobvxg z*IEv|YJe&8bWNj0anaDltq7|IOgoK1sv{HK)R{@1|G7rm z-&g<;>xmK1H>aE6PQ_FF^b*N6Qa)%eQkpDlg`ML!AyEsWYLI~C?CDQun9KcPz;Z%$ z>k_WHEoXncOxEx%oj!Anew;ZM-_u<1!!M+^VfgbB#ddk0PT030ZVj{Z3b+mOKhN*E z6`nBoaMZM<8@{Y9M3t15*1jAzNON&p2REV~b0WLx-)Qv9-R3hk<#Kw6Def zEEN{mTW*ddri>y86R|9tRG#R zVvg0AtgrAdhC*Qr2h&!X`ndwp2HHVpo`bnw@zLLBPgMDB*W_W|CH{d zlNQjj*1@25@5XdY0BY^4xo#@wUKBr&kfJaB!E{B|Ug%&awswYI&bxy$j;$>uCGC z5!QNWTxlQ#Ij%EheB}H67)t)+$aNNjKpY#Rmt-!viFTM`GBX?5tUs|fA7_exk(E`FC zjuqV~Sw?r-JILXtFhTHR%L&>03ukjU`R%>cipJq2ZxLYMty@fMfCmC>89_(=EcCy8_I5N` z0I5j?INigo8~D7vCZ)S+jgXQo;!tuB()?t(-XJ#+N zN+tUF(u~=#x{lxx@fxy!* zQkThaJRfL^0Aj{nKT|_Iy3(nveEBms>mzPiEV@yW zPbZ+fsVlo`3VuAi0WcIC@4Zlov<;(;llXrzY787=od;Qn93Tyvw?DXe( zr3^PF^>ltWiP3VW*Cy9}5Z$6kcp>;Z zY}_)+^w3*VnU1v zDuo2vCuKzZ!QPe?MXkH4OvyP~H8u<5eKmyGEVCodU51$##bii;hhWG1k(Wk`@skEQ z{~cV{5`g+7`S``6W0`bn(6nhMT4KZmn8uROHPFyrDqQis51n-MsrColojd*JQ|!2X zVAI&Tg(1Uj7Ra173$v(ut?2&-tJzh4_(t#v{DSnHCIx^~3ge*>QT=&#L}y9SljF}g zOHFRaYE4tpXn|eoN(r{(?IZheJgk1bAU@2r0<27NkcSzUkcD068fB(A|pko?1`%=Zw$9V#rZ7Jx{ zwvcg4&;~6o>DaWnoMl&ZvJIfsl;F&9NMp$hs1-|5m1R$loWYRf6EUQyZDXfrOuMsB zb^V+2Gut>PIII2M_sa?{u{v_`+D94`Ie~4qC#%|e=5C)~IkVIW@Rd0N1*d=jFr~yi zPu7=cw#Cxo>AsuMI5DefU^HlB9s&`y?%4S$d>3a5H4`de*tO7Vn_hDdABu8-KjpMR zDT!-SA6a;7J6O452Hoh&e|zu=RETj@Jk>=x>8%}$8jh!J#07L&XWbk=r=C+~MY0+> z>P?j|Ofd40G?!l;At6s4nwMRQ8MhW;+6#Bg0AuZ=GN%_9-#;mn%9mqfHZe5LCMT`? z_r;z*{GVBehiT5iu&$P^> z;O^|^`Em9Zw~;%6o~ODi&rrzVo?_jKfnGU8UUz@c9*xd>bZWMGoz!=Wx2{mEOM;qe zNSfTi+vV>KOlH)DpO#PHfvqZnv9;DCYC#TUlYZOsk!RgWu`_Y)u{6A|Xl#T63=}a%6~! zZNM;1?sUJWEq@1(gu}P_+<}GxXaeE?q5OPtNCH zV%!L{aQdipIM89gKY_e{rC$2nsrxDBroom(@+y^4&ri4R%fMb~@FCE*-Jllc2+e7n zUv9W#A%3?fpgpB?CChhb5bi8kB+a_CE`%`jX!jKKR`;3OJ4Ekr?_U^UjDkYpdRL4yw726fi&0dVd+$oRQ+qrcu}&}9CK|-0!@^vWCJS;} zzY`Yvnd$ktQ_R6lI|Dy(xRb(FOzh^q^KhpeH>y?=rC+@><>>4nt@mbyb|uj6SPPzu zI-WS+LwWJ&6Szlcv0qETfi2gKt=8OCXDUrRzCN!1HuaqQd&tsZXAtY)J7x7anU!ZI z13PHKtZvLk&OxY4|7U0EsrNO?Pms|E989r8L2~zX=Q*t&aZffS2B@BH(?1YtSoC}L z0h&Lfu=ZK4BG<8`arhQFT5430#RwJRj(K{1u_ntx0XpF^1A1~-o1iUtQZMQKHJ=rx zE_r||2nh}-fUlXJgu1(U#fV|icJD20wu2tqBH57V(-%)3NzQRF12*S6ws0&W zv8MGLAUSzafB&ht0IQu=W}*Vb=PW&!aRsi%?X;xfVZxA>@Fk#TTA@mWKHlSjYe`NX zcRhuE{F${J0~6FE~Arw0o2Hb5tVyZK05;AdRid1jIDz#ZS_u z;JlqVpUn|s?F*bml-}nZ|0lAq5t5Fi1d^%yXv9J9PN>(EhJ7TLIGN-vOs?U=nmsfVg$$`Xt1Rg*WNKbh8<9WXMv z8Dj~#sSVGm{y}`*%i?SMsI1it2>mX!hFox*+|`5}DuOJwljOY2P(c$d6EV=j&M8BQ z*n6JAZTNve_n&g8nM&(vG9>4M0Xxg#yz>ABm3y1=?ksUH#nJ0+G-rMy2d|W!nR=j& zrTxp6*e7z$J`3YLzQUkv7fcARtvw+L41#7J(NyzNry=AG5IH}k8>{P3Rj*Xb|WWLQ7hc5i&;Gl4du6e@N z=nroMHZiznwnb@nK_w_9ySFU!a_Dd9EeD*aZEqi}UuNGcxAY08bIg#~@W_~L4DVwC z)BUZZgq@DbX1N49l0T2Bl<1U+=TXs}6wjYa_&U2s!6FmJ`pn)6r#~cggBnWvgL*iX z!17%+JsgzTUA@x$YYmqBQ($x-u=D;M9{oLzeMrG}j&$498Ji}~3}KdoX+M3Lfb?{x z&a&EA`0*Rh>Z-mXdxq9Tp2qWAwW*csiUug9q=jqW z4j5&YolxB_tZDje@T1U>GAA*%5Ez`w58d1v`0T?IMf3_BT?&HLHLlVb%^Mhnhh6OK zbburd>4R?XG2I|ZA8NtcM||oxe=b|CM+KOUC$;l>3_aWF?R2(6C)512=fa`iwml3Ia6{6Ie~VU0syvVsVp|kDVTs+{zqV*Pw>7<<8|PD)(lyCEJ27^T0>*-wyRHv+9nZZA2Q9Sn>IJ@= zRCa0w&$8H0+%z7){g@@j&ZAwb4ruZCo&EfNNiu?$%A9$>Gh2L+3B6c@0sq)Ir* z)7x{)jXZKJf2`)N{aOGf++;SDi)ubra5@Ng8*fRv6otDNo6M4;R;nSzFdrps+xf9| zN8Jb7KN{{YLuX~AOlx3SDi^R_uD2nb#l|DK5pf~!dOT{L*Z}IOpd8DlpKMUDah-NCTqm>#!0zje)QqR$L}aJ(JES{zxbU0|SbedYUsLOpzSv8Lbr zj=`oB)gx07!QW2b&0=l5pAMZh*F5pJbJO@=xU{opdSHh^p)!9e+zD$^xXpBU@03Nd zeZy_tW5`{z=Gj;0q{B<5wF$k)D&6xgw_n}=PoSF2@xheFB*W5u=6A4iS8CKeVd1FvVU|L+)i|9>YJ_g7!{ z-x%Y+7@V&ZIon>m1*{1EgwwU+7T}@(C!?w&CM-vf?MZ-(vsuYSsdztiLXuhM+i z0>iu1=?|WA79SvnPB@lcS$JC4ntHRUgg|3Mjb_+EUmZd-^(kKG@@7vHr5N}MKGRTH|V|JFT7r39Nh zcx56KXlf@zo{mdCc2PSOV-GOuXw1Xdv3#reR=VEc#Owo%U5W_xgsk4kZLWl(mR~y! z^&m&7e2}lT$YE0O!JAr) zb96i+O$Ms)L{Bz&6#;=8{%y_?Ws7rziu8`$$BH_|>G22w7o!iai0{@{?|Bs{faow~ z0CC2l2Ne|}ZVVuY+4@r8|D(P0jB09a)Bmx-K?DR;q$|>^Nbe#b9R#E$gh-d(2_!%) z6afKgp$BQwi$Lf_K|p%%gx(>c69{d>Iqy3&AKsbu|1ux`vnHSR%F13@d9wGjpXa)N z*L|J3_fXStmyLxXox|KT^ea7SYg$7tDl2RA&mfY){_c&ILwX-_hb9L+VH$TLX1_Ys z9a_GNC;G2oNftLX`f#KWwn8}d8OZbDenjJaY{!1S$m2!@&;J62#3H^bQLLZo@_OBg zH{P^K6%b=K^HiG|*xFfNA#T}{JOJ%)L_@s6)k8Mt$7nbvku@8~e=NAS12%G&Sk-oqee`>DV-Cc$ro8RAlk zTIl2_!pWb({jnLZX48isg$9MGrC#d{U&@Q&|AP**{jl>Rb<-P63 ziAJ&JZ23ctvwkA-@lhjOR@uuPk|%!VpWbv7$^gd_P4Linj}nvf?Ub(*3f)azXk#&v z$0{m)1%!exj~A}?)|BKKxTG3ido~+V91~Z<@=q;5Z|X=?_5$Ort$!G=>usPEB6WvD z2_L??<(yv|&9py?&pk#BDQy^r8K&Z06nwX~N+UuJC@#H?#L#QyBM<2l5XPsjAjr!a zlU~AL`i3#IERW(7SGyDlsUh?WG!L^gMoYxjR{b9tm)rwwx)f@0arFW&KYX^knqZKj zu;cF-~1K zuZ`3WicT%X6=P<;)X$DI2-Lwu_sMWCkH%)H5z0c;n&`6@s!T&t^38;t9LSjya65|~ z3XATg=2!A-_WB4V=Jx{{$ZkdC5>FcJ6KUakMoR*C;EIN0h4eD&dDO z^_q5y@^rY>og-VZ_{wd>nd4{IbC14Cc&wloO4zO3X2qMo{oldIo!8*2q~n9$s0jb5 zj7@yeNKa7|*u})R^i7kP_qB1@X3bRC0M`#i$HEsr*x&WOj7NEj5rces z%!-8?c6*f%tF{5tPkwC!do;xFw~{DSgKR`+^)bRX&@FNDNC6_{hG0ry%*n``=tV_C#F+{mnt5WU}A5N6u%U zDn(XlZRnr~x5jTNGb`y|17g#bk+p6%^Io4qirv5MF+JXR9@rt`aCLcl?-II(@>XII zy^qI8_3H)sty@;SA#w%Tn^2sGa&7jqiS5*lF&@vQpJk*VurOpKE*=w3`ievkQhYxR z>socaP&BFYavYyCa}|C%c*icTemSC3@38nSbApbW&ys;X+}+2Z^vtWGa>-=hqT!&H zZ#DVSqwZXLOf#yOVRcIah?c1II&B5^tWx`-)o(Huo(>r{T%L~Tw{!jsYg4QU@A1| zAiCulHnvbKLhR03_%>3&M@+${NT5fPXWc|xM=I4T_>tYPY&lHt>JijsLr1(Qdco{^IT*V9;=woogb;6;uWS8M< zT%S&ijyyOq4gmnw4?`v?$7*Npv)QU8_5N@xc)vsO_$t6r3`N4lrd&QM&`;Ua|M>o) zR3F8b$r}q&#+Ft)zPB-5z(y*hmDBgL49I1rIbL(`=+0tD1%%F?9{MbF!P;53lwz1B zHMfe$I#o7_a?d34uRaeKw1gnNVBmF1CBe%QiWQo1=NAW(N8A^1}y|P4w{$7 zt2r#~$R0=b*sW9mWyHn{4hG&wTJ3XnSmPqH{w6aQ5)>|+tjWFNW+xL#M*MCp#k)l@ zREA{Z?83}~=`K$DSx8ksYPNgDCm+JN{p01P^!V~CGCC!^oV6%Qr=7PwLNg3fl5b+r z927L8lA?wtoV^K&Xw7>!maJY!wT(Y_mK?d+%5jrqWb|<|>nAZyu0YM1kEN1}Vr2IR zxWfTowj#J}*|Q|s#^&`;YQ)ydWlv)yF&%s5r$Qj1ouZIQFHVs3(45g?Ni@*Z&JD6M zyT=s!Nrt9)Rar)8pO8)f)+wE->SJo>%4y+`Cxqs>wV_1f6ErXzg=L`@9si&+?S5Ju zZvo_t3)qk)wghdA$}=1VdD)g#y?#o`z!=ATZ`Q3XS&cN>oBYZn<*z~*+1kVzSPgU4 zz(H@l?FgwhIxCHuT#IoXh5*-Mfg*$jgxwPQnnftoqY z=3-+S*6xHHHMI}0L0EfkYs{CCMt^KI&X3@OJuvMQ*pAIyZ$0zTW;ocT0OmYMQpV22 zXB=QtH6^gMSVQeUZzoJtSvKfG3+<$fGip6dgG+P6{{-{hA$8~Bzs;?)yfHv?ws>2> z#Jh{Ws`cF))K?PWfMbKhq+o^*kP9E%VQB|yk7R`$q3T&YhHYeubZhift7ryZCgL0k zvVXcZ>^7*$pa0pTdrQJ$fXQD|CBbx!cB@L$ac`#0nHl?C-0w-ojd;=4ua=Ex@~&ar z1@#L?gV%4cAiY%5%D(3?C{*Q);z`sc!TaK?kt^}MJscWM%)_iJ@m4Pz9`+%xSbfCR zV&JtN4q7~&nx&2zTq^U z1ohd5iM`Z>7*7ERJ%UhpEDzl6xJvXHm)16eZG(`ERI2bK8fK_Vtb81X4gR4-n;`>l zo*tUqyrUXL2gJqkZ&w6TpQjq)Qz=Q1oxOVlYX=t#zf$dOfXo5xj*$?N_)pg!3jxDI zP3pYWKf&z$Y`|SMelwYTRofoG;iwLJ#9$F0@uJ0PS5JCyBn@xEQJSj?&CX{Far<-v zC9u0M5_#sBtlwWkaU@Kvag}4-U^d`bz==PRY}+I3X{=I*p=c|L`aaQqlz_XOaiC$U zc)f)3-cBW#G^!FY9{v|LS)6Gd-}3G}{-gd$qQ21fmBUn8;nxU$tyF|86BkIVd6K7j z^5L%kT%_kjR9A?do||wFpS^3_y@x0qtWM?$-Ax@vI;Iu!_mjunXu+b@P|fx&nAj#r zuk%nvhxo`x?|Tty$uwzr(} z^J>|Cty&2%7%T^U4%qrUH=UpHLJkP1zw&`qDo-1IcgN@XA59VJ(`{!h2L$EmvS+fE z-tPj~yZTF7Mn~NOLKMW%8*-te>Jo97ELH0u>qf8XQA(%{SsJXg;RgYFQ7*q9ih6Dm zYPQ6b>viE_Vh^eZFR*9y7CN@U9~k{W=%IGrr{)bjX98X-Y+Y7E^w~E$a_G5DELLbF zg2F~7M^ma+dq(F%+53FM`=r6ew8Rl21!5c=fkl)Kenn$;B}YcXf>!I;B0_5{UVLuP zd~yQys?aoAP`ad-4z#43q(iuS-oaT2)qt0Dn74v3_VGxuw)ItC>bngxI*`m!Zj~xI zd-|FCHL@E;okT6m zw;A`fZtFxOut!1EaFS+3ewW0Ru%mvmx@@NJ>*U($(z9Fe(Mvv?V%E2G?d{RQnG1BW zZnwjnK!g**h6C}PwvJ4ou6%|@8_1hl)RiUm9t4wr{%kzzw4R%=(G9It zIkTb+r%E4vwJLoFU8E;uINyLeOW-!=KVF0E?P6x}ZGQuz=?XIv<1-kjR}1Du40`hl zy?fiw>#wqEeDILJe6&vzTr6?v$49oRF~dlRE1dS++G(`Z&SQX_nmmS=6=jrSLVEbk z0DqZ~(zcXiz?Vwz+|cx=+`QfmUvCmTSy*^%GMjvykrA%rjEnFG{`e2;En(S1c;i2J zW+K?b{5k)V_4bGEzsidL>!km-Rnq^nm~*AWtiUg%3H!u%+fz;F!bXJYWBc8Y$n1r* zCs*IIbEEl6RwKOr=le(fUjX1g0s#L9LjO<*>5G4A0ss3002Sx{{}0%lyX>1efA`CC zg_K!NKtiFdqgrTzGBxyxq+)m;f_zIQ+@2mRtk|*1C&)S|+yf&k+z}Ok-KcwC_a6NM z;p79W3q1HhdKiu368-gs$0t1ZH89!Rm0u&z=`)@6FG``%C%uI+uFVqfVb%=P;frZ! z>ufOm`6IK7RH458lv#H-|5cw}+UFlt2qAuiSN|ibzo!A=PXT{73?O5f4>sVPY22B& z=~<+lUw(9&vMP60-&63XfR@YBWQkn;vuaKPi1rOA;ENyNYvPqg?HnJ1;p39kJ6p`h zb-3$KeCC6-WzPziZ$WOiP92_H+PdM9W}9~1LXLUNGVhiXBfdq##|WUz)atf%Fkwy; zWxsuF`zJZ*1ikEPGMVvd6AZI$bPGH*@j$h$1sVUOkZWTf7Txa z^g$)yV?-K}#8YWufd*4f4YF|lrS|>XbITT`;&hR6W5mdoh|d}M&^j(;T_{v9N#}Sw zJ{AO#273F1JUC4kIvQ_DJAQO|^+SZ-5e5*c*nAoDh`7zUC-I2U{Ws&7Q#i4j8iJVb z3HB%~?bywpuUtl9#>dLgY2bodq{KJ|NeBfyPj8rAPO27To=8m6GXVq5w8LIr4efR@ zQRvYc8p3YF^1?2{Z@FkZNoJkRcE7l;98PUebTz6;jYAWpfl=vZO}Z|}!-+Cc$&9I( z7Tii)YMyZ*3U%M=L4)M<gwo&qisKp4Ua%A zeu&&R8BE^8iQ7?(lSV6<*|N)%#BZ*l41m^6HSPj$&rT-VxVusclpOOCPd`imR#g06 z2YhXx7%dQ;JB!BuN;$>uJ~`!Epa%XH*+GjbV0Ao=EovLi-kdjf2T%)I%J0?{r!iM! zNQ&%svI+be&&=TB?h4>gxX>x{=#_DvtM?lRZu9P{%Zx^DaP`pC5$5;X=g#HZ&bc%6 zAnTUv4q_?+tsN0Zz4VZk_=CKX$uP|VeycAu(`ZIN89P=^DIu={D}Dhr%0(0wV+*Ot zdC}bW%)!bTTf&D}(r-bNOgZ*=S2NIg9#tGgY6cF!DMc`f8yP+<(tK)azrRLJhLX?` zHZtY<-DO0t6*Ul{PV-WiUW>7;pw%?Rp~1T~&TD6Dz9E_}u0h7JxFgZ%Br`pMUQWJL z_KU;gRb?7wQ~0W7xCr3RgjnfWh1#0jWqi7i{PBJ}{J8v)Wi0aSt91W?aoYS&UXZj% z_q|JRxO%Yt@a6NT-yXynAURP=+A4*LC>h~l2*h+o*t%KPP%mDOOdY*(QC2N47k&N_ z?I-qfTJL@E2JIK#_9+{?v;^ub?>c^eVIAM%^nTdMf}tKoKwelA!z-WwF1{&Wz-XL% zc*HrO4m~;pac8M!#df0g0N}+^Hszd0d5mX@i&IJ+-+OS&39tP&wq#W~`YJ^HL;${9 z4tf0zsod>=6?%(CK4A$4$II8st?AUK3yjjPoW)a0XS2;w@CmIF<9a_cD|Mx@>5JX~siUV#tUQrf$3!`58ctywFFQIprSOtpiRTB~rIwF0;VNa=#K&D5miNE*duQ?T4Mk--GaVgcqS+7;5#&9$CE{*zZMfPf zBK9`aC;*3#t2XOK3&sLswnvRb!!1vKcH^}2Hu`HaC!%wYoj@m9U``2_rC&}l(jtR1 zo<*wSUbTwR4Gqj9Qp+;>ITWkLt#fO~g@uayX=G{-3l_Wkiz@PiaGQ=Vbu`0){19@E zCRe;6xvjjTMh=HL|J{srh<5wCF@VoesV3ERYzT~`HkB$W@W2n{ES&Y}f+QZ0Wi1HE zy4l|USi3KEY;(re;hwZ(d|h(gV39I7CO|W=UTnMG6kaw^xn@^8?elXrx*KL6nU=qQ z0ID7sN{aCzfUvgLDk)jr=2k{{4E++@=_2A-dn&8IP3wjZUCw;9Kmk*FR4npsVfp&U zmh%R__*(6hLjFNwA_1@iQmrUo!iT;6;ZaSn0>$W^ht6oHP{?z1EJc^yj7$S8$N6jd z$)4eSCI|iP@GcZnN|};9pT_LlO$TGATpLxjgIo8BaWDW-(g{d0B(<6o^RL zB&q~jo%}pwtWv^kZ)XK5K+YC{z9IfF3I6ejujS;}1NNI8or=^JB`h+6AS`-rg|nTHp6Xjf+t(6L1&CN5EmAMCSS1Bijo zLG^H+wl(RB$tsxPzs&(u`iE6d?urvzH7pu%bsjZ&i9<5li#% z$*=Y!#Db?Duf&eVPx7i}XeB~wSF#5?C1I6p6ApYH!x9=Z+wFdCzc38Di5N1}(ORe8 zGYp%T=a%}B^Xuki$;k`_J1%Id)*bEYAcb`TpJJQ@Sl+`A9(b2!Dt@5U>FlWdwnoN9 ztKNh9>4& zfxUWm2$B?RYRhD>W%r}teL4cJ#+#QnotA?Db5B+^O}br<;>yh)yFMc6V_9O_yUA83 zS?{1J3JB}k#6-g_e=|0POh%+(_=~~=UEib42#=`7e*BlHK*rI*P5>$@GaURjq#LR* zpyt>g8M|YyIGXdoQuP~aCL3h?VgW^O6-G2IIXvS1Fx+xw#yH zwD_i3)cpE6;)YY&7jUe7!oD|6+|G0sSffvS$hoOA^0bbwn=Q_>P6>x&LOIa~E+i=p zg97*sRxk%i?JRb6w1Z`ib};rt$H1d9lYJtA;xgMmHUm;`Ib&zjI1+WAsUO`3#vKO% z&$E*i0lK5~0~=W?O3TY$7HsfVw&&HH-NH5rK9it^K7=*y zk9qjP^-F&e-c{zMXMiJwh*t{ z6;>|)bIHi~;~R}0k=wJ!!y0sPe^|AC%Lm5T8mNRgtUA#>TO6qAA5i_>C7_Zh zucY#nrATa&k>F0*Hj;vSXDKc-3c>||7 zMDJrZN|VHFe-V$=@8ZCabnF!eyg%Sw`ZQZ&ZNQVxvzDFm`Xf*2bmVZZC@cM^_SXa`kYNIHdvH3bOLkS4k|?zm4(SmSMbb78#ac(a*xEwOw%wBLmx=Di7)hf}n_A&R}+6 zV@m9na_{J*Mza2cD@UKov53Humyh-JpYYS;OgQXdvYBEgwEH;aO#ks$^@rqcZ+14~ z5H(x)Ob*P0jw}sPF%ZRVdP+}vqLGNW$WKJB^zY+ivA;z`$zZ-mCb*qKehz55^TFQD zRTOChMW@|{_LdfE?a9Y@fl97U1dd#%p5AcRGkple%16W-dtMK}7B8<;p^QT+qv+(a4k+3!#c#0uEN1 z9}9tsO^wySdvCfP8DD%pKHklr3{hPf({2KTN=5ldU|xR$Ri>Si1u|i0&wV%0zyRD_u;etk0mmKj`FN*F z}ul^2Csh*2pHpTG-88t!b1`Yc}cA65^sot^u+o_Pq%% zdA2|OX?0ZbZJqtAmG+f@wWY!7J28^A^ockn1I98Q`92e0@}~Ny7(L>`g^%-{x^E|G z04M#^4zGj(pS76+HijQ7&+pO&^w)E+svwrrxf)QMW2G)rK9FgN90AUVS%qFHLFe)F zFgw^cB}TX&R=YI_Sg4 z#RciMV{bEhqMQlf`>-7L!As?DW4*)%AM}RgEnGo9jUuhN)GYqsr@Yc+uI(EGy=$Vk z9c5C^uakaNH|V=r6dLg3tnZ*trG3Whz2tzqXFe_dkf zP|1U9{TmHj=KBI+Ki6l~c&e3cm0#j14kZcUSK@=ul^{LiV;t_Oe3zfxQJWYNl@HaLtTHCVy_vMQXYjS3#U{Vr zEs#oyd%3T9>z2s)FEWMQTa;{@Gx;}0!gJ{Q^c$!MDl|eAx;sGCNArVTagv?QH>fw4 zS~DWaf}`vkkl(ZRL98YZDFI`8$$Cb&+9V~MZ`r7y1dg@g`E-8&zQmC+ON&CxPsidH z(^hxy&mMaSmq(o!m!u*`g2U8ytPL-}irqa3N1`Ryfczh#8`=XHmu8hYkS15J7`#RE03 zyv-&>*62)Mi3-fyeM?zjaV=}G;DpY9hvXjG_YLmN?-B%y_@VoCK?dZS1gRok&mQ?+8dH=x#wIWm>xp7N6*J29;)hlRagr?}plx!R!V&MY#G#fl*d0A?&TlxB4AroMXmNay53K|?lQ^q%C9KxS@G%jCr zUbhe5qEyW6ae^eIMn>KWAI+~nb?mv6EZI`&;UYZ1!6!dO1-UZ4)8_DNi&{$4aX^pK z@12M>No@;N$JFV8iHmsnISW1$a>5Z|ILXZRP&F??+P&|GZ+@n?6$<|$zZM_SyP_?J zP->`{GOdI`UwKP@TTrlRy{IgK^-`SG0V?lwSh_E5WY{n>gl~s9iV^YqPUfvhnZIyVS?7sAh#nj(C&IP@Ufe05wSf2SMR{*v&%>9sXa4M|Sbei- zuDuzbmZw?B8C6m5@r` zBU^W26^7FX2DiV&>g@N{1r=lI<1f#Y6jh$(00!OcGn*Eic=KgO$ESuyU3Xs|%-pRr zEt1u(gr?G0Oy$R1|IQp>2nEzO9`}rlmn1P36?CClBw`izXY$_oFI23}ce|{n1u@I@ zamt;@*Yu-h=eqKw4e!ZxS$sDfMb`|EVk;W-0I&SEDr!nFn>NchEh6Axj_&_!Clf-Mp@HC=WZv-v)C?Uz4d+x6NV1Leg575nzX{TtuY zmU-Z(ineWG2|r8CrMV5)r+ z#{bcp9;3dp7VoSMyycazlcbIec=RIv@|fjFBlh-YI^5%sw@%M!Nt!c_7Wo^@=Kl)h3-7vm&y10v| zXb$SR@km0reP07^4R`s+Tsy~=bn3P;oF?_9qmfXTc*k{qrKtb$_AZIsUk7x*V*jbF zQ~vYdKScJwD;fW-4*!22`PcP{|Fz?CL3pTNUYhz*4G}INqN{cMjX$)@{S5MBzYv_* QfBd1Uq@`H=;?0MD18{O+g8%>k literal 0 HcmV?d00001 diff --git a/docs/evidence/2026-09-11-review-desktop.png b/docs/evidence/2026-09-11-review-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd824aadec33a8d8449724cce71c946fc7a0303 GIT binary patch literal 147186 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ℜ5<#3ADd-oQ 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ǭ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

mHR3CQ&U$#RbIJs2=E+~@U!7ps{ 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 | Entitled historical presentation and current submission result | +| `GET /presentations//packet/` | Fresh read permission and full attachment bytes | +| `POST /presentations//ack` | Explicit acknowledgment of selected highlights | +| `POST /presentations//act` | Accept, return, discuss or decline with an operation id | + +Forms require the exact fixed origin and session CSRF token, with bounded bodies +and rejection of duplicate/unknown fields. Session expiry and actor/version +checks apply server-side, including when a user bypasses a disabled button. +The page names the complete request and packet as the object of acceptance. +Highlights do not narrow its scope. Untrusted memo text is escaped, previews +are bounded text, and downloads are attachments with `nosniff`. + +Pages use `Referrer-Policy: same-origin`, while authentication paths and +downloads use `no-referrer`. The Chromium test caught that using `no-referrer` +on a form page produces `Origin: null` and rejects legitimate submissions. +Missing, foreign and null form origins remain refused. Cross-origin referrers, +inline scripts, framing and caching remain prohibited. There is no telemetry +or client-side token storage. The reverse proxy must still omit auth queries, +bearer headers and cookies from its logs. + +## Owner configuration and audit readiness + +Set `INFD_REVIEW_CONFIG` to an absolute, owned, regular 0600 JSON file. Its +parent evidence directory must already exist with mode 0700. Without this +configuration, the entrypoint remains the login shell and `/readyz` stays 503. +The following is a shape example, **not an admitted configuration**; the +placeholders intentionally do not pass validation: + +```json +{ + "schema": "informed-decision.review-runtime.v1", + "evidence_db": "/OWNER-PRIVATE-PATH/review.sqlite", + "approval_origin": "https://APPROVAL-OWNER-ORIGIN", + "policy": { + "origin": "https://FLEX-OWNER-ORIGIN", + "package": "OWNER-ADMITTED-PACKAGE", + "version": "OWNER-ADMITTED-VERSION", + "package_digest": "OWNER-ADMITTED-SHA256", + "caller_token_file": "/OWNER-PROJECTED-PATH/flex-caller-token" + }, + "audit": { + "origin": "https://AUDIT-OWNER-ORIGIN", + "sender_token_file": "/OWNER-PRIVATE-PATH/audit-sender-token" + } +} +``` + +`INFD_KEYCAPE_ISSUER` remains mandatory. Credential files are read afresh when +needed, so projected rotation does not require storing a token in configuration +or SQLite. Runtime loading provisions nothing. Fixed internal `.svc` origins +are supported explicitly; public cleartext origins and redirects are refused. +The server remains one Waitress process, loopback port 8080, four threads. +Multi-replica sessions/storage and deployment packaging require separate work. + +The audit thread ticks every 30 seconds, generates the declared per-class +heartbeats, drains at most ten records per tick and writes a private +`audit-reconciliation.json` at most every five minutes. A successful drain and +reconciliation with no retained delivery debt make readiness current for 90 +seconds. Errors or blocked records clear readiness; accept refuses while it is +closed. This is a process/delivery health signal, not an assertion of native +policy admission or authorization. Dispositions still persist transactionally. + +Credential/schema refusals need operator repair and explicit requeue; no failed +event is discarded. Source `occurred_at` and receiver `accepted_at` are retained +as different count windows, without an automatic loss or completeness claim. +An independent auditor reads the receiver in component tests. Production +sender/receiver custody, backup/restore and reconciliation procedures remain +admission work under T08 and `AUDIT-WP-0009-T11`. + +Uncertain entry recovery must preserve causation. Finding a later entry is +insufficient because Approval Engine stores no caller presentation/operation +id. Inspect the original immutable intent and independent evidence; never reset +an unresolved attempt merely to make the button available. If causation cannot +be established, keep it unresolved and obtain an owner-directed disposition of +the approval. This UI offers no shortcut that fabricates the missing link. + +## Reproduce the component and browser checks + +Build the checked Flex Auth source with its own `go build ./cmd/flex-auth`, then +set explicit source paths and the resulting binary: + +```sh +export INFD_APPROVAL_ENGINE_SOURCE=/path/to/approval-engine +export INFD_AUDIT_CORE_SOURCE=/path/to/audit-core +export INFD_FLEX_AUTH_BINARY=/absolute/path/to/flex-auth +make check +``` + +With the Python dev dependencies, Playwright and Chromium installed, start +`PYTHONPATH=. python tests/browser_fixture.py /tmp/infd-browser-UNIQUE` and run +`node tests/browser_review.mjs /tmp/infd-browser-UNIQUE` in another terminal. +`INFD_PLAYWRIGHT_PACKAGE` can name an installed Playwright package, and +`INFD_CHROMIUM_EXECUTABLE` can name its Chromium executable. The driver stops +the fixture and writes the result plus desktop/mobile screenshots. + +The harness uses real local HTTPS, browser redirects/forms/cookies, the actual +Flex Auth server with enforced caller authentication, and the actual Approval +Engine/Audit Core APIs with separate SQLite stores. Its issuer, TokenReview, +policy assignments, identities, credentials and act are synthetic. Browser +hostnames resolve to loopback; only the fixture certificate's public key is +trusted by the override. The harness control endpoints live only in tests. +Exact production callback/registration strings remain covered separately. + +The result covers login, escaped content, acknowledgment bypass refusal, +explicit acknowledgment, packet download, return, mobile fit, a single accepted +entry/reload, receiver delivery, workload caller refusal, sign-out and absence +of script execution. It proves no native human login, production policy/custody, +deployed UI or factory execution. See the dated JSON evidence for exact sources. diff --git a/informed_decision/approval_http.py b/informed_decision/approval_http.py index 5fa6019..77bacec 100644 --- a/informed_decision/approval_http.py +++ b/informed_decision/approval_http.py @@ -57,8 +57,12 @@ class ApprovalHTTPClient: def get_approval(self, approval_id: str) -> dict: return self._call("GET", approval_id) - def add_entry(self, approval_id: str) -> EntryResult: - self.get_approval(approval_id) # Require the declared human-control object before mutation. + def add_entry(self, approval_id: str, *, expected_binding_digest=None, before_post=None) -> EntryResult: + current = self.get_approval(approval_id) + if expected_binding_digest is not None and current["binding"]["digest"] != expected_binding_digest: + raise ApprovalEngineError(409, "binding_changed") + if before_post is not None: + before_post() # Recheck session/policy and reserve AFTER the last read. duplicate = False try: data = self._call("POST", approval_id, "/entries") diff --git a/informed_decision/http_transport.py b/informed_decision/http_transport.py index f894368..3a37518 100644 --- a/informed_decision/http_transport.py +++ b/informed_decision/http_transport.py @@ -64,9 +64,18 @@ class JSONTransport: raise TransportError("upstream redirect refused") raw = response.read(262145) if len(raw) > 262144: + if status >= 400: + return status, {} # Refusal status is known; discard the body. raise TransportError("upstream response too large") - result = json.loads(raw) + try: + result = json.loads(raw) + except (ValueError, UnicodeError): + if status >= 400: + return status, {} # Flex Auth's caller gate uses plain HTTP errors. + raise if not isinstance(result, dict): + if status >= 400: + return status, {} raise TransportError("upstream object required") return status, result except (URLError, OSError, ValueError, HTTPException): diff --git a/informed_decision/memo.py b/informed_decision/memo.py index e8a5143..3a4d3bf 100644 --- a/informed_decision/memo.py +++ b/informed_decision/memo.py @@ -189,7 +189,7 @@ class Memo: packet: tuple[PacketItem, ...] = () highlights: tuple[Highlight, ...] = () locale: str = "en" - ui_release: str = "informed-decision@0.1.0" + ui_release: str = "informed-decision@0.2.0" #: Co-reference to the act this memo presents. approval_id: str | None = None #: approval-engine's binding.digest over the five act fields, CARRIED here @@ -276,8 +276,8 @@ class Memo: *on whose behalf* the approval was issued; ours is the person being bound — the approver. Different roles, so dropping ours would remove *who was shown this* from `view_hash` and gut the promise this - repository exists to make. Raised with approval-engine rather than - assumed; if the two are the same field, this drops too. + repository exists to make. Approval Engine confirmed these distinct + roles in docs/approval-claim.md (a0a6029); this field remains. """ out: dict = {"principal": self.binding.principal.as_document()} if self.approval_binding_digest is None: diff --git a/informed_decision/oidc.py b/informed_decision/oidc.py index a92806e..f7f1f7b 100644 --- a/informed_decision/oidc.py +++ b/informed_decision/oidc.py @@ -39,6 +39,7 @@ class HumanSession: expires_at: float access_token: str = field(repr=False) csrf: str = field(default_factory=lambda: secrets.token_urlsafe(32), repr=False) + roles: tuple[str, ...] = () class KeyCapeLogin: @@ -168,7 +169,7 @@ class KeyCapeLogin: assert_human_control_dischargeable(human) session = HumanSession(access["sub"], Claim(access["tenant"], tenant_route), human, dict(assurance), min(identity["exp"], access["exp"], self.clock() + 900), - tokens["access_token"]) + tokens["access_token"], roles=tuple(access["roles"])) with self._lock: self._prune() if len(self._sessions) >= self.capacity: diff --git a/informed_decision/policy.py b/informed_decision/policy.py new file mode 100644 index 0000000..d477e00 --- /dev/null +++ b/informed_decision/policy.py @@ -0,0 +1,184 @@ +"""Consume Flex Auth decisions for this surface; never evaluate local policy. + +The submitted digest follows Flex Auth's published Go wire contract. It is +not the approval act digest, which this package only carries unchanged. +""" + +from dataclasses import dataclass +from datetime import datetime +import hashlib +import json +import re +import time +import uuid + +from .http_transport import JSONTransport, TransportError, fixed_origin +from .oidc import HumanSession + +DIGEST = re.compile(r"sha256:[0-9a-f]{64}") +ACTIONS = frozenset({"read", "acknowledge", "accept", "return", "discuss", "decline"}) +CONTRACT = "flex-auth.decision-record.v1" + + +class PolicyError(RuntimeError): + """Only bounded codes, never tokens or upstream diagnostic text.""" + + +def _sorted(value): + if isinstance(value, dict): + return {k: _sorted(value[k]) for k in sorted(value)} + if isinstance(value, list): + return [_sorted(v) for v in value] + if value is None or type(value) in (str, bool): + return value + if type(value) is int and abs(value) <= 2**53: + return value + raise ValueError("request profile contains an unsupported value") + + +def submitted_digest(request): + """Exact submitted tuple: Go struct order, sorted maps, HTML escaping. + + Supports this consumer's closed JSON profile (no floats or CARING input). + Real Flex Auth tests pin this against api.RequestDigest and enrichment. + """ + def ref(value, fields): + return {k: _sorted(value[k]) for k in fields if value.get(k)} + material = {"tenant": request["tenant"], + "subject": ref(request["subject"], ("id", "type", "tenant", "attributes")), + "action": request["action"], + "resource": ref(request["resource"], ("id", "type", "system", "tenant", "attributes"))} + if request.get("context"): + material["context"] = _sorted(request["context"]) + encoded = json.dumps(material, ensure_ascii=False, separators=(",", ":"), allow_nan=False) + for char, escaped in (("<", r"\u003c"), (">", r"\u003e"), ("&", r"\u0026"), + ("\u2028", r"\u2028"), ("\u2029", r"\u2029")): + encoded = encoded.replace(char, escaped) + return "sha256:" + hashlib.sha256(encoded.encode()).hexdigest() + + +def build_request(session: HumanSession, memo, action, policy_version): + if action not in ACTIONS: + raise ValueError("unsupported review action") + return {"id": str(uuid.uuid4()), "tenant": "tenant:platform", + "subject": {"id": session.subject, "type": "human", "tenant": session.tenant.value, + "attributes": {"tenant_source": session.tenant.route.value, + "principal_type_source": session.principal_type.route.value, + "assurance": dict(session.assurance), "roles": list(session.roles)}}, + "action": action, + "resource": {"id": "memo:" + memo.id, "type": "decision-memo", + "system": "informed-decision", "tenant": "tenant:platform"}, + "context": {"memo_version": memo.version, "approval_id": memo.approval_id, + "approval_binding_digest": memo.approval_binding_digest}, + "policy_version": policy_version} + + +def _timestamp(value): + if not isinstance(value, str): + raise ValueError("timestamp required") + parsed = datetime.fromisoformat(value.replace("Z", "+00:00")) + if parsed.tzinfo is None: + raise ValueError("timezone required") + return parsed.timestamp() + + +@dataclass(frozen=True) +class Observation: + request_json: str + decision_json: str | None + outcome: str + usable_until: float + response_sha256: str | None + + def require_current(self, now): + if self.outcome != "allow": + raise PolicyError(self.outcome) + if now >= self.usable_until: + raise PolicyError("decision_expired") + + +class PolicyClient: + def __init__(self, origin, token_provider, *, package, version, package_digest, + transport=None, clock=time.time, allow_internal_http=False): + self.origin = fixed_origin(origin, allow_internal_http=allow_internal_http) + if (not isinstance(package, str) or not package or not isinstance(version, str) or not version + or not isinstance(package_digest, str) or not DIGEST.fullmatch(package_digest)): + raise ValueError("exact policy package, version and digest pins are required") + self.package, self.version, self.package_digest = package, version, package_digest + self.token_provider = token_provider + self.transport = transport or JSONTransport(allow_internal_http=allow_internal_http) + self.clock = clock + + def check(self, request): + # Round-trip before dispatch: the observation always records the exact + # submitted object, even if another caller mutates its input later. + raw = json.dumps(request, ensure_ascii=False, separators=(",", ":"), allow_nan=False) + request = json.loads(raw) + submitted = submitted_digest(request) + started = self.clock() + try: + token = self.token_provider() # Workload credential, NOT the browser token. + if (not isinstance(token, str) or not token or not token.isascii() + or len(token) > 32768 or any(ord(c) < 33 or ord(c) > 126 for c in token)): + raise ValueError() + except (OSError, ValueError): + return Observation(raw, None, "caller_unavailable", 0, None) + try: + status, data = self.transport.request("POST", self.origin + "/v1/check", + headers={"Authorization": "Bearer " + token, "Content-Type": "application/json"}, + body=raw.encode()) + except TransportError: + return Observation(raw, None, "policy_unavailable", 0, None) + # Retain no diagnostic/reason text, including on transport/auth failures. + try: + response_digest = "sha256:" + hashlib.sha256(json.dumps(data, sort_keys=True, + ensure_ascii=False, separators=(",", ":"), allow_nan=False).encode()).hexdigest() + except (TypeError, ValueError, UnicodeError): + return Observation(raw, None, "invalid_decision", 0, None) + if status != 200: + return Observation(raw, None, "caller_refused" if status in (401, 403) else "policy_unavailable", 0, response_digest) + try: + if data.get("contract_version") != CONTRACT or data.get("request_id") != request["id"]: + raise ValueError() + if not isinstance(data.get("id"), str) or not data["id"] or len(data["id"]) > 256: + raise ValueError() + binding, provenance = data["binding"], data["provenance"] + if (binding["submitted_request_digest"] != submitted + or not DIGEST.fullmatch(binding["request_digest"]) + or binding["tenant"] != request["tenant"] or binding["action"] != request["action"] + or binding.get("context", {}) != request.get("context", {})): + raise ValueError() + # Registry may enrich attributes; core actor/resource identity must + # still name this request. Never reproduce registry enrichment. + for key, names in (("subject", ("id", "type", "tenant")), + ("resource", ("id", "type", "system", "tenant"))): + for name in names: + if binding[key].get(name) != request[key].get(name) or data[key].get(name) != binding[key].get(name): + raise ValueError() + if (provenance["policy_package"] != self.package or provenance["policy_version"] != self.version + or provenance["policy_package_digest"] != self.package_digest + or data.get("matched_policy_version") != self.version + or not DIGEST.fullmatch(provenance["registry_snapshot_digest"]) + or not isinstance(provenance.get("evaluator"), str) or not provenance["evaluator"].startswith("flex-auth/")): + raise ValueError() + now = self.clock() + decided = _timestamp(provenance["decision_time"]) + if decided > now + 30 or decided < started - 30: + raise ValueError() + safe = {k: data[k] for k in ("id", "contract_version", "request_id", "effect", + "matched_policy_version", "subject", "resource", "binding", "provenance")} + effect = data.get("effect") + if effect not in {"allow", "deny", "redact", "audit_only", "not_applicable"}: + raise ValueError() + until = 0 + outcome = "policy_denied" if effect == "deny" else "unsupported_effect" + if effect == "allow": + life = data["lifetime"] + until = min(_timestamp(life["expires_at"]), started + 30) + if life["kind"] != "ttl" or now >= until or _timestamp(life.get("not_before", provenance["decision_time"])) > now: + raise ValueError() + safe["lifetime"] = life + outcome = "allow" if data.get("obligations", []) == [] else "unsupported_obligations" + return Observation(raw, json.dumps(safe, ensure_ascii=False, separators=(",", ":")), outcome, until, response_digest) + except (KeyError, TypeError, ValueError, AttributeError): + return Observation(raw, None, "invalid_decision", 0, response_digest) diff --git a/informed_decision/review.py b/informed_decision/review.py new file mode 100644 index 0000000..503e2d4 --- /dev/null +++ b/informed_decision/review.py @@ -0,0 +1,176 @@ +"""Protected review orchestration. Policy comes only from the injected PDP client.""" + +from dataclasses import dataclass +import time + +from .approval_client import ApprovalEngineError +from .disposition import Actor, ActorKind, Verb +from .memo import BindingLevel, StepKind +from .oidc import HumanSession +from .policy import PolicyError, build_request +from .provenance import Route, assert_human_control_dischargeable +from .store import Conflict + +UI_RELEASE = "informed-decision@0.2.0" + + +class ReviewError(RuntimeError): + def __init__(self, status, code): + super().__init__(code) + self.status, self.code = status, code + + +@dataclass(frozen=True) +class ReviewPage: + memo: object + presentation: object + binding: dict + documents: dict + intent: dict | None + stale: bool + engine_status: str + dispositions: tuple = () + + +class ReviewController: + def __init__(self, store, policy, approval_factory, *, clock=time.time): + self.store, self.policy, self.approval_factory = store, policy, approval_factory + self.clock = clock + + def _session(self, session): + if not isinstance(session, HumanSession) or session.expires_at <= self.clock(): + raise ReviewError(401, "session_expired") + assert_human_control_dischargeable(session.principal_type) + if session.tenant.value != "tenant:platform" or session.tenant.route not in (Route.DIRECTORY, Route.REGISTRATION): + raise ReviewError(403, "wrong_identity") + + def _memo(self, session, memo): + self._session(session) + # Stage 1 is a named approver, not a mandate discovery mechanism. This + # structural match never grants entitlement; a PDP allow is still owed. + if memo.binding.principal.id != session.subject or memo.binding.principal.kind != "person": + raise ReviewError(403, "wrong_recipient") + if not memo.approval_id or not memo.approval_binding_digest: + raise ReviewError(409, "missing_act_binding") + if memo.ui_release != UI_RELEASE: + raise ReviewError(409, "renderer_changed") + if (memo.locale != "en" or memo.binding_level is not BindingLevel.ORGANIZATIONAL + or memo.step_kind is not StepKind.APPROVE): + raise ReviewError(409, "unsupported_review_profile") + + def _authorize(self, session, memo, action): + self._memo(session, memo) + request = build_request(session, memo, action, self.policy.version) + observation = self.policy.check(request) + policy_id = self.store.observe_policy(observation) + try: + observation.require_current(self.clock()) + except PolicyError: + if observation.outcome == "policy_unavailable": + self.store.record_unreachable(memo.id, "access-engine") + raise ReviewError(403 if observation.outcome == "policy_denied" else 503, observation.outcome) from None + self._session(session) + return policy_id, observation + + def _approval(self, session, memo): + current = self.approval_factory(session).get_approval(memo.approval_id) + if current["binding"]["digest"] != memo.approval_binding_digest: + raise ReviewError(409, "binding_changed") + return current + + def open(self, session, memo_id): + self._session(session) + memo = self.store.memo(memo_id) + policy_id, observation = self._authorize(session, memo, "read") + current = self._approval(session, memo) + observation.require_current(self.clock()) + self._session(session) + intent = self.store.intent_for(memo.approval_id, session.subject) + if intent is not None: + # Recover the original view instead of assigning an existing entry + # or uncertain attempt to a freshly rendered presentation. + return self.load(session, intent["presentation_id"]) + p = self.store.present(memo.id, principal_sub=session.subject, tenant=session.tenant, + principal_type=session.principal_type, expected_version=memo.version, + policy_id=policy_id, approval_binding=current["binding"]) + saved, p, docs = self.store.retrieve_presentation(p.id) + return ReviewPage(saved, p, current["binding"], docs, None, False, current["status"]) + + def _presentation(self, session, presentation_id, *, current=False): + self._session(session) + p = self.store.presentation(presentation_id) + if p.principal_sub != session.subject: + raise ReviewError(403, "wrong_recipient") + memo = self.store.memo(p.memo_id, p.memo_version) + self._memo(session, memo) + if current and self.store.memo(memo.id).version != memo.version: + raise ReviewError(409, "stale_presentation") + return memo, p + + def load(self, session, presentation_id): + memo, p = self._presentation(session, presentation_id) + _, observation = self._authorize(session, memo, "read") + current = self._approval(session, memo) + content = self.store.presentation_content(p.id) + binding = content.get("approval_binding") + if not isinstance(binding, dict) or binding.get("digest") != memo.approval_binding_digest: + raise ReviewError(409, "missing_act_binding") + observation.require_current(self.clock()) + self._session(session) + saved, p, docs = self.store.retrieve_presentation(p.id) + return ReviewPage(saved, p, binding, docs, + self.store.intent_for(memo.approval_id, session.subject), + self.store.memo(memo.id).version != memo.version, current["status"], + tuple(self.store.dispositions_for(p.id))) + + def acknowledge(self, session, presentation_id, highlight_ids): + memo, p = self._presentation(session, presentation_id, current=True) + policy_id, observation = self._authorize(session, memo, "acknowledge") + observation.require_current(self.clock()) + return self.store.acknowledge(p.id, Actor(session.subject, ActorKind.PERSON), + highlight_ids, policy_id=policy_id) + + def act(self, session, presentation_id, verb, *, operation_id, reasons=(), note=None): + if verb not in (Verb.ACCEPT, Verb.RETURN, Verb.DISCUSS, Verb.DECLINE): + raise ReviewError(400, "unsupported_action") + memo, p = self._presentation(session, presentation_id, current=True) + policy_id, observation = self._authorize(session, memo, verb.value) + if verb is Verb.ACCEPT: + original = self.store.intent_for(memo.approval_id, session.subject) + if original is not None and (original["presentation_id"] != p.id or original["state"] != "prepared"): + return original["presentation_id"] + current = self._approval(session, memo) + entries = current.get("entries", []) + if not isinstance(entries, list) or any(not isinstance(e, dict) for e in entries): + raise ReviewError(503, "invalid_approval_response") + if any(e.get("subject_id") == session.subject for e in entries): + raise ReviewError(409, "existing_entry_unlinked") + if current["status"] not in ("requested", "approved"): + raise ReviewError(409, "act_unavailable") + observation.require_current(self.clock()) + self._session(session) + d = self.store.record_disposition(p.id, Actor(session.subject, ActorKind.PERSON), verb, + operation_id=operation_id, reasons=reasons, note=note, policy_id=policy_id) + if verb is not Verb.ACCEPT: + return p.id + attempt = None + def before_post(): + nonlocal attempt + observation.require_current(self.clock()) + self._session(session) + attempt = self.store.begin_submission(d.id, policy_id=policy_id) + try: + result = self.approval_factory(session).add_entry(memo.approval_id, + expected_binding_digest=memo.approval_binding_digest, before_post=before_post) + except ApprovalEngineError: + if attempt is None: + raise + self.store.finish_submission(d.id, attempt) # May have committed; never POST again. + except Conflict: + if attempt is not None or self.store.submission(d.id)["state"] == "prepared": + raise + # Another request won the durable reservation. Its original view + # now exposes the in-flight/result state; no second POST occurs. + else: + self.store.finish_submission(d.id, attempt, result) + return p.id diff --git a/informed_decision/runtime.py b/informed_decision/runtime.py new file mode 100644 index 0000000..f004d1b --- /dev/null +++ b/informed_decision/runtime.py @@ -0,0 +1,130 @@ +"""Owner-configured runtime and scheduled durable audit delivery. + +This loads explicit configuration; it neither provisions credentials nor admits +a deployment. Projected caller tokens and Audit Core sender custody have owners. +""" + +from dataclasses import dataclass +from datetime import datetime, timezone +import json +import os +from pathlib import Path +import stat +import tempfile +import threading +import time + +from .approval_http import ApprovalHTTPClient +from .audit import AuditCoreSink, OutboxWorker +from .policy import PolicyClient +from .review import ReviewController +from .store import Store + + +def token_file(path): + path = Path(path) + if not path.is_absolute(): + raise ValueError("credential file path must be absolute") + def read(): + with path.open("rb") as handle: + value = handle.read(32769) + if len(value) > 32768: + raise ValueError("credential file too large") + return value.decode("ascii").strip() + return read + + +class AuditPump: + """One process, bounded batches, 30s ticks; never drops a failed record.""" + def __init__(self, store, sink, *, clock=time.time): + self.store, self.worker, self.clock = store, OutboxWorker(store, sink), clock + self._stop = threading.Event() + self._thread = None + self._lock = threading.Lock() + self._last_ok = None + self._last_reconciled = 0 + + def ready(self): + with self._lock: + return self._last_ok is not None and self.clock() - self._last_ok < 90 + + def tick(self): + try: + self.store.queue_heartbeats() + result = self.worker.run_once(limit=10) + now = self.clock() + if now - self._last_reconciled >= 300: + stamp = lambda t: datetime.fromtimestamp(t, timezone.utc).isoformat(timespec="microseconds") + report = self.worker.reconcile(stamp(now - 86400), stamp(now)) + # Report the two time bases, not an invented loss/completeness + # result. A retained private snapshot is for operator inspection. + directory = self.store.path.parent + fd, temporary = tempfile.mkstemp(prefix=".reconciliation-", dir=directory) + try: + with os.fdopen(fd, "w") as handle: + json.dump(report, handle, sort_keys=True) + handle.write("\n"); handle.flush(); os.fsync(handle.fileno()) + os.replace(temporary, directory / "audit-reconciliation.json") + finally: + if os.path.exists(temporary): + os.unlink(temporary) + self._last_reconciled = now + healthy = not result["retrying"] and not result["blocked"] and not any( + row["state"] != "delivered" for row in self.store.outbox()) + with self._lock: + self._last_ok = now if healthy else None + except Exception: + # Keep readiness closed and retry next tick. Never log response + # bodies, file paths, bearer tokens or a fabricated human decline. + with self._lock: + self._last_ok = None + + def start(self): + if self._thread is not None: + raise RuntimeError("audit delivery already started") + def run(): + while not self._stop.is_set(): + self.tick() + self._stop.wait(30) + self._thread = threading.Thread(target=run, name="infd-audit-delivery", daemon=True) + self._thread.start() + + def stop(self): + self._stop.set() + if self._thread is not None: + self._thread.join(timeout=6) + + +@dataclass(frozen=True) +class Runtime: + controller: ReviewController + pump: AuditPump + + @classmethod + def from_file(cls, filename): + path = Path(filename) + info = path.lstat() + if (not path.is_absolute() or not stat.S_ISREG(info.st_mode) or info.st_nlink != 1 + or info.st_uid != os.getuid() or stat.S_IMODE(info.st_mode) != 0o600 + or info.st_size > 16384): + raise ValueError("runtime configuration must be an owned private 0600 file") + data = json.loads(path.read_text()) + if (set(data) != {"schema", "evidence_db", "policy", "approval_origin", "audit"} + or data["schema"] != "informed-decision.review-runtime.v1" + or set(data["policy"]) != {"origin", "package", "version", "package_digest", "caller_token_file"} + or set(data["audit"]) != {"origin", "sender_token_file"}): + raise ValueError("invalid review runtime configuration") + if not Path(data["evidence_db"]).is_absolute(): + raise ValueError("absolute evidence database path required") + from .http_transport import fixed_origin + approval_origin = fixed_origin(data["approval_origin"], allow_internal_http=True) + policy = data["policy"] + client = PolicyClient(policy["origin"], token_file(policy["caller_token_file"]), + package=policy["package"], version=policy["version"], package_digest=policy["package_digest"], + allow_internal_http=True) + sink = AuditCoreSink(data["audit"]["origin"], token_file(data["audit"]["sender_token_file"]), + allow_internal_http=True) + store = Store(data["evidence_db"]) + controller = ReviewController(store, client, lambda session: ApprovalHTTPClient( + approval_origin, session, allow_internal_http=True)) + return cls(controller, AuditPump(store, sink)) diff --git a/informed_decision/store.py b/informed_decision/store.py index bfeebca..e51123a 100644 --- a/informed_decision/store.py +++ b/informed_decision/store.py @@ -27,7 +27,7 @@ from .provenance import Claim, Route, assert_human_control_dischargeable from .stance import resolve from .records import disposition_from, dumps, memo_from, presentation_from -SCHEMA_VERSION = 1 +SCHEMA_VERSION = 2 _SCHEMA = """ CREATE TABLE documents (digest TEXT PRIMARY KEY, media_type TEXT NOT NULL, content BLOB NOT NULL); CREATE TABLE memos (id TEXT NOT NULL, version INTEGER NOT NULL, body TEXT NOT NULL, PRIMARY KEY(id,version)); @@ -99,8 +99,19 @@ class Store: triggers += (f"CREATE TRIGGER immutable_{table}_{operation} BEFORE {operation} ON {table} " "BEGIN SELECT RAISE(ABORT,'immutable evidence'); END;\n") db.executescript("BEGIN IMMEDIATE;" + _SCHEMA + triggers + "PRAGMA user_version=1; COMMIT;") - elif version != SCHEMA_VERSION: + elif version not in (1, SCHEMA_VERSION): raise StoreError("unsupported evidence schema version") + if version in (0, 1): + db.executescript("""BEGIN IMMEDIATE; + CREATE TABLE policy_observations (id TEXT PRIMARY KEY, at TEXT NOT NULL, + request TEXT NOT NULL, decision TEXT, outcome TEXT NOT NULL, + usable_until REAL NOT NULL, response_sha256 TEXT, + decision_attributable INTEGER NOT NULL CHECK(decision_attributable=0)); + CREATE TRIGGER immutable_policy_observations_UPDATE BEFORE UPDATE ON policy_observations + BEGIN SELECT RAISE(ABORT,'immutable evidence'); END; + CREATE TRIGGER immutable_policy_observations_DELETE BEFORE DELETE ON policy_observations + BEGIN SELECT RAISE(ABORT,'immutable evidence'); END; + PRAGMA user_version=2; COMMIT;""") @contextmanager def _connection(self): @@ -168,9 +179,35 @@ class Store: raise EvidenceUnavailable("informed-decision cannot produce the named memo version") return memo_from(json.loads(row["body"])) - def memo(self, memo_id): + def memo(self, memo_id, version=None): with self._connection() as db: - return self._memo(db, memo_id) + return self._memo(db, memo_id, version) + + def observe_policy(self, observation): + request = json.loads(observation.request_json) + _text(request["id"], "policy observation id") + with self._transaction() as db: + db.execute("INSERT INTO policy_observations VALUES (?,?,?,?,?,?,?,0)", + (request["id"], _now(), observation.request_json, observation.decision_json, + observation.outcome, observation.usable_until, observation.response_sha256)) + return request["id"] + + def policy_observations(self): + with self._connection() as db: + return [dict(r) for r in db.execute("SELECT * FROM policy_observations ORDER BY rowid")] + + def _guard_policy(self, db, policy_id, memo, subject, action): + if policy_id is None: + return # Existing internal domain API; the browser always supplies one. + row = db.execute("SELECT * FROM policy_observations WHERE id=?", (policy_id,)).fetchone() + if row is None or row["outcome"] != "allow" or row["usable_until"] <= time.time(): + raise Conflict("a current recorded policy observation is required") + request = json.loads(row["request"]) + if (request["action"] != action or request["subject"]["id"] != subject + or request["resource"]["id"] != "memo:" + memo.id + or request["context"] != {"memo_version": memo.version, "approval_id": memo.approval_id, + "approval_binding_digest": memo.approval_binding_digest}): + raise Conflict("policy observation does not name this act") def _presentation(self, db, presentation_id): row = db.execute("SELECT body FROM presentations WHERE id=?", (presentation_id,)).fetchone() @@ -202,7 +239,8 @@ class Store: db.execute("INSERT INTO outbox(id) VALUES (?)", (commitment.id,)) return commitment.id - def present(self, memo_id, *, principal_sub, tenant, principal_type, awareness=None): + def present(self, memo_id, *, principal_sub, tenant, principal_type, awareness=None, + expected_version=None, policy_id=None, approval_binding=None): _text(principal_sub, "principal") if (not isinstance(tenant, Claim) or tenant.value != "tenant:platform" or tenant.route not in (Route.DIRECTORY, Route.REGISTRATION) @@ -210,17 +248,26 @@ class Store: raise ValueError("platform tenant and principal provenance are required") with self._transaction() as db: memo = self._memo(db, memo_id) + if expected_version is not None and memo.version != expected_version: + raise Conflict("memo changed after the entitlement check") + self._guard_policy(db, policy_id, memo, principal_sub, "read") + if approval_binding is not None and approval_binding.get("digest") != memo.approval_binding_digest: + raise Conflict("observed act binding does not match this memo") presentation = render(memo, principal_sub=principal_sub, tenant=tenant, principal_type=principal_type, awareness=awareness) content = {"memo": json.loads(dumps(memo)), "presentation": json.loads(dumps(presentation)), "binding_document": memo.binding_document(), "awareness_document": memo.awareness_document(awareness)} + if policy_id is not None: + content["policy_observation_id"] = policy_id + if approval_binding is not None: + content["approval_binding"] = approval_binding # Observed act, never approval validity/state. db.execute("INSERT INTO presentations VALUES (?,?,?,?)", (presentation.id, memo.id, memo.version, dumps(presentation))) commitment = commit_presentation(presentation, custody="informed-decision:presentations:" + presentation.id) self._event(db, commitment, content) return presentation - def acknowledge(self, presentation_id, actor: Actor, highlight_ids): + def acknowledge(self, presentation_id, actor: Actor, highlight_ids, *, policy_id=None): ids = frozenset(highlight_ids) with self._transaction() as db: p = self._presentation(db, presentation_id) @@ -229,6 +276,7 @@ class Store: raise DispositionRefused("G_ACTOR", "actor did not receive this presentation") if memo.version != p.memo_version: raise DispositionRefused("G_PRES", "presentation is stale") + self._guard_policy(db, policy_id, memo, actor.sub, "acknowledge") if ids - {h.id for h in memo.highlights}: raise DispositionRefused("G_ACK", "unknown highlight") fresh = ids - p.acked_highlight_ids @@ -239,11 +287,11 @@ class Store: db.execute("INSERT INTO acknowledgments VALUES (?,?,?)", (p.id, highlight_id, at)) p = replace(p, acked_highlight_ids=p.acked_highlight_ids | fresh) c = commit_presentation(p, custody="informed-decision:presentations:" + p.id) - self._event(db, c, {"presentation": json.loads(dumps(p))}, + self._event(db, c, {"presentation": json.loads(dumps(p)), "policy_observation_id": policy_id}, {"event_kind": "acknowledgment", "acknowledged_at": at}) return p - def record_disposition(self, presentation_id, actor, verb, *, operation_id, reasons=(), note=None): + def record_disposition(self, presentation_id, actor, verb, *, operation_id, reasons=(), note=None, policy_id=None): _text(operation_id, "operation id") if note is not None and (not isinstance(note, str) or len(note) > 8192): raise ValueError("disposition note is too large or invalid") @@ -258,6 +306,7 @@ class Store: return disposition_from(json.loads(existing["body"])) p = self._presentation(db, presentation_id) memo = self._memo(db, p.memo_id) + self._guard_policy(db, policy_id, memo, actor.sub, verb.value) d = record(memo, p, verb, actor, reasons=tuple(reasons), note=note) if verb in BINDING_VERBS: if p.principal_type is None: @@ -272,11 +321,12 @@ class Store: if verb is Verb.ACCEPT: db.execute("INSERT INTO submissions(disposition_id,approval_id,subject) VALUES (?,?,?)", (d.id, memo.approval_id, actor.sub)) c = commit_disposition(d, custody="informed-decision:dispositions:" + d.id) - self._event(db, c, {"disposition": json.loads(dumps(d)), "presentation": json.loads(dumps(p))}, + self._event(db, c, {"disposition": json.loads(dumps(d)), "presentation": json.loads(dumps(p)), + "policy_observation_id": policy_id}, {"submission_state": "prepared"} if verb is Verb.ACCEPT else None) return d - def begin_submission(self, disposition_id): + def begin_submission(self, disposition_id, *, policy_id=None): """Reserve one external attempt, AFTER the caller's fresh policy check. No network occurs in this store. A crash after this reservation stays @@ -290,6 +340,7 @@ class Store: p = self._presentation(db, d.presentation_id) if self._memo(db, p.memo_id).version != p.memo_version: raise DispositionRefused("G_PRES", "presentation is stale") + self._guard_policy(db, policy_id, self._memo(db, p.memo_id), d.actor.sub, "accept") attempt = str(uuid.uuid4()) db.execute("UPDATE submissions SET state='in_flight',attempt=? WHERE disposition_id=?", (attempt, disposition_id)) return attempt @@ -323,6 +374,27 @@ class Store: row = db.execute("SELECT * FROM submissions WHERE disposition_id=?", (disposition_id,)).fetchone() return dict(row) if row else None + def intent_for(self, approval_id, subject): + with self._connection() as db: + row = db.execute("SELECT s.*,d.presentation_id,d.operation_id FROM submissions s " + "JOIN dispositions d ON d.id=s.disposition_id WHERE s.approval_id=? AND s.subject=?", + (approval_id, subject)).fetchone() + return dict(row) if row else None + + def dispositions_for(self, presentation_id): + with self._connection() as db: + return [disposition_from(json.loads(r[0])) for r in db.execute( + "SELECT body FROM dispositions WHERE presentation_id=? ORDER BY rowid", (presentation_id,))] + + def presentation_content(self, presentation_id): + with self._connection() as db: + row = db.execute("SELECT content FROM evidence WHERE class=? AND " + "json_extract(envelope,'$.data.presentation_id')=? ORDER BY rowid LIMIT 1", + (EventClass.PRESENTATION.value, presentation_id)).fetchone() + if row is None: + raise EvidenceUnavailable("informed-decision cannot produce the presentation content") + return json.loads(row[0]) + def retrieve_presentation(self, presentation_id): """Internal custody retrieval, not a browser export/entitlement route.""" with self._connection() as db: diff --git a/informed_decision/ui.py b/informed_decision/ui.py new file mode 100644 index 0000000..998ba66 --- /dev/null +++ b/informed_decision/ui.py @@ -0,0 +1,122 @@ +"""Server-rendered review; no scripts, telemetry or browser-held bearer token.""" + +from html import escape +from urllib.parse import quote +import uuid + +from .disposition import Verb, legal_verbs + + +STYLES = """ +:root{color-scheme:light;font-family:system-ui,sans-serif;color:#172d35;background:#f4f5ef} +*{box-sizing:border-box}body{margin:0}a{color:#145c65}header{background:#173d43;color:white;padding:1.25rem max(1.25rem,calc((100vw - 1080px)/2));display:flex;justify-content:space-between;align-items:center;gap:1rem}header a{color:inherit;text-decoration:none;font-weight:700}header small{color:#d2e8df}main{max-width:1080px;margin:2.5rem auto;padding:0 1.25rem}h1{font-size:clamp(1.7rem,3vw,2.6rem);line-height:1.2;max-width:850px}h2{font-size:1.2rem;margin-top:0}h3{font-size:1rem}p,li{line-height:1.6}.eyebrow{font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:#486a6f}.grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(230px,1fr);gap:1.25rem;align-items:start}.card{background:white;border:1px solid #d9dfd7;border-radius:12px;padding:1.5rem;margin-bottom:1.25rem}.notice{padding:1rem 1.25rem;border-left:4px solid #356f63;background:#e3eee7;margin:1.25rem 0}.warning{border-color:#a26814;background:#fff1d6}dl{margin:0}dt{font-size:.8rem;color:#5e7375;margin-top:1rem}dt:first-child{margin-top:0}dd{margin:.3rem 0;overflow-wrap:anywhere}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.88rem;line-height:1.5;background:#f3f5f0;padding:1rem;border-radius:6px}button{font:inherit;font-weight:600;border:1px solid #1f6460;border-radius:7px;padding:.7rem 1.1rem;background:#23665d;color:white;cursor:pointer}button.secondary{background:white;color:#244d50}button:disabled{opacity:.45;cursor:not-allowed}input,select,textarea{font:inherit;max-width:100%;padding:.65rem;border:1px solid #9badaa;border-radius:5px}input[type=checkbox]{width:1.2rem;height:1.2rem;vertical-align:middle;margin-right:.6rem}label{display:block;line-height:1.5;margin:.7rem 0}textarea{display:block;width:100%;min-height:90px}.muted{font-size:.9rem;color:#567074}.brief{white-space:pre-wrap}.actions{display:flex;flex-wrap:wrap;gap:.7rem}.highlight{padding:.9rem 0;border-bottom:1px solid #e3e8df}.highlight:last-of-type{border-bottom:0}details{margin:1rem 0}summary{cursor:pointer;font-weight:600}.hash{overflow-wrap:anywhere;font-family:monospace;font-size:.8rem}.record{padding:.7rem 0;border-bottom:1px solid #e3e8df}:focus-visible{outline:3px solid #b67e19;outline-offset:3px}footer{padding:1.5rem 0;color:#567074;font-size:.85rem}@media(max-width:740px){.grid{grid-template-columns:1fr}main{margin:1.5rem auto}header{align-items:start;flex-direction:column}} +""" + + +def text(value): + return escape(str(value), quote=True) + + +def document(title, content, subject=None): + return ('' + '' + f'{text(title)} · Informed Decision' + '
{content}' + '
An approval records a human decision. Execution has its own permission checks.
' + '
') + + +def hidden(name, value): + return f'' + + +def error_page(message, subject=None): + return document("Review unavailable", '

Review unavailable

'+text(message) + +'

Return to Informed Decision

', subject) + + +def review_page(page, session): + memo, p = page.memo, page.presentation + base = "/presentations/" + quote(p.id, safe="") + csrf = hidden("csrf", session.csrf) + missing = memo.required_ack_ids - p.acked_highlight_ids + legal = legal_verbs(memo.step_kind) + intent = page.intent + blocked = page.stale or page.engine_status not in ("requested", "approved") + accepted = intent and intent["state"] == "confirmed" + uncertain = intent and intent["state"] in ("in_flight", "unresolved") + if accepted: + notice = '
Approval entry recorded. This record retains the original review and acknowledgments. It does not authorize execution.
' + elif uncertain: + notice = '
Submission outcome is not confirmed. The entry may have reached Approval Engine. Do not submit another approval. This original record is retained for operator recovery.
' + elif page.stale: + notice = '
This is an earlier memo version. It cannot be used for a new action.
' + elif blocked: + notice = '
This approval is no longer open for a new entry.
' + else: + notice = '
Review the complete request and packet. Acknowledging highlights does not narrow what you accept.
' + binding = page.binding + facts = ''.join(f'
Informed Decision' + f'{text(subject) if subject else "Human review"}
{label}
{text(binding.get(key, "Not supplied"))}
' for key, label in + (("action", "Action"), ("target", "Act scope"), ("actor", "Executing identity"), + ("principal", "Requesting party"), ("reason", "Reason"))) + highlights = '' + for index, h in enumerate(memo.highlights): + acked = h.id in p.acked_highlight_ids + control = (f'✓ Acknowledged' if acked else + f'') + highlights += (f'

{text(h.note)}

' + f'

Document: {text(h.item_id)} · {"Required acknowledgment" if h.required_ack else "Optional acknowledgment"}

' + + (control if not blocked and not accepted and not uncertain else ('

Acknowledged

' if acked else '

Not acknowledged

')) + '
') + ack_button = '' if blocked or accepted or uncertain else '' + highlights = (f'

Highlights

' + + csrf + highlights + ack_button + '
') if memo.highlights else '' + packets = '' + for index, item in enumerate(memo.packet): + body = page.documents[item.item_id] + # Browser display is escaped text; every original byte remains available + # through an entitled attachment response, never as executable HTML. + try: + preview = body.decode("utf-8") if len(body) <= 65536 else None + except UnicodeDecodeError: + preview = None + packets += (f'
{text(item.label)}' + + (f'
{text(preview)}
' if preview is not None else '

Open the complete attachment to review this document.

') + + f'Download complete document

{text(item.hash)}

') + packet = '

Complete packet

'+ (packets or '

No attachments.

') + '
' + terms = ''.join(f'

{label}

{text(value)}

' for label, value in + (("Terms", memo.binding.terms), ("Justification", memo.binding.justification)) if value) + forms = '' + if not blocked and not accepted and not uncertain: + for verb, label in ((Verb.ACCEPT, "Accept the complete request"), (Verb.RETURN, "Return for improvement"), + (Verb.DISCUSS, "Request discussion"), (Verb.DECLINE, "Decline")): + if verb not in legal: + continue + operation = intent["operation_id"] if intent and verb is Verb.ACCEPT else str(uuid.uuid4()) + fields = csrf + hidden("verb", verb.value) + hidden("operation_id", operation) + if verb is Verb.RETURN: + fields += '' + if verb in (Verb.RETURN, Verb.DISCUSS): + fields += '' + disabled = ' disabled' if missing and verb in (Verb.ACCEPT, Verb.DECLINE) else '' + forms += (f'{label}' + f'
{fields}

' + + ('Acceptance covers the entire request, including the complete packet.' if verb is Verb.ACCEPT else + 'This records your response on the memo.') + + f'

') + if missing: + forms = '

Record all required acknowledgments before accepting or declining.

' + forms + records = ''.join(f'
{text(d.verb.value.capitalize())} · {text(d.at)}' + + (f'

{text(d.note)}

' if d.note else '') + '
' for d in page.dispositions) + evidence = (f'
Evidence details

Memo {text(memo.id)} · version {memo.version}

' + f'

Presentation {text(p.id)}

View: {text(p.view_hash)}

' + f'

Act: {text(memo.approval_binding_digest)}

' + f'

Account zone: {text(session.tenant.value)} ({text(session.tenant.route.value)}). This is separate from the act scope.

') + content = (f'

Decision review · version {memo.version}

{text(memo.question)}

' + + notice + '

The request

' + f'

{text(memo.requested_act)}

{text(memo.brief)}

{terms}
' + + highlights + packet + '

Your response

' + (forms or '

No new approval submission is available from this record.

') + + (f'

Recorded responses

{records}' if records else '') + '
' + + f'
') + return document(memo.question, content, session.subject) diff --git a/informed_decision/web.py b/informed_decision/web.py index 68338d4..ffaa5e7 100644 --- a/informed_decision/web.py +++ b/informed_decision/web.py @@ -1,4 +1,4 @@ -"""Browser login shell. Protected memo rendering/binding is not wired yet.""" +"""Browser login and protected review routes, enabled by owner configuration.""" from __future__ import annotations @@ -7,9 +7,18 @@ from http.cookies import CookieError, SimpleCookie import json import os import secrets +import re +import sqlite3 from urllib.parse import parse_qs from .oidc import KeyCapeLogin, LoginError, ORIGIN +from .approval_client import ApprovalEngineError +from .disposition import DispositionRefused, Verb +from .policy import PolicyError +from .provenance import HumanControlNotDischargeable +from .review import ReviewError +from .store import Conflict, EvidenceUnavailable, StoreError +from .ui import STYLES, document, error_page, review_page FLOW_COOKIE = "__Host-infd-flow" SESSION_COOKIE = "__Host-infd-session" @@ -19,24 +28,30 @@ def _cookie(name: str, value: str, seconds: int) -> tuple[str, str]: return "Set-Cookie", f"{name}={value}; Path=/; Secure; HttpOnly; SameSite=Lax; Max-Age={seconds}" -def _one(query: str) -> dict[str, str]: - if len(query) > 8192: +def _one(query: str, *, limit=8192, fields=16) -> dict[str, str]: + if len(query) > limit: raise ValueError("request too large") - values = parse_qs(query, keep_blank_values=True, max_num_fields=16) + values = parse_qs(query, keep_blank_values=True, max_num_fields=fields, errors="strict") if any(len(v) != 1 for v in values.values()): raise ValueError("duplicate parameter") return {k: v[0] for k, v in values.items()} class App: - def __init__(self, login: KeyCapeLogin): + def __init__(self, login: KeyCapeLogin, review=None, *, readiness=lambda: False): self.login = login + self.review, self.readiness = review, readiness def __call__(self, environ, start_response): + path = environ.get("PATH_INFO", "/") + # Chromium sends Origin: null for a form under no-referrer. Review + # pages need same-origin so legitimate POSTs satisfy the exact-origin + # CSRF check. Authentication URLs and downloads never send a referrer. + referrer_policy = "no-referrer" if path.startswith("/auth/") or "/packet/" in path else "same-origin" headers = [ ("Cache-Control", "no-store"), ("Pragma", "no-cache"), - ("Referrer-Policy", "no-referrer"), ("X-Content-Type-Options", "nosniff"), - ("Content-Security-Policy", "default-src 'none'; form-action 'self'; frame-ancestors 'none'; base-uri 'none'"), + ("Referrer-Policy", referrer_policy), ("X-Content-Type-Options", "nosniff"), + ("Content-Security-Policy", "default-src 'none'; style-src 'self'; form-action 'self'; frame-ancestors 'none'; base-uri 'none'"), ("Strict-Transport-Security", "max-age=31536000"), ] try: @@ -53,8 +68,37 @@ class App: headers.append(_cookie(FLOW_COOKIE, "", 0)) except (ValueError, CookieError, UnicodeError): status, body, content_type = 400, "Invalid request.", "text/plain" - raw = body.encode() - headers += [("Content-Type", content_type + "; charset=utf-8"), ("Content-Length", str(len(raw)))] + except ReviewError as exc: + messages = { + "session_expired": "Your session expired. Sign in again to continue.", + "invalid_form": "This form could not be verified. Reopen the review before submitting again.", + "policy_denied": "The permission service refused this review action.", + "wrong_recipient": "This review is addressed to another person.", + "stale_presentation": "The memo changed. Open its current version before taking an action.", + "binding_changed": "The approval no longer matches this memo. A revised review is required.", + "renderer_changed": "This memo names an earlier review interface. A new memo version is required before showing it here.", + "unsupported_review_profile": "This review interface supports English organizational approvals. The memo requires a different review profile.", + "existing_entry_unlinked": "An approval entry already exists, but this review cannot prove its original presentation. Operator recovery is required; no new entry was submitted.", + "act_unavailable": "This approval is no longer open for a new entry.", + } + status, body, content_type = exc.status, error_page(messages.get(exc.code, + "The review could not complete its required checks. Reload after the service is available.")), "text/html" + except DispositionRefused as exc: + status, body, content_type = 409, error_page({ + "G_ACK": "Record all required highlight acknowledgments before accepting or declining.", + "G_REASONS": "Choose a reason when returning this memo.", + "G_PRES": "The memo changed. Open its current version before taking an action.", + }.get(exc.guard, "This action is not available for the current review.")), "text/html" + except HumanControlNotDischargeable: + status, body, content_type = 403, error_page("A verified human session is required."), "text/html" + except EvidenceUnavailable: + status, body, content_type = 404, error_page("The requested review or its evidence is unavailable."), "text/html" + except Conflict: + status, body, content_type = 409, error_page("The review changed or already has a submission. Reload the original record."), "text/html" + except (PolicyError, ApprovalEngineError, StoreError, sqlite3.Error): + status, body, content_type = 503, error_page("The required service or evidence store is unavailable. A submission may be unresolved; reopen the original review before taking another action."), "text/html" + raw = body if isinstance(body, bytes) else body.encode() + headers += [("Content-Type", content_type + ("; charset=utf-8" if content_type != "application/octet-stream" else "")), ("Content-Length", str(len(raw)))] start_response(f"{status} {'OK' if status < 400 else 'ERROR'}", headers) return [raw] @@ -63,7 +107,11 @@ class App: if method == "GET" and path == "/healthz": return 200, '{"status":"ok"}', "application/json", [] if method == "GET" and path == "/readyz": + if self.review is not None and self.readiness(): + return 200, '{"status":"ready"}', "application/json", [] return 503, json.dumps({"status": "incomplete", "reason": "approval_path_not_connected"}), "application/json", [] + if method == "GET" and path == "/assets/review.css": + return 200, STYLES, "text/css", [] if method == "GET" and path == "/auth/start": url, browser = self.login.start() return 303, "", "text/plain", [("Location", url), _cookie(FLOW_COOKIE, browser, 300)] @@ -76,6 +124,48 @@ class App: return 303, "", "text/plain", [("Location", "/"), _cookie(FLOW_COOKIE, "", 0), _cookie(SESSION_COOKIE, new_sid, 900)] session = self.login.session(sid) + if self.review is not None and (path == "/review" or path.startswith("/presentations/")): + if session is None: + raise ReviewError(401, "session_expired") + if method == "GET" and path == "/review": + params = _one(environ.get("QUERY_STRING", "")) + if set(params) != {"memo_id"} or not re.fullmatch(r"[A-Za-z0-9][A-Za-z0-9._:-]{0,255}", params["memo_id"]): + raise ValueError("invalid memo id") + page = self.review.open(session, params["memo_id"]) + return 200, review_page(page, session), "text/html", [] + match = re.fullmatch(r"/presentations/(pres-[a-f0-9-]{36})(?:/(ack|act|packet/([0-9]{1,3})))?", path) + if not match: + return 404, "Not found.", "text/plain", [] + presentation_id, route, index = match.groups() + if method == "GET" and (route is None or index is not None): + page = self.review.load(session, presentation_id) + if index is not None: + number = int(index) + if number >= len(page.memo.packet): + return 404, "Not found.", "text/plain", [] + item = page.memo.packet[number] + return 200, page.documents[item.item_id], "application/octet-stream", [ + ("Content-Disposition", f'attachment; filename="review-document-{number + 1}.bin"')] + return 200, review_page(page, session), "text/html", [] + if method == "POST" and route in ("ack", "act"): + params = self._form(environ, session) + if route == "ack": + if any(k != "csrf" and not re.fullmatch(r"h[0-9]{1,3}", k) for k in params): + raise ValueError("unexpected acknowledgment field") + self.review.acknowledge(session, presentation_id, [v for k,v in params.items() if k != "csrf"]) + target = presentation_id + else: + if set(params) - {"csrf", "verb", "operation_id", "reason", "note"}: + raise ValueError("unexpected action field") + if not re.fullmatch(r"[a-f0-9-]{36}", params.get("operation_id", "")): + raise ValueError("invalid operation id") + if params.get("verb") == "accept" and not self.readiness(): + raise ReviewError(503, "audit_delivery_unavailable") + target = self.review.act(session, presentation_id, Verb(params.get("verb")), + operation_id=params["operation_id"], reasons=(params["reason"],) if params.get("reason") else (), + note=params.get("note") or None) + return 303, "", "text/plain", [("Location", "/presentations/" + target)] + return 405, "Method not allowed.", "text/plain", [("Allow", "POST" if route in ("ack", "act") else "GET")] if method == "POST" and path == "/auth/logout": if environ.get("HTTP_ORIGIN") != ORIGIN or not session: return 403, "Invalid sign-out request.", "text/plain", [] @@ -93,22 +183,48 @@ class App: if method == "GET" and path == "/": if session: content = (f"

Signed in as {html.escape(session.subject)}.

" - "

Decision review is being prepared. No approval has been recorded.

" + + ('

Open a decision review

Enter the memo identifier supplied with your review request.

' + '
' + '
' if self.review is not None else + '

Decision review is being prepared. No approval has been recorded.

') + '
' f'' '
') else: content = '

Sign in with KeyCape

' - return 200, ('' - '' - 'Informed Decision

Informed Decision

' - + content + ''), "text/html", [] + return 200, document("Informed Decision", content, session.subject if session else None), "text/html", [] return 404, "Not found.", "text/plain", [] + def _form(self, environ, session): + if environ.get("HTTP_ORIGIN") != ORIGIN: + raise ReviewError(403, "invalid_form") + length = int(environ.get("CONTENT_LENGTH") or 0) + if not 0 < length <= 65536 or environ.get("CONTENT_TYPE", "").split(";")[0] != "application/x-www-form-urlencoded": + raise ValueError("invalid body") + raw = environ["wsgi.input"].read(length) + if len(raw) != length: + raise ValueError("truncated body") + params = _one(raw.decode(), limit=65536, fields=256) + csrf = params.get("csrf", "") + if not csrf.isascii() or not secrets.compare_digest(csrf, session.csrf): + raise ReviewError(403, "invalid_form") + return params + def main(): from waitress import serve # Waitress does not log request targets; a proxy must also omit callback # query strings and cookies. No debug traceback middleware belongs here. - app = App(KeyCapeLogin(os.environ["INFD_KEYCAPE_ISSUER"])) - serve(app, host="127.0.0.1", port=8080, threads=4) + login = KeyCapeLogin(os.environ["INFD_KEYCAPE_ISSUER"]) + runtime = None + if os.environ.get("INFD_REVIEW_CONFIG"): + from .runtime import Runtime + runtime = Runtime.from_file(os.environ["INFD_REVIEW_CONFIG"]) + runtime.pump.start() + app = App(login, runtime.controller if runtime else None, + readiness=runtime.pump.ready if runtime else lambda: False) + try: + serve(app, host="127.0.0.1", port=8080, threads=4) + finally: + if runtime: + runtime.pump.stop() diff --git a/pyproject.toml b/pyproject.toml index d1fee40..1eef16d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "informed-decision" -version = "0.1.0" +version = "0.2.0" description = "Presentation and binding surface for decisions — the Decision Memo and its evidence." requires-python = ">=3.11" dependencies = ["PyJWT[crypto]>=2.10,<3", "waitress>=3,<4"] diff --git a/tests/browser_fixture.py b/tests/browser_fixture.py new file mode 100644 index 0000000..8b69e29 --- /dev/null +++ b/tests/browser_fixture.py @@ -0,0 +1,116 @@ +"""Local-only browser exercise over actual components and synthetic identity. + +Run with all three INFD_* component source/binary variables, and pass an output +directory. The fixture controls below are NOT part of informed_decision.web. +""" + +import json +import os +from pathlib import Path +import sys +import threading +import base64 +import hashlib +import ssl +from datetime import datetime, timedelta, timezone +from urllib.parse import parse_qs, urlsplit +from wsgiref.simple_server import WSGIRequestHandler, make_server +from cryptography import x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.x509.oid import NameOID + +from informed_decision.oidc import KeyCapeLogin +from informed_decision.runtime import AuditPump +from informed_decision.web import App +from test_browser_auth import ISSUER, IssuerFixture, signing_key +from test_approval_component import component +from test_durable_component import receiver +from test_review_controller import review +from review_components import flex_component + + +def main(): + directory=Path(sys.argv[1]);directory.mkdir(mode=0o700,parents=True,exist_ok=True) + key=signing_key.__wrapped__() + class Quiet(WSGIRequestHandler): + def log_message(self,*args):pass + tls_server=make_server('127.0.0.1',0,lambda e,s:[],handler_class=Quiet) + public_origin=f'https://decisions.coulomb.social:{tls_server.server_port}' + issuer_origin=f'https://keycape.test:{tls_server.server_port}' + # Test-only ports, real HTTPS and redirects. Exact production strings stay + # pinned by the separate registration/login contract tests. + import informed_decision.oidc as oidc_module + import informed_decision.web as web_module + import test_browser_auth as browser_auth + import test_approval_component as approval_component + oidc_module.ORIGIN=web_module.ORIGIN=public_origin + oidc_module.CALLBACK=browser_auth.CALLBACK=public_origin+'/auth/callback' + browser_auth.ISSUER=approval_component.ISSUER=issuer_origin + now=datetime.now(timezone.utc) + name=x509.Name([x509.NameAttribute(NameOID.COMMON_NAME,'Browser fixture')]) + certificate=(x509.CertificateBuilder().subject_name(name).issuer_name(name).public_key(key.public_key()) + .serial_number(x509.random_serial_number()).not_valid_before(now-timedelta(minutes=1)) + .not_valid_after(now+timedelta(hours=1)).add_extension(x509.SubjectAlternativeName([ + x509.DNSName('decisions.coulomb.social'),x509.DNSName('keycape.test')]),critical=False).sign(key,hashes.SHA256())) + cert_path=directory/'browser-cert.pem';cert_path.write_bytes(certificate.public_bytes(serialization.Encoding.PEM)) + key_path=directory/'browser-key.pem';key_path.write_bytes(key.private_bytes(serialization.Encoding.PEM, + serialization.PrivateFormat.PKCS8,serialization.NoEncryption()));key_path.chmod(0o600) + context=ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER);context.load_cert_chain(cert_path,key_path) + tls_server.socket=context.wrap_socket(tls_server.socket,server_side=True) + spki=base64.b64encode(hashlib.sha256(key.public_key().public_bytes(serialization.Encoding.DER, + serialization.PublicFormat.SubjectPublicKeyInfo)).digest()).decode() + engine_fixture=component.__wrapped__(key,directory);engine_parts=next(engine_fixture) + sink,receiver_transport,backend=receiver.__wrapped__(directory) + controller,_,_,memo,engine,transport=review.__wrapped__(engine_parts,directory) + issuer=IssuerFixture(key);login=KeyCapeLogin(issuer_origin,transport=issuer) + original_start=login.start + def start(): + url,browser=original_start() + issuer.params={k:v[0] for k,v in parse_qs(urlsplit(url).query).items()} + return url,browser + login.start=start + with flex_component(os.environ['INFD_FLEX_AUTH_BINARY'],directory,key) as (policy,calls): + controller.policy=policy + pump=AuditPump(controller.store,sink);pump.tick() + assert pump.ready() + app=App(login,controller,readiness=pump.ready) + def fixture(environ,start_response): + path=environ.get('PATH_INFO') + if path=='/authorize': + params={k:v[0] for k,v in parse_qs(environ.get('QUERY_STRING','')).items()} + assert params['code_challenge_method']=='S256' + assert params['redirect_uri']==oidc_module.CALLBACK + start_response('303 See Other',[('Location',oidc_module.CALLBACK+'?state='+params['state']+'&code=synthetic-browser-code')]) + return [b''] + if path=='/_fixture/status': + pump.tick() + intents=[controller.store.intent_for('fixture','human-fixture')] + payload={'entries':len(engine.get('fixture').entries),'intents':intents, + 'outbox_states':[r['state'] for r in controller.store.outbox()], + 'policy_outcomes':[r['outcome'] for r in controller.store.policy_observations()], + 'decision_attributable':[r['decision_attributable'] for r in controller.store.policy_observations()], + 'entry_posts':sum(m=='POST' for m,_ in transport.calls), + 'consume_calls':sum(url.endswith('/consume') for _,url in transport.calls), + 'tokenreviews':len(calls)} + raw=json.dumps(payload).encode();start_response('200 OK',[('Content-Type','application/json')]);return [raw] + if path=='/_fixture/refuse-caller': + policy.token_provider=lambda:'synthetic-wrong-caller' + start_response('200 OK',[('Content-Type','application/json')]);return [b'{}'] + if path=='/_fixture/stop': + threading.Thread(target=server.shutdown,daemon=True).start() + start_response('200 OK',[('Content-Type','application/json')]);return [b'{}'] + return app(environ,start_response) + tls_server.set_app(fixture) + tls_thread=threading.Thread(target=tls_server.serve_forever,daemon=True);tls_thread.start() + with make_server('127.0.0.1',0,fixture,handler_class=Quiet) as server: + (directory/'server.json').write_text(json.dumps({'origin':f'http://127.0.0.1:{server.server_port}', + 'public_origin':public_origin,'issuer':issuer_origin,'certificate_spki':spki,'memo_id':memo.id,'fixture_only':True})+'\n') + print('Browser fixture ready',flush=True) + try:server.serve_forever() + except KeyboardInterrupt:pass + finally: + tls_server.shutdown();tls_server.server_close();tls_thread.join(timeout=5) + engine_fixture.close() + + +if __name__=='__main__':main() diff --git a/tests/browser_review.mjs b/tests/browser_review.mjs new file mode 100644 index 0000000..153837b --- /dev/null +++ b/tests/browser_review.mjs @@ -0,0 +1,117 @@ +// Automated browser contract exercise. All identities and grants are synthetic. +import assert from 'node:assert/strict'; +import fs from 'node:fs/promises'; +import path from 'node:path'; +import {createRequire} from 'node:module'; +const require=createRequire(import.meta.url); +const {chromium}=require(process.env.INFD_PLAYWRIGHT_PACKAGE || 'playwright'); +const directory=process.argv[2]; +const fixture=JSON.parse(await fs.readFile(path.join(directory,'server.json'),'utf8')); +const checks=[]; +const browser=await chromium.launch({headless:true,executablePath:process.env.INFD_CHROMIUM_EXECUTABLE,args:[ + '--no-proxy-server', + '--host-resolver-rules=MAP decisions.coulomb.social 127.0.0.1, MAP keycape.test 127.0.0.1', + '--ignore-certificate-errors-spki-list='+fixture.certificate_spki +]}); +const context=await browser.newContext({viewport:{width:1360,height:1000},acceptDownloads:true}); +const errors=[]; +const navigation=[]; +const formOrigins=[]; +try { + // Both test names resolve to the disposable HTTPS server. All redirects, + // browser cookies and form Origins travel through real HTTP/TLS. Only this + // fixture certificate's public key is trusted by the browser override. + const page=await context.newPage();page.setDefaultTimeout(10000); + page.on('pageerror',error=>errors.push(String(error))); + page.on('request',request=>{if(request.method()==='POST')formOrigins.push({ + path:new URL(request.url()).pathname,origin:request.headers().origin || null});}); + page.on('response',response=>navigation.push({path:new URL(response.url()).pathname,status:response.status()})); + page.on('dialog',async dialog=>{errors.push('Unexpected script dialog');await dialog.dismiss();}); + await page.goto(fixture.public_origin+'/'); + await page.getByRole('link',{name:'Sign in with KeyCape'}).click(); + await page.getByRole('heading',{name:'Open a decision review'}).waitFor({timeout:10000}); + const cookies=await context.cookies(); + const session=cookies.find(c=>c.name==='__Host-infd-session'); + assert(session?.secure && session?.httpOnly && session?.sameSite==='Lax'); + checks.push('PKCE callback and secure browser session'); + await page.getByLabel('Memo identifier').fill(fixture.memo_id); + await page.getByRole('button',{name:'Open review',exact:true}).click(); + await page.getByRole('heading',{name:'The request',exact:true}).waitFor(); + const accept=()=>page.getByRole('button',{name:'Accept the complete request',exact:true}); + assert(await accept().isDisabled()); + assert.equal(await page.locator('img,script').count(),0); + await page.screenshot({path:path.join(directory,'review-desktop.png'),fullPage:true}); + checks.push('Entitled page escapes memo and packet markup'); + await accept().evaluate(button=>button.disabled=false); + await accept().click(); + await page.getByText('Record all required highlight acknowledgments before accepting or declining.').waitFor(); + let state=await (await fetch(fixture.origin+'/_fixture/status')).json(); + assert.equal(state.entries,0);assert.equal(state.entry_posts,0); + checks.push('Server refuses bypass of missing acknowledgments'); + await page.goBack(); + await page.getByLabel('I have reviewed this highlight').check(); + await page.getByRole('button',{name:'Record acknowledgments',exact:true}).click(); + assert(await accept().isEnabled()); + checks.push('Explicit acknowledgment unlocks the form'); + await page.locator('summary').filter({hasText:'Whole fixture document'}).click(); + const [download]=await Promise.all([ + page.waitForEvent('download'),page.getByRole('link',{name:'Download complete document',exact:true}).click() + ]); + const bytes=await fs.readFile(await download.path()); + assert(bytes.includes(Buffer.from('Full fixture terms.'))); + checks.push('Complete attachment download stays behind entitlement'); + await page.locator('summary').filter({hasText:'Return for improvement'}).click(); + const returned=page.locator('form').filter({has:page.locator('select[name="reason"]')}); + await returned.locator('select').selectOption('clarification_needed'); + await returned.locator('textarea').fill('Synthetic browser return: clarify the fixture scope.'); + await returned.getByRole('button',{name:'Return for improvement',exact:true}).click(); + await page.getByText('Synthetic browser return: clarify the fixture scope.').waitFor(); + state=await (await fetch(fixture.origin+'/_fixture/status')).json();assert.equal(state.entries,0); + checks.push('Return records a memo response without an engine entry'); + await page.setViewportSize({width:390,height:844}); + assert(await page.evaluate(()=>document.documentElement.scrollWidth<=innerWidth+1)); + await page.screenshot({path:path.join(directory,'review-mobile.png'),fullPage:true}); + checks.push('Mobile review fits the viewport'); + await page.setViewportSize({width:1360,height:1000}); + await accept().click(); + await page.getByText('Approval entry recorded.',{exact:true}).waitFor(); + assert.equal(await page.getByRole('button',{name:'Accept the complete request',exact:true}).count(),0); + await page.screenshot({path:path.join(directory,'recorded-desktop.png'),fullPage:true}); + await page.reload();await page.getByText('Approval entry recorded.',{exact:true}).waitFor(); + state=await (await fetch(fixture.origin+'/_fixture/status')).json(); + assert.equal(state.entries,1);assert.equal(state.entry_posts,1);assert.equal(state.consume_calls,0); + assert(state.outbox_states.every(s=>s==='delivered')); + assert(state.decision_attributable.every(value=>value===0)); + checks.push('One actual approval entry, stable on browser reload'); + checks.push('Audit receiver holds all commitments; unsigned decision gap retained'); + await fetch(fixture.origin+'/_fixture/refuse-caller'); + await page.reload();await page.getByRole('heading',{name:'Review unavailable'}).waitFor(); + assert(!(await page.content()).includes('private-brief-sentinel')); + state=await (await fetch(fixture.origin+'/_fixture/status')).json(); + assert.equal(state.policy_outcomes.at(-1),'caller_refused');assert.equal(state.entries,1); + checks.push('Real workload caller refusal hides review content'); + await page.goto(fixture.public_origin+'/'); + await page.getByRole('button',{name:'Sign out',exact:true}).click(); + await page.getByRole('link',{name:'Sign in with KeyCape'}).waitFor(); + assert(!(await context.cookies()).some(c=>c.name==='__Host-infd-session')); + assert(formOrigins.every(form=>form.origin===fixture.public_origin)); + checks.push('Sign-out clears the session; all forms carry the exact origin'); + assert.deepEqual(errors,[]); + checks.push('No page errors or injected script execution'); + const receipt={fixture_only:true,browser:'Chromium',checks_passed:checks.length,checks, + fixture_transport:'real HTTPS on ephemeral ports; synthetic issuer and TokenReview', + native_human_login_proven:false,native_policy_admitted:false,factory_attempts:0,paid_model_calls:0, + final_component_state:state}; + await fs.writeFile(path.join(directory,'browser-result.json'),JSON.stringify(receipt,null,2)+'\n'); + process.stdout.write(JSON.stringify({checks_passed:checks.length,entries:state.entries,entry_posts:state.entry_posts,fixture_only:true})+'\n'); +} finally { + if(checks.length<12 && context.pages()[0]) { + const page=context.pages()[0], url=new URL(page.url()); + await fs.writeFile(path.join(directory,'browser-debug.json'),JSON.stringify({ + path:url.pathname,body:await page.locator('body').innerText(),navigation,formOrigins, + cookie_names:(await context.cookies()).map(c=>c.name),errors},null,2)); + await page.screenshot({path:path.join(directory,'browser-debug.png'),fullPage:true}); + } + await browser.close(); + await fetch(fixture.origin+'/_fixture/stop').catch(()=>{}); +} diff --git a/tests/fixtures/review-policy/fixtures.json b/tests/fixtures/review-policy/fixtures.json new file mode 100644 index 0000000..62e86f0 --- /dev/null +++ b/tests/fixtures/review-policy/fixtures.json @@ -0,0 +1,58 @@ +[ + { + "id": "synthetic-allow", + "request": { + "id": "fixture-pin", + "tenant": "tenant:platform", + "subject": { + "id": "human-fixture", + "type": "human", + "tenant": "tenant:platform" + }, + "action": "read", + "resource": { + "id": "memo:memo-1", + "type": "decision-memo", + "system": "informed-decision", + "tenant": "tenant:platform" + }, + "context": { + "memo_version": 1, + "approval_id": "fixture", + "approval_binding_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + }, + "policy_version": "v1" + }, + "expect": { + "effect": "allow" + } + }, + { + "id": "synthetic-refusal", + "request": { + "id": "fixture-pin", + "tenant": "tenant:platform", + "subject": { + "id": "human-fixture", + "type": "human", + "tenant": "tenant:platform" + }, + "action": "consume", + "resource": { + "id": "memo:memo-1", + "type": "decision-memo", + "system": "informed-decision", + "tenant": "tenant:platform" + }, + "context": { + "memo_version": 1, + "approval_id": "fixture", + "approval_binding_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + }, + "policy_version": "v1" + }, + "expect": { + "effect": "deny" + } + } +] diff --git a/tests/fixtures/review-policy/pin.json b/tests/fixtures/review-policy/pin.json new file mode 100644 index 0000000..d1a7dc0 --- /dev/null +++ b/tests/fixtures/review-policy/pin.json @@ -0,0 +1,6 @@ +{ + "package": "informed-decision.fixture", + "version": "v1", + "package_digest": "sha256:bf39cd7fb33c3db6ba5adb3c036911216e35ef03c1168034e38fe741df67653a", + "fixture_only": true +} diff --git a/tests/fixtures/review-policy/policy.md b/tests/fixtures/review-policy/policy.md new file mode 100644 index 0000000..2d7e500 --- /dev/null +++ b/tests/fixtures/review-policy/policy.md @@ -0,0 +1,50 @@ +--- +id: informed-decision.fixture +name: Synthetic review API contract fixture +namespace: informed-decision:decision-memo +version: v1 +status: ready +package: flexauth.informed_decision.fixture +allow_ttl: 60s +actions: [read, acknowledge, accept, return, discuss, decline] +owner: fixture-only +fixtures: [fixtures.json] +caring: + profile: caring-0.4.0-rc2 + enforce: false +activation: + mode: local +--- + +# Synthetic component fixture, never a production policy + +Only the locally signed human-fixture and memo:memo-1 can exercise this test. +No production approver, group, mandate or permission is established here. +No presentation claim, view hash, acknowledgment or local outcome is input. + +```rego +import rego.v1 + +decision := {"effect": "allow", "reason": "synthetic_review_fixture"} if { + input.tenant == "tenant:platform" + input.subject.id == "human-fixture" + input.subject.type == "human" + input.resource.system == "informed-decision" + input.resource.type == "decision-memo" + input.resource.id == "memo:memo-1" + input.action in {"read", "acknowledge", "accept", "return", "discuss", "decline"} + input.context.approval_id == "fixture" +} else := {"effect": "deny", "reason": "fixture_scope_refused"} if { + true +} +``` + +```rego test +package flexauth.informed_decision.fixture_test +import rego.v1 +import data.flexauth.informed_decision.fixture + +test_unknown_request_denied if { + fixture.decision.effect == "deny" with input as {} +} +``` diff --git a/tests/fixtures/review-policy/registry.json b/tests/fixtures/review-policy/registry.json new file mode 100644 index 0000000..667dd35 --- /dev/null +++ b/tests/fixtures/review-policy/registry.json @@ -0,0 +1,18 @@ +{ + "subjects": [ + { + "id": "human-fixture", + "type": "Human", + "display_name": "Synthetic browser reviewer", + "organization_relation": "ServiceProvider", + "roles": [ + "Operator" + ], + "groups": [], + "tenant": "tenant:platform", + "metadata": { + "source": "synthetic-contract-fixture" + } + } + ] +} diff --git a/tests/review_components.py b/tests/review_components.py new file mode 100644 index 0000000..5e6c3ee --- /dev/null +++ b/tests/review_components.py @@ -0,0 +1,79 @@ +"""Disposable actual Flex Auth HTTP process, with synthetic Kubernetes custody. + +The evaluator and inbound caller authenticator are real. TokenReview and its +identities are fixtures; this does not admit any production caller or policy. +""" + +from contextlib import contextmanager +from datetime import datetime, timedelta, timezone +from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer +import json +import os +from pathlib import Path +import socket +import subprocess +import threading +import time + +from cryptography import x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.x509.oid import NameOID + +from informed_decision.http_transport import JSONTransport, TransportError +from informed_decision.policy import PolicyClient + +FIXTURE = Path(__file__).parent / 'fixtures/review-policy' + + +@contextmanager +def flex_component(binary, directory, signing_key): + tokens={'synthetic-workload-token':'system:serviceaccount:informed-decision:review', + 'synthetic-wrong-caller':'system:serviceaccount:other:other'} + calls=[] + class Reviewer(BaseHTTPRequestHandler): + def log_message(self,*args):pass + def do_POST(self): + body=json.loads(self.rfile.read(int(self.headers['Content-Length']))) + token=body['spec']['token'];calls.append({'known':token in tokens,'audiences':body['spec']['audiences']}) + valid=(self.path=='/apis/authentication.k8s.io/v1/tokenreviews' + and self.headers.get('Authorization')=='Bearer synthetic-reviewer' + and body['spec']['audiences']==['flex-auth'] and token in tokens) + raw=json.dumps({'status':{'authenticated':valid,'audiences':['flex-auth'] if valid else [], + 'user':{'username':tokens.get(token,'')}}}).encode() + self.send_response(201);self.send_header('Content-Type','application/json');self.end_headers();self.wfile.write(raw) + server=ThreadingHTTPServer(('127.0.0.1',0),Reviewer) + thread=threading.Thread(target=server.serve_forever,daemon=True);thread.start() + now=datetime.now(timezone.utc) + name=x509.Name([x509.NameAttribute(NameOID.COMMON_NAME,'synthetic-tokenreview-fixture')]) + cert=(x509.CertificateBuilder().subject_name(name).issuer_name(name).public_key(signing_key.public_key()) + .serial_number(x509.random_serial_number()).not_valid_before(now-timedelta(minutes=1)) + .not_valid_after(now+timedelta(hours=1)).add_extension(x509.BasicConstraints(ca=True,path_length=None),critical=True) + .sign(signing_key,hashes.SHA256())) + ca=directory/'fixture-ca.pem';ca.write_bytes(cert.public_bytes(serialization.Encoding.PEM)) + reviewer=directory/'reviewer-token';reviewer.write_text('synthetic-reviewer');reviewer.chmod(0o600) + with socket.socket() as listener: + listener.bind(('127.0.0.1',0));port=listener.getsockname()[1] + origin=f'http://127.0.0.1:{port}' + process=subprocess.Popen([str(binary),'serve','--addr',f'127.0.0.1:{port}', + '--registry',str(FIXTURE/'registry.json'),'--policy',str(FIXTURE/'policy.md'), + '--caller-auth-mode','enforce','--caller-binding','informed-decision=system:serviceaccount:informed-decision:review', + '--caller-kubernetes-url',f'http://127.0.0.1:{server.server_port}', + '--caller-reviewer-token-file',str(reviewer),'--caller-ca-file',str(ca)],stdout=subprocess.DEVNULL,stderr=subprocess.PIPE) + try: + transport=JSONTransport(allow_internal_http=True) + for _ in range(100): + if process.poll() is not None: + raise RuntimeError('fixture evaluator exited: '+process.stderr.read().decode()[:1000]) + try: + if transport.request('GET',origin+'/healthz')[0]==200:break + except TransportError:pass + time.sleep(.05) + else:raise RuntimeError('fixture evaluator did not start') + pin=json.loads((FIXTURE/'pin.json').read_text());pin.pop('fixture_only') + client=PolicyClient(origin,lambda:'synthetic-workload-token',allow_internal_http=True,**pin) + yield client,calls + finally: + process.terminate() + try:process.wait(timeout=5) + except subprocess.TimeoutExpired:process.kill();process.wait(timeout=5) + process.stderr.close();server.shutdown();server.server_close();thread.join(timeout=5) diff --git a/tests/test_browser_auth.py b/tests/test_browser_auth.py index f441c7a..203d228 100644 --- a/tests/test_browser_auth.py +++ b/tests/test_browser_auth.py @@ -274,7 +274,7 @@ def test_issuer_error_and_duplicate_params_do_not_leak_or_exchange(login): @pytest.mark.parametrize("origin,csrf,expected", [(ORIGIN, "correct", 303), (ORIGIN, "wrong", 403), - (None, "correct", 403), ("https://attacker.test", "correct", 403)]) + (None, "correct", 403), ("null", "correct", 403), ("https://attacker.test", "correct", 403)]) def test_logout_requires_origin_and_session_csrf(login, origin, csrf, expected): sid = finish(login) token = login[0].session(sid).csrf if csrf == "correct" else "wrong" @@ -284,6 +284,12 @@ def test_logout_requires_origin_and_session_csrf(login, origin, csrf, expected): assert bool(login[0].session(sid)) == (expected != 303) +@pytest.mark.parametrize("path,policy", [("/", "same-origin"), ("/review", "same-origin"), + ("/auth/callback", "no-referrer"), ("/presentations/pres-fixture/packet/0", "no-referrer")]) +def test_browser_referrer_policy_preserves_form_origin_and_protects_auth_urls(login, path, policy): + assert dict(call(App(login[0]), path)["headers"])["Referrer-Policy"] == policy + + @pytest.mark.parametrize("path,method,expected", [("/healthz", "GET", 200), ("/readyz", "GET", 503), ("/approvals/approval-fixture", "GET", 404), ("/approvals/approval-fixture/accept", "POST", 404), ("/v1/approvals/approval-fixture/entries", "POST", 404), ("/auth/logout", "GET", 404)]) diff --git a/tests/test_http_transport.py b/tests/test_http_transport.py index dcf8d28..13efc3d 100644 --- a/tests/test_http_transport.py +++ b/tests/test_http_transport.py @@ -22,6 +22,8 @@ def upstream(): "/ok": (200, b'{"ok":true}'), "/refuse": (403, b'{"error":"forbidden"}'), "/broken": (200, b"broken"), "/array": (200, b"[]"), "/large": (200, b" " * 262145), + "/plain-refuse": (403, b"forbidden secret-sentinel"), + "/large-refuse": (401, b"x" * 262145), }.get(self.path, (500, b"{}")) self.send_response(status) self.end_headers() @@ -60,3 +62,9 @@ def test_json_success_and_typed_refusal_preserved(): client = JSONTransport(allow_internal_http=True) assert client.request("GET", origin + "/ok") == (200, {"ok": True}) assert client.request("GET", origin + "/refuse") == (403, {"error": "forbidden"}) + + +@pytest.mark.parametrize("path,status", [("/plain-refuse",403),("/large-refuse",401)]) +def test_http_caller_refusal_is_not_relabelled_as_transport_outage(path,status): + with upstream() as (origin,calls): + assert JSONTransport(allow_internal_http=True).request("GET",origin+path)==(status,{}) diff --git a/tests/test_policy_client.py b/tests/test_policy_client.py new file mode 100644 index 0000000..a29493c --- /dev/null +++ b/tests/test_policy_client.py @@ -0,0 +1,114 @@ +import copy +from dataclasses import replace +from datetime import datetime, timezone +import json +import time + +import pytest + +from informed_decision.http_transport import TransportError +from informed_decision.oidc import HumanSession +from informed_decision.policy import CONTRACT, PolicyClient, PolicyError, build_request, submitted_digest +from informed_decision.provenance import Claim, Route +from test_skeleton import make_memo + +PIN = "sha256:" + "b" * 64 +STAMP = lambda t: datetime.fromtimestamp(t, timezone.utc).isoformat() + + +def human(): + return HumanSession("human-fixture", Claim("tenant:platform", Route.REGISTRATION), + Claim("human", Route.AUTHENTICATION), {"at": int(time.time()) - 20, "level": "aal2", "mfa": True, + "methods": ["pwd", "otp"], "source": "key-cape"}, time.time()+600, "synthetic-browser-token", roles=("Reviewer",)) + + +def envelope(request): + now = time.time() + return {"id": "decision-fixture", "contract_version": CONTRACT, "request_id": request["id"], + "effect": "allow", "matched_policy_version": "v1", "subject": copy.deepcopy(request["subject"]), + "resource": copy.deepcopy(request["resource"]), + "binding": {**copy.deepcopy({k:request[k] for k in ("tenant","subject","action","resource","context")}), + "request_digest": "sha256:" + "e" * 64, "submitted_request_digest": submitted_digest(request)}, + "lifetime": {"kind":"ttl", "not_before":STAMP(now-1), "expires_at":STAMP(now+60)}, + "provenance": {"evaluator":"flex-auth/local", "mode":"standalone", "policy_package":"informed-decision.fixture", + "policy_version":"v1", "policy_package_digest":PIN, "registry_snapshot_digest":"sha256:"+"c"*64, + "decision_time":STAMP(now)}} + + +class PolicyTransport: + def __init__(self): self.calls=[]; self.change=lambda d: None; self.status=200 + def request(self, method, url, *, headers=None, body=None): + self.calls.append((method,url,headers,json.loads(body))) + data=envelope(json.loads(body)); self.change(data) + return self.status, data + + +def policy(transport=None): + return PolicyClient("https://policy.test", lambda:"synthetic-workload-token", package="informed-decision.fixture", + version="v1", package_digest=PIN, transport=transport or PolicyTransport()) + + +def request(): + return build_request(human(), make_memo(approval_binding_digest="sha256:"+"a"*64), "read", "v1") + + +def test_request_preserves_identity_routes_and_excludes_presentation_claims(): + req=request(); attributes=req["subject"]["attributes"] + assert attributes["tenant_source"]=="registration-supplied" and attributes["principal_type_source"]=="authentication-derived" + assert attributes["roles"]==["Reviewer"] + assert set(req["context"])=={"memo_version","approval_id","approval_binding_digest"} + assert "synthetic-browser-token" not in json.dumps(req) + assert not any(k in json.dumps(req) for k in ["view_hash","presentation_id","acked_highlight_ids"]) + + +def test_fresh_exact_enriched_decision_and_separate_workload_identity(): + client=policy();req=request();observed=client.check(req) + observed.require_current(time.time()) + data=json.loads(observed.decision_json) + assert data["binding"]["request_digest"]!=data["binding"]["submitted_request_digest"] + assert client.transport.calls[0][2]["Authorization"]=="Bearer synthetic-workload-token" + assert observed.usable_until<=time.time()+30 + with pytest.raises(PolicyError):observed.require_current(time.time()+31) + + +@pytest.mark.parametrize("mutate", [ + lambda d:d.update(contract_version="unknown"), lambda d:d.update(request_id="other"), + lambda d:d["binding"].pop("submitted_request_digest"), + lambda d:d["binding"].update(submitted_request_digest="sha256:"+"0"*64), + lambda d:d["binding"].update(action="accept"), lambda d:d["binding"]["subject"].update(id="other"), + lambda d:d["binding"]["resource"].update(system="other"), + lambda d:d["binding"]["context"].update(memo_version=99), + lambda d:d["binding"].update(tenant="tenant:other"), lambda d:d["resource"].update(id="memo:other"), + lambda d:d["provenance"].update(policy_package="other"), lambda d:d["provenance"].update(policy_version="other"), + lambda d:d["provenance"].update(policy_package_digest="sha256:"+"0"*64), + lambda d:d.update(matched_policy_version="other"), lambda d:d["provenance"].pop("registry_snapshot_digest"), + lambda d:d["provenance"].update(decision_time=STAMP(time.time()-300)), + lambda d:d["lifetime"].update(expires_at=STAMP(time.time()-1)), + lambda d:d["lifetime"].update(not_before=STAMP(time.time()+300)), + lambda d:d["lifetime"].update(kind="forever"), lambda d:d.update(lifetime={}), + lambda d:d.update(obligations=[{"type":"unimplemented"}]), lambda d:d.update(obligations={}), + lambda d:d.update(obligations=None), lambda d:d.update(effect="redact"), + lambda d:d.update(effect="audit_only"), lambda d:d.update(effect="not_applicable"), + lambda d:d.update(effect="deny"), lambda d:d.update(diagnostics={"bad":float("nan")}), +]) +def test_unusable_decision_never_allows(mutate): + transport=PolicyTransport();transport.change=mutate + observed=policy(transport).check(request()) + with pytest.raises(PolicyError):observed.require_current(time.time()) + + +@pytest.mark.parametrize("status", [400,401,403,404,409,500,503]) +def test_upstream_errors_never_persist_response_body(status): + transport=PolicyTransport();transport.status=status + transport.change=lambda d:d.update(reason="secret-sentinel",diagnostics={"token":"secret-sentinel"}) + observed=policy(transport).check(request()) + assert observed.decision_json is None and "secret-sentinel" not in repr(observed) + with pytest.raises(PolicyError):observed.require_current(time.time()) + + +def test_transport_and_missing_caller_have_typed_observations(): + class Broken: + def request(self,*a,**kw):raise TransportError("secret-sentinel") + client=policy(Broken());assert client.check(request()).outcome=="policy_unavailable" + client.token_provider=lambda:None + assert client.check(request()).outcome=="caller_unavailable" diff --git a/tests/test_review_component.py b/tests/test_review_component.py new file mode 100644 index 0000000..84981b5 --- /dev/null +++ b/tests/test_review_component.py @@ -0,0 +1,76 @@ +from dataclasses import replace +import json +import os +from pathlib import Path +import time + +import pytest + +from informed_decision.disposition import Verb +from informed_decision.policy import build_request +from informed_decision.runtime import AuditPump +from informed_decision.web import SESSION_COOKIE +from test_browser_auth import call, signing_key +from test_approval_component import component +from test_review_controller import review, opened +from test_durable_component import receiver +from review_components import flex_component + + +@pytest.fixture +def pdp(tmp_path,signing_key): + binary=os.environ.get('INFD_FLEX_AUTH_BINARY') + if not binary:pytest.skip('set INFD_FLEX_AUTH_BINARY to test the actual evaluator and caller boundary') + assert Path(binary).is_file() + with flex_component(binary,tmp_path,signing_key) as value:yield value + + +def test_actual_pdp_enrichment_and_workload_caller_boundary(pdp,review): + client,calls=pdp;controller,session,_,memo,*_=review + request=build_request(session,memo,'read',client.version) + observation=client.check(request);assert observation.outcome=='allow',observation + decision=json.loads(observation.decision_json) + assert decision['binding']['request_digest']!=decision['binding']['submitted_request_digest'] + assert calls[-1]=={'known':True,'audiences':['flex-auth']} + client.token_provider=lambda:'synthetic-wrong-caller' + assert client.check(request).outcome=='caller_refused' + client.token_provider=lambda:session.access_token + assert client.check(request).outcome=='caller_refused' # Browser JWT is never a workload credential. + + +def test_actual_request_digest_handles_go_string_escaping(pdp,review): + client,_=pdp;_,session,_,memo,*_=review + session=replace(session,roles=('Reviewer & ü \u2028 \u2029',)) + observation=client.check(build_request(session,memo,'read',client.version)) + assert observation.outcome=='allow',observation + + +def test_actual_policy_engine_and_independent_audit_receive_browser_act(pdp,review,receiver): + controller,session,app,memo,engine,transport=review;controller.policy=pdp[0] + page=opened(review);p=page.presentation + controller.acknowledge(session,p.id,['h-1']) + controller.act(session,p.id,Verb.ACCEPT,operation_id='real-component-click') + assert len(engine.get('fixture').entries)==1 + sink,receiver_transport,_=receiver + pump=AuditPump(controller.store,sink);pump.tick();assert pump.ready() + assert all(row['state']=='delivered' for row in controller.store.outbox()) + observations=controller.store.policy_observations() + assert len(observations)==3 and all(row['outcome']=='allow' and row['decision_attributable']==0 for row in observations) + response=call(app,'/presentations/'+p.id,cookie=SESSION_COOKIE+'=fixture-session') + assert 'Approval entry recorded.' in response['body'] + event=controller.store.evidence()[0] + status,body=receiver_transport.request('GET','https://audit.test/v1/events/'+event['id'],headers={'Authorization':'Bearer synthetic-auditor-token'}) + assert status==200 and body['details']['data']['view_hash']==p.view_hash + assert 'private-brief-sentinel' not in json.dumps(body) + report=json.loads((controller.store.path.parent/'audit-reconciliation.json').read_text()) + assert report['source_time_basis']=='occurred_at' and report['receiver_time_basis']=='accepted_at' + assert not report['completeness_proven'] and not report['automatic_loss_finding'] + + +def test_actual_policy_refusal_prevents_content_and_engine_read(pdp,review): + controller,session,app,memo,engine,transport=review;controller.policy=pdp[0] + controller.store.save_memo(replace(memo,id='not-assigned-in-fixture')) + before=len(transport.calls) + response=call(app,'/review',query='memo_id=not-assigned-in-fixture',cookie=SESSION_COOKIE+'=fixture-session') + assert response['status']==403 and 'private-brief-sentinel' not in response['body'] + assert len(transport.calls)==before and controller.store.evidence()==[] diff --git a/tests/test_review_controller.py b/tests/test_review_controller.py new file mode 100644 index 0000000..629a64b --- /dev/null +++ b/tests/test_review_controller.py @@ -0,0 +1,254 @@ +from concurrent.futures import ThreadPoolExecutor +from dataclasses import replace +import json +import sqlite3 +import time +from urllib.parse import urlencode +import uuid + +import pytest + +from informed_decision.approval_http import ApprovalHTTPClient +from informed_decision.disposition import DispositionRefused, Verb +from informed_decision.http_transport import TransportError +from informed_decision.memo import BindingLevel, Highlight, PacketItem, Principal, Scope, StepKind +from informed_decision.policy import PolicyError +from informed_decision.review import ReviewController, ReviewError +from informed_decision.store import Conflict, Store +from informed_decision.web import App, SESSION_COOKIE +from informed_decision.oidc import ORIGIN +from test_approval_component import component, signing_key +from test_browser_auth import call +from test_policy_client import policy +from test_skeleton import make_memo + + +@pytest.fixture +def review(component, tmp_path): + client,engine,transport,session,_=component + private=tmp_path/'private';private.mkdir(mode=0o700) + store=Store(private/'review.sqlite') + packet=store.put_document(b'\nFull fixture terms.') + memo=make_memo(approval_id='fixture',approval_binding_digest=client.get_approval('fixture')['binding']['digest'], + question='Approve the synthetic factory delivery?', requested_act='deliver', + highlights=(Highlight('h-1','doc-1','Disposable test target; no production action',required_ack=True),), + packet=(PacketItem('doc-1','Whole fixture document',packet),), + brief='Disposable browser/component exercise. private-brief-sentinel ') + memo=replace(memo,binding=replace(memo.binding,principal=Principal(session.subject,'person','Fixture reviewer'), + target=Scope('resource','fixture','Synthetic factory target','test'))) + store.save_memo(memo) + controller=ReviewController(store,policy(),lambda s:ApprovalHTTPClient('https://approval.test',s,transport=transport)) + class Login: + def session(self,sid):return session if sid=='fixture-session' else None + app=App(Login(),controller,readiness=lambda:True) + return controller,session,app,memo,engine,transport + + +def opened(review): + controller,session,*_=review + return controller.open(session,'memo-1') + + +def post(review,p,route,**params): + _,session,app,*_=review + return call(app,'/presentations/'+p.id+'/'+route,'POST',cookie=SESSION_COOKIE+'=fixture-session', + origin=ORIGIN,body=urlencode({'csrf':session.csrf,**params}).encode()) + + +def test_read_denial_precedes_disclosure_engine_read_and_presentation(review): + controller,session,app,memo,engine,transport=review + controller.policy.transport.change=lambda d:d.update(effect='deny') + before=len(transport.calls) + r=call(app,'/review',query='memo_id=memo-1',cookie=SESSION_COOKIE+'=fixture-session') + assert r['status']==403 and 'private-brief-sentinel' not in r['body'] + assert len(transport.calls)==before and controller.store.evidence()==[] + assert controller.store.policy_observations()[0]['outcome']=='policy_denied' + + +def test_no_session_or_wrong_named_recipient_cannot_check_or_render(review): + controller,session,app,*_=review + assert call(app,'/review',query='memo_id=memo-1')['status']==401 + with pytest.raises(ReviewError):controller.open(replace(session,subject='other'),'memo-1') + assert controller.policy.transport.calls==[] and controller.store.policy_observations()==[] + + +@pytest.mark.parametrize('change', [{'locale':'de'}, {'binding_level':BindingLevel.AES}, + {'binding_level':BindingLevel.QES}, {'step_kind':StepKind.REVIEW}]) +def test_unsupported_profile_cannot_misstate_locale_or_binding_level(review,change): + controller,session,_,memo,*_=review + controller.store.save_memo(memo.next_version(**change)) + with pytest.raises(ReviewError,match='unsupported_review_profile'): + controller.open(session,memo.id) + assert controller.policy.transport.calls==[] and controller.store.evidence()==[] + + +def test_open_persists_exact_policy_and_binding_but_not_browser_credential(review): + controller,session,app,*_=review + page=opened(review);content=controller.store.presentation_content(page.presentation.id) + observed=controller.store.policy_observations() + assert observed[0]['decision_attributable']==0 + assert content['policy_observation_id']==observed[0]['id'] + assert content['approval_binding']['digest']==page.memo.approval_binding_digest + assert session.access_token not in json.dumps(observed) + assert all('policy_observation_id' not in r['envelope'] for r in controller.store.evidence()) + response=call(app,'/presentations/'+page.presentation.id,cookie=SESSION_COOKIE+'=fixture-session') + assert response['status']==200 and '<img' in response['body'] and '' not in response['body'] + assert not any(url.endswith('/consume') for _,url in transport.calls) + + +@pytest.mark.parametrize('verb',[Verb.RETURN,Verb.DISCUSS,Verb.DECLINE]) +def test_nonaccept_actions_preserve_vocabulary_without_engine_mutation(review,verb): + controller,session,app,memo,engine,transport=review;p=opened(review).presentation + controller.acknowledge(session,p.id,['h-1']) + result=post(review,p,'act',verb=verb.value,operation_id=str(uuid.uuid4()),reason='clarification_needed' if verb is Verb.RETURN else '',note='Private response') + assert result['status']==303 and not engine.get('fixture').entries + assert controller.store.dispositions_for(p.id)[0].verb is verb + response=call(app,'/presentations/'+p.id,cookie=SESSION_COOKIE+'=fixture-session') + assert 'Private response' in response['body'] + assert all('Private response' not in r['envelope'] for r in controller.store.evidence()) + + +def test_fresh_act_refusal_after_allowed_render_cannot_submit(review): + controller,session,app,memo,engine,transport=review;p=opened(review).presentation + controller.acknowledge(session,p.id,['h-1']) + controller.policy.transport.change=lambda d:d.update(effect='deny') + assert post(review,p,'act',verb='accept',operation_id=str(uuid.uuid4()))['status']==403 + assert not engine.get('fixture').entries and controller.store.dispositions_for(p.id)==[] + + +def test_policy_storage_failure_prevents_presentation(review): + controller,session,*_=review + with sqlite3.connect(controller.store.path) as db: + db.execute("CREATE TRIGGER fail_observation BEFORE INSERT ON policy_observations BEGIN SELECT RAISE(ABORT,'disk failure'); END") + with pytest.raises(sqlite3.IntegrityError):opened(review) + assert controller.store.evidence()==[] + + +def test_revision_between_policy_and_present_cannot_render_unchecked_version(review): + controller,session,_,memo,*_=review + controller.policy.transport.change=lambda d:controller.store.save_memo(memo.next_version(brief='changed')) + with pytest.raises(Conflict):opened(review) + assert controller.store.evidence()==[] + + +def test_stale_presentation_and_wrong_actor_cannot_ack_or_act(review): + controller,session,_,memo,engine,_=review;p=opened(review).presentation + with pytest.raises(ReviewError):controller.acknowledge(replace(session,subject='other'),p.id,['h-1']) + controller.store.save_memo(memo.next_version(brief='new version')) + with pytest.raises(ReviewError):controller.acknowledge(session,p.id,['h-1']) + with pytest.raises(ReviewError):controller.act(session,p.id,Verb.ACCEPT,operation_id='stale') + assert not engine.get('fixture').entries + + +def test_expiry_after_last_engine_read_prevents_reservation_and_post(review): + controller,session,_,memo,engine,transport=review;p=opened(review).presentation + controller.acknowledge(session,p.id,['h-1']) + original=transport.request;reads=0 + def request(method,url,**kwargs): + nonlocal reads + result=original(method,url,**kwargs) + if method=='GET': + reads+=1 + if reads==2:controller.clock=lambda:time.time()+40 + return result + transport.request=request + with pytest.raises(PolicyError):controller.act(session,p.id,Verb.ACCEPT,operation_id='late') + assert not engine.get('fixture').entries + assert controller.store.intent_for('fixture',session.subject)['state']=='prepared' + + +def test_parallel_clicks_submit_once(review): + controller,session,_,memo,engine,transport=review;p=opened(review).presentation + controller.acknowledge(session,p.id,['h-1']) + def click(_):return controller.act(session,p.id,Verb.ACCEPT,operation_id='one-click') + with ThreadPoolExecutor(max_workers=2) as pool:assert list(pool.map(click,range(2)))==[p.id,p.id] + assert len(engine.get('fixture').entries)==1 + assert sum(method=='POST' for method,_ in transport.calls)==1 + + +def test_lost_entry_reply_is_visible_and_never_retried(review): + controller,session,app,memo,engine,transport=review;p=opened(review).presentation + controller.acknowledge(session,p.id,['h-1']) + original=transport.request + def lose_reply(method,url,**kwargs): + result=original(method,url,**kwargs) + if method=='POST':raise TransportError('lost response') + return result + transport.request=lose_reply + controller.act(session,p.id,Verb.ACCEPT,operation_id='lost') + assert controller.store.intent_for('fixture',session.subject)['state']=='unresolved' + response=call(app,'/presentations/'+p.id,cookie=SESSION_COOKIE+'=fixture-session') + assert 'Submission outcome is not confirmed.' in response['body'] + assert 'Accept the complete request' not in response['body'] + controller.act(session,p.id,Verb.ACCEPT,operation_id='new-click') + assert len(engine.get('fixture').entries)==1 and sum(m=='POST' for m,_ in transport.calls)==1 + + +def test_unknown_existing_entry_never_acquires_a_new_presentation_link(review): + controller,session,_,memo,engine,transport=review;p=opened(review).presentation + ApprovalHTTPClient('https://approval.test',session,transport=transport).add_entry('fixture') + with pytest.raises(ReviewError,match='existing_entry_unlinked'): + controller.act(session,p.id,Verb.ACCEPT,operation_id='unlinked') + assert controller.store.intent_for('fixture',session.subject) is None + assert sum(m=='POST' for m,_ in transport.calls)==1 + + +def test_packet_download_rechecks_entitlement_and_forces_attachment(review): + controller,session,app,*_=review;p=opened(review).presentation + path='/presentations/'+p.id+'/packet/0' + response=call(app,path,cookie=SESSION_COOKIE+'=fixture-session') + assert response['status']==200 + assert dict(response['headers'])['Content-Type']=='application/octet-stream' + assert dict(response['headers'])['Content-Disposition'].startswith('attachment;') + controller.policy.transport.change=lambda d:d.update(effect='deny') + denied=call(app,path,cookie=SESSION_COOKIE+'=fixture-session') + assert denied['status']==403 and 'private-packet-sentinel' not in denied['body'] + + +def test_audit_not_ready_blocks_accept_before_policy_or_post(review): + controller,session,app,memo,engine,_=review;p=opened(review).presentation + app.readiness=lambda:False + assert post(review,p,'act',verb='accept',operation_id=str(uuid.uuid4()))['status']==503 + assert not engine.get('fixture').entries + assert call(app,'/readyz')['status']==503 + + +def test_renderer_release_cannot_silently_change_under_a_memo(review): + controller,session,_,memo,*_=review + controller.store.save_memo(memo.next_version(ui_release='informed-decision@0.1.0')) + with pytest.raises(ReviewError,match='renderer_changed'):opened(review) + assert controller.store.evidence()==[] diff --git a/tests/test_review_runtime.py b/tests/test_review_runtime.py new file mode 100644 index 0000000..02e3b5c --- /dev/null +++ b/tests/test_review_runtime.py @@ -0,0 +1,82 @@ +from dataclasses import replace +import json +import sqlite3 +import time + +import pytest + +from informed_decision.runtime import Runtime, AuditPump, token_file +from informed_decision.store import Store +from test_policy_client import policy,request +from test_durable_store import storage,present +from test_durable_component import receiver + + +def test_schema_one_upgrade_preserves_existing_evidence(storage): + store,memo=storage;p=present(store,memo) + before=store.evidence() + with sqlite3.connect(store.path) as db: + db.execute('DROP TABLE policy_observations');db.execute('PRAGMA user_version=1') + reopened=Store(store.path) + assert reopened.retrieve_presentation(p.id)[0]==memo and reopened.evidence()==before + assert reopened.policy_observations()==[] + observation=policy().check(request());reopened.observe_policy(observation) + assert Store(store.path).policy_observations()[0]['decision_attributable']==0 + with sqlite3.connect(store.path) as db: + for statement in ['DELETE FROM policy_observations',"UPDATE policy_observations SET outcome='allow'"]: + with pytest.raises(sqlite3.IntegrityError):db.execute(statement) + + +def test_caller_token_is_reread_on_rotation_and_bounded(tmp_path): + path=tmp_path/'token';path.write_text('synthetic-first\n');read=token_file(path) + assert read()=='synthetic-first' + path.write_text('synthetic-rotated');assert read()=='synthetic-rotated' + path.write_bytes(b'x'*32769) + with pytest.raises(ValueError):read() + with pytest.raises(ValueError):token_file('relative') + + +def config(tmp_path): + private=tmp_path/'private';private.mkdir(mode=0o700) + path=private/'runtime.json' + data={'schema':'informed-decision.review-runtime.v1','evidence_db':str(private/'review.sqlite'), + 'approval_origin':'https://approval.test','policy':{'origin':'https://policy.test','package':'fixture', + 'version':'v1','package_digest':'sha256:'+'a'*64,'caller_token_file':str(private/'unprovisioned-caller')}, + 'audit':{'origin':'https://audit.test','sender_token_file':str(private/'unprovisioned-sender')}} + path.write_text(json.dumps(data));path.chmod(0o600) + return path,data + + +def test_config_load_does_not_provision_or_read_credentials(tmp_path): + path,data=config(tmp_path);runtime=Runtime.from_file(path) + assert not runtime.pump.ready() + assert not (path.parent/'unprovisioned-caller').exists() + runtime.pump.tick();assert not runtime.pump.ready() + assert all(r['state']=='blocked' for r in runtime.controller.store.outbox()) + + +@pytest.mark.parametrize('fault',['permissions','symlink','unknown-key','relative-store','missing-pin','unsafe-origin']) +def test_unsafe_or_incomplete_config_refused(tmp_path,fault): + path,data=config(tmp_path) + if fault=='permissions':path.chmod(0o644) + elif fault=='symlink': + linked=path.parent/'link.json';linked.symlink_to(path);path=linked + elif fault=='unknown-key':data['allow_everyone']=True + elif fault=='relative-store':data['evidence_db']='relative.db' + elif fault=='missing-pin':data['policy']['package_digest']='' + elif fault=='unsafe-origin':data['approval_origin']='http://public.example.com' + if fault not in ('permissions','symlink'):path.write_text(json.dumps(data)) + with pytest.raises(ValueError):Runtime.from_file(path) + + +def test_pump_retains_blocked_delivery_and_requires_repair(storage,receiver): + store,memo=storage;present(store,memo) + sink,_,_=receiver;original=sink.token_provider;sink.token_provider=lambda:'synthetic-wrong-token' + pump=AuditPump(store,sink);pump.tick();assert not pump.ready() + ids=[r['id'] for r in store.outbox() if r['state']=='blocked'];assert ids + sink.token_provider=original + pump.tick();assert not pump.ready() # No implicit credential repair/requeue. + for ident in ids:store.requeue_blocked(ident) + pump.tick();assert pump.ready() + assert (store.path.parent/'audit-reconciliation.json').stat().st_mode & 0o777 == 0o600 + pump.clock=lambda:time.time()+91;assert not pump.ready() diff --git a/workplans/INFD-WP-0001-founding-specs-and-approver-ui-ownership.md b/workplans/INFD-WP-0001-founding-specs-and-approver-ui-ownership.md index 785b3f6..c064217 100644 --- a/workplans/INFD-WP-0001-founding-specs-and-approver-ui-ownership.md +++ b/workplans/INFD-WP-0001-founding-specs-and-approver-ui-ownership.md @@ -8,7 +8,7 @@ status: active owner: claude topic_slug: netkingdom created: "2026-09-09" -updated: "2026-09-09" +updated: "2026-09-11" reviewed_at: "2026-09-09" reviewed_against_commit: "ee2cca5" reviewed_note: >- @@ -568,6 +568,50 @@ in reconciliation, supply native custody and registered human/deployed-engine proof. These remain live work in this task; `/readyz` stays 503 and browser bind routes remain absent. Details: `docs/durable-review-evidence.md`. +2026-09-11 — **protected review and actual browser exercise implemented.** +The configured `0.2.0` service now connects the named memo to fresh Flex Auth +checks before render, download, acknowledgment and each human response. The +separate workload caller, exact package/version/digest and submitted request +binding are validated; observations are immutable and retain +`decision_attributable=false`. No presentation claim becomes a policy input. +Actual native component checks cover caller enforcement, request digest wire +format and registry enrichment, with fixture-only assignments and credentials. + +The browser supports explicit highlights, accept/return/discuss/decline, current +actor/version/session/act checks, original confirmed correlation and visible +uncertain submissions without POST retry. An audit thread drains bounded batches, +emits declared heartbeats and saves a two-time-base reconciliation snapshot; +unhealthy delivery closes acceptance readiness. Owner configuration provisions +no identity, policy or custody. Existing v1 databases migrate atomically to v2; +old memo UI releases require a new version. The first browser profile is English +organizational approval; unsupported locale/step/level refuses before rendering. + +344 automated checks pass, including actual Flex Auth, Approval Engine and +Audit Core components. Twelve Chromium checks exercise local HTTPS, synthetic +PKCE login, cookies, entitlement, escaped packet content, acknowledgment bypass, +return, responsive layout, a single accepted entry/reload, audit delivery, +caller refusal and sign-out. The browser caught `no-referrer` suppressing the +form Origin; review pages now preserve same-origin headers while auth/downloads +remain no-referrer. Missing/null/foreign form origins and bad CSRF still refuse. +Plain-text native caller 401/403 responses also retain their refusal meaning. + +Evidence: `docs/evidence/2026-09-11-protected-browser-review.json` and the +accompanying browser receipt/screenshots. This is disposable component/browser +proof, **not native human login, admitted policy/custody, deployment or factory +execution**. Factory attempts and paid calls remain zero. + +**Next within T08:** obtain owner admission against +`docs/flex-auth-review-contract.md` for the exact production package/pins, +caller and assignment source. Admit native review-sender custody with +AUDIT-WP-0009-T11, registration rollout, service packaging/private state, +backup/restore and uncertain-entry operating procedure; then exercise the +deployed callback and actual human binding against the admitted Approval Engine. +German UI acceptance (PR-60), broader product steps/awareness controls and the +specified evidence export remain product work under this live task. They must +not be silently claimed by the bounded factory profile. The exact operational +setup and remaining limits are in `docs/protected-browser-review.md`. +T08 remains `progress`; no residual has been hidden by finishing the workplan. + ## Known risks - **T02 is a hard gate.** Writing the blueprint before the layer ruling risks