From f36710a3a77a663f5ba684cabebc07246e50b431 Mon Sep 17 00:00:00 2001 From: d3lerium Date: Sat, 24 Oct 2026 08:24:57 +1100 Subject: [PATCH 1/2] Independently validate joint-relation words and tightened conditional kappa --- .../CLAIMS.json | 58 + .../COMMANDS.json | 95 + .../PROOF.md | 217 + .../README.md | 99 + .../SOURCE-BINDINGS.json | 1292 ++ .../SOURCES.json | 20 + .../TASK.json | 73 + .../VERIFY.json | 142 + .../capsule/agents/algebra/check_joint.py | 310 + .../applicability/check_applicability.py | 157 + .../capsule/agents/falsifier/check_mutants.py | 73 + .../capsule/agents/outer/check_outer.py | 168 + .../capsule/agents/ownership/check.py | 281 + .../capsule/agents/prices/check_prices.py | 264 + .../CLAIM.json | 40 + .../FIRST-COLD-REPLAY.json | 11215 ++++++++++++++++ .../LOCAL-INPUTS.json | 12 + .../PAID-CATALOG.jsonl.gz | Bin 0 -> 125818 bytes .../final4610-independent-admission/PROOF.md | 73 + .../final4610-independent-admission/README.md | 61 + .../SOURCES.json | 324 + .../SPECIALIZATION.md | 130 + .../final4610-independent-admission/TASK.json | 94 + .../VALIDATION.json | 43 + .../VERIFY.json | 71 + .../checks/__init__.py | 3 + .../checks/all_helpers.py | 102 + .../checks/arithmetic.py | 46 + .../checks/census_controls.py | 21 + .../checks/claim.py | 50 + .../checks/compiler.py | 138 + .../checks/frame.py | 41 + .../checks/helpers.py | 189 + .../checks/independent_clifford.py | 117 + .../checks/invoice.py | 147 + .../checks/lift.py | 73 + .../checks/lineage.py | 62 + .../checks/moments.py | 138 + .../checks/native.py | 192 + .../checks/outer.py | 47 + .../checks/paid.py | 122 + .../checks/source.py | 75 + .../checks/specialization.py | 208 + .../regenerate_paid.py | 20 + .../final4610-independent-admission/verify.py | 47 + .../research/eight-owned-relations/README.md | 63 + .../eight-owned-relations/RESULT.json | 429 + .../eight-owned-relations/SOURCES.json | 90 + .../research/eight-owned-relations/TASK.json | 71 + .../eight-owned-relations/VERIFY.json | 38 + .../eight-owned-relations/WORD.json.gz | Bin 0 -> 207423 bytes .../certificates/selected-result.json | 92 + .../pr-intake-evidence/pr4610/PROOF-REVIEW.md | 137 + .../free-word-tensor-lift-audit/PROOF.md | 174 + .../joint-helper-lattice/CONTROLLER.json | 5224 +++++++ .../kappa-joint-relations-20261023/README.md | 280 + .../RESULT.json | 961 ++ .../SOURCES.json | 90 + .../kappa-joint-relations-20261023/TASK.json | 80 + .../VERIFY.json | 38 + .../WORD.json.gz | Bin 0 -> 207650 bytes .../ACTUAL-WORD.json.gz | Bin 0 -> 207673 bytes .../PHASE-VALIDATION.json.gz | Bin 0 -> 23356 bytes .../architecture/FINITE-PRECOMPILATION.md | 313 + .../transfer-audit/FINITE-TEMPLATE-CLOSURE.md | 339 + .../query-thinned-controllers/RESULT.json | 356 + .../custody/CANDIDATE-COMMIT.raw | 6 + .../custody/CANDIDATE-FILES.json | 62 + .../custody/CANONICAL-COMMIT.raw | 6 + .../custody/PR5241-INVENTORY.json | 191 + .../custody/PR5241-PHASE-REUSE.json | 154 + .../custody/PR5387-COMMIT.raw | 6 + .../custody/PR5387-INVENTORY.json | 78 + .../custody/SOURCE-HISTORY.json | 111 + ...dbbad293e674b3e2300ee89b37ed4dc623f6f.tree | Bin 0 -> 9907 bytes ...4002341ec20dbea467f4c19fb8d4300cb88cc.tree | Bin 0 -> 382 bytes ...1abce68e32239bd8ad6abf979584eb93ad269.tree | Bin 0 -> 575 bytes ...19972c9aefe42525172d07b332fcff81cb4.commit | 6 + ...aaa876ecb530c4c173c8e3ef93ccf87c81673.tree | Bin 0 -> 639 bytes ...243de4ff0d29f087894edbf247327c5bae8e9.tree | Bin 0 -> 181 bytes ...81f177482200db6432209f21d8e7d662fbba3.tree | Bin 0 -> 707 bytes ...866b397e4296d95f7a55ad38313ec11c69f3b.tree | Bin 0 -> 196 bytes ...780035287bad0b8e9cd1a9f7da73223dfa456.tree | Bin 0 -> 445 bytes ...8974508669b0b52f53c56371b5f9c253ece4b.tree | Bin 0 -> 797 bytes ...ca2d79105e0d899594be581275b404bc812cd.tree | Bin 0 -> 219666 bytes ...fa51a495a7c7b7754915cf0244e7e60969e.commit | 6 + ...b3a87d39cf33569d1b1f8a7d6177af59bd524.tree | Bin 0 -> 969 bytes ...7c585a7f3c853a2927a5028db379ac86b4a34.tree | Bin 0 -> 35 bytes ...818178b05733b5d09a6decc34d53b84fdc213.tree | Bin 0 -> 969 bytes ...bbbc8ccf824c7a3ceadac4f7ca3b041fb8ab6.tree | Bin 0 -> 477 bytes ...d1ecc75af648c4b5fbf888b902e89ea94de00.tree | Bin 0 -> 663 bytes ...d281a274191242f183544f5ebab24b7f61127.tree | Bin 0 -> 6799 bytes ...3da5da0a527baf42dbbe76e7af010384def87.tree | Bin 0 -> 599 bytes ...50d36f59e5be682a813145b7c67e219e341.commit | 6 + ...be1a63f80b453a11823d70c836b9199e7c556.tree | Bin 0 -> 219675 bytes ...420045d2bc04dd026b5020aea84d547873ef4.tree | Bin 0 -> 969 bytes ...1d4eb07730865bffd69a35a85a0642acc333d.tree | Bin 0 -> 219618 bytes ...f51bb3b6474cfa4111ebafa02b1913a807446.tree | Bin 0 -> 526 bytes ...0959c0a8af33980dff881ed2cf6c4703bb338.tree | Bin 0 -> 208 bytes ...6c76a46083783b675e5a5ce418c52a400d350.tree | Bin 0 -> 1307 bytes ...da6ab4433542c03f089e50eeaabacb89fa6a4.tree | Bin 0 -> 93 bytes ...70b9927d6e9233633e4e88108f831e7c5c5d9.tree | Bin 0 -> 14144 bytes .../receipt_guard.py | 54 + .../reports/algebra/REPORT.md | 61 + .../reports/algebra/RUN-REQUEST.json | 18 + .../applicability/FOUNDATION-SOURCES.json | 14 + .../reports/applicability/REPORT.md | 132 + .../reports/falsifier/CODE-AUDIT.md | 38 + .../reports/falsifier/EARLY-FINDINGS.md | 13 + .../reports/falsifier/RUN-REQUEST.json | 12 + .../reports/falsifier/SAME-FRAME-CONTROL.json | 1 + .../reports/outer/REPORT.md | 103 + .../reports/outer/SOURCES.json | 87 + .../reports/ownership/REPORT.md | 244 + .../reports/ownership/RUN-REQUEST.json | 45 + .../reports/prices/REPORT.md | 58 + .../source_guard.py | 107 + .../verify.py | 87 + 118 files changed, 27631 insertions(+) create mode 100644 research/joint-relations-independent-validation/CLAIMS.json create mode 100644 research/joint-relations-independent-validation/COMMANDS.json create mode 100644 research/joint-relations-independent-validation/PROOF.md create mode 100644 research/joint-relations-independent-validation/README.md create mode 100644 research/joint-relations-independent-validation/SOURCE-BINDINGS.json create mode 100644 research/joint-relations-independent-validation/SOURCES.json create mode 100644 research/joint-relations-independent-validation/TASK.json create mode 100644 research/joint-relations-independent-validation/VERIFY.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/algebra/check_joint.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/applicability/check_applicability.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/falsifier/check_mutants.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/outer/check_outer.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/ownership/check.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/prices/check_prices.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/CLAIM.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/FIRST-COLD-REPLAY.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/LOCAL-INPUTS.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/PAID-CATALOG.jsonl.gz create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/PROOF.md create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/README.md create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/SOURCES.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/SPECIALIZATION.md create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/TASK.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/VALIDATION.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/VERIFY.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/__init__.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/all_helpers.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/arithmetic.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/census_controls.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/claim.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/compiler.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/frame.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/helpers.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/independent_clifford.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/invoice.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/lift.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/lineage.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/moments.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/native.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/outer.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/paid.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/source.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/specialization.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/regenerate_paid.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/verify.py create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/README.md create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/RESULT.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/SOURCES.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/TASK.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/VERIFY.json create mode 100644 research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/WORD.json.gz create mode 100644 research/joint-relations-independent-validation/capsule/repository/certificates/selected-result.json create mode 100644 research/joint-relations-independent-validation/capsule/repository/docs/research/pr-intake-evidence/pr4610/PROOF-REVIEW.md create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/free-word-tensor-lift-audit/PROOF.md create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/joint-helper-lattice/CONTROLLER.json create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/README.md create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/RESULT.json create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/SOURCES.json create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/TASK.json create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/VERIFY.json create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/WORD.json.gz create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/kappa-round3-warp-20261022/PHASE-VALIDATION.json.gz create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/pr4359-p7-padding/source/research/kappa-rebuild/architecture/FINITE-PRECOMPILATION.md create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/pr4359-p7-padding/source/research/kappa-rebuild/transfer-audit/FINITE-TEMPLATE-CLOSURE.md create mode 100644 research/joint-relations-independent-validation/capsule/repository/research/query-thinned-controllers/RESULT.json create mode 100644 research/joint-relations-independent-validation/custody/CANDIDATE-COMMIT.raw create mode 100644 research/joint-relations-independent-validation/custody/CANDIDATE-FILES.json create mode 100644 research/joint-relations-independent-validation/custody/CANONICAL-COMMIT.raw create mode 100644 research/joint-relations-independent-validation/custody/PR5241-INVENTORY.json create mode 100644 research/joint-relations-independent-validation/custody/PR5241-PHASE-REUSE.json create mode 100644 research/joint-relations-independent-validation/custody/PR5387-COMMIT.raw create mode 100644 research/joint-relations-independent-validation/custody/PR5387-INVENTORY.json create mode 100644 research/joint-relations-independent-validation/custody/SOURCE-HISTORY.json create mode 100644 research/joint-relations-independent-validation/custody/git-objects/02fdbbad293e674b3e2300ee89b37ed4dc623f6f.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/0994002341ec20dbea467f4c19fb8d4300cb88cc.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit create mode 100644 research/joint-relations-independent-validation/custody/git-objects/258aaa876ecb530c4c173c8e3ef93ccf87c81673.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/2f0243de4ff0d29f087894edbf247327c5bae8e9.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/308866b397e4296d95f7a55ad38313ec11c69f3b.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/368780035287bad0b8e9cd1a9f7da73223dfa456.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/3e58974508669b0b52f53c56371b5f9c253ece4b.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/46dca2d79105e0d899594be581275b404bc812cd.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/4bd6efa51a495a7c7b7754915cf0244e7e60969e.commit create mode 100644 research/joint-relations-independent-validation/custody/git-objects/6d2b3a87d39cf33569d1b1f8a7d6177af59bd524.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/74e7c585a7f3c853a2927a5028db379ac86b4a34.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/7c8818178b05733b5d09a6decc34d53b84fdc213.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/87cbbbc8ccf824c7a3ceadac4f7ca3b041fb8ab6.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/8bed1ecc75af648c4b5fbf888b902e89ea94de00.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/92bd281a274191242f183544f5ebab24b7f61127.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/93c3da5da0a527baf42dbbe76e7af010384def87.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/b1ab650d36f59e5be682a813145b7c67e219e341.commit create mode 100644 research/joint-relations-independent-validation/custody/git-objects/b3abe1a63f80b453a11823d70c836b9199e7c556.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/ca6f51bb3b6474cfa4111ebafa02b1913a807446.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/d520959c0a8af33980dff881ed2cf6c4703bb338.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/db06c76a46083783b675e5a5ce418c52a400d350.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/df0da6ab4433542c03f089e50eeaabacb89fa6a4.tree create mode 100644 research/joint-relations-independent-validation/custody/git-objects/e9c70b9927d6e9233633e4e88108f831e7c5c5d9.tree create mode 100644 research/joint-relations-independent-validation/receipt_guard.py create mode 100644 research/joint-relations-independent-validation/reports/algebra/REPORT.md create mode 100644 research/joint-relations-independent-validation/reports/algebra/RUN-REQUEST.json create mode 100644 research/joint-relations-independent-validation/reports/applicability/FOUNDATION-SOURCES.json create mode 100644 research/joint-relations-independent-validation/reports/applicability/REPORT.md create mode 100644 research/joint-relations-independent-validation/reports/falsifier/CODE-AUDIT.md create mode 100644 research/joint-relations-independent-validation/reports/falsifier/EARLY-FINDINGS.md create mode 100644 research/joint-relations-independent-validation/reports/falsifier/RUN-REQUEST.json create mode 100644 research/joint-relations-independent-validation/reports/falsifier/SAME-FRAME-CONTROL.json create mode 100644 research/joint-relations-independent-validation/reports/outer/REPORT.md create mode 100644 research/joint-relations-independent-validation/reports/outer/SOURCES.json create mode 100644 research/joint-relations-independent-validation/reports/ownership/REPORT.md create mode 100644 research/joint-relations-independent-validation/reports/ownership/RUN-REQUEST.json create mode 100644 research/joint-relations-independent-validation/reports/prices/REPORT.md create mode 100644 research/joint-relations-independent-validation/source_guard.py create mode 100644 research/joint-relations-independent-validation/verify.py diff --git a/research/joint-relations-independent-validation/CLAIMS.json b/research/joint-relations-independent-validation/CLAIMS.json new file mode 100644 index 0000000000..daa01b7985 --- /dev/null +++ b/research/joint-relations-independent-validation/CLAIMS.json @@ -0,0 +1,58 @@ +{ + "schema_version": 1, + "review_status": "READY_FOR_COLD_REPLAY", + "canonical_main": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "selected_baseline": ".0030217758", + "selected_metadata_role": "Frozen historical provenance; future selected-result updates do not invalidate this review.", + "candidates": [ + { + "pr": 5383, + "head": "4bd6efa51a495a7c7b7754915cf0244e7e60969e", + "author": "Ali Romman", + "kappa": "151333/50000000", + "decimal": ".00302666", + "package": "research/kappa-joint-relations-20261023", + "word_payload_sha256": "2aee5e997df99726fc763e510d9cb69fbe4f86114dc8d2cd33ad26c6c462a21d", + "last_pivot": 288 + }, + { + "pr": 5387, + "head": "b1ab650d36f59e5be682a813145b7c67e219e341", + "author": "Dugongue", + "kappa": "605334953/200000000000", + "decimal": ".003026674765", + "package": "research/eight-owned-relations", + "word_payload_sha256": "9aa0d7112b4e13f1aa13a93dab0af6f4435ffe99b842aad841685becdafee492", + "last_pivot": 261 + } + ], + "assumptions": [ + { + "id": "native_all_columns", + "statement": "Retained native operators, phase conventions, spectators and whole-job adapters work at every positive column multiplicity." + }, + { + "id": "owned_erasure", + "statement": "Owned streams and suspended centers obey the retained allocation, erasure and ownership contracts." + }, + { + "id": "compiler", + "statement": "The finite mixed-target compiler and chronological product, completion and splitting satisfy the retained uniform closure contract." + }, + { + "id": "precision_tape", + "statement": "Retained fixed-tape movement and precision/storage prescriptions apply to the new fixed finite template." + }, + { + "id": "analytic_recovery", + "statement": "Analytic decomposition, fine-prime avoidance and exact integer recovery follow the retained upstream/outer framework." + } + ], + "selection_authorized": false, + "construction_claim": "No new native construction is claimed by this independent review.", + "selected_kappa": "15108879/5000000000", + "same_selected_assumptions_required": true, + "new_unconditional_or_Lean_theorem": false, + "uniform_word_materialized": false, + "selected_record_changed": false +} diff --git a/research/joint-relations-independent-validation/COMMANDS.json b/research/joint-relations-independent-validation/COMMANDS.json new file mode 100644 index 0000000000..ddd38138d6 --- /dev/null +++ b/research/joint-relations-independent-validation/COMMANDS.json @@ -0,0 +1,95 @@ +{ + "schema_version": 1, + "commands": [ + { + "name": "algebra-5383", + "argv": [ + "agents/algebra/check_joint.py" + ], + "timeout_seconds": 120 + }, + { + "name": "algebra-5387", + "argv": [ + "agents/algebra/check_joint.py", + "--candidate", + "agents/sources/pr5387/research/eight-owned-relations/WORD.json.gz", + "--candidate-pr", + "5387", + "--candidate-head", + "b1ab650d36f59e5be682a813145b7c67e219e341", + "--out", + "agents/algebra/RESULT-5387.json" + ], + "timeout_seconds": 120 + }, + { + "name": "ownership-5383", + "argv": [ + "agents/ownership/check.py", + "--exact", + "--controls", + "--output", + "agents/ownership/RESULT.json" + ], + "timeout_seconds": 120 + }, + { + "name": "ownership-5387", + "argv": [ + "agents/ownership/check.py", + "--exact", + "--controls", + "--candidate", + "agents/sources/pr5387/research/eight-owned-relations/WORD.json.gz", + "--candidate-head", + "b1ab650d36f59e5be682a813145b7c67e219e341", + "--output", + "agents/ownership/RESULT-5387.json" + ], + "timeout_seconds": 120 + }, + { + "name": "event-invoice-and-prices-both", + "argv": [ + "agents/prices/check_prices.py" + ], + "timeout_seconds": 120 + }, + { + "name": "outer-BIT-compiler-both", + "argv": [ + "agents/outer/check_outer.py", + "--candidate", + "PR5383", + "repository/research/kappa-joint-relations-20261023/RESULT.json", + "--candidate", + "PR5387", + "agents/sources/pr5387/research/eight-owned-relations/RESULT.json", + "--bit-source", + "repository/research/query-thinned-controllers/RESULT.json", + "--out", + "agents/outer/RESULT.json" + ], + "timeout_seconds": 120 + }, + { + "name": "applicability-both", + "argv": [ + "agents/applicability/check_applicability.py" + ], + "timeout_seconds": 120 + }, + { + "name": "actual-word-semantic-mutants-5383", + "argv": [ + "agents/falsifier/check_mutants.py", + "--mode", + "full", + "--out", + "agents/falsifier/CONTROLS-FULL.json" + ], + "timeout_seconds": 300 + } + ] +} diff --git a/research/joint-relations-independent-validation/PROOF.md b/research/joint-relations-independent-validation/PROOF.md new file mode 100644 index 0000000000..96c22c58d4 --- /dev/null +++ b/research/joint-relations-independent-validation/PROOF.md @@ -0,0 +1,217 @@ +# Joint validation and exact dependency argument + +## Claim and five retained premises + +For each of the two exact literal words in CLAIMS.json, the new independent +engines establish the algebra, ownership, complete invoice and numerical +compiler/outer specialization described below. The implication remains +conditional on the **same five literal premises** in CLAIMS.json, which the +source guard compares with the authenticated selected PR5241 claim: + +1. Native operators, phase conventions, spectators and whole-job adapters work + at every positive column multiplicity. +2. Owned streams and suspended centers obey the retained allocation, erasure + and ownership contracts. +3. The finite mixed-target compiler and chronological product, completion and + splitting satisfy the retained uniform closure contract. +4. The retained fixed-tape movement and precision/storage prescriptions apply + to the new fixed finite template. +5. Analytic decomposition, fine-prime avoidance and exact integer recovery + follow the retained upstream/outer framework. + +The frozen selected record is 15108879/5000000000 = .0030217758 at canonical main +1ec1119972c9aefe42525172d07b332fcff81cb4. It is historical provenance, with an exact +vendored copy; no future live selected-file equality is a premise. No source +object is fetched or substituted for missing working input during replay. + +## Distinct literal words and algebraic domains + +| Item | Ali Romman PR5383 | Dugongue PR5387 | +| --- | --- | --- | +| Source head | 4bd6efa51a495a7c7b7754915cf0244e7e60969e | b1ab650d36f59e5be682a813145b7c67e219e341 | +| Conditional κ | 151333/50000000 = .00302666 | 605334953/200000000000 = .003026674765 | +| Last pivot | L288 | L261 | +| Eighth snapshot source event/role | 11306 / L288 | 11296 / L256 | +| Eighth zero source event/role | 17580 / L288 | 17233 / L256 | +| Backward scalar allowance | 158744 | 158776 | + +Both eighth substitutions use frame 281, but the unrestricted source relation +and the retained arbitrary input domain differ. Equal invoices cannot establish +their semantic equivalence. Each algebra invocation independently replays all +21,449 original backward events, derives eight source-center-minus-snapshot rows +and their eight matching later zero rows, reduces the simultaneous rank-eight +system, and checks the actual preparation. It then replays the entire respective +candidate on 624 independent retained inputs plus 17 arbitrary owned entry +inputs. The pivots are 225,227,229,230,241,245,257 and the candidate-specific last +pivot above. No relation basis, WITNESS, author evaluator or PASS receipt is the +source of those identities. See reports/algebra/REPORT.md. + +The independent dyadic row engine keeps integer numerators and a common power +of two denominator. Terms are independent inputs acted on by reduced free words. +Only adjacent generator/inverse pairs cancel; different generators do not +commute. For every positive width f, substitute the inherited actual f-column +operator for each generator and its inverse for the inverse symbol. Evaluation +is an algebra homomorphism, so the unrestricted formal identities hold on all +payload vectors, including nonseparable inputs. Rational coefficients stay +outside evaluation. No tensor power is distributed over a sum. + +All new preparation coefficients use the checked same-frame ADD/CLEAR grammar. +The emitted preparation equals the independent joint RREF assignments and has +no pivot on any pivot right-hand side. All eight snapshots coexist before the +first center substitution, each in a distinct cleared owned bank. Same-frame +COPY substitutes the exact source output with its physical gauge; identity at +a proved complete zero vector removes the later job. Identity does not transport +an arbitrary nonzero value between frames or erase approximate error. + +## Chronology, physical factors and owners + +The independent owner parser separately checks both whole backward words and +both unchanged forward words, all frame transitions, exact retained endpoints, +zero retags and owned returns. Each backward has 17 distinct complete owners +(eight pivots and C0..C8); each forward has one C0 owner. Arbitrary dirt is cleared +only in owned fields. Every removed pivot loses its productive target. No +snapshot, suspended center, query scratch or parked bank receives productive +credit. The raw p16 controller needs at least 16*17+2=274 separately tagged LOCAL +banks before its other controller/compiler storage. + +Every retained warp, phase marker and adapter has exact original chronology; +canonical operators and frames are unchanged. Source signed native and paid +phase facts are **authenticated historical reuse** from the selected PR5241 +foundation, whose full 31-file proof/checker/receipt closure is retained under +capsule/agents/sources/pr5241. The receipt binds the original source payload +cfcd36b40326d7a5815e1db5313444379b3fb756b27d5201c561574c085cc0dd, +180 native classes, all 408 helpers in both orientations, and 5710 oriented paid +classes/6596 paid event instances. The historical first-cold wrapper differs +from canonical verify.py; its mathematical phase/native/helper checkers and +regeneration code retain the recorded hashes. No new phase lowering is claimed. +The canonical maintainer PROOF-REVIEW authorizes this unchanged foundation reuse. +New scalar chronology, joint identities and owner domains are checked afresh. +PR5384's single-relation review supplies generic COPY/zero/all-f interpretation, +not the simultaneous joint proof or new inventory. + +## Whole-controller invoice, directed prices and outer point + +The event census computes paid ranks from actual endpoint frame dimensions, +checks physical scalar tariffs and reads the literal p16 controller. It obtains +64,148 paid jobs and 10,800 productive fields for each word. Relative to the +source controller it removes 128 H1 and 128 H8 paid calls and surrenders all +128 H9 productive targets; the rank surplus remains 752. This is a complete +controller invoice, not eight added local savings. It includes main, idle, +query and completion terms. See reports/prices/REPORT.md. + +A fresh independent fixed-point rational interval engine uses directed rounding +at 10^-65, an atanh logarithm series and exponential Taylor remainder. It checks +the actual signed moments, unique fixed-profile crossing, both completion tails, +strict alpha reserve, eta/complement capacity and splitting. It independently +recomputes both candidate parameter choices; source-identical profile reuse is +justified by the separate literal event censuses. The raw crossing is strictly +between .00302667476807 and .00302667476808. This is a ceiling for this exact +invoice, not an optimum over native constructions or relation systems. + +| Quantity | PR5383 | PR5387 | +| --- | --- | --- | +| Tested complex saving | .00302667 | .003026674766 | +| Reserved alpha slack | 1e-9 | 1e-12 | +| Tensor exponent / cutoff / floor | 1024 / 20 / 21 | 1024 / 20 / 21 | +| Outer gap | 1/700000000 | 1/7000000000000 | +| Least winning j on stated sufficient grid | 44836 | 58507 | +| Compiler H, N=2^H | 31385200000000 | 409549000000000000 | + +The new rational outer engine derives all 54 strict and four functional rows +from its own exact parameter family, checks all positive, and independently +finds the winning compiler integer and failure at the preceding sufficient-grid +index. It compares author parameter records only after fresh computation. +Ordinary BIT is source-bound to 17/5000=.0034 with the exact unchanged ABI; +its native/interface admission is retained, not replayed. The compiler threshold +is an algorithmic finite specification. The enormous expanded word is not +materialized. See reports/outer/REPORT.md and reports/applicability/REPORT.md. + +The author engines' separate normal/optimized cold replay evidence is an +external execution gate. This review's own replay independently recomputes the +invoice, directed moments and outer predicates; it does not promote author +RESULT status labels into a premise. + +## Effective expanded bounds and exact physical domain + +The detailed construction and strong-induction proof are retained in +reports/applicability/REPORT.md, with exact canonical FINITE-PRECOMPILATION and +FINITE-TEMPLATE-CLOSURE notes under capsule/repository. For the explicitly chosen +integer batch clearing, sequential base kernels, full routes and separately +tagged owned banks, define + +``` +D = 2^262144 +F(0) = D +X_n = (n+1)*(D+1)*(F(n-1)+1) (n>=1) +F(n) = X_n^(16*(n+1)^2) (n>=1) +N = 2^H, M = F(N) +Wbar = Pbar = Obar = Rbar = Gbar = M +Zbar = 2*M +Ebar = 64*(Zbar+N+Pbar+Gbar+1)^3 +Bbar = Pbar+Ebar +C0bar = 32*N*Bbar^2 +``` + +These are terminating integer recursions and fixed finite constants, with +candidate-specific H. D pays the squared complete role inventory and rank-router +factors of the strictified 1024-fold unit. For top rank n, there are at most +(D+1)^(2n+2) mixed-unit instances; product clearing over distinct smaller widths +is at most F(n-1)^(n-1). Expanded incidence fits X_n^(3n+5); routing and coefficient +height fit X_n^(9n+20). For every n>=1, +16(n+1)^2-(9n+20)=16n^2+23n-4>=35, proving the strong induction. The finite probe +of this inequality corroborates the algebraic proof; it does not replace it. +The raw 181098496 bound is never reused as the expanded cap. + +The actual W/P still determines efficiency; enlarged envelopes create no +productive outputs. The fresh semantic recurrence is +A(e)<=A(floor(e/N))+Pbar*floor(e/N)+Ebar, with elementary leaves <=8e. +It gives A(e)<=2*Bbar*e and complete-layer height below C0bar*d. The actual +identity at zero retags propagates residual error through this changed program; +there is no artificial numerical reset at a symbolic zero. + +For d<=c*p^(a/b), choose +Lprec=bit_length(4*C0bar*ceil(c)), +tprec=max(4,ceil(b*Lprec/(b-a))) and p_prec=2^tprec. +For p>=p_prec the retained fine-grid prescription uses at most 2p bits per signed +component. Fixed-tape class restrictions remain f<=p, A=O(p), +K/log(p)->infinity, complete compact/control fields, restored dirty temporaries +and the source superpolynomial record fiber. Their asymptotic domain-entry +threshold remains the retained premise where no numerical growth rate is given. + +With Dord(e)=0 below N and 1+Dord(floor(e/N)) otherwise, reserve complex stock +[Wbar*(Obar+1)]^Dord(d), **multiply** it by simultaneous BIT stock, and pad once +to the full product. For retained BIT coefficient L_BIT, define +Lstock=ceil(log2 Wbar)+ceil(log2(Obar+1))+L_BIT+2. +Above d>=2^(2*(Lstock+2)), the combined reserve uses fewer than d/4 complete +chunks; padding costs a factor below 2. Include stopping, precision, movement +and descriptor cutoffs in the final maximum. This pays all suspended banks and +preserves the retained movement exponent and spectator restoration. + +## Independence, controls and invalidation + +No new engine imports an author native, price, interval or endpoint evaluator. +The only cross-engine import is the independent algebra implementation used by +the actual-word semantic falsifier. The wrapper runs both exact words separately, +then checks fresh coverage fields and source/K/payload identities. Fresh result +files do not enter the frozen input inventory and cannot form a hash cycle. +The normal/-O schedule is identical, with explicit optimization propagated to +every scientific subprocess and fresh bytecode caches before scientific imports. + +Independent controls cover preparation sign/coefficient/pivot, wrong saved row, +wrong COPY gauge, omitted relation, arbitrary owned dirt, missing owner returns, +source chronology, borrowed erasure, storage alias, productive credit, extra H1, +reserve, compiler grid and outer boundary failures. Six actual-word mutants +recompute their payload digests and reach the mathematical parser directly; +rejection is not an old-digest comparison. Source and headline mutation controls +separately exercise the working-input guard and offline Git membership binding. + +An early algebra parser rejected legal signed-denominator SCALE [2,-1]; sign +normalization corrected that checker defect before the frozen successful runs. +Early applicability/falsifier resource failures and the wrong-marker parser +attempt remain reported as implementation failures, never candidate evidence. +Source phase, ordinary BIT native construction, physical precision/tape execution, +analytic decomposition, prime avoidance and integer recovery are reused in +explicit quantified domains. This is not an unconditional theorem, Lean/kernel +verification, independent human acceptance, selected promotion or practical +speedup. Any relevant word, native factor, ownership, invoice, parameter, +scientific engine, source pin or premise edit invalidates its dependent replay. diff --git a/research/joint-relations-independent-validation/README.md b/research/joint-relations-independent-validation/README.md new file mode 100644 index 0000000000..efc64ba6c0 --- /dev/null +++ b/research/joint-relations-independent-validation/README.md @@ -0,0 +1,99 @@ +# Independent validation of the joint eight-relation words + +This package is being assembled for the exact Ali Romman PR5383 head +`4bd6efa51a495a7c7b7754915cf0244e7e60969e` at conditional κ `.00302666` +and Dugongue PR5387 head `b1ab650d36f59e5be682a813145b7c67e219e341` +at conditional κ `.003026674765`. The separate independent algebra, exact owner, invoice, directed-price, +applicability and outer checks passed for both words. The first full package +cold replay passed all eight fresh commands; final committed-byte/export +transport and acceptance remain separate root gates. + +The contribution is an independent validation, with newly implemented algebra, +owner/frame parsing, event invoice, rational prices and outer predicates. Ali +Romman retains the public eight-relation construction credit. Dugongue retains +the separately ordered literal word and tighter completion/compiler reserve +application. Equal 64,148-paid / 10,800-productive histograms do not establish +equal word semantics: the eighth pivot is 288 in PR5383 and 261 in PR5387. +Both exact words require separate source identities and ownership specialization. + +The selected baseline is the frozen canonical-main `.0030217758` record at +`1ec1119972c9aefe42525172d07b332fcff81cb4`. This package changes no selected +record. It claims no unconditional multiplication theorem, new native mechanism, +human acceptance or practical speedup. + +## Reproduction + +Run from the repository root with standard-library Python 3.12: + +```sh +python3 -B scripts/research_package.py --package research/joint-relations-independent-validation +``` + +The registered manifest runs normal and optimized replays. Direct commands for +explicit receipt destinations are: + +```sh +python3 -B research/joint-relations-independent-validation/verify.py --output /tmp/joint-normal.json +python3 -O -B research/joint-relations-independent-validation/verify.py --output /tmp/joint-optimized.json +``` + +The standalone verifier authenticates both helper modules before import, rejects +missing/symlinked/mutated working inputs and wrong claim/head/payload/premises, +then copies the minimal capsule into a private scratch tree. It creates fresh +bytecode caches, propagates explicit optimization to every child and runs the +eight scientific commands serially. Fresh outputs are parsed for exact source +bindings and complete scientific coverage; a child exit code alone is +insufficient. It uses no runtime Git reader or Git-blob fallback. Normal and +optimized executions remain separate recorded runs. Receipt destinations must +be outside the package and free of symlink/hardlink aliases. Cold receipts stay +outside frozen inputs, avoiding a source-hash cycle. + +`SOURCE-BINDINGS.json` declares every package-local input with raw digest, +compressed-payload digest where applicable, original head/path/blob and offline +commit/tree membership proofs. `VERIFY.json.inputs` is empty because no runtime +input lies outside this package; its package-local inventory is explicit and +all package changes already trigger registered replay. The full capsule is +about 2.3 MB and retains the selected 31-file phase proof/reuse closure rather +than the historical research archive. + +The first normal package replay completed all eight fresh commands in 23.47 s +under the root 1 GiB serial guard. That receipt predates the final bootstrap +helper hash check and is evidence for its exact pre-bootstrap wrapper only. +Final registered normal/optimized and committed/exported-byte receipts are +external publication gates. Engine bytes and mathematical input payloads are +unchanged. See the source/verification limits in `PROOF.md`. + +## Same premises and proof scope + +The five literal retained premises are in `CLAIMS.json`: native all-column +operators and phase conventions; owned allocation/erasure; uniform finite +mixed-target compiler closure; precision and fixed-tape storage/movement; +analytic, prime and exact-recovery transfer. `PROOF.md` maps their exact +applicability to the new fixed templates and include computable expanded +majorants. The enormous compiled word is specified algorithmically and is not +materialized. + +Source-identical phase factors and previously admitted framework propositions +are reused with exact hashes and domains. This does not rerun absolute-phase +lowering, ordinary BIT construction or analytic integer recovery. PR5384's +single-relation proof cannot establish this package's joint rank, simultaneous +preparation, 17-bank local ownership, endpoint or complete invoice. + +## Open next questions + +Structured questions, relevance, first steps and blockers are in `TASK.json`. +The principal open task is independent closure of the five retained premises. +Any further relation search must supply a changed complete bill and its full +physical/compiler applicability rather than add local savings. + +## Credit and license + +Prepared for Chris R / Clear1nsight with substantial OpenAI Codex assistance. +Ali Romman supplied PR5377/PR5383's public helper-relation mechanism; Dugongue +supplied PR5387's separately priced compiler-margin refinement. Retained credit: +Cao Yifan (PR4610); Chris R (PR5241/PR5384 independent review); Cinna Davis +(PR4470 p16 controller); zxv (completion/compiler); Jacob Alan Sussman +(mixed-target recursion); Dugongue (transported frames); ToikY and the retained +native, Clifford, BIT, precision and analytic contributors. Source-specific +credits and notices remain in the exact vendored files. Apache-2.0 under the +repository LICENSE. diff --git a/research/joint-relations-independent-validation/SOURCE-BINDINGS.json b/research/joint-relations-independent-validation/SOURCE-BINDINGS.json new file mode 100644 index 0000000000..e590a363e9 --- /dev/null +++ b/research/joint-relations-independent-validation/SOURCE-BINDINGS.json @@ -0,0 +1,1292 @@ +{ + "candidate_claim_records": { + "5383": "capsule/repository/research/kappa-joint-relations-20261023/RESULT.json", + "5387": "capsule/agents/sources/pr5387/research/eight-owned-relations/RESULT.json" + }, + "candidate_words": { + "5383": "capsule/repository/research/kappa-joint-relations-20261023/WORD.json.gz", + "5387": "capsule/agents/sources/pr5387/research/eight-owned-relations/WORD.json.gz" + }, + "canonical_main": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "files": [ + { + "bytes": 2301, + "path": "CLAIMS.json", + "role": "bootstrap_helper_or_claim_and_command_contract", + "sha256": "def444a7c84d8d3da1d43117a351eba4ebcffcbf9be01f804a089c16d6b90fea" + }, + { + "bytes": 2354, + "path": "COMMANDS.json", + "role": "bootstrap_helper_or_claim_and_command_contract", + "sha256": "a1137cf53296d6b56db2a785a1e923e4b807e799e1de41a911353ed5e7aa0433" + }, + { + "bytes": 17804, + "path": "capsule/agents/algebra/check_joint.py", + "role": "new_independent_scientific_engine", + "sha256": "3ee4ae79a55188d5abf2306f678179f4aafb799602ffb970fc1bc8f76cb061d9" + }, + { + "bytes": 9747, + "path": "capsule/agents/applicability/check_applicability.py", + "role": "new_independent_scientific_engine", + "sha256": "07d09997ad1e0cf3b16a7a0dc152dcd4305c91b6c5fa8e9a5985f69f44277873" + }, + { + "bytes": 4781, + "path": "capsule/agents/falsifier/check_mutants.py", + "role": "new_independent_scientific_engine", + "sha256": "326a813b2373502cfaf179de89a9a2736a82413e40b26b52f8681495e5fd4359" + }, + { + "bytes": 9832, + "path": "capsule/agents/outer/check_outer.py", + "role": "new_independent_scientific_engine", + "sha256": "6338e7c30403f2077ec1c3397db05707c26fa0dd811c7863b6d84b288fb484ac" + }, + { + "bytes": 16997, + "path": "capsule/agents/ownership/check.py", + "role": "new_independent_scientific_engine", + "sha256": "69ab58e41ccf548d68d24c45b673ed9918e22845d5d819588d431eb7807eff24" + }, + { + "bytes": 16122, + "path": "capsule/agents/prices/check_prices.py", + "role": "new_independent_scientific_engine", + "sha256": "e5f828e06b896723da4b58ca8c780609b8b94bde374a2ffeda1cab143323a335" + }, + { + "bytes": 1894, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "49b35d3fec3960c29b88f974b19e29b2bf487355", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/CLAIM.json", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/CLAIM.json", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "4f0f13fb4cd2b30fb52716df3e7299846dc6d11bbd207f2107bc6b06a9b18b61", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 282091, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "7b46f38ceee3152f753a13157852fdaaf60c31aa", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/FIRST-COLD-REPLAY.json", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/FIRST-COLD-REPLAY.json", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "0b37e1741af786144e1eb78a752bee65424437107c5065181d8a28e05ec30122", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 488, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "ab99b0d3c93b512ca5add19712d2c541e1abf90c", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/LOCAL-INPUTS.json", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/LOCAL-INPUTS.json", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "d3d5d8dd4037112c5952dc91e5d1287a13cf7c26927cd37fd446785e3a07a749", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 125818, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "73fa3ced93981949ad8f2432af840b787d9182c0", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/PAID-CATALOG.jsonl.gz", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/PAID-CATALOG.jsonl.gz", + "payload_sha256": "dc47d96b5b651ba3446d73ac0710152f7de88547a0cb2bbd75706e691b6f0bd6", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "964aa2e28057936825a67872ebe5c6b0abc3228e71a545dda6c1fc11adb983d5", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 14291, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "cc71e69b34835eff261b6073606dd585355e442c", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/PROOF.md", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/PROOF.md", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "e573cbbe6fa5481c0533e773de404e10f4dc7907b5ebfe404bdcd02dcf9844d8", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 8212, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "c70c1b436bbd1130332f737c2efab193674e8672", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/README.md", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/README.md", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "df5a03f28c64e2de5d0b0000d1fe93ced20d99b9e99bbc1fa97432f783848f13", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 13513, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "cf40c4d94f11f1058cfd2d04388dbba72051c1fe", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/SOURCES.json", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/SOURCES.json", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "25fed1fae88cffefc64cdecf8114718f4f4bcff1ef11e69e7556b8f40110e9a6", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 19802, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "7ee84b30892f7354e1c36611f1a5e9b082dc6147", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/SPECIALIZATION.md", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/SPECIALIZATION.md", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "70430114f744108223bc1d44b98bc25b696c4b408b7b044c2a8bbdfdb434ac5c", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 6649, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "761b7c6ba0684f62bc92a2106515ac24ac61fea9", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/TASK.json", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/TASK.json", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "0697507662d6f33633bff5a509122b2c977a82644d758f8282f139e3e24bc8d2", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 1633, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "dfb812803040ae38aafb0c32a522161b6e1414e2", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/VALIDATION.json", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/VALIDATION.json", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "e596d5cbe89e5688b16e0a3dd3b9f2dbe867d5e1be67f0186b2afb6a9d0b234e", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 3583, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "8f4e95ea81bfd210d79ef2312247e92d0ecc7837", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/VERIFY.json", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/VERIFY.json", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "3beda8479a0db2a01732a860b7299e05aecc35235943eacd494f179270f3cfc0", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 142, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "b8e75050ef87853ca5950ff8a9ff9b6b36d4cc3c", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/__init__.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/__init__.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "0af9ca16983533aa5fcb9dbcfbbd6f91c6200c93f69515703c9d340f24fed748", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 9219, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "04d5a7427a55761a25a915d38b3e92e6ba9a14cc", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/all_helpers.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/all_helpers.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "7bc813bbd400f851dcb0137ad31d53e7044f33d3a6cb729c60b070fddab0d1ef", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 3109, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "407d9389ff973ff3900dea8b8ed3439cc8630edc", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/arithmetic.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/arithmetic.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "d67b2f665d4cc9ee49ca20af88a06ac2c971923b6a3a7d2b22bfc19c296ca8b5", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 1371, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "dc76e295f2504df68d26428b3aee2af0527c3302", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/census_controls.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/census_controls.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "35fb546ef060a56539be3ac0eaba9d36405bd10803a7829933bd45699c2873ea", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 3509, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "43daf7c305f1fe62ef99f3920b2cb7ed1d83aac6", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/claim.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/claim.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "86bf973f21b6bb1fe54b5dc83b89264e0b406d0ff1a6f686133c055a9752f39a", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 10669, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "6a6f9373fe33d20e6aa7588ddcf86dde6a33a26a", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/compiler.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/compiler.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "4ec862afb1b0c18cecebec9b04d692be37083da64814da79ad692da96fd62bb5", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 2019, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "80a91d0a31bb64f662a7bed1eca90096e3b2cd69", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/frame.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/frame.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "0ef2fa6794ccdc5895a7b72ff318b1f0b56da933ef829705f98ac6d35ee17bcf", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 11245, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "57e54de4a09f6d4e7aba96856a6c29c4b131a13d", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/helpers.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/helpers.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "a6516b310c41a07db9a83f1444c9ae63295286acdb5a5e3eb561bef46cdb22ce", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 3946, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "f33ac0d326d20b8b8422ded0fdae49acff16fbe9", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/independent_clifford.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/independent_clifford.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "4953e06bd3837fa414372a62f2de57711854353e3a6ac6cea94e4c18ae42ea87", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 9584, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "142f3db7796f9be8d58a0c14db747614f8b8b4ff", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/invoice.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/invoice.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "c0a9f90dfbbacec2d6d065986fad3c2b985361b9601d941ceb8296361311a60a", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 4513, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "ebe89f02c41853dd695d84629954d699f97b0cc9", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/lift.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/lift.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "5ca85c008be87d6b49ba24f7928f3f6cc9558d5342119a5e715abf28326ac9fa", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 3561, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "9ad2be9453dda7cb1f4cb2483a17c190272a9ec8", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/lineage.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/lineage.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "7eb01f6125dd65fad0aa404055b0ed3f0609cce01e3d407f5089e4d5f0ac9dbb", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 6502, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "21abd93594516dad073e40b658c6c37084db2c5f", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/moments.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/moments.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "4de41cb8cff88de815f47b634709ef819f822544a03a66ae35c0bea76e5d94c9", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 10090, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "0545a57fc35f6109cbb3bc06e0934d40777c2890", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/native.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/native.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "49b3560fd1baefd3ac986854844d399f1d180f8fd96724b0c3b2065e98a44523", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 3468, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "39e62cac780b662903582cb5f8684990fa779bb3", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/outer.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/outer.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "196be1bc2329500f2c7c995deaf5a82aecc5e27f0fef7805470cb65d187bb1c0", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 9184, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "b9740fa217e545f67e289ae89c75a2a6b492692e", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/paid.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/paid.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "4c6ff3312440ec3ef0c3e2649a1d2dae0f81ef09a8c65b46866775b56be79907", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 4545, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "d17583cd64d9e8c4d1ab2e61cd557bd0bd5037c9", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/source.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/source.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "7b519f0d9326b630c142630fec55a6a8b03a7b2dee7f4fcb2ca68564c4e04e53", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 13855, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "4fe827ec0ea0b30c8749e8e476b5257fd292c1b1", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/checks/specialization.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/specialization.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "a4baf55b462bff8a1f4b9d49d928ff88018792710a1c36b87f859093969921d6", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree" + ] + }, + { + "bytes": 1133, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "39eaf03f00c5d7e02795112afbd3364386564fca", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/regenerate_paid.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/regenerate_paid.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "3ccd4bc6022f96b863c4611907640a04cecdb0f69ea6c1e9b23c8c88c9eea7e4", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 3687, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "1879aeffa158e5efa74e920fb3d326eb573b1f4e", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/final4610-independent-admission/verify.py", + "path": "capsule/agents/sources/pr5241/research/final4610-independent-admission/verify.py", + "role": "authenticated_historical_phase_reuse_closure", + "sha256": "94ae718a0b5db7f91550c352a4b573edbf62d16aaa925cf250f01b4b8c15edeb", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree" + ] + }, + { + "bytes": 9358, + "commit_object": "custody/git-objects/b1ab650d36f59e5be682a813145b7c67e219e341.commit", + "git_blob": "17901a8af82a17135f8414fa592c63c65d85a785", + "git_mode": "100644", + "origin_commit": "b1ab650d36f59e5be682a813145b7c67e219e341", + "origin_path": "research/eight-owned-relations/README.md", + "path": "capsule/agents/sources/pr5387/research/eight-owned-relations/README.md", + "role": "literal_word_or_author_claim_provenance", + "sha256": "5d5f033c82a8ed8b7e9c3fe3d3f18f559f4f651bb11d0e6a2c916e244777fb99", + "tree_objects": [ + "custody/git-objects/6d2b3a87d39cf33569d1b1f8a7d6177af59bd524.tree", + "custody/git-objects/46dca2d79105e0d899594be581275b404bc812cd.tree", + "custody/git-objects/87cbbbc8ccf824c7a3ceadac4f7ca3b041fb8ab6.tree" + ] + }, + { + "bytes": 14772, + "commit_object": "custody/git-objects/b1ab650d36f59e5be682a813145b7c67e219e341.commit", + "git_blob": "2e13818df03e9fd93b9e13ada8663646ec948572", + "git_mode": "100644", + "origin_commit": "b1ab650d36f59e5be682a813145b7c67e219e341", + "origin_path": "research/eight-owned-relations/RESULT.json", + "path": "capsule/agents/sources/pr5387/research/eight-owned-relations/RESULT.json", + "role": "literal_word_or_author_claim_provenance", + "sha256": "34ad456c1f98f7f8c361d63539ef26d75dad8ffb3444edf29652372acabf1aaf", + "tree_objects": [ + "custody/git-objects/6d2b3a87d39cf33569d1b1f8a7d6177af59bd524.tree", + "custody/git-objects/46dca2d79105e0d899594be581275b404bc812cd.tree", + "custody/git-objects/87cbbbc8ccf824c7a3ceadac4f7ca3b041fb8ab6.tree" + ] + }, + { + "bytes": 3665, + "commit_object": "custody/git-objects/b1ab650d36f59e5be682a813145b7c67e219e341.commit", + "git_blob": "71c57c8a90585da602b8df163d582e7c77949c00", + "git_mode": "100644", + "origin_commit": "b1ab650d36f59e5be682a813145b7c67e219e341", + "origin_path": "research/eight-owned-relations/SOURCES.json", + "path": "capsule/agents/sources/pr5387/research/eight-owned-relations/SOURCES.json", + "role": "literal_word_or_author_claim_provenance", + "sha256": "3b1536861c5b6990966ad5107f3a619f5d9da548f3c4eaa454ec32341e640dd3", + "tree_objects": [ + "custody/git-objects/6d2b3a87d39cf33569d1b1f8a7d6177af59bd524.tree", + "custody/git-objects/46dca2d79105e0d899594be581275b404bc812cd.tree", + "custody/git-objects/87cbbbc8ccf824c7a3ceadac4f7ca3b041fb8ab6.tree" + ] + }, + { + "bytes": 5444, + "commit_object": "custody/git-objects/b1ab650d36f59e5be682a813145b7c67e219e341.commit", + "git_blob": "8b9df431cc81487d1993dc1babb39dd466abfd59", + "git_mode": "100644", + "origin_commit": "b1ab650d36f59e5be682a813145b7c67e219e341", + "origin_path": "research/eight-owned-relations/TASK.json", + "path": "capsule/agents/sources/pr5387/research/eight-owned-relations/TASK.json", + "role": "literal_word_or_author_claim_provenance", + "sha256": "e3d0ee26c8b6a409be30b83aada3a2c3d1b332408a59307733f4299c940ff8b8", + "tree_objects": [ + "custody/git-objects/6d2b3a87d39cf33569d1b1f8a7d6177af59bd524.tree", + "custody/git-objects/46dca2d79105e0d899594be581275b404bc812cd.tree", + "custody/git-objects/87cbbbc8ccf824c7a3ceadac4f7ca3b041fb8ab6.tree" + ] + }, + { + "bytes": 1298, + "commit_object": "custody/git-objects/b1ab650d36f59e5be682a813145b7c67e219e341.commit", + "git_blob": "8098df4c806a6c6e9e2be7253ba4101744dab08d", + "git_mode": "100644", + "origin_commit": "b1ab650d36f59e5be682a813145b7c67e219e341", + "origin_path": "research/eight-owned-relations/VERIFY.json", + "path": "capsule/agents/sources/pr5387/research/eight-owned-relations/VERIFY.json", + "role": "literal_word_or_author_claim_provenance", + "sha256": "1fc62a3afd087aa63f8d993beb1cba944b9b441824cd14e9135e792fcd45bab8", + "tree_objects": [ + "custody/git-objects/6d2b3a87d39cf33569d1b1f8a7d6177af59bd524.tree", + "custody/git-objects/46dca2d79105e0d899594be581275b404bc812cd.tree", + "custody/git-objects/87cbbbc8ccf824c7a3ceadac4f7ca3b041fb8ab6.tree" + ] + }, + { + "bytes": 207423, + "commit_object": "custody/git-objects/b1ab650d36f59e5be682a813145b7c67e219e341.commit", + "git_blob": "c62fcb59643f87919208100517a2fbc4b57cb7d7", + "git_mode": "100644", + "origin_commit": "b1ab650d36f59e5be682a813145b7c67e219e341", + "origin_path": "research/eight-owned-relations/WORD.json.gz", + "path": "capsule/agents/sources/pr5387/research/eight-owned-relations/WORD.json.gz", + "payload_sha256": "9aa0d7112b4e13f1aa13a93dab0af6f4435ffe99b842aad841685becdafee492", + "role": "literal_word_or_author_claim_provenance", + "sha256": "6412632c28e265597fb088087048091d81c19500fb28a0c9c9d2a48f61b8665b", + "tree_objects": [ + "custody/git-objects/6d2b3a87d39cf33569d1b1f8a7d6177af59bd524.tree", + "custody/git-objects/46dca2d79105e0d899594be581275b404bc812cd.tree", + "custody/git-objects/87cbbbc8ccf824c7a3ceadac4f7ca3b041fb8ab6.tree" + ] + }, + { + "bytes": 5495, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "b288ae44032fd84dd5564243422836cbcd29835e", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "certificates/selected-result.json", + "path": "capsule/repository/certificates/selected-result.json", + "role": "runtime_input", + "sha256": "f9ed52bb642cd1e1486cf2743557ac5fa23cf1514a3277d786a644e39a565038", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/92bd281a274191242f183544f5ebab24b7f61127.tree" + ] + }, + { + "bytes": 8277, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "bf5ff049da5fa07f9bf71176dfafe3343b7ac93d", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "docs/research/pr-intake-evidence/pr4610/PROOF-REVIEW.md", + "path": "capsule/repository/docs/research/pr-intake-evidence/pr4610/PROOF-REVIEW.md", + "role": "runtime_input", + "sha256": "b84f833e3072cbab372fbda2ece98fbc031c15e590cf73003ddea35a5222e148", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/258aaa876ecb530c4c173c8e3ef93ccf87c81673.tree", + "custody/git-objects/e9c70b9927d6e9233633e4e88108f831e7c5c5d9.tree", + "custody/git-objects/02fdbbad293e674b3e2300ee89b37ed4dc623f6f.tree", + "custody/git-objects/ca6f51bb3b6474cfa4111ebafa02b1913a807446.tree" + ] + }, + { + "bytes": 9907, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "69c337a7704ce589798269ab4b8606189c070c4e", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/free-word-tensor-lift-audit/PROOF.md", + "path": "capsule/repository/research/free-word-tensor-lift-audit/PROOF.md", + "role": "runtime_input", + "sha256": "cc8ad3698a673fb225419a3636a39aa99a66c7a0676f12e329b1e76564fa1459", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/8bed1ecc75af648c4b5fbf888b902e89ea94de00.tree" + ] + }, + { + "bytes": 57924, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "49a2f0675819f9deeea27ed77be2c2b6ff2e87e5", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/joint-helper-lattice/CONTROLLER.json", + "path": "capsule/repository/research/joint-helper-lattice/CONTROLLER.json", + "role": "runtime_input", + "sha256": "1f5d6aa267e4e66048818714b5d3b5eae17a58abe91d15deeaa34574f7391a5f", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/93c3da5da0a527baf42dbbe76e7af010384def87.tree" + ] + }, + { + "bytes": 16479, + "commit_object": "custody/git-objects/4bd6efa51a495a7c7b7754915cf0244e7e60969e.commit", + "git_blob": "d0593a46e89eb63a533968cd6bc1d2a129f3c22e", + "git_mode": "100644", + "origin_commit": "4bd6efa51a495a7c7b7754915cf0244e7e60969e", + "origin_path": "research/kappa-joint-relations-20261023/README.md", + "path": "capsule/repository/research/kappa-joint-relations-20261023/README.md", + "role": "literal_word_or_author_claim_provenance", + "sha256": "899027b74219ece1832d711e27def50eb49994cd28ede4fedcdd0bd0f2574c64", + "tree_objects": [ + "custody/git-objects/7c8818178b05733b5d09a6decc34d53b84fdc213.tree", + "custody/git-objects/b3abe1a63f80b453a11823d70c836b9199e7c556.tree", + "custody/git-objects/0994002341ec20dbea467f4c19fb8d4300cb88cc.tree" + ] + }, + { + "bytes": 22334, + "commit_object": "custody/git-objects/4bd6efa51a495a7c7b7754915cf0244e7e60969e.commit", + "git_blob": "b6c9cd0da1889ed92f3f1066127a203246f303d8", + "git_mode": "100644", + "origin_commit": "4bd6efa51a495a7c7b7754915cf0244e7e60969e", + "origin_path": "research/kappa-joint-relations-20261023/RESULT.json", + "path": "capsule/repository/research/kappa-joint-relations-20261023/RESULT.json", + "role": "literal_word_or_author_claim_provenance", + "sha256": "d6a99bd75c6b7a2146b0fc4cfa038890aaf1d4adcdef42d767fdb40b687e61aa", + "tree_objects": [ + "custody/git-objects/7c8818178b05733b5d09a6decc34d53b84fdc213.tree", + "custody/git-objects/b3abe1a63f80b453a11823d70c836b9199e7c556.tree", + "custody/git-objects/0994002341ec20dbea467f4c19fb8d4300cb88cc.tree" + ] + }, + { + "bytes": 3665, + "commit_object": "custody/git-objects/4bd6efa51a495a7c7b7754915cf0244e7e60969e.commit", + "git_blob": "71c57c8a90585da602b8df163d582e7c77949c00", + "git_mode": "100644", + "origin_commit": "4bd6efa51a495a7c7b7754915cf0244e7e60969e", + "origin_path": "research/kappa-joint-relations-20261023/SOURCES.json", + "path": "capsule/repository/research/kappa-joint-relations-20261023/SOURCES.json", + "role": "literal_word_or_author_claim_provenance", + "sha256": "3b1536861c5b6990966ad5107f3a619f5d9da548f3c4eaa454ec32341e640dd3", + "tree_objects": [ + "custody/git-objects/7c8818178b05733b5d09a6decc34d53b84fdc213.tree", + "custody/git-objects/b3abe1a63f80b453a11823d70c836b9199e7c556.tree", + "custody/git-objects/0994002341ec20dbea467f4c19fb8d4300cb88cc.tree" + ] + }, + { + "bytes": 5801, + "commit_object": "custody/git-objects/4bd6efa51a495a7c7b7754915cf0244e7e60969e.commit", + "git_blob": "5b57a9e8233575c97042b774a8ee3881e6ece6f7", + "git_mode": "100644", + "origin_commit": "4bd6efa51a495a7c7b7754915cf0244e7e60969e", + "origin_path": "research/kappa-joint-relations-20261023/TASK.json", + "path": "capsule/repository/research/kappa-joint-relations-20261023/TASK.json", + "role": "literal_word_or_author_claim_provenance", + "sha256": "4d536a9bd6162b64ecf7bba20bec35fa0ca8fe61abf8e1404cd010b58de07a3d", + "tree_objects": [ + "custody/git-objects/7c8818178b05733b5d09a6decc34d53b84fdc213.tree", + "custody/git-objects/b3abe1a63f80b453a11823d70c836b9199e7c556.tree", + "custody/git-objects/0994002341ec20dbea467f4c19fb8d4300cb88cc.tree" + ] + }, + { + "bytes": 1298, + "commit_object": "custody/git-objects/4bd6efa51a495a7c7b7754915cf0244e7e60969e.commit", + "git_blob": "8098df4c806a6c6e9e2be7253ba4101744dab08d", + "git_mode": "100644", + "origin_commit": "4bd6efa51a495a7c7b7754915cf0244e7e60969e", + "origin_path": "research/kappa-joint-relations-20261023/VERIFY.json", + "path": "capsule/repository/research/kappa-joint-relations-20261023/VERIFY.json", + "role": "literal_word_or_author_claim_provenance", + "sha256": "1fc62a3afd087aa63f8d993beb1cba944b9b441824cd14e9135e792fcd45bab8", + "tree_objects": [ + "custody/git-objects/7c8818178b05733b5d09a6decc34d53b84fdc213.tree", + "custody/git-objects/b3abe1a63f80b453a11823d70c836b9199e7c556.tree", + "custody/git-objects/0994002341ec20dbea467f4c19fb8d4300cb88cc.tree" + ] + }, + { + "bytes": 207650, + "commit_object": "custody/git-objects/4bd6efa51a495a7c7b7754915cf0244e7e60969e.commit", + "git_blob": "a4a58afce144541603385e9bf4e0695c54eade7c", + "git_mode": "100644", + "origin_commit": "4bd6efa51a495a7c7b7754915cf0244e7e60969e", + "origin_path": "research/kappa-joint-relations-20261023/WORD.json.gz", + "path": "capsule/repository/research/kappa-joint-relations-20261023/WORD.json.gz", + "payload_sha256": "2aee5e997df99726fc763e510d9cb69fbe4f86114dc8d2cd33ad26c6c462a21d", + "role": "literal_word_or_author_claim_provenance", + "sha256": "7883ba0faefc96505bb61ca7312d588fa22dfe2164050c817c1718b8fa28693a", + "tree_objects": [ + "custody/git-objects/7c8818178b05733b5d09a6decc34d53b84fdc213.tree", + "custody/git-objects/b3abe1a63f80b453a11823d70c836b9199e7c556.tree", + "custody/git-objects/0994002341ec20dbea467f4c19fb8d4300cb88cc.tree" + ] + }, + { + "bytes": 207673, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "46d929df83817b85a5387bcdb9745e0627d6366e", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz", + "path": "capsule/repository/research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz", + "payload_sha256": "cfcd36b40326d7a5815e1db5313444379b3fb756b27d5201c561574c085cc0dd", + "role": "runtime_input", + "sha256": "7679daa4ec6a40f56fc7f0202379a6f454310e94945aba4f48beaaaafb838d05", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/db06c76a46083783b675e5a5ce418c52a400d350.tree" + ] + }, + { + "bytes": 23356, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "ac77b78547d6dbf2e6bd102e1047c5b16c1bca88", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/kappa-round3-warp-20261022/PHASE-VALIDATION.json.gz", + "path": "capsule/repository/research/kappa-round3-warp-20261022/PHASE-VALIDATION.json.gz", + "payload_sha256": "bc9de6d11fc3d5fb2141a1658785f2093ea1b735d34414ed15749df7d731b34e", + "role": "runtime_input", + "sha256": "6eae66ed3cfa8a1533e89b9660a57276908e6646640a12f8b1e3489f4ea1354b", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/db06c76a46083783b675e5a5ce418c52a400d350.tree" + ] + }, + { + "bytes": 15898, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "4badb40f0919c515823cb07e44c6470d4d6469ca", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/pr4359-p7-padding/source/research/kappa-rebuild/architecture/FINITE-PRECOMPILATION.md", + "path": "capsule/repository/research/pr4359-p7-padding/source/research/kappa-rebuild/architecture/FINITE-PRECOMPILATION.md", + "role": "runtime_input", + "sha256": "4cb32f6b8e388ecf6ed41b5bbdeeb4539cb40c8424f194974afea58f7e0921e8", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/3e58974508669b0b52f53c56371b5f9c253ece4b.tree", + "custody/git-objects/74e7c585a7f3c853a2927a5028db379ac86b4a34.tree", + "custody/git-objects/df0da6ab4433542c03f089e50eeaabacb89fa6a4.tree", + "custody/git-objects/2f0243de4ff0d29f087894edbf247327c5bae8e9.tree", + "custody/git-objects/d520959c0a8af33980dff881ed2cf6c4703bb338.tree" + ] + }, + { + "bytes": 15369, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "9917ac5543608047fd368e5e75f0851310f53584", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/pr4359-p7-padding/source/research/kappa-rebuild/transfer-audit/FINITE-TEMPLATE-CLOSURE.md", + "path": "capsule/repository/research/pr4359-p7-padding/source/research/kappa-rebuild/transfer-audit/FINITE-TEMPLATE-CLOSURE.md", + "role": "runtime_input", + "sha256": "3f8508c63862dd83968bd30df91b08ba5afcee1e10db15ca546cdff0caef95d9", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/3e58974508669b0b52f53c56371b5f9c253ece4b.tree", + "custody/git-objects/74e7c585a7f3c853a2927a5028db379ac86b4a34.tree", + "custody/git-objects/df0da6ab4433542c03f089e50eeaabacb89fa6a4.tree", + "custody/git-objects/2f0243de4ff0d29f087894edbf247327c5bae8e9.tree", + "custody/git-objects/308866b397e4296d95f7a55ad38313ec11c69f3b.tree" + ] + }, + { + "bytes": 10237, + "commit_object": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "git_blob": "e0695152c98d727edfd0d2034b58a1c7e8682c0c", + "git_mode": "100644", + "origin_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "origin_path": "research/query-thinned-controllers/RESULT.json", + "path": "capsule/repository/research/query-thinned-controllers/RESULT.json", + "role": "runtime_input", + "sha256": "6ebfc8c0f09166f4834e9d7427410cb31aefff2cd4d4ce588c8e52c9c70e9a0f", + "tree_objects": [ + "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "custody/git-objects/368780035287bad0b8e9cd1a9f7da73223dfa456.tree" + ] + }, + { + "bytes": 341, + "path": "custody/CANDIDATE-COMMIT.raw", + "role": "source_custody_observation", + "sha256": "d1a49634694ac9f77010440e9da8bbcaec5abfac9c7c2e7ec142b93008b27039" + }, + { + "bytes": 2411, + "path": "custody/CANDIDATE-FILES.json", + "role": "source_custody_observation", + "sha256": "e70ed297be022d50471506049c3db674c2d539712f8327b76f3096cd0097f758" + }, + { + "bytes": 317, + "path": "custody/CANONICAL-COMMIT.raw", + "role": "source_custody_observation", + "sha256": "8fc74b8fe0be2ef8075db0f654579721bcaf73fa7f1744cb23fe086edc553716" + }, + { + "bytes": 7977, + "path": "custody/PR5241-INVENTORY.json", + "role": "source_custody_observation", + "sha256": "82656ff69e81a0e466d4f4bd65c5dfe74b061a63b3a51d8927e5fbc20eab6350" + }, + { + "bytes": 7613, + "path": "custody/PR5241-PHASE-REUSE.json", + "role": "source_custody_observation", + "sha256": "98a5fa3cee0aeea101676f0a05d045b8c4f7a953273456b798fd9495c24cd51b" + }, + { + "bytes": 313, + "path": "custody/PR5387-COMMIT.raw", + "role": "source_custody_observation", + "sha256": "73c5b337305a1122b7d474f5ec1b74205bc169f51e34868b5cb40706a5263e00" + }, + { + "bytes": 2981, + "path": "custody/PR5387-INVENTORY.json", + "role": "source_custody_observation", + "sha256": "52bff5a1fe9d1bd8b1621b8441da4ad91c768d2b753c581301ac9cb799e94c37" + }, + { + "bytes": 4651, + "path": "custody/SOURCE-HISTORY.json", + "role": "source_custody_observation", + "sha256": "8b1fa9c7328e0e510f945b5f59a1d98fdab5e9645e634eab01d358af9569744d" + }, + { + "bytes": 9907, + "git_object_sha1": "02fdbbad293e674b3e2300ee89b37ed4dc623f6f", + "git_object_type": "tree", + "path": "custody/git-objects/02fdbbad293e674b3e2300ee89b37ed4dc623f6f.tree", + "role": "offline_git_membership_proof", + "sha256": "9f5e14586bed06cd212709f9c6152e61417f4607a8905c941637fc68a79e857f" + }, + { + "bytes": 382, + "git_object_sha1": "0994002341ec20dbea467f4c19fb8d4300cb88cc", + "git_object_type": "tree", + "path": "custody/git-objects/0994002341ec20dbea467f4c19fb8d4300cb88cc.tree", + "role": "offline_git_membership_proof", + "sha256": "81ca588d7a603cc9845120e32ca2906322c8fda59335c4085b605b397e687c2f" + }, + { + "bytes": 575, + "git_object_sha1": "19b1abce68e32239bd8ad6abf979584eb93ad269", + "git_object_type": "tree", + "path": "custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "role": "offline_git_membership_proof", + "sha256": "b86777926b23d06339e922e520bb9d2aaa7eed869025b290ce7d8c046e013979" + }, + { + "bytes": 317, + "git_object_sha1": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "git_object_type": "commit", + "path": "custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "role": "offline_git_membership_proof", + "sha256": "8fc74b8fe0be2ef8075db0f654579721bcaf73fa7f1744cb23fe086edc553716" + }, + { + "bytes": 639, + "git_object_sha1": "258aaa876ecb530c4c173c8e3ef93ccf87c81673", + "git_object_type": "tree", + "path": "custody/git-objects/258aaa876ecb530c4c173c8e3ef93ccf87c81673.tree", + "role": "offline_git_membership_proof", + "sha256": "32b88db989aaae9adf124ed59a8f391b8c7cc55175b3f191937c6d422b1e036a" + }, + { + "bytes": 181, + "git_object_sha1": "2f0243de4ff0d29f087894edbf247327c5bae8e9", + "git_object_type": "tree", + "path": "custody/git-objects/2f0243de4ff0d29f087894edbf247327c5bae8e9.tree", + "role": "offline_git_membership_proof", + "sha256": "2ea587bae76140099f73e6042d0b4cc524ccebf5f87acb1d63efeb2a937912ce" + }, + { + "bytes": 707, + "git_object_sha1": "2f781f177482200db6432209f21d8e7d662fbba3", + "git_object_type": "tree", + "path": "custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree", + "role": "offline_git_membership_proof", + "sha256": "9bb093aa1ad199128bce47b6f958cd19db7df0b8fce36070b184d4e9eeff2341" + }, + { + "bytes": 196, + "git_object_sha1": "308866b397e4296d95f7a55ad38313ec11c69f3b", + "git_object_type": "tree", + "path": "custody/git-objects/308866b397e4296d95f7a55ad38313ec11c69f3b.tree", + "role": "offline_git_membership_proof", + "sha256": "26330485f86d462abe32df5b51f7db47ae295dfba576da7e1b5d85345f4f9b49" + }, + { + "bytes": 445, + "git_object_sha1": "368780035287bad0b8e9cd1a9f7da73223dfa456", + "git_object_type": "tree", + "path": "custody/git-objects/368780035287bad0b8e9cd1a9f7da73223dfa456.tree", + "role": "offline_git_membership_proof", + "sha256": "ab3e8e7e9ac2eb4668ad34f9b2f31cec0303f2de62162728128be1cb02c4f78a" + }, + { + "bytes": 797, + "git_object_sha1": "3e58974508669b0b52f53c56371b5f9c253ece4b", + "git_object_type": "tree", + "path": "custody/git-objects/3e58974508669b0b52f53c56371b5f9c253ece4b.tree", + "role": "offline_git_membership_proof", + "sha256": "4785a00e3abd23489c2368faf23ff1a6d16a9713b8e08bd36c47e5af99022645" + }, + { + "bytes": 219666, + "git_object_sha1": "46dca2d79105e0d899594be581275b404bc812cd", + "git_object_type": "tree", + "path": "custody/git-objects/46dca2d79105e0d899594be581275b404bc812cd.tree", + "role": "offline_git_membership_proof", + "sha256": "a2da6776db02103b2b825d10c1d2ccb47f17589f1f44975d8770c1942442d354" + }, + { + "bytes": 341, + "git_object_sha1": "4bd6efa51a495a7c7b7754915cf0244e7e60969e", + "git_object_type": "commit", + "path": "custody/git-objects/4bd6efa51a495a7c7b7754915cf0244e7e60969e.commit", + "role": "offline_git_membership_proof", + "sha256": "d1a49634694ac9f77010440e9da8bbcaec5abfac9c7c2e7ec142b93008b27039" + }, + { + "bytes": 969, + "git_object_sha1": "6d2b3a87d39cf33569d1b1f8a7d6177af59bd524", + "git_object_type": "tree", + "path": "custody/git-objects/6d2b3a87d39cf33569d1b1f8a7d6177af59bd524.tree", + "role": "offline_git_membership_proof", + "sha256": "e4410ed702d2606f40d86389d7639f20ace1dbae3a8b66ea8eb0f1b04a85c473" + }, + { + "bytes": 35, + "git_object_sha1": "74e7c585a7f3c853a2927a5028db379ac86b4a34", + "git_object_type": "tree", + "path": "custody/git-objects/74e7c585a7f3c853a2927a5028db379ac86b4a34.tree", + "role": "offline_git_membership_proof", + "sha256": "ca82587f0e0a51caaf7a942cda7448f75e339bd39571f256f14d24a0f76458f1" + }, + { + "bytes": 969, + "git_object_sha1": "7c8818178b05733b5d09a6decc34d53b84fdc213", + "git_object_type": "tree", + "path": "custody/git-objects/7c8818178b05733b5d09a6decc34d53b84fdc213.tree", + "role": "offline_git_membership_proof", + "sha256": "8c929ae6900a027b095d7446ea2813f8f5eff20706966d211a6cabd104b793d7" + }, + { + "bytes": 477, + "git_object_sha1": "87cbbbc8ccf824c7a3ceadac4f7ca3b041fb8ab6", + "git_object_type": "tree", + "path": "custody/git-objects/87cbbbc8ccf824c7a3ceadac4f7ca3b041fb8ab6.tree", + "role": "offline_git_membership_proof", + "sha256": "b2751ffc200196951f304e4fb45f000d68f922a353931925abebecc15e4cdf0b" + }, + { + "bytes": 663, + "git_object_sha1": "8bed1ecc75af648c4b5fbf888b902e89ea94de00", + "git_object_type": "tree", + "path": "custody/git-objects/8bed1ecc75af648c4b5fbf888b902e89ea94de00.tree", + "role": "offline_git_membership_proof", + "sha256": "29c18dc1e2792ca110b97790a9153826994ab4e2af59cf9f2e8e1ec8dd04bb86" + }, + { + "bytes": 6799, + "git_object_sha1": "92bd281a274191242f183544f5ebab24b7f61127", + "git_object_type": "tree", + "path": "custody/git-objects/92bd281a274191242f183544f5ebab24b7f61127.tree", + "role": "offline_git_membership_proof", + "sha256": "9925ce9ff27d85508b1493dad6f33b38a03350bb6985f17b55f58ecf0966313b" + }, + { + "bytes": 599, + "git_object_sha1": "93c3da5da0a527baf42dbbe76e7af010384def87", + "git_object_type": "tree", + "path": "custody/git-objects/93c3da5da0a527baf42dbbe76e7af010384def87.tree", + "role": "offline_git_membership_proof", + "sha256": "3764da0e59c2829d0e8b560feac19e71051d92411598a8abd46fa95b6f8fd7b9" + }, + { + "bytes": 313, + "git_object_sha1": "b1ab650d36f59e5be682a813145b7c67e219e341", + "git_object_type": "commit", + "path": "custody/git-objects/b1ab650d36f59e5be682a813145b7c67e219e341.commit", + "role": "offline_git_membership_proof", + "sha256": "73c5b337305a1122b7d474f5ec1b74205bc169f51e34868b5cb40706a5263e00" + }, + { + "bytes": 219675, + "git_object_sha1": "b3abe1a63f80b453a11823d70c836b9199e7c556", + "git_object_type": "tree", + "path": "custody/git-objects/b3abe1a63f80b453a11823d70c836b9199e7c556.tree", + "role": "offline_git_membership_proof", + "sha256": "0df25acffcf38c7c6690547dc0ab38c2cdc15d6593046ffdca8b575484c13531" + }, + { + "bytes": 969, + "git_object_sha1": "bfb420045d2bc04dd026b5020aea84d547873ef4", + "git_object_type": "tree", + "path": "custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "role": "offline_git_membership_proof", + "sha256": "aee24b16e5fb24053b230ed4a9b375251da522404f93402e7deacceeb9289b4c" + }, + { + "bytes": 219618, + "git_object_sha1": "c211d4eb07730865bffd69a35a85a0642acc333d", + "git_object_type": "tree", + "path": "custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "role": "offline_git_membership_proof", + "sha256": "dbfd9e35527f18d2342c82bccd407d99d7222e6ebd8f0db4cdb469b05b745d49" + }, + { + "bytes": 526, + "git_object_sha1": "ca6f51bb3b6474cfa4111ebafa02b1913a807446", + "git_object_type": "tree", + "path": "custody/git-objects/ca6f51bb3b6474cfa4111ebafa02b1913a807446.tree", + "role": "offline_git_membership_proof", + "sha256": "10d55a065b955681775731817a9619242ea69137125b88be1be2fd8b130e005d" + }, + { + "bytes": 208, + "git_object_sha1": "d520959c0a8af33980dff881ed2cf6c4703bb338", + "git_object_type": "tree", + "path": "custody/git-objects/d520959c0a8af33980dff881ed2cf6c4703bb338.tree", + "role": "offline_git_membership_proof", + "sha256": "be37540cce0416977753211ea760091f909b5300d7d7f8172ebfdb2905396416" + }, + { + "bytes": 1307, + "git_object_sha1": "db06c76a46083783b675e5a5ce418c52a400d350", + "git_object_type": "tree", + "path": "custody/git-objects/db06c76a46083783b675e5a5ce418c52a400d350.tree", + "role": "offline_git_membership_proof", + "sha256": "727b0999f3afd17b8756efdc2eec96e5d76f9fcab111db9031814b7fbfbd0d54" + }, + { + "bytes": 93, + "git_object_sha1": "df0da6ab4433542c03f089e50eeaabacb89fa6a4", + "git_object_type": "tree", + "path": "custody/git-objects/df0da6ab4433542c03f089e50eeaabacb89fa6a4.tree", + "role": "offline_git_membership_proof", + "sha256": "bbdcd341a480357712d3b4e4187a861c76a680be7334bdb80c4895f959806b62" + }, + { + "bytes": 14144, + "git_object_sha1": "e9c70b9927d6e9233633e4e88108f831e7c5c5d9", + "git_object_type": "tree", + "path": "custody/git-objects/e9c70b9927d6e9233633e4e88108f831e7c5c5d9.tree", + "role": "offline_git_membership_proof", + "sha256": "22369b51a2b61cb47fb424394c7a9fac4f8ef81a1e29f4e9a6805892dbbba7e9" + }, + { + "bytes": 5586, + "path": "receipt_guard.py", + "role": "bootstrap_helper_or_claim_and_command_contract", + "sha256": "67336a39205247ca3ad1639e29f2dfcdc334f8e8f68cc173e87cd58f80d6adda" + }, + { + "bytes": 11581, + "path": "reports/algebra/REPORT.md", + "role": "independent_proof_and_limits", + "sha256": "4a56a57c6ef5191c57b82c145fc253661cf26fb2555325b414fca6a954df3df2" + }, + { + "bytes": 2297, + "path": "reports/algebra/RUN-REQUEST.json", + "role": "independent_proof_and_limits", + "sha256": "81e5dfaf34f43e4509ce094ca2f31bfaf575b75af419c11e50e157da109e20d8" + }, + { + "bytes": 711, + "path": "reports/applicability/FOUNDATION-SOURCES.json", + "role": "independent_proof_and_limits", + "sha256": "217e64f025f1c4d2a985703eace4ac60bb8f9951453b5e613ba41cc0790945bf" + }, + { + "bytes": 17224, + "path": "reports/applicability/REPORT.md", + "role": "independent_proof_and_limits", + "sha256": "500080de09e17619d7e9b34ca910fc242fa6691d377d5af9f7fa3de8b529832b" + }, + { + "bytes": 8546, + "path": "reports/falsifier/CODE-AUDIT.md", + "role": "independent_proof_and_limits", + "sha256": "6ab315f9ac420aa23cc36c1eca30efdc74e5362ab232ff5b78d84ede89b3c209" + }, + { + "bytes": 2274, + "path": "reports/falsifier/EARLY-FINDINGS.md", + "role": "independent_proof_and_limits", + "sha256": "97712b703aec926caac82351047a7b64656df6d8fc2a30cc8cf023a1d034ae7c" + }, + { + "bytes": 960, + "path": "reports/falsifier/RUN-REQUEST.json", + "role": "independent_proof_and_limits", + "sha256": "e691a9a645b2f1c07e8c874ece22673c8405d184dd61ee62729e0500ddeb56b9" + }, + { + "bytes": 533, + "path": "reports/falsifier/SAME-FRAME-CONTROL.json", + "role": "independent_proof_and_limits", + "sha256": "ade262c1506f55baf9221112788e430a3058b0d5ecb35e2cc91113f1c03a238a" + }, + { + "bytes": 8620, + "path": "reports/outer/REPORT.md", + "role": "independent_proof_and_limits", + "sha256": "5131afd92d8feb8e3578d724cb7f45a7deea9ef327465af741e02ee00c0f0045" + }, + { + "bytes": 5593, + "path": "reports/outer/SOURCES.json", + "role": "independent_proof_and_limits", + "sha256": "3de5130c6494cf0c644ec7cc06fec8255ffd6a7d2f7049a1ad758d81bbfe1503" + }, + { + "bytes": 14887, + "path": "reports/ownership/REPORT.md", + "role": "independent_proof_and_limits", + "sha256": "80bb8d3a6e7fbc224049baa95b38a49f8fb31aa2e6b320326a965efb53a848fc" + }, + { + "bytes": 1839, + "path": "reports/ownership/RUN-REQUEST.json", + "role": "independent_proof_and_limits", + "sha256": "15208fac92c19b734b04e2f54b5dfd4bc39e72447a804a5ec30543095974d85f" + }, + { + "bytes": 8838, + "path": "reports/prices/REPORT.md", + "role": "independent_proof_and_limits", + "sha256": "17e2097d2ebe908700e7d4677733755e4002dc05570f0584f45184456628b165" + }, + { + "bytes": 8408, + "path": "source_guard.py", + "role": "bootstrap_helper_or_claim_and_command_contract", + "sha256": "9ef48a8b1fad7e391c8b585691d741c3c4642745aed36e00b5b65b0cf4cdac12" + } + ], + "schema_version": 1, + "selected_phase_receipt": "capsule/agents/sources/pr5241/research/final4610-independent-admission/FIRST-COLD-REPLAY.json", + "selected_record": "capsule/repository/certificates/selected-result.json", + "source_word": "capsule/repository/research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz", + "working_source_policy": "No runtime Git reader or object fallback; source custody occurs once during preparation and all replay data are actual authenticated working-file bytes." +} diff --git a/research/joint-relations-independent-validation/SOURCES.json b/research/joint-relations-independent-validation/SOURCES.json new file mode 100644 index 0000000000..5559e48849 --- /dev/null +++ b/research/joint-relations-independent-validation/SOURCES.json @@ -0,0 +1,20 @@ +{ + "schema_version": 1, + "base_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "files": [ + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602", + "sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72" + }, + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "b288ae44032fd84dd5564243422836cbcd29835e", + "sha256": "f9ed52bb642cd1e1486cf2743557ac5fa23cf1514a3277d786a644e39a565038" + } + ], + "vendored_source_bindings": "SOURCE-BINDINGS.json", + "source_binding_policy": "Every actual runtime input is read from working bytes. Git provenance authenticates history; it never supplies a replacement for missing or mutated working inputs." +} diff --git a/research/joint-relations-independent-validation/TASK.json b/research/joint-relations-independent-validation/TASK.json new file mode 100644 index 0000000000..2427c5c9e4 --- /dev/null +++ b/research/joint-relations-independent-validation/TASK.json @@ -0,0 +1,73 @@ +{ + "schema_version": 1, + "task_id": "complex-new-helper-inventory", + "priority_revision": 7, + "base_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "original_card": { + "id": "complex-new-helper-inventory", + "question": "Can a new local cost interface change the deficit-to-recursive-cost ratio beyond current packing?", + "starting_points": [ + "docs/research/research-family-status.md", + "research/complex-local-word-ceiling/README.md", + "research/heterogeneous-owner-assembly/README.md", + "certificates/selected-result.json", + "research/selected-k8-unrestricted-ends/README.md" + ], + "methods": [ + "Propose a changed helper inventory and derive an optimistic exact moment.", + "Design a small completed instance and independently verify its endpoint and rank bill." + ], + "acceptance_gate": "A new physically realizable contract outside the frozen catalogue whose per-call profile, screened with ceiling.ceiling(), beats the selected word's packing ceiling; a lower cap does not establish identical circuitry or order attainable optima, and is insufficient to pass the stronger-budget target under this model. A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "first_step": { + "command": [ + "python3", + "-B", + "research/complex-local-word-ceiling/verify.py" + ], + "expected": "PASS_COMPLEX_LOCAL_WORD_CEILING", + "inspect": "Read the selected word's per-call local profile, its packing ceiling and the lever table; run levers.py for the ideal budget of the lever you target.", + "scope": "Positive control and planning budget only; this is not a new construction or full cold replay." + }, + "first_experiment": "Before any synthesis, write the candidate per-call local profile (and centre charge / unpaid coordinates if changed) and screen it with ceiling.ceiling(); reject it if even the ideal ceiling does not beat the selected word's by your stated margin.", + "bottleneck_link": "Packing of the selected word is capped at +0.87% (ceiling model); only a lower local excess spend or a changed coverage law raises the cap.", + "allowed_variations": [ + "Narrow to one changed boundary or helper type with explicit counts.", + "If the coverage law, template or guard changes, derive an applicable fully charged replacement bound instead of applying the incumbent ceiling outside its scope." + ], + "scope_change_triggers": [ + "Mixing only providers already inside the pinned catalogue.", + "Only changing helper terminal subspaces and monotone frames within the fixed scalar word, entrances and cleanup contract already covered by #1995/#2013.", + "Continuing a partial cost improvement while leaving the same unpriced consumer, restoration or central-readout obligation unresolved; refresh the family expansion decision first. Local product-retiming evidence has a narrow scope and is not a ban on changed graphs or contracts." + ], + "overlap_terms": [ + "helper inventory", + "heterogeneous-owner", + "mutable leaver" + ] + }, + "scope_status": "refined", + "actual_scope": "Independent complete same-premise validation of the two literal eight-relation words in PR5383 and PR5387; preserve separate algebra, ownership and compiler bindings.", + "scope_change_reason": "The construction authors requested independent review. A matched economic profile does not identify the changed eighth relation or its retained-domain proof.", + "bottleneck_link": "https://github.com/CrocSwap/integer-mult-bounds/pull/5383", + "budget_minutes": 240, + "stop_rule": "Freeze complete evidence and package only after the root scientific and acceptance gates pass; otherwise publish an explicit unresolved scope.", + "outcome": "completed", + "evidence": "PROOF.md; byte-identical six independent scientific engines; 111 offline-bound working-input files; root first normal cold replay passed all eight fresh commands. Final normal/optimized registered replay, committed-byte/export transport and acceptance remain root gates.", + "author": "Chris R / Clear1nsight", + "ai_assistance": "Substantial OpenAI Codex assistance in independent code, mathematical review, source custody, verification and packaging.", + "open_questions": [ + { + "question": "Can the five retained transfer premises be replaced by independently checked all-size physical and analytic proofs?", + "why_it_matters": "This package is a same-premise conditional validation; finite source identities do not close the full multiplication theorem.", + "first_step": "Follow each premise and exact retained proposition in PROOF.md and the source-pinned applicability audit.", + "blocked_by": "The retained framework includes unrestricted native, compiler, precision/tape and analytic contracts." + }, + { + "question": "Can a changed relation system improve this complete paid/productive profile?", + "why_it_matters": "The fixed-profile ceiling does not establish a global optimum or a new native construction.", + "first_step": "Refresh live claims, derive literal source identities and price every surrendered target and owned bank.", + "blocked_by": "All eight backward center jobs are already removed in this profile." + } + ], + "publication_transport_status": "Pending final registered normal/optimized, committed-byte/source-history/export and root acceptance gates." +} diff --git a/research/joint-relations-independent-validation/VERIFY.json b/research/joint-relations-independent-validation/VERIFY.json new file mode 100644 index 0000000000..32866f81c3 --- /dev/null +++ b/research/joint-relations-independent-validation/VERIFY.json @@ -0,0 +1,142 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 600, + "checks": "Fresh independent word identities, ownership, event invoice, directed prices, applicability and outer arithmetic, conditional on five explicit retained premises." + }, + { + "argv": [ + "{python}", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 600, + "checks": "Same replay with assertion optimization explicitly propagated to child engines; all scientific guards remain active." + } + ], + "input_inventory": "SOURCE-BINDINGS.json binds all package-local working inputs. The registered runner triggers on any package change; no runtime input lies outside this self-contained package.", + "package_local_inputs": [ + "research/joint-relations-independent-validation/CLAIMS.json", + "research/joint-relations-independent-validation/COMMANDS.json", + "research/joint-relations-independent-validation/capsule/agents/algebra/check_joint.py", + "research/joint-relations-independent-validation/capsule/agents/applicability/check_applicability.py", + "research/joint-relations-independent-validation/capsule/agents/falsifier/check_mutants.py", + "research/joint-relations-independent-validation/capsule/agents/outer/check_outer.py", + "research/joint-relations-independent-validation/capsule/agents/ownership/check.py", + "research/joint-relations-independent-validation/capsule/agents/prices/check_prices.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/CLAIM.json", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/FIRST-COLD-REPLAY.json", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/LOCAL-INPUTS.json", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/PAID-CATALOG.jsonl.gz", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/PROOF.md", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/README.md", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/SOURCES.json", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/SPECIALIZATION.md", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/TASK.json", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/VALIDATION.json", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/VERIFY.json", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/__init__.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/all_helpers.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/arithmetic.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/census_controls.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/claim.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/compiler.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/frame.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/helpers.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/independent_clifford.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/invoice.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/lift.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/lineage.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/moments.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/native.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/outer.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/paid.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/source.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/checks/specialization.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/regenerate_paid.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5241/research/final4610-independent-admission/verify.py", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/README.md", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/RESULT.json", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/SOURCES.json", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/TASK.json", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/VERIFY.json", + "research/joint-relations-independent-validation/capsule/agents/sources/pr5387/research/eight-owned-relations/WORD.json.gz", + "research/joint-relations-independent-validation/capsule/repository/certificates/selected-result.json", + "research/joint-relations-independent-validation/capsule/repository/docs/research/pr-intake-evidence/pr4610/PROOF-REVIEW.md", + "research/joint-relations-independent-validation/capsule/repository/research/free-word-tensor-lift-audit/PROOF.md", + "research/joint-relations-independent-validation/capsule/repository/research/joint-helper-lattice/CONTROLLER.json", + "research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/README.md", + "research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/RESULT.json", + "research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/SOURCES.json", + "research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/TASK.json", + "research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/VERIFY.json", + "research/joint-relations-independent-validation/capsule/repository/research/kappa-joint-relations-20261023/WORD.json.gz", + "research/joint-relations-independent-validation/capsule/repository/research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz", + "research/joint-relations-independent-validation/capsule/repository/research/kappa-round3-warp-20261022/PHASE-VALIDATION.json.gz", + "research/joint-relations-independent-validation/capsule/repository/research/pr4359-p7-padding/source/research/kappa-rebuild/architecture/FINITE-PRECOMPILATION.md", + "research/joint-relations-independent-validation/capsule/repository/research/pr4359-p7-padding/source/research/kappa-rebuild/transfer-audit/FINITE-TEMPLATE-CLOSURE.md", + "research/joint-relations-independent-validation/capsule/repository/research/query-thinned-controllers/RESULT.json", + "research/joint-relations-independent-validation/custody/CANDIDATE-COMMIT.raw", + "research/joint-relations-independent-validation/custody/CANDIDATE-FILES.json", + "research/joint-relations-independent-validation/custody/CANONICAL-COMMIT.raw", + "research/joint-relations-independent-validation/custody/PR5241-INVENTORY.json", + "research/joint-relations-independent-validation/custody/PR5241-PHASE-REUSE.json", + "research/joint-relations-independent-validation/custody/PR5387-COMMIT.raw", + "research/joint-relations-independent-validation/custody/PR5387-INVENTORY.json", + "research/joint-relations-independent-validation/custody/SOURCE-HISTORY.json", + "research/joint-relations-independent-validation/custody/git-objects/02fdbbad293e674b3e2300ee89b37ed4dc623f6f.tree", + "research/joint-relations-independent-validation/custody/git-objects/0994002341ec20dbea467f4c19fb8d4300cb88cc.tree", + "research/joint-relations-independent-validation/custody/git-objects/19b1abce68e32239bd8ad6abf979584eb93ad269.tree", + "research/joint-relations-independent-validation/custody/git-objects/1ec1119972c9aefe42525172d07b332fcff81cb4.commit", + "research/joint-relations-independent-validation/custody/git-objects/258aaa876ecb530c4c173c8e3ef93ccf87c81673.tree", + "research/joint-relations-independent-validation/custody/git-objects/2f0243de4ff0d29f087894edbf247327c5bae8e9.tree", + "research/joint-relations-independent-validation/custody/git-objects/2f781f177482200db6432209f21d8e7d662fbba3.tree", + "research/joint-relations-independent-validation/custody/git-objects/308866b397e4296d95f7a55ad38313ec11c69f3b.tree", + "research/joint-relations-independent-validation/custody/git-objects/368780035287bad0b8e9cd1a9f7da73223dfa456.tree", + "research/joint-relations-independent-validation/custody/git-objects/3e58974508669b0b52f53c56371b5f9c253ece4b.tree", + "research/joint-relations-independent-validation/custody/git-objects/46dca2d79105e0d899594be581275b404bc812cd.tree", + "research/joint-relations-independent-validation/custody/git-objects/4bd6efa51a495a7c7b7754915cf0244e7e60969e.commit", + "research/joint-relations-independent-validation/custody/git-objects/6d2b3a87d39cf33569d1b1f8a7d6177af59bd524.tree", + "research/joint-relations-independent-validation/custody/git-objects/74e7c585a7f3c853a2927a5028db379ac86b4a34.tree", + "research/joint-relations-independent-validation/custody/git-objects/7c8818178b05733b5d09a6decc34d53b84fdc213.tree", + "research/joint-relations-independent-validation/custody/git-objects/87cbbbc8ccf824c7a3ceadac4f7ca3b041fb8ab6.tree", + "research/joint-relations-independent-validation/custody/git-objects/8bed1ecc75af648c4b5fbf888b902e89ea94de00.tree", + "research/joint-relations-independent-validation/custody/git-objects/92bd281a274191242f183544f5ebab24b7f61127.tree", + "research/joint-relations-independent-validation/custody/git-objects/93c3da5da0a527baf42dbbe76e7af010384def87.tree", + "research/joint-relations-independent-validation/custody/git-objects/b1ab650d36f59e5be682a813145b7c67e219e341.commit", + "research/joint-relations-independent-validation/custody/git-objects/b3abe1a63f80b453a11823d70c836b9199e7c556.tree", + "research/joint-relations-independent-validation/custody/git-objects/bfb420045d2bc04dd026b5020aea84d547873ef4.tree", + "research/joint-relations-independent-validation/custody/git-objects/c211d4eb07730865bffd69a35a85a0642acc333d.tree", + "research/joint-relations-independent-validation/custody/git-objects/ca6f51bb3b6474cfa4111ebafa02b1913a807446.tree", + "research/joint-relations-independent-validation/custody/git-objects/d520959c0a8af33980dff881ed2cf6c4703bb338.tree", + "research/joint-relations-independent-validation/custody/git-objects/db06c76a46083783b675e5a5ce418c52a400d350.tree", + "research/joint-relations-independent-validation/custody/git-objects/df0da6ab4433542c03f089e50eeaabacb89fa6a4.tree", + "research/joint-relations-independent-validation/custody/git-objects/e9c70b9927d6e9233633e4e88108f831e7c5c5d9.tree", + "research/joint-relations-independent-validation/receipt_guard.py", + "research/joint-relations-independent-validation/reports/algebra/REPORT.md", + "research/joint-relations-independent-validation/reports/algebra/RUN-REQUEST.json", + "research/joint-relations-independent-validation/reports/applicability/FOUNDATION-SOURCES.json", + "research/joint-relations-independent-validation/reports/applicability/REPORT.md", + "research/joint-relations-independent-validation/reports/falsifier/CODE-AUDIT.md", + "research/joint-relations-independent-validation/reports/falsifier/EARLY-FINDINGS.md", + "research/joint-relations-independent-validation/reports/falsifier/RUN-REQUEST.json", + "research/joint-relations-independent-validation/reports/falsifier/SAME-FRAME-CONTROL.json", + "research/joint-relations-independent-validation/reports/outer/REPORT.md", + "research/joint-relations-independent-validation/reports/outer/SOURCES.json", + "research/joint-relations-independent-validation/reports/ownership/REPORT.md", + "research/joint-relations-independent-validation/reports/ownership/RUN-REQUEST.json", + "research/joint-relations-independent-validation/reports/prices/REPORT.md", + "research/joint-relations-independent-validation/source_guard.py" + ] +} diff --git a/research/joint-relations-independent-validation/capsule/agents/algebra/check_joint.py b/research/joint-relations-independent-validation/capsule/agents/algebra/check_joint.py new file mode 100644 index 0000000000..f546c04c16 --- /dev/null +++ b/research/joint-relations-independent-validation/capsule/agents/algebra/check_joint.py @@ -0,0 +1,310 @@ +#!/usr/bin/env python3 +"""Independent joint algebra audit. Standard library only; imports no author code. + +Chris R / OpenAI Codex independent checking of Ali Romman's construction, +using Cao Yifan's source word. Rational rows use normalized dyadic integer +numerators, not the author's per-coefficient Fraction implementation. +""" +import argparse +import gzip +import hashlib +import json +from fractions import Fraction +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] / 'repository' +SOURCE = 'research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz' +CANDIDATE = 'research/kappa-joint-relations-20261023/WORD.json.gz' + +def require(ok, message): + if not ok: + raise ValueError(message) + +def norm(d, exponent): + d = {k: v for k, v in d.items() if v} + if not d: + return ({}, 0) + shift = min((abs(v) & -abs(v)).bit_length() - 1 for v in d.values()) + shift = min(shift, exponent) + if shift: + d = {k: v >> shift for k, v in d.items()} + return d, exponent - shift + +def linear(a, b, numerator=1, denominator=1): + # Source rationals may carry the sign on either integer, including + # SCALE [2,-1]. Normalize the rational sign before dyadic validation. + if denominator < 0: + numerator, denominator = -numerator, -denominator + require(denominator > 0 and denominator & (denominator - 1) == 0, 'non-dyadic scalar') + exp_b = b[1] + denominator.bit_length() - 1 + exp = max(a[1], exp_b) + d = {k: v << (exp - a[1]) for k, v in a[0].items()} + for k, v in b[0].items(): + d[k] = d.get(k, 0) + numerator * (v << (exp - exp_b)) + return norm(d, exp) + +def scaled(a, numerator, denominator): + return linear(({}, 0), a, numerator, denominator) + +def initial(role): + return ({(role, ()): 1}, 0) + +def warped(a, symbol): + # Left action: cancel only an adjacent inverse. Distinct symbols never + # commute and the scalar coefficient is kept outside the word. + d = {} + for (role, word), v in a[0].items(): + key = (role, word[1:] if word and word[0] == -symbol else (symbol,) + word) + d[key] = d.get(key, 0) + v + return norm(d, a[1]) + +def rational_row(row): + return {k: Fraction(v, 1 << row[1]) for k, v in row[0].items()} + +def rref(relations, preferred_pivots=()): + """Conventional matrix elimination, with fixed increasing column order.""" + all_columns = {h for d in relations for h in d} + require(set(preferred_pivots) <= all_columns, 'prepared pivot absent from derived relation system') + columns = list(preferred_pivots) + sorted(all_columns - set(preferred_pivots)) + matrix = [[Fraction(d.get(h, 0)) for h in columns] for d in relations] + rank, pivots = 0, [] + for j, h in enumerate(columns): + k = next((k for k in range(rank, len(matrix)) if matrix[k][j]), None) + if k is None: + continue + matrix[rank], matrix[k] = matrix[k], matrix[rank] + q = matrix[rank][j] + matrix[rank] = [v / q for v in matrix[rank]] + for i in range(len(matrix)): + if i != rank and matrix[i][j]: + q = matrix[i][j] + matrix[i] = [a - q * b for a, b in zip(matrix[i], matrix[rank])] + pivots.append(h) + rank += 1 + if rank == len(matrix): + break + return {p: {h: q for h, q in zip(columns, matrix[i]) if q} for i, p in enumerate(pivots)} + +def decode_edits(source, candidate): + """Read the literal word delta without WITNESS.json or expected outputs.""" + old, new = source['programs']['backward'], candidate['programs']['backward'] + j = next(i for i, e in enumerate(new) if e == old[0]) + preparation = new[:j] + snapshots, centers, zeros = {}, {}, {} + for i, event in enumerate(old): + if new[j] == event: + j += 1 + elif event[0] == 'center': + a, b, c = new[j:j + 3] + frame = event[3] + require(a == ['scalar', ['clear', ['C', 0]], frame], 'center clear') + require(b[0] == 'scalar' and b[1][:2] == ['copy', ['C', 0]] and b[2] == frame, 'center COPY gauge') + slot = tuple(b[1][2]) + require(c == ['scalar', ['clear', list(slot)], frame], 'snapshot consumption') + centers[i] = {'slot': slot, 'frame': frame} + j += 3 + else: + require(event[0] == 'climb', 'unexpected source edit') + role, oldframe, newframe = ('L', event[2]), event[3], event[4] + require(new[j] == ['zero_retag', list(role), oldframe, newframe], 'zero edit exact frames') + zeros[i] = {'role': role, 'frame': oldframe, 'rank': event[5]} + j += 1 + if j + 1 < len(new) and new[j][0] == 'scalar' and new[j][1][0] == 'clear' and new[j][1][1][0] == 'C' and new[j][1][1][1] > 0: + a, b = new[j:j + 2] + slot, frame = tuple(a[1][1]), a[2] + require(b[0] == 'scalar' and b[1][:2] == ['copy', list(slot)] and b[2] == frame, 'snapshot COPY') + require(slot not in [x['slot'] for x in snapshots.values()], 'snapshot slot reused') + snapshots[i] = {'slot': slot, 'role': tuple(b[1][2]), 'frame': frame} + j += 2 + trailing = new[j:] + require(len(snapshots) == len(centers) == len(zeros) == 8, 'eight of each edit') + require(len({x['slot'] for x in centers.values()}) == 8, 'eight independent snapshot slots') + require(max(snapshots) < min(centers), 'all eight snapshots simultaneously live') + for i, x in centers.items(): + match = [k for k, s in snapshots.items() if s['slot'] == x['slot']] + require(len(match) == 1 and match[0] < i and snapshots[match[0]]['frame'] == x['frame'], 'chronological same-frame snapshot') + x['snapshot'] = match[0] + require(candidate['programs']['forward'] == source['programs']['forward'], 'unchanged entire forward word') + canonical = dict(source['canonical']); canonical.pop('local_profile') + require(candidate['canonical'] == canonical, 'unchanged actual native operators and frames') + return preparation, snapshots, centers, zeros, trailing + +def replay(canonical, program, owned, source_sites=None): + roles = {('L', i) for i in range(632)} | set(owned) + rows = {r: initial(r) for r in roles} + frames = {('L', i): f for i, f in enumerate(canonical['start'])} + frames.update({r: None for r in owned if r[0] == 'C'}) + observed, spaces = {}, {} + paid = {} + max_terms = 1 + def space(frame): + if frame not in spaces: + s = {0} + for v in canonical['frames'][frame]: + s |= {u ^ v for u in tuple(s)} + require(len(s) == 1 << len(canonical['frames'][frame]), 'independent binary frame') + spaces[frame] = s + return spaces[frame] + for i, event in enumerate(program): + tag = event[0] + touched = None + if tag == 'scalar': + op, f = event[1:] + action, dst = op[0], tuple(op[1]); touched = dst + require(dst in roles and 0 <= f < len(canonical['frames']), 'scalar declaration') + if action == 'clear': + require(dst in owned, 'borrowed erasure') + rows[dst] = ({}, 0); frames[dst] = f + else: + require(frames[dst] == f, 'destination gauge') + if action in ('add', 'copy'): + src = tuple(op[2]) + require(src in roles and dst != src and frames[src] == f, 'source gauge') + if action == 'copy': + require(dst in owned and not rows[dst][0], 'COPY requires clean owned destination') + rows[dst] = (dict(rows[src][0]), rows[src][1]) + else: + rows[dst] = linear(rows[dst], rows[src], op[3], op[4]) + else: + require(action == 'scale', 'unknown scalar') + rows[dst] = scaled(rows[dst], op[2], op[3]) + elif tag == 'warp': + _, role, symbol, old, new = event + dst = tuple(role); touched = dst + require(frames[dst] == old and 1 <= abs(symbol) <= len(canonical['warps']), 'warp source gauge') + rows[dst] = warped(rows[dst], symbol); frames[dst] = new + elif tag in ('center', 'climb'): + if tag == 'center': + _, idx, old, new, rank = event; dst = ('C', idx) + require(space(old) < space(new) or space(new) < space(old), 'center nested spaces') + else: + _, _, idx, old, new, rank = event; dst = ('L', idx) + require(space(old) < space(new), 'climb nested spaces') + require(frames[dst] == old and rank == abs(len(canonical['frames'][old]) - len(canonical['frames'][new])), 'paid exact frame and rank') + frames[dst] = new; paid[rank] = paid.get(rank, 0) + 1 + elif tag == 'zero_retag': + _, role, old, new = event; dst = tuple(role) + require(frames[dst] == old and not rows[dst][0], 'physical identity requires complete zero row') + frames[dst] = new + else: + require(tag in ('phase', 'adapter'), 'unrecognized native event') + if touched is not None: + max_terms = max(max_terms, len(rows[touched][0])) + if source_sites and i in source_sites: + observed[i] = {r: (dict(rows[r][0]), rows[r][1]) for r in source_sites[i]} + for i in range(632): + r = ('L', i) + require(frames[r] == canonical['final'][i], 'retained final frame') + if r not in owned: + want = initial(r) + if i < 112: + want = linear(want, initial(('L', i + 112)), -1) + require(rows[r] == want, 'retained exact endpoint L' + str(i)) + require(all(not rows[r][0] for r in owned), 'arbitrary owned entry must erase and return zero') + return observed, {'events': len(program), 'paid': paid, 'max_live_row_terms': max_terms, + 'independent_retained_inputs': 632 - sum(r[0] == 'L' for r in owned), + 'arbitrary_owned_entry_inputs': len(owned)} + +def serialize(d): + return {str(k): str(v) for k, v in sorted(d.items())} + +def verify_preparation(prep, basis): + pivots = set(basis) + expected = [] + for pivot, row in sorted(basis.items()): + expected.append(['scalar', ['clear', ['L', pivot]], 0]) + for h, q in sorted(row.items()): + if h != pivot: + require(h not in pivots and q.denominator & (q.denominator - 1) == 0, 'independent dyadic preparation') + expected.append(['scalar', ['add', ['L', pivot], ['L', h], -q.numerator, q.denominator], 0]) + require(prep == expected, 'actual simultaneous pivot preparation differs from independently derived RREF') + +def main(): + ap = argparse.ArgumentParser(); ap.add_argument('--out', type=Path, default=HERE / 'RESULT.json') + ap.add_argument('--candidate', type=Path, default=ROOT / CANDIDATE) + ap.add_argument('--candidate-pr', type=int, default=5383) + ap.add_argument('--candidate-head', default='4bd6efa51a495a7c7b7754915cf0244e7e60969e') + args = ap.parse_args() + source_raw = (ROOT / SOURCE).read_bytes() + candidate_raw = args.candidate.read_bytes() + source_payload, candidate_payload = map(gzip.decompress, (source_raw, candidate_raw)) + source, candidate = map(json.loads, (source_payload, candidate_payload)) + prep, snapshots, centers, zeros, trailing = decode_edits(source, candidate) + sites = {} + for i, s in snapshots.items(): sites.setdefault(i, set()).add(s['role']) + for i in centers: sites.setdefault(i, set()).add(('C', 0)) + for i, z in zeros.items(): sites.setdefault(i, set()).add(z['role']) + observed, before = replay(source['canonical'], source['programs']['backward'], {('C', 0)}, sites) + relations, identities, by_frame = [], [], {} + for i, x in sorted(centers.items()): + s = snapshots[x['snapshot']] + diff = linear(observed[i][('C', 0)], observed[x['snapshot']][s['role']], -1) + qrow = rational_row(diff) + require(qrow and all(r[0] == 'L' and 224 <= r[1] < 632 and not word for (r, word) in qrow), 'derived relation must contain only scalar helper inputs') + relation = {r[1]: q for (r, _), q in qrow.items()} + require(all(source['canonical']['start'][h] == 0 and source['canonical']['final'][h] == 1 for h in relation), 'cold full-ended relation domain') + relations.append(relation); by_frame[x['frame']] = diff + identities.append({'center_event': i, 'snapshot_event': x['snapshot'], 'snapshot_role': s['role'], 'frame': x['frame'], 'center_minus_snapshot': serialize(relation)}) + require(len(by_frame) == 8, 'distinct center frames') + for i, z in sorted(zeros.items()): + require(z['frame'] in by_frame and z['rank'] == 1, 'zero site belongs to named rank-one center frame') + require(observed[i][z['role']] == scaled(by_frame[z['frame']], -1, 1), 'unrestricted later row equals negative center-minus-snapshot') + identities.append({'zero_event': i, 'role': z['role'], 'frame': z['frame'], 'unrestricted_row_is_negative_center_delta': True}) + canonical_basis = rref(relations) + require(len(canonical_basis) == 8, 'joint relation rank eight') + prepared_pivots = [e[1][1][1] for e in prep if e[0] == 'scalar' and e[1][0] == 'clear' and e[1][1][0] == 'L'] + require(len(prepared_pivots) == len(set(prepared_pivots)) == 8, 'eight distinct actual prepared pivots') + basis = rref(relations, sorted(prepared_pivots)) + require(set(basis) == set(prepared_pivots), 'actual chosen pivots not independent in joint relation system') + verify_preparation(prep, basis) + require(trailing == [['scalar', ['clear', ['L', h]], 1] for h in sorted(basis)], 'all pivot outputs returned zero') + owned = {('L', h) for h in basis} | {('C', i) for i in range(9)} + require({tuple(r) for r in candidate['owned']['backward']} == owned, 'actual owned declarations') + _, after = replay(candidate['canonical'], candidate['programs']['backward'], owned) + # Controls are exact local propositions applied to independently derived + # rows, rather than rerunning or relying on author's rejection controls. + controls = {} + def rejects(name, fn): + try: fn() + except ValueError as e: controls[name] = str(e) + else: raise ValueError('accepted negative control ' + name) + mutant = json.loads(json.dumps(prep)); mutant[1][1][3] += 1 + rejects('wrong_preparation_coefficient', lambda: verify_preparation(mutant, basis)) + mutant2 = json.loads(json.dumps(prep)); mutant2[1][1][3] *= -1 + rejects('wrong_preparation_sign', lambda: verify_preparation(mutant2, basis)) + mutant3 = json.loads(json.dumps(prep)); mutant3[0][1][1][1] = 226 + rejects('wrong_pivot', lambda: verify_preparation(mutant3, basis)) + # Swapping distinct saved values must change the unrestricted center delta. + cs = list(sorted(centers)); x, y = centers[cs[0]], centers[cs[1]] + sx, sy = snapshots[x['snapshot']], snapshots[y['snapshot']] + wrong_delta = linear(observed[cs[0]][('C', 0)], observed[y['snapshot']][sy['role']], -1) + rejects('wrong_snapshot', lambda: require(wrong_delta == by_frame[x['frame']], 'snapshot changes unrestricted identity')) + wrong_gauge = json.loads(json.dumps(candidate)); ci = next(i for i,e in enumerate(wrong_gauge['programs']['backward']) if e[0]=='scalar' and e[1][:2]==['copy',['C',0]]) + wrong_gauge['programs']['backward'][ci][2] = 0 + rejects('wrong_copy_gauge', lambda: decode_edits(source, wrong_gauge)) + zi = min(zeros); z = zeros[zi] + wrong_zero = linear(observed[zi][z['role']], initial(('L', 224))) + rejects('wrong_zero_row', lambda: require(wrong_zero == scaled(by_frame[z['frame']], -1, 1), 'nonzero retained column at zero site')) + fake_rank = dict(basis); fake_rank.pop(min(fake_rank)) + rejects('drop_independent_relation', lambda: require(len(fake_rank)==8, 'rank seven cannot fund eight pivots')) + result = {'status': 'PASS_INDEPENDENT_JOINT_ALGEBRA', 'author_credit': 'Ali Romman; source word Cao Yifan', + 'candidate_pr': args.candidate_pr, 'candidate_head': args.candidate_head, + 'source_file': str(ROOT / SOURCE), 'candidate_file': str(args.candidate.resolve()), + 'source_raw_sha256': hashlib.sha256(source_raw).hexdigest(), + 'source_payload_sha256': hashlib.sha256(source_payload).hexdigest(), + 'candidate_raw_sha256': hashlib.sha256(candidate_raw).hexdigest(), + 'candidate_payload_sha256': hashlib.sha256(candidate_payload).hexdigest(), + 'checker_sha256': hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), + 'relation_rank': 8, 'independently_derived_pivots': list(sorted(basis)), + 'independently_derived_rref': {str(p): serialize(d) for p,d in sorted(basis.items())}, + 'unconstrained_canonical_rref': {str(p): serialize(d) for p,d in sorted(canonical_basis.items())}, + 'source_identities': identities, 'source_replay': before, 'candidate_replay': after, + 'simultaneous_snapshot_count': 8, 'all_16_unrestricted_identities_checked': True, + 'forward_entire_word_unchanged': True, 'canonical_operators_frames_unchanged': True, + 'negative_controls': controls, + 'limitations': ['No new absolute-phase lowering or physical all-size proof.', 'Forward replay unchanged and reused; this checker independently replays backward words only.', 'Cost, compiler, outer inequalities are separate review responsibilities.']} + args.out.write_text(json.dumps(result, indent=2, sort_keys=True)+'\n') + print(json.dumps({'status': result['status'], 'pivots': sorted(basis), 'controls': list(controls)})) + +if __name__ == '__main__': main() diff --git a/research/joint-relations-independent-validation/capsule/agents/applicability/check_applicability.py b/research/joint-relations-independent-validation/capsule/agents/applicability/check_applicability.py new file mode 100644 index 0000000000..3186aca892 --- /dev/null +++ b/research/joint-relations-independent-validation/capsule/agents/applicability/check_applicability.py @@ -0,0 +1,157 @@ +#!/usr/bin/env python3 +"""Independent small grammar/count/guard check. No candidate evaluator imports. + +This checks finite applicability conditions, not unrestricted source identities, +Clifford factors, directed moments, or complete conditional admission. +Substantial OpenAI assistance. Apache-2.0. +""" +from collections import Counter +from fractions import Fraction as Q +from hashlib import sha256 +from pathlib import Path +import gzip +import json +import resource +import sys +import time + +HERE = Path(__file__).resolve().parent +BASE = HERE.parents[1] +REPO = BASE / 'repository' + +def require(ok, message): + if not ok: + raise ValueError(message) + +def read(path): + raw = path.read_bytes() + return json.loads(gzip.decompress(raw) if path.suffix == '.gz' else raw) + +def allowance(g): + if g[0] in ('clear', 'copy'): + return 2 + q = Q(*g[3:]) if g[0] == 'add' else Q(*g[2:]) + a, b = abs(q.numerator), q.denominator + require(a and not b & (b-1), 'Dyadic finite scalar grammar') + if g[0] == 'scale': + require(not a & (a-1), 'Dyadic unit SCALE') + return 2*(abs(a.bit_length()-b.bit_length()) + int(q < 0)) + require(g[0] == 'add', 'Scalar opcode') + return 2*(2+a.bit_length()+a.bit_count()+b.bit_length()-1) + +def inspect(word, old, label): + pivots = {225,227,229,230,241,245,257,288 if label == '5383' else 261} + require(word['programs']['forward'] == old['programs']['forward'], 'Unchanged forward word') + require(word['canonical'] == {k:v for k,v in old['canonical'].items() if k != 'local_profile'}, 'Unchanged canonical geometry') + expected = {('C', j) for j in range(9)} | {('L', j) for j in pivots} + require({tuple(r) for r in word['owned']['backward']} == expected, 'Seventeen distinct backward owners') + stats = {} + for direction in ('forward','backward'): + program = word['programs'][direction] + require([e for e in program if e[0] in ('warp','adapter','phase')] == + [e for e in old['programs'][direction] if e[0] in ('warp','adapter','phase')], + 'Exact retained phase/warp/adapter itinerary') + owned = {tuple(r) for r in word['owned'][direction]} + frames = {('L', i):f for i,f in enumerate(word['canonical']['start'])} + cleared = set(); live = set(); peak = 0; scalar = 0; paid = Counter(); zeros = [] + first_native = next(i for i,e in enumerate(program) if e[0] != 'scalar') + prepared = set() + for i,e in enumerate(program): + kind = e[0] + if kind == 'scalar': + g, f = e[1:]; dst = tuple(g[1]); op = g[0] + scalar += allowance(g) + if op == 'clear': + require(dst in owned, 'Borrowed erase prohibited') + cleared.add(dst); frames[dst] = f + if dst[0] == 'C' and dst[1]: live.discard(dst) + else: + require(frames.get(dst) == f, 'Scalar destination exact frame') + if op in ('add','copy'): + src = tuple(g[2]); require(src != dst and frames.get(src) == f, 'Distinct same-frame scalar source') + if op == 'copy' and dst[0] == 'C' and dst[1]: + require(dst in cleared and src[0] == 'L', 'Initialized owned snapshot') + live.add(dst); peak=max(peak,len(live)) + if i < first_native: + require(direction == 'backward' and dst == ('L',dst[1]) and dst[1] in pivots and dst in cleared, 'Owned cold pivot preparation') + require(op == 'add' and src[0] == 'L' and src[1] not in pivots and f == 0, 'No pivot dependency or extra preparation oracle') + prepared.add(dst[1]) + elif kind == 'climb': + r=('L',e[2]); require(frames[r] == e[3], 'Paid current frame');frames[r]=e[4];paid[e[5]]+=1 + elif kind == 'center': + r=('C',e[1]); frames[r]=e[3];paid[e[4]]+=1 + elif kind == 'zero_retag': + r=tuple(e[1]);require(frames[r] == e[2] and e[3] == 1, 'Zero site exact source/target frames');frames[r]=e[3];zeros.append(r) + elif kind == 'warp': + r=tuple(e[1]); require(frames[r] == e[3], 'Warp current exact frame');frames[r]=e[4] + else: + require(kind in ('phase','adapter'), 'Known unchanged event species') + require(not live, 'All snapshots erased at return') + if direction == 'backward': + require(prepared == pivots and peak == 8 and len(zeros) == 8, 'Joint preparation, eight simultaneous snapshots, eight zero sites') + require(paid == {1:2193,2:412,3:510,4:127,5:40}, 'Complete backward paid census') + stats[direction] = dict(scalar_allowance=scalar, owned=len(owned), simultaneous_snapshots=peak, paid=dict(paid), zero_sites=len(zeros)) + require(stats['backward']['scalar_allowance'] == {'5383':158744,'5387':158776}[label], 'Candidate-specific fresh scalar allowance') + return stats + +def main(): + start=time.monotonic() + resource.setrlimit(resource.RLIMIT_CPU,(15,15)) + resource.setrlimit(resource.RLIMIT_AS,(128*1024**2,128*1024**2)) + old=read(REPO/'research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz') + packages={'5383':REPO/'research/kappa-joint-relations-20261023', + '5387':BASE/'agents/sources/pr5387/research/eight-owned-relations'} + out={'status':'PASS_SCOPED_APPLICABILITY_COUNTS_AND_GUARDS','candidates':{},'full_uniform_word_materialized':False} + for label,path in packages.items(): + word=read(path/'WORD.json.gz'); result=read(path/'RESULT.json') + stats=inspect(word,old,label); price=result['bound'] if 'bound' in result else result.get('price',result) + # Receipt keys are discovered explicitly, never evaluated as code. + if 'compiler' not in price: + price=next(v for v in result.values() if isinstance(v,dict) and 'compiler' in v) + c=price['compiler'];s=price['strictification'];gap=Q(c['gap']);h=c['H'];j=c['integer_test_exponent'] + require(gap.numerator == 1 and h == j*gap.denominator, 'Exact integer compiler grid') + require((h+1)**1000 < 2**j and (gap.denominator*(j-1)+1)**1000 >= 2**(j-1), 'Candidate threshold and preceding sufficient grid') + rho=Q(s['reserve']); normalized=1/(1+1024*rho)+Q(4,2**32) + require(normalized < 1 and Q(s['normalized_paid_upper']) == normalized, 'Funded paid-completion rounding budget') + require(20**64 < 21**63 and Q(97,100)**128 < Q(1,16), 'Splitting separation and two charged tail-block guard') + require(h > 8192 and 1000*gap > Q(1,h+1), 'Threshold covers product rank and eventual logarithmic derivative') + out['candidates'][label]=dict(word_sha256=sha256((path/'WORD.json.gz').read_bytes()).hexdigest(), + result_sha256=sha256((path/'RESULT.json').read_bytes()).hexdigest(),local=stats, + raw_controller_owned_LOCAL_banks=16*17+2,compiler_H=h,compiler_j=j,gap=str(gap), + reserve=str(rho),paid_completion_slack=str(1-normalized), + expanded_count_majorant='D=2^262144; F(0)=D; F(n)=((n+1)*(D+1)*(F(n-1)+1))^(16*(n+1)^2); M=F(2^H)', + expanded_bounds={name:'M' for name in ['W','P','O','R','G']}, + semantic={'Z':'2*M','E':'64*(2*M+2^H+2*M+1)^3','B':'M+E','C0':'32*2^H*B^2'}, + endpoint_scope='Fixed finite template and eventual thresholds under the five selected assumptions; semantic source identities and interval moment premises are separate review obligations') + # Symbolic induction exponents behind F(n), with concrete arbitrary n controls. + require(all(9*n+20 <=16*(n+1)**2 for n in range(1,1000)), 'Router/denominator-clearing majorant exponent') + require(2*(82*1024+10+2*8192)+6+3*8193 < 262144, 'Strictified-unit D exponent including squared complete role inventory') + controls={} + del word + original=read(packages['5383']/'WORD.json.gz') + def bad_warp(w): + i=next(i for i,e in enumerate(w['programs']['backward']) if e[0]=='warp') + w['programs']['backward'][i]=list(w['programs']['backward'][i]) + w['programs']['backward'][i][2]=0 + for name,edit in [ + ('borrowed_erase',lambda w:w['programs']['backward'].insert(0,['scalar',['clear',['L',324]],0])), + ('snapshot_owner_alias',lambda w:w['owned']['backward'].pop(8)), + ('phase_itinerary',bad_warp), + ]: + bad=dict(original);bad['programs']=dict(original['programs']) + bad['programs']['backward']=list(original['programs']['backward']) + bad['owned']=dict(original['owned']);bad['owned']['backward']=list(original['owned']['backward']) + edit(bad) + try: inspect(bad,old,'5383') + except ValueError as error: controls[name+'_rejected']=str(error) + else: raise ValueError('Accepted mutation '+name) + controls.update({'old_1e9_as_expanded_cap_rejected':2**262144>10**9, + 'one_bank_per_depth_rejected':out['candidates']['5383']['local']['backward']['simultaneous_snapshots']>1, + '5387_reserve_1e_minus13_rounding_rejected':1/(1+Q(1024,10**13))+Q(4,2**32)>=1}) + require(all(controls.values()),'Meaningful stock/reserve controls') + out.update(controls=controls,seconds=time.monotonic()-start, + limitations=['No candidate evaluator imported','No free-word identity or Clifford phase replay','Moment alpha/gamma/delta interval hypotheses supplied by independent pricing review','Expanded count bound is a terminating integer recursion; its astronomical value was not numerically expanded','No independent human or formal proof; no unconditional physical theorem']) + print(json.dumps(out,indent=2)) + +if __name__=='__main__': + main() diff --git a/research/joint-relations-independent-validation/capsule/agents/falsifier/check_mutants.py b/research/joint-relations-independent-validation/capsule/agents/falsifier/check_mutants.py new file mode 100644 index 0000000000..a85fb7db3e --- /dev/null +++ b/research/joint-relations-independent-validation/capsule/agents/falsifier/check_mutants.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +"""Semantic mutations of actual PR5383 WORD; no old digest comparison in math path. + +Chris R with OpenAI Codex. Inputs read only; imports only independent worker's +algebra module. Coordinator must serialize the full replay modes. +""" +import argparse, copy, gzip, hashlib, importlib.util, json, sys, time +from pathlib import Path +sys.dont_write_bytecode = True +HERE = Path(__file__).resolve().parent +EXEC = HERE.parents[1] +CHECKER = EXEC / 'agents/algebra/check_joint.py' +REPO = EXEC / 'repository' +PACKAGE = REPO / 'research/kappa-joint-relations-20261023' + +def read(path): + raw = path.read_bytes() + return json.loads(gzip.decompress(raw) if path.suffix == '.gz' else raw) + +def digest(value): + return hashlib.sha256((json.dumps(value,sort_keys=True,separators=(',',':'))+'\n').encode()).hexdigest() + +def load_checker(): + spec=importlib.util.spec_from_file_location('independent_joint_algebra_for_mutation',CHECKER) + module=importlib.util.module_from_spec(spec); spec.loader.exec_module(module) + return module + +def mutations(candidate): + program=candidate['programs']['backward'] + def fork(): + m=dict(candidate); m['programs']=dict(candidate['programs']) + m['programs']['backward']=list(program); m['owned']=copy.deepcopy(candidate['owned']) + return m + m=fork(); del m['programs']['backward'][0] + yield 'arbitrary_owned_input_clear_removed',m,'replay',None + m=fork(); m['programs']['backward'][1]=copy.deepcopy(program[1]); m['programs']['backward'][1][1][3]*=-1 + yield 'preparation_sign_reversed',m,'replay',None + m=fork(); idx=next(i for i,e in enumerate(program) if e[0]=='scalar' and e[1][:2]==['copy',['C',1]]) + m['programs']['backward'][idx]=copy.deepcopy(program[idx]); m['programs']['backward'][idx][1][2]=['L',63] + yield 'wrong_same_frame_snapshot_source',m,'replay',None + m=fork(); m['programs']['backward'].pop() + yield 'arbitrary_owned_output_not_returned_zero',m,'replay',None + # Preserve every source marker and per-kind subsequence but exchange two + # adjacent differently tagged events. Source chronology must reject. + m=fork(); p=m['programs']['backward'] + idx=next(i for i,e in enumerate(p[:-1]) if e[0] in ('phase','adapter') and p[i+1][0]!=e[0]) + p[idx],p[idx+1]=p[idx+1],p[idx] + yield 'phase_marker_displaced_across_adjacent_event',m,'decode_edits',{'swapped_indices':[idx,idx+1]} + m=fork(); m['owned']['backward'].remove(['L',225]) + yield 'pivot_laundered_as_borrowed_productive_input',m,'replay',None + +def main(): + ap=argparse.ArgumentParser(); ap.add_argument('--mode',choices=['manifest','full'],default='manifest'); ap.add_argument('--out',type=Path,default=HERE/'CONTROLS.json'); ap.add_argument('--only',action='append') + args=ap.parse_args(); candidate=read(PACKAGE/'WORD.json.gz'); source=read(REPO/'research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz'); checker=load_checker() + original_hash=digest(candidate); results={}; start=time.monotonic() + for name,mutant,engine,extra in mutations(candidate): + if args.only and name not in args.only: continue + row={'mutant_payload_sha256_recomputed':digest(mutant),'original_payload_sha256':original_hash,'hash_changed':digest(mutant)!=original_hash,'engine':engine,'old_digest_comparison_used_for_rejection':False,'detail':extra} + if args.mode=='manifest': row['status']='NOT_RUN_MANIFEST_ONLY' + else: + began=time.monotonic() + try: + if engine=='decode_edits': checker.decode_edits(source,mutant) + else: checker.replay(mutant['canonical'],mutant['programs']['backward'],{tuple(r) for r in mutant['owned']['backward']}) + except (ValueError,IndexError,KeyError) as exc: + row.update(status='REJECTED',reason=str(exc),exception_type=type(exc).__name__) + else: row.update(status='ACCEPTED_UNEXPECTEDLY') + row['seconds']=time.monotonic()-began + results[name]=row + output={'status':'MANIFEST_ONLY' if args.mode=='manifest' else ('PASS_SEMANTIC_MUTANTS_REJECTED' if all(r['status']=='REJECTED' for r in results.values()) else 'FAIL_SEMANTIC_MUTANT_ACCEPTED'),'candidate_head':'4bd6efa51a495a7c7b7754915cf0244e7e60969e','mutations_of_actual_literal_word':True,'checker_sha256':hashlib.sha256(CHECKER.read_bytes()).hexdigest(),'harness_sha256':hashlib.sha256(Path(__file__).read_bytes()).hexdigest(),'elapsed_seconds':time.monotonic()-start,'controls':results} + args.out.write_text(json.dumps(output,indent=2,sort_keys=True)+'\n'); print(json.dumps({'status':output['status'],'controls':{k:v['status'] for k,v in results.items()}})) + if output['status']=='FAIL_SEMANTIC_MUTANT_ACCEPTED': raise SystemExit(1) +if __name__=='__main__': main() diff --git a/research/joint-relations-independent-validation/capsule/agents/outer/check_outer.py b/research/joint-relations-independent-validation/capsule/agents/outer/check_outer.py new file mode 100644 index 0000000000..44ce83d7a6 --- /dev/null +++ b/research/joint-relations-independent-validation/capsule/agents/outer/check_outer.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python3 +"""Independent rational review of mixed-target outer allocations and compiler grid. +No candidate Python code is imported or executed. Standard library only. +Predecessors for exponent contracts: Jacob Alan Sussman, zxv, Cao Yifan, +Cinna Davis, and Chris R / Clear1nsight's independently transcribed PR5241 +ledger preserved by PR5384. Substantial OpenAI Codex assistance. +""" +from fractions import Fraction as Q +from pathlib import Path +import argparse, hashlib, json, platform, resource, time + +def need(ok, msg): + if not ok: raise AssertionError(msg) +def encode(x): + if isinstance(x,Q): return str(x) + if isinstance(x,dict): return {str(k):encode(v) for k,v in x.items()} + if isinstance(x,(list,tuple)): return [encode(v) for v in x] + return x + +def family(k,s,bit=Q('.0034')): + g=(s-k)/7 + return dict(kappa=k,tested_saving=s,complex_uniform_saving=k+6*g, + b=k+5*g,a=k+4*g,q=k+3*g,bit_saving=bit,epsilon=1-g, + beta=1-3*g,r0=g/10,stop=g,layout=g,d=g) + +def outer(p,atom=Q('.004')): + # Exponents are calculated from the stopping, grouping and routing rules. + k,b,a,q,ep,be,r,stop,layout=(p[n] for n in + ('kappa','b','a','q','epsilon','beta','r0','stop','layout')) + sigma,tau=1-b,1-a + internal=tau+(1-stop)*max(sigma-tau,Q(0)) + leaf=sigma+stop*(1-sigma) + lam=1-(q+a)/2 + xi=ep*(1+q)-Q(3,32)+layout + key=be+1-ep + m=dict(main_transform=ep*q,global_coordinate_router=a, + fused_gaussian=1-ep+q*be,group_bit_router=1-ep+a*be, + group_scans=1-ep+be,boundary_algebraic_matrix=Q(3,32)+xi-ep, + sparse_union_movement=xi+Q(1,2)-ep,polynomial_products=ep, + microbox_face_corrections=79-ep-be) + c=dict(actual_bit_above_effective=p['bit_saving']-a, + complex_above_effective=b-a,q_positive=q,complex_endpoint=b-q, + q_below_effective=a-q,stop_positive=stop,stop_below_one=1-stop, + leaf_saving_above_effective=(1-stop)*b-a, + q_below_internal=1-internal-q,q_below_leaf=1-leaf-q, + lambda_above_tau=lam-tau,lambda_above_sigma=lam-sigma, + lambda_above_internal=lam-internal,lambda_prime_above_lambda=1-q-lam, + lambda_prime_above_leaf=1-q-leaf,epsilon_positive=ep, + epsilon_below_one=1-ep,cap_above_band=xi-Q(1,2),cap_below_cell=ep-xi, + group_positive=be,group_below_dimension=ep-be,support_router_span=1-be, + group_gauge_power_slack=3-2*xi-r-be, + actual_logarithmic_group_guard=3-2*xi-be, + global_gamma_power_slack=1-ep-r,actual_logarithmic_gamma_guard=1-ep, + alpha_logarithm_absorption=r,group_key_fits_record=1-key, + membership_arithmetic_fits_record=1-be-2*(1-ep), + microbox_halo_volume=80-be,positive_layout_slack=layout, + short_record_fallback=ep-a,complex_below_one_over_32=Q(1,32)-b, + strassen_integer_power_gap=Q(2**45-7**16), + theta_positive_polynomial_power=Q(2),cap_below_phase_cell_power=2-xi, + halo_covers_generic_inverse_radius=Q(5),union_tag_work_per_visit_fits_record=1-be, + union_header_fits_record=1-be,source_axis_superpolynomial=1-ep, + gaussian_above_main=m['fused_gaussian']-m['main_transform'], + new_complex_uniform_saving_above_b=p['complex_uniform_saving']-b, + improvement_over_user_baseline=k-Q('.001730970419199163702738'), + new_semantic_guard_with_C1_one=1-ep,fine_prime_halo_umbrella=Q(7,2)) + c.update({n+'_above_kappa':v-k for n,v in m.items()}) + f=dict(new_semantic_group_guard=1-be, + new_BIT_row_stock_sublinear_in_active_group=be*Q(997,1000), + fixed_halo_explicit_metadata_branch=79-ep-be, + actual_new_BIT_stock_sublinear=be*(1-atom)) + return dict(parameters=dict(p,cap_xi=xi,lambda_=lam,lambda_prime=1-q), + margins=m,strict_checks=c,functional_checks=f) + +def compiler(k,s,reserve,record=None): + gap=(s-k)/7 + need(gap>0 and gap.numerator==1,'positive unit-fraction compiler grid') + step=gap.denominator + power,v=1000,1024 + def wins(j):return (step*j+1)**power<2**j + left,right=1,2 + while not wins(right): left,right=right,2*right + while right-left>1: + mid=(left+right)//2 + if wins(mid):right=mid + else:left=mid + H=step*right + normalized=1/(1+v*reserve)+Q(4,2**32) + checks=dict(height_above_8v=H>8*v,integer_success=wins(right), + preceding_integer_grid_fails=not wins(right-1), + rounding_and_completion_funded=normalized<1, + strict_uniform_below_tested=k+6*gap0. A success and previous failure + # prove the least winning positive integer grid index, not least arbitrary H. + return dict(gap=gap,step=step,j=right,H=H,N_encoding='2^'+str(H), + checks=checks,normalized_paid_upper=normalized,rounding_reserve=1-normalized, + reserve_must_exceed=Q(4,2**32)/(v*(1-Q(4,2**32))), + word_materialized=False,threshold_scope='Least winning integer j on H=step*j for this sufficient inequality; no globally optimal compiler claim.') + +def run(name,path,bit_source): + raw=path.read_bytes(); rec=json.loads(raw); ar=rec.get('arithmetic',rec) + k,s=Q(ar['kappa']),Q(ar['strictification']['tested']) + reserve=Q(ar['strictification']['reserve']) + p=family(k,s); out=outer(p) + need(len(out['strict_checks'])==54 and len(out['functional_checks'])==4,'54+4 inventory') + need(all(v>0 for g in ('strict_checks','functional_checks') for v in out[g].values()),'strict outer funding') + for g in ('margins','strict_checks','functional_checks'): + need(out[g]=={n:Q(v) for n,v in ar['outer'][g].items()},'record equality '+g) + need(all(Q(ar['outer']['parameters'][n])==v for n,v in p.items()),'recorded parameter family') + comp=compiler(k,s,reserve,ar['compiler']) + controls={} + for label,patch in [('insufficient_BIT',{'bit_saving':Q('.0027')}), + ('closed_BIT',{'bit_saving':p['a']}),('closed_uniform',{'complex_uniform_saving':p['b']}), + ('unfunded_endpoint',{'kappa':s}),('closed_epsilon',{'epsilon':Q(1)}), + ('missing_layout',{'layout':Q(0)})]: + bad=outer(dict(p,**patch)) + failures={n:v for n,v in bad['strict_checks'].items() if v<=0} + need(failures,'reject '+label);controls[label]=failures + try:compiler(k,s,Q(1,10**13)) + except AssertionError:controls['unfunded_rounding']='rejected by normalized paid bound' + else:raise AssertionError('unfunded rounding accepted') + controls['lower_compiler_integer_grid']='rejected by independently evaluated strict integer inequality at j-1' + try:compiler(s,s,reserve) + except AssertionError:controls['closed_compiler_gap']='rejected by positive gap requirement' + else:raise AssertionError('closed compiler gap accepted') + bit=ar['ordinary_BIT']; need(bit==bit_source,'retained source BIT record unchanged'); atom=Q(bit['atom']) + ordinary=(1-atom)*Q(bit['after_cover'])+atom*Q('.0000384599') + need(ordinary==Q(bit['ordinary_saving']),'ordinary BIT interpolation') + need(atom==Q('.004') and atom>ordinary>Q(bit['admitted'])>s and atom<1-ordinary,'BIT chain and active stock') + need(Q(bit['admitted'])==p['bit_saving'],'same retained BIT admission') + margins=out['margins']; limiter=min(margins,key=margins.get) + return dict(status='PASS_INDEPENDENT_OUTER_AND_FINITE_COMPILER_ARITHMETIC',candidate=name, + source_path=str(path.resolve()),source_sha256=hashlib.sha256(raw).hexdigest(), + kappa=k,tested=s,reserve=reserve,outer=out,compiler=comp,controls=controls, + limiting_outer_row=limiter,limiting_outer_headroom=margins[limiter]-k, + minimum_strict_slack=min(out['strict_checks'].values()), + BIT=dict(atom=atom,ordinary=ordinary,admitted=Q(bit['admitted']), + effective_required=p['a'],headroom=Q(bit['admitted'])-p['a'], + positive_sublinear_active_stock=0p['complex_uniform_saving'], + uniform_above_b=p['complex_uniform_saving']>p['b'],b_above_a=p['b']>p['a'], + a_above_q=p['a']>p['q'],q_above_kappa=p['q']>k), + unexecuted=['Independent invoice and alpha/gamma/delta/eta intervals delegated to pricing lane', + 'Physical/native/all-size applicability delegated to other review lanes', + 'No global optimum or selected-frontier promotion; no expanded word materialized']) + +def main(): + ap=argparse.ArgumentParser();ap.add_argument('--candidate',action='append',nargs=2,required=True) + ap.add_argument('--out',type=Path,required=True);ap.add_argument('--bit-source',type=Path,required=True) + args=ap.parse_args();t=time.monotonic();bit_source=json.loads(args.bit_source.read_bytes())['ordinary_BIT'] + result=dict(status='PASS_SCOPED_ARITHMETIC',candidates=[run(n,Path(p),bit_source) for n,p in args.candidate], + python=platform.python_version(),seconds=time.monotonic()-t, + retained_BIT_source=str(args.bit_source.resolve()), + retained_BIT_source_sha256=hashlib.sha256(args.bit_source.read_bytes()).hexdigest(), + maxrss_kib=resource.getrusage(resource.RUSAGE_SELF).ru_maxrss, + checker_sha256=hashlib.sha256(Path(__file__).read_bytes()).hexdigest()) + args.out.write_text(json.dumps(encode(result),indent=2,sort_keys=True)+'\n') + print(json.dumps(encode({k:v for k,v in result.items() if k!='candidates'}))) +if __name__=='__main__':main() diff --git a/research/joint-relations-independent-validation/capsule/agents/ownership/check.py b/research/joint-relations-independent-validation/capsule/agents/ownership/check.py new file mode 100644 index 0000000000..f03bc1d68a --- /dev/null +++ b/research/joint-relations-independent-validation/capsule/agents/ownership/check.py @@ -0,0 +1,281 @@ +#!/usr/bin/env python3 +"""Independent event owner/frame/def-use audit; never imports candidate Python. + +--structure is a cheap contract probe. --exact is a coordinator-only full row +replay on arbitrary retained and owned entries. Mathematical scalar rows use +rational coefficients and reduced free words, not binary tableaux. +""" +import argparse +import copy +import gzip +import hashlib +import json +from collections import Counter, defaultdict +from fractions import Fraction +from pathlib import Path + +HERE = Path(__file__).resolve().parent +REPO = HERE.parents[1] / 'repository' +SOURCE = 'research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz' +CANDIDATE = 'research/kappa-joint-relations-20261023/WORD.json.gz' +PHASE = 'research/kappa-round3-warp-20261022/PHASE-VALIDATION.json.gz' +HEAD = '4bd6efa51a495a7c7b7754915cf0244e7e60969e' +MAIN = '1ec1119972c9aefe42525172d07b332fcff81cb4' + + +def require(p, text): + if not p: + raise ValueError(text) + + +def read(p): + data = p.read_bytes() + return json.loads(gzip.decompress(data) if p.suffix == '.gz' else data) + + +def role(x): + require(isinstance(x, list) and len(x) == 2 and x[0] in ('L','C') and isinstance(x[1],int), 'Malformed role') + return tuple(x) + + +def label(r): + return '%s%d' % r + + +def relation_structure(source, candidate): + """Align literal events, discovering edits instead of using WITNESS.json.""" + c = candidate['canonical'] + expected = dict(source['canonical']); expected.pop('local_profile') + require(c == expected, 'Changed canonical frames/maps/adapters') + require(candidate['programs']['forward'] == source['programs']['forward'], 'Changed forward program') + owned_list = [role(x) for x in candidate['owned']['backward']] + owned = set(owned_list) + require(len(owned) == len(owned_list) == 17, '17 distinct owned roles required') + require({r for r in owned if r[0]=='C'} == {('C',i) for i in range(9)}, 'Distinct C0..C8 required') + pivots = sorted(r[1] for r in owned if r[0]=='L') + require(len(pivots) == 8 and all(224 <= i < 632 and c['start'][i]==0 and c['final'][i]==1 for i in pivots), '8 owned cold full-ended helpers') + require(len(c['frames'][1])-len(c['frames'][0]) == 9, 'Lost owned helpers must have rank nine') + old = source['programs']['backward']; new = candidate['programs']['backward'] + k = 0; prepared={}; prep_ops=[] + while k < len(new) and new[k][0]=='scalar': + e=new[k]; g=e[1]; dst=role(g[1]) + require(e[2]==0 and dst in owned and dst[0]=='L', 'Preparation owner/frame') + if g[0]=='clear': + require(dst[1] not in prepared, 'Repeated pivot initial clear') + prepared[dst[1]]=[] + else: + require(g[0]=='add' and dst[1] in prepared, 'Pivot read before initial clear') + src=role(g[2]); require(src[0]=='L' and 224<=src[1]<632 and src not in owned and c['start'][src[1]]==0, 'Preparation must use independent common-frame helpers') + q=Fraction(g[3],g[4]); require(q and q.denominator & (q.denominator-1)==0, 'Preparation dyadic coefficient') + prepared[dst[1]].append([src[1],str(q)]) + prep_ops.append(k);k+=1 + require(set(prepared)==set(pivots) and all(prepared.values()), 'Every owned pivot prepared from retained helpers') + require(k0: + slot=role(new[k][1][1]);frame=new[k][2] + require(j>0 and slot not in snapshots and k+1>p&1:n^=row[p] + require(n,'Dependent frame basis') + row[n.bit_length()-1]=n + return row + + +def subset(a,b): + for n in a: + for p in sorted(b,reverse=True): + if n>>p&1:n^=b[p] + if n:return False + return True + + +def run_frames(c,program,owned,exact=False,backward=True): + """Frame and syntactic owner check; exact=True proves complete row returns.""" + roles={('L',i) for i in range(632)}|owned + frames={('L',i):f for i,f in enumerate(c['start'])} + frames.update({r:None for r in owned if r[0]=='C'}) + initialized=set(roles)-owned + # Each role, including every owner, starts with its own independent symbol. + rows={r:{(r,()):Fraction(1)} for r in roles} if exact else None + ever_cleared=set(); last_reads={}; last_writes={}; first_clear={}; last_clear={}; paid=Counter(); zero_sites=[] + bases=[span_rank(x) for x in c['frames']] + frame_cache={} + def read_at(r,i): + require(r in roles,'Undeclared/aliased source role') + require(r in initialized,'Owned dirt read before legal erase') + last_reads[r]=i + def add(dst,src,q): + for key,value in list(src.items()): + new=dst.get(key,Fraction(0))+q*value + if new:dst[key]=new + else:dst.pop(key,None) + for i,e in enumerate(program): + kind=e[0] + if kind=='scalar': + g,f=e[1:];dst=role(g[1]); require(dst in roles and isinstance(f,int) and 0<=f0 else -1000000) if backward else op + rows[dst]={(r,word[1:] if word and word[0]==-symbol else (symbol,)+word):q for (r,word),q in rows[dst].items()} + frames[dst]=new;last_writes[dst]=i + elif kind in ('climb','center'): + if kind=='climb':_,_,n,old,new,rank=e;dst=('L',n) + else:_,n,old,new,rank=e;dst=('C',n) + read_at(dst,i);require(frames[dst]==old,'Paid input frame') + require(rank==abs(len(c['frames'][new])-len(c['frames'][old])),'Paid rank mismatch') + key=(kind,old,new) + if key not in frame_cache: + frame_cache[key]=subset(c['frames'][old],bases[new]) or (kind=='center' and subset(c['frames'][new],bases[old])) + require(frame_cache[key],'Paid frame inclusion') + frames[dst]=new;last_writes[dst]=i;paid[rank]+=1 + elif kind=='zero_retag': + _,r,old,new=e;dst=role(r);read_at(dst,i) + require(frames[dst]==old,'Zero identity input frame') + if exact:require(not rows[dst],'Zero identity has nonzero input row') + frames[dst]=new;last_writes[dst]=i;zero_sites.append(i) + else:require(kind in ('phase','adapter'),'Unknown opcode') + require([frames[('L',i)] for i in range(632)]==c['final'],'Final borrowed/owned native frame mismatch') + require(owned<=ever_cleared,'Owned entry dirt not legally erased') + for r in owned: + require(last_clear[r]==last_writes[r],'Owned output not zero at return') + if exact: + for r in sorted(roles): + expected={} + if r not in owned: + expected[(r,())]=Fraction(1) + if r[0]=='L' and ((backward and r[1]<112) or (not backward and 112<=r[1]<224)): + src=('L',r[1]+112 if backward else r[1]-112) + expected[(src,())]=Fraction(-1 if backward else 1) + require(rows[r]==expected,'Wrong arbitrary-column endpoint '+label(r)) + return {'paid':dict(sorted(paid.items())),'zero_sites':zero_sites, + 'initial_columns':len(roles),'retained_arbitrary_columns':len(roles-owned),'owned_arbitrary_columns':len(owned), + 'all_exact_endpoints_checked':exact,'all_owned_last_writes_are_clears':True, + 'owned_def_use':[{'role':label(r),'first_clear':first_clear[r],'last_read':last_reads.get(r),'last_clear':last_clear[r],'return_frame':frames[r]} for r in sorted(owned)]} + + +def phase_binding(repo,source,candidate): + receipt=read(repo/PHASE) + payload=hashlib.sha256(gzip.decompress((repo/SOURCE).read_bytes())).hexdigest() + require(receipt['actual_word_canonical_sha256']==payload and receipt['status']=='PASS_JOINT_HELPER_MAPS_ALL_ACTUAL_ABSOLUTE_PHASES','Absolute phase receipt/source binding') + for d in ('forward','backward'): + for kind in ('warp','phase','adapter'): + require([e for e in source['programs'][d] if e[0]==kind]==[e for e in candidate['programs'][d] if e[0]==kind],'Changed phase/native/adapter sequence') + return {'source_payload_sha256':payload,'receipt':PHASE,'source_absolute_phase_lowering_replayed':False,'exact_native_phase_adapter_order_preserved':True} + + +def check(repo,candidate,exact=False): + source=read(repo/SOURCE) + contract=relation_structure(source,candidate) + run=run_frames(candidate['canonical'],candidate['programs']['backward'],contract['owned'],exact) + forward=run_frames(candidate['canonical'],candidate['programs']['forward'],{('C',0)},exact,False) + public={k:v for k,v in contract.items() if k not in ('owned','source_map','snapshots')} + public['snapshots']={label(k):v for k,v in contract['snapshots'].items()} + return {'contract':public,'backward':run,'forward':forward,'phase':phase_binding(repo,source,candidate)} + + +def mutations(repo,candidate): + checks={} + def reject(name,mutate): + bad=copy.deepcopy(candidate);mutate(bad) + try:check(repo,bad,False) + except (ValueError,IndexError,KeyError) as err:checks[name]=str(err) + else:raise ValueError('Mutation escaped: '+name) + def program(x):return x['programs']['backward'] + def first_snapshot(x):return next(i for i,e in enumerate(program(x)) if e[0]=='scalar' and e[1][:2]==['copy',['C',1]]) + reject('borrowed_clear',lambda x: program(x)[0][1].__setitem__(1,['L',0])) + reject('missing_initial_pivot_clear',lambda x: program(x).pop(0)) + reject('alias_owned_snapshot_bank',lambda x:x['owned']['backward'].__setitem__(2,['C',1])) + def reuse(x): + j=next(i for i,e in enumerate(program(x)) if e[0]=='scalar' and e[1][:2]==['copy',['C',2]]) + program(x)[j-1][1][1]=['C',1];program(x)[j][1][1]=['C',1] + reject('reused_live_snapshot_bank',reuse) + reject('wrong_snapshot_frame',lambda x:program(x)[first_snapshot(x)].__setitem__(2,0)) + reject('wrong_snapshot_source',lambda x:program(x)[first_snapshot(x)][1].__setitem__(2,['C',0])) + reject('missing_owner_return',lambda x:program(x).pop()) + reject('missing_retained_output_operation',lambda x:program(x).pop(next(i for i,e in enumerate(program(x)) if e[0]=='scalar' and e[1][0]=='add' and e[1][1][0]=='L' and e[1][1][1]<224))) + reject('undeclared_storage_alias',lambda x:program(x)[first_snapshot(x)][1].__setitem__(1,['C',9])) + reject('changed_phase_marker',lambda x:program(x).pop(next(i for i,e in enumerate(program(x)) if e[0]=='phase'))) + reject('wrong_final_owned_frame',lambda x:program(x)[-1].__setitem__(2,0)) + reject('wrong_center_copy_gauge',lambda x:next(e for e in program(x) if e[0]=='scalar' and e[1][:2]==['copy',['C',0]]).__setitem__(2,0)) + return checks + + +def main(): + parser=argparse.ArgumentParser();parser.add_argument('--repo',type=Path,default=REPO);parser.add_argument('--exact',action='store_true');parser.add_argument('--structure',action='store_true');parser.add_argument('--controls',action='store_true');parser.add_argument('--output',type=Path);parser.add_argument('--candidate',type=Path);parser.add_argument('--candidate-head',default=HEAD) + a=parser.parse_args();candidate_path=a.candidate or a.repo/CANDIDATE;candidate=read(candidate_path) + result={'status':'PASS_EXACT_RUNTIME_OWNERSHIP' if a.exact else 'PASS_STRUCTURAL_RUNTIME_OWNERSHIP','candidate_head':a.candidate_head,'candidate_word':str(candidate_path.resolve()),'candidate_word_sha256':hashlib.sha256(candidate_path.read_bytes()).hexdigest(),'canonical_main':MAIN,'scope':'Independent event parser; no author Python imports or WITNESS/RESULT counters used','result':check(a.repo,candidate,a.exact)} + if a.controls:result['mutation_controls']=mutations(a.repo,candidate) + data=json.dumps(result,indent=2,sort_keys=True)+'\n' + if a.output:a.output.write_text(data) + print(data) + + +if __name__=='__main__':main() diff --git a/research/joint-relations-independent-validation/capsule/agents/prices/check_prices.py b/research/joint-relations-independent-validation/capsule/agents/prices/check_prices.py new file mode 100644 index 0000000000..c8b7284f75 --- /dev/null +++ b/research/joint-relations-independent-validation/capsule/agents/prices/check_prices.py @@ -0,0 +1,264 @@ +#!/usr/bin/env python3 +"""Independent event invoice and rational outward-rounded prices. No candidate imports. + +New audit code by the execution pricing lane with substantial OpenAI Codex help. +Construction credit: Ali Romman; retained source Cao Yifan, Cinna Davis, zxv, +Jacob Alan Sussman. This verifies prices conditional on separately checked semantics. +""" +import argparse, collections, functools, gzip, hashlib, json +from fractions import Fraction as F +from pathlib import Path + +HERE=Path(__file__).resolve().parent +REPO=HERE.parents[1]/'repository' +S=10**65 + +def ceildiv(a,b): return -((-a)//b) +def need(p,s): + if not p: raise ValueError(s) +def read(p): + b=p.read_bytes(); return json.loads(gzip.decompress(b) if p.suffix=='.gz' else b) +def digest(p): return hashlib.sha256(p.read_bytes()).hexdigest() +def encode(v): + if isinstance(v,F): return str(v) + if isinstance(v,dict): return {str(k):encode(x) for k,x in v.items()} + if isinstance(v,(list,tuple)): return [encode(x) for x in v] + return v + +def census(w): + c=w['canonical']; frames=c['frames']; dims=list(map(len,frames)); v=c['v'] + need(len(c['start'])==len(c['final'])==2*v+408 and v==len(c['ports']), 'Main/helper ABI') + def reduce_vector(x,basis): + for pivot,row in basis: + if x & (1<0,'Independent binary frame') + basis.append((row.bit_length()-1,row));basis.sort(reverse=True) + bases.append(basis) + def subset(a,b): return all(reduce_vector(x,bases[b])==0 for x in frames[a]) + all_profiles={} + for direction,events in w['programs'].items(): + owned={tuple(x) for x in w.get('owned',{}).get(direction,[['C',0]])} + current={('L',i):f for i,f in enumerate(c['start'])} + current.update({r:None for r in owned if r[0]=='C'}) + paid=collections.Counter(); types=collections.Counter(); scalar_types=collections.Counter(); tariff=0 + for e in events: + kind=e[0]; types[kind]+=1 + if kind=='scalar': + g,frame=e[1:]; dst=tuple(g[1]);scalar_types[g[0]]+=1 + if g[0] in ('clear','copy'): tariff+=2 + else: + q=F(*(g[3:] if g[0]=='add' else g[2:]));n,d=abs(q.numerator),q.denominator + need(n>0 and d&(d-1)==0,'Dyadic scalar tariff') + if g[0]=='scale': + need(n&(n-1)==0,'Unit dyadic scale');tariff+=2*(abs(n.bit_length()-d.bit_length())+int(q<0)) + else: + need(g[0]=='add','Tariff opcode');tariff+=2*(3+n.bit_length()-1+n.bit_count()+d.bit_length()-1) + if g[0]=='clear': current[dst]=frame + else: + need(current[dst]==frame,'Scalar destination frame') + if g[0] in ('add','copy'): need(current[tuple(g[2])]==frame,'Scalar source frame') + elif kind=='warp': + _,dst,op,a,b=e;dst=tuple(dst) + need(current[dst]==a,'Warp input frame'); current[dst]=b + elif kind in ('climb','center'): + if kind=='climb': _,tag,i,a,b,claimed=e; dst=('L',i) + else: _,i,a,b,claimed=e; dst=('C',i) + need(current[dst]==a,'Paid input frame') + # The price is computed from endpoint dimensions, never its JSON rank. + rank=abs(dims[b]-dims[a]);need(rank==claimed and rank>0,'Paid rank witness') + need(subset(a,b) if kind=='climb' else subset(a,b) or subset(b,a),'Nested paid frame') + paid[rank]+=1;current[dst]=b + elif kind=='zero_retag': + _,dst,a,b=e;dst=tuple(dst) + need(current[dst]==a,'Retag frame');current[dst]=b + else: need(kind in ('phase','adapter'),'Known event kind') + need([current['L',i] for i in range(2*v+408)]==c['final'],'Final frame census') + targets=collections.Counter() + lost=[] + for i in range(2*v,2*v+408): + a,b=c['start'][i],current['L',i] + rank=dims[b]-dims[a];need(rank>0 and subset(a,b),'Productive rank') + if ('L',i) in owned: lost.append([i,rank]) + else: targets[rank]+=1 + all_profiles[direction]={'paid':paid,'helpers':targets,'event_types':types,'scalar_types':scalar_types,'real_scalar_allowance':tariff,'surrendered_helpers':lost} + return all_profiles + +def invoice(): + wp=REPO/'research/kappa-joint-relations-20261023/WORD.json.gz' + sp=REPO/'research/kappa-round3-warp-20261022/ACTUAL-WORD.json.gz' + cp=REPO/'research/joint-helper-lattice/CONTROLLER.json' + w=read(wp);source=read(sp);controller=read(cp) + successor_path=HERE.parent/'sources/pr5387/research/eight-owned-relations/WORD.json.gz' + successor=census(read(successor_path)) + new=census(w);old=census(source) + for direction in new: + need(successor[direction]['paid']==new[direction]['paid'] and successor[direction]['helpers']==new[direction]['helpers'],'Actual PR5387 same profile') + def whole(local): + T=collections.Counter();P=collections.Counter();counts=collections.Counter();parts={} + v=w['canonical']['v']; h=w['canonical']['h']; step=h-1 + for e in controller['physical_events']: + counts[e[0]]+=1 + if e[0]=='LOCAL': + direction='backward' if e[3] else 'forward' + counts[direction]+=1;T.update(local[direction]['helpers']);P.update(local[direction]['paid']) + elif e[0]=='QUERY_SHEAR': P[1]+=v + elif e[0]=='IDLE': P[step*len(e[2])]+=2*v + main=collections.Counter() + for exponents in controller['diagonal']: + need(abs(exponents[0])==1 and set(exponents[1:])<= {0,1},'Whole completed main target') + main[1+step*sum(exponents[1:])]+=v + T.update(main) + return {'targets':dict(sorted(T.items())),'paid':dict(sorted(P.items())), + 'productive_fields':sum(T.values()),'paid_calls':sum(P.values()), + 'target_rank_mass':sum(r*n for r,n in T.items()),'paid_rank_mass':sum(r*n for r,n in P.items()), + 'controller_event_types':counts,'main_targets':main} + candidate,baseline=whole(new),whole(old) + delta={k:{r:candidate[k].get(r,0)-baseline[k].get(r,0) for r in set(candidate[k])|set(baseline[k]) if candidate[k].get(r,0)!=baseline[k].get(r,0)} for k in ('targets','paid')} + need(delta=={'targets':{9:-128},'paid':{1:-128,8:-128}},'Actual whole delta') + need(candidate['paid_calls']==64148 and candidate['productive_fields']==10800,'Whole counts') + need(candidate['target_rank_mass']-candidate['paid_rank_mass']==752,'Conserved mass surplus') + inputs={str(p.relative_to(REPO)):digest(p) for p in (wp,sp,cp)} + inputs[str(successor_path.relative_to(HERE.parents[1]))]=digest(successor_path) + return {'candidate_head':'4bd6efa51a495a7c7b7754915cf0244e7e60969e','canonical_main':'1ec1119972c9aefe42525172d07b332fcff81cb4', + 'inputs_sha256':inputs,'local_candidate':new,'local_successor':successor,'successor_head':'b1ab650d36f59e5be682a813145b7c67e219e341','local_baseline':old,'candidate':candidate,'baseline':baseline,'delta':delta, + 'semantic_dependency':'Each retained endpoint must independently satisfy ordinary completed-helper ABI; zero_retag validity and owned lifetimes checked by other lanes.'} + +# Each pair is [lower,upper] in units 1/S. All interval operations round out. +def mul(a,b): + q=[x*y for x in a for y in b]; return min(q)//S,ceildiv(max(q),S) +def add(a,b): return a[0]+b[0],a[1]+b[1] +def scale(a,q): + q=F(q); x=[n*q.numerator for n in a] + return min(x)//q.denominator,ceildiv(max(x),q.denominator) +def div(a,b): + need(b[0]>0,'Positive denominator');q=[F(x*S,y) for x in a for y in b] + return min(q).__floor__(),max(q).__ceil__() +def constant(q): + q=F(q)*S;return q.__floor__(),q.__ceil__() +def interval(a): return [F(a[0],S),F(a[1],S)] +def decimal(a,digits=30): + # Display rounding outward as well; exact bounds are always retained. + factor=10**digits;return [f'{a[0]*factor//S/ factor:.{digits}f}',f'{ceildiv(a[1]*factor,S)/ factor:.{digits}f}'] +@functools.lru_cache(None) +def log(rank): + need(rank>=1,'Positive integer log') + if rank==1:return (0,0) + k=rank.bit_length()-1;x=F(rank,2**k);z=(x-1)/(x+1) + def atanh(q): + total=F(0);term=q + for j in range(90):total+=term/F(2*j+1);term*=q*q + tail=2*term/(181*(1-q*q)) + return constant(2*total)[0],constant(2*total+tail)[1] + a=atanh(z);b=atanh(F(1,3));return add(a,scale(b,k)) +def exp_positive(a): + need(a[0]>=0 and a[1]< 16*S,'Exp convergence range') + term=(S,S);total=term + for n in range(1,1000): + term=scale(mul(term,a),F(1,n));total=add(total,term) + # All subsequent exact terms have ratio <= upper(x)/(n+1). + if term[1]<=2 and a[1] < (n+1)*S: + tail=ceildiv(term[1]*a[1],(n+1)*S-a[1]) + return total[0],total[1]+tail + raise ValueError('Exp iteration limit') +@functools.lru_cache(None) +def power(rank,exponent): + exponent=F(exponent) + if exponent==0:return(S,S) + a=scale(log(rank),abs(exponent));result=exp_positive(a) + return result if exponent>0 else div((S,S),result) +def moment(hist,exponent): + result=(0,0) + for r,n in hist.items():result=add(result,scale(power(int(r),exponent),n)) + return result + +def validate_invoice_claim(proposed,derived): + for kind in ('targets','paid'): + need(proposed[kind]==derived[kind], 'Proposed '+kind+' disagrees with literal event-derived census') + return True + +def prices(data): + T=data['candidate']['targets'];P=data['candidate']['paid'];tcount=data['candidate']['productive_fields'] + validate_invoice_claim({'targets':dict(T),'paid':dict(P)},data['candidate']) + def margin(c): + a,b=moment(T,1-c),moment(P,1-c);return a[0]-b[1],a[1]-b[0] + low,high=F('.00302667476807'),F('.00302667476808') + need(margin(low)[0]>0 and margin(high)[1]<0,'Exact fixed-profile root bracket') + # Independently certify strictly decreasing M(C) on [0,.05]. Since + # M'(C)=-sum signed n*r^(1-C)*ln(r), bound that sum from below. + signed={r:T.get(r,0)-P.get(r,0) for r in set(T)|set(P)} + derivative_bounds=[] + for j in range(16): + l,r=F(j,320),F(j+1,320);lower=0 + for rank,n in signed.items(): + b=mul(power(int(rank),1-r if n>0 else 1-l),log(int(rank))) + lower+=n*b[0 if n>0 else 1] + need(lower>0,'Strict decreasing raw moment');derivative_bounds.append(F(lower,S)) + rest=[] + for j in range(128): + l,r=F(1,20)+F(19*j,2560),F(1,20)+F(19*(j+1),2560) + upper=sum(n*power(int(rank),1-l if n>0 else 1-r)[1 if n>0 else 0] for rank,n in signed.items()) + need(upper<0,'Negative moment above .05');rest.append(F(upper,S)) + variants={} + for label,K,C,rho in [('PR5383',F('.00302666'),F('.00302667'),F(1,10**9)),('PR5387',F('.003026674765'),F('.003026674766'),F(1,10**12))]: + a,b=moment(T,1-C),moment(P,1-C) + alpha=div(b,a);gamma=div(moment(P,1-C+F(1,5)),mul(power(20,F(1,5)),a)) + delta=div(constant(21*tcount),mul(power(20,C),a)) + alpha_budget=(scale(a,1-rho)[0]-b[1],scale(a,1-rho)[1]-b[0]) + need(alpha[1]F(63,64)**1000,'Complement capacity') + need(F(power(145,1024*C)[1],S)<2**1000,'Initial range') + rounding_fail=1/(1+1024*F(1,10**13))+F(4,2**32)>=1 + predecessor_reserve_rejected=alpha[0]>constant(1-F(1,10**9))[1] + if label=='PR5387': need(predecessor_reserve_rejected,'Reject old reserve at stronger C') + variants[label]={'kappa':K,'tested':C,'reserve':rho,'raw_margin':interval(margin(C)),'target_moment':interval(a),'paid_moment':interval(b), + 'alpha':interval(alpha),'gamma':interval(gamma),'delta':interval(delta),'alpha_budget':interval(alpha_budget), + 'coarse_completed_upper':bound,'coarse_completion_slack':1-bound,'actual_completed_upper':exact_tail_bound, + 'eta':interval(eta),'raw_headroom_over_claim':[low-K,high-K],'raw_headroom_over_tested':[low-C,high-C], + 'coarse_rounding_reserve_1e-13_fails':rounding_fail,'predecessor_reserve_1e-9_rejected':predecessor_reserve_rejected, + 'extra_H1_affordable':int(F(alpha_budget[0],S).__ceil__()-1), + 'tail_offset':F(1,5),'power':1024,'cutoff':20,'floor':21} + next_tested_grid={} + for C in [F('.003026674767'),F('.003026674768')]: + a,b=moment(T,1-C),moment(P,1-C);alpha=div(b,a) + reserved=constant(1-F(1,10**12));budget=(scale(a,1-F(1,10**12))[0]-b[1],scale(a,1-F(1,10**12))[1]-b[0]) + next_tested_grid[str(C)]={'tested':C,'alpha':interval(alpha),'alpha_budget':interval(budget),'strict_alpha_pass':alpha[1]=reserved[1]} + need(next_tested_grid[str(F('.003026674767'))]['strict_alpha_pass'],'Next C grid still passes alpha') + need(next_tested_grid[str(F('.003026674768'))]['strict_alpha_fail'],'Following C grid fails reserved alpha') + controls={} + for name,patch in [('unearned_128_H9',{9:128}),('extra_H1',{1:1})]: + if name.startswith('unearned'): + bad={'targets':dict(T),'paid':dict(P)};bad['targets'][9]+=128 + mutant_hash=hashlib.sha256(json.dumps(encode(bad),sort_keys=True,separators=(',',':')).encode()).hexdigest() + try: validate_invoice_claim(bad,data['candidate']) + except ValueError as error: controls[name]={'status':'invoice_mutant_rejected','reason':str(error),'added_target_count':128,'recomputed_proposed_invoice_sha256':mutant_hash} + else: raise ValueError('Unearned productive outputs escaped invoice validator') + else: + bad=dict(P);bad[1]+=1 + controls[name]={'margin_upper_at_5383':F(moment(T,1-F('.00302667'))[1]-moment(bad,1-F('.00302667'))[0],S)} + need(controls[name]['margin_upper_at_5383']<0,'Reject unpriced H1') + return {'status':'PASS_INDEPENDENT_EVENT_INVOICE_AND_EXACT_PRICES','method':'Integer fixed-point outward rounding 10^-65; rational atanh log series and exp Taylor geometric remainder; no author code imports', + 'raw_root_bracket':[low,high],'min_derivative_negation_lower':min(derivative_bounds),'remaining_moment_upper':max(rest),'variants':variants,'next_tested_1e-12_grid':next_tested_grid,'controls':controls, + 'independence_scope':'Fresh implementation of count/parser and interval arithmetic; no PR5377/5383/5387 or PR5384 arithmetic engine reused. Literal word and controller are common primary evidence.', + 'ceiling_scope':'Unique raw crossing of this exact signed profile for 0-QC?KAkv7GlnN|J_rlWM-LN!EclX`z@80`9 z&%1x_oH;Rbdd`PB76StT{zH0ImsFHtmzMl2sjMaswD)jvc0@R8JxtmDm~wg_L@k}S zwa|t5mi|%WX5ov0qV`g9POeU6b3d#seiXt1?ZhIXccViw_nY!*6dx3>KJvXkszRZUNJ{~9TbDT@Y%&WcL-SoEyKi)Lv zy<8kNwm)C?UtLqTzi!=zsJ`wUXwSD-1!RW2T)+`OFJIw;PJ>^mU+)@S;Aq8z?{98T z+k;+jDyd(Yl;@xG+F!$7VXu$Nr)zC462bS^>8Dc9Y?b})w`;;<>*=bJ^TQ?!6VDe|k1x-l*B9}ZL(pmaGgs^6ez^+A-634Q-A3^? zHSx1XIA3r9r%j5KUY^BYWb-cO)!?!`zCP@8a0Xp$rLVo5Z-LsM;Qv0JAGYt^!#BXi zGkN8>pEh}63aNe$dA&UZg}^x$4}M$=dEUBx&0f8JC9FK*YgtDU!Q)5aEIlOzpTO0JSV!mJ{+g-pe}64KQ;RKwLgo$dV^Wd@uy9;(@K$i<16=p zipyS|{zk6uMi0?P6^HF>G_Oy`>95-CJNux*{1&71Zv~D&Y83GFRZbyQsW>C@0|c8d zsNFJtceMpiowV^{09-6>Y_RJVFyTH z8Ti4fP{cya@aKWazW|nc2|3i%w2NsL7tJhL|L{D)EbS5Wt5wraBBefg-;v8qe~AWy$`la zcaz&LgSf;gFBxG589cH2Rt1JbKC4csYKG0h-up#LSvM;ha0o$h$~u-^gM1#W=JDaC zZ>KHGxVd0Y=+Tsl?a#Q&oKvia{rubTHbkM?{OGG}A|VZ{Ae$|Pv%Q)4SS|jR?YCP( zYD1Iame2Ht<7&Gt%%sk44Y7-fwc2AAj3ZX9HWoa-;D3n3jn2L}Y<+&JH2>Yzc3`xJ zv!F-XI}gFv#RXg{sL*1$Gt^U3Qw}`-2Ibjzswn?7X$)vLfYqFY?&OG>m;kN2G^T*; zhZjM8z{ojLQ)*1D>7F9{M=3CU2@k`N?_c(3j|G-+QHzc{p!`^4J|BbQzNKDGE4n;N zf@PPIX%A$VSnZMlo?IVVo2lfNx#FUZGb$4Bq+Q26kQBvpu8gP73u=|Vz>wIz;-v&X zh{_AAvU2yXdaoB*ZA zKYWutUZC>-)9_tr$Ba0{tG6^veIOz0!}sMH16kc4gBdT7X))M+cBi)2PVXYnj(SW- z5O1FgP>wO>-k^hGrbCA9b5L5v^sx%-Rse9Y| z6gaZZ+H%pEtveEK^~dl)&zs=VN{4P0qws{#7)tDcn$fA@yAuiDO+&YX-x;hmqAM8h z+07&hWo~Ka*xijlv)T9wfNLzwPtXRB_82uNcY0vo8_x%`@&xPQKEG4ncLx=&A+qLU zsRahUbl^iqk1qXFbw(wczx?46VSk0ggT?k5qqyDjjofb#orvm2I-9CqkC@w1mZ~8d zfj^}t#?f&qEFRjVlt|euzh#sMWfU28Oq!CHuiV4LVmQZtau)e0A_Wd zfbh;y=OXJa4FRksA-dIFw!GBLapx1Jq<9{$zz5wx1)KD%41gz1W4Cb=?R-6FgF6G9 zwi;RX&kte+9!g(o*z&zD{1ibJUc$J#e7M6Ovn!lFzf3v43To11NS`_Fss2$gmOgYg>SDe6(efj4o7=>D_*wb#|l!WNtGp&Dw!G5=wK?s zSpZ{Jx4>Db8$fMV_e&yehOqXe1T4SP_}1&nXXL>0IrV?MMCyqZ`AGum zrsgB{0$qe@F{?Ed9_|Y|^}p>%!<7$`osaby{Ww4-4`5z`yw@ScCRfy7jEm2e6)a}& zN^I_z?=2_XqHZ9Yb0ZKd-V8oh@}Da)4c}3kDull^sb$Yy8&&&R88*!@i?Up z&$cxGks>=bO}mB2f^r#CGoP@O^^ZXw=&dJCe&_1b3c9DaBwnUKy6~ufshObQ=+rOL z5t;VnDo>LszI?QRt`zEnqd!!aDZnZ_zfvo~!9SVl(!D42Y*2s~PH|^))pn#%W3g~r zuID6il~P&vl)Y}{x6jCcdHeK}^#>Yf%OITW&Q<&Qh+2a&XSfwe%Z=<%;01I|RaHct zzfrnHHA1#?rDwbU&vE4b?-FyX3g+rL#mx5G3LM_!Bz$F{o?2vJuL%WaDqN;91=Uf; zIl=G055L=~<(#l$k4z$h&ted(&S1iMLPv5qE?cRYvLThh4j7fpqI662ANqp-q5seD z&7Gs!tzyVy%^ZiOf)wW^$S7Ep#Qt+3J4i-s$uM@U2l`~WV<-8~L-^gZo?}8Jf9U^z z1l~$ZDsb;1_Mi875VBG{`48&h(6QzmqW^^<_ViQwDcYka*JAroldX;7K(qzq41_0Gnx@+9;I2*H_q>f%2RN2sQ zZ;ysS{c7b5rCjS{&9nrNes^5cF25>{%TN>kn5i(|)q1wkSkgO>lKiQPh$}b9)OjY4 z)r3qQ*(#AIWkIL6{hlmbsr-y5WE(y}C|Z8Z7=4WBd&<1i>V~9LMDQ-C;9ik|cU3$TlfQAJ z4)>mD3@7SC(Ugk2k?ZpEkMqm_mn_sxq$lJ4_Kuyx5}IivCH#3lcCG**bBd6qHULcbgP5qOZ4|3kHEKc(b6GFe47?*H8M z?zW*Tiy?nhf8pC1;avq#MDlE=INFD1swvkUPv4{)qPm3zz&?s_ zM*i;cr|g1j?(d1Nit{pLV+_ZVOS)6uQ#y*fc3CV9vsE0^d7k%)c_T7V{!v4uLar_t zrFhU+tQNEr(S({X@ij7g%11eL?FH9R{czHLd{EMn!X` zdxDeavp%SR92TL-E~Nh^$F)$Q!lI z-fXkM1YpD(wvxNxn2K3nH=W^`+Ab~!3|r~Jy>VDH6{3A2ZGKePZSfzdVn+2EmXiD8 zyQ`hQ_ZaDq(@ov6g54=?|KC|YW>5u8?q&FL+30DKEVz7SXxd|8oNK?yoBZ!|gna*7 zm?CeHJ_}oS3a8d5KH2$W@oT2CJLQ@DcA$!Ww~qgp7%=g;)U;Ea>WT6Cu&RLHH+mhp z(*PB(2@Lq2kU2J@tyd$wLG>=}DvEmM&=n6y3F*{!+ug@krpJ~_EjUl!BfUlXA`E_30KZNfyo6SUgdDW~uX7#8 zRhC}{#dDqv4i;1{P#HLWgrD9}5`Mosf9%*^d{H!s8e4`CfHIAZ#&Eb`9S(6#mm`B-SIp%Xww-UB6P~BR_#Q6Oqv1+y zuiee>!CKcafek7mQ0D6JgjQ&N$Z*%ZZ;z}TvMb~Ph>ZFA1AgI z>+-4Ls?u-gO2BCQNbjAPp>jAqc#0))lH%j^rF+1DK^%r^@?N!8iCrL`IJAwhGcLx= z%`FSAEkgH=S)gCr!-`ZSO3J~3r*@hhm0Z$%Ov8s0m3`JZ!{m(~InKvV`Nd)PUd7va zYE;ILrlaf^73B^jevoY%th<^3T^>V^hRAUKv&n#YJC2Xy8RyAjSm{sGgD%ET*Ra`N zEe@Ata;reUT&%!OXenuxARYA_EC;w-WpKUyY=S}%BRl3Rr4>U7^C8p&uxDmf&S5Z$dk*m9G58^H4%KOzsGJg zYD{i5d^bgVPEDu3zwGa=Es?Cqm}p)Z`CkMLCb$^HT}m8A~LDFWnVq7tmn>t zDxD^-n(hBbeQlTCWCR3gP@VtRPD_0cb%0IwYTkMDKHi3Zh{$zN zbj|Y2ariCBIbCQw(s-o2S~+BU6I|D)5~j>}4blp6=<`YUCoQ=&oWR0Kh5Bp?*K=^@ zE~S5a(`N5)@+i)xdY}esJMHrM)ogU|GIOj6@cRv@J4n}>mlvq#csD)&L-BckW{pgB zwa{4Z;6*-|ws--*At*)M6RhPp$WdX>%`ttAq4+b+{aaJT;OWs-VkhV5GeGeE-=W90~WiLA)x)K+~Vm2p^M5&_-v@Dfp&JaPX2aDzk z&>jtp7oW{<86PwnT9YQBnQf^Dc)A zAjd8Y!n?w*uJDaGwwnCW(U-e&2_ap1q-wT2!jXN=X<>f|%2~y1Wol#BMifI#O7s~D z0I!!b0kse`OqK>C71_uL+{Ygn?pr@#eT6=D6QkJ%YvA!GaRrfA9gIJKKM5#yw-lPZ z3LF0X;)7Q7>*C(e{tJfX*{q(*?Sx3T=;X&ZTwN|W(KF;@MA1lch>b0eHMUxy82z~L% zo73%Y<|*q~#An{j3=4@d`dpH8XOOXq$00I>~jS%Fr86$pPJd`M1N}k6M#^A zwc$BV?T$yWgSgSy@nG=2FEkX(=SW(3i7=jHvNbiU|9zyKp`L9IYQsoVY;(rG@n)6c zO5A4e`o@clF{r*O-xshdlFin{8@BD+K`6dci}?_HaW8A9jPZPY;fw#Ev#$ih$rHAS z$HW;6J<>?jKt~nHes)*)BnscCli4I>FmzyuZQ_g+w|)qv{3`2-T|~Te^wFt`TIg}A zL5Uo{%eZR~%(D?`%3;vtu%LPRhoKix86MkZuZGgfVq`wwJM^$$u-L-is<;&Vc|(2) zXqV|(!b_f&_JyS}^u9iiHo7t2?`v#LY=-=)(jjf|@h{)EKFtiPJ>~ePItH{)-qIh} zr|0aK`jkIdRvPhkP>p>;K`G%Hg60tb()+%a0~l4i5j0gk(47QvPPWY3hw}YxMijX!n zAj;LLm<}med1^0eADWoCP*reKXwPg`3N7d_d;A|Feneg8*%Fw%aev0+5aPL`K`$+N zBjpV6+f^|HJ1NUQ21VYpvkvv;JAk^94(T8}Tb7%upJd&*dK7(xjtx0wSI~*eyb`7( zCsR}b-}l)y(ech8cO=^2ZR!wYPnvfl$=;H^sQk{M?sar;+7WL|Ld9&8>wjgtB_JiK z4bmy&hDa6<>VGWa+!D`x$2Os!H28Zu16OS>aXsKMtt8JmZ)`fpxD2v2AWkJ%w(q%V z&sIzA9xY7}z5=}9QmVqrsVmOCZp{nCX5EEiNc|2FVxO7nXu^*?6Dh3P8K!${MM}mEgoG3uacoLmkDCYtYRZ|F7RO=@~75NQyi9*(qsgq-HCyYb?kZa z{UJ&H%3*;$lGYngb9gF<*gq|!s`Kq|&=kzf3OjB${Wo;AOkbj`e3p=ARU`Bkc>M{? z@uj^VT5-#H;@vcSw6M`TJor50lY03MxuNL&a-xZ{>gCrQyq6Op5W9G=%ry56k2e+9 z*K)EGxsF3LAIM5KczI`)!BBl(k~HF^{#%fPiJ36N^$lIiY@4%cq8wUXG{4bLsbBn} zvB}x;Z(b4}Lxl^&61LJn$C2H$#^~O^rcYvX7Bbd~ zs$k*a-aStzoFeE3O;mx0kWkvq&EjN{?QqvX1pQ@rCB;sycA& z;X#k9AEkG7%A+M3v4RFhMJ|DM99KMz$x=EgQl_6*i^<8j~)KZ!pU;+VL5q$%`k=0Fwrn<)3J#cRZM{7JYIG8)lzblSMiL1N#Z-a34 z&#BKQ`F*pNLG; z8GPef^9<3wdwFpySgIp}&x_P(=}oZQGPH{R#sq*c1!9&NfYa%h2m35}+5+*_2x9zQ z-;1-++zEO#hsk$3MX2g+cIpV~{|=V|>`RN~6*6A&2=6=J&reygZgjC^Q+mTN`w3>c zl`!j^HL2%W9P=7R4e*LvI*3J6aK&v4Pvo9o_O`Ap!XsY-pQ;>UhQ^=L-aaLK&M}dI@mAXMWa31O3G55i6wZcX^1Av{ zT(e?cF%7wuL<$)!qswUd^vre_FBbwe(>?;DifjlU{&2q6=|ls^a#z&3Ju{|&6NQ&|{Nc^rDUpUtsy&PzGo*3O8Iaf)%h;Wxg0?$sk zH!vZo)s;4LN$nlU(p;(7Nebnn^F zRwD%IEuGW-^!A%AG;&s}^LgpN=S zr5#w&qc!VVDo!sS^&2a~T$d__Dq<^HY&~vu9qf^vX>Rk5Y*eOyuRlrL#i{+!)W8(K zeXMYD4RcEO$rI=#Y+T{}nM^z@HsRNE&KOkOl8)T!$L}LjN5$0~JBRSi7nC^7B~IsA z`hBs`koDj-=8(nP?Dy!xmHyYc51}01JYvpWKD>x{UtIt%Nx%7Gatrc@7l%C~^mS%= zYFBS7gWn7PEtbBl$&Dhtc_Z|Y3@tsi(VCVII8n2~b+|1N6lTe462&L&Sz+{ONh*+^ zcgQ=fFuVv|z+n_sqRLQ?%Ub?H^5b~>ZLY}sqVx{*+^=eh2{?CA=^UUuLe>Y&la9?3 zETs#H4oX*gyq*=r!%74Rsl*gC?cd`c&Hd{W00lxr4gI!pW?yX1k=R~(XV3UX6#Xtp zIQA%clqJNm(kcsR-pGz`p9QDeEO{!A<`l%;_+r1 zNW}A0q78K2)sr#Elp|KrETy@6!-j;S$K{O1@HKIFeD$td^rdS9hH}|BY{DpZLzOON zwxmxacw_9XqdSNeK2~fudwf1sT<~LZV)4u~LX~=N8u2dhf^zrZGeU0pyJruRe)1Nz zzA$lL$T|V__xx6kW=6nZ?30_hn69k}R&ZNcn7My#HEEOuXJ^Ijpe!ZdcCu?Nxp|1l z)y~oNm!r0c<7josiDM~UNwmHXtrmJiLv>+q+}OO#+|CeFq1Bxkh-lxqa$_aU#W>2o z=b*$uq5J}QfVtp&n+9N6M>n4dVhGIDG5k)L;+HEt-??SE)ebj*BYIMrdXh=Krz^+T zxa8ubcIGovE8{L{v!)~<3BW_&SzK5CY3IOat`eRPI3hXz$7%H`3Y{ZQErk7j?rr@h zaZv7m#vwg4tHb~Lo0AM}vKiluw^~)c^^<5vGV}Docjpc841p3W6Yd)$&BC2JuqvZt zKJGj2xlTV3_e;*FmCkcnXCD}H(z0xBLpDh(o4v_5Qi;N)-AgFq?BaXJpr|l2WD(1} zmO;B)LXoO`(ByDk(z>esjJOvzzz=mmpKQA#4E1H8oOYLu=N#$y(ulTy49uzd_>?Jd z^$r=UNO#W*A2UeR+B&XkoA14iT@nP1_>QhIR>W!W44k^^xw91OBKQyRyduvk(&1aD zYC)Dpcaju*LOBZj47T?M?@r~(DYT%i%T2G5cO1(uy>uKSrDyu>Qol9Be5y;HRe`23le)91~POcD@!0J}+yWFvmM5qO0>~ZrT{zswU1N^_Y|qreQDEpYm#+Hy%d0V5|AnShJcG^cslUs+eUXGeXWN z%0k=c2JZ=sy7-Llx~fN~!pnK;6kLQ&$Ngt@XM~BVgbqQUn9T|EjMo0MCM6Q11sFoL z6N38Jxx7T^PTixqjbgPyFHpa08mGyVXr7<>51v!cc~rxPDx(#B8a%5e)kknb-(MNN z0onP`E$T9?6gQ)g(vH!TbyxzosoILS8|bK-E&ZR5V51&z)-uz;&H}eFdpIPWEbI*H zm&i!67{2|eu;GgKy7e2^2}z&^frltn)1u7QpP?~=CW|f7PFm7IeeLl>boSagbk2IRv5jgPEATxZE>rnRp@{t6F5o9XN4KBoHCX3q72x42c?J{>O~-v4NH z(yF_0H{A3+Tl&y#F#L^A0}TkJH1rMI2Uq?P+z0WUI48=xJ3bcS-J}8Hul#dWgMW3< z1Ib{hNj?K&Ni9YfM!3JEv0Old>D3SBPJF@69zqT5EuXK2FJk|h;FYR%*JU*D=PWo& zWY2~?QR;~VnbkkM_=GaFBj1=H{_MP&xR0JGbtWxs?_uUB7pwT5-)N}BVU0lLc!i!o z!(Zefls5ZuY)_n0gkPaVWf>M7+KAPrMrMvs&(C9)gf^X?jdAOO%pFNt+;Cd;{q!z zP2wuH!UsFRs%qybfiMz@PG#IUU3C%EfQCWWMO}Biz)hjx+YX}nm?rogM5M}|%^Vo) z{=2wd7xsDA;+qL6t+ixit;+-i9{h)Ob`OQ&9*sF65hi`*G@%79jk=gR0=~xP< z4`ts2PvcOF+M+WBN+ywLY2ZiJjG*);K!F}a(s)MAd~}MA#>@QDxTn>`25Saa{K+j#Nor;uMeg;#*qZ z1TUFpU-w}1$->fc^mf3L%Gs0#gbZmFc$aFGdWj)ZF^&)|NG|O0oi)ITE{cPEe6v`7 zg07`1NwbZU1j9wAZxs=rpt`Ao#lmB_=-$iE7gR-76*2ipIL0xIC9D<$1$t-lQU*BH zlsPbKXL>qv-DU~m;dW&6vA+?@y~jaj5Z-u$cB>lE|3+T`punz11_|DAt)K6JVz*uT zp0KgNowElYkqJ2VX%$l9<30JALif(tWT9BvEPHe}@a4PwVHYXiR8C$R@ZsIq$W|vL zClldpMFU0%7s2;uPJs6*lu)Ey?}!Vn2q%6bo`U&C$*TJ$9Hh>n+GLQoFr_ALc$SEM zx>|t-S1&Pa_-O?tJk*%Q-lwq~5*&8<8_j`Q2b$WHR4UW48rtfJi;-- z5DGGv|Chz+Itb%ROx)wt#u22*3F1E~6IgLRYi<1nCLF9IbhKJZYwH|1!$DrFTOKZ? zht(ija+x|)u1T$l+jzW-o8$Qvnx5%2Y(3m&xIE}-CSoJk9Xd$9?1qjLSUb`ndU_wx z=p_I0TlOs3)Qe!u|X!tvfm&v@4%i0kvhMMaZ3k#xjn{nQZi@(IT zkJxwA@_Bd6=w?Tt@KVa&N|Sc6A_hFkYI(dq?X!DbaRrV)1g<(l`8#`;4*Hj!x1ar% zcSf}~Phk5|gnm+o_|7H|86^!}3fe+S#L}hwtyNtx9l9Lfs|U|h1!%Q?FOU^X;&b(# z^6*?qrkH@mQ7WG0gh-)OPG>7lsdZT(%< z{6fOrC3EQ=t6X;K@So$=irG~1VYQKHS#*eR`5{~9d+9?KT;w^w_5vO&tw`XV@o7M| z84s*5%x3+--i^uVy06qE#MAw8zD~Pm$4f@#%5w^EFt#qk5fe@Q%*jzTJuK(Xt0s?o z*g*(pzCDw1#+yW;X^d@A5~-Hb(*xqmY zHxc6WM|LUom|QVeou`rk>EHX#x&2+P{;LJ)x`<2=gY`s7#2T$z!`7TvyU&+<*FbF4 z#(P^-Ru$E6u4(*i?>Pe?Wjqhy%Kr2Eg?eJj!6u8INPveHKI5PfnXR84%WAPnpY>t6Z6NcEF!KJ0Cm_#N$~Bt_d${Jj{X>PR5|KD541!_Y?i@gAGl4|O8P zE@^e5NgDP7PtA9mGHr5mY5)&*8zc?by2?BtGb5#ceB@n`V|M2`R6m9nC-Yn#j1fI; z>T~%$seeC8He!iB_jJ2`2%;X2%QQ?irRGs=y(uw|yEt1PtpWEbcL_{Hj9zM`#YD48 z?Ttsb_0At#Fj7v?FnB^HtTbT(Tj4BE4EA(pDhYyl+$A3Q!WE(mf{jA1L-Ypdlm{)M z4dh-6=Wq`uNmVAz_&iWMvwfU$no zEZ8mlHs$d$G^LAHo(qS5Nj->%3i1jgK#Y!pmKe0z%UqaDh1ep$IC%Tkhk~+8=qh4c9VjyJ;?a-oOfq6 zhWqb^>G4{3<(0(Z_?8H-Lr125=OszC7?Nk!K(SVFe=$LUzi(|o%dva`VoUi2F$>mv zNFlVy8Ai!9$MXkiDqF?FO@I0maGxX@=8wAzfZ1BaGw#oBBu;Pu_+;ymR$vlY!eD(e zc%rvk;@vZgzm~+TZS;?0RMY5tHT&%7Us1a~?FAHE)k+*fu8EJR;;~7$TVcPhXVNY- z`Ca9O>0Q>n!!A=Z|4{s3W?JP%KnfWb4*HbtGlaM7{Q$y2sah0`n_kOmu>Q-n_Vzb5 zjJ&xy#H`uwwaXfCHL8r8|Tnc59J=5s#m0eRLaFV9>K<9GEXGG34ij*WG8Yt4?a)DjTf}}Ww%V{Z%4?x zpD+oDDMSADYMkSaZG~~vx6U*66M+9_hVr{YI=cNGF##?sx^eztKY31*P`w{o3vcla z6U<7bH96ks6*IiMf>-{EMh~CDT?X#g`VnUTPk&LNYIN z3lY0y=mJ*Yo+^5V>}k(Bw=ihp9N#B;sv3gWFP&%>I+CyC00FwSTETizW)&{zJaQ&uc{J#MBDt_mdmpjNcvTqAK82Da4%n_+q2LN$a)0_<3Ar@o)FSF)Eg?MB$E zw)eB6{NQOUr%c`dJ*gHlKsm^XIB-mxo*4rmt#$+mqBTs^U{70EqMaxCwTG*me%o)z z4g4y2Z|jc<@Z%d;G}`t~j(*?xy+tXr;I}ZZD<$q!Nr9f?FFtvTVa@2_3oqYMn;AlX z0%ae90_4MlfOO5nJo+ksN1$2aG3lA_UhI&TM0&+vI+s1~-&3njjcf`5^ zm$TbxchZmy4J#EuyCZ;?b$o9&R@RE}=1jZK8EDMEJMtal*Ng9w=~KidCcVi~5k5eeiL>Y_T;CpOtBt)=OVy#c|CZyu3mZ za|Ef_+jOC5VKI#uY6M; z1#t>E7>6b=lJr1WUWS5(oqdKmiASKa;cd-5Z+;dwNfAsu|HpF1s!8yse#5C z^abmZkNSOzpxWRHtH;lqKr(%fx=4`{?wG}9@{wIk4#)O z5$+WQzN&;Y1Y!XEa0c}8w<`(|Lbi31Z<9nWWDyy^U!;8xj1g=drgHu4o)9=%?o(y< z*|q202U}*Os659?in1$sf5f<1baQWeECoKLlLHc+oxu6z&+M1cGxtZh-%L{tL`Hbf zJ7;eet(e^zm>ZUNtjgDQ{BT+A5(V|k*zUk(sb1~{rsV1zzTm{hv;4s7Hc^r{!kK5 zkwRB6CAls|rsw7m%`tcErdX9v7f?-_umw(25X!d3>Emu7|NCHix|-)-Yg4kgY_-ND zRza11a4pEI{$4nOoF?<~2zzOM!Z^6#?ua`RQ+IZ~jwD}9OxZ?99@IO7u(~sb5_&rr zdyeV?cuInoC;U@{PjROhkCQfXM}TFY zZ$u+z@PL16BU@FWs@kI8neHC&R_b=fFyZ3tBg$1|a!y6vV#0-IxeVB?GOS5Z0L_`x zCpXuhr*YVj(Gk5u7hwM_w1l)dl5vb{a5*T*foVYX@pj0#%@VKq;T@5L$AV`FAJrUk z%y2Mw*7UIQIHlH=ptno6iwgYRB{KE}-bY|z)H^{~fgs;V&lU@tJ`<5>;cDf^+BO$P zv)z+@YIz7H9)gzQjfbrOkLr*~fN|60Kexa-aT)~rN3ye#e16+{3USUTj6xd@fBIa1 zeMAbPelH?gmKIQTB`1VM_Z5oVAN=uvY9R#2cc`x>aIk}FcP_%Hxp!W>j1?$+zbVp* zsB{G>Oa_llk%xb|KN#AyyDp?v2L64{*`+f{S?#srFfrL)#~2BKw;K%$T+-Lrd*QXs zjt5=P{@%$RxUGfztEm>k9! zZ|~sg(_jm$;7&w<$2y;wfMHx-A}LM1f9fv!W_tJ25$|M2?(HoYr)xZ=a1ZxOyGPAW zxFA<)@hSeOE2G<{;7%xXn*S@r=!DfOJ+R3!m$_PcqHZUDlmJ-5+EUJD(Elfwc%D=B z7sZN*SzJbHXk_Zts{YN)ggS%BUj?qyfw}c`Tc;w>84K$8?zoAP{g0PZU`SdGnU-ZBN!ocX47 z|M8wz_Xo*?{5C;$S1P89KVw>&jY>v4%)HVw5@CO&c7m#+_Ed3exjr+@OYvM?R^5J) zKgPUWp@dfSVh2s&U5JxHLtU%Ia~^|7rc_Q6qUI%6j@?hS7+pH1D5Z1{zh?%_ZO1cg zLa?dD^Ijub7)BAg2H!RFeE;JbdZ9-DR(Wy{Bkrr)v;I*_0%k`owCIY_7ZQet{6C)~ zJTB}P$Z;1N<7|0FSU9mM@}9L-!$ZwFr1QtxH|el%!a>BsktIlHBb1Tn=p)pOD^)(2Pv}Mh@&)-@Ucv^SDP-oV)LSWCY@B9S9o`M4Mf&h<% zSh*j!hHcH+VSyaX$>$6o1Kfq)r`T(Z(j+gJnY<>fl<@gqCFiR%j5tDNJ#!-n%=>Cre;1DU!9 z%6eN+-i>?6QeMPR({lImX*ZBDx`)y14glhhQ;ZKZCX}aI?{yu)?2}h>>wWh)t!~Su zcl^_oA11fjadKfPRkhr+>SHl9MgMQ=T?9~NDqbElmC_o|E+TYk*-BWcS%=_N$2 zAxb}?P!Z^2?XL!Y?QUzImi|;o$9{!+rar6NnRooZx3on=k)(F*m*u_iRI5*|4Tv74 zq?v!P!XUiZz=l$z*FUgAp`K!n5@Ea64K|z~*)p@8O6>)6dR2heK$wAD26&K@*g3?$KOkqK3Q@NY)I;64R-Bl*zU*Bs`w5Ow!0M#B2I4Hbhb@nt}P5MUnI%W<{ zca0Yq4cNvqc=o|eEYe%;sa){`s1#*!E z9_#RqWt8#7s+*OhU^51kYfdgN z4UJj^v8(344Cw%`l7y2;LzO<+GL{Z}!0BK}uaSu~6`2c+|` zjE|Sh1ax#uAN_QT@{(J@85@~&>>gbN+MLAe3vgLv9EvJ(%+i~=HfT1NeJa$8N@|vK z`PKx)Mn9yU?o3&vqS^0TlAdZSJFX#qQyx9BKa+vgIBYy-C)(2@b>Z*}%^wn_at5p% zb}l?$uZGwZ=8ciw&}CT&3ez8V-oLl0HcLY;=x-^-Wu~)n7PlldY0i)$`styaZRTT5 zI4anf-G7C(@kL+LnTEFoQv1Nf$3K4vnE4GT0vYian5nZU7Wd`b`y z)kPyS42}lut%RQ}eaVo zDZPLEo9}MiYq^^|n#~Q;JtPounA98X5jFaon-krVf)_;BwQpMn{{&2UhW#avA2w;4 z9_yD;CY+XZy)vNGICDBwWjq9)pV;T(H<^5;okH$TLv}0WJ3F2%VYcF5G8X&Be;iR4 zFdaA0AOiE0B|9{)7{K+KcT_Nrh1$OA6C3dLbCjk-P17%Hq61lyFE8|XfA|Bc#Z0Ke zibMzY-me+_WmZ$s?Y%EwVo2lhxEgl#Xc!iB!s&D8eUF)id$Yt)p2tw;f(}NG<(fwR z5_gOoEuhFhN0oA8<&<7;8v|-eFlXI*Dv1I8)z|5nGDr}6K;U0;7qGShqJsqtRC*0F zWFmgsbkzdrSTKR5z;n^&EO#@)d z`5*{I$mu*^a3e0;$%S2r*dsre41#{3w>SAdFL-b0OH;*rcV_hC-XuAweC?9|mIhU_ zv0Ugm#;40k{3p@gTVx@*>ni4*9X$u2$-C7c-A{CiL$IdfpT$MwhET_QOWsmc*j{k!q9t!1rBsc4;tl;+=`8cZX}Q2 z@~N$`IDl(~qw_x&tr|C4zD*Slh;+S1{(^}~FBNyXnNCx@<-!FMI!uVCL+Xma}B zErzKYd=Oer`~%5o6iKcnt;v`F3tiwmm_es%HY>yBTi}lqD~A4l%YX2y-VP?*K{(B0Qq+`g{-n@}cV-~R8de?K(H zXnUc)0ccgCe$+coHxXJ+pxi|kyE-f(2H}Mk_8)#ZDRPi}t(pk-CECno7Q2>MAqKfp zFfhO8s&=bvgw*C5=Tmj5!UvtNrC!NbL_XSevb0M{UmJ{;1QXsqOij!A{5VQ5dfS^a zY^u+2oa_Xp55bOi&_yMiOHDS&KW1D;ualmzP{JR}N`@Q6@W4m%{&)*==M;}5NmiR|dqn18cWvaY}J5F2&uUK=DFxcXxL$?krl|rMR=~ z;!bh4#ogWAdY5y~z2En9^UfyoPM$oOB$IhH>+u=c${3lY)$)vTn+Q?(!%^xt1=SPD zMv3pc<)*=jY{KtK%*wnlV0l!9)Dv(0)3~Yf{Svr&w1;HI7eGHCNLEl*A@`ZlTO8h6 z;^v;)ZjSYt@e^Pe^5ukh;t6G}OKR{T*%ju@lD`U4(b%lSc{VH_4?HS1EPm(0W3A|X z9k(s9GtSFDXo-uDBdUoR(m(Y~%t*)Gl8qM0w$;m^lBdy>g(3}#1kqQzo#PIBies&) zdsWD{vj{7#WPZRewaM@>li=h=6O0>@tZ`y%-XTRR56fe+y^?1HtTTlB@cdd@1G z*F8r&arBIP;qk8XKNZ-sZ@54e>#?YoJe$Ut`g`d ztTQcw(-;r05EV^Z_e+n3UJUsDLCJq@6LqQ?&+@pc`a?vW#}-6$%0e z>7GYAheD+6BW+8D2Ax;f$;r>jZZ}cEQ&L~1_w3K;IeIowxf;FAPb5kOGeG}xij}H^ zW+1sDz{4uGT&M4$2K>UX)Y@imwsYPX%Km?K)E66=D|*htV6se`zolSgu$NSYV_oqKVT`j~d| z==x_h(P_brcQ|-r>n5dPwr6Tx`r78xrKS(bzJUh3_hpSk(D=GRW)|#$QtwQEBFWzn zKQc&-39T_t3;-Pp%~i>dec#8|1AiQgQ5W$L?|jxIM;T+%fDh!!{YqG?tAUH6hqJd_ zo8dXh$9NUzBJlXjcY4kePtc0f$U|#Jg3hX9enmT%tM|u=NNgHDg`Hc`r4o+i91l?( ze0KLerukrNhgN)BGiZw0vcjV_2^}`~tF%#PM!L%E#O?=UB(5{hPX2NAS$M+HYX9>* zm&F6Xb_DC^{n!G#uW)vg2vMvlOLQ~vgf~v{nv(?FQ9ZUyJk8sz4VP2UUKB>1Be6;9 zbjfAlUiqSka|;YlrA+6cZdzwfPh=Ra&Z~3-4IQO&F2FA*lGv`G%9w+f9sgRn``8K_ z+UJ7LnGal0T-3=Ml}cMBvuEHRT%@v3_$+?B!xs4?>`jqiS1#0*!A7tQUw*1DL`r<6 zXUPJP6cGIUCk@IN2^VldnZsRr>85K{l9Ia6J&s}}ZFNcTPjk(3p1+s`HkF?~wm&g< zp-qpE6(a5z7L74GD>wUjuarp_>ajA^2QSk$kt_Ey@10o**j-m{+wj2B^)$?YU7vdG z_dp204R5RbzJbLl?0=&xVQAq>DkU_sk|Z?DeON&r1b$5`F`BeFbrgq8&>m;l9*8dx zAe?{nOTMZ$B5wRYW(5IB$Cz-ja8RHOIUpuK=STE0(@om}N>$o5tVI1ko24d>;$Dpd zAUUc|2UK!{yI+!Qo2_#U^hLl^%zGBM=J-)+SYaEp&)R3r9!DhtFd$+%crazk6t0Y= zIMxEXRmD{)!ucoDtGBU$Cs$zk=UhThbPF(l?)qW4rq-nDGqX<*BPnC2$)i%kL9Gwb$tZ(dCJ)Xmz+R_eAp4)V37- zaVFJCe-LbeM>92%DLmO=X8RmjO>}H%^f>JAKNj zR*p)4n$U=8JyCT)hiW5xm>MAI!}oqN;t(R2diSU39q4(}vDaSl)S_CgXIrGteilKe zC=gA?P$!g$!_Mvn)u`c6Td>jQSBvukg3j4>Esxkd*W|y}b+_83<2aUUhSQ6)VSFA+ z85d6SFKwrfx3Ly~p83X$?v}bqXyp#K&1X|87xvQl3`G92P9t}2=GKRT67#g|_=N#F zv9FD9#~fL<#O1YuKXa{o0e?Pr!eFxEwFq;EdLZID&X8xK%j(4b?*WHM^H!|L6PS|C zm5H88L3N!(3NmKEFN902Sy)NjyJHEaO$%r@xh73shwvH8i}r2N-iwlHtqM(TVQpGa zpQW2IQRs*{4L0J`l92!|D}G3!P}y=;(yNrl*;@peDCrY{_6IE@2S5Z5)%tOQ$6x9# zG>OMln}Xlpy}gmo<^ItX%HQ!D-24-6%X7HD+U#Wt^(L9vj6UVeCSaq&jt`oZI{mat z$Ii+eq0-Y7B|Zz&Q6_*^=)v4#8t(Iib%9V|SDBQ5(6OGX8m3d!ojtgX zcO(~8hemcJ#WDdzenlH4Vl(jGnaEx!u3xrh}?YwIGXI8HLw|wl<&f1O(#q z&)IS)sPy2ieXt_&tXq7JCH=77Oj{;r7=%mId<*qz)t*S*XT2ND56860_A!pfK#0pN zE0qM%exJmjTidm^4f%cSG;;V5ptDp=kVLbp?TTBn$Fe2fRrS}oF73tEETI>|BWIzP zt?Jz@TNG1$k5`T3B$`!hPo$FtUgtI`_uBAgF>^O5!Xx7oX$$V`r251;hRzuApPzLA zL7;JZf}}?Ylus7#(ZUZ4nXo3qs2WM8#~p1kPanVZ;^M9<9+<#_4|j$0-?n`TnmT&; zwzzBy9i5bfJl5f5YSf!N{nY#D4xuJit~rya-fv0mEw$Cy)p6|s?xd5R3Bs}qw(O-J zHw!dNgvy*6eU$jeuFK!eg&YoiEYYMb;$NXaI@PrwLiacvNNED*bu(+|)><$vB>2Rm zT#`7SDnnfeN;`uEDXUDqo#aul1TI}Bw_YNo-l~6R&AP@O%{a+wZyqEWPOU&pXIh57U35i0dS9Hub`DOYn934MSE$7pOI zIg))iaL~GMj1k@|B$H9*%5ta`7vs_6b7S+Mb)#QA)DN>ubC1)8^r$Rf(HEJO6ZQL& zXz`~jkXMM?O+;LXW$$7;&#Eh!H-4m!x3&GSeAgyeZuZV%39en!;lEcriHNb;Sqk&+ zL%X(Yi$=em+a%Q%WpKEwnPSF&;m91J9|C{F6#&-ByQy5xgvI;n(`}aQ_4CvGImeap z+;x@*0o}*P*dkr!2~P{+A|t^Tc0WfCe?aM)dxhMzVVaA~1CU@{$-KxA^UQe<$LzzWHU=+?0nN%k)#xqK zLEw--xJPmknZ%-Bbp!(6Z<3olA0ND$)#ZLsl9GRTVL+(n-)h_|b&n4phDi^CwH=an(bycEaGI5Tfm;R zCC6Nmv2On8;VPtVTyr`Ng*V2uy158Q81E>tT^!HGkBu#&rZ#+Cp>&4MYF1ijsYFj~ z0k#IF*{y4lwJKiKjYm(#6oPQ{F%Y2UFFyMx5BK()I1F?io;9vXkLAQ2Lies9wWw)& z&hu6eBm!0U>#r80$ykyV+ualpx%4or#ewXICoWxogZRY;PhD+eT_hQ{n6RLLjl%~D z%rs%ztVFo?>aiEJmo8gZxuhjPiCJz4o5!i4P0kG9OF~)Vmr-L9)1Of}96Mg+R4o(Q z_6268RX2&meyUQ&{&3mzuhope{>OzKFYxbW$K9K@*c(?02taJUIa)5}@j}`t{R@ix z%E6j!J2#9@((eeJr9m_q$Hjgj*FO=DpwcqkhDf(@vn(JIaEYDSq)!jY-ihoVe0UhZ z+hyWO-@tzGysFcxT#Xf`y7y1~A_pd&+aR@-e)C9YTga3Bjgj&&5s|OCqrh5+>W^bZ zyiKyAGPwgF(1W?uG(5BA`RmTHX|JBMKx?5;^ZF+~+GWnUZJK4eLYC~kfwpMVI!a<4 zMWt5eL|@ewZ=fU}HO>Vt5)|^X@=N8#0$c8~geQp#!*TAbGsBe%uTw8Qn>NHPvB{i( zPap|e6@Su^)}`)>L3d6xcsLQSwcpb&t4;?!avYrd65>gTGmYC~^^bQFZy>fHM~2@= zGV3m-LbDcR=VATY4`Ebo@fY0CDvfO`Ox4qhx|w$qe^eI#vXMeYcvIuU{OeELJK<4x zs)9kY%H`^W7U?c<$Z~3LT0+as+xN{kZ+pQXq+j)>HD755MCMx3n6uF8YU)juYH9kZk4J(eRh?0IpeJ zp_WUmMuDglccI39D1(OFd|nXZ=v7L1@7{`xSr~u#zBze^aDEVXNy3}TZ3EZC$--IY zrcvju^v>@Y=$?c1VNSE9cxZi`qje)noa4b5shjeS9yLlffPh3VUZdE@Y_y`tkiCA5 zW`_PJRtqp%AWfyda5=2otadQ^sN%x(dn(jtV3?KC{I#fclJ=y6A>e5?+OPYgVe(O;lNE=czgvPDmqfDwCRl zGDL}!?$SEGNLCK>Xwm}JTVeaA8$qGliN7OtminP6ChNCrE>WpxdbK!og(yd{v0y4e zkocXvYlPE_(36)XQLOB)AcQWhNOoa^=2#c%!!A zf@ZgxGfxfmjzLt={R0x}Eg>NE2kFw0VN0D@>&P&adACjdEEL8P_nmGbiyzu1*;@su z1X`#EVXDvtGxjjy~OAAbl``M@Ju&#kplSzy|H4DJ)=njxA@991! z@X8eb+eOXd3kT8Ci<;D%jqO)K`EZe#xkbuL8>G;c^&_2q0}n~?|L1(({D68sD8TA3 zW`h-kEABi6o9``nrrg1=e>lN%Cz`{1f4lQ`z)E0YwK};O_(dSC)6TUdNqn)z!u@~! z*9w?nUsnipy#|`^Ce^;J&Z?S*x(`*;-i1ur2~5lEE;LX#i#5p<5p0v~?9xnaUpvx7 zz0#m=r;_A>GH;2uBu1#WPbEhZMHp*rgZ$-ZN~7y)iWVP}@!~PW4>UnDoG{TNMh|9gG`^yL z=iL*YyJr*3Vm@yG=6yLMXYvg{16zj#*zNB>e(?5!O!o#3j`aEYCv+<*6`Yp8e{L$i zg@?8w09VryvUdK_1f~X|Jy)#o!!Cq!`yQzk!XXi@?}s$?*aOuzz6Y`4EQ;D(B%?|J z1&M6O@GK>|H&rb)o;aT0zLoc)zqp!qP%~?CwVO91_v{l?i~awn#TTxg&c-`cXFA@n z&a;mp-Y=4^yzfZJENy`u@UVV_l-^3Qdn{G$Jf6}>(0FcuA5yoXM(`S2TwoZDux(^5 zfU~MmSLCDm73Cw;ETI@y>tvx5W9KpibGP8EeTtshbYeW_xap*B$!5~jA@YU(_nvKK zd*oMI!%r!t|LFqaefzIP@(I@sbbOnSDja`qgK)HtN}AL9$a2$If^v*QF#f#zyRh-t z`%mxe8i?IxMn~?EbNkECSkTmTYIj6@6Z(r)eoKWxKTJmLzE)T*zF0>j(AXlfR7xH8?zg=^$~L$QKgEUj_~Lnhm#W1|h`|Sre4FEC zw$%cwZhk)6J|r%Cfj;a}CBbeXWF4$mP3ktG-Bf;4DFg>y3JAf4F;@#|_Ze#yjm2rr zyUv&+4vJ>6q<$X|3v1+tscs&mqBXoaoAEN+8v~Vq_sFTC*+RUi3&KYf^kKsIZm%lG zKh|oH42sbF4J^@b3c{208q_;WK!@h6*@%9(B3Q}l0@$d08W717H?doLhC4+hoemN~ z*6-&kh~Lo9D?G0@d^{?ryGCdAlUB%eTL>-^9;Cz|v3G)0{X~7P)_tUT7_}dZ^EHUv zTL;-ZNC#MCiLR@@4;nQ!J-qT!?_fVGN$EuC$VwsWh+1P?iRN>OnVMT4(t6wSboZ;v z2YCg>S6yVqR*X(13^l|)O1IJ9R-hxe0xrm?19ka+m&p{s;`X;A9{Ihnyv}4XxvUgM8=|TL00C!4U5@!o=cJ@wU%o9WkG8 zgI>p7h)6v!jJC>^rNFfYx~>7WSY!{DC4WL#AuOt|K%@6|d1&h$T_95P{7qs2Z(;z6 z@4YSV?7NKHZ@|wNA$ghkn4)JV3%e$+eTTjd^3s@V(Oy<+4BTc+>*OP7b$Y=kPGUJP2f>OliynVip0>JaQcLSc6 z%_BahRldA7bx`lUR?~;m8y%V2g*hF*eE23wK%ruoHDJ$m7?o)TL7{!lQz~9*Es+m7 zAVmY-U!-Z1*;5*Eh5W9Au-jm^>V|f)U^|9i;S4#oH1LGoEeH?H=j+ie&VPp9jbR{m z#(#KaZvhi3Vk_Ap2*Z$Z0CP&~X#gEePfBOza$@jatrj&@K17o4&1Su8$pwEEnUWD1 zvWueDyTp#c%wN^kRuKTpaJheq=bgwZ-ana*F$|PRw$aK}v8F00d-?A9pOna{;M}!` zcA^MZ$eB2w&d*{BGGDYrH=cqx)q-xZ+i349nPX#Y(kFtIxqeZH9FH_kI463OFiu`( zIiO~2VM!5vKM_~R4SGQk7W`s>0?!c!c(WJd|a)7H0Maa%DN`9qDi;jfQ+r+^wazHD)oO59DwbQ zr$M{)i_iEMAC#ZAiGAh>W~O_#iFJeyzMxa(DhkseI-j^>@yRAe?|;4K5B2paunNO0 zzAEiCKse9}JAm){hn7z}W6tWds_eaB7_@Ki3@@dq(9g@Eg$F{fd?+>iiGw4)X+2C! zN``v@UP|V~=#r7U*pz;-gZY{fOt@l;d~F*|x1IN~OWF+Xhu-o&s?YXiK>tVh6Xw` z(I7Lzk$NZrXn&RKSBT%BR~z-rIQ*V~8{X8|d2Z_h72c zI{1c2AIG!q@X8ZUum~C>({@z;{>klg_(@p|E#ZawXDOZz{tF}vXll1%|4QU18c)C* zs2ntL)?aG40Mvl~lq06Fun34=pft)~&olq;(Aj^#iws^QV@XT@1pZ>tW2{2aLkhaO z2oyWve5%p_;K<+VW|ViG>Sch}8bF)^Ck0TrL%8!Ji@tmttVV^vCks-nX;ex1)Is!>#fx{QST3 zE7eGZe9{5bDSvYSveN#!sLo zS1^Y^+p3B89y`I4@yn9NE|dwMahx&*izrVM1#2WPX6X|gvG5~ggR(?Tgnry$T;mZN zQ%_U?+N4EErvV-^`o2iRr;0pfdqOm0dg8NdyDTsVX$+L7v|a`m32{%6Tg6EF(4=To zpGNmmT{HX_s`g9g480;I9@`J+RKNJ2&Mi^r&eqKbomK#z+$f4B)7WLL3u-JRC8)(# znxMSAs&fzCLeaiow~@{<&!{Evy#mI8JABo)gs4wtglkwFnkh{QB)zfjoRNsZ-|sli zDD~qLurpG{N8Q}c4xm}FAnj~)dL>inXp#@m^INc-gUZaLLu+49mDS_0xfQX8)T}1; zPYmAg9}sH|?w;0cWkmZ)@NOpJ0S}OUmR`#_vklRAe$sNQ)Xy(+(gE}s`fK94CHOhP zit+F-zHhLYo?hhMt)>YTnFdh!n9+Qy)7^{S8DX3+OT!JwL2MkgN5Dy8g?KFNthsd3 zl!Og+Fx+Gw)nJ*6&56t2Fwa-a)H7KGv`K;ugWGuK#N`xzWuwk`;(bNnAi{Dt8UNBS zCv%WE@9&)x&OtnmH+B|6;CYRI0Pj6nFdzR`wg$Ov5ipKs|%;$z$A^-~~V&sEPosEllu0#|x#QRy|G?sKa zU*vuJeDOCk8iPGSH>M?lOD8tZ&{iVPaw(|dgT-S@t`6m5ogNPMg%gJ>M?)3X5&`KF zlOEtBv;(!W0xS!AFppaPs?NjW-X(}f;G%aH^LeQXv*D`DAU{ezyLEp>HFQPgs^j&k zb@Fp`CjWL9d4H@QtJK5^_kcx{tL@T99bYebyK4TaCXJgS{F!+^ub zI|$K7dU%EWF|fp*iH3|I$)PQJV9NtI$W29e`K<(@?MRj8O#`1%n%h1je$>_o`OW?C z;Qcg#_ulXLnmXu3RS*GI;?HRCetpE_68U?N@Fg{k$fY#jSW0){BY~DF-pVQuoropc z1sMIq!CJv|5Rk3%w=Dt>v!_Db74UFd@-S;eUVrXpP zRfmTnc+u}CD6-on2hhX_bm?{DCpF)OCuLi9F)!cf@G!S`nb;dWs*RT2s;+vps>Op< zJ?++~H&OOK)w(SQo>o2DorG5UOmxI8?baI#PWJY!@wTp>Emv%ie)J$aA@K7k)XF!W zuVvxl?DzHX^V=2P@=;(IyFN-CcvzX`ncqUXyHX0k;_lC5KFM54atxP%=8@D$8Oml! zDNma(JAKPGI*O7EKC;+BJ`8dDC0VqjM(w;SmvSIKp**h6w-rqHirk%UsRsYri>(lUqF zY_68Ot!8rbw=qf~Z9v~y0jKY%$WO9KlO-ls_s36eLDW8}m_D-j#jI@PQffGVpcd8= zvl9lA)u#uhLj#II&R!e0%Rg$^rMU1D_PlYblHxp4u&!~EzyZEB@#)Bc3xII6(!=IF zOV#Bppu1(RA>@dpo(y6S*jjMoE;mt2o)|Ls@&8k2{X;-qMy{8kwmN^3<)(O*nNf2) zUaGyQvzO`jjjFrIZ+E4UK-O7{W@Y^uPNUZHeP@1Mu2x;5z_6d%uAmh5)OQtW5r5o- z8p(0&+=H9t7U-pN&YF5ZvZyZtldiq&Hd*(?Y%(?xstY86K<0%l#sMn(G%dvAV;&e| zEAZi=ujOL#a`zAXX1=%v?4z$syJlctW^-L_#V<0MN=qYmjJgX=lL(oOewIEdar{;S zMPpjVv!~zQB(zgxx4WCjE8Ot3kC$s=q_ec}xCgoXO6ZLrF?nQ=+>5usunD?S!>0~x z*E`8S(yLd@Ca`1t7RsHLS>fEVneKiy61ctY+)>|)5fFKMh>Uj+kqKTeS^8*~)`DRL zF2V`)D3j$CSG!U`AdYCTqbrfSYN6SH&j*xK-?a08q9t8-WmDE5&i9ZW*<(c5`~`%3 zUAN8~d@8&e35y1!?__pO+zRTC9tU+}?x3fm;0Eg6WedG~IPT}r5tJr1pfFUNFqt4t z-H1wR0}jLP{C?*G!VW`v;pZCfu+C9G`Dp9 zG*P5T#CwquJ(+*Macn<5RfUs%BoTC+&=b$^;2@bhK{WG|K!f9_pjQJ`+wsMT55V!W zT4qg|EK}J|e*9SEJ`HHZ3l3cq_0q_*^C@e);a;s5=f!txXFYx_+=;veMG&r4Zi_v5 z)-nW|xjlzpr$LQbLb&{ojjk&BHs)5DNkHQLuH$`%0hc5+*T`y!KfN=pb4%_?^b+%h zkzBCc7v1A#$uAKO?oYB?styX0W{dctQM$KOS~<=^M_)_Jq9hVW z5?|4o2&(bPf9u-uZR?}~{m6D)q%C&Y-WaAfH)8om=;&ZK5y(;e)C%nwsdW;3$hwCK zOEQBJTtVgE=-WqJF)}zSN=Z;MK~3kd2k9i*t_X;gUsTHOt9go#vfe@`8-QMcdMjwu z{p;%2oQ>j!0OYOSQ*n-MT)^l`mTAcMh{^oqj#z#Arl=J*&fx77ye4Uf`x#K0FHs@@#7@5Z zB~_W@Nx*oW#3y!rCugG6E6rX|+(W}c6kzd_CCR937RYbr=D^xel*YoSTiU#G_x-8| za!Xn1k9L&it!oq=c3k8q>dI z5cTv{a93&UPjr?-&1U(RQi0GB2Jcjc0>ehJ4MTeTYswR45RVhMPX!|*5nKso4=(w^ zA;GO^H)o(1p;l@Jxnr3Q^%6dQc7W@fcE_Idf<_PMnD1d1y9WcJN57d=bb2Oo35{w& zEN4;=((qeCO~n2@{oI6q?E8aSu#Rn^qA zLF4wh@d@;KEb(gRpMT)rXab8yDmg%!r1Sn)X33wN_u6n750RyV=?^rgnU%oMunQs4 z2dnDm8AxRxr^aj$u*arH^MHJro(g%KO#(j*%4FD!U&?sNJA`WqMCy zln)_OkQw?dNF)A0_cKbNw#dLc=qZrnd&H}tV+gPZZIStidH*W&wz#g(7w#r?*hx9O z>`s}y*&)bQ5-tzF?DT6)tc# zstB5Z^x(;?fkSegd%6=dS~Ir*^S^8T7>?3^rpxE9yqnr<-#-`~OK5Rgb-(3lyCn3? zq*rb6Y=EZtxFAicE^?{6o59ZSJHyuKWxV<@RW7elKe2~2d{dIWd}7PXPSgyub&{i% zGo(eag$_VTPvgB{p2a!oiHO(it1w4&pW|Z4ym?vSpB1-P->GX=#bM=9L+43vpn_%z zI1Lw`t&S)a(syx?Xe}=L{EH8wFP|D}>cng0lIh(1NiUvrdxEy(SiH5kwmX2M`Wp~e7D_ASI9A{iwKJfR z@C@jRYnjR9&V*S5GG8~BZ*hpSRg0@Qy>PNweF++?8GX4{OgagFvMN#K{0 z2d7wvyF{0x9Vg|L-;sQR zae}S{WDoOR0xqEe9G0efXK7)Th6JdDFu9A5RdC%cD7g*fX0pnivE{!_#3Wum^Omgh z-EMC8=_4N%l*E@)bA=lqsGrQsfsb=jwV*Lk^=IUR02;L((-|tQB4`dbwWVOY`{LT3 zDxZ(UOuHs0-NQAX9k$dxOdj}M8iK_D<&+%Tw|#Ku#aQN-k-di;zts^7VU*3RgWDBv zVndHB`7Z*GF`K_%RegR)q}Dg)*?4N}v#~L1CIXWb*k-E!L+=jMBy^Rk#9AgKO_7cAtA_2;_g`?ny#>$e_tmmE}?R97yH)o^DmcXMaT6LduI32AS3@yMt`Eq$RA(Sf0bYDm<`_BQV{AV zqI0FFxoql6jI(o?Ulk#n=zk`wk^NSy$_#*fcec-p9%>zlZ`CFH%`-XpD+rxMGQH4W zZn)KnnZiO1!R6=jE&7$y`@RMBwq&z3=Z?p5%00;kY5wSz{n`y8hq~Is(!Exh_ zV@ZnCbnF$t6;}qMRa7PB3YKTZd&q77PO?|GM>t-KK47aOQ^7)RkcV&=%lSmpe3T4$ zT9N}7x=9r4Lck~PKbqTox^u(F;!Q(SOc zlrr1`xKirTbW9EV=B51}n7BONnwhCchD`C|Iq`#@euzx8G?*Xk0RDODa?~Bg%cIH< zc9-u!0Ol?6+kVl2WDAQbpApJ^Nl*fYkSToC&J+&W?jjlsU$SdH(GJ#)*QnzC2O;n} zS8XD?Yp<^8XjDr6lb8Oo8_73ZKAuUlHVgQE-hdy9E!@xan}W~+UyFVhmmN8QmI)5x z5yxH%Tu>0RN&XkMaWV^D!((~P9x5iWyPzEaNsz_UN!!%A}4Vv z2|QH6e@ZOXB3yz}hn%vQV9%8gTAfnUKKNomnX(m!`}Dp|`y+A5ci*ahQ9YzSk#MZSsL#m|FJSp zq>9ioE`Fgr=wh$ch}kGN{3%()g}jY9cZhNq0Tk2AhP(M>G_vM)FG2d5XY$KZY|!>j zWy6?=-Raj^?sDamS1>K(=b>)L>%y~G2VD%c1~G5gqqgDi#_Pb>KntKoWZtxofXNam z#ob$W%$kAOe(wtF_a^(xWc|OEZW8r^TNWh~wRrEU5pfxg4NJmD7WJx+lmBkkm+|@W zs_1bI?*q)>pRI)ShQF`F>)pDJ73_w! zhK#U@5&X(+!PK|-wFPj2)$3cw_kyCQ8TGXQs=waAGG;4ZfNFJ29lHMZs|?f*{3Gni zBF;E%L(n!~jR&5>*?e-USW_#Je>I-j5}I1zC8F7{Hi9^ad^)tx@-Xrm-ho&K?mwUn zTKy}8IH?6EguU@Z@ROZ33*#rd*VPhlr^`6SZp^MaDETExHomw-{(Q1xdUHR+W$4vJ zmD3~X9I0fNyTm%zz5_9UqG*!}Mkwe|h6#Qdz9jP|X7EAa^@w%Muv{tqsItFIw?R=b zS2{$%S^P_vSl2A^zhVlWJw^UDcD&w--U|6wJZV~LAzVr^hvJ26q{Bh+;>-_%TF{=p zjlbg;)$3S=P(C7=KObfH+)8;L*0dM;eJ>_}m zbs($grP_YPWAnJ$U6={wY5T?rD+@p~;~Vf}n~^Ea5npdfNF&j)%Ys(XGS2sBBNxh5 zqcj4@yraR!IEB4h%#GC7`{JDpO|EbmGyHr8cGcGPj=t_>aUrzATPDwu=VhTypGZ@r=Ad_wjN-Ml0(5zQncAUAZ7V@f1Qiy(Z-+f= zt(SSsrLC7SLUm%Xv;c5p2R?sZFXNaiT`v>-Pfu7|$7r0Q21aK}vB@(v_g*sX~@5;=SX?c>DWuZr5Es0ppy)VDV#!_2U>_5GR zy~xVyzqygJx4)scGHXtR#y3|LVTT$9EUoPPu+uX9H1C)O714^h2|u-pGXA~ z6`19XaZB>E`5cf1I5wn^8iDbKVA)f=ecmKG{8uUTK2WL4C8a4YDcEnvx?2C3h?Qw&}g$rkbS zA&jnZI<}IR^!mXpcSIaJ?#k)N{__unx3ymMH-UM)lJalFs=z2gVcGD+-g`4Mg7X>H zP6PG0b$i(8YmU^vw?*9T1$Y$-2J8;5Jd8kMfwPuy zX25+9I`F2GS9;Kq%gMk9gYV4U)ZpPa7;E;~UKBj+8$vaDydtQN6NZX;8pcaO%6}X> z5tkBkE`Ij<1JEO*YWZQy-Qk$;Gd8?6E z%b)av2dHZU0E1Cdu1Rmxbw9(`jOV(B|1Iwg@PyIPZWDM}I7#HyCpa8F#)cG6b@QST zfRDN-=h2$Kc_Q5R(9T1$GgoNslyUB4+B$ew zX}%o588}G8-t~IRxU_9qBGB`}HE&^3UkUNtG{XgJ+3tR;gAwRK76`P41_4|usu;ZgV;zUtGKzP zcNKOIc;ETkJLF0zQMiFMiKT90Bak4fkUSB?I<0K5sJr3VvC#Bvw5}0_o#+Rr>F{nN*=ISv_Qs<#3>}R-d?OJO z9>q8!`!)9npGA7=aW&@Ibwt#^PrlivEbX%VGtzuvvj}h_V3@Uye&V=DmNW9Vj%i&g zw43qf$Ts9b!A-hf4OeCk5EeXxH#cbHTp>(9-`omYyrA2=6Sc@K2?`x|*uv07>C9zy z8G+~oXDNBkej%wE>M@oET*KVsdc2#xxwML&Rd#ibZWc<|lUk&<16WCj4_9qrf%rQa z=y#rDahd^D0fbH2{^&=zTXa?;+0B}&Hz!xf@?tPMXh(|nHy?6759;%raLUKP4d}C>j zWJda|M8oG(lbsgasA2IdjnIHHhf@VGBe!4fxbx|9p(}H8|LX6DE&;e)!Nr2Y#K?5; zWN}t{Yo^huOE+avx&UjPW+$vC+nfpA=AANjm1b8oQB+Ojlk&zn!4^p(nKIcYxwhu| zwOia5`HN+9YnqK8B-kd_tPW9Zzf%!v>}5I-E{JaLb^lThEmGHbD(i?t@9%*qWtCb^!;NwtRa>oQ2CVm`9xLbhLT&YZMlu5*lc{6+n>9EpEg^9E0Al5QLvJXCrY!*oc$cL zQ7IEMKqt|eO(TS_zK4zXb2O#;W!!6d7#hB?n6_h@V^BWm%$+FRe*;`{Qy@s~Nf&xYpqc7b5dygT(U z#j`5rSq^~j@iampc>C+_``slnZMEq-Uns0N4cG4i z1iAZuy`h5o-PDa>!(+NOswbP$`rJ?f3HYn(Cf!?65kp+Oo5qMeuyNQH4p~h_KwL4~K#L^$p`UA8hxI^$#DI#-FN8CdO}B z8=@9=T|d!%yfy<|E^g5MA1tpg*rU)r ztjGyGlqHdJsSpw%FLc$N`!g}S82W9X17LsDwGYyRI3HJO^)m<;M0L?W=3qK`o0x@n z{X!=$?&^)>^a!)oLWTJi8Bj@9CiC=Vkya&6pfpn(DTSn#5-m$w7u~rMG7>x(O7S9L z>GvgR6`8^&`}W@cO>~rv{}BSV@Ea2z38X9%v(M+X-?pB*;u^Wk9YK_69Lwa~s22X3 z7&z)1ROYa$?B7xF#skH*J~~Z{b(xDh!kx4q+`+YZtepsadw3UQlm33_{v(KTl* zGAXKgw9A!{+veJdpiShUz?Bep5xnM4==~KobXZlBOFCWSv*|wOU;48K*6+KB=d>Xr z`T(nICW55#pF_8%R#lxbhnZ|2ecMWrWu)J+oBIn zC#?7jtMC0?=)PZ@RCkDtgr=;fhCI`|ny{QXWEcG1U7wBe$9Ym7XhVaJ)IUP4eNC8? zPm(vdcf>A{KV=#!8*dkvMRVn;Y_JQZmi`J~WL()XISak#M5;0pt_{hXmeva zG}gJMkLh7I$kLz4c$i1D1M8O}fMT+zid_`<5Ta3zya3%el?Z zP8QQIf;Zo5SL<4jcSEwH6pu;_(KMa09}MiwifvE&>Z0 z;cHMqou7euZUH;AkpI#xNPGxnY>UO3e$ zChUGzx{AX7M5ST4F7;stzqlONmebn9z`Weg4#LlKFNpgcfj0dxc6MA9n!pZw%L8@? z9HtT_v72mO-1w>R5E_w}#eD|u@kHZvG05}W^Wr{uQ-Iw@Nn_kmk%x9;kb-vSyOseR zc&26Y*foJ77ehBKBm2dD67H-J=6s%eLEMLjmZir|1NLXN%(=L4S_YV7v5NU_+cEhC zjLuD#>q-pVj&VWUXW-5b>qyv7a8HQ4iu%+jzhxyO$4~PU%SPE=U3#+L%bkP1%#C5TJo0JHrBly#@|8h#$(T?ao*oCRBb+Aiio>AXCl=SyEi`-@te{}? zKpQyXxFI^ZxvnswSm7Jf-Zc#||$_ob8 zl5?M^fU%9M$^1xGlVKYioTRu$ywI6l zOS~lFbf9jL;dqZ}iXPy!9XR(dl)WlwBcr}{Vp~4i0w|JcC0GZdSyRwYdU2Ci7Fp zyx(ad{);8o7!&3iPYb+un%%ym#S=yO94V44&uA zz}Lj;2ko_yc<3guC7v^xQb+DIMNxHlbtEs`1L)v^fG|9;jT6^=`4vX(pMzO$!TK3s zKX?lYAA+%E*WnJh_eI5{nrKb-ooOP#PGMv^%rr;CY_Aw)=XxlM52`*CQP0OJ_t_b`D z;MpOf&wc}ZUf^#lP4(O%F7RXp{8@V$-?(G9JfLsq4v|E?gkiZ*jeSAEPr?0Ih|PY2 zdr92IJ&gx`m@|72d(NTZn_aa!V^#~5*aWkooCoeQ6l8bG`xM|=!J+vF;1dFGABZkv zD1pK$s%?llo}u*Gl3VRb@{+`Zk%tX+;0D4Jl@MP}uP9|ilTzg1cRMRj4eYb!Ce@FeBusl4QLT&_z#M&Bh#ykzz{2(rlRe2uV{*U zKo)Z7Wc#su@cl7x`r*cj={^SGhfb_x`2YE^4~Ri1KQvveRld0G=vZ5*vM~sWeQaDr z@nvjF7N$=0r{jK%{IH+kUJ&=Yaw;Lu@d$Pv&DJHS$*h2#TO_Yi*mbs+7Po@IFYn>D zesQ0T`*|+wS?(oqzbT{gBz6*MnDbFi0lVM$A`@Ds6mf$zyW>qU*ru+E`vly}!#MN=7O@gYyYisKCq&*ulNp^Q2wl;(eIfs2*VJR=1o77=4bYUE*W6V_4uFmSutdl`! z+jtxQ;Qi3^QxfW-mjs;+U0_G4ZyE5+Ni*}Vy`*t_N@{~0ges^e+ZJBoqZsgqG)cPq z1(=H{*!qRlwqi}md~e~u!dwkuUJ`RYu$?(V&iouu(-;ox>St!hn83Gcf#VGz*K9?; z>XnZ;7|)L^ql)?YSrmHr@h1AAT3y0E0r}FJ?*{UP*5(%SC6O0Ht*MEPDQRA>-sQot zL$6O_tT{F#`vospe;$nK7j~G%p5JXB_SadB-TVZf)(Q4s z+c%*v3B4TaLLN-(Lwf9&KIGxB)abVx?>JJ$S0B>!xiS+l-$rg-X0C=X zFNwJx>ph}I^()qY$8TrhsHDE)0iUbt3T`|2j0~R(Y-xD(2>Jxni#~fbbz5-RYpIt+ z-P~bC*`p5ou^Th7nbgWf&~+0Xm{CE}UZY}#Moi@$Msyv~YjjWB@38-Q_GOQ~fqmiX z+Sn(=KHA4iDYpZyDozgdljg!OH`q&sl6Y${%&#O3IzAB$!?~ffG*OY{M=Ii{iyWpY z)@t|pi1SdLcagXnLA)g54e@}oJzYold*B^Y=2-jK(Csj~mPCHnXBbS|wc8N->{`I*p_pjpzmH`7YN6>LpRXXOKVN zXBD ztsd&(-mPWmwz59qE}C7-@O3*n3qw!p&3sTXcoXqQ)2G(|I&dECdb$Rj4gp>ga5I&F zC!<}^Cj$dQL##_|gP{M3fSaiV{0i`A1l$hf%|3ZQ;3u*J@3eQ0*RN$z|{*fv5io?>x4pect)1SoYiS81KNR41- zG{0BQ>ECsTGu~#|w$N`n^rbQ6E$H*puba>pg`N*xFt_hggcO}G8*M4M=t$8W=ffoH z(VoVw(%&%vC>yn5;oX`shl;t66?4_1fQx@E>yz-Q zfU_&WMX|D|26#fiBim^Sy`uqu`6Y_9qpYZNDnPU{^xIwJi^Qq0*7%Z(^j2Jw_tM=j z8DIauSlAi|<=^#Md^YAh1Qz*4=4=r2l9-QO6$&2Wy8M~$rt{u4=PY!mpSF%V*AV&^ zotCp9nk$lp7EI+mbBcq5zyvD{1lSN0u)Igury);=lBbu+mqeZq1#j05M*ZA&TzWi? zeskCBB52AWZ?R7P{;nC#J1>;z#p0%2*ain#kWir7A?|Zf=Yy%UYt&1kE(Su^Yp)BA zm0}$RwS)R`Pd;dFEcVKr0sxUArLWvoNQ>!@MNs>IUS}D;E9)avn}aG^bd^s#r1x)bL8Tg=?6m zc}2|UV9tgzXV;jQ#9R+Vt^m3HI2X0`=XRWn_}rUb4%Ul3tH-Uz7cPSytmXZd|^T3wzmou1GD0 z`mmRVLH7NT#y^jo95zN?L7s0fsz#m=aurn?DLb%cl=+UXIEB$_NV{6;4)!8}nF+ z=(1SD47F`0yYjUe?ZQ0?^W3hfTIQ-O;C0LsVy+|PoD5Ao+sBd9gEyWQbBoB)ty5X- ztS};qyZ46=Xg=S)!Ul1liaie*qMW$bvo8!qYhzy!drgNnxyVD4%M)glFT9W@q7*I$ zXZe6g7?O4oS$@ccmWzgWr+s$|ZK>gUffs#;THXoqwy|HRUh%$L zyeH)SSHxSZdu=67ynfC#Ne|!Nf>?Mp+cbq^DgSM*$%MG+2;8^0CY;2&gbghaGSRs0 z(2+&&t@~tQUHux$O7~>p5@iFYaSwU)CL2pc>W* zv8J&~5u-OKc;}GyvF^$x^R1Mho#v9UYlUH8_AHs4_f^2+VwHe`C*!=uUzwITzeYUo zj#m>eh`3UBjyE$;#I9Il>`I8_ln_O4amQz*%?HpXw|L|1upxonH$EQT+ry2_G)bF9 z^W#m}@AMf+smS50t*I9GflyN~;BzwHmdSN8ugKw7GB1j`ymb)>4p_Q%KmuEMX+VMm zO%m=t;_?A3f6_m68|Ft+;PDnG^)+ho*@)B95RiJ}dDpOtctXUFyKY9d7z*sX+6tIE zswMbURi5mqbyr}~PlxVag*zqXccp|X4W$5!3lFkSyiqtCty0n_1RHt z!mWqSzA?ME$i_}$trPCFx2Tsu{ND@rU&nnE?ta{N33uFWMfLb(#J0QanPdcytYsz{ z0htKMMI<|DB`YT*)QY+#@iQH3Hj*{zW?d5Nv8!!%)U>yEta)1b(H}`%l@1j_Ty6Rz zF#sW7AMW0dJYHD4RR49inFn8q_7B9^F0obQM1PXt4UeDzn%n%=0))8`FFr zvM+_ud|lJjC(|$KBWc!4x**bw{Bh7^`S3v#ped%Y^KB)zpw$dCm5@t9Jqc?zkTvaP zT@Y(MhyLIN{ZT~CWkFY)y;rJNtY6k&tXVJXf>@jXh6X8^MNu(}j8^R@@;;&d`>fem)})(tNvzpThw`paQ&;?B zZ(}$KHR(m!Vz7zQLIC7r*;9{L|8>?p>RPzOniL`+W!4F?R)<|ObZE05I8{0-XP}Ll zudZ&tIAWd3d`Y|r+|2HPgV*NgK7MRW%2&G@h&3r2f&j8Xv|rvy-uVN19qyuZtD$9S zX0O%hn|#+%mbRv%*y)%JWX!hW%cSF{@-aTP2DjEW)=uG`1vkHlTjv#b9qxp1>jP~z zP?h+(jy4Qm_oXnmtCGm^J5eQ+`(<}FEP3?%O#R;8uQiWcmUrH9)I?C`(@dpyh|Go*j4?DYUVgMe;@9u}P5& zf<6Oq8c${G1)lc}Yk?;O+#CvZ=-pNH^xi78a^C`~H?7ur@NsQ1wd{$$h1rOg`W709 z-_y5n1g`GwhQfFDTnAcu5g0jiL%|#ZuT|PQ(BSt-*nJw@QewJHd@*tr^Ku7T zE%St!M?+?myffR-ynekig|==lp+SdzToqM5i56B1>;pGG&-wX_Gni-)N-sjgE5cWJ zxaY5w^$EeV!QlC2@OgpPWNaJv$Mjx1uEdyTJ(qQt2~Thr&OB1>&t}^1qYh^D8@(v( z>~X*Dh%wll2j8(hh4_CY?NUDjeH!?mNqrN2Hk5uz^zFcCfWn4A9kzpc_BM#)?ep?h z-IGWy!>~LWrYw5|NZ5CD3#LjrO?3luv0>3htQ~&vO z@3Lw99?lU<;T9SHe)W54a)1+@`Cu;%LUtC>uSHev2a}w?m&!VEjY{9KoS>XD9*gowK2i zpfIRl1VoTyX(y#PHWVB%P@C|Ye1CMv{7g51{p1Zud;p?3lxiPf_Bt@PI55+~{y_(Z z-jxyIenYD2jtzI6iO50=si<%!TC>|e63~1a#d6cnukdg$&>`h7`Rc=HBl(iZtC9Yr zvrlR*uU27TS(7R4^dIT6S6Zk1N1)>j=Vpu{CGaKD)2f1`F@U^!e|sN7yG| z9$c2o%=12bJ@dSnQ>s{l%NVaQNitVqNfW~b8od3S#IYRYxMsTSFZ$YcFYd|N!VF7C zVQDHc7?J}&(Yc1lbCR)zwJPqnI3{(VW?d-!7M`_T+$UmBw$v-@X3vMRPl$aqYnV&+ zdg`}&>eIshK~Md_+PwbabDsK3{vUbjJO(drX<%oMmFw+8o#`2PejKC?)kn#4y^`vK zC>cC3R~LSUhkJoak$=gT$nyc@OCqmc_vKdiWm?!j=)Q=)pl-Dh#o~*nhLP}XY4CZ! zy}&pGS0PuIys$#A7#ySAX^3up?bVV!A#FO4HtDBb5^XcEzBE!Iy;XIzw}EEugrrF| z0w?=bl?Xqw;bS5iqg9&3;A?Roxr10ihkVb1oQ4QjH}ZT0w*h%x$j4R{ZHFMbS<45e z?i>e`BrG@ z@vWjFvDSk@*Wx-jf6HN(K0zMUKdeq;&r1KiQhIC1!_4tbZ zM<-ma40z6fTU2froDvG_6eyO#ZQ~$%#CjImbQEoJfp$W)RScVtZ`xJeC-|<|6fbR5 z3ANWay|ph~0wY^hhqj)KG%YPusUcko1C~jbL|TncD(LQm4eb?ao^6VB-Y4{m_d6g? z@37;cICB<1fesCrX zk5aT}e%GAv*g{Xz!Zigt^1`I6h4FLa`$0`lHr+33>KxV69sfIf*6LD zxyv&SlqI4185TKwWIl9$52l4R+#H8pp~7+Bb-i+*j6B_z1&$zZ^4nhP$rnZ5R)hb@ z(Wi^o{OUkW_6;SDhpq+>vlwI>_;{%rOAe5RVt&v$2Ex%02qTf!sU9FA;6_3C42B-7 zP=TZ1CP*i1v`gw=_zC!I2>gWLvzyKATj4l8?H{dhjA1*qVg?%1Z5yoi{Z!nKG7xv# z(tQn*&u_5Qcv;694@~~*a7GTQyrTmt@|G0G)GD#=gr%@nw&8#}C-$|7;{tY>?|Ny# zUJ`aonrvvEx=-J!^{hmF&TMH>E$ZVXs$6y+8PS9Z#i>ogy>F-SB%G1_?6c3M3#!n8 zAs44%lnG|ZVQjafT=LdRN9 zFi8srnAF(#E-%)9ojEOFH*sqYmPPr-MU%3g)MUlmPbp+jyy^qJyvb>q5j$VcpI5LK z#w;{oFA6&!Xgr~b)r4IOY}+un;j6nSYLe=KBOh%qA#|yhaUgi%+P2>|IFK)J_|7h^pXkX%)>bAYB8%}5j&1Qcp$66mg8`MR38oQ6rt8r*TOG~ z6$t|iX^O0-cczu&!zVQaK5X@J-s#vM#|2zupD$`}VqX+{F)**;V@+~9nkZlIteav3 zswb^Mwx!@asc|^-MwMY=0|(N3#Z!GyW$s=HL-4VtG`6&cG+koAKyJAQY|K4Kd<@jhCifkqG%4wy z9itS3rci}YZ&E8#+PGc{9BOz!%>^9ndyHS%q_SXCPwQqh?yC}TUcyL$RmrNEd`KQn zPMGp@n#sbugR@ji3Tj5|*}9oZ?1gzJE!c~~ZiZ9$#5d+`;j!lWjoo|XCmAR>!x?|b zXAp>>pkBmRn1EAV$k8~*7_SP-loV-9Kg~sbKP}Od>{B&$R+vLwO+6v%`Yr?d&gY$( z^bgPHjX^s-($YClQMQ2-p}?Yq0<|`qnc35jOKxlt-qR9a+^GPED|8DrOBT!IQ+lxO z9)4e;dnpCB5VZIzb8;u=+ea(87y2TbxEI8o5jxOpuDt_r-0vzj?J%1@1h=a3WVwtA z)us;C;@crD`#$M&s`4%FPBU?A2E#O-YIIg+q#m`S_ERtJ+O4IY5Os62302*b*hqit zb!HlvbT?mfzakKqVrE9M+5fwS1L$cQ1Da->M8Gw1Of$oE z8CaZlX#Z8E)Ts?!VlcPI&@g+DGu`0aOvrwnoWxHGfm_*=5$qFUA5CdfO5QTbhezFG zcPBJRXAyfg!oC@A)IlxJ>(Zl~s{ocEme6OT8kuQimr31Ics<3Zxi>dNP@EzM? zc{D(Sr!Bh!4E~-)YireV(n^!}UO4(loJXVC+>`dm`kzNmqbV9`<5`KEWGh}8kmrS* zQl*D()uc3TpE2ks4l<&-wVL~^n4}SP9xP1D3cU>w97uG!mv$mkUx7hQV-9Ij-1H)D zG646ta4Qmlj{s*+ZJ(ZtbgZ~9kiKL4^a1p~!d}#5 zE%L)CXsAqs4=eXgzCLo);_F6hhCf(~Y*>YDNBgv!io1|CPABo+AS|MH#H%$n*Elj0 zG!S4ny|VoxuXY7%k>`b+Qfco!*yD)4`w#ZJI3&vdc^Dz#4?Rw+0C{v%ab5|D<(%uh zJIKruR(>ly;tTvrd5^qLM1MVXUZt-F(l3d=VGY{mBV&<>9)S$%H7yNYFBCqP_2c~G zsemo2hHur2i5d*ZKs!F#OM=zjkP?sWz@Ccys925RTE0Ni4>ckLG=%As`#+DK2AN+= z7_Xtvk4J7HpOE=zQmo=*H-zt-37?yvNeX6P;y6zd%xYh|g~MdPxZ-Xq+2pEENSh9% zP5NmUL|e%l&qZMjGJWa&&9ur*uK>JE)&AuJ(ynDHKi;i*d@U>uTOrb zPd*jv-}cGldEQ#Q`ubLVJt6F$)z=5s>ebhG>g%ak|F*ssaU50+t?T?+`T9UzXT0(? zRS1N|8}X&Jm(m_LzN+dH+81?am3RSlL8t{8Sire%cjbFE85>2K6~ZIu-4D{2v&9Jp zAriQY#VKogp}jg~LgKmd@LJ;e1sB!C^CEsvc|`2{J=AqVw|y>&5ZRiw#;|at?V4mE zs*5nI2iQ=PG9z@pZFA{{PKQA+3A&LDwaUDv8sCP2AiRq?>rpKs$5pgs^{B zU#kbBuK#s?Jr(QU*4O&3B-tz0|C^fi9};W%x*@l^Arr#>SvMq}5V;o?zxw(PeLWTH z-`3aWt{SvgUl-)sy!!f1eQobLqQ8Yv|C^fiZx=?{2VK7Zd?D+Euz$6XRg(vOzW=zs zo{RNQ>+2(G{p#yG_4SOfe^y^dZKuq#@nyq$-I(#jqztkzyFa@s0oMb2cNa>qFtTSb z2`*fM@kve%!Iojz0a-8JFY=D*B=yMiLT-nyL9)1OnytG@6;=YYr|l?v9HTQ(Lv!^U+^SUqE?64b*%9N*HdCEr8(5Qy5#LAZ@`^7SM)QWjb_o>&BTD7M zVb`d3{~e5K^3+q?OY@!#{JL~cqi`3bfgPp{pBeOxX&3tm?f?&sB6OWxdi4&_(w5}5 zJ5cxt(2<+hsRRfuQbk%yCPA#v}IX&4Iz ztAG_`swqA@Ou+8Y{8QY4eZwYx6fWKY*a?s`POWz!@e$yCruWw~&+N3KLhZ2w-#GTo83=13DQ=Q&WOF=a* zVx)@s%S!-PHorkuLa(^O?njDc8vdC(#C!(qbQAKc*kyiuYy$0c<(m6)Vv z)_?_NmcZpDfj2oWa2Fwt;hwu)%xAzJJ1*C-w>U0&>;++G>Shy)xrOH(mlSq`)6~sw zLX*tPjtkte)r2yoJapTk(x;#vJ1(i{OC@zaj(S4WP8Qm#CAA)bpZlIUg9^_3olXTN<|ZLiV^m zWBEP&si58^WKzd$*XS`55`fem3sHTdY00q5%x^dzBF z2VAlImDK_-2)M9At2AI+iww(qIcw&f*}Ps7@CtF2e?2*&btgaW`)S zuf?4gZp+13W#SIPcF{B(^_}yj_@Wz>iEOVYWzoLg)agfnCSeOWgcNHpK#@S<(0Abx z6ZwU`47G@WjI%SkPPM=oPJyv5BHCqr2KsB=1wA?OH_<0W7qNwYLG)!?l&esB#8As1 zb^|z^O>LzQ%BuO~&!U~CEESM|f!7)r;R$~ha`9<;xk=J+SFLv7+6`4NLN4f{%68Q@wKSBU;ooP$koq}8IzCg32ZS`oTqP}`G zbO`mlUsFvzFX~pbHOlZp4g)^O;IBa-0OOy$$&F;~D#mY-;GyW1C*4TtFD8s_cix2W zceJ0CA%&(5wfK2E*b|1mW$=`o^+@{+;ORm}fzOX4ZvtNscsa6LhT_NFM9pCk6=3(r z1y*;SBo`|qEADf5l>3OB!9r-SX`-tWMr38)H@xwXruM53Y?r|Qeei1u#wzg_!RK2D z>cJ-j-aKel9~wHhZ?jHSbL)kIC0r;rv>U&_26Rqlhs|(jW-97OXXYyP`0vOcDtv2<;YcD%9n2C&SDuL&2m-ZRJ$Ii?}@MUMF8hkkEW?V-cP4{d+8PYWHA1`@Kaba zH@sZ{+X^@O`iXV{vL!pd0|SDPZGA9=d{fwKrrQxbV{PBtWql&rYdKOM?Yd>nCE6v? z)+05G<4ac)wKu}>2F*g+w+BaUjVDG_5QZv+hFWf?5=fYrRjt#pyaPd-evf4)-1H)D zG646ta2pc)hZ}5Bcj)K2Gmx(z_5A=omg}?B4cm~>joZRUN8aMpaI%7r$e>UJM@C_e zPI>Oss}<;AsjmFu&Mq6f2qHz99EyKX}1gD`eO zWwaw+bj+mcIw*PPeT}pyEUK1x8Qds5DsjtJwIjr5MV=5M??F26*!tv%`)1+e2Y=<& zo6F~-&x7y2M%*vcmjmhNMW51!wGF>HkBx03AJ6DB7)pYNI$x@RB^$;hN|bC#HZU9L zoD`wqCE+VP+zYhJ{WR#=X!QIt`jXHaT5WXWj>8j`L)T770YNf~XBIedj6g3kXQ*8$ zQs|*Z)-I6aV?<(gUg(~Is-=%`jm$^gg}cSVy#|bz6$*d0;a|E`{tP$3tDLRz`q~YM zG(H(}0}>yAXyUBmYN8MVs}0zEXSKNzg=1D6MZkAPOtr*MNqn7Z-A!B$B3=-2qZ`jv zISs=wZ44uAFt>+Oo8WBK0G#?R`KCh^--m4`J3f>T9a!&I61qTW0kD(L1PHTv6;FwU zPy&R$CC(glE+(og_xv5wJ_CHZ&6-6Q=K_3A*hu(!!KYO5CfizwD8Nh-?sUtdgVt$m zEc3}V(`H)NW{)5k->OFV?SgQc0_KJ!u1gj~-dk{IL=6e;X{1NBzrZ)(ycAlh16~wx zdt+X^nfJvSf;4aU7M1j!K5J6Db>~cH1;J#f;}U`ksP8BsFwt;iKDgXe?(e0i8@NlR z4-%caDhd9oJE;ZdwP%mg_mqh$nVyO?JqmO$X;K=$UL;)-X*0CJUG75!#WS0#`0}yN zF>zH+b!ecw_(g0TdRpm4<9ic(nzl!*=b%jo(kA`16Qa#y*kb5uUV>Tt+MapuX})yo zqGAi&W-hE$^5S$)hq|5&HH`v={isXv@iOX?P^+Qo2)X-uk8Kv*+tt%og%L9t5NP^c z5IEtpMTcmZTvV@M&x4ze!A-8>I!a0h*|e13%o ztDQ3XqA#Q81JD)9t6TCL)klGs+@9huWrv#=;6LHNq z*1^fJN`a=9Wfp2A!blMqK}CE6k2lFZqCN|CzOO3nrk-y?Z=s$Lb$M4@_H82imhdTI z|7H)-k+mLw(AV9pX>SCJW>{0{yMc{wIsiRaB%T%oXhw`5@QT>=C{2%;zv%0Qy$yXr z=v7RfzvLej`WO9A2)%k;m|I<#DPjMp3#0E#!o7n1pMd=r1Y3@;nowH{mU$wEOSeP* ziLKN=lnmB#<<0!$v!?Jlmy6)O%5DD{zPcCak@A;(ZS=g6d_v?+44%H=pA-3){4a>S zdEJ*=-Ipn0|ET+7?>p*0-$A}_H99@&8?hBLuLu2g-@?a!5h6;ZM7XY7i145^{LQ^a zrJzp=pACi22f!~0zPxifw|Qb_h$qiaN6`ze{bfLa%N(XBd?_1d^Ri)}C!QMU8DHQp z@F4zckKq4x_%!6A&;6Jt_+}*hZ^5_ZE+6vW%nV^AAJT}*nITkG&1>OiQ#+0Nen#|c zIC_2=eM#u`BnpS0ZhR48qc<0altyx=x26S!W3e6;-c)$t@dIObgZF;qnpVKLoRSltS3(Kfiq@FhuHsp@^PQ(0P^`QNDbr@BF}EN zv+taM$!Y)WoPZd%C8EicvhrFrSgPiivf{w&rA4Kn^=((?u{!4o*w8y6+&gu4RDl*T zVgHW9e$XfRP69_;!K6$ai|_qaOs!OhYNq2J4-L4$J&FzUtK19X&dfj)YF5Y5W9Lh2 z+f0WAUE^c?JR?FB(8dfP#bK@_Y(xIqcFzk#|NI;Z2n(CmgzJpdSApl(sGF>`*Hcf3 zI={<|{<|XUY+S|{Su1r&fuwTXh4d3l`%~dT`U>1(Z%obt;4_d|=L;MtGShoRt(j4IYGrT+oiT98ssFzAjq3K)p1UzMgtP)EOBV z1cTX>2G{I_1@~aP91hu($D=*b$IWF-MZt`_B4_$2?gCUW(wvzlyKbYTp` z6Bog+p-`#bkC}}9np!%o3T|OvtcP!4pBH;8`0(g}2+;vJMBsi^d8c_Ln-=6J(E(WZ z3ef?x0$0Jpa>+h3*M*}hY!H%gAcT=u?q|H)x<}?`08cm1<~n#*@F(lR7X)6mg~ND- zKWP`(Pz=wJn zh^VKZ*e`9tdk@i9*8tP@%TnA5L$4Vsw=@;Ky zU|FJ2$=E^^157*vk@7mGEj}|9bsp+vHaGGDbx~MtS4}-3>iRAlx)+{yj?3@fyT-Fa zIKsGm2#2w_Y$Me`SvaN&XdVkCsPGqGtW%bGwknIQ(qvdBmPxWUmLZPl&y_+04F6e5WM+!%KW)(3Y#=VcxANl3|gv zXgVs1b{oo~)Kc<*YOsYDj!SY;QQ?N52cd@P)47?2?%L2vRlX6j@q9Wdbb59^t%Y9P z`cn(NAn1xTt^BER7U9z1eJ-q7qj0=O9UhAh^PX(FS8H?^U_0dC^?h9!lUXrm(1GKA zT^sy$e9A5zJ`3@vQLmSHzKx)sctXUZxovv)4By2N_wVF*(f_NR90&4>4jxBqKl5V` zjHBIUBDp}%_+_-dCTY96*5SXt{Wl!Cc=hJI`DpJS586w+JpH$Zc3!j%w*%7{TjQ?@ zRn_$VoZae|`v7Ay$U?CmisM?r1ygUJS-yA|#>7wq?k~Y4hOl5p!7@Weqg}>lz`ic! zq$errTI@^}X5lqp&kMV?o3|+I&P37S_xm%4=$XA&=I7?KPHL*VfFdmzLys0;s)t@<*HBoNn9_<%qev{k~h!{6O2wM+j*_ko9_ z5;`^4?t?CApZ5Fk^>Kj0g)WD(E&yhuF+R^^Q}@|2Y26QU2UDtIm(pPIMq*l(;(0M4 z?(GP^JrsDAFpF96N*gd4e!lAd^#pqnKO2g_ApDBmG?}w2`b+!c>>14nmm?wcwr2C% zG^Yv$UTRT1gbKqxN+weI2WCZ?%@YC4bk~d&^XTWko+P@pH{D95={HcjY1;EJ? zV8youi0i4zBTtl}=F@&eFY#lws`zt{q_aOCF^CgT^dkJcz_-HB3%=o|!KGwHm(t)w zh)Bnn&_Y_D>TdKXW1Y^E6APh|gIeGF02*i2G(wo_T?Y8PwJnwUEJqDPB*ol zHlsDj^PRyh$n!$p78&Lhkzt92$lxsMMPYBEX*f4AKL(J5VSo*xVILOer=w3WEUX=8 zn7oEP!XOOpi_jn4HL@^^fMFFY&Xds2Ej9$76aVfW?seJ)f1caGqpCfYaN%2SLqXej z+=j%5AsWgoD0>S&9;>x^(f_Mjn-B8lJ-Xg|be)d&FCSfb3|qXSeXnRwNBhr+wtDU5 zgRaVp{$IH&qA%|ImJoE65KKw?S4#-QT{YNzZ9fc3<(V#2vWa%OlgUsBOZXk?z9y+v zvgtZ4Zu_B2uKzmfJ-~Pcb#cOP1?s#|8$qhWxvZin!+hFF70M(o7hSXLxIv!Vq~}}L zy;mqh^>tz!gf0pJlvvZP2t<*FLYN7e)7%!lO6ID<5wBvN7jtWDV|6vlIRHFbfrDExjc_nzBPt!GlPYArcIas@GKWWZNU)bfw&QCzfPYn-8AmJUn^we-cN?T9_ z^AEqP)55$G_^W%7N~xceJ{wD)51?NXeLeJ0B=&*%;u-jK9~*uKUxdpDr~h?7ZHMRs zI|}1FrJoh;2le1zh3ygjS?IIT^!Wh#3DH+Ed_KMwY2OuLo@t-qTQ46!nVXNbNRUz9 z=`+8k`AA>po0lk5jvM!q@Ev0V@DuT0D@A`Q`gEV0e>M%Wg+3cfza;u<0{Hv<+4LAx zjaAi=&0QCze8D#b(FgD_pH1T0XZR-YoOs~>sL+K|(U*DD03(+$D z?0CFGSTYsmpy+HaA~>2IF?VlTZR2>n$w<>-GG0w_Z|mt2zo9HxxZ#diwy z2>3j}=^)_b67Yn8+rBe?b$Cl}kzMmtc#AIN^o&n+IOE5?Uda=FA+pGP7}qZQPyVZW zg-TI>(HGJ40q9FYFW(~Fdy90Zqy580x|H-eh_7h(i1vK6|BPts*Iqv7s=Vm`m8(K& zyuiec4`ywZ7taN=q7^3JixCZ;&s1%Q_T)Uo1vaL`?WHZT!`X22A-L%f+X!`4gWp#4} ztem5Tt)>I&7U!f-M$>1v)GfyFjZp)4Yg(TT<95+>Tdmo)IJ{%E<~G607w&!=ewbtl zB|d7kurL>vbM?JhvoIDGmWE4)kA3!!s&;KAq!C+$XVIuYo5 z!8?SrQ~f4c@F#g2_EpEP`%V&rkR5a7SB1lZZ_qFdRSr&qt#2n43Ww#xk_e~~#n^x( ze!em{?IJ$|`*;pGPjw^JvM;PTX=a}gdw#QteLO0*PaI55Ys9D+6p4BZYt`Bn(^{Yl zyQh5^%>M)@wAP5^r0m&9_H+RIyx1GdM~?l*&*MJzKFrr{P&v?aE_(t9d+viKy1}fI z2nheewjt;Z!vhr)UneT53z2v@gbC~dfTsxk01IrU=C(ufC&3?=NDso#hv3f(zh!!$ zhe@3Shmq9K28sRUiZ{^jaxqzSvPwnI7$G?5l4^A_g!F85j7}FOSifzjO)(oKoKo(-xAS5<5K|7*mZs zKf9y}dtTTrYl{@{ib#P1>V7Itt6qVZ5beRSxScv-)M0HV3@&kgt%X4<={ZzP7dG`^ zfi?l?0#_2TK2<&ga<(;+(o4wIAmj-lmvGo;Huaj4ucYj`PVD@C6Qp8+@< z16+;)o)B<#SJL8NjqxrdjQkkyb)1eNYfVP$Fe4b7W^isdeD^7f#u4gsvS(x2(*f-B zVsE(_n6WVXmSnljhiyqwcdUtB^F{P@OD|Srh>)VTSSR8u@XXhYSZVT?2aBnQz}Y$Y z)?}EFsv&(R+9iJu{Cta>vtju85c~z1|YOHSnQ{3wq-(drl*T-N2D2_aM7J5O0w&56qV@|Ky4rM+NS_74 zG@ta|TSIdJX)QG+p+S4iV1KI?2<*ZLH6JP1wv~MK(g=~ysA7;3;;zX+OKPzeLhVUEg+yAEi~4wp>P}%AHv8~2c5rLS;`9tR z8~M*(8pd@=!ze7c!edwa2C=!oubmuQqxKc>th6St9(+RJqtR?y^Bb)x^9x-cTLFpW z6Jfg$vhY_Y)_T)NmO#!0J6-~L1@=8_AdjqXojGXlXC05h<7w8`>ou@->y#mCS!2Pv z({(1ijQ^oWuxEh13wJ;4@)*1_?7UzbAqK{{{5x?ccCtlvRmiX1n$h43%XGM777vc~ zMEEWNfFI&r%$UPbUzU0VaM`ASXX#elb1dq$&pf?lR2)s$wvD?dNFYE6?k+)tySux)ySoJo7Tle|-Q8UVcXt~czPaw_UEj~1 zRja$Es(V${-sgF2-O?EgJ^gf-Al~M6mrj}#6lx(_h=%%pSL#xx*p5DEM?HyjsmJUF zcbFZ-w{0w+OE=BW*X=#}jB}F<74oOPrx=RMt=p-Q;4TuPpls)Xc^Wgq8boz?By;Px zwk^yYWY8?;Rk&{)sh>&JzSm=h0p@*h!<93OmY zeE+^y)=t?YXKd<(%`<6zZFNp=sP3K)-AQQly5nsoVk`-IU-QgPYsBp6CESNy8fGyU zkS%o7{bB9i_ZarsfYtkYdD%s_){?0fdXXt1$V#eDiv?a{sh7CZXG9kq0AESGXbZt0C zEKZ4Fgj1R;(%vE;_{sXy4_3e&JF1w-U+Ae|WhkhA*|v4jHXR8R*G><=bU4JWEMM~x z5m}<~%Hq9_X!15;J4XW?uutzx#e5HXe>5aE+TEy;hM&X-BK96KTi;lnYqNt?YW#JK zi8U(Jjkn5cDTCkV@wIvJ!rrGTk4u8z`w_hy)m3k`l~gfoo>NpdPND|p>q9$?*@{-b zBEdq)(*-^vDignr4ntzy9sJF#J4bx63xnQlste1+IoR!;(>TtpdD2-IAJ@8!Kvegbc9eTR90ha+E1xTB?H7Sb zy&smbRhLNJUHI)kfTxQc;+v zAe$P0O=DusGw_&~)gA@C@8R>DN*$OGk@rn$>|v0d3&8^WaPv(KlJ1QFxqLNGm6A=A zdy~W0#ljv(gKKzv4)pAoH&E=mXLNa7y6jVU7S;7S$lA|s5*Gx`Zb$(h;}+@*HBsY? z7kqSpaTvle#YyR#tTEn*cYR(0{&+; zki=ihi66)d5Ul!38JntXWUz7eY|yFTmk?t2sug20c79fSz(A>2a-AWITO(u!|CYq# zm?61gjTex56TQt>nb(!&C%HWrOnNbpNXZH{AwLy}n1D;d=ita5G!buSO1e2T_Sib? zs{tnd^QNcnsz1_6TM!~Ozr?FF4dD&eRb;K`N%X_8cQmXyf|(Lyitf~$GKZ9Zj9CDd)=v#CGx_vu#>BCBaCAwbtA_;_DAFE7Lc|fKS!d_ zpqpDBAIhrPYR|cZkC=afYj}q|#8&u1Gm6+)j%AR(2HOl27_61D3fDh|Tup{;NK38D z=GNcmG^cZZts1WX8sy)seej z0wpgNbc72|BkS>+>a1}NJq{vxnCM8ZwrHKtiOsjE7cZeJyAAzi0v6Wbt1V(Ad3rWi z*8z^QaP5u785XWfWA#e|#S6u@YK`-TQaZICktool@Zs&^x7ob52iD$$wJ?hvWOl6x zzRA4ozrqqhr`~d3cLZpQ4cW!aUhf=Sub?KasE*H|xplSInsAJkt$h91MmvcSjgI9( zu@RU#EaDAYrh@8Jo~!6J{~=ePv4_2DgmM!SG2T9h=fj%rBk;Mki9XPOUop=X24_Dd zMgk!>aQMB6OGOy*`$I>m_N?1IVAKQwf+5H*L3T5* zXUk&g@Kq|rggI>AL9xXzAkPy1jC#dLfL7E(Z_eFD!C?=9NDsg)Nt_fZ4QJunI=1uPc_N=P zoC@hnFsLE!azgd=v6Ypksr*#00*To8Ig=+z%7jUHCx5#VMt!e}h83pr^hjY;%N-61 zWwU&jq*C|4&NlO>NpDwdq_h0jTjzE~-%>I&+lSqgYuw6`uon`_FBU4xt8>PNVxw7s z8IOi4JF=%}k)N;o;OCj%db$_?cdmNSMMUkwP8X73O6S7Mp3z`+yJyRTG!D8sCu2d3 z4dPYk{+`&=EXH|Ql-17Q7YL36(l_^4oY$ZQJN;qLS9tz$rAF z9^4l%Ll{P7;S5lqd&Dl53BRs0y#RaHUX@T~2wvaz-zh+_waYFh)NsO}_#-8+6Y9Zj zh5lJR`3v!$oY*NxeiEQ;tHbUTH{9>6MWbsUEOaF1+@MGYA8y`Xd50$$FP&p=$=8I85KSD6l^wf zxLxg}jFoMa(0Ov6%R2aG-8!IFn6Th|NkdoO{d)~hN77A3FDX%!JmF`B`?CJJ<@yWv zWsrk4M+XRjmQ_f7;yw9W`vY&5sb%fR3S?Mb%5UAskoGjjP-X+lH8uoYJLv6@L8jV z=f;hC6|pCH!y|*QbbVkO1WI0QnqLVl{@zDYq^rYm&UUhYXUO-#Y;Y$uZI7Q8%pUZ% z*eO_)vAK#Pj{5%g7F)f4oTB(1L8;>d;=jN(mJ^PAA# zt-ksu-Ub!Cyudl1Q0vdIVQyhA@BDbwd0dCK{LgxuT1^ zpulzhS3;)FF~}98k1eHI0Ty4h_rj?g1wc>5|I6Ke&G!o9Mbi$leFvw8x%tNpNp5W{ zd-LBn_o>*^+w~I;IqoVqm^+RX)*ObLTAdMfA4=-d8c)jKzqBXwe18X9kv~C)L~b-| zsr%8qu`OVDX2~<|aSGq0hHQO!?!=u?hU$+^_J+{>B)*Yd#!3%5*M0=8L)$@wFNbhB zJvB3|H2dp;j2DFgbDY9pmB<#t{I=aKln-ikCTFJ+ZJx30C562!=OZRrUKtxR+7cgq z-Z7aHGLPhX|BFcW+xY{Q%3&7q)8O^BtLVfQ5*3ciW3A@fQ5!VxO7u*8r!n7DGKkKj1Ee2reHGhoK zwcyC{e11$GS_f_fu2z^1vhBlel5HR|oH^~-3(WT{sWj-Fc%IG$#{d0}+A~VNjR<+f zY|lJdBjblZ1u}j_Y*ivGey?nNxL#mdwNu-4!LWA2Rz4s0g+AaPrmrWe9;|m&zF)a*f}QHZJq!m-Gp|hqN5~xN zIv@FJxmi4y&xZf4{swKs_;Ykuo>eiXuikN1`@p|3dC#UdHXsFqkR!&#Ql9Lwt47_D zlCM;%FEt7ueP$pLBi-lFKz87Iy};3Mt4)5C7vUc{CbK?bKZ6*B9H$&OK4fXh>b#OB zrjlA%U&Uij<4ISBkcttx&HUGqwUIpzA>#fGdQJLQzL`XcgVv;YSo`Tth(L&1diYr2M>6t1V+m7IQ(5-3b=h~p8RD>D!L@DE9To>UQ`NoVO7j&yxe;?y;E~Ms;h`VHQvt)7Wp*|Ojqe<=Gn0(B7!!_h}u45kM%XgXo z^fP0mjXa`6TKX~_-9p}A+3IL{g+OXOfi#rzoB)j~JqLVt!OWiBvMzG-ny2ODdV+RE zl357UNM3On&%??(9M9`D!cW5uhn+PXw|>`1UFiX6L#~Xfoxoj(Mh4M?!CccXbQZ2_ z(W_96ph!_mveo$BB!X1mwP@iXHk`{>Nu@|brBGN`xUI||EOmuXaUFGg$D;ay**fAm zxL(E!GZ#uIi?Jc9X@VP6UB^7?B?(4Eauz@x#QLeX+R&=ASQu_A0{t$|Hu*fW@5tYLMd^xt(s^-JdZWdbG=rQ6e**+gWYsvKaQHn{O>>$`YPo&^cfPSB3glEhd|KUliXYP4Gcv~~Ht+X}g>JV__=P8PWkAI3eMfr<8{8Wn#N7znt8ZQ! z+!y#~!YWjN_JcKaD_{$4Cjy&#ZfITl%~1m5SU9Yfa*qrZ)LMLLW47 zar@fd#rq=h4)Kj?xNLnGeWz=J5lS+>b!-^}>t4c(iL05efq9%%fyJPTgbR7zn+JL4 z-IKwM+N%aMcfFQaTV#T-^FQ!>Li35km|=h@a|Y6bZ5HjK6*ZoTds1iIK@;y+QGsA5Ak3{H|8@fiKVmAr9tD8FozDoDK%ZdGV` zgq99Qvg<1^Xs2F0;&cP8rvY&Uqx+}7bAn(JeYttJRlcH$UyfRY zuYYrYizC=W-Oc+tgC*Ul3S`3-l{3hMLATOGoQ~GLk8;W5<@EkHy@!ALdS$_WSvZ7pR z4kI7hFTkeG4xj-WGm3^l5NyegiuNYm&WEEc-u`1%2SumlJ5seJ0!mFnji#F!^>|OQ zLYx)!6)RB5)N+kIp;>*xO#+1cO8X|%W_Sd<_D$MPyhYjz9aHvzR8g#}QgoR&y`00b zMf!O%2u^1xjEXdTBpJrXN?Y0@mn`8_a0JfjJbPc5&U!1VUvXYHF zryD8un&I2f_ONvDqlYF`^B0{s+(G`ATY=pvehBwfa|a5bt$bUO?m^NuJUgLWl+NXJ z?Th6`Su5i|3J&A#P)NeciFulBJ)vN@m5jF9^~7{nn~%9b36872LUGp5K0z_o{u5!A zh@ALr{0t3h(k&)tB3cW?vA=JK-qf<}`saWPN@4N4@(ae`8{}{YK{zDvOJ} zT707*MQc*YLIzB&mf!hpsJ{z9fg0?RXYq0(^c6fVvtcSKBK0>ZbOG7}{(;t#K%}2u z+ealUiV~8)GqGv1LtcW2gUw;R%iq3Gch~SPNH3o~Quof!FIXUZWC=uZ1WY4$)K|FK zOj1>52YH#aA0GM@5=?XJIZ1F5-MKEYh|p-Y-I!5KGbREohbu(>vp!Y-YdW72tXVob z%*JnzPB^l^v+|_6Ujv}6GHD(DDC5F9`c$GmRPHSnznDYi@mDGj*2S`6_WKd{M+ovh zJ&@N2xwG(1EXKvrLNhSpoC3LOPdxRyh`y5Rn{8X1S%*-2+Dm0_7Ori*y%Yh)UX;_s z&klhlgp9`FmL((xw|udX>r}A3|BY=zE%^f8t)KX9bhq;~{^FOzd<#Y!I_Id_Zn zh&KCR6VgT0cVX?HN~BE0-emx<BbX~ZF5E5$V0ECGpb>5cL<#r z+fV{5Fk5tD>`aMkr2GCvJdtLF`a=wLb$W5{+CWvdugW(WlN6byC(d$6l4^t04V!S@ z6oVu=PTff?1h!sJIxh2F!;+DPTYgKegrFOP^q|Ra@2gBu<$0oY?dU1az5GOUuZCOB zH8Gk5znZZAB(lHaU@Op_Zz{DI%LS3w*~`?ziWfg8|1`@H*T2fVo|Kr=%i@EzZIfl` z65+Y>SD&4V<{%eQW6aZE`#rVR)E|VVArzORSxk^Rb0w$t0Of^GbKl%sfXD}xLBnJ>IaYDHd$(;x4-7a5sEnj8Ffb3s4 z?yDuv&)jjzv^)GBv;5q71NHt?o-afbpX>{(WQI}yc$;FP(_S*_maYN|~U)EtF&j#BIR>gw%% z%?}lNT~UG#`NG*lTiCXYTS93^@>f`4fqDl{;T|RQ_;#2%r;aE5dVo+!0QJMQcf|FL zNrbz^@gF#QAb_ukQUI-Y^`>^^!?N0akwt8fL9hnM4t!TkO{BUI0g}WwUXj=(+3XS^ zuaJ*sLxS??ioUo>)>s=*!ek6r4$=afkw7jrpHT)C%img;zomo!IuGe?wO2$l=vBM! zzo2mA7W3KK7qrjk)vFbYPnQdKlnku=jJiR(4Ekb)t7uwO1T8Xsj~NAY!6|c?@!hwP znT+%{nsJAE!L+|t{XtSxi!(Qa%-T^n?a(CiF#dc%#LtBbCw^EjeEP-1QKi3H_vD)P zB>IV-j|r{6@TIk_0;=Krm6eremHNPNaE>0~au|2U-jkyOnvQBN*zw4GDa6MGJ|_Xh z4?a9UY=2#*4lHn__`r8(1yIlLYi007pt-v5X@|B8M?Zo=y_mCxh46eM{UqF1+2Ei@ zt6T1+Q|`s2!GBFso%#In&9mM@UhEY;vdL>BL3<J$r2P=(Ur* zX1@Pp17Ab-^6pKqH=78gk7@JHP1?*&T0i??X)ZGFVIS7w-2Fo8{Nu@R-bE^QrvCl3 zYVSvB$Ohzx{Fz^4Yt5^ps>@eUN1?hgcpYW-+CCHuChdF5zv=9O*E}7H{Wgi5pg~n` zzH%}5l_9c1^zu|LRLC0(oze7}TB=2T6;MRR6x}Oe8Qw76n`{pB}6>wKzExS`7z3FoI_3x|#8iG^nS{*+AU`|*^{kY5f@ zzfrx_B}YX=+3bEkPtw0ZG*1LGRHDQ}&azyiw!!>Js z+(!ENe)OdbJ9xFd<8L3U5Heh9RwN8Ebhl$CCpHZFtNRcg`ffMeh3s6qEHG&|5zXUm z_y%>^;gHcu;?u(-e!9u#H3cMG3)Z&P1)#Q@Eaios+x+d&VRJ}~b_r7{0!W)JM&3JD z9_)UXM|5jY?;iQw^J$OI6jFkjSLGIDBYA+|M@ZHGEM4NXu zQvtI{KNy>TKmZ?5#}n5dDh2g!Yb*ZN^190H@Pex#%nAgcId7qDG91?jQ1jP}`89n5vWZ#bB0=?E5%84SfpAx* z9J@Xkj>&P1YFPiB0gMXUTWnQs@3K9CAPw|P`Udo;t~07y+YMdF;klmyrX(LYEzJ=v zbI~c*F47@F8E%+40Z*5+chLib7`up=sqP2#AEubP#VEoF4!g@-CT7i<=Gb^A(!r%E zTTg5FhUsWr#8CfHFfknL#2AY>0y)m4CR}ZV4cC-T>&@swodTrGW>Y9r1FW-MN0@)* z&8S4#on(h_5dY@!2LkfJOW{~4en!~*THm)D75qP!d#Lhr4j87Wjnf%H&O(rKJ0#S- zqWpv~-QbG%3{4LHc}!&h&5@GrE-5a;9=@FS%A;%y_lMjApUP(@WuxBo=1c|s-T^Hz z=wIObMY#-oCOV{FMg`X0;kn-4$|=5{i|Sl;9x%29fG(SyyLC`5Bawlg>l;^*k4B-q zWy@mE81P3o*@UkY=G%`hbDxUL0PA-;_$oJ5CaXYFoegI}Ms)E3)|A9MVl0Q2-g(Kp)f7Y`Sm8Mc^jZ(Q(%?ioFSYb6DQ% zQU`U}$fGz=BRl^b-tcd#za!a&NXQtG;0S(iC2j97?XDQ556x1zBdxl|QPLB8<(<(* zOc9<1o#A-N9YSMs$~ON98Ze)ItA1sa6^I0YD!)Y_>e+r--`Y4Jay+uGqe4rD-~Q|5 z!?8iRU9WItT#9@9ZxQTrw##No^LT1)H44I+=l7F;P{-MA=PiwgQu!+Xs73teu}*1D z|Cs#v4gWqU*ICz=-*ZsSEm-u+_h^cySTod8H9O6mFdl;OEZu#ue8pVm;93m3)uJY!FEocRmL}~_1kG4C?o115 zt3g*7s?@GfH@&RoHwqE{nIKvlu38Pjovz+`qlL6Ix4fL7F8e7hfrK}F-+$=M4YTqQ zer!iF%zRwhwHL8}2}N_WR-!tcsIX747UF`DmWN_20c{%`%HdzKQBHo>v{; z3E3ACre!5bQ^8_8=A?9S^0`+Y%a=LZ12!25x3O|k9qr} zB(}43#@zVnXBRC`ou}53#2W&Be`SGqiOsmURcZp;A-^q$6f1-r=hcf?1 z4a(Y|{(sbppn&d>dU=8Yb`6G}O`OBaOH-fvS}kv?Nr6u2}NhLOxJ zE7A)U_zy9!@-S+P#Byz%xdz8XAN1p z#kNW$SZb{@R;?M#F@pDxEoACBF%ryfJcj=@`6Te(E1RS3f49xEWPwQQipGdXFLJl z!pHZQzym}~c>DQya~DbDA3>E`MYSndtZA08RFJ6VR@;;vW#b5slM-Hut8;FRbqZyvhLqUdX+Tq zg8Mavd?HBI!=v}mQW$A)NoJq}vKxcq8|{=d$5Zyxwfri>1}kO>WnM7NE?EYKB}q2! zP4O`kt$6sem&~m$&6&eQm?hcNj9oBgMM3{PsX_|=HARf~?;FgHAZ53{)_A1noRF}j z<#6TaZ%btcqhBp1u4^uC`7u8=Wqx(kKXLs!dU4` zXQjqJq~UU9XZ*6b#v~oHX9-EVJg)-6`hxA10-Z18SL2kU8T^t(h!|8(Q#HfYzZl-w z<}Nbn^YYR0w-x{eIK!Ii%dD+tuj(BqOxTrwwWHzfpM;5Hmz#-yMmv$0|I+R+h8si6 zuAmlvi0#kjfxK;9G$TKh4VQDswmsLQ7i$78Q}jOEjsR?e0kI(&I7E^UPBs`S3b$1w z-~^g8q919s76{k`I1pn7Ml>nog>ek-XHw4ESdH2%!fRBzqp4`ipA|43wXD5*7cXj{tVySrt6&l_Wr!Qff#VWSWbIfeUM*68F7VNLo?_jwCeK1 zc1|9g)o}6=E<8npPtpUn&WUeEvL_U2A z;btzyb5uPo%IyJEmrNokt|nM>Pw^jK(Pv1yZEzzpdIgREqGa2<6rw@Ig#J~ z8v7irHyaytg$&|B0ts>+h<*arze?}LlHc;#ZMv;zM&F|oa~jVK0Rv&3hKm5-qa`+u z)MN1Sdss!koFP;v339?7!1NS zZPF-;TV5K=5ZpOVy~9P@V4AbN{LDn5!Os8s4Aj!o>eyqBTr%~5XaaYxrX~Yup=$g; zDJ34kS_%9ln0^6(WGDgbS3X!5FEm?2`7ze>iWRVPq(`vK(3668vK}Q&b@!`xX8%Hq zQ&a=~lIz9I%X>!W9(lwN;$7ybt2f0&-M;=^jP0hf`<3)|kJgd6(p&m(f8p>M`QO=M z(Tj{p=CIS9fj(eaBpGTo8RJ#7>1B6qjVUUxWST)`hB;oe+O_rBFM*Z1CNz^^cI5B7 zP??qci$@8FLmg)C9tU)l-aYo*ISZYNXap%6to=#Ks|>G6>rigv^ajRug1f>!SFEj{ zMt}HX%XQ`)-Q2&8T`3_RYv_=p37^)Cqp zquOE{NwLudIp^&zVm}%-4P5e`6`JC%4#&GBe=Tkzbn4C6oPY2X`4BMZm2=b4Q%iI} zoMMQ(m4{a^ejwM^?Wph&zvy1XlN^tN2}gO&b7&wob`QPlG7}IragOc6d^W|oO%2Xt zl*1vZcZ>AOZ?^M-HS+FUsTTL6`;sL3z$2PJ*~O=`_g~^mGQtIdI>z9g@kb~{^ww>R zw#x6RB|jZhy--%MSU6}pU`M#TX=o<$f6KDq*!!rY1zYL~!v@6zavcQYS_lRmANzzt zEzkz#5wo(xcdhg8ggy%Jy#!~lzh#`xzhbSFDEYp+Wx0ecwgS+23SYQp!dwH&Wc2?! zNmVZge$dD6N#_>)t`N;AhB*sa@O8J~?$wgay6MAvggZr4O!XbQyFk7;LC#75O@l&* zYA(>)Pg`=9DZ94iY+>CeQ<9prr}jP`OmfNhYY=r(LD5jj60+B0(VWL$fC$H^jms&r zMB^^&dqOqHV6@vyr0jq4!2O=2uC1uZ8=XttL9x3P$C)kjlk23k>W$N+QbyDP{31{r zlhoS{n)kP4i%R_*jF-0fRQ({kTfuv)V?;r9PJ&r~mS%5hqM{==VZlZmKRfrMg`W~Z z2+_CJApV;fk=O~{8P)lo6^Rg6rAosyYw^n<8$X#5E&tRUEhL8^ ziI%f`vnpk7GRE6^36hu}eXSAOEZT>6t~GaQ$8Kf*E0insB|e`}Yg|tn z$FJ?zqu?tl#|g^*K6@RnIFg!yy4SvHdum+j&Q}=c>|YN%Omign{yDs{nNN`Wnq}OT zDgTKId^te+4^amj1eeyVO`0|4okpR|9SZYElZIbqZS-?CL(W$${!iwtO*2ecF6=lI zOb*piXy4*JuRw+R0(W%%Wb&Y%uXUmn8K4s~#Db3174<@TuCu*-({9|8p%nU?9;|t= z<_1=%C}g0VIiz{cRhVd_x{X!r=c3}!p@dgMRjVb>@6Psfn~r4k@Co~~fM_hkC%Vro z_+HFFh_#%Y89?`jjr#_Fmj+#wH6?ZqyvkfWSwjNe>~sguzRq5QCRf**`XQTZP>*wA z^cK}$UIyj_&H{xXLbJnQO|w{%C+f1h_}7--x`)Wp1f{qly7hs-_@fAlmflqgttHW| z_2UMb!}y%qh(@2ia+Z-! zLic{q#I^@}u9Mq)jkP+{ ztjtuFq+jpKTWg8rb8Gko=jt`!#Vzg{a-sHdGI3QlgbRN`UWCXn!{E_lYrghR=M{3L z{dHGdX)@k19CwjmP#{X>nyN%SG2WwY;UasZ0nv>S$Jz*%7TJ}zF!qocQEhUre9I@l zBR*zHYQ)jTr4~5AUJ_z=DzelXK)1Y(nyx7;ByRU~jAk{Ktcf0PPbrh#Mgu*Zp&IQ# z5cL7s`sd5f37qObNS{MgoE0B^CmF?H2iWg!hDlRO+2e;}>9LMbAECn&U&EDU?evTX zMsM016?>`8`hzU6fRE70cGS4XqX-;JX8xJyeOXEL}SmbbloA<(iq zcsf{v<%BXA(wY0>2g_yR^NEyHsF^v10VVw}DkHd92q#U^ue@)MtTXH%ii=zXJpv>j zv)4wFD;~n-%jHw%Z~dKL4+aF*rN|5_peCG89S3h#;*=E0&%X5i37c^3t9I0u0vFwS zCt|VZGm#s5NkvcR6{FYl^{wd2#sE#9o!io$R}cpocW>fH%$ITjhRX;xA?6G~59lj)xCyc-JSwB_nP9;9yl# z;gSkoG^lFbzb(W+lc4Kt)1><||JA>>$bJ;ux6HVoz`JZW*;U?aIy>_1@==ZzoDprYapZGFA>$k1MHM$^}wa>Fcve-$|i)eTS z-bB9^$LB_A-l^+vl>sP?-^X9HHgJ7?A0GT6z=L7^ZqW9h9u!Q}A^___#rNgJO<0z? z&m+?C*uib8Uc7{W0u_MC;0KHUfL!0s^p}=Fy{s?(og!A?b~-;zukM~U6PG?Az)(=j zqJ93c{D)D->be?G-5G_|vWy|$H=n$PPjnH1v&gWM)#NkdXgUmjLIjd6z zPU=-;h&@LDwfCq)GseVh03<^0MMMC*?iMlx(u05W7Q5ue21^YATu$Oc#4F6cCGXEe zmgkO+=J@I8j$|(;57f`a`R%)(-G+}djjueiz`4Ft^%iqKC5}J&LxQk7YHkwXT2{Vb z5BhNn0dGAiSels4XQ4sN?N`l`;6lhw6baK33m0ygTYZ8r?b@4_9^-XBrBn33AZWpu z9Y?t>GBiUwYZ>*wuAuBa67gB4dsFsuV)h49ceuK5wTgquvKQcqeJrV zTz5>@+OBSt{&Diag@@9uW^bnTrAgHN&sx#_v?iE7iZH-mt7F z6&=np3C8F`UV36MW*IKOtV7goK=_%-W!U}R47ce5SKbUrZm@h{V6+nw`uKVUA!YKfF8!qyygcq>8pdP#nY$o6^7hbH`M_Bw)jbkH0b{g3KNQ08AoBvfnJVe)7|>^S zMkR6z<$rh5oh&XO_vy)lA)~il4a40P%0}rgJdK0MONHWHN+%}a$y#?_RX6E~fp?HS zCm8<)jlG2-0Gi{9L~Hx%5C1TJ82D-0_X8=G_*u?sis?^ikk;w8RZ<+PD>WxyaUEsr z+Sc=Sr0W@S}yqJv^8>oy`g8>2^=sU~j1dt;Q)y$nP#R60wzH*iO=ufSS;xRfG} z@n@LzxT$gSOVlap$p8A%x)Q}71}-@v8_=aW+fa#1!?sSiRz=nCeq45kX8HLFjGL0C z30MDreel&sBCRX3{+zg=j#>2lb(VvjUt|E&fya_DrkrX)oc{Yjkh>)p@E5a zt*^aKuIG1Z8z-_U!DTvPhgdsM-VwgT^q{2nVTh;a7Q4I3J@*<@!ObKq5eCJp9rF7) z`GK<5qKhHScBS4Jvc47d?&lT@c{@{osCb)ah zqcK#Nx-7IOcxL`9f7Yr#JDlS_f6{JdD$Q++N8prf=F!+^uA<5FU#Ew!H1*RC9w#}- zQ_6_XxHGAW)7Lr+-qG~_;qi{z(w2g5Aam%YY9|(ns(oiIL2JSX?lveQdR#VnaKF~z zZx`ZXuKXG=Q!g#3?snM{_{X}54Na?7A7$_-aadWm?->^t zr7Ogb-Va6~MoX}`KBgi`@SRwlTywpBXxh-Tb8=dcs0nsJ+hJ3RpEW{D^kaVi7qYM@ z=s>iy^JGe2m~;@8%d5OKCq7dBLC8Ew%1yGrkIEUX&Gkm}A{R3UZR>bq3bCNNEBoAH*HnkX->dYdKL}5yWDjfBaVOD}Ks4 zVyU0sJ-dow&MTyMC6zYe_@yC?a!RKL^c zvDG+K70okt6CC+M9MrlQEIp|F-l93 z_pYoFfIrIWm{$?Qzk2W|*zT?(B3@Kd^c=@&XG{Y-v3A^9SJC z^C5UhZGonh_?D^X#N+dF8E&#ap8#W+LZy)3kzsJZ&?)mXA^`{vlUi7QKIJlDtX1PG z+aC$svk&Qo^V{C{{29|%Y|SW1(*N$9m*`?2|0{V|9iV(-w5f)8$f6(q(rA4fVJTD~ zbuRsqiE9=d$>ZjmsSaa$+dZ^V3&S3}etoX&h)dW~->~b!{8-s4ELzQ(DHgZMzTJqA z!ofkj7Far3*3sUd==XkdVAfi{{3{|dLf4ovNtf|Ch%NEJiohukndet#l&wjrV?;WX zNnR20Cf(9rTHJdc>S(n~_4tarFmbKdO3M1XD90md2JwqO_Dbf+*_N#9xvZS-OG*F`O!LWLtd2F4Ks+g9gzRO_v+*JL1{dkd(qXsA$K4(SlO8P#_W?| zl#OfENmAdD?oKq?HEEdrTK?GXyqaxui8+}cP?`)j8K(~Vj%5y6aKSo+`lWhem&`A1 z4PV#dM0qYuuVDps_1FB;JLP89<%;m+T)5_4Maf*dx+P(o21ie_?TKESj0q+qh)HR`@zWKIwaM>+Kc|pov_-rN%EEnz%QSszjjr#1d03tXG-iT;99nc)WkQSu#CoUc)PG zH(%d1Y)jLBMBE6sEDpReumj(DQ&%CnOhVh}>J6ZxwJLZE$20P{t zZR5Cg!ta~_BBi!jELDAqq|NBrW+FGs670L=tr==Mr7nl}6J)J_XDsjTGpYFTQ?}Qu zCsQkqBj@mEY!=XWUY`bZem%%|6=ix2EIe^q^b+eZ}mFXRCSZ0{zmYHRW&g)F=I}b zk*p2=?LNING>Ul~K6-BB_W+DO!Y}S9c8`W~n&dxQxjNky4-my$zHmafIPEzh?9f_q`VfrCh}p;rfb6%f(=JqF9`C#H#yMIlLtG;(8nJsn#e% z3#{#{LJHVE4W0fus}gDs=5dtJBA{7E6IWk6eBkU4mk?&>kH{N*Z278!x2zHMLdHhz z4B`b(3aL&;_F$8hFkeyHHH7Jn^#Z}?cgF4G*PvI%9~Unb`oCY`d!%NWcN-X28R8J3 zM7L;&i5-YEVf_}D|5VMi$m)2{dRP0<$kKH%088x0VKb4Oe>C0x;UVE`)bTEPD<}0bEp;1~8_Q0}I^ez4kpITSn?SNzc(#E^JU(tr6r66WywlWT{_bAM zz}RiTJy1s0rX;JY=SOp@Es4^kvVwZrI%mcF&`_pLT>&+Ob&N&pH+Nu7>x)z(WhmSO z<)`1j`0-%5U(ILa(I0!769(UTtgw|h0o9wP! zacH=&qn(7ybm2|qw>pxkg&duMM`AbN)Nj-q$~^bf2h9Zf4xPvSXLU-+yO63bLi@ZFNjg~V8}e!?}PSY z#?$WAh5EiB4>~-1a;f@3!X6P2+SS|kS6vvuF3^}M=2cZj95o+_C^5Bs#gC=;-DNIW z*^{8XT&91iow~Mv)4~^?=crX|OXwWam@_zT#{b9n3_6-Thss(DmLr_`IPC;E+++t9 z_-KMv>!G$ev1E&@%5zWo|C@Hv*j&l3${S|UVjmAhuga)ZV{8yLOSdH}%K>TT+ej2K zx|$cH8X@BklpnHYblL`{7<8gWScO2+X)*J zi$|ZNV|lIm(|w6lIW-;gnju1iO}4A$7@F9wf?;V0cO~dnD!T(5WwX?0ck7ne{`F)-TxE@BIH z=|rvrYss>n!{=KWkHv5Szx2+a0`WhahMl!YWKF%5x<8-uyiZk|)#ibnwCHU842qr; zy;FEihn>&^xp)`WuI%X>r&78aZ*lcFb}jFXHNIlGOVxw7S`yoVEbT!bA1{*HG2Zyw zGsrD1@Vw^R<$E3l1yxO4GpGo^Rlk>74HGoig^Y6z8Ny+7+(qZd<4x2w)PK zavHysl$j^5VmEb*edVNg`?y$dHpIJL&r5G-Pd8=81`1T^X1nwZ0^{Smx{vyq-u{9UwS{&AbuEIL9%x&yUFD^qb7UAU(g zeU);Ln0ugYye#||xQq;3regiK1D6wO)Bojyzx%k<6-sqi8uj)? z)*HPv?Pfg->wQ&V8|#v5W{!2ltVM`g{>*x$Sx?FO3(WeLJsBE=OvUg#A}rV?)-%GqC^hQHHr#|LIYN5H&EdR1}1Ht{^O33d;CRmYY6&52b@8Vb^>Y znv5$Qpsb{LZCV~i@1ogj^cUv3bGzjOS8TY-vD&DmJ$*7I>wU()jrE}P$qBXoh2tZ`@u^twZz5IfZkwM5*tp9cpVnWpLGwYFNJr(OOGHde- zLPiE5Q?mY>L5O|ucK%=QkD7}0-|mmHqvE|^H|ziY6RiJaH|xSi#d|-q{@;Is^%t16 z{skcegOIsc|LGuPfp7zc?T`AHw6;%~^|3)Og4*~E7?ydZ48gY5>UF{->pP>?Gp_M> zuvG>=6?O0`uh4~h+RBTmr%l~hs94CDRsM$;b!GVT}jk#tsDaary=7br!#ED#Mp1 zU;8qt& zZ}BsL55t-J;B(>KQR0_3pYjo=>gbih)MJZjaorSHB*=F9}Cnog;BN|64PFpS8qor*g`A+LC-*EH=(Bu-7?m3akSf) zj)&)V>36rFiaSvCrC+?xnF1bNXYD&I>`S}o(AO_c%+o^PdOzCe|nWmulK=`dDU(aJu-r_EA=)yZ= z-iM@8hm9HA`e;F`>jZNZxQd!Y)2foK7IfKmONcc+lpxO35c;{!3nfbu87y~TVpbQC zFTBcyPsv9Wk7m~pad?2zDD7vqc4W{p zC3A5(xLnSBT+pIUho>ETc&bX~H-i=tXTDm1VW-10g1jhb0dz+MUSd`Q|8Ik-Ps05O zTHp?M(T{t?-1VsH#IcLO9imV4Q5^H1mnFF448`_m;JFeUBo0xW7{Fq)_1!{+mi|MY zM$Yab&lowBZz%ojSNl9hU7RSlW0Y5x;Mm7Wojpbm;^J~fQEwgn933C9)h^g)365tc zooS&dQJ1pa$R|P$H<63%y`cT-UX429}Aof^zq}!KVm}~nd;LCdgdPz6Z0Xd)rr(5jH=@q+oW?C$K z0`6hT5pHk?-VuDp-bLT_2g|!>d7!ZlHYx3^)p?v|q`fwpp=?&H5hJ}ek6~&LzYzMB zm#NrRI2&)V^M+fzp$G4bc}q6Rt#I#F;30RuQ5TWHGVc8f_7H-?9%)G@s4`U^9dPw2 zc^14wtuKylg0|74&w&1vU%!Vw9Z4ulZh3o zM>+M`c!y5?4(~xuJ;bd!>)cmI%@}ajbRFGSck*}bdi= zKC3ivdZ-@NI$TaRrq&Rx>#ETCtuy%@;yPuP?<|M~+a=+=< z-a6++P68s0$RT6i<;c@U4pbcJSgfFiVK<2@nkKn;ea9#}jVeY8bPB^aOxe1geXEf9 z$0S#JFcj0X7!Goa1Lv+jVe3tN65yf-aGtJ*76OkLcp%oQDt5JtqFB&w1?b08wc!7E z6$|d6Af?x^u}I3csmiM(>3#ae2nEV2dW*j}#qVJaP1*o%1U^=pDW2+jaS5 zye3IHV!7`kHSaD(=Mr4(McdIuFuYh{Q)B|1OMf0x0^IPlalY5-m zp&xp&TUfg);U+uZvd7t9jjGd%Q?Z7iW$PB}bf8|sI%n3Ve+JimD-TYgAEq5e?VE@2 zR^$c&+7>wr-wmhQ?Ro~-hi$jR&gaYXup@>oLe}zU*h39_I@sT0*yX?Qem~ZaCH>^7 zW~@5OIw`CkxLq+MEsbI@bw%SQT_+xFXo~NGe+h|Amw=fu?AKKCXlyGkBk=WWpeMo) zqv&_vjL~4^GmwY3Q}PD+bXQ6p`JBlcRnaEFv#me~KD^(!)TZchX!689xKrHy30@e= z0`JZFLa17MC&xsmvuTe|X2K0OakCD%BgVZvm~9##?|En$_iA6(MZI8yb$bGEI@qUsWh3lC2|yLH z7C*xtYS`1k{uaYlzd&SUATkx}za5C^QN^*JS^sZp)?Z}S%P$NW8iq^<`wxd9CS(mi z!yanb)4~20!#2M_WMm*R73;qph}cnA^j|~N|E6aBw;Q7DgCXC4zJYZ**nhWyRkH^} zzW=&m&jP%*HP2M`~KS`R*f`y6S*7ejIq2LQQ=uJ}qX5|HbQlc;F7#wT35PYkHX zw|XkEKFR|1RzKTYxcF)O*KZ;6qYy|H*kfb0C>agRxE`@(n@q6fu|^bZITeqKT+ika z_v`HEV_`N7_o=VG2Ug!fTTZuX`1%^c)Pa!693;45t1WvVB#D^WVy{0J`px;kcD22S zK7HKQpwAe+TskgzwA+$)yMJq@N}*knLUc8F*hi70;1`$DpbYT(P;R*+EHnsSXY*Xr z0!q3sYA@EVnk;?_?jl&&ev^A<2)vkk+T1(m5#)Bz%2#8%T+>Pdcx?-vAimIaJy!X8 zW!z3$bSHS!u1D;4+=eMjyCiQ@5^amtLkY7U+4vo=H!3=4bwxI3!neTuwF;uUt7_ju zI#u8B79u|iGCXtT@H3ZJq>*ojJF#~_+l4WYVAgk}x25iGR~`zZ*0_EpKh9kIE_I>( z&xQUR?%YP7$u3l&<T_qmNx);dgF_J5lfkT$$3>O&oFV^*`!t-W|L2Dz|*!`e_?1 zehTg)RL{T1y(ru%;GQ=3&Upp7l}+SPHmTd+-jG)aHqTzHD%5PxE1)7sc+Qf)IiW8( zXYrCoe_3vM1tC%Y#^OGNdgGt%Ezl&!-+K#@AB8|)!D`#Hgd(YgLe&$uHMO>cvQnyd zL2g;<_WC~G0TxdLx(u8tzTusHtRD2?*E`q>VT+1^PiPG>q=hSB%d~U z;J|x!in#fd<)vXgov@mWLo2Hbs^}C^wZ#;^Z}RlrezEP6e0kw=G2Blkd^!zy41Ex1 zMl+fUD@6j_qRRC%;vb#hnW?w?8St|pqvL*$1c&?>Qpb*!oze*!B* z8!D-FYIH;FwxRO+1eWHt_$kWONaV}MotQeP=+I;@jhpNd!1@U}y3F!EhRKK@3!Ux} zmwkw*O?*9VMc<}xY^A2!IXN3ydB;l3Gl-1fCBN)rpjqLS7AW89jn9Y61K;~%rO7ZC zYX4%a&BA}cL*UDDA9%*V#}`e8x4^R3w%pk}q)$&rJ1w`833k9z5`p`}^z9%`cfjI7 zO6ymxSwD-SO_Z(!7F$F(TN;dhl9#}J8bNe;2|63i)V_qs4}uOI4>KL_Rc3QMiywd_ zw^KF$&~U5ezD1B-B$H{8prWe}zN+;<(&{K|o^xqILLoi{Yh2&ScEGx9a;eLokNj3J z>_9$u%odZ+nLMbfilHc&Xp`h|u%_&M&a37UC10wx4f#mr#4`z&kdv~H-e!JQ*CW`w z9EwQWyT)tb%3BLW?pD_`T6o!D@Y8VL;{Q9`MbgvPaL<_gz;@WZKV)#h#C3-7ecB{4 z?W2J1_L#u-?ICV_Gg2YX_UKsQ+F==14DFUP!1djnt-ovAVEmK41reWo``2$F@}po* zN3I=xgj`#JrPYYySdLc6V8s|lJJ(Ecr9upK}) zSpEdB;HVPzc?Ic6r~Va0eh32fIAv9Tk*!C?KG}<%dRJm+t=UCvn}t>BrwnU@)zVMX z(T0q)Y7yyFg@F7@68&iCsa8mJM$0AC#i1Xn(>~vwi!P!Uv28lCbxC zL%aUi$TNR`3R~aJb)+S9H|JwSWNREX;j3?KtgYq+cOM|t~@B)tZ z17AG3^8!RLTifLYWPSiR>*{S5CsDZlG}|Wx6c3Atw;+R+e)dA{PY0G)s#U5Z+*PX0 zwa)OYp59G@fC|o&%RY|4aJVv^rNAZazUiqE(@}FT6{L- zB0w%~Am^Qsr;S{5n8e80HaYd#wQ9oM$yetnCI~VMl*RF2u4p1#jC=;Rtsr+y_d4(LMm?h{XFYX$ z*PG9P9Ztira0@%nNS&8r&l$UseUrS*C%s5vi&sw~u(opcmI&Z+w?}#u8pAz~6*<9^ z(sB?NcU1d;9526y&ITKNvg;;nmUQJsup@>YXyd8{eoGSuE=`z=^`Bmva7L{w(zb66 z7*TOqQaPun&`;3RObz3wm9MJ%J@_v7eaIm4RCIc-w{n7P*ALS1x9>9kkoF>S!5n|0$Nd@lNbg+@LZ?QlFBT4`tfcoFTKX_v2M7DcdK?~rJN4Q;St?;e7vaP6K$ z^W8(o$$3RQZV8g+D31>cWl_mxF)eofLtk#}b?75TFGBM2=g-Ib^T}xcZGV1(t-5Bk zmZKMRc?Pz4ZK`os%KH*0%~8oAa4R^LZcMF(1NQv~A1wT}#nQhW{^8Hz!qRKtrwzUq ze#G!)nB?O9*&o+``viNjx2uY{;cLepy^X*@bQI;hIts_`GREQ7kV z_-CPuEq^Ndn-VAZ-nrZKmyYyvrZ0OcaxSD!McW2lV`i-|Ax?%>PkOOavH~JCL(Whc zU%P#Bv{!E1Jn`=H(+%lLP=a@%Wn%Ov{DuMZX|l!gCxGuVMZ7b7b{~Gm@a^*TUPtU* zqw$_mA;o^)ZeGXVp#&)kp4#bx#?jalI*)_C=j3%HYx4PDPagv9Du~~r>gcnM^wXvf zIO5t*%|X+QBk9qqO&-U3ZOk(KqD8st&}yTAGlE~c{cqg04beFJHsJWC=75rgNymuY z*Zu>QD=ZcFB)yLY>!0Zbu*>=CfB6C;KLATxmRJ-GJ(?|h)}}+-H1x<`K}_)ZR8Ggl zciREaZ5EAAf4SF-z6hy%GIr8(@P2Qx9g?c2^iPzA& zu8{ERqA9<;wVJe;`Yg1e7j1TfcEq%GTea_J+D)cCCGD>;?WO;;0Kta%MPtxpMv!X% z3=r*h12TA2He5LO4Tt+5n(X@9QA4PC(TqA*K`lWYF=`W%hTk=F_%(A%;D7j?d{OoI~V-#YVAF<*FT>= z)Thrz`)~X7V4&AB-F2@lU+?5@5dx)_xT1vD$i1?GC`0Oggc}3>Q(5Yp!|S{Y7{iHP znHI*N-6o2f_2{b!Ls^320_e=>#a;BeANq{ZOWk$TEG3$-aSr=4am@&_*JC%$vW$n3 zxH$ngAzPOSpt^;58GO+9WwV*OKYm;Ifh&BrVu@IqOnx%(;wJc9!(s*bw8ewvykoPd zq-Iea$avFS%Glj&hcby@91u~OlCDwODK_AUfTSeu=Ry+6An9#{+w>rvJ~Hi?b!&OJ z;`Mg_!#@^(#Q1r5(3&c*lifpQXb)AOUyqxmYEpf*12UT=>86kQxi15k@K{RsQpe}w zCd9ZGJwEMM&UJYaXXW0Td*6$b2QM@GslbbU3Dwn>*$VI~S4%AipD}n@w^q4;yGyK^ zS4)Kt^);8;V-|Lqp14*f#khu!SB1Fa6+V_x6;!kY5omK2pdP*`uc^*T{Hmr}NIavN zSxh`_;*}?APV-nDWj*E9V4+tPJEaH9LJ|9@guQFhp!1aNZsmRMYstD6N;tTGMBrOg zy{S(?UUVd%>)Nd$A2Inr+`+=q@$!V_Eqsob+$z~H{`SQ8=<#xE18T47^+y8(TA^JH z`$9=Glh0Uzudk4H(Bdj9=MP~i-X$<8dvU#_q=LQf$UbBC!d7jOElHCtTbgX4;dWV} zZLinABWjOUzLz~NtX@lZT@vp34Anef+2(vtH>dO>S?(4%(Be#-ZCofc#YNWNF`x-WCxpSFf zd=KXrzzg=ZldJLD9fai-x7X>&^I)^7xJRB9>}xM0A2E3u9=57V(In?_fKpO)l_CxL z%FER9dMk~ToV8n_n_paCQCk*+$_4GgU8+8xOQsjdNc_92yITLc_GF{NPxCavH0uW*0gJjuA z`MWkzBNw-@5ce)`Rgbzv%@6$}=p#lS2sr=;)-fIIe2sp&R=tK3wILn6ZJODKY(BxG zZ=qGPq}gv(d@eFLQ`yCJiMcT}gKNR@a4ipF=3{>BCb+{~c4D42b6J%dD5>uWCqLy% zX;5{fLR)?BFoswpgC5UPXC5x9*pwSARYC+W7k$LxUtE4g`z^qYOxDFRGm_t{O}EJF zq-U=qpE3E~jU4tZB~V@bXz1hE)CPS%IGPeLM?zqqpsYJk*;e_$ayTXgOl2rDCwBNt z*dxZSPF@CjRy_oTk9vbHeUs|HZj@Y5To!}IH3G!s?@{$IAKJ3%vWIXlRU!*WDMXb!8G7BC~ zh;(LNkWC5Y+OuVSW_~X8NAU?RqWcQ;!3-MQMV~hM^|Up8iz0gK&=#)1Q9EndP!tin zG>W*KwOmPKvTVyDtb{+KOKH-LH8f(x{5%44{jU`huCrl>0K2$>eSzFqVlnoNvG+Y; zZ2Um6?>lw=KBlshga0@(7kDyh6&lr5) z8j0H4Rr%4bsw&%68!|ZjlrN4KNkD2B;O?V2TfeF*9}mGkdai{Z%@MQ=2*(xHo0(o3 ztbQW;yf1y;fqumFZQCL^QKXG!K67V7)ea%34nox9*h3mihGK`p4IGpwH*ler)YR7( z{)xRT6q@~ye3rbpPd;t(n(a9=S+@04q;h6!v<1}ZB;-re0SkBvRk#~UIMXi?_%fL= zW{F+|tPe`<&PO_Nu|ZEuI(cbURGo%%luD=0aB<3dc8g_wry9K$=8f^+pia@!@B=W@ zd*FZhJ!F0ygy^anC(km^wKK^LnsGdo>c`(B6?{$;6|}q4ot*45wO}DrF=X#;iPa`Q z1#8iRHOtKB9R_Khj02*d?UXCcS=5(YF=v zRIE1D;|5Kwc!%re7x5oW5_9V^%zW1&uL(#N{L4!yrd4m(GvE%r_AT7$w0RNkh;au} zv`VR;7a8ZTf21Gs*CA-lD=+Lk1sY|CNl_fj4}=|CBnCYKSX8*Tz4PG zSxCUn={10}PPWQ%uL`%N#Ly3WW67f!=0CY?u=DT755fLlh*v&q@SAMpU4uVk{6~w? z059Wynn!PXW5JD{MYl-oUglWwR#WucyO{K57N8mo{fD~Tp=VI%jM|KKDOhLbk9qXC zOTpaK`a{3oAzIL9xwa_tlk`$*vl68iW3~@&J7@*pTt(Ww5iG#tLBP4BPZC8lNut z<5{y)_eO-ZGHwpxSY6m++1OR&l-F)p_6)Qk$elOS&POYG+7Z(hA#C|G?Xjjk9qq3% zZPmY6tWHa3)##1CM>qKeY~$8v?e{UiZnnmn2bP>FIQ-EvX{JY(Qijfno>9REEL zYxC=;^1)xQbgH&buszbAjx~g*WE<;2ads%xjRHnJrMm4V3F7DU7F#tu`1vJ@8&3R! z(pW?)1&xrP`V9%YTCaSDz6ICqSYDz2ggSAY3-^HwwMYSKb(~VP82dDDfDd^Cyu%xa z{0J-$CSzf|w|VOUkL-O@Uf-2&KQg{ka8%}dGT3iz;Ek{cWxh|W_1J_JJQcDe#-*gY zjACCKX>F?}%We%?rlWmY4ckh4P}rhE*kWwP3Z9wTVaEt^q#?q|j_et$=p^8%^x#ym z&*{N-*n`r8YE&xr=d*K`t$sdxsL$39*3W*XJss_@G416SjtmV)rh@&)!x0m*hM&(K z>$9h${g-{V8P}=yOZ!a@`%kC+?1R_!|9tDzRIvYe>y#Z8`2E^lbC$jQ+FeHmBfuVv z{QmQ%Js<6_F>U=DEE^eT&j$N150*hNt!gA2)m^-?*5kcM_`i5}F@)X4?&;2Z2CAQ{ z$f|#&KS{%F(rJ^nMptP{rw6d{n^@e=81BV1XeC~cRy3Jhpm8+1eu7>|CrP=bWvD&s zn~Kk*m-NySFy28)`;w;Bu79|9+)EGKY2yYfMAudBZqF%6EHw2MH!RBFFZMbl1|arW z%BiGd0l~Q7jV|kWXFoHS!B*?&nprd+91Fl*k?U{xxfc538aLt8oBLcZfM0EOZ+ZdH z?%6p5?8mYHvCEWyS*83v5c*XzwXOFV*Y`W0Wb+w5@I5K zrJ|&+X0L5OMSZG3UF|)U3H<5Zn^cR#?3Z5v30rpeEm;68mvE%PVC8&G%^mhfJWd=% zHSQD7m^f#$qlb~Fy?287)GF_h4dVs1qBwBvPEmA2YgDPX9Rru?u)d|D`DjD1wWO6c zA5$t4!x99V5(IR5t~ZK@5(MmYL5*f;Rxcs!%d4_)TiW%zGr`j}soAj_rd%UpsVU)y zYwc)ZyDg5_CndivYv(=4!)@{rlb7K|2|A_*@LV!9`)yw+`>$zdHB@L=ufFMB2_}C< z-41oQ$PKJ90$$;sz4oKxwc(BYZXh zzPJlNXZXA)`}N0OP*My#Flh~`6F#U&it$?ZK>2|q8ysVg%D#A~2fQ*ZE3HJ|J= zYFHRFV9rm_qW0Ci{A#`ytDk~A3?R>Ml24m_=iGpgB|}x4;kkh=R|nU*ne}XB#+5&W z3kjv%Y9Mdttjf50#oTx0w$-ff&E*CJl*@}x$lqmUE^{+A{8eB65%XV8nF8K(z3GuD zz$gsM4tRwrFLxV~II}I80_M|`k!2|ymutAn`^FFCe%x|?&KL0H6I#lx(FKvVo6-)a zg+A~4H41+K=6eHtk9cms0c-odfXq+8axAPVxMdY3hxaxnvG)&EG<-ly{hI|%AF+VI zzVIEa-ZmIttiArJmyM|ev3nX3 zpVV3J`))FZx;)6YER<1L58NpAXpe`)0?&Gp^2r2PzeP#;1o}6nTd`(+0nEPu-sJ^| zPA?$x1E9kDm8iI1<&;@LYz{~HO(XpqFIXI`vA(#)V%eYMNnU=lFk_jm*;mzi?Xn|u z#2WgXrPtUAk*994rN|-Mhfsz*ZRFN26|*@!*VaU{Ia+Ps;5NKil{Ww$_OO->=Nwn4 zXs%34cYQ+0j0SY5y~+CY!D-3DlAb;T->J2JgP48O;&>73m#H`TDP92I2Zy1<3($RE zK>7z@+_cW&c1EWWf&{`<9><#3;>sm7SL|{K{*+zM&EV;j%}(oJ538`uwX`z#4X)QS zl%_WgUVpAvz^*bmO|L+7dIgam0u$b_mWmse$Zpv|H)Qsm#H6WHQ!rsvFlk8TFkdf> z-LNQcps=!y(INGk%l#Fc`Ae4j8F)Fh2}J=0`5#K06x#lDY3Q%?gu80NTl{_;{1vLyN(G zKlh`h8*X!l%nq1h?rC!$Kd>`AnQ#nD@r!H@NbLL*R4xf7c6_ zuw|=hQQNm%Ll9=_Eq{_%0DB5Kmd~ks1-kbui2M))T5tQXrYS3%xLqqvZ{I^K1P^RG7Fd-Uwoj&tked9xG6CwmLiqc?W&!G-?0H>2u)k>z63B@M+oee(a$G`?T5jol-TV!g#9xpp(%R=v8fEFmx^?suV>p zFz{#8$c|I0*sNl_5<&5pBwt^g#E9Maucrik0BMSudb|I@SH+W(_3$%>zd*<8C(VPp z%O!OjsV3PX68Pi1Y#N1V)WbIx8vBH> zp&xA44m)kwM%vDT?jKu|1`E3L(~7F7*o;d^97~gyh&*1VaaSB)2HRuYKx>0-&%_%p z+K9?{>pr~G<_(;ws;H6YBsRRTjM_%6u}7prSY~{f@rEwE)8<__Sz7N_X#Cz=|cFZ^IHxj4fRmeZftuTf_4 z^TOvH;X?=bX~XZkDG$e;?b{d-Ui|e)ZR)UfKi+SFvMa=&xn+5nj9`B76W>Cyc%WSW z27aJY1~yu3O&8Q~A)wy$fB3KP^Dg)^#xJ3x$cy&V{&?I{8!4VmmAhtmi>}de)W!uD zh&~B7S~_&m`^adUoych7<9<{epAKBl((d;sz`r~E?KRxPpOJg3#2+z!7<}rUMgm5+ zUx;1f;`*u9$6092qiO7QSzXIQbCs0l6*bq^IcY;L+Uy4Hv}qe*yUNu89Hlyb%+ZhB zA;yE|3x09fOZ0W?f$yh_q9X!10hevhJLtNU%%r%*P24)Y0kRBt+PJMTl`>tq^nh?{ z=cx9pfOzuwJXX!dR%DRQ7F~jr zA^#G0F4`8{IoD66T~Hite7^J6i|9p<{==2^fzV&>w(GZdZ~O^2haC?YDS_A~U* zjIO<<-3eMI1TH!N9~QKT(5J}3KBZS8tIUt{Xd;XDy=*=Ok;i$D^y3pU7rR2}9p;bt zackAc3%~KI%TH!m;9C2{ZgC>)$7g+-g*0@xbRBCl^ogkRt@ovsdSRZWgnGo(Wq5+h zQEEC5ouKE=bAGX~5tlX65vqA>$g;Q-)K9lmg)CD67u|qE7vO0FH%bm{8TEY@@Kk#) zyUc6(p3!abZcGSvP=oG_v_%KnLt1o0*uc0P*(_>aw#t{>ZqbFPRHTyj7UF@dL+WQebSSCIR}-ngom zWlG>dKU^d5^eI{jJYwL1&Y2Qsl$b(G$Nx>m_=~~>_uH#?;pfkePwWcKMTl&>|Ck!% zo)$LTfNipupFHfeVe6xxzt0Xujz4VhBB_2%kW!~m)jsr#cK-AVMW>b-;}?)xao+};}Tz7)y?upJ94kIJ!q#* z8$k7Kl-Mf|>bXV<7NpR4yx|l#5$c!np2Q_oKg!2CGs%o~Img?!8uui;p$qSfRD2Qd zPxF?+ysTPm)xz5BhGy;O2i+tS$`bHbm%6b?Cck;2vbLUU7z8TJQ-OSK`)c1OWqEqT zP?(6Vun&!k^dVr4E4+~U7G32zq#vQ6}+!Mf)m zo~kw#5*MX$canI-#7$&jS(kGXX|T(oCN@Oof(h0O+o@-Pk*syqyC{TX&5X*oiS>qyOO@C zo7zB{zuxv)M@Z8-oz_j|DkBQq!Bu}fYu24L@93-Ts8jKLQKxUmjGY90H)?*d(L8`1 zT}Y$Zm;huV)T|R~WrhSG0cj5M=c~`Ud83T_`%$yrs7D#KfX<{(MPKuT9O~N@Ch9=8 zl?1!U%$xfVX=wud1SilhXt3%Z>vz_?nf0exFQ0Tbz3ZBv0+$0~b#2&$k zJ)$SEd^;OSjpJ%DUR-KZt#>s16?J|EHCtNxSieA-ozDgTkeKZOUuA?g>)>Y$Ux|ti zdQs3pe{6wNR8gTh)AE%{sAPv3O%SzhYQoz-k1pWEUVe_P4Q{pdveII{joz4xHv0JN z0%z;rvGmpK`iYqP9dp(Is=@l_c>~~wisK_YOD^R9gZkskpFUjXYlE`?JSFAZ*` zHKUyd)~_fnZG!+OGbwBN^F6;5TWyVnVtP8<*vqLS0wo{SUNjC9Sw`hLA|&p2=gVs~ zU;Lxu)Et4)Y3UEagzsQm80p>v+yOUTwV%_kynb{xR-7DUY>A}W z_ROOzoK?IXy6H9wjt?l;x5&i{UnjK+ z(Z9gQE;RfZ-vZyeDtOoeN@K;!-w~&)%t*Y9$#G921dgc)v=Xpy=EpS z_W^N*GLE}canc-p8ON7yH2I?XAArf&LqGQHKKqE-%P`%bJ1gASher<2&OdhB#l!$U z2H$4bFZMZQjKX5;ocoo&5;h6q|0}fjsi2E+nTNkjv_Xe%&@+Z!)c`FDi+w!I9`mXd z!lGqsbLg2qFI399hjPtrM=n>^{9Ne^hO)1k`E z=nCNb*cgx0YsjJD4}OpyKs|(yLZD4sHg4NPSF&y2bN|yV_Wk|X*%0jP7WRm->u64( zUlWIVJ2;1zyCL00D)9PGo1<3JfmF$R$6ejA={MSl(qLs`>bwtixJf-{>io;0zdM*X z^v~PSC-fyFnQd?)(f#V7D`++Kxv29#)Zr%eh^d?CsN#qU#{(CC9#l6jDjW+2i&$-U z=cx>}Lf-EF%ZS;~*?@~o@KOVO#C+(9_tC%c#Ri_?t?;?1gqPzzX83tF;3DTyDuDA5 z25!fWEJCyRWQXaDi;+cAo)oHaIMkf?4;LHuOrTjG(CPli63`igmc0M~92yNUI^^Msu;|-C1{>H&Se{Uc%Bk8Zc@! zblLYp;$#4~+t!Yc(EvVV>Uk>QtSfLfV)QxWjlEnyUovi@e=gR4dZPb?S_~_pwOrDh z$_n|w5624LOK8zcdPdF@KhOCQp~1R;$S;tyX5&Puq1!iYjly+eFG( z_@f@*lt;p;%qV>;~_QdD~IKAwKScCn7?~ z;--CO=uBMNHC7VNo=m;-G!SLHwJF1G}g=@NMSXt3O364m@My{q&7bnYTg@l&(eHIT0-Y~g9)dk{#d<1o@S&zy@=6+Dm*{p zdE#9QJo1sdyr_01H}CRsiH`NfD}&RmuGYXP6#RU$lH7?^{vxkTh3lS_wzxyPByWui|9$afeS0mYJ`;ED zb;#SfXBI(LaF3XKs5GNhCHB%7Vm=_1ACIBLYkm%TlrYP5JV*pMx17Q#-ejF-TU7b%Oa9lCUt0c;_oTdWeHEy)Mqak_@GmUMn)MASN`0cl>e%f?-g=#QlaJ|}eO1Dz** zc^UMyp#!$2_f_IBXHj1mtpoWc=^HZzEB$5d&^X06P%}xt5x!;NQ_w!CRyWhm?TIL% z9WiYix)VNxwP?$1-DDllY#AzPD8-o}*g`$TLD!eEYb%>rnd1^=@MJ)|mHrTZoKCG8l>iZyELkyhX6yIz5AoGJnt>Xy6yquXkxOUO-rn3;l+Fa#P3i3USVIriDic_@WV5vhQ7`>b>n95b zb!MHKhO$HKdOFz91-2P(*rtEHr=~HX-sLX>gr9k>VV4=~U(AV>p)$dEV7@l-urZaY18+Wlzdm+~W;hc&E+VEb_~7 z^8k0e1cr2RiOcqIlo0#yB&t}!(P}>{Qg7We;f9O)ZXs^n19#fEfgjF9l9vSxr9?UJ<@GiMb?_FK9Z|=F#TTL@TXZ3~7aI4*y*P^xLFH-&xYKL>BIvUe z*%P`c%UkSx2J&#~PrOM!U0|;vA2Io5ln}x5?e*tT?dajT)eiP??WljzY{+2zOsrWi z)@sOPe2AI@|7j3V7us;E{(jV~H|kMFEqV|8-MYlz7#QXW@d1!a_7cCOg)-%GR*Pve z>mTe7*t{8b#IV&s*#S+l-=CAnlwPorTdynKCXu;GHd-&(C=0E7V&bBmxHNr;XH0w< z;7;`4lE}1v_9N5Vkdw&tI;4SUqirzoNqF;~yx9%jY4hf628qmc>y9l`Y&043mfnXf zcg*|ydGr3f*$v(i^VWmq8n^!VKa(a|AH+At?-!lOoQ)iFqnwF0>qmRcr80zVe%sGR zW=f_){iib}I+STN{bd^4doBmbG=j+YTn*X4nzKHe&@EHc3Y6CpQ3m-ma+7Qz;YMtfhfUvUbpdt&0^265Ggc*ew)`0}ew-7=9o+ZLL) ziOdI_cLv^foydu|v0uKurEZ^1l-<-4c;fngp(QXXS4_PHR~&7yH5wp5 z@DSVy?(P~OxD4*@?(QV`;O;KL-QC^Y26uOdZ{BmxUF-gUnVvOW-Bq=pEjNEN12 zvmAg_HSLI-1HcMxQc6kWLIH0?8vmb0tm{~jx;C4YA0koEzjJZFH^^|vcWbw2OVAD75JW3RJ-^p6u`&&Cx$8GFI+ z+*yn?*W61+{;wp~bWT1`O~-C3XVZS=Xyu~3r=c2*Q<7|d#(*DMk}^c3m7P-3O<4#; zqvwa7zkWFJfVd^c4M8Gg%z)-doU%DCZQ0-sl?+l#mNdDG0iDN^tjvVBOKKxNJgb?Y z`|m%E^0R+fdhhh2g&Phs@}+rYimA~@*(u?ZgmIHvfCCN#i4WlFO$0?Z9R8#T&I7`* z@X(~9M`LI6iyXC{ZDwak9j+Pq<{M+}fTKgpchPs0$J-P>WVtX$Q35W+rn9TgZXA2e&%n+yxFux?-Vu+KVGcw8T%977xO{MThK8Xr_zrhjFIeKh_;| zXw;c5qSgh6)U!0x7Tg>b*%%6C)4IcPwqtROW%qRo^>HZmm~QB!;7D`TaE#e4ny!~m zX#e}XDVLQ$$y9vFn{~Y$e~6dVODjG)}5Yb+Mx2OjwQRAP!pBH?q~n4p|tp{ zgg9{3OVHB}M)W7^jOn|1^z}0MiSRQR?q)KknfK#C+}=i~A>s{s@!yf&m=bFu|0tLcC%ACAd&EY8Vg zg^Pz*)kq|@B9rA)jRM)iem`dphX(>LiIuItrrvYUmy~A|5PT3dg1#bDd<+SWZ9eQ| zb9^ow|Et9PIwtvdD@-)k0Qo421Y`uvHr+tH7 zkVYMMVY!4I#|o6`(xqC#YMC2cP=d?I_qQ!%{Uz@dAzChZPV=?Fw_iH6&R15;Ig+T& zK%xFQ4i67=8@I{Vp-WF8ZOL(4h6RCszf;HI-B~*EH0yg~GlJH=egvBrNBTszK%M^popg3PQv&AG{Th|2oszn1_0)R@4#%cnVfIR;DmZ>ECE=p}96>N; zS=VUExR3Sy1N1wkDAy5Tv;wY6tbEiLXpD4ETB?o3;wF~dhWYIky*9O1)c&`V-7832 zI8dCXXSIjos!hL=n$rERW%-Zr1?uoy%Y zkgQpg2FrwWL6^g=D>Pgb@Fj{@*Tzp41D-6Eu9QghdfMxVbeNQryY(c~!X4NZEGH(a zP^<_aaFjh)kPRSsddB(>IK2ROA!2JP+fK+-kh%6V{H);Dw0l+CE|p}f6RaO>CW+W( ziBH<=Q)opej*2N{UdJ=6uvxwa_ojkS&N)Ow{og#Go!6kj=w{yl-jI4Oog~l%tJp~< zqIF<`)}6>ql{wkrpyX*b^<^Ouer$4m?T>>_P8ndiRj|*9gTIckyv+DpTZ`5!O{7hc z2r^il1jG&MpW~>6fT@)6%X_}{0nsnM!R>*X?P~qk8wY(~k136is%~*-O&6gs=jY&B z@{@Qi6@HKx4L#~#W04^Vw9)9b(hwBsJ#|r8#a3G-A?vCM)|Jae_JDdAsV`~WbvmG# zt^=ao-r)Qi`2)ieID&T-i2s&J_;qnSJS6X}==Tn%MejbfvN-h(xIF>?oQr zl3rL{by(bO{lz!L@Mi@c-;nV@K&fu&N#-`t2&@;zMoVYJZ3cSCYA&;hr{- zi+&2YAW)4>x?qXv{qrCYMC|z*`!zVix%Y*>!U4|K=JDz}{?yP;5by2XeM6JrvU{qY zN~I=x*@w$zQdZRZd9f7T0F^HD;TNwN8mq_d17AUf|AH6oY(>X}lj!_AlDJ;qKUS-;Ov*hTj|&;g~;)L@QT z)3kU5NK8!^%hl~FB9uJQ=h|L}gE{(sxnjlL`+|vHm0sXSPxcYUcHzii(2lghKQn-D zy*6vQ?ay6Xi@^J0+BH3$)Cqt%p>FO}i>U5FrSibu97Puo9=EZLy^+>XWJ3=_Wr&14 zbxqv6;&xJogh2C#m>}RRuZHQlV!nzLxAL1(U z`l)YHSd6k`-d+FI9^v{sKIGAYPtdD;iw-eW3AOw=+^>h%bZAu{y;@B9H56}wUf`+p zkWtZQUvQp$e}QElH6J;VehI-bQV_L;3$+VLT4$+NNR3jFd9p3OVwjR4t-C<_Uh$Ng zYb1O5nED132(z8RD5Uay^AO+>+eg2rxfgeC0=C}(1BatZ?HnZhIgdO5;HhC_O3uXB;|wk9)X@*%3PaD<9V(KE({@+H>S z=s}~3iX?4Vc9X4}uNWQ6jFMaMN8k0B*lpG-yx>832$#-#I)l81pfRrfbHCUI!&F-2 z%rM3*IZX$xSAEf>cM$?18{7OzZ1yI-E~Y@^0#%5T@O7@RfO352&2D zxAPw(B5~W6;*d#Gd-uBO)?t8l>5&ADd*gCZl*Q?Q|IT#ul~P^ql>0re%#!XM>aqeF zj(R*}G)~PAMY{9>oTsnsS-@iAJ=Tu!CTwpuHFTiBVqBIwv+sO02V`mt+d4VYhB0^yekd==FDU?OAlb4V606sq`K2cx}PGlV=VCuOg5kv46<^6{~h7j%P*}p{u=} zPQLc)iy*Lk{7m+n)_NelEXp!YUs7Y8?`DNajlB0{UENGd34_aH}U5904lXYo6b!I7W@j63s z#pSqc=28unzll{VeJ~A{er|MwNlrED4w?L|n%L#=Tc^Wh%z7qKoG zfyWDxBKvM7Z<_;^z(^Jd`dvs~6sQCn57eWUJRf}GR)A1PA7veXfZ1|MINDvsX1CK< zu(*Fc;f(n}^-sI+Y|o=uZzhUsSPT?3^dqE^ZbOP?X(3{f1U0gMk%PgL)8XUPFYaiw zIe|dmo`v8TV@^AgnS0|BO9ooSd?!u&;`h%8d@C5b(JV&9$C>z#1fQt2!(LG?f>T(= zyh9KpCSdVey9t?DD6H9#Gk$%|Z;yVO3qiD4`N)mRC7h`vh`ZqLcXndGx3|kwm#qll zIz9dmF0%BmN}|Iz+7TH{$r8C8j zcWF4xn`-y{M}-V0=ds`$p4L5o?Ju~^5be0fjVIDQr7RFf%6UV32#=#aC z0O(DB+?%kyl1t|_%U_*OtCi=38JTT%K*wO@3ZqLHNol$nqq-xw{qO~~3;qW@_qRV^ z{iM7v)@;$aYPvUQz3CBe!o{1t=0USs1U9gcYU+y2Apz$BS=|S^yIsd=f?g;Gjat&oWY8-m|*`c-Um1#sf99ZbI8uO2> z;<11|yT&F&yLMcYt{pX(GOsY~LVDEjke|q-rfLq;ZA66g#v-0G&P^BF_-{|A<#uI} zlG0b{J)hl2;T3S5bRQx^24 z0~=FcKVSY;1XS_%ezJKFtVXTw^mOyr-1qatJ%q(c2SNT4$*IVmHv=>^kHXH4NgMqQ zbk+IsWq)aw=z`7G;XkY{50GJsu9vBmG)A>;u zNH|!E36%}?JoEJ{XUzY|$i4ab$2gJ0&IWTk8m-sEZ!EKG+d(H|KLvP>)UNK2&`necEn~`-I(wIaYTHv%+%apJi#G=a8un~ z4hF1hfwXG~gAQBXt%*(SWC$jVMt*Xuqkhf$I=S?QEz3}{q4?T1K1M2f%-MCHROyWk z=OmMrIPt zHbiiBVcUcHKiUrSYzbdY^68nfA)v4Vuuxf#*0L%?;M}od^Qj#5IX>{}4R$-r zV~8+JjWj^=THq)WNN`Vjn>f_HLVUp!N{ePz{iM(eD-q};B&My1cxsHGJKq$ZEt3nblETGyzHlH%8Ec zaZm&2i;{|*2@fa__J2JFGu1>sX>XBTS;ZXw7H5u@f=^@QOz>?UW=m%}i@*3P3)(>( z^81S;YV#if2o-AJit9;=$xjIBUTub+(L5^=N*+KTUjKdFrNIYp|HL`^!30_=ZGXqc zzMI>R9{x!`04(2`ZVQBW%;(^Bd|!6x2aR!b($6UE1rr>|Y_g@C>@`csJ1FIfCl0*R zb++HAr`Bx-5U2GT=|PX1%va`mA0B8H-spx7^gnv$7NUjmdu7D+I?Zb?F2xz-hPPpE z3ej%rW1-ZKmQyd0rFPR$S8>Va*OI9uRBTR0?OW{Bq~_ncgDs_$B+)#o$t#4#{>HMA zhUxtt#j5wXk_^2i?AIXLK}F-V5jQRTzH&1j)4aTP%UDRJ@bNbTUR=#kG90l_2tAQ+ z-zZY{(uSmqq`U|vL8beS?qls<8Xfnw;Q!2&SI;I`pggbPX-0?upckqnQVoM}_nE$>Zr}ewjf>5&a`+Sf)P(ewx1jKynqt@H!gGa?$^^ zc;Lv`Iw`Mux0}&B*|9bP-bBqH@EMilN_OW)K?P;D2%gv+=nC=MoQRzWA&{k~iKZiX zlH|(B99LwpI8=7`OYBE1VWu1y5rk^g*G^)jNU0Z3;4+zPUe=-?4I6!Vlt`!Y%3RAa zN+u7KvFu+)s8~)SD6<$Fi11gVDgZ2*uPJ>IM0d1;cu^l_mM)d-HW9zmvNDiMu3j_pm1fvw4{Go4*oOMtbyAtF*eZBjuG-Oc*>7F z>3|vf`n*xRxOEmqb}{U5y5}I;yIW^-9rMXD8tLo6pe5r)v9n{iS{d^+8|J>+4}lVQ z1I3!W;1czF)@K08PlX5V?ME%SdH|_$7{RU_9V`K4mpW!`K?fXtXHP+cPDdemyrm;( z?h9aIH4y?plrYdOh`3&@gjavj72VJw2J41AM!Vjdfil)OAQCYbf~Pp7DP9xs>Cb6H zL<610VPAKry3Wy~@>!DinWfrJC4AaM2n^2a(k3AAjonSAcm+>S-zm^8ujI7csW0n2 zstyY;XzM0QzPEiG{ZT){FKe3xzCg_-zKKei;w_mWpujdUEDyC|yVMJw284gq*h5|zVvs+YeB0!nDX2T@ijr?TA{vchTYjJ$ z7InO~#QEPhc$Iiz1rLpA&rvQJKjaIc)dpNvLZX}3MV)#z!Cv;T#rPK@$vinolRAMc zAmj1u)Jxn|Rh6IHb#~=QKP9AZhe#P>vs|*T6nOs0KoMXdvUy)u1%-|Y&?TG@lYf`Z zX^wmK?2HBh@b{%EzYLTln+Og4h9vD|`)OTM1Az8hyZo9QsqS*+;i>)){=Ym8Oj3sD zwMv0oWlY*-!pD&;1p!%XQ7jh2=oL-fHBafxY<082sXambmxT#-><{a!TrBTJDDVd% zNOOJ9v)${8NL4%8))x07E;Zc6G-H}m?`6-rdKw;jzwJ(GNTNCiy9(#3G z(4}y?#NI9up*f6~wNWt?Y*%VJhX|s`y zB)88m(E*y33WCpW8u$YZ9eRkszjq(3g{$e?%@}YvP>=VbDGW-AR9{$KeP8Kcb0NF2 z5)WxG>kf?>8$0{~#`tU0tXSsr5Kd(LXXnewdy@dFxh51R(i72z1|Ge@FPMUh`Z1L} zxxI76c-zOqtl`#ufrr9KnGJXKKEEm|Ri-0LyzE1#l`=)*TE^-->lxDl8APQXd z%>byu{Uf{j3FhXE@HuoOq{1m8jByjfu^iC83PB=|6{x5lMnH^n8AYOUepGl`0GJoK`~^IoWU99bY(npKqPNRM)%$P z%##qvDwH$xw?xZEXj#TgcN3btB%Q)-N$nku?@vtDnn1&PfFtEp!sd1swhhK^;mXXA z{`@Bo?K8oo>k^j@%TMa1LM>J}q(LMxYA#(jEh2pNtS^GHZ223}*R-O`8>9DCPckHM zZEi-ObB^Y#!mB=#>$}mr?u_v}iJb?}&vOatg|2|rl=uXi5sr>{)v@n&A2m@mNqrM( zeKFkEW&klv_(*X%v2i(tWpThfZixJ}+gvSW4-$d>AxSLcI_j=&ZyGaV*vrTKF?PL( zc6O9&=oomR&fy^CdkCvP+Wdwp)!K&^`JK)wQ7A;Nul(XzKH&lmpWnSJ(%L(|bD_yp7~aJWIO_`MqTGRz zbRp$q_?n87ox(c>xQluhBfkgB3$GRVO{}-W-E*Gn)XD2wE)t1ZB`uypHkWL|q%X}i zjt$;~;@v^Pd`IxiM(P*F^4y?p~Ava6N-)CLg~aR<#s1~+TAXL?SByi&Ac+{v1%{kZXpZW$Ab8X zct2|1B*e9!L+u9wvwpkbL#*cu@4L?N=bB7Rr6(9h^#h`rC~>HFZ@!ZM$VB`UVCYGz z_@B5Tf@1V*WSD}d|A-FAW(D;rziuCg$qU*10$@3_QN(+1X~xu3mU)kYXgDt6JVXqc zU4C8`f|<)6M4-TA_joqjKQ?c7jh8Az4&8*HKuY@%0wt1K8BL*#XvGYr22Gyt6Wbw~;b_G|=PWN(#M|;v4(T&uxKSc*`e@iN=gjKAa(y&Gyux$$74sP zz2Y>vwyi;1W1=&y8TR5-3;Xkl3<7k|qwAwyj1vv3k9^|;4Xo5AmA4CrBnPOh$p#F+ zP=4roO3lA0pF|hCY@p}5#!1V*Jasz$w9-;P5TU=w4}Sf}D(3Tqsv9>vp|W?T8he|W z{XQv~mGTL90Gm&`3B!!wi7CpT?Mnn&b1$Ee`?A4t24^qAMc@V1WV-S*2XhyBiS*dy ztb5^#_)0e6>QAFcN2G6CiL;gvyktz zBO6tmA-!dumTY7i=~g?_z7$`fWDf`V>DKMq$h*qd^W$7Ft#Nt?&=l1O#eh@_}aQ?o4e zH#wGdt-3Fj44`+KACvW_+4&_zEO^1m87hLZV}YheH0XNfSv`NJf1Hj+CEcWqHOADY za;&7^B|Qi!DQ*X}f$>EXG36#6s~)c+3Ial!ozmmS#BiSX;M*e{F1vDL<)3_1};`>d%1 zWF}P0rMo0@ZbO6mH}|O-?vVJ)0Mw@RTJ2A%4WS^il|I*7rKf5l!aezf8A!VnXu5Y|_pm5-|onrB|qP%T|vvDsODa|&Sax}=? zAjuI+;HS&cZ+_A#4H;6Jjs$FNF5JrMk+EhyQT|KCHw!KAMOVIb*? zDQz*@Zainnc>h2Se{m-+_6E;Et{jvn^2Q@XOYBojc?+jhUx6tAcTZ1?%vn+lm~=cr zRl)-7TV$J?Be3pbsc>Yxb98CmTZ7|5x&_8#+>9A7 z>cFSV(_xIwPbRjorXzmkL}PJ`wKMr_WY#(hvi!-_7&Rv>8#fAl{@?B3wD2!|cXi?^ zD3gsn!04@5=4OFzJS9LOI_0IrM&rGGR08G0=sg8i?V7%w;EpsoS#3!qd)ggt=N@j2 z)!J9V2{^w73i(=gk|Epp4&{scXM#@??kY4OWMd3Q%;JQ9+2IIryLDIo^@B5`*s!)? z*B(i~AjbeB$MSb#Bw%3Oq?UNaNqrRmg$a<(%_P5Z`EXOXy;9j{B-$_fi08?>`7ziu zFjv%YZr`!!WcBxf)12u6ZumBn?^05Cog7RcR5D{FYB7Je8!z-`(DXC?as>O5`kcK# z-$R#cv@!9LYZpOuWn7viw!IYhk7R`x0!{%6xSeDFGuLs=%&?E@SejoP^_RMc?rZJ2 zD?gH5EYq1V2mfmzJFW2mOD(lmZ;$~KJmDZ$G2KZw**XP@#GPU;BLTJVvV03U82G|Jz;Xmm6(l zwybzEY?jX;M=;L$PlWTtLP_uPmLIKtO}G7E;A^`tb5C1qXs9il=wYq#OR~-2{Rq=T zInHZp8dsOlI$89LA{b&i1niq-pRlhx?x^|Lxn6pq(b|@2dLdmJ4;XevJHhGA$@R31y_p;r_o^raiIvH9gCQG@QrO^o&PCLZ;Pr1R6Sj6Reu)d50su` zfMOu-Dy;wF-ro(79d(rW_LNbt+gv~+;AEIWgj>K~$k2w4gKMlo?zaDl+ED2wwY9@x zpM@jD00mZH-j^+RuFYqPJM6Pn8LK&|bJ!>e%Dfp)|2B%8+WA+x+;$a|PUwA0b1eI? zuFv<(a)-i6<|vD{)e4$76Po&a;zN12!vF@5*RBj1J3%AWkd*oF9Ur3uR2v4+y5pn8 z#z>FqWylDGbEX7535@6NUVi*b1a<;#_6ygTXG&A)LORjgC`}dxWR2l_q ziF&;QLu@Lxd>sM~FoeeHs|S$&<36rdt3?|YQPp1iWK|Rl7a9E^6kg3^S$mmi;n6A! z0DRTaZi`nuYWNK1@2xI-;xfaiRN?o@@(-B*%fjjQhDrf{5r;8qE8;)zHN4XYnNuoGeQ zQ46{?)SgaW(U1BOSQbwoOpJ58x;W$@R4_QA)6VO+Snx(vS;UU;Wi>(Tjq1(dl>Ka2 z&v}c8*{=lvBl8&*oh)4}-x2b-IgI}D_|pMsx{d=P7yws#huv{C)-3HxAm#ym?3&dy zJOexBL$eY6IA1-}6sIeM7K&5oha7p}7 zx2o&E6Q}yFh?%W@%?_V}h#aKYtcbC-;eZ*j#tx4$&7!QfdCjj(JXGio-;aDwGH5P9Q<@cm(c?;7-%H9>sKl@zfv2Taw}LvsX1+2i z)9c5e_}8v)P8#&9+@y+f_cG%|?F;eXe_S!tnS7Yei+6pA5330%c(3cD zEK%^rec%oC)=bg)tZdqM0SFwA%Eb6nTP55cl_*ST(GvV@!0|kP%0Lo@2s6>R_epj7 zX}wexrl$Tue1!6jq4$T7{iTH0!|hOS-e&!vC9gv|anED+$iOu)-VGTfNp?(XIB|i| zDmdwJoEco5RXXnb?TN(V!4F!{5bRc4&Hp+-)~D(@g1GNg%n-#2{ipOr8T$9siW}Zi z;%ww=qI$p0?`4ng$L(7b1nR+6#tamh^pc69w@}-@da9y$7tS)Nk$B9u6ei+@crA2% z%Lx?H?@~dt6RRp;!z7amYpAL_)kpf>MuoB7wfRD!k|}1ycPBQ>6w=*qk=qq+IS7=X zXfLL@)$(&ZHh5rDY3S%yc_>BJGTK4b^jDoN3+evWOqUAoK&zPe#TZRm?ib1b3O^hl_-Jc$JEWEcEH-vAXL~L!mDVS=ptOkd z)fL9dtEu%vD?al}C+|$z> z9fmsT%#fab3V-0kg2J6JIlU+mF4Kg~9{qEZdB)B*^b!1|&8HX}22Wsx7=Nhh{n0hm z@WBMXnQvF?RE_89dLNGW%Uxhm6CxbKo)=2`!a$6RsN+xU@xuxTe3Xk0L_ZY2UgmQs z9T_rxSjGGe=1G0K70%TD2z^c_L%uq>TlGIAh;Arm0@tjJ+jlwe2j#yDUhtus4adQQp}J2mD(m*fpYNRUSGnl-FWu9#>Odrrdd zU1xNsot{>2yQ=`RXV_srZ}+Bfq-KN(V_9jyk`9l5R$LgVu;skOJ`=6=7uy-}rPOTK z{mv2TR*0!pskJQ(nzXT<#~u*shb5-4DoNo)z{i^F=B%dQoRy~6V&iRedND3ejteb? zT;AgQf3x{Ktv5>>9v3>O`^DY+6}eM<80VxxAb|qjkdv&xUK+<3zyiHbXS9g ze5oL>jg5?D#ZO%l?|bc>+of+!DG%7qqK@Pi$QRUp3a+sZ2%~ZeIE~vrYDNraJfgBL zMi;G@l8GA}u)UcpVBBWXVtk@I65DMgXUvVmsQuJcf;Cu*!^l1e*ccujvll=R#9zp& zhEuK3cL5?fNuTemAb0D^uWBW4vSr-KX`iES;j$C0$DA2nomp>Jnr){*qd_f%E0yp0 zURe0e)xBDR+Wg@MDBt2>$|g2#Vm~8)Zst^`ZPqR|uODaO{lKBb@(UV>Ze~~icBEtgWq4S=jEug&jY)FJLZQ5vb9r{Qi zKijvx;!X!acvT8|Q7ui5045+5C%Jkcvt5M5?0i_%lZqJ6qkmXsPZ`5w;ak!;p^X#c zTE{R3WvxS7Q^6=(_{xW_GtTr=VcD3j(6<|f;EprGM=}=7XL>wLnU#zFYxk=8+yKtI z?Z^~PrS^Q`v}N?!i?xFxKyT7_a)yI!+$exr0VTqN%PNAB!CDuJ)?L5^Z?_nd7Lv*G zOnuUBd66BHHG6`AS|0_AwT{~_NXK8cg29@|!&h^%(C4Tp+J*Go#8t^vFUXvA3S0&vyk8Dl^DXGQWz8Mw zO3~Kz0f~)x<_2^pN?*sAotd_$TE)FS&frCeB6*y1C-F-1iz-9>8GfjQbKXrX{LcA1 z8hevG{v>#c@Q?kz=AQ`GNqa2V@1c10FZzw$5xX zrqAP)KJp~Zox#sC331@qeinU5i5gv&AjjN1Y!O4+zrSa{37B1qz9v4r$+l_GE~@vt z)xpcv4H?RV+EY16HH;m4WgAfsix%K9@Emr^FeDaH_^WrTsTWajoOTUL;M2C#P^1a1 z?wvcwpV^wY`d>UVkm$d!0uq-3sVp>3{PYvHJcnyU!G2_ zcMN>Iz3Is#QT+794dP$zix6$--1|V3Np+7FwBr6P>PzC7UeP1zoVOI=9X1mN)YFdr zAJunm_*e*|c^xaY&UPI5q&>qvSs}=ryT!)cB~{#hJ5Ci|;w*(KwvA4XVS(YEiZDBo zj|F=-!2<25w-hZS05{cmz~j@N)JF55|EYmBL~spoz_l@Q zzm*uI=OVV@azq+viOmrixCLaZbNuuX0)$)5slSkdpkdH736Qt5>B||=*$X2O_*WC+ zkaP|Q$Z@7oMHpN9fq%rBUc(39l#N4moaZb5-j)hN(uqG@+ECuyG=0%gQGYR?&qZ(n zNf5B#9}ndMmEKv9-#6wo))GlpUhGdd+jUI}OQJ;yTICNT=Shnu?dSxq)FiKH0h@W| zgOs4eT1+DE_hp;_zh-k_adl&LMPm-FiSbDuxO(!UQam?N6S|J#mfefn$a*UzC|b!1 zMvqJmJhc>(ybuTyIPDJTSz8gALH|5XC;w7CaE0C=MgFKHtZj)OQ$QC|nDN#hGJp~i zo$HMZF-b+U;G=sM4IXIvGV-opPFu~rOl&2bFiiweTR>}~eUg{>zn2_AluFck4ifg-5o-T+!0zF zRCN#mo|dU{nJT1`%dV;ty44oL^r7qvEslMrnM4O&(vDKWY|L1vReGol^@s$O z*E>#hqBgGq0PtVY1}jVN1C0#J@G+G+|T!Ub_rfrwW}Pi_cpfSQhT4RQvLkY#=uFaC_1AShyf=uUnrM|^=?BtDtJv>riaOHoX$m?0rIiRdl&t(|C4oaqKV6DBN^-* z=U%$;n&CD}+T|V_ZCidrxcsWk0TqqiTuBfKErYZ0H`v~{RW`z;*o;Ik2$o^n4s}@? z$nuErDjZ>c&wl96?Zkf_V%RmG0x+ec(|;R6}!$zG#h(v zjlMKSYW}XhckD=ka?<8Vp|lY|b*0%m`@Ute;`1niYI^^NW271ZBY{aUulHrP@V;lG z15klN(Q#|_?AdtMqJ_M5Wd~aL<97AySUJX zCUd&G(*Pp7<)7`?VEeD)k}m9aJlssj$t>{-DnwP^KdB-Ilz}uC!^rdS5&g&% z7x1+`jQ4nL&oynN+)vwwb>QM)?{#o~h^TV9vyh>j2#&_6r^WT;HUxw$!kGBXlAzqy zZw9J*Qt4KNyRsuTEi45~1;86*6Jb1`*`$D7J~wS}G#L(?h7iWRh>xbRJUzoSIh^~a zr73=AAxhRf5~AL_nM%+ZJQjM|;C|(7VCl9vqh2gGTE8FNSbjHm%}e}Q!S9o1SI&A4 z;Scof7H!31f_e%G&>9>L7J8G!;lcgmjQGwpycQiwbtc(f6caEzIU(z*B+jF|Dn!!R z&&f{rCn|oN;}XK*mY&U`J92``cv~!@?eSNr8wJrUt{YE$=#xLIx7nAH!=2idX#FI9 zNGniKgQWnOLLKJRekKjzCa04YV2D#ZGxIGOXS3^Q6xJ4IO)m+^H0GIF<$m35JuB{8 zBE39uKci(Kn?)5(&33XaU*|f{{d(|yK2(8q!^`X_q;_eu4dr~`YhPpD<6NeCy!#2P z%h!h7hk5IrOwx{Xv*)xZ14{F)X@R+=}XB$iT z%ekAzREgjsjXtAxv9G8I794PXPx|BDh?lQlGvG+U;mKEsh?184_D-TYj1% zJ@kpa{m;b#E8+g@dA&I0rgO>BDcl)!2#hVEq})UobY)(3Jty6x$9Da!;GQ_Q`0t{{ zd#6)NhHUL@Tr5<^BLv66W2 zL!Q_j(tpxy?9Hu^y==bdV69dp*7tG0Xh=E{eAk8@xhp$_l%2L^A^cD6`FqBK!~!65 z`D+}jq&?hTchc?M#B+h#$sv=AUdg8VLq7>f=aprH0;gRM6++mJ3T1}oMf2TxAPZc= z16iaN&%5NI?=vnMf4-~385)uiDCg%M@XI@e!_bI&v$PVO6)}vnFSmhUPK4!miTYg( zg45f&CcW_^ju8`A>f4{{=|e~A&LBL1t{|C*E%3ZH68R4In{eI@mL&Yex&6Ipa@Foc zqO^hI2TmmWW$&uIu_)X1jJXenf#%19Vcw(w$3C#&nIs!uvBe)J3Of zTS*(>-sP(itBtqB)my2*($}owzZZ~Kp*`{18`+SPB5!sGTxqTU>|aF*R~c`T$jn%9 zEoYz_a)(o88sc!dGt+uqEEmI~S_e}{F*Q0fQnC*VQ~Q)^XgpKxZ3k7vV=*q1X-G&dGVAo=K4KI9#B>Qzkwm5RdVizh)MAGkyet*ZXTz9Dz z5?2$zbpXY3S^ZC)h|J^VT%VCCu;ZXK90jEPp6Z_-Z-jZQK}s0D#3pT=+u<(Pz2L3G zz*c1yJ2R1xja5JiNo&ZT#32=vCl%XpbKRpp;`{gcFUM#&SZhF1bGOaeWuxwy@M&!@ zlxUVS5>;y_t=H4d0TRz?ORah^sllc%K%IGro3W=c_xsTDsdq~o=hB%x51RVaz86*C zb7b3Xv8m=`_p~V5o#bOc6gE#f`nC^+^ZojvLObA@?mI#wSJS}e^)$%In@M!1gJ_X? zF>ckbF04MCa?dxE*5u57Asp841pSR(*W^;-cPk+s*5!=pGU@bzj(Kq#(8=5{jl+yH zE3R~_7UV5;qmFQJLsbd&ckS1Db{x}CufB|h`Hp}QKlz54speDjv?%Fa#xxl$kKvK^ zY`t#KT(RbggYi#C?U$bpe)_hrnvlMpL;}P%pdgMG6tmzNu|IpTred~I^bp6maIFkk zF+BNEtwf6oi|7iR#Yv<-hnksy)LQP-XHnUEmq4q@j~m;9%K&605)eLmKk&?9o{^`I>bb;1g0>p7ZFDdrBbs(+XW){Gp zt1_c;ysdz$VV0_t4UX~+LIjpQNL|O5kv=_64hwZ0PI|d2AmVc>Ytjny&pxc@JAfrD z4?Wc)L}%@&V8v?*xy)v=w_8%uJkgf-2-OA?ewE;p>iE4U(F5p(y&3lN4^iQzU47-m zMBPoU`z0xs`4;`_mDqT?Y;b|Qx1PvXaVTeldCX?rR`mXr0RBQMjUby(0qYr9j>|82 ztkzH>I2_uciJl-o+hxK3HXd2y<(-uwU5WQplPVa4e&jq&12L~~%=9mRhaDxZwORv~ZU}tDPO4kX{UKjclm~*|oI|Hty z_}8mA8W9z;CyY$gu^;)#-c#m&&SKNQH&9Not>XS^p#thUp}MP%gi{-nzA?f)5R#yV zB!%|2WY#hy7{m^>$+N`P?V)P;<1^pHY5a)Y2V7Ks2hRD6oaLZP`{b4&h`K|hUQIO+ z{AoMB1Mg%=ymvj5cr`|Yy3@VSne)%$Q@#!(Lap* zFE%91q!*OzP5G)K&+^u8oDh-L-zF~{lFlocEX&wQ+gm-C0$0l_HD&}^{13r|803y6 z#bCD*!f6QVIFy+`zu%3gjOGwKDvYjcRiE-EJi|^%T6_3bEef`dfC7V0=kmcw$xake zPuX~l1f$hu252}Bzg=4%+mzdRQg}~{p^q$oa!Bkcot0`?ZisMSx80hqOB#Qxp)W3= z9{z#+KktuJWfAcEV*)X9y&i3`!;Ei-HNw3#odd$6DaOb+}+*Xix+oy zw*ZA;0s5uS^WOK~@2{+tm6e=xviHnSX3w|@3(s{?%+mQi zWff+7!Myf8NhdUk24}k>gRQE{$18LnhE1E7%FTN8Tv0J2HrYo|Ku?sAu;$6hn z>2BUJ34dU>?ZgXJ7!{;O)weQJ91>?MJx|Q}}RtJVN)&^d4fLEcs zle!H*H`X>*G}9e`F);w3RbVzOe-8hkU!Lmb=ywPyt5z64cmiQefNO6yuwt5ow|3hG z^2Pr&(T0_EOf`aP_~&Lr;V2F>b^0R92>&KiWf4EG?lmq}Ma8A6G(n+*`SptMw1;=4 zk^)v6>p@Y(O&5M`f0~&iJH~)sW7Hqz>y~~~Wm5`cpEto7^UZ}bmrsfM>DSNR%qo_3 zuPYe)b}u_`r>5dmHiaDEHbnc#9j5ge#q%AivZn#eC!=UrQc!u4$rU;dMY^)?EQ%S0 zKT7jI=^E1SCctRjU{o@TeRqDvyBFf&NxuXR~LcGnphvL_{JxhyROkE9+Gf?5~8(S!A({OKkN zEGTNz!5LZ2(ZprqO?N9fNMYvP^|jS#WKED*di5s@m8Y`7d>S%|_jnn*P91OqF{x7P z$M?QurPXiKgxQ_P$kqg>SpFsS6Z3hPt^@OF@Y*fE&Cb|K&tIaW)V3u;G!ybbBx zSkK+ADjLLroXYnewVs&EG|D{S=`dgKSk@T<&)C{_>sH87e8nnV8SU+BH;D=U&Jk>e z!X%K0;3_%`VSfvFORfoKS2&|8!fpKVPdX0*!Z)1uY!2p9htxFWPTP>Fo$v(FOIKH zvh14>K5ex$FteC$1a&u3Q)pVp&rSyNhotA%I#W()+54xxw0YF@jvtsNV%Sc5wXkoK zGv^?3t#Ozk9~6Oc;rMP{ej-KC3BtnLyxUf5~ocoq(u z;&qP!S@?M4+KE+|+G!KH%|<$gxb2(*O~D=0zTw4VepprB&MTsU^2CFyiy4ibbYZY_ z_&amDk&fwU&15a(k+hSdT#fpE#Mgux`f!`+?e2UKXtKtj$JvZSb6E4?tfPjB>4}KW zKkZhEzrp2G>y!htNG9RC2c_vex?2}{VG<}9$h@9R+9~E}C};OcUk!gJer!0x#}Q}y zZVm^lTW8HCI8S7nHMarbxHPYV?rR>JnpDtBRUXO-XSjAEG8_{;qn3l!@89v0Brdu) zrZ_dSUQ0WJm$Y4nri%Ilg@crxPdLsL2i*%aD01Gs>(5zhrNcr-LbQCX*n5X)*;cT6 zMn_^m4WlC&?LQt(JB=O!`nFgeO;keSZz-ypxzt}Em7au)Cp)F2(3T+CBML*7X=K>< zSy988vV~hlUVTpN>`PCz%-I66zZ`-u=`eWQ?|F0#S73JuCR)=@{7KkA@r)4MFuaa) zD9rXBk?`Ps9puW|S#p5{+%oIcxm0uQXA(zyq0M*Vb18;U@s$FkZ0V&nTg(x6tlp** z%KDAYVyp9hv({C^hWk$O>`+4Wus9~~e!py*&q3p!g6kCUc8xrS_m4@1foX1`B&ghLr)^pefbD~2ss+a!|5{?1C%gnm*kXYk$#q3j8# z6Hh}qSB$Qs&u1M)X~$v)alg{xvIYcbAxVpALIq?Iace}0mr+HCVLU~ou33{!Ck?rz z7!%{bdvC1nno1}KeT=HJQHhsskFa~+eF$R!sCuBc(&C^&)&@A-^bV7F=`%+2*Sk(p zkbnNDMv6?tC-B(dBu?SadnujSgexuA>E3c^kjA@>nx`Rs0NjmZ3S&DpAuZ9U&~bb~Cx0cQM`VdR_QA!gdik7Dt=%XXJe- zR}f=sGGbrN2iO)7vabEIKgmO;>G!?!k|eH+;ZVIZQ$9$~W~&*u|C+mnh0@b-tL6Lt zNP5EE({cv^{CS8Z4vgV)b!+mESns#3Ux^@LU9TxNwHN*#H&UDI1zd0Upw3q7b?y9o zhvR+d`<~CzkML49bYHepx<0Cs<+s+{U$ShCgch-Amo+HNW2+vGPkSY2C`>FQNGncA zX1joyUY{GU*cL<&Mx_rXNIbW;NBIy}bFV76iL*>U+iOyQd%Nv{iFlk784$swP@CsV zP>%fyn{`V++WOX>k)vB^0uJqXZOd-JpC4v5S(98>MtQ?a=lh=!_bbOkq1?ct*~Eb4 z+}*I$+s&{uv}j=A6dPR!F-QxZCxRz-{D_99;#cDz5>5BlPr*g8QvZsXY^q1QM|n4U zyod0&8|Hu$;Fy*l?8g!iC9ChaT}AY%9Ps1mbTGetAvv3?>|C#B_nE-zEu+DkmAVF` zj3;N#aS!P15Vt?3v=CCWu}|Q0d;yc|A@%e9-{wFMz@bo14$a`cx4TK4<<9InTGM<$h zq{%q#VxH66$j9Mo%pV<0=;25Miz--_jmzKI>!Ew%<-dHo1UYd(pc$#v%QKR=nZ|Jlzu1upjh z(d~+f5UQqT`+VK(jJrqA?kwC_!pHL!FBovEGtiT*R1Bbh`;WRVv5l)0IKYPY98;ZW z_LByW*k_f2+lX2ePa!pts|amO5Gr1eWt!dEAF@f0cbd*iB)&JdXC$i08+BET;8Q1M z@K*6L2uis^{{wfHoAJLMg-P+G5z?{XN`i3=SD1%;&TBjDpW|-%F zwxDte=w6_FG&M2x%t4^hWib(y1y2T;by_2bX+DPen}3Pij&_!NxNTZV1y;BmUek;) z-{{?#KOuEAO_tc!LM%*vi70cxm^NHo^(z9-1`V-F#{cbGTh2$k9l}|?U z8q>;AZno7u1p;ZVWT2D84NQmAl8DB^bfqIKx$fj<#GRT`_F|DN{jt4nLoJu;7euEX z!(LNRIt8wvfg2;I|I!I<7!FjBaITi+rwVun1~N{s=)^y9=nRqOUfHb9#geAV(b#6y zY~1-U-0TO=5=1x7Ie+(TWSc`+6nU440XBBZauv1XllF|!LuaOL?Cv-X^NsrzC>X43 zhUXjsOQ7!_OW1Z)yk|U(}FrR2Uxs>&}OW4wNT-KjIQboQO z-2TWq>*0>?4%LS6-D3)2vIAiC9FL5E296fg6>M-rc|+TPN^iHHojUq}d$$xSowr@J zoPogy(!yLt+tU`A1+nMdlR0sDW%?G)T`_WcoXUuEf8#SL+z$F{HeoMVi}MqZ9kNChT9}96jIgHj(r+tjzgG zqul|cn}wXfW=aRgH=qBwB?6>{dE2(Au>)Yw4+jExw^MkuFEN->1fH?s87;fC5uMD@ zcSEnGx`HDbHaltDM&Mli_R82hkf{hyzSE)9qSS=ss^YO6Dn+uV53(YQ^GI6cFC!?H zMqE&i5p6s)W!y)4kew8!HRc!jp`41x)oh32@(y6|2RH-3QiTTT|8Q7klNJ#Lz05`A zfiiEN1bzDNWe}teAI1)|_j-v+mggq_>Kk{8CQDJ~tmEAro-^B&Td2;720hi$(b+B;0)g;DeSR)N)z0T zbI4&l))c1p?w+?+64z!EmfL(e0BXwCt(EL`)cZ!JzXls&!s>AL6|>t&dVc!lKJ%dS z31`BMu25i&RpLtQ2wF*7chCbWqtz}=1Z&JDRJ!B|a#gegoQJGn5W z-Hv7RjcM}{IcD>>(EnP$*Fe{uM3?bD%e4#tfcTMGF0Ii%QWuY&lJSCZb*Jgsipq@G zcvv~jw4}kPKI22*d)Z+;n}TK&H57G9#e-e{B%kso z^f4b2jppSwxYCtzxSHDAnSc3+fYtfaaM?`)sZ(YOjZaqb+mMob-~p`^MZ8pw1$ zjVNG0K+bj-t|BjIA9|w4LHA?buCuCQ#+Pf4-*&e{5Nvr2hsHhFjGpOn;EE~i9N9lI zF9~p6427<1UnBjcvSn4W$H=FfmtT5$_GBR*hFd&nj>baDdJpy)Wp8N`@L8Uz#I4=V zVq=8HR;i;KDfsqL`pIFS9C3}(wviXwmL-EEc9i5$p0aI;cRV9VaGo0GkWQYUth2ut znLN{`pLQqp)*FGH*+=s`xKNLx&Q?ZyIy7J@}0@IV;kedgP!8@hT2qw(2qsx4i-MUJP0rz~s6K0GCy7U8P& zTE!W*^Lu&b7p2baeb`WQ!gp-0#0)(Tv~ zQU1}u$P>-ae~TAWB{-k6wcGQuHy9YdC({z9Z~2Verf1FF)Db9b`8!Auy&hkZCh%JL zv&h$*kN`SH6q)^)~6iC<f zsQ@B0aHIIX_DUpqN@@;q;`qDp<;S$bEn{*ZOJBxKZEARIpSFwPL^>l{s+Nvae%Y(uZ+2;Uu(ci^;TU2ZBwz~1?)t)j%YUOjU?!5U!C_!l7e8Mwr2Nph?pT7CpL+VI_N&lC9 z0_UBy5o~~kR00}mNXC>LIB?mOKdI}ux}nH-TUhg3 zP1rAXR31RwmUV%i&D|IsW;31VzrBc=$hkO=$77rGAXdcdskNRU~mn-|Wkj%WvHZf-T ziX?)AFF{p`%JOOwu2y?dt;x)(?X>pU+XnKa=5KlELf-(zRZK~5EhqTfekHK!y}QxN z*6vn0+jrrAETp@KPLa^ITZXL->8{k`vL2{J2ec1;UGVm_T}2kVaQ{_!+C>dC$?VZq zoG^d6sm$ZCR-b@&rA~%*%cxp-Ucc})9+2T)!q>vtID@p_ZUNJr>~7#| z>fM`KEsJF(bP~36S*6-)vWdN#5XZZ*x0lJP@==FWAr}z?r@3=#CQzd(!!;Cr0Xo}d zLjY#sSc2GvxH>D0@mG`A`Rb=9!%|Pe`GDLn1MI8i)h>BGS8pR*G+b9C)s`lb1I!>@ zIdRH!w>CA9C=)8C23`&vhhr4oeC=f3t44p=7RB)U+K5gIHXzgNbehYs@e@qr*O#*n z@Y9=p@J6HX8|hn^@-L^Dze)EiO^jYdGi7!Tgt4QX;M?&WlRCG)E-q1QFZG&nKu=5D zc%$@ylyKY$d|&J#CDJe?rijP+s`kT%?9{a^!5;psObvHfWW7w|Z1PWp=wqt@Mc#RlMS8}$-l8;AALH$a z-i88N95yHyxR8j#xXy;sY3nx&nxDcePpHrGWc-{>tM2Nu3!}kyAI1&q$O(u($w6{bWIODz|Ivy%~u`jnSOMBIYTQRs4wd)>7N{0q^CRuHkDp z-ds1=7l9ZN@+|t}VSa^9jr|R-PB{Vk1j{u5E+Kdz4-+a!a+O@@wZ4Bz>@E&H2nUHJ zqol&#_mQ07BR@sXo&5ig7q+nrb-#6G6mifIQBUbn9sZ>^`ZmHNw$P@*^N*nY@l*!a z)$2$5$#?TvDb#13x6bklyShqHTUepNp!6p6URc%QvaU<@=wowJ$l08!VT>cDbcSnw zbd~r>Zgg5RC@m>~^31>emtbGJaJ&4LOl6$oh(RRF%F8<+CJzO$|vxsm0XU-4gaLMX8L!DIohH9P*s&C>N ztCi{8=BpuZ?k--ENkh>mGj#8DsNc&Tc5A1qkCDIOz73xE8wb&|QpSIAv;I8QjBI48 z4y?jv4LJO>kJ7eUJ#083P^+*7aMpxAj}5gu<{Z=ZsuA+EnS%2A*x(HCPx-IrTXT!2 zqYWy_D~Kj96J~e7gid3{la%`L*V^u?@#-+#$}MiSt}nIvifX62-DSeuJS9G%?^ zW}EO_O=3t`B%b>59$u*_l*cH4Ibw$Vz2k&E;pxTSqmHvxNm)s<2lg2%Wai} zwX6t?q)+qa#ZHO7nxCbG4rME-))^C-QLHo{xX!bKzvWxng_5` zkA)u2FpT<0=4x<0th~x$y_fYXn4=GYrVEm4n&BAxorHhS9NcO$B&4jrQdJSJhVXrX z2uCLEd%|d-5+k&Qvmc_#M0;&BXUd4sX*Gn-_rVx2Ju=_C28M;eHXnON3)XTg&Q7^s zzAN;Y?uROJ8LlDd6676z2I=S`S{Empqx`P?+9j387(>~yYBmd)Cq)wCGk=EB9XsiI zw1li)bBNvYNWLd8S}znJh+~k&Srdaxg&e;hMUC6Ul%vTY1fpjdxp#d6X`zB;h&>lW zO0gb$q5aLZ!y8)?hq|qp#A<|o&+0a59O46BLYcPY_gflc#&n?viYjExKMs%k>;_5J zU%r#Oa)p!j^~`@7h1(Oe@A+Ce`3q4DLocp@U_UGlmc)p6C-;M^80lq_G$Zd%0Rp4d zD5$?MO~z*}M$YC`!X;jp?It8BdCYQkX1Sr3?k2>{@O783^W>ln;d$B*sW9s{4@ z8X!N{*JXkJtcCDtrB8_Xj1{ykoQtp^g63l%*x+7G7YJunYqJJV=t{L}{K4Kkowtnb zJoFCHwzN1p&Fy}ti*}jwl<3t34z8KHOjWqjr1HIF5zf9XwD0Om)Aax#7?dBr(IQ{>iLg>hL&dBr)da;FIlPY}&;rp5!i6wM2(D zdVLlY>2kMBBjfIJE@ZP&O9=Yq(bTf)YERhe zm^!*YxydnirDydveb6CqkF>|g5xDIGvyz!d1IgHI`o5j^S)bG0XQJB*z0*G`{1b|K z?T$l-&74Bwv&`*sTBNx3eo&U|{aUrO@q}01qNl%G1k{i1MVr|fvA5uA2)XQyqHi!>lP2JhQ ze<>Mmv+bX?F3^T5v)^nlp;{gJ!09*|xsym&1>x zY=J({rb-wE$3H(|!*keClc#ues^w!&BI_-%4Qfc22fjHK{glO}G%VNUyjhOzrMCGw zx1%N5aRBWYmpX-}+zUw>Fe!jD>=Gj>PnRb^C$lH%p$4+AjvzEb-W*VC$O4urSx&RU zv#J&;;#aGHNP=P+*{`rYZWd!%XTfC=sjz>iDd4KH4R$wj3#rNdWH?kR?P-r_qhm%h)4K@q zUu=G>gyS3{s#C2_g?V%|ra0*n zwgvM5HZI~MQpVXOuKwD^hX`1n$mNZuc{20eGpFD9z@l(yRp_x|W)s%1TxR3gYmDT9 zgUvuVjC;vp&=X#HUdTU(5x<(C&)JGmwLM9h3+&)M&8S}#F88|Gk%Ee>-d;bNIHUU* z?&p(3+u6hrwPk)Q_?c0CC)<_q!R7HG^k&q^L^#|;Pi;UN~kMWS2G@456!248K5J@H7ouW=8z%$E8r1j?W zjVCn6$hQ@Y@e<-37F`|}ZaH^PmY?UWli7T6|w!Cd6(NL341|$ zVUh`jBnjuNN?r|D#L}GbuA1xxs-F!@Pp=2`GuX?jo6e~W#TAz;iJ=liGB(5ICjOIS zW|K<~WUhUx(-=|oDGXfy5}~fne{l0Z;56S`(^{+5)h7 zcOw5Upx~zIEI{du?Pe|SeI1`q{gM~nGaNYK-CG>qYrlHw6FcOxz=?;cV=GVdGp#s@*z`-O1d5}%Q9TYfroKf3)ZaGbJeiuGGp@63A|7%gL7j6d*)LjRsd zv790eT*Fp4#nMOW+VHpMp{_w(@pzLh5VtY)m4jAJo)gim=7_*#QX&yzHLVQg}T=DnG)}4 z;*Nrj_tO3@KmBsEDrSM54xb}CKcWy}@wg03oI08e*)l8R9(0js6g0lLO4W}+qWYrN zSbqgb?UBFXaT$VsWH?Gk72elRnfp7T^ccchRuYE<^=pGmjzO+;L^mAnnqX*I5b)GU zs{o;CaJbJ<++ta;BGx;P4@;ywpv`>P`(^j+iR{uu8Ik%l%e|8#PY36Cx69-h)xDEd zoIGbbZp>^f=6Pd=dCT5HGPv`a0m(|NcZTH1Ip6 zt%Cy<=?XhYc&C<(*&DDWE+9`*ZaFNsrotCj(&Xy0xV64&RaVUxYW~IZ&jAjLGHS0+ znCST`@TZu1`%o>#Dh2e}yA3qr7ql-v*A62DhQWVrKc6vdn5@k!m=dlffDST6$(L3W z%cVAM-l(Nmrl^%1#)(-yGc4^ssCQS@UKVmp!Sx@wZk^2G_m{k@Z!iA7*A(&d_au(i z1-5d7U8xo`RC5svqo6|{J}6b5C3v4DOc*%3UjL_jv6Nz-Z}5(3o~>XrmYq#jQhSrD zz+Gkj)rX<&0kef+L^;Mj^G(7|RaS>9#a>U!I1h*_4$7J;;h{S&^LNy9%*KWNF4kSx zFc0$>DT%v5Rqp5zA{B;Ecmu&M8!q8j1<6K+bRIRTnlDH()d{OT>YR!iR4H#9df4ga znnOQL@E4djm9iBO1Xz(R%Ig;zlc~=~{;;L+b^x??*iop)pYHlDllq=jw-ko;;zbbc z>{tQpSr$-;&zrwK;h{>fbl*WcCcjnhEQTNyVWsoH;P{(fC{Y59@7H=yGM@0=OQtw{li3R65jR@OuO3=uMp6R0$E!xog21F zs?>FVuv#?T3&aY|hQ{~n)NsYGMuz*uiWsC6EPJY{&c87=E{2U(7whZ-6?}d*UH{J` zHQonyMSRnXliVGCWFI+_eynykHRA5>nnedD{hvE%%|pS+Nk5o|=38^i((0Qy>Q#9< zv-U8AoBqn3ZECKowiXV(1{Vs)&WYc|{k{%I3rsf-!%>ircLQZ`2zCakNi{`v9haHK zIh<($qnh*nVO|#S39v4GvW3%ww)Jd9D75C{uOEv1^*KrKv$6D;beNCV*%+~vR)Kky zA1PNST!i*^XNB&o>tWaw!!R8kP)r zXtWNq-%jiG(#`E`25B}yzMHJH{j8)|{wtRWm@h-P93v=Uno{oCEw^ZBa(+Fn{FpZ} z5_o(V18EE#be#2RHgs3!C3BfCI+KbwEZ=nFQ4m~)zrScCkDh77HC_UZZDHq>a-HXt zOtjC1Sgo?n2{VZ%2H|gabjgr51DWBsbI&QzpU`NSy=4WN)eLovS73jdzZi;h*$mYB zBj>C1-P^D>WUP7`XQ)3N()YVxlL*^tF|p&>9HVEb^~Vr3=Q~mRCHU-;#Vcw9BFC(7 zftY7_)|(tNC8gCIJsH5+uW8+Vn&JkFdaA(mQ+8NL47}@+8A80`pn>pXBGMzTip^~s z9eoS*D9#ScJrmRpyGOtGUD6<-))0DUbsW)NQL>47BHzOr3sWOrMadA`r=|T_)UXRh zLBx7~Pz;V<*WH^-Jt;*pnK&%@@2*p+s8S$&c8sz6(BKH9@O)U+LMvB&vpURA45i-ERP+60$ALJ$WCnNiZDld*_c@#H1&AYT7-BO`b{;^lj z)#)tm3TVQ*c%c@z&L%<6in$9b?NOEXRwRBvT5=H`$Re}E_%Kfy7as)>JfW@d)%2@9 z{JXrma%AGCd<_tTVI$fnwJ=B0!6xWJU0|3dufhkiQy2B7c7~f;g?a+AG4_O9{&#+w z&N8#d0?~uS&^=Ig=_1OE%&jNy&Uh>KyDamzM1VL@J5$bb@Iw;FVd>cwuV(;|%l?+A;%Fux~&W&$-0`5+joLkeD?>9P2agEq6 z3WeEBoI8#466LY#M4|JD7f$kf<)7*Y>Guu;c^r<5qEKH|0KGOVq@ed&?SqU?GsO4~ zWj=%H`N&_~4=SyAjQ8FbcpzkNa0ZFpL$SIi&qOw-jM#FS^He>aXm&(T07JLFw`=~G z3av{<-}R11u%1Yx$iLuU@v8!yLcGpBQ~ID=;Wv%N)FZlQpODNjGvEbGmF?9j;p zEm$a!y^!FQdHGA1y6vRee$yR)mtUrW`>WeH9HVD)y@@4i&1)YN`MeTX@Ty;QE_BkZ zynV@Vfoqv1RH|C){W(h>qD9-EbB<)>W=cPAkVUp~NuC&g*FAYjEF{0N)P}?gY^!m; zz-*hNQT3W$0{+By|9h1;^#IRCK(Xyzpj`UQ;_!nW$9V<`6nyy1_U>)sjWTCKnB&fo z2th~gIgR+3^%LHLyVGgB)|4@6tqYCt?7qW%qsrSuFgapVm^2#T@6>tp_k%Y)IQa`d z{m6N55hsbi52IzO!Ux3pF!tEr-bb{INjdfr16u=`Uyf`>OMOr&Vt8F>CyB#MXzjRc ze}YkcTJ>4=x?z72bLKRfk^EG^-dJgE*QeM|>K{F}TnEx;Q2wwnW%xkh?H4?jqe< zH!o&|cFFVyle`cizow7&v#udRZ)_F`xxeiCZ{asRMfUw$f+-9}wAv}^ec`QM0!IG5ND}G`UmN>b#fkWj=j140 zjU}dg6Yq!_+R|B6kzfZm?mXvqy~IRAIHG+Shw%PtT4 z)Jxrn0E~_B287+zaChMkBK0)}wFqiK^h#-ZcTLowJ8L1^j_^N%j+B(peK9PzKCS1H z?Q=g;*(0!Jd;F=dXG%#@Tx?qK>vLfPw0fKyOAN}6c+^qafiRxp-9B1J|o*z2HR4F3R{)xWtA{?42fbqo~r}75d z+?YRON=)FuG;VKU@h81zejXI5zvQyqEoeb&juGx2taN=^7u7IB{*sf^GCsY^`xX#D zVU=HvcmPPByjOlS<@m?^%ea^5awUaLX-M=tH+#Z*n(T)<7tzZq_k%zr>z1hLgRf%x z!W!BNC;^x-;QC8CM(*>iQ1mXN2CHSZeuVb#m-hBY4%c6ASVg=9QZyM%uPHO4#H!6O zrT#~I$=38+4s|*eil2g3eeX3o@)c&Ivf18)pPQCYD%dan7iVnRJMYao7f>KUu{iTsv2rN9;CU zd*2{ONnw9c&0)E4UY2Q=}HVd+jMm|*+ax*&Eu47bX0IQ`DdVw6H!_rqz8inN{{&%jF`I{|CV7QIv zPWMp?8PP7(4W*wB^Zr3zTYYeooEuHAC#&RXU>@50|=^#^lRzQKWuFLY@a&4`j18$X~}KQ+!-zE$Qd zhU&*0Ofn59pwAsklcvAn4Uc)hzV-jX+?R9@v>tAQc^YG@O+MoJ<{L`xx?}E?=(*X< zJ9U@oxYkSS~tF^HGB;&7!qWcJX=(olwCN5D+Uf$#&)%9_ew@)nLpYVh3K7* zLo%D7K2fJTT&wlyb9$;bRrS^<*BLCVCPx$XZPX_Q5@=!kE$yUs7}T5KXpelxegI0F zGhhYTx@MM;39;9yEqA~%;YrXHBut+vlBo-CnasSCQ+W*wdgd7SS8MYiV zeXgF_K7$w6K{nFLJs|vsSL34H9n0;jm3fCBVo1+Tj{ zErlIZeuW11{2%IW841k^F@_eY@>lHcu`li6Tti;ACnwyFwxQ9?_f15ag>beVo(0qV zR;9TUCG)#*{yhcPa4>@rg~wqEChf@^k1Oz?H`r$@+kWaIo&5Z z4v}|fHOXlrxdgbQq}=PYd`bmXb&bW6oQRp7AH#D;VTDk=G$e6_mC2HOylt1heu)1U zRy)(+Ld#uH=eVYbh3s zAiwH0P0XuusL_kUt~D!rvHQ$}mRU_pY+`BMLJFsKWdHPOFM>x+yU9^0%B#GHhx?lI) zofSi9CwPeevIUED%EcqPJbCF>y zSbQUBzMXzL@53z{Gx1cxBTKG?`enJ?Ih2GCl-K&LD$%-P@&Gu@>?zk~TNcxSeuf6g zdlCCb_<__eI}jV6=vbxfyG_A#jie3VDVmxo_I9=qw?`^edt%D|t6Q_-9%bG!_^qjv zWWzjHEgE#OEYwJv%5w`NIUPqp!%ZyFqiK1Si#6Y0v844yO3WPB~4!tQpp8usEUBe}VbH07TzW!e;1c ziZv-REY4t~ZRFh`x2f#F&;G|&r<$g#Ekul$zvvVjmN4qn_h!Fs*!*R|69j8z^o^sY zC78BsoDo_I(W!4<{6mmOZZ|P*hb!b|dh(a^(M(L*ov+(e`LKzq*Lj|%U(4`j?4@hZ z>Ux*RbD^0_9{9Xo8Khjj6zUu!vHI+~jy%Z71nDE|LtlWZ&%k%?)U6B0m%kFj9PBl` z1iCBO-~S>9oeSe8TW!F}vK<|zKl6aj$Zr2Xpp^TTTr$Cw4}d<649(l2w`GPF|$hG3vO)N52c=KtEsf6-P1D#gY{ zpR!*K=q{Uc-d`3<+GWjx3* zT!U~Qp?fK^KTfa(64w8@pJB|`!Q!y(ujHb0DK0FZ;rbFV>W)ngH_mdV&G9(t&awQZ z$D$hezi^Oe_lR!G6X7aK%!X#_qI*-!p8Gn74g(H)_y34T!Uv;qXfaQb(CDN_`LHho zJuQ_4VEZa znJuxexjUampO*xVqyOuq|JB2ar=lo{yHqVYNq-*xAl6Jmi~HohuqR76g&fKJ#R~@aP8oxM(yHcw9#89>kd$%>mQZ(ZcyWX5f=*ahtSp{ zVBFqN6dF=jUKcgWI9w#<5)yq=Ykcd$v^-71T@gaYVUrv2NU%8f+)ojb4!T-i`t`tmmWd_j!zmb}`*93g)T$(1MBfS*SphYDppw137e4_s@!*&5EU6F;3&Qy$BGp zwa$;r`_=&ZE4)Iv0Ld6#(kOwMT zX1E7N$k;a!H^tr|{4!HEARiwG33@a3%; zhbLA$y~X?tNmL$@A1NxAi`0hm)3vDfY$cm+;-|p)g{pd8u=)OI*?wR}u^{YwAFukMPdw6N2W4=?o7Lz0gmb?ZO051JqSxtE$XNk)ojZaP4^n zbP~g2`U#(jF$?NCz>~CloxNaXv(Z#uR$bMb1}_mF1l<QNg41r`^fPTO=#4-nq&aXs_-S6P2Vnp8pO$dt33T|%C7r*PsHC= z4K;V?n*T`^=1rB@4ImQ4S9q&sjbWBSR;BsWX{3LucP76Qj~bG(Sr3*f45NcJMzb%1 zSx?QTvDUm;?&%-`m!4O;kSn?M8K0AjLZyCeU8 z$-NZ0hhj4K#gmygpd#h8sWO@r6{-MidRiCae8o5zb&j2Uio99(o(Jyr(oI2&jXDHd z3i-(ZT1%{J*E&5z?PjBw9#A>vdQ!(1vp2d(zQcDTdFvOW*;xG6zrW!AT&}03xpvW- z_|D$_y!W-`o`Z;UE51wW^E+1*jfltM{(6579tE!vzOL}GeKP3>5&iVDy|zMkK=nt; zpbDmO<-G9N5TuqyN;9n4iNw}RdZ3%|+weyV+}cokd7M{v zr+Owu7eWA-9n>J_TPREml-}&}=YArnXiA!nP3_)XNT@moPTHN@Zwd^kjy2MTj;stu zv9JWiRA$eEV4qv+f_1Wo3Ynp^;=oXYS-n!^{AALxH%plgM`xRm)0={j0ue4IFySvg92xUX?X3w{TcQOM+7 zQdq4h+h2#4%Np*`{1~Tw_6pq1n;g;!2XJM}L7kB;u-$1urnRgq%;rLHcyoL2m7RlO zWaaIXO?Rb3YbT+IdbXuVp@__l`D~c1qTvTr^FtC*$kXy${`nE%8|7QtmmkHPCwd*l z+4GdSOS;y?jiyZe3+eZocC?FsykD`dQ~z^>$9Op*C=X5GP>ghIBGAUx#?Nqhua`i+ zb`(tqR3Ieo6zkuPhF6glz8mgnyEAJ%TSwrlr|YAyLm9cz&m5A1NF6vs0O^i{K6!tr zKlls7X!XM~hXqL@5>9QK7BhB z8uK6F1^ANWR@#Ba7l7%Zl)Zr1FM!^=A6?*nuw4{tNzDu8`r4hmE%@Po(WA5mmmMhK zU)TKo(}>v`th@DxhBkLYGUlArGLW8gaKi2GqttxS3Wu+2|53SyKN@)M58W={(`y$C zz@r9lvmK6j0pf7X3SIdjCU{MS2?6J)iv7)ds4b{zd|aC}c-(?HLB}xfYL-;4f)jd` zt|{~R+s(X%p5HVNlT}U##5F9>-=fO!M|lCT*gkK30qIRh#V;WC3ozB4xO=x6=kHIV zrPA#0S99Q5*h`^L-vZ??widW`@kP|{xS-Pw6k6Xe6itc=k#5ZjQar+i5bk4?|4iTo zx7xwLzvCSLi&+gG((RsQ;4y=rMD|Gw=nYH10(lwQEXxH_*~ej?anP>r<|@Q@ThEm5 z)pKh%LQX--Pw+^1Gr7B?^s%#fsj~ddkir2{(2|tOu$KZaTSq9C$=%6?{#%{wmGXC%gdpxp@d^G0!I$i^FROvdC zIcnyrAX$(RI-0cw)F;X&e}1{Iu@|Av!GE9)AI9|FDDjmE{qhO*I% zbdkFVeZ=S|woeL3%A|l#xW43HXJdTrFJuLL?PF_`*0M4k<32_$mB0CuGi`n}^82z= z{B+GEUyzT%$zvw}7V?9fXcD_P8K(&o8uEM-K)>z|K%&XSJpb%!ysXm;)?t^Z>J6Iu zW!}w{Hq(rVTXeu}uu=z(J7(PRiI;9yrD?q?$yFXQo3>mEWffOczRq(+X}beY8&6#M zVMS*S6P%PPCDKY0I-k@l=>EB&!IW6}aNJ>`-ppO2HN8ykn7Ny2fUDBJu>>MVyKkzV zmb8UrYZ?2b^0d1tv5PZQ2YJf*gKU{U9}+olN3PI-F$a0f$PdFYrs#Hb=u-Nu4Rc3( zdf$%tvM0Udb|jboE4m+@2L3;vYJV%M%TB7>-zU*F^x zLAgIXch|~z{NMXOmN(JBA31yq`6K2(|0hMHEK)VaTe-|>P0aA<9o4C)2osKb*P6GD zh)MY&o+Hw_073>o>i(VW{^@cCb-w`58@PT0(B%!peg$>|2@`{kXRcQUMylH z>pVys`*eSN5qs3^%Ti=Wb9NAS4=qAlW*ACLMwO;>6`ZS zB74aW*Q#`g@3X=}cs~Vs+4yKkvXlX8vlApLZP1nU>7i=6Im6 zjj3WXXK(u=+TZ~`D4avtAQ>;c`V^QYOPoIyWqfmoFMLm4rP~&D8$8%??9hfCHFni` z5NBEjao$ZHB{638BvkUT+@nnMW7x^Znn9_@`0*K6*ElwMC^lg>@4hHBH3_l&(=Rd+ zb%sC8D_D!L(EJK?*H;kxCD8jfz&gg7eo$p8mZg+3Q8Y!;SX>Y&Wb+4R0@h4Qyg zxIvgn%Xf|Q*H6~3-I*4l?~-w-!N{{M#_vHs-BMXV9yNK<(do>P=l_unK1YVZmpNq2 zKW*IrkFE(ZdE&Hnq#bcT8aG4J+xYRqeqSTh9IKr;cQpqSA)oBVe8Oi}S^XIBMK}1Y zAN+{nn?wHxd(>)3)oMng{nctUd)Pa-@~G92sMU-{`>WMzoDTE57N~!G^Nu*Exy5g( zArb6%@9g&+pFD{|vXOTAR(87$_{d<&wef+mLm%wC5j$e+lN@8s6i1BR=K-8=v2aO! zQiv{%+E_2tUHZ7n*hj+-eX#RJ>@j2C_cd8YLOs;D?^!&Bd3I3ia-M0wv-Q-aip1mL z>NEe_B*K=Sg0N*s-q4LVZ{UrX_XOt0apS(+ZH(f(-BVHADlJ7jg&%$rVV6m@d5^;z zy7A@>ykq9Q*I9y*JFXSFWqDV~OBb(wR%FIGoneO}zU=@*~Ag|LGvat~tZO^x#9 z8}!O|A`J&z>{i(|0Y?VMa)4t7E?ALl6=V$*c8O8|?fv@QgbSWxc?<38)=pG-?1nL4ykH|gSMHg(L@ zL6eL|E@Ox{PNH7Nh?;Gak!~*kVrM4RAnJ&;MLTVpIaH(SPEJ6l+vgvEZIV5(WJ&p} z1a|RsJM1J*FQhbl(=_w#KA{(4gMDfo6?Q_TlDt-reTA8s34Coi+sFsw&JVf6HtuM( zGm|@J?vnKtV`IDhu*(6e3)GaW#Mt;@cdLl$s`$<}KeL-L9uPMO_rCn%dby1V%>Px5 zsgJk(?#T@h=Gs4i-ft2{#AyCULi+Cuw(n9Jcy zO3RJ7Yj#pCLDbs4JsJNIrZjFD5V}b2#>z=$$p-kS{7+9Gr=QI zrS&@JF2Xr4*%C08sUrDz<|Tf>9j41UDol;B4*(wa!o87mG#5NBic|nTX7D@7WNZ7@ zoYiqt@+~!Ijy#oHOW|tHZanL-$@wffm@a_2y%z4zZiB6_Ip7XrRzn$fHEb%w z-l-v5WBRk64#SAVtl?A(zh>>T4|)1?%)~9h zIF^3558X2%1c#QMk6PUPJbqnTcs3hTgmr2w3ETc$PE=vr1E3Z?P$Qk>8K@&hZQ0(7 zOcaAy{BTO%Fo?wx1!k8|^QC3C0r~2=0Gd(9ta>!oybEj5>_JeowgZHIEc( zZ299cV#dARcRlEHjCj1)3z`(l!#ctmNOCChfSRV;p;F_ZvTVlFr3K?%h<2b2yHM~j zH12vl)}o!YCGpk=)WY`nAm3IE-g%I8HCO{l`TZe&Oo_%t!(ED&fOAY>@X%6 zzgU{(K95L@O=un^Y%9X5Y`PD`fxKlco~(p zXrRq|&_+#L!ce9it+p)<_RF)$khuC2(;kSnXrN7I+S4I6)SWLu+YSH5OVEA=R_YS8 zY?!?L+W8Q_`Pz8|ZuFy*J+gBYvcRzV~37?0O^%+B_UBH{odkos5nKqU)%%B}J zZF7J<4Rcgp`jX>O>7^9TRR^tTN<0ti2y01F;yIv}y#En-uBT~w)R0sO@w@q;>tj_| z^@F-7*e)|_dnh*ul7sQ?5;0G8BU@PfMB+ z&uPmAcA~s+lWCiwOuL#kjcEg82iU6rMvbil;=Z*=JHH)Snyq$?_L8x9Ey1RF!?eB7 zjSqwVdbAgr zPZar+2X-8`Cdi-wI}AvH?e9dk^lazWGDBW~1Af?cmkbjOF^)fAp><{i~e!WP`|^=8kfCJP@1w`jzjb|-nbW5zAx z-47l13i#H{5Nz#tev$4K2m^rdUZD}~e$ZiS#$m4HRWUJ5gA zVEV^bEk=B?R`Bl)7I33+xl+U9VP)MimA&HS$CLl)dW+Q zC)5-(fX|Hl!}{(Sd0-QnJlNTTtXmK7^42LyN4-cozAFmHeMVINdOX^^2W=XUJyohC zRd^8_w!z)!MWV$r_Za?q^?o|16?HluX5ta zY|wDMRa7Kg$bQNU;-KB`M;-Rg*<~#NV~anz*ai@-QCkRmMc2BsS9;7f@nNxxR_sjn z!HyX_v*PEE%redCt0U9Wc<~2z47MTn;>;R~6#?%{4!^6bBqcr&e)XOBfZv~c(Vl5( z%9Eqv=ACdGlFFpL@vM{ui_e?SN{DPHUY98H<=PI+a~IAKq$~?j+!r6tO4pe=UzoZ5UoKHPaDcii07k7GY6 zd|zM>quWip(u8rl7{fnTt!Z9w?qhL>KHPaD_n5gu-GM5y?)u7Ird{r6dWGq`{ALMv z+^O11L|DuCdDj=pWhq>Z!D@e)!rCq|od-&$w7#Ri-}`e_D6if*e7_L}shw>_!Eu^MCled4?)@u`_OYT^Jx zn0UHJ=&eDM2F~T%xdWMv|2%Tu6}f3f9y4-LTdGJmQf#QT@5&MW(rjMPBV^2Jq_`M` zUCYXT8|pF?YxUWkU@G^!QU#P)_fV`^AJ&*!at3S6tT~0``mG8EXWDTE14O`pL@oIt zeUn)72{greqesK)f&B*>R$P+xa_Y5PLb&_5EIbzFN2a@=KjmsgnoC;EVCQJgYJZ() z@ihV<(q3dc7w3PS>5B`~a!i&L7aH1T*BWxHiBkykS~5?@jlKpg1D}k#O1AQg zUJ3Vw%y(HBC#~d5YXw!EfxvI0R4e=z@Twzt%-}iKB;zLHW?fT2#!a~2=!_*_6_%yq z=N(HGral64-VeEIM~)l09m2@dC+NGu6RR*x$qGX+E4M>fc`xR=oq5d6HQ5b+TJ=pu zXuJVx36G-{Tq~yp&Q5}ZTlw0iQD*S_OFmaQmwfjr{;D4qB;^|Vu+&8(b!Pfd$4s3A z0BUzdEuOq?dhrhmgl{sa>q0Q_sKp?%Dj%?uF7A z-zCOlnJlxokT%mE1UK)1n7Uz5({{ontZNwQ{0=ELA^r&grhQ$XXOD( zXx|Lr=TFYH@qwv}ChBoKQvI59}Chn&{h*&6d26N*4Mf=ATd9Gh1?{n&OVipyA;! zIX-h0Bs}aM^(2ta*xj70DHTl_4tPp5B^NmK0gf3s2l3;(2TnQJi+PgwKItl92`}e+ zNJg?6>;8S(q7QA}fi`a1W+>B+t9b0UNB^y9o1sj*nl_bbTN?e2?dMS2DftbWDGqCx zZe8NQMgCN%gXXDK8CI|yMcs;EIi?OK{Mp1i<~LVi>Z4(YF4%b^cHG#fA*k;zW(n$>x2cd! z37;;R@qgAgP;KmEVTUf*c_a3Sv76m&)x=cCt3LPb>rRDisY5I}qNI2IAXKv({E0Tb zDKCfWZ6Rp?Ml!T%!4xt1uaRm=^oAi{_n{`!+y?~@iL6#0c#~FtD*}%h{CmkGk64VT>c!QdhCSTN1F7hzx@;w}?cC-6ywpMkrE?a6yARg@?nj=1PV zJYAQ_B>rjQO6|nQEbF_+RJCc3RV7^bL255{F%8;dPChlMK9+tqH;1sl!DS284hCEt zPM9X(yaRB|z&RVrz@s@X%R~CsOS_vtHt?SZE>0m-1Mpi6oOe}^RG$m+$ge_s1CREM z3$>Nrf|EA8h|2lPk*bUB`s6$#2A)7jC>f)b> z(AV>{AwmzQ=~P}89SnG0gq{VQcL0tWxcny~^z}y65TW-naQRO}=vlyTF>pl^Cc=C4 z>eh7z*J0umLdDggEb~{#gHuZ+Lg!xJy;p?(`{;oJJ!?jf8hvkpgu7$KV%_W@@4Hm1t1AJ`|@Pz@V3Y~6pM z*fvOej}L*jEc3;rnBNiU^Z{YjL-^Eomq{lwg;zO=_c(2pW&b*D)}1y~(?(5u>I~c5 zTyo?4Lo42(H-~*+UaAhgc3 ze;v2LWm0o-n`YdIaa+dv)2??U)wEMyd%kGT4>QTMD@nJ9ix=lLa2z2_a{A7VE?}zFR#gd#qlhpb?*yH{u5=cSv+W_=1M^6DC`~&(ht- z?O}Wtupz4tvH2|P9+0@`MO-3DDV#WF;=m>ny|LX}tfAd%L)ujOHXj~CIF2Pw_Q z+pM@h7Avug%EBt}!AuZvuQ2k#i1TP`PabjJhxn(7`zgT{I83%+vy#Z)tfYNUy3^g| z1=HUFOR9WV7G#Z@|4<=ZEGqUMgAfTQI~s zSg*3--+8}xAiBH*?AHKz-}BgdNgQ_`PyR%{At-`{{?&Qx`o_2Oc)tE|7T$n1k(@B_ zbdHiwGif~s*DyyM^U=J#T4#J}_Hm}>*Wl;h!7(NhJ>LQJc?XeS0|45vRJd0l{R>bp zD6C{x9R_^&YrtcAIm#^eFf(7sc6E_Gdy`H%m=Mnz<-Xd-qN|W+?sZ@+?(3%8)%1IC zhi2}Wxf?#bxpQ&kZlTKFEv($N^7>HD(bU`f&x2pff!Fq40UnycBL?3&(u94a>9BKp z@O&5L#4UcwY|ogO3go>SnlxuYG&ZG!OcpL{{$q3?-{Rzlfd39};#OY+A3DIt4F6pX z@4W3f?`-LuD$U{5%h{^8@D}8fo zc1f+NFl<%Rm0H1l?Qr5D!4r8Z>5AjCgWybroS1a-#9p14A2jPhDI~2kf3x{#bpH-E zoZas4!Ui?`TxIE@-vRIU4tTG3fc_fv4>fg|U*Ru#$17M1=zIw{MdB4m=HGx~Yu&%y7ZlzA@AU>)pErQ~3Up7b`46D(`N4wUm+^sQ#(GNG>^&CLW zKc7Bpr;nPxB!Le%9>DuK;dBr*HO4^NXVu(~D3{ztOYk!Sdsupq0S$hp#@MHf{fF5D zGio>6pr(T6Z;{#jEu2b1P3Iu{Xih{s2l+NcEUtD{nVID?y9^ik6{9p@gVr72wP z=N_QXc6&%Do-8Szi%PDX??!y~Ct&OfpSz=SG9U1fDwZo8&hOC9z~`9N*_ZVHQEHaG zByT+atKSzFRonvpY2&ZpkD9;j=zCWDa$TY9a&5K-b)M^mjtlnvY)nE6TL;!Gz_XqWo@{EcU?JHP3w-+^C$39v<-OJ%X`C8R_Cx|e|c zB52m}9q4cfbMJ{Rd z7c@DiB*M#J^M56v=C@#gH}FpS$A1e7-hfH>nAf}khTfej845+FNL@Ul>zP0*a z#X{~JR<11c4n*Bq91BF#v5>O<1@PG!$(f>i0S>#~HfgQCty@@|rPdu_XVmZo zaM!V_oA3bmgXakLOAl>y-{s!=0fxat1?I{;`&kI2A z!|oa;eM!`s?Isq^-y?rWhd^A-?#2b7^T+siF!A?AY>q-z?JvQvzk`hHaQ-_;Uxw@6 z!N;$GuyQZt531``%td?qIJ9)as3If5mk>x?ie1oWx{*Bfb=gw#S1`x0jBQ! z_lIy;KMvHt0BrjOhz+~DIKV}t&H*|8UJ;C~vPngYqrhb`YzRfAn^_Hd126ZAC9gXI ze*O(Ccd+dZ@U}Og($81?2GC!Do|Q@IU%+-5tB6CPE)ErG7vyF_LoI#X;N`oh^e2Cj z9)AJt2WDZu%Dr8X`#f-xO^Q|h3JmcE_F*V*dILyJp!^LWzXIIp2KCHG+fzQSxF*Bu z!qC)4FXtd!DC$n(rh9-5IcVq7Tr-LY{)f*mwZ`}dU@y=eb_MK3NA|ec+pcN2CHfTW z-p10iw<-m(5C3B-Cw@t(nYOdHI{cRtY|*Ey^4stY-A7wqXZb&m{}}u?;zuNY3h|@H z&wJM4w^LW{^KWGed(aa1K-}@nr|#?swZ+5EbP>P}UbrD`<#aWe|HDGF7eJ-oAAvvY zq8{GHKi!R6%pW&@-tpMgOZHjTX5Okoo_Fq<#~VUj