From 86aa870336c05404855befe51bc0a5155cbc2252 Mon Sep 17 00:00:00 2001 From: ross Date: Tue, 20 Oct 2026 22:36:06 +1100 Subject: [PATCH] Bound coded R429 owner costs and alternating row sections --- .../ADAPTATIONS.json | 85 + .../r429-controller-accounting/CONTROLS.json | 457 + .../CORE-SNAPSHOT.json | 197 + .../EVIDENCE-INDEX.md | 58 + .../FROZEN-SHA256.json | 32 + research/r429-controller-accounting/LICENSE | 201 + .../NATIVE-REMAINDERS.json | 53 + .../r429-controller-accounting/ORIGINS.json | 122 + research/r429-controller-accounting/PROOF.md | 190 + research/r429-controller-accounting/README.md | 144 + .../RELATED-WORK.json | 94 + .../REVIEW-OWNER.md | 256 + .../REVIEW-SECTIONS.md | 283 + .../REVIEW-VERIFICATION.md | 165 + .../r429-controller-accounting/SOURCES.json | 78 + research/r429-controller-accounting/TASK.json | 96 + .../r429-controller-accounting/VERIFY.json | 84 + .../r429-controller-accounting/controls.py | 335 + .../frozen/old/recursive/BIT-CODE-INPUT.json | 766 + .../recursive/BIT-NATIVE-CONTROLLER-WORD.json | 26017 ++++++++++++++++ .../old/recursive/BIT-NATIVE-CONTROLLER.json | 598 + .../frozen/old/recursive/BIT-OWNER-PRUNE.json | 794 + .../frozen/old/recursive/BIT-PRUNE-AUDIT.json | 736 + .../old/recursive/MIXED-SECTIONS-PROOF.md | 44 + .../frozen/old/recursive/TWO-N-ALL-STAGES.md | 51 + .../old/recursive/bit_cap_copy_local.py | 162 + .../old/recursive/bit_native_controller.py | 520 + .../frozen/old/recursive/bit_owner_prune.py | 109 + .../frozen/reviews/owner/OWNER-REVIEW.json | 2695 ++ .../reviews/owner/check_owner_accounting.py | 373 + .../frozen/reviews/sections/CHECKS.json | 25076 +++++++++++++++ .../frozen/reviews/sections/check_sections.py | 407 + .../bit-r438-source-code/WORD.json.gz | Bin 0 -> 59514 bytes .../verify_rehost.receipt.json | 726 + .../words/r438-t154.json.gz | Bin 0 -> 42305 bytes .../code/nine/geometry.py | 121 + .../data/bit/bitE8-r865.json.gz | Bin 0 -> 33865 bytes .../data/selection9-p111.json | 167 + .../e8-bit-p111-tuned/tune/EXPECTED.json | 222 + .../code/global_k.py | 264 + .../vendor/idle-axis-hosting/hosting_core.py | 138 + .../r438-native-rehost/CERTIFICATE.json | 2122 ++ .../r438-rehost-projectors/SOURCES.json | 76 + .../sources/pr2423-rehost.json | 726 + .../sources/pr2423-word.json.gz | Bin 0 -> 42305 bytes .../research/r438-rehost-projectors/verify.py | 447 + .../selected-bit-hosting-audit/README.md | 221 + .../native_remainders.py | 99 + research/r429-controller-accounting/verify.py | 171 + 49 files changed, 66778 insertions(+) create mode 100644 research/r429-controller-accounting/ADAPTATIONS.json create mode 100644 research/r429-controller-accounting/CONTROLS.json create mode 100644 research/r429-controller-accounting/CORE-SNAPSHOT.json create mode 100644 research/r429-controller-accounting/EVIDENCE-INDEX.md create mode 100644 research/r429-controller-accounting/FROZEN-SHA256.json create mode 100644 research/r429-controller-accounting/LICENSE create mode 100644 research/r429-controller-accounting/NATIVE-REMAINDERS.json create mode 100644 research/r429-controller-accounting/ORIGINS.json create mode 100644 research/r429-controller-accounting/PROOF.md create mode 100644 research/r429-controller-accounting/README.md create mode 100644 research/r429-controller-accounting/RELATED-WORK.json create mode 100644 research/r429-controller-accounting/REVIEW-OWNER.md create mode 100644 research/r429-controller-accounting/REVIEW-SECTIONS.md create mode 100644 research/r429-controller-accounting/REVIEW-VERIFICATION.md create mode 100644 research/r429-controller-accounting/SOURCES.json create mode 100644 research/r429-controller-accounting/TASK.json create mode 100644 research/r429-controller-accounting/VERIFY.json create mode 100644 research/r429-controller-accounting/controls.py create mode 100644 research/r429-controller-accounting/frozen/old/recursive/BIT-CODE-INPUT.json create mode 100644 research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json create mode 100644 research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER.json create mode 100644 research/r429-controller-accounting/frozen/old/recursive/BIT-OWNER-PRUNE.json create mode 100644 research/r429-controller-accounting/frozen/old/recursive/BIT-PRUNE-AUDIT.json create mode 100644 research/r429-controller-accounting/frozen/old/recursive/MIXED-SECTIONS-PROOF.md create mode 100644 research/r429-controller-accounting/frozen/old/recursive/TWO-N-ALL-STAGES.md create mode 100644 research/r429-controller-accounting/frozen/old/recursive/bit_cap_copy_local.py create mode 100644 research/r429-controller-accounting/frozen/old/recursive/bit_native_controller.py create mode 100644 research/r429-controller-accounting/frozen/old/recursive/bit_owner_prune.py create mode 100644 research/r429-controller-accounting/frozen/reviews/owner/OWNER-REVIEW.json create mode 100644 research/r429-controller-accounting/frozen/reviews/owner/check_owner_accounting.py create mode 100644 research/r429-controller-accounting/frozen/reviews/sections/CHECKS.json create mode 100644 research/r429-controller-accounting/frozen/reviews/sections/check_sections.py create mode 100644 research/r429-controller-accounting/frozen/upstream/research/bit-r438-source-code/WORD.json.gz create mode 100644 research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json create mode 100644 research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz create mode 100644 research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py create mode 100644 research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz create mode 100644 research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json create mode 100644 research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json create mode 100644 research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py create mode 100644 research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py create mode 100644 research/r429-controller-accounting/frozen/upstream/research/r438-native-rehost/CERTIFICATE.json create mode 100644 research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/SOURCES.json create mode 100644 research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json create mode 100644 research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz create mode 100644 research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/verify.py create mode 100644 research/r429-controller-accounting/frozen/upstream/research/selected-bit-hosting-audit/README.md create mode 100644 research/r429-controller-accounting/native_remainders.py create mode 100644 research/r429-controller-accounting/verify.py diff --git a/research/r429-controller-accounting/ADAPTATIONS.json b/research/r429-controller-accounting/ADAPTATIONS.json new file mode 100644 index 0000000000..beb771f892 --- /dev/null +++ b/research/r429-controller-accounting/ADAPTATIONS.json @@ -0,0 +1,85 @@ +{ + "frozen/old/recursive/bit_native_controller.py": [ + { + "new": "REPO = PORTABLE.root/'frozen/upstream'", + "old": "REPO = Path('/Users/ross/git/math/integer-mult-bounds')", + "reason": "Relocate the unchanged upstream input tree." + }, + { + "new": "path = Path(PORTABLE.normalize(frozen['source_word']))", + "old": "path = Path(frozen['source_word'])", + "reason": "Relocate absolute frozen provenance input path; source hash remains enforced." + }, + { + "new": "PORTABLE.equal(HERE / 'BIT-NATIVE-CONTROLLER.json',complete)", + "old": "need(json.loads((HERE / 'BIT-NATIVE-CONTROLLER.json').read_bytes()) == json.loads(output),\n 'full BIT native/controller receipt differs')", + "reason": "Full typed receipt comparison, mapping original absolute provenance paths only." + }, + { + "new": "PORTABLE.equal(HERE / 'BIT-NATIVE-CONTROLLER-WORD.json',\n {'inplace_code_CNOTs': gates, 'ordered_controller': controller_word})", + "old": "need(json.loads((HERE / 'BIT-NATIVE-CONTROLLER-WORD.json').read_bytes()) ==\n {'inplace_code_CNOTs': gates, 'ordered_controller': controller_word},\n 'full ordered BIT native/controller word differs')", + "reason": "Full typed ordered-word comparison." + }, + { + "new": " exec(compile(selected, str(RECIPE_SOURCE), 'exec', dont_inherit=True, optimize=0), env)", + "old": " exec(compile(selected, str(RECIPE_SOURCE), 'exec'), env)", + "reason": "Retain assertions in source-extracted AST functions under optimized parent Python." + }, + { + "new": " exec(compile(ast.Module(body=[fn], type_ignores=[]), str(source), 'exec', dont_inherit=True, optimize=0), env)", + "old": " exec(compile(ast.Module(body=[fn], type_ignores=[]), str(source), 'exec'), env)", + "reason": "Retain assertions in source-extracted AST functions under optimized parent Python." + }, + { + "new": "raw = PORTABLE.authenticate(RECIPE_SOURCE)", + "old": "raw = RECIPE_SOURCE.read_bytes()", + "reason": "Compile the exact authenticated source bytes for the extracted AST fragment." + }, + { + "new": "ast.parse(PORTABLE.authenticate(source))", + "old": "ast.parse(source.read_bytes())", + "reason": "Compile the exact authenticated source bytes for the extracted AST fragment." + } + ], + "frozen/old/recursive/bit_owner_prune.py": [ + { + "new": "REPO = PORTABLE.root/'frozen/upstream'", + "old": "REPO = Path('/Users/ross/git/math/integer-mult-bounds')", + "reason": "Relocate the unchanged upstream input tree." + }, + { + "new": "PORTABLE.equal(path,data)", + "old": "need(json.loads(path.read_bytes()) == json.loads(cap.canonical(data)),'complete owner restriction receipt differs')", + "reason": "Full typed receipt comparison, mapping original absolute provenance paths only." + } + ], + "frozen/reviews/owner/check_owner_accounting.py": [ + { + "new": "PORTABLE.equal(path,result)", + "old": "need(json.loads(path.read_bytes()) == json.loads(canonical(result)), \"review receipt differs\")", + "reason": "Compare complete typed independent receipt; no mathematical fields omitted." + } + ], + "frozen/upstream/research/r438-rehost-projectors/verify.py": [ + { + "new": " exec(compile(ast.Module(body=nodes, type_ignores=[]), path, 'exec', dont_inherit=True, optimize=0), ns)", + "old": " exec(compile(ast.Module(body=nodes, type_ignores=[]), path, 'exec'), ns)", + "reason": "Retain assertions in source-extracted AST functions under optimized parent Python." + }, + { + "new": " exec(compile(ast.Module(body=nodes, type_ignores=[]), GEOMETRY, 'exec', dont_inherit=True, optimize=0), ns)", + "old": " exec(compile(ast.Module(body=nodes, type_ignores=[]), GEOMETRY, 'exec'), ns)", + "reason": "Retain assertions in source-extracted AST functions under optimized parent Python." + }, + { + "new": "ast.parse(PORTABLE.authenticate(ROOT / path))", + "old": "ast.parse((ROOT / path).read_text())", + "reason": "Compile the exact authenticated source bytes for the extracted AST fragment." + }, + { + "new": "ast.parse(PORTABLE.authenticate(ROOT / GEOMETRY))", + "old": "ast.parse((ROOT / GEOMETRY).read_text())", + "reason": "Compile the exact authenticated source bytes for the extracted AST fragment." + } + ] +} diff --git a/research/r429-controller-accounting/CONTROLS.json b/research/r429-controller-accounting/CONTROLS.json new file mode 100644 index 0000000000..d8ecb6e1e9 --- /dev/null +++ b/research/r429-controller-accounting/CONTROLS.json @@ -0,0 +1,457 @@ +{ + "frozen_manifest_sha256": "08c614b0d592257500767ff4df368fed6418fee53cf25d6419f21505f027b58a", + "no_large_mathematical_replay": true, + "no_new_kappa": true, + "package": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b02-staging", + "runs": [ + { + "compact_rejections": [ + { + "name": "boolean_for_integer", + "reason": "receipt mismatch: data.json" + }, + { + "name": "float_for_integer", + "reason": "receipt mismatch: data.json" + }, + { + "name": "integer_for_boolean", + "reason": "receipt mismatch: data.json" + }, + { + "name": "omitted_nested_field", + "reason": "receipt mismatch: data.json" + }, + { + "name": "reordered_list", + "reason": "receipt mismatch: data.json" + }, + { + "name": "missing_receipt", + "reason": "unregistered frozen input: frozen/absent.json" + }, + { + "name": "changed_word_bytes", + "reason": "complete word/geometry mismatch" + }, + { + "name": "normalized_key_collision", + "reason": "normalized key collision" + }, + { + "name": "direct_assert_under_parent_flags", + "reason": "DIRECT_SOURCE_ASSERT" + }, + { + "name": "source_changed", + "reason": "frozen input changed: frozen/source.py" + }, + { + "name": "missing_registered_source", + "reason": "[Errno 2] No such file or directory: '/private/var/folders/3v/9244hdf12cj1k9jjspv9wh2h0000gn/T/b02-control-fixtures-zrbw47u3/basic/frozen/source.py'" + }, + { + "name": "adaptation_not_unique", + "reason": "adaptation no longer unique: frozen/source.py" + }, + { + "name": "unbound_adaptation", + "reason": "unbound adaptation" + } + ], + "complete_real_receipt_controls": [ + { + "deep_path": [ + "owner_audit", + "idle_per_replica_including_zero", + "0" + ], + "receipt": "NATIVE-REMAINDERS.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: NATIVE-REMAINDERS.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: NATIVE-REMAINDERS.json" + } + ], + "sha256": "4fbcb4b3207eab9544de2ffae85ac2569da4eb1483062f543dbe4f1167b554c3" + }, + { + "deep_path": [ + "ordered_controller", + 0, + "stages", + 0 + ], + "receipt": "frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER-WORD.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER-WORD.json" + } + ], + "sha256": "859cdd2a87ea6ce58eb0ccdf2ca675e77c7134d6a7bbc7d450493d1abb108271" + }, + { + "deep_path": [ + "chronological_owner_windows", + "windows", + 0, + "eligible_helper_stages_old", + 0 + ], + "receipt": "frozen/old/recursive/BIT-NATIVE-CONTROLLER.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER.json" + } + ], + "sha256": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603" + }, + { + "deep_path": [ + "deleted_slots_per_replica", + 0, + 0 + ], + "receipt": "frozen/old/recursive/BIT-OWNER-PRUNE.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-OWNER-PRUNE.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-OWNER-PRUNE.json" + } + ], + "sha256": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2" + }, + { + "deep_path": [ + "native_one_gauge_omission_witnesses", + 0, + "q", + 0 + ], + "receipt": "frozen/reviews/owner/OWNER-REVIEW.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: OWNER-REVIEW.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: OWNER-REVIEW.json" + } + ], + "sha256": "7cfc2ff98a390d7de00c975ea8bdd050a4acb5d32f4d2725ed565d0f92803aee" + }, + { + "deep_path": [ + "theorem_finite_checks", + "premise_controls", + "wrong_factor_order", + "stages", + 0, + 0 + ], + "receipt": "frozen/reviews/sections/CHECKS.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: CHECKS.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: CHECKS.json" + } + ], + "sha256": "168bcca0645ea5b593b1d5d2b66e0281fc05e23f48e819bcc6e3f2095c974afd" + } + ], + "mathematical_controls": { + "deleted_named_check_detected": true, + "equivalent_factor_columns": 256, + "rejections": [ + { + "name": "missing_pending_axis", + "reason": "wrong pending operator" + }, + { + "name": "overlapping_factor", + "reason": "overlapping factors" + }, + { + "name": "equal_rank_wrong_axis", + "reason": "exterior address operator" + }, + { + "name": "extracted_ast_assert", + "reason": "AST_SOURCE_ASSERT" + }, + { + "name": "extracted_ast_changed_source", + "reason": "frozen input changed: frozen/upstream/probe.py" + } + ] + }, + "nested_cache_controls": { + "timestamp": { + "poison_was_executable": true, + "rejection": { + "name": "nested_timestamp_pyc_bypass", + "reason": "NESTED_SOURCE_ASSERT" + } + }, + "unchecked_hash": { + "poison_was_executable": true, + "rejection": { + "name": "nested_unchecked_hash_pyc_bypass", + "reason": "NESTED_SOURCE_ASSERT" + } + } + }, + "parent_optimization": 0, + "receipt_check_deletion_detected": true, + "verifier_sha256": "77255dc20b875be6afcb4083a171438f64ca11fef0b2d1a6482dab6e3de0a715" + }, + { + "compact_rejections": [ + { + "name": "boolean_for_integer", + "reason": "receipt mismatch: data.json" + }, + { + "name": "float_for_integer", + "reason": "receipt mismatch: data.json" + }, + { + "name": "integer_for_boolean", + "reason": "receipt mismatch: data.json" + }, + { + "name": "omitted_nested_field", + "reason": "receipt mismatch: data.json" + }, + { + "name": "reordered_list", + "reason": "receipt mismatch: data.json" + }, + { + "name": "missing_receipt", + "reason": "unregistered frozen input: frozen/absent.json" + }, + { + "name": "changed_word_bytes", + "reason": "complete word/geometry mismatch" + }, + { + "name": "normalized_key_collision", + "reason": "normalized key collision" + }, + { + "name": "direct_assert_under_parent_flags", + "reason": "DIRECT_SOURCE_ASSERT" + }, + { + "name": "source_changed", + "reason": "frozen input changed: frozen/source.py" + }, + { + "name": "missing_registered_source", + "reason": "[Errno 2] No such file or directory: '/private/var/folders/3v/9244hdf12cj1k9jjspv9wh2h0000gn/T/b02-control-fixtures-k8mzoxj4/basic/frozen/source.py'" + }, + { + "name": "adaptation_not_unique", + "reason": "adaptation no longer unique: frozen/source.py" + }, + { + "name": "unbound_adaptation", + "reason": "unbound adaptation" + } + ], + "complete_real_receipt_controls": [ + { + "deep_path": [ + "owner_audit", + "idle_per_replica_including_zero", + "0" + ], + "receipt": "NATIVE-REMAINDERS.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: NATIVE-REMAINDERS.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: NATIVE-REMAINDERS.json" + } + ], + "sha256": "4fbcb4b3207eab9544de2ffae85ac2569da4eb1483062f543dbe4f1167b554c3" + }, + { + "deep_path": [ + "ordered_controller", + 0, + "stages", + 0 + ], + "receipt": "frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER-WORD.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER-WORD.json" + } + ], + "sha256": "859cdd2a87ea6ce58eb0ccdf2ca675e77c7134d6a7bbc7d450493d1abb108271" + }, + { + "deep_path": [ + "chronological_owner_windows", + "windows", + 0, + "eligible_helper_stages_old", + 0 + ], + "receipt": "frozen/old/recursive/BIT-NATIVE-CONTROLLER.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-NATIVE-CONTROLLER.json" + } + ], + "sha256": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603" + }, + { + "deep_path": [ + "deleted_slots_per_replica", + 0, + 0 + ], + "receipt": "frozen/old/recursive/BIT-OWNER-PRUNE.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: BIT-OWNER-PRUNE.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: BIT-OWNER-PRUNE.json" + } + ], + "sha256": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2" + }, + { + "deep_path": [ + "native_one_gauge_omission_witnesses", + 0, + "q", + 0 + ], + "receipt": "frozen/reviews/owner/OWNER-REVIEW.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: OWNER-REVIEW.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: OWNER-REVIEW.json" + } + ], + "sha256": "7cfc2ff98a390d7de00c975ea8bdd050a4acb5d32f4d2725ed565d0f92803aee" + }, + { + "deep_path": [ + "theorem_finite_checks", + "premise_controls", + "wrong_factor_order", + "stages", + 0, + 0 + ], + "receipt": "frozen/reviews/sections/CHECKS.json", + "rejections": [ + { + "name": "nested_real_receipt_mutation", + "reason": "receipt mismatch: CHECKS.json" + }, + { + "name": "nested_real_receipt_omission", + "reason": "receipt mismatch: CHECKS.json" + } + ], + "sha256": "168bcca0645ea5b593b1d5d2b66e0281fc05e23f48e819bcc6e3f2095c974afd" + } + ], + "mathematical_controls": { + "deleted_named_check_detected": true, + "equivalent_factor_columns": 256, + "rejections": [ + { + "name": "missing_pending_axis", + "reason": "wrong pending operator" + }, + { + "name": "overlapping_factor", + "reason": "overlapping factors" + }, + { + "name": "equal_rank_wrong_axis", + "reason": "exterior address operator" + }, + { + "name": "extracted_ast_assert", + "reason": "AST_SOURCE_ASSERT" + }, + { + "name": "extracted_ast_changed_source", + "reason": "frozen input changed: frozen/upstream/probe.py" + } + ] + }, + "nested_cache_controls": { + "timestamp": { + "poison_was_executable": true, + "rejection": { + "name": "nested_timestamp_pyc_bypass", + "reason": "NESTED_SOURCE_ASSERT" + } + }, + "unchecked_hash": { + "poison_was_executable": true, + "rejection": { + "name": "nested_unchecked_hash_pyc_bypass", + "reason": "NESTED_SOURCE_ASSERT" + } + } + }, + "parent_optimization": 1, + "receipt_check_deletion_detected": true, + "verifier_sha256": "77255dc20b875be6afcb4083a171438f64ca11fef0b2d1a6482dab6e3de0a715" + } + ], + "status": "PASS_COMPACT_B02_SOURCE_AND_CONTROL_AUDIT" +} diff --git a/research/r429-controller-accounting/CORE-SNAPSHOT.json b/research/r429-controller-accounting/CORE-SNAPSHOT.json new file mode 100644 index 0000000000..a2ef9df809 --- /dev/null +++ b/research/r429-controller-accounting/CORE-SNAPSHOT.json @@ -0,0 +1,197 @@ +{ + "controls_report_sha256": "595c4a66e6801b24bb85fd55111e73f2aba7c214d4755b4529a021879eaf6ece", + "core_files": 46, + "core_snapshot_sha256": "05bc76a0988968b3326a9d0df9bf7c709e12385155b407e80cb18351b290c6ad", + "files": { + "ADAPTATIONS.json": { + "bytes": 4438, + "sha256": "c229c5b8ba079328222c75da85dfcc8a7cc763b053d2bb4485704dd48bf62052" + }, + "EVIDENCE-INDEX.md": { + "bytes": 4915, + "sha256": "9dfb3a5d7660f0ac88d44c1c40895def0e296194c68220db24fb24cf85382d50" + }, + "FROZEN-SHA256.json": { + "bytes": 3947, + "sha256": "08c614b0d592257500767ff4df368fed6418fee53cf25d6419f21505f027b58a" + }, + "NATIVE-REMAINDERS.json": { + "bytes": 1185, + "sha256": "4fbcb4b3207eab9544de2ffae85ac2569da4eb1483062f543dbe4f1167b554c3" + }, + "ORIGINS.json": { + "bytes": 8440, + "sha256": "cf96e54a574ba0dcb1d706f81ef1b2569494db4a87b351c7a6b07aa6121621ef" + }, + "PROOF.md": { + "bytes": 8468, + "sha256": "a66c69ede1258b089d8b0e2ee03a228566e3dcb7810fc7ca8d47c655abc0619c" + }, + "README.md": { + "bytes": 7906, + "sha256": "7183ae1c5e3f953479d6a8686f5e3863bde91ba40321aa2ecd6c74d007eb79eb" + }, + "RELATED-WORK.json": { + "bytes": 3445, + "sha256": "166cb5c60a93b5185e83466fdb79fd7c45cd3174edf66c23faea5a92ca81e690" + }, + "REVIEW-OWNER.md": { + "bytes": 11664, + "sha256": "09ae48dde1cbcabbba7313877d9bc45d0607a6ec860be778eb3ded6b131e77bd" + }, + "REVIEW-SECTIONS.md": { + "bytes": 12724, + "sha256": "cbd975fabd31a8170cdeedef7336e1dab60c604238a141f15d2930643a596c20" + }, + "REVIEW-VERIFICATION.md": { + "bytes": 8718, + "sha256": "fa5e7693d87e9eca70186564074f6eb7d5e6323a074b129e5d0c2bcb77205dba" + }, + "SOURCES.json": { + "bytes": 3092, + "sha256": "8179cbdd20ff5d06ba0d37b44a6f0bc901c344fa527d36e8b69eed59c33102e3" + }, + "TASK.json": { + "bytes": 6964, + "sha256": "2fbf89fcce9196c5277f4230bb79da43079f2f502c7a270d5d2bc8e9fa94a9ee" + }, + "VERIFY.json": { + "bytes": 2373, + "sha256": "6e7f5efd5b5035f6e1a38b0761286d4890b840502086fd2015bfb49f1a037bdc" + }, + "controls.py": { + "bytes": 14308, + "sha256": "77ea06911fdb85d7161613c03575a4ccb9a8c74b967769b498b1d88672350f2b" + }, + "frozen/old/recursive/BIT-CODE-INPUT.json": { + "bytes": 17347, + "sha256": "8dbcafd44b23a598d623c78d3d9fb8b4e6ef0651d379cab27d17a4768333ed4a" + }, + "frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json": { + "bytes": 215137, + "sha256": "859cdd2a87ea6ce58eb0ccdf2ca675e77c7134d6a7bbc7d450493d1abb108271" + }, + "frozen/old/recursive/BIT-NATIVE-CONTROLLER.json": { + "bytes": 22253, + "sha256": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603" + }, + "frozen/old/recursive/BIT-OWNER-PRUNE.json": { + "bytes": 9533, + "sha256": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2" + }, + "frozen/old/recursive/BIT-PRUNE-AUDIT.json": { + "bytes": 7962, + "sha256": "4efc043e71ba125bacfcdb1e2ed638dee685479846f70b2d863e889a5c075ec9" + }, + "frozen/old/recursive/MIXED-SECTIONS-PROOF.md": { + "bytes": 2080, + "sha256": "3f93d8661aaf889e3e2cb93dd0e0ecc7982c71ed44185df63c767e86b12c4321" + }, + "frozen/old/recursive/TWO-N-ALL-STAGES.md": { + "bytes": 2799, + "sha256": "da4154af61bec16c0096e01c29fc29a5183a8ca02e9352d52f6e341b418ea85b" + }, + "frozen/old/recursive/bit_cap_copy_local.py": { + "bytes": 7588, + "sha256": "6e9ca1eb905d769716c009904f45d6849b225e48cd119f18b50c0379f35313cb" + }, + "frozen/old/recursive/bit_native_controller.py": { + "bytes": 25018, + "sha256": "e08adc1483c5bc75f40da1f7b62a7d1d5eb058615c5dfe6db6c38350348ff288" + }, + "frozen/old/recursive/bit_owner_prune.py": { + "bytes": 6107, + "sha256": "a263f8f220d0532afe62cc49e4f6311dd5430f2a4bb355a59e726f862e2a168c" + }, + "frozen/reviews/owner/OWNER-REVIEW.json": { + "bytes": 35712, + "sha256": "7cfc2ff98a390d7de00c975ea8bdd050a4acb5d32f4d2725ed565d0f92803aee" + }, + "frozen/reviews/owner/check_owner_accounting.py": { + "bytes": 18966, + "sha256": "feec7f0e60638084db81f299931d5a2232f1dcfe2ac92e53113ee0310785fd8f" + }, + "frozen/reviews/sections/CHECKS.json": { + "bytes": 366219, + "sha256": "168bcca0645ea5b593b1d5d2b66e0281fc05e23f48e819bcc6e3f2095c974afd" + }, + "frozen/reviews/sections/check_sections.py": { + "bytes": 17774, + "sha256": "c5edcbd0af989bdffdb7f6b7f04b035553c2f156e4937d3c61927c6dcb7d623e" + }, + "frozen/upstream/research/bit-r438-source-code/WORD.json.gz": { + "bytes": 59514, + "sha256": "1a6841fccba51fa922993c77b4b296e659c2c538252e5e06113d0438c5edb870" + }, + "frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json": { + "bytes": 15993, + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021" + }, + "frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz": { + "bytes": 42305, + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py": { + "bytes": 6385, + "sha256": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca" + }, + "frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz": { + "bytes": 33865, + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + }, + "frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json": { + "bytes": 1154, + "sha256": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1" + }, + "frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json": { + "bytes": 5987, + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": { + "bytes": 16791, + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py": { + "bytes": 7268, + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + "frozen/upstream/research/r438-native-rehost/CERTIFICATE.json": { + "bytes": 62860, + "sha256": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c" + }, + "frozen/upstream/research/r438-rehost-projectors/SOURCES.json": { + "bytes": 3159, + "sha256": "ce3b46e4f9fe278727e06c4166f7f3bfa423c30c5a54b538a8b0c7660a07549e" + }, + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json": { + "bytes": 15993, + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021" + }, + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz": { + "bytes": 42305, + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "frozen/upstream/research/r438-rehost-projectors/verify.py": { + "bytes": 20686, + "sha256": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f" + }, + "frozen/upstream/research/selected-bit-hosting-audit/README.md": { + "bytes": 12334, + "sha256": "f77ad5fcbd30d4704e8a8161fd4ac280756a4a91b9fed41f50e8099ebabd65ac" + }, + "native_remainders.py": { + "bytes": 5279, + "sha256": "61f6d74b472ba3e4daafdcd2ceeb8513b1a18e67de18512563128c676d9ff6bb" + }, + "verify.py": { + "bytes": 7171, + "sha256": "77255dc20b875be6afcb4083a171438f64ca11fef0b2d1a6482dab6e3de0a715" + } + }, + "package": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b02-staging", + "post_freeze_refresh": true, + "registered_commands": 6, + "registered_inputs": 30, + "stable_during_controls": true, + "timestamp_utc": "2026-10-20T11:35:48.627584+00:00" +} diff --git a/research/r429-controller-accounting/EVIDENCE-INDEX.md b/research/r429-controller-accounting/EVIDENCE-INDEX.md new file mode 100644 index 0000000000..74f82a55a1 --- /dev/null +++ b/research/r429-controller-accounting/EVIDENCE-INDEX.md @@ -0,0 +1,58 @@ +# Claim and replay index + +All registered commands use only this package and Python's standard library. +The replay never depends on the original absolute workspace paths. + +| Claim or premise | Executed check | Boundary | +| --- | --- | --- | +| 429-helper local VALUE identity | Inherited PR3645, exact head and word pin in SOURCES/ORIGINS | Its 651-column integer/F2 replay is not repeated here. | +| Local paid profile | `native_remainders.py` reads the actual published `WORD.json.gz`, every MOVE/ADD/COPY/ERASE frame and snapshot lifecycle | Does not claim a new full VALUE-column replay. | +| Returned idle capacity | `verify.py --stage owner` replays the original restriction; `--stage independent-owner` independently rebuilds chronology, physical sets and all 123,552 roles | Fixed offsets and windows; no repacking optimum. | +| Actual pending operators | `native_remainders.py` applies the retained PR2653 checker to 23 changed patterns, 111 roots and 326,784 basis columns | Retained implementation, with missing/equal-rank wrong-axis controls; whole hosted emission remains open. | +| Generic coded controller | `verify.py --stage controller` replays every symbolic bank column, 63 added code factors, actual root charts and original borrowing windows | Endpoint is common code E; rank-zero scalar work still needs access/tape pricing. | +| Prefix comparison and terminal failure | Independent complete histograms plus PROOF.md's monotonic-weight inequalities | All real exponents a>=0 in the stipulated tariff; no comparable favorable supplier inferred. | +| Two original-input gauges | Independent exact D(P) involutions and 111 omission witnesses | 888 and 444 are named construction bills, not universal decoder/observer floors. | +| Variable-row-section theorem | Written row-ratio proof, with 127,968 finite 2x2 checks and premise controls | General proof is all-field; actual R438 rank data are over F2. | +| Actual section/rank/census premises | `verify.py --stage independent-sections` rebuilds R,K,J from the raw word; enumerates 511 support directions, all 120 return lines and 70,626 admissible sections | Only the stated three-row/root-line/two-tier alphabet; no arbitrary-normal or native-cost theorem. | +| Portable acceptance gates | `controls.py` checks all complete real receipts and disposable source/type/order/coverage/cache fixtures under normal and optimized Python | Valid cache poison is demonstrated executable before verifying rejection. Removing the named check makes its control fail. | + +## Frozen inputs and adaptations + +`FROZEN-SHA256.json` binds every retained original byte and the newly generated +`NATIVE-REMAINDERS.json`. `ORIGINS.json` records exact original local paths or +Git commit/path expressions. These absolute paths are provenance, not runtime +dependencies. The raw R438 word appears both at its source path and inside the +original PR2653 vendored tree because the retained source checker authenticates +both locations; neither copy is silently substituted. + +`frozen/old/recursive/` retains the original owner/controller programs, their +full receipts, the old local audit receipt and two proof notes. The imported +`bit_cap_copy_local.py` supplies utility functions to the owner script; its +standalone six-copy cap audit is not an executed stage. The full generic +controller performs its own actual native root/chart checks. + +`frozen/upstream/` contains the exact compiler/geometry fragments, original +manifests, placement and candidate invoice, raw words and full 120-root data. +The original projector verifier's `source_check` remains active. Only its +named pure AST fragments are evaluated from upstream global/hosting/geometry +files; their full native entrypoints and optimizers are not invoked. + +`frozen/reviews/owner/` and `frozen/reviews/sections/` contain two separate +implementations and their complete expected outputs. Neither independent +checker imports the historical producer. The owner checker inherits the local +operator identity; the section checker requires only the two raw geometry/word +inputs and reconstructs its own binary and rational matrices. + +`ADAPTATIONS.json` lists unique string replacements. They relocate paths, +route complete comparisons through type-preserving equality, retain assertions +in AST compilation, and compile the exact authenticated source bytes. No +coefficient, domain, loop bound, expected mathematical value or negative-control +condition is changed. Every patch has a single source occurrence or replay fails. + +## Validation distinctions + +The registered package replay checks these local claims. Committed-byte/source- +history preflight checks provenance. The Git-free export check establishes +portability. Hosted automatic CI is reported separately in the PR after its +exact source head is read back. None is independent human acceptance, a +formal-kernel proof, an all-size machine construction or a new kappa certificate. diff --git a/research/r429-controller-accounting/FROZEN-SHA256.json b/research/r429-controller-accounting/FROZEN-SHA256.json new file mode 100644 index 0000000000..254340b800 --- /dev/null +++ b/research/r429-controller-accounting/FROZEN-SHA256.json @@ -0,0 +1,32 @@ +{ + "NATIVE-REMAINDERS.json": "4fbcb4b3207eab9544de2ffae85ac2569da4eb1483062f543dbe4f1167b554c3", + "frozen/old/recursive/BIT-CODE-INPUT.json": "8dbcafd44b23a598d623c78d3d9fb8b4e6ef0651d379cab27d17a4768333ed4a", + "frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json": "859cdd2a87ea6ce58eb0ccdf2ca675e77c7134d6a7bbc7d450493d1abb108271", + "frozen/old/recursive/BIT-NATIVE-CONTROLLER.json": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603", + "frozen/old/recursive/BIT-OWNER-PRUNE.json": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2", + "frozen/old/recursive/BIT-PRUNE-AUDIT.json": "4efc043e71ba125bacfcdb1e2ed638dee685479846f70b2d863e889a5c075ec9", + "frozen/old/recursive/MIXED-SECTIONS-PROOF.md": "3f93d8661aaf889e3e2cb93dd0e0ecc7982c71ed44185df63c767e86b12c4321", + "frozen/old/recursive/TWO-N-ALL-STAGES.md": "da4154af61bec16c0096e01c29fc29a5183a8ca02e9352d52f6e341b418ea85b", + "frozen/old/recursive/bit_cap_copy_local.py": "6e9ca1eb905d769716c009904f45d6849b225e48cd119f18b50c0379f35313cb", + "frozen/old/recursive/bit_native_controller.py": "e08adc1483c5bc75f40da1f7b62a7d1d5eb058615c5dfe6db6c38350348ff288", + "frozen/old/recursive/bit_owner_prune.py": "a263f8f220d0532afe62cc49e4f6311dd5430f2a4bb355a59e726f862e2a168c", + "frozen/reviews/owner/OWNER-REVIEW.json": "7cfc2ff98a390d7de00c975ea8bdd050a4acb5d32f4d2725ed565d0f92803aee", + "frozen/reviews/owner/check_owner_accounting.py": "feec7f0e60638084db81f299931d5a2232f1dcfe2ac92e53113ee0310785fd8f", + "frozen/reviews/sections/CHECKS.json": "168bcca0645ea5b593b1d5d2b66e0281fc05e23f48e819bcc6e3f2095c974afd", + "frozen/reviews/sections/check_sections.py": "c5edcbd0af989bdffdb7f6b7f04b035553c2f156e4937d3c61927c6dcb7d623e", + "frozen/upstream/research/bit-r438-source-code/WORD.json.gz": "1a6841fccba51fa922993c77b4b296e659c2c538252e5e06113d0438c5edb870", + "frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca", + "frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1", + "frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "frozen/upstream/research/r438-native-rehost/CERTIFICATE.json": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c", + "frozen/upstream/research/r438-rehost-projectors/SOURCES.json": "ce3b46e4f9fe278727e06c4166f7f3bfa423c30c5a54b538a8b0c7660a07549e", + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "frozen/upstream/research/r438-rehost-projectors/verify.py": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f", + "frozen/upstream/research/selected-bit-hosting-audit/README.md": "f77ad5fcbd30d4704e8a8161fd4ac280756a4a91b9fed41f50e8099ebabd65ac" +} diff --git a/research/r429-controller-accounting/LICENSE b/research/r429-controller-accounting/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r429-controller-accounting/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/r429-controller-accounting/NATIVE-REMAINDERS.json b/research/r429-controller-accounting/NATIVE-REMAINDERS.json new file mode 100644 index 0000000000..78b9cd583f --- /dev/null +++ b/research/r429-controller-accounting/NATIVE-REMAINDERS.json @@ -0,0 +1,53 @@ +{ + "address_basis_columns": 326784, + "controls": [ + "missing_retained_helper", + "duplicate_retained_helper", + "missing_pending_axis", + "equal_rank_wrong_axis", + "missing_local_copy" + ], + "distinct_pending_signatures": 23, + "local_event_counts": { + "0": 2873, + "1": 13223, + "2": 3, + "3": 3 + }, + "local_profile": { + "1": 1298, + "2": 1342, + "3": 79, + "4": 44, + "5": 93, + "6": 11, + "7": 9 + }, + "no_new_kappa": true, + "owner_audit": { + "deadline_families": 71040, + "factorization_sha256": "d69c821a951a8439737107f24b1df89bbf349df941acaf18fb9f70175b41ae8b", + "families_with_multiple_children": 13632, + "idle_per_replica_including_zero": { + "0": 222, + "2": 420, + "4": 435, + "6": 435, + "7": 666, + "10": 2, + "14": 9, + "18": 2, + "26": 2, + "28": 9, + "34": 3, + "42": 15 + }, + "occupied_families": 27936, + "owner_projector_sha256": "14a74b706f16cded0daac85f134d5336bcd91ed4834149b297b36974b3822fea", + "physical_helpers": 123552, + "qperp_host_occurrences": 20992, + "slots": 3861 + }, + "ports": 111, + "status": "PASS_PRUNED_OWNER_NATIVE_REMAINDERS" +} diff --git a/research/r429-controller-accounting/ORIGINS.json b/research/r429-controller-accounting/ORIGINS.json new file mode 100644 index 0000000000..230b3343e7 --- /dev/null +++ b/research/r429-controller-accounting/ORIGINS.json @@ -0,0 +1,122 @@ +{ + "NATIVE-REMAINDERS.json": { + "origin": "Produced by package native_remainders.py from the stated frozen local word and allocation; new receipt, not a historical source.", + "sha256": "4fbcb4b3207eab9544de2ffae85ac2569da4eb1483062f543dbe4f1167b554c3" + }, + "frozen/old/recursive/BIT-CODE-INPUT.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/BIT-CODE-INPUT.json", + "sha256": "8dbcafd44b23a598d623c78d3d9fb8b4e6ef0651d379cab27d17a4768333ed4a" + }, + "frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/BIT-NATIVE-CONTROLLER-WORD.json", + "sha256": "859cdd2a87ea6ce58eb0ccdf2ca675e77c7134d6a7bbc7d450493d1abb108271" + }, + "frozen/old/recursive/BIT-NATIVE-CONTROLLER.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/BIT-NATIVE-CONTROLLER.json", + "sha256": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603" + }, + "frozen/old/recursive/BIT-OWNER-PRUNE.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/BIT-OWNER-PRUNE.json", + "sha256": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2" + }, + "frozen/old/recursive/BIT-PRUNE-AUDIT.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/BIT-PRUNE-AUDIT.json", + "sha256": "4efc043e71ba125bacfcdb1e2ed638dee685479846f70b2d863e889a5c075ec9" + }, + "frozen/old/recursive/MIXED-SECTIONS-PROOF.md": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/MIXED-SECTIONS-PROOF.md", + "sha256": "3f93d8661aaf889e3e2cb93dd0e0ecc7982c71ed44185df63c767e86b12c4321" + }, + "frozen/old/recursive/TWO-N-ALL-STAGES.md": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/TWO-N-ALL-STAGES.md", + "sha256": "da4154af61bec16c0096e01c29fc29a5183a8ca02e9352d52f6e341b418ea85b" + }, + "frozen/old/recursive/bit_cap_copy_local.py": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/bit_cap_copy_local.py", + "sha256": "6e9ca1eb905d769716c009904f45d6849b225e48cd119f18b50c0379f35313cb" + }, + "frozen/old/recursive/bit_native_controller.py": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/bit_native_controller.py", + "sha256": "e08adc1483c5bc75f40da1f7b62a7d1d5eb058615c5dfe6db6c38350348ff288" + }, + "frozen/old/recursive/bit_owner_prune.py": { + "origin": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/recursive/bit_owner_prune.py", + "sha256": "a263f8f220d0532afe62cc49e4f6311dd5430f2a4bb355a59e726f862e2a168c" + }, + "frozen/reviews/owner/OWNER-REVIEW.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b02-review/OWNER-REVIEW.json", + "sha256": "7cfc2ff98a390d7de00c975ea8bdd050a4acb5d32f4d2725ed565d0f92803aee" + }, + "frozen/reviews/owner/check_owner_accounting.py": { + "origin": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b02-review/check_owner_accounting.py", + "sha256": "feec7f0e60638084db81f299931d5a2232f1dcfe2ac92e53113ee0310785fd8f" + }, + "frozen/reviews/sections/CHECKS.json": { + "origin": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b03-review/CHECKS.json", + "sha256": "168bcca0645ea5b593b1d5d2b66e0281fc05e23f48e819bcc6e3f2095c974afd" + }, + "frozen/reviews/sections/check_sections.py": { + "origin": "/Users/ross/git/math/.research-automation/runs/unpublished-round2-20261020T1106Z/b03-review/check_sections.py", + "sha256": "c5edcbd0af989bdffdb7f6b7f04b035553c2f156e4937d3c61927c6dcb7d623e" + }, + "frozen/upstream/research/bit-r438-source-code/WORD.json.gz": { + "origin": "99b901c9b5ac70cf441b3d7e585cc7b8744b5359:research/bit-r438-source-code/WORD.json.gz", + "sha256": "1a6841fccba51fa922993c77b4b296e659c2c538252e5e06113d0438c5edb870" + }, + "frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/bit-r438-transport-rehost/verify_rehost.receipt.json", + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021" + }, + "frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/bit-r438-transport-rehost/words/r438-t154.json.gz", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-carrier-skeleton/code/nine/geometry.py", + "sha256": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca" + }, + "frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + }, + "frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-p111-tuned/data/selection9-p111.json", + "sha256": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1" + }, + "frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-p111-tuned/tune/EXPECTED.json", + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py", + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + "frozen/upstream/research/r438-native-rehost/CERTIFICATE.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/r438-native-rehost/CERTIFICATE.json", + "sha256": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c" + }, + "frozen/upstream/research/r438-rehost-projectors/SOURCES.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/r438-rehost-projectors/SOURCES.json", + "sha256": "ce3b46e4f9fe278727e06c4166f7f3bfa423c30c5a54b538a8b0c7660a07549e" + }, + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/r438-rehost-projectors/sources/pr2423-rehost.json", + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021" + }, + "frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/r438-rehost-projectors/sources/pr2423-word.json.gz", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "frozen/upstream/research/r438-rehost-projectors/verify.py": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/r438-rehost-projectors/verify.py", + "sha256": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f" + }, + "frozen/upstream/research/selected-bit-hosting-audit/README.md": { + "origin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90:research/selected-bit-hosting-audit/README.md", + "sha256": "f77ad5fcbd30d4704e8a8161fd4ac280756a4a91b9fed41f50e8099ebabd65ac" + } +} diff --git a/research/r429-controller-accounting/PROOF.md b/research/r429-controller-accounting/PROOF.md new file mode 100644 index 0000000000..6b5411644d --- /dev/null +++ b/research/r429-controller-accounting/PROOF.md @@ -0,0 +1,190 @@ +# Fixed coded-controller accounting and row-section boundary + +Ross Richardson with substantial OpenAI Codex assistance. Apache-2.0. +The written implications below are separate from the finite source checks. +No physical supplier, formal-kernel theorem or new kappa is claimed. + +## 1. Boundary and fixed allocation + +The inherited PR3645 local binary map is + +``` +F_A: (x,y,h) -> (Ax,y+Ax,h), +F_A^-1: (x,y,h) -> (A^-1 x,y+x,h). +``` + +The local word has 111 source and 111 target fields, 429 arbitrary dirty +helpers and one private copied field. Its literal integer lift has a distinct +signed source matrix; the target shear above is asserted over F2 only. +The published local identity and full integer/F2 replay are inherited. +This package recounts the actual word's frames, copies and rank profile. + +The ordinary nine-stage controller uses four bank pairs, 32 replicas and +ambient rank 64. Its literal orientation is F0,B1,F2,B3,F4,B5,F6,B7,F8. +Source codes are applied in the native charts at their actual cuts. The +retained generic code-controller proof gives a common coded endpoint and +places Y preloads before borrowing, X sweeps after restoration. It does not +make that endpoint identity or give code arithmetic free physical access. + +A physical owner family is +`replica*888+(2*pair+side)*111+port`. Every old width-eight helper slice +stays at its original pending child, copy and coordinate offset. Delete +helper numbers 249,...,257, corresponding to old registers 471,...,479, +and renumber only the later helper identifiers. There are nine deletions +at each of nine stages. Therefore precisely 81 disjoint width-eight +slices return to their original deadlines per replica. + +For every deadline, `new_remainder = old_remainder disjoint_union deleted_slices`. +The new remainder ranks sum to 648 more than the old ones per replica. +This is an exact physical partition, not a fractional repacking argument. +Both independent reconstructions check all 123,552 surviving owner roles. + +For root q, let P_q=qq^T/4 and K_q=I-P_q. The native pending spaces are +orthogonal sums of K_q and named exterior coordinate lines. Each slice and +remainder contains all of K_q or none. For orthogonal projectors P_i, + +``` +D(P) = [[I-P,P],[P,I-P]], +product_i D(P_i) = D(sum_i P_i). +``` + +Expanding the block products proves this over every odd ADDRESS field where +the dyadic coefficients are interpreted. The fixed allocation binds those +projectors to actual families and chronological windows. The finite native +check covers all 23 new factorization patterns and all 111 root lines on +326,784 ADDRESS basis columns. It preserves arbitrary head and tail values. +This does not emit a complete native hosted program or admit its descendants. + +## 2. Complete invoice and uniform profile comparison + +The old local mass is 5121 and the pruned mass is 4989. The 132 saving splits +as 72 deleted-helper rank plus 60 from replacing nine rank-seven copies by +three rank-one copies. Returned idle work cancels the first 72. Across +288 calls the complete saving is 17,280. + +The reconstructed complete pruned prefix histogram is + +``` +H = {1:373824, 2:399936, 3:22752, 4:26592, 5:26784, + 6:17088, 7:23904, 10:64, 14:288, 18:64, + 26:64, 28:288, 34:96, 42:480}. +``` + +Its mass is 1,791,072. Let H_old be the old complete candidate profile and +Delta=H-H_old. The exact signed difference is + +``` +{1:-6912, 2:-416, 4:-288, 5:-2592, 6:-288, 7:-2592, + 10:64, 14:288, 18:64, 26:64, 28:288, 34:64, 42:160}. +``` + +For real a>=0 the weight (64/r)^a decreases in r. Every negative Delta is +at r<=7 and every positive Delta at r>=10. Multiplying the negative terms +by their larger weights and the positive terms by their smaller weights gives + +``` +sum Delta[r]*r*(64/r)^a + <= 8^a * sum Delta[r]*r + = -17280*8^a < 0. +``` + +This compares the two paid child profiles, not two admitted suppliers with +matching endpoints. The prefix still owes its code removal. + +## 3. Known terminal completion and the strict remaining budget + +Each of the four hole banks has 111 fields. The named complete terminal +construction uses N E^-1 N, where N is the fieldwise rank-one native gauge. +Two gauge sweeps cost 2*4*111=888 rank-one children per replica. The +intervening scalar inverse code still needs a physical access invoice. + +Adding 888*32 to H[1] gives completed mass 1,819,488. The available budget +is 64*28416=1,818,624, so this completion exceeds stock by 864. It exceeds +the older candidate's mass 1,808,352 by 11,136; the baselines differ. + +For M(a)=sum H_completed[r]*(r/64)^(1-a), with acceptance M(a)<28416, +all nonzero child ranks lie between 1 and 42. Thus for every a>=0, + +``` +64*M(a) = sum H_completed[r]*r*(64/r)^a + >= 1819488 > 64*28416. +``` + +This is a lower bound on the actual moment. Extra nonnegative costs cannot +fix it at the same stock. Rank-zero census entries are omitted before powers. +A changed stock, child domain or endpoint requires a new argument. + +At a=0 the prefix leaves 861 rank units per replica. Strict acceptance +requires an integer terminal bill at most 860, before other costs. The known +888 construction must therefore save at least 28, not merely 27. + +For the stipulated ordinary-coverage ledger at L=2B+1 stages, B>=1, +with n ports and three rank-one local repairs per stage, + +``` +D=(L-1)n-3L-2Bn=-3L<0. +``` + +With T replicas the excess is 3LT; B=4,L=9,T=32 recovers 864. +The displayed algebra is all-parameter. A hosted layout is only source-bound +here for nine stages; no all-B construction or whole-machine realization is +inferred. The nonnegative-exponent conclusion additionally requires every +counted child rank to lie in its actual ambient range. + +The two-gauge cost is not a universal decoder lower bound. Omitting just +one gauge changes the arbitrary-input map: for invertible E and nonidentity +N, `(N-I)E^-1 N` is nonzero, and similarly on the right. For E=I, an exact +witness is `(q/2,0)`, which one gauge sends to `(0,q/2)` while two restore it. +Both gauges may cancel for a separately proved commuting E; that changed +construction is outside the present invoice. + +Likewise the 444 FULL-gather source ascents are a cost of lifting four banks +of 111 rank-seven caps to FULL. They are not an observer lower bound. Scalar +augmentation rank 9 supplies no nine-channel native reader. The preserved +ordered source word has an 81-channel factor; no minimality of 81 is claimed. + +## 4. Variable row-section obstruction + +Let J be n by n over any field. Let A_0,...,A_(2k) be invertible and suppose +A_s agrees with J outside row set P_s. Put P=union P_s and + +``` +E=(A_(2k) A_(2k-1)^-1) ... (A_2 A_1^-1) A_0. +``` + +For each adjacent pair, + +``` +A_(2i) A_(2i-1)^-1 + = I + (A_(2i)-A_(2i-1)) A_(2i-1)^-1. +``` + +The added matrix is supported only on rows P_(2i) union P_(2i-1). +For any coordinate p outside that support, left multiplication leaves row p +unchanged. Applying the ratios in order and then using A_0=J outside P_0 +shows E_row_p=J_row_p for every p outside P. No commutation, common section, +involution, finite quotient order or RW=0 assumption is used. + +Consequently every row where J differs from identity must lie in P if E=I. +For the actual binary R438 augmentation J=I+KR, all 111 diagonal entries +are zero. With nine stages and at most three repair rows at each stage, +|P|<=27; at least 84 diagonal entries of E differ from identity. +More generally, with at most r rows per stage, identity requires +rL >= |{p : J_row_p != e_p}|. If L must be odd and r=3 here, L>=37. +This is necessary, not sufficient, and gives no attaining controller. + +The diagonal count alone does not lower-bound rank by 84. For example, over +F2 the 2 by 2 swap J has two zero diagonal entries but rank(J-I)=1; +taking every A_s=J and empty repair sets gives that same odd endpoint. +The independent section proof records additional actual-matrix rank information +separately from this general warning. + +For a physical constant VALUE function on one uncovered family, every ADDRESS +permutation acts trivially. Thus its augmentation diagonal mismatch is an +actual source specialization, not merely a numeric surrogate. Native factors +and nonconstant inputs still need their own operator/access analysis. + +Paid terminal decoders, changed final codes/controllers, non-row-supported +repairs and changed observer contracts are outside this theorem. See +[REVIEW-SECTIONS.md](REVIEW-SECTIONS.md) for the exact source reconstruction, +finite section/return-line census and bounded rank refinements. diff --git a/research/r429-controller-accounting/README.md b/research/r429-controller-accounting/README.md new file mode 100644 index 0000000000..c490faa0b5 --- /dev/null +++ b/research/r429-controller-accounting/README.md @@ -0,0 +1,144 @@ +# Returned-owner costs and section limits for the coded R429 caller + +The three-snapshot R429 local word saves 132 rank units, but its nine deleted +width-eight helper families return 72 units to idle work at each call. This +package reconstructs every remaining owner role and the complete paid profile: +the net saving is **60 per call**, and the known two-N terminal completion +exceeds stock by **864**. It also proves a variable-row-section obstruction for +the same alternating controller. No new supplier or kappa is claimed. + +The local word is the existing [PR3645](https://github.com/CrocSwap/integer-mult-bounds/pull/3645) +construction, head `99b901c9b5ac70cf441b3d7e585cc7b8744b5359`. +Its 651-column integer/F2 identity is inherited, not re-executed here. +The new checks bind its actual literal frame and COPY events to the invoice, +reconstruct the changed physical allocation and check all its pending operators. +The 72-unit return was already noted in PR3645 and +[PR3672](https://github.com/CrocSwap/integer-mult-bounds/pull/3672); +the additional coverage here is the complete allocation, histograms, +all-exponent comparison and terminal/section boundaries. + +## Exact results + +With 111 ports, nine stages, 32 replicas, ambient rank 64 and stock 28,416: + +| Quantity | Exact result | +| --- | ---: | +| Retained physical owner roles | 123,552 | +| Returned idle rank per replica | 648 | +| Net saving across 288 local calls | 17,280 | +| Complete pruned prefix mass | 1,791,072 | +| Known two-N terminal charge per replica | 888 rank-one children | +| Completed mass | 1,819,488 | +| Stock rank budget | 1,818,624 | +| Excess over stock | 864 | + +The completed mass exceeds the **old candidate** by 11,136. That is a different +comparison from the 864 excess over stock. + +For `C(a)=sum H[r]*r*(64/r)^a` and every real `a>=0`, the complete pruned +prefix is cheaper than the old profile by at least `17280*8^a`. This compares +paid child profiles whose endpoint contracts differ. The known completed +profile still satisfies `C(a)>=1819488>64*28416`. A replacement terminal +must cost at most **860 rank-one units per replica** merely to satisfy the +strict zero-exponent budget, before any other charges. + +Under the stipulated ordinary-coverage ledger, `L=2B+1` stages and `n` ports +have deficit `(L-1)n-3L-2Bn=-3L`. This is an all-parameter accounting +implication, not an emitted hosted construction for every B. + +For invertible matrices `A_s` agreeing with `J` outside row sets `P_s`, the +alternating endpoint `E=A_(L-1) A_(L-2)^-1 ... A_1^-1 A_0` agrees with `J` +outside their union. Actual binary `J=I+KR` has 111 zero diagonal entries. +Nine stages with at most three repaired rows therefore leave at least +**84 diagonal mismatches**. Identity closure requires at least **37 odd +stages** under that repair limit. A count of mismatched diagonals is not a +rank lower bound; the proof and checker retain an explicit counterexample. + +See [PROOF.md](PROOF.md) for the exact premises and derived consequences. +The independent section review adds two precise finite consequences. The actual +scalar defect rank lies between **9 and 36**, and is exactly 9 when every stage +has the same-reader form `A_s-I=W_s R`. All **70,626** admissible three-row +sections and all 120 root return lines are checked: exactly **2,270** sections +admit a block, precisely those containing row 80, and their sole block is the +singleton mask 32. These scalar/root-line facts do not supply a native decoder +or its price. They are separate from the written arbitrary-field theorem. + +## Verification and evidence + +Use CPython 3.12 from the repository root: + +```sh +python3.12 -B scripts/check_research_commit.py --package research/r429-controller-accounting --check-source-history +python3.12 -B scripts/research_package.py --package research/r429-controller-accounting +``` + +[VERIFY.json](VERIFY.json) registers explicit checks. Frozen inputs are +self-contained; [ORIGINS.json](ORIGINS.json), [FROZEN-SHA256.json](FROZEN-SHA256.json) +and [ADAPTATIONS.json](ADAPTATIONS.json) preserve original bytes and enumerate +path/receipt adapters. Authenticated source bytes are compiled with assertions +enabled, including nested imports and extracted source functions, even under +optimized parent Python. Mathematical receipts are compared in full with JSON +scalar types preserved. Only original absolute provenance paths are relocated. + +The historical owner audit and complete generic code-controller replay remain +separate from two fresh independent implementations. The latter reconstruct +owner sets/histograms and binary row-section data without importing producer +code. The native remainder stage uses the retained PR2653 operator checker: +23 distinct pending factorizations, all 111 physical root lines, **326,784 +ADDRESS basis columns**, and wrong-axis/missing-factor controls. It is not a +third independent implementation. The generic controller's 63 added code +factors preserve the old borrowing windows; the endpoint remains coded. + +[EVIDENCE-INDEX.md](EVIDENCE-INDEX.md) maps claims to executable coverage and +inherited premises. [REVIEW-OWNER.md](REVIEW-OWNER.md), +[REVIEW-SECTIONS.md](REVIEW-SECTIONS.md) and +[REVIEW-VERIFICATION.md](REVIEW-VERIFICATION.md) preserve separate AI mathematical +and verification reviews. Finite exact computation, written all-parameter proof and formal-kernel +proof are distinct; this package supplies the first two only. + +## Scope and limits + +The 888 terminal and 444 FULL-gather source-ascent counts are costs of named +constructions, not lower bounds for every decoder or observer. Scalar +augmentation rank does not provide an accessible native factorization at a +hole cut. Both original-input gauges, arbitrary helper values, cleanup and +source access must be retained in any replacement. + +The owner result restricts the fixed placement without repacking. The section +result assumes the alternating common-code controller and the stated row +repairs. New coverage, wider observers, different codes/controllers or changed +endpoints can change these conclusions. Native child interiors, terminal +owner allocation, source scans, rounded cleanup, precision, full storage, +fixed-tape execution and joint outer transfer remain unadmitted. No selected +frontier file is changed. + +## Open next questions + +Can a fully priced decoder remove the actual ordered endpoint within the +strict remaining budget? Start from its complete arbitrary-input map at the +physical hole cuts, pay both gauges and every source/output/cleanup visit, +and compare the resulting histogram. A scalar rank factor alone is not that +construction. + +Can a changed controller escape the row-repair or coverage premises? State +the changed contract before searching, then bind its complete operator and +owner invoice. The 37-stage necessary condition provides no attaining caller. +[TASK.json](TASK.json) records these boundaries and the explicit assigned scope. + +## Sources and credit + +Scientific inputs retain base `20ecf2891d80b5acf18d980b2164fb44ea7faa90`; +publication guidance and catalogue revision 7 are pinned at +`12fa8c5c844be21bfefb38a19503fbd867a11244` in [SOURCES.json](SOURCES.json). +The R438 word and local boundary lineage belong to Ali Romman/PR1043; +Sagar Thakrar/PR2423 supplies transport and rehosting; commdata2338/PR2653 +supplies the pending-projector audit, with PR1307 geometry ancestry. +Retained source headers and manifests preserve the earlier +DreamingOfClouds/eumemic/PR589/555/543/545/510 notices. +James Reed/PR3672 independently recorded the published local arithmetic. +The source-code, pruning and recursive-audit findings here were prepared by +Ross Richardson with substantial OpenAI Codex assistance. + +[RELATED-WORK.json](RELATED-WORK.json) records exact nearby heads and scope +comparisons. Live overlap coverage is a search aid, not a novelty certificate. +Separate AI review is not independent human acceptance. Apache-2.0. diff --git a/research/r429-controller-accounting/RELATED-WORK.json b/research/r429-controller-accounting/RELATED-WORK.json new file mode 100644 index 0000000000..60bf71f66e --- /dev/null +++ b/research/r429-controller-accounting/RELATED-WORK.json @@ -0,0 +1,94 @@ +{ + "scope": "B02/B03 fixed coded-controller accounting; no generic source-coding or returned-idle priority claim", + "references": [ + { + "pr": 3672, + "head": "8f735782ecf4a3af439b4b0b02e665d4983e3c6d", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/3672", + "relationship": "Published local arithmetic and72-unit return are prior confirmation; new work binds full physical allocation/histogram and uniform moment comparison." + }, + { + "pr": 3645, + "head": "99b901c9b5ac70cf441b3d7e585cc7b8744b5359", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/3645", + "relationship": "Published source-coded local word, local profile and72 returned idle rank warning are inherited. New contribution reconstructs fixed owner complements, generic controller windows and terminal/variable-section boundary." + }, + { + "pr": 2423, + "head": "13cd273dc13c98244b1f9bcf588b6e828cbc0347", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/2423", + "relationship": "Transported R438 word and selected owner placement; no new packing optimum claimed." + }, + { + "pr": 1043, + "head": "e309e17f83f5759b1ea1fa24a76f24838784cb4d", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/1043", + "relationship": "Original legal R438 boundary-persistence word and full hosted invoice lineage." + }, + { + "pr": 2653, + "head": "ff26f4477786cf9ab188e060d6820a39dd2ed117", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/2653", + "relationship": "Exact pending-projector algebra/checker, source/geometry pins and baseline owner audit; reused to test the restricted429 allocation." + } + ], + "overlap_searches": [ + { + "searched_at": "2026-10-20T11:14:11.757659+00:00", + "terms": [ + "returned-owner", + "two-N", + "alternating row", + "common-code", + "signed quotient", + "70626" + ], + "coverage": { + "open_prs": { + "fetched_at": "2026-10-20T11:13:22.758595+00:00", + "complete_pagination": true, + "records": 301 + }, + "discussions": { + "fetched_at": "2026-10-20T11:09:04.134297+00:00", + "complete_pagination": true, + "records": 2697 + }, + "closed_prs": { + "fetched_at": "2026-10-20T11:14:11.410658+00:00", + "complete_pagination": true, + "records": 3540 + } + }, + "matches": 28 + }, + { + "searched_at": "2026-10-20T11:19:01.929936+00:00", + "terms": [ + "R429", + "row-section", + "returned idle", + "rank drops 132" + ], + "coverage": { + "open_prs": { + "fetched_at": "2026-10-20T11:13:22.758595+00:00", + "complete_pagination": true, + "records": 301 + }, + "discussions": { + "fetched_at": "2026-10-20T11:09:04.134297+00:00", + "complete_pagination": true, + "records": 2697 + }, + "closed_prs": { + "fetched_at": "2026-10-20T11:14:11.410658+00:00", + "complete_pagination": true, + "records": 3540 + } + }, + "matches": 23 + } + ], + "limits": "Complete paginated open and closed/merged PR titles/bodies and discussion records; arbitrary diffs not searched. Exact relevant source packages inspected. A search is not a novelty certificate." +} diff --git a/research/r429-controller-accounting/REVIEW-OWNER.md b/research/r429-controller-accounting/REVIEW-OWNER.md new file mode 100644 index 0000000000..ae2049bf18 --- /dev/null +++ b/research/r429-controller-accounting/REVIEW-OWNER.md @@ -0,0 +1,256 @@ +# B02 independent owner and moment review + +Status: **PASS within the fixed contracts below. No new supplier or κ.** +Reviewed 2026-10-20. This review imports or executes no producer module. +`check_owner_accounting.py` independently reconstructs the actual chronological +windows, selected slots, physical owner rows, complements and complete +histograms. Its regenerated receipt is `OWNER-REVIEW.json`. + +The source scientific base remains +`20ecf2891d80b5acf18d980b2164fb44ea7faa90`; the current checkout is used only +for byte-identical pinned predecessor files. The three file hashes in +`BIT-OWNER-PRUNE.json` still match, as do all consumed PR2653 source inputs. +The source word is PR2423's R438 word, gzip SHA256 +`a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022`. +The independently rebuilt old slot digest matches +`1ef76bb87f1cfac7b4281c308bd71064c1fb1b6b4b267cfe9f3290212a5de11e`; +the restricted slot digest matches +`5b2189e714523b5fa8b01e5aee52f332511920fa4620104b2a894907b57cc238`. + +## Fixed physical contract and returned rank + +There are 111 ordinary ports, nine local stages, 32 replicas, ambient rank +64 and 28,416 live data families. The physical family formula is + +``` +replica*888 + (2*pair+side)*111 + port. +``` + +The allocation has ten pending children per physical port/side, including +one zero-rank child. It retains all 71,040 physical deadlines. Each hosted +helper is a complete width-eight slice in its original pending child; +there is no repacking, changed offset or borrowing-window relaxation. + +The helper numbers 249 through 257 correspond to old physical registers +471 through 479. Exactly nine such helpers are deleted at each of nine +stages: 81 deleted occurrences per replica, each width eight. The actual +remaining set at every deadline is the old remaining set disjointly united +with the deleted slices. Consequently + +``` +returned idle rank per replica = 81*8 = 648. +``` + +The remaining 3,861 roles per replica give 123,552 roles over all replicas. +The independent owner and factorization digests agree with the historical +receipt for both the old and restricted allocations. + +The complete idle profiles, including rank zero, are: + +``` +old: {0:222, 2:433, 4:444, 6:444, 7:666, 34:1, 42:10} +new: {0:222, 2:420, 4:435, 6:435, 7:666, 10:2, 14:9, + 18:2, 26:2, 28:9, 34:3, 42:15} +``` + +The source projector chart consists of the root line, all seven root- +orthogonal axes, and exterior coordinates. Every retained slice and every +new remainder contains either all seven root-orthogonal axes or none. +The set partition therefore is a partition into actual orthogonal +projectors, rather than only a dimension sum. For +`D(P)=[[I-P,P],[P,I-P]]`, orthogonal `P_i` satisfy +`product_i D(P_i)=D(sum_i P_i)`. This identity holds on arbitrary head and +tail vectors; no zero-helper premise is used. The finite set/owner +reconstruction binds that algebraic identity to this fixed allocation. +The inherited whole-call realization and early-preload/late-X code-window +arguments remain distinct from the projector identity. + +## Complete histogram and the two baselines + +The old local rank mass is 5,121 and the pruned mass is 4,989. The apparent +132-unit saving consists of 72 deleted-helper units plus 60 COPY units +(nine rank-seven copies replaced by three rank-one copies). The first +72 units return to the idle invoice. The complete net saving is therefore +60 per local call, or `288*60=17,280` globally. + +The complete local-plus-idle histogram is reconstructed directly as +288 local histograms plus 32 idle histograms: + +``` +H = {1:373824, 2:399936, 3:22752, 4:26592, 5:26784, + 6:17088, 7:23904, 10:64, 14:288, 18:64, 26:64, + 28:288, 34:96, 42:480}. +``` + +Its mass is **1,791,072**. The known two-N terminal adds +`2*4*111=888` rank-one children per replica, hence 28,416 globally. +The completed histogram differs only at rank one, which becomes 402,240; +its mass is **1,819,488**. + +| Comparison | Exact quantity | +| --- | ---: | +| Old complete candidate mass | 1,808,352 | +| Pruned prefix mass | 1,791,072 | +| Pruned prefix plus known terminal mass | 1,819,488 | +| Available rank budget `64*28416` | 1,818,624 | +| Terminal excess over old candidate | 11,136 | +| Terminal excess over available budget | 864 | + +The receipt field `zero_exponent_two_N_excess_over_baseline=11136` uses +the old candidate as its baseline. It is not the excess over stock. +Both numbers are correct; publication prose should explicitly distinguish them. + +For the stated moment convention + +``` +M(a) = sum_r H[r]*(r/64)^(1-a), with acceptance M(a)<28416, +C(a) = 64*M(a) = sum_r H[r]*r*(64/r)^a, +``` + +every retained child has `0=0`, +each tariff is at least its rank, and + +``` +C_completed(a) >= 1819488 > 1818624. +``` + +This is a direct lower bound on the true moment, not failure of a sufficient +upper estimate. Additional nonnegative fallback, precision or routing +charges cannot reverse it at the same stock. A changed stock or child-rank +contract requires a different argument. Rank-zero census entries are +excluded before taking powers, including at `a>=1`. + +## Useful sharpening: a uniform prefix price comparison + +The signed histogram `H_pruned-H_old` is + +``` +{1:-6912, 2:-416, 3:0, 4:-288, 5:-2592, 6:-288, + 7:-2592, 10:64, 14:288, 18:64, 26:64, 28:288, + 34:64, 42:160}. +``` + +Its rank-mass sum is -17,280. Every negative entry is at rank at most +seven, and every positive entry is at rank at least ten. For `a>=0`, +`(64/r)^a` is decreasing in `r`; using separating rank eight gives + +``` +sum_r (H_pruned[r]-H_old[r])*r*(64/r)^a + <= (64/8)^a * sum_r (H_pruned[r]-H_old[r])*r + = -17280*8^a < 0. +``` + +This proves a strict uniform price comparison for every nonnegative real +exponent. It does not compare two suppliers satisfying the same endpoint +contract: the new prefix still has a coded endpoint requiring repair. +In particular it does not contradict the completed-word obstruction. +No numerical root search or formal-kernel proof is claimed. + +At exponent zero the available terminal rank budget is +`(1818624-1791072)/32=861` per replica. Strict acceptance requires an +integer terminal bill at most **860**, before any further charges. +Therefore an alternative to the 888-call construction must save at least +**28 rank-one units per replica** merely to pass this necessary first gate. +Saving 27 leaves equality and is insufficient. + +## All odd-stage accounting identity + +Under the specified ordinary-coverage ledger, let `B>=1`, `L=2B+1`, +and let `n` be the port count. Before the three rank-one local repairs per +stage, the deficit is `(L-1)n`. After those repairs and the stipulated two +endpoint normalizations on every one of the `Bn` hole fields, it is + +``` +D = (L-1)n - 3L - 2Bn + = 2Bn - 3L - 2Bn + = -3L < 0. +``` + +With `T` replicas the mass excess is `3LT`. At `B=4,L=9,T=32` this is +864. The general necessary integer terminal budget for strict passage, +before other charges, is `2Bn-3L-1`, whenever that number is nonnegative. + +This is a written all-parameter implication from the given coverage, +repair and terminal costs. It does not construct or admit a hosted +controller for every B. The inherited generator itself only emits the +fully banked layout at L=9. The checker includes 2,048 finite arithmetic +sanity cases; those cases do not replace the displayed algebraic proof. +The all-nonnegative-exponent conclusion additionally requires every +counted child to have positive rank at most its ambient rank, as verified +for the fixed nine-stage histogram. + +## Original-input gauge and source-access boundaries + +The actual terminal expression is `N E^-1 N`, where the diagonal fieldwise +operator `N` uses `D(P_q)` and `P_q=q q^T/4`. These rank-one projectors +come from the pinned 111 root lines. The checker verifies the involution +on all 1,776 rational basis columns and constructs 111 one-gauge omission +witnesses: for `E=I`, the correct two-gauge map is identity, while one +gauge sends `(q/2,0)` to `(0,q/2)`. + +More generally, for every invertible E and nonidentity N, removing only +the left N changes the map: `(N-I)E^-1 N` is nonzero. Removing only the +right N also changes it. This is an arbitrary-input algebraic statement, +independent of coefficient estimates. Removing both gauges can succeed +when E commutes with N; no universal obstruction to that separate +possibility is claimed. An actual commutation or joint-decoder word must +be supplied before charging such a cancellation. + +The number **888 is the bill of the known complete construction**. It is +not a lower bound for every terminal decoder. The number **444** is the +source ascent cost of the specified all-bank FULL gather: four banks, +111 rank-seven caps each, each lifted to FULL by one rank-one child. +It is not a universal observer lower bound. A different observer, copied +query or legal shared cut needs its own ordered arbitrary-input access, +dirty-workspace and restoration contract. + +In particular the proposed 288-unit descent assumes a nine-channel native +factorization inferred only from scalar augmentation. The actual ordered +word currently supplies an 81-channel factor. This review does not prove +that 81 channels are necessary; it records that the nine-channel native +factor and its readout are unbuilt. Even granting that factor, the stated +FULL-gather construction would add at least its own 444 ascents to the +288 descent, before output alignment and cleanup. + +## Validation, provenance and remaining obligations + +Run from any directory, with Python 3.12 or later: + +``` +python3 -I -B /absolute/path/to/b02-review/check_owner_accounting.py +python3 -I -O -B /absolute/path/to/b02-review/check_owner_accounting.py +``` + +The receipt contains every fixed histogram, deleted slot, source hash and +owner digest. Four injected accounting faults reject the missing physical +idle complement, false 132-unit net saving, missing second gauge charge, +and a child rank above ambient. The native gauge omission witnesses are +separate exact operator controls. + +The established 651-column integer/F2 local operator identity is inherited +from published [PR3645](https://github.com/CrocSwap/integer-mult-bounds/pull/3645) +and is not re-executed by this package. This independent checker consumes +the pinned local receipt, whose forward and inverse paid profiles agree. +The separate parent-owned `native_remainders.py` binds the actual published +`WORD.json.gz` to all local frame events, paid ranks and COPY lifecycle, and +checks the changed owner remainder operators. Its +`NATIVE-REMAINDERS.json` records 326,784 exact ADDRESS basis columns; this +is not a full integer/value replay of the local operator identity. +The recursive/owner specialists retain the whole native code-window +realization and terminal owner-allocation +obligations; rounded-network/machine specialists own child-error, +precision and physical tape interfaces if a future construction survives +the cost gate. + +No defect was found in the supplied B02 numerical claims. The most useful +presentation corrections are the two explicit excess baselines, the +conditional nature of the all-B ledger, and the construction-versus-lower- +bound distinctions for 888 and 444. The uniform prefix comparison and +860 strict terminal budget are safe additional deductions. + +Credit: Ali Romman's PR1043 R438 word, Sagar Thakrar's PR2423 transport and +rehosting, commdata2338's PR2653 pending-projector audit and its PR1307 +geometry predecessors; the local source-code, support-pruning and +recursive audit lanes identified in the preserved source handoff. +Prepared for Ross with substantial OpenAI Codex assistance. No human +independent review or formal-kernel proof is asserted. diff --git a/research/r429-controller-accounting/REVIEW-SECTIONS.md b/research/r429-controller-accounting/REVIEW-SECTIONS.md new file mode 100644 index 0000000000..8ce6b7eb12 --- /dev/null +++ b/research/r429-controller-accounting/REVIEW-SECTIONS.md @@ -0,0 +1,283 @@ +# B03 independent mathematical review + +**Finding:** the alternating row-section obstruction is correct. Its scope is +the specified common-endpoint word, with the original input gauge retained. +The argument does not prove a paid terminal-decoder lower bound. The fresh +independent checker also reproduces the complete archived root-line census +and gives useful exact strengthening of its classification. + +This is a written mathematical proof plus finite exact arithmetic verification, +prepared by Ross Richardson with substantial OpenAI Codex assistance. It is +not a formal-kernel proof or independent human review. The historical +scientific pin is `20ecf2891d80b5acf18d980b2164fb44ea7faa90`; the inspected +current checkout is `12fa8c5c844be21bfefb38a19503fbd867a11244`. + +## 1. Row-section theorem and its exact premises + +Let \(J\) be an \(n\)-by-\(n\) matrix over a field. Let the \(2k+1\) matrices +\(A_0,\ldots,A_{2k}\) be invertible. For each \(s\), let \(P_s\) be a physical +**row** set such that +\[ +e_p^T A_s=e_p^T J\quad(p\notin P_s). +\] +Set \(P=\bigcup_s P_s\) and preserve the ordered word +\[ +E=A_{2k}A_{2k-1}^{-1}\cdots A_2A_1^{-1}A_0 . +\] +Then \(e_p^TE=e_p^TJ\) for every \(p\notin P\). + +Indeed, write +\[ +T_i=A_{2i}A_{2i-1}^{-1} + =I+(A_{2i}-A_{2i-1})A_{2i-1}^{-1}. +\] +Right multiplication cannot create a nonzero row from a zero row. Thus +\(e_p^TT_i=e_p^T\) outside \(P_{2i}\cup P_{2i-1}\). For \(p\notin P\), +successively multiplying the row vector \(e_p^T\) by the factors +\(T_k,\ldots,T_1\) leaves it unchanged; multiplication by \(A_0\) then gives +\(e_p^TJ\). No commutation of the factors is used. + +The proof only requires the odd-indexed inverses for the algebraic identity; +the stated invertibility of every stage retains the reversible-interface +contract. There is no requirement that \(J\) be invertible. There is no +\(RW=0\), involution, finite quotient-order, fixed-section or identical-stage +premise. The general theorem is valid in every characteristic. The actual +R438 application and all rank numbers below are over \(\mathbb F_2\). + +The repair equation \(J=(I+Q_s)A_s\), with \(Q_s\) supported on \(P_s\), +implies the required agreement directly by taking rows outside \(P_s\). +The proof concerns rows, so a column-supported repair is not interchangeable. +Nor can the order \(A_{2i}A_{2i-1}^{-1}\) be reversed. + +The finite checker tests every \(J\in M_2(\mathbb F_2)\), every sequence in +\(\operatorname{GL}_2(\mathbb F_2)\), and lengths \(1,3,5\): 127,968 cases, +including 990 cases with at least one uncovered row. These finite tests +support the implementation; the preceding written proof supplies the +all-parameter statement. + +## 2. Exact coverage consequence + +Let +\[ +D=\{p:e_p^TJ\ne e_p^T\}. +\] +Identity restoration requires **\(D\subseteq P\)**, not merely a large +cardinality for \(P\). In particular, +\[ +|D|\le |P|\le\sum_s|P_s|. +\] +If every stage changes at most \(r>0\) rows, the odd stage count \(L=2k+1\) +must be at least the least odd integer not smaller than \(\lceil |D|/r\rceil\). +This is a necessary condition only. + +The independent R438 reconstruction gives \(n=111\), +\(J=I+KR\), \(\operatorname{rank}J=108\), and \(J_{pp}=0\) for every \(p\). +Thus \(D\) is all 111 physical rows. Nine stages with at most three repaired +rows each leave at least \(111-27=84\) diagonal entries unequal to identity. +With the same three-row budget, identity is impossible at every odd stage +count below **37**. At exactly 37 stages, all repair sets must have size +three and form a disjoint partition of the 111 rows. No 37-stage construction +or sufficiency assertion is supplied. + +The nullity-three fact also independently confirms why fewer than three +row replacements cannot make this \(J\) invertible: replacing \(r\) rows +increases rank by at most \(r\). + +## 3. Diagonal discrepancies and defect rank + +The count 84 is not a rank bound. For a smallest explicit counterexample, +over \(\mathbb F_2\) take +\[ +J=\begin{pmatrix}0&1\\1&0\end{pmatrix},\qquad +A_s=J,\quad P_s=\varnothing . +\] +For any odd alternating stage count, \(E=J\). Both diagonal entries differ +from identity, but +\[ +E-I=\begin{pmatrix}1&1\\1&1\end{pmatrix} +\] +has rank one. + +The actual fixed R438 data allow a separate, precise rank statement. +The checker reconstructs the \(111\)-by-9 scatter matrix \(K\) and the +9-by-111 reader matrix \(R\) directly from the frozen word's `D`, `A`, `ret` +and `scatter` data, without importing the historical producer. Both have +rank nine. The 511 nonzero binary vectors \(a\) have the following +\(|\operatorname{supp}(Ka)|\) histogram: + +``` +48:4, 49:12, 50:32, 51:50, 52:76, 53:52, 54:24, 55:5, +56:5, 57:24, 58:52, 59:76, 60:50, 61:32, 62:12, 63:4, 111:1. +``` + +Consequently, deleting any at most 47 rows of \(K\) leaves column rank nine. +Otherwise some nonzero \(a\) would have its support inside the deleted set, +contradicting the minimum support 48. For \(U=P^c\), +\[ +(E-I)_U=(J-I)_U=K_U R . +\] +When \(|P|\le47\), this has rank nine because \(R\) has full row rank. +Also \(E-J\) is supported on \(P\), so +\[ +9\le\operatorname{rank}(E-I) + \le\operatorname{rank}(J-I)+|P| + =9+|P|. +\] +For the nine three-row stages this yields **\(9\le\operatorname{rank}(E-I) +\le36\)**. + +There is an additional conditional equality. If every stage obeys the +**same-reader premise** +\[ +A_s-I=W_sR +\] +for the same actual \(R\), then products and inverses preserve the form +\(I+VR\): +\[ +(I+UR)(I+VR)=I+(U+V+URV)R,\qquad +A^{-1}-I=-A^{-1}WR . +\] +Thus \(E-I=VR\), whose rank is at most nine. Combined with the preceding +lower bound, its rank is **exactly nine** for \(|P|\le47\). +This equality is conditional on the displayed common-reader premise; the +broader row-section theorem does not require it. + +These are scalar-augmentation ranks. They provide no native factorization, +snapshot count, physical frame width, decoder tariff, precision theorem +or source-access bound. In particular, rank nine does not replace the +actual routed defect's separately derived operator channels. + +## 4. Native constant-input witness + +Retain the historical exact binary VALUE semantics and the native ADDRESS +interface in which layout changes act as permutations of each VALUE +function's ADDRESS arguments. On the subspace of functions constant on +ADDRESS, every such permutation acts as identity. An exact copied snapshot +copies that same constant; literal cleanup and source preservation remain +the ordinary interface obligations. + +For any uncovered family \(p\), take the source VALUE function on that +physical family to be constantly one, all other source families constantly +zero, and all other arbitrary public inputs to be zero. This is an allowed +specialization of a contract that claims correctness on arbitrary inputs. +The scalar-augmentation coefficient of its own output is +\(E_{pp}=J_{pp}=0\), whereas terminal identity requires one. This witnesses +failure of identity restoration on an actual input under that native +constant-subspace contract. + +This reasoning preserves the original input gauge. Relabelling the output +as already encoded, deleting a terminal permutation, changing the observer +contract, or using a non-permutation VALUE operation changes the premises. +Rounded/nonlinear implementations require their own invariant-subspace +argument. No arbitrary-input *positive* native supplier or restoration +claim follows from this negative specialization. + +## 5. Independent full finite root-line census + +The census has a different domain from the all-field row theorem. It covers +the actual binary \(R,K,J\), physical three-row deletions, the 120 E8 root +return lines, and the specified common-intersection two-tier block alphabet. +It does not cover arbitrary return normals or arbitrary native circuits. + +The checker independently derives each of the nine old retained query cap +normals by exact rational elimination of its actual final `A`-stage frame. +The 111 physical lines together with those nine normal lines agree exactly +with the separately authenticated complete 120-line geometry. + +For nonzero binary output direction \(a\) and candidate return normal \(u\), +define + +* \(d(a,u)=\{p:(Ka)_p=1,\ u\cdot r_p\ne0\}\), the rows that must be deleted; +* \(M(u)=\{j:u\cdot n_j=0\}\), the old query caps containing the return line. + +A template can be used after deletion \(P\) only if +\(d(a,u)\subseteq P\). A block of old query coordinates \(S\) can use it only +if +\[ +\operatorname{supp}(a)\subseteq S\subseteq M(u). +\] +The output directions must span the entire block for its mixing to be +invertible. Enumerating every \(a\ne0\) and all 120 root lines, with at most +three required deletions, produces exactly 111 eligible templates. +Each requires one distinct physical deleted row, and **every template has +\(M(u)=\operatorname{supp}(a)\)**. + +Therefore a fixed block \(S\) can use only the direction \(a=1_S\). Its +output rank is at most one, so invertibility forces \(|S|=1\). Among all +111 templates there is exactly one singleton: + +``` +output / input block mask: 32 = 1 << 5 +required deleted row: 80 +return normal: (0, 1, 0, -1, -1, 0, -1, 0) +``` + +To enumerate admissible sections, the checker computes the left kernel of +\(I+RK\), multiplies its three basis rows by \(R\), and obtains a complete +left-kernel matrix \(C\) of \(J\). A three-row set \(P\) allows an invertible +row replacement precisely when the three columns \(C_P\) are independent: +the unchanged 108 rows of \(J\) are independent exactly when no nonzero +left-kernel vector vanishes on \(P\). + +All \(\binom{111}{3}\) candidate subsets are inspected. Exactly **70,626** +are admissible. Exactly **2,270** contain row 80; these are all and only the +positive sections, and every one admits only block mask 32. The original +block-rank condition is evaluated for every admitted section, in addition +to the preceding simplifying classification. All eligible-direction ranks +are three, as in the archived receipt; that fact alone does not imply a +feasible three-channel block. + +An explicit positive witness is \(P=\{1,2,80\}\). Its section labels are +\((4,2,1)\), so it is admissible. The direction \(a=32\) has 63 supported +output rows, and exactly row 80 has nonzero inner product with the displayed +return normal. The normal lies inside old query cap 5. Removing row 80 +therefore makes this singleton geometry feasible. Omitting that deletion +reintroduces the actual incompatibility. In particular, this counterexample +prevents the historical no-nonempty-block result for \(P=\{0,1,2\}\) from +being generalized to all sections. + +This is a geometric singleton witness only. The old query is an arbitrary +dirty total. Its extraction, compensation, literal cleanup, owners, routing +and complete controller cost remain separate obligations. + +## 6. Reproduction, controls and source boundaries + +`check_sections.py` uses Python's standard library, exact integers, +`Fraction`, and two gzip JSON inputs. Its CLI is directly portable: + +``` +python3 -I -O -B check_sections.py \ + --word /path/to/r438-t154.json.gz \ + --geometry /path/to/bitE8-r865.json.gz \ + --output /fresh/path/CHECKS.json +``` + +The output must not already exist. It contains the complete reconstructed +matrices, all 111 templates, all 2,270 positive sections and the finite +proof checks. Source authentication occurs before interpretation. + +Mathematical controls use constructed matrices after authentication, so +they cannot pass merely because a source hash changed: + +* An even two-stage word of identical swap matrices is identity and fails + the claimed inheritance of \(J\). +* Omitting the inverse in a three-stage word of an order-three matrix + changes its endpoint to identity. +* Reversing the ordered numerator/inverse pair changes an explicitly + uncovered physical row. +* A singular odd-indexed stage is rejected when its inverse is requested. +* The explicit row-80 geometry has one and only one incompatible supported + row; omitting that deletion invalidates the singleton. +* The two-diagonal, rank-one example rejects the proposed rank interpretation. + +The fresh census's candidate count, complete template array, complete +eligible-direction rank histogram, section count and complete positive +array match the historical `ROOT-LINE-SECTION-DECODER.json` exactly. +That historical receipt was used only for this separate post-run comparison, +not as an input to the independent checker. The fresh input is the raw +R438 word plus the full geometry. `SOURCES.json` records exact byte hashes; +`VALIDATION.json` records actual commands, runtimes and output comparisons. + +The parent owns the global controller, full arbitrary-input restoration, +returned-owner accounting and publication integration. None is inferred +from these row and root-line calculations. diff --git a/research/r429-controller-accounting/REVIEW-VERIFICATION.md b/research/r429-controller-accounting/REVIEW-VERIFICATION.md new file mode 100644 index 0000000000..c17f1e7406 --- /dev/null +++ b/research/r429-controller-accounting/REVIEW-VERIFICATION.md @@ -0,0 +1,165 @@ +# B02/B03 exact-source and control review + +Status: **PASS for the reviewed verification core, with the scientific +boundaries below.** This is a separate AI source/control review, not a human +review or a formal-kernel proof. Prepared for Ross with substantial OpenAI +Codex assistance, 20 October 2026. + +`CORE-SNAPSHOT.json` records the reviewed file bytes and aggregate core hash. +`CONTROLS.json` records the compact executions, including their exact verifier +and frozen-manifest hashes. The final package registration, complete mathematical +stage executions and publication checks belong to the parent. + +## Findings resolved during review + +1. The historical AST extraction paths initially read source again after a + separate source check. Stable changes would fail the pre/post hashes, but + this did not literally compile the same bytes returned by authentication. + Four explicit adapters now make the controller recipe, owner-window + function, projector source functions and geometry statements parse the + bytes returned by `PORTABLE.authenticate`. No mathematical operation was + changed. The actual projector extractor rejects a changed-source fixture. +2. The independent owner's earlier prose implied that the parent would replay + the local 651-column scalar circuit. The package now explicitly inherits that + identity from the pinned published PR3645. Its new local stage reconstructs + the actual frame/COPY lifecycle and paid histogram. These are distinct + obligations. + +No unresolved defect was found in the reviewed loader, full-receipt comparison, +source-derived invoice, pending-operator coverage or tested controls. + +## Source execution and receipt contract + +`Portable.code` authenticates a registered source and compiles the returned +bytes after the enumerated unique adapters, with `dont_inherit=True` and +`optimize=0`. The nested `SourceFileLoader` hook takes the same path for Python +modules under the frozen tree. Therefore `-B` is not being mistaken for a +bytecode-read prohibition. The four AST compilation sites also explicitly use +`optimize=0`. + +The compact test installs two usable poisoned caches: a matching timestamp +cache and an unchecked-hash cache. An ordinary loader first proves that each +cache executes its poison. The package loader instead executes the authenticated +nested source and reaches its intended assertion. These tests pass with both +normal and optimized parent interpreters. Separate direct-source and +actual-extracted-AST assertions remain active in both modes. + +All registered frozen inputs are authenticated before and after each historical +stage. The import closure does not execute the full upstream generator, +optimizer or the unused signed-local main from `bit_cap_copy_local.py`. +The latter module supplies only the imported small helpers used by the owner +replay. Its unused absolute source constants are not runtime input accesses +of this package's registered stages. + +Every returned mathematical receipt is compared in full. The sole semantic +normalization maps the declared historical absolute provenance paths into the +portable tree; it does not discard numerical fields, status fields, limits or +ordered events. Canonical JSON comparison distinguishes `true`, `1` and `1.0`, +and preserves list order. Normalized-key collisions fail. Missing evidence +fails rather than being regenerated in place. + +The independent section stage writes a fresh temporary result, compares that +whole result with its fixed receipt, and deletes the temporary directory. Its +generation of a fresh result does not replace or manufacture a missing fixed +certificate. + +## Actual mathematical coverage + +The frozen local program comes from the published three-snapshot R429 word. +`native_remainders.local_profile` derives its histogram from every literal +event, checks the specified deleted physical families, binds its start and +final frames, checks MOVE containment/rank, the immutable source throughout +each COPY/ERASE interval, and the final closed lifecycle. It checks 2,873 +MOVEs, 13,223 ADDs and three COPY/ERASE pairs. The paid histogram is + +``` +{1:1298, 2:1342, 3:79, 4:44, 5:93, 6:11, 7:9}. +``` + +This is a frame and invoice reconstruction. The local VALUE operator identity +and arbitrary-helper restoration remain the explicitly inherited PR3645 +premise; this review does not promote the new frame replay into that proof. + +The pending-projector audit expands the actual selected placement, deletes the +nine named helper families at each stage and retains every surviving physical +coordinate. It examines 3,861 roles per replica, hence all **123,552 roles** +across 32 replicas, and checks all **71,040 deadlines**. It does not replace +the physical allocation by only its rank histogram. The independent owner +checker reconstructs the same chronology, set partitions, physical family +rows and complete invoices without executing the producer. + +The native ADDRESS stage applies the retained PR2653 checker to all **23** +distinct retained pending factorizations and all **111** physical root lines. +For each pair it covers the 16 rational local basis columns and both columns +of each of the 56 exterior swaps: **326,784 ADDRESS columns** in total. +Repeated owner roles reduce to these exact factorization classes. This is +complete coverage of those pending operators on arbitrary head/tail inputs, +not a new independent implementation of PR2653 or an execution of the whole +recursive supplier. + +The return-gauge witness is actual operator arithmetic. For every original +root, the independent owner checker verifies `N^2=I` on all 16 columns. +At `E=I`, one remaining gauge sends `(q/2,0)` to `(0,q/2)`, giving 111 +concrete omission witnesses. These do not prove that two gauges can never +cancel with a different commuting endpoint, nor that 888 is a universal +decoder lower bound. + +The B03 review supplies its own row-support derivation and finite geometry +census. Its factor-order/inverse/even-length controls and the explicit +row-80 deletion witness operate on the constructed matrices after input +authentication. The row-80 result is an exact incompatibility witness, not an +exception-based mutation check. The arbitrary-field theorem is a written +proof, distinct from the finite GL(2,2) sanity cases. + +## Compact defect controls + +The delivered `verifier_controls.py`, suitable as package-root `controls.py`, +uses only external temporary directories and does not rerun a large +mathematical stage. It can run against a read-only, Git-free package. + +In each of normal and optimized Python 3.12 it runs: + +- 13 source/receipt/type/adaptation controls, including a normalized-key + collision and direct assertion preservation; +- two valid poisoned nested-cache controls; +- three real projector-partition controls: a missing axis, overlapping + factors and an equal-rank wrong-axis replacement; +- two actual AST-extractor controls: assertion preservation and changed + authenticated source; +- complete comparison of all six registered scientific receipts, followed + by one deepest nested mutation and one nested omission in each receipt. + +Thus the integrated current set has **32 intended rejections per interpreter +mode**, with each expected message checked. The mathematical mutations run +after authentication; they cannot pass merely because a generic hash check +rejects the modified input. + +The harness also disables only the named receipt-equality gate and only the +named exterior-axis gate in disposable in-memory variants. Their respective +controls then fail with unexpected acceptance outside the caught-exception +path. This establishes that those controls depend on the intended checks. + +Positive controls accept an unchanged complete receipt, its declared +provenance relocation, the unchanged complete compressed word, and the +reversed order of pairwise disjoint projector factors. The latter agrees on +256 basis columns. Equivalent factor ordering is not rejected as if it were +a mathematical defect. + +The compact control command is: + +```sh +python3.12 -I -B controls.py +``` + +The review-local invocation uses `--package /absolute/path/to/package` and +`--output CONTROLS.json`. It does not regenerate the six scientific receipts; +the parent's registered mathematical stages do that. + +## Remaining interfaces + +The accounting obstruction is conditional on the fixed placement, child-rank +contract and named two-N completion. The 888 terminal and 444 FULL-gather +figures are construction bills. The native local circuit premise remains +inherited; changed whole-program source access, terminal owner allocation, +rounded child errors, precision, storage, physical tape and joint outer +transfer remain unadmitted. This review makes no supplier or new-kappa claim. diff --git a/research/r429-controller-accounting/SOURCES.json b/research/r429-controller-accounting/SOURCES.json new file mode 100644 index 0000000000..789b4d3b4d --- /dev/null +++ b/research/r429-controller-accounting/SOURCES.json @@ -0,0 +1,78 @@ +{ + "schema_version": 1, + "base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244", + "files": [ + { + "path": "certificates/selected-result.json", + "git_blob": "b1fea0c94436b236cc2b7d41a7be032811b94c81", + "sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "usage": "provenance" + }, + { + "path": "docs/research/agent-task-catalog.json", + "git_blob": "64bfc5af6709ed9811171e0a2108f05e1219cb65", + "sha256": "352a6184713b8843d96fd2c2071eb7aeaa655906b7c51d45ad444912666c8a96", + "usage": "provenance" + }, + { + "path": "docs/research/research-family-status.md", + "git_blob": "abdd2792e6a5596b3fa6be3dc9db882bd8e3ef89", + "sha256": "0e61c47dfbc6f16e5f64594fcc7d907d4187568e38dddf10d473f0992419c44f", + "usage": "provenance" + }, + { + "path": "research/bit-r438-source-code/README.md", + "git_blob": "e501165027be66b75c60b13ed93377c4a58c1d0c", + "sha256": "f1033297e1156f9fb154a4319bee394a82476195cd2a53d01d93ef7332536d27", + "usage": "provenance" + }, + { + "path": "research/bit-r438-source-code/WORD.json.gz", + "git_blob": "672c41534608d0d812b8020e496177d7c41c8527", + "sha256": "1a6841fccba51fa922993c77b4b296e659c2c538252e5e06113d0438c5edb870", + "usage": "provenance" + }, + { + "path": "research/r438-rank-drop/README.md", + "git_blob": "51a0186d47d66ef3cdab6793a1c4b1d296cae376", + "sha256": "cea212b3b9dc6197bfe50d0e000a8649f460ca589f3869a751e2cb1c4ffb04a4", + "usage": "provenance" + }, + { + "path": "research/r438-rehost-projectors/README.md", + "git_blob": "0ad17349f0bc5798fa49e679755999340f5a7165", + "sha256": "8579e7742e2659ea6b6be4a76049f3f453d83aecf20aac6e785fe4d25afd9ff3", + "usage": "provenance" + }, + { + "path": "research/r438-rehost-projectors/verify.py", + "git_blob": "30b18ceaf5605202ad688e4e2d45b691c8941139", + "sha256": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f", + "usage": "provenance" + }, + { + "path": "research/bit-r438-transport-rehost/verify_rehost.receipt.json", + "git_blob": "c2fb443f44f2c7c420cd367ab5fa12644efe318a", + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "usage": "provenance" + }, + { + "path": "research/r438-native-rehost/CERTIFICATE.json", + "git_blob": "674ef36f723fbcc593e7d2319dca131da09181e5", + "sha256": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c", + "usage": "provenance" + }, + { + "path": "research/bit-r438-transport-rehost/words/r438-t154.json.gz", + "git_blob": "e12a566658a4b2c8b6ae0ecc34fd41290f68f5e8", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "usage": "provenance" + }, + { + "path": "research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz", + "git_blob": "8bec1751f7e33c3a1e4673ef5dbc34d6f205321e", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "usage": "provenance" + } + ] +} diff --git a/research/r429-controller-accounting/TASK.json b/research/r429-controller-accounting/TASK.json new file mode 100644 index 0000000000..c559195efa --- /dev/null +++ b/research/r429-controller-accounting/TASK.json @@ -0,0 +1,96 @@ +{ + "schema_version": 1, + "task_id": "joint-query-controller", + "priority_revision": 7, + "base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244", + "original_card": { + "id": "joint-query-controller", + "question": "Can the installed QQ16 caller win a complete matched protocol bill, or can a changed demand eliminate actual paid work?", + "starting_points": [ + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "research/qq16-caller-install/README.md" + ], + "methods": [ + "Derive the matched whole-caller physical bill for installed and baseline protocols.", + "Change the actual demanded observations and prove a cheaper legal producer/consumer contract." + ], + "acceptance_gate": "Name the changed premise of the fixed F0/B1 observation obstruction. Show exactly which query is recovered, legal native reads and restoration, and a full favorable budget including cover maps, helpers and endpoints. Local inverse identities alone do not close the global controller. 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", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read #4166 COST.md and ADMISSION.json. An actual caller connection is now proposed. Its native-component profile loses; parent park/restore versus external-call costs remain unresolved. Retain the producer and recovery lineage rather than rebuild it.", + "scope": "Source-binding orientation only; no scientific replay, theorem acceptance or supplier admission. Budget any heavy replay separately." + }, + "first_experiment": "At the actual installed cut, compare matched complete parent park/restore and external input/return protocols at the same bank/packet geometry, including every later root call and service cost. Alternatively pin both bridge observations and derive a genuinely smaller source-compatible demand. Stop if the complete necessary inequality fails or an essential cost is unknown; no larger decoder scan from a local tape-action saving.", + "bottleneck_link": "The native local words exist; retained query information and its physical access are the missing link to a composed recursive interface.", + "allowed_variations": [ + "One paid query, one changed first pair, or one precisely specified affine helper state.", + "A counterexample or lower bound for that exact proposed repair.", + "One unresolved obligation of a newer local decoder, with exact source heads and a distinct claim/domain." + ], + "scope_change_triggers": [ + "Retaining the fixed first pair and ordinary schedule while allowing only homogeneous selected-only control, already excluded by the witness.", + "Treating cover-map counts as zero-cost physical address operations.", + "Recreating the pending complete local decoder or early-record/output-bank coalescing already under investigation without a distinct audit or changed premise.", + "Treating a completed-output defect inequality as a producer-interior, dirty-range or physical-cost certificate.", + "Recreating completed-output recovery or caller wiring already supplied by #4166 without new independent coverage.", + "Dropping retained later root calls or claiming native-profile dominance from the isolated publication saving." + ], + "overlap_terms": [ + "QQ16", + "joint-query", + "changing-chart controller", + "selected observation", + "1969", + "2540", + "early record", + "output-bank retention", + "complete native decoder", + "2965", + "producer defect", + "dirty-helper range", + "F17 consumer", + "4166", + "qq16-caller-install" + ], + "existing_checks": [ + { + "scope": "PR #4166: author-checked installed producer/service/return/bridge connection; native-component comparison loses.", + "evidence": "research/qq16-caller-install/README.md", + "remaining": "Complete matched physical protocol bill, or changed source-compatible demand/circuit; no affordable supplier yet.", + "status": "author-checked", + "source_commit": "0b082d22a0e9a442d264ab0633e35ef26c790630", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + } + ] + }, + "scope_status": "changed", + "actual_scope": "Finish the preserved coded R429 alternating-controller boundary: exact returned-owner invoice, uniform paid-profile comparison, known two-N completion failure, and variable-row-section endpoint obstruction with source-bound finite census.", + "scope_change_reason": "Explicit donor assignment to finish unpublished contributions sequentially after review. B02/B03 share the coded alternating controller, but do not implement the current QQ16 card or propose a favorable supplier.", + "bottleneck_link": "The three-snapshot local saving must survive returned idle capacity and removal of the actual coded endpoint.", + "budget_minutes": 240, + "stop_rule": "Complete only the fixed allocation and alternating row-section model. No unbounded decoder search or favorable exponent claim from scalar augmentation rank.", + "outcome": "partial", + "evidence": "PROOF.md, independent owner and section checks, full historical controller/owner receipts, actual native remainder columns and rejecting controls.", + "author": "Ross Richardson", + "ai_assistance": "Substantial OpenAI Codex assistance in original construction, independent mathematical checking contexts and publication. AI review is not human or formal-kernel acceptance.", + "open_questions": [ + { + "question": "Can a changed native decoder remove the actual ordered endpoint for less than the complete available budget?", + "why_it_matters": "The known two-N completion loses despite the cheaper prefix; scalar rank9 does not construct native source/readout access.", + "first_step": "Emit the full arbitrary-input native word at the actual hole cuts, including both endpoint gauges, source access, cleanup and complete paid profile.", + "blocked_by": "No affordable complete native decoder or its physical/precision/recursive admission is supplied." + }, + { + "question": "Can a controller outside the row-section or coverage premises improve the complete supplier?", + "why_it_matters": "The necessary37-stage condition is not a universal controller lower bound.", + "first_step": "State the changed boundary and controller alphabet, then reconstruct all original input columns and the complete owner and child bill.", + "blocked_by": "No changed controller is constructed by this contribution." + } + ] +} diff --git a/research/r429-controller-accounting/VERIFY.json b/research/r429-controller-accounting/VERIFY.json new file mode 100644 index 0000000000..f5c43f98e7 --- /dev/null +++ b/research/r429-controller-accounting/VERIFY.json @@ -0,0 +1,84 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "owner" + ], + "timeout_seconds": 90, + "checks": "Complete original fixed-allocation restriction and full typed receipt; every 123552 retained role and 648 returned idle rank." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "controller" + ], + "timeout_seconds": 180, + "checks": "Original complete generic noncommuting code-controller word, all 111 native charts, preserved borrowing windows and omitted-sweep controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "independent-owner" + ], + "timeout_seconds": 120, + "checks": "Fresh independent physical owner/partition/histogram reconstruction, all-alpha premises and 111 exact original-input gauge witnesses." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py", + "--stage", + "independent-sections" + ], + "timeout_seconds": 180, + "checks": "Fresh independent actual R,K,J reconstruction, all 70626 sections, complete 120-line census, all 511 binary support directions and written-proof controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/native_remainders.py" + ], + "timeout_seconds": 300, + "checks": "Recount actual published local frame/COPY histogram; check all 326784 native ADDRESS columns for 23 changed pending factorizations; wrong-axis and omitted-factor controls. Local VALUE identity remains inherited." + }, + { + "argv": [ + "{python}", + "-I", + "-B", + "{package}/controls.py", + "--package", + "{package}" + ], + "timeout_seconds": 60, + "checks": "Normal and optimized child tests: full real receipt equality/mutation, type/order/coverage, authenticated imports and executable timestamp/unchecked-hash poison controls; deleted-check sensitivity." + } + ] +} diff --git a/research/r429-controller-accounting/controls.py b/research/r429-controller-accounting/controls.py new file mode 100644 index 0000000000..a0196dfc86 --- /dev/null +++ b/research/r429-controller-accounting/controls.py @@ -0,0 +1,335 @@ +#!/usr/bin/env python3 +"""Compact authenticated-source and mathematical control audit. + +Run only disposable fixtures. No large owner census or complete native stage. +Prepared for Ross with substantial OpenAI Codex assistance. Apache-2.0. +""" +import argparse +import copy +import gzip +import hashlib +import importlib.util +import json +import os +from pathlib import Path +import py_compile +import subprocess +import sys +import tempfile +import types + + +HERE = Path(__file__).resolve().parent +DEFAULT_PACKAGE = HERE + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def digest(raw): + return hashlib.sha256(raw).hexdigest() + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(",", ":")) + + +def module_from_bytes(path): + module = types.ModuleType("reviewed_portable") + module.__file__ = str(path) + raw = path.read_bytes() + exec(compile(raw, str(path), "exec", dont_inherit=True, optimize=0), module.__dict__) + return module, digest(raw) + + +def reject(name, action, marker, recorded): + try: + action() + except (ValueError, AssertionError, FileNotFoundError) as error: + need(marker in str(error), f"wrong rejection for {name}: {error}") + recorded.append({"name": name, "reason": str(error)}) + else: + raise ValueError("control accepted: " + name) + + +def fixture(directory, entries, adaptations=None): + root = Path(directory).resolve() + (root / "frozen/old/recursive").mkdir(parents=True, exist_ok=True) + hashes = {} + for name, raw in entries.items(): + target = root / name + target.parent.mkdir(parents=True, exist_ok=True) + target.write_bytes(raw) + hashes[name] = digest(raw) + (root / "FROZEN-SHA256.json").write_text(json.dumps(hashes)) + (root / "ADAPTATIONS.json").write_text(json.dumps(adaptations or {})) + return root + + +def lightweight_checks(v, work): + rejected = [] + old = "/Users/ross/git/math/integer-mult-bounds/" + entries = { + "frozen/source.py": b'assert False, "DIRECT_SOURCE_ASSERT"\n', + "frozen/data.json": b'{"n":1,"flag":true,"nested":{"all":[1,2,3]},"path":"' + + old.encode() + b'research/example.json"}\n', + "frozen/word.json.gz": gzip.compress(b'{"ordered":[1,2,3]}\n', mtime=0), + } + root = fixture(work / "basic", entries) + p = v.Portable(root) + p.check_all() + data = json.loads(entries["frozen/data.json"]) + need(p.equal(root / "frozen/data.json", data), "unchanged receipt") + relocated = dict(data, path=str(root / "frozen/upstream/research/example.json")) + need(p.equal(root / "frozen/data.json", relocated), "provenance relocation") + need(p.word_equal(root / "frozen/word.json.gz", b'{"ordered":[1,2,3]}\n'), + "unchanged complete word") + reject("boolean_for_integer", lambda: p.equal( + root / "frozen/data.json", dict(data, n=True)), "receipt mismatch", rejected) + reject("float_for_integer", lambda: p.equal( + root / "frozen/data.json", dict(data, n=1.0)), "receipt mismatch", rejected) + reject("integer_for_boolean", lambda: p.equal( + root / "frozen/data.json", dict(data, flag=1)), "receipt mismatch", rejected) + reject("omitted_nested_field", lambda: p.equal( + root / "frozen/data.json", dict(data, nested={})), "receipt mismatch", rejected) + reject("reordered_list", lambda: p.equal( + root / "frozen/data.json", dict(data, nested={"all": [3, 2, 1]})), + "receipt mismatch", rejected) + reject("missing_receipt", lambda: p.equal(root / "frozen/absent.json", data), + "unregistered frozen input", rejected) + reject("changed_word_bytes", lambda: p.word_equal( + root / "frozen/word.json.gz", b'{"ordered":[1,3,2]}\n'), + "complete word/geometry mismatch", rejected) + reject("normalized_key_collision", lambda: p.normalize({ + old + "research/example.json": 1, + str(root / "frozen/upstream/research/example.json"): 2}), + "normalized key collision", rejected) + reject("direct_assert_under_parent_flags", lambda: exec( + p.code(root / "frozen/source.py"), {}), + "DIRECT_SOURCE_ASSERT", rejected) + (root / "frozen/source.py").write_bytes(b"pass\n") + reject("source_changed", lambda: p.code(root / "frozen/source.py"), + "frozen input changed", rejected) + (root / "frozen/source.py").unlink() + reject("missing_registered_source", p.check_all, "source.py", rejected) + (root / "frozen/source.py").write_bytes(entries["frozen/source.py"]) + p.patches["frozen/source.py"] = [{"old": "absent", "new": "pass"}] + reject("adaptation_not_unique", p.check_all, "adaptation no longer unique", rejected) + p.patches = {"frozen/unbound.py": []} + reject("unbound_adaptation", p.check_all, "unbound adaptation", rejected) + p.patches = {} + + # Disable only the receipt equality gate. The rejection harness must now + # fail outside its caught-error branch; unrelated hashes still match. + original_need = v.need + try: + v.need = lambda ok, message: ( + None if message.startswith("receipt mismatch") else original_need(ok, message)) + try: + reject("removed_receipt_gate", lambda: p.equal( + root / "frozen/data.json", dict(data, n=True)), + "receipt mismatch", []) + except ValueError as error: + need(str(error) == "control accepted: removed_receipt_gate", + "receipt control sensitivity") + else: + raise ValueError("receipt control did not notice its deleted check") + finally: + v.need = original_need + return rejected + + +def nested_cache_check(v, work, mode): + name = "frozen_fixture_inner_" + mode + auth = b'assert False, "NESTED_SOURCE_ASSERT"\n' + poison = b"CACHE_RAN = True\n" + poison += b"#" + b"x" * (len(auth) - len(poison) - 2) + b"\n" + need(len(auth) == len(poison), "same-size poisoned source") + root = fixture(work / mode, { + f"frozen/old/recursive/{name}.py": auth, + "frozen/outer.py": f"import {name}\n".encode(), + }) + inner = root / f"frozen/old/recursive/{name}.py" + poison_path = root / "poison.py" + poison_path.write_bytes(poison) + stat = inner.stat() + os.utime(poison_path, ns=(stat.st_atime_ns, stat.st_mtime_ns)) + cache = Path(importlib.util.cache_from_source(str(inner))) + cache.parent.mkdir(parents=True, exist_ok=True) + invalidation = (py_compile.PycInvalidationMode.TIMESTAMP if mode == "timestamp" + else py_compile.PycInvalidationMode.UNCHECKED_HASH) + py_compile.compile(str(poison_path), cfile=str(cache), dfile=str(inner), + doraise=True, optimize=sys.flags.optimize, + invalidation_mode=invalidation) + # Establish that this is a usable poison, not a stale/inert .pyc. + spec = importlib.util.spec_from_file_location("poison_baseline_" + mode, inner) + baseline = importlib.util.module_from_spec(spec) + spec.loader.exec_module(baseline) + need(baseline.CACHE_RAN is True, "ordinary loader did not consume poison") + p = v.Portable(root) + p.check_all() + p.install() + rejected = [] + reject("nested_" + mode + "_pyc_bypass", lambda: p.load("frozen/outer.py"), + "NESTED_SOURCE_ASSERT", rejected) + need(f"frozen/old/recursive/{name}.py" in p.executed, "nested source not recorded") + return {"poison_was_executable": True, "rejection": rejected[0]} + + +def small_math_checks(v, package, work): + p = v.Portable(package) + p.check_all() + p.install() + m = p.load("frozen/upstream/research/r438-rehost-projectors/verify.py") + m.source_check() + q = [2, 0, 0, 0, 0, 0, 0, 0] + target = m.QPERP | (1 << 8) | (1 << 9) + parts = (m.QPERP, 1 << 8, 1 << 9) + m.factorization(parts, target) + m.factorization(tuple(reversed(parts)), target) + need(m.operator_check([q], {(target, parts), (target, tuple(reversed(parts)))}) == 256, + "equivalent factor order") + rejected = [] + reject("missing_pending_axis", lambda: m.factorization(parts[:-1], target), + "wrong pending operator", rejected) + reject("overlapping_factor", lambda: m.factorization(parts + (1 << 8,), target), + "overlapping factors", rejected) + wrong = (m.QPERP, 1 << 8, 1 << 10) + need(sum(x.bit_count() for x in wrong) == target.bit_count(), "equal-rank mutant") + reject("equal_rank_wrong_axis", lambda: m.operator_check([q], {(target, wrong)}), + "exterior address operator", rejected) + original = m.require + try: + m.require = lambda ok, message: ( + None if message == "exterior address operator" else original(ok, message)) + try: + reject("removed_axis_gate", lambda: m.operator_check([q], {(target, wrong)}), + "exterior address operator", []) + except ValueError as error: + need(str(error) == "control accepted: removed_axis_gate", + "mathematical control sensitivity") + else: + raise ValueError("mathematical control did not notice its deleted check") + finally: + m.require = original + # Exercise the actual extracted-function path with an authenticated assert + # fixture, so -O cannot turn the advertised AST preservation into a no-op. + ast_root = fixture(work / "ast", { + "frozen/upstream/probe.py": + b'def probe():\n assert False, "AST_SOURCE_ASSERT"\n', + }) + ast_portable = v.Portable(ast_root) + original_root, original_portable = m.ROOT, m.PORTABLE + try: + m.ROOT = ast_root / "frozen/upstream" + m.PORTABLE = ast_portable + reject("extracted_ast_assert", lambda: m.function("probe.py", "probe")(), + "AST_SOURCE_ASSERT", rejected) + (m.ROOT / "probe.py").write_bytes(b"def probe():\n return True\n") + reject("extracted_ast_changed_source", lambda: m.function("probe.py", "probe")(), + "frozen input changed", rejected) + finally: + m.ROOT, m.PORTABLE = original_root, original_portable + return {"equivalent_factor_columns": 256, "rejections": rejected, + "deleted_named_check_detected": True} + + +def real_receipt_checks(v, package): + """Exercise full equality on every registered stage receipt, without regeneration.""" + p = v.Portable(package) + names = {name for _, receipts in v.STAGES.values() for name in receipts} + if "NATIVE-REMAINDERS.json" in p.hashes: + names.add("NATIVE-REMAINDERS.json") + result = [] + + def leaves(value, prefix=()): + if isinstance(value, dict): + for key in sorted(value): + yield from leaves(value[key], prefix + (key,)) + elif isinstance(value, list): + for index, item in enumerate(value): + yield from leaves(item, prefix + (index,)) + else: + yield prefix, value + + for name in sorted(names): + raw = p.authenticate(package / name) + value = json.loads(raw) + need(p.equal(package / name, copy.deepcopy(value)), "complete real receipt") + path, old = max(leaves(value), key=lambda item: len(item[0])) + need(len(path) > 1, "real receipt has no nested coverage") + changed = copy.deepcopy(value) + parent = changed + for key in path[:-1]: + parent = parent[key] + if type(old) is bool: + parent[path[-1]] = not old + elif type(old) is int: + parent[path[-1]] = old + 1 + elif type(old) is str: + parent[path[-1]] = old + "-MUTATED" + else: + parent[path[-1]] = {"mutation": True} + rejected = [] + reject("nested_real_receipt_mutation", lambda: p.equal(package / name, changed), + "receipt mismatch", rejected) + omitted = copy.deepcopy(value) + parent = omitted + for key in path[:-1]: + parent = parent[key] + del parent[path[-1]] + reject("nested_real_receipt_omission", lambda: p.equal(package / name, omitted), + "receipt mismatch", rejected) + result.append({"receipt": name, "sha256": digest(raw), + "deep_path": list(path), "rejections": rejected}) + return result + + +def run_child(package): + v, source_hash = module_from_bytes(package / "verify.py") + with tempfile.TemporaryDirectory(prefix="b02-control-fixtures-") as temporary: + work = Path(temporary) + ordinary = lightweight_checks(v, work) + caches = {mode: nested_cache_check(v, work, mode) + for mode in ("timestamp", "unchecked_hash")} + math = small_math_checks(v, package, work) + receipts = real_receipt_checks(v, package) + return {"parent_optimization": sys.flags.optimize, "verifier_sha256": source_hash, + "compact_rejections": ordinary, "nested_cache_controls": caches, + "mathematical_controls": math, + "complete_real_receipt_controls": receipts, + "receipt_check_deletion_detected": True} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--package", type=Path, default=DEFAULT_PACKAGE) + parser.add_argument("--child", action="store_true") + parser.add_argument("--output", type=Path) + args = parser.parse_args() + package = args.package.resolve() + if args.child: + print(canonical(run_child(package))) + return + runs = [] + for optimized in (False, True): + command = [sys.executable, "-I", "-B"] + if optimized: + command.append("-O") + command += [str(Path(__file__).resolve()), "--package", str(package), "--child"] + proc = subprocess.run(command, capture_output=True, text=True) + need(proc.returncode == 0, proc.stderr + proc.stdout) + runs.append(json.loads(proc.stdout)) + raw = (package / "FROZEN-SHA256.json").read_bytes() + result = {"status": "PASS_COMPACT_B02_SOURCE_AND_CONTROL_AUDIT", + "package": str(package), "frozen_manifest_sha256": digest(raw), + "runs": runs, "no_large_mathematical_replay": True, "no_new_kappa": True} + if args.output: + args.output.write_text(json.dumps(result, sort_keys=True, indent=2) + "\n") + print(canonical(result)) + + +if __name__ == "__main__": + main() diff --git a/research/r429-controller-accounting/frozen/old/recursive/BIT-CODE-INPUT.json b/research/r429-controller-accounting/frozen/old/recursive/BIT-CODE-INPUT.json new file mode 100644 index 0000000000..b91851a201 --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/BIT-CODE-INPUT.json @@ -0,0 +1,766 @@ +{ + "credits": "Helper-boundary worker produced the local construction; recursive worker consumes the matrices for independent native/controller proof.", + "matrices": { + "H": [ + 1036415283661483055370725603511566, + 1070162718833860655252415705677972, + 913915497657147954176671388951646, + 576460752303423479, + 1674505857799009492785444438825909, + 309485009244884317495099359, + 10140895326260170442259558318015, + 2586086145551572543258365643440255, + 1526540145583431110673909446000278, + 1040476903838139702513783528667801, + 2592757506467882867942327749505385, + 2589350696924854570449116603662953, + 2592757607046729626097202769225065, + 2589398046688157573239251990943081, + 1070162880113253823957019113734294, + 872127581635430275692856302967978, + 1734082824753018225619070127219626, + 872080229941564978246942081967018, + 1734082638102400486742802049377194, + 872080416603461748079412450059178, + 1734129989784902589838982619225258, + 872127767322601782224528012057770, + 1727411440318023397244010205189692, + 1730818316584958295536456233036092, + 865409096642019473566534911481404, + 868815842344965628299048312465724, + 1730818250503269321255597434906940, + 1727411504793977486514998242612796, + 868815908432870002457488389400892, + 865409032159589424156957136475708, + 1070162718833860655252414631936150, + 521289741389326929135848345773260, + 2074874778680810587002010371677132, + 521273956203100808511232534174668, + 2072878290888070053094984619596748, + 523270444007074256637602259213260, + 2072894076062932979370040723563724, + 523254661710936423529209318401228, + 2076939870114869318455535043620442, + 2070839202466181082725842274750810, + 519208660696083532087046669348442, + 525309130074591671054823598068058, + 2076913464757075216842810317853018, + 2070812995372221397883440020581978, + 519234867789959053610134593065306, + 525335535432301609385342510820954, + 1040477090824847938641120621672601, + 1557678348740587315422543376644249, + 1555671525429274415289046754834585, + 1040450598424477833956020544161689, + 1555697645480573934758181972035481, + 1038496385959229956686199488153497, + 1036415348463713915987060390989071, + 1559717362350266569457138779189775, + 1553616728556518518103859291114767, + 1553632511808493436610737168036367, + 1559733145605930584577179433667855, + 1036431132679051268236573095129615, + 1042531635912499996902255866825999, + 1529532302407315612232278352442624, + 153311153807439872482697688135920, + 153381061151871645922135271262192, + 2435152141571032296831911913588720, + 160996287696368250945970177312752, + 2435082234226561323937622632167664, + 161066195040797725438535476181232, + 2436839364805697551520070573952358, + 2441080144874030676477440684772710, + 2436881146555144115750106525659750, + 155110066145707204895318291460710, + 159309064460461694903411553799526, + 155068284390874191395430580669798, + 159267282707252382191578237432422, + 921600628986554049220172345615525, + 1682191151535119421842017996924069, + 921642409864502096000228197292965, + 1682232931534707996362662452239269, + 1674547800120299651826471254205605, + 913957277411173124529028742931621, + 1674506018760669530239658887633829, + 913915496448222481057609187695525, + 919913369774626757624573998837299, + 1680503778976952268902256777719347, + 1676304630755838562290390870348083, + 1676235037732122190192959896858163, + 1680434060224950656924623320813875, + 915644568083505924911912553377331, + 919843634097663672590244470411571, + 613258455012551051935980706536643, + 1982889317737070288973385274694851, + 613271454662945717308722385052611, + 1982873535281552587068141812638659, + 1982884713009696305588313795796163, + 613248589040009093434313723026627, + 1982855929623799733803660893807555, + 613232804024526035955953525908419, + 616739979317472700226294587053653, + 610084907965218710579626836486485, + 1979012216963470485452010633025109, + 1985271336101041249538680574437717, + 1978061571187198456537696014685781, + 1983369763776710285739684119177557, + 611748697252973517619043237877333, + 1059466916186105936643779914809238, + 1505680090170857789839556165861270, + 1485975326376127769826014943428502, + 989056453791076342151881663283094, + 1364281031450268375981883671625622, + 745667375834477930338916844797846, + 420571176367129553061060905975702, + 227888122428023580164624009756566 + ], + "J": [ + 10141204792381678636617894477822, + 2586086450219622122178300732227837, + 2596069203522677974138045681631483, + 576460752303423479, + 2596069508172130947062333349822703, + 309485009244884317495099359, + 10140895326260170442259558318015, + 2586086145551572543258365643440255, + 2589398147263233519358262897489001, + 2592804859121274158248396097259625, + 2592757506467882867942327749505385, + 2589350696924854570449116603662953, + 2592757607046729626097202769225065, + 2589398046688157573239251990943081, + 1734130175483521454113919338159274, + 872127581635430275692856302967978, + 1734082824753018225619070127219626, + 872080229941564978246942081967018, + 1734082638102400486742802049377194, + 872080416603461748079412450059178, + 1734129989784902589838982619225258, + 872127767322601782224528012057770, + 1727411440318023397244010205189692, + 1730818316584958295536456233036092, + 865409096642019473566534911481404, + 868815842344965628299048312465724, + 1730818250503269321255597434906940, + 1727411504793977486514998242612796, + 868815908432870002457488389400892, + 865409032159589424156957136475708, + 2074858996396035948243032183350476, + 521289741389326929135848345773260, + 2074874778680810587002010371677132, + 521273956203100808511232534174668, + 2072878290888070053094984619596748, + 523270444007074256637602259213260, + 2072894076062932979370040723563724, + 523254661710936423529209318401228, + 2076939870114869318455535043620442, + 2070839202466181082725842274750810, + 519208660696083532087046669348442, + 525309130074591671054823598068058, + 2076913464757075216842810317853018, + 2070812995372221397883440020581978, + 519234867789959053610134593065306, + 525335535432301609385342510820954, + 1040477090824847938641120621672601, + 1557678348740587315422543376644249, + 1555671525429274415289046754834585, + 1040450598424477833956020544161689, + 1555697645480573934758181972035481, + 1038496385959229956686199488153497, + 1036415348463713915987060390989071, + 1559717362350266569457138779189775, + 1553616728556518518103859291114767, + 1553632511808493436610737168036367, + 1559733145605930584577179433667855, + 1036431132679051268236573095129615, + 1042531635912499996902255866825999, + 2442837275459972787867604775352560, + 153311153807439872482697688135920, + 153381061151871645922135271262192, + 2435152141571032296831911913588720, + 160996287696368250945970177312752, + 2435082234226561323937622632167664, + 161066195040797725438535476181232, + 2436839364805697551520070573952358, + 2441080144874030676477440684772710, + 2436881146555144115750106525659750, + 155110066145707204895318291460710, + 159309064460461694903411553799526, + 155068284390874191395430580669798, + 159267282707252382191578237432422, + 921600628986554049220172345615525, + 1682191151535119421842017996924069, + 921642409864502096000228197292965, + 1682232931534707996362662452239269, + 1674547800120299651826471254205605, + 913957277411173124529028742931621, + 1674506018760669530239658887633829, + 913915496448222481057609187695525, + 919913369774626757624573998837299, + 1680503778976952268902256777719347, + 1676304630755838562290390870348083, + 1676235037732122190192959896858163, + 1680434060224950656924623320813875, + 915644568083505924911912553377331, + 919843634097663672590244470411571, + 613258455012551051935980706536643, + 1982889317737070288973385274694851, + 613271454662945717308722385052611, + 1982873535281552587068141812638659, + 1982884713009696305588313795796163, + 613248589040009093434313723026627, + 1982855929623799733803660893807555, + 613232804024526035955953525908419, + 616739979317472700226294587053653, + 610084907965218710579626836486485, + 1979012216963470485452010633025109, + 1985271336101041249538680574437717, + 1978061571187198456537696014685781, + 1983369763776710285739684119177557, + 611748697252973517619043237877333, + 1059466916186105936643779914809238, + 1505680090170857789839556165861270, + 1485975326376127769826014943428502, + 989056453791076342151881663283094, + 1364281031450268375981883671625622, + 745667375834477930338916844797846, + 420571176367129553061060905975702, + 227888122428023580164624009756566 + ], + "K": [ + 496, + 22, + 511, + 25, + 21, + 499, + 26, + 508, + 118, + 488, + 415, + 491, + 117, + 412, + 217, + 161, + 174, + 214, + 324, + 316, + 307, + 331, + 295, + 185, + 351, + 193, + 339, + 205, + 299, + 181, + 179, + 290, + 196, + 341, + 199, + 342, + 176, + 289, + 164, + 314, + 309, + 171, + 313, + 167, + 168, + 310, + 493, + 405, + 124, + 112, + 481, + 409, + 398, + 104, + 502, + 385, + 31, + 505, + 103, + 445, + 454, + 91, + 457, + 434, + 84, + 47, + 478, + 55, + 425, + 59, + 421, + 76, + 466, + 265, + 369, + 382, + 262, + 370, + 266, + 261, + 381, + 286, + 358, + 248, + 357, + 251, + 285, + 131, + 138, + 283, + 253, + 364, + 241, + 352, + 134, + 279, + 372, + 234, + 229, + 379, + 271, + 145, + 158, + 475, + 419, + 74, + 50, + 416, + 472, + 49, + 73 + ], + "L": [ + 404, + 441, + 155, + 250, + 60, + 495, + 156, + 284, + 480 + ], + "M": [ + 507, + 135, + 238, + 349, + 185, + 437, + 205, + 503, + 425 + ], + "Q": [ + 1042531700710895278146990364013296, + 1526540308279482042409494624157801, + 1682190989137900326552069994865829, + 0, + 921600791422035497542574462622554, + 0, + 0, + 0, + 1073178137525049858492988477770495, + 1553616728556518638350079291405040, + 0, + 0, + 0, + 0, + 1982335066357198573061492811291708, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1674506019365132786402062805607514, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1036431132679051517257484991041008, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "R": [ + 2589350794613531190557368506174057, + 2592804956806343667382164200032873, + 1038469893558777993237266185156761, + 1557652228689369648595160641472409, + 1042515851693473237291206096564751, + 2442767368115540430947582893869040, + 2441038363121116511671115291243110, + 915714330356837041509315611365683, + 610243267866258280493576590715221 + ], + "S": [ + 225, + 417, + 201, + 313, + 295, + 120, + 38, + 155, + 477 + ], + "Sinv": [ + 43, + 161, + 290, + 454, + 93, + 451, + 120, + 401, + 123 + ], + "T": [ + 27005497495235163711001915436751240971677696135583288063766105706741579349310975170977082948942593034384124170753551160675481188779711399536295168442368, + 99908190091605275632239339970067680019025367132750467940474644816037907458865055880235350688074091478051108014408377611232016771727974627469688832, + 1047485394135065443701623255477489686632900077964060675229960310755451710304162005590749808296242139432591743315085120421899491529363474656816214482878464, + 602682472698635789189888055095636197443107236501843914049228400711488945430140662080641369573760331853909812515739447229904791375442680104964156565834251437153072162671017925167165660673606252756992, + 303677223771925211869821961499258626139535698675484016411989774562373671494307716063921552388791132727552768090312503330786376453984345060603923931266689200009623174057113476304298929314687141019648, + 195194365245495944341481261648073133572272862542897794273962501187786691073452317586459236497369227146247256772850199570885305773971564910346240, + 153440575038873008775847884525688865377116183929077964643622146651043456106538639598586961160921726666127842979817829493558944440647077319627700699136, + 1190798115349103470973311495128572162797837538415636639484312584265092871256278683061697763835180016622930471255437754230992768369543986881336108577539859005763750014662387950455054490024674328576, + 149538558243127962978343484314617283296404579323300179069569778163640793172893178962494986617351731137183080863871478297665119566826946855470192458922019698658109399803249885175158439247145093562368 + ], + "U": [ + 404, + 441, + 155, + 0, + 250, + 0, + 0, + 0, + 60, + 495, + 0, + 0, + 0, + 0, + 156, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 284, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 480, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "W": [ + 100, + 431, + 356, + 25, + 239, + 499, + 26, + 508, + 74, + 7, + 415, + 491, + 117, + 412, + 69, + 161, + 174, + 214, + 324, + 316, + 307, + 331, + 295, + 185, + 351, + 193, + 339, + 205, + 299, + 181, + 431, + 290, + 196, + 341, + 199, + 342, + 176, + 289, + 164, + 314, + 309, + 171, + 313, + 167, + 168, + 310, + 493, + 405, + 124, + 112, + 481, + 409, + 398, + 104, + 502, + 385, + 31, + 505, + 103, + 93, + 454, + 91, + 457, + 434, + 84, + 47, + 478, + 55, + 425, + 59, + 421, + 76, + 466, + 265, + 369, + 382, + 262, + 370, + 266, + 261, + 381, + 286, + 358, + 248, + 357, + 251, + 285, + 131, + 138, + 283, + 253, + 364, + 241, + 352, + 134, + 279, + 372, + 234, + 229, + 379, + 271, + 145, + 158, + 475, + 419, + 74, + 50, + 416, + 472, + 49, + 73 + ], + "selected": [ + 0, + 1, + 2, + 4, + 8, + 9, + 14, + 30, + 59 + ] + }, + "producer": "/Users/ross/git/math/.research-automation/runs/kappa-3605-successor-20261018T0940Z/major-frontier/helper-boundary/BIT-TRANSVECTION.json", + "producer_receipt_sha256_at_snapshot": "fcfa9a35ea971b8f2e5344e5ac21be412d5d60ccee7c24c6ee7faa9866ab859e", + "schema": "bit-code-matrix-input-v1", + "source_gzip_sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "source_pin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "source_word": "/Users/ross/git/math/integer-mult-bounds/research/bit-r438-transport-rehost/words/r438-t154.json.gz" +} diff --git a/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json b/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json new file mode 100644 index 0000000000..19e4a9e5fa --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER-WORD.json @@ -0,0 +1,26017 @@ +{ + "inplace_code_CNOTs": [ + [ + 105, + 110 + ], + [ + 104, + 110 + ], + [ + 102, + 110 + ], + [ + 97, + 110 + ], + [ + 96, + 110 + ], + [ + 95, + 110 + ], + [ + 93, + 110 + ], + [ + 90, + 110 + ], + [ + 88, + 110 + ], + [ + 87, + 110 + ], + [ + 86, + 110 + ], + [ + 81, + 110 + ], + [ + 80, + 110 + ], + [ + 78, + 110 + ], + [ + 75, + 110 + ], + [ + 73, + 110 + ], + [ + 68, + 110 + ], + [ + 67, + 110 + ], + [ + 66, + 110 + ], + [ + 64, + 110 + ], + [ + 62, + 110 + ], + [ + 59, + 110 + ], + [ + 56, + 110 + ], + [ + 55, + 110 + ], + [ + 54, + 110 + ], + [ + 53, + 110 + ], + [ + 50, + 110 + ], + [ + 48, + 110 + ], + [ + 47, + 110 + ], + [ + 45, + 110 + ], + [ + 44, + 110 + ], + [ + 41, + 110 + ], + [ + 40, + 110 + ], + [ + 37, + 110 + ], + [ + 35, + 110 + ], + [ + 33, + 110 + ], + [ + 31, + 110 + ], + [ + 29, + 110 + ], + [ + 28, + 110 + ], + [ + 25, + 110 + ], + [ + 24, + 110 + ], + [ + 21, + 110 + ], + [ + 19, + 110 + ], + [ + 17, + 110 + ], + [ + 15, + 110 + ], + [ + 13, + 110 + ], + [ + 12, + 110 + ], + [ + 11, + 110 + ], + [ + 10, + 110 + ], + [ + 8, + 110 + ], + [ + 7, + 110 + ], + [ + 2, + 110 + ], + [ + 106, + 109 + ], + [ + 103, + 109 + ], + [ + 102, + 109 + ], + [ + 97, + 109 + ], + [ + 96, + 109 + ], + [ + 95, + 109 + ], + [ + 93, + 109 + ], + [ + 90, + 109 + ], + [ + 88, + 109 + ], + [ + 85, + 109 + ], + [ + 84, + 109 + ], + [ + 83, + 109 + ], + [ + 82, + 109 + ], + [ + 79, + 109 + ], + [ + 77, + 109 + ], + [ + 76, + 109 + ], + [ + 74, + 109 + ], + [ + 68, + 109 + ], + [ + 67, + 109 + ], + [ + 66, + 109 + ], + [ + 64, + 109 + ], + [ + 62, + 109 + ], + [ + 58, + 109 + ], + [ + 57, + 109 + ], + [ + 52, + 109 + ], + [ + 51, + 109 + ], + [ + 49, + 109 + ], + [ + 46, + 109 + ], + [ + 45, + 109 + ], + [ + 44, + 109 + ], + [ + 41, + 109 + ], + [ + 40, + 109 + ], + [ + 37, + 109 + ], + [ + 35, + 109 + ], + [ + 33, + 109 + ], + [ + 31, + 109 + ], + [ + 30, + 109 + ], + [ + 27, + 109 + ], + [ + 26, + 109 + ], + [ + 23, + 109 + ], + [ + 22, + 109 + ], + [ + 20, + 109 + ], + [ + 18, + 109 + ], + [ + 16, + 109 + ], + [ + 14, + 109 + ], + [ + 13, + 109 + ], + [ + 12, + 109 + ], + [ + 11, + 109 + ], + [ + 10, + 109 + ], + [ + 9, + 109 + ], + [ + 7, + 109 + ], + [ + 4, + 109 + ], + [ + 1, + 109 + ], + [ + 0, + 109 + ], + [ + 106, + 108 + ], + [ + 103, + 108 + ], + [ + 101, + 108 + ], + [ + 100, + 108 + ], + [ + 99, + 108 + ], + [ + 98, + 108 + ], + [ + 94, + 108 + ], + [ + 92, + 108 + ], + [ + 91, + 108 + ], + [ + 89, + 108 + ], + [ + 87, + 108 + ], + [ + 86, + 108 + ], + [ + 81, + 108 + ], + [ + 80, + 108 + ], + [ + 78, + 108 + ], + [ + 75, + 108 + ], + [ + 73, + 108 + ], + [ + 68, + 108 + ], + [ + 67, + 108 + ], + [ + 66, + 108 + ], + [ + 64, + 108 + ], + [ + 62, + 108 + ], + [ + 58, + 108 + ], + [ + 57, + 108 + ], + [ + 52, + 108 + ], + [ + 51, + 108 + ], + [ + 49, + 108 + ], + [ + 46, + 108 + ], + [ + 43, + 108 + ], + [ + 42, + 108 + ], + [ + 39, + 108 + ], + [ + 38, + 108 + ], + [ + 36, + 108 + ], + [ + 34, + 108 + ], + [ + 32, + 108 + ], + [ + 30, + 108 + ], + [ + 29, + 108 + ], + [ + 28, + 108 + ], + [ + 25, + 108 + ], + [ + 24, + 108 + ], + [ + 21, + 108 + ], + [ + 19, + 108 + ], + [ + 17, + 108 + ], + [ + 15, + 108 + ], + [ + 14, + 108 + ], + [ + 13, + 108 + ], + [ + 12, + 108 + ], + [ + 11, + 108 + ], + [ + 10, + 108 + ], + [ + 9, + 108 + ], + [ + 7, + 108 + ], + [ + 2, + 108 + ], + [ + 1, + 108 + ], + [ + 0, + 108 + ], + [ + 109, + 108 + ], + [ + 108, + 109 + ], + [ + 109, + 108 + ], + [ + 105, + 107 + ], + [ + 104, + 107 + ], + [ + 101, + 107 + ], + [ + 100, + 107 + ], + [ + 99, + 107 + ], + [ + 98, + 107 + ], + [ + 94, + 107 + ], + [ + 92, + 107 + ], + [ + 91, + 107 + ], + [ + 89, + 107 + ], + [ + 85, + 107 + ], + [ + 84, + 107 + ], + [ + 83, + 107 + ], + [ + 82, + 107 + ], + [ + 79, + 107 + ], + [ + 77, + 107 + ], + [ + 76, + 107 + ], + [ + 74, + 107 + ], + [ + 68, + 107 + ], + [ + 67, + 107 + ], + [ + 66, + 107 + ], + [ + 64, + 107 + ], + [ + 62, + 107 + ], + [ + 59, + 107 + ], + [ + 56, + 107 + ], + [ + 55, + 107 + ], + [ + 54, + 107 + ], + [ + 53, + 107 + ], + [ + 50, + 107 + ], + [ + 48, + 107 + ], + [ + 47, + 107 + ], + [ + 43, + 107 + ], + [ + 42, + 107 + ], + [ + 39, + 107 + ], + [ + 38, + 107 + ], + [ + 36, + 107 + ], + [ + 34, + 107 + ], + [ + 32, + 107 + ], + [ + 27, + 107 + ], + [ + 26, + 107 + ], + [ + 23, + 107 + ], + [ + 22, + 107 + ], + [ + 20, + 107 + ], + [ + 18, + 107 + ], + [ + 16, + 107 + ], + [ + 13, + 107 + ], + [ + 12, + 107 + ], + [ + 11, + 107 + ], + [ + 10, + 107 + ], + [ + 8, + 107 + ], + [ + 7, + 107 + ], + [ + 4, + 107 + ], + [ + 110, + 107 + ], + [ + 107, + 110 + ], + [ + 110, + 107 + ], + [ + 109, + 106 + ], + [ + 108, + 106 + ], + [ + 102, + 106 + ], + [ + 97, + 106 + ], + [ + 96, + 106 + ], + [ + 95, + 106 + ], + [ + 93, + 106 + ], + [ + 90, + 106 + ], + [ + 88, + 106 + ], + [ + 87, + 106 + ], + [ + 86, + 106 + ], + [ + 81, + 106 + ], + [ + 80, + 106 + ], + [ + 78, + 106 + ], + [ + 75, + 106 + ], + [ + 73, + 106 + ], + [ + 72, + 106 + ], + [ + 71, + 106 + ], + [ + 70, + 106 + ], + [ + 69, + 106 + ], + [ + 65, + 106 + ], + [ + 63, + 106 + ], + [ + 61, + 106 + ], + [ + 60, + 106 + ], + [ + 56, + 106 + ], + [ + 55, + 106 + ], + [ + 54, + 106 + ], + [ + 53, + 106 + ], + [ + 50, + 106 + ], + [ + 48, + 106 + ], + [ + 47, + 106 + ], + [ + 43, + 106 + ], + [ + 42, + 106 + ], + [ + 39, + 106 + ], + [ + 38, + 106 + ], + [ + 36, + 106 + ], + [ + 34, + 106 + ], + [ + 32, + 106 + ], + [ + 30, + 106 + ], + [ + 27, + 106 + ], + [ + 26, + 106 + ], + [ + 23, + 106 + ], + [ + 22, + 106 + ], + [ + 20, + 106 + ], + [ + 18, + 106 + ], + [ + 16, + 106 + ], + [ + 14, + 106 + ], + [ + 13, + 106 + ], + [ + 12, + 106 + ], + [ + 11, + 106 + ], + [ + 10, + 106 + ], + [ + 7, + 106 + ], + [ + 2, + 106 + ], + [ + 1, + 106 + ], + [ + 110, + 105 + ], + [ + 107, + 105 + ], + [ + 102, + 105 + ], + [ + 97, + 105 + ], + [ + 96, + 105 + ], + [ + 95, + 105 + ], + [ + 93, + 105 + ], + [ + 90, + 105 + ], + [ + 88, + 105 + ], + [ + 85, + 105 + ], + [ + 84, + 105 + ], + [ + 83, + 105 + ], + [ + 82, + 105 + ], + [ + 79, + 105 + ], + [ + 77, + 105 + ], + [ + 76, + 105 + ], + [ + 74, + 105 + ], + [ + 72, + 105 + ], + [ + 71, + 105 + ], + [ + 70, + 105 + ], + [ + 69, + 105 + ], + [ + 65, + 105 + ], + [ + 63, + 105 + ], + [ + 61, + 105 + ], + [ + 60, + 105 + ], + [ + 59, + 105 + ], + [ + 58, + 105 + ], + [ + 57, + 105 + ], + [ + 52, + 105 + ], + [ + 51, + 105 + ], + [ + 49, + 105 + ], + [ + 46, + 105 + ], + [ + 43, + 105 + ], + [ + 42, + 105 + ], + [ + 39, + 105 + ], + [ + 38, + 105 + ], + [ + 36, + 105 + ], + [ + 34, + 105 + ], + [ + 32, + 105 + ], + [ + 29, + 105 + ], + [ + 28, + 105 + ], + [ + 25, + 105 + ], + [ + 24, + 105 + ], + [ + 21, + 105 + ], + [ + 19, + 105 + ], + [ + 17, + 105 + ], + [ + 15, + 105 + ], + [ + 13, + 105 + ], + [ + 12, + 105 + ], + [ + 11, + 105 + ], + [ + 10, + 105 + ], + [ + 9, + 105 + ], + [ + 8, + 105 + ], + [ + 7, + 105 + ], + [ + 4, + 105 + ], + [ + 0, + 105 + ], + [ + 110, + 104 + ], + [ + 107, + 104 + ], + [ + 101, + 104 + ], + [ + 100, + 104 + ], + [ + 99, + 104 + ], + [ + 98, + 104 + ], + [ + 94, + 104 + ], + [ + 92, + 104 + ], + [ + 91, + 104 + ], + [ + 89, + 104 + ], + [ + 87, + 104 + ], + [ + 86, + 104 + ], + [ + 81, + 104 + ], + [ + 80, + 104 + ], + [ + 78, + 104 + ], + [ + 75, + 104 + ], + [ + 73, + 104 + ], + [ + 72, + 104 + ], + [ + 71, + 104 + ], + [ + 70, + 104 + ], + [ + 69, + 104 + ], + [ + 65, + 104 + ], + [ + 63, + 104 + ], + [ + 61, + 104 + ], + [ + 60, + 104 + ], + [ + 59, + 104 + ], + [ + 58, + 104 + ], + [ + 57, + 104 + ], + [ + 52, + 104 + ], + [ + 51, + 104 + ], + [ + 49, + 104 + ], + [ + 46, + 104 + ], + [ + 45, + 104 + ], + [ + 44, + 104 + ], + [ + 41, + 104 + ], + [ + 40, + 104 + ], + [ + 37, + 104 + ], + [ + 35, + 104 + ], + [ + 33, + 104 + ], + [ + 31, + 104 + ], + [ + 27, + 104 + ], + [ + 26, + 104 + ], + [ + 23, + 104 + ], + [ + 22, + 104 + ], + [ + 20, + 104 + ], + [ + 18, + 104 + ], + [ + 16, + 104 + ], + [ + 13, + 104 + ], + [ + 12, + 104 + ], + [ + 11, + 104 + ], + [ + 10, + 104 + ], + [ + 9, + 104 + ], + [ + 8, + 104 + ], + [ + 7, + 104 + ], + [ + 2, + 104 + ], + [ + 0, + 104 + ], + [ + 105, + 104 + ], + [ + 104, + 105 + ], + [ + 105, + 104 + ], + [ + 109, + 103 + ], + [ + 108, + 103 + ], + [ + 101, + 103 + ], + [ + 100, + 103 + ], + [ + 99, + 103 + ], + [ + 98, + 103 + ], + [ + 94, + 103 + ], + [ + 92, + 103 + ], + [ + 91, + 103 + ], + [ + 89, + 103 + ], + [ + 85, + 103 + ], + [ + 84, + 103 + ], + [ + 83, + 103 + ], + [ + 82, + 103 + ], + [ + 79, + 103 + ], + [ + 77, + 103 + ], + [ + 76, + 103 + ], + [ + 74, + 103 + ], + [ + 72, + 103 + ], + [ + 71, + 103 + ], + [ + 70, + 103 + ], + [ + 69, + 103 + ], + [ + 65, + 103 + ], + [ + 63, + 103 + ], + [ + 61, + 103 + ], + [ + 60, + 103 + ], + [ + 56, + 103 + ], + [ + 55, + 103 + ], + [ + 54, + 103 + ], + [ + 53, + 103 + ], + [ + 50, + 103 + ], + [ + 48, + 103 + ], + [ + 47, + 103 + ], + [ + 45, + 103 + ], + [ + 44, + 103 + ], + [ + 41, + 103 + ], + [ + 40, + 103 + ], + [ + 37, + 103 + ], + [ + 35, + 103 + ], + [ + 33, + 103 + ], + [ + 31, + 103 + ], + [ + 30, + 103 + ], + [ + 29, + 103 + ], + [ + 28, + 103 + ], + [ + 25, + 103 + ], + [ + 24, + 103 + ], + [ + 21, + 103 + ], + [ + 19, + 103 + ], + [ + 17, + 103 + ], + [ + 15, + 103 + ], + [ + 14, + 103 + ], + [ + 13, + 103 + ], + [ + 12, + 103 + ], + [ + 11, + 103 + ], + [ + 10, + 103 + ], + [ + 7, + 103 + ], + [ + 4, + 103 + ], + [ + 1, + 103 + ], + [ + 106, + 103 + ], + [ + 103, + 106 + ], + [ + 106, + 103 + ], + [ + 110, + 102 + ], + [ + 109, + 102 + ], + [ + 104, + 102 + ], + [ + 103, + 102 + ], + [ + 99, + 102 + ], + [ + 96, + 102 + ], + [ + 95, + 102 + ], + [ + 93, + 102 + ], + [ + 90, + 102 + ], + [ + 88, + 102 + ], + [ + 86, + 102 + ], + [ + 84, + 102 + ], + [ + 83, + 102 + ], + [ + 76, + 102 + ], + [ + 75, + 102 + ], + [ + 74, + 102 + ], + [ + 73, + 102 + ], + [ + 71, + 102 + ], + [ + 69, + 102 + ], + [ + 68, + 102 + ], + [ + 66, + 102 + ], + [ + 65, + 102 + ], + [ + 63, + 102 + ], + [ + 59, + 102 + ], + [ + 58, + 102 + ], + [ + 56, + 102 + ], + [ + 53, + 102 + ], + [ + 51, + 102 + ], + [ + 50, + 102 + ], + [ + 48, + 102 + ], + [ + 45, + 102 + ], + [ + 42, + 102 + ], + [ + 41, + 102 + ], + [ + 38, + 102 + ], + [ + 36, + 102 + ], + [ + 34, + 102 + ], + [ + 33, + 102 + ], + [ + 31, + 102 + ], + [ + 29, + 102 + ], + [ + 27, + 102 + ], + [ + 24, + 102 + ], + [ + 22, + 102 + ], + [ + 21, + 102 + ], + [ + 20, + 102 + ], + [ + 19, + 102 + ], + [ + 18, + 102 + ], + [ + 17, + 102 + ], + [ + 16, + 102 + ], + [ + 15, + 102 + ], + [ + 13, + 102 + ], + [ + 11, + 102 + ], + [ + 6, + 102 + ], + [ + 108, + 101 + ], + [ + 107, + 101 + ], + [ + 106, + 101 + ], + [ + 105, + 101 + ], + [ + 99, + 101 + ], + [ + 96, + 101 + ], + [ + 94, + 101 + ], + [ + 92, + 101 + ], + [ + 91, + 101 + ], + [ + 89, + 101 + ], + [ + 87, + 101 + ], + [ + 85, + 101 + ], + [ + 82, + 101 + ], + [ + 81, + 101 + ], + [ + 76, + 101 + ], + [ + 75, + 101 + ], + [ + 74, + 101 + ], + [ + 73, + 101 + ], + [ + 72, + 101 + ], + [ + 70, + 101 + ], + [ + 67, + 101 + ], + [ + 65, + 101 + ], + [ + 63, + 101 + ], + [ + 59, + 101 + ], + [ + 58, + 101 + ], + [ + 56, + 101 + ], + [ + 53, + 101 + ], + [ + 49, + 101 + ], + [ + 47, + 101 + ], + [ + 46, + 101 + ], + [ + 45, + 101 + ], + [ + 42, + 101 + ], + [ + 41, + 101 + ], + [ + 38, + 101 + ], + [ + 37, + 101 + ], + [ + 35, + 101 + ], + [ + 32, + 101 + ], + [ + 30, + 101 + ], + [ + 28, + 101 + ], + [ + 26, + 101 + ], + [ + 25, + 101 + ], + [ + 23, + 101 + ], + [ + 21, + 101 + ], + [ + 20, + 101 + ], + [ + 19, + 101 + ], + [ + 18, + 101 + ], + [ + 17, + 101 + ], + [ + 16, + 101 + ], + [ + 15, + 101 + ], + [ + 14, + 101 + ], + [ + 12, + 101 + ], + [ + 10, + 101 + ], + [ + 9, + 101 + ], + [ + 8, + 101 + ], + [ + 6, + 101 + ], + [ + 1, + 101 + ], + [ + 102, + 101 + ], + [ + 101, + 102 + ], + [ + 102, + 101 + ], + [ + 110, + 100 + ], + [ + 109, + 100 + ], + [ + 104, + 100 + ], + [ + 103, + 100 + ], + [ + 97, + 100 + ], + [ + 95, + 100 + ], + [ + 93, + 100 + ], + [ + 90, + 100 + ], + [ + 88, + 100 + ], + [ + 86, + 100 + ], + [ + 84, + 100 + ], + [ + 83, + 100 + ], + [ + 80, + 100 + ], + [ + 79, + 100 + ], + [ + 78, + 100 + ], + [ + 77, + 100 + ], + [ + 71, + 100 + ], + [ + 69, + 100 + ], + [ + 68, + 100 + ], + [ + 66, + 100 + ], + [ + 64, + 100 + ], + [ + 62, + 100 + ], + [ + 61, + 100 + ], + [ + 60, + 100 + ], + [ + 58, + 100 + ], + [ + 56, + 100 + ], + [ + 53, + 100 + ], + [ + 49, + 100 + ], + [ + 47, + 100 + ], + [ + 46, + 100 + ], + [ + 45, + 100 + ], + [ + 42, + 100 + ], + [ + 41, + 100 + ], + [ + 38, + 100 + ], + [ + 37, + 100 + ], + [ + 35, + 100 + ], + [ + 32, + 100 + ], + [ + 28, + 100 + ], + [ + 26, + 100 + ], + [ + 25, + 100 + ], + [ + 23, + 100 + ], + [ + 21, + 100 + ], + [ + 20, + 100 + ], + [ + 19, + 100 + ], + [ + 18, + 100 + ], + [ + 17, + 100 + ], + [ + 16, + 100 + ], + [ + 15, + 100 + ], + [ + 12, + 100 + ], + [ + 10, + 100 + ], + [ + 9, + 100 + ], + [ + 6, + 100 + ], + [ + 4, + 100 + ], + [ + 2, + 100 + ], + [ + 110, + 99 + ], + [ + 109, + 99 + ], + [ + 104, + 99 + ], + [ + 103, + 99 + ], + [ + 102, + 99 + ], + [ + 101, + 99 + ], + [ + 95, + 99 + ], + [ + 93, + 99 + ], + [ + 90, + 99 + ], + [ + 88, + 99 + ], + [ + 87, + 99 + ], + [ + 85, + 99 + ], + [ + 82, + 99 + ], + [ + 81, + 99 + ], + [ + 80, + 99 + ], + [ + 79, + 99 + ], + [ + 78, + 99 + ], + [ + 77, + 99 + ], + [ + 72, + 99 + ], + [ + 70, + 99 + ], + [ + 67, + 99 + ], + [ + 64, + 99 + ], + [ + 62, + 99 + ], + [ + 61, + 99 + ], + [ + 60, + 99 + ], + [ + 59, + 99 + ], + [ + 57, + 99 + ], + [ + 55, + 99 + ], + [ + 54, + 99 + ], + [ + 52, + 99 + ], + [ + 49, + 99 + ], + [ + 47, + 99 + ], + [ + 46, + 99 + ], + [ + 44, + 99 + ], + [ + 43, + 99 + ], + [ + 40, + 99 + ], + [ + 39, + 99 + ], + [ + 37, + 99 + ], + [ + 35, + 99 + ], + [ + 32, + 99 + ], + [ + 29, + 99 + ], + [ + 27, + 99 + ], + [ + 24, + 99 + ], + [ + 22, + 99 + ], + [ + 21, + 99 + ], + [ + 20, + 99 + ], + [ + 19, + 99 + ], + [ + 18, + 99 + ], + [ + 17, + 99 + ], + [ + 16, + 99 + ], + [ + 15, + 99 + ], + [ + 13, + 99 + ], + [ + 11, + 99 + ], + [ + 9, + 99 + ], + [ + 6, + 99 + ], + [ + 4, + 99 + ], + [ + 2, + 99 + ], + [ + 0, + 99 + ], + [ + 110, + 98 + ], + [ + 109, + 98 + ], + [ + 104, + 98 + ], + [ + 103, + 98 + ], + [ + 97, + 98 + ], + [ + 95, + 98 + ], + [ + 93, + 98 + ], + [ + 90, + 98 + ], + [ + 88, + 98 + ], + [ + 87, + 98 + ], + [ + 85, + 98 + ], + [ + 82, + 98 + ], + [ + 81, + 98 + ], + [ + 76, + 98 + ], + [ + 75, + 98 + ], + [ + 74, + 98 + ], + [ + 73, + 98 + ], + [ + 72, + 98 + ], + [ + 70, + 98 + ], + [ + 67, + 98 + ], + [ + 65, + 98 + ], + [ + 63, + 98 + ], + [ + 57, + 98 + ], + [ + 55, + 98 + ], + [ + 54, + 98 + ], + [ + 52, + 98 + ], + [ + 51, + 98 + ], + [ + 50, + 98 + ], + [ + 48, + 98 + ], + [ + 44, + 98 + ], + [ + 43, + 98 + ], + [ + 40, + 98 + ], + [ + 39, + 98 + ], + [ + 36, + 98 + ], + [ + 34, + 98 + ], + [ + 33, + 98 + ], + [ + 31, + 98 + ], + [ + 28, + 98 + ], + [ + 26, + 98 + ], + [ + 25, + 98 + ], + [ + 23, + 98 + ], + [ + 21, + 98 + ], + [ + 20, + 98 + ], + [ + 19, + 98 + ], + [ + 18, + 98 + ], + [ + 17, + 98 + ], + [ + 16, + 98 + ], + [ + 15, + 98 + ], + [ + 12, + 98 + ], + [ + 10, + 98 + ], + [ + 6, + 98 + ], + [ + 0, + 98 + ], + [ + 100, + 98 + ], + [ + 98, + 100 + ], + [ + 100, + 98 + ], + [ + 110, + 97 + ], + [ + 109, + 97 + ], + [ + 104, + 97 + ], + [ + 103, + 97 + ], + [ + 102, + 97 + ], + [ + 99, + 97 + ], + [ + 93, + 97 + ], + [ + 91, + 97 + ], + [ + 88, + 97 + ], + [ + 87, + 97 + ], + [ + 86, + 97 + ], + [ + 85, + 97 + ], + [ + 84, + 97 + ], + [ + 80, + 97 + ], + [ + 79, + 97 + ], + [ + 74, + 97 + ], + [ + 73, + 97 + ], + [ + 72, + 97 + ], + [ + 71, + 97 + ], + [ + 66, + 97 + ], + [ + 64, + 97 + ], + [ + 63, + 97 + ], + [ + 60, + 97 + ], + [ + 59, + 97 + ], + [ + 58, + 97 + ], + [ + 57, + 97 + ], + [ + 56, + 97 + ], + [ + 55, + 97 + ], + [ + 51, + 97 + ], + [ + 50, + 97 + ], + [ + 47, + 97 + ], + [ + 46, + 97 + ], + [ + 45, + 97 + ], + [ + 44, + 97 + ], + [ + 39, + 97 + ], + [ + 38, + 97 + ], + [ + 36, + 97 + ], + [ + 35, + 97 + ], + [ + 32, + 97 + ], + [ + 31, + 97 + ], + [ + 30, + 97 + ], + [ + 29, + 97 + ], + [ + 28, + 97 + ], + [ + 27, + 97 + ], + [ + 26, + 97 + ], + [ + 25, + 97 + ], + [ + 24, + 97 + ], + [ + 23, + 97 + ], + [ + 22, + 97 + ], + [ + 21, + 97 + ], + [ + 20, + 97 + ], + [ + 15, + 97 + ], + [ + 14, + 97 + ], + [ + 13, + 97 + ], + [ + 9, + 97 + ], + [ + 7, + 97 + ], + [ + 6, + 97 + ], + [ + 4, + 97 + ], + [ + 2, + 97 + ], + [ + 1, + 97 + ], + [ + 108, + 96 + ], + [ + 107, + 96 + ], + [ + 106, + 96 + ], + [ + 105, + 96 + ], + [ + 102, + 96 + ], + [ + 101, + 96 + ], + [ + 94, + 96 + ], + [ + 92, + 96 + ], + [ + 91, + 96 + ], + [ + 89, + 96 + ], + [ + 86, + 96 + ], + [ + 84, + 96 + ], + [ + 83, + 96 + ], + [ + 80, + 96 + ], + [ + 79, + 96 + ], + [ + 78, + 96 + ], + [ + 77, + 96 + ], + [ + 71, + 96 + ], + [ + 69, + 96 + ], + [ + 68, + 96 + ], + [ + 66, + 96 + ], + [ + 64, + 96 + ], + [ + 62, + 96 + ], + [ + 61, + 96 + ], + [ + 60, + 96 + ], + [ + 59, + 96 + ], + [ + 57, + 96 + ], + [ + 55, + 96 + ], + [ + 54, + 96 + ], + [ + 52, + 96 + ], + [ + 51, + 96 + ], + [ + 50, + 96 + ], + [ + 48, + 96 + ], + [ + 44, + 96 + ], + [ + 43, + 96 + ], + [ + 40, + 96 + ], + [ + 39, + 96 + ], + [ + 36, + 96 + ], + [ + 34, + 96 + ], + [ + 33, + 96 + ], + [ + 31, + 96 + ], + [ + 30, + 96 + ], + [ + 28, + 96 + ], + [ + 26, + 96 + ], + [ + 25, + 96 + ], + [ + 23, + 96 + ], + [ + 21, + 96 + ], + [ + 20, + 96 + ], + [ + 19, + 96 + ], + [ + 18, + 96 + ], + [ + 17, + 96 + ], + [ + 16, + 96 + ], + [ + 15, + 96 + ], + [ + 14, + 96 + ], + [ + 12, + 96 + ], + [ + 10, + 96 + ], + [ + 8, + 96 + ], + [ + 6, + 96 + ], + [ + 4, + 96 + ], + [ + 2, + 96 + ], + [ + 1, + 96 + ], + [ + 0, + 96 + ], + [ + 99, + 96 + ], + [ + 96, + 99 + ], + [ + 99, + 96 + ], + [ + 97, + 95 + ], + [ + 93, + 95 + ], + [ + 91, + 95 + ], + [ + 90, + 95 + ], + [ + 89, + 95 + ], + [ + 88, + 95 + ], + [ + 80, + 95 + ], + [ + 79, + 95 + ], + [ + 78, + 95 + ], + [ + 77, + 95 + ], + [ + 76, + 95 + ], + [ + 75, + 95 + ], + [ + 74, + 95 + ], + [ + 73, + 95 + ], + [ + 72, + 95 + ], + [ + 71, + 95 + ], + [ + 70, + 95 + ], + [ + 69, + 95 + ], + [ + 68, + 95 + ], + [ + 67, + 95 + ], + [ + 66, + 95 + ], + [ + 59, + 95 + ], + [ + 58, + 95 + ], + [ + 57, + 95 + ], + [ + 56, + 95 + ], + [ + 55, + 95 + ], + [ + 54, + 95 + ], + [ + 53, + 95 + ], + [ + 52, + 95 + ], + [ + 37, + 95 + ], + [ + 36, + 95 + ], + [ + 35, + 95 + ], + [ + 34, + 95 + ], + [ + 33, + 95 + ], + [ + 32, + 95 + ], + [ + 31, + 95 + ], + [ + 21, + 95 + ], + [ + 20, + 95 + ], + [ + 19, + 95 + ], + [ + 18, + 95 + ], + [ + 17, + 95 + ], + [ + 16, + 95 + ], + [ + 15, + 95 + ], + [ + 13, + 95 + ], + [ + 12, + 95 + ], + [ + 11, + 95 + ], + [ + 10, + 95 + ], + [ + 4, + 95 + ], + [ + 2, + 95 + ], + [ + 0, + 95 + ], + [ + 108, + 94 + ], + [ + 107, + 94 + ], + [ + 106, + 94 + ], + [ + 105, + 94 + ], + [ + 100, + 94 + ], + [ + 98, + 94 + ], + [ + 92, + 94 + ], + [ + 91, + 94 + ], + [ + 89, + 94 + ], + [ + 86, + 94 + ], + [ + 84, + 94 + ], + [ + 83, + 94 + ], + [ + 76, + 94 + ], + [ + 75, + 94 + ], + [ + 74, + 94 + ], + [ + 73, + 94 + ], + [ + 71, + 94 + ], + [ + 69, + 94 + ], + [ + 68, + 94 + ], + [ + 66, + 94 + ], + [ + 65, + 94 + ], + [ + 63, + 94 + ], + [ + 57, + 94 + ], + [ + 55, + 94 + ], + [ + 54, + 94 + ], + [ + 52, + 94 + ], + [ + 49, + 94 + ], + [ + 47, + 94 + ], + [ + 46, + 94 + ], + [ + 44, + 94 + ], + [ + 43, + 94 + ], + [ + 40, + 94 + ], + [ + 39, + 94 + ], + [ + 37, + 94 + ], + [ + 35, + 94 + ], + [ + 32, + 94 + ], + [ + 30, + 94 + ], + [ + 29, + 94 + ], + [ + 27, + 94 + ], + [ + 24, + 94 + ], + [ + 22, + 94 + ], + [ + 21, + 94 + ], + [ + 20, + 94 + ], + [ + 19, + 94 + ], + [ + 18, + 94 + ], + [ + 17, + 94 + ], + [ + 16, + 94 + ], + [ + 15, + 94 + ], + [ + 14, + 94 + ], + [ + 13, + 94 + ], + [ + 11, + 94 + ], + [ + 9, + 94 + ], + [ + 8, + 94 + ], + [ + 6, + 94 + ], + [ + 1, + 94 + ], + [ + 0, + 94 + ], + [ + 97, + 94 + ], + [ + 94, + 97 + ], + [ + 97, + 94 + ], + [ + 108, + 93 + ], + [ + 107, + 93 + ], + [ + 106, + 93 + ], + [ + 105, + 93 + ], + [ + 101, + 93 + ], + [ + 100, + 93 + ], + [ + 99, + 93 + ], + [ + 98, + 93 + ], + [ + 95, + 93 + ], + [ + 94, + 93 + ], + [ + 92, + 93 + ], + [ + 91, + 93 + ], + [ + 90, + 93 + ], + [ + 88, + 93 + ], + [ + 87, + 93 + ], + [ + 86, + 93 + ], + [ + 85, + 93 + ], + [ + 84, + 93 + ], + [ + 78, + 93 + ], + [ + 77, + 93 + ], + [ + 76, + 93 + ], + [ + 75, + 93 + ], + [ + 70, + 93 + ], + [ + 69, + 93 + ], + [ + 68, + 93 + ], + [ + 67, + 93 + ], + [ + 64, + 93 + ], + [ + 63, + 93 + ], + [ + 60, + 93 + ], + [ + 59, + 93 + ], + [ + 58, + 93 + ], + [ + 57, + 93 + ], + [ + 56, + 93 + ], + [ + 55, + 93 + ], + [ + 49, + 93 + ], + [ + 48, + 93 + ], + [ + 43, + 93 + ], + [ + 42, + 93 + ], + [ + 41, + 93 + ], + [ + 40, + 93 + ], + [ + 36, + 93 + ], + [ + 35, + 93 + ], + [ + 32, + 93 + ], + [ + 31, + 93 + ], + [ + 29, + 93 + ], + [ + 28, + 93 + ], + [ + 27, + 93 + ], + [ + 26, + 93 + ], + [ + 25, + 93 + ], + [ + 24, + 93 + ], + [ + 23, + 93 + ], + [ + 22, + 93 + ], + [ + 19, + 93 + ], + [ + 18, + 93 + ], + [ + 17, + 93 + ], + [ + 16, + 93 + ], + [ + 12, + 93 + ], + [ + 11, + 93 + ], + [ + 10, + 93 + ], + [ + 8, + 93 + ], + [ + 7, + 93 + ], + [ + 6, + 93 + ], + [ + 108, + 92 + ], + [ + 107, + 92 + ], + [ + 106, + 92 + ], + [ + 105, + 92 + ], + [ + 101, + 92 + ], + [ + 100, + 92 + ], + [ + 99, + 92 + ], + [ + 98, + 92 + ], + [ + 90, + 92 + ], + [ + 89, + 92 + ], + [ + 83, + 92 + ], + [ + 82, + 92 + ], + [ + 81, + 92 + ], + [ + 78, + 92 + ], + [ + 77, + 92 + ], + [ + 76, + 92 + ], + [ + 75, + 92 + ], + [ + 70, + 92 + ], + [ + 69, + 92 + ], + [ + 68, + 92 + ], + [ + 67, + 92 + ], + [ + 65, + 92 + ], + [ + 62, + 92 + ], + [ + 61, + 92 + ], + [ + 58, + 92 + ], + [ + 57, + 92 + ], + [ + 56, + 92 + ], + [ + 55, + 92 + ], + [ + 51, + 92 + ], + [ + 50, + 92 + ], + [ + 47, + 92 + ], + [ + 46, + 92 + ], + [ + 45, + 92 + ], + [ + 44, + 92 + ], + [ + 39, + 92 + ], + [ + 38, + 92 + ], + [ + 36, + 92 + ], + [ + 35, + 92 + ], + [ + 32, + 92 + ], + [ + 31, + 92 + ], + [ + 29, + 92 + ], + [ + 28, + 92 + ], + [ + 27, + 92 + ], + [ + 26, + 92 + ], + [ + 25, + 92 + ], + [ + 24, + 92 + ], + [ + 23, + 92 + ], + [ + 22, + 92 + ], + [ + 21, + 92 + ], + [ + 20, + 92 + ], + [ + 15, + 92 + ], + [ + 13, + 92 + ], + [ + 9, + 92 + ], + [ + 8, + 92 + ], + [ + 7, + 92 + ], + [ + 6, + 92 + ], + [ + 95, + 92 + ], + [ + 92, + 95 + ], + [ + 95, + 92 + ], + [ + 108, + 91 + ], + [ + 107, + 91 + ], + [ + 106, + 91 + ], + [ + 105, + 91 + ], + [ + 100, + 91 + ], + [ + 98, + 91 + ], + [ + 97, + 91 + ], + [ + 94, + 91 + ], + [ + 93, + 91 + ], + [ + 92, + 91 + ], + [ + 90, + 91 + ], + [ + 89, + 91 + ], + [ + 88, + 91 + ], + [ + 86, + 91 + ], + [ + 84, + 91 + ], + [ + 83, + 91 + ], + [ + 76, + 91 + ], + [ + 75, + 91 + ], + [ + 74, + 91 + ], + [ + 73, + 91 + ], + [ + 71, + 91 + ], + [ + 69, + 91 + ], + [ + 68, + 91 + ], + [ + 66, + 91 + ], + [ + 65, + 91 + ], + [ + 63, + 91 + ], + [ + 57, + 91 + ], + [ + 55, + 91 + ], + [ + 54, + 91 + ], + [ + 52, + 91 + ], + [ + 49, + 91 + ], + [ + 47, + 91 + ], + [ + 46, + 91 + ], + [ + 44, + 91 + ], + [ + 43, + 91 + ], + [ + 40, + 91 + ], + [ + 39, + 91 + ], + [ + 37, + 91 + ], + [ + 35, + 91 + ], + [ + 32, + 91 + ], + [ + 30, + 91 + ], + [ + 29, + 91 + ], + [ + 27, + 91 + ], + [ + 24, + 91 + ], + [ + 22, + 91 + ], + [ + 21, + 91 + ], + [ + 20, + 91 + ], + [ + 19, + 91 + ], + [ + 18, + 91 + ], + [ + 17, + 91 + ], + [ + 16, + 91 + ], + [ + 15, + 91 + ], + [ + 14, + 91 + ], + [ + 13, + 91 + ], + [ + 11, + 91 + ], + [ + 9, + 91 + ], + [ + 8, + 91 + ], + [ + 6, + 91 + ], + [ + 1, + 91 + ], + [ + 0, + 91 + ], + [ + 108, + 90 + ], + [ + 107, + 90 + ], + [ + 106, + 90 + ], + [ + 105, + 90 + ], + [ + 100, + 90 + ], + [ + 98, + 90 + ], + [ + 97, + 90 + ], + [ + 95, + 90 + ], + [ + 88, + 90 + ], + [ + 86, + 90 + ], + [ + 84, + 90 + ], + [ + 83, + 90 + ], + [ + 80, + 90 + ], + [ + 79, + 90 + ], + [ + 78, + 90 + ], + [ + 77, + 90 + ], + [ + 72, + 90 + ], + [ + 70, + 90 + ], + [ + 67, + 90 + ], + [ + 65, + 90 + ], + [ + 63, + 90 + ], + [ + 59, + 90 + ], + [ + 58, + 90 + ], + [ + 56, + 90 + ], + [ + 53, + 90 + ], + [ + 49, + 90 + ], + [ + 47, + 90 + ], + [ + 46, + 90 + ], + [ + 44, + 90 + ], + [ + 43, + 90 + ], + [ + 40, + 90 + ], + [ + 39, + 90 + ], + [ + 36, + 90 + ], + [ + 34, + 90 + ], + [ + 33, + 90 + ], + [ + 31, + 90 + ], + [ + 30, + 90 + ], + [ + 29, + 90 + ], + [ + 27, + 90 + ], + [ + 24, + 90 + ], + [ + 22, + 90 + ], + [ + 14, + 90 + ], + [ + 12, + 90 + ], + [ + 10, + 90 + ], + [ + 9, + 90 + ], + [ + 8, + 90 + ], + [ + 6, + 90 + ], + [ + 4, + 90 + ], + [ + 2, + 90 + ], + [ + 1, + 90 + ], + [ + 93, + 90 + ], + [ + 90, + 93 + ], + [ + 93, + 90 + ], + [ + 110, + 89 + ], + [ + 108, + 89 + ], + [ + 105, + 89 + ], + [ + 103, + 89 + ], + [ + 102, + 89 + ], + [ + 101, + 89 + ], + [ + 100, + 89 + ], + [ + 95, + 89 + ], + [ + 94, + 89 + ], + [ + 91, + 89 + ], + [ + 87, + 89 + ], + [ + 81, + 89 + ], + [ + 79, + 89 + ], + [ + 78, + 89 + ], + [ + 76, + 89 + ], + [ + 73, + 89 + ], + [ + 72, + 89 + ], + [ + 71, + 89 + ], + [ + 66, + 89 + ], + [ + 64, + 89 + ], + [ + 62, + 89 + ], + [ + 61, + 89 + ], + [ + 60, + 89 + ], + [ + 59, + 89 + ], + [ + 58, + 89 + ], + [ + 57, + 89 + ], + [ + 54, + 89 + ], + [ + 53, + 89 + ], + [ + 50, + 89 + ], + [ + 49, + 89 + ], + [ + 48, + 89 + ], + [ + 46, + 89 + ], + [ + 45, + 89 + ], + [ + 44, + 89 + ], + [ + 43, + 89 + ], + [ + 42, + 89 + ], + [ + 41, + 89 + ], + [ + 40, + 89 + ], + [ + 39, + 89 + ], + [ + 38, + 89 + ], + [ + 37, + 89 + ], + [ + 36, + 89 + ], + [ + 31, + 89 + ], + [ + 29, + 89 + ], + [ + 28, + 89 + ], + [ + 23, + 89 + ], + [ + 22, + 89 + ], + [ + 20, + 89 + ], + [ + 19, + 89 + ], + [ + 16, + 89 + ], + [ + 15, + 89 + ], + [ + 14, + 89 + ], + [ + 12, + 89 + ], + [ + 11, + 89 + ], + [ + 8, + 89 + ], + [ + 7, + 89 + ], + [ + 5, + 89 + ], + [ + 0, + 89 + ], + [ + 108, + 88 + ], + [ + 107, + 88 + ], + [ + 106, + 88 + ], + [ + 105, + 88 + ], + [ + 101, + 88 + ], + [ + 100, + 88 + ], + [ + 99, + 88 + ], + [ + 98, + 88 + ], + [ + 94, + 88 + ], + [ + 93, + 88 + ], + [ + 87, + 88 + ], + [ + 86, + 88 + ], + [ + 85, + 88 + ], + [ + 84, + 88 + ], + [ + 78, + 88 + ], + [ + 77, + 88 + ], + [ + 76, + 88 + ], + [ + 75, + 88 + ], + [ + 70, + 88 + ], + [ + 69, + 88 + ], + [ + 68, + 88 + ], + [ + 67, + 88 + ], + [ + 64, + 88 + ], + [ + 63, + 88 + ], + [ + 60, + 88 + ], + [ + 59, + 88 + ], + [ + 58, + 88 + ], + [ + 57, + 88 + ], + [ + 56, + 88 + ], + [ + 55, + 88 + ], + [ + 49, + 88 + ], + [ + 48, + 88 + ], + [ + 43, + 88 + ], + [ + 42, + 88 + ], + [ + 41, + 88 + ], + [ + 40, + 88 + ], + [ + 36, + 88 + ], + [ + 35, + 88 + ], + [ + 32, + 88 + ], + [ + 31, + 88 + ], + [ + 29, + 88 + ], + [ + 28, + 88 + ], + [ + 27, + 88 + ], + [ + 26, + 88 + ], + [ + 25, + 88 + ], + [ + 24, + 88 + ], + [ + 23, + 88 + ], + [ + 22, + 88 + ], + [ + 19, + 88 + ], + [ + 18, + 88 + ], + [ + 17, + 88 + ], + [ + 16, + 88 + ], + [ + 12, + 88 + ], + [ + 11, + 88 + ], + [ + 10, + 88 + ], + [ + 8, + 88 + ], + [ + 7, + 88 + ], + [ + 6, + 88 + ], + [ + 91, + 88 + ], + [ + 88, + 91 + ], + [ + 91, + 88 + ], + [ + 110, + 87 + ], + [ + 109, + 87 + ], + [ + 108, + 87 + ], + [ + 107, + 87 + ], + [ + 106, + 87 + ], + [ + 105, + 87 + ], + [ + 104, + 87 + ], + [ + 103, + 87 + ], + [ + 89, + 87 + ], + [ + 85, + 87 + ], + [ + 83, + 87 + ], + [ + 82, + 87 + ], + [ + 81, + 87 + ], + [ + 80, + 87 + ], + [ + 79, + 87 + ], + [ + 78, + 87 + ], + [ + 77, + 87 + ], + [ + 76, + 87 + ], + [ + 75, + 87 + ], + [ + 74, + 87 + ], + [ + 73, + 87 + ], + [ + 59, + 87 + ], + [ + 58, + 87 + ], + [ + 57, + 87 + ], + [ + 56, + 87 + ], + [ + 55, + 87 + ], + [ + 54, + 87 + ], + [ + 53, + 87 + ], + [ + 52, + 87 + ], + [ + 51, + 87 + ], + [ + 50, + 87 + ], + [ + 49, + 87 + ], + [ + 48, + 87 + ], + [ + 47, + 87 + ], + [ + 46, + 87 + ], + [ + 30, + 87 + ], + [ + 29, + 87 + ], + [ + 28, + 87 + ], + [ + 27, + 87 + ], + [ + 26, + 87 + ], + [ + 25, + 87 + ], + [ + 24, + 87 + ], + [ + 23, + 87 + ], + [ + 22, + 87 + ], + [ + 21, + 87 + ], + [ + 20, + 87 + ], + [ + 19, + 87 + ], + [ + 18, + 87 + ], + [ + 17, + 87 + ], + [ + 16, + 87 + ], + [ + 15, + 87 + ], + [ + 14, + 87 + ], + [ + 9, + 87 + ], + [ + 8, + 87 + ], + [ + 4, + 87 + ], + [ + 2, + 87 + ], + [ + 1, + 87 + ], + [ + 0, + 87 + ], + [ + 108, + 86 + ], + [ + 107, + 86 + ], + [ + 106, + 86 + ], + [ + 105, + 86 + ], + [ + 100, + 86 + ], + [ + 98, + 86 + ], + [ + 97, + 86 + ], + [ + 94, + 86 + ], + [ + 92, + 86 + ], + [ + 91, + 86 + ], + [ + 84, + 86 + ], + [ + 83, + 86 + ], + [ + 76, + 86 + ], + [ + 75, + 86 + ], + [ + 74, + 86 + ], + [ + 73, + 86 + ], + [ + 71, + 86 + ], + [ + 69, + 86 + ], + [ + 68, + 86 + ], + [ + 66, + 86 + ], + [ + 65, + 86 + ], + [ + 63, + 86 + ], + [ + 57, + 86 + ], + [ + 55, + 86 + ], + [ + 54, + 86 + ], + [ + 52, + 86 + ], + [ + 49, + 86 + ], + [ + 47, + 86 + ], + [ + 46, + 86 + ], + [ + 44, + 86 + ], + [ + 43, + 86 + ], + [ + 40, + 86 + ], + [ + 39, + 86 + ], + [ + 37, + 86 + ], + [ + 35, + 86 + ], + [ + 32, + 86 + ], + [ + 30, + 86 + ], + [ + 29, + 86 + ], + [ + 27, + 86 + ], + [ + 24, + 86 + ], + [ + 22, + 86 + ], + [ + 21, + 86 + ], + [ + 20, + 86 + ], + [ + 19, + 86 + ], + [ + 18, + 86 + ], + [ + 17, + 86 + ], + [ + 16, + 86 + ], + [ + 15, + 86 + ], + [ + 14, + 86 + ], + [ + 13, + 86 + ], + [ + 11, + 86 + ], + [ + 9, + 86 + ], + [ + 8, + 86 + ], + [ + 6, + 86 + ], + [ + 1, + 86 + ], + [ + 0, + 86 + ], + [ + 89, + 86 + ], + [ + 86, + 89 + ], + [ + 89, + 86 + ], + [ + 109, + 85 + ], + [ + 107, + 85 + ], + [ + 106, + 85 + ], + [ + 104, + 85 + ], + [ + 102, + 85 + ], + [ + 100, + 85 + ], + [ + 99, + 85 + ], + [ + 97, + 85 + ], + [ + 95, + 85 + ], + [ + 94, + 85 + ], + [ + 93, + 85 + ], + [ + 92, + 85 + ], + [ + 87, + 85 + ], + [ + 86, + 85 + ], + [ + 84, + 85 + ], + [ + 83, + 85 + ], + [ + 82, + 85 + ], + [ + 81, + 85 + ], + [ + 79, + 85 + ], + [ + 77, + 85 + ], + [ + 76, + 85 + ], + [ + 74, + 85 + ], + [ + 71, + 85 + ], + [ + 69, + 85 + ], + [ + 68, + 85 + ], + [ + 66, + 85 + ], + [ + 64, + 85 + ], + [ + 63, + 85 + ], + [ + 60, + 85 + ], + [ + 59, + 85 + ], + [ + 57, + 85 + ], + [ + 56, + 85 + ], + [ + 53, + 85 + ], + [ + 52, + 85 + ], + [ + 50, + 85 + ], + [ + 49, + 85 + ], + [ + 47, + 85 + ], + [ + 44, + 85 + ], + [ + 42, + 85 + ], + [ + 41, + 85 + ], + [ + 39, + 85 + ], + [ + 37, + 85 + ], + [ + 36, + 85 + ], + [ + 35, + 85 + ], + [ + 34, + 85 + ], + [ + 33, + 85 + ], + [ + 32, + 85 + ], + [ + 31, + 85 + ], + [ + 28, + 85 + ], + [ + 27, + 85 + ], + [ + 24, + 85 + ], + [ + 23, + 85 + ], + [ + 20, + 85 + ], + [ + 18, + 85 + ], + [ + 17, + 85 + ], + [ + 15, + 85 + ], + [ + 14, + 85 + ], + [ + 13, + 85 + ], + [ + 11, + 85 + ], + [ + 10, + 85 + ], + [ + 9, + 85 + ], + [ + 5, + 85 + ], + [ + 109, + 84 + ], + [ + 107, + 84 + ], + [ + 106, + 84 + ], + [ + 104, + 84 + ], + [ + 102, + 84 + ], + [ + 100, + 84 + ], + [ + 99, + 84 + ], + [ + 97, + 84 + ], + [ + 91, + 84 + ], + [ + 90, + 84 + ], + [ + 89, + 84 + ], + [ + 88, + 84 + ], + [ + 82, + 84 + ], + [ + 79, + 84 + ], + [ + 77, + 84 + ], + [ + 76, + 84 + ], + [ + 74, + 84 + ], + [ + 71, + 84 + ], + [ + 69, + 84 + ], + [ + 68, + 84 + ], + [ + 66, + 84 + ], + [ + 65, + 84 + ], + [ + 62, + 84 + ], + [ + 61, + 84 + ], + [ + 57, + 84 + ], + [ + 56, + 84 + ], + [ + 53, + 84 + ], + [ + 52, + 84 + ], + [ + 51, + 84 + ], + [ + 48, + 84 + ], + [ + 46, + 84 + ], + [ + 45, + 84 + ], + [ + 43, + 84 + ], + [ + 40, + 84 + ], + [ + 38, + 84 + ], + [ + 37, + 84 + ], + [ + 36, + 84 + ], + [ + 35, + 84 + ], + [ + 34, + 84 + ], + [ + 33, + 84 + ], + [ + 32, + 84 + ], + [ + 31, + 84 + ], + [ + 28, + 84 + ], + [ + 27, + 84 + ], + [ + 24, + 84 + ], + [ + 23, + 84 + ], + [ + 21, + 84 + ], + [ + 19, + 84 + ], + [ + 16, + 84 + ], + [ + 14, + 84 + ], + [ + 12, + 84 + ], + [ + 5, + 84 + ], + [ + 87, + 84 + ], + [ + 84, + 87 + ], + [ + 87, + 84 + ], + [ + 108, + 83 + ], + [ + 107, + 83 + ], + [ + 106, + 83 + ], + [ + 105, + 83 + ], + [ + 100, + 83 + ], + [ + 98, + 83 + ], + [ + 97, + 83 + ], + [ + 94, + 83 + ], + [ + 92, + 83 + ], + [ + 91, + 83 + ], + [ + 89, + 83 + ], + [ + 86, + 83 + ], + [ + 85, + 83 + ], + [ + 84, + 83 + ], + [ + 82, + 83 + ], + [ + 81, + 83 + ], + [ + 76, + 83 + ], + [ + 75, + 83 + ], + [ + 74, + 83 + ], + [ + 73, + 83 + ], + [ + 71, + 83 + ], + [ + 69, + 83 + ], + [ + 68, + 83 + ], + [ + 66, + 83 + ], + [ + 65, + 83 + ], + [ + 63, + 83 + ], + [ + 57, + 83 + ], + [ + 55, + 83 + ], + [ + 54, + 83 + ], + [ + 52, + 83 + ], + [ + 49, + 83 + ], + [ + 47, + 83 + ], + [ + 46, + 83 + ], + [ + 44, + 83 + ], + [ + 43, + 83 + ], + [ + 40, + 83 + ], + [ + 39, + 83 + ], + [ + 37, + 83 + ], + [ + 35, + 83 + ], + [ + 32, + 83 + ], + [ + 30, + 83 + ], + [ + 29, + 83 + ], + [ + 27, + 83 + ], + [ + 24, + 83 + ], + [ + 22, + 83 + ], + [ + 21, + 83 + ], + [ + 20, + 83 + ], + [ + 19, + 83 + ], + [ + 18, + 83 + ], + [ + 17, + 83 + ], + [ + 16, + 83 + ], + [ + 15, + 83 + ], + [ + 14, + 83 + ], + [ + 13, + 83 + ], + [ + 11, + 83 + ], + [ + 9, + 83 + ], + [ + 8, + 83 + ], + [ + 6, + 83 + ], + [ + 1, + 83 + ], + [ + 0, + 83 + ], + [ + 110, + 82 + ], + [ + 109, + 82 + ], + [ + 104, + 82 + ], + [ + 103, + 82 + ], + [ + 100, + 82 + ], + [ + 98, + 82 + ], + [ + 97, + 82 + ], + [ + 94, + 82 + ], + [ + 92, + 82 + ], + [ + 91, + 82 + ], + [ + 89, + 82 + ], + [ + 87, + 82 + ], + [ + 81, + 82 + ], + [ + 80, + 82 + ], + [ + 79, + 82 + ], + [ + 78, + 82 + ], + [ + 77, + 82 + ], + [ + 71, + 82 + ], + [ + 69, + 82 + ], + [ + 68, + 82 + ], + [ + 66, + 82 + ], + [ + 65, + 82 + ], + [ + 63, + 82 + ], + [ + 59, + 82 + ], + [ + 58, + 82 + ], + [ + 56, + 82 + ], + [ + 53, + 82 + ], + [ + 51, + 82 + ], + [ + 50, + 82 + ], + [ + 48, + 82 + ], + [ + 44, + 82 + ], + [ + 43, + 82 + ], + [ + 40, + 82 + ], + [ + 39, + 82 + ], + [ + 37, + 82 + ], + [ + 35, + 82 + ], + [ + 32, + 82 + ], + [ + 28, + 82 + ], + [ + 26, + 82 + ], + [ + 25, + 82 + ], + [ + 23, + 82 + ], + [ + 13, + 82 + ], + [ + 11, + 82 + ], + [ + 6, + 82 + ], + [ + 4, + 82 + ], + [ + 2, + 82 + ], + [ + 85, + 82 + ], + [ + 82, + 85 + ], + [ + 85, + 82 + ], + [ + 109, + 81 + ], + [ + 107, + 81 + ], + [ + 106, + 81 + ], + [ + 104, + 81 + ], + [ + 102, + 81 + ], + [ + 100, + 81 + ], + [ + 99, + 81 + ], + [ + 97, + 81 + ], + [ + 95, + 81 + ], + [ + 94, + 81 + ], + [ + 93, + 81 + ], + [ + 92, + 81 + ], + [ + 86, + 81 + ], + [ + 85, + 81 + ], + [ + 79, + 81 + ], + [ + 77, + 81 + ], + [ + 76, + 81 + ], + [ + 74, + 81 + ], + [ + 71, + 81 + ], + [ + 69, + 81 + ], + [ + 68, + 81 + ], + [ + 66, + 81 + ], + [ + 64, + 81 + ], + [ + 63, + 81 + ], + [ + 60, + 81 + ], + [ + 59, + 81 + ], + [ + 57, + 81 + ], + [ + 56, + 81 + ], + [ + 53, + 81 + ], + [ + 52, + 81 + ], + [ + 50, + 81 + ], + [ + 49, + 81 + ], + [ + 47, + 81 + ], + [ + 44, + 81 + ], + [ + 42, + 81 + ], + [ + 41, + 81 + ], + [ + 39, + 81 + ], + [ + 37, + 81 + ], + [ + 36, + 81 + ], + [ + 35, + 81 + ], + [ + 34, + 81 + ], + [ + 33, + 81 + ], + [ + 32, + 81 + ], + [ + 31, + 81 + ], + [ + 28, + 81 + ], + [ + 27, + 81 + ], + [ + 24, + 81 + ], + [ + 23, + 81 + ], + [ + 20, + 81 + ], + [ + 18, + 81 + ], + [ + 17, + 81 + ], + [ + 15, + 81 + ], + [ + 14, + 81 + ], + [ + 13, + 81 + ], + [ + 11, + 81 + ], + [ + 10, + 81 + ], + [ + 9, + 81 + ], + [ + 5, + 81 + ], + [ + 83, + 81 + ], + [ + 81, + 83 + ], + [ + 83, + 81 + ], + [ + 110, + 80 + ], + [ + 107, + 80 + ], + [ + 106, + 80 + ], + [ + 103, + 80 + ], + [ + 100, + 80 + ], + [ + 99, + 80 + ], + [ + 96, + 80 + ], + [ + 95, + 80 + ], + [ + 92, + 80 + ], + [ + 91, + 80 + ], + [ + 88, + 80 + ], + [ + 87, + 80 + ], + [ + 84, + 80 + ], + [ + 83, + 80 + ], + [ + 81, + 80 + ], + [ + 76, + 80 + ], + [ + 73, + 80 + ], + [ + 72, + 80 + ], + [ + 69, + 80 + ], + [ + 68, + 80 + ], + [ + 58, + 80 + ], + [ + 55, + 80 + ], + [ + 53, + 80 + ], + [ + 52, + 80 + ], + [ + 51, + 80 + ], + [ + 49, + 80 + ], + [ + 46, + 80 + ], + [ + 45, + 80 + ], + [ + 42, + 80 + ], + [ + 41, + 80 + ], + [ + 38, + 80 + ], + [ + 37, + 80 + ], + [ + 34, + 80 + ], + [ + 33, + 80 + ], + [ + 30, + 80 + ], + [ + 29, + 80 + ], + [ + 26, + 80 + ], + [ + 25, + 80 + ], + [ + 22, + 80 + ], + [ + 21, + 80 + ], + [ + 18, + 80 + ], + [ + 17, + 80 + ], + [ + 11, + 80 + ], + [ + 10, + 80 + ], + [ + 7, + 80 + ], + [ + 6, + 80 + ], + [ + 5, + 80 + ], + [ + 4, + 80 + ], + [ + 2, + 80 + ], + [ + 1, + 80 + ], + [ + 109, + 79 + ], + [ + 107, + 79 + ], + [ + 106, + 79 + ], + [ + 104, + 79 + ], + [ + 99, + 79 + ], + [ + 98, + 79 + ], + [ + 97, + 79 + ], + [ + 96, + 79 + ], + [ + 95, + 79 + ], + [ + 94, + 79 + ], + [ + 89, + 79 + ], + [ + 88, + 79 + ], + [ + 85, + 79 + ], + [ + 84, + 79 + ], + [ + 83, + 79 + ], + [ + 82, + 79 + ], + [ + 76, + 79 + ], + [ + 73, + 79 + ], + [ + 72, + 79 + ], + [ + 71, + 79 + ], + [ + 66, + 79 + ], + [ + 65, + 79 + ], + [ + 63, + 79 + ], + [ + 59, + 79 + ], + [ + 56, + 79 + ], + [ + 55, + 79 + ], + [ + 52, + 79 + ], + [ + 50, + 79 + ], + [ + 49, + 79 + ], + [ + 48, + 79 + ], + [ + 46, + 79 + ], + [ + 45, + 79 + ], + [ + 44, + 79 + ], + [ + 43, + 79 + ], + [ + 42, + 79 + ], + [ + 41, + 79 + ], + [ + 40, + 79 + ], + [ + 39, + 79 + ], + [ + 38, + 79 + ], + [ + 35, + 79 + ], + [ + 34, + 79 + ], + [ + 33, + 79 + ], + [ + 32, + 79 + ], + [ + 30, + 79 + ], + [ + 29, + 79 + ], + [ + 28, + 79 + ], + [ + 23, + 79 + ], + [ + 22, + 79 + ], + [ + 21, + 79 + ], + [ + 18, + 79 + ], + [ + 17, + 79 + ], + [ + 13, + 79 + ], + [ + 10, + 79 + ], + [ + 7, + 79 + ], + [ + 5, + 79 + ], + [ + 1, + 79 + ], + [ + 110, + 78 + ], + [ + 107, + 78 + ], + [ + 106, + 78 + ], + [ + 103, + 78 + ], + [ + 100, + 78 + ], + [ + 99, + 78 + ], + [ + 96, + 78 + ], + [ + 94, + 78 + ], + [ + 93, + 78 + ], + [ + 90, + 78 + ], + [ + 89, + 78 + ], + [ + 87, + 78 + ], + [ + 84, + 78 + ], + [ + 83, + 78 + ], + [ + 81, + 78 + ], + [ + 75, + 78 + ], + [ + 74, + 78 + ], + [ + 71, + 78 + ], + [ + 70, + 78 + ], + [ + 67, + 78 + ], + [ + 66, + 78 + ], + [ + 59, + 78 + ], + [ + 57, + 78 + ], + [ + 56, + 78 + ], + [ + 54, + 78 + ], + [ + 51, + 78 + ], + [ + 49, + 78 + ], + [ + 46, + 78 + ], + [ + 45, + 78 + ], + [ + 42, + 78 + ], + [ + 41, + 78 + ], + [ + 38, + 78 + ], + [ + 36, + 78 + ], + [ + 35, + 78 + ], + [ + 32, + 78 + ], + [ + 31, + 78 + ], + [ + 30, + 78 + ], + [ + 29, + 78 + ], + [ + 26, + 78 + ], + [ + 25, + 78 + ], + [ + 22, + 78 + ], + [ + 20, + 78 + ], + [ + 19, + 78 + ], + [ + 16, + 78 + ], + [ + 15, + 78 + ], + [ + 13, + 78 + ], + [ + 12, + 78 + ], + [ + 7, + 78 + ], + [ + 6, + 78 + ], + [ + 5, + 78 + ], + [ + 1, + 78 + ], + [ + 0, + 78 + ], + [ + 79, + 78 + ], + [ + 78, + 79 + ], + [ + 79, + 78 + ], + [ + 109, + 77 + ], + [ + 107, + 77 + ], + [ + 106, + 77 + ], + [ + 104, + 77 + ], + [ + 99, + 77 + ], + [ + 98, + 77 + ], + [ + 97, + 77 + ], + [ + 96, + 77 + ], + [ + 93, + 77 + ], + [ + 92, + 77 + ], + [ + 91, + 77 + ], + [ + 90, + 77 + ], + [ + 85, + 77 + ], + [ + 84, + 77 + ], + [ + 83, + 77 + ], + [ + 82, + 77 + ], + [ + 75, + 77 + ], + [ + 74, + 77 + ], + [ + 70, + 77 + ], + [ + 69, + 77 + ], + [ + 68, + 77 + ], + [ + 67, + 77 + ], + [ + 65, + 77 + ], + [ + 63, + 77 + ], + [ + 58, + 77 + ], + [ + 57, + 77 + ], + [ + 54, + 77 + ], + [ + 53, + 77 + ], + [ + 50, + 77 + ], + [ + 49, + 77 + ], + [ + 48, + 77 + ], + [ + 46, + 77 + ], + [ + 45, + 77 + ], + [ + 44, + 77 + ], + [ + 43, + 77 + ], + [ + 42, + 77 + ], + [ + 41, + 77 + ], + [ + 40, + 77 + ], + [ + 39, + 77 + ], + [ + 38, + 77 + ], + [ + 37, + 77 + ], + [ + 36, + 77 + ], + [ + 31, + 77 + ], + [ + 30, + 77 + ], + [ + 29, + 77 + ], + [ + 28, + 77 + ], + [ + 23, + 77 + ], + [ + 22, + 77 + ], + [ + 20, + 77 + ], + [ + 19, + 77 + ], + [ + 16, + 77 + ], + [ + 15, + 77 + ], + [ + 12, + 77 + ], + [ + 11, + 77 + ], + [ + 7, + 77 + ], + [ + 5, + 77 + ], + [ + 4, + 77 + ], + [ + 2, + 77 + ], + [ + 1, + 77 + ], + [ + 0, + 77 + ], + [ + 80, + 77 + ], + [ + 77, + 80 + ], + [ + 80, + 77 + ], + [ + 110, + 76 + ], + [ + 109, + 76 + ], + [ + 104, + 76 + ], + [ + 103, + 76 + ], + [ + 102, + 76 + ], + [ + 97, + 76 + ], + [ + 96, + 76 + ], + [ + 94, + 76 + ], + [ + 93, + 76 + ], + [ + 91, + 76 + ], + [ + 88, + 76 + ], + [ + 83, + 76 + ], + [ + 82, + 76 + ], + [ + 81, + 76 + ], + [ + 78, + 76 + ], + [ + 77, + 76 + ], + [ + 70, + 76 + ], + [ + 69, + 76 + ], + [ + 68, + 76 + ], + [ + 67, + 76 + ], + [ + 65, + 76 + ], + [ + 62, + 76 + ], + [ + 61, + 76 + ], + [ + 59, + 76 + ], + [ + 54, + 76 + ], + [ + 53, + 76 + ], + [ + 52, + 76 + ], + [ + 49, + 76 + ], + [ + 48, + 76 + ], + [ + 43, + 76 + ], + [ + 42, + 76 + ], + [ + 41, + 76 + ], + [ + 40, + 76 + ], + [ + 37, + 76 + ], + [ + 34, + 76 + ], + [ + 33, + 76 + ], + [ + 30, + 76 + ], + [ + 29, + 76 + ], + [ + 28, + 76 + ], + [ + 27, + 76 + ], + [ + 26, + 76 + ], + [ + 25, + 76 + ], + [ + 24, + 76 + ], + [ + 23, + 76 + ], + [ + 22, + 76 + ], + [ + 21, + 76 + ], + [ + 20, + 76 + ], + [ + 15, + 76 + ], + [ + 14, + 76 + ], + [ + 13, + 76 + ], + [ + 7, + 76 + ], + [ + 6, + 76 + ], + [ + 1, + 76 + ], + [ + 0, + 76 + ], + [ + 102, + 75 + ], + [ + 100, + 75 + ], + [ + 98, + 75 + ], + [ + 96, + 75 + ], + [ + 93, + 75 + ], + [ + 92, + 75 + ], + [ + 89, + 75 + ], + [ + 88, + 75 + ], + [ + 87, + 75 + ], + [ + 85, + 75 + ], + [ + 83, + 75 + ], + [ + 80, + 75 + ], + [ + 79, + 75 + ], + [ + 71, + 75 + ], + [ + 70, + 75 + ], + [ + 67, + 75 + ], + [ + 66, + 75 + ], + [ + 63, + 75 + ], + [ + 62, + 75 + ], + [ + 61, + 75 + ], + [ + 58, + 75 + ], + [ + 56, + 75 + ], + [ + 54, + 75 + ], + [ + 52, + 75 + ], + [ + 51, + 75 + ], + [ + 50, + 75 + ], + [ + 49, + 75 + ], + [ + 44, + 75 + ], + [ + 42, + 75 + ], + [ + 41, + 75 + ], + [ + 39, + 75 + ], + [ + 35, + 75 + ], + [ + 34, + 75 + ], + [ + 33, + 75 + ], + [ + 32, + 75 + ], + [ + 30, + 75 + ], + [ + 29, + 75 + ], + [ + 27, + 75 + ], + [ + 24, + 75 + ], + [ + 22, + 75 + ], + [ + 21, + 75 + ], + [ + 20, + 75 + ], + [ + 15, + 75 + ], + [ + 14, + 75 + ], + [ + 11, + 75 + ], + [ + 7, + 75 + ], + [ + 4, + 75 + ], + [ + 2, + 75 + ], + [ + 1, + 75 + ], + [ + 0, + 75 + ], + [ + 76, + 75 + ], + [ + 75, + 76 + ], + [ + 76, + 75 + ], + [ + 110, + 74 + ], + [ + 109, + 74 + ], + [ + 104, + 74 + ], + [ + 103, + 74 + ], + [ + 102, + 74 + ], + [ + 97, + 74 + ], + [ + 96, + 74 + ], + [ + 95, + 74 + ], + [ + 92, + 74 + ], + [ + 90, + 74 + ], + [ + 89, + 74 + ], + [ + 83, + 74 + ], + [ + 82, + 74 + ], + [ + 81, + 74 + ], + [ + 80, + 74 + ], + [ + 79, + 74 + ], + [ + 72, + 74 + ], + [ + 71, + 74 + ], + [ + 66, + 74 + ], + [ + 65, + 74 + ], + [ + 62, + 74 + ], + [ + 61, + 74 + ], + [ + 58, + 74 + ], + [ + 57, + 74 + ], + [ + 56, + 74 + ], + [ + 55, + 74 + ], + [ + 49, + 74 + ], + [ + 48, + 74 + ], + [ + 43, + 74 + ], + [ + 42, + 74 + ], + [ + 41, + 74 + ], + [ + 40, + 74 + ], + [ + 36, + 74 + ], + [ + 35, + 74 + ], + [ + 32, + 74 + ], + [ + 31, + 74 + ], + [ + 30, + 74 + ], + [ + 29, + 74 + ], + [ + 28, + 74 + ], + [ + 27, + 74 + ], + [ + 26, + 74 + ], + [ + 25, + 74 + ], + [ + 24, + 74 + ], + [ + 23, + 74 + ], + [ + 22, + 74 + ], + [ + 19, + 74 + ], + [ + 18, + 74 + ], + [ + 17, + 74 + ], + [ + 16, + 74 + ], + [ + 14, + 74 + ], + [ + 12, + 74 + ], + [ + 11, + 74 + ], + [ + 10, + 74 + ], + [ + 7, + 74 + ], + [ + 6, + 74 + ], + [ + 4, + 74 + ], + [ + 2, + 74 + ], + [ + 1, + 74 + ], + [ + 102, + 73 + ], + [ + 100, + 73 + ], + [ + 98, + 73 + ], + [ + 96, + 73 + ], + [ + 95, + 73 + ], + [ + 94, + 73 + ], + [ + 91, + 73 + ], + [ + 90, + 73 + ], + [ + 87, + 73 + ], + [ + 85, + 73 + ], + [ + 83, + 73 + ], + [ + 78, + 73 + ], + [ + 77, + 73 + ], + [ + 72, + 73 + ], + [ + 69, + 73 + ], + [ + 68, + 73 + ], + [ + 63, + 73 + ], + [ + 62, + 73 + ], + [ + 61, + 73 + ], + [ + 59, + 73 + ], + [ + 57, + 73 + ], + [ + 55, + 73 + ], + [ + 53, + 73 + ], + [ + 51, + 73 + ], + [ + 50, + 73 + ], + [ + 49, + 73 + ], + [ + 44, + 73 + ], + [ + 42, + 73 + ], + [ + 41, + 73 + ], + [ + 39, + 73 + ], + [ + 37, + 73 + ], + [ + 36, + 73 + ], + [ + 31, + 73 + ], + [ + 30, + 73 + ], + [ + 29, + 73 + ], + [ + 27, + 73 + ], + [ + 24, + 73 + ], + [ + 22, + 73 + ], + [ + 19, + 73 + ], + [ + 18, + 73 + ], + [ + 17, + 73 + ], + [ + 16, + 73 + ], + [ + 14, + 73 + ], + [ + 13, + 73 + ], + [ + 12, + 73 + ], + [ + 10, + 73 + ], + [ + 7, + 73 + ], + [ + 1, + 73 + ], + [ + 74, + 73 + ], + [ + 73, + 74 + ], + [ + 74, + 73 + ], + [ + 109, + 72 + ], + [ + 107, + 72 + ], + [ + 105, + 72 + ], + [ + 103, + 72 + ], + [ + 95, + 72 + ], + [ + 94, + 72 + ], + [ + 91, + 72 + ], + [ + 90, + 72 + ], + [ + 85, + 72 + ], + [ + 84, + 72 + ], + [ + 81, + 72 + ], + [ + 79, + 72 + ], + [ + 78, + 72 + ], + [ + 75, + 72 + ], + [ + 74, + 72 + ], + [ + 68, + 72 + ], + [ + 67, + 72 + ], + [ + 63, + 72 + ], + [ + 62, + 72 + ], + [ + 60, + 72 + ], + [ + 58, + 72 + ], + [ + 57, + 72 + ], + [ + 54, + 72 + ], + [ + 53, + 72 + ], + [ + 51, + 72 + ], + [ + 48, + 72 + ], + [ + 46, + 72 + ], + [ + 41, + 72 + ], + [ + 40, + 72 + ], + [ + 39, + 72 + ], + [ + 38, + 72 + ], + [ + 37, + 72 + ], + [ + 36, + 72 + ], + [ + 33, + 72 + ], + [ + 32, + 72 + ], + [ + 30, + 72 + ], + [ + 27, + 72 + ], + [ + 26, + 72 + ], + [ + 23, + 72 + ], + [ + 22, + 72 + ], + [ + 20, + 72 + ], + [ + 19, + 72 + ], + [ + 17, + 72 + ], + [ + 14, + 72 + ], + [ + 12, + 72 + ], + [ + 11, + 72 + ], + [ + 10, + 72 + ], + [ + 9, + 72 + ], + [ + 8, + 72 + ], + [ + 6, + 72 + ], + [ + 4, + 72 + ], + [ + 1, + 72 + ], + [ + 108, + 71 + ], + [ + 107, + 71 + ], + [ + 104, + 71 + ], + [ + 103, + 71 + ], + [ + 102, + 71 + ], + [ + 99, + 71 + ], + [ + 98, + 71 + ], + [ + 94, + 71 + ], + [ + 93, + 71 + ], + [ + 90, + 71 + ], + [ + 89, + 71 + ], + [ + 78, + 71 + ], + [ + 77, + 71 + ], + [ + 74, + 71 + ], + [ + 73, + 71 + ], + [ + 68, + 71 + ], + [ + 67, + 71 + ], + [ + 65, + 71 + ], + [ + 64, + 71 + ], + [ + 63, + 71 + ], + [ + 62, + 71 + ], + [ + 59, + 71 + ], + [ + 58, + 71 + ], + [ + 57, + 71 + ], + [ + 56, + 71 + ], + [ + 55, + 71 + ], + [ + 51, + 71 + ], + [ + 50, + 71 + ], + [ + 48, + 71 + ], + [ + 43, + 71 + ], + [ + 42, + 71 + ], + [ + 39, + 71 + ], + [ + 38, + 71 + ], + [ + 37, + 71 + ], + [ + 34, + 71 + ], + [ + 32, + 71 + ], + [ + 31, + 71 + ], + [ + 29, + 71 + ], + [ + 28, + 71 + ], + [ + 27, + 71 + ], + [ + 26, + 71 + ], + [ + 21, + 71 + ], + [ + 20, + 71 + ], + [ + 17, + 71 + ], + [ + 16, + 71 + ], + [ + 14, + 71 + ], + [ + 12, + 71 + ], + [ + 11, + 71 + ], + [ + 9, + 71 + ], + [ + 5, + 71 + ], + [ + 4, + 71 + ], + [ + 0, + 71 + ], + [ + 72, + 71 + ], + [ + 71, + 72 + ], + [ + 72, + 71 + ], + [ + 109, + 70 + ], + [ + 107, + 70 + ], + [ + 105, + 70 + ], + [ + 103, + 70 + ], + [ + 93, + 70 + ], + [ + 92, + 70 + ], + [ + 89, + 70 + ], + [ + 88, + 70 + ], + [ + 85, + 70 + ], + [ + 84, + 70 + ], + [ + 81, + 70 + ], + [ + 80, + 70 + ], + [ + 77, + 70 + ], + [ + 76, + 70 + ], + [ + 73, + 70 + ], + [ + 66, + 70 + ], + [ + 63, + 70 + ], + [ + 62, + 70 + ], + [ + 60, + 70 + ], + [ + 59, + 70 + ], + [ + 56, + 70 + ], + [ + 55, + 70 + ], + [ + 52, + 70 + ], + [ + 51, + 70 + ], + [ + 48, + 70 + ], + [ + 46, + 70 + ], + [ + 41, + 70 + ], + [ + 40, + 70 + ], + [ + 39, + 70 + ], + [ + 38, + 70 + ], + [ + 35, + 70 + ], + [ + 34, + 70 + ], + [ + 31, + 70 + ], + [ + 30, + 70 + ], + [ + 27, + 70 + ], + [ + 26, + 70 + ], + [ + 23, + 70 + ], + [ + 22, + 70 + ], + [ + 21, + 70 + ], + [ + 18, + 70 + ], + [ + 16, + 70 + ], + [ + 15, + 70 + ], + [ + 14, + 70 + ], + [ + 13, + 70 + ], + [ + 9, + 70 + ], + [ + 8, + 70 + ], + [ + 6, + 70 + ], + [ + 2, + 70 + ], + [ + 1, + 70 + ], + [ + 0, + 70 + ], + [ + 108, + 69 + ], + [ + 107, + 69 + ], + [ + 104, + 69 + ], + [ + 103, + 69 + ], + [ + 102, + 69 + ], + [ + 99, + 69 + ], + [ + 98, + 69 + ], + [ + 95, + 69 + ], + [ + 92, + 69 + ], + [ + 91, + 69 + ], + [ + 88, + 69 + ], + [ + 80, + 69 + ], + [ + 79, + 69 + ], + [ + 76, + 69 + ], + [ + 75, + 69 + ], + [ + 66, + 69 + ], + [ + 65, + 69 + ], + [ + 64, + 69 + ], + [ + 63, + 69 + ], + [ + 62, + 69 + ], + [ + 54, + 69 + ], + [ + 53, + 69 + ], + [ + 52, + 69 + ], + [ + 51, + 69 + ], + [ + 50, + 69 + ], + [ + 48, + 69 + ], + [ + 43, + 69 + ], + [ + 42, + 69 + ], + [ + 39, + 69 + ], + [ + 38, + 69 + ], + [ + 36, + 69 + ], + [ + 35, + 69 + ], + [ + 33, + 69 + ], + [ + 29, + 69 + ], + [ + 28, + 69 + ], + [ + 27, + 69 + ], + [ + 26, + 69 + ], + [ + 19, + 69 + ], + [ + 18, + 69 + ], + [ + 15, + 69 + ], + [ + 14, + 69 + ], + [ + 13, + 69 + ], + [ + 10, + 69 + ], + [ + 9, + 69 + ], + [ + 5, + 69 + ], + [ + 2, + 69 + ], + [ + 70, + 69 + ], + [ + 69, + 70 + ], + [ + 70, + 69 + ], + [ + 110, + 68 + ], + [ + 108, + 68 + ], + [ + 106, + 68 + ], + [ + 104, + 68 + ], + [ + 93, + 68 + ], + [ + 92, + 68 + ], + [ + 89, + 68 + ], + [ + 88, + 68 + ], + [ + 85, + 68 + ], + [ + 84, + 68 + ], + [ + 81, + 68 + ], + [ + 80, + 68 + ], + [ + 77, + 68 + ], + [ + 76, + 68 + ], + [ + 73, + 68 + ], + [ + 72, + 68 + ], + [ + 71, + 68 + ], + [ + 65, + 68 + ], + [ + 64, + 68 + ], + [ + 61, + 68 + ], + [ + 56, + 68 + ], + [ + 55, + 68 + ], + [ + 52, + 68 + ], + [ + 51, + 68 + ], + [ + 48, + 68 + ], + [ + 46, + 68 + ], + [ + 45, + 68 + ], + [ + 44, + 68 + ], + [ + 43, + 68 + ], + [ + 42, + 68 + ], + [ + 37, + 68 + ], + [ + 36, + 68 + ], + [ + 33, + 68 + ], + [ + 32, + 68 + ], + [ + 29, + 68 + ], + [ + 28, + 68 + ], + [ + 25, + 68 + ], + [ + 24, + 68 + ], + [ + 20, + 68 + ], + [ + 19, + 68 + ], + [ + 17, + 68 + ], + [ + 13, + 68 + ], + [ + 9, + 68 + ], + [ + 6, + 68 + ], + [ + 2, + 68 + ], + [ + 0, + 68 + ], + [ + 110, + 67 + ], + [ + 109, + 67 + ], + [ + 106, + 67 + ], + [ + 105, + 67 + ], + [ + 102, + 67 + ], + [ + 99, + 67 + ], + [ + 98, + 67 + ], + [ + 95, + 67 + ], + [ + 92, + 67 + ], + [ + 91, + 67 + ], + [ + 88, + 67 + ], + [ + 80, + 67 + ], + [ + 79, + 67 + ], + [ + 76, + 67 + ], + [ + 75, + 67 + ], + [ + 72, + 67 + ], + [ + 71, + 67 + ], + [ + 61, + 67 + ], + [ + 60, + 67 + ], + [ + 59, + 67 + ], + [ + 54, + 67 + ], + [ + 53, + 67 + ], + [ + 52, + 67 + ], + [ + 51, + 67 + ], + [ + 50, + 67 + ], + [ + 48, + 67 + ], + [ + 45, + 67 + ], + [ + 44, + 67 + ], + [ + 41, + 67 + ], + [ + 40, + 67 + ], + [ + 37, + 67 + ], + [ + 34, + 67 + ], + [ + 32, + 67 + ], + [ + 31, + 67 + ], + [ + 30, + 67 + ], + [ + 25, + 67 + ], + [ + 24, + 67 + ], + [ + 23, + 67 + ], + [ + 22, + 67 + ], + [ + 21, + 67 + ], + [ + 20, + 67 + ], + [ + 17, + 67 + ], + [ + 16, + 67 + ], + [ + 13, + 67 + ], + [ + 10, + 67 + ], + [ + 9, + 67 + ], + [ + 8, + 67 + ], + [ + 5, + 67 + ], + [ + 2, + 67 + ], + [ + 1, + 67 + ], + [ + 68, + 67 + ], + [ + 67, + 68 + ], + [ + 68, + 67 + ], + [ + 109, + 66 + ], + [ + 108, + 66 + ], + [ + 106, + 66 + ], + [ + 103, + 66 + ], + [ + 102, + 66 + ], + [ + 97, + 66 + ], + [ + 96, + 66 + ], + [ + 94, + 66 + ], + [ + 92, + 66 + ], + [ + 91, + 66 + ], + [ + 89, + 66 + ], + [ + 87, + 66 + ], + [ + 86, + 66 + ], + [ + 81, + 66 + ], + [ + 79, + 66 + ], + [ + 77, + 66 + ], + [ + 76, + 66 + ], + [ + 74, + 66 + ], + [ + 68, + 66 + ], + [ + 67, + 66 + ], + [ + 65, + 66 + ], + [ + 63, + 66 + ], + [ + 60, + 66 + ], + [ + 59, + 66 + ], + [ + 58, + 66 + ], + [ + 57, + 66 + ], + [ + 52, + 66 + ], + [ + 50, + 66 + ], + [ + 48, + 66 + ], + [ + 47, + 66 + ], + [ + 43, + 66 + ], + [ + 42, + 66 + ], + [ + 39, + 66 + ], + [ + 38, + 66 + ], + [ + 37, + 66 + ], + [ + 35, + 66 + ], + [ + 33, + 66 + ], + [ + 31, + 66 + ], + [ + 30, + 66 + ], + [ + 27, + 66 + ], + [ + 26, + 66 + ], + [ + 23, + 66 + ], + [ + 22, + 66 + ], + [ + 21, + 66 + ], + [ + 19, + 66 + ], + [ + 17, + 66 + ], + [ + 15, + 66 + ], + [ + 14, + 66 + ], + [ + 7, + 66 + ], + [ + 4, + 66 + ], + [ + 1, + 66 + ], + [ + 0, + 66 + ], + [ + 102, + 65 + ], + [ + 100, + 65 + ], + [ + 98, + 65 + ], + [ + 96, + 65 + ], + [ + 93, + 65 + ], + [ + 92, + 65 + ], + [ + 89, + 65 + ], + [ + 88, + 65 + ], + [ + 86, + 65 + ], + [ + 84, + 65 + ], + [ + 82, + 65 + ], + [ + 81, + 65 + ], + [ + 78, + 65 + ], + [ + 77, + 65 + ], + [ + 74, + 65 + ], + [ + 73, + 65 + ], + [ + 72, + 65 + ], + [ + 69, + 65 + ], + [ + 68, + 65 + ], + [ + 60, + 65 + ], + [ + 57, + 65 + ], + [ + 55, + 65 + ], + [ + 53, + 65 + ], + [ + 48, + 65 + ], + [ + 47, + 65 + ], + [ + 46, + 65 + ], + [ + 45, + 65 + ], + [ + 43, + 65 + ], + [ + 40, + 65 + ], + [ + 38, + 65 + ], + [ + 37, + 65 + ], + [ + 36, + 65 + ], + [ + 31, + 65 + ], + [ + 30, + 65 + ], + [ + 29, + 65 + ], + [ + 27, + 65 + ], + [ + 24, + 65 + ], + [ + 22, + 65 + ], + [ + 21, + 65 + ], + [ + 20, + 65 + ], + [ + 15, + 65 + ], + [ + 14, + 65 + ], + [ + 11, + 65 + ], + [ + 9, + 65 + ], + [ + 7, + 65 + ], + [ + 1, + 65 + ], + [ + 110, + 64 + ], + [ + 107, + 64 + ], + [ + 106, + 64 + ], + [ + 103, + 64 + ], + [ + 100, + 64 + ], + [ + 99, + 64 + ], + [ + 96, + 64 + ], + [ + 94, + 64 + ], + [ + 93, + 64 + ], + [ + 90, + 64 + ], + [ + 89, + 64 + ], + [ + 86, + 64 + ], + [ + 85, + 64 + ], + [ + 82, + 64 + ], + [ + 80, + 64 + ], + [ + 77, + 64 + ], + [ + 76, + 64 + ], + [ + 73, + 64 + ], + [ + 72, + 64 + ], + [ + 69, + 64 + ], + [ + 68, + 64 + ], + [ + 63, + 64 + ], + [ + 62, + 64 + ], + [ + 61, + 64 + ], + [ + 60, + 64 + ], + [ + 59, + 64 + ], + [ + 58, + 64 + ], + [ + 55, + 64 + ], + [ + 53, + 64 + ], + [ + 52, + 64 + ], + [ + 50, + 64 + ], + [ + 48, + 64 + ], + [ + 47, + 64 + ], + [ + 44, + 64 + ], + [ + 43, + 64 + ], + [ + 40, + 64 + ], + [ + 39, + 64 + ], + [ + 37, + 64 + ], + [ + 34, + 64 + ], + [ + 33, + 64 + ], + [ + 30, + 64 + ], + [ + 29, + 64 + ], + [ + 26, + 64 + ], + [ + 25, + 64 + ], + [ + 22, + 64 + ], + [ + 20, + 64 + ], + [ + 19, + 64 + ], + [ + 16, + 64 + ], + [ + 15, + 64 + ], + [ + 13, + 64 + ], + [ + 12, + 64 + ], + [ + 9, + 64 + ], + [ + 7, + 64 + ], + [ + 6, + 64 + ], + [ + 5, + 64 + ], + [ + 4, + 64 + ], + [ + 2, + 64 + ], + [ + 1, + 64 + ], + [ + 65, + 64 + ], + [ + 64, + 65 + ], + [ + 65, + 64 + ], + [ + 109, + 63 + ], + [ + 108, + 63 + ], + [ + 106, + 63 + ], + [ + 103, + 63 + ], + [ + 102, + 63 + ], + [ + 97, + 63 + ], + [ + 96, + 63 + ], + [ + 95, + 63 + ], + [ + 93, + 63 + ], + [ + 90, + 63 + ], + [ + 88, + 63 + ], + [ + 87, + 63 + ], + [ + 86, + 63 + ], + [ + 81, + 63 + ], + [ + 80, + 63 + ], + [ + 78, + 63 + ], + [ + 75, + 63 + ], + [ + 73, + 63 + ], + [ + 72, + 63 + ], + [ + 71, + 63 + ], + [ + 70, + 63 + ], + [ + 69, + 63 + ], + [ + 66, + 63 + ], + [ + 65, + 63 + ], + [ + 56, + 63 + ], + [ + 55, + 63 + ], + [ + 54, + 63 + ], + [ + 53, + 63 + ], + [ + 50, + 63 + ], + [ + 48, + 63 + ], + [ + 47, + 63 + ], + [ + 43, + 63 + ], + [ + 42, + 63 + ], + [ + 39, + 63 + ], + [ + 38, + 63 + ], + [ + 36, + 63 + ], + [ + 34, + 63 + ], + [ + 32, + 63 + ], + [ + 30, + 63 + ], + [ + 27, + 63 + ], + [ + 26, + 63 + ], + [ + 23, + 63 + ], + [ + 22, + 63 + ], + [ + 20, + 63 + ], + [ + 18, + 63 + ], + [ + 16, + 63 + ], + [ + 14, + 63 + ], + [ + 13, + 63 + ], + [ + 12, + 63 + ], + [ + 11, + 63 + ], + [ + 10, + 63 + ], + [ + 7, + 63 + ], + [ + 2, + 63 + ], + [ + 1, + 63 + ], + [ + 110, + 62 + ], + [ + 109, + 62 + ], + [ + 108, + 62 + ], + [ + 107, + 62 + ], + [ + 99, + 62 + ], + [ + 98, + 62 + ], + [ + 97, + 62 + ], + [ + 96, + 62 + ], + [ + 95, + 62 + ], + [ + 94, + 62 + ], + [ + 93, + 62 + ], + [ + 92, + 62 + ], + [ + 87, + 62 + ], + [ + 86, + 62 + ], + [ + 85, + 62 + ], + [ + 84, + 62 + ], + [ + 76, + 62 + ], + [ + 75, + 62 + ], + [ + 74, + 62 + ], + [ + 73, + 62 + ], + [ + 72, + 62 + ], + [ + 71, + 62 + ], + [ + 70, + 62 + ], + [ + 69, + 62 + ], + [ + 66, + 62 + ], + [ + 65, + 62 + ], + [ + 61, + 62 + ], + [ + 60, + 62 + ], + [ + 58, + 62 + ], + [ + 57, + 62 + ], + [ + 56, + 62 + ], + [ + 55, + 62 + ], + [ + 54, + 62 + ], + [ + 53, + 62 + ], + [ + 52, + 62 + ], + [ + 48, + 62 + ], + [ + 47, + 62 + ], + [ + 46, + 62 + ], + [ + 45, + 62 + ], + [ + 44, + 62 + ], + [ + 43, + 62 + ], + [ + 42, + 62 + ], + [ + 33, + 62 + ], + [ + 32, + 62 + ], + [ + 31, + 62 + ], + [ + 30, + 62 + ], + [ + 25, + 62 + ], + [ + 24, + 62 + ], + [ + 23, + 62 + ], + [ + 22, + 62 + ], + [ + 21, + 62 + ], + [ + 20, + 62 + ], + [ + 19, + 62 + ], + [ + 18, + 62 + ], + [ + 10, + 62 + ], + [ + 7, + 62 + ], + [ + 6, + 62 + ], + [ + 5, + 62 + ], + [ + 4, + 62 + ], + [ + 1, + 62 + ], + [ + 110, + 61 + ], + [ + 109, + 61 + ], + [ + 106, + 61 + ], + [ + 105, + 61 + ], + [ + 102, + 61 + ], + [ + 99, + 61 + ], + [ + 98, + 61 + ], + [ + 94, + 61 + ], + [ + 93, + 61 + ], + [ + 90, + 61 + ], + [ + 89, + 61 + ], + [ + 78, + 61 + ], + [ + 77, + 61 + ], + [ + 74, + 61 + ], + [ + 73, + 61 + ], + [ + 70, + 61 + ], + [ + 69, + 61 + ], + [ + 60, + 61 + ], + [ + 58, + 61 + ], + [ + 57, + 61 + ], + [ + 56, + 61 + ], + [ + 55, + 61 + ], + [ + 51, + 61 + ], + [ + 50, + 61 + ], + [ + 48, + 61 + ], + [ + 45, + 61 + ], + [ + 44, + 61 + ], + [ + 41, + 61 + ], + [ + 40, + 61 + ], + [ + 36, + 61 + ], + [ + 35, + 61 + ], + [ + 33, + 61 + ], + [ + 30, + 61 + ], + [ + 25, + 61 + ], + [ + 24, + 61 + ], + [ + 23, + 61 + ], + [ + 22, + 61 + ], + [ + 19, + 61 + ], + [ + 18, + 61 + ], + [ + 15, + 61 + ], + [ + 12, + 61 + ], + [ + 11, + 61 + ], + [ + 9, + 61 + ], + [ + 8, + 61 + ], + [ + 5, + 61 + ], + [ + 4, + 61 + ], + [ + 1, + 61 + ], + [ + 0, + 61 + ], + [ + 66, + 61 + ], + [ + 61, + 66 + ], + [ + 66, + 61 + ], + [ + 110, + 60 + ], + [ + 108, + 60 + ], + [ + 105, + 60 + ], + [ + 103, + 60 + ], + [ + 102, + 60 + ], + [ + 100, + 60 + ], + [ + 99, + 60 + ], + [ + 97, + 60 + ], + [ + 95, + 60 + ], + [ + 94, + 60 + ], + [ + 93, + 60 + ], + [ + 92, + 60 + ], + [ + 87, + 60 + ], + [ + 84, + 60 + ], + [ + 82, + 60 + ], + [ + 80, + 60 + ], + [ + 78, + 60 + ], + [ + 75, + 60 + ], + [ + 73, + 60 + ], + [ + 71, + 60 + ], + [ + 69, + 60 + ], + [ + 68, + 60 + ], + [ + 66, + 60 + ], + [ + 64, + 60 + ], + [ + 58, + 60 + ], + [ + 55, + 60 + ], + [ + 54, + 60 + ], + [ + 51, + 60 + ], + [ + 48, + 60 + ], + [ + 46, + 60 + ], + [ + 44, + 60 + ], + [ + 42, + 60 + ], + [ + 41, + 60 + ], + [ + 39, + 60 + ], + [ + 37, + 60 + ], + [ + 36, + 60 + ], + [ + 35, + 60 + ], + [ + 34, + 60 + ], + [ + 33, + 60 + ], + [ + 32, + 60 + ], + [ + 31, + 60 + ], + [ + 30, + 60 + ], + [ + 29, + 60 + ], + [ + 26, + 60 + ], + [ + 25, + 60 + ], + [ + 22, + 60 + ], + [ + 21, + 60 + ], + [ + 19, + 60 + ], + [ + 16, + 60 + ], + [ + 13, + 60 + ], + [ + 11, + 60 + ], + [ + 10, + 60 + ], + [ + 8, + 60 + ], + [ + 5, + 60 + ], + [ + 4, + 60 + ], + [ + 2, + 60 + ], + [ + 1, + 60 + ], + [ + 0, + 60 + ], + [ + 63, + 60 + ], + [ + 60, + 63 + ], + [ + 63, + 60 + ], + [ + 110, + 59 + ], + [ + 109, + 59 + ], + [ + 108, + 59 + ], + [ + 107, + 59 + ], + [ + 102, + 59 + ], + [ + 100, + 59 + ], + [ + 99, + 59 + ], + [ + 97, + 59 + ], + [ + 95, + 59 + ], + [ + 94, + 59 + ], + [ + 89, + 59 + ], + [ + 88, + 59 + ], + [ + 87, + 59 + ], + [ + 85, + 59 + ], + [ + 82, + 59 + ], + [ + 81, + 59 + ], + [ + 78, + 59 + ], + [ + 77, + 59 + ], + [ + 76, + 59 + ], + [ + 75, + 59 + ], + [ + 71, + 59 + ], + [ + 70, + 59 + ], + [ + 68, + 59 + ], + [ + 64, + 59 + ], + [ + 58, + 59 + ], + [ + 56, + 59 + ], + [ + 54, + 59 + ], + [ + 52, + 59 + ], + [ + 44, + 59 + ], + [ + 42, + 59 + ], + [ + 40, + 59 + ], + [ + 38, + 59 + ], + [ + 37, + 59 + ], + [ + 36, + 59 + ], + [ + 33, + 59 + ], + [ + 32, + 59 + ], + [ + 29, + 59 + ], + [ + 27, + 59 + ], + [ + 25, + 59 + ], + [ + 23, + 59 + ], + [ + 19, + 59 + ], + [ + 18, + 59 + ], + [ + 15, + 59 + ], + [ + 14, + 59 + ], + [ + 11, + 59 + ], + [ + 10, + 59 + ], + [ + 9, + 59 + ], + [ + 6, + 59 + ], + [ + 5, + 59 + ], + [ + 4, + 59 + ], + [ + 62, + 59 + ], + [ + 59, + 62 + ], + [ + 62, + 59 + ], + [ + 110, + 58 + ], + [ + 108, + 58 + ], + [ + 106, + 58 + ], + [ + 104, + 58 + ], + [ + 102, + 58 + ], + [ + 101, + 58 + ], + [ + 100, + 58 + ], + [ + 99, + 58 + ], + [ + 98, + 58 + ], + [ + 97, + 58 + ], + [ + 96, + 58 + ], + [ + 95, + 58 + ], + [ + 94, + 58 + ], + [ + 91, + 58 + ], + [ + 90, + 58 + ], + [ + 87, + 58 + ], + [ + 86, + 58 + ], + [ + 83, + 58 + ], + [ + 82, + 58 + ], + [ + 79, + 58 + ], + [ + 78, + 58 + ], + [ + 75, + 58 + ], + [ + 74, + 58 + ], + [ + 72, + 58 + ], + [ + 71, + 58 + ], + [ + 68, + 58 + ], + [ + 67, + 58 + ], + [ + 65, + 58 + ], + [ + 64, + 58 + ], + [ + 61, + 58 + ], + [ + 54, + 58 + ], + [ + 53, + 58 + ], + [ + 50, + 58 + ], + [ + 49, + 58 + ], + [ + 47, + 58 + ], + [ + 45, + 58 + ], + [ + 44, + 58 + ], + [ + 43, + 58 + ], + [ + 42, + 58 + ], + [ + 37, + 58 + ], + [ + 36, + 58 + ], + [ + 33, + 58 + ], + [ + 32, + 58 + ], + [ + 29, + 58 + ], + [ + 28, + 58 + ], + [ + 25, + 58 + ], + [ + 24, + 58 + ], + [ + 20, + 58 + ], + [ + 19, + 58 + ], + [ + 17, + 58 + ], + [ + 12, + 58 + ], + [ + 11, + 58 + ], + [ + 10, + 58 + ], + [ + 7, + 58 + ], + [ + 5, + 58 + ], + [ + 4, + 58 + ], + [ + 3, + 58 + ], + [ + 2, + 58 + ], + [ + 110, + 57 + ], + [ + 109, + 57 + ], + [ + 106, + 57 + ], + [ + 105, + 57 + ], + [ + 101, + 57 + ], + [ + 100, + 57 + ], + [ + 97, + 57 + ], + [ + 96, + 57 + ], + [ + 94, + 57 + ], + [ + 93, + 57 + ], + [ + 90, + 57 + ], + [ + 89, + 57 + ], + [ + 87, + 57 + ], + [ + 86, + 57 + ], + [ + 85, + 57 + ], + [ + 84, + 57 + ], + [ + 83, + 57 + ], + [ + 82, + 57 + ], + [ + 81, + 57 + ], + [ + 78, + 57 + ], + [ + 77, + 57 + ], + [ + 74, + 57 + ], + [ + 73, + 57 + ], + [ + 72, + 57 + ], + [ + 71, + 57 + ], + [ + 68, + 57 + ], + [ + 67, + 57 + ], + [ + 61, + 57 + ], + [ + 60, + 57 + ], + [ + 59, + 57 + ], + [ + 56, + 57 + ], + [ + 55, + 57 + ], + [ + 49, + 57 + ], + [ + 47, + 57 + ], + [ + 46, + 57 + ], + [ + 45, + 57 + ], + [ + 44, + 57 + ], + [ + 41, + 57 + ], + [ + 40, + 57 + ], + [ + 37, + 57 + ], + [ + 34, + 57 + ], + [ + 32, + 57 + ], + [ + 31, + 57 + ], + [ + 30, + 57 + ], + [ + 25, + 57 + ], + [ + 24, + 57 + ], + [ + 23, + 57 + ], + [ + 22, + 57 + ], + [ + 21, + 57 + ], + [ + 20, + 57 + ], + [ + 17, + 57 + ], + [ + 16, + 57 + ], + [ + 12, + 57 + ], + [ + 11, + 57 + ], + [ + 8, + 57 + ], + [ + 7, + 57 + ], + [ + 6, + 57 + ], + [ + 4, + 57 + ], + [ + 3, + 57 + ], + [ + 2, + 57 + ], + [ + 1, + 57 + ], + [ + 0, + 57 + ], + [ + 58, + 57 + ], + [ + 57, + 58 + ], + [ + 58, + 57 + ], + [ + 108, + 56 + ], + [ + 107, + 56 + ], + [ + 104, + 56 + ], + [ + 103, + 56 + ], + [ + 101, + 56 + ], + [ + 100, + 56 + ], + [ + 97, + 56 + ], + [ + 96, + 56 + ], + [ + 95, + 56 + ], + [ + 92, + 56 + ], + [ + 91, + 56 + ], + [ + 88, + 56 + ], + [ + 87, + 56 + ], + [ + 86, + 56 + ], + [ + 85, + 56 + ], + [ + 84, + 56 + ], + [ + 83, + 56 + ], + [ + 82, + 56 + ], + [ + 81, + 56 + ], + [ + 80, + 56 + ], + [ + 79, + 56 + ], + [ + 76, + 56 + ], + [ + 75, + 56 + ], + [ + 72, + 56 + ], + [ + 71, + 56 + ], + [ + 68, + 56 + ], + [ + 67, + 56 + ], + [ + 65, + 56 + ], + [ + 64, + 56 + ], + [ + 63, + 56 + ], + [ + 62, + 56 + ], + [ + 59, + 56 + ], + [ + 54, + 56 + ], + [ + 53, + 56 + ], + [ + 52, + 56 + ], + [ + 49, + 56 + ], + [ + 47, + 56 + ], + [ + 46, + 56 + ], + [ + 43, + 56 + ], + [ + 42, + 56 + ], + [ + 39, + 56 + ], + [ + 38, + 56 + ], + [ + 37, + 56 + ], + [ + 34, + 56 + ], + [ + 32, + 56 + ], + [ + 31, + 56 + ], + [ + 29, + 56 + ], + [ + 28, + 56 + ], + [ + 27, + 56 + ], + [ + 26, + 56 + ], + [ + 21, + 56 + ], + [ + 20, + 56 + ], + [ + 17, + 56 + ], + [ + 16, + 56 + ], + [ + 14, + 56 + ], + [ + 13, + 56 + ], + [ + 10, + 56 + ], + [ + 7, + 56 + ], + [ + 6, + 56 + ], + [ + 3, + 56 + ], + [ + 110, + 55 + ], + [ + 107, + 55 + ], + [ + 106, + 55 + ], + [ + 103, + 55 + ], + [ + 100, + 55 + ], + [ + 99, + 55 + ], + [ + 96, + 55 + ], + [ + 94, + 55 + ], + [ + 93, + 55 + ], + [ + 90, + 55 + ], + [ + 89, + 55 + ], + [ + 86, + 55 + ], + [ + 85, + 55 + ], + [ + 82, + 55 + ], + [ + 80, + 55 + ], + [ + 77, + 55 + ], + [ + 76, + 55 + ], + [ + 73, + 55 + ], + [ + 72, + 55 + ], + [ + 69, + 55 + ], + [ + 68, + 55 + ], + [ + 65, + 55 + ], + [ + 64, + 55 + ], + [ + 63, + 55 + ], + [ + 62, + 55 + ], + [ + 61, + 55 + ], + [ + 60, + 55 + ], + [ + 59, + 55 + ], + [ + 58, + 55 + ], + [ + 52, + 55 + ], + [ + 50, + 55 + ], + [ + 48, + 55 + ], + [ + 47, + 55 + ], + [ + 44, + 55 + ], + [ + 43, + 55 + ], + [ + 40, + 55 + ], + [ + 39, + 55 + ], + [ + 37, + 55 + ], + [ + 34, + 55 + ], + [ + 33, + 55 + ], + [ + 30, + 55 + ], + [ + 29, + 55 + ], + [ + 26, + 55 + ], + [ + 25, + 55 + ], + [ + 22, + 55 + ], + [ + 20, + 55 + ], + [ + 19, + 55 + ], + [ + 16, + 55 + ], + [ + 15, + 55 + ], + [ + 13, + 55 + ], + [ + 12, + 55 + ], + [ + 9, + 55 + ], + [ + 7, + 55 + ], + [ + 6, + 55 + ], + [ + 5, + 55 + ], + [ + 4, + 55 + ], + [ + 2, + 55 + ], + [ + 1, + 55 + ], + [ + 109, + 54 + ], + [ + 108, + 54 + ], + [ + 105, + 54 + ], + [ + 104, + 54 + ], + [ + 102, + 54 + ], + [ + 99, + 54 + ], + [ + 98, + 54 + ], + [ + 95, + 54 + ], + [ + 93, + 54 + ], + [ + 91, + 54 + ], + [ + 89, + 54 + ], + [ + 85, + 54 + ], + [ + 84, + 54 + ], + [ + 81, + 54 + ], + [ + 79, + 54 + ], + [ + 77, + 54 + ], + [ + 75, + 54 + ], + [ + 73, + 54 + ], + [ + 65, + 54 + ], + [ + 64, + 54 + ], + [ + 60, + 54 + ], + [ + 59, + 54 + ], + [ + 56, + 54 + ], + [ + 53, + 54 + ], + [ + 50, + 54 + ], + [ + 46, + 54 + ], + [ + 43, + 54 + ], + [ + 42, + 54 + ], + [ + 41, + 54 + ], + [ + 40, + 54 + ], + [ + 36, + 54 + ], + [ + 34, + 54 + ], + [ + 33, + 54 + ], + [ + 31, + 54 + ], + [ + 30, + 54 + ], + [ + 29, + 54 + ], + [ + 28, + 54 + ], + [ + 23, + 54 + ], + [ + 22, + 54 + ], + [ + 21, + 54 + ], + [ + 19, + 54 + ], + [ + 16, + 54 + ], + [ + 10, + 54 + ], + [ + 8, + 54 + ], + [ + 6, + 54 + ], + [ + 5, + 54 + ], + [ + 1, + 54 + ], + [ + 0, + 54 + ], + [ + 55, + 54 + ], + [ + 54, + 55 + ], + [ + 55, + 54 + ], + [ + 109, + 53 + ], + [ + 108, + 53 + ], + [ + 105, + 53 + ], + [ + 104, + 53 + ], + [ + 102, + 53 + ], + [ + 101, + 53 + ], + [ + 98, + 53 + ], + [ + 97, + 53 + ], + [ + 94, + 53 + ], + [ + 93, + 53 + ], + [ + 90, + 53 + ], + [ + 89, + 53 + ], + [ + 87, + 53 + ], + [ + 84, + 53 + ], + [ + 83, + 53 + ], + [ + 81, + 53 + ], + [ + 80, + 53 + ], + [ + 77, + 53 + ], + [ + 76, + 53 + ], + [ + 73, + 53 + ], + [ + 72, + 53 + ], + [ + 69, + 53 + ], + [ + 68, + 53 + ], + [ + 59, + 53 + ], + [ + 58, + 53 + ], + [ + 55, + 53 + ], + [ + 52, + 53 + ], + [ + 51, + 53 + ], + [ + 50, + 53 + ], + [ + 49, + 53 + ], + [ + 46, + 53 + ], + [ + 45, + 53 + ], + [ + 42, + 53 + ], + [ + 41, + 53 + ], + [ + 38, + 53 + ], + [ + 37, + 53 + ], + [ + 34, + 53 + ], + [ + 33, + 53 + ], + [ + 28, + 53 + ], + [ + 27, + 53 + ], + [ + 24, + 53 + ], + [ + 23, + 53 + ], + [ + 20, + 53 + ], + [ + 19, + 53 + ], + [ + 16, + 53 + ], + [ + 15, + 53 + ], + [ + 14, + 53 + ], + [ + 13, + 53 + ], + [ + 12, + 53 + ], + [ + 8, + 53 + ], + [ + 4, + 53 + ], + [ + 3, + 53 + ], + [ + 54, + 53 + ], + [ + 53, + 54 + ], + [ + 54, + 53 + ], + [ + 108, + 52 + ], + [ + 107, + 52 + ], + [ + 104, + 52 + ], + [ + 103, + 52 + ], + [ + 102, + 52 + ], + [ + 99, + 52 + ], + [ + 98, + 52 + ], + [ + 94, + 52 + ], + [ + 93, + 52 + ], + [ + 90, + 52 + ], + [ + 89, + 52 + ], + [ + 78, + 52 + ], + [ + 77, + 52 + ], + [ + 74, + 52 + ], + [ + 73, + 52 + ], + [ + 72, + 52 + ], + [ + 71, + 52 + ], + [ + 68, + 52 + ], + [ + 67, + 52 + ], + [ + 65, + 52 + ], + [ + 64, + 52 + ], + [ + 63, + 52 + ], + [ + 62, + 52 + ], + [ + 59, + 52 + ], + [ + 58, + 52 + ], + [ + 57, + 52 + ], + [ + 56, + 52 + ], + [ + 55, + 52 + ], + [ + 54, + 52 + ], + [ + 51, + 52 + ], + [ + 48, + 52 + ], + [ + 43, + 52 + ], + [ + 42, + 52 + ], + [ + 39, + 52 + ], + [ + 38, + 52 + ], + [ + 37, + 52 + ], + [ + 34, + 52 + ], + [ + 32, + 52 + ], + [ + 31, + 52 + ], + [ + 29, + 52 + ], + [ + 28, + 52 + ], + [ + 27, + 52 + ], + [ + 26, + 52 + ], + [ + 21, + 52 + ], + [ + 20, + 52 + ], + [ + 17, + 52 + ], + [ + 16, + 52 + ], + [ + 14, + 52 + ], + [ + 12, + 52 + ], + [ + 11, + 52 + ], + [ + 9, + 52 + ], + [ + 5, + 52 + ], + [ + 4, + 52 + ], + [ + 0, + 52 + ], + [ + 110, + 51 + ], + [ + 109, + 51 + ], + [ + 106, + 51 + ], + [ + 105, + 51 + ], + [ + 102, + 51 + ], + [ + 99, + 51 + ], + [ + 98, + 51 + ], + [ + 94, + 51 + ], + [ + 93, + 51 + ], + [ + 90, + 51 + ], + [ + 89, + 51 + ], + [ + 78, + 51 + ], + [ + 77, + 51 + ], + [ + 74, + 51 + ], + [ + 73, + 51 + ], + [ + 70, + 51 + ], + [ + 69, + 51 + ], + [ + 66, + 51 + ], + [ + 61, + 51 + ], + [ + 60, + 51 + ], + [ + 58, + 51 + ], + [ + 57, + 51 + ], + [ + 56, + 51 + ], + [ + 55, + 51 + ], + [ + 54, + 51 + ], + [ + 45, + 51 + ], + [ + 44, + 51 + ], + [ + 41, + 51 + ], + [ + 40, + 51 + ], + [ + 36, + 51 + ], + [ + 35, + 51 + ], + [ + 33, + 51 + ], + [ + 30, + 51 + ], + [ + 25, + 51 + ], + [ + 24, + 51 + ], + [ + 23, + 51 + ], + [ + 22, + 51 + ], + [ + 19, + 51 + ], + [ + 18, + 51 + ], + [ + 15, + 51 + ], + [ + 12, + 51 + ], + [ + 11, + 51 + ], + [ + 9, + 51 + ], + [ + 8, + 51 + ], + [ + 5, + 51 + ], + [ + 4, + 51 + ], + [ + 1, + 51 + ], + [ + 0, + 51 + ], + [ + 110, + 50 + ], + [ + 108, + 50 + ], + [ + 106, + 50 + ], + [ + 104, + 50 + ], + [ + 101, + 50 + ], + [ + 99, + 50 + ], + [ + 97, + 50 + ], + [ + 95, + 50 + ], + [ + 94, + 50 + ], + [ + 93, + 50 + ], + [ + 92, + 50 + ], + [ + 91, + 50 + ], + [ + 90, + 50 + ], + [ + 89, + 50 + ], + [ + 88, + 50 + ], + [ + 87, + 50 + ], + [ + 84, + 50 + ], + [ + 83, + 50 + ], + [ + 81, + 50 + ], + [ + 79, + 50 + ], + [ + 77, + 50 + ], + [ + 75, + 50 + ], + [ + 73, + 50 + ], + [ + 71, + 50 + ], + [ + 69, + 50 + ], + [ + 67, + 50 + ], + [ + 61, + 50 + ], + [ + 60, + 50 + ], + [ + 58, + 50 + ], + [ + 55, + 50 + ], + [ + 49, + 50 + ], + [ + 48, + 50 + ], + [ + 46, + 50 + ], + [ + 44, + 50 + ], + [ + 42, + 50 + ], + [ + 40, + 50 + ], + [ + 38, + 50 + ], + [ + 33, + 50 + ], + [ + 32, + 50 + ], + [ + 31, + 50 + ], + [ + 30, + 50 + ], + [ + 28, + 50 + ], + [ + 27, + 50 + ], + [ + 25, + 50 + ], + [ + 22, + 50 + ], + [ + 21, + 50 + ], + [ + 19, + 50 + ], + [ + 17, + 50 + ], + [ + 15, + 50 + ], + [ + 14, + 50 + ], + [ + 12, + 50 + ], + [ + 10, + 50 + ], + [ + 9, + 50 + ], + [ + 5, + 50 + ], + [ + 4, + 50 + ], + [ + 3, + 50 + ], + [ + 2, + 50 + ], + [ + 1, + 50 + ], + [ + 54, + 50 + ], + [ + 50, + 54 + ], + [ + 54, + 50 + ], + [ + 108, + 49 + ], + [ + 107, + 49 + ], + [ + 104, + 49 + ], + [ + 103, + 49 + ], + [ + 101, + 49 + ], + [ + 100, + 49 + ], + [ + 97, + 49 + ], + [ + 96, + 49 + ], + [ + 94, + 49 + ], + [ + 93, + 49 + ], + [ + 90, + 49 + ], + [ + 89, + 49 + ], + [ + 87, + 49 + ], + [ + 86, + 49 + ], + [ + 85, + 49 + ], + [ + 84, + 49 + ], + [ + 83, + 49 + ], + [ + 82, + 49 + ], + [ + 81, + 49 + ], + [ + 78, + 49 + ], + [ + 77, + 49 + ], + [ + 74, + 49 + ], + [ + 73, + 49 + ], + [ + 70, + 49 + ], + [ + 69, + 49 + ], + [ + 66, + 49 + ], + [ + 65, + 49 + ], + [ + 64, + 49 + ], + [ + 63, + 49 + ], + [ + 62, + 49 + ], + [ + 58, + 49 + ], + [ + 57, + 49 + ], + [ + 56, + 49 + ], + [ + 55, + 49 + ], + [ + 46, + 49 + ], + [ + 43, + 49 + ], + [ + 42, + 49 + ], + [ + 39, + 49 + ], + [ + 38, + 49 + ], + [ + 36, + 49 + ], + [ + 35, + 49 + ], + [ + 33, + 49 + ], + [ + 29, + 49 + ], + [ + 28, + 49 + ], + [ + 27, + 49 + ], + [ + 26, + 49 + ], + [ + 19, + 49 + ], + [ + 18, + 49 + ], + [ + 15, + 49 + ], + [ + 14, + 49 + ], + [ + 12, + 49 + ], + [ + 11, + 49 + ], + [ + 7, + 49 + ], + [ + 6, + 49 + ], + [ + 4, + 49 + ], + [ + 3, + 49 + ], + [ + 2, + 49 + ], + [ + 0, + 49 + ], + [ + 110, + 48 + ], + [ + 108, + 48 + ], + [ + 106, + 48 + ], + [ + 104, + 48 + ], + [ + 93, + 48 + ], + [ + 92, + 48 + ], + [ + 89, + 48 + ], + [ + 88, + 48 + ], + [ + 85, + 48 + ], + [ + 84, + 48 + ], + [ + 81, + 48 + ], + [ + 80, + 48 + ], + [ + 77, + 48 + ], + [ + 76, + 48 + ], + [ + 73, + 48 + ], + [ + 72, + 48 + ], + [ + 71, + 48 + ], + [ + 68, + 48 + ], + [ + 67, + 48 + ], + [ + 65, + 48 + ], + [ + 64, + 48 + ], + [ + 61, + 48 + ], + [ + 56, + 48 + ], + [ + 55, + 48 + ], + [ + 52, + 48 + ], + [ + 46, + 48 + ], + [ + 45, + 48 + ], + [ + 44, + 48 + ], + [ + 43, + 48 + ], + [ + 42, + 48 + ], + [ + 37, + 48 + ], + [ + 36, + 48 + ], + [ + 33, + 48 + ], + [ + 32, + 48 + ], + [ + 29, + 48 + ], + [ + 28, + 48 + ], + [ + 25, + 48 + ], + [ + 24, + 48 + ], + [ + 20, + 48 + ], + [ + 19, + 48 + ], + [ + 17, + 48 + ], + [ + 13, + 48 + ], + [ + 9, + 48 + ], + [ + 6, + 48 + ], + [ + 2, + 48 + ], + [ + 0, + 48 + ], + [ + 51, + 48 + ], + [ + 48, + 51 + ], + [ + 51, + 48 + ], + [ + 109, + 47 + ], + [ + 107, + 47 + ], + [ + 105, + 47 + ], + [ + 103, + 47 + ], + [ + 102, + 47 + ], + [ + 101, + 47 + ], + [ + 100, + 47 + ], + [ + 99, + 47 + ], + [ + 98, + 47 + ], + [ + 97, + 47 + ], + [ + 96, + 47 + ], + [ + 93, + 47 + ], + [ + 92, + 47 + ], + [ + 89, + 47 + ], + [ + 88, + 47 + ], + [ + 87, + 47 + ], + [ + 86, + 47 + ], + [ + 83, + 47 + ], + [ + 82, + 47 + ], + [ + 80, + 47 + ], + [ + 77, + 47 + ], + [ + 76, + 47 + ], + [ + 73, + 47 + ], + [ + 72, + 47 + ], + [ + 71, + 47 + ], + [ + 68, + 47 + ], + [ + 67, + 47 + ], + [ + 63, + 47 + ], + [ + 62, + 47 + ], + [ + 60, + 47 + ], + [ + 56, + 47 + ], + [ + 55, + 47 + ], + [ + 52, + 47 + ], + [ + 50, + 47 + ], + [ + 41, + 47 + ], + [ + 40, + 47 + ], + [ + 39, + 47 + ], + [ + 38, + 47 + ], + [ + 37, + 47 + ], + [ + 36, + 47 + ], + [ + 33, + 47 + ], + [ + 32, + 47 + ], + [ + 30, + 47 + ], + [ + 27, + 47 + ], + [ + 26, + 47 + ], + [ + 23, + 47 + ], + [ + 22, + 47 + ], + [ + 20, + 47 + ], + [ + 19, + 47 + ], + [ + 17, + 47 + ], + [ + 14, + 47 + ], + [ + 13, + 47 + ], + [ + 8, + 47 + ], + [ + 7, + 47 + ], + [ + 5, + 47 + ], + [ + 3, + 47 + ], + [ + 1, + 47 + ], + [ + 0, + 47 + ], + [ + 49, + 47 + ], + [ + 47, + 49 + ], + [ + 49, + 47 + ], + [ + 110, + 46 + ], + [ + 108, + 46 + ], + [ + 106, + 46 + ], + [ + 104, + 46 + ], + [ + 102, + 46 + ], + [ + 101, + 46 + ], + [ + 100, + 46 + ], + [ + 99, + 46 + ], + [ + 98, + 46 + ], + [ + 97, + 46 + ], + [ + 96, + 46 + ], + [ + 93, + 46 + ], + [ + 92, + 46 + ], + [ + 89, + 46 + ], + [ + 88, + 46 + ], + [ + 85, + 46 + ], + [ + 84, + 46 + ], + [ + 81, + 46 + ], + [ + 79, + 46 + ], + [ + 78, + 46 + ], + [ + 75, + 46 + ], + [ + 74, + 46 + ], + [ + 72, + 46 + ], + [ + 71, + 46 + ], + [ + 68, + 46 + ], + [ + 67, + 46 + ], + [ + 63, + 46 + ], + [ + 62, + 46 + ], + [ + 60, + 46 + ], + [ + 59, + 46 + ], + [ + 58, + 46 + ], + [ + 57, + 46 + ], + [ + 54, + 46 + ], + [ + 53, + 46 + ], + [ + 51, + 46 + ], + [ + 48, + 46 + ], + [ + 41, + 46 + ], + [ + 40, + 46 + ], + [ + 39, + 46 + ], + [ + 38, + 46 + ], + [ + 36, + 46 + ], + [ + 33, + 46 + ], + [ + 32, + 46 + ], + [ + 29, + 46 + ], + [ + 28, + 46 + ], + [ + 25, + 46 + ], + [ + 24, + 46 + ], + [ + 21, + 46 + ], + [ + 18, + 46 + ], + [ + 16, + 46 + ], + [ + 15, + 46 + ], + [ + 13, + 46 + ], + [ + 9, + 46 + ], + [ + 7, + 46 + ], + [ + 5, + 46 + ], + [ + 4, + 46 + ], + [ + 3, + 46 + ], + [ + 2, + 46 + ], + [ + 109, + 45 + ], + [ + 108, + 45 + ], + [ + 105, + 45 + ], + [ + 104, + 45 + ], + [ + 102, + 45 + ], + [ + 99, + 45 + ], + [ + 98, + 45 + ], + [ + 95, + 45 + ], + [ + 93, + 45 + ], + [ + 91, + 45 + ], + [ + 89, + 45 + ], + [ + 87, + 45 + ], + [ + 86, + 45 + ], + [ + 83, + 45 + ], + [ + 82, + 45 + ], + [ + 80, + 45 + ], + [ + 78, + 45 + ], + [ + 76, + 45 + ], + [ + 74, + 45 + ], + [ + 72, + 45 + ], + [ + 71, + 45 + ], + [ + 70, + 45 + ], + [ + 69, + 45 + ], + [ + 68, + 45 + ], + [ + 67, + 45 + ], + [ + 66, + 45 + ], + [ + 63, + 45 + ], + [ + 62, + 45 + ], + [ + 61, + 45 + ], + [ + 59, + 45 + ], + [ + 58, + 45 + ], + [ + 57, + 45 + ], + [ + 52, + 45 + ], + [ + 51, + 45 + ], + [ + 49, + 45 + ], + [ + 48, + 45 + ], + [ + 47, + 45 + ], + [ + 44, + 45 + ], + [ + 42, + 45 + ], + [ + 39, + 45 + ], + [ + 38, + 45 + ], + [ + 37, + 45 + ], + [ + 35, + 45 + ], + [ + 32, + 45 + ], + [ + 30, + 45 + ], + [ + 29, + 45 + ], + [ + 28, + 45 + ], + [ + 23, + 45 + ], + [ + 22, + 45 + ], + [ + 21, + 45 + ], + [ + 19, + 45 + ], + [ + 16, + 45 + ], + [ + 10, + 45 + ], + [ + 9, + 45 + ], + [ + 8, + 45 + ], + [ + 6, + 45 + ], + [ + 5, + 45 + ], + [ + 4, + 45 + ], + [ + 2, + 45 + ], + [ + 1, + 45 + ], + [ + 110, + 44 + ], + [ + 108, + 44 + ], + [ + 106, + 44 + ], + [ + 104, + 44 + ], + [ + 101, + 44 + ], + [ + 99, + 44 + ], + [ + 97, + 44 + ], + [ + 95, + 44 + ], + [ + 94, + 44 + ], + [ + 93, + 44 + ], + [ + 92, + 44 + ], + [ + 91, + 44 + ], + [ + 90, + 44 + ], + [ + 89, + 44 + ], + [ + 88, + 44 + ], + [ + 87, + 44 + ], + [ + 84, + 44 + ], + [ + 83, + 44 + ], + [ + 81, + 44 + ], + [ + 79, + 44 + ], + [ + 77, + 44 + ], + [ + 75, + 44 + ], + [ + 73, + 44 + ], + [ + 71, + 44 + ], + [ + 69, + 44 + ], + [ + 67, + 44 + ], + [ + 61, + 44 + ], + [ + 60, + 44 + ], + [ + 58, + 44 + ], + [ + 55, + 44 + ], + [ + 54, + 44 + ], + [ + 50, + 44 + ], + [ + 49, + 44 + ], + [ + 48, + 44 + ], + [ + 42, + 44 + ], + [ + 40, + 44 + ], + [ + 38, + 44 + ], + [ + 33, + 44 + ], + [ + 32, + 44 + ], + [ + 31, + 44 + ], + [ + 30, + 44 + ], + [ + 28, + 44 + ], + [ + 27, + 44 + ], + [ + 25, + 44 + ], + [ + 22, + 44 + ], + [ + 21, + 44 + ], + [ + 19, + 44 + ], + [ + 17, + 44 + ], + [ + 15, + 44 + ], + [ + 14, + 44 + ], + [ + 12, + 44 + ], + [ + 10, + 44 + ], + [ + 9, + 44 + ], + [ + 5, + 44 + ], + [ + 4, + 44 + ], + [ + 3, + 44 + ], + [ + 2, + 44 + ], + [ + 1, + 44 + ], + [ + 46, + 44 + ], + [ + 44, + 46 + ], + [ + 46, + 44 + ], + [ + 109, + 43 + ], + [ + 108, + 43 + ], + [ + 105, + 43 + ], + [ + 104, + 43 + ], + [ + 102, + 43 + ], + [ + 101, + 43 + ], + [ + 98, + 43 + ], + [ + 97, + 43 + ], + [ + 94, + 43 + ], + [ + 93, + 43 + ], + [ + 90, + 43 + ], + [ + 89, + 43 + ], + [ + 86, + 43 + ], + [ + 85, + 43 + ], + [ + 82, + 43 + ], + [ + 79, + 43 + ], + [ + 78, + 43 + ], + [ + 75, + 43 + ], + [ + 74, + 43 + ], + [ + 71, + 43 + ], + [ + 70, + 43 + ], + [ + 67, + 43 + ], + [ + 66, + 43 + ], + [ + 65, + 43 + ], + [ + 64, + 43 + ], + [ + 63, + 43 + ], + [ + 62, + 43 + ], + [ + 61, + 43 + ], + [ + 60, + 43 + ], + [ + 59, + 43 + ], + [ + 57, + 43 + ], + [ + 56, + 43 + ], + [ + 54, + 43 + ], + [ + 50, + 43 + ], + [ + 48, + 43 + ], + [ + 47, + 43 + ], + [ + 40, + 43 + ], + [ + 39, + 43 + ], + [ + 36, + 43 + ], + [ + 35, + 43 + ], + [ + 32, + 43 + ], + [ + 31, + 43 + ], + [ + 28, + 43 + ], + [ + 27, + 43 + ], + [ + 24, + 43 + ], + [ + 23, + 43 + ], + [ + 20, + 43 + ], + [ + 19, + 43 + ], + [ + 16, + 43 + ], + [ + 15, + 43 + ], + [ + 14, + 43 + ], + [ + 13, + 43 + ], + [ + 12, + 43 + ], + [ + 9, + 43 + ], + [ + 8, + 43 + ], + [ + 3, + 43 + ], + [ + 2, + 43 + ], + [ + 0, + 43 + ], + [ + 44, + 43 + ], + [ + 43, + 44 + ], + [ + 44, + 43 + ], + [ + 110, + 42 + ], + [ + 107, + 42 + ], + [ + 106, + 42 + ], + [ + 103, + 42 + ], + [ + 100, + 42 + ], + [ + 99, + 42 + ], + [ + 96, + 42 + ], + [ + 95, + 42 + ], + [ + 92, + 42 + ], + [ + 91, + 42 + ], + [ + 88, + 42 + ], + [ + 87, + 42 + ], + [ + 84, + 42 + ], + [ + 83, + 42 + ], + [ + 81, + 42 + ], + [ + 80, + 42 + ], + [ + 77, + 42 + ], + [ + 76, + 42 + ], + [ + 73, + 42 + ], + [ + 72, + 42 + ], + [ + 69, + 42 + ], + [ + 68, + 42 + ], + [ + 58, + 42 + ], + [ + 55, + 42 + ], + [ + 53, + 42 + ], + [ + 52, + 42 + ], + [ + 51, + 42 + ], + [ + 49, + 42 + ], + [ + 46, + 42 + ], + [ + 41, + 42 + ], + [ + 38, + 42 + ], + [ + 37, + 42 + ], + [ + 34, + 42 + ], + [ + 33, + 42 + ], + [ + 30, + 42 + ], + [ + 29, + 42 + ], + [ + 26, + 42 + ], + [ + 25, + 42 + ], + [ + 22, + 42 + ], + [ + 21, + 42 + ], + [ + 18, + 42 + ], + [ + 17, + 42 + ], + [ + 11, + 42 + ], + [ + 10, + 42 + ], + [ + 7, + 42 + ], + [ + 6, + 42 + ], + [ + 5, + 42 + ], + [ + 4, + 42 + ], + [ + 2, + 42 + ], + [ + 1, + 42 + ], + [ + 45, + 42 + ], + [ + 42, + 45 + ], + [ + 45, + 42 + ], + [ + 110, + 41 + ], + [ + 108, + 41 + ], + [ + 106, + 41 + ], + [ + 104, + 41 + ], + [ + 93, + 41 + ], + [ + 92, + 41 + ], + [ + 89, + 41 + ], + [ + 88, + 41 + ], + [ + 87, + 41 + ], + [ + 86, + 41 + ], + [ + 83, + 41 + ], + [ + 82, + 41 + ], + [ + 79, + 41 + ], + [ + 78, + 41 + ], + [ + 75, + 41 + ], + [ + 74, + 41 + ], + [ + 70, + 41 + ], + [ + 69, + 41 + ], + [ + 66, + 41 + ], + [ + 63, + 41 + ], + [ + 62, + 41 + ], + [ + 60, + 41 + ], + [ + 58, + 41 + ], + [ + 57, + 41 + ], + [ + 54, + 41 + ], + [ + 53, + 41 + ], + [ + 50, + 41 + ], + [ + 49, + 41 + ], + [ + 47, + 41 + ], + [ + 40, + 41 + ], + [ + 38, + 41 + ], + [ + 35, + 41 + ], + [ + 34, + 41 + ], + [ + 31, + 41 + ], + [ + 29, + 41 + ], + [ + 28, + 41 + ], + [ + 25, + 41 + ], + [ + 24, + 41 + ], + [ + 20, + 41 + ], + [ + 19, + 41 + ], + [ + 17, + 41 + ], + [ + 13, + 41 + ], + [ + 6, + 41 + ], + [ + 4, + 41 + ], + [ + 101, + 40 + ], + [ + 99, + 40 + ], + [ + 97, + 40 + ], + [ + 95, + 40 + ], + [ + 94, + 40 + ], + [ + 91, + 40 + ], + [ + 90, + 40 + ], + [ + 87, + 40 + ], + [ + 85, + 40 + ], + [ + 83, + 40 + ], + [ + 80, + 40 + ], + [ + 79, + 40 + ], + [ + 76, + 40 + ], + [ + 75, + 40 + ], + [ + 72, + 40 + ], + [ + 69, + 40 + ], + [ + 68, + 40 + ], + [ + 65, + 40 + ], + [ + 64, + 40 + ], + [ + 60, + 40 + ], + [ + 58, + 40 + ], + [ + 56, + 40 + ], + [ + 54, + 40 + ], + [ + 52, + 40 + ], + [ + 51, + 40 + ], + [ + 50, + 40 + ], + [ + 49, + 40 + ], + [ + 45, + 40 + ], + [ + 38, + 40 + ], + [ + 37, + 40 + ], + [ + 36, + 40 + ], + [ + 31, + 40 + ], + [ + 30, + 40 + ], + [ + 29, + 40 + ], + [ + 27, + 40 + ], + [ + 24, + 40 + ], + [ + 22, + 40 + ], + [ + 21, + 40 + ], + [ + 20, + 40 + ], + [ + 15, + 40 + ], + [ + 14, + 40 + ], + [ + 13, + 40 + ], + [ + 12, + 40 + ], + [ + 10, + 40 + ], + [ + 6, + 40 + ], + [ + 5, + 40 + ], + [ + 4, + 40 + ], + [ + 3, + 40 + ], + [ + 1, + 40 + ], + [ + 0, + 40 + ], + [ + 43, + 40 + ], + [ + 40, + 43 + ], + [ + 43, + 40 + ], + [ + 101, + 39 + ], + [ + 99, + 39 + ], + [ + 97, + 39 + ], + [ + 95, + 39 + ], + [ + 94, + 39 + ], + [ + 91, + 39 + ], + [ + 90, + 39 + ], + [ + 86, + 39 + ], + [ + 84, + 39 + ], + [ + 82, + 39 + ], + [ + 81, + 39 + ], + [ + 78, + 39 + ], + [ + 77, + 39 + ], + [ + 74, + 39 + ], + [ + 73, + 39 + ], + [ + 71, + 39 + ], + [ + 70, + 39 + ], + [ + 67, + 39 + ], + [ + 66, + 39 + ], + [ + 63, + 39 + ], + [ + 62, + 39 + ], + [ + 61, + 39 + ], + [ + 57, + 39 + ], + [ + 55, + 39 + ], + [ + 53, + 39 + ], + [ + 48, + 39 + ], + [ + 47, + 39 + ], + [ + 46, + 39 + ], + [ + 44, + 39 + ], + [ + 42, + 39 + ], + [ + 35, + 39 + ], + [ + 34, + 39 + ], + [ + 33, + 39 + ], + [ + 32, + 39 + ], + [ + 30, + 39 + ], + [ + 29, + 39 + ], + [ + 27, + 39 + ], + [ + 24, + 39 + ], + [ + 22, + 39 + ], + [ + 21, + 39 + ], + [ + 20, + 39 + ], + [ + 15, + 39 + ], + [ + 14, + 39 + ], + [ + 13, + 39 + ], + [ + 12, + 39 + ], + [ + 10, + 39 + ], + [ + 9, + 39 + ], + [ + 6, + 39 + ], + [ + 5, + 39 + ], + [ + 3, + 39 + ], + [ + 2, + 39 + ], + [ + 1, + 39 + ], + [ + 41, + 39 + ], + [ + 39, + 41 + ], + [ + 41, + 39 + ], + [ + 110, + 38 + ], + [ + 109, + 38 + ], + [ + 108, + 38 + ], + [ + 107, + 38 + ], + [ + 106, + 38 + ], + [ + 105, + 38 + ], + [ + 104, + 38 + ], + [ + 103, + 38 + ], + [ + 102, + 38 + ], + [ + 100, + 38 + ], + [ + 98, + 38 + ], + [ + 96, + 38 + ], + [ + 93, + 38 + ], + [ + 92, + 38 + ], + [ + 89, + 38 + ], + [ + 88, + 38 + ], + [ + 87, + 38 + ], + [ + 85, + 38 + ], + [ + 83, + 38 + ], + [ + 80, + 38 + ], + [ + 79, + 38 + ], + [ + 76, + 38 + ], + [ + 75, + 38 + ], + [ + 72, + 38 + ], + [ + 69, + 38 + ], + [ + 68, + 38 + ], + [ + 65, + 38 + ], + [ + 64, + 38 + ], + [ + 60, + 38 + ], + [ + 59, + 38 + ], + [ + 58, + 38 + ], + [ + 56, + 38 + ], + [ + 54, + 38 + ], + [ + 52, + 38 + ], + [ + 51, + 38 + ], + [ + 50, + 38 + ], + [ + 49, + 38 + ], + [ + 45, + 38 + ], + [ + 43, + 38 + ], + [ + 37, + 38 + ], + [ + 36, + 38 + ], + [ + 31, + 38 + ], + [ + 28, + 38 + ], + [ + 26, + 38 + ], + [ + 25, + 38 + ], + [ + 23, + 38 + ], + [ + 19, + 38 + ], + [ + 18, + 38 + ], + [ + 17, + 38 + ], + [ + 16, + 38 + ], + [ + 11, + 38 + ], + [ + 8, + 38 + ], + [ + 7, + 38 + ], + [ + 4, + 38 + ], + [ + 2, + 38 + ], + [ + 0, + 38 + ], + [ + 40, + 38 + ], + [ + 38, + 40 + ], + [ + 40, + 38 + ], + [ + 110, + 37 + ], + [ + 109, + 37 + ], + [ + 106, + 37 + ], + [ + 105, + 37 + ], + [ + 100, + 37 + ], + [ + 99, + 37 + ], + [ + 96, + 37 + ], + [ + 95, + 37 + ], + [ + 93, + 37 + ], + [ + 91, + 37 + ], + [ + 89, + 37 + ], + [ + 87, + 37 + ], + [ + 85, + 37 + ], + [ + 83, + 37 + ], + [ + 72, + 37 + ], + [ + 70, + 37 + ], + [ + 68, + 37 + ], + [ + 66, + 37 + ], + [ + 63, + 37 + ], + [ + 62, + 37 + ], + [ + 60, + 37 + ], + [ + 59, + 37 + ], + [ + 58, + 37 + ], + [ + 56, + 37 + ], + [ + 53, + 37 + ], + [ + 49, + 37 + ], + [ + 48, + 37 + ], + [ + 45, + 37 + ], + [ + 42, + 37 + ], + [ + 40, + 37 + ], + [ + 39, + 37 + ], + [ + 35, + 37 + ], + [ + 31, + 37 + ], + [ + 29, + 37 + ], + [ + 27, + 37 + ], + [ + 25, + 37 + ], + [ + 23, + 37 + ], + [ + 17, + 37 + ], + [ + 16, + 37 + ], + [ + 15, + 37 + ], + [ + 14, + 37 + ], + [ + 13, + 37 + ], + [ + 11, + 37 + ], + [ + 10, + 37 + ], + [ + 9, + 37 + ], + [ + 8, + 37 + ], + [ + 7, + 37 + ], + [ + 5, + 37 + ], + [ + 4, + 37 + ], + [ + 0, + 37 + ], + [ + 38, + 37 + ], + [ + 37, + 38 + ], + [ + 38, + 37 + ], + [ + 109, + 36 + ], + [ + 108, + 36 + ], + [ + 105, + 36 + ], + [ + 104, + 36 + ], + [ + 102, + 36 + ], + [ + 99, + 36 + ], + [ + 98, + 36 + ], + [ + 95, + 36 + ], + [ + 93, + 36 + ], + [ + 91, + 36 + ], + [ + 89, + 36 + ], + [ + 85, + 36 + ], + [ + 84, + 36 + ], + [ + 81, + 36 + ], + [ + 79, + 36 + ], + [ + 77, + 36 + ], + [ + 75, + 36 + ], + [ + 73, + 36 + ], + [ + 65, + 36 + ], + [ + 64, + 36 + ], + [ + 60, + 36 + ], + [ + 59, + 36 + ], + [ + 56, + 36 + ], + [ + 55, + 36 + ], + [ + 54, + 36 + ], + [ + 53, + 36 + ], + [ + 50, + 36 + ], + [ + 46, + 36 + ], + [ + 43, + 36 + ], + [ + 42, + 36 + ], + [ + 41, + 36 + ], + [ + 40, + 36 + ], + [ + 38, + 36 + ], + [ + 31, + 36 + ], + [ + 30, + 36 + ], + [ + 29, + 36 + ], + [ + 28, + 36 + ], + [ + 23, + 36 + ], + [ + 22, + 36 + ], + [ + 21, + 36 + ], + [ + 19, + 36 + ], + [ + 16, + 36 + ], + [ + 10, + 36 + ], + [ + 8, + 36 + ], + [ + 6, + 36 + ], + [ + 5, + 36 + ], + [ + 1, + 36 + ], + [ + 0, + 36 + ], + [ + 102, + 35 + ], + [ + 100, + 35 + ], + [ + 98, + 35 + ], + [ + 96, + 35 + ], + [ + 93, + 35 + ], + [ + 92, + 35 + ], + [ + 89, + 35 + ], + [ + 88, + 35 + ], + [ + 87, + 35 + ], + [ + 85, + 35 + ], + [ + 83, + 35 + ], + [ + 80, + 35 + ], + [ + 79, + 35 + ], + [ + 76, + 35 + ], + [ + 75, + 35 + ], + [ + 71, + 35 + ], + [ + 70, + 35 + ], + [ + 67, + 35 + ], + [ + 66, + 35 + ], + [ + 63, + 35 + ], + [ + 62, + 35 + ], + [ + 61, + 35 + ], + [ + 58, + 35 + ], + [ + 56, + 35 + ], + [ + 54, + 35 + ], + [ + 52, + 35 + ], + [ + 51, + 35 + ], + [ + 50, + 35 + ], + [ + 49, + 35 + ], + [ + 44, + 35 + ], + [ + 42, + 35 + ], + [ + 41, + 35 + ], + [ + 39, + 35 + ], + [ + 38, + 35 + ], + [ + 36, + 35 + ], + [ + 30, + 35 + ], + [ + 29, + 35 + ], + [ + 27, + 35 + ], + [ + 24, + 35 + ], + [ + 22, + 35 + ], + [ + 21, + 35 + ], + [ + 20, + 35 + ], + [ + 15, + 35 + ], + [ + 14, + 35 + ], + [ + 11, + 35 + ], + [ + 7, + 35 + ], + [ + 4, + 35 + ], + [ + 2, + 35 + ], + [ + 1, + 35 + ], + [ + 0, + 35 + ], + [ + 110, + 34 + ], + [ + 109, + 34 + ], + [ + 106, + 34 + ], + [ + 105, + 34 + ], + [ + 102, + 34 + ], + [ + 99, + 34 + ], + [ + 98, + 34 + ], + [ + 95, + 34 + ], + [ + 92, + 34 + ], + [ + 91, + 34 + ], + [ + 88, + 34 + ], + [ + 80, + 34 + ], + [ + 79, + 34 + ], + [ + 76, + 34 + ], + [ + 75, + 34 + ], + [ + 72, + 34 + ], + [ + 71, + 34 + ], + [ + 68, + 34 + ], + [ + 67, + 34 + ], + [ + 61, + 34 + ], + [ + 60, + 34 + ], + [ + 59, + 34 + ], + [ + 54, + 34 + ], + [ + 53, + 34 + ], + [ + 52, + 34 + ], + [ + 51, + 34 + ], + [ + 50, + 34 + ], + [ + 48, + 34 + ], + [ + 45, + 34 + ], + [ + 44, + 34 + ], + [ + 41, + 34 + ], + [ + 40, + 34 + ], + [ + 37, + 34 + ], + [ + 32, + 34 + ], + [ + 30, + 34 + ], + [ + 25, + 34 + ], + [ + 24, + 34 + ], + [ + 23, + 34 + ], + [ + 22, + 34 + ], + [ + 21, + 34 + ], + [ + 20, + 34 + ], + [ + 17, + 34 + ], + [ + 16, + 34 + ], + [ + 13, + 34 + ], + [ + 10, + 34 + ], + [ + 9, + 34 + ], + [ + 8, + 34 + ], + [ + 5, + 34 + ], + [ + 2, + 34 + ], + [ + 1, + 34 + ], + [ + 36, + 34 + ], + [ + 34, + 36 + ], + [ + 36, + 34 + ], + [ + 110, + 33 + ], + [ + 108, + 33 + ], + [ + 106, + 33 + ], + [ + 104, + 33 + ], + [ + 101, + 33 + ], + [ + 99, + 33 + ], + [ + 97, + 33 + ], + [ + 95, + 33 + ], + [ + 94, + 33 + ], + [ + 93, + 33 + ], + [ + 92, + 33 + ], + [ + 91, + 33 + ], + [ + 90, + 33 + ], + [ + 89, + 33 + ], + [ + 88, + 33 + ], + [ + 87, + 33 + ], + [ + 84, + 33 + ], + [ + 83, + 33 + ], + [ + 81, + 33 + ], + [ + 79, + 33 + ], + [ + 77, + 33 + ], + [ + 75, + 33 + ], + [ + 73, + 33 + ], + [ + 71, + 33 + ], + [ + 69, + 33 + ], + [ + 67, + 33 + ], + [ + 61, + 33 + ], + [ + 60, + 33 + ], + [ + 58, + 33 + ], + [ + 55, + 33 + ], + [ + 54, + 33 + ], + [ + 50, + 33 + ], + [ + 49, + 33 + ], + [ + 48, + 33 + ], + [ + 46, + 33 + ], + [ + 44, + 33 + ], + [ + 42, + 33 + ], + [ + 40, + 33 + ], + [ + 32, + 33 + ], + [ + 31, + 33 + ], + [ + 30, + 33 + ], + [ + 28, + 33 + ], + [ + 27, + 33 + ], + [ + 25, + 33 + ], + [ + 22, + 33 + ], + [ + 21, + 33 + ], + [ + 19, + 33 + ], + [ + 17, + 33 + ], + [ + 15, + 33 + ], + [ + 14, + 33 + ], + [ + 12, + 33 + ], + [ + 10, + 33 + ], + [ + 9, + 33 + ], + [ + 5, + 33 + ], + [ + 4, + 33 + ], + [ + 3, + 33 + ], + [ + 2, + 33 + ], + [ + 1, + 33 + ], + [ + 38, + 33 + ], + [ + 33, + 38 + ], + [ + 38, + 33 + ], + [ + 109, + 32 + ], + [ + 108, + 32 + ], + [ + 105, + 32 + ], + [ + 104, + 32 + ], + [ + 101, + 32 + ], + [ + 100, + 32 + ], + [ + 97, + 32 + ], + [ + 96, + 32 + ], + [ + 94, + 32 + ], + [ + 92, + 32 + ], + [ + 90, + 32 + ], + [ + 88, + 32 + ], + [ + 85, + 32 + ], + [ + 84, + 32 + ], + [ + 81, + 32 + ], + [ + 79, + 32 + ], + [ + 77, + 32 + ], + [ + 75, + 32 + ], + [ + 73, + 32 + ], + [ + 72, + 32 + ], + [ + 71, + 32 + ], + [ + 70, + 32 + ], + [ + 69, + 32 + ], + [ + 68, + 32 + ], + [ + 67, + 32 + ], + [ + 66, + 32 + ], + [ + 63, + 32 + ], + [ + 62, + 32 + ], + [ + 61, + 32 + ], + [ + 59, + 32 + ], + [ + 56, + 32 + ], + [ + 55, + 32 + ], + [ + 54, + 32 + ], + [ + 53, + 32 + ], + [ + 50, + 32 + ], + [ + 46, + 32 + ], + [ + 45, + 32 + ], + [ + 44, + 32 + ], + [ + 39, + 32 + ], + [ + 38, + 32 + ], + [ + 37, + 32 + ], + [ + 36, + 32 + ], + [ + 31, + 32 + ], + [ + 30, + 32 + ], + [ + 29, + 32 + ], + [ + 28, + 32 + ], + [ + 23, + 32 + ], + [ + 22, + 32 + ], + [ + 21, + 32 + ], + [ + 19, + 32 + ], + [ + 16, + 32 + ], + [ + 13, + 32 + ], + [ + 12, + 32 + ], + [ + 11, + 32 + ], + [ + 8, + 32 + ], + [ + 7, + 32 + ], + [ + 3, + 32 + ], + [ + 2, + 32 + ], + [ + 1, + 32 + ], + [ + 0, + 32 + ], + [ + 35, + 32 + ], + [ + 32, + 35 + ], + [ + 35, + 32 + ], + [ + 101, + 31 + ], + [ + 99, + 31 + ], + [ + 97, + 31 + ], + [ + 95, + 31 + ], + [ + 94, + 31 + ], + [ + 91, + 31 + ], + [ + 90, + 31 + ], + [ + 87, + 31 + ], + [ + 85, + 31 + ], + [ + 83, + 31 + ], + [ + 80, + 31 + ], + [ + 79, + 31 + ], + [ + 76, + 31 + ], + [ + 75, + 31 + ], + [ + 72, + 31 + ], + [ + 69, + 31 + ], + [ + 68, + 31 + ], + [ + 65, + 31 + ], + [ + 64, + 31 + ], + [ + 60, + 31 + ], + [ + 58, + 31 + ], + [ + 56, + 31 + ], + [ + 54, + 31 + ], + [ + 52, + 31 + ], + [ + 51, + 31 + ], + [ + 50, + 31 + ], + [ + 49, + 31 + ], + [ + 45, + 31 + ], + [ + 43, + 31 + ], + [ + 40, + 31 + ], + [ + 38, + 31 + ], + [ + 37, + 31 + ], + [ + 30, + 31 + ], + [ + 29, + 31 + ], + [ + 27, + 31 + ], + [ + 24, + 31 + ], + [ + 22, + 31 + ], + [ + 21, + 31 + ], + [ + 20, + 31 + ], + [ + 15, + 31 + ], + [ + 14, + 31 + ], + [ + 13, + 31 + ], + [ + 12, + 31 + ], + [ + 10, + 31 + ], + [ + 6, + 31 + ], + [ + 5, + 31 + ], + [ + 4, + 31 + ], + [ + 3, + 31 + ], + [ + 1, + 31 + ], + [ + 0, + 31 + ], + [ + 36, + 31 + ], + [ + 31, + 36 + ], + [ + 36, + 31 + ], + [ + 110, + 30 + ], + [ + 109, + 30 + ], + [ + 106, + 30 + ], + [ + 105, + 30 + ], + [ + 102, + 30 + ], + [ + 99, + 30 + ], + [ + 98, + 30 + ], + [ + 95, + 30 + ], + [ + 92, + 30 + ], + [ + 91, + 30 + ], + [ + 88, + 30 + ], + [ + 80, + 30 + ], + [ + 79, + 30 + ], + [ + 76, + 30 + ], + [ + 75, + 30 + ], + [ + 72, + 30 + ], + [ + 71, + 30 + ], + [ + 68, + 30 + ], + [ + 67, + 30 + ], + [ + 61, + 30 + ], + [ + 60, + 30 + ], + [ + 59, + 30 + ], + [ + 58, + 30 + ], + [ + 57, + 30 + ], + [ + 56, + 30 + ], + [ + 55, + 30 + ], + [ + 49, + 30 + ], + [ + 47, + 30 + ], + [ + 46, + 30 + ], + [ + 43, + 30 + ], + [ + 42, + 30 + ], + [ + 39, + 30 + ], + [ + 38, + 30 + ], + [ + 36, + 30 + ], + [ + 35, + 30 + ], + [ + 33, + 30 + ], + [ + 28, + 30 + ], + [ + 27, + 30 + ], + [ + 26, + 30 + ], + [ + 19, + 30 + ], + [ + 18, + 30 + ], + [ + 15, + 30 + ], + [ + 12, + 30 + ], + [ + 11, + 30 + ], + [ + 8, + 30 + ], + [ + 7, + 30 + ], + [ + 6, + 30 + ], + [ + 3, + 30 + ], + [ + 1, + 30 + ], + [ + 0, + 30 + ], + [ + 110, + 29 + ], + [ + 109, + 29 + ], + [ + 108, + 29 + ], + [ + 107, + 29 + ], + [ + 106, + 29 + ], + [ + 105, + 29 + ], + [ + 104, + 29 + ], + [ + 103, + 29 + ], + [ + 101, + 29 + ], + [ + 99, + 29 + ], + [ + 97, + 29 + ], + [ + 95, + 29 + ], + [ + 94, + 29 + ], + [ + 91, + 29 + ], + [ + 90, + 29 + ], + [ + 86, + 29 + ], + [ + 84, + 29 + ], + [ + 82, + 29 + ], + [ + 81, + 29 + ], + [ + 78, + 29 + ], + [ + 77, + 29 + ], + [ + 74, + 29 + ], + [ + 73, + 29 + ], + [ + 72, + 29 + ], + [ + 69, + 29 + ], + [ + 68, + 29 + ], + [ + 65, + 29 + ], + [ + 64, + 29 + ], + [ + 60, + 29 + ], + [ + 59, + 29 + ], + [ + 58, + 29 + ], + [ + 56, + 29 + ], + [ + 54, + 29 + ], + [ + 52, + 29 + ], + [ + 51, + 29 + ], + [ + 50, + 29 + ], + [ + 49, + 29 + ], + [ + 44, + 29 + ], + [ + 42, + 29 + ], + [ + 41, + 29 + ], + [ + 39, + 29 + ], + [ + 35, + 29 + ], + [ + 34, + 29 + ], + [ + 33, + 29 + ], + [ + 32, + 29 + ], + [ + 24, + 29 + ], + [ + 22, + 29 + ], + [ + 21, + 29 + ], + [ + 20, + 29 + ], + [ + 15, + 29 + ], + [ + 11, + 29 + ], + [ + 8, + 29 + ], + [ + 7, + 29 + ], + [ + 0, + 29 + ], + [ + 30, + 29 + ], + [ + 29, + 30 + ], + [ + 30, + 29 + ], + [ + 110, + 28 + ], + [ + 108, + 28 + ], + [ + 106, + 28 + ], + [ + 104, + 28 + ], + [ + 101, + 28 + ], + [ + 99, + 28 + ], + [ + 97, + 28 + ], + [ + 95, + 28 + ], + [ + 94, + 28 + ], + [ + 93, + 28 + ], + [ + 92, + 28 + ], + [ + 91, + 28 + ], + [ + 90, + 28 + ], + [ + 89, + 28 + ], + [ + 88, + 28 + ], + [ + 87, + 28 + ], + [ + 84, + 28 + ], + [ + 83, + 28 + ], + [ + 81, + 28 + ], + [ + 79, + 28 + ], + [ + 77, + 28 + ], + [ + 75, + 28 + ], + [ + 73, + 28 + ], + [ + 71, + 28 + ], + [ + 69, + 28 + ], + [ + 67, + 28 + ], + [ + 61, + 28 + ], + [ + 60, + 28 + ], + [ + 58, + 28 + ], + [ + 55, + 28 + ], + [ + 54, + 28 + ], + [ + 50, + 28 + ], + [ + 49, + 28 + ], + [ + 48, + 28 + ], + [ + 46, + 28 + ], + [ + 44, + 28 + ], + [ + 42, + 28 + ], + [ + 40, + 28 + ], + [ + 38, + 28 + ], + [ + 33, + 28 + ], + [ + 32, + 28 + ], + [ + 31, + 28 + ], + [ + 27, + 28 + ], + [ + 25, + 28 + ], + [ + 22, + 28 + ], + [ + 21, + 28 + ], + [ + 19, + 28 + ], + [ + 17, + 28 + ], + [ + 15, + 28 + ], + [ + 14, + 28 + ], + [ + 12, + 28 + ], + [ + 10, + 28 + ], + [ + 9, + 28 + ], + [ + 5, + 28 + ], + [ + 4, + 28 + ], + [ + 3, + 28 + ], + [ + 2, + 28 + ], + [ + 1, + 28 + ], + [ + 30, + 28 + ], + [ + 28, + 30 + ], + [ + 30, + 28 + ], + [ + 110, + 27 + ], + [ + 109, + 27 + ], + [ + 108, + 27 + ], + [ + 107, + 27 + ], + [ + 106, + 27 + ], + [ + 105, + 27 + ], + [ + 104, + 27 + ], + [ + 103, + 27 + ], + [ + 102, + 27 + ], + [ + 101, + 27 + ], + [ + 100, + 27 + ], + [ + 99, + 27 + ], + [ + 98, + 27 + ], + [ + 97, + 27 + ], + [ + 96, + 27 + ], + [ + 95, + 27 + ], + [ + 94, + 27 + ], + [ + 93, + 27 + ], + [ + 92, + 27 + ], + [ + 91, + 27 + ], + [ + 90, + 27 + ], + [ + 89, + 27 + ], + [ + 88, + 27 + ], + [ + 87, + 27 + ], + [ + 86, + 27 + ], + [ + 85, + 27 + ], + [ + 84, + 27 + ], + [ + 83, + 27 + ], + [ + 82, + 27 + ], + [ + 81, + 27 + ], + [ + 80, + 27 + ], + [ + 79, + 27 + ], + [ + 78, + 27 + ], + [ + 77, + 27 + ], + [ + 76, + 27 + ], + [ + 75, + 27 + ], + [ + 74, + 27 + ], + [ + 73, + 27 + ], + [ + 72, + 27 + ], + [ + 71, + 27 + ], + [ + 70, + 27 + ], + [ + 69, + 27 + ], + [ + 68, + 27 + ], + [ + 67, + 27 + ], + [ + 66, + 27 + ], + [ + 65, + 27 + ], + [ + 64, + 27 + ], + [ + 63, + 27 + ], + [ + 62, + 27 + ], + [ + 61, + 27 + ], + [ + 60, + 27 + ], + [ + 59, + 27 + ], + [ + 58, + 27 + ], + [ + 57, + 27 + ], + [ + 56, + 27 + ], + [ + 55, + 27 + ], + [ + 54, + 27 + ], + [ + 53, + 27 + ], + [ + 52, + 27 + ], + [ + 51, + 27 + ], + [ + 50, + 27 + ], + [ + 49, + 27 + ], + [ + 48, + 27 + ], + [ + 47, + 27 + ], + [ + 46, + 27 + ], + [ + 45, + 27 + ], + [ + 44, + 27 + ], + [ + 43, + 27 + ], + [ + 42, + 27 + ], + [ + 41, + 27 + ], + [ + 40, + 27 + ], + [ + 39, + 27 + ], + [ + 38, + 27 + ], + [ + 37, + 27 + ], + [ + 36, + 27 + ], + [ + 35, + 27 + ], + [ + 34, + 27 + ], + [ + 33, + 27 + ], + [ + 32, + 27 + ], + [ + 31, + 27 + ], + [ + 30, + 27 + ], + [ + 29, + 27 + ], + [ + 26, + 27 + ], + [ + 25, + 27 + ], + [ + 24, + 27 + ], + [ + 23, + 27 + ], + [ + 22, + 27 + ], + [ + 21, + 27 + ], + [ + 20, + 27 + ], + [ + 19, + 27 + ], + [ + 18, + 27 + ], + [ + 17, + 27 + ], + [ + 16, + 27 + ], + [ + 15, + 27 + ], + [ + 14, + 27 + ], + [ + 13, + 27 + ], + [ + 12, + 27 + ], + [ + 11, + 27 + ], + [ + 10, + 27 + ], + [ + 9, + 27 + ], + [ + 8, + 27 + ], + [ + 7, + 27 + ], + [ + 6, + 27 + ], + [ + 5, + 27 + ], + [ + 4, + 27 + ], + [ + 3, + 27 + ], + [ + 1, + 27 + ], + [ + 0, + 27 + ], + [ + 28, + 27 + ], + [ + 27, + 28 + ], + [ + 28, + 27 + ], + [ + 109, + 26 + ], + [ + 107, + 26 + ], + [ + 105, + 26 + ], + [ + 103, + 26 + ], + [ + 93, + 26 + ], + [ + 92, + 26 + ], + [ + 89, + 26 + ], + [ + 88, + 26 + ], + [ + 87, + 26 + ], + [ + 86, + 26 + ], + [ + 83, + 26 + ], + [ + 82, + 26 + ], + [ + 79, + 26 + ], + [ + 78, + 26 + ], + [ + 75, + 26 + ], + [ + 74, + 26 + ], + [ + 72, + 26 + ], + [ + 71, + 26 + ], + [ + 68, + 26 + ], + [ + 67, + 26 + ], + [ + 65, + 26 + ], + [ + 64, + 26 + ], + [ + 61, + 26 + ], + [ + 59, + 26 + ], + [ + 56, + 26 + ], + [ + 55, + 26 + ], + [ + 52, + 26 + ], + [ + 51, + 26 + ], + [ + 48, + 26 + ], + [ + 46, + 26 + ], + [ + 41, + 26 + ], + [ + 40, + 26 + ], + [ + 39, + 26 + ], + [ + 38, + 26 + ], + [ + 35, + 26 + ], + [ + 34, + 26 + ], + [ + 31, + 26 + ], + [ + 30, + 26 + ], + [ + 29, + 26 + ], + [ + 28, + 26 + ], + [ + 25, + 26 + ], + [ + 24, + 26 + ], + [ + 20, + 26 + ], + [ + 19, + 26 + ], + [ + 17, + 26 + ], + [ + 14, + 26 + ], + [ + 12, + 26 + ], + [ + 11, + 26 + ], + [ + 10, + 26 + ], + [ + 9, + 26 + ], + [ + 8, + 26 + ], + [ + 7, + 26 + ], + [ + 5, + 26 + ], + [ + 4, + 26 + ], + [ + 3, + 26 + ], + [ + 2, + 26 + ], + [ + 1, + 26 + ], + [ + 0, + 26 + ], + [ + 110, + 25 + ], + [ + 109, + 25 + ], + [ + 108, + 25 + ], + [ + 107, + 25 + ], + [ + 106, + 25 + ], + [ + 105, + 25 + ], + [ + 104, + 25 + ], + [ + 103, + 25 + ], + [ + 102, + 25 + ], + [ + 100, + 25 + ], + [ + 98, + 25 + ], + [ + 96, + 25 + ], + [ + 93, + 25 + ], + [ + 92, + 25 + ], + [ + 89, + 25 + ], + [ + 88, + 25 + ], + [ + 86, + 25 + ], + [ + 84, + 25 + ], + [ + 82, + 25 + ], + [ + 81, + 25 + ], + [ + 78, + 25 + ], + [ + 77, + 25 + ], + [ + 74, + 25 + ], + [ + 73, + 25 + ], + [ + 71, + 25 + ], + [ + 70, + 25 + ], + [ + 67, + 25 + ], + [ + 66, + 25 + ], + [ + 63, + 25 + ], + [ + 62, + 25 + ], + [ + 61, + 25 + ], + [ + 59, + 25 + ], + [ + 58, + 25 + ], + [ + 56, + 25 + ], + [ + 54, + 25 + ], + [ + 52, + 25 + ], + [ + 51, + 25 + ], + [ + 50, + 25 + ], + [ + 49, + 25 + ], + [ + 45, + 25 + ], + [ + 43, + 25 + ], + [ + 40, + 25 + ], + [ + 38, + 25 + ], + [ + 37, + 25 + ], + [ + 36, + 25 + ], + [ + 31, + 25 + ], + [ + 29, + 25 + ], + [ + 27, + 25 + ], + [ + 24, + 25 + ], + [ + 22, + 25 + ], + [ + 21, + 25 + ], + [ + 20, + 25 + ], + [ + 15, + 25 + ], + [ + 13, + 25 + ], + [ + 12, + 25 + ], + [ + 10, + 25 + ], + [ + 8, + 25 + ], + [ + 6, + 25 + ], + [ + 5, + 25 + ], + [ + 3, + 25 + ], + [ + 2, + 25 + ], + [ + 0, + 25 + ], + [ + 110, + 24 + ], + [ + 108, + 24 + ], + [ + 106, + 24 + ], + [ + 104, + 24 + ], + [ + 93, + 24 + ], + [ + 92, + 24 + ], + [ + 89, + 24 + ], + [ + 88, + 24 + ], + [ + 87, + 24 + ], + [ + 86, + 24 + ], + [ + 83, + 24 + ], + [ + 82, + 24 + ], + [ + 79, + 24 + ], + [ + 78, + 24 + ], + [ + 75, + 24 + ], + [ + 74, + 24 + ], + [ + 70, + 24 + ], + [ + 69, + 24 + ], + [ + 66, + 24 + ], + [ + 63, + 24 + ], + [ + 62, + 24 + ], + [ + 60, + 24 + ], + [ + 58, + 24 + ], + [ + 57, + 24 + ], + [ + 54, + 24 + ], + [ + 53, + 24 + ], + [ + 50, + 24 + ], + [ + 49, + 24 + ], + [ + 47, + 24 + ], + [ + 41, + 24 + ], + [ + 40, + 24 + ], + [ + 39, + 24 + ], + [ + 38, + 24 + ], + [ + 35, + 24 + ], + [ + 34, + 24 + ], + [ + 31, + 24 + ], + [ + 29, + 24 + ], + [ + 28, + 24 + ], + [ + 25, + 24 + ], + [ + 20, + 24 + ], + [ + 19, + 24 + ], + [ + 13, + 24 + ], + [ + 6, + 24 + ], + [ + 4, + 24 + ], + [ + 110, + 23 + ], + [ + 109, + 23 + ], + [ + 108, + 23 + ], + [ + 107, + 23 + ], + [ + 106, + 23 + ], + [ + 105, + 23 + ], + [ + 104, + 23 + ], + [ + 103, + 23 + ], + [ + 102, + 23 + ], + [ + 101, + 23 + ], + [ + 100, + 23 + ], + [ + 99, + 23 + ], + [ + 98, + 23 + ], + [ + 97, + 23 + ], + [ + 96, + 23 + ], + [ + 95, + 23 + ], + [ + 94, + 23 + ], + [ + 93, + 23 + ], + [ + 92, + 23 + ], + [ + 91, + 23 + ], + [ + 90, + 23 + ], + [ + 89, + 23 + ], + [ + 88, + 23 + ], + [ + 87, + 23 + ], + [ + 86, + 23 + ], + [ + 85, + 23 + ], + [ + 84, + 23 + ], + [ + 83, + 23 + ], + [ + 82, + 23 + ], + [ + 81, + 23 + ], + [ + 80, + 23 + ], + [ + 79, + 23 + ], + [ + 78, + 23 + ], + [ + 77, + 23 + ], + [ + 76, + 23 + ], + [ + 75, + 23 + ], + [ + 74, + 23 + ], + [ + 73, + 23 + ], + [ + 72, + 23 + ], + [ + 71, + 23 + ], + [ + 70, + 23 + ], + [ + 69, + 23 + ], + [ + 68, + 23 + ], + [ + 67, + 23 + ], + [ + 66, + 23 + ], + [ + 65, + 23 + ], + [ + 64, + 23 + ], + [ + 63, + 23 + ], + [ + 62, + 23 + ], + [ + 61, + 23 + ], + [ + 60, + 23 + ], + [ + 59, + 23 + ], + [ + 58, + 23 + ], + [ + 57, + 23 + ], + [ + 56, + 23 + ], + [ + 55, + 23 + ], + [ + 54, + 23 + ], + [ + 53, + 23 + ], + [ + 52, + 23 + ], + [ + 51, + 23 + ], + [ + 50, + 23 + ], + [ + 49, + 23 + ], + [ + 48, + 23 + ], + [ + 47, + 23 + ], + [ + 46, + 23 + ], + [ + 45, + 23 + ], + [ + 44, + 23 + ], + [ + 43, + 23 + ], + [ + 42, + 23 + ], + [ + 41, + 23 + ], + [ + 40, + 23 + ], + [ + 39, + 23 + ], + [ + 38, + 23 + ], + [ + 37, + 23 + ], + [ + 36, + 23 + ], + [ + 35, + 23 + ], + [ + 34, + 23 + ], + [ + 33, + 23 + ], + [ + 32, + 23 + ], + [ + 31, + 23 + ], + [ + 30, + 23 + ], + [ + 29, + 23 + ], + [ + 28, + 23 + ], + [ + 27, + 23 + ], + [ + 26, + 23 + ], + [ + 25, + 23 + ], + [ + 22, + 23 + ], + [ + 21, + 23 + ], + [ + 20, + 23 + ], + [ + 19, + 23 + ], + [ + 18, + 23 + ], + [ + 17, + 23 + ], + [ + 16, + 23 + ], + [ + 15, + 23 + ], + [ + 14, + 23 + ], + [ + 13, + 23 + ], + [ + 12, + 23 + ], + [ + 11, + 23 + ], + [ + 10, + 23 + ], + [ + 9, + 23 + ], + [ + 8, + 23 + ], + [ + 7, + 23 + ], + [ + 6, + 23 + ], + [ + 5, + 23 + ], + [ + 4, + 23 + ], + [ + 3, + 23 + ], + [ + 1, + 23 + ], + [ + 0, + 23 + ], + [ + 24, + 23 + ], + [ + 23, + 24 + ], + [ + 24, + 23 + ], + [ + 110, + 22 + ], + [ + 108, + 22 + ], + [ + 106, + 22 + ], + [ + 104, + 22 + ], + [ + 93, + 22 + ], + [ + 92, + 22 + ], + [ + 89, + 22 + ], + [ + 88, + 22 + ], + [ + 85, + 22 + ], + [ + 84, + 22 + ], + [ + 81, + 22 + ], + [ + 80, + 22 + ], + [ + 77, + 22 + ], + [ + 76, + 22 + ], + [ + 73, + 22 + ], + [ + 72, + 22 + ], + [ + 71, + 22 + ], + [ + 68, + 22 + ], + [ + 67, + 22 + ], + [ + 65, + 22 + ], + [ + 64, + 22 + ], + [ + 61, + 22 + ], + [ + 58, + 22 + ], + [ + 57, + 22 + ], + [ + 54, + 22 + ], + [ + 53, + 22 + ], + [ + 50, + 22 + ], + [ + 49, + 22 + ], + [ + 47, + 22 + ], + [ + 41, + 22 + ], + [ + 40, + 22 + ], + [ + 39, + 22 + ], + [ + 38, + 22 + ], + [ + 35, + 22 + ], + [ + 34, + 22 + ], + [ + 31, + 22 + ], + [ + 27, + 22 + ], + [ + 26, + 22 + ], + [ + 21, + 22 + ], + [ + 18, + 22 + ], + [ + 16, + 22 + ], + [ + 15, + 22 + ], + [ + 12, + 22 + ], + [ + 11, + 22 + ], + [ + 10, + 22 + ], + [ + 7, + 22 + ], + [ + 5, + 22 + ], + [ + 3, + 22 + ], + [ + 23, + 22 + ], + [ + 22, + 23 + ], + [ + 23, + 22 + ], + [ + 110, + 21 + ], + [ + 108, + 21 + ], + [ + 106, + 21 + ], + [ + 104, + 21 + ], + [ + 101, + 21 + ], + [ + 99, + 21 + ], + [ + 97, + 21 + ], + [ + 95, + 21 + ], + [ + 94, + 21 + ], + [ + 93, + 21 + ], + [ + 92, + 21 + ], + [ + 91, + 21 + ], + [ + 90, + 21 + ], + [ + 89, + 21 + ], + [ + 88, + 21 + ], + [ + 87, + 21 + ], + [ + 84, + 21 + ], + [ + 83, + 21 + ], + [ + 81, + 21 + ], + [ + 79, + 21 + ], + [ + 77, + 21 + ], + [ + 75, + 21 + ], + [ + 73, + 21 + ], + [ + 71, + 21 + ], + [ + 69, + 21 + ], + [ + 67, + 21 + ], + [ + 61, + 21 + ], + [ + 60, + 21 + ], + [ + 58, + 21 + ], + [ + 55, + 21 + ], + [ + 54, + 21 + ], + [ + 50, + 21 + ], + [ + 49, + 21 + ], + [ + 48, + 21 + ], + [ + 46, + 21 + ], + [ + 44, + 21 + ], + [ + 42, + 21 + ], + [ + 40, + 21 + ], + [ + 38, + 21 + ], + [ + 33, + 21 + ], + [ + 32, + 21 + ], + [ + 31, + 21 + ], + [ + 30, + 21 + ], + [ + 28, + 21 + ], + [ + 27, + 21 + ], + [ + 25, + 21 + ], + [ + 19, + 21 + ], + [ + 17, + 21 + ], + [ + 15, + 21 + ], + [ + 14, + 21 + ], + [ + 12, + 21 + ], + [ + 10, + 21 + ], + [ + 9, + 21 + ], + [ + 5, + 21 + ], + [ + 4, + 21 + ], + [ + 3, + 21 + ], + [ + 2, + 21 + ], + [ + 1, + 21 + ], + [ + 22, + 21 + ], + [ + 21, + 22 + ], + [ + 22, + 21 + ], + [ + 109, + 20 + ], + [ + 107, + 20 + ], + [ + 105, + 20 + ], + [ + 103, + 20 + ], + [ + 101, + 20 + ], + [ + 99, + 20 + ], + [ + 97, + 20 + ], + [ + 95, + 20 + ], + [ + 94, + 20 + ], + [ + 93, + 20 + ], + [ + 92, + 20 + ], + [ + 91, + 20 + ], + [ + 90, + 20 + ], + [ + 89, + 20 + ], + [ + 88, + 20 + ], + [ + 86, + 20 + ], + [ + 85, + 20 + ], + [ + 82, + 20 + ], + [ + 80, + 20 + ], + [ + 78, + 20 + ], + [ + 76, + 20 + ], + [ + 74, + 20 + ], + [ + 71, + 20 + ], + [ + 69, + 20 + ], + [ + 67, + 20 + ], + [ + 61, + 20 + ], + [ + 60, + 20 + ], + [ + 59, + 20 + ], + [ + 57, + 20 + ], + [ + 56, + 20 + ], + [ + 53, + 20 + ], + [ + 52, + 20 + ], + [ + 51, + 20 + ], + [ + 47, + 20 + ], + [ + 44, + 20 + ], + [ + 42, + 20 + ], + [ + 40, + 20 + ], + [ + 38, + 20 + ], + [ + 33, + 20 + ], + [ + 32, + 20 + ], + [ + 31, + 20 + ], + [ + 29, + 20 + ], + [ + 26, + 20 + ], + [ + 24, + 20 + ], + [ + 23, + 20 + ], + [ + 21, + 20 + ], + [ + 19, + 20 + ], + [ + 18, + 20 + ], + [ + 17, + 20 + ], + [ + 16, + 20 + ], + [ + 12, + 20 + ], + [ + 10, + 20 + ], + [ + 8, + 20 + ], + [ + 5, + 20 + ], + [ + 3, + 20 + ], + [ + 0, + 20 + ], + [ + 110, + 19 + ], + [ + 108, + 19 + ], + [ + 106, + 19 + ], + [ + 104, + 19 + ], + [ + 102, + 19 + ], + [ + 101, + 19 + ], + [ + 100, + 19 + ], + [ + 99, + 19 + ], + [ + 98, + 19 + ], + [ + 97, + 19 + ], + [ + 96, + 19 + ], + [ + 95, + 19 + ], + [ + 94, + 19 + ], + [ + 91, + 19 + ], + [ + 90, + 19 + ], + [ + 85, + 19 + ], + [ + 84, + 19 + ], + [ + 81, + 19 + ], + [ + 80, + 19 + ], + [ + 77, + 19 + ], + [ + 76, + 19 + ], + [ + 73, + 19 + ], + [ + 70, + 19 + ], + [ + 69, + 19 + ], + [ + 66, + 19 + ], + [ + 63, + 19 + ], + [ + 62, + 19 + ], + [ + 60, + 19 + ], + [ + 56, + 19 + ], + [ + 55, + 19 + ], + [ + 52, + 19 + ], + [ + 51, + 19 + ], + [ + 48, + 19 + ], + [ + 46, + 19 + ], + [ + 41, + 19 + ], + [ + 40, + 19 + ], + [ + 39, + 19 + ], + [ + 38, + 19 + ], + [ + 35, + 19 + ], + [ + 34, + 19 + ], + [ + 31, + 19 + ], + [ + 29, + 19 + ], + [ + 28, + 19 + ], + [ + 25, + 19 + ], + [ + 24, + 19 + ], + [ + 21, + 19 + ], + [ + 12, + 19 + ], + [ + 11, + 19 + ], + [ + 10, + 19 + ], + [ + 9, + 19 + ], + [ + 7, + 19 + ], + [ + 5, + 19 + ], + [ + 3, + 19 + ], + [ + 0, + 19 + ], + [ + 20, + 19 + ], + [ + 19, + 20 + ], + [ + 20, + 19 + ], + [ + 110, + 18 + ], + [ + 108, + 18 + ], + [ + 106, + 18 + ], + [ + 104, + 18 + ], + [ + 102, + 18 + ], + [ + 101, + 18 + ], + [ + 100, + 18 + ], + [ + 99, + 18 + ], + [ + 98, + 18 + ], + [ + 97, + 18 + ], + [ + 96, + 18 + ], + [ + 95, + 18 + ], + [ + 94, + 18 + ], + [ + 91, + 18 + ], + [ + 90, + 18 + ], + [ + 87, + 18 + ], + [ + 86, + 18 + ], + [ + 83, + 18 + ], + [ + 82, + 18 + ], + [ + 79, + 18 + ], + [ + 78, + 18 + ], + [ + 75, + 18 + ], + [ + 74, + 18 + ], + [ + 72, + 18 + ], + [ + 71, + 18 + ], + [ + 68, + 18 + ], + [ + 67, + 18 + ], + [ + 65, + 18 + ], + [ + 64, + 18 + ], + [ + 61, + 18 + ], + [ + 56, + 18 + ], + [ + 55, + 18 + ], + [ + 52, + 18 + ], + [ + 51, + 18 + ], + [ + 48, + 18 + ], + [ + 46, + 18 + ], + [ + 41, + 18 + ], + [ + 40, + 18 + ], + [ + 39, + 18 + ], + [ + 38, + 18 + ], + [ + 35, + 18 + ], + [ + 34, + 18 + ], + [ + 31, + 18 + ], + [ + 27, + 18 + ], + [ + 26, + 18 + ], + [ + 23, + 18 + ], + [ + 22, + 18 + ], + [ + 16, + 18 + ], + [ + 15, + 18 + ], + [ + 13, + 18 + ], + [ + 9, + 18 + ], + [ + 6, + 18 + ], + [ + 4, + 18 + ], + [ + 0, + 18 + ], + [ + 21, + 18 + ], + [ + 18, + 21 + ], + [ + 21, + 18 + ], + [ + 109, + 17 + ], + [ + 107, + 17 + ], + [ + 105, + 17 + ], + [ + 103, + 17 + ], + [ + 102, + 17 + ], + [ + 101, + 17 + ], + [ + 100, + 17 + ], + [ + 99, + 17 + ], + [ + 98, + 17 + ], + [ + 97, + 17 + ], + [ + 96, + 17 + ], + [ + 95, + 17 + ], + [ + 94, + 17 + ], + [ + 91, + 17 + ], + [ + 90, + 17 + ], + [ + 85, + 17 + ], + [ + 84, + 17 + ], + [ + 81, + 17 + ], + [ + 80, + 17 + ], + [ + 77, + 17 + ], + [ + 76, + 17 + ], + [ + 73, + 17 + ], + [ + 72, + 17 + ], + [ + 71, + 17 + ], + [ + 68, + 17 + ], + [ + 67, + 17 + ], + [ + 65, + 17 + ], + [ + 64, + 17 + ], + [ + 61, + 17 + ], + [ + 59, + 17 + ], + [ + 58, + 17 + ], + [ + 57, + 17 + ], + [ + 54, + 17 + ], + [ + 53, + 17 + ], + [ + 50, + 17 + ], + [ + 49, + 17 + ], + [ + 47, + 17 + ], + [ + 41, + 17 + ], + [ + 40, + 17 + ], + [ + 39, + 17 + ], + [ + 38, + 17 + ], + [ + 35, + 17 + ], + [ + 34, + 17 + ], + [ + 31, + 17 + ], + [ + 30, + 17 + ], + [ + 29, + 17 + ], + [ + 28, + 17 + ], + [ + 25, + 17 + ], + [ + 24, + 17 + ], + [ + 20, + 17 + ], + [ + 19, + 17 + ], + [ + 16, + 17 + ], + [ + 14, + 17 + ], + [ + 13, + 17 + ], + [ + 8, + 17 + ], + [ + 6, + 17 + ], + [ + 2, + 17 + ], + [ + 1, + 17 + ], + [ + 18, + 17 + ], + [ + 17, + 18 + ], + [ + 18, + 17 + ], + [ + 109, + 16 + ], + [ + 107, + 16 + ], + [ + 105, + 16 + ], + [ + 103, + 16 + ], + [ + 102, + 16 + ], + [ + 101, + 16 + ], + [ + 100, + 16 + ], + [ + 99, + 16 + ], + [ + 98, + 16 + ], + [ + 97, + 16 + ], + [ + 96, + 16 + ], + [ + 95, + 16 + ], + [ + 94, + 16 + ], + [ + 91, + 16 + ], + [ + 90, + 16 + ], + [ + 87, + 16 + ], + [ + 86, + 16 + ], + [ + 83, + 16 + ], + [ + 82, + 16 + ], + [ + 79, + 16 + ], + [ + 78, + 16 + ], + [ + 75, + 16 + ], + [ + 74, + 16 + ], + [ + 70, + 16 + ], + [ + 69, + 16 + ], + [ + 66, + 16 + ], + [ + 63, + 16 + ], + [ + 62, + 16 + ], + [ + 60, + 16 + ], + [ + 59, + 16 + ], + [ + 58, + 16 + ], + [ + 57, + 16 + ], + [ + 54, + 16 + ], + [ + 53, + 16 + ], + [ + 50, + 16 + ], + [ + 49, + 16 + ], + [ + 47, + 16 + ], + [ + 41, + 16 + ], + [ + 40, + 16 + ], + [ + 39, + 16 + ], + [ + 38, + 16 + ], + [ + 35, + 16 + ], + [ + 34, + 16 + ], + [ + 31, + 16 + ], + [ + 30, + 16 + ], + [ + 27, + 16 + ], + [ + 26, + 16 + ], + [ + 23, + 16 + ], + [ + 22, + 16 + ], + [ + 21, + 16 + ], + [ + 15, + 16 + ], + [ + 14, + 16 + ], + [ + 12, + 16 + ], + [ + 11, + 16 + ], + [ + 10, + 16 + ], + [ + 8, + 16 + ], + [ + 7, + 16 + ], + [ + 5, + 16 + ], + [ + 4, + 16 + ], + [ + 3, + 16 + ], + [ + 2, + 16 + ], + [ + 1, + 16 + ], + [ + 18, + 16 + ], + [ + 16, + 18 + ], + [ + 18, + 16 + ], + [ + 110, + 15 + ], + [ + 109, + 15 + ], + [ + 108, + 15 + ], + [ + 107, + 15 + ], + [ + 106, + 15 + ], + [ + 105, + 15 + ], + [ + 104, + 15 + ], + [ + 103, + 15 + ], + [ + 102, + 15 + ], + [ + 100, + 15 + ], + [ + 98, + 15 + ], + [ + 96, + 15 + ], + [ + 93, + 15 + ], + [ + 92, + 15 + ], + [ + 89, + 15 + ], + [ + 88, + 15 + ], + [ + 87, + 15 + ], + [ + 85, + 15 + ], + [ + 83, + 15 + ], + [ + 80, + 15 + ], + [ + 79, + 15 + ], + [ + 76, + 15 + ], + [ + 75, + 15 + ], + [ + 72, + 15 + ], + [ + 69, + 15 + ], + [ + 68, + 15 + ], + [ + 65, + 15 + ], + [ + 64, + 15 + ], + [ + 60, + 15 + ], + [ + 59, + 15 + ], + [ + 57, + 15 + ], + [ + 55, + 15 + ], + [ + 53, + 15 + ], + [ + 48, + 15 + ], + [ + 47, + 15 + ], + [ + 46, + 15 + ], + [ + 44, + 15 + ], + [ + 42, + 15 + ], + [ + 41, + 15 + ], + [ + 39, + 15 + ], + [ + 35, + 15 + ], + [ + 34, + 15 + ], + [ + 33, + 15 + ], + [ + 32, + 15 + ], + [ + 29, + 15 + ], + [ + 27, + 15 + ], + [ + 24, + 15 + ], + [ + 22, + 15 + ], + [ + 21, + 15 + ], + [ + 20, + 15 + ], + [ + 14, + 15 + ], + [ + 13, + 15 + ], + [ + 12, + 15 + ], + [ + 10, + 15 + ], + [ + 9, + 15 + ], + [ + 8, + 15 + ], + [ + 6, + 15 + ], + [ + 5, + 15 + ], + [ + 4, + 15 + ], + [ + 3, + 15 + ], + [ + 110, + 14 + ], + [ + 108, + 14 + ], + [ + 106, + 14 + ], + [ + 104, + 14 + ], + [ + 101, + 14 + ], + [ + 99, + 14 + ], + [ + 97, + 14 + ], + [ + 95, + 14 + ], + [ + 94, + 14 + ], + [ + 93, + 14 + ], + [ + 92, + 14 + ], + [ + 91, + 14 + ], + [ + 90, + 14 + ], + [ + 89, + 14 + ], + [ + 88, + 14 + ], + [ + 87, + 14 + ], + [ + 84, + 14 + ], + [ + 83, + 14 + ], + [ + 81, + 14 + ], + [ + 79, + 14 + ], + [ + 77, + 14 + ], + [ + 75, + 14 + ], + [ + 73, + 14 + ], + [ + 71, + 14 + ], + [ + 69, + 14 + ], + [ + 67, + 14 + ], + [ + 61, + 14 + ], + [ + 60, + 14 + ], + [ + 58, + 14 + ], + [ + 55, + 14 + ], + [ + 54, + 14 + ], + [ + 50, + 14 + ], + [ + 49, + 14 + ], + [ + 48, + 14 + ], + [ + 46, + 14 + ], + [ + 44, + 14 + ], + [ + 42, + 14 + ], + [ + 40, + 14 + ], + [ + 38, + 14 + ], + [ + 33, + 14 + ], + [ + 32, + 14 + ], + [ + 31, + 14 + ], + [ + 30, + 14 + ], + [ + 28, + 14 + ], + [ + 27, + 14 + ], + [ + 25, + 14 + ], + [ + 22, + 14 + ], + [ + 21, + 14 + ], + [ + 19, + 14 + ], + [ + 17, + 14 + ], + [ + 12, + 14 + ], + [ + 10, + 14 + ], + [ + 9, + 14 + ], + [ + 5, + 14 + ], + [ + 4, + 14 + ], + [ + 3, + 14 + ], + [ + 2, + 14 + ], + [ + 1, + 14 + ], + [ + 15, + 14 + ], + [ + 14, + 15 + ], + [ + 15, + 14 + ], + [ + 102, + 13 + ], + [ + 101, + 13 + ], + [ + 100, + 13 + ], + [ + 99, + 13 + ], + [ + 98, + 13 + ], + [ + 97, + 13 + ], + [ + 96, + 13 + ], + [ + 87, + 13 + ], + [ + 86, + 13 + ], + [ + 85, + 13 + ], + [ + 84, + 13 + ], + [ + 83, + 13 + ], + [ + 82, + 13 + ], + [ + 81, + 13 + ], + [ + 72, + 13 + ], + [ + 71, + 13 + ], + [ + 70, + 13 + ], + [ + 69, + 13 + ], + [ + 68, + 13 + ], + [ + 67, + 13 + ], + [ + 66, + 13 + ], + [ + 59, + 13 + ], + [ + 51, + 13 + ], + [ + 50, + 13 + ], + [ + 49, + 13 + ], + [ + 48, + 13 + ], + [ + 47, + 13 + ], + [ + 46, + 13 + ], + [ + 37, + 13 + ], + [ + 36, + 13 + ], + [ + 35, + 13 + ], + [ + 34, + 13 + ], + [ + 33, + 13 + ], + [ + 32, + 13 + ], + [ + 31, + 13 + ], + [ + 21, + 13 + ], + [ + 20, + 13 + ], + [ + 19, + 13 + ], + [ + 18, + 13 + ], + [ + 17, + 13 + ], + [ + 16, + 13 + ], + [ + 15, + 13 + ], + [ + 9, + 13 + ], + [ + 7, + 13 + ], + [ + 6, + 13 + ], + [ + 5, + 13 + ], + [ + 3, + 13 + ], + [ + 2, + 13 + ], + [ + 110, + 12 + ], + [ + 109, + 12 + ], + [ + 108, + 12 + ], + [ + 107, + 12 + ], + [ + 106, + 12 + ], + [ + 105, + 12 + ], + [ + 104, + 12 + ], + [ + 103, + 12 + ], + [ + 95, + 12 + ], + [ + 94, + 12 + ], + [ + 93, + 12 + ], + [ + 92, + 12 + ], + [ + 91, + 12 + ], + [ + 90, + 12 + ], + [ + 89, + 12 + ], + [ + 88, + 12 + ], + [ + 87, + 12 + ], + [ + 86, + 12 + ], + [ + 85, + 12 + ], + [ + 84, + 12 + ], + [ + 83, + 12 + ], + [ + 82, + 12 + ], + [ + 81, + 12 + ], + [ + 72, + 12 + ], + [ + 71, + 12 + ], + [ + 70, + 12 + ], + [ + 69, + 12 + ], + [ + 68, + 12 + ], + [ + 67, + 12 + ], + [ + 66, + 12 + ], + [ + 58, + 12 + ], + [ + 57, + 12 + ], + [ + 56, + 12 + ], + [ + 55, + 12 + ], + [ + 54, + 12 + ], + [ + 53, + 12 + ], + [ + 52, + 12 + ], + [ + 45, + 12 + ], + [ + 44, + 12 + ], + [ + 43, + 12 + ], + [ + 42, + 12 + ], + [ + 41, + 12 + ], + [ + 40, + 12 + ], + [ + 39, + 12 + ], + [ + 38, + 12 + ], + [ + 30, + 12 + ], + [ + 21, + 12 + ], + [ + 20, + 12 + ], + [ + 19, + 12 + ], + [ + 18, + 12 + ], + [ + 17, + 12 + ], + [ + 16, + 12 + ], + [ + 15, + 12 + ], + [ + 14, + 12 + ], + [ + 8, + 12 + ], + [ + 7, + 12 + ], + [ + 6, + 12 + ], + [ + 5, + 12 + ], + [ + 3, + 12 + ], + [ + 2, + 12 + ], + [ + 1, + 12 + ], + [ + 0, + 12 + ], + [ + 110, + 11 + ], + [ + 109, + 11 + ], + [ + 108, + 11 + ], + [ + 107, + 11 + ], + [ + 106, + 11 + ], + [ + 105, + 11 + ], + [ + 104, + 11 + ], + [ + 103, + 11 + ], + [ + 102, + 11 + ], + [ + 101, + 11 + ], + [ + 100, + 11 + ], + [ + 99, + 11 + ], + [ + 98, + 11 + ], + [ + 97, + 11 + ], + [ + 96, + 11 + ], + [ + 87, + 11 + ], + [ + 86, + 11 + ], + [ + 85, + 11 + ], + [ + 84, + 11 + ], + [ + 83, + 11 + ], + [ + 82, + 11 + ], + [ + 81, + 11 + ], + [ + 65, + 11 + ], + [ + 64, + 11 + ], + [ + 63, + 11 + ], + [ + 62, + 11 + ], + [ + 61, + 11 + ], + [ + 60, + 11 + ], + [ + 58, + 11 + ], + [ + 57, + 11 + ], + [ + 56, + 11 + ], + [ + 55, + 11 + ], + [ + 54, + 11 + ], + [ + 53, + 11 + ], + [ + 52, + 11 + ], + [ + 37, + 11 + ], + [ + 36, + 11 + ], + [ + 35, + 11 + ], + [ + 34, + 11 + ], + [ + 33, + 11 + ], + [ + 32, + 11 + ], + [ + 31, + 11 + ], + [ + 30, + 11 + ], + [ + 21, + 11 + ], + [ + 20, + 11 + ], + [ + 19, + 11 + ], + [ + 18, + 11 + ], + [ + 17, + 11 + ], + [ + 16, + 11 + ], + [ + 15, + 11 + ], + [ + 14, + 11 + ], + [ + 13, + 11 + ], + [ + 12, + 11 + ], + [ + 10, + 11 + ], + [ + 9, + 11 + ], + [ + 8, + 11 + ], + [ + 1, + 11 + ], + [ + 0, + 11 + ], + [ + 110, + 10 + ], + [ + 109, + 10 + ], + [ + 108, + 10 + ], + [ + 107, + 10 + ], + [ + 106, + 10 + ], + [ + 105, + 10 + ], + [ + 104, + 10 + ], + [ + 103, + 10 + ], + [ + 95, + 10 + ], + [ + 94, + 10 + ], + [ + 93, + 10 + ], + [ + 92, + 10 + ], + [ + 91, + 10 + ], + [ + 90, + 10 + ], + [ + 89, + 10 + ], + [ + 88, + 10 + ], + [ + 80, + 10 + ], + [ + 79, + 10 + ], + [ + 78, + 10 + ], + [ + 77, + 10 + ], + [ + 76, + 10 + ], + [ + 75, + 10 + ], + [ + 74, + 10 + ], + [ + 73, + 10 + ], + [ + 65, + 10 + ], + [ + 64, + 10 + ], + [ + 63, + 10 + ], + [ + 62, + 10 + ], + [ + 61, + 10 + ], + [ + 60, + 10 + ], + [ + 58, + 10 + ], + [ + 57, + 10 + ], + [ + 56, + 10 + ], + [ + 55, + 10 + ], + [ + 54, + 10 + ], + [ + 53, + 10 + ], + [ + 52, + 10 + ], + [ + 45, + 10 + ], + [ + 44, + 10 + ], + [ + 43, + 10 + ], + [ + 42, + 10 + ], + [ + 41, + 10 + ], + [ + 40, + 10 + ], + [ + 39, + 10 + ], + [ + 38, + 10 + ], + [ + 30, + 10 + ], + [ + 29, + 10 + ], + [ + 28, + 10 + ], + [ + 27, + 10 + ], + [ + 26, + 10 + ], + [ + 25, + 10 + ], + [ + 24, + 10 + ], + [ + 23, + 10 + ], + [ + 22, + 10 + ], + [ + 14, + 10 + ], + [ + 13, + 10 + ], + [ + 12, + 10 + ], + [ + 8, + 10 + ], + [ + 4, + 10 + ], + [ + 2, + 10 + ], + [ + 1, + 10 + ], + [ + 0, + 10 + ], + [ + 11, + 10 + ], + [ + 10, + 11 + ], + [ + 11, + 10 + ], + [ + 110, + 9 + ], + [ + 109, + 9 + ], + [ + 108, + 9 + ], + [ + 107, + 9 + ], + [ + 106, + 9 + ], + [ + 105, + 9 + ], + [ + 104, + 9 + ], + [ + 103, + 9 + ], + [ + 72, + 9 + ], + [ + 71, + 9 + ], + [ + 70, + 9 + ], + [ + 69, + 9 + ], + [ + 68, + 9 + ], + [ + 67, + 9 + ], + [ + 66, + 9 + ], + [ + 65, + 9 + ], + [ + 64, + 9 + ], + [ + 63, + 9 + ], + [ + 62, + 9 + ], + [ + 61, + 9 + ], + [ + 60, + 9 + ], + [ + 59, + 9 + ], + [ + 58, + 9 + ], + [ + 57, + 9 + ], + [ + 56, + 9 + ], + [ + 55, + 9 + ], + [ + 54, + 9 + ], + [ + 53, + 9 + ], + [ + 52, + 9 + ], + [ + 51, + 9 + ], + [ + 50, + 9 + ], + [ + 49, + 9 + ], + [ + 48, + 9 + ], + [ + 47, + 9 + ], + [ + 46, + 9 + ], + [ + 30, + 9 + ], + [ + 14, + 9 + ], + [ + 13, + 9 + ], + [ + 12, + 9 + ], + [ + 11, + 9 + ], + [ + 8, + 9 + ], + [ + 7, + 9 + ], + [ + 6, + 9 + ], + [ + 5, + 9 + ], + [ + 3, + 9 + ], + [ + 2, + 9 + ], + [ + 1, + 9 + ], + [ + 0, + 9 + ], + [ + 10, + 9 + ], + [ + 9, + 10 + ], + [ + 10, + 9 + ], + [ + 110, + 8 + ], + [ + 109, + 8 + ], + [ + 108, + 8 + ], + [ + 107, + 8 + ], + [ + 106, + 8 + ], + [ + 105, + 8 + ], + [ + 104, + 8 + ], + [ + 103, + 8 + ], + [ + 102, + 8 + ], + [ + 100, + 8 + ], + [ + 98, + 8 + ], + [ + 96, + 8 + ], + [ + 93, + 8 + ], + [ + 92, + 8 + ], + [ + 89, + 8 + ], + [ + 88, + 8 + ], + [ + 87, + 8 + ], + [ + 85, + 8 + ], + [ + 83, + 8 + ], + [ + 80, + 8 + ], + [ + 79, + 8 + ], + [ + 76, + 8 + ], + [ + 75, + 8 + ], + [ + 72, + 8 + ], + [ + 69, + 8 + ], + [ + 68, + 8 + ], + [ + 65, + 8 + ], + [ + 64, + 8 + ], + [ + 60, + 8 + ], + [ + 59, + 8 + ], + [ + 58, + 8 + ], + [ + 56, + 8 + ], + [ + 54, + 8 + ], + [ + 52, + 8 + ], + [ + 51, + 8 + ], + [ + 50, + 8 + ], + [ + 49, + 8 + ], + [ + 45, + 8 + ], + [ + 43, + 8 + ], + [ + 40, + 8 + ], + [ + 38, + 8 + ], + [ + 37, + 8 + ], + [ + 36, + 8 + ], + [ + 31, + 8 + ], + [ + 28, + 8 + ], + [ + 26, + 8 + ], + [ + 25, + 8 + ], + [ + 23, + 8 + ], + [ + 19, + 8 + ], + [ + 18, + 8 + ], + [ + 17, + 8 + ], + [ + 16, + 8 + ], + [ + 11, + 8 + ], + [ + 4, + 8 + ], + [ + 2, + 8 + ], + [ + 0, + 8 + ], + [ + 110, + 7 + ], + [ + 109, + 7 + ], + [ + 108, + 7 + ], + [ + 107, + 7 + ], + [ + 106, + 7 + ], + [ + 105, + 7 + ], + [ + 104, + 7 + ], + [ + 103, + 7 + ], + [ + 102, + 7 + ], + [ + 101, + 7 + ], + [ + 100, + 7 + ], + [ + 99, + 7 + ], + [ + 98, + 7 + ], + [ + 97, + 7 + ], + [ + 96, + 7 + ], + [ + 80, + 7 + ], + [ + 79, + 7 + ], + [ + 78, + 7 + ], + [ + 77, + 7 + ], + [ + 76, + 7 + ], + [ + 75, + 7 + ], + [ + 74, + 7 + ], + [ + 73, + 7 + ], + [ + 72, + 7 + ], + [ + 71, + 7 + ], + [ + 70, + 7 + ], + [ + 69, + 7 + ], + [ + 68, + 7 + ], + [ + 67, + 7 + ], + [ + 66, + 7 + ], + [ + 58, + 7 + ], + [ + 57, + 7 + ], + [ + 56, + 7 + ], + [ + 55, + 7 + ], + [ + 54, + 7 + ], + [ + 53, + 7 + ], + [ + 52, + 7 + ], + [ + 37, + 7 + ], + [ + 36, + 7 + ], + [ + 35, + 7 + ], + [ + 34, + 7 + ], + [ + 33, + 7 + ], + [ + 32, + 7 + ], + [ + 31, + 7 + ], + [ + 30, + 7 + ], + [ + 29, + 7 + ], + [ + 28, + 7 + ], + [ + 27, + 7 + ], + [ + 26, + 7 + ], + [ + 25, + 7 + ], + [ + 24, + 7 + ], + [ + 23, + 7 + ], + [ + 22, + 7 + ], + [ + 14, + 7 + ], + [ + 6, + 7 + ], + [ + 5, + 7 + ], + [ + 4, + 7 + ], + [ + 3, + 7 + ], + [ + 1, + 7 + ], + [ + 0, + 7 + ], + [ + 8, + 7 + ], + [ + 7, + 8 + ], + [ + 8, + 7 + ], + [ + 110, + 6 + ], + [ + 109, + 6 + ], + [ + 108, + 6 + ], + [ + 107, + 6 + ], + [ + 106, + 6 + ], + [ + 105, + 6 + ], + [ + 104, + 6 + ], + [ + 103, + 6 + ], + [ + 102, + 6 + ], + [ + 101, + 6 + ], + [ + 100, + 6 + ], + [ + 99, + 6 + ], + [ + 98, + 6 + ], + [ + 97, + 6 + ], + [ + 96, + 6 + ], + [ + 80, + 6 + ], + [ + 79, + 6 + ], + [ + 78, + 6 + ], + [ + 77, + 6 + ], + [ + 76, + 6 + ], + [ + 75, + 6 + ], + [ + 74, + 6 + ], + [ + 73, + 6 + ], + [ + 72, + 6 + ], + [ + 71, + 6 + ], + [ + 70, + 6 + ], + [ + 69, + 6 + ], + [ + 68, + 6 + ], + [ + 67, + 6 + ], + [ + 66, + 6 + ], + [ + 51, + 6 + ], + [ + 50, + 6 + ], + [ + 49, + 6 + ], + [ + 48, + 6 + ], + [ + 47, + 6 + ], + [ + 46, + 6 + ], + [ + 45, + 6 + ], + [ + 44, + 6 + ], + [ + 43, + 6 + ], + [ + 42, + 6 + ], + [ + 41, + 6 + ], + [ + 40, + 6 + ], + [ + 39, + 6 + ], + [ + 38, + 6 + ], + [ + 30, + 6 + ], + [ + 21, + 6 + ], + [ + 20, + 6 + ], + [ + 19, + 6 + ], + [ + 18, + 6 + ], + [ + 17, + 6 + ], + [ + 16, + 6 + ], + [ + 15, + 6 + ], + [ + 14, + 6 + ], + [ + 13, + 6 + ], + [ + 12, + 6 + ], + [ + 11, + 6 + ], + [ + 10, + 6 + ], + [ + 9, + 6 + ], + [ + 8, + 6 + ], + [ + 4, + 6 + ], + [ + 2, + 6 + ], + [ + 1, + 6 + ], + [ + 102, + 5 + ], + [ + 101, + 5 + ], + [ + 100, + 5 + ], + [ + 99, + 5 + ], + [ + 98, + 5 + ], + [ + 97, + 5 + ], + [ + 96, + 5 + ], + [ + 95, + 5 + ], + [ + 94, + 5 + ], + [ + 93, + 5 + ], + [ + 92, + 5 + ], + [ + 91, + 5 + ], + [ + 90, + 5 + ], + [ + 89, + 5 + ], + [ + 88, + 5 + ], + [ + 72, + 5 + ], + [ + 71, + 5 + ], + [ + 70, + 5 + ], + [ + 69, + 5 + ], + [ + 68, + 5 + ], + [ + 67, + 5 + ], + [ + 66, + 5 + ], + [ + 65, + 5 + ], + [ + 64, + 5 + ], + [ + 63, + 5 + ], + [ + 62, + 5 + ], + [ + 61, + 5 + ], + [ + 60, + 5 + ], + [ + 58, + 5 + ], + [ + 57, + 5 + ], + [ + 56, + 5 + ], + [ + 55, + 5 + ], + [ + 54, + 5 + ], + [ + 53, + 5 + ], + [ + 52, + 5 + ], + [ + 51, + 5 + ], + [ + 50, + 5 + ], + [ + 49, + 5 + ], + [ + 48, + 5 + ], + [ + 47, + 5 + ], + [ + 46, + 5 + ], + [ + 29, + 5 + ], + [ + 28, + 5 + ], + [ + 27, + 5 + ], + [ + 26, + 5 + ], + [ + 25, + 5 + ], + [ + 24, + 5 + ], + [ + 23, + 5 + ], + [ + 22, + 5 + ], + [ + 21, + 5 + ], + [ + 20, + 5 + ], + [ + 19, + 5 + ], + [ + 18, + 5 + ], + [ + 17, + 5 + ], + [ + 16, + 5 + ], + [ + 15, + 5 + ], + [ + 9, + 5 + ], + [ + 0, + 5 + ], + [ + 87, + 4 + ], + [ + 86, + 4 + ], + [ + 85, + 4 + ], + [ + 84, + 4 + ], + [ + 83, + 4 + ], + [ + 82, + 4 + ], + [ + 81, + 4 + ], + [ + 80, + 4 + ], + [ + 79, + 4 + ], + [ + 78, + 4 + ], + [ + 77, + 4 + ], + [ + 76, + 4 + ], + [ + 75, + 4 + ], + [ + 74, + 4 + ], + [ + 73, + 4 + ], + [ + 72, + 4 + ], + [ + 71, + 4 + ], + [ + 70, + 4 + ], + [ + 69, + 4 + ], + [ + 68, + 4 + ], + [ + 67, + 4 + ], + [ + 66, + 4 + ], + [ + 65, + 4 + ], + [ + 64, + 4 + ], + [ + 63, + 4 + ], + [ + 62, + 4 + ], + [ + 61, + 4 + ], + [ + 60, + 4 + ], + [ + 58, + 4 + ], + [ + 57, + 4 + ], + [ + 56, + 4 + ], + [ + 55, + 4 + ], + [ + 54, + 4 + ], + [ + 53, + 4 + ], + [ + 52, + 4 + ], + [ + 51, + 4 + ], + [ + 50, + 4 + ], + [ + 49, + 4 + ], + [ + 48, + 4 + ], + [ + 47, + 4 + ], + [ + 46, + 4 + ], + [ + 45, + 4 + ], + [ + 44, + 4 + ], + [ + 43, + 4 + ], + [ + 42, + 4 + ], + [ + 41, + 4 + ], + [ + 40, + 4 + ], + [ + 39, + 4 + ], + [ + 38, + 4 + ], + [ + 37, + 4 + ], + [ + 36, + 4 + ], + [ + 35, + 4 + ], + [ + 34, + 4 + ], + [ + 33, + 4 + ], + [ + 32, + 4 + ], + [ + 31, + 4 + ], + [ + 9, + 4 + ], + [ + 2, + 4 + ], + [ + 110, + 3 + ], + [ + 109, + 3 + ], + [ + 108, + 3 + ], + [ + 107, + 3 + ], + [ + 106, + 3 + ], + [ + 105, + 3 + ], + [ + 104, + 3 + ], + [ + 103, + 3 + ], + [ + 102, + 3 + ], + [ + 101, + 3 + ], + [ + 100, + 3 + ], + [ + 99, + 3 + ], + [ + 98, + 3 + ], + [ + 97, + 3 + ], + [ + 96, + 3 + ], + [ + 80, + 3 + ], + [ + 79, + 3 + ], + [ + 78, + 3 + ], + [ + 77, + 3 + ], + [ + 76, + 3 + ], + [ + 75, + 3 + ], + [ + 74, + 3 + ], + [ + 73, + 3 + ], + [ + 72, + 3 + ], + [ + 71, + 3 + ], + [ + 70, + 3 + ], + [ + 69, + 3 + ], + [ + 68, + 3 + ], + [ + 67, + 3 + ], + [ + 66, + 3 + ], + [ + 58, + 3 + ], + [ + 57, + 3 + ], + [ + 56, + 3 + ], + [ + 55, + 3 + ], + [ + 54, + 3 + ], + [ + 53, + 3 + ], + [ + 52, + 3 + ], + [ + 37, + 3 + ], + [ + 36, + 3 + ], + [ + 35, + 3 + ], + [ + 34, + 3 + ], + [ + 33, + 3 + ], + [ + 32, + 3 + ], + [ + 31, + 3 + ], + [ + 30, + 3 + ], + [ + 29, + 3 + ], + [ + 28, + 3 + ], + [ + 27, + 3 + ], + [ + 26, + 3 + ], + [ + 25, + 3 + ], + [ + 24, + 3 + ], + [ + 23, + 3 + ], + [ + 22, + 3 + ], + [ + 14, + 3 + ], + [ + 8, + 3 + ], + [ + 7, + 3 + ], + [ + 6, + 3 + ], + [ + 5, + 3 + ], + [ + 1, + 3 + ], + [ + 0, + 3 + ], + [ + 4, + 3 + ], + [ + 3, + 4 + ], + [ + 4, + 3 + ], + [ + 102, + 2 + ], + [ + 101, + 2 + ], + [ + 100, + 2 + ], + [ + 99, + 2 + ], + [ + 98, + 2 + ], + [ + 97, + 2 + ], + [ + 96, + 2 + ], + [ + 95, + 2 + ], + [ + 94, + 2 + ], + [ + 93, + 2 + ], + [ + 92, + 2 + ], + [ + 91, + 2 + ], + [ + 90, + 2 + ], + [ + 89, + 2 + ], + [ + 88, + 2 + ], + [ + 87, + 2 + ], + [ + 86, + 2 + ], + [ + 85, + 2 + ], + [ + 84, + 2 + ], + [ + 83, + 2 + ], + [ + 82, + 2 + ], + [ + 81, + 2 + ], + [ + 80, + 2 + ], + [ + 79, + 2 + ], + [ + 78, + 2 + ], + [ + 77, + 2 + ], + [ + 76, + 2 + ], + [ + 75, + 2 + ], + [ + 74, + 2 + ], + [ + 73, + 2 + ], + [ + 45, + 2 + ], + [ + 44, + 2 + ], + [ + 43, + 2 + ], + [ + 42, + 2 + ], + [ + 41, + 2 + ], + [ + 40, + 2 + ], + [ + 39, + 2 + ], + [ + 38, + 2 + ], + [ + 37, + 2 + ], + [ + 36, + 2 + ], + [ + 35, + 2 + ], + [ + 34, + 2 + ], + [ + 33, + 2 + ], + [ + 32, + 2 + ], + [ + 31, + 2 + ], + [ + 29, + 2 + ], + [ + 28, + 2 + ], + [ + 27, + 2 + ], + [ + 26, + 2 + ], + [ + 25, + 2 + ], + [ + 24, + 2 + ], + [ + 23, + 2 + ], + [ + 22, + 2 + ], + [ + 21, + 2 + ], + [ + 20, + 2 + ], + [ + 19, + 2 + ], + [ + 18, + 2 + ], + [ + 17, + 2 + ], + [ + 16, + 2 + ], + [ + 15, + 2 + ], + [ + 4, + 2 + ], + [ + 1, + 2 + ], + [ + 110, + 1 + ], + [ + 109, + 1 + ], + [ + 108, + 1 + ], + [ + 107, + 1 + ], + [ + 106, + 1 + ], + [ + 105, + 1 + ], + [ + 104, + 1 + ], + [ + 103, + 1 + ], + [ + 102, + 1 + ], + [ + 101, + 1 + ], + [ + 100, + 1 + ], + [ + 99, + 1 + ], + [ + 98, + 1 + ], + [ + 97, + 1 + ], + [ + 96, + 1 + ], + [ + 80, + 1 + ], + [ + 79, + 1 + ], + [ + 78, + 1 + ], + [ + 77, + 1 + ], + [ + 76, + 1 + ], + [ + 75, + 1 + ], + [ + 74, + 1 + ], + [ + 73, + 1 + ], + [ + 72, + 1 + ], + [ + 71, + 1 + ], + [ + 70, + 1 + ], + [ + 69, + 1 + ], + [ + 68, + 1 + ], + [ + 67, + 1 + ], + [ + 66, + 1 + ], + [ + 51, + 1 + ], + [ + 50, + 1 + ], + [ + 49, + 1 + ], + [ + 48, + 1 + ], + [ + 47, + 1 + ], + [ + 46, + 1 + ], + [ + 45, + 1 + ], + [ + 44, + 1 + ], + [ + 43, + 1 + ], + [ + 42, + 1 + ], + [ + 41, + 1 + ], + [ + 40, + 1 + ], + [ + 39, + 1 + ], + [ + 38, + 1 + ], + [ + 30, + 1 + ], + [ + 21, + 1 + ], + [ + 20, + 1 + ], + [ + 19, + 1 + ], + [ + 18, + 1 + ], + [ + 17, + 1 + ], + [ + 16, + 1 + ], + [ + 15, + 1 + ], + [ + 14, + 1 + ], + [ + 13, + 1 + ], + [ + 12, + 1 + ], + [ + 11, + 1 + ], + [ + 10, + 1 + ], + [ + 9, + 1 + ], + [ + 8, + 1 + ], + [ + 4, + 1 + ], + [ + 3, + 1 + ], + [ + 0, + 1 + ], + [ + 2, + 1 + ], + [ + 1, + 2 + ], + [ + 2, + 1 + ], + [ + 102, + 0 + ], + [ + 101, + 0 + ], + [ + 100, + 0 + ], + [ + 99, + 0 + ], + [ + 98, + 0 + ], + [ + 97, + 0 + ], + [ + 96, + 0 + ], + [ + 95, + 0 + ], + [ + 94, + 0 + ], + [ + 93, + 0 + ], + [ + 92, + 0 + ], + [ + 91, + 0 + ], + [ + 90, + 0 + ], + [ + 89, + 0 + ], + [ + 88, + 0 + ], + [ + 87, + 0 + ], + [ + 86, + 0 + ], + [ + 85, + 0 + ], + [ + 84, + 0 + ], + [ + 83, + 0 + ], + [ + 82, + 0 + ], + [ + 81, + 0 + ], + [ + 80, + 0 + ], + [ + 79, + 0 + ], + [ + 78, + 0 + ], + [ + 77, + 0 + ], + [ + 76, + 0 + ], + [ + 75, + 0 + ], + [ + 74, + 0 + ], + [ + 73, + 0 + ], + [ + 58, + 0 + ], + [ + 57, + 0 + ], + [ + 56, + 0 + ], + [ + 55, + 0 + ], + [ + 54, + 0 + ], + [ + 53, + 0 + ], + [ + 52, + 0 + ], + [ + 51, + 0 + ], + [ + 50, + 0 + ], + [ + 49, + 0 + ], + [ + 48, + 0 + ], + [ + 47, + 0 + ], + [ + 46, + 0 + ], + [ + 13, + 0 + ], + [ + 12, + 0 + ], + [ + 11, + 0 + ], + [ + 10, + 0 + ], + [ + 9, + 0 + ], + [ + 7, + 0 + ], + [ + 6, + 0 + ], + [ + 5, + 0 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ], + [ + 0, + 3 + ], + [ + 3, + 0 + ] + ], + "ordered_controller": [ + { + "cut": "original first idle-window entrance", + "native_level": -1, + "op": "code sweep", + "pair": 1, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 0, + 1 + ] + }, + { + "cut": "original first idle-window entrance", + "native_level": -1, + "op": "code sweep", + "pair": 2, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 0, + 1, + 2, + 3 + ] + }, + { + "cut": "original first idle-window entrance", + "native_level": -1, + "op": "code sweep", + "pair": 3, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 0, + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "cut": "immediately before active forward call", + "native_level": -1, + "op": "code sweep", + "pair": 0, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 0 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 0, + "reverse": false, + "stage": 0 + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 0, + "reverse": true, + "stage": 1 + }, + { + "cut": "immediately after active reverse call", + "native_level": 1, + "op": "code sweep", + "pair": 0, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 1 + ] + }, + { + "op": "unchanged idle child", + "pair": 1, + "rank": 14, + "source_level": -1, + "target_level": 1 + }, + { + "cut": "original idle-window exit", + "native_level": 1, + "op": "code sweep", + "pair": 1, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 0, + 1 + ] + }, + { + "coefficient": 1, + "dst": 0, + "kind": "bridge", + "src": 1 + }, + { + "cut": "immediately after preceding bridge; short idle-window entrance", + "native_level": 1, + "op": "code sweep", + "pair": 1, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 2 + ] + }, + { + "cut": "immediately before active forward call", + "native_level": 1, + "op": "code sweep", + "pair": 0, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 2 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 0, + "reverse": false, + "stage": 2 + }, + { + "op": "unchanged idle child", + "pair": 1, + "rank": 7, + "source_level": 1, + "target_level": 2 + }, + { + "cut": "original idle-window exit", + "native_level": 2, + "op": "code sweep", + "pair": 1, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 2 + ] + }, + { + "coefficient": -1, + "dst": 0, + "kind": "bridge", + "src": 1 + }, + { + "cut": "immediately after last bridge; terminal idle-window entrance", + "native_level": 2, + "op": "code sweep", + "pair": 0, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 1, + "reverse": true, + "stage": 3 + }, + { + "cut": "immediately after active reverse call", + "native_level": 3, + "op": "code sweep", + "pair": 1, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 3 + ] + }, + { + "op": "unchanged idle child", + "pair": 2, + "rank": 28, + "source_level": -1, + "target_level": 3 + }, + { + "cut": "original idle-window exit", + "native_level": 3, + "op": "code sweep", + "pair": 2, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 0, + 1, + 2, + 3 + ] + }, + { + "coefficient": 1, + "dst": 1, + "kind": "bridge", + "src": 2 + }, + { + "cut": "immediately after preceding bridge; short idle-window entrance", + "native_level": 3, + "op": "code sweep", + "pair": 2, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 4 + ] + }, + { + "cut": "immediately before active forward call", + "native_level": 3, + "op": "code sweep", + "pair": 1, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 4 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 1, + "reverse": false, + "stage": 4 + }, + { + "op": "unchanged idle child", + "pair": 2, + "rank": 7, + "source_level": 3, + "target_level": 4 + }, + { + "cut": "original idle-window exit", + "native_level": 4, + "op": "code sweep", + "pair": 2, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 4 + ] + }, + { + "coefficient": -1, + "dst": 1, + "kind": "bridge", + "src": 2 + }, + { + "cut": "immediately after last bridge; terminal idle-window entrance", + "native_level": 4, + "op": "code sweep", + "pair": 1, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 5, + 6, + 7, + 8 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 2, + "reverse": true, + "stage": 5 + }, + { + "cut": "immediately after active reverse call", + "native_level": 5, + "op": "code sweep", + "pair": 2, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 5 + ] + }, + { + "op": "unchanged idle child", + "pair": 3, + "rank": 42, + "source_level": -1, + "target_level": 5 + }, + { + "cut": "original idle-window exit", + "native_level": 5, + "op": "code sweep", + "pair": 3, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 0, + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "coefficient": 1, + "dst": 2, + "kind": "bridge", + "src": 3 + }, + { + "cut": "immediately after preceding bridge; short idle-window entrance", + "native_level": 5, + "op": "code sweep", + "pair": 3, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 6 + ] + }, + { + "cut": "immediately before active forward call", + "native_level": 5, + "op": "code sweep", + "pair": 2, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 6 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 2, + "reverse": false, + "stage": 6 + }, + { + "op": "unchanged idle child", + "pair": 3, + "rank": 7, + "source_level": 5, + "target_level": 6 + }, + { + "cut": "original idle-window exit", + "native_level": 6, + "op": "code sweep", + "pair": 3, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 6 + ] + }, + { + "coefficient": -1, + "dst": 2, + "kind": "bridge", + "src": 3 + }, + { + "cut": "immediately after last bridge; terminal idle-window entrance", + "native_level": 6, + "op": "code sweep", + "pair": 2, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 7, + 8 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 3, + "reverse": true, + "stage": 7 + }, + { + "cut": "immediately after active reverse call", + "native_level": 7, + "op": "code sweep", + "pair": 3, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 7 + ] + }, + { + "cut": "immediately before active forward call", + "native_level": 7, + "op": "code sweep", + "pair": 3, + "side": "Y", + "source_cut": "before all borrowing in this idle window", + "stages": [ + 8 + ] + }, + { + "kind": "local", + "op": "complete local coded call", + "pair": 3, + "reverse": false, + "stage": 8 + }, + { + "op": "unchanged idle child", + "pair": 0, + "rank": 42, + "source_level": 2, + "target_level": 8 + }, + { + "cut": "original idle-window exit", + "native_level": 8, + "op": "code sweep", + "pair": 0, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + { + "op": "unchanged idle child", + "pair": 1, + "rank": 28, + "source_level": 4, + "target_level": 8 + }, + { + "cut": "original idle-window exit", + "native_level": 8, + "op": "code sweep", + "pair": 1, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 5, + 6, + 7, + 8 + ] + }, + { + "op": "unchanged idle child", + "pair": 2, + "rank": 14, + "source_level": 6, + "target_level": 8 + }, + { + "cut": "original idle-window exit", + "native_level": 8, + "op": "code sweep", + "pair": 2, + "side": "X", + "source_cut": "after all borrowed helpers have restored and the idle child completed", + "stages": [ + 7, + 8 + ] + }, + { + "op": "unchanged idle child", + "pair": 3, + "rank": 0, + "source_level": 8, + "target_level": 8 + }, + { + "coefficient": 1, + "dst": 3, + "kind": "bridge", + "src": 2 + }, + { + "coefficient": 1, + "dst": 2, + "kind": "bridge", + "src": 1 + }, + { + "coefficient": 1, + "dst": 1, + "kind": "bridge", + "src": 0 + }, + { + "kind": "exchange" + } + ] +} diff --git a/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER.json b/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER.json new file mode 100644 index 0000000000..a97e78e06e --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/BIT-NATIVE-CONTROLLER.json @@ -0,0 +1,598 @@ +{ + "algebra": { + "all_scatter_rows_nonzero": true, + "same_code_odd_nine_stage_augmentation": "E_aug=H; rank(E_aug-I)=9", + "scatter_rank": 9, + "selected_row_repair_identity_obstruction": { + "max_repair_rows_per_stage": 9, + "nonzero_K_rows": 111, + "scope": "fixed R,K at augmentation; W_s=K+U_s, RW_s=0; each U_s has at most9 nonzero rows", + "stage_count": 9, + "uncovered_K_rows_at_least": 30, + "union_support_at_most": 81 + }, + "source_code_defect_rank": 9, + "source_rank": 9 + }, + "canonical_recipe_source_sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "chronological_owner_windows": { + "late_terminal_Y_mutation": { + "eligible_stages_if_touch_at_child": [], + "late_touch_after_stage": 8, + "pair": 0, + "rejection": "later preload invalidates existing strict owner-window stages", + "retained_eligible_stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "retained_windows_source_sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "windows": [ + { + "eligible_helper_stages_old": [ + 0, + 1 + ], + "eligible_helper_stages_with_all_code_touches": [ + 0, + 1 + ], + "idle_child_index": 7, + "idle_index": 0, + "new_last_pair_touch_index": 0, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": -1, + "original_idle_child_index": 7, + "original_rank": 14, + "pair": 1 + }, + { + "eligible_helper_stages_old": [ + 2 + ], + "eligible_helper_stages_with_all_code_touches": [ + 2 + ], + "idle_child_index": 13, + "idle_index": 1, + "new_last_pair_touch_index": 10, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 9, + "original_idle_child_index": 13, + "original_rank": 7, + "pair": 1 + }, + { + "eligible_helper_stages_old": [ + 0, + 1, + 2, + 3 + ], + "eligible_helper_stages_with_all_code_touches": [ + 0, + 1, + 2, + 3 + ], + "idle_child_index": 19, + "idle_index": 2, + "new_last_pair_touch_index": 1, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": -1, + "original_idle_child_index": 19, + "original_rank": 28, + "pair": 2 + }, + { + "eligible_helper_stages_old": [ + 4 + ], + "eligible_helper_stages_with_all_code_touches": [ + 4 + ], + "idle_child_index": 25, + "idle_index": 3, + "new_last_pair_touch_index": 22, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 21, + "original_idle_child_index": 25, + "original_rank": 7, + "pair": 2 + }, + { + "eligible_helper_stages_old": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "eligible_helper_stages_with_all_code_touches": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "idle_child_index": 31, + "idle_index": 4, + "new_last_pair_touch_index": 2, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": -1, + "original_idle_child_index": 31, + "original_rank": 42, + "pair": 3 + }, + { + "eligible_helper_stages_old": [ + 6 + ], + "eligible_helper_stages_with_all_code_touches": [ + 6 + ], + "idle_child_index": 37, + "idle_index": 5, + "new_last_pair_touch_index": 34, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 33, + "original_idle_child_index": 37, + "original_rank": 7, + "pair": 3 + }, + { + "eligible_helper_stages_old": [ + 3, + 4, + 5, + 6, + 7, + 8 + ], + "eligible_helper_stages_with_all_code_touches": [ + 3, + 4, + 5, + 6, + 7, + 8 + ], + "idle_child_index": 45, + "idle_index": 6, + "new_last_pair_touch_index": 16, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 15, + "original_idle_child_index": 45, + "original_rank": 42, + "pair": 0 + }, + { + "eligible_helper_stages_old": [ + 5, + 6, + 7, + 8 + ], + "eligible_helper_stages_with_all_code_touches": [ + 5, + 6, + 7, + 8 + ], + "idle_child_index": 47, + "idle_index": 7, + "new_last_pair_touch_index": 28, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 27, + "original_idle_child_index": 47, + "original_rank": 28, + "pair": 1 + }, + { + "eligible_helper_stages_old": [ + 7, + 8 + ], + "eligible_helper_stages_with_all_code_touches": [ + 7, + 8 + ], + "idle_child_index": 49, + "idle_index": 8, + "new_last_pair_touch_index": 40, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 39, + "original_idle_child_index": 49, + "original_rank": 14, + "pair": 2 + }, + { + "eligible_helper_stages_old": [], + "eligible_helper_stages_with_all_code_touches": [], + "idle_child_index": 51, + "idle_index": 9, + "new_last_pair_touch_index": 44, + "no_added_code_between_first_eligible_stage_and_child": true, + "old_last_pair_touch_index": 44, + "original_idle_child_index": 51, + "original_rank": 0, + "pair": 3 + } + ] + }, + "code_scalar_invoice": { + "arbitrary_dirty_helpers_needed": 0, + "binary_scalar_CNOTs": 6372, + "integer_lift_inverse": "reverse the exact word and negate ADD coefficients; H squared identity is asserted only over F2", + "new_private_fields": 0, + "signed_integer_forward_positive_bound": "708422432847326742", + "signed_integer_reverse_positive_bound": "2129470886225876682614879837849", + "source_access": "each CNOT reads and writes the listed actual bank families with rho_s owner-address reindexing; scans, coordinate arithmetic and head return remain paid" + }, + "controller": { + "all_arbitrary_bank_columns": 8, + "code_sweeps": 27, + "endpoint": "diag(E8,...,E8), E8=G8...G0; arbitrary invertible noncommuting G_s", + "extra_code_factors": 63, + "extra_rank_zero_code_work_needs_full_access_invoice": true, + "local_orientation": "G_s=A_s for forward, G_s=A_s^-1 for reverse", + "original_bridge_checks": [ + { + "common_code": [ + 1, + 0 + ], + "dst": 0, + "level": 1, + "src": 1 + }, + { + "common_code": [ + 2, + 1, + 0 + ], + "dst": 0, + "level": 2, + "src": 1 + }, + { + "common_code": [ + 3, + 2, + 1, + 0 + ], + "dst": 1, + "level": 3, + "src": 2 + }, + { + "common_code": [ + 4, + 3, + 2, + 1, + 0 + ], + "dst": 1, + "level": 4, + "src": 2 + }, + { + "common_code": [ + 5, + 4, + 3, + 2, + 1, + 0 + ], + "dst": 2, + "level": 5, + "src": 3 + }, + { + "common_code": [ + 6, + 5, + 4, + 3, + 2, + 1, + 0 + ], + "dst": 2, + "level": 6, + "src": 3 + }, + { + "common_code": [ + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0 + ], + "dst": 3, + "level": 8, + "src": 2 + }, + { + "common_code": [ + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0 + ], + "dst": 2, + "level": 8, + "src": 1 + }, + { + "common_code": [ + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0 + ], + "dst": 1, + "level": 8, + "src": 0 + } + ], + "original_idle_profile_per_replica": { + "7": 666, + "14": 444, + "28": 444, + "42": 444 + }, + "original_idle_rank_mass_per_replica": 41958, + "original_long_idle_windows_preserved": true, + "owner_condition": "all new Y preloads before borrowing begins; X code after all owners restore. Restored arbitrary correlated dirt remains admissible under a globally invertible preload." + }, + "limits": [ + "shared-label mutable-source native realization remains inherited", + "nine-stage integer-lift precision not re-admitted", + "no complete rank-zero source-access/tape invoice", + "owner windows preserved structurally, changed whole program not emitted or owner-replayed", + "no restored endpoint or supplier or new conditional kappa" + ], + "matrix_input_sha256": "8dbcafd44b23a598d623c78d3d9fb8b4e6ef0651d379cab27d17a4768333ed4a", + "native_geometry": { + "actual_R438_entrance_and_cap_frames_bound": 222, + "actual_stage_routes": 999, + "all_stage_admission_law": { + "X_after_progress_to_level_t_at_least_s": "rho_s (I+E_<=t) rho_s = I+E_<=t, independent of port", + "Y_hole_at_level_t_less_than_s": "rho_s (K_p+E_<=t) rho_s = E_s+E_<=t, independent of port", + "initial_Y": "zero remains zero under every actual rho_s", + "invalid_late_X_before_progress": "rho_s (I+E_<=t) rho_s = P_p+E_s+E_<=t for t=1 be the number of hole banks, n the number of physical ports and +L=2B+1 the odd alternating stage count. In this construction, the complete +ordinary-coverage rank deficit before the three-copy local repairs is +`(L-1)n`. Three local rank-one copies at each stage cost `3L`. Two endpoint +normalizations on each hole bank cost `2Bn=(L-1)n`. Consequently the complete +rank deficit after that terminal construction is + +``` +D=(L-1)n-3L-2Bn=-3L<0. +``` + +This already fails at exponent zero before fallback, new precision/tape +work or terminal allocation. For B=4,L=9 and T=32 replicated copies the +excess rank mass is `3*9*32=864`, agreeing with `BIT-OWNER-PRUNE.json`. +Changing B while retaining these same coverage and terminal contracts cannot +repair the deficit. A changed coverage, stock, endpoint or controller is +outside this calculation. + +## Why the tempting288-child scalar terminal invoice is not admitted + +At scalar augmentation, all address operators are set to identity. The +common-E schedule then has rank(E-I)<=9 because its five forward and four +inverse factors collapse to the same scalar code A. On actual native data +the stage source codes have different owner/address charts. They are +operator-valued and need not commute or collapse. The preserved raw ordered +word supplies81 channels (nine stages times nine local defect channels), +not a demonstrated nine-channel native endpoint factor. + +The tempting `4 hole banks *9 channels *rank8 descent=288` therefore uses +an unproved native factorization. It also omits access at the actual hole +cut. In the existing all-bank FULL-gather implementation, each hole bank +has111 ordinary fields at its own rank-seven caps. Raising those fields to +the required common rank-eight FULL frame costs111 rank-one ascents per +bank,444 globally. Those visits must be paid before a FULL-frame source +query can be formed. Even granting a hypothetical nine-channel factor, +this access plus288 would already cost732, before output alignment and +cleanup. Normalizing and returning all fields gives the known888 terminal +children, with rank-zero code arithmetic between the two sweeps. + +The444 figure is the cost of this particular FULL-gather construction, not +a universal lower bound on native observers. A new copied-query network, +shared legal cut, wider observer or other readout may change that invoice; +it must provide its own ordered arbitrary-input word and actual source, +output, dirt and restoration access. Scalar augmentation rank alone cannot +provide those interfaces. diff --git a/research/r429-controller-accounting/frozen/old/recursive/bit_cap_copy_local.py b/research/r429-controller-accounting/frozen/old/recursive/bit_cap_copy_local.py new file mode 100644 index 0000000000..679be90ff9 --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/bit_cap_copy_local.py @@ -0,0 +1,162 @@ +#!/usr/bin/env python3 +"""Local-only exact native cap-copy audit, independent of any controller. + +Inputs are the pinned R438 word and frozen signed six-copy local word. The +16-column ADDRESS identities hold over every odd field where dyadic entries +are interpreted. Scalar integer cleanup and rounded child errors are separate. +Apache-2.0; substantial OpenAI Codex assistance. +""" + +import argparse +from collections import Counter +from fractions import Fraction as Q +import gzip +from hashlib import sha256 +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +RAW = Path('/Users/ross/git/math/integer-mult-bounds/research/bit-r438-transport-rehost/words/r438-t154.json.gz') +RAW_SHA = 'a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022' + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + + +def rank(rows): + basis = {} + for row in rows: + row = list(map(Q, row)) + for j, old in sorted(basis.items()): + c = row[j] + row = [x-c*y for x,y in zip(row,old)] + j = next((j for j,x in enumerate(row) if x), None) + if j is not None: + c = row[j] + basis[j] = [x/c for x in row] + return len(basis) + + +def identity(n): + return [[Q(i == j) for j in range(n)] for i in range(n)] + + +def multiply(a, b): + return [[sum(x*y for x,y in zip(row,col)) for col in zip(*b)] for row in a] + + +def exchange(u): + c = [[Q(i == j)-u[i][j] for j in range(8)] for i in range(8)] + return [c[i]+u[i] for i in range(8)]+[u[i]+c[i] for i in range(8)] + + +def address_identities(word): + ident = identity(8) + out = [] + for p, q in enumerate(word['lines']): + need(sum(x*x for x in q) == 4, 'actual E8 root norm') + start = [word['lines'][j] for j in word['frames'][word['start'][p]]] + cap = [word['lines'][j] for j in word['frames'][word['final'][111+p]]] + need(rank(start) == 1 and all(all(4*x == sum(a*b for a,b in zip(row,q))*y + for x,y in zip(row,q)) for row in start), 'actual entrance is not P_p') + need(rank(cap) == 7 and all(sum(x*y for x,y in zip(row,q)) == 0 for row in cap), + 'actual target cap is not K_p') + proj = [[Q(x*y,4) for y in q] for x in q] + complement = [[ident[i][j]-proj[i][j] for j in range(8)] for i in range(8)] + need(multiply(proj,proj) == proj and rank(proj) == 1, 'actual P_p projector') + need(multiply(exchange(ident),exchange(proj)) == exchange(complement), + 'D_I D_P differs from D_K') + need(multiply(exchange(proj),exchange(proj)) == identity(16), 'D_P squared differs from I') + encoded = [[[v.numerator,v.denominator] for v in row] for row in proj] + out.append(sha256(canonical(encoded)).hexdigest()) + need(len(out) == 111, 'actual punctured root count') + return out + + +def frame_replay(word, program, backward=False, fault=None): + dims = [rank(word['lines'][j] for j in f) for f in word['frames']] + masks = [sum(1 << j for j in f) for f in word['frames']] + need(dims[1] == 8, 'named FULL is not full') + frames = (word['final'] if backward else word['start'])[:]+[None] + open_source, copies, erases = None, [], 0 + paid = Counter() + rows = list(reversed(program['records'])) if backward else program['records'] + for raw in rows: + op,x,y,c,f,phase = raw + if op == 0: + old,new = (c,y) if backward else (y,c) + lo,hi = (new,old) if backward else (old,new) + need(frames[x] == old, 'MOVE source frame') + need(not masks[lo] & ~masks[hi] and dims[hi]-dims[lo] == f > 0, 'MOVE rank or containment') + frames[x] = new + paid[f] += 1 + elif op == 1: + need(x < 660 and x != y and frames[x] == frames[y] == f, 'ADD common frame') + need(open_source != x, 'immutable copied source changed') + elif op == (3 if backward else 2): + need(open_source is None and y == 660 and frames[660] is None, 'COPY fresh private field') + if fault == 'copy_to_full': + f = 1 + need(frames[x] == c == 1 and not masks[f] & ~masks[c], 'COPY source FULL and target nested') + need(dims[c]-dims[f] == 1, 'COPY does not use rank-one cap descent') + frames[660],open_source = f,x + copies.append({'source':x,'source_frame':c,'private_frame':f,'rank':1}) + paid[1] += 1 + else: + need(op == (2 if backward else 3), 'unknown native opcode') + need(open_source == x and y == 660 and frames[x] == c and frames[660] == f, + 'ERASE original snapshot source/frame') + frames[660],open_source = None,None + erases += 1 + need(open_source is None and frames[:660] == (word['start'] if backward else word['final']), 'native endpoint') + need(len(copies) == erases == 6, 'six closed immutable snapshots') + return {'copies':copies,'literal_erases':erases,'paid_profile':dict(sorted(paid.items())), + 'maximum_simultaneous_private_snapshots':1} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--write', action='store_true') + args = parser.parse_args() + raw = RAW.read_bytes() + need(sha256(raw).hexdigest() == RAW_SHA, 'R438 source pin') + word = json.loads(gzip.decompress(raw)) + meta = json.loads((HERE/'BIT-SIGNED-INPUT.json').read_bytes()) + packed = (HERE/'BIT-SIGNED-INPUT-WORD.json.gz').read_bytes() + decoded = gzip.decompress(packed) + need(sha256(packed).hexdigest() == meta['word_gzip_sha256'] and + sha256(decoded).hexdigest() == meta['word_canonical_sha256'], 'frozen signed word pin') + program = json.loads(decoded) + need(program['start'] == word['start'] and program['final'] == word['final'], 'retained native boundaries') + projectors = address_identities(word) + forward,backward = frame_replay(word,program),frame_replay(word,program,True) + try: + frame_replay(word,program,fault='copy_to_full') + except ValueError as error: + negative = str(error) + else: + raise ValueError('rank-zero FULL copy mutation escaped') + receipt = {'status':'PASS_LOCAL_SIX_CAP_COPY_NATIVE_CONTRACT', + 'raw_R438_gzip_sha256':RAW_SHA,'signed_word_canonical_sha256':meta['word_canonical_sha256'], + 'actual_port_count':111,'actual_entrance_and_target_frames':222, + 'projector_sha256':projectors,'address_identity_columns':3552, + 'forward':forward,'literal_inverse':backward,'negative_control':negative, + 'domain':'Exact dyadic projectors and ADDRESS matrices; every odd modulus where their dyadic coefficients are interpreted. VALUE scalar identity and native recursive child errors are separate.', + 'source_role_rule':'COPY may read an actual source field or an arbitrary helper, provided the physical source stays unchanged until ERASE. No helper-only restriction is used.', + 'limits':['local native/frame contract only','no global controller, endpoint decoder, owner allocation, precision theorem, tape bound or kappa claim']} + path = HERE/'BIT-CAP-COPY-LOCAL.json' + if args.write: + path.write_text(json.dumps(receipt,sort_keys=True,indent=2)+'\n') + else: + need(json.loads(path.read_bytes()) == json.loads(canonical(receipt)), 'complete cap-copy receipt differs') + print(receipt['status']) + + +if __name__ == '__main__': + main() diff --git a/research/r429-controller-accounting/frozen/old/recursive/bit_native_controller.py b/research/r429-controller-accounting/frozen/old/recursive/bit_native_controller.py new file mode 100644 index 0000000000..786a39551b --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/bit_native_controller.py @@ -0,0 +1,520 @@ +#!/usr/bin/env python3 +"""Independent BIT cap-copy and retimed common-code controller witnesses. + +Local scalar construction belongs to helper-boundary/bit_transvection.py. +This file consumes its matrix snapshot and the frozen R438 geometry. It proves +native chart admission of the added code sweeps at unchanged idle-window +boundaries, not a restored endpoint or a complete physical supplier. + +Apache-2.0. Prepared with substantial OpenAI Codex assistance. +""" + +import argparse +import ast +from collections import Counter +from fractions import Fraction as Q +import gzip +from hashlib import sha256 +import json +from pathlib import Path + + +HERE = Path(__file__).resolve().parent +REPO = Path('/Users/ross/git/math/integer-mult-bounds') +RECIPE_SOURCE = REPO / ('research/e8-bit-p111-tuned/vendor/pr510/' + 'e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py') + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + + +def bits(value): + while value: + low = value & -value + yield low.bit_length() - 1 + value ^= low + + +def xor_all(values): + result = 0 + for value in values: + result ^= value + return result + + +def binary_product(a, b): + return [xor_all(b[j] for j in bits(row)) for row in a] + + +def binary_rank(a): + pivots = {} + for row in a: + while row: + pivot = row.bit_length() - 1 + if pivot in pivots: + row ^= pivots[pivot] + else: + pivots[pivot] = row + break + return len(pivots) + + +def eye(n): + return [[Q(i == j) for j in range(n)] for i in range(n)] + + +def transpose(a): + return [list(row) for row in zip(*a)] + + +def mm(a, b): + bt = transpose(b) + return [[sum(x * y for x, y in zip(row, col)) for col in bt] for row in a] + + +def plus(a, b, scale=1): + return [[x + scale * y for x, y in zip(r, s)] for r, s in zip(a, b)] + + +def serial(a): + return [[[x.numerator, x.denominator] for x in row] for row in a] + + +def rational_rank(rows): + pivots = {} + for row in rows: + row = list(map(Q, row)) + for j, old in sorted(pivots.items()): + c = row[j] + row = [x - c * y for x,y in zip(row,old)] + j = next((j for j,x in enumerate(row) if x), None) + if j is not None: + c = row[j] + pivots[j] = [x / c for x in row] + return len(pivots) + + +def source_matrices(word, frozen): + v, n = word['v'], 2 * word['v'] + word['R'] + rows = [1 << i for i in range(n)] + for name in ('D', 'A'): + for _, dst, sources in word[name]: + for source in sources: + rows[dst] ^= rows[source] + r = [rows[p] & ((1 << v) - 1) for p in word['ret']] + k = [sum(1 << j for j in row) for row in word['scatter']] + need(r == frozen['R'] and k == frozen['K'], 'producer R/K not actual R438') + w, h = frozen['W'], frozen['H'] + need(binary_product(r, w) == [0] * 9, 'R W not zero') + need(binary_product(r, h) == r, 'R H not R') + need(binary_product(h, h) == [1 << j for j in range(v)], 'H not involutive') + delta = [row ^ (1 << j) for j, row in enumerate(h)] + need(binary_rank(r) == binary_rank(w) == binary_rank(delta) == 9, + 'actual transvection ranks') + need(all(k), 'a physical scatter row is zero') + return {'source_rank': 9, 'scatter_rank': binary_rank(k), + 'source_code_defect_rank': 9, 'all_scatter_rows_nonzero': True, + 'same_code_odd_nine_stage_augmentation': 'E_aug=H; rank(E_aug-I)=9', + 'selected_row_repair_identity_obstruction': { + 'stage_count': 9, 'max_repair_rows_per_stage': 9, + 'union_support_at_most': 81, 'nonzero_K_rows': v, + 'uncovered_K_rows_at_least': v - 81, + 'scope': 'fixed R,K at augmentation; W_s=K+U_s, RW_s=0; each U_s has at most9 nonzero rows'}} + + +def inplace_code(h): + """Explicit no-helper CNOT synthesis; no assumed clean private values.""" + a = h[:] + elimination = [] + n = len(a) + def add(dst, src): + need(dst != src, 'self code gate') + a[dst] ^= a[src] + elimination.append([dst, src]) + for j in range(n): + p = next((p for p in range(j, n) if a[p] >> j & 1), None) + need(p is not None, 'singular source code') + if p != j: + add(p, j) + add(j, p) + add(p, j) + for p in range(n): + if p != j and a[p] >> j & 1: + add(p, j) + need(a == [1 << j for j in range(n)], 'code elimination') + gates = list(reversed(elimination)) + for reverse in (False, True): + rows = [1 << j for j in range(n)] + positive = [1] * n + for dst, src in reversed(gates) if reverse else gates: + rows[dst] ^= rows[src] + positive[dst] += positive[src] + # This particular matrix is involutive over F2, not necessarily over Z. + need(rows == h, 'explicit code synthesis/inverse') + bounds = [] + for order in (gates, list(reversed(gates))): + positive = [1] * n + for dst, src in order: + positive[dst] += positive[src] + bounds.append(max(positive)) + return gates, {'binary_scalar_CNOTs': len(gates), 'new_private_fields': 0, + 'arbitrary_dirty_helpers_needed': 0, + 'signed_integer_forward_positive_bound': str(bounds[0]), + 'signed_integer_reverse_positive_bound': str(bounds[1]), + 'integer_lift_inverse': 'reverse the exact word and negate ADD coefficients; H squared identity is asserted only over F2', + 'source_access': 'each CNOT reads and writes the listed actual bank families with rho_s owner-address reindexing; scans, coordinate arithmetic and head return remain paid'} + + +def geometry(word): + """Reconstruct the same exact E8 reflection BFS as the pinned geometry.""" + path = REPO / 'research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz' + all_word = json.loads(gzip.decompress(path.read_bytes())) + lines = all_word['lines'] + ident = eye(8) + gs, todo = {0: ident}, [0] + while todo: + more = [] + for i in todo: + for j in range(120): + ip = sum(x * y for x, y in zip(lines[i], lines[j])) // 2 + if j in gs or abs(ip) != 1: + continue + d = [Q(x - y if ip == 1 else x + y) + for x, y in zip(lines[i], lines[j])] + norm = sum(x * x for x in d) + reflection = [[Q(a == b) - 2 * d[a] * d[b] / norm + for b in range(8)] for a in range(8)] + gs[j] = mm(reflection, gs[i]) + more.append(j) + todo = more + need(len(gs) == 120, 'actual E8 route BFS incomplete') + digests = [] + caps = [] + denominators = set() + for p, old_label in enumerate(word['ports_geom']): + q, g = word['lines'][p], gs[old_label] + need(q == lines[old_label], 'actual punctured port ordering') + need(mm(transpose(g), g) == ident, 'nonorthogonal E8 chart') + first = [row[0] * 2 for row in g] + need(first == q or first == [-x for x in q], 'route root image') + entrance = [word['lines'][j] for j in word['frames'][word['start'][p]]] + cap = [word['lines'][j] for j in word['frames'][word['final'][111+p]]] + need(rational_rank(entrance) == 1 and all( + all(4*x == sum(a*b for a,b in zip(row,q))*y for x,y in zip(row,q)) + for row in entrance), 'actual source initial frame not P_p') + need(rational_rank(cap) == 7 and all(sum(x*y for x,y in zip(row,q)) == 0 for row in cap), + 'actual target final frame not K_p') + projector = [[Q(x * y, 4) for y in q] for x in q] + complement = plus(ident, projector, -1) + a = [row[1:] for row in g] + need(mm(a, transpose(a)) == complement, 'A A* not K') + need(mm(transpose(a), a) == eye(7), 'A* A not I7') + need(mm(projector, a) == [[Q(0)] * 7 for _ in range(8)], 'P A not zero') + rho = [projector[i] + a[i] for i in range(8)] + rho += [row + [Q(0)] * 7 for row in transpose(a)] + need(mm(rho, rho) == eye(15), 'actual rho15 not involutive') + p15 = [row + [Q(0)] * 7 for row in projector] + [[Q(0)] * 15 for _ in range(7)] + k15 = [row + [Q(0)] * 7 for row in complement] + [[Q(0)] * 15 for _ in range(7)] + e15 = [[Q(i == j and i >= 8) for j in range(15)] for i in range(15)] + need(mm(mm(rho, p15), rho) == p15, 'rho does not fix P') + need(mm(mm(rho, k15), rho) == e15, 'rho K rho not exterior E') + need(mm(mm(rho, e15), rho) == k15, 'rho E rho not K') + # Exact native address exchange law on both address halves. + def exchange(u): + c = plus(ident, u, -1) + return [c[i] + u[i] for i in range(8)] + [u[i] + c[i] for i in range(8)] + need(mm(exchange(ident), exchange(projector)) == exchange(complement), + 'D_I D_P not D_K') + need(mm(exchange(projector), exchange(projector)) == eye(16), 'D_P not involutive') + if p in (0, 1, 2, 4, 8, 9, 14, 30, 59): + caps.append({'port': p, 'rank': 1, + 'literal_copy': 'D_P takes a fresh copy from FULL to K_p, source unchanged; ERASE sees its original snapshot', + 'complementary_inverse': 'same rank-one projector, literal reverse snapshot lifecycle'}) + denominators.update(x.denominator for row in rho for x in row) + digests.append(sha256(canonical(serial(rho))).hexdigest()) + return {'ports': len(digests), 'actual_stage_routes': 9 * len(digests), + 'rho15_digests': digests, 'route_denominators': sorted(denominators), + 'native_D_identity_columns': 2 * 16 * len(digests), + 'actual_R438_entrance_and_cap_frames_bound': 2 * len(digests), + 'rank_one_FULL_to_cap_copy_witnesses': caps, + 'all_stage_admission_law': { + 'Y_hole_at_level_t_less_than_s': 'rho_s (K_p+E_<=t) rho_s = E_s+E_<=t, independent of port', + 'X_after_progress_to_level_t_at_least_s': 'rho_s (I+E_<=t) rho_s = I+E_<=t, independent of port', + 'initial_Y': 'zero remains zero under every actual rho_s', + 's0': 'rho_0=I; initial Y zero and completed X I are common', + 'invalid_late_X_before_progress': 'rho_s (I+E_<=t) rho_s = P_p+E_s+E_<=t for t level) or + side == 0 and level >= s, + 'code chart not admitted at actual native cut') + key = len(extra) + event = dict(op='code sweep', pair=pair, side='Y' if side else 'X', + stages=stages, native_level=level, cut=cut, + source_cut='before all borrowing in this idle window' if side else + 'after all borrowed helpers have restored and the idle child completed') + extra.append(event) + word.append(event) + if key != omit: + banks[pair][side] = code_apply(banks[pair][side], stages) + # These banks are untouched by the data controller until their first + # retained idle child. Their arbitrary preloaded dirt may be borrowed and + # restored while waiting; it need not be independently clean. + for p in range(1, 4): + sweep(p, 1, list(range(2 * p)), 'original first idle-window entrance') + for event in events: + if event['kind'] == 'local': + s, p, rev = event['stage'], event['pair'], event['reverse'] + need(levels[p] == s - 1, 'active local level') + if not rev: + sweep(p, 1, [s], 'immediately before active forward call') + x, y = banks[p] + banks[p] = [xor_dict(x, y), code_apply(y, [s])] if rev else [ + code_apply(x, [s]), xor_dict(y, code_apply(x, [s]))] + levels[p] = s + word.append({'op': 'complete local coded call', **event}) + if rev: + sweep(p, 0, [s], 'immediately after active reverse call') + idles = [] + if s % 2 and s <= 5: + j = (s + 1) // 2 + idles.append((j, -1, s)) + elif s % 2 == 0 and 2 <= s <= 6: + j = s // 2 + idles.append((j, s - 1, s)) + elif s == 8: + for j in range(4): + old = levels[j] + idles.append((j, old, 8)) + for j, old, new in idles: + need(levels[j] == old, 'original idle entry level') + rank = 7 * (new - old) + rank_profile[rank] += 2 * 111 if rank else 0 + word.append(dict(op='unchanged idle child', pair=j, + source_level=old, target_level=new, rank=rank)) + levels[j] = new + stages = list(range(new + 1)) if old == -1 else list(range(old + 1, new + 1)) + sweep(j, 0, stages, 'original idle-window exit') + elif event['kind'] == 'bridge': + d, s = event['dst'], event['src'] + need(levels[d] == levels[s], 'original bridge frame level') + def factors(row): + return {key[0] for key in row} + codes = [factors(banks[p][side]) for p in (d, s) for side in (0, 1)] + need(all(value == codes[0] for value in codes), 'actual bridge code mismatch') + banks[d][0] ^= banks[s][0] + banks[s][1] ^= banks[d][1] + word.append(event) + bridge_checks.append(dict(dst=d, src=s, level=levels[d], + common_code=list(next(iter(codes[0]))))) + # Apply a Y preload at the actual entrance of its idle window, + # before any intervening call borrows cells from that window. + last_stage = next( + entry['stage'] for entry in reversed(word) + if entry.get('op') == 'complete local coded call') + if last_stage in (1, 3, 5): + j = (last_stage + 1) // 2 + sweep(j, 1, [last_stage + 1], 'immediately after preceding bridge; short idle-window entrance') + elif last_stage in (2, 4, 6): + retired = (last_stage - 2) // 2 + sweep(retired, 1, list(range(last_stage + 1, 9)), + 'immediately after last bridge; terminal idle-window entrance') + else: + need(levels == [8] * 4, 'terminal level') + banks = [[y, x] for x, y in banks] + word.append(event) + expected = [[{(tuple(range(8, -1, -1)), 2 * p)}, + {(tuple(range(8, -1, -1)), 2 * p + 1)}] for p in range(4)] + need(banks == expected, 'all arbitrary bank columns coded endpoint') + rank_profile.pop(0, None) + need(rank_profile == Counter({14: 444, 7: 666, 28: 444, 42: 444}), + 'original unhosted idle profile changed') + return word, {'extra_code_factors': sum(len(e['stages']) for e in extra), + 'code_sweeps': len(extra), 'original_idle_profile_per_replica': dict(sorted(rank_profile.items())), + 'original_idle_rank_mass_per_replica': sum(r * n for r, n in rank_profile.items()), + 'original_bridge_checks': bridge_checks, + 'original_long_idle_windows_preserved': True, + 'all_arbitrary_bank_columns': 8, + 'extra_rank_zero_code_work_needs_full_access_invoice': True, + 'endpoint': 'diag(E8,...,E8), E8=G8...G0; arbitrary invertible noncommuting G_s', + 'local_orientation': 'G_s=A_s for forward, G_s=A_s^-1 for reverse', + 'owner_condition': 'all new Y preloads before borrowing begins; X code after all owners restore. Restored arbitrary correlated dirt remains admissible under a globally invertible preload.'} + + +def owner_windows(word): + """Compare chronological eligible stages with the actual retained rule.""" + source = REPO / ('research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/' + 'vendor/idle-axis-hosting/hosting_core.py') + tree = ast.parse(source.read_bytes()) + fn = next(x for x in tree.body if isinstance(x, ast.FunctionDef) and x.name == 'windows') + env = {} + exec(compile(ast.Module(body=[fn], type_ignores=[]), str(source), 'exec'), env) + schedule = [] + original_positions = [] + idle = 0 + for pos, event in enumerate(word): + if event.get('op') == 'complete local coded call': + schedule.append({'kind': 'local', 'stage': event['stage'], 'pair': event['pair']}) + elif event.get('op') == 'unchanged idle child': + schedule.append({'kind': 'idle', 'pair': event['pair'], 'rank': event['rank'], 'idx': idle}) + idle += 1 + elif event.get('kind') in ('bridge', 'exchange'): + schedule.append(event) + else: + continue + original_positions.append(pos) + old = env['windows'](schedule) + old_with_positions = {} + last, locals_ = {}, [] + for i, event in enumerate(schedule): + pos = original_positions[i] + if event['kind'] == 'local': + locals_.append((pos, event['stage'], event['pair'])) + last[event['pair']] = pos + elif event['kind'] == 'bridge': + last[event['dst']] = last[event['src']] = pos + elif event['kind'] == 'idle': + p = event['pair'] + old_with_positions[event['idx']] = (last.get(p, -1), pos) + # The enlarged physical touch alphabet counts each code sweep as a touch + # of its actual pair, conservatively even when only one member changes. + last, locals_, receipts = {}, [], [] + for pos, event in enumerate(word): + op = event.get('op') + if op == 'complete local coded call': + locals_.append((pos, event['stage'], event['pair'])) + last[event['pair']] = pos + elif op == 'code sweep': + last[event['pair']] = pos + elif event.get('kind') == 'bridge': + last[event['dst']] = last[event['src']] = pos + elif op == 'unchanged idle child': + idx = len(receipts) + p, r, expected = old[idx] + lo = last.get(p, -1) + actual = frozenset(s for q, s, pp in locals_ if lo < q < pos and pp != p) + need(actual == expected, 'a new code touch destroys an old helper owner window') + old_lo, old_hi = old_with_positions[idx] + receipts.append({'idle_index': idx, 'pair': p, 'original_rank': r, + 'old_last_pair_touch_index': old_lo, 'new_last_pair_touch_index': lo, + 'idle_child_index': pos, 'original_idle_child_index': old_hi, + 'eligible_helper_stages_old': sorted(expected), + 'eligible_helper_stages_with_all_code_touches': sorted(actual), + 'no_added_code_between_first_eligible_stage_and_child': + not any(e.get('op') == 'code sweep' and e['pair'] == p and + (min((q for q,s,pp in locals_ if s in expected), default=pos) < q2 < pos) + for q2,e in enumerate(word))}) + need(receipts[-1]['no_added_code_between_first_eligible_stage_and_child'], + 'code sweep interrupts a pending owner interval') + # Cheap diagnosis of the superseded late-terminal-Y placement. Moving + # that touch behind an eligible call would strictly shrink the window. + terminal = next(r for r in receipts if r['pair'] == 0 and r['original_rank'] == 42) + need(terminal['eligible_helper_stages_old'] == [3,4,5,6,7,8], 'terminal window control') + return {'retained_windows_source_sha256': sha256(source.read_bytes()).hexdigest(), + 'windows': receipts, + 'late_terminal_Y_mutation': {'pair': 0, 'late_touch_after_stage': 8, + 'retained_eligible_stages': [3,4,5,6,7,8], 'eligible_stages_if_touch_at_child': [], + 'rejection': 'later preload invalidates existing strict owner-window stages'}} + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument('--write', action='store_true') + args = ap.parse_args() + frozen_path = HERE / 'BIT-CODE-INPUT.json' + frozen = json.loads(frozen_path.read_bytes()) + path = Path(frozen['source_word']) + need(sha256(path.read_bytes()).hexdigest() == frozen['source_gzip_sha256'], 'raw R438 word pin') + word = json.loads(gzip.decompress(path.read_bytes())) + algebra = source_matrices(word, frozen['matrices']) + gates, invoice = inplace_code(frozen['matrices']['H']) + geo = geometry(word) + events, recipe_pin = recipe() + controller_word, result = controller(events) + ownership = owner_windows(controller_word) + need(result['extra_code_factors'] == 63, 'whole common-code extra count') + controls = [] + for skip in (0, 3, 9, 15): + try: + controller(events, omit=skip) + except ValueError as error: + controls.append({'omitted_code_sweep': skip, 'rejection': str(error)}) + else: + raise ValueError('omitted code sweep escaped') + complete = {'status': 'PASS_BIT_NATIVE_CAP_COPY_AND_IDLE_BOUNDARY_CODE_CONTROLLER_ENDPOINT_OPEN', + 'source_pin': frozen['source_pin'], 'raw_word_sha256': frozen['source_gzip_sha256'], + 'matrix_input_sha256': sha256(frozen_path.read_bytes()).hexdigest(), + 'canonical_recipe_source_sha256': recipe_pin, + 'ordered_controller_sha256': sha256(canonical(controller_word)).hexdigest(), + 'algebra': algebra, 'native_geometry': geo, 'code_scalar_invoice': invoice, + 'controller': result, 'chronological_owner_windows': ownership, + 'negative_controls': controls, + 'terminal_debt': {'completed_fields': 'past-chart inverse code at common FULL', + 'hole_fields': 'N E8^-1 N on original physical input, N=diag(D_Pp); both gauges remain', + 'conservative_rank_one_upper': 2 * 4 * 111, + 'rank_one_upper_is_not_a_lower_bound': True}, + 'limits': ['shared-label mutable-source native realization remains inherited', + 'nine-stage integer-lift precision not re-admitted', + 'no complete rank-zero source-access/tape invoice', + 'owner windows preserved structurally, changed whole program not emitted or owner-replayed', + 'no restored endpoint or supplier or new conditional kappa']} + output = canonical(complete) + if args.write: + (HERE / 'BIT-NATIVE-CONTROLLER.json').write_text(json.dumps(complete, sort_keys=True, indent=2) + '\n') + (HERE / 'BIT-NATIVE-CONTROLLER-WORD.json').write_text(json.dumps( + {'inplace_code_CNOTs': gates, 'ordered_controller': controller_word}, sort_keys=True, indent=2) + '\n') + else: + need(json.loads((HERE / 'BIT-NATIVE-CONTROLLER.json').read_bytes()) == json.loads(output), + 'full BIT native/controller receipt differs') + need(json.loads((HERE / 'BIT-NATIVE-CONTROLLER-WORD.json').read_bytes()) == + {'inplace_code_CNOTs': gates, 'ordered_controller': controller_word}, + 'full ordered BIT native/controller word differs') + print(complete['status']) + print('63 extra code factors; original long idle windows retained; terminal N E^-1 N unresolved') + + +if __name__ == '__main__': + main() diff --git a/research/r429-controller-accounting/frozen/old/recursive/bit_owner_prune.py b/research/r429-controller-accounting/frozen/old/recursive/bit_owner_prune.py new file mode 100644 index 0000000000..501d3dc2c0 --- /dev/null +++ b/research/r429-controller-accounting/frozen/old/recursive/bit_owner_prune.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 +"""Restrict the actual R438 owner allocation and return deleted helper work. + +No new hosting optimum or terminal-child scratch allocation is asserted. The +old pending-projector audit is rerun on every surviving physical owner role. +Apache-2.0; substantial OpenAI Codex assistance. +""" + +import argparse +from collections import Counter +from hashlib import sha256 +import importlib.util +import json +from pathlib import Path +import sys + +sys.dont_write_bytecode = True +sys.path.insert(0,str(Path(__file__).resolve().parent)) +import bit_cap_copy_local as cap + +HERE = Path(__file__).resolve().parent +REPO = Path('/Users/ross/git/math/integer-mult-bounds') +PROJECTOR = REPO/'research/r438-rehost-projectors/verify.py' +LAYOUT = REPO/'research/bit-r438-transport-rehost/verify_rehost.receipt.json' +CERTIFICATE = REPO/'research/r438-native-rehost/CERTIFICATE.json' +need = cap.need + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--write',action='store_true') + args = parser.parse_args() + spec = importlib.util.spec_from_file_location('retained_r438_projector',PROJECTOR) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + module.source_check() + _,children,windows = module.chronology() + layout = json.loads(LAYOUT.read_bytes())['placement'] + slots,old_remaining = module.expand(layout['selection'],children,windows,438) + old,_,_ = module.audit(slots,children,windows,438) + removed = [slot for slot in slots if 249 <= slot[5] <= 257] + need(len(removed) == 81 and Counter(s[4] for s in removed) == Counter({s:9 for s in range(9)}),'removed owner-role coverage') + new_slots = [slot[:5]+(slot[5]-(9 if slot[5] > 257 else 0),) + for slot in slots if not 249 <= slot[5] <= 257] + new,_,complement = module.audit(new_slots,children,windows,429) + old_hist = Counter(old['idle_per_replica_including_zero']) + new_hist = Counter(new['idle_per_replica_including_zero']) + need(sum(r*n for r,n in new_hist.items())-sum(r*n for r,n in old_hist.items()) == 648, + 'deleted helper work not returned') + # Every removed whole helper contributes exactly eight previously hosted + # axes to its same physical deadline remainder. Gaps are retained exactly; + # no free repacking or changed owner coordinates are assumed. + for c in children: + for copy in range(222): + freed = sum(slot[3] for slot in removed if slot[0] == c['idx'] and slot[1] == copy) + need(complement[c['idx'],copy].bit_count() == old_remaining[c['idx'],copy]+freed, + 'physical deadline remainder differs from removed slot width') + certificate = json.loads(CERTIFICATE.read_bytes()) + baseline = Counter({int(r):n for r,n in certificate['pipeline']['candidate']['hosted']['invoice']['bit_profile'].items()}) + old_local = Counter({int(r):n for r,n in certificate['local']['candidate']['profile'].items()}) + new_local = Counter({1:1298,2:1342,3:79,4:44,5:93,6:11,7:9}) + full = Counter(baseline) + full.subtract({r:288*n for r,n in old_local.items()}) + full.update({r:288*n for r,n in new_local.items()}) + full.subtract({r:32*n for r,n in old_hist.items() if r}) + full.update({r:32*n for r,n in new_hist.items() if r}) + need(all(n >= 0 for n in full.values()),'complete pruned profile negative') + full = +full + mass = lambda h:sum(r*n for r,n in h.items()) + need(mass(baseline)-mass(full) == 60*288,'global saving must include returned owner work') + terminal = Counter(full) + terminal[1] += 888*32 + need(mass(terminal)-mass(baseline) == (888-9*60)*32,'two-N wrapper mass invoice') + data = {'status':'PASS_RESTRICTED429_OWNER_ALLOCATION_WITH648_RETURNED_IDLE_RANK', + 'sources':{str(p.relative_to(REPO)):sha256(p.read_bytes()).hexdigest() + for p in (PROJECTOR,LAYOUT,CERTIFICATE)}, + 'discarded_local_helper_numbers':list(range(249,258)), + 'discarded_old_physical_registers':list(range(471,480)), + 'deleted_slots_per_replica':[list(s) for s in removed], + 'retained_slots_per_replica':len(new_slots), + 'retained_slots_sha256':sha256(cap.canonical(new_slots)).hexdigest(), + 'old_projector_audit':old,'new_projector_audit':new, + 'old_idle_profile_per_replica':dict(sorted(old_hist.items())), + 'new_idle_profile_per_replica':dict(sorted(new_hist.items())), + 'returned_idle_rank_per_replica':648, + 'all32_replicas_owner_occurrences':32*9*429, + 'complete_pruned_local_and_idle_profile':dict(sorted(full.items())), + 'complete_pruned_mass':mass(full), + 'net_rank_mass_saving_per_local_call':60, + 'two_N_wrapper_extra_rank1_children_per_replica':888, + 'pruned_plus_two_N_profile':dict(sorted(terminal.items())), + 'pruned_plus_two_N_mass':mass(terminal), + 'zero_exponent_two_N_excess_over_baseline':mass(terminal)-mass(baseline), + 'omitted_return_control':'Omitting the648 returned idle rank per replica would falsely claim132 net units per local call; exact physical complements reject it.', + 'limits':['retained owner offsets and pending masks only; no free repacking or new hosting optimum', + 'previous native early-preload/late-X code-window proof applies structurally to this restricted assignment', + 'the terminal888 rank1 calls still need their own recursive scratch/owner/tape/precision admission', + 'neither complete profile nor terminal addition alone is a restored supplier or kappa claim']} + path = HERE/'BIT-OWNER-PRUNE.json' + if args.write: + path.write_text(json.dumps(data,sort_keys=True,indent=2)+'\n') + else: + need(json.loads(path.read_bytes()) == json.loads(cap.canonical(data)),'complete owner restriction receipt differs') + print(data['status']) + print('returned648 per replica; netlocalmasssaving60; terminalextra888') + + +if __name__ == '__main__': + main() diff --git a/research/r429-controller-accounting/frozen/reviews/owner/OWNER-REVIEW.json b/research/r429-controller-accounting/frozen/reviews/owner/OWNER-REVIEW.json new file mode 100644 index 0000000000..84a910495f --- /dev/null +++ b/research/r429-controller-accounting/frozen/reviews/owner/OWNER-REVIEW.json @@ -0,0 +1,2695 @@ +{ + "all_alpha_completion_obstruction": "For every alpha>=0, sum Hterminal[r]*r*(64/r)^alpha >= 1819488 > 64*28416.", + "all_odd_identity_sanity_cases": 2048, + "all_odd_written_proof": "(L-1)n-3L-2Bn=-3L for L=2B+1; a conditional ledger identity, not an emitted all-B construction.", + "ambient": 64, + "baseline_profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "4": 26880, + "5": 29376, + "6": 17376, + "7": 26496, + "34": 32, + "42": 320 + }, + "complete_mass_before_after_terminal": [ + 1808352, + 1791072, + 1819488 + ], + "deleted_slots_per_replica": [ + [ + 2, + 9, + 0, + 8, + 0, + 249 + ], + [ + 2, + 9, + 8, + 8, + 0, + 250 + ], + [ + 2, + 9, + 16, + 8, + 0, + 251 + ], + [ + 2, + 10, + 0, + 8, + 0, + 252 + ], + [ + 2, + 10, + 8, + 8, + 0, + 253 + ], + [ + 2, + 10, + 16, + 8, + 0, + 254 + ], + [ + 2, + 11, + 0, + 8, + 0, + 255 + ], + [ + 2, + 11, + 8, + 8, + 0, + 256 + ], + [ + 2, + 11, + 16, + 8, + 0, + 257 + ], + [ + 2, + 155, + 0, + 8, + 1, + 249 + ], + [ + 2, + 155, + 8, + 8, + 1, + 250 + ], + [ + 2, + 155, + 16, + 8, + 1, + 251 + ], + [ + 2, + 156, + 0, + 8, + 1, + 252 + ], + [ + 2, + 156, + 8, + 8, + 1, + 253 + ], + [ + 2, + 156, + 16, + 8, + 1, + 254 + ], + [ + 2, + 157, + 0, + 8, + 1, + 255 + ], + [ + 2, + 157, + 8, + 8, + 1, + 256 + ], + [ + 2, + 157, + 16, + 8, + 1, + 257 + ], + [ + 4, + 47, + 16, + 8, + 2, + 249 + ], + [ + 4, + 47, + 24, + 8, + 2, + 250 + ], + [ + 4, + 47, + 32, + 8, + 2, + 251 + ], + [ + 4, + 48, + 0, + 8, + 2, + 252 + ], + [ + 4, + 48, + 8, + 8, + 2, + 253 + ], + [ + 4, + 48, + 16, + 8, + 2, + 254 + ], + [ + 4, + 48, + 24, + 8, + 2, + 255 + ], + [ + 4, + 48, + 32, + 8, + 2, + 256 + ], + [ + 4, + 49, + 0, + 8, + 2, + 257 + ], + [ + 4, + 135, + 0, + 8, + 3, + 249 + ], + [ + 4, + 135, + 8, + 8, + 3, + 250 + ], + [ + 4, + 135, + 16, + 8, + 3, + 251 + ], + [ + 4, + 135, + 24, + 8, + 3, + 252 + ], + [ + 4, + 135, + 32, + 8, + 3, + 253 + ], + [ + 4, + 136, + 0, + 8, + 3, + 254 + ], + [ + 4, + 136, + 8, + 8, + 3, + 255 + ], + [ + 4, + 136, + 16, + 8, + 3, + 256 + ], + [ + 4, + 136, + 24, + 8, + 3, + 257 + ], + [ + 6, + 0, + 24, + 8, + 4, + 249 + ], + [ + 6, + 0, + 32, + 8, + 4, + 250 + ], + [ + 6, + 1, + 0, + 8, + 4, + 251 + ], + [ + 6, + 1, + 8, + 8, + 4, + 252 + ], + [ + 6, + 1, + 16, + 8, + 4, + 253 + ], + [ + 6, + 1, + 24, + 8, + 4, + 254 + ], + [ + 6, + 1, + 32, + 8, + 4, + 255 + ], + [ + 6, + 2, + 0, + 8, + 4, + 256 + ], + [ + 6, + 2, + 8, + 8, + 4, + 257 + ], + [ + 6, + 88, + 8, + 8, + 5, + 249 + ], + [ + 6, + 88, + 16, + 8, + 5, + 250 + ], + [ + 6, + 88, + 24, + 8, + 5, + 251 + ], + [ + 6, + 88, + 32, + 8, + 5, + 252 + ], + [ + 6, + 89, + 0, + 8, + 5, + 253 + ], + [ + 6, + 89, + 8, + 8, + 5, + 254 + ], + [ + 6, + 89, + 16, + 8, + 5, + 255 + ], + [ + 6, + 89, + 24, + 8, + 5, + 256 + ], + [ + 6, + 89, + 32, + 8, + 5, + 257 + ], + [ + 6, + 175, + 32, + 8, + 6, + 249 + ], + [ + 6, + 176, + 0, + 8, + 6, + 250 + ], + [ + 6, + 176, + 8, + 8, + 6, + 251 + ], + [ + 6, + 176, + 16, + 8, + 6, + 252 + ], + [ + 6, + 176, + 24, + 8, + 6, + 253 + ], + [ + 6, + 176, + 32, + 8, + 6, + 254 + ], + [ + 6, + 177, + 0, + 8, + 6, + 255 + ], + [ + 6, + 177, + 8, + 8, + 6, + 256 + ], + [ + 6, + 177, + 16, + 8, + 6, + 257 + ], + [ + 7, + 87, + 0, + 8, + 7, + 249 + ], + [ + 7, + 87, + 8, + 8, + 7, + 250 + ], + [ + 7, + 87, + 16, + 8, + 7, + 251 + ], + [ + 7, + 88, + 0, + 8, + 7, + 252 + ], + [ + 7, + 88, + 8, + 8, + 7, + 253 + ], + [ + 7, + 88, + 16, + 8, + 7, + 254 + ], + [ + 7, + 89, + 0, + 8, + 7, + 255 + ], + [ + 7, + 89, + 8, + 8, + 7, + 256 + ], + [ + 7, + 89, + 16, + 8, + 7, + 257 + ], + [ + 8, + 33, + 0, + 8, + 8, + 249 + ], + [ + 8, + 34, + 0, + 8, + 8, + 250 + ], + [ + 8, + 35, + 0, + 8, + 8, + 251 + ], + [ + 8, + 36, + 0, + 8, + 8, + 252 + ], + [ + 8, + 37, + 0, + 8, + 8, + 253 + ], + [ + 8, + 38, + 0, + 8, + 8, + 254 + ], + [ + 8, + 39, + 0, + 8, + 8, + 255 + ], + [ + 8, + 40, + 0, + 8, + 8, + 256 + ], + [ + 8, + 41, + 0, + 8, + 8, + 257 + ] + ], + "limits": [ + "Native arbitrary-input projector factorization is justified by exact set partitions and the written orthogonal-projector law; no whole program is emitted.", + "The 651-column integer/F2 local operator identity is inherited from published PR3645 and is not re-executed here; the pinned BIT-PRUNE-AUDIT receipt supplies the local paid profiles. The separate native_remainders.py binds the published word's frame events, ranks, COPY lifecycle and changed owner remainder operators, not its full integer/value identity.", + "888 is the known construction's rank-one bill, not a universal terminal lower bound.", + "444 is the fixed FULL-gather access bill, not a universal observer lower bound.", + "No terminal recursive owner allocation, rounding, precision, physical tape or new kappa admission." + ], + "local_mass_before_after": [ + 5121, + 4989 + ], + "method": "No producer imports or function execution; independent chronology, set partitions, owner rows, complete histograms and exact address actions.", + "native_gauge_involution_basis_columns": 1776, + "native_one_gauge_omission_witnesses": [ + { + "one_gauge_swaps_root_halves": true, + "port": 0, + "q": [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 1, + "q": [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 2, + "q": [ + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 3, + "q": [ + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 4, + "q": [ + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 5, + "q": [ + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 6, + "q": [ + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 7, + "q": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 8, + "q": [ + 0, + 1, + 1, + 0, + 1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 9, + "q": [ + 0, + 1, + 1, + 0, + 1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 10, + "q": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 11, + "q": [ + 0, + 1, + -1, + 0, + 1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 12, + "q": [ + 0, + 1, + -1, + 0, + 1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 13, + "q": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 14, + "q": [ + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 15, + "q": [ + 1, + 0, + 1, + 0, + 1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 16, + "q": [ + 1, + 0, + 1, + 0, + -1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 17, + "q": [ + 1, + 0, + 1, + 0, + -1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 18, + "q": [ + 1, + 0, + -1, + 0, + 1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 19, + "q": [ + 1, + 0, + -1, + 0, + 1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 20, + "q": [ + 1, + 0, + -1, + 0, + -1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 21, + "q": [ + 1, + 0, + -1, + 0, + -1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 22, + "q": [ + 1, + 1, + 0, + 0, + 0, + 0, + 1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 23, + "q": [ + 1, + 1, + 0, + 0, + 0, + 0, + 1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 24, + "q": [ + 1, + 1, + 0, + 0, + 0, + 0, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 25, + "q": [ + 1, + 1, + 0, + 0, + 0, + 0, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 26, + "q": [ + 1, + -1, + 0, + 0, + 0, + 0, + 1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 27, + "q": [ + 1, + -1, + 0, + 0, + 0, + 0, + 1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 28, + "q": [ + 1, + -1, + 0, + 0, + 0, + 0, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 29, + "q": [ + 1, + -1, + 0, + 0, + 0, + 0, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 30, + "q": [ + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 31, + "q": [ + 1, + 1, + 0, + 0, + 1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 32, + "q": [ + 1, + 1, + 0, + 0, + -1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 33, + "q": [ + 1, + 1, + 0, + 0, + -1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 34, + "q": [ + 1, + -1, + 0, + 0, + 1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 35, + "q": [ + 1, + -1, + 0, + 0, + 1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 36, + "q": [ + 1, + -1, + 0, + 0, + -1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 37, + "q": [ + 1, + -1, + 0, + 0, + -1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 38, + "q": [ + 1, + 0, + 1, + 0, + 0, + 1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 39, + "q": [ + 1, + 0, + 1, + 0, + 0, + 1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 40, + "q": [ + 1, + 0, + 1, + 0, + 0, + -1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 41, + "q": [ + 1, + 0, + 1, + 0, + 0, + -1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 42, + "q": [ + 1, + 0, + -1, + 0, + 0, + 1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 43, + "q": [ + 1, + 0, + -1, + 0, + 0, + 1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 44, + "q": [ + 1, + 0, + -1, + 0, + 0, + -1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 45, + "q": [ + 1, + 0, + -1, + 0, + 0, + -1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 46, + "q": [ + 0, + 1, + 1, + 0, + 0, + 1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 47, + "q": [ + 0, + 1, + 1, + 0, + 0, + 1, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 48, + "q": [ + 0, + 1, + 1, + 0, + 0, + -1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 49, + "q": [ + 0, + 1, + -1, + 0, + 0, + 1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 50, + "q": [ + 0, + 1, + -1, + 0, + 0, + -1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 51, + "q": [ + 0, + 1, + -1, + 0, + 0, + -1, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 52, + "q": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 53, + "q": [ + 0, + 0, + 0, + 0, + 1, + 1, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 54, + "q": [ + 0, + 0, + 0, + 0, + 1, + 1, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 55, + "q": [ + 0, + 0, + 0, + 0, + 1, + -1, + 1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 56, + "q": [ + 0, + 0, + 0, + 0, + 1, + -1, + 1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 57, + "q": [ + 0, + 0, + 0, + 0, + 1, + -1, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 58, + "q": [ + 0, + 0, + 0, + 0, + 1, + -1, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 59, + "q": [ + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 60, + "q": [ + 1, + 1, + 1, + -1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 61, + "q": [ + 1, + 1, + -1, + -1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 62, + "q": [ + 1, + -1, + 1, + 1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 63, + "q": [ + 1, + -1, + 1, + -1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 64, + "q": [ + 1, + -1, + -1, + 1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 65, + "q": [ + 1, + -1, + -1, + -1, + 0, + 0, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 66, + "q": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 67, + "q": [ + 1, + 0, + 0, + 1, + -1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 68, + "q": [ + 1, + 0, + 0, + 1, + -1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 69, + "q": [ + 1, + 0, + 0, + -1, + 1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 70, + "q": [ + 1, + 0, + 0, + -1, + 1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 71, + "q": [ + 1, + 0, + 0, + -1, + -1, + 0, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 72, + "q": [ + 1, + 0, + 0, + -1, + -1, + 0, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 73, + "q": [ + 0, + 1, + 0, + 1, + 1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 74, + "q": [ + 0, + 1, + 0, + 1, + 1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 75, + "q": [ + 0, + 1, + 0, + 1, + -1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 76, + "q": [ + 0, + 1, + 0, + 1, + -1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 77, + "q": [ + 0, + 1, + 0, + -1, + 1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 78, + "q": [ + 0, + 1, + 0, + -1, + 1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 79, + "q": [ + 0, + 1, + 0, + -1, + -1, + 0, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 80, + "q": [ + 0, + 1, + 0, + -1, + -1, + 0, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 81, + "q": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 82, + "q": [ + 0, + 0, + 1, + 1, + 0, + 0, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 83, + "q": [ + 0, + 0, + 1, + 1, + 0, + 0, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 84, + "q": [ + 0, + 0, + 1, + -1, + 0, + 0, + 1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 85, + "q": [ + 0, + 0, + 1, + -1, + 0, + 0, + 1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 86, + "q": [ + 0, + 0, + 1, + -1, + 0, + 0, + -1, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 87, + "q": [ + 0, + 0, + 1, + -1, + 0, + 0, + -1, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 88, + "q": [ + 0, + 0, + 1, + 1, + 1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 89, + "q": [ + 0, + 0, + 1, + 1, + 1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 90, + "q": [ + 0, + 0, + 1, + 1, + -1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 91, + "q": [ + 0, + 0, + 1, + 1, + -1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 92, + "q": [ + 0, + 0, + 1, + -1, + 1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 93, + "q": [ + 0, + 0, + 1, + -1, + 1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 94, + "q": [ + 0, + 0, + 1, + -1, + -1, + 1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 95, + "q": [ + 0, + 0, + 1, + -1, + -1, + -1, + 0, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 96, + "q": [ + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 97, + "q": [ + 0, + 1, + 0, + 1, + 0, + 1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 98, + "q": [ + 0, + 1, + 0, + 1, + 0, + -1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 99, + "q": [ + 0, + 1, + 0, + 1, + 0, + -1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 100, + "q": [ + 0, + 1, + 0, + -1, + 0, + 1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 101, + "q": [ + 0, + 1, + 0, + -1, + 0, + 1, + 0, + -1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 102, + "q": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + 1 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 103, + "q": [ + 1, + 0, + 0, + 1, + 0, + 1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 104, + "q": [ + 1, + 0, + 0, + 1, + 0, + 1, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 105, + "q": [ + 1, + 0, + 0, + 1, + 0, + -1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 106, + "q": [ + 1, + 0, + 0, + 1, + 0, + -1, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 107, + "q": [ + 1, + 0, + 0, + -1, + 0, + 1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 108, + "q": [ + 1, + 0, + 0, + -1, + 0, + 1, + -1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 109, + "q": [ + 1, + 0, + 0, + -1, + 0, + -1, + 1, + 0 + ] + }, + { + "one_gauge_swaps_root_halves": true, + "port": 110, + "q": [ + 1, + 0, + 0, + -1, + 0, + -1, + -1, + 0 + ] + } + ], + "negative_controls": [ + { + "name": "omit_returned_idle_axes", + "reason": "complete pending partition" + }, + { + "name": "claim_132_net_saving", + "reason": "returned idle rank omitted" + }, + { + "name": "omit_terminal_input_gauge_cost", + "reason": "one gauge cost omitted" + }, + { + "name": "allow_child_above_ambient", + "reason": "moment domain violated" + } + ], + "new_owner": { + "factorization_sha256": "d69c821a951a8439737107f24b1df89bbf349df941acaf18fb9f70175b41ae8b", + "idle": { + "0": 222, + "2": 420, + "4": 435, + "6": 435, + "7": 666, + "10": 2, + "14": 9, + "18": 2, + "26": 2, + "28": 9, + "34": 3, + "42": 15 + }, + "owner_sha256": "14a74b706f16cded0daac85f134d5336bcd91ed4834149b297b36974b3822fea", + "physical_roles": 123552 + }, + "old_owner": { + "factorization_sha256": "7983d077edcf50376dc0f85ae48b1015a1b4e8077d0ba0770973a79451305798", + "idle": { + "0": 222, + "2": 433, + "4": 444, + "6": 444, + "7": 666, + "34": 1, + "42": 10 + }, + "owner_sha256": "5226250b03a365832485f37f0a542dd830258a462f79a9ceab576ea297bcb0ac", + "physical_roles": 126144 + }, + "pruned_plus_two_N_profile": { + "1": 402240, + "2": 399936, + "3": 22752, + "4": 26592, + "5": 26784, + "6": 17088, + "7": 23904, + "10": 64, + "14": 288, + "18": 64, + "26": 64, + "28": 288, + "34": 96, + "42": 480 + }, + "pruned_profile": { + "1": 373824, + "2": 399936, + "3": 22752, + "4": 26592, + "5": 26784, + "6": 17088, + "7": 23904, + "10": 64, + "14": 288, + "18": 64, + "26": 64, + "28": 288, + "34": 96, + "42": 480 + }, + "returned_idle_rank_per_replica": 648, + "signed_pruned_minus_baseline_profile": { + "1": -6912, + "2": -416, + "3": 0, + "4": -288, + "5": -2592, + "6": -288, + "7": -2592, + "10": 64, + "14": 288, + "18": 64, + "26": 64, + "28": 288, + "34": 64, + "42": 160 + }, + "source_children": [ + { + "axes": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ], + "deadline": 2, + "eligible_stages": [ + 0, + 1 + ], + "idx": 0, + "pair": 1, + "rank": 14, + "source_level": -1, + "target_level": 1 + }, + { + "axes": [ + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ], + "deadline": 5, + "eligible_stages": [ + 2 + ], + "idx": 1, + "pair": 1, + "rank": 7, + "source_level": 1, + "target_level": 2 + }, + { + "axes": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28 + ], + "deadline": 8, + "eligible_stages": [ + 0, + 1, + 2, + 3 + ], + "idx": 2, + "pair": 2, + "rank": 28, + "source_level": -1, + "target_level": 3 + }, + { + "axes": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35 + ], + "deadline": 11, + "eligible_stages": [ + 4 + ], + "idx": 3, + "pair": 2, + "rank": 7, + "source_level": 3, + "target_level": 4 + }, + { + "axes": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42 + ], + "deadline": 14, + "eligible_stages": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "idx": 4, + "pair": 3, + "rank": 42, + "source_level": -1, + "target_level": 5 + }, + { + "axes": [ + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ], + "deadline": 17, + "eligible_stages": [ + 6 + ], + "idx": 5, + "pair": 3, + "rank": 7, + "source_level": 5, + "target_level": 6 + }, + { + "axes": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "deadline": 21, + "eligible_stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ], + "idx": 6, + "pair": 0, + "rank": 42, + "source_level": 2, + "target_level": 8 + }, + { + "axes": [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "deadline": 22, + "eligible_stages": [ + 5, + 6, + 7, + 8 + ], + "idx": 7, + "pair": 1, + "rank": 28, + "source_level": 4, + "target_level": 8 + }, + { + "axes": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "deadline": 23, + "eligible_stages": [ + 7, + 8 + ], + "idx": 8, + "pair": 2, + "rank": 14, + "source_level": 6, + "target_level": 8 + }, + { + "axes": [], + "deadline": 24, + "eligible_stages": [], + "idx": 9, + "pair": 3, + "rank": 0, + "source_level": 8, + "target_level": 8 + } + ], + "sources": { + "repo/research/bit-r438-transport-rehost/verify_rehost.receipt.json": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "repo/research/bit-r438-transport-rehost/words/r438-t154.json.gz": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "repo/research/r438-native-rehost/CERTIFICATE.json": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c", + "repo/research/r438-rehost-projectors/SOURCES.json": "ce3b46e4f9fe278727e06c4166f7f3bfa423c30c5a54b538a8b0c7660a07549e", + "repo/research/r438-rehost-projectors/verify.py": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f", + "source/BIT-NATIVE-CONTROLLER.json": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603", + "source/BIT-OWNER-PRUNE.json": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2", + "source/BIT-PRUNE-AUDIT.json": "4efc043e71ba125bacfcdb1e2ed638dee685479846f70b2d863e889a5c075ec9", + "source/TWO-N-ALL-STAGES.md": "da4154af61bec16c0096e01c29fc29a5183a8ca02e9352d52f6e341b418ea85b" + }, + "status": "PASS_INDEPENDENT_B02_OWNER_RETURN_AND_TWO_N_MOMENT_BOUNDARY", + "stock": 28416, + "stock_rank_budget": 1818624, + "terminal_excess_over_old_baseline": 11136, + "terminal_excess_over_stock_budget": 864, + "uniform_prefix_comparison": "For every alpha>=0, sum deltaH[r]*r*(64/r)^alpha <= -17280*8^alpha < 0.", + "zero_exponent_terminal_integer_budget_for_strict_pass": 860 +} diff --git a/research/r429-controller-accounting/frozen/reviews/owner/check_owner_accounting.py b/research/r429-controller-accounting/frozen/reviews/owner/check_owner_accounting.py new file mode 100644 index 0000000000..ced73298c7 --- /dev/null +++ b/research/r429-controller-accounting/frozen/reviews/owner/check_owner_accounting.py @@ -0,0 +1,373 @@ +#!/usr/bin/env python3 +"""Independent fixed-placement arithmetic audit; no producer module imports. + +Apache-2.0. Prepared for Ross with substantial OpenAI Codex assistance. +The owner selection and source geometry remain credited to PR1043/2423/2653. +""" +import argparse +from collections import Counter, defaultdict +from fractions import Fraction as Q +from hashlib import sha256 +import gzip +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +DEFAULT_REPO = Path("/Users/ross/git/math/integer-mult-bounds") +DEFAULT_SOURCE = Path("/Users/ross/git/math/.research-automation/runs/" + "kappa-3605-successor-20261018T0940Z/major-frontier/recursive") +PINS = { + "source/BIT-OWNER-PRUNE.json": "8fdf672c9fbfd594991f2a59f9e586c6a0ae07ae55cadaf5e0cef73274cc1dc2", + "source/BIT-PRUNE-AUDIT.json": "4efc043e71ba125bacfcdb1e2ed638dee685479846f70b2d863e889a5c075ec9", + "source/BIT-NATIVE-CONTROLLER.json": "4d44059b0558c22d08f8d576dce8875cf1d725b759c57501b75b51cb8bcca603", + "source/TWO-N-ALL-STAGES.md": "da4154af61bec16c0096e01c29fc29a5183a8ca02e9352d52f6e341b418ea85b", + "repo/research/r438-rehost-projectors/SOURCES.json": "ce3b46e4f9fe278727e06c4166f7f3bfa423c30c5a54b538a8b0c7660a07549e", + "repo/research/r438-rehost-projectors/verify.py": "30c4499d63d9cf8abd228ba4d0e6533f1aea244ec2e7e6bb57c086dc3dc0a82f", + "repo/research/bit-r438-transport-rehost/verify_rehost.receipt.json": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "repo/research/r438-native-rehost/CERTIFICATE.json": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c", + "repo/research/bit-r438-transport-rehost/words/r438-t154.json.gz": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", +} + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def canonical(obj): + return json.dumps(obj, sort_keys=True, separators=(",", ":")).encode() + + +def hist(obj): + return Counter({int(r): n for r, n in obj.items()}) + + +def mass(profile): + return sum(r*n for r, n in profile.items()) + + +def source_chronology(): + # Literal recipe in the pinned global_k.py, reconstructed here without exec. + events = [("local", 0, 0)] + for j in range(4): + events.append(("local", 2*j+1, j)) + if j < 3: + events.append(("bridge", j, j+1)) + events.append(("local", 2*j+2, j)) + if j < 3: + events.append(("bridge", j, j+1)) + events.extend(("bridge", j+1, j) for j in (2, 1, 0)) + events.append(("exchange",)) + augmented, children = [], [] + levels = [-1]*4 + + def advance(pair, target): + level = levels[pair] + axes = set(range(1 if level == -1 else 8+7*level, 8+7*target)) + child = {"idx": len(children), "pair": pair, "source_level": level, + "target_level": target, "rank": 7*(target-level), + "axes": sorted(axes), "deadline": len(augmented)} + need(len(axes) == child["rank"], "pending rank") + children.append(child) + augmented.append(("idle", child["idx"], pair)) + levels[pair] = target + + for event in events: + augmented.append(event) + if event[0] == "local": + _, stage, pair = event + need(levels[pair] == stage-1, "source chronology") + levels[pair] = stage + if 1 <= stage <= 6: + advance((stage+1)//2, stage) + if stage == 8: + for pair in range(4): + advance(pair, 8) + elif event[0] == "bridge": + need(levels[event[1]] == levels[event[2]], "bridge level") + else: + need(levels == [8]*4, "exchange level") + need(len(augmented) == 29 and len(children) == 10, "chronology size") + for child in children: + eligible = [] + for begin, event in enumerate(augmented[:child["deadline"]]): + if event[0] != "local" or event[2] == child["pair"]: + continue + touched = False + for middle in augmented[begin+1:child["deadline"]]: + if middle[0] == "local" and middle[2] == child["pair"]: + touched = True + if middle[0] == "bridge" and child["pair"] in middle[1:]: + touched = True + if not touched: + eligible.append(event[1]) + child["eligible_stages"] = eligible + return children + + +def expand_fixed_selection(selection, children): + demands = defaultdict(list) + seen = set() + for child, width, stage, count in sorted(selection["stages"]): + need((child, width, stage) not in seen, "duplicate demand") + seen.add((child, width, stage)) + need(width == 8 and stage in children[child]["eligible_stages"] + and type(count) is int and count > 0, "demand domain") + demands[child].extend([stage]*count) + counters = Counter() + slots = [] + for child in children: + identifier = child["idx"] + patterns = sorted((widths, count) for c, widths, count in selection["patterns"] + if c == identifier) + patterns.sort(key=lambda p: (-sum(p[0]), p[0])) + copy = used = 0 + for widths, count in patterns: + need(all(w == 8 for w in widths) and sum(widths) <= child["rank"], + "pattern domain") + for _ in range(count): + need(copy < 222, "copy count") + for offset in range(0, sum(widths), 8): + stage = demands[identifier][used] + used += 1 + slots.append((identifier, copy, offset, 8, stage, counters[stage])) + counters[stage] += 1 + copy += 1 + need(used == len(demands[identifier]), "unconsumed demand") + need(counters == Counter({s: 438 for s in range(9)}), "all old helper roles") + return slots + + +def audit_slots(slots, children, helpers, forced_rest=None): + by_deadline = defaultdict(list) + seen = set() + for child, copy, offset, width, stage, helper in slots: + need((stage, helper) not in seen, "duplicate helper role") + seen.add((stage, helper)) + need(0 <= copy < 222 and width == 8 + and stage in children[child]["eligible_stages"], "owner domain") + axes = set(children[child]["axes"][offset:offset+width]) + need(len(axes) == width, "slice extent") + by_deadline[child, copy].append((axes, stage, helper)) + need(seen == {(s, h) for s in range(9) for h in range(helpers)}, "role coverage") + remainders, signatures, rest_by_deadline = Counter(), set(), {} + mask = lambda axes: sum(1 << x for x in axes) + for child in children: + target = set(child["axes"]) + for copy in range(222): + parts = [axes for axes, _, _ in by_deadline[child["idx"], copy]] + used = set() + for axes in parts: + need(axes <= target and not axes & used, "disjoint hosted factors") + used |= axes + rest = target-used + if forced_rest and (child["idx"], copy) in forced_rest: + rest = forced_rest[child["idx"], copy] + need(not rest & used and rest | used == target, "complete pending partition") + for part in parts+[rest]: + need(part & set(range(1, 8)) in (set(), set(range(1, 8))), + "q-perp split") + rest_by_deadline[child["idx"], copy] = rest + remainders[len(rest)] += 1 + signatures.add((mask(target), tuple(mask(p) for p in parts+[rest]))) + rows = [] + occupied = {} + for replica in range(32): + for (child, copy), pieces in sorted(by_deadline.items()): + side, port = divmod(copy, 111) + family = replica*888+(2*children[child]["pair"]+side)*111+port + for axes, stage, helper in pieces: + need(not axes & occupied.get(family, set()), "physical cross-child overlap") + occupied.setdefault(family, set()).update(axes) + rows.append((replica, stage, helper, family, child, mask(axes))) + need(len(rows) == 32*9*helpers, "physical role count") + return { + "idle": dict(sorted(remainders.items())), + "owner_sha256": sha256(canonical(rows)).hexdigest(), + "factorization_sha256": sha256(canonical(sorted(signatures))).hexdigest(), + "physical_roles": len(rows), + }, rest_by_deadline + + +def native_gauge_checks(lines): + columns = 0 + witnesses = [] + for port, q in enumerate(lines): + need(sum(x*x for x in q) == 4, "port norm") + + def address(vector): + delta = sum(Q(q[i], 4)*(vector[8+i]-vector[i]) for i in range(8)) + shift = [q[i]*delta for i in range(8)] + return tuple(vector[i]+shift[i] for i in range(8)) + \ + tuple(vector[8+i]-shift[i] for i in range(8)) + + for j in range(16): + vector = tuple(Q(i == j) for i in range(16)) + need(address(address(vector)) == vector, "two-gauge identity") + columns += 1 + # E=I is a concrete invertible instance: N E^-1 N=I, while one N is not I. + initial = tuple(Q(x, 2) for x in q)+(Q(0),)*8 + need(address(initial) != initial, "missing input gauge escaped") + witnesses.append({"port": port, "q": q, "one_gauge_swaps_root_halves": True}) + need(len(lines) == 111, "actual punctured root count") + return columns, witnesses + + +def run(repository, source): + roots = {"repo": repository, "source": source} + raw = {} + for key, expected in PINS.items(): + prefix, name = key.split("/", 1) + raw[key] = (roots[prefix]/name).read_bytes() + need(sha256(raw[key]).hexdigest() == expected, "source pin: "+key) + load = lambda key: json.loads(raw[key]) + old = load("source/BIT-OWNER-PRUNE.json") + local = load("source/BIT-PRUNE-AUDIT.json") + controller = load("source/BIT-NATIVE-CONTROLLER.json") + upstream = load("repo/research/r438-rehost-projectors/SOURCES.json") + for pin in upstream["files"]: + if pin["usage"] == "input": + need(sha256((repository/pin["path"]).read_bytes()).hexdigest() == pin["sha256"], + "upstream input pin: "+pin["path"]) + layout = load("repo/research/bit-r438-transport-rehost/verify_rehost.receipt.json")["placement"] + certificate = load("repo/research/r438-native-rehost/CERTIFICATE.json") + children = source_chronology() + slots = expand_fixed_selection(layout["selection"], children) + need(sha256(canonical(slots)).hexdigest() == layout["slot_list_sha256"], "old slot digest") + before, old_rest = audit_slots(slots, children, 438) + removed = [s for s in slots if 249 <= s[5] <= 257] + retained = [s[:5]+(s[5]-(9 if s[5] > 257 else 0),) + for s in slots if not 249 <= s[5] <= 257] + after, new_rest = audit_slots(retained, children, 429) + need(Counter(s[4] for s in removed) == Counter({s: 9 for s in range(9)}), + "nine removed helpers at every stage") + need([list(s) for s in removed] == old["deleted_slots_per_replica"], "deleted slot lineage") + need(sha256(canonical(retained)).hexdigest() == old["retained_slots_sha256"], + "retained slot digest") + for data, name in ((before, "old_projector_audit"), (after, "new_projector_audit")): + need(data["owner_sha256"] == old[name]["owner_projector_sha256"], "owner digest") + need(data["factorization_sha256"] == old[name]["factorization_sha256"], "factor digest") + need(hist(data["idle"]) == hist(old[name]["idle_per_replica_including_zero"]), + "full idle histogram") + freed = defaultdict(set) + for child, copy, offset, width, _, _ in removed: + freed[child, copy].update(children[child]["axes"][offset:offset+width]) + for key in old_rest: + need(not old_rest[key] & freed[key] and new_rest[key] == old_rest[key] | freed[key], + "returned physical complement") + need(sum(len(x) for x in freed.values()) == 9*9*8 == 648, "returned idle rank") + invoice = certificate["pipeline"]["candidate"]["hosted"]["invoice"] + baseline = hist(invoice["bit_profile"]) + old_local = hist(certificate["local"]["candidate"]["profile"]) + new_local = hist(local["forward"]["profile"]) + need(new_local == hist(local["literal_inverse"]["profile"]), "local orientation profile") + # Rebuild from the complete local and idle profiles, without subtracting a presumed total. + complete = Counter({r: 288*n for r, n in new_local.items()}) + complete.update({r: 32*n for r, n in hist(after["idle"]).items() if r}) + baseline_rebuilt = Counter({r: 288*n for r, n in old_local.items()}) + baseline_rebuilt.update({r: 32*n for r, n in hist(before["idle"]).items() if r}) + need(baseline_rebuilt == baseline, "complete old profile") + need(complete == hist(old["complete_pruned_local_and_idle_profile"]), "complete pruned profile") + need(mass(old_local)-mass(new_local) == 132, "local saving") + need(mass(baseline)-mass(complete) == 60*288, "net complete saving") + need(controller["terminal_debt"]["conservative_rank_one_upper"] == 2*4*111 == 888, + "fixed two-N terminal count") + terminal = Counter(complete) + terminal[1] += 888*32 + need(terminal == hist(old["pruned_plus_two_N_profile"]), "complete terminal profile") + need(invoice["bit"]["live"] == 28416 and max(terminal) == 42, "stock and maximum child") + m, stock = 64, 28416 + need(mass(terminal) == 1819488 and mass(terminal)-m*stock == 864, "terminal stock failure") + need(all(type(r) is int and 0 < r <= m and n > 0 for r, n in terminal.items()), + "all-alpha monotonicity domain") + delta = Counter(complete) + delta.subtract(baseline) + need(all((r <= 7 and n <= 0) or n == 0 or (r >= 10 and n >= 0) + for r, n in delta.items()), "rank-separated signed profile") + need(mass(delta) == -17280, "uniform comparison mass") + controls = [] + + def rejects(name, action, required): + try: + action() + except ValueError as error: + need(required in str(error), "unrelated control failure: "+name) + controls.append({"name": name, "reason": str(error)}) + else: + raise ValueError("control accepted: "+name) + + changed = next(key for key in old_rest if new_rest[key] != old_rest[key]) + rejects("omit_returned_idle_axes", + lambda: audit_slots(retained, children, 429, {changed: old_rest[changed]}), + "complete pending partition") + rejects("claim_132_net_saving", + lambda: need(mass(baseline)-mass(complete) == 132*288, "returned idle rank omitted"), + "returned idle rank omitted") + rejects("omit_terminal_input_gauge_cost", + lambda: need(mass(complete)+444*32 == mass(terminal), "one gauge cost omitted"), + "one gauge cost omitted") + rejects("allow_child_above_ambient", + lambda: need(all(0 < r <= m for r in list(terminal)+[m+1]), + "moment domain violated"), "moment domain violated") + word = json.loads(gzip.decompress(raw[ + "repo/research/bit-r438-transport-rehost/words/r438-t154.json.gz"])) + gauge_columns, gauge_witnesses = native_gauge_checks(word["lines"]) + for banks in range(1, 1025): + stages = 2*banks+1 + for ports in (1, 111): + need((stages-1)*ports-3*stages-2*banks*ports == -3*stages, + "all-odd ledger identity") + return { + "status": "PASS_INDEPENDENT_B02_OWNER_RETURN_AND_TWO_N_MOMENT_BOUNDARY", + "sources": PINS, + "method": "No producer imports or function execution; independent chronology, set partitions, owner rows, complete histograms and exact address actions.", + "source_children": children, + "old_owner": before, "new_owner": after, + "deleted_slots_per_replica": removed, + "returned_idle_rank_per_replica": 648, + "baseline_profile": dict(sorted(baseline.items())), + "pruned_profile": dict(sorted(complete.items())), + "pruned_plus_two_N_profile": dict(sorted(terminal.items())), + "signed_pruned_minus_baseline_profile": dict(sorted(delta.items())), + "local_mass_before_after": [mass(old_local), mass(new_local)], + "complete_mass_before_after_terminal": [mass(baseline), mass(complete), mass(terminal)], + "stock": stock, "ambient": m, "stock_rank_budget": m*stock, + "terminal_excess_over_old_baseline": mass(terminal)-mass(baseline), + "terminal_excess_over_stock_budget": mass(terminal)-m*stock, + "zero_exponent_terminal_integer_budget_for_strict_pass": 860, + "uniform_prefix_comparison": "For every alpha>=0, sum deltaH[r]*r*(64/r)^alpha <= -17280*8^alpha < 0.", + "all_alpha_completion_obstruction": "For every alpha>=0, sum Hterminal[r]*r*(64/r)^alpha >= 1819488 > 64*28416.", + "all_odd_identity_sanity_cases": 2048, + "all_odd_written_proof": "(L-1)n-3L-2Bn=-3L for L=2B+1; a conditional ledger identity, not an emitted all-B construction.", + "negative_controls": controls, + "native_gauge_involution_basis_columns": gauge_columns, + "native_one_gauge_omission_witnesses": gauge_witnesses, + "limits": [ + "Native arbitrary-input projector factorization is justified by exact set partitions and the written orthogonal-projector law; no whole program is emitted.", + "The 651-column integer/F2 local operator identity is inherited from published PR3645 and is not re-executed here; the pinned BIT-PRUNE-AUDIT receipt supplies the local paid profiles. The separate native_remainders.py binds the published word's frame events, ranks, COPY lifecycle and changed owner remainder operators, not its full integer/value identity.", + "888 is the known construction's rank-one bill, not a universal terminal lower bound.", + "444 is the fixed FULL-gather access bill, not a universal observer lower bound.", + "No terminal recursive owner allocation, rounding, precision, physical tape or new kappa admission." + ], + } + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--repository", type=Path, default=DEFAULT_REPO) + parser.add_argument("--source", type=Path, default=DEFAULT_SOURCE) + parser.add_argument("--write", action="store_true") + args = parser.parse_args() + result = run(args.repository, args.source) + path = HERE/"OWNER-REVIEW.json" + if args.write: + need(not path.exists(), "refuse to overwrite review receipt") + path.write_text(json.dumps(result, sort_keys=True, indent=2)+"\n") + else: + need(json.loads(path.read_bytes()) == json.loads(canonical(result)), "review receipt differs") + print(result["status"]) + print("returned=648 mass=1791072 terminal=1819488 stock_excess=864 controls=4 gauge_witnesses=111") + + +if __name__ == "__main__": + main() diff --git a/research/r429-controller-accounting/frozen/reviews/sections/CHECKS.json b/research/r429-controller-accounting/frozen/reviews/sections/CHECKS.json new file mode 100644 index 0000000000..ae11170fd3 --- /dev/null +++ b/research/r429-controller-accounting/frozen/reviews/sections/CHECKS.json @@ -0,0 +1,25076 @@ +{ + "inputs": { + "full120_geometry_sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "r438_word_sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "nine_three_row_stage_consequences": { + "conditional_common_reader_defect_rank": 9, + "conditional_premise": "Each A_s-I = W_s R for the same actual R.", + "defect_rank_lower": 9, + "defect_rank_upper": 36, + "maximum_repair_union": 27, + "minimum_diagonal_mismatches": 84, + "necessary_odd_stage_count_at_three_rows_per_stage": 37, + "stage_count_sufficiency_claimed": false + }, + "root_line_census": { + "actual_retained_cap_frame_ids": [ + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518 + ], + "candidate_return_lines": 120, + "classification": "Exactly sections containing row80; only block mask32, size1.", + "eligible_direction_rank_histogram": { + "3": 70626 + }, + "eligible_direction_templates": [ + { + "a": 3, + "allowed_ret_mask": 3, + "normal": [ + "1", + "0", + "-1", + "0", + "0", + "1", + "0", + "1" + ], + "required_deleted_rows": [ + 42 + ] + }, + { + "a": 11, + "allowed_ret_mask": 11, + "normal": [ + "1", + "0", + "0", + "1", + "0", + "1", + "1", + "0" + ], + "required_deleted_rows": [ + 103 + ] + }, + { + "a": 23, + "allowed_ret_mask": 23, + "normal": [ + "0", + "0", + "1", + "-1", + "0", + "0", + "1", + "-1" + ], + "required_deleted_rows": [ + 85 + ] + }, + { + "a": 31, + "allowed_ret_mask": 31, + "normal": [ + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 3 + ] + }, + { + "a": 32, + "allowed_ret_mask": 32, + "normal": [ + "0", + "1", + "0", + "-1", + "-1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 80 + ] + }, + { + "a": 36, + "allowed_ret_mask": 36, + "normal": [ + "0", + "0", + "1", + "1", + "0", + "0", + "1", + "1" + ], + "required_deleted_rows": [ + 81 + ] + }, + { + "a": 37, + "allowed_ret_mask": 37, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "1", + "-1", + "1" + ], + "required_deleted_rows": [ + 53 + ] + }, + { + "a": 40, + "allowed_ret_mask": 40, + "normal": [ + "0", + "1", + "1", + "0", + "-1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 10 + ] + }, + { + "a": 44, + "allowed_ret_mask": 44, + "normal": [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 7 + ] + }, + { + "a": 45, + "allowed_ret_mask": 45, + "normal": [ + "0", + "0", + "1", + "1", + "1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 88 + ] + }, + { + "a": 53, + "allowed_ret_mask": 53, + "normal": [ + "1", + "-1", + "1", + "1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 62 + ] + }, + { + "a": 61, + "allowed_ret_mask": 61, + "normal": [ + "1", + "-1", + "0", + "0", + "0", + "0", + "-1", + "1" + ], + "required_deleted_rows": [ + 28 + ] + }, + { + "a": 65, + "allowed_ret_mask": 65, + "normal": [ + "0", + "1", + "-1", + "0", + "0", + "-1", + "-1", + "0" + ], + "required_deleted_rows": [ + 51 + ] + }, + { + "a": 73, + "allowed_ret_mask": 73, + "normal": [ + "0", + "1", + "0", + "1", + "0", + "-1", + "0", + "-1" + ], + "required_deleted_rows": [ + 99 + ] + }, + { + "a": 85, + "allowed_ret_mask": 85, + "normal": [ + "1", + "1", + "-1", + "-1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 61 + ] + }, + { + "a": 93, + "allowed_ret_mask": 93, + "normal": [ + "1", + "1", + "0", + "0", + "0", + "0", + "1", + "-1" + ], + "required_deleted_rows": [ + 23 + ] + }, + { + "a": 99, + "allowed_ret_mask": 99, + "normal": [ + "1", + "0", + "1", + "0", + "0", + "-1", + "0", + "-1" + ], + "required_deleted_rows": [ + 41 + ] + }, + { + "a": 107, + "allowed_ret_mask": 107, + "normal": [ + "1", + "0", + "0", + "-1", + "0", + "-1", + "-1", + "0" + ], + "required_deleted_rows": [ + 110 + ] + }, + { + "a": 114, + "allowed_ret_mask": 114, + "normal": [ + "0", + "1", + "1", + "0", + "0", + "-1", + "1", + "0" + ], + "required_deleted_rows": [ + 48 + ] + }, + { + "a": 115, + "allowed_ret_mask": 115, + "normal": [ + "0", + "1", + "0", + "-1", + "1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 78 + ] + }, + { + "a": 118, + "allowed_ret_mask": 118, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "-1", + "1", + "-1" + ], + "required_deleted_rows": [ + 56 + ] + }, + { + "a": 122, + "allowed_ret_mask": 122, + "normal": [ + "0", + "1", + "0", + "-1", + "0", + "-1", + "0", + "1" + ], + "required_deleted_rows": [ + 102 + ] + }, + { + "a": 123, + "allowed_ret_mask": 123, + "normal": [ + "0", + "1", + "1", + "0", + "1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 9 + ] + }, + { + "a": 126, + "allowed_ret_mask": 126, + "normal": [ + "0", + "0", + "1", + "1", + "-1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 90 + ] + }, + { + "a": 130, + "allowed_ret_mask": 130, + "normal": [ + "0", + "0", + "1", + "-1", + "-1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 95 + ] + }, + { + "a": 134, + "allowed_ret_mask": 134, + "normal": [ + "0", + "1", + "0", + "1", + "0", + "1", + "0", + "1" + ], + "required_deleted_rows": [ + 96 + ] + }, + { + "a": 139, + "allowed_ret_mask": 139, + "normal": [ + "0", + "0", + "1", + "-1", + "0", + "0", + "-1", + "-1" + ], + "required_deleted_rows": [ + 87 + ] + }, + { + "a": 151, + "allowed_ret_mask": 151, + "normal": [ + "1", + "0", + "0", + "1", + "0", + "1", + "-1", + "0" + ], + "required_deleted_rows": [ + 104 + ] + }, + { + "a": 154, + "allowed_ret_mask": 154, + "normal": [ + "1", + "-1", + "-1", + "1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 64 + ] + }, + { + "a": 155, + "allowed_ret_mask": 155, + "normal": [ + "1", + "1", + "0", + "0", + "1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 31 + ] + }, + { + "a": 158, + "allowed_ret_mask": 158, + "normal": [ + "1", + "0", + "0", + "1", + "-1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 67 + ] + }, + { + "a": 161, + "allowed_ret_mask": 161, + "normal": [ + "1", + "-1", + "0", + "0", + "0", + "0", + "1", + "1" + ], + "required_deleted_rows": [ + 26 + ] + }, + { + "a": 168, + "allowed_ret_mask": 168, + "normal": [ + "1", + "-1", + "0", + "0", + "1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 34 + ] + }, + { + "a": 172, + "allowed_ret_mask": 172, + "normal": [ + "1", + "0", + "1", + "0", + "0", + "1", + "0", + "1" + ], + "required_deleted_rows": [ + 38 + ] + }, + { + "a": 173, + "allowed_ret_mask": 173, + "normal": [ + "1", + "0", + "0", + "-1", + "-1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 72 + ] + }, + { + "a": 181, + "allowed_ret_mask": 181, + "normal": [ + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "-1" + ], + "required_deleted_rows": [ + 101 + ] + }, + { + "a": 184, + "allowed_ret_mask": 184, + "normal": [ + "0", + "0", + "1", + "1", + "0", + "0", + "-1", + "1" + ], + "required_deleted_rows": [ + 82 + ] + }, + { + "a": 188, + "allowed_ret_mask": 188, + "normal": [ + "0", + "1", + "0", + "-1", + "-1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 79 + ] + }, + { + "a": 193, + "allowed_ret_mask": 193, + "normal": [ + "1", + "1", + "0", + "0", + "0", + "0", + "-1", + "-1" + ], + "required_deleted_rows": [ + 25 + ] + }, + { + "a": 200, + "allowed_ret_mask": 200, + "normal": [ + "1", + "1", + "0", + "0", + "-1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 33 + ] + }, + { + "a": 204, + "allowed_ret_mask": 204, + "normal": [ + "1", + "0", + "-1", + "0", + "0", + "-1", + "0", + "-1" + ], + "required_deleted_rows": [ + 45 + ] + }, + { + "a": 208, + "allowed_ret_mask": 208, + "normal": [ + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 1 + ] + }, + { + "a": 209, + "allowed_ret_mask": 209, + "normal": [ + "0", + "0", + "1", + "-1", + "1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 93 + ] + }, + { + "a": 212, + "allowed_ret_mask": 212, + "normal": [ + "0", + "1", + "-1", + "0", + "1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 12 + ] + }, + { + "a": 221, + "allowed_ret_mask": 221, + "normal": [ + "0", + "1", + "-1", + "0", + "0", + "-1", + "1", + "0" + ], + "required_deleted_rows": [ + 50 + ] + }, + { + "a": 227, + "allowed_ret_mask": 227, + "normal": [ + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 5 + ] + }, + { + "a": 234, + "allowed_ret_mask": 234, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "-1", + "-1", + "-1" + ], + "required_deleted_rows": [ + 58 + ] + }, + { + "a": 239, + "allowed_ret_mask": 239, + "normal": [ + "0", + "1", + "0", + "-1", + "1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 77 + ] + }, + { + "a": 247, + "allowed_ret_mask": 247, + "normal": [ + "1", + "0", + "0", + "-1", + "0", + "-1", + "1", + "0" + ], + "required_deleted_rows": [ + 109 + ] + }, + { + "a": 250, + "allowed_ret_mask": 250, + "normal": [ + "1", + "1", + "1", + "-1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 60 + ] + }, + { + "a": 251, + "allowed_ret_mask": 251, + "normal": [ + "1", + "-1", + "0", + "0", + "-1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 36 + ] + }, + { + "a": 254, + "allowed_ret_mask": 254, + "normal": [ + "1", + "0", + "0", + "-1", + "1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 70 + ] + }, + { + "a": 263, + "allowed_ret_mask": 263, + "normal": [ + "0", + "1", + "-1", + "0", + "1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 11 + ] + }, + { + "a": 271, + "allowed_ret_mask": 271, + "normal": [ + "0", + "1", + "0", + "1", + "1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 73 + ] + }, + { + "a": 274, + "allowed_ret_mask": 274, + "normal": [ + "1", + "1", + "0", + "0", + "0", + "0", + "-1", + "1" + ], + "required_deleted_rows": [ + 24 + ] + }, + { + "a": 278, + "allowed_ret_mask": 278, + "normal": [ + "1", + "0", + "-1", + "0", + "1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 19 + ] + }, + { + "a": 279, + "allowed_ret_mask": 279, + "normal": [ + "1", + "0", + "0", + "1", + "0", + "-1", + "1", + "0" + ], + "required_deleted_rows": [ + 105 + ] + }, + { + "a": 282, + "allowed_ret_mask": 282, + "normal": [ + "1", + "1", + "1", + "1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 59 + ] + }, + { + "a": 286, + "allowed_ret_mask": 286, + "normal": [ + "1", + "0", + "0", + "1", + "1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 66 + ] + }, + { + "a": 287, + "allowed_ret_mask": 287, + "normal": [ + "1", + "0", + "-1", + "0", + "0", + "-1", + "0", + "1" + ], + "required_deleted_rows": [ + 44 + ] + }, + { + "a": 293, + "allowed_ret_mask": 293, + "normal": [ + "1", + "0", + "1", + "0", + "1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 14 + ] + }, + { + "a": 301, + "allowed_ret_mask": 301, + "normal": [ + "1", + "0", + "0", + "-1", + "1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 69 + ] + }, + { + "a": 305, + "allowed_ret_mask": 305, + "normal": [ + "0", + "0", + "1", + "1", + "1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 89 + ] + }, + { + "a": 313, + "allowed_ret_mask": 313, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "-1", + "-1", + "1" + ], + "required_deleted_rows": [ + 57 + ] + }, + { + "a": 325, + "allowed_ret_mask": 325, + "normal": [ + "1", + "0", + "-1", + "0", + "-1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 21 + ] + }, + { + "a": 333, + "allowed_ret_mask": 333, + "normal": [ + "1", + "0", + "0", + "1", + "-1", + "0", + "0", + "-1" + ], + "required_deleted_rows": [ + 68 + ] + }, + { + "a": 336, + "allowed_ret_mask": 336, + "normal": [ + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 2 + ] + }, + { + "a": 340, + "allowed_ret_mask": 340, + "normal": [ + "0", + "1", + "-1", + "0", + "-1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 13 + ] + }, + { + "a": 341, + "allowed_ret_mask": 341, + "normal": [ + "0", + "1", + "0", + "1", + "0", + "1", + "0", + "-1" + ], + "required_deleted_rows": [ + 97 + ] + }, + { + "a": 344, + "allowed_ret_mask": 344, + "normal": [ + "0", + "0", + "1", + "-1", + "0", + "0", + "-1", + "1" + ], + "required_deleted_rows": [ + 86 + ] + }, + { + "a": 348, + "allowed_ret_mask": 348, + "normal": [ + "0", + "1", + "0", + "1", + "-1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 75 + ] + }, + { + "a": 354, + "allowed_ret_mask": 354, + "normal": [ + "0", + "0", + "1", + "1", + "-1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 91 + ] + }, + { + "a": 355, + "allowed_ret_mask": 355, + "normal": [ + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 6 + ] + }, + { + "a": 358, + "allowed_ret_mask": 358, + "normal": [ + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "1" + ], + "required_deleted_rows": [ + 100 + ] + }, + { + "a": 362, + "allowed_ret_mask": 362, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "1", + "1", + "-1" + ], + "required_deleted_rows": [ + 52 + ] + }, + { + "a": 363, + "allowed_ret_mask": 363, + "normal": [ + "0", + "0", + "1", + "1", + "0", + "0", + "-1", + "-1" + ], + "required_deleted_rows": [ + 83 + ] + }, + { + "a": 366, + "allowed_ret_mask": 366, + "normal": [ + "0", + "1", + "1", + "0", + "0", + "1", + "1", + "0" + ], + "required_deleted_rows": [ + 46 + ] + }, + { + "a": 370, + "allowed_ret_mask": 370, + "normal": [ + "1", + "-1", + "0", + "0", + "0", + "0", + "1", + "-1" + ], + "required_deleted_rows": [ + 27 + ] + }, + { + "a": 374, + "allowed_ret_mask": 374, + "normal": [ + "1", + "0", + "1", + "0", + "-1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 16 + ] + }, + { + "a": 375, + "allowed_ret_mask": 375, + "normal": [ + "1", + "0", + "0", + "-1", + "0", + "1", + "-1", + "0" + ], + "required_deleted_rows": [ + 108 + ] + }, + { + "a": 378, + "allowed_ret_mask": 378, + "normal": [ + "1", + "-1", + "-1", + "-1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 65 + ] + }, + { + "a": 382, + "allowed_ret_mask": 382, + "normal": [ + "1", + "0", + "0", + "-1", + "-1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 71 + ] + }, + { + "a": 383, + "allowed_ret_mask": 383, + "normal": [ + "1", + "0", + "1", + "0", + "0", + "1", + "0", + "-1" + ], + "required_deleted_rows": [ + 39 + ] + }, + { + "a": 391, + "allowed_ret_mask": 391, + "normal": [ + "1", + "1", + "0", + "0", + "1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 30 + ] + }, + { + "a": 394, + "allowed_ret_mask": 394, + "normal": [ + "1", + "0", + "-1", + "0", + "1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 18 + ] + }, + { + "a": 395, + "allowed_ret_mask": 395, + "normal": [ + "1", + "0", + "0", + "1", + "0", + "-1", + "-1", + "0" + ], + "required_deleted_rows": [ + 106 + ] + }, + { + "a": 398, + "allowed_ret_mask": 398, + "normal": [ + "1", + "1", + "0", + "0", + "0", + "0", + "1", + "1" + ], + "required_deleted_rows": [ + 22 + ] + }, + { + "a": 403, + "allowed_ret_mask": 403, + "normal": [ + "0", + "1", + "0", + "1", + "1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 74 + ] + }, + { + "a": 410, + "allowed_ret_mask": 410, + "normal": [ + "0", + "1", + "0", + "1", + "0", + "-1", + "0", + "1" + ], + "required_deleted_rows": [ + 98 + ] + }, + { + "a": 414, + "allowed_ret_mask": 414, + "normal": [ + "0", + "0", + "1", + "-1", + "-1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 94 + ] + }, + { + "a": 415, + "allowed_ret_mask": 415, + "normal": [ + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 0 + ] + }, + { + "a": 421, + "allowed_ret_mask": 421, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "-1", + "1", + "1" + ], + "required_deleted_rows": [ + 55 + ] + }, + { + "a": 424, + "allowed_ret_mask": 424, + "normal": [ + "0", + "1", + "1", + "0", + "1", + "0", + "0", + "1" + ], + "required_deleted_rows": [ + 8 + ] + }, + { + "a": 428, + "allowed_ret_mask": 428, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 4 + ] + }, + { + "a": 432, + "allowed_ret_mask": 432, + "normal": [ + "1", + "0", + "1", + "0", + "0", + "-1", + "0", + "1" + ], + "required_deleted_rows": [ + 40 + ] + }, + { + "a": 436, + "allowed_ret_mask": 436, + "normal": [ + "1", + "-1", + "0", + "0", + "1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 35 + ] + }, + { + "a": 441, + "allowed_ret_mask": 441, + "normal": [ + "1", + "0", + "1", + "0", + "1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 15 + ] + }, + { + "a": 448, + "allowed_ret_mask": 448, + "normal": [ + "0", + "1", + "0", + "1", + "-1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 76 + ] + }, + { + "a": 449, + "allowed_ret_mask": 449, + "normal": [ + "0", + "1", + "-1", + "0", + "0", + "1", + "1", + "0" + ], + "required_deleted_rows": [ + 49 + ] + }, + { + "a": 452, + "allowed_ret_mask": 452, + "normal": [ + "0", + "0", + "1", + "-1", + "0", + "0", + "1", + "1" + ], + "required_deleted_rows": [ + 84 + ] + }, + { + "a": 461, + "allowed_ret_mask": 461, + "normal": [ + "0", + "0", + "1", + "-1", + "1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 92 + ] + }, + { + "a": 464, + "allowed_ret_mask": 464, + "normal": [ + "1", + "0", + "-1", + "0", + "0", + "1", + "0", + "-1" + ], + "required_deleted_rows": [ + 43 + ] + }, + { + "a": 468, + "allowed_ret_mask": 468, + "normal": [ + "1", + "1", + "0", + "0", + "-1", + "1", + "0", + "0" + ], + "required_deleted_rows": [ + 32 + ] + }, + { + "a": 469, + "allowed_ret_mask": 469, + "normal": [ + "1", + "-1", + "1", + "-1", + "0", + "0", + "0", + "0" + ], + "required_deleted_rows": [ + 63 + ] + }, + { + "a": 473, + "allowed_ret_mask": 473, + "normal": [ + "1", + "0", + "-1", + "0", + "-1", + "0", + "1", + "0" + ], + "required_deleted_rows": [ + 20 + ] + }, + { + "a": 487, + "allowed_ret_mask": 487, + "normal": [ + "1", + "-1", + "0", + "0", + "-1", + "-1", + "0", + "0" + ], + "required_deleted_rows": [ + 37 + ] + }, + { + "a": 490, + "allowed_ret_mask": 490, + "normal": [ + "1", + "0", + "1", + "0", + "-1", + "0", + "-1", + "0" + ], + "required_deleted_rows": [ + 17 + ] + }, + { + "a": 491, + "allowed_ret_mask": 491, + "normal": [ + "1", + "0", + "0", + "-1", + "0", + "1", + "1", + "0" + ], + "required_deleted_rows": [ + 107 + ] + }, + { + "a": 494, + "allowed_ret_mask": 494, + "normal": [ + "1", + "-1", + "0", + "0", + "0", + "0", + "-1", + "-1" + ], + "required_deleted_rows": [ + 29 + ] + }, + { + "a": 498, + "allowed_ret_mask": 498, + "normal": [ + "0", + "1", + "1", + "0", + "0", + "1", + "-1", + "0" + ], + "required_deleted_rows": [ + 47 + ] + }, + { + "a": 502, + "allowed_ret_mask": 502, + "normal": [ + "0", + "0", + "0", + "0", + "1", + "1", + "-1", + "-1" + ], + "required_deleted_rows": [ + 54 + ] + } + ], + "explicit_singleton": { + "block_mask": 32, + "labels_on_selected_rows": [ + 4, + 2, + 1 + ], + "required_deleted_row": 80, + "return_normal": [ + "0", + "1", + "0", + "-1", + "-1", + "0", + "-1", + "0" + ], + "selected": [ + 1, + 2, + 80 + ], + "support_size_before_deletion": 63 + }, + "old_ret_cap_normals": [ + [ + "0", + "1", + "1", + "0", + "-1", + "0", + "0", + "1" + ], + [ + "0", + "1", + "-1", + "0", + "-1", + "0", + "0", + "-1" + ], + [ + "0", + "1", + "1", + "0", + "0", + "-1", + "-1", + "0" + ], + [ + "0", + "1", + "-1", + "0", + "0", + "1", + "-1", + "0" + ], + [ + "0", + "0", + "0", + "0", + "1", + "1", + "1", + "1" + ], + [ + "1", + "1", + "-1", + "1", + "0", + "0", + "0", + "0" + ], + [ + "1", + "0", + "0", + "1", + "1", + "0", + "0", + "1" + ], + [ + "0", + "0", + "1", + "1", + "0", + "0", + "1", + "-1" + ], + [ + "0", + "1", + "0", + "-1", + "0", + "-1", + "0", + "-1" + ] + ], + "positive_count": 2270, + "sections": 70626, + "sections_with_feasible_blocks": [ + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 2, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 3, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 4, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 5, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 8, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 11, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 1, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 3, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 4, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 6, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 8, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 9, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 11, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 2, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 5, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 6, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 9, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 3, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 5, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 6, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 9, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 4, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 6, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 8, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 9, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 11, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 5, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 8, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 11, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 6, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 9, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 8, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 11, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 9, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 12, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 11, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 13, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 12, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 14, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 13, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 16, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 14, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 17, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 16, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 18, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 17, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 20, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 18, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 21, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 20, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 22, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 21, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 23, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 22, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 25, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 27, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 23, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 25, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 28, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 27, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 29, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 30, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 31, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 28, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 29, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 30, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 34, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 35, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 31, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 34, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 36, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 37, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 35, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 36, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 38, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 40, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 42, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 44, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 37, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 38, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 40, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 42, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 46, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 48, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 49, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 50, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 52, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 44, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 46, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 48, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 49, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 50, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 53, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 52, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 55, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 53, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 56, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 55, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 57, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 56, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 60, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 61, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 57, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 60, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 62, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 61, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 63, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 62, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 64, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 63, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 65, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 64, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 67, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 65, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 68, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 67, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 69, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 68, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 70, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 69, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 71, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 70, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 73, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 71, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 75, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 73, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 76, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 75, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 77, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 76, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 78, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 77, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 79, + 80 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 82 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 78, + 80, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 79, + 80, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 83 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 84 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 82, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 83, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 85 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 84, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 86 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 88 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 89 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 85, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 86, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 88, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 90 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 91 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 92 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 93 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 89, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 90, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 91, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 92, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 94 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 95 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 96 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 98 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 93, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 94, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 95, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 96, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 100 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 98, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 100, + 101 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 100, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 100, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 100, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 100, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 101, + 102 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 101, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 101, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 101, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 101, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 102, + 103 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 102, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 102, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 102, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 103, + 104 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 103, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 103, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 103, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 104, + 105 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 104, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 104, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 105, + 106 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 105, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 105, + 109 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 106, + 107 + ] + }, + { + "feasible_blocks": [ + 32 + ], + "selected": [ + 80, + 106, + 109 + ] + } + ] + }, + "scalar_matrices": { + "J_rows": [ + 10141204792381678636617894477822, + 2586086450219622122178300732227837, + 2596069203522677974138045681631483, + 576460752303423479, + 2596069508172130947062333349822703, + 309485009244884317495099359, + 10140895326260170442259558318015, + 2586086145551572543258365643440255, + 2589398147263233519358262897489001, + 2592804859121274158248396097259625, + 2592757506467882867942327749505385, + 2589350696924854570449116603662953, + 2592757607046729626097202769225065, + 2589398046688157573239251990943081, + 1734130175483521454113919338159274, + 872127581635430275692856302967978, + 1734082824753018225619070127219626, + 872080229941564978246942081967018, + 1734082638102400486742802049377194, + 872080416603461748079412450059178, + 1734129989784902589838982619225258, + 872127767322601782224528012057770, + 1727411440318023397244010205189692, + 1730818316584958295536456233036092, + 865409096642019473566534911481404, + 868815842344965628299048312465724, + 1730818250503269321255597434906940, + 1727411504793977486514998242612796, + 868815908432870002457488389400892, + 865409032159589424156957136475708, + 2074858996396035948243032183350476, + 521289741389326929135848345773260, + 2074874778680810587002010371677132, + 521273956203100808511232534174668, + 2072878290888070053094984619596748, + 523270444007074256637602259213260, + 2072894076062932979370040723563724, + 523254661710936423529209318401228, + 2076939870114869318455535043620442, + 2070839202466181082725842274750810, + 519208660696083532087046669348442, + 525309130074591671054823598068058, + 2076913464757075216842810317853018, + 2070812995372221397883440020581978, + 519234867789959053610134593065306, + 525335535432301609385342510820954, + 1040477090824847938641120621672601, + 1557678348740587315422543376644249, + 1555671525429274415289046754834585, + 1040450598424477833956020544161689, + 1555697645480573934758181972035481, + 1038496385959229956686199488153497, + 1036415348463713915987060390989071, + 1559717362350266569457138779189775, + 1553616728556518518103859291114767, + 1553632511808493436610737168036367, + 1559733145605930584577179433667855, + 1036431132679051268236573095129615, + 1042531635912499996902255866825999, + 2442837275459972787867604775352560, + 153311153807439872482697688135920, + 153381061151871645922135271262192, + 2435152141571032296831911913588720, + 160996287696368250945970177312752, + 2435082234226561323937622632167664, + 161066195040797725438535476181232, + 2436839364805697551520070573952358, + 2441080144874030676477440684772710, + 2436881146555144115750106525659750, + 155110066145707204895318291460710, + 159309064460461694903411553799526, + 155068284390874191395430580669798, + 159267282707252382191578237432422, + 921600628986554049220172345615525, + 1682191151535119421842017996924069, + 921642409864502096000228197292965, + 1682232931534707996362662452239269, + 1674547800120299651826471254205605, + 913957277411173124529028742931621, + 1674506018760669530239658887633829, + 913915496448222481057609187695525, + 919913369774626757624573998837299, + 1680503778976952268902256777719347, + 1676304630755838562290390870348083, + 1676235037732122190192959896858163, + 1680434060224950656924623320813875, + 915644568083505924911912553377331, + 919843634097663672590244470411571, + 613258455012551051935980706536643, + 1982889317737070288973385274694851, + 613271454662945717308722385052611, + 1982873535281552587068141812638659, + 1982884713009696305588313795796163, + 613248589040009093434313723026627, + 1982855929623799733803660893807555, + 613232804024526035955953525908419, + 616739979317472700226294587053653, + 610084907965218710579626836486485, + 1979012216963470485452010633025109, + 1985271336101041249538680574437717, + 1978061571187198456537696014685781, + 1983369763776710285739684119177557, + 611748697252973517619043237877333, + 1059466916186105936643779914809238, + 1505680090170857789839556165861270, + 1485975326376127769826014943428502, + 989056453791076342151881663283094, + 1364281031450268375981883671625622, + 745667375834477930338916844797846, + 420571176367129553061060905975702, + 227888122428023580164624009756566 + ], + "K_nonzero_direction_weight_histogram": { + "48": 4, + "49": 12, + "50": 32, + "51": 50, + "52": 76, + "53": 52, + "54": 24, + "55": 5, + "56": 5, + "57": 24, + "58": 52, + "59": 76, + "60": 50, + "61": 32, + "62": 12, + "63": 4, + "111": 1 + }, + "K_rows": [ + 496, + 22, + 511, + 25, + 21, + 499, + 26, + 508, + 118, + 488, + 415, + 491, + 117, + 412, + 217, + 161, + 174, + 214, + 324, + 316, + 307, + 331, + 295, + 185, + 351, + 193, + 339, + 205, + 299, + 181, + 179, + 290, + 196, + 341, + 199, + 342, + 176, + 289, + 164, + 314, + 309, + 171, + 313, + 167, + 168, + 310, + 493, + 405, + 124, + 112, + 481, + 409, + 398, + 104, + 502, + 385, + 31, + 505, + 103, + 445, + 454, + 91, + 457, + 434, + 84, + 47, + 478, + 55, + 425, + 59, + 421, + 76, + 466, + 265, + 369, + 382, + 262, + 370, + 266, + 261, + 381, + 286, + 358, + 248, + 357, + 251, + 285, + 131, + 138, + 283, + 253, + 364, + 241, + 352, + 134, + 279, + 372, + 234, + 229, + 379, + 271, + 145, + 158, + 475, + 419, + 74, + 50, + 416, + 472, + 49, + 73 + ], + "R_rows": [ + 2589350794613531190557368506174057, + 2592804956806343667382164200032873, + 1038469893558777993237266185156761, + 1557652228689369648595160641472409, + 1042515851693473237291206096564751, + 2442767368115540430947582893869040, + 2441038363121116511671115291243110, + 915714330356837041509315611365683, + 610243267866258280493576590715221 + ], + "minimum_K_direction_support": 48, + "rank_J": 108, + "rank_K": 9, + "rank_R": 9, + "zero_diagonal_entries_J": 111 + }, + "scope": [ + "General row-section theorem is a written proof, not established by finite tests.", + "Actual matrix rank claims concern F2 scalar augmentation.", + "Census covers only three-row invertible sections and the 120-root-line two-tier alphabet.", + "No native decoder tariff, restored supplier, precision, owner or new kappa conclusion." + ], + "status": "PASS_INDEPENDENT_ROW_SECTIONS_AND_ROOT_LINE_CENSUS", + "theorem_finite_checks": { + "GL2_F2_cases": 127968, + "cases_with_an_uncovered_row": 990, + "premise_controls": { + "even_two_stage_endpoint": [ + 1, + 2 + ], + "omitted_inverse_endpoint": [ + 1, + 2 + ], + "singular_inverse_rejected": true, + "wrong_factor_order": { + "J": [ + 1, + 3 + ], + "stages": [ + [ + 1, + 3 + ], + [ + 1, + 3 + ], + [ + 2, + 3 + ] + ], + "untouched_rows": [ + 1 + ], + "wrong_endpoint": [ + 3, + 1 + ] + } + }, + "rank_counterexample": { + "E_minus_I": [ + 3, + 3 + ], + "J": [ + 2, + 1 + ], + "defect_rank": 1, + "diagonal_mismatches": 2, + "field": "F2", + "repair_union": [], + "stages": 9 + }, + "stage_counts": [ + 1, + 3, + 5 + ] + } +} diff --git a/research/r429-controller-accounting/frozen/reviews/sections/check_sections.py b/research/r429-controller-accounting/frozen/reviews/sections/check_sections.py new file mode 100644 index 0000000000..5a16e0e0e1 --- /dev/null +++ b/research/r429-controller-accounting/frozen/reviews/sections/check_sections.py @@ -0,0 +1,407 @@ +#!/usr/bin/env python3 +"""Independent row-section checks from two authenticated data files. + +No historical producer, checker, or third-party package is imported. The +general theorem is proved in REVIEW.md; these are finite premise/witness checks. +Apache-2.0. Ross Richardson, with substantial OpenAI Codex assistance. +""" + +import argparse +from collections import Counter +from fractions import Fraction +import gzip +from hashlib import sha256 +from itertools import combinations, product +import json +from pathlib import Path + + +WORD_SHA = "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" +GEOMETRY_SHA = "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + + +def require(ok, message): + if not ok: + raise ValueError(message) + + +def load_pinned(path, expected): + raw = path.read_bytes() + require(sha256(raw).hexdigest() == expected, f"input digest mismatch: {path.name}") + return json.loads(gzip.decompress(raw)) + + +def gf2_rank(rows): + pivots = {} + for row in rows: + while row: + p = row.bit_length() - 1 + if p not in pivots: + pivots[p] = row + break + row ^= pivots[p] + return len(pivots) + + +def gf2_mul(left, right): + result = [] + for row in left: + value, j = 0, 0 + while row: + if row & 1: + value ^= right[j] + row >>= 1 + j += 1 + result.append(value) + return result + + +def gf2_inverse(matrix): + n = len(matrix) + rows = [r | (1 << (n+i)) for i, r in enumerate(matrix)] + for j in range(n): + p = next((i for i in range(j, n) if rows[i] >> j & 1), None) + require(p is not None, "singular matrix") + rows[j], rows[p] = rows[p], rows[j] + for i in range(n): + if i != j and rows[i] >> j & 1: + rows[i] ^= rows[j] + require([r & ((1 << n)-1) for r in rows] == [1 << i for i in range(n)], + "inverse elimination") + return [r >> n for r in rows] + + +def transpose(matrix, columns): + return [sum(((r >> j) & 1) << i for i, r in enumerate(matrix)) + for j in range(columns)] + + +def gf2_kernel(matrix, columns): + rows, pivots = matrix[:], [] + for j in range(columns): + i = len(pivots) + p = next((p for p in range(i, len(rows)) if rows[p] >> j & 1), None) + if p is None: + continue + rows[i], rows[p] = rows[p], rows[i] + for q in range(len(rows)): + if q != i and rows[q] >> j & 1: + rows[q] ^= rows[i] + pivots.append(j) + result = [] + for j in range(columns): + if j not in pivots: + vector = 1 << j + for i, p in enumerate(pivots): + vector |= ((rows[i] >> j) & 1) << p + result.append(vector) + require(all((row & v).bit_count() % 2 == 0 for row in matrix for v in result), + "kernel equations") + return result + + +def rational_kernel(matrix, columns): + rows = [list(map(Fraction, row)) for row in matrix] + pivots = [] + for j in range(columns): + i = len(pivots) + p = next((p for p in range(i, len(rows)) if rows[p][j]), None) + if p is None: + continue + rows[i], rows[p] = rows[p], rows[i] + divisor = rows[i][j] + rows[i] = [v/divisor for v in rows[i]] + for q in range(len(rows)): + if q != i and rows[q][j]: + scale = rows[q][j] + rows[q] = [a-scale*b for a, b in zip(rows[q], rows[i])] + pivots.append(j) + result = [] + for j in range(columns): + if j not in pivots: + vector = [Fraction(0)] * columns + vector[j] = 1 + for i, p in enumerate(pivots): + vector[p] = -rows[i][j] + result.append(tuple(vector)) + require(all(sum(a*b for a, b in zip(row, v)) == 0 + for row in matrix for v in result), "rational kernel equations") + return result + + +def normalized(vector): + first = next(x for x in vector if x) + return tuple(Fraction(x)/first for x in vector) + + +def alternating(stages): + require(len(stages) % 2 == 1, "odd stage count required") + out = stages[0] + for i in range(1, len(stages), 2): + out = gf2_mul(gf2_mul(stages[i+1], gf2_inverse(stages[i])), out) + return out + + +def finite_theorem_tests(): + matrices = [list(x) for x in product(range(4), repeat=2)] + invertible = [x for x in matrices if gf2_rank(x) == 2] + require(len(invertible) == 6, "GL(2,2) census") + cases, uncovered_cases = 0, 0 + for length in (1, 3, 5): + for stages in product(invertible, repeat=length): + endpoint = alternating(stages) + for baseline in matrices: + untouched = [p for p in range(2) + if all(a[p] == baseline[p] for a in stages)] + require(all(endpoint[p] == baseline[p] for p in untouched), + "alternating row-support theorem failed") + cases += 1 + uncovered_cases += bool(untouched) + swap = [2, 1] + identity = [1, 2] + endpoint = alternating([swap] * 9) + defect = [a ^ b for a, b in zip(endpoint, identity)] + require(endpoint == swap and gf2_rank(defect) == 1, "rank counterexample") + require(sum((row >> p) & 1 for p, row in enumerate(defect)) == 2, + "two diagonal discrepancies") + + # These are concrete counterexamples to deliberately strengthened claims. + # The rejection predicate is the theorem conclusion, not a status string. + even_endpoint = gf2_mul(gf2_inverse(swap), swap) + require(even_endpoint == identity and even_endpoint != swap, + "omitted odd-stage premise did not change the conclusion") + cycle = [2, 3] # Order three, so A A A differs from A A^-1 A. + missing_inverse_endpoint = gf2_mul(gf2_mul(cycle, cycle), cycle) + require(missing_inverse_endpoint == identity and alternating([cycle]*3) == cycle, + "omitted inverse control") + + order_witness = None + for baseline, a0, a1, a2 in product(invertible, repeat=4): + untouched = [p for p in range(2) + if a0[p] == a1[p] == a2[p] == baseline[p]] + if not untouched: + continue + wrong = gf2_mul(gf2_mul(gf2_inverse(a1), a2), a0) + if any(wrong[p] != baseline[p] for p in untouched): + order_witness = dict(J=baseline, stages=[a0, a1, a2], + untouched_rows=untouched, wrong_endpoint=wrong) + break + require(order_witness is not None, "factor-order control") + singular_rejected = False + try: + alternating([identity, [0, 2], identity]) + except ValueError: + singular_rejected = True + require(singular_rejected, "singular inverse admitted") + + return { + "GL2_F2_cases": cases, + "cases_with_an_uncovered_row": uncovered_cases, + "stage_counts": [1, 3, 5], + "rank_counterexample": {"field": "F2", "J": swap, "stages": 9, + "repair_union": [], "E_minus_I": defect, + "diagonal_mismatches": 2, "defect_rank": 1}, + "premise_controls": { + "even_two_stage_endpoint": even_endpoint, + "omitted_inverse_endpoint": missing_inverse_endpoint, + "wrong_factor_order": order_witness, + "singular_inverse_rejected": singular_rejected, + }, + } + + +def reconstruct(word): + require((word["v"], word["R"], word["h"]) == (111, 438, 8), "R438 dimensions") + rows = [1 << j for j in range(660)] + for phase in ("D", "A"): + for frame, dst, srcs in word[phase]: + require(0 <= frame < len(word["frames"]), "bad frame identifier") + require(0 <= dst < 660 and all(0 <= s < 660 for s in srcs), "bad register") + for src in srcs: + rows[dst] ^= rows[src] + require(rows[:111] == [1 << p for p in range(111)], "prepared source changed") + retained = [rows[j] for j in word["ret"]] + require(len(retained) == 9, "retained query count") + source_mask = (1 << 111)-1 + target_mask = source_mask << 111 + require(all(not row & target_mask for row in retained), "retained target dirt") + readers = [row & source_mask for row in retained] + output = [] + for subset in word["scatter"]: + require(len(set(subset)) == len(subset) and all(0 <= j < 9 for j in subset), + "invalid scatter subset") + output.append(sum(1 << j for j in subset)) + require(len(output) == 111, "output row count") + jr = [r ^ (1 << p) for p, r in enumerate(gf2_mul(output, readers))] + require(gf2_rank(readers) == gf2_rank(output) == 9, "R/K rank") + require(gf2_rank(jr) == 108, "rank J") + require(all(not row >> p & 1 for p, row in enumerate(jr)), "zero diagonal of J") + weights = Counter(sum((a & row).bit_count() % 2 for row in output) + for a in range(1, 512)) + require(min(weights) == 48 and sum(weights.values()) == 511, "K minimum support") + return readers, output, jr, weights + + +def geometry_and_census(word, geometry, readers, output, jr): + roots = [tuple(map(Fraction, row)) for row in word["lines"]] + full = [tuple(map(Fraction, row)) for row in geometry["lines"]] + require(len(roots) == 111 and len(full) == 120, "root inventory dimensions") + require(all(len(r) == 8 and sum(x*x for x in r) == 4 for r in roots+full), + "E8 vector norms") + candidates = sorted(set(map(normalized, full))) + require(len(candidates) == 120, "120 distinct full root lines") + normals = [] + frame_ids = [] + for h in word["ret"]: + frame = next(f for f, dst, _ in reversed(word["A"]) if dst == h) + basis = rational_kernel([roots[p] for p in word["frames"][frame]], 8) + require(len(basis) == 1, "retained source cap is not a hyperplane") + normals.append(normalized(basis[0])) + frame_ids.append(frame) + require(set(candidates) == set(map(normalized, roots+normals)), + "full root lines do not match physical roots plus old cap normals") + line_data = [] + for normal in candidates: + bad = sum(bool(sum(x*y for x, y in zip(normal, r))) << p + for p, r in enumerate(roots)) + allowed = sum((not sum(x*y for x, y in zip(normal, r))) << j + for j, r in enumerate(normals)) + line_data.append((normal, bad, allowed)) + templates = [] + for a in range(1, 512): + support = sum(((a & row).bit_count() % 2) << p for p, row in enumerate(output)) + for normal, bad, allowed in line_data: + if a & ~allowed: + continue + removed = support & bad + if removed.bit_count() <= 3: + templates.append({ + "a": a, + "required_deleted_rows": [p for p in range(111) if removed >> p & 1], + "allowed_ret_mask": allowed, + "normal": [str(x) for x in normal], + }) + require(len(templates) == 111, "eligible template count") + require(all(e["a"] == e["allowed_ret_mask"] for e in templates), + "template input/output masks differ") + require(all(len(e["required_deleted_rows"]) == 1 for e in templates), + "a template requires a different deletion count") + require(len({e["required_deleted_rows"][0] for e in templates}) == 111, + "templates do not biject physical rows") + singletons = [e for e in templates if e["a"].bit_count() == 1] + require(len(singletons) == 1 and singletons[0]["a"] == 32 + and singletons[0]["required_deleted_rows"] == [80], "singleton template") + + # A block S must obey a subset S subset allowed for each emitted direction. + # Here a == allowed, so the only possible direction in block S is a=S. + # Its span has rank one; invertibility then forces |S|=1. + by_deleted = {e["required_deleted_rows"][0]: e for e in templates} + small = [(1 << j) ^ row for j, row in enumerate(gf2_mul(readers, output))] + left_null = gf2_kernel(transpose(small, 9), 9) + require(len(left_null) == 3, "quotient left-nullity") + constraints = gf2_mul(left_null, readers) + require(gf2_rank(constraints) == 3 and gf2_mul(constraints, jr) == [0, 0, 0], + "complete left kernel of J") + labels = transpose(constraints, 111) + sections, positive, rank_histogram = 0, [], Counter() + for chosen in combinations(range(111), 3): + if gf2_rank([labels[p] for p in chosen]) != 3: + continue + sections += 1 + eligible = [by_deleted[p] for p in chosen] + rank_histogram[gf2_rank([e["a"] for e in eligible])] += 1 + # Evaluate the original criterion rather than only its simplification. + block_candidates = set() + for e in eligible: + a, allowed = e["a"], e["allowed_ret_mask"] + for block in range(1, 512): + if not a & ~block and not block & ~allowed: + block_candidates.add(block) + feasible = [] + for block in sorted(block_candidates): + vectors = [e["a"] for e in eligible + if not e["a"] & ~block and not block & ~e["allowed_ret_mask"]] + if gf2_rank(vectors) == block.bit_count(): + feasible.append(block) + require(feasible == ([32] if 80 in chosen else []), "singleton classification") + if feasible: + positive.append({"selected": list(chosen), "feasible_blocks": feasible}) + require(sections == 70626, "invertible-section census") + require(len(positive) == 2270 and dict(rank_histogram) == {3: 70626}, + "positive-section census") + chosen = [1, 2, 80] + require(gf2_rank([labels[p] for p in chosen]) == 3, "explicit section is singular") + normal = tuple(Fraction(x) for x in singletons[0]["normal"]) + supported = [p for p, row in enumerate(output) if row >> 5 & 1] + violations = [p for p in supported if sum(a*b for a, b in zip(roots[p], normal))] + require(violations == [80], "singleton deletion does not remove exact obstruction") + require(sum(a*b for a, b in zip(normals[5], normal)) == 0, + "singleton output line is outside source cap") + # Removing 80 from the repair set reintroduces a real output incompatibility. + require(80 not in [0, 1, 2] and violations == [80], "omitted deletion control") + require(not any(e["a"].bit_count() == 1 for e in [by_deleted[p] for p in (0, 1, 2)]), + "historical P012 unexpectedly admits a singleton") + return { + "candidate_return_lines": len(candidates), + "actual_retained_cap_frame_ids": frame_ids, + "old_ret_cap_normals": [[str(x) for x in row] for row in normals], + "eligible_direction_templates": templates, + "eligible_direction_rank_histogram": dict(sorted(rank_histogram.items())), + "sections": sections, + "sections_with_feasible_blocks": positive, + "positive_count": len(positive), + "classification": "Exactly sections containing row80; only block mask32, size1.", + "explicit_singleton": { + "selected": chosen, "block_mask": 32, "return_normal": list(map(str, normal)), + "required_deleted_row": 80, "support_size_before_deletion": len(supported), + "labels_on_selected_rows": [labels[p] for p in chosen], + }, + } + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--word", type=Path, required=True) + parser.add_argument("--geometry", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + require(not args.output.exists(), "output must be fresh") + word = load_pinned(args.word, WORD_SHA) + geometry = load_pinned(args.geometry, GEOMETRY_SHA) + readers, output, jr, weights = reconstruct(word) + tests = finite_theorem_tests() + census = geometry_and_census(word, geometry, readers, output, jr) + result = { + "status": "PASS_INDEPENDENT_ROW_SECTIONS_AND_ROOT_LINE_CENSUS", + "inputs": {"r438_word_sha256": WORD_SHA, "full120_geometry_sha256": GEOMETRY_SHA}, + "scalar_matrices": { + "R_rows": readers, "K_rows": output, "J_rows": jr, + "rank_R": 9, "rank_K": 9, "rank_J": 108, "zero_diagonal_entries_J": 111, + "K_nonzero_direction_weight_histogram": dict(sorted(weights.items())), + "minimum_K_direction_support": 48, + }, + "nine_three_row_stage_consequences": { + "maximum_repair_union": 27, "minimum_diagonal_mismatches": 84, + "defect_rank_lower": 9, "defect_rank_upper": 36, + "conditional_common_reader_defect_rank": 9, + "conditional_premise": "Each A_s-I = W_s R for the same actual R.", + "necessary_odd_stage_count_at_three_rows_per_stage": 37, + "stage_count_sufficiency_claimed": False, + }, + "theorem_finite_checks": tests, + "root_line_census": census, + "scope": [ + "General row-section theorem is a written proof, not established by finite tests.", + "Actual matrix rank claims concern F2 scalar augmentation.", + "Census covers only three-row invertible sections and the 120-root-line two-tier alphabet.", + "No native decoder tariff, restored supplier, precision, owner or new kappa conclusion.", + ], + } + args.output.write_text(json.dumps(result, indent=2, sort_keys=True) + "\n") + print(json.dumps({"status": result["status"], "sections": census["sections"], + "positive_sections": census["positive_count"], + "result_sha256": sha256(args.output.read_bytes()).hexdigest()})) + + +if __name__ == "__main__": + main() diff --git a/research/r429-controller-accounting/frozen/upstream/research/bit-r438-source-code/WORD.json.gz b/research/r429-controller-accounting/frozen/upstream/research/bit-r438-source-code/WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..672c41534608d0d812b8020e496177d7c41c8527 GIT binary patch literal 59514 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

q_V!^G2pb`8%%8O#)sms+W zq>UKiG86hn8Gg_ui`RAj%zolM@-WRVyjNFBk~emsRy6*dBoi2IW*LU+UGO70>}Bb- zc_PjqprH-;9fhk>6P1qz@9P4}_L{7mtSkx)w!qe(A(V;O9|Qg{XmKl5RhegdEOHl_ zTCckRgv}u<%2(yaO$ChJLlm=b$SA$LYKU!4`&2Zl|2z{t-m|+m(#kvKGBCxOS=>_u zX&Yp5?P;aVH;>^1p0h^rdVH48>BUqwefpGVK|O}S8(cHObU2472D?t1vg_Gs=6$AE zR5M86aWKUU_;d)%LVENT@cXCI%%Tuvt+jg82%JYdjLb%QMtHMt+CK-)r5(4OnHn%x zYjrX^kgQX0e5^1qWeR{JpEX)bT%)K!$?$mYAc{iHw>Al#P^}`p#sU%;c&523fYeNh zvV`YXRaIS^akc+ar|WH^W%R&Dc`w^90?712j(PkJemU+k@R?Sz?>Kco_YxqlYz_+qO&aP6{cicqoJzX?w5SW+i9+@qwg_K_%=J@5OL9Ej?mzkI!OPQ=8d#( z6#BDzM!GiYXfIg5jE$D{m`HH{e&;aPnrly;z%CM08Ah#N1D*YDE zw9_fCN(xj^f{Hswda>5+r@P+t>1IbamgKU}Mn}KwvsAYsGNz3|)jqw6Ji=PsjT=-y1>~R^x4>S6&%c_Hi zs7>=jjCE}B2hie8bly<~wgoD_ag_F~Dt!@am@Ewqe(p*Z+wA+t_0JaXYU$&iwR z>b)YXfT?x+Rz^ENT2N@bU8AW6-O7-8Fk`quIG-N_7)@rALZ^Wkp(<}{H{+7CwlFZ5 zr6*~};Fn#sU2aPeZ@S0 zZJ0aDwpuV_396j>;q+NmAqN{yy;W01r^QvM{2>&4B33d_DIlHTTt22{0cYj}5n?7} zmt2x_&4`Ou&3^wz(?$SUQkHH_u9dR`D7TkD2sL;Q1ev+t^KiDt3vpo&%0+hSrQnUh z%qpWqJ}Q~3HN1^!DPeee-t5T8Zj`}rb0~3~HzOEJSG6SK-=M?M^gcnY0uHik=&;jc ztqLQ(q}vNfSKTYH!ryh*bgD=GZ7?;#q?#gDw?n>3b#FTR7hF6Z{7IYup+Gd9IN(^R zL}#ojR;XibH-z=`kQXq6{@k#yy08A2MV4PN@AuMGVtr71RO0?yg^!)7T4T#HN~c;3 z=nHWe9giqRtP)08pVDL-R-QGwaLYL-YBteUS{&;_fgrW%Awc2%vw3cF9e92Luf_(63Z5~?`U>aQph;Bklmkq^1)9)oRV$5l zJHeFu7UcX#BL?3rxU9cPUb0E4k{QQEGZSf-R8X_oWbtm5g;*@_sM+0@w}qUr6c==Xtyh z0(-O>{>s*lqMx=X^!i*{C0^Jd-g0oTy5m;ioMcJet~F$?Z=1(eIpR;VPbAn0AAhx0 zd_2;)@)PysamC?M0?D>Y!p}4@7Z=y$|b+>RxN&^ZJxEy z{TeD$JsQ>teTtZ4HwxsGFZP=HEW56gXrd)OFPDbc$<;H*{WxV+#?LU`ibW^Qgc!+| zUM5(q@7w-@SQ)=8VQMb%(tCmV+}U0BQNuFJMV&}%dTrqF&0*>Ww!SfF54}kI8?YoC zw^T>cFUN01XD?_tW@EYc370eGOI|TfGqztn!?7Uc$TQD1cC$B(#dKnq{TEAtGeaLN zH3li@^g&ugMgqvGiDkff;W7{BU3|(!{!E(>8Z0s30bebibqy9o<;VDWV68sW4~>CM zo(d&#S?NxJoVr%~Kr6P)=!lnyP7$E;lldoI&~!E}i{k^07ejhq`_)ox1N7QQCat{u zz&8uqCS6WE5TO2Z@tmJjIwz%cx$J45)P`9Ip#d%&Gu?(eV?y#RK~_WGVig(Fb8spg zU4WeJZeJ^8PDY>MiB+|HS1|R+G5p@kV&ClbWLIPOSG~7#mbnZFbI=4(l!4W#t0ZxL zlc8cjKA8cF&-uYJNe+zZsO(^MW;A@bF*yNtMAYqIw;%|KH}BRR|3vgBS=GI@eA||U z@_HGTsHGa+SvyT^%$LVe-9xM(&k{95{kcjsvyMhY&`~p@x^sJ-X2y-s!dKya^i1pP z^5}PUG{qI<$81$EjMffkdAh7?Xy3PLtP@0)Jr`2bfS)>7FJClr{}?#>#YngLTH#O# z((rbaKd+a1eyl>B+CzNZGv98=!R_U6t@2R2n%J=Ncto=qgNWEtX(bPf2h~}{1fduq zBJE2tm5u>!n%j{yi=9Oh*y#^sOO)Z6_qx}0-}c;ww8mjQ3kF565e}!GQdmy7w0CsM z(C_*9&pb9BG%}{-in51E?YX^zu<#=1Qrg7!CTg4~hm-Wp7(=+K}-aL;{_01uP#j}ARSJf#u#}d1L@u?0+?6ALO zSzg2c``{|>I(N(c;y}6_69t37dLwP{RYFc1jqIJQ2Zf9Tc_Opjl3)B#bl+3kZ`4B$ zCk(@$Qwd_4>XMz^?BJB;<1nvcS3Nr}=UnA$UJ(siomEn5dGU)U80-n{s%ZZ_{TF65yd##~+7Ts<1E=e zC{#71sP131sHIPh0l!_17wD`I$KwgijBwZlKqZ!&kuYnZxqNfpgazB zzCI6j%k#=>6rLcWIXhxpFJZ2gHH*EZKNG*Gl0OH@=E+LMN)BAP?TRqf$`D`^24mey z6s|^f#64&{m`vD#Rw6nu?U47{wx&>rRx zOzHte7f#ECxD3SJKHDN@Tlk9!;yI38QHMxLq%>jqV+BjB9Q(mH?~||Sk0n;5NM^(8 zu%h&psKK=N^!BdOD`6dRSDY7_exXI7q_^CI#uIjhkN8ONBr!egF02bRnDm%)MYAJ6 zi1C*FLiIulx|xgqu<;Hqx>c)z1#-i!OtwAzT9Ru!qM=5^=dk@FN65_8Z}sFM4usxM zKqY7>7MX@@&^er(u!OdJ2ah4gkeyw)Y-nsyYzL}8`We3dKT3P+nOHoFTh5hT;As_&a@v^f}Tp$@S882Na-kO z3aSu_y+CX4TF@DOiFGSDksp36T=-oM0WC&9EOpoT8J&Mg9PT5eaaanHx8*UP zMaw{1)y?C#RHBYz@R2mW0ci^2q%tW**mC>)>ZMia6=2s&k(Ngz$JJw_aE^m0^#a(r zwf|B7^1ViCQF4HfPc7mATlDPTtg(lL7kAu#M;Bx6k#4Cn6*w|Cz`0l zUtXcDTU@H3o|GkSBl?dJT>8{CM|RR59Gbgg2TGLxE+~!60ye?shb^Bc)NnV!O2|Xr zuU+B%(>T&h3za))O+nlPyw_XYtna{RVXEx-7{Cxr=^DZQ&SN-xF?8LU;6E34bKIMr zuBgz}Ei2Vf&&?7S_C^w3T2ml(Y+?HU0mNAPnw5EaFDn9c{*>$~&p<0V^)(%{rpaPT z!Cu{MUsu~P)iNpdwC3EL>Y*;`Xl=Mr#QLHLIZtud%^`-@5wvVe|l z<-h+2UV@cD5eoR%KcAJ+d7b%VqXYgWk-=&>N;rerlE>ybfc%f)*oWphxpfIF zG;%^+J?lELZPF6E=l-LbF}TBghLt}6_Sm@vlMZUCG5$k*{M2PEeFv5qW(1LwqSuMK z@fNduYP2zv_H;r0am7Spkv!c;@U#(uFWUZkb5jKrP5l!IITqg8G ze!ah}tqRlKNnZCW`#VBLemaR5aI8f&DT0y;^6vB}r$i6xPcbG5EbE<%Ik7eIQg|}z z9RI!ds1JQ{nboD|s7*-j_v6HG&{v4vjG+#Yv}|O~@4VSHR|jnRpu8tJtE1}`Vx_MJ z?7fl|%5sC^(Kl#^5`je`gp<)D4=_+R;c#b{>mb;$ zLE%MTISm6*xoKe?_7uFNl3of!NSgCv(R~ET5e4u?V%eZHpkvu~_fenNW4+7*L7oH% zky7QT@1o=u(1NA$>!?XlGTh87sb*TKqT`T=1BI_0FHD7x1d1N;gH0{@1ecUgY+I9P zedv!k<$+0&Rfl?FbL#~%4rt6p)d|XQLv1`nk)J)`zPIg_%Bv%Ra#-|ytMC*qKo`R3 z{$}KsPuYLG;b)q&PKkZeo7lxy%uBE)&uQ;2$2)$5@A=S62j{cmO@|jNt99d(9z_gv z@}briqD^8W)jodEm8e|qJ+j2CoGM|q>TSTP7T11`<0CtDy`J3!0w{=kLIk0_Ln4q zcFQ8k6G*o#;7QzMUY$jpeqgWsh*tRZLAPpeKl{fU-0bv5cjd5|w?%x31e~lx_GdUE zF)g*8!c9~28k@gT4(?50H=gcSI|5Bs&I4~*iicQDzrt+Rny3_Fpd{AP<+}eCI4jw) z8+?z(*>-6wjfr(=O>y(ZyztLaYr!S1_7;5~_1{Scd8SLR+9_zwoHHbxDVyhk%lBJ( z3*^om^90Syz@v6k=6h&OOG2Q#0c_p6Z|QS;3)uI!HR%1dzty8T6}5%}q)=v?{w=9z z%pu8pI{)>V_Ce6y-MR8*I`jP*Yc8+Iom?o> z$iqo3rG)qW=~WQB`b)rH&!uMIwORdJ~{YHGidzapE_71Gp}ls_i> zqT8sUEiS)9oGa@^G$|(czrd{M9FUv7+ab5ZF3vmYA2+V*^$%6HD=ELjC9XN?A3v_^ zl~;65mW!k`a}n$)!74AwUq5x?a(d?UbR=yi&1Tqf7;vcjL38q@{2#J0T{6u{3Hd{^ z8r=^X|GHePM+v2D0RR6s>p$=*b4|T`CV$G?{TFE8U6S7ciu+EsCXAbU9Tj;}<{~Q2 zruv*4JZeCE}GZA8oNK~Y1(IERPYR>mNI8f&n~?{?)?_1m{Ue095@nvntH zDKJMW8rquonk(N|0xQL{HuU3lxgLsI5;kb#7dg%HMZGpU zHb~>zS-aE$P~{f(`n0Im07YeKHW%F=LhOfHKfbc@sQvI`(^U7hT6`Sc~)IO>KzP z@5_~XVs4vAi`73*F1ya%@QI(}`j6$VTq$X$2I;N{we%ec(So(Gouz;}#5uy66y0IN zo~GXUD~umtN#H>>`SvSpa#CnPtC&!@t*HN|Ta=M%2Ypju(%vUYFvh)~?~PIMm17Qn zB2tOq!@5X3mE0t=lxrtBRA{8FcQ#q0KCB}dQQ)Q>`#hN|T(tborkMW4f(3H9Kzk9S z=JO8#-X_NUeCJdA^Go*K?7>27{Pb>;f}_y0ViKy;*zE33+$Gwiz+!jT9AX;IsD9kS z$%?l~I2H<>fXKzL?XvPS;_fI3DWVBuc(P{D_AKH2Qs5JbXyrdyVY^^WVZ_~2Qd8^| z24ok0dfPaSTry40m(_=s$J>gkfn-#@R|;^S(w+R(o2{CagckSvMC@Ck(WIDGlF>tj zF|M;|<0}=fD!FEPFSu;8g!Oxwrl;1iGEJ=3WuPW<;KFu-&kYL!Z|}**@Sh^wPMp33 zz7AwVQkdYhh=les$gUzvVD>Xu8H+J9jFe@O0anaRO9RViHYSJZGG`ORHklUjVd-v@ zrDly4l(KS^l6W!S#>3f*y}tbD{uQ);5UYSkwtj z0j$%P(|5Z+mcT(O!A`Dzov_v0)A>INKd#pdw#fRLcTBoY+s)?^hBuQwq&BmAdi04085yjOuYQIpmh9o zPK~Isd(#HXhvj3k1+L--M6N($7EP#FacTc+H6{>sQr3$ebhtzDo;qq@{kZl}Pj`M2 z<4(b%!%RMu3_R$c>YnPKT1M_#w?X(C@kvN~;F}OV<&>9++LSy0*z>Wg!c~Vai=LUI z$q5ePz|!9>hNYX9nFch6gpDEvj}G3n)o%lV-1F|Iqt6Nbp;8PN`4he}tI?MfUB?k2 z_-7Pbm>2ki_`9^%47kC7d(A=3!PqpHMp!N7P=|$Eq8XGRdExnL*0KSq1bFmw=laXc z<>vRM1j?OZP}}Ct&z7rhCdho8BL_ccYZUS!l`QoGs^Fr%E$x_dai$Az{knkyq(`&v zsh4)Wav@ZP6Mj*$2hGw5c|T-}tTFDSBW18{MD=|ukDNa>@S5fo?B$NpWDCD=y4&mT z%19I+wioEK;Ttjhs69yX4IG`X%Dra1ppjr-Cg14!)2U2eC_}ohcg7rz5Z@pYSBTq$ zkYl3GEx47laxnnu? z#^uxjTBBcP(TazR^DD3Gf}gYc{kLg=|e)i@_EBW{< z=IW4&{;=EOZKOo7ujFjUe!Jt+y!YI!t|_dw`Q5MnUrRU=nU zF5knyb2xFj_ODPU=085%UG2ahSK;u-?~iEDWDA$g$}mv=52tYpy#N3J literal 0 HcmV?d00001 diff --git a/research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json b/research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json new file mode 100644 index 0000000000..c2fb443f44 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/verify_rehost.receipt.json @@ -0,0 +1,726 @@ +{ + "claims": { + "c_pr1043_inplace": "0.001734176288479865766692", + "c_pr589": "0.001733427039589844234749", + "c_window_optimum_local_a": "0.001734802047828389852783", + "c_window_optimum_local_b": "0.001734846264120199151475", + "certificate": "moment(opt, c+1e-24) > 1 by both engines; every other no-bank R438 slot layout has a certified larger idle sum at c+1e-24 with the same child count and local profile, hence a larger moment; so no layout in the slot model reaches c+1e-24", + "kappa": "unchanged; the bit side does not bind", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + } + }, + "dp": { + "S45_positive_control": { + "c_star": "0.001733427039589844234750", + "exhaustive_layouts_covered": 3160688, + "optimum": "9x(42,5)", + "optimum_idle_per_replica": { + "2": 435, + "4": 444, + "42": 9, + "6": 444, + "7": 666 + }, + "pr1023_width8_optimality": { + "margin_lower_bound": "0.0025867731454302305368", + "runner_up_per_unit": "capacity 42, u = 4" + }, + "runner_up": "8x(42,5) + 1x(14,1) + 1x(42,4)", + "runner_up_gap_moment": [ + "0.0000003322715521960530587537556494937834", + "0.0000003322715521960530587537556494937835" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.018883656854406087435093441072030701", + "0.018883656854406087435093441072030702" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 435, + "34": 1, + "4": 444, + "42": 8, + "6": 443, + "7": 666 + }, + "slack_units": 45, + "third": "8x(42,5) + 1x(28,1) + 1x(42,4)" + }, + "S54_at_c_a_next": { + "c_star": "0.001734802047828389852784", + "exhaustive_layouts_covered": 10556685, + "optimum": "10x(42,5) + 1x(42,4)", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "runner_up": "10x(42,5) + 1x(14,1) + 1x(28,3)", + "runner_up_gap_moment": [ + "0.0000001390420665268048703185105882609695", + "0.0000001390420665268048703185105882609696" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.007902038724851374389941593752047420", + "0.007902038724851374389941593752047421" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 434, + "28": 1, + "4": 443, + "42": 10, + "6": 443, + "7": 666 + }, + "slack_units": 54, + "third": "10x(42,5) + 1x(28,1) + 1x(28,3)" + }, + "S54_at_c_b_next": { + "c_star": "0.001734846264120199151476", + "exhaustive_layouts_covered": 10556685, + "optimum": "10x(42,5) + 1x(42,4)", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "runner_up": "10x(42,5) + 1x(14,1) + 1x(28,3)", + "runner_up_gap_moment": [ + "0.0000001390456087131328961495995128689269", + "0.0000001390456087131328961495995128689270" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.007902240034384768753974039515366855", + "0.007902240034384768753974039515366856" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 434, + "28": 1, + "4": 443, + "42": 10, + "6": 443, + "7": 666 + }, + "slack_units": 54, + "third": "10x(42,5) + 1x(28,1) + 1x(28,3)" + }, + "pr1043_inplace_layout": { + "gap_moment_at_c_a_next": [ + "0.0000020441334240402170287422093671650918", + "0.0000020441334240402170287422093671650919" + ], + "gap_sum_g_per_replica_at_c_a_next": [ + "0.116172190755053614177477242754726502", + "0.116172190755053614177477242754726503" + ], + "idle_per_replica": { + "10": 5, + "12": 3, + "14": 1, + "2": 430, + "4": 441, + "42": 9, + "6": 443, + "7": 666 + }, + "layout": "9x(42,5) + 5x(42,1) + 3x(28,1) + 1x(14,1)" + } + }, + "endpoints": { + "pr1043_r438_inplace_local_a": { + "children": 904320, + "endpoint": "0.001734176288479865766692", + "profile": { + "1": 380448, + "10": 160, + "12": 96, + "14": 32, + "2": 400832, + "3": 22464, + "4": 26784, + "42": 288, + "5": 29376, + "6": 17344, + "7": 26496 + } + }, + "pr1043_r438_inplace_local_b": { + "endpoint": "0.001734220472884893243548", + "gain_vs_pr1043_percent": "0.00254786", + "gain_vs_pr589_percent": "0.04577252" + }, + "pr589_r439_selected": { + "endpoint": "0.001733427039589844234749", + "profile": { + "1": 381024, + "2": 400416, + "3": 22752, + "4": 26880, + "42": 288, + "5": 29376, + "6": 17376, + "7": 26784 + } + }, + "r438_runner_up_layout_local_a": { + "endpoint": "0.001734759469354358444809", + "gain_vs_pr1043_percent": "0.03362869", + "gain_vs_pr589_percent": "0.07686679", + "layout": "10x(42,5) + 1x(14,1) + 1x(28,3)" + }, + "r438_window_optimum_local_a": { + "children": 904320, + "endpoint": "0.001734802047828389852783", + "endpoint_fraction": "1734802047828389852783/1000000000000000000000000", + "gain_vs_pr1043_percent": "0.03608395", + "gain_vs_pr589_percent": "0.07932311", + "profile": { + "1": 380448, + "2": 400928, + "3": 22464, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "rank_mass": 1808352 + }, + "r438_window_optimum_local_b": { + "children": 904320, + "endpoint": "0.001734846264120199151475", + "endpoint_fraction": "69393850564807966059/40000000000000000000000", + "gain_vs_pr1043_percent": "0.03863365", + "gain_vs_pr589_percent": "0.08187391", + "profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "rank_mass": 1808352 + } + }, + "inputs": { + "main_tree": { + "research/bit-helper470-window-placement-seed14/verify.py": { + "git_blob": "c716a44e3b920f91918903d3480560e3882fbe80", + "sha256": "9cceeb610eccd6171585b056020ab6c44d7428de403a9ed035be1df9ae63f55b" + }, + "research/bit589-width-packing/SOURCES.json": { + "git_blob": "f6a97de32691a1d426ac4819aad24c0c8414d97e", + "sha256": "53fe98c8f01de7e32e3110e591d62e60292abb38cc11ecde4839f2eebd3b5fbc" + }, + "research/bit589-width-packing/packing.py": { + "git_blob": "a6079ee0dd4d8037be477a3c4497f472348bde07", + "sha256": "2bb5515807714807961289e4ee6958c3ad7e0c27bbec4d9212b138c662a6cc7b" + }, + "research/bit589-width7-windows-seed72/verify.py": { + "git_blob": "7f79a47146b150c9446e5f45e401d70b5cd12427", + "sha256": "a5341ed222af84b51cd18645dd6b23e4613c0275cbf2663c94b07a9f916e9e60" + }, + "research/bit589-width7-windows-seed72/windows.py": { + "git_blob": "4bb4f075ad5c1a49b4af310094bde6b2a4ea0c2e", + "sha256": "a24295a51333b168ab73215f8a4bbb5bf831be829f572d1cde15fc322049c635" + }, + "research/bit589-width7-windows-seed72/wopt.py": { + "git_blob": "4e0bd3704d1a2be460ed25b363e95918119e8d42", + "sha256": "a72daf1c7cff422543371a220fd391fe3b33552ac6ed52763f50b0c2f93d9532" + }, + "research/e8-bit-p111-tuned/data/selection9-p111.json": { + "git_blob": "e69ea66a3add357f570fc5552ab6368b3c8f9bb2", + "sha256": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1" + }, + "research/e8-bit-p111-tuned/tune/EXPECTED.json": { + "git_blob": "e293ddc557742637f9f679f083a1a282d87b1b13", + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/audit_hosted_k.py": { + "git_blob": "8864ca9b942a3507171edca0cf6cbaaf10fcf434", + "sha256": "57e558c80a2fea6e291587b04afd76dfaee3550729997798b61f33daf90b8ec9" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": { + "git_blob": "3df12bd632f1fdba825ced57110a1fee82eb2857", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py": { + "git_blob": "68b536daa9e6546c0aa046934bf840aaa3c3fde3", + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + "research/native-complex-moment552/engines/base_two_moment.py": { + "git_blob": "14a90fa0e788217856f070382c9e61bd7c603c61", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + "research/native-complex-moment552/engines/moment.py": { + "git_blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + "research/native-complex-moment552/engines/outer.py": { + "git_blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + } + }, + "vendored": { + "vendor/pr1043/CERTIFICATE.json": { + "git_blob": "56400920050c523e6e399f2455137b36c35cf528", + "origin": "PR1043 (Ali Romman, @aliromman) head e309e17f83f5759b1ea1fa24a76f24838784cb4d, research/bit-boundary-persistence/CERTIFICATE.json", + "sha256": "32c6cd6103006d627909cabdaf5083238c661a6582016a8b21075bd01c892eff" + } + } + }, + "negative_controls": [ + { + "name": "vendored_pr1043_certificate_tampered", + "reason": "Fail: sha256 pin: vendor/pr1043/CERTIFICATE.json", + "rejected": true + }, + { + "name": "pr1023_width8_optimality_hardcoded_45_rejects_R438", + "reason": "ValueError: slack per replica", + "rejected": true + }, + { + "name": "dp_with_move_42_4_dropped_vs_exhaustive", + "reason": "Fail: exhaustive enumeration disagrees with the DP (values)", + "rejected": true + }, + { + "name": "runner_up_claimed_optimal", + "reason": "Fail: claimed optimum not certified", + "rejected": true + }, + { + "name": "pr1043_inplace_layout_claimed_optimal", + "reason": "Fail: claimed optimum not certified", + "rejected": true + }, + { + "name": "optimum_profile_with_partial_slot_dropped", + "reason": "Fail: hosted rank mass (bad)", + "rejected": true + }, + { + "name": "endpoint_plus_1e-24_accepted_a", + "reason": "Fail: moment at c + 1e-24 is not below one", + "rejected": true + }, + { + "name": "endpoint_plus_1e-24_accepted_b", + "reason": "Fail: moment at c + 1e-24 is not below one", + "rejected": true + }, + { + "name": "window_child4_tightened_to_stages_0_1", + "reason": "Fail: infeasible: Hall violated by children [4]", + "rejected": true + }, + { + "name": "window_child6_tightened_to_stages_7_8", + "reason": "Fail: infeasible: Hall violated by children [6]", + "rejected": true + }, + { + "name": "r439_supply_into_r438_optimum", + "reason": "Fail: infeasible: 439 helpers per stage do not fit the R438 optimum", + "rejected": true + }, + { + "name": "placement_stage_outside_window/seed14", + "reason": "Reject: outside untouched window", + "rejected": true + }, + { + "name": "placement_stage_outside_window/independent", + "reason": "Fail: stage outside window", + "rejected": true + }, + { + "name": "placement_cell_collision/seed14", + "reason": "Reject: coordinate collision", + "rejected": true + }, + { + "name": "placement_cell_collision/independent", + "reason": "Fail: cell collision", + "rejected": true + }, + { + "name": "placement_duplicate_helper/seed14", + "reason": "Reject: duplicate helper", + "rejected": true + }, + { + "name": "placement_duplicate_helper/independent", + "reason": "Fail: duplicate (stage, helper)", + "rejected": true + }, + { + "name": "placement_missing_helper/seed14", + "reason": "Reject: missing helper", + "rejected": true + }, + { + "name": "placement_missing_helper/independent", + "reason": "Fail: missing (stage, helper)", + "rejected": true + }, + { + "name": "placement_slot_extent/seed14", + "reason": "Reject: slot extent", + "rejected": true + }, + { + "name": "placement_slot_extent/independent", + "reason": "Fail: slot extent", + "rejected": true + }, + { + "name": "placement_helper_out_of_domain/seed14", + "reason": "Reject: owner domain", + "rejected": true + }, + { + "name": "placement_helper_out_of_domain/independent", + "reason": "Fail: index domain", + "rejected": true + }, + { + "name": "placement_width7_residual/seed14", + "reason": "Reject: helper residual width", + "rejected": true + }, + { + "name": "placement_width7_residual/independent", + "reason": "Fail: residual width", + "rejected": true + }, + { + "name": "placement_host_pair_active/seed14", + "reason": "Reject: host is active data", + "rejected": true + }, + { + "name": "placement_host_pair_active/independent", + "reason": "Fail: host pair active at stage", + "rejected": true + }, + { + "name": "placement_audited_as_R439/seed14", + "reason": "Reject: missing helper", + "rejected": true + }, + { + "name": "placement_audited_as_R439/independent", + "reason": "Fail: missing (stage, helper)", + "rejected": true + } + ], + "placement": { + "audits": "seed14 placement_audit, independent audit_slots, seed14 owners_for_replicas", + "builders_agree": "seed14 allocate == PR442 hosting_core.expand", + "hosted_residual_roles": 126144, + "idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "occurrences_per_replica": 3942, + "selection": { + "patterns": [ + [ + 0, + [ + 8 + ], + 222 + ], + [ + 1, + [], + 222 + ], + [ + 2, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 3, + [], + 222 + ], + [ + 4, + [ + 8, + 8, + 8, + 8, + 8 + ], + 222 + ], + [ + 5, + [], + 222 + ], + [ + 6, + [], + 10 + ], + [ + 6, + [ + 8 + ], + 1 + ], + [ + 6, + [ + 8, + 8, + 8, + 8, + 8 + ], + 211 + ], + [ + 7, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 8, + [ + 8 + ], + 222 + ] + ], + "stages": [ + [ + 0, + 8, + 0, + 222 + ], + [ + 2, + 8, + 0, + 216 + ], + [ + 2, + 8, + 1, + 438 + ], + [ + 2, + 8, + 2, + 12 + ], + [ + 4, + 8, + 2, + 426 + ], + [ + 4, + 8, + 3, + 438 + ], + [ + 4, + 8, + 4, + 246 + ], + [ + 6, + 8, + 4, + 192 + ], + [ + 6, + 8, + 5, + 438 + ], + [ + 6, + 8, + 6, + 426 + ], + [ + 7, + 8, + 6, + 12 + ], + [ + 7, + 8, + 7, + 438 + ], + [ + 7, + 8, + 8, + 216 + ], + [ + 8, + 8, + 8, + 222 + ] + ] + }, + "slot_list_sha256": "1ef76bb87f1cfac7b4281c308bd71064c1fb1b6b4b267cfe9f3290212a5de11e", + "split": "all 10 idle 42-copies and the one-residual copy in child 6" + }, + "scope": "bit headroom only; no new kappa; the selected record is complex-bound; every R438 row is conditional on PR1043 (open, not admitted); row (b) also on the transported word of verify_transport.py", + "slots_per_replica": { + "14": 444, + "28": 444, + "42": 444, + "7": 666 + }, + "status": "PASS_R438_WINDOW_REHOST", + "width8_units_per_replica": { + "capacity": 3996, + "slack_R438": 54, + "slack_R439": 45 + }, + "windows": { + "0": { + "capacity": 14, + "pair": 1, + "stages": [ + 0, + 1 + ] + }, + "1": { + "capacity": 7, + "pair": 1, + "stages": [ + 2 + ] + }, + "2": { + "capacity": 28, + "pair": 2, + "stages": [ + 0, + 1, + 2, + 3 + ] + }, + "3": { + "capacity": 7, + "pair": 2, + "stages": [ + 4 + ] + }, + "4": { + "capacity": 42, + "pair": 3, + "stages": [ + 0, + 1, + 2, + 3, + 4, + 5 + ] + }, + "5": { + "capacity": 7, + "pair": 3, + "stages": [ + 6 + ] + }, + "6": { + "capacity": 42, + "pair": 0, + "stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "7": { + "capacity": 28, + "pair": 1, + "stages": [ + 5, + 6, + 7, + 8 + ] + }, + "8": { + "capacity": 14, + "pair": 2, + "stages": [ + 7, + 8 + ] + } + }, + "windows_feasibility": { + "configs_checked": 22, + "feasible": 22, + "note": "x4 idle 42-copies in child 4, 10-x4 in child 6, one-residual copy in child 4 or 6; children 0,2,7,8 full; capacity-7 children host nothing" + } +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz b/research/r429-controller-accounting/frozen/upstream/research/bit-r438-transport-rehost/words/r438-t154.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..e12a566658a4b2c8b6ae0ecc34fd41290f68f5e8 GIT binary patch literal 42305 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%0D#o{m4v0S^lXMc!B^5s|rQj}G= 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 literal 0 HcmV?d00001 diff --git a/research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py new file mode 100644 index 0000000000..91594e0223 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/code/nine/geometry.py @@ -0,0 +1,121 @@ +"""Exact compressed nine-stage E8 bit geometry; no external research fetches. + +Prepared by Zhihao Chen with OpenAI Codex assistance, Apache-2.0. +Uses the E8 root data and port-reflection construction credited to PR #370. +""" +import argparse, gzip, hashlib, json, time +from pathlib import Path +import sympy as S + +def dump(p, x): p.write_text(json.dumps(x,indent=2,default=str)+'\n') +def digest(p): return hashlib.sha256(p.read_bytes()).hexdigest() + +def factor(a): + """Exact elementary factorization, reconstructed from the identity.""" + n=a.rows; z=a.copy(); ops=[] + for j in range(n): + p=next(i for i in range(j,n) if z[i,j]) + if p!=j: z.row_swap(p,j); ops.append(['swap',p,j,None]) + if z[j,j]!=1: + c=1/z[j,j]; z[j,:]=c*z[j,:]; ops.append(['scale',j,None,c]) + for i in range(n): + if i!=j and z[i,j]: + c=-z[i,j]; z[i,:]=z[i,:]+c*z[j,:]; ops.append(['add',i,j,c]) + assert z==S.eye(n) + def replay(skip=-1): + z=S.eye(n) + for k in reversed(range(len(ops))): + if k==skip: continue + typ,i,j,c=ops[k] + if typ=='swap': z.row_swap(i,j) + elif typ=='scale': z[i,:]=z[i,:]/c + else: z[i,:]=z[i,:]-c*z[j,:] + return z + assert replay()==a + assert ops and replay(0)!=a + return [[t,i,j,None if c is None else str(c)] for t,i,j,c in ops] + +def main(): + ap=argparse.ArgumentParser(); ap.add_argument('--source',type=Path,required=True) + ap.add_argument('--out',type=Path,required=True); a=ap.parse_args(); t0=time.monotonic() + a.out.mkdir(parents=True,exist_ok=True) + p=a.source/'data/bit/bitE8-r865.json.gz'; w=json.loads(gzip.decompress(p.read_bytes())) + assert (w['h'],w['v'],w['R'],w['form'])==(8,120,865,'/2') + lines=[S.Matrix(x) for x in w['lines']]; I=S.eye(8); Z=S.zeros(8) + assert lines[0]==S.Matrix([2,0,0,0,0,0,0,0]) + ip=lambda u,v:(u.T*v)[0]/2 + gs={0:I}; todo=[0] + while todo: + more=[] + for i in todo: + for j in range(120): + if j in gs or abs(ip(lines[i],lines[j]))!=1: continue + d=lines[i]-lines[j] if ip(lines[i],lines[j])==1 else lines[i]+lines[j] + r=I-d*d.T/(d.T*d)[0]*2 + gs[j]=r*gs[i]; more.append(j) + todo=more + assert len(gs)==120 + recipes=[]; denoms=set(); max_factors=0 + for t,q in enumerate(lines): + g=gs[t]; assert g.T*g==I and g*lines[0] in (q,-q) + P=q*q.T/4; K=I-P; A=g[:,1:] + assert A.T*A==S.eye(7) and A*A.T==K and P*A==S.zeros(8,7) + rho=P.row_join(A).col_join(A.T.row_join(S.zeros(7))) + assert rho.T==rho and rho*rho==S.eye(15) + expected={'P':S.diag(I,S.zeros(7)), 'H':S.eye(15), + '0':S.diag(K,S.zeros(7)), 'K':S.diag(K,S.eye(7))} + for name,U in [('P',P),('H',I),('0',Z),('K',K)]: + assert rho*S.diag(U,S.eye(7))*rho==expected[name] + # Exact bit address operators D_U: head/tail exchange on U. + # Unlike complex C_U, they carry no omitted scalar/translation phase. + def D(U): return (I-U).row_join(U).col_join(U.row_join(I-U)) + assert D(I)*D(P)==D(K) and D(P)*D(P)==S.eye(16) + ops=factor(rho); max_factors=max(max_factors,len(ops)) + for typ,i,j,c in ops: + if c is not None: denoms.add(int(S.Rational(c).q)) + # Compact exact global matrices: these 15 axes are the first eight + # local coordinates and exterior block s. All other axes are fixed. + routes=[dict(stage=0,axes=list(range(8)),identity=True)] + for s in range(1,9): + axes=list(range(8))+list(range(8+7*(s-1),8+7*s)) + assert len(set(axes))==15 and max(axes)<64 + routes.append(dict(stage=s,axes=axes,elementary_inverse_replay=ops)) + recipes.append(dict(port=t,q=list(map(int,q)),complement_columns=[[str(x) for x in row] for row in A.tolist()], + rho15=[[str(x) for x in row] for row in rho.tolist()],routes=routes)) + if t%30==0: print('compressed geometry',t+1,flush=True) + # Exact nested data levels: local I (or K_q) plus s exterior rank-7 + # blocks. Width 64=8+8*7; each bridge sees identical complete operators. + idle=[] + for j in range(1,4): + idle += [dict(pair=j,source_level=-1,target_level=2*j-1,rank=14*j,phase='before_positive_bridge'), + dict(pair=j,source_level=2*j-1,target_level=2*j,rank=7,phase='before_negative_bridge')] + for j in range(4): + idle.append(dict(pair=j,source_level=2*j+2,target_level=8,rank=14*(3-j),phase='terminal')) + assert sum(z['rank'] for z in idle)==189 + # Whole h=8 residual blocks are mutually perpendicular and fill Q^64. + slots=[list(range(8*s,8*(s+1))) for s in range(8)] + assert sorted(sum(slots,[]))==list(range(64)) + perms=[] + for s in range(8): + perm=list(range(64)) + if s: + for j in range(8): perm[j],perm[8*s+j]=perm[8*s+j],perm[j] + assert [perm[perm[j]] for j in range(64)]==list(range(64)) + assert sorted(perm)==list(range(64)) and [perm[j] for j in range(8)]==slots[s] + perms.append(perm) + assert len({tuple(p) for p in perms})==8 + assert set(sum(slots[:7]+[slots[6]],[]))!=set(range(64)) + out=dict(status='PASS_COMPRESSED_NINE_BIT_GEOMETRY_AND_BANK_BLOCKS',h=8,m=64,stages=9, + word_sha256=digest(p),ports=recipes,idle_per_port_and_data_member=idle, + local_window='U direct_sum E_s, with E_s the first s exterior coordinate 7-blocks', + ambient_form='I_64/2',bank_slots=slots,bank_permutations=perms, + route_checks=1080,exact_bit_endpoint_operator_checks=240, + max_route_factors=max_factors,route_denominators=sorted(denoms), + bad_prime_factors=sorted({int(q) for d in denoms for q in S.factorint(d)}), + missing_route_factor_controls=120,duplicate_bank_slot_rejected=True, + scope='All port isometries, stage boundary identities, nested idle ranks, exact bit endpoint operators and bank coordinate slots. Full local-word scalar and chronological lowering are checked separately.', + seconds=time.monotonic()-t0) + dump(a.out/'GEOMETRY.json',out) + print(json.dumps({k:v for k,v in out.items() if k not in ('ports','bank_permutations','idle_per_port_and_data_member')}),flush=True) + +if __name__=='__main__': main() diff --git a/research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8bec1751f7e33c3a1e4673ef5dbc34d6f205321e GIT binary patch literal 33865 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 F0sxs54@Cd~ literal 0 HcmV?d00001 diff --git a/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json new file mode 100644 index 0000000000..e69ea66a3a --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/data/selection9-p111.json @@ -0,0 +1,167 @@ +{ + "bit": { + "patterns": [ + [ + 0, + [ + 8 + ], + 222 + ], + [ + 1, + [], + 222 + ], + [ + 2, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 3, + [], + 222 + ], + [ + 4, + [ + 8, + 8, + 8, + 8, + 8 + ], + 222 + ], + [ + 5, + [], + 222 + ], + [ + 6, + [], + 9 + ], + [ + 6, + [ + 8, + 8, + 8, + 8, + 8 + ], + 213 + ], + [ + 7, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 8, + [ + 8 + ], + 222 + ] + ], + "proxy_saving": 13174.7497998684, + "stages": [ + [ + 0, + 8, + 1, + 222 + ], + [ + 2, + 8, + 0, + 439 + ], + [ + 2, + 8, + 1, + 217 + ], + [ + 2, + 8, + 2, + 10 + ], + [ + 4, + 8, + 2, + 429 + ], + [ + 4, + 8, + 4, + 252 + ], + [ + 4, + 8, + 5, + 429 + ], + [ + 6, + 8, + 3, + 439 + ], + [ + 6, + 8, + 4, + 187 + ], + [ + 6, + 8, + 7, + 439 + ], + [ + 7, + 8, + 5, + 10 + ], + [ + 7, + 8, + 6, + 439 + ], + [ + 7, + 8, + 8, + 217 + ], + [ + 8, + 8, + 8, + 222 + ] + ] + } +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json new file mode 100644 index 0000000000..e293ddc557 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/tune/EXPECTED.json @@ -0,0 +1,222 @@ +{ + "word": { + "file": "tune/bitE8mut-p111-tuned.json.gz", + "file_sha256": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f", + "content_sha256": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b", + "v": 111, + "R": 439, + "punctured": [ + 10, + 15, + 51, + 53, + 56, + 66, + 72, + 89, + 111 + ], + "retained_totals": 9, + "copy_ranks": [ + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7 + ], + "decoder_constant": 63, + "gates": { + "D": 111, + "A": 2075, + "B": 712, + "C": 2574 + }, + "local_histogram": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "legality": { + "records": 27234, + "common_frame_ADDs": 24305, + "rank_mass": 5129 + }, + "five_stage_columns": 883, + "five_stage_payload_bits": 93, + "nine_stage_columns": 1327, + "nine_stage_payload_bits": 93, + "eleven_stage_columns": 1549, + "eleven_stage_payload_bits": 93, + "base_content_sha256": "d0df3c89ae84989f4045ba1681a5e2e9fcdfa38ed0301c8abf5185537155cbe3" + }, + "interface": { + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "conclusion": { + "U_block_form": true, + "J_identity": true, + "K_equals_D": true, + "C_is_U_inverse": true + }, + "interleaving": { + "z_gates_A": 2075, + "source_writes_A": 0, + "z_gates_B": 499, + "source_writes_B": 483, + "helper_writes_B": 16, + "sources_rewritten_B": 108, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "target_reads_of_targets": 0, + "cleanup_gates": 2574 + } + }, + "nine": { + "pipeline": "PR #510 (PR #463 nine-stage template, 32 replicas, PR #442 hosting, PR #493 outer assembly), parameterised for v <= 120 by code/adapt9p.py", + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "bit_lower_decimal": "0.001733427039589844234749", + "profile": { + "1": 381024, + "2": 400416, + "3": 22752, + "4": 26880, + "5": 29376, + "6": 17376, + "7": 26784, + "42": 288 + }, + "bit": { + "live": 28416, + "physical": 28425, + "maxchild": 42, + "rank_mass": 1808352, + "hosted_residuals": 126432, + "bank_assignments": 0, + "prefix_bits": 177, + "charged_prefix_bits": 192, + "coefficient_bits": 177, + "two_level_coefficient_bits": 393, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "halving_depth": 2 + }, + "kappa": { + "pr548": { + "kappa": "49718254847979/31250000000000000", + "kappa_decimal": "0.001590984155135328", + "complex_lower": "796759709641153381751/500000000000000000000000", + "binding_component": "complex" + }, + "pr544": { + "kappa": "397677800014309/250000000000000000", + "kappa_decimal": "0.001590711200057236", + "complex_lower": "31864911873350496687/20000000000000000000000", + "binding_component": "complex" + }, + "pr535": { + "kappa": "793733736881443/500000000000000000", + "kappa_decimal": "0.001587467473762886", + "complex_lower": "1589991533606044174031/1000000000000000000000000", + "binding_component": "complex" + }, + "pr531": { + "kappa": "1517760977820331/1000000000000000000", + "kappa_decimal": "0.001517760977820331", + "complex_lower": "304013615566499291631/200000000000000000000000", + "binding_component": "complex" + } + } + }, + "eleven": { + "pipeline": "PR #493 (PR #445 geometry, PR #472 emitter, audit and invoice, PR #442 hosting), parameterised by PR #545's code/adapt.py", + "bit_lower": "855475950388791987811/500000000000000000000000", + "bit_lower_decimal": "0.001710951900777583975622", + "profile": { + "1": 116424, + "2": 121648, + "3": 6952, + "4": 7424, + "5": 8976, + "6": 4520, + "7": 8776, + "56": 2600 + }, + "bit": { + "live": 8880, + "physical": 8889, + "maxchild": 56, + "rank_mass": 689304, + "hosted_residuals": 38632, + "prefix_bits": 4304, + "charged_prefix_bits": 4352, + "coefficient_bits": 4304, + "three_level_coefficient_bits": 12966, + "charged_three_level_coefficient_bits": 12992, + "row_coefficient": 19431, + "halving_depth": 3 + }, + "emitted_program_sha256": "793b6f40c9aa4b8db57fec0ac0973e16884dae28707e482ee8f7a2349a5d5a4b", + "kappa": { + "pr548": { + "kappa": "49718254847979/31250000000000000", + "kappa_decimal": "0.001590984155135328", + "complex_lower": "796759709641153381751/500000000000000000000000", + "binding_component": "complex" + }, + "pr544": { + "kappa": "397677800014309/250000000000000000", + "kappa_decimal": "0.001590711200057236", + "complex_lower": "31864911873350496687/20000000000000000000000", + "binding_component": "complex" + }, + "pr535": { + "kappa": "793733736881443/500000000000000000", + "kappa_decimal": "0.001587467473762886", + "complex_lower": "1589991533606044174031/1000000000000000000000000", + "binding_component": "complex" + }, + "pr531": { + "kappa": "1517760977820331/1000000000000000000", + "kappa_decimal": "0.001517760977820331", + "complex_lower": "304013615566499291631/200000000000000000000000", + "binding_component": "complex" + } + } + }, + "base": { + "nine_bit_lower": "1733052823330162099157/1000000000000000000000000", + "nine_bit_lower_decimal": "0.001733052823330162099157", + "eleven_bit_lower": "427652201524503168379/250000000000000000000000", + "eleven_bit_lower_decimal": "0.001710608806098012673516", + "note": "PR #555's EXPECTED.json (untuned word); the tune/ pipeline is the same, with the same frozen hosting selections" + } +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py new file mode 100644 index 0000000000..3df12bd632 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py @@ -0,0 +1,264 @@ +# Generalised from PR #443's global_kernel.py to an arbitrary odd stage count S = 2K+1 (compressed window m = 1+7S) +# by DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code. At the defaults (S = 9, 32 replicas) the emitted +# GLOBAL-TEMPLATE.json.gz and GLOBAL.json equal PR #443's (GLOBAL.json except wall-clock seconds). +# Kernel integration of PR436/PR386 by chafreaky, with OpenAI Codex assistance. +# Original copyright and attribution retained below. This variant uses explicit +# residual isometries and mixed-width banks; the original all-zero-start +# requirement is replaced by the verified kernel entrance contract. +"""Source-bound compressed S-stage (S = 2K+1 odd, default 9) bit template with independent replicas. +PR386 global identity and PR436 generalization by Zhihao Chen and eumemic, +with their disclosed OpenAI Codex and Anthropic Claude assistance, Apache-2.0. +PR439 explicit residual routes and this replication extension by chafreaky, +with OpenAI Codex assistance. All owner assignments and emitted calls are checked. +Historical PR386 regression is performed by the unchanged parent wrapper. +""" +import argparse, gzip, hashlib, json, struct, time +from collections import Counter +from pathlib import Path +import os, sys +sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../e8-r740-replica32/code')) +from bank_routes_k import placement, validate_isometries +from config import REPLICAS + +H,L,K,T,M=8,9,4,REPLICAS,64 # overwritten in main() from --stages / --replicas +NAMES={5:'FIVE',7:'SEVEN',9:'NINE',11:'ELEVEN',13:'THIRTEEN'} +def sha(p): return hashlib.sha256(p.read_bytes()).hexdigest() +def write(p,x): p.write_text(json.dumps(x,indent=2)+'\n') + +def recipe(K): + out=[dict(kind='local',stage=0,pair=0,reverse=False)]; stage=1 + for j in range(K): + out.append(dict(kind='local',stage=stage,pair=j,reverse=True)); stage+=1 + if j=5 and a.stages%2==1; L=a.stages; K=(L-1)//2; T=a.replicas; M=1+7*L; NOBANK=a.no_banks + if L!=9: assert NOBANK, 'bank tiling is only emitted for the nine-stage layout; use --no-banks and host every residual' + DEFICIT=T*(2*K*120-9*H*L) + wp=a.word; w=json.loads(gzip.decompress(wp.read_bytes()) if wp.suffix=='.gz' else wp.read_bytes()) + V,R=w['v'],w['R']; LOCAL=2*V+R; DATA=2*K*V*T; LIVE=DATA+L*R + assert (w['h'],V,w['form'])==(8,120,'/2') + geo=json.loads((out/'GEOMETRY.json').read_text()) + assert geo['status']=='PASS_COMPRESSED_%s_BIT_GEOMETRY_AND_BANK_BLOCKS'%NAMES[L] and geo['stages']==L and geo['m']==M + # the port routes depend only on the labels: same 120 label vectors, in the same order + assert len(geo['ports'])==V and all(p['port']==t and p['q']==w['lines'][t] for t,p in enumerate(geo['ports'])) + rp=a.local_check/'records/249-records.bin'; raw=rp.read_bytes(); rec=list(struct.iter_unpack('<6i',raw)) + state=json.loads((a.local_check/'records/249-states.json').read_text()) + fs=json.loads((a.local_check/'records/frames.json').read_text())['frames'] + dims={int(f):z['dim'] for f,z in fs.items()} + lg=json.loads((a.local_check/'cout/legality.json').read_text()) + cc=json.loads((a.local_check/'cout/columns.json').read_text()) + assert lg['status'].startswith('PASS') and cc['status'].startswith('PASS') + assert (state['v'],state['n'])==(V,LOCAL) and lg['copies']==lg['erasures']==9 + ADDS=lg['common_frame_ADDs'] + assert cc['formal_columns_checked']==4*V+R and cc['local_scalar_additions']==ADDS + initial=[state['initial'][str(i)] for i in range(LOCAL)] + final=[state['final'][str(i)] for i in range(LOCAL)] + assert all(dims[final[i]]==H for i in range(2*V,LOCAL)) + widths=[H-dims[initial[i]] for i in range(2*V,LOCAL)] + ENT=sum(H-z for z in widths) + if NOBANK: place,NB=None,None; LIVE=DATA + else: + place,NB=placement(widths,T,M) + assert T%8==0 and T*(H*R-ENT)%M==0 and NB==T*(H*R-ENT)//M + LIVE=DATA+L*NB + isometries=json.loads(a.isometries.read_text()) + assert validate_isometries(isometries,w['frames'],w['lines'],dims)==set(initial[2*V:]) + streams={}; checks={}; localH=None + for reverse in (False,True): + cur=(final if reverse else initial)[:]+[-1]; val=[1<=0 + cur[x]=newf + if f: hist[f]+=1 + events.append([0,x,oldf,newf,f,int(reverse)]) + elif op==1: + assert cur[x]==cur[y]==f and x!=y and x helpers + for s, hs in helpers.items(): + for h, w in hs: pool[s, w].append(h) + for k in pool: pool[k].sort() + need = defaultdict(list) # (idx, width) -> stages multiset in deterministic order + for (idx, w, s), cnt in sorted(zs.items()): need[idx, w] += [s] * cnt + out = []; rem = {} + for idx in sorted(win): + pats = sorted([(pat, cnt) for (i, pat), cnt in ys.items() if i == idx], key=lambda t: (-sum(t[0]), t[0])) + copy = 0; ptr = Counter() + r = win[idx][1] + for pat, cnt in pats: + for _ in range(cnt): + off = 0 + for w in sorted(pat, reverse=True): + s = need[idx, w][ptr[idx, w]]; ptr[idx, w] += 1 + h = pool[s, w].pop(0) + out.append((idx, copy, off, w, s, h)); off += w + rem[idx, copy] = r - off; copy += 1 + while copy < V2: rem[idx, copy] = r; copy += 1 + return out, rem + +def save_selection(path, key, ys, zs, val): + """freeze the integer-programme choice (patterns per child, residual stages per child) for stdlib-only replay""" + import json + from pathlib import Path + p = Path(path); d = json.loads(p.read_text()) if p.exists() else {} + d[key] = dict(patterns=sorted([[i, list(pat), n] for (i, pat), n in ys.items()]), + stages=sorted([[i, w, s, n] for (i, w, s), n in zs.items()]), proxy_saving=val) + p.write_text(json.dumps(d, indent=1, sort_keys=True) + '\n') + +def load_selection(path, key): + import json + from pathlib import Path + d = json.loads(Path(path).read_text())[key] + ys = {(i, tuple(pat)): n for i, pat, n in d['patterns']} + zs = {(i, w, s): n for i, w, s, n in d['stages']} + return ys, zs, d['proxy_saving'] diff --git a/research/r429-controller-accounting/frozen/upstream/research/r438-native-rehost/CERTIFICATE.json b/research/r429-controller-accounting/frozen/upstream/research/r438-native-rehost/CERTIFICATE.json new file mode 100644 index 0000000000..674ef36f72 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/r438-native-rehost/CERTIFICATE.json @@ -0,0 +1,2122 @@ +{ + "base_commit": "389fa10d714f5b40afe624908e487eb5e424498d", + "controls": [ + { + "name": "omitted_candidate_cleanup", + "rejection": "Wrong arbitrary-dirty endpoint" + }, + { + "name": "omitted_candidate_dirty_compensation", + "rejection": "Wrong arbitrary-dirty endpoint" + }, + { + "name": "transport_retains_old_frame", + "rejection": "Frame descent" + }, + { + "name": "emitted_owner_wrong_port", + "rejection": "emitted owner family differs" + }, + { + "name": "emitted_owner_wrong_replica", + "rejection": "emitted owner family differs" + }, + { + "name": "emitted_owner_equal_width_wrong_slice", + "rejection": "emitted owner slice differs" + }, + { + "name": "emitted_rank34_omit", + "rejection": "emitted remainder factors differ" + }, + { + "name": "emitted_rank34_undercharge", + "rejection": "emitted remainder factors differ" + }, + { + "name": "emitted_local_instruction_omitted", + "rejection": "emitted local program changed" + } + ], + "emitted_binding": { + "local_program_sha256": "4c50687a587140a04187db68719499b3536e5c77df0f8178b108033fbc77f71b", + "owner_occurrences": 126144, + "owner_projector_sha256": "5226250b03a365832485f37f0a542dd830258a462f79a9ceab576ea297bcb0ac", + "paid_children": 904320, + "physical_deadlines": 71040, + "profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "4": 26880, + "5": 29376, + "6": 17376, + "7": 26496, + "34": 32, + "42": 320 + }, + "rank_mass": 1808352, + "remainder_factors_sha256": "1e0e20f68af797c3075096ae626b765797004c52eb9046b59cddb517c61a007c" + }, + "geometry": { + "full_generated_artifact": "geometry/GEOMETRY.json", + "h": 8, + "m": 64, + "missing_route_factor_controls": 111, + "ports": 111, + "route_checks": 999, + "semantic_sha256": "5b0e4cf8612a4c309a7d6ac5d305c2cacb173bd1dd3a8c18c7d5ee9e305f15a5", + "stages": 9 + }, + "local": { + "baseline": { + "adds": 24305, + "copies": 9, + "forward_bound": 49347, + "helpers": 439, + "local_bits": 93, + "nine_stage_bits": 177, + "profile": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "rank_mass": 5129, + "records": 27234, + "registers": 661, + "reverse_bound": 1113070, + "word_sha256": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b" + }, + "candidate": { + "adds": 24248, + "copies": 9, + "forward_bound": 49347, + "helpers": 438, + "local_bits": 93, + "nine_stage_bits": 177, + "profile": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 18 + }, + "rank_mass": 5121, + "records": 27175, + "registers": 660, + "reverse_bound": 1113070, + "word_sha256": "7aad486877b8c03866b8f1e6f909d12085da347d86aaae891f86f4e2dbc550d1" + } + }, + "no_new_kappa": true, + "normalization": "Original raw geometry/template hashes checked within each run; semantic_* hashes omit only geometry.seconds and rebind that geometry digest in the templates.", + "pipeline": { + "baseline": { + "columns": { + "11": { + "bridge_additions": 2664, + "copied_center_original_source_immutable": true, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "global_live_registers": 1549, + "independent_dirty_registers": 439, + "local_odd_scalar_additions": 24305, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "local_registers": 661, + "local_scalar_additions": 24305, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + }, + { + "omit_bridge": 6, + "rejected": true + }, + { + "omit_bridge": 7, + "rejected": true + }, + { + "omit_bridge": 8, + "rejected": true + }, + { + "omit_bridge": 9, + "rejected": true + }, + { + "omit_bridge": 10, + "rejected": true + }, + { + "omit_bridge": 11, + "rejected": true + }, + { + "omit_bridge": 12, + "rejected": true + }, + { + "omit_bridge": 13, + "rejected": true + }, + { + "omit_bridge": 14, + "rejected": true + }, + { + "omit_bridge": 15, + "rejected": true + }, + { + "omit_bridge": 16, + "rejected": true + }, + { + "omit_bridge": 17, + "rejected": true + }, + { + "omit_bridge": 18, + "rejected": true + }, + { + "omit_bridge": 19, + "rejected": true + }, + { + "omit_bridge": 20, + "rejected": true + }, + { + "omit_bridge": 21, + "rejected": true + }, + { + "omit_bridge": 22, + "rejected": true + }, + { + "omit_bridge": 23, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 45, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stage_additions": 267355, + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 10 + } + ], + "status": "PASS_NEW_COHORT249_ALL_BRIDGED_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + }, + "5": { + "bridge_additions": 666, + "copied_center_original_source_immutable": true, + "five_stage_additions": 121525, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "global_live_registers": 883, + "independent_dirty_registers": 439, + "local_odd_scalar_additions": 24305, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "local_registers": 661, + "local_scalar_additions": 24305, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 18, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + } + ], + "status": "PASS_NEW_COHORT249_ALL_FIVE_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + }, + "9": { + "bridge_additions": 1998, + "copied_center_original_source_immutable": true, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "global_live_registers": 1327, + "independent_dirty_registers": 439, + "local_odd_scalar_additions": 24305, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "local_registers": 661, + "local_scalar_additions": 24305, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + }, + { + "omit_bridge": 6, + "rejected": true + }, + { + "omit_bridge": 7, + "rejected": true + }, + { + "omit_bridge": 8, + "rejected": true + }, + { + "omit_bridge": 9, + "rejected": true + }, + { + "omit_bridge": 10, + "rejected": true + }, + { + "omit_bridge": 11, + "rejected": true + }, + { + "omit_bridge": 12, + "rejected": true + }, + { + "omit_bridge": 13, + "rejected": true + }, + { + "omit_bridge": 14, + "rejected": true + }, + { + "omit_bridge": 15, + "rejected": true + }, + { + "omit_bridge": 16, + "rejected": true + }, + { + "omit_bridge": 17, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 36, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stage_additions": 218745, + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 8 + } + ], + "status": "PASS_NEW_COHORT249_ALL_BRIDGED_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + } + }, + "hosted": { + "audit": { + "bank_assignments": 0, + "deficit": 10272, + "emitted_events": 7843392, + "emitted_program_sha256": "96c7ad2e744e9a503a4ef5ecd52d0f6a8899bdb5efac2e3aafa0db18adf99523", + "hosted_residuals": 126432, + "live": 28416, + "maxchild": 42, + "mutations_rejected": [ + "slot outside window", + "copy index outside family", + "negative slot offset", + "wrong residual width", + "duplicate helper", + "omitted helper", + "hosted owner in another replica or outside the data stock", + "hosted owner on a wrong data family", + "wrong call orientation", + "duplicate call", + "changed idle rank", + "understated live stock", + "missing remainder summary", + "stale stage count", + "hosted coordinate beyond the pending set", + "overlapping hosted coordinates" + ], + "physical": 28425, + "profile": { + "1": 381024, + "2": 400416, + "3": 22752, + "4": 26880, + "42": 288, + "5": 29376, + "6": 17376, + "7": 26784 + }, + "rank_mass": 1808352, + "semantic_template_sha256": "0ee55df480db549c55ad0452cf24d1789f7be0009af159b7f208dc2034f99e1c", + "status": "PASS_INDEPENDENT_REPLICATED_HOSTING_AUDIT" + }, + "invoice": { + "R": 439, + "bit": { + "bank_assignments": 0, + "charged_prefix_bits": 192, + "charged_two_level_coefficient_bits": 512, + "coefficient_bits": 177, + "halving_depth": 2, + "hosted_residuals": 126432, + "live": 28416, + "maxchild": 42, + "physical": 28425, + "prefix_bits": 177, + "rank_mass": 1808352, + "row_coefficient": 18355, + "two_level_coefficient_bits": 393 + }, + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "bit_lower_decimal": "0.001733427039589844234749", + "bit_profile": { + "1": 381024, + "2": 400416, + "3": 22752, + "4": 26880, + "42": 288, + "5": 29376, + "6": 17376, + "7": 26784 + }, + "emitted_program_sha256": "96c7ad2e744e9a503a4ef5ecd52d0f6a8899bdb5efac2e3aafa0db18adf99523", + "next_grid_point_rejected": "6933708158359376939/4000000000000000000000", + "replicas": 32, + "stages": 9, + "status": "PASS_NINE_STAGE_WHOLE_HOSTED_BIT_PRICE_AND_CITED_ASSEMBLY" + }, + "parent": { + "R": 439, + "all_scalar_columns_restored": true, + "bank_assignments": 126432, + "banks_per_stage": 1756, + "bridge_additions": 63936, + "charged_prefix_bits": 192, + "copy_erase_episodes": 2592, + "deficit": 10272, + "emitted_events": 7843392, + "emitted_program_sha256": "3663872061341889b43bd605d4e9a38072a842dab8505ed34ea5aeba3f5656d1", + "entrance_rank_total": 0, + "global_prefix_bits": 177, + "global_prefix_bound": "117742596540718658156527847560864213734191286190080000", + "h": 8, + "halving_depth": 2, + "halving_integer_inequality": [ + 4096, + 3528 + ], + "independent_unbanked_scalar_columns": 4839, + "live": 44220, + "local_additions": 24305, + "local_checks": { + "forward": { + "adds": 24305, + "all_columns": 661, + "cancellation_free_row_l1": 49347, + "copies": 9, + "profile": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "records": 27234, + "sha256": "a778a0300bbf4b07908ee24c0d271426ba6c70568e788af2f0ac8517897cb5b4" + }, + "reverse": { + "adds": 24305, + "all_columns": 661, + "cancellation_free_row_l1": 1113070, + "copies": 9, + "profile": { + "1": 1323, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 19 + }, + "records": 27234, + "sha256": "98d97804744d691548b4d54868a8a0e5f500c55ab32ac4be96f3ba30e6f5bef8" + } + }, + "local_invocations": 288, + "m": 64, + "maxchild": 42, + "omitted_bridge_shears_rejected": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ], + "padding_calls": 0, + "paid_calls": 904896, + "physical": 44229, + "profile": { + "1": 381024, + "14": 14208, + "2": 386496, + "28": 14208, + "3": 22752, + "4": 12672, + "42": 14208, + "5": 29376, + "6": 3168, + "7": 26784 + }, + "rank_mass": 2819808, + "replicas": 32, + "residual_bank_slots": true, + "scalar_stages": [ + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": false, + "stage": 0 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": true, + "stage": 1 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": false, + "stage": 2 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": true, + "stage": 3 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": false, + "stage": 4 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": true, + "stage": 5 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": false, + "stage": 6 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": true, + "stage": 7 + }, + { + "all_columns": 4839, + "helper_columns": 3951, + "reverse": false, + "stage": 8 + } + ], + "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", + "semantic_geometry_sha256": "5b0e4cf8612a4c309a7d6ac5d305c2cacb173bd1dd3a8c18c7d5ee9e305f15a5", + "semantic_template_sha256": "9f3d11b6f0912eaf65eba21ea738caed142e9e11e8f616d0fb0d086214027153", + "source_records_sha256": "ea44aa047a2a9cf034de8b56b2166c49cf2dbdf9cd9ed6a20299a4f2b05ef09a", + "status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", + "v": 111, + "word_sha256": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f" + }, + "parent_audit": { + "entrance_rank_total": 0, + "exact_bank_families": 15804, + "exact_nested_frame_pairs": 2386, + "exact_reflected_pairs": 2386, + "mutations_rejected": [ + "omit an idle child", + "omit a bridge", + "omit terminal exchange", + "remove a local invocation", + "understate live stock", + "omit a local paid move", + "wrong reflected copy charge", + "alter residual orthogonal basis", + "misstate replication count", + "misstate stage count", + "alias data across stages", + "delay an idle advance past its level", + "truncate the last idle advance", + "re-use a helper bank slot", + "wrong residual frame", + "alias data across replica groups", + "omit the fourth replica group" + ], + "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", + "profile": { + "1": 381024, + "14": 14208, + "2": 386496, + "28": 14208, + "3": 22752, + "4": 12672, + "42": 14208, + "5": 29376, + "6": 3168, + "7": 26784 + }, + "residual_isometries": 1, + "semantic_template_sha256": "9f3d11b6f0912eaf65eba21ea738caed142e9e11e8f616d0fb0d086214027153", + "source_frames": 636, + "status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT" + } + }, + "interface": { + "columns": 661, + "conclusion": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": true, + "U_block_form": true + }, + "copy_ranks": [ + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7 + ], + "gates": { + "A": 2075, + "B": 712, + "C": 2574, + "D": 111 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "interleaving": { + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "cleanup_gates": 2574, + "helper_writes_B": 16, + "source_writes_A": 0, + "source_writes_B": 483, + "sources_rewritten_B": 108, + "target_reads_of_targets": 0, + "z_gates_A": 2075, + "z_gates_B": 499 + }, + "punctured": 9, + "status": "PASS_EXACT_REPLAY_AND_INTERLEAVED_INTERFACE", + "totals_on_punctured_hyperplanes": true, + "v": 111 + }, + "legality": { + "all_final_frames_pass": true, + "common_frame_ADDs": 24305, + "containment_pairs_checked": 2386, + "copies": 9, + "donor_intersections": 0, + "erasures": 9, + "max_inherited_integer_abs": 2, + "nested_MOVEs": 2911, + "new_frame_ids_collision": false, + "nondegeneracy_checked_by_separate_exact_bank_audit": true, + "old_max_frame_id": 635, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 27234, + "scope": "Independent chronological geometry/copy/source-owner audit. F2 all-column replay is in the separately freshly compiled transform receipt; address transform theorem and bank completion remain separate.", + "selected_helpers": 0, + "selected_pairs": 0, + "source_owner_intersections": 0, + "status": "PASS_INDEPENDENT_COHORT_LEGALITY_SOURCE_OWNERS_AND_LIFECYCLE" + } + }, + "candidate": { + "columns": { + "11": { + "bridge_additions": 2664, + "copied_center_original_source_immutable": true, + "formal_columns_checked": 1548, + "fresh_center_copies": 99, + "global_live_registers": 1548, + "independent_dirty_registers": 438, + "local_odd_scalar_additions": 24248, + "local_raw_H": [ + [ + 1, + 1322 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 18 + ] + ], + "local_registers": 660, + "local_scalar_additions": 24248, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + }, + { + "omit_bridge": 6, + "rejected": true + }, + { + "omit_bridge": 7, + "rejected": true + }, + { + "omit_bridge": 8, + "rejected": true + }, + { + "omit_bridge": 9, + "rejected": true + }, + { + "omit_bridge": 10, + "rejected": true + }, + { + "omit_bridge": 11, + "rejected": true + }, + { + "omit_bridge": 12, + "rejected": true + }, + { + "omit_bridge": 13, + "rejected": true + }, + { + "omit_bridge": 14, + "rejected": true + }, + { + "omit_bridge": 15, + "rejected": true + }, + { + "omit_bridge": 16, + "rejected": true + }, + { + "omit_bridge": 17, + "rejected": true + }, + { + "omit_bridge": 18, + "rejected": true + }, + { + "omit_bridge": 19, + "rejected": true + }, + { + "omit_bridge": 20, + "rejected": true + }, + { + "omit_bridge": 21, + "rejected": true + }, + { + "omit_bridge": 22, + "rejected": true + }, + { + "omit_bridge": 23, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 45, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stage_additions": 266728, + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 10 + } + ], + "status": "PASS_NEW_COHORT249_ALL_BRIDGED_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + }, + "5": { + "bridge_additions": 666, + "copied_center_original_source_immutable": true, + "five_stage_additions": 121240, + "formal_columns_checked": 882, + "fresh_center_copies": 45, + "global_live_registers": 882, + "independent_dirty_registers": 438, + "local_odd_scalar_additions": 24248, + "local_raw_H": [ + [ + 1, + 1322 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 18 + ] + ], + "local_registers": 660, + "local_scalar_additions": 24248, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 18, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 4 + } + ], + "status": "PASS_NEW_COHORT249_ALL_FIVE_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + }, + "9": { + "bridge_additions": 1998, + "copied_center_original_source_immutable": true, + "formal_columns_checked": 1326, + "fresh_center_copies": 81, + "global_live_registers": 1326, + "independent_dirty_registers": 438, + "local_odd_scalar_additions": 24248, + "local_raw_H": [ + [ + 1, + 1322 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 18 + ] + ], + "local_registers": 660, + "local_scalar_additions": 24248, + "negative_controls": [ + { + "omit_bridge": 0, + "rejected": true + }, + { + "omit_bridge": 1, + "rejected": true + }, + { + "omit_bridge": 2, + "rejected": true + }, + { + "omit_bridge": 3, + "rejected": true + }, + { + "omit_bridge": 4, + "rejected": true + }, + { + "omit_bridge": 5, + "rejected": true + }, + { + "omit_bridge": 6, + "rejected": true + }, + { + "omit_bridge": 7, + "rejected": true + }, + { + "omit_bridge": 8, + "rejected": true + }, + { + "omit_bridge": 9, + "rejected": true + }, + { + "omit_bridge": 10, + "rejected": true + }, + { + "omit_bridge": 11, + "rejected": true + }, + { + "omit_bridge": 12, + "rejected": true + }, + { + "omit_bridge": 13, + "rejected": true + }, + { + "omit_bridge": 14, + "rejected": true + }, + { + "omit_bridge": 15, + "rejected": true + }, + { + "omit_bridge": 16, + "rejected": true + }, + { + "omit_bridge": 17, + "rejected": true + } + ], + "new_Q_categories": [ + 28, + 29 + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 36, + "scope": "All independent physical input columns over F2, including all arbitrary helper dirt, restored; external copied-center work closes to zero. New cohort scalar lift uses actual signed coefficients and computed cancellation-free bounds; unchanged source527 signed decoder remains separate defining evidence. Physical projector routing and paid rank/bank receipts are independently bound, not inferred from scalar check.", + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "signed_reverse_semantics": "Reverse ADD coefficient negated; reverse DISCARD is fresh COPY from recorded unchanged original center; reverse COPY is DISCARD. Each such block is inverse over every commutative coefficient ring, by elementary-shear induction.", + "stage_additions": 218232, + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24248, + "signed_inverse": false, + "stage": 8 + } + ], + "status": "PASS_NEW_COHORT249_ALL_BRIDGED_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" + } + }, + "hosted": { + "audit": { + "bank_assignments": 0, + "deficit": 10272, + "emitted_events": 7826400, + "emitted_program_sha256": "480f8b94801efb971aacf77bd20445a648f73f191b4f630ba193b5eae8f6aa14", + "hosted_residuals": 126144, + "live": 28416, + "maxchild": 42, + "mutations_rejected": [ + "slot outside window", + "copy index outside family", + "negative slot offset", + "wrong residual width", + "duplicate helper", + "omitted helper", + "hosted owner in another replica or outside the data stock", + "hosted owner on a wrong data family", + "wrong call orientation", + "duplicate call", + "changed idle rank", + "understated live stock", + "missing remainder summary", + "stale stage count", + "hosted coordinate beyond the pending set", + "overlapping hosted coordinates" + ], + "physical": 28425, + "profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "rank_mass": 1808352, + "semantic_template_sha256": "9f5c3c4b7ae658ee0d047b78ba93d26d731ffd4a70181c722241188197cb23bc", + "status": "PASS_INDEPENDENT_REPLICATED_HOSTING_AUDIT" + }, + "invoice": { + "R": 438, + "bit": { + "bank_assignments": 0, + "charged_prefix_bits": 192, + "charged_two_level_coefficient_bits": 512, + "coefficient_bits": 177, + "halving_depth": 2, + "hosted_residuals": 126144, + "live": 28416, + "maxchild": 42, + "physical": 28425, + "prefix_bits": 177, + "rank_mass": 1808352, + "row_coefficient": 18355, + "two_level_coefficient_bits": 393 + }, + "bit_lower": "69393850564807966059/40000000000000000000000", + "bit_lower_decimal": "0.001734846264120199151475", + "bit_profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "emitted_program_sha256": "480f8b94801efb971aacf77bd20445a648f73f191b4f630ba193b5eae8f6aa14", + "next_grid_point_rejected": "433711566030049787869/250000000000000000000000", + "replicas": 32, + "stages": 9, + "status": "PASS_NINE_STAGE_WHOLE_HOSTED_BIT_PRICE_AND_CITED_ASSEMBLY" + }, + "parent": { + "R": 438, + "all_scalar_columns_restored": true, + "bank_assignments": 126144, + "banks_per_stage": 1752, + "bridge_additions": 63936, + "charged_prefix_bits": 192, + "copy_erase_episodes": 2592, + "deficit": 10272, + "emitted_events": 7826400, + "emitted_program_sha256": "096ac9a98a6e0f941e61a04b7ac721b1006a2276eec35af13a6b45f1f68ad643", + "entrance_rank_total": 0, + "global_prefix_bits": 177, + "global_prefix_bound": "117742596540718658156527847560864213734191286190080000", + "h": 8, + "halving_depth": 2, + "halving_integer_inequality": [ + 4096, + 3528 + ], + "independent_unbanked_scalar_columns": 4830, + "live": 44184, + "local_additions": 24248, + "local_checks": { + "forward": { + "adds": 24248, + "all_columns": 660, + "cancellation_free_row_l1": 49347, + "copies": 9, + "profile": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 18 + }, + "records": 27175, + "sha256": "82853061c90de52f66ca3ea57545fe9d9f028e3a77b6437ea78d26e5b7617864" + }, + "reverse": { + "adds": 24248, + "all_columns": 660, + "cancellation_free_row_l1": 1113070, + "copies": 9, + "profile": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 18 + }, + "records": 27175, + "sha256": "9563caa686bbae6c1aa153dfd589a14ac5b09d5d46c2861f68c3799b1b12b2ae" + } + }, + "local_invocations": 288, + "m": 64, + "maxchild": 42, + "omitted_bridge_shears_rejected": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ], + "padding_calls": 0, + "paid_calls": 904320, + "physical": 44193, + "profile": { + "1": 380736, + "14": 14208, + "2": 386496, + "28": 14208, + "3": 22752, + "4": 12672, + "42": 14208, + "5": 29376, + "6": 3168, + "7": 26496 + }, + "rank_mass": 2817504, + "replicas": 32, + "residual_bank_slots": true, + "scalar_stages": [ + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": false, + "stage": 0 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": true, + "stage": 1 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": false, + "stage": 2 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": true, + "stage": 3 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": false, + "stage": 4 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": true, + "stage": 5 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": false, + "stage": 6 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": true, + "stage": 7 + }, + { + "all_columns": 4830, + "helper_columns": 3942, + "reverse": false, + "stage": 8 + } + ], + "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", + "semantic_geometry_sha256": "5b0e4cf8612a4c309a7d6ac5d305c2cacb173bd1dd3a8c18c7d5ee9e305f15a5", + "semantic_template_sha256": "902fe6565d76506a77392111ae8d928018b442a6dad29fc5401ed3579651ccaf", + "source_records_sha256": "4cc2e7032cf9897f93e45ff0c3944d1dd2d6506ad25e5a1140d4cbc91f6af6f7", + "status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", + "v": 111, + "word_sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + "parent_audit": { + "entrance_rank_total": 0, + "exact_bank_families": 15768, + "exact_nested_frame_pairs": 2385, + "exact_reflected_pairs": 2385, + "mutations_rejected": [ + "omit an idle child", + "omit a bridge", + "omit terminal exchange", + "remove a local invocation", + "understate live stock", + "omit a local paid move", + "wrong reflected copy charge", + "alter residual orthogonal basis", + "misstate replication count", + "misstate stage count", + "alias data across stages", + "delay an idle advance past its level", + "truncate the last idle advance", + "re-use a helper bank slot", + "wrong residual frame", + "alias data across replica groups", + "omit the fourth replica group" + ], + "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", + "profile": { + "1": 380736, + "14": 14208, + "2": 386496, + "28": 14208, + "3": 22752, + "4": 12672, + "42": 14208, + "5": 29376, + "6": 3168, + "7": 26496 + }, + "residual_isometries": 1, + "semantic_template_sha256": "902fe6565d76506a77392111ae8d928018b442a6dad29fc5401ed3579651ccaf", + "source_frames": 636, + "status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT" + } + }, + "interface": { + "columns": 660, + "conclusion": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": true, + "U_block_form": true + }, + "copy_ranks": [ + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7 + ], + "gates": { + "A": 2074, + "B": 712, + "C": 2573, + "D": 111 + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "interleaving": { + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "cleanup_gates": 2573, + "helper_writes_B": 16, + "source_writes_A": 0, + "source_writes_B": 483, + "sources_rewritten_B": 108, + "target_reads_of_targets": 0, + "z_gates_A": 2074, + "z_gates_B": 499 + }, + "punctured": 9, + "status": "PASS_EXACT_REPLAY_AND_INTERLEAVED_INTERFACE", + "totals_on_punctured_hyperplanes": true, + "v": 111 + }, + "legality": { + "all_final_frames_pass": true, + "common_frame_ADDs": 24248, + "containment_pairs_checked": 2385, + "copies": 9, + "donor_intersections": 0, + "erasures": 9, + "max_inherited_integer_abs": 2, + "nested_MOVEs": 2909, + "new_frame_ids_collision": false, + "nondegeneracy_checked_by_separate_exact_bank_audit": true, + "old_max_frame_id": 635, + "paid_histogram": [ + [ + 1, + 1322 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 18 + ] + ], + "rank_mass": 5121, + "records": 27175, + "scope": "Independent chronological geometry/copy/source-owner audit. F2 all-column replay is in the separately freshly compiled transform receipt; address transform theorem and bank completion remain separate.", + "selected_helpers": 0, + "selected_pairs": 0, + "source_owner_intersections": 0, + "status": "PASS_INDEPENDENT_COHORT_LEGALITY_SOURCE_OWNERS_AND_LIFECYCLE" + } + }, + "hosting_change": { + "hosted_helpers_per_replica": 3942, + "new_remainders": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "old_remainders": { + "2": 435, + "4": 444, + "42": 9, + "6": 444, + "7": 666 + }, + "returned_idle_rank_per_replica": 72 + } + }, + "projector_receipt": { + "census": { + "deadline_families": 71040, + "factorization_sha256": "7983d077edcf50376dc0f85ae48b1015a1b4e8077d0ba0770973a79451305798", + "families_with_multiple_children": 14208, + "idle_per_replica_including_zero": { + "0": 222, + "2": 433, + "4": 444, + "6": 444, + "7": 666, + "34": 1, + "42": 10 + }, + "occupied_families": 28096, + "owner_projector_sha256": "5226250b03a365832485f37f0a542dd830258a462f79a9ceab576ea297bcb0ac", + "physical_helpers": 126144, + "qperp_host_occurrences": 21312, + "slots": 3942 + }, + "children": 904320, + "control_witnesses": { + "replica_basis_witness": [ + 888, + 22 + ], + "wrong_exterior_axes": [ + 30, + 8 + ], + "wrong_port_basis_column": 0 + }, + "controls": [ + "source_byte_corruption", + "missing_helper", + "duplicate_helper", + "split_qperp_slice", + "stage_outside_window", + "omitted_rank34_remainder", + "duplicate_rank34_remainder", + "equal_rank_wrong_exterior", + "equal_rank_wrong_port_operator_witness", + "wrong_replica_dirty_basis_witness" + ], + "deficit": 10272, + "distinct_factorizations": 12, + "exact_basis_columns": 170496, + "global_profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "4": 26880, + "5": 29376, + "6": 17376, + "7": 26496, + "34": 32, + "42": 320 + }, + "local_profile": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 44, + "5": 102, + "6": 11, + "7": 18 + }, + "port_projectors": 111, + "predecessor_head": "13cd273dc13c98244b1f9bcf588b6e828cbc0347", + "rank_mass": 1808352, + "scope": "finite changed-placement projector binding; no new endpoint or supplier admission", + "selected_control_helper_occurrences": 126432, + "status": "PASS_R438_REHOST_PROJECTORS" + }, + "schema_version": 1, + "selected_context": { + "binding": "complex", + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "complex_lower": "67018507072324140917/40000000000000000000000", + "kappa": "836330098538459/500000000000000000" + }, + "status": "PASS_R438_NATIVE_REHOST" +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/SOURCES.json b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/SOURCES.json new file mode 100644 index 0000000000..39a5b1f2de --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/SOURCES.json @@ -0,0 +1,76 @@ +{ + "schema_version": 1, + "base_commit": "0fdd7d82de03e43c9e5a1000dfbcd380d1b687d2", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "ae6a99f28aa468649eb66a361e764d769363bf11", + "sha256": "10b9e340fd8e354a37a0c4813c90e5de1dd42044b5f6aca4a3fc5a42b685fa32" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "e8870e5917057d59b730eb14721a778639eca050", + "sha256": "d46eb6d5b3e279428753d770653663fbdf1063e55c255ea073d768f344927ef7" + }, + { + "path": "research/e8-bit-carrier-skeleton/code/nine/geometry.py", + "usage": "input", + "git_blob": "91594e0223e8fac49162b5aef834ffaa8e94a254", + "sha256": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca" + }, + { + "path": "research/e8-bit-p111-tuned/tune/EXPECTED.json", + "usage": "input", + "git_blob": "e293ddc557742637f9f679f083a1a282d87b1b13", + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + { + "path": "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "usage": "input", + "git_blob": "3df12bd632f1fdba825ced57110a1fee82eb2857", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + { + "path": "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py", + "usage": "input", + "git_blob": "68b536daa9e6546c0aa046934bf840aaa3c3fde3", + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + { + "path": "research/selected-bit-hosting-audit/README.md", + "usage": "input", + "git_blob": "145a92501fa73ccd507d9ddd2d6752fc78354764", + "sha256": "f77ad5fcbd30d4704e8a8161fd4ac280756a4a91b9fed41f50e8099ebabd65ac" + }, + { + "path": "research/e8-bit-p111-tuned/data/selection9-p111.json", + "usage": "input", + "git_blob": "e69ea66a3add357f570fc5552ab6368b3c8f9bb2", + "sha256": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1" + } + ], + "dependency_heads": { + "2423": "13cd273dc13c98244b1f9bcf588b6e828cbc0347", + "1043": "e309e17f83f5759b1ea1fa24a76f24838784cb4d", + "589": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "1307": "4cb255ef445e2abc3ff8845fa01210b974e2cf6c" + }, + "vendored_files": [ + { + "path": "sources/pr2423-rehost.json", + "origin_path": "research/bit-r438-transport-rehost/verify_rehost.receipt.json", + "commit": "13cd273dc13c98244b1f9bcf588b6e828cbc0347", + "sha256": "06fa9322508aba3d8a5dc6469151cdfaa906b60559582b49c8b024428b158021", + "git_blob": "c2fb443f44f2c7c420cd367ab5fa12644efe318a" + }, + { + "path": "sources/pr2423-word.json.gz", + "origin_path": "research/bit-r438-transport-rehost/words/r438-t154.json.gz", + "commit": "13cd273dc13c98244b1f9bcf588b6e828cbc0347", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "git_blob": "e12a566658a4b2c8b6ae0ecc34fd41290f68f5e8" + } + ] +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json new file mode 100644 index 0000000000..c2fb443f44 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-rehost.json @@ -0,0 +1,726 @@ +{ + "claims": { + "c_pr1043_inplace": "0.001734176288479865766692", + "c_pr589": "0.001733427039589844234749", + "c_window_optimum_local_a": "0.001734802047828389852783", + "c_window_optimum_local_b": "0.001734846264120199151475", + "certificate": "moment(opt, c+1e-24) > 1 by both engines; every other no-bank R438 slot layout has a certified larger idle sum at c+1e-24 with the same child count and local profile, hence a larger moment; so no layout in the slot model reaches c+1e-24", + "kappa": "unchanged; the bit side does not bind", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + } + }, + "dp": { + "S45_positive_control": { + "c_star": "0.001733427039589844234750", + "exhaustive_layouts_covered": 3160688, + "optimum": "9x(42,5)", + "optimum_idle_per_replica": { + "2": 435, + "4": 444, + "42": 9, + "6": 444, + "7": 666 + }, + "pr1023_width8_optimality": { + "margin_lower_bound": "0.0025867731454302305368", + "runner_up_per_unit": "capacity 42, u = 4" + }, + "runner_up": "8x(42,5) + 1x(14,1) + 1x(42,4)", + "runner_up_gap_moment": [ + "0.0000003322715521960530587537556494937834", + "0.0000003322715521960530587537556494937835" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.018883656854406087435093441072030701", + "0.018883656854406087435093441072030702" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 435, + "34": 1, + "4": 444, + "42": 8, + "6": 443, + "7": 666 + }, + "slack_units": 45, + "third": "8x(42,5) + 1x(28,1) + 1x(42,4)" + }, + "S54_at_c_a_next": { + "c_star": "0.001734802047828389852784", + "exhaustive_layouts_covered": 10556685, + "optimum": "10x(42,5) + 1x(42,4)", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "runner_up": "10x(42,5) + 1x(14,1) + 1x(28,3)", + "runner_up_gap_moment": [ + "0.0000001390420665268048703185105882609695", + "0.0000001390420665268048703185105882609696" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.007902038724851374389941593752047420", + "0.007902038724851374389941593752047421" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 434, + "28": 1, + "4": 443, + "42": 10, + "6": 443, + "7": 666 + }, + "slack_units": 54, + "third": "10x(42,5) + 1x(28,1) + 1x(28,3)" + }, + "S54_at_c_b_next": { + "c_star": "0.001734846264120199151476", + "exhaustive_layouts_covered": 10556685, + "optimum": "10x(42,5) + 1x(42,4)", + "optimum_idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "runner_up": "10x(42,5) + 1x(14,1) + 1x(28,3)", + "runner_up_gap_moment": [ + "0.0000001390456087131328961495995128689269", + "0.0000001390456087131328961495995128689270" + ], + "runner_up_gap_sum_g_per_replica": [ + "0.007902240034384768753974039515366855", + "0.007902240034384768753974039515366856" + ], + "runner_up_idle_per_replica": { + "14": 1, + "2": 434, + "28": 1, + "4": 443, + "42": 10, + "6": 443, + "7": 666 + }, + "slack_units": 54, + "third": "10x(42,5) + 1x(28,1) + 1x(28,3)" + }, + "pr1043_inplace_layout": { + "gap_moment_at_c_a_next": [ + "0.0000020441334240402170287422093671650918", + "0.0000020441334240402170287422093671650919" + ], + "gap_sum_g_per_replica_at_c_a_next": [ + "0.116172190755053614177477242754726502", + "0.116172190755053614177477242754726503" + ], + "idle_per_replica": { + "10": 5, + "12": 3, + "14": 1, + "2": 430, + "4": 441, + "42": 9, + "6": 443, + "7": 666 + }, + "layout": "9x(42,5) + 5x(42,1) + 3x(28,1) + 1x(14,1)" + } + }, + "endpoints": { + "pr1043_r438_inplace_local_a": { + "children": 904320, + "endpoint": "0.001734176288479865766692", + "profile": { + "1": 380448, + "10": 160, + "12": 96, + "14": 32, + "2": 400832, + "3": 22464, + "4": 26784, + "42": 288, + "5": 29376, + "6": 17344, + "7": 26496 + } + }, + "pr1043_r438_inplace_local_b": { + "endpoint": "0.001734220472884893243548", + "gain_vs_pr1043_percent": "0.00254786", + "gain_vs_pr589_percent": "0.04577252" + }, + "pr589_r439_selected": { + "endpoint": "0.001733427039589844234749", + "profile": { + "1": 381024, + "2": 400416, + "3": 22752, + "4": 26880, + "42": 288, + "5": 29376, + "6": 17376, + "7": 26784 + } + }, + "r438_runner_up_layout_local_a": { + "endpoint": "0.001734759469354358444809", + "gain_vs_pr1043_percent": "0.03362869", + "gain_vs_pr589_percent": "0.07686679", + "layout": "10x(42,5) + 1x(14,1) + 1x(28,3)" + }, + "r438_window_optimum_local_a": { + "children": 904320, + "endpoint": "0.001734802047828389852783", + "endpoint_fraction": "1734802047828389852783/1000000000000000000000000", + "gain_vs_pr1043_percent": "0.03608395", + "gain_vs_pr589_percent": "0.07932311", + "profile": { + "1": 380448, + "2": 400928, + "3": 22464, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "rank_mass": 1808352 + }, + "r438_window_optimum_local_b": { + "children": 904320, + "endpoint": "0.001734846264120199151475", + "endpoint_fraction": "69393850564807966059/40000000000000000000000", + "gain_vs_pr1043_percent": "0.03863365", + "gain_vs_pr589_percent": "0.08187391", + "profile": { + "1": 380736, + "2": 400352, + "3": 22752, + "34": 32, + "4": 26880, + "42": 320, + "5": 29376, + "6": 17376, + "7": 26496 + }, + "rank_mass": 1808352 + } + }, + "inputs": { + "main_tree": { + "research/bit-helper470-window-placement-seed14/verify.py": { + "git_blob": "c716a44e3b920f91918903d3480560e3882fbe80", + "sha256": "9cceeb610eccd6171585b056020ab6c44d7428de403a9ed035be1df9ae63f55b" + }, + "research/bit589-width-packing/SOURCES.json": { + "git_blob": "f6a97de32691a1d426ac4819aad24c0c8414d97e", + "sha256": "53fe98c8f01de7e32e3110e591d62e60292abb38cc11ecde4839f2eebd3b5fbc" + }, + "research/bit589-width-packing/packing.py": { + "git_blob": "a6079ee0dd4d8037be477a3c4497f472348bde07", + "sha256": "2bb5515807714807961289e4ee6958c3ad7e0c27bbec4d9212b138c662a6cc7b" + }, + "research/bit589-width7-windows-seed72/verify.py": { + "git_blob": "7f79a47146b150c9446e5f45e401d70b5cd12427", + "sha256": "a5341ed222af84b51cd18645dd6b23e4613c0275cbf2663c94b07a9f916e9e60" + }, + "research/bit589-width7-windows-seed72/windows.py": { + "git_blob": "4bb4f075ad5c1a49b4af310094bde6b2a4ea0c2e", + "sha256": "a24295a51333b168ab73215f8a4bbb5bf831be829f572d1cde15fc322049c635" + }, + "research/bit589-width7-windows-seed72/wopt.py": { + "git_blob": "4e0bd3704d1a2be460ed25b363e95918119e8d42", + "sha256": "a72daf1c7cff422543371a220fd391fe3b33552ac6ed52763f50b0c2f93d9532" + }, + "research/e8-bit-p111-tuned/data/selection9-p111.json": { + "git_blob": "e69ea66a3add357f570fc5552ab6368b3c8f9bb2", + "sha256": "4ab1ed4529683cd184987f8bc3031fb7408b9cd22c25ab9cf541a8aaf896eaf1" + }, + "research/e8-bit-p111-tuned/tune/EXPECTED.json": { + "git_blob": "e293ddc557742637f9f679f083a1a282d87b1b13", + "sha256": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/audit_hosted_k.py": { + "git_blob": "8864ca9b942a3507171edca0cf6cbaaf10fcf434", + "sha256": "57e558c80a2fea6e291587b04afd76dfaee3550729997798b61f33daf90b8ec9" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": { + "git_blob": "3df12bd632f1fdba825ced57110a1fee82eb2857", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/idle-axis-hosting/hosting_core.py": { + "git_blob": "68b536daa9e6546c0aa046934bf840aaa3c3fde3", + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + "research/native-complex-moment552/engines/base_two_moment.py": { + "git_blob": "14a90fa0e788217856f070382c9e61bd7c603c61", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + "research/native-complex-moment552/engines/moment.py": { + "git_blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + "research/native-complex-moment552/engines/outer.py": { + "git_blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + } + }, + "vendored": { + "vendor/pr1043/CERTIFICATE.json": { + "git_blob": "56400920050c523e6e399f2455137b36c35cf528", + "origin": "PR1043 (Ali Romman, @aliromman) head e309e17f83f5759b1ea1fa24a76f24838784cb4d, research/bit-boundary-persistence/CERTIFICATE.json", + "sha256": "32c6cd6103006d627909cabdaf5083238c661a6582016a8b21075bd01c892eff" + } + } + }, + "negative_controls": [ + { + "name": "vendored_pr1043_certificate_tampered", + "reason": "Fail: sha256 pin: vendor/pr1043/CERTIFICATE.json", + "rejected": true + }, + { + "name": "pr1023_width8_optimality_hardcoded_45_rejects_R438", + "reason": "ValueError: slack per replica", + "rejected": true + }, + { + "name": "dp_with_move_42_4_dropped_vs_exhaustive", + "reason": "Fail: exhaustive enumeration disagrees with the DP (values)", + "rejected": true + }, + { + "name": "runner_up_claimed_optimal", + "reason": "Fail: claimed optimum not certified", + "rejected": true + }, + { + "name": "pr1043_inplace_layout_claimed_optimal", + "reason": "Fail: claimed optimum not certified", + "rejected": true + }, + { + "name": "optimum_profile_with_partial_slot_dropped", + "reason": "Fail: hosted rank mass (bad)", + "rejected": true + }, + { + "name": "endpoint_plus_1e-24_accepted_a", + "reason": "Fail: moment at c + 1e-24 is not below one", + "rejected": true + }, + { + "name": "endpoint_plus_1e-24_accepted_b", + "reason": "Fail: moment at c + 1e-24 is not below one", + "rejected": true + }, + { + "name": "window_child4_tightened_to_stages_0_1", + "reason": "Fail: infeasible: Hall violated by children [4]", + "rejected": true + }, + { + "name": "window_child6_tightened_to_stages_7_8", + "reason": "Fail: infeasible: Hall violated by children [6]", + "rejected": true + }, + { + "name": "r439_supply_into_r438_optimum", + "reason": "Fail: infeasible: 439 helpers per stage do not fit the R438 optimum", + "rejected": true + }, + { + "name": "placement_stage_outside_window/seed14", + "reason": "Reject: outside untouched window", + "rejected": true + }, + { + "name": "placement_stage_outside_window/independent", + "reason": "Fail: stage outside window", + "rejected": true + }, + { + "name": "placement_cell_collision/seed14", + "reason": "Reject: coordinate collision", + "rejected": true + }, + { + "name": "placement_cell_collision/independent", + "reason": "Fail: cell collision", + "rejected": true + }, + { + "name": "placement_duplicate_helper/seed14", + "reason": "Reject: duplicate helper", + "rejected": true + }, + { + "name": "placement_duplicate_helper/independent", + "reason": "Fail: duplicate (stage, helper)", + "rejected": true + }, + { + "name": "placement_missing_helper/seed14", + "reason": "Reject: missing helper", + "rejected": true + }, + { + "name": "placement_missing_helper/independent", + "reason": "Fail: missing (stage, helper)", + "rejected": true + }, + { + "name": "placement_slot_extent/seed14", + "reason": "Reject: slot extent", + "rejected": true + }, + { + "name": "placement_slot_extent/independent", + "reason": "Fail: slot extent", + "rejected": true + }, + { + "name": "placement_helper_out_of_domain/seed14", + "reason": "Reject: owner domain", + "rejected": true + }, + { + "name": "placement_helper_out_of_domain/independent", + "reason": "Fail: index domain", + "rejected": true + }, + { + "name": "placement_width7_residual/seed14", + "reason": "Reject: helper residual width", + "rejected": true + }, + { + "name": "placement_width7_residual/independent", + "reason": "Fail: residual width", + "rejected": true + }, + { + "name": "placement_host_pair_active/seed14", + "reason": "Reject: host is active data", + "rejected": true + }, + { + "name": "placement_host_pair_active/independent", + "reason": "Fail: host pair active at stage", + "rejected": true + }, + { + "name": "placement_audited_as_R439/seed14", + "reason": "Reject: missing helper", + "rejected": true + }, + { + "name": "placement_audited_as_R439/independent", + "reason": "Fail: missing (stage, helper)", + "rejected": true + } + ], + "placement": { + "audits": "seed14 placement_audit, independent audit_slots, seed14 owners_for_replicas", + "builders_agree": "seed14 allocate == PR442 hosting_core.expand", + "hosted_residual_roles": 126144, + "idle_per_replica": { + "2": 433, + "34": 1, + "4": 444, + "42": 10, + "6": 444, + "7": 666 + }, + "occurrences_per_replica": 3942, + "selection": { + "patterns": [ + [ + 0, + [ + 8 + ], + 222 + ], + [ + 1, + [], + 222 + ], + [ + 2, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 3, + [], + 222 + ], + [ + 4, + [ + 8, + 8, + 8, + 8, + 8 + ], + 222 + ], + [ + 5, + [], + 222 + ], + [ + 6, + [], + 10 + ], + [ + 6, + [ + 8 + ], + 1 + ], + [ + 6, + [ + 8, + 8, + 8, + 8, + 8 + ], + 211 + ], + [ + 7, + [ + 8, + 8, + 8 + ], + 222 + ], + [ + 8, + [ + 8 + ], + 222 + ] + ], + "stages": [ + [ + 0, + 8, + 0, + 222 + ], + [ + 2, + 8, + 0, + 216 + ], + [ + 2, + 8, + 1, + 438 + ], + [ + 2, + 8, + 2, + 12 + ], + [ + 4, + 8, + 2, + 426 + ], + [ + 4, + 8, + 3, + 438 + ], + [ + 4, + 8, + 4, + 246 + ], + [ + 6, + 8, + 4, + 192 + ], + [ + 6, + 8, + 5, + 438 + ], + [ + 6, + 8, + 6, + 426 + ], + [ + 7, + 8, + 6, + 12 + ], + [ + 7, + 8, + 7, + 438 + ], + [ + 7, + 8, + 8, + 216 + ], + [ + 8, + 8, + 8, + 222 + ] + ] + }, + "slot_list_sha256": "1ef76bb87f1cfac7b4281c308bd71064c1fb1b6b4b267cfe9f3290212a5de11e", + "split": "all 10 idle 42-copies and the one-residual copy in child 6" + }, + "scope": "bit headroom only; no new kappa; the selected record is complex-bound; every R438 row is conditional on PR1043 (open, not admitted); row (b) also on the transported word of verify_transport.py", + "slots_per_replica": { + "14": 444, + "28": 444, + "42": 444, + "7": 666 + }, + "status": "PASS_R438_WINDOW_REHOST", + "width8_units_per_replica": { + "capacity": 3996, + "slack_R438": 54, + "slack_R439": 45 + }, + "windows": { + "0": { + "capacity": 14, + "pair": 1, + "stages": [ + 0, + 1 + ] + }, + "1": { + "capacity": 7, + "pair": 1, + "stages": [ + 2 + ] + }, + "2": { + "capacity": 28, + "pair": 2, + "stages": [ + 0, + 1, + 2, + 3 + ] + }, + "3": { + "capacity": 7, + "pair": 2, + "stages": [ + 4 + ] + }, + "4": { + "capacity": 42, + "pair": 3, + "stages": [ + 0, + 1, + 2, + 3, + 4, + 5 + ] + }, + "5": { + "capacity": 7, + "pair": 3, + "stages": [ + 6 + ] + }, + "6": { + "capacity": 42, + "pair": 0, + "stages": [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "7": { + "capacity": 28, + "pair": 1, + "stages": [ + 5, + 6, + 7, + 8 + ] + }, + "8": { + "capacity": 14, + "pair": 2, + "stages": [ + 7, + 8 + ] + } + }, + "windows_feasibility": { + "configs_checked": 22, + "feasible": 22, + "note": "x4 idle 42-copies in child 4, 10-x4 in child 6, one-residual copy in child 4 or 6; children 0,2,7,8 full; capacity-7 children host nothing" + } +} diff --git a/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/sources/pr2423-word.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..e12a566658a4b2c8b6ae0ecc34fd41290f68f5e8 GIT binary patch literal 42305 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%0D#o{m4v0S^lXMc!B^5s|rQj}G= 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 literal 0 HcmV?d00001 diff --git a/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/verify.py b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/verify.py new file mode 100644 index 0000000000..30b18ceaf5 --- /dev/null +++ b/research/r429-controller-accounting/frozen/upstream/research/r438-rehost-projectors/verify.py @@ -0,0 +1,447 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Bind PR2423's changed R438 placement to exact pending projectors. + +Prepared for commdata2338, with substantial OpenAI Codex assistance. +Projector algebra and geometry are credited to PR1307 and its predecessors. +This checker does not import a predecessor acceptance engine. +""" +import argparse +import ast +from collections import Counter, defaultdict +from fractions import Fraction as Q +import gzip +import hashlib +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +BIT = 'research/e8-bit-p111-tuned/' +BASE = BIT + 'vendor/pr510/e8-r480-nine-stage/vendor/' +CONTROLLER = BASE + 'e8-r715-eleven-stage-whole/code/global_k.py' +HOSTING = BASE + 'idle-axis-hosting/hosting_core.py' +GEOMETRY = 'research/e8-bit-carrier-skeleton/code/nine/geometry.py' +V, STAGES, REPLICAS, WIDTH = 111, 9, 32, 64 +LOW = 255 +QPERP = 254 + + +class Rejected(ValueError): + pass + + +def require(condition, message): + if not condition: + raise Rejected(message) + + +def canonical(obj): + return json.dumps(obj, sort_keys=True, separators=(',', ':')).encode() + + +def sha(raw): + return hashlib.sha256(raw).hexdigest() + + +def check_bytes(raw, pin): + require(sha(raw) == pin['sha256'], 'source SHA256: ' + pin['path']) + blob = hashlib.sha1(b'blob ' + str(len(raw)).encode() + b'\0' + raw).hexdigest() + require(blob == pin['git_blob'], 'source Git blob: ' + pin['path']) + + +def source_check(): + pins = json.loads((HERE / 'SOURCES.json').read_text()) + live = [p for p in pins['files'] if p['usage'] == 'input'] + for p in live: + check_bytes((ROOT / p['path']).read_bytes(), p) + for p in pins['vendored_files']: + check_bytes((HERE / p['path']).read_bytes(), p) + return pins + + +def function(path, name): + """Extract a pinned pure source function, never its module main/imports.""" + nodes = [n for n in ast.parse((ROOT / path).read_text()).body + if isinstance(n, ast.FunctionDef) and n.name == name] + require(len(nodes) == 1, 'unique source function') + ns = {'Counter': Counter, 'defaultdict': defaultdict} + exec(compile(ast.Module(body=nodes, type_ignores=[]), path, 'exec'), ns) + return ns[name] + + +def pending(a, b): + require(-1 <= a <= b <= 8, 'level range') + axes = range(1 if a == -1 else 8 + 7*a, 8 + 7*b) + return sum(1 << i for i in axes) + + +def chronology(): + levels = [-1]*4 + events, children = [], [] + + def advance(pair, target): + a = levels[pair] + child = {'kind': 'idle', 'idx': len(children), 'pair': pair, + 'source_level': a, 'target_level': target, + 'rank': 7*(target-a), 'mask': pending(a, target)} + children.append(child) + events.append(child) + levels[pair] = target + + for e in function(CONTROLLER, 'recipe')(4): + events.append(e) + if e['kind'] == 'local': + s, p = e['stage'], e['pair'] + require(levels[p] == s-1, 'local source level') + levels[p] = s + if 1 <= s <= 6: + advance((s+1)//2, s) + if s == 8: + for pair in range(4): + advance(pair, 8) + elif e['kind'] == 'bridge': + require(levels[e['src']] == levels[e['dst']], 'bridge levels') + else: + require(e['kind'] == 'exchange' and levels == [8]*4, 'final exchange') + # Compare the geometry producer's literal table, without importing sympy. + main = next(n for n in ast.parse((ROOT / GEOMETRY).read_text()).body + if isinstance(n, ast.FunctionDef) and n.name == 'main') + start = next(i for i, n in enumerate(main.body) if isinstance(n, ast.Assign) + and any(isinstance(t, ast.Name) and t.id == 'idle' for t in n.targets)) + nodes = main.body[start:start+3] + require(len(nodes) == 3 and all(isinstance(n, ast.For) for n in nodes[1:]), + 'geometry table syntax') + ns = {} + exec(compile(ast.Module(body=nodes, type_ignores=[]), GEOMETRY, 'exec'), ns) + fields = ('pair', 'source_level', 'target_level', 'rank') + require([[c[k] for k in fields] for c in children] == + [[c[k] for k in fields] for c in ns['idle']], 'geometry/controller binding') + require(len(children) == 10 and len(events) == 29, 'chronology size') + used = defaultdict(int) + for c in children: + require(c['mask'].bit_count() == c['rank'], 'pending rank') + require(not used[c['pair']] & c['mask'], 'source children disjoint') + used[c['pair']] |= c['mask'] + windows = {} + calls = {e['stage']: (i, e['pair']) for i, e in enumerate(events) if e['kind'] == 'local'} + for c in children: + end = events.index(c) + stages = [] + for stage, (begin, pair) in calls.items(): + if begin >= end or pair == c['pair']: + continue + touches = any((e['kind'] == 'local' and e['pair'] == c['pair']) or + (e['kind'] == 'bridge' and c['pair'] in (e['src'], e['dst'])) + for e in events[begin+1:end]) + if not touches: + stages.append(stage) + windows[c['idx']] = (c['pair'], c['rank'], frozenset(stages)) + return events, children, windows + + +def expand(selection, children, windows, helpers): + """Expand queues from the fixed selection; do not use source expand.""" + queues = defaultdict(list) + seen = set() + for child, width, stage, count in sorted(selection['stages']): + require((child, width, stage) not in seen, 'duplicate demand') + seen.add((child, width, stage)) + require(width == 8 and stage in windows[child][2] and type(count) is int and count > 0, + 'demand window/width') + queues[child].extend([stage]*count) + patterns = defaultdict(list) + for child, widths, count in selection['patterns']: + require(child in windows and all(w == 8 for w in widths) and count > 0, 'pattern domain') + patterns[child].append((widths, count)) + next_helper, consumed = Counter(), Counter() + slots, remainder = [], {} + for c in children: + child, copy = c['idx'], 0 + for widths, count in sorted(patterns[child], key=lambda p: (-sum(p[0]), p[0])): + require(sum(widths) <= c['rank'], 'pattern extent') + for _ in range(count): + require(copy < 2*V, 'copy count') + for offset in range(0, sum(widths), 8): + require(consumed[child] < len(queues[child]), 'demand underflow') + stage = queues[child][consumed[child]] + consumed[child] += 1 + helper = next_helper[stage] + next_helper[stage] += 1 + slots.append((child, copy, offset, 8, stage, helper)) + remainder[child, copy] = c['rank']-sum(widths) + copy += 1 + while copy < 2*V: + remainder[child, copy] = c['rank'] + copy += 1 + require(consumed[child] == len(queues[child]), 'unconsumed demand') + require(dict(next_helper) == {s: helpers for s in range(STAGES)}, 'helper counts') + # Independent producer agreement is a control, not the geometric test. + ys = {(i, tuple(p)): n for i, p, n in selection['patterns']} + zs = {(i, w, s): n for i, w, s, n in selection['stages']} + original = function(HOSTING, 'expand')(windows, ys, zs, + {s: [(h, 8) for h in range(helpers)] for s in range(STAGES)}, 2*V) + require(original == (slots, remainder), 'producer slot agreement') + return slots, remainder + + +def axes(mask): + return tuple(i for i in range(WIDTH) if mask >> i & 1) + + +def factorization(parts, target): + used = 0 + for part in parts: + require(part >= 0 and part < 1 << WIDTH, 'factor dimension') + require(part & LOW in (0, QPERP), 'split q-perp') + require(not part & used, 'overlapping factors') + used |= part + require(used == target, 'wrong pending operator') + + +def audit(slots, children, windows, helpers): + by_deadline = defaultdict(list) + seen = set() + for child, copy, offset, width, stage, helper in slots: + require(0 <= child < 10 and 0 <= copy < 2*V and 0 <= helper < helpers, 'slot indices') + require(stage in windows[child][2] and width == 8, 'slot window/width') + require((stage, helper) not in seen, 'duplicate helper') + seen.add((stage, helper)) + axis = axes(children[child]['mask']) + require(0 <= offset and offset+width <= len(axis), 'slot extent') + support = sum(1 << i for i in axis[offset:offset+width]) + by_deadline[child, copy].append((support, stage, helper)) + require(seen == {(s, h) for s in range(STAGES) for h in range(helpers)}, 'missing helper') + remainders, signatures, complement = Counter(), set(), {} + for c in children: + for copy in range(2*V): + parts = [p for p, _, _ in by_deadline[c['idx'], copy]] + used = 0 + for part in parts: + require(not used & part, 'overlapping helper slices') + used |= part + require(not used & ~c['mask'], 'factor outside pending space') + rest = c['mask'] ^ used + factorization(parts+[rest], c['mask']) + complement[c['idx'], copy] = rest + remainders[rest.bit_count()] += 1 + signatures.add((c['mask'], tuple(parts+[rest]))) + occupied, multiple = {}, defaultdict(set) + owner_rows = [] + for rep in range(REPLICAS): + for (child, copy), pieces in sorted(by_deadline.items()): + pair = children[child]['pair'] + side, port = divmod(copy, V) + family = rep*8*V+(2*pair+side)*V+port + require(divmod(family, 8*V)[0] == rep, 'replica binding') + for support, stage, helper in pieces: + require(not occupied.get(family, 0) & support, 'cross-child physical overlap') + occupied[family] = occupied.get(family, 0) | support + multiple[family].add(child) + owner_rows.append((rep, stage, helper, family, child, support)) + require(len({r[:3] for r in owner_rows}) == REPLICAS*STAGES*helpers, 'owner role coverage') + return {'slots': len(slots), 'physical_helpers': len(owner_rows), + 'deadline_families': REPLICAS*len(children)*2*V, + 'occupied_families': len(occupied), + 'families_with_multiple_children': sum(len(cs)>1 for cs in multiple.values()), + 'qperp_host_occurrences': REPLICAS*sum((p & LOW)==QPERP for ps in by_deadline.values() for p,_,_ in ps), + 'idle_per_replica_including_zero': dict(sorted(remainders.items())), + 'owner_projector_sha256': sha(canonical(owner_rows)), + 'factorization_sha256': sha(canonical(sorted(signatures)))}, signatures, complement + + +def low_apply(vector, q, enabled): + """Direct rational 16-coordinate D(K_q) application, no mask-union rule.""" + if not enabled: + return vector + diff = [vector[8+i]-vector[i] for i in range(8)] + dot = sum(q[i]*diff[i] for i in range(8))/Q(4) + shift = [diff[i]-q[i]*dot for i in range(8)] + return tuple(vector[i]+shift[i] for i in range(8)) + tuple(vector[8+i]-shift[i] for i in range(8)) + + +def operator_check(lines, signatures): + columns = 0 + for q in lines: + require(len(q)==8 and all(type(x) is int for x in q) and sum(x*x for x in q)==4, 'port norm') + K4 = [[4*(i==j)-q[i]*q[j] for j in range(8)] for i in range(8)] + require(all(sum(K4[i][k]*K4[k][j] for k in range(8))==4*K4[i][j] + for i in range(8) for j in range(8)), 'rational projector') + require(sum(K4[i][i] for i in range(8))==28, 'q-perp rank seven') + for target, parts in signatures: + # The local block is checked directly on all 16 rational basis columns. + for j in range(16): + v = tuple(Q(i==j) for i in range(16)) + got = v + for part in parts: + got = low_apply(got, q, bool(part & LOW)) + require(got == low_apply(v, q, bool(target & LOW)), 'local address operator') + # Each exterior coordinate has a literal two-by-two swap matrix. + # Check both basis columns via parity of the executed factor list. + for j in range(8, WIDTH): + parity = sum((part >> j) & 1 for part in parts) % 2 + require(parity == ((target >> j)&1), 'exterior address operator') + columns += 2*WIDTH + return columns + + +def rank(rows): + basis = {} + for row in rows: + x = list(map(Q, row)) + for pivot, b in sorted(basis.items()): + v = x[pivot] + if v: + x = [a-v*c for a,c in zip(x,b)] + pivot = next((j for j,v in enumerate(x) if v), None) + if pivot is not None: + v = x[pivot] + basis[pivot] = [a/v for a in x] + return len(basis) + + +def word_profile(word): + require((word['h'],word['v'],word['R'])==(8,V,438), 'R438 word binding') + dims = [rank([word['lines'][i] for i in f]) for f in word['frames']] + now = word['start'][:] + require(len(now)==660 and len(word['final'])==660, 'word arity') + require(all(dims[f]==0 for f in now[2*V:]), 'helper entry widths') + hist = Counter() + + def move(reg, frame): + old = now[reg] + if frame != old: + require(set(word['frames'][old]) <= set(word['frames'][frame]), 'nested source frames') + delta = dims[frame]-dims[old] + require(delta > 0, 'positive frame increment') + hist[delta] += 1 + now[reg] = frame + + copies = [] + for section in ('D','A','copy','B','C'): + if section=='copy': + copies = [dims[now[h]] for h in word['ret']] + hist.update(copies) + else: + for frame, dst, srcs in word[section]: + for reg in (dst,*srcs): + move(reg,frame) + for reg,frame in enumerate(word['final']): + move(reg,frame) + require(copies==[7]*9, 'COPY charge') + require(all(dims[f]==8 for f in now[2*V:]), 'helper exit widths') + return hist + + +def controls(slots, children, windows, word, signatures, pin): + names = [] + + def reject(name, action, reason): + try: + action() + except Rejected as e: + require(reason in str(e), 'wrong rejection: '+name+': '+str(e)) + names.append(name) + return + raise Rejected('negative control accepted: '+name) + + reject('source_byte_corruption', lambda: check_bytes(b'wrong',pin), 'source SHA256') + reject('missing_helper', lambda: audit(slots[1:],children,windows,438), 'missing helper') + reject('duplicate_helper', lambda: audit(slots+[slots[0]],children,windows,438), 'duplicate helper') + changed = [list(s) for s in slots] + changed[0][2] += 1 + reject('split_qperp_slice', lambda: audit(changed,children,windows,438), 'split q-perp') + changed = [list(s) for s in slots] + changed[0][4] = 8 + reject('stage_outside_window', lambda: audit(changed,children,windows,438), 'slot window') + target, parts = next(s for s in signatures if any(p.bit_count()==34 for p in s[1])) + rest = next(p for p in parts if p.bit_count()==34) + reject('omitted_rank34_remainder', lambda: factorization([p for p in parts if p!=rest],target), 'wrong pending') + reject('duplicate_rank34_remainder', lambda: factorization(list(parts)+[rest],target), 'overlapping factors') + # Equal-rank exterior substitution, with no local-chart or timing changes. + old_axis = min(axes(rest)) + new_axis = next(i for i in range(8,WIDTH) if not target>>i&1) + altered = rest ^ (1< b` therefore has projector `P(L_b)-P(L_a)`. Its chart +axes are `[1, 8+7b)` when `a=-1`, and `[8+7a, 8+7b)` otherwise. Endpoints are +half-open. Replaying the source recipe's pair levels produces this table: + +| Child | Pair | Levels | Pending axes | Eligible local stages | +| ---: | ---: | --- | --- | --- | +| 0 | 1 | -1 to 1 | [1,15) | 0,1 | +| 1 | 1 | 1 to 2 | [15,22) | 2 | +| 2 | 2 | -1 to 3 | [1,29) | 0,1,2,3 | +| 3 | 2 | 3 to 4 | [29,36) | 4 | +| 4 | 3 | -1 to 5 | [1,43) | 0,1,2,3,4,5 | +| 5 | 3 | 5 to 6 | [43,50) | 6 | +| 6 | 0 | 2 to 8 | [22,64) | 3,4,5,6,7,8 | +| 7 | 1 | 4 to 8 | [36,64) | 5,6,7,8 | +| 8 | 2 | 6 to 8 | [50,64) | 7,8 | +| 9 | 3 | 8 to 8 | empty | none | + +For each physical family, distinct rows of this table have disjoint supports. +Inside each row, the frozen slots partition a subset of its ordered axes; +the remainder is the exact complement. This proves orthogonality of every +pair of hosted supports and of each support with its remaining child factor. + +**No orthonormal completion has to be chosen for these slots.** Every selected +slot contains either all seven q-perp axes or none of them; the same is true +of every child and remainder. Thus its actual projector is either `K_q` plus +an exterior coordinate projector, or just an exterior coordinate projector. +Changing the orthonormal basis of q-perp cannot change any of these projectors. +This observation is specific to this width-eight frozen selection; arbitrary +mixed-width slots can split q-perp and need additional basis data. + +For a projector P the inherited exact bit address operator is + +``` +D(P) = [ I-P P ] + [ P I-P ]. +``` + +If P and Q are orthogonal projectors, block multiplication gives +`D(P)D(Q) = D(P+Q)`. Induction proves that each child's hosted factors and +its remainder equal its original operator on **arbitrary head and tail +vectors**, not just sampled inputs. For commuting coordinate projectors +with overlap the formula is instead `D(P)D(Q) = D(P+Q-2PQ)`: repeated axes +cancel. The separate dense rational tests cover all two-coordinate support +pairs and show that noncommuting projectors cannot use the coordinate-set +argument. These tests accompany, rather than replace, the algebra above. + +## Counterexample and production protection + +On pair 1, child 0 contains exterior axis 8, while child 7 contains axis 36. +Conjugate **only child 7's realization**, including all its hosted slices and +remainder, by the ambient permutation exchanging axes 8 and 36. Its rank +stays 28; every slot width, relative offset, source stage, helper identity, +within-child disjointness and remainder rank stays unchanged. Its support +now overlaps child 0 at axis 8 and omits axis 36. + +The products of this family's idle factors before and after the substitution +differ on exactly these two exterior axes. Applied to `(head=e_8, tail=0)`, +the original product gives `(0,e_8)` and the modified product gives `(e_8,0)`. +This is an exact address-operator witness, independent of the port q. It is +not a replay of the whole interleaved supplier on that particular input; +local calls and bridges also occur between idle deadlines. At an individual +deadline the modified child operator already differs from the source operator. + +The production `audit_hosted_k.py` compares the schedule with the source +parent and validates relative slots under each child; `global_k.py` and +the geometry contract assign the actual pending subspaces from those levels. +Neither accepts an arbitrary alternate chart field of the kind introduced +in this adversarial fixture. `adapt9p.py` changes the live-port and COPY-rank +accounting, and PR545's adapter substitutes the live labels; it does not +grant arbitrary pending axes. These pinned constraints protect the selected +construction. The counterexample explains why a replacement geometric +compiler must preserve this binding, even if its rank and timing receipts +are unchanged. + +## Independence, controls and limits + +The audit independently implements backwards window scanning, direct +intervening-touch checks, finite allocation, ambient masks, all-replica +family checks and exact frame-rank/profile recounting. It compares allocation +and windows against the source's `expand` and `windows` functions. Only these +named pure functions, the source `recipe`, and the literal idle-table +construction are extracted with Python AST; entire producer modules, solvers +and original acceptance checkers are never imported. The source recipe and +geometric level convention are declared inputs, not independent discoveries. + +Twelve semantic controls reject equal-rank overlapping and wrong-disjoint +charts, duplicate axes, missing/duplicate helpers, distinct-helper overlap, +illegal stages, negative offsets, wrong width, out-of-replica copy indices, +an intervening bridge with stale windows, and a nonempty zero-rank child. +Six additional tests cover the positive receipt, independent dense matrix +composition, the noncommuting boundary, a split-q-perp rejection, changed +source bytes and a changed committed receipt. Checks remain active under `-O`. + +This is a finite geometric certificate with a written projector argument. +It does not prove the inherited complete-call correlated-helper realization, +injective cover-class compilation, local scalar correctness/H1-H5, all-size +compiler, native lowered program, precision/tape, analytic transfer, or the +full multiplication theorem. No complete cold replay, Lean proof, new moment +endpoint, supplier adoption or selected-frontier change is claimed. + +Nearby work is retained: [PR1228](https://github.com/CrocSwap/integer-mult-bounds/pull/1228) +and [PR1231](https://github.com/CrocSwap/integer-mult-bounds/pull/1231) derive two +pending ranges for one historical PR442 R747 invocation; this audit covers the +current PR589 R439 allocation and every idle child. [PR1209](https://github.com/CrocSwap/integer-mult-bounds/pull/1209) +and Josie Elliston's retained T16 owner audit treat the complex supplier. +[PR878](https://github.com/CrocSwap/integer-mult-bounds/pull/878) formalizes bit +B boundaries, not this global geometric census. No priority is claimed for +projector algebra, strict borrowing windows or the historical range formulas. +Sagar Thakrar's [PR589 width-packing audit](../bit589-width-packing/README.md) +already recounts the slot capacities and remainders and proves a restricted +width-eight packing optimum. Those counts are consistency checks here; the +added evidence is the current all-child projector census and the exact +rank/window-preserving geometric counterexample. + +## Open next questions + +1. Can the all-call pending-projector statement be connected to a typed + physical realization of the actual PR589 emitted word? This would reduce + the remaining gap between finite placement and complete-call hosting. + Start by exporting these source-bound slot masks into the PR540/PR1231 + multi-host contract with the R439 word. The missing current-word extraction + and correlated-helper realization remain blockers; historical Lean data + cannot simply be renamed. +2. Which mixed-width selected or proposed bit allocations split q-perp? + The completion-free argument would then require explicit local projectors. + First run the `mask & 255 in {0,254}` gate on one pinned candidate's slices; + if it fails, obtain the actual source orthonormal complement before testing + orthogonality. No such mixed-width source is admitted or excluded here. + +## Credit + +DreamingOfClouds / eumemic supplied PR589/555/545/543 and the punctured word, +interleaved interface, parameter adapters and retained replica chain. Zhihao +Chen supplied the PR386 bit geometry; DaysSky supplied PR442 idle-axis +hosting; chafreaky and the earlier bank/replica contributors supplied its +retained extensions. Their source notices and disclosed AI assistance remain +intact. The PR1228/1231 auditors and Josie Elliston's independent complex +owner audit provide nearby precedents. Rohan Arun's PR1094 supplies selected +context; it is unchanged. New material is Apache-2.0. This is AI-assisted +research and local checking, not independent human peer review. diff --git a/research/r429-controller-accounting/native_remainders.py b/research/r429-controller-accounting/native_remainders.py new file mode 100644 index 0000000000..5141edc55a --- /dev/null +++ b/research/r429-controller-accounting/native_remainders.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 +"""Bind the pruned invoice to the literal local word and every pending operator. + +The native operator implementation is the retained PR2653 checker, not an +independent implementation. The independent owner reconstruction is separate. +Ross Richardson with substantial OpenAI Codex assistance. Apache-2.0. +""" +from collections import Counter +import gzip +import importlib.util +import json +from pathlib import Path + +ROOT = Path(__file__).resolve().parent +spec = importlib.util.spec_from_file_location('portable_check', ROOT/'verify.py') +v = importlib.util.module_from_spec(spec) +exec(compile((ROOT/'verify.py').read_bytes(),str(ROOT/'verify.py'),'exec',dont_inherit=True,optimize=0),v.__dict__) +need = v.need + + +def local_profile(word, program, rank): + dims = [rank([word['lines'][j] for j in frame]) for frame in word['frames']] + masks = [sum(1 << j for j in frame) for frame in word['frames']] + deleted = set(program['deleted_public_families']) + need(deleted == set(range(471,480)), 'deleted local families') + need(program['start'] == [f for i,f in enumerate(word['start']) if i not in deleted], 'local start binding') + need(program['final'] == [f for i,f in enumerate(word['final']) if i not in deleted], 'local final binding') + state = program['start'][:] + [None] + copied = None + paid, count = Counter(), Counter() + for op,x,y,c,f,phase in program['records']: + count[op] += 1 + if op == 0: + need(state[x] == y and dims[c]-dims[y] == f > 0, 'literal local MOVE rank') + need(not masks[y] & ~masks[c], 'local MOVE nesting') + need(x != copied, 'live copied source moved') + state[x] = c + paid[f] += 1 + elif op == 1: + need(x != y and x != copied and state[x] == state[y] == f, 'local ADD frame or copied source') + elif op == 2: + need(copied is None and y == 651 and state[y] is None, 'local COPY lifecycle') + need(state[x] == c and not masks[f] & ~masks[c], 'local COPY frame') + need(dims[c]-dims[f] == phase == 1, 'local COPY rank') + state[y],copied = f,x + paid[phase] += 1 + else: + need(op == 3 and y == 651 and copied == x and state[x] == c and state[y] == f and phase == 0, + 'local ERASE original snapshot') + state[y],copied = None,None + need(copied is None and state[:-1] == program['final'], 'local final state') + need(count[2] == count[3] == 3 and count[1] == 13223, 'local event coverage') + need(paid == Counter({1:1298,2:1342,3:79,4:44,5:93,6:11,7:9}), 'local paid histogram') + return paid, count + + +def main(): + p = v.Portable(ROOT) + p.check_all(); p.install() + m = p.load('frozen/upstream/research/r438-rehost-projectors/verify.py') + m.source_check() + base = ROOT/'frozen/upstream/research' + word = json.loads(gzip.decompress(p.authenticate(base/'bit-r438-transport-rehost/words/r438-t154.json.gz'))) + program = json.loads(gzip.decompress(p.authenticate(base/'bit-r438-source-code/WORD.json.gz'))) + local, counts = local_profile(word,program,m.rank) + _,children,windows = m.chronology() + layout = json.loads(p.authenticate(base/'bit-r438-transport-rehost/verify_rehost.receipt.json'))['placement']['selection'] + old,_ = m.expand(layout,children,windows,438) + new = [s[:5]+(s[5]-(9 if s[5]>257 else 0),) for s in old if not 249 <= s[5] <= 257] + audit,signatures,complements = m.audit(new,children,windows,429) + columns = m.operator_check(word['lines'],signatures) + rejected=[] + def reject(name, action, marker): + try: action() + except ValueError as e: + need(marker in str(e),'wrong control rejection: '+str(e)); rejected.append(name) + else: raise ValueError('control accepted: '+name) + reject('missing_retained_helper',lambda:m.audit(new[1:],children,windows,429),'missing helper') + reject('duplicate_retained_helper',lambda:m.audit(new+[new[0]],children,windows,429),'duplicate helper') + target,parts=next(s for s in signatures if any(x and x & ~255 for x in s[1])) + victim=next(x for x in parts if x & ~255) + bit=(victim & ~255) & -(victim & ~255) + bad=tuple(x^bit if x==victim else x for x in parts) + reject('missing_pending_axis',lambda:m.factorization(bad,target),'wrong pending operator') + outside=next(i for i in range(8,64) if not target>>i&1) + wrong=tuple((x^bit^(1<