From 9cdc17160b80222ba31523da05d37e2e0ea4aaab Mon Sep 17 00:00:00 2001 From: eumemic Date: Sun, 11 Oct 2026 15:11:45 -0700 Subject: [PATCH 1/3] Build partial-own factory with 84 kernel pivots and exact whole-owner admission --- .../r489-partial-own-kernel84/EXPECTED.json | 145 + research/r489-partial-own-kernel84/LICENSE | 201 + .../r489-partial-own-kernel84/MANIFEST.json | 316 + research/r489-partial-own-kernel84/NOTICE.md | 43 + research/r489-partial-own-kernel84/PROOF.md | 159 + research/r489-partial-own-kernel84/README.md | 58 + .../r489-partial-own-kernel84/SOURCE.json | 290 + .../code/apply_retime.py | 60 + .../code/audit484/assemble_candidate.py | 35 + .../code/audit484/audit_pooled_candidate.py | 20 + .../code/audit484/audit_pooled_owners.py | 83 + .../code/audit484/audit_pooled_prefix.py | 46 + .../code/audit484/audit_scalar_invoice.py | 82 + .../code/audit493/review_invoice.py | 73 + .../code/audit493/review_local.py | 92 + .../code/audit_partial_algebra.py | 230 + .../code/audit_partial_frames.py | 48 + .../code/audit_pooled.py | 103 + .../code/construct_partial.py | 309 + .../code/emit_pooled.py | 60 + .../code/finite_serial_pool.py | 53 + .../code/guarded_lemma.py | 43 + .../code/rebuild_retimed.py | 86 + .../code/release_admission.py | 75 + .../code/retimed_lemma_mutants.py | 30 + .../code/review_composition.py | 252 + .../code/review_frames.py | 295 + .../data/COLORED-OWNERS.json.gz | Bin 0 -> 573985 bytes .../data/KERNEL-SELECTION.json | 664 + .../data/RETIME-FRAMES.json.gz | Bin 0 -> 5905 bytes .../provenance/BOUND-ADMISSION.json | 95 + .../provenance/MUTANT-ADAPTER-PREFLIGHT.json | 263 + .../provenance/NOMINATION.json | 847 + .../provenance/POOLED-ALLOCATION.json | 1406 + .../provenance/POOLED-COLORING.json | 91 + .../provenance/POOLING-PROOF.txt | 26 + .../provenance/PR484-INDEPENDENT.json | 411 + .../provenance/PR493-INVOICE.json | 431 + .../provenance/PR493-LOCAL.json | 60 + .../provenance/RETIME-FINITE-ADMISSION.json | 82 + .../provenance/RETIME-FRAME-REVIEW.json | 150 + .../provenance/RETIME-FROZEN.json | 40 + .../provenance/RETIME-GAUSSIAN-ADMISSION.json | 289 + .../provenance/UNPOOLED-SELECTION.json | 828 + .../provenance/nominate.py | 62 + .../provenance/retime_continue.py | 69 + .../provenance/retime_neutral.py | 68 + .../provenance/retime_word.py | 57 + .../vendor/bit/EXPECTED.json | 91 + .../vendor/bit/LICENSE | 201 + .../vendor/bit/MANIFEST.sha256 | 93 + .../vendor/bit/NOTICE.md | 69 + .../vendor/bit/README.md | 164 + .../vendor/bit/SOURCE-pr370.json | 69 + .../vendor/bit/SOURCE-pr381.json | 13 + .../vendor/bit/SOURCE-pr386.json | 17 + .../vendor/bit/SOURCE-pr436.json | 13 + .../vendor/bit/SOURCE-pr445.json | 25 + .../vendor/bit/SOURCE-pr448.json | 13 + .../vendor/bit/SOURCE-pr451.json | 25 + .../vendor/bit/SOURCE-pr458.json | 13 + .../vendor/bit/SOURCE-pr471.json | 13 + .../vendor/bit/SOURCE-pr472.json | 73 + .../vendor/bit/SOURCE-pr473.json | 13 + .../vendor/bit/SOURCE-pr478.json | 13 + .../vendor/bit/SOURCE-pr483.json | 13 + .../vendor/bit/SOURCE-pr484.json | 13 + .../bit/code/bit/checkers/columns_h.cpp | 48 + .../bit/code/bit/checkers/columns_k.cpp | 62 + .../bit/code/bit/checkers/gram_frames.py | 54 + .../vendor/bit/code/bit/checkers/json.hpp | 25526 ++++++++++++++++ .../bit/code/bit/checkers/legality_h.cpp | 13 + .../vendor/bit/code/bit/export_records.py | 72 + .../bit/code/bit/independent/checkword.py | 143 + .../bit/code/bit/independent/interface.py | 84 + .../vendor/bit/code/bit/independent/mutate.py | 31 + .../bit/code/bit/independent/mutate_mut.py | 136 + .../vendor/bit/code/bit/independent/relax.py | 33 + .../vendor/bit/code/bit/mutate_records.py | 34 + .../vendor/bit/code/bit/mutate_records_mut.py | 68 + .../bit/code/bit/regression/stage_cohort.py | 12 + .../vendor/bit/code/cited.py | 23 + .../vendor/bit/code/eleven/adapt.py | 76 + .../vendor/bit/code/eleven/assemble.py | 102 + .../vendor/bit/code/eleven/audit.py | 215 + .../vendor/bit/code/eleven/emit.py | 288 + .../vendor/bit/code/eleven/local_audit.py | 48 + .../hub/e8-r715-whole-hosted/code/assemble.py | 121 + .../hub/e8-r715-whole-hosted/code/audit.py | 213 + .../hub/e8-r715-whole-hosted/code/emit.py | 286 + .../e8-r715-whole-hosted/code/local_audit.py | 46 + .../e8-r715-whole-hosted/data/hosting.json | 519 + .../data/residual-isometries.json | 1344 + .../e8-r715-whole-hosted/data/word.json.gz | Bin 0 -> 55740 bytes .../hub/e8-r740-replica32/code/bank_routes.py | 65 + .../code/hub/e8-r740-replica32/code/e8core.py | 203 + .../code/engines/base_two_moment.py | 63 + .../e8-r740-replica32/code/engines/moment.py | 113 + .../e8-r740-replica32/code/engines/outer.py | 58 + .../code/hub/e8-r740-replica32/code/tile_m.py | 93 + .../data/residual-isometries.json | 1974 ++ .../hub/e8-r740-replica32/data/word.json.gz | Bin 0 -> 54461 bytes .../hub/idle-axis-hosting/hosting_core.py | 138 + .../code/hub/r740-hosted-eleven/code/emit.py | 261 + .../hub/r740-hosted-eleven/code/geometry.py | 111 + .../hub/r740-hosted-eleven/code/row_bound.py | 47 + .../r740-hosted-eleven/data/selection.json | 499 + .../code/hub/r740-hosted-rank149/code/emit.py | 261 + .../data/residual-isometries.json | 2230 ++ .../r740-hosted-rank149/data/selection.json | 661 + .../hub/r740-hosted-rank149/data/word.json.gz | Bin 0 -> 54626 bytes .../vendor/bit/code/nine/geometry.py | 121 + .../bit/code/pricing/base_two_moment.py | 63 + .../vendor/bit/code/pricing/moment.py | 113 + .../vendor/bit/code/pricing/outer.py | 58 + .../bit/code/pricing/prime_witnesses.py | 99 + .../vendor/bit/code/provenance.py | 28 + .../vendor/bit/code/skeleton/e8.py | 131 + .../vendor/bit/code/skeleton/gen.py | 438 + .../vendor/bit/code/skeleton/geom.py | 148 + .../vendor/bit/code/skeleton/wordkit.py | 336 + .../vendor/bit/data/bit/bitE8-r865.json.gz | Bin 0 -> 33865 bytes .../vendor/bit/data/bit/bitE8mut-r489.json.gz | Bin 0 -> 49154 bytes .../vendor/bit/data/complex-b.json | 83 + .../bit/data/complex/pr448/EXPECTED.json | 10 + .../bit/data/complex/pr458/EXPECTED.json | 81 + .../bit/data/complex/pr471/EXPECTED.json | 29 + .../bit/data/complex/pr473/EXPECTED.json | 177 + .../bit/data/complex/pr478/EXPECTED.json | 178 + .../bit/data/complex/pr483/EXPECTED.json | 178 + .../bit/data/complex/pr484/EXPECTED.json | 732 + .../vendor/bit/data/eleven/hosting.json | 221 + .../bit/data/eleven/residual-isometries.json | 101 + .../bit/data/skeleton/d4part-pairs.json | 1 + .../vendor/bit/data/skeleton/plan-skB.json | 1 + .../vendor/bit/discovery/README.md | 25 + .../vendor/bit/discovery/d4part.py | 49 + .../vendor/bit/discovery/host_select.py | 77 + .../vendor/bit/discovery/plan.py | 210 + .../vendor/bit/portable-include/bits/stdc++.h | 38 + .../vendor/bit/requirements.txt | 2 + .../vendor/bit/verify.sh | 150 + .../e8-complex-gauge-kernel/EXPECTED.json | 732 + .../e8-complex-gauge-kernel/MANIFEST.json | 59 + .../complex/e8-complex-gauge-kernel/NOTICE.md | 6 + .../e8-complex-gauge-kernel/PR-BODY.md | 45 + .../complex/e8-complex-gauge-kernel/PROOF.md | 358 + .../complex/e8-complex-gauge-kernel/README.md | 75 + .../e8-complex-gauge-kernel/SOURCE.json | 137 + .../code/adapters_gk.py | 59 + .../code/assemble_gk.py | 77 + .../e8-complex-gauge-kernel/code/audit_gk.py | 189 + .../code/audit_hosted_gk.py | 270 + .../code/controls_gk.py | 127 + .../code/controls_hosting.py | 84 + .../code/controls_pipeline.py | 71 + .../code/controls_sel.py | 8 + .../e8-complex-gauge-kernel/code/emit_gk.py | 156 + .../e8-complex-gauge-kernel/code/gk_common.py | 94 + .../e8-complex-gauge-kernel/code/gk_word.py | 194 + .../e8-complex-gauge-kernel/code/hosted_gk.py | 150 + .../code/integrate_gk.py | 123 + .../code/lemmaG/check.py | 49 + .../e8-complex-gauge-kernel/code/lemmaG/gd.py | 170 + .../code/lemmaG/lg_e2e.py | 41 + .../code/lemmaG/lg_instances.py | 125 + .../code/lemmaG/lg_lib.py | 216 + .../code/lemmaG/lg_mutants.py | 185 + .../code/lemmaG/lg_phys.py | 137 + .../code/lemmaG/run_labels.py | 23 + .../e8-complex-gauge-kernel/code/make_meta.py | 12 + .../code/onehost_gk.py | 111 + .../e8-complex-gauge-kernel/code/replay_gk.py | 271 + .../code/run_variant.py | 64 + .../data/SELECTION.json | 1948 ++ .../data/bit-suppliers-pinned.json | 9 + .../data/selections/empty.json | 1 + .../data/selections/gauge80-kernel42.json | 470 + .../data/selections/gauge80.json | 270 + .../data/selections/kernel79.json | 338 + .../provenance/README.md | 8 + .../provenance/cxcheck.py | 79 + .../provenance/cxlab.py | 38 + .../provenance/gauge.py | 51 + .../provenance/gauge2.py | 72 + .../provenance/gauge3.py | 53 + .../provenance/gauge4.py | 53 + .../provenance/hostmodel.py | 88 + .../provenance/iso1.py | 53 + .../provenance/kcap.py | 13 + .../provenance/kern.py | 53 + .../provenance/kern2.py | 43 + .../provenance/kern3.py | 73 + .../provenance/kern4.py | 46 + .../provenance/kern5.py | 50 + .../provenance/kern6.py | 29 + .../provenance/sa_long.py | 15 + .../complex/e8-complex-gauge-kernel/verify.py | 99 + .../e8-early-reset-kernel/EXPECTED.json | 10 + .../complex/e8-early-reset-kernel/LICENSE | 201 + .../e8-early-reset-kernel/MANIFEST.json | 32 + .../complex/e8-early-reset-kernel/NOTICE.md | 3 + .../complex/e8-early-reset-kernel/PROOF.md | 9 + .../complex/e8-early-reset-kernel/README.md | 9 + .../e8-early-reset-kernel/SELECTION.json | 1696 + .../complex/e8-early-reset-kernel/SOURCE.json | 68 + .../e8-early-reset-kernel/VALIDATION.json | 9 + .../complex/e8-early-reset-kernel/apply.py | 43 + .../e8-early-reset-kernel/bit_audit.py | 129 + .../e8-early-reset-kernel/bit_global.py | 259 + .../e8-early-reset-kernel/bit_price.py | 18 + .../complex/e8-early-reset-kernel/combined.py | 55 + .../local-evidence/ASSEMBLY.json | 103 + .../local-evidence/AUDIT.json | 34 + .../local-evidence/BIT-PRICE.json | 17 + .../local-evidence/FULL-PYTHON311.json | 49 + .../local-evidence/FULL-PYTHON314.json | 49 + .../local-evidence/GLOBAL.json | 165 + .../e8-early-reset-kernel/source_span.py | 10 + .../vendor/kernel417/LICENSE | 201 + .../vendor/kernel417/e8core.py | 203 + .../kernel417/engines/base_two_moment.py | 63 + .../vendor/kernel417/engines/moment.py | 113 + .../vendor/kernel417/engines/outer.py | 58 + .../vendor/kernel417/stages.py | 143 + .../complex/e8-early-reset-kernel/verify.py | 32 + .../e8-early-reset-reuse/EXPECTED.json | 10 + .../complex/e8-early-reset-reuse/LICENSE | 201 + .../e8-early-reset-reuse/MANIFEST.json | 30 + .../complex/e8-early-reset-reuse/NOTICE.md | 3 + .../complex/e8-early-reset-reuse/PROOF.md | 9 + .../complex/e8-early-reset-reuse/README.md | 11 + .../e8-early-reset-reuse/SELECTION.json | 141 + .../complex/e8-early-reset-reuse/SOURCE.json | 7 + .../e8-early-reset-reuse/VALIDATION.json | 9 + .../complex/e8-early-reset-reuse/bit_audit.py | 126 + .../e8-early-reset-reuse/bit_global.py | 226 + .../complex/e8-early-reset-reuse/bit_price.py | 18 + .../complex/e8-early-reset-reuse/combined.py | 55 + .../local-evidence/ASSEMBLY.json | 103 + .../local-evidence/BIT-AUDIT.json | 33 + .../local-evidence/BIT-GLOBAL.json | 164 + .../local-evidence/BIT-PRICE.json | 17 + .../local-evidence/FAILED-INLINING.json | 571 + .../local-evidence/FAILED-LATE-RESET.json | 8 + .../FULL-PORTABLE-PYTHON311.json | 44 + .../FULL-PORTABLE-PYTHON314.json | 44 + .../FULL-PYTHON314-INITIAL.json | 44 + .../local-evidence/PARENT-FULL-REPLAY.json | 120 + .../PYTHON311-INITIAL-FAILURE.json | 4 + .../complex/e8-early-reset-reuse/replay.py | 71 + .../complex/e8-early-reset-reuse/verify.py | 31 + .../complex/idle-axis-hosting/EXPECTED.json | 10 + .../vendor/complex/idle-axis-hosting/LICENSE | 201 + .../complex/idle-axis-hosting/MANIFEST.json | 17 + .../complex/idle-axis-hosting/NOTICE.md | 18 + .../vendor/complex/idle-axis-hosting/PROOF.md | 105 + .../complex/idle-axis-hosting/README.md | 42 + .../complex/idle-axis-hosting/SELECTION.json | 553 + .../complex/idle-axis-hosting/assemble.py | 82 + .../vendor/complex/idle-axis-hosting/audit.py | 159 + .../complex/idle-axis-hosting/bit_hosted.py | 118 + .../idle-axis-hosting/complex_hosted.py | 87 + .../complex/idle-axis-hosting/hosting_core.py | 138 + .../complex/idle-axis-hosting/verify.py | 38 + .../split-centres-global/.gitattributes | 6 + .../split-centres-global/CERTIFICATE.json | 119 + .../split-centres-global/EXPECTED.json | 9 + .../complex/split-centres-global/LICENSE | 201 + .../split-centres-global/MANIFEST.json | 51 + .../complex/split-centres-global/NOTICE.md | 41 + .../complex/split-centres-global/PROOF.md | 184 + .../complex/split-centres-global/README.md | 56 + .../complex/split-centres-global/SOURCES.json | 134 + .../split-centres-global/VALIDATION.json | 39 + .../split-centres-global/code/bit_audit.py | 126 + .../code/bit_construct.py | 134 + .../split-centres-global/code/bit_global.py | 226 + .../split-centres-global/code/bit_price.py | 18 + .../split-centres-global/code/combined.py | 55 + .../code/complex_audit.py | 168 + .../code/complex_construct.py | 278 + .../split-centres-global/code/complex_emit.py | 136 + .../code/complex_integrate.py | 109 + .../code/complex_phases.py | 24 + .../code/complex_phases_full.py | 39 + .../code/complex_replay.py | 177 + .../inputs/bit-geometry.json.gz | Bin 0 -> 116121 bytes .../inputs/bit-r767.json.gz | Bin 0 -> 183408 bytes .../inputs/complex-data-phases.json.gz | Bin 0 -> 33869 bytes .../inputs/complex-phase-receipt.json | 23 + .../inputs/complex-phase-recipes.json.gz | Bin 0 -> 96078 bytes .../inputs/complex-ports.json.gz | Bin 0 -> 23365 bytes .../inputs/complex-template.json.gz | Bin 0 -> 415067 bytes .../inputs/e8-r865.json.gz | Bin 0 -> 33865 bytes .../notices/NOTICE-PR352.md | 33 + .../split-centres-global/notices/NOTICE.md | 47 + .../split-centres-global/notices/PR386.txt | 25 + .../notices/PR426-SOURCE-PINS.json | 1116 + .../split-centres-global/notices/PR426.md | 53 + .../notices/SUSSMAN-NOTICE | 290 + .../proofs/INHERITED-COMPLEX-GEOMETRY.txt | 161 + .../proofs/PR386-BIT-GEOMETRY.txt | 191 + .../proofs/PR425-COMPLEX.txt | 211 + .../split-centres-global/proofs/PR426.md | 108 + .../vendor/clifford_exact.py | 149 + .../vendor/engines/base_two_moment.py | 63 + .../vendor/engines/moment.py | 113 + .../vendor/engines/outer.py | 58 + .../vendor/export_records.py | 72 + .../vendor/hamming_packets.py | 253 + .../complex/split-centres-global/verify.py | 51 + research/r489-partial-own-kernel84/verify.py | 99 + 313 files changed, 71687 insertions(+) create mode 100644 research/r489-partial-own-kernel84/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/LICENSE create mode 100644 research/r489-partial-own-kernel84/MANIFEST.json create mode 100644 research/r489-partial-own-kernel84/NOTICE.md create mode 100644 research/r489-partial-own-kernel84/PROOF.md create mode 100644 research/r489-partial-own-kernel84/README.md create mode 100644 research/r489-partial-own-kernel84/SOURCE.json create mode 100644 research/r489-partial-own-kernel84/code/apply_retime.py create mode 100644 research/r489-partial-own-kernel84/code/audit484/assemble_candidate.py create mode 100644 research/r489-partial-own-kernel84/code/audit484/audit_pooled_candidate.py create mode 100644 research/r489-partial-own-kernel84/code/audit484/audit_pooled_owners.py create mode 100644 research/r489-partial-own-kernel84/code/audit484/audit_pooled_prefix.py create mode 100644 research/r489-partial-own-kernel84/code/audit484/audit_scalar_invoice.py create mode 100644 research/r489-partial-own-kernel84/code/audit493/review_invoice.py create mode 100644 research/r489-partial-own-kernel84/code/audit493/review_local.py create mode 100644 research/r489-partial-own-kernel84/code/audit_partial_algebra.py create mode 100644 research/r489-partial-own-kernel84/code/audit_partial_frames.py create mode 100644 research/r489-partial-own-kernel84/code/audit_pooled.py create mode 100644 research/r489-partial-own-kernel84/code/construct_partial.py create mode 100644 research/r489-partial-own-kernel84/code/emit_pooled.py create mode 100644 research/r489-partial-own-kernel84/code/finite_serial_pool.py create mode 100644 research/r489-partial-own-kernel84/code/guarded_lemma.py create mode 100644 research/r489-partial-own-kernel84/code/rebuild_retimed.py create mode 100644 research/r489-partial-own-kernel84/code/release_admission.py create mode 100644 research/r489-partial-own-kernel84/code/retimed_lemma_mutants.py create mode 100644 research/r489-partial-own-kernel84/code/review_composition.py create mode 100644 research/r489-partial-own-kernel84/code/review_frames.py create mode 100644 research/r489-partial-own-kernel84/data/COLORED-OWNERS.json.gz create mode 100644 research/r489-partial-own-kernel84/data/KERNEL-SELECTION.json create mode 100644 research/r489-partial-own-kernel84/data/RETIME-FRAMES.json.gz create mode 100644 research/r489-partial-own-kernel84/provenance/BOUND-ADMISSION.json create mode 100644 research/r489-partial-own-kernel84/provenance/MUTANT-ADAPTER-PREFLIGHT.json create mode 100644 research/r489-partial-own-kernel84/provenance/NOMINATION.json create mode 100644 research/r489-partial-own-kernel84/provenance/POOLED-ALLOCATION.json create mode 100644 research/r489-partial-own-kernel84/provenance/POOLED-COLORING.json create mode 100644 research/r489-partial-own-kernel84/provenance/POOLING-PROOF.txt create mode 100644 research/r489-partial-own-kernel84/provenance/PR484-INDEPENDENT.json create mode 100644 research/r489-partial-own-kernel84/provenance/PR493-INVOICE.json create mode 100644 research/r489-partial-own-kernel84/provenance/PR493-LOCAL.json create mode 100644 research/r489-partial-own-kernel84/provenance/RETIME-FINITE-ADMISSION.json create mode 100644 research/r489-partial-own-kernel84/provenance/RETIME-FRAME-REVIEW.json create mode 100644 research/r489-partial-own-kernel84/provenance/RETIME-FROZEN.json create mode 100644 research/r489-partial-own-kernel84/provenance/RETIME-GAUSSIAN-ADMISSION.json create mode 100644 research/r489-partial-own-kernel84/provenance/UNPOOLED-SELECTION.json create mode 100644 research/r489-partial-own-kernel84/provenance/nominate.py create mode 100644 research/r489-partial-own-kernel84/provenance/retime_continue.py create mode 100644 research/r489-partial-own-kernel84/provenance/retime_neutral.py create mode 100644 research/r489-partial-own-kernel84/provenance/retime_word.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/LICENSE create mode 100644 research/r489-partial-own-kernel84/vendor/bit/MANIFEST.sha256 create mode 100644 research/r489-partial-own-kernel84/vendor/bit/NOTICE.md create mode 100644 research/r489-partial-own-kernel84/vendor/bit/README.md create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr370.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr381.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr386.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr436.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr445.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr448.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr451.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr458.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr471.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr472.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr473.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr478.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr483.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr484.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/checkers/columns_h.cpp create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/checkers/columns_k.cpp create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/checkers/gram_frames.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/checkers/json.hpp create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/checkers/legality_h.cpp create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/export_records.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/independent/checkword.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/independent/interface.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/independent/mutate.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/independent/mutate_mut.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/independent/relax.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/mutate_records.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/mutate_records_mut.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/bit/regression/stage_cohort.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/cited.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/eleven/adapt.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/eleven/assemble.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/eleven/audit.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/eleven/emit.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/eleven/local_audit.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r715-whole-hosted/code/assemble.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r715-whole-hosted/code/audit.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r715-whole-hosted/code/emit.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r715-whole-hosted/code/local_audit.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r715-whole-hosted/data/hosting.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r715-whole-hosted/data/residual-isometries.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r715-whole-hosted/data/word.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r740-replica32/code/bank_routes.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r740-replica32/code/e8core.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r740-replica32/code/engines/base_two_moment.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r740-replica32/code/engines/moment.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r740-replica32/code/engines/outer.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r740-replica32/code/tile_m.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r740-replica32/data/residual-isometries.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/e8-r740-replica32/data/word.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/idle-axis-hosting/hosting_core.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/r740-hosted-eleven/code/emit.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/r740-hosted-eleven/code/geometry.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/r740-hosted-eleven/code/row_bound.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/r740-hosted-eleven/data/selection.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/r740-hosted-rank149/code/emit.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/r740-hosted-rank149/data/residual-isometries.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/r740-hosted-rank149/data/selection.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/hub/r740-hosted-rank149/data/word.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/nine/geometry.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/pricing/base_two_moment.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/pricing/moment.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/pricing/outer.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/pricing/prime_witnesses.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/provenance.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/skeleton/e8.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/skeleton/gen.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/skeleton/geom.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/code/skeleton/wordkit.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/bit/bitE8-r865.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/bit/bitE8mut-r489.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/complex-b.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/complex/pr448/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/complex/pr458/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/complex/pr471/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/complex/pr473/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/complex/pr478/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/complex/pr483/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/complex/pr484/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/eleven/hosting.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/eleven/residual-isometries.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/skeleton/d4part-pairs.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/data/skeleton/plan-skB.json create mode 100644 research/r489-partial-own-kernel84/vendor/bit/discovery/README.md create mode 100644 research/r489-partial-own-kernel84/vendor/bit/discovery/d4part.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/discovery/host_select.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/discovery/plan.py create mode 100644 research/r489-partial-own-kernel84/vendor/bit/portable-include/bits/stdc++.h create mode 100644 research/r489-partial-own-kernel84/vendor/bit/requirements.txt create mode 100644 research/r489-partial-own-kernel84/vendor/bit/verify.sh create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/MANIFEST.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/NOTICE.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/PR-BODY.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/PROOF.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/README.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/SOURCE.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/adapters_gk.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/assemble_gk.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/audit_gk.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/audit_hosted_gk.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/controls_gk.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/controls_hosting.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/controls_pipeline.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/controls_sel.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/emit_gk.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/gk_common.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/gk_word.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/hosted_gk.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/integrate_gk.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/check.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/gd.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_e2e.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_instances.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_lib.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_mutants.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_phys.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/run_labels.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/make_meta.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/onehost_gk.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/replay_gk.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/code/run_variant.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/data/SELECTION.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/data/bit-suppliers-pinned.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/data/selections/empty.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/data/selections/gauge80-kernel42.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/data/selections/gauge80.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/data/selections/kernel79.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/README.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/cxcheck.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/cxlab.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/gauge.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/gauge2.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/gauge3.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/gauge4.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/hostmodel.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/iso1.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/kcap.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/kern.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/kern2.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/kern3.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/kern4.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/kern5.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/kern6.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/provenance/sa_long.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-complex-gauge-kernel/verify.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/LICENSE create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/MANIFEST.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/NOTICE.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/PROOF.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/README.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/SELECTION.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/SOURCE.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/VALIDATION.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/apply.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/bit_audit.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/bit_global.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/bit_price.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/combined.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/local-evidence/ASSEMBLY.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/local-evidence/AUDIT.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/local-evidence/BIT-PRICE.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/local-evidence/FULL-PYTHON311.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/local-evidence/FULL-PYTHON314.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/local-evidence/GLOBAL.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/source_span.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/vendor/kernel417/LICENSE create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/vendor/kernel417/e8core.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/base_two_moment.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/moment.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/outer.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/vendor/kernel417/stages.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-kernel/verify.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/LICENSE create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/MANIFEST.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/NOTICE.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/PROOF.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/README.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/SELECTION.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/SOURCE.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/VALIDATION.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/bit_audit.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/bit_global.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/bit_price.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/combined.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/local-evidence/ASSEMBLY.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/local-evidence/BIT-AUDIT.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/local-evidence/BIT-GLOBAL.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/local-evidence/BIT-PRICE.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/local-evidence/FAILED-INLINING.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/local-evidence/FAILED-LATE-RESET.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON311.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON314.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PYTHON314-INITIAL.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/local-evidence/PARENT-FULL-REPLAY.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/local-evidence/PYTHON311-INITIAL-FAILURE.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/replay.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/e8-early-reset-reuse/verify.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/LICENSE create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/MANIFEST.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/NOTICE.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/PROOF.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/README.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/SELECTION.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/assemble.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/audit.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/bit_hosted.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/complex_hosted.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/hosting_core.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/idle-axis-hosting/verify.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/.gitattributes create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/CERTIFICATE.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/EXPECTED.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/LICENSE create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/MANIFEST.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/NOTICE.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/PROOF.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/README.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/SOURCES.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/VALIDATION.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/bit_audit.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/bit_construct.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/bit_global.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/bit_price.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/combined.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/complex_audit.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/complex_construct.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/complex_emit.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/complex_integrate.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/complex_phases.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/complex_phases_full.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/code/complex_replay.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/inputs/bit-geometry.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/inputs/bit-r767.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/inputs/complex-data-phases.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/inputs/complex-phase-receipt.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/inputs/complex-phase-recipes.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/inputs/complex-ports.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/inputs/complex-template.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/inputs/e8-r865.json.gz create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/notices/NOTICE-PR352.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/notices/NOTICE.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/notices/PR386.txt create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/notices/PR426-SOURCE-PINS.json create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/notices/PR426.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/notices/SUSSMAN-NOTICE create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/proofs/INHERITED-COMPLEX-GEOMETRY.txt create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/proofs/PR386-BIT-GEOMETRY.txt create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/proofs/PR425-COMPLEX.txt create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/proofs/PR426.md create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/vendor/clifford_exact.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/vendor/engines/base_two_moment.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/vendor/engines/moment.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/vendor/engines/outer.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/vendor/export_records.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/vendor/hamming_packets.py create mode 100644 research/r489-partial-own-kernel84/vendor/complex/split-centres-global/verify.py create mode 100644 research/r489-partial-own-kernel84/verify.py diff --git a/research/r489-partial-own-kernel84/EXPECTED.json b/research/r489-partial-own-kernel84/EXPECTED.json new file mode 100644 index 0000000000..260507252d --- /dev/null +++ b/research/r489-partial-own-kernel84/EXPECTED.json @@ -0,0 +1,145 @@ +{ + "complex_lower": "1365476727944167989749/1000000000000000000000000", + "next_b_rejected": "5461906911776671959/4000000000000000000000", + "bit_lower": "391360506745414227149/250000000000000000000000", + "kappa": "1363614743745701/1000000000000000000", + "kappa_decimal": "0.001363614743745701", + "bit_charged_three_level_coefficient_bits": 6464, + "external_row_allowance": 20161, + "binding_component": "complex", + "strict_outer_constraints": { + "bit_positive": "1365476727944167979780863770959857311289669501765487418297533155973254082489707450992228490531689344421879001740788519404727143960278844660745684237059924791177486038080740764372129731200715402843599710688575871040832287093076867024549909696024294849281670696855869203516248936670017141490749/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "9968136229040142688710330498234512581702466844026745917510292549007771509468310655578120998259211480595272856039721155339254315762940075208822513961919259235627870268799284597156400289311424128959167712906923132975450090303975705150718329303144130796483751063329982858509251/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29884523272055832010251/1000000000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "8602659501095974698961330498234512581702466844026745917510292549007771509468310655578120998259211480595272856039721155339254315762940075208822513961919259235627870268799284597156400289311424128959167712906923132975450090303975705150718329303144130796483751063329982858509251/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1365476727944167979780863770959857311289669501765487418297533155973254082489707450992228490531689344421879001740788519404727143960278844660745684237059924791177486038080740764372129731200715402843599710688575871040832287093076867024549909696024294849281670696855869203516248936670017141490749/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "5666806478492155329261529020077113602140902923778860377052679430477139837223862778781288989661295084719515429760649097074354301841748882265156941218019554408991421172480383062950329875856427467323183567142037437528557332245064719599909074347596360247523546228520860632770874436670017141490749/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "682738363972084113524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499317261636027915886475044842464239324136029020077113602140902923778860377052679430477139837223862778781288989661295084719515429760649097074354301841748882265156941218019554408991421172480383062950329875856427467323183567142037437528557332245064719599909074347596360247523546228520860632770874436670017141490749/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "1365476727944167979780863770959857311289669501765487418297533155973254082489707450992228490531689344421879001740788519404727143960278844660745684237059924791177486038080740764372129731200715402843599710688575871040832287093076867024549909696024294849281670696855869203516248936670017141490749/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "11333612956984310668491194269194369892992136345792233335807825704981025591958018106570349488790900825017151857780509674743981459723218919869568198198979184026805356306880025361528530020512139531802767423595499004016282377397052572175268238999168425645765421760185852062025499936670017141490749/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1365476727944167979780863770959857311289669501765487418297533155973254082489707450992228490531689344421879001740788519404727143960278844660745684237059924791177486038080740764372129731200715402843599710688575871040832287093076867024549909696024294849281670696855869203516248936670017141490749/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1365476727944167979780863770959857311289669501765487418297533155973254082489707450992228490531689344421879001740788519404727143960278844660745684237059924791177486038080740764372129731200715402843599710688575871040832287093076867024549909696024294849281670696855869203516248936670017141490749/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "5666806478492155329261529020077113602140902923778860377052679430477139837223862778781288989661295084719515429760649097074354301841748882265156941218019554408991421172480383062950329875856427467323183567142037437528557332245064719599909074347596360247523546228520860632770874436670017141490749/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251", + "epsilon_below_one": "682738363972084488524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251/500682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251", + "guard_width": "682738363972084488524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251/500682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251", + "K_geometry": "375682738363972084113524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251/500682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251000000000000000000", + "K_dominates_log": "22023818192647874607813444953666985881903736206036313612746003106395265325426564300055501284800537151479059598792506260057211609698257665972939610287103703522495503991268640521468388565779720840035203116901793407327300281109355799826652738612023158988653480563495462980178326421790310153311993285511080363875014086129585209379/16151056076257163999629837263146314860511740999352351174124487002458746439449913566758801940734714103910281000333506610170338211943204867836311151553491971539833647057483240180355115446049019901195150649165921694602477949447031050402304602185643073561293255666206569024273433992628359334426745985913870414790621000000000000000000", + "record_suffix": "682738363972084488524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251/500682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251", + "phase_local": "5461906911776675407516902896314001418386812681847330507008805629846230585719467479961741679261777200226827919933502101025165551576102308124681015026658038953098772097592446993225571838176489905388782165628963324364861338720127967094724909181519680729284737464293837619720704519429475185356550735160723500844882436670017141490749/4005461906911776671908199641260286085406911767839383091182872776609769116983578564556182881302209097769749688082709639322243876561914807223405165585266008941878744470255843564728068630620156935496397360993148580261414531462863700499771541342039482243200727405219229118019811630171833114937833004506639862868074008000000000000000000", + "phase_boundary": "1092381382355334680957189888085133092857398410340857560710584342030936998856615835015436637494498984427077453765790643230064302044256529400548546813850885450103195892917595210770667342050941508270893371110099115233236168429167567277491835549933886168702813288910543203871400381962983235090147129848833206385676036670017141490749/801092381382355334381639928252057217081382353567876618236574555321953823396715712911236576260441819553949937616541927864448775312382961444681033117053201788375748894051168712945613726124031387099279472198629716052282906292572740099954308268407896448640145481043845823603962326034366622987566600901327972573614801600000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "999999999999999998499317261636027916011475044842464239324136029020077113602140902923778860377052679430477139837223862778781288989661295084719515429760649097074354301841748882265156941218019554408991421172480383062950329875856427467323183567142037437528557332245064719599909074347596360247523546228520860632770874436670017141490749/2002730953455888335954099820630143042703455883919691545591436388304884558491789282278091440651104548884874844041354819661121938280957403611702582792633004470939372235127921782364034315310078467748198680496574290130707265731431850249885770671019741121600363702609614559009905815085916557468916502253319931434037004000000000000000000", + "prime_interval_packing": "682738363972084488524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251/500682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251", + "alpha_positive": "1365476727944168476367171951099437363202986802310012119854223172519392848035544062824580702604953872914561857901272609342258130139996890570806826077151332544040419405709773447174098873058788283090761420767528128303962741572352592266068902651907998328739183549871999104861981890554638981981797355180826349789376436670017141490749/1001365476727944167977049910315071521351727941959845772795718194152442279245894641139045720325552274442437422020677409830560969140478701805851291396316502235469686117563960891182017157655039233874099340248287145065353632865715925124942885335509870560800181851304807279504952907542958278734458251126659965717018502000000000000000000", + "alpha_below_one": "999999999999999999500682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251/1001365476727944167977049910315071521351727941959845772795718194152442279245894641139045720325552274442437422020677409830560969140478701805851291396316502235469686117563960891182017157655039233874099340248287145065353632865715925124942885335509870560800181851304807279504952907542958278734458251126659965717018502000000000000000000", + "alpha_below_one_fourth": "248975892454041873517895305627668442974728998687651431079075325365591176963438116221936849378783114737694793647268079848297984154979678560892016023001974226323381109985280449348330190540701020185434073641304258138034445474856628688969652431225559641871306279276329820771376244995184930701632765426484165079465249063329982858509251/1001365476727944167977049910315071521351727941959845772795718194152442279245894641139045720325552274442437422020677409830560969140478701805851291396316502235469686117563960891182017157655039233874099340248287145065353632865715925124942885335509870560800181851304807279504952907542958278734458251126659965717018502000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "499316329372680636954443717538588403573291482254827396031781686990506096020595109079423262330657009459352956938568258546701328010505779194652578906237064451303634480015531140513583546997527836137480915749409013703275810288951231960377076548483413953591594840360523510804922130475572597047395388326988857388133909570238588616430193971299671995553168349940856569597382270646234906302208261990050760379904030283918032891167455381872547282763628155156803185758494796216298155976989651732565508606215973812024595455921115255947627292571091660191604637585912421142952435441124801343698711929577062365098052581001/500682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "28043695255294213380767645345174204935220869008187672011490574125817921595062205807678126469286514743866566085150005526241607145526334572533082778392846124243806892856521501871029078221307196820744204624427747492902465262075340321596202780034889745633020147245018638785358765818331875838760093397367556321046279440689989948575527753/4005461906911776671908199641260286085406911767839383091182872776609769116983578564556182881302209097769749688082709639322243876561914807223405165585266008941878744470255843564728068630620156935496397360993148580261414531462863700499771541342039482243200727405219229118019811630171833114937833004506639862868074008000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "836077015938857203977470713650560386953940162771501566355680372962043940194286634534349023795275550617815360952905158932371153871643785441640841292005488131228886188580933272845032336485169428840861324490534623140405515934475907882671938999734113877052573192961788931015817174470947545787547749770786939300020049/500682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251000000000000000000", + "coordinate_movement_above_kappa": "1861984198466979780863770959857311289669501765487418297533155973254082489707450992228490531689344421879001740788519404727143960278844660745684237059924791177486038080740764372129731200715402843599710688575871040832287093076867024549909696024294849281670696855869203516248936670017141490749/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "167697138787442559994472879246512313139038095895789339978910637942911400285669656982413081816249706698298324971283227008545334650702217269357597796923618506747021564899476413627011878828824905951905827183195525303864349750808972660100248165989589298326241133654692645631670360349734203210159312103728478220755399/250341369181986041994262477578767880337931985489961443198929548538110569811473660284761430081388068610609355505169352457640242285119675451462822849079125558867421529390990222795504289413759808468524835062071786266338408216428981281235721333877467640200045462826201819876238226885739569683614562781664991429254625500000000000000000", + "bulk_exposure_above_kappa": "1861984198466979780863770959857311289669501765487418297533155973254082489707450992228490531689344421879001740788519404727143960278844660745684237059924791177486038080740764372129731200715402843599710688575871040832287093076867024549909696024294849281670696855869203516248936670017141490749/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "4185202435690997211877140933416804292252201447272398098856147498315245823439556473427177889548323718836429332571547746882566808121953529018498501845252649461156874214737563954805215797743757346041642245303559122459860045311517450249018298659098234614420130915432293249364155126910184669464236370349645600107614137/4005461906911776671908199641260286085406911767839383091182872776609769116983578564556182881302209097769749688082709639322243876561914807223405165585266008941878744470255843564728068630620156935496397360993148580261414531462863700499771541342039482243200727405219229118019811630171833114937833004506639862868074008000000000000000000", + "scalar_work_above_kappa": "6187933389146885547831240754046947334955657331192089644447583886620130381931345755705269330199428267721304176612902566543688746402910932630201084637885653932096246449865485737169250113053835813789840925800133412590567311042949300498904069330117975736020494618041907808374060941996101226933152872602965531541651141/4005461906911776671908199641260286085406911767839383091182872776609769116983578564556182881302209097769749688082709639322243876561914807223405165585266008941878744470255843564728068630620156935496397360993148580261414531462863700499771541342039482243200727405219229118019811630171833114937833004506639862868074008000000000000000000", + "dimension_above_kappa": "499317261636027915847552060781321443301606742670637500556081065695280426732733052392521080031510497313130312784936845702534876382665808029445508173485534323905998233223507685637877609753413655907982666361025856308184508057676660577934073266720972602271848074081710237300096739190309791648588048907617562929038498770786939300020049/500682738363972083988524955157535760675863970979922886397859097076221139622947320569522860162776137221218711010338704915280484570239350902925645698158251117734843058781980445591008578827519616937049670124143572532676816432857962562471442667754935280400090925652403639752476453771479139367229125563329982858509251000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "1812010596148051452504543986551616616134266541287664160466217335912667769083001/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10964303150903" + }, + { + "gap": "2474258299828402504286423187654117762413221978359506325826383935265897396609441349008704595688427959423471412701843251/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "5880475287862360612" + }, + { + "gap": "3378542127338387194879373523302785466328782599265954128635134021278834553369118404707030182215399849179463233391395612198393101805826696767612035996427166001/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "3153870258349491705219103" + }, + { + "gap": "4613320649259549492357293940692119050418208624733778119894816820296699012196144565337566105623916750488445561825623877379602892504611050606505369242420950934510753620100059594933177803542710676251/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1691512525702209583593850007696" + }, + { + "gap": "6299381985108194291493494288496112647610333079470738794508175087512442450043182970559254928362396117169707548701665867110810860634644945926737383972634233705081722262770679693697788867897995249568348203457977023404267499864772974249001/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "907207459480220240289900416634583715" + }, + { + "gap": "8601659501095974698961330498234512581702466844026745917510292549007771509468310655578120998259211480595272856039721155339254315762940075208822513961919259235627870268799284597156400289311424128959167712906923132975450090303975705150718329303144130796483751063329982858509251/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "486561797226353433070298141591444079281752" + } + ], + "complex_profile": { + "1": 179832, + "2": 16128, + "3": 40655, + "4": 6048, + "5": 24343, + "6": 4608, + "7": 1128, + "8": 3112, + "32": 1, + "48": 369 + }, + "complex_live": 7680, + "complex_physical": 8258, + "complex_invoice": { + "physical_stock_bits": 2641, + "router_bits": 7984, + "literal_bits": 35282, + "physical_row_coefficient": 15443, + "retained_row_coefficient": 20161, + "required_C0_bits": 200012, + "halving_integer_inequality": [ + 5329, + 4608 + ], + "G_exponent": 30000, + "E_exponent": 100000, + "C0_exponent": 210000 + }, + "bit_profile": { + "1": 105600, + "2": 130560, + "4": 19680, + "6": 14400, + "7": 7680, + "8": 1584, + "48": 2, + "56": 2628 + }, + "bit_finite": { + "live": 9600, + "physical": 9609, + "maxchild": 56, + "rank_mass": 745536, + "hosted_residuals": 43032, + "prefix_bits": 2119, + "charged_prefix_bits": 2176, + "coefficient_bits": 2119, + "three_level_coefficient_bits": 6411, + "charged_three_level_coefficient_bits": 6464, + "row_coefficient": 19431, + "halving_depth": 3 + }, + "bit_emitted_program_sha256": "e37b52e4861c39154b5891460fb45df8651c92cd68961078f8f06596f057c822" +} diff --git a/research/r489-partial-own-kernel84/LICENSE b/research/r489-partial-own-kernel84/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r489-partial-own-kernel84/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/r489-partial-own-kernel84/MANIFEST.json b/research/r489-partial-own-kernel84/MANIFEST.json new file mode 100644 index 0000000000..7f817af5b1 --- /dev/null +++ b/research/r489-partial-own-kernel84/MANIFEST.json @@ -0,0 +1,316 @@ +{ + "EXPECTED.json": "90fd7d912c39187a6402e76d83e36f1cf2880a20e565a2c7c782bf19c3cc1f6c", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "c6216973bf0107d2198ae20aaf8541d0a50fa05483627638667fb1560a52f461", + "PROOF.md": "f6d4d3221a1ce51c84f5519108fed741ce1d0cac0198aff2f0171bf06c64f39a", + "README.md": "89effdac564169b077c454f1d8cc2b49e471b15c998cad06fd401d4606a5e6c5", + "SOURCE.json": "0b3282111b8eb6fb9d6c7220d4d99d4291839cf9107309c6935a1c11d2bc2be5", + "code/apply_retime.py": "6dee3c7d023708bf0e61505f2c047cd50717e2e8552ccbe814fc497da70cdfea", + "code/audit484/assemble_candidate.py": "25b9f8e94e1964a122894c1f3d0de1a8a1994acb9a1c58ac99f1f318a73c8da4", + "code/audit484/audit_pooled_candidate.py": "81b3dbefcb8d9cbd15ef56b09cc4babff2fdbd818c67451cf04a93dfb46d33d1", + "code/audit484/audit_pooled_owners.py": "bd071b772e2431f9d71108ac4a00d165e950e08cfea0e3698baac0723bb379c7", + "code/audit484/audit_pooled_prefix.py": "1c6f346f7556ea59f4c128c2afa56bffa66be64b7165a9a0034b8616c121935a", + "code/audit484/audit_scalar_invoice.py": "652eed65fe8f72ab486dcdbe761f401f8a2d43530f2fb0c5c7777be488cd4648", + "code/audit493/review_invoice.py": "c9770db17cb668b4d148b55f3d9d9440dc50050aad6df91e021b3d0c3f4b8248", + "code/audit493/review_local.py": "0b847b6ec61d17223e5e352d1e6af7cfebfc9ff727b982e71f04f8b4363358d9", + "code/audit_partial_algebra.py": "0f80c06b4672a789f18cd72af097305a6be98abdf97e2d7d9c10cbf469110c0c", + "code/audit_partial_frames.py": "7edfcbe2b08f3af09b4d10b4e8e98a173e685f19bb1f84c3068acf2b5883751b", + "code/audit_pooled.py": "e2180aa74b5531b13d1ca675cb39aed732f67f9d66f23c65e08b7ca956706aa3", + "code/construct_partial.py": "8b9a7f1bb69626d76fec9e915134cec7199a70b53656723ce49ecc47f4644afd", + "code/emit_pooled.py": "b59db95af804a6545092c579b6c07b5dbe73e0235287d33e8f4a1e7c5618e101", + "code/finite_serial_pool.py": "6b7ec1e2a3251b67c39729d144c9a0ff9c08049d56ecbf3f8217774f2553ccca", + "code/guarded_lemma.py": "6314c8f453c5ddabc48d7792dd8aeb1b68f6527f4770461d0481a790392ce19c", + "code/rebuild_retimed.py": "e21dc4a0d75cba9629b35567244c9ff1e599a78b667ba267ad6defbdd40ec5ff", + "code/release_admission.py": "8ce6420b02bb4046d0febc066f67ed2f60a26bc32f889942ed49599cfa73e8d8", + "code/retimed_lemma_mutants.py": "c1c0e6c43db07925a745321e8c092d292be0fac3c5ebd406b32996647bbf076b", + "code/review_composition.py": "a9480efa4d289144e3931a07e1ad78e5fa19f1381808b1e66d41d5bacf1097bd", + "code/review_frames.py": "79aa0105576cd27559bdb033ac5a4d7ac257ac29f97abe421a1dbf92df77e6a7", + "data/COLORED-OWNERS.json.gz": "7c6e1f7c8506fa28938f8cc56678f7023af3abdb1f1084d2c95e86d3621c5ee6", + "data/KERNEL-SELECTION.json": "08b2e803d4bbdd73e6c56b52a07990c4dc53ea4384955148dcca9f3317b5c9c7", + "data/RETIME-FRAMES.json.gz": "b40337a563bd21c27240fa2742b53fd81a3ec94a414021e9f4a190983498d39a", + "provenance/BOUND-ADMISSION.json": "21db5fbaa6d73c03691eef54f965792a5f2d5c073defa19be2c968944535ef92", + "provenance/MUTANT-ADAPTER-PREFLIGHT.json": "2493cc35690117c2b90b96b51761f37d91975f3e166fd830430d7057d0d1990d", + "provenance/NOMINATION.json": "0bbd0d7df7ea8c111b6e58a8e4757e66d8f7947fc9b29b32ed3ec26f2eb3d9ef", + "provenance/POOLED-ALLOCATION.json": "7bd4ccf92bdec87ea99aca9ce0cefbed6a4a42d85dc3e935b4ca7c4ec0f0f1a5", + "provenance/POOLED-COLORING.json": "5c683d2768c60a7d7eb0bddca215717d8b390614dd2d45bc6e36e1a33b2db0d1", + "provenance/POOLING-PROOF.txt": "dcc30730f8fd7bd6c68dbf0d0df1bc7a707d608bd0f286a61f375716a13987cb", + "provenance/PR484-INDEPENDENT.json": "8427cec228cccd2030cd61bbdfb52e38207235ffde94459f2385a5649efc81b6", + "provenance/PR493-INVOICE.json": "30c0ab2f4f9b8bb702d72c72825c8f1819d2ad1adb73bc26d3cfc43915611bf1", + "provenance/PR493-LOCAL.json": "0c2ac175eb853d98fcde7a4b0a6a3c0a8dbbbe13e5987e85881d6260204a5eb7", + "provenance/RETIME-FINITE-ADMISSION.json": "b46a878c6ea3c5da9d2eb1c7a7f01ef34a887762eca08e382167630baa3d9007", + "provenance/RETIME-FRAME-REVIEW.json": "d3df6f943f38a58a4848e3437983b23b706f148fce1d30e64aedfefee34c9644", + "provenance/RETIME-FROZEN.json": "d4b8df5ea74be9de1ca6ed58632c6f1f848aff90bc4e7a4dd9f4033f543c0688", + "provenance/RETIME-GAUSSIAN-ADMISSION.json": "ae6306dfebaffa34c5beeb375eead93e51aa5b0632b1655828f7462b9cbec438", + "provenance/UNPOOLED-SELECTION.json": "85089fb301976b5739cb3d219070ae89f75e42582a54c5a0557f8530035f9eb8", + "provenance/nominate.py": "ff393ff86291218f8acd9f086a5d3426e67d765b2712cb9937434b0b18c593e5", + "provenance/retime_continue.py": "e3619582761711f7803593374dff9221b95c5ea9479b5e8c02352541b584f6d9", + "provenance/retime_neutral.py": "3ac82aeae437880b3ded869cfabb85e3739fb07aaa2ae00a79aa126926c2491c", + "provenance/retime_word.py": "6be3b24558180650490781d71cba29e4227a28d5e7fc72780249bcae1d95ee53", + "vendor/bit/EXPECTED.json": "3494ba83280cc86548fe0cc6695c50d23e6b6ffca85aeb1a33337c1196e280cb", + "vendor/bit/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/bit/MANIFEST.sha256": "7f25c41d0400ef5adf763eae6e166003a9b59e5a655b860c04b052f6731c7297", + "vendor/bit/NOTICE.md": "5f4b7fcbf99f572be28b6da612ce775363908cdfc7810f7aca167be01c86e49a", + "vendor/bit/README.md": "e5212e8058c92a2b02cc12b4e174a65ce1cef7b4d7977ae770e64f5ff91b7204", + "vendor/bit/SOURCE-pr370.json": "03de1d341196cfa8cf1d39f3cc8648b25bb5f39c3c602a728cfbd089e8253ac0", + "vendor/bit/SOURCE-pr381.json": "16b1977240ca9acb58fa64572fb4231a423bc10bbf3e7bb30f1c8201fe369ba5", + "vendor/bit/SOURCE-pr386.json": "87c659ba932525631a40be14dca28a6a2efade8641f23bb08d6e1567fc991131", + "vendor/bit/SOURCE-pr436.json": "4a4f99f5bdb7530a0dcf9433f7f02afbf2abf908e718f7c63ffa5503d4f49693", + "vendor/bit/SOURCE-pr445.json": "e6f4a272442bb71ef68aaa3545b271236f9c99297e444fa01c62b0b5fb6a170f", + "vendor/bit/SOURCE-pr448.json": "c771fa9be492408a78d6d970c839e68c4dfd1b66f4f4a4748e3d12726a43cf27", + "vendor/bit/SOURCE-pr451.json": "a639956eec858341987a815b7464ef472505300db754b5f9ac012dd01d18c8df", + "vendor/bit/SOURCE-pr458.json": "cbdea984a46ab5de354b95e73fd76c1918fdc6676c658398a552772c4dc3dcaf", + "vendor/bit/SOURCE-pr471.json": "499d861e090c9e646d978dd67890a8e58a9ff6bf08512684e66605179132076b", + "vendor/bit/SOURCE-pr472.json": "6753bcf50c91806b75dd4dbe3963a79699a614d0dab8ce32b261cc3e76b288b1", + "vendor/bit/SOURCE-pr473.json": "2515c4f23dfa22a21913d92597669770f7f44c2a5b3ef069ef68a0c89779a656", + "vendor/bit/SOURCE-pr478.json": "9c7c4ea678865a955b0c89f0952927159976fdf55cadc6a488dec5757f03fe7d", + "vendor/bit/SOURCE-pr483.json": "24e3eab4a985e115adb7f8665a401423e9636e9f16cc4373ec68cc86950445a8", + "vendor/bit/SOURCE-pr484.json": "b92f43fbcba3921a1aa37bcb9f05cf5fa612ff708785e05512438a6317bf0867", + "vendor/bit/code/bit/checkers/columns_h.cpp": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce", + "vendor/bit/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "vendor/bit/code/bit/checkers/gram_frames.py": "223a5a07731fc315a90a3e48177796babc155c1d9985c7ae5017eff6af2a0608", + "vendor/bit/code/bit/checkers/json.hpp": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "vendor/bit/code/bit/checkers/legality_h.cpp": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "vendor/bit/code/bit/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "vendor/bit/code/bit/independent/checkword.py": "11bf9620ca9db16d52d9fe806b814fc9ec9a89c4d7645354d1861d96f6e805ad", + "vendor/bit/code/bit/independent/interface.py": "2c63a039f97e3a11ce5a6b83302d4f5beda160c1db14164a5a9b0855aeb19d3c", + "vendor/bit/code/bit/independent/mutate.py": "0ff65aace5da4b57d96235bf830f8f11969322e75134d498aeb70e9753ec6b0d", + "vendor/bit/code/bit/independent/mutate_mut.py": "3b002c19a5dcca76a5594f2a30fac7c01d2b45fc96b3e7cfbfd8b720f5ffb4e8", + "vendor/bit/code/bit/independent/relax.py": "d6e9f58de3fa41f538516b6227c249d61fb30f0f6843027cc8a07a1a372fa6b6", + "vendor/bit/code/bit/mutate_records.py": "b0e75d6550412a7be4017695e6b237392b611bb852ad8ff309d6682c9f166a4e", + "vendor/bit/code/bit/mutate_records_mut.py": "a9e085ec60d5657cd5d77832e3d95004e81b9f4f249d9e0fc95e345366cb2d2e", + "vendor/bit/code/bit/regression/stage_cohort.py": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "vendor/bit/code/cited.py": "a4c2dd4755f2a45ceda327b36d9ee400c2804893000626ca8ff3f6ee296fd842", + "vendor/bit/code/eleven/adapt.py": "d8a8c13b484d985f0133a5d06de4a78b8477314f922b9f693ba73640b7184d6b", + "vendor/bit/code/eleven/assemble.py": "c47889a606701ae592374dd82a13cee8c5a4e8449b7facfdad2d90563a30a18c", + "vendor/bit/code/eleven/audit.py": "5ad832830c19ec6c904d1b64480f6b1e71c5673fdd38d487d17e179b1d197c09", + "vendor/bit/code/eleven/emit.py": "b0b25955875625ed63f82690f83aef976e3e9a978ae6620b23a23fc1207acd46", + "vendor/bit/code/eleven/local_audit.py": "95275473d7f9811011bda760dd0f04de5169c2a6922456dc9a5725a5d671f941", + "vendor/bit/code/hub/e8-r715-whole-hosted/code/assemble.py": "abb60c35e448e0f94073f38a0352d11249aaf7bb8dbd7352414ae60a1d2b79c3", + "vendor/bit/code/hub/e8-r715-whole-hosted/code/audit.py": "d28062127a9b0d3866a3b79aad98a307233b20ebdb94cfb9f197d726b82ffea5", + "vendor/bit/code/hub/e8-r715-whole-hosted/code/emit.py": "98d77cefbc3a76f9f10bd7df3a2590ab88b411f6afe77b5f8d73f1602eb2bef3", + "vendor/bit/code/hub/e8-r715-whole-hosted/code/local_audit.py": "23eda3fe3d774e7f2dbf4dbdd4ff90d69ae7d1762ff95c8629cdc7667aa3fe71", + "vendor/bit/code/hub/e8-r715-whole-hosted/data/hosting.json": "765382d4fefd594e94c8c5826ec6300422ce9f79c816d7f7323ef85e99320f28", + "vendor/bit/code/hub/e8-r715-whole-hosted/data/residual-isometries.json": "750221cc66badd0ed0a74e7aad2d59f91f89c107370af21c6d929fbdd4a08a9f", + "vendor/bit/code/hub/e8-r715-whole-hosted/data/word.json.gz": "b2af02f593cd161bea64e6cd793508386914136be519f80726c071697379d5a9", + "vendor/bit/code/hub/e8-r740-replica32/code/bank_routes.py": "7c6997c455bd55acca3a1603797c34e7733d557c27a7694a1429ff15773a505d", + "vendor/bit/code/hub/e8-r740-replica32/code/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "vendor/bit/code/hub/e8-r740-replica32/code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/bit/code/hub/e8-r740-replica32/code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/bit/code/hub/e8-r740-replica32/code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "vendor/bit/code/hub/e8-r740-replica32/code/tile_m.py": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd", + "vendor/bit/code/hub/e8-r740-replica32/data/residual-isometries.json": "e12ed7ddd13cee101ba74a083b54665fd64d0b122b0bad5b83d817dcc8bae9d8", + "vendor/bit/code/hub/e8-r740-replica32/data/word.json.gz": "d8d6d3d3f336720302bc40b3c1504fe3c3583a7a8d707bb9bd7b21f85e5e69c6", + "vendor/bit/code/hub/idle-axis-hosting/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "vendor/bit/code/hub/r740-hosted-eleven/code/emit.py": "ac63ee481f3d75cb9f0658faaa2412db81d55bc44d9f1ff1c0329ce1e75aa0d4", + "vendor/bit/code/hub/r740-hosted-eleven/code/geometry.py": "9554182d67e434ea84b4430f909a2c400abc755d8487b51454a8e6968e62859d", + "vendor/bit/code/hub/r740-hosted-eleven/code/row_bound.py": "de4a9b9cd797e1a05da56f62cfe725c8728cea3a4aa031b7d1b0a68f869760d6", + "vendor/bit/code/hub/r740-hosted-eleven/data/selection.json": "52dbbb68e8c147690d15eaa1d952df05d074b0c121885a4159d9f6732f391872", + "vendor/bit/code/hub/r740-hosted-rank149/code/emit.py": "ac63ee481f3d75cb9f0658faaa2412db81d55bc44d9f1ff1c0329ce1e75aa0d4", + "vendor/bit/code/hub/r740-hosted-rank149/data/residual-isometries.json": "b23fda74a7979179e8fd83ee9870c1e232442cc90c05077adaabfe31d050d1e4", + "vendor/bit/code/hub/r740-hosted-rank149/data/selection.json": "4d9c2cf6a3d31a6faa287731e0721cb16601b0bc5c1a186b9645bfb5760ce8db", + "vendor/bit/code/hub/r740-hosted-rank149/data/word.json.gz": "41626789888ee070e1b435fa380b10ab9b88e3cf7d8d8e166ecef17269bbcf47", + "vendor/bit/code/nine/geometry.py": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca", + "vendor/bit/code/pricing/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/bit/code/pricing/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/bit/code/pricing/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "vendor/bit/code/pricing/prime_witnesses.py": "98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab", + "vendor/bit/code/provenance.py": "e28fd87d0e34a6f6f6f1fddb6c4891deac220662c954de855d7aa5a7f9cceca4", + "vendor/bit/code/skeleton/e8.py": "721d859a6517d665ca84d03ef89668da3aae7433ffb0ee47faf37f2aeb85450e", + "vendor/bit/code/skeleton/gen.py": "7cdcf48078ed4beacd2e240aa8145e4aa6984558748d07659cb1b252786e073a", + "vendor/bit/code/skeleton/geom.py": "bb356568fa05e7bfd5fcd9012903611cf742729a99b4dc3a13685355b2678ae3", + "vendor/bit/code/skeleton/wordkit.py": "2b6c12d96f24a4e81f2c807827c2b74cf80037367fc8034e8c871dd5ce008351", + "vendor/bit/data/bit/bitE8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "vendor/bit/data/bit/bitE8mut-r489.json.gz": "835eb96e147740fc7454f8cfb3dbd34ae89524b1dbd89a61e9288eae8ab6a5b9", + "vendor/bit/data/complex/pr448/EXPECTED.json": "18b42250c3faf6f0df76fcab6c3a483582192ad7bb09cb1985f4b0bb91d67024", + "vendor/bit/data/complex/pr458/EXPECTED.json": "a4312cb0c53c2066a28b683a971a41e7d76c5f6d828a96481c3ae7b3c01bb2f3", + "vendor/bit/data/complex/pr471/EXPECTED.json": "188f9d1a7450496dbfd8d64381febd20b0597141537eb1a003435297df2d1720", + "vendor/bit/data/complex/pr473/EXPECTED.json": "70e515f0a5a2f9508cd030d35a99f90981a6eccc027c9ad5a3c77f5860310910", + "vendor/bit/data/complex/pr478/EXPECTED.json": "07bd05d14c71df8925b0b03510b2b337334b73ac425a94e03b2ec34ed2680164", + "vendor/bit/data/complex/pr483/EXPECTED.json": "799fa4ab2f785c478c3cdcb6c1c0428a5ce6e3ddbe4a4b2fd88630d811a593f6", + "vendor/bit/data/complex/pr484/EXPECTED.json": "0c93018a23bc573c7d155d4786e0c3978e95be0fda974076697939a1a1d8e5be", + "vendor/bit/data/complex-b.json": "dce3f4b76aa3f6c3ba826ce556ffa61398b33e81e4d1a226dd2a36ce684fb02e", + "vendor/bit/data/eleven/hosting.json": "61f790657c465d16d3455f48f90f816797b9ea08bf02dbd0c90d2cf41836257e", + "vendor/bit/data/eleven/residual-isometries.json": "0fa5b353a0321af2ce4e2045db1d4c2d6418a11663894e2afcdb1eaa1984bddc", + "vendor/bit/data/skeleton/d4part-pairs.json": "d69ffe3326140bc541b8f1639e02db43a5835ab8ca02cc742b5bee2bf2ef1ba9", + "vendor/bit/data/skeleton/plan-skB.json": "f6162bb4d8092bc233700fa7ebc6a0d79f2893135aee18e998369044abb3f44b", + "vendor/bit/discovery/README.md": "b09aa45d5651720e10326cde559c863ba3ea45fe2fb6b4aaa3bfaa66a8fcf69f", + "vendor/bit/discovery/d4part.py": "a64927c340a4772ce0682b349e0c90c80d1a766000ccf397fb41b36a31929179", + "vendor/bit/discovery/host_select.py": "2aaaac18e083d289d4341e734c32571c89c51fefba04b388d407c7372b906dc7", + "vendor/bit/discovery/plan.py": "40e8dea1b4b71c5afd5993625f57bcac089dd2f72dfbc4dbc23ce917e5a61010", + "vendor/bit/portable-include/bits/stdc++.h": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99", + "vendor/bit/requirements.txt": "6023d480f929cdfa4e2f35e361eea003451cd6695af806935a32038b0115abb5", + "vendor/bit/verify.sh": "0f9248aa3611dfe2b5d59dbe992c6f7d21a0cc4f1de2b5ed05a6110191191224", + "vendor/complex/e8-complex-gauge-kernel/EXPECTED.json": "0c93018a23bc573c7d155d4786e0c3978e95be0fda974076697939a1a1d8e5be", + "vendor/complex/e8-complex-gauge-kernel/MANIFEST.json": "56199b350a49a6d9c114eec1620e889eedb89170af2b872bf8b8f42df8a961a2", + "vendor/complex/e8-complex-gauge-kernel/NOTICE.md": "7c7a022afe969a09ad5320935daf7db256b8f25ee56ecdcf9fc40eb0836e74ce", + "vendor/complex/e8-complex-gauge-kernel/PR-BODY.md": "839708cb1f21d34f7ecf8d9edc5c9ec800b747d92c99e384e0bc246211bd01a1", + "vendor/complex/e8-complex-gauge-kernel/PROOF.md": "a6bf0662abdd9bbe0649b52cada82c3341e61b49b966b93aa6f8f1ab30d2d949", + "vendor/complex/e8-complex-gauge-kernel/README.md": "64bebef404af500d4f32e3cb17ba143a53c7f251712246e1b85a6887b2d444bc", + "vendor/complex/e8-complex-gauge-kernel/SOURCE.json": "ee6dca44a773d457b9e0bbfc8d3d5f571673913686fa57187e63a84857ff505e", + "vendor/complex/e8-complex-gauge-kernel/code/adapters_gk.py": "a8d6d9ccf20c261cb0b216baa9906f2f7689e1bb1dca070313a60b2cb6d3043c", + "vendor/complex/e8-complex-gauge-kernel/code/assemble_gk.py": "e377ef9d9e90168290a4640250c0fb9c05015104bcc4827bc5ce63f6ca63763a", + "vendor/complex/e8-complex-gauge-kernel/code/audit_gk.py": "cb79c6b788333a031e14c7f134823f5f6147d7f1dcc6e5e3b1420743c32f8ebc", + "vendor/complex/e8-complex-gauge-kernel/code/audit_hosted_gk.py": "c46c69c1c6fdccce991bf5d5ec7def344d2749c53ad2db976a50ba3a6c37d657", + "vendor/complex/e8-complex-gauge-kernel/code/controls_gk.py": "cf83aa95f03aa812c413905df9f75f13ac8f92f5db6a83cf9b1868aea2dd9de0", + "vendor/complex/e8-complex-gauge-kernel/code/controls_hosting.py": "573966c7ad1deac24464414d3886171f594bb3ae3e7236a9ac2447cc40b20211", + "vendor/complex/e8-complex-gauge-kernel/code/controls_pipeline.py": "cc6fb8bf4644cc3a1799f3bc90dc074adb5663d1889c92f7f73ec9f307acbd36", + "vendor/complex/e8-complex-gauge-kernel/code/controls_sel.py": "d2777571d59736c3fe62b81506ae62c22a3816fbc3abf9303d914e6da6d64258", + "vendor/complex/e8-complex-gauge-kernel/code/emit_gk.py": "4e415bff1d9f154496ed38e6889929b600aa0f3d583a375e8ca257ad8f51fa23", + "vendor/complex/e8-complex-gauge-kernel/code/gk_common.py": "e68d190fd436b2f3955decb590adb53344d5d4ea0a19d62d86df1e4b55ecd198", + "vendor/complex/e8-complex-gauge-kernel/code/gk_word.py": "f027a9273bcf4e0971258c160b7d3b3c196366b32a529cff6e6a0e666b03826b", + "vendor/complex/e8-complex-gauge-kernel/code/hosted_gk.py": "8d2c29a5f79e6a1391f96baf44dd9fbe35203b6c11b02a7b2d238cf792ea163f", + "vendor/complex/e8-complex-gauge-kernel/code/integrate_gk.py": "2e807893180a3716b36a81f1a7d933bd55f2299489b6f236ba5c644d87739209", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/check.py": "f572b7129a546e1b1193fdd5baee4f731a5b9b8a4e8dc7ac170bcad7758e5b9a", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/gd.py": "64cdb2cfefc9ec3ed80c277a18848778427c3d3dbda9b7be13f740522478e1de", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_e2e.py": "8fe3719e8ec5ec49af480b40c15f07612a356f5071ea30e17ae2d8931b3f20ce", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_instances.py": "47dcf2e9ae2d99699424d684abebc3d1d2d25b7aa6d440761e19835d140f5fbb", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_lib.py": "00068882bf2f2ebadd3f87c94204f226c7938966124bafb9ce6da89bfaf91b45", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_mutants.py": "cf0d1f8e90a0780244b6de38d6aad08dd42f4c439397a6d5a61fccd23fe7e798", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_phys.py": "0ca37829b596d83d0b94c5f0b6b278a100f22e626b2ab3b5210a38f9657c8a27", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/run_labels.py": "5f053e553b1c26e553a844e2891a73b6cc6b79404a7bb5d4722529f7db0d592c", + "vendor/complex/e8-complex-gauge-kernel/code/make_meta.py": "06e44ae4fc4f3a88989828d6cbdf95524a2d9f65753045cbb3e6cfd7e042d96a", + "vendor/complex/e8-complex-gauge-kernel/code/onehost_gk.py": "416b318c1b6b8c7b72e24713b1b18d8772ec368e042a321b4418c63a74711590", + "vendor/complex/e8-complex-gauge-kernel/code/replay_gk.py": "2422b44fc2fb4742bb575572337158a15fb6831630f8746a1c7ee3133e0ee2e3", + "vendor/complex/e8-complex-gauge-kernel/code/run_variant.py": "feecf7dff32860a02fbfb96da1049ba35d05b3baf74c4f741b878d4d91903903", + "vendor/complex/e8-complex-gauge-kernel/data/SELECTION.json": "89b19daca7db07a7e09723b1b74b55682ae64af98072dbb3110d0376b7f052b2", + "vendor/complex/e8-complex-gauge-kernel/data/bit-suppliers-pinned.json": "77121915641c8fef57ab10585fd5e8b13c817356bbbea21f4314d381cd029b83", + "vendor/complex/e8-complex-gauge-kernel/data/selections/empty.json": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "vendor/complex/e8-complex-gauge-kernel/data/selections/gauge80-kernel42.json": "436e4acadee227dbfcb66386c9ccaa38e68054e8ed4870bb174eeb41363375bb", + "vendor/complex/e8-complex-gauge-kernel/data/selections/gauge80.json": "41e62cfd0d50f348eae3f81d9f62f7dab2667294554398d8bca43aadbb2c291b", + "vendor/complex/e8-complex-gauge-kernel/data/selections/kernel79.json": "febded05174c364049632db3214dc9209426d1b81581cab728d79fa6594c9e47", + "vendor/complex/e8-complex-gauge-kernel/provenance/README.md": "76f04346717183300ec2d3bf852d5bacc8a6c3dee458a17a1957613ddf033af0", + "vendor/complex/e8-complex-gauge-kernel/provenance/cxcheck.py": "1df8db02ad02e8f1cf0bbaabd92d7d88341f8e10f0e76d7777d246eb52094ac8", + "vendor/complex/e8-complex-gauge-kernel/provenance/cxlab.py": "46dd697395d69776eaefa7d5843ada050528d76832967c76afa2e80beb7d75ee", + "vendor/complex/e8-complex-gauge-kernel/provenance/gauge.py": "a0fbf14085161f89d52343de80cddc8a11451bac635bc2677549ae7a26562491", + "vendor/complex/e8-complex-gauge-kernel/provenance/gauge2.py": "3dda541e514944fc6486407a889ac6a0f3b1eeab08092799dec672a89cbcbcb8", + "vendor/complex/e8-complex-gauge-kernel/provenance/gauge3.py": "fb74644f093f8a725af146b560380b360dc655edde61c7695d1a2d9b33fc58fc", + "vendor/complex/e8-complex-gauge-kernel/provenance/gauge4.py": "e4e438034a3cd4c49adc744de86819dc574b130fb8bc8dc48b1d9955a3601a42", + "vendor/complex/e8-complex-gauge-kernel/provenance/hostmodel.py": "1fe732f944166dca53363d63b0bc2a5c4ceaf0ffdb8973f554720be07bf07395", + "vendor/complex/e8-complex-gauge-kernel/provenance/iso1.py": "1a7e3e08b0ecb9cdf19525ef23c5f790cf19427e238e71987a30c35aa54d9612", + "vendor/complex/e8-complex-gauge-kernel/provenance/kcap.py": "96e4e067d850f1b3b5cdf241371956a99fe4f60229edd3fe43b3f7d14ae78bea", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern.py": "bdc708e887bda780b3145e2f536db9ace13cae165447c6057bb8b3476f8f1dc0", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern2.py": "62c02a73484f0b513c2d7bd4bdd9febf1c84bf42457506a36bab30b97b267efc", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern3.py": "e31d8b9728881d7921c404e55b875e6f8cea46a0c9fc6eea8263416cc6fba109", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern4.py": "0a21980027d427a6377a525d7082e460eed9e8577328831e2edde7eede1998dc", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern5.py": "bb0bbf4504f714d5d14c362d90c0d66c85c912e5b2f19c7401040e967c8a3c0c", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern6.py": "849c7e9404edb5bb2d2064339014d6bbfd7bcb0ab62a4ca09d7d2c658dcd14c6", + "vendor/complex/e8-complex-gauge-kernel/provenance/sa_long.py": "e2270814c0ff0617b1104a007e4604ac713dbb1a033771d4a5357796198e646e", + "vendor/complex/e8-complex-gauge-kernel/verify.py": "56a36950ed486a1b38334e8d75fd1efe75da7ba604fb4fafe7d8dc1e388349c5", + "vendor/complex/e8-early-reset-kernel/EXPECTED.json": "6710a99055d7ee1d83d9f811822bb72db84f6ce95bd4e1e17f1df1659c7e958b", + "vendor/complex/e8-early-reset-kernel/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/complex/e8-early-reset-kernel/MANIFEST.json": "95a9570287b64d22de30e6ae3acf931d5f6daef1a163f0c99532e1a24639fbc2", + "vendor/complex/e8-early-reset-kernel/NOTICE.md": "ff88b6031fe2fb5cbc483e8fcc08d228eaf2c982221adb3659da234dfa24cfeb", + "vendor/complex/e8-early-reset-kernel/PROOF.md": "fb4e1c3a23e3a0be48b5254133e584dad6fb523042ca8ef70358684fb9185962", + "vendor/complex/e8-early-reset-kernel/README.md": "4d7d736eda667533ab55bf3949e30832d4676d7ebeee00d9608307ecc5aacd4b", + "vendor/complex/e8-early-reset-kernel/SELECTION.json": "b5f5d8c78d912820c8ed1a67c21062bec799714b9caa6724dfd515306ad42a2b", + "vendor/complex/e8-early-reset-kernel/SOURCE.json": "a5e84250b687624b2158597831fb36a5f2b068983862c491f8e1020c9806cc65", + "vendor/complex/e8-early-reset-kernel/VALIDATION.json": "77ad775cf69f5d913568b6276b0dfeb2eaef0306f57b71c0a467bff793807267", + "vendor/complex/e8-early-reset-kernel/apply.py": "0d530e9703e1d1734c7af205bd393cba89ac41f75ed9781ea3dc5e46650f44f5", + "vendor/complex/e8-early-reset-kernel/bit_audit.py": "203bb609952ad7b7ca761e9f9883ee9fa35a0a0474503b396d47a31169102e7d", + "vendor/complex/e8-early-reset-kernel/bit_global.py": "79c7dc84e65dca10c35c842cf170e4719d45c38a25d03bf762332b24c700b6c9", + "vendor/complex/e8-early-reset-kernel/bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "vendor/complex/e8-early-reset-kernel/combined.py": "4d514b6c70e969ec306d8c2bb38edec95b0cb7fa09f48dadbec8aa1eead69ce1", + "vendor/complex/e8-early-reset-kernel/local-evidence/ASSEMBLY.json": "7c3cc4b503e4cf0fd3e050be46ad0da183c5b1c490f4901245df944fd9d6194e", + "vendor/complex/e8-early-reset-kernel/local-evidence/AUDIT.json": "76a146a9123d8b653e6e46ff93f153653f9cefd0f5c3fdd264a59f1322110262", + "vendor/complex/e8-early-reset-kernel/local-evidence/BIT-PRICE.json": "9a4a320cab1ce62b0c2329ac1bf3b81f73580fd603a406e4bfaae2962dfdad35", + "vendor/complex/e8-early-reset-kernel/local-evidence/FULL-PYTHON311.json": "62b37525bf7b60c0d9101ed571681f3bf46ea75df065939864307e4986018332", + "vendor/complex/e8-early-reset-kernel/local-evidence/FULL-PYTHON314.json": "85797531db037d06fb597a4c9b6ef6bd71e6a0ab4f220ae70b1b6bf3aeda205f", + "vendor/complex/e8-early-reset-kernel/local-evidence/GLOBAL.json": "16c4e829eea1b2d12b70cec7e6a9c0e33ea0eae98a40894a3b779790fd2efbb3", + "vendor/complex/e8-early-reset-kernel/local-evidence/SOURCE-SPANS.log": "bdf95dbce8337be57aab8a3d3b42a711ee276496c40cbb4c5356fc9cc9b2e811", + "vendor/complex/e8-early-reset-kernel/source_span.py": "4772d177f37254c6f854af5ee3871aca193cfb24307a53c143c3bf517e56631e", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/e8core.py": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "vendor/complex/e8-early-reset-kernel/verify.py": "16c07414bc956744dc93b8e35b642267ea9819be922b0d3e081c543fdbf92a70", + "vendor/complex/e8-early-reset-reuse/EXPECTED.json": "5521c7e995fec77941243b28e090f95f2188f193d5f61275275cfa11215eecc0", + "vendor/complex/e8-early-reset-reuse/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/complex/e8-early-reset-reuse/MANIFEST.json": "4d23bafa43634a59e25f875333408b67cbecb1c912929824b5d45dea4de51da7", + "vendor/complex/e8-early-reset-reuse/NOTICE.md": "c4085541471fe63d8f735beacd397d356446376ad3e56b2673940a2df3b8437e", + "vendor/complex/e8-early-reset-reuse/PROOF.md": "09388e2f9e6b8fcc626a5172d55c45a957835075c51c68d1e86fd42ff4655ae8", + "vendor/complex/e8-early-reset-reuse/README.md": "442bf686c0b24b9d7781b7b138f32fddea5d4efffeddc6e41d04719d2545e0cd", + "vendor/complex/e8-early-reset-reuse/SELECTION.json": "9d47ade3fb69b3ef62a1a3ae75cebdddd57d144923977c5f2a07848ab596ea32", + "vendor/complex/e8-early-reset-reuse/SOURCE.json": "c52287239c43aece2b3533ef48ee204d845d652066bca716c288b0c47e779521", + "vendor/complex/e8-early-reset-reuse/VALIDATION.json": "bcb864a6b73d4ff4a24ab70ad51287653723c2115ce1c81db7817b81df2d9e92", + "vendor/complex/e8-early-reset-reuse/bit_audit.py": "219eb4dd8e5380fb0432daa6a30c265755a78834616b2c5fc7aa161feb0231ee", + "vendor/complex/e8-early-reset-reuse/bit_global.py": "9c2178df133dc663416aac13d8c8da80a9e4f5f7174bb36413180fcbad994ffb", + "vendor/complex/e8-early-reset-reuse/bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "vendor/complex/e8-early-reset-reuse/combined.py": "dc621dce9ac1634a2701318311b30dffee7cce7e0c6be7ae808f44b27eb17f0f", + "vendor/complex/e8-early-reset-reuse/local-evidence/ASSEMBLY.json": "c9ce28f59a5e460d39a888bbbc464e3fd6dd1c0b2c54ae86baeeea99febc8176", + "vendor/complex/e8-early-reset-reuse/local-evidence/BIT-AUDIT.json": "2e458c3936e42539095610a50c730266dddd96e94d1ead171a99dd5f1fe9ef47", + "vendor/complex/e8-early-reset-reuse/local-evidence/BIT-GLOBAL.json": "39f89d1e5bf51e9b1f1155e123dc3226627e465a246d37bb00f55d44d20bcaa0", + "vendor/complex/e8-early-reset-reuse/local-evidence/BIT-PRICE.json": "96ec606146b5157871048e28f6649c31c1b6117d43be732e6a96bcc269c0e1b6", + "vendor/complex/e8-early-reset-reuse/local-evidence/FAILED-INLINING.json": "95cbb0e6df953d25a888198c1072edf03db85b7c967a234680db3e095abd2dc7", + "vendor/complex/e8-early-reset-reuse/local-evidence/FAILED-LATE-RESET.json": "f6ed36b59de745d50f37fcb4c80d129d9a2de0dfe1fe3de2d18e678135f7d9b6", + "vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON311.json": "1dcca855b20cbac311a435f23f60001c342083edbef3194ba42a30e1f24c1982", + "vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON314.json": "5687ed9209e11e64304d008a4a10678dc07cdc3522f5112c9a80557d45125c4a", + "vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PYTHON314-INITIAL.json": "0966528d4b30459d8b35296f31dbadfa34cdc7792419b34ab2505b7098923325", + "vendor/complex/e8-early-reset-reuse/local-evidence/PARENT-FULL-REPLAY.json": "0ba447d6de6edd9fbe2371c36e3605dffa0c6526a874cfcb9bd19285c056bf1e", + "vendor/complex/e8-early-reset-reuse/local-evidence/PYTHON311-GZIP-FAILURE.log": "ec1937c575536aeebe8f9c22d673fd66d1355ff870e2fdc80346205b29e42784", + "vendor/complex/e8-early-reset-reuse/local-evidence/PYTHON311-INITIAL-FAILURE.json": "7902e8ca1e167b98d1c29170f8d57c9896b38ccab89065e4ed4e2c3feea79076", + "vendor/complex/e8-early-reset-reuse/replay.py": "e0782ba05dda36323500390349d1180f6117a9c6112b09b9e21e29f67c4e5f5f", + "vendor/complex/e8-early-reset-reuse/verify.py": "4e2082878acc1298f4354325b28f3cf047006170a9883148e7cf23002f6f02f1", + "vendor/complex/idle-axis-hosting/EXPECTED.json": "ed83c1bf1ca2d01eaab5149a34520806a07ef375dfa9e3ed69d123f4be4c9960", + "vendor/complex/idle-axis-hosting/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/complex/idle-axis-hosting/MANIFEST.json": "f68b82604363329618529313ac9c3796dc1e88b176eaee4a7b0dec9be428e987", + "vendor/complex/idle-axis-hosting/NOTICE.md": "027a868628d0408602dbeae688b031ed9b4abfd6e5401f6e8106a3eb25ebc4ca", + "vendor/complex/idle-axis-hosting/PROOF.md": "cfe34bf0b64259661312dae22c3a23adc5bf6f6326951eee5c1488ccfc347542", + "vendor/complex/idle-axis-hosting/README.md": "1151f74cad54ac4937282b7a8b5d1108ed4ce35944ef9b7bb7d17abfce1fe4a0", + "vendor/complex/idle-axis-hosting/SELECTION.json": "315d54be472842707cce879618be477d8b897050e873bc136d114eec6a232f97", + "vendor/complex/idle-axis-hosting/assemble.py": "f9a2e6a42aadcf971702a5a867760a092566ed03356f4f34387d38f4093ad1a6", + "vendor/complex/idle-axis-hosting/audit.py": "38594423a401110bd430b734037c6ecba422ee6a94d71709984e0afa9cd1edf8", + "vendor/complex/idle-axis-hosting/bit_hosted.py": "6dfbf26213e8adf87563b3575cfb722bd07ecd65627f056b3293411dd3d89a61", + "vendor/complex/idle-axis-hosting/complex_hosted.py": "829c5c4f4bdfccedadd31505f1f0a394f7a208d1446b7bbf9cc92d3aa1530c0c", + "vendor/complex/idle-axis-hosting/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "vendor/complex/idle-axis-hosting/verify.py": "737a974d79fdd232b6c4b9e059c56835079971447342ed7ca3b82a614e30cb53", + "vendor/complex/split-centres-global/.gitattributes": "2f9541c7c27f084baad73b4cd50ddaeb264cc3aa8dbf13ec21df5ab3f673ca7e", + "vendor/complex/split-centres-global/CERTIFICATE.json": "f71580f22193726fb582eae604807ff70a7302265e001d9484a718e63bbe14c4", + "vendor/complex/split-centres-global/EXPECTED.json": "9b8e56eee3d5bdabd2e3e6e4ba0d9eba537525fba25a54126f9f0e41d2491a06", + "vendor/complex/split-centres-global/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/complex/split-centres-global/MANIFEST.json": "3129eb4321f706542470f8443f66a6b4351a12a9ceec85e7f76aa19db1e1e32f", + "vendor/complex/split-centres-global/NOTICE.md": "66101a9e74d0ba9c2da4c8802bcb1968534adfa7130b954628eb8bf515fc0389", + "vendor/complex/split-centres-global/PROOF.md": "6983e75f29af6eeaab20a30b08307ec6fab75ccb8b10291df8f9eb04d497f894", + "vendor/complex/split-centres-global/README.md": "b432292594adf2fcba2a8ddd87eda6167c76ff055e85aa5e3e2af7dd7e0f976e", + "vendor/complex/split-centres-global/SOURCES.json": "11aa666d678fed084b01d1e8e47239e1674eaedbc6fe0cee7edb2753477af9be", + "vendor/complex/split-centres-global/VALIDATION.json": "656d9bd7bd66058fdeb60cc90bd887e7ce75c0e0f9a100514e2bd84b95de89b6", + "vendor/complex/split-centres-global/code/bit_audit.py": "7fdbc077b7501a53662769ff2bf2ab44cc2e32dafc34478d7ef2c10e3144503a", + "vendor/complex/split-centres-global/code/bit_construct.py": "a461e6c983531beb5c8ac82ff593f39ce4e056387d1d6061f6e6b294dde4395f", + "vendor/complex/split-centres-global/code/bit_global.py": "3b2cb3ba21e5cf9b4deddb9e606322f33e9d8082020c0ee9092c21f4ebd9ad48", + "vendor/complex/split-centres-global/code/bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "vendor/complex/split-centres-global/code/combined.py": "9c5bc70f2331b7342ceb252adcddb993581c45f80c37bcc58642dbad3b9775c2", + "vendor/complex/split-centres-global/code/complex_audit.py": "adeba5ea113652b60105db2e8719b18ffa292d3cc23730cca614b40272348330", + "vendor/complex/split-centres-global/code/complex_construct.py": "0f7f45b2333ec7daf4291e2bf675b49bc330b97fb5965dd27220ba353c291d6f", + "vendor/complex/split-centres-global/code/complex_emit.py": "f56d5f01f7c121741f175814138dca7190d769920f0a27e2d5b99c21aebed0f1", + "vendor/complex/split-centres-global/code/complex_integrate.py": "3792f41e409383e6989bda22801a4836a646a530f99e99bbd7244a8f3a1a8b4f", + "vendor/complex/split-centres-global/code/complex_phases.py": "13a959c52092776ae217df554b51c0298fa9eb3a350279acff6dece651c3f9cc", + "vendor/complex/split-centres-global/code/complex_phases_full.py": "0f2795aaffafe0c64d77f3748ef2109a3c42c58da867e4cf269a0a8cb6109466", + "vendor/complex/split-centres-global/code/complex_replay.py": "be2dccce2d1ad2c4f5c01a851c9c3896cc88236b5aeae706aad2ab16d6bfdad9", + "vendor/complex/split-centres-global/inputs/bit-geometry.json.gz": "5c980202227859e8bb9b863f94503930c2a59d460c0421356688e2b0d828b4a1", + "vendor/complex/split-centres-global/inputs/bit-r767.json.gz": "bd3b84244528767b85d8d7fe423b155630b5c659e21e51563674b1dcb6305ad7", + "vendor/complex/split-centres-global/inputs/complex-data-phases.json.gz": "c972b5b60649c2a52354f5160f69adc0f4a270fa09d32012beff9888774ab84f", + "vendor/complex/split-centres-global/inputs/complex-phase-receipt.json": "01763fee5017745de982f2ff5ee68004e815d6684097cc88011dfbfb1e789581", + "vendor/complex/split-centres-global/inputs/complex-phase-recipes.json.gz": "b5472bb1d3f9ff41b0819780a42886a7686b4caf3c0617bb1dc86158b3fb8671", + "vendor/complex/split-centres-global/inputs/complex-ports.json.gz": "77b0c0fa19ef3da1c7316010e13493aa5eea1a50c3506eddc08f7480e659878b", + "vendor/complex/split-centres-global/inputs/complex-template.json.gz": "1b84904a31a733aab9bfdda3f528c06719f590d2133a43687a8bded955dc991e", + "vendor/complex/split-centres-global/inputs/e8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "vendor/complex/split-centres-global/notices/NOTICE-PR352.md": "967e6d7e76e216e4898cf543c75b527e8d397ec1ddba3800cb20701f24c89524", + "vendor/complex/split-centres-global/notices/NOTICE.md": "025773f32fb43667395e64c627a1752877bdc93afbfe01b106703eee438d21d3", + "vendor/complex/split-centres-global/notices/PR386.txt": "ae2241615a23063b18a04f1b7a88a52e62b3d7d42e333fbd21e3668567ab83d1", + "vendor/complex/split-centres-global/notices/PR426-SOURCE-PINS.json": "18ace817f2f9af22511bb303e99656ed114e534b87f3dd95a65ca4ca670baf2f", + "vendor/complex/split-centres-global/notices/PR426.md": "6a5593d0f284a2f0865037f5c5fa9e5f76f9e12cf50ec5284486d3b8137c89da", + "vendor/complex/split-centres-global/notices/SUSSMAN-NOTICE": "9419dd03a2f52cf8bdfc4d18216ce29f263ab583b27f01ced8e420985bcb7c81", + "vendor/complex/split-centres-global/proofs/INHERITED-COMPLEX-GEOMETRY.txt": "c1ff55536594222a8d2a30bc0e0956959774e1be2d5420b7838ad553ee556df2", + "vendor/complex/split-centres-global/proofs/PR386-BIT-GEOMETRY.txt": "c5f077b849e9add9957ab4ee36095dd47bc678dee7e09baa146dac4c0a0d66b2", + "vendor/complex/split-centres-global/proofs/PR425-COMPLEX.txt": "2cda27b9b9a1eb24127c38c2c7a6e085155a2472183e220189a3ea2c2b7720dc", + "vendor/complex/split-centres-global/proofs/PR426.md": "5787738ceb6faf14d3d96e8452592860a6c6a469733a9bcf196e8d1562ba1ffb", + "vendor/complex/split-centres-global/vendor/clifford_exact.py": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "vendor/complex/split-centres-global/vendor/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/complex/split-centres-global/vendor/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/complex/split-centres-global/vendor/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "vendor/complex/split-centres-global/vendor/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "vendor/complex/split-centres-global/vendor/hamming_packets.py": "daa9301e2767a711cfe66c6bebaad68e1a3bdb97ec9e848c927527ab43b37ae5", + "vendor/complex/split-centres-global/verify.py": "12fcdb20a87f75812b09c4916fbfc86305982cb410247186a123b5c58d517b4c", + "verify.py": "c278ea69dbfa08246424f35661042e64af1244a59149fd06498ca33f9f62130c" +} diff --git a/research/r489-partial-own-kernel84/NOTICE.md b/research/r489-partial-own-kernel84/NOTICE.md new file mode 100644 index 0000000000..f818e475ac --- /dev/null +++ b/research/r489-partial-own-kernel84/NOTICE.md @@ -0,0 +1,43 @@ +# Attribution and AI disclosure + +The bit word and full verifier are vendored unchanged from eumemic's PR493, +commit c3a9a436b84fe44fdc223a5784d84736d1c2d3c7. Its sources-as-carriers +construction retains the authors and disclosures recorded in that package. +The complex word, exact Gaussian phases, wrappers and full verifier are +vendored unchanged from DreamingOfClouds' PR484, commit +035845ce95f31d0a2dcfb42b8c8e13411271fa5f, with Claude Opus 5.5 assistance. +The complete pinned dependency packages retain their original notices. + +Whole-family hosting and the supplier pipeline derive from DaysSky (#442), +icekylinx (#433), chafreaky (#458/#471/#472 and related kernels), +Zhihao Chen/jacklightChen (#425/#386), Rohan Arun, Dylan Crow (#370), Jacob +Sussman and the authors credited in the vendored source. See those notices for +exact upstream identities and detailed contributions. + +This new whole-owner replica allocation, deterministic coloring, serialization, +independent physical and arithmetic audits, composition and documentation were +prepared with substantial OpenAI Codex assistance. No Lean proof or unconditional +all-size multiplication theorem is claimed. Apache-2.0; original copyright, +license and AI disclosures are preserved. + +The frame-only retiming search, frozen map, fresh retimed orchestration and +independent frame-ledger audit are new OpenAI Codex-assisted work derived +from PR484 and frozen PR496 (00cf70efd6a8637531deafef698157ca83e249ee). +PR496's complete sources and all previous published heads remain frozen. +The new word uses recompiled Gaussian recipes; the vendored PR484 source files +remain byte-identical to their pinned originals. + +The derivative M8 necessity-test adapter changes only the choice of an +available invalid intermediate frame and its actual codimension charge. +It preserves the source checker and physical test, and requires all 14 +controls to be rejected. The original source suite still runs unchanged +on the original PR484 word. + +The partial-own factory constructor, new kernel nominations, derivative +orchestration and independent algebra audit are new OpenAI Codex-assisted work. +They build on the Hamming packet construction and borrowed-source/output bases +of PR425/PR433, PR484's gauge/kernel builder and paid wrappers, and the frozen +PR501 frame/pooling admission (1dc056496fdbbc74073ed26d948a2dc235dbf356). +PR501's published head and claims remain frozen. The new constructor's clean +algebra report is a discovery artifact; complete admission is supplied by the +fresh derivative pipeline and independent checks in this package. diff --git a/research/r489-partial-own-kernel84/PROOF.md b/research/r489-partial-own-kernel84/PROOF.md new file mode 100644 index 0000000000..06e12ad2be --- /dev/null +++ b/research/r489-partial-own-kernel84/PROOF.md @@ -0,0 +1,159 @@ +# Partial-own factory, 84 kernel pivots and whole-owner pooling + +This construction is conditional on the all-size compiler, common-label, +restored-row, precision/tape and analytic-transfer contracts retained by the +pinned PR493 bit and PR484 complex packages. It also retains PR484's explicit +Lemma A realization contract for paid residual wrappers with borrowed spectators. +Its Lemma G schedule/conjugation identities are checked on the serialized local +programs, with independent pre-operation integer bounds. Finite verification +alone does not establish the inherited all-size contracts. + +## Partial-own factory and additional kernels + +The original factory copies each own-block source separately. Here each parity +tetrad uses the matching (0,2),(1,3). Once its rank-two pair intermediates +exist, load the corresponding two own helpers directly from those intermediates. +This removes 56 A operations and changes the own helpers to invertible +partial bases. All 28 tetrad matrices have determinant one. If T maps the +original tetrad sources to the new own registers, replace its own-block +correction matrix G by G*T^-1. The independent audit reconstructs every +matrix and verifies all 112 clean Gram rows exactly. + +Keep the original 80 gauge and 42 kernel nominations and add 42 more pivots +whose clean rows vanish at their nominated gates. The source kernel builder +constructs all preconditions and cleanup. The independent audit verifies all +84 relations and replays all 800 source, target and dirty-helper columns in +both reflected orientations. There are 164 entering helpers of total rank +190; the residual width histogram is {9:396,8:146,7:14,5:4}. Helper stock R=560 +and all target cuts and centres stay fixed. + +A frozen map changes 237 A frames and 504 B frames of this new kernel word. +Its 4,191 scalar payloads and their order are fixed by retiming, including the +entire initial 671-event prelude (420 gauge and 251 kernel events). Every +participating register has the same common frame at each gate and a nested +frame path. The comparison baseline is freshly emitted from the unretimed +new word, not the original PR484 scalar word. + +The independent reviewer checks actual GF(2) subspaces, the orthogonal tau43 +raw-to-canonical map, both 25,290-event ledgers, per-register telescoping, +private-centre lifetimes and 12 targeted rejection controls. The local paid +profile is {1:2493,2:224,3:516,4:84,5:298,6:64,7:1,8:17}; its 3,697 children +have rank mass 6,842. No scalar charge is inferred merely from rank. + +All phase recipes are rebuilt. The guarded normalization checks cover all +2,947 used directed transitions on 512 address columns, the 420 gauge +compensations, all 16 centres and 164 helper wrapper chains. Both physical +orientations are checked on 890 structured/random basis columns and eight +dense dirty columns. These samples supplement the exact all-800-column +scalar identity and common-label argument; they do not alone constitute a +universal physical proof. Pre-operation integer guards bound the observed +numerators to 14 bits for instances and 29 bits for end-to-end replay. + +## Placement + +Recompute PR496's pooled whole-owner placement for the changed helper widths. +A new frozen allocation and coloring emit the actual owners and idle remainders; +no old placement is reused as evidence for the new widths. Use the newly compiled word and exact Gaussian recipes +in both orientations with the freshly verified entry/exit wrappers. There are 560 helper roles in each of +72 complete local invocations, indexed by nine stages and eight replicas. A +helper of entrance rank e has one residual of width 9-e. No residual is split. + +Pool the idle coordinates of all eight physical replicas. A frozen allocation +places every whole residual in a single pending idle child, and a frozen +bipartite edge coloring assigns that slot to its invocation replica. Left +vertices are physical families; right vertices are actual helpers. Each helper +has degree eight and every physical family has degree at most eight at the +stage. The eight matching colors give each invocation exactly one of every +helper and at most one helper on any family. The verifier reads every actual +role, rather than trusting existence of a coloring or the optimizer status. + +Every host is an idle pair at that stage. Thus no host is an active data wire, +even if its physical replica differs from its invocation replica. The literal +loop order is retained: recipe phase, replica, cover class, complete local +invocation. Entry wrapper, local word and exit wrapper all finish before the +next replica or cover class. This is necessary when spectators are borrowed +from coordinates that another invocation later uses. + +## Actual maps and restoration + +For each physical port q, take the pinned orthogonal 73-column basis B_q. A +helper's first w columns are precisely its pending residual coordinates. Its +next 9-w columns are the canonical unused spectator coordinates. Append every +remaining B_q column in increasing basis-index order. The resulting full +matrix is an orthogonal coordinate permutation of B_q, with inverse its +transpose. Both reflected local programs use this same whole-family chart. + +The fresh retimed local check establishes the normalized helper action +L_E^-1 S_E R_E^-1 = C_[w] tensor I on all 512 local address columns, including +spectators, with all global phases. Its emitted scalar word restores arbitrary +dirty helper inputs and its private work. Unique physical owners within a +complete invocation let the scalar/common-label identity be transported through +these full charts without aliasing. Because that invocation restores the +borrowed work before the next, reusing the physical family in a later replica +is allowed under the same whole-invocation realization contract. + +Across all calls, occupied cells of each pending idle child are disjoint. The +explicit remainder child uses that family's actual replica, starts at the +recorded pending offset, and executes once. The old `replicas=8` shorthand is +not applied to these heterogeneous remainders. The independent controller audit +checks these cells, execution windows, full charts, source-program hashes, +private-family rebase and cover correction. Deliberately corrupted programs +must fail the controller audit. + +## Paid profile and finite charge + +All 40,320 whole residuals fit on the 7,680 existing data families. There are no +bank families. The physical stock is 8,258, including unchanged private centres, +reserved tableau and two coefficient registers. The complete paid profile is + +``` +rank 1 2 3 4 5 6 7 8 32 48 +count 179832 16128 40655 6048 24343 4608 1128 3112 1 369 +``` + +Its rank mass is 558,144, and 73*7680 - 558144 = 2496. Both exact moment engines +include the inherited bad-cover fallback. The complete invoice counts freshly recomputed +local primitives, wrappers and selectors, and rebases stock, private families, +idle remainders, routing and final correction to the actual emitted program. +The exact complex lower endpoint is +`1365476727944167989749/10^24`; both rational engines reject the next grid +point. The strict outer assembly yields `κ = 1363614743745701/10^18`. +No new factor is hidden in a cached coefficient. For the global prefix, use +maximum stream L2 norm over every physical family and cover class. Each +completed helper endpoint is unitary; each completed data shear or bridge has +at most two unitary summands. For each actual orthogonal chart, right +multiplication permutes the cover classes, so an active stream is visited once +per complete call sweep. The bound uses all 72 ordered call sweeps and nine +bridges, without assuming replica independence. The local scalar/Horner envelope +costs 20 bits; conversion from the initial supremum norm to L2 on 2^73 entries +costs 37 bits; four bits cover primitive arithmetic. Thus 142 bits suffice, +within the retained 192-bit allowance. The verifier checks the actual matrices, +complete-call endpoints, scalar envelope and controller premises used here. Each remainder is at most +rank 48, so the degree-two halving inequality is 73^2 > 2*48^2 +(that is, 5,329 > 4,608). All rank-32 and rank-48 remainders are fully paid. + +The bit side is reconstructed from PR493 with real Boost. Its physical prefix, +charged three-level coefficient and row coefficient are read from the fresh +receipt. Six bootstrap levels and all 47 strict outer inequalities use the +fresh complex exponent, common row allowance, and C0=2^210000. The next grid +point and zero-eta, zero-beta and unit-beta controls must all fail. + +## Provenance and limits + +The selections are finite nominations, not optimality theorems. Two inherited +discovery-only floating display fields use explicit left-to-right accumulation +to avoid Python version-dependent sum() behavior. They are never used for acceptance; exact profiles, +physical invoices and both rational engines are recomputed from fresh outputs. Frame discovery +used common-frame component moves, including zero-cost moves before descent; +the final 1,000-move continuation does not prove local or global +optimality. The exact verifier applies only the frozen map. The inherited +whole-owner allocation search used +floating-point MILP objectives and matching only to propose the frozen map; +certification uses the actual scalar words, complete emitted role map, exact +integer/rational checks and fresh source replays. The earlier unpooled padding +experiment is retained as provenance, not a separately published record. + +This does not use the cross-family split of PR448/480/494. Those submissions +carry a distinct disputed operator interface. This package makes a conditional +whole-owner claim only and does not claim the largest number among all draft +submissions under different assumptions. diff --git a/research/r489-partial-own-kernel84/README.md b/research/r489-partial-own-kernel84/README.md new file mode 100644 index 0000000000..7c93c4a04f --- /dev/null +++ b/research/r489-partial-own-kernel84/README.md @@ -0,0 +1,58 @@ +# Conditional κ = 0.001363614743745701 + +This construction loads 112 own-block helpers from existing rank-two pair +intermediates, removing 56 operations from the original complex factory. +The resulting invertible partial bases admit 42 additional kernel pivots: +80 gauges and 84 pivots now give entrance rank 190. A frozen frame retiming +and a new pooled whole-owner allocation complete the construction. It retains +the pinned PR493 R489 bit supplier and derives the complex pipeline from PR484, +with the independent admission machinery of frozen PR496 and PR501. + +The exact complex saving is `b = 1365476727944167989749/10^24`. +The exact assembled bound is +`κ = 1363614743745701/10^18 = 0.001363614743745701`, approximately +1.496% above frozen PR501. This is a conditional whole-owner construction. + +```sh +python3 -B research/r489-partial-own-kernel84/verify.py /absolute/fresh/output \ + --boost-include /path/to/boost/headers +``` + +Requirements: Python 3.14, NumPy, SymPy, Bash, a C++17 compiler and genuine +Boost headers (`boost/multiprecision/cpp_int.hpp`). Inherited receipts compare +gzip byte hashes, so other Python minor versions are not covered by this +release. Verification uses no network or optimizer. + +The verifier reconstructs both pinned suppliers, builds the new partial-own +factory from fresh Hamming inputs, applies the frozen 84-pivot selection, +emits an unretimed comparison word, and then applies the frozen frame map. +It checks all 800 scalar columns in both orientations, arbitrary dirty +restoration, the 28 own-tetrad bases and 84 kernel relations, both 25,290-event +frame ledgers, exact Gaussian recipes and paid wrappers. The retiming fixes +all scalar payloads and the entire 671-event compensation/kernel prelude. + +Each of 72 complete invocations has 800 distinct physical owners. All 40,320 +helper roles occupy single whole families; 3,924 actual orthogonal 73-column +maps and their spectators are audited. The complete paid profile includes +all heterogeneous idle remainders, including ranks 32 and 48. It retains +7,680 live and 8,258 physical families, with deficit 2,496. + +Guarded physical simulations bound expanding integer operations before they +execute. The verifier also runs source/pipeline mutation controls, 18 owner +controller controls, 14 Lemma G necessity controls, complete invoices, two +exact rational moment engines, six bootstrap cutoffs and all 47 strict outer +inequalities. A derivative adapter selects an available invalid intermediate +frame for control M8 and charges its actual codimensions. Pinned upstream +sources remain unchanged. + +`PROOF.md` describes the changed scalar factory, normalization, physical +placement and global prefix argument. `EXPECTED.json` fixes the mathematical +result; `EXACT-MATH.json` records its fresh reproduction. `SOURCE.json` pins +all 266 original supplier files; `MANIFEST.json` binds this package. Runtime +receipts separately bind paths, templates and subprocess exits. Original +licenses, provenance and AI disclosures are preserved in `NOTICE.md`. + +The claim retains the inherited all-size compiler, mutable-basis/common-label, +Lemma A realization, restored-row, precision/tape and analytic-transfer +contracts. These exact finite checks do not establish an unconditional +multiplication theorem or a Lean proof. diff --git a/research/r489-partial-own-kernel84/SOURCE.json b/research/r489-partial-own-kernel84/SOURCE.json new file mode 100644 index 0000000000..1bdb8744da --- /dev/null +++ b/research/r489-partial-own-kernel84/SOURCE.json @@ -0,0 +1,290 @@ +{ + "bit": { + "pr": 493, + "head": "c3a9a436b84fe44fdc223a5784d84736d1c2d3c7", + "manifest_sha256": "7f25c41d0400ef5adf763eae6e166003a9b59e5a655b860c04b052f6731c7297" + }, + "complex": { + "pr": 484, + "head": "035845ce95f31d0a2dcfb42b8c8e13411271fa5f", + "manifest_sha256": "56199b350a49a6d9c114eec1620e889eedb89170af2b872bf8b8f42df8a961a2" + }, + "files": { + "vendor/bit/MANIFEST.sha256": "7f25c41d0400ef5adf763eae6e166003a9b59e5a655b860c04b052f6731c7297", + "vendor/bit/SOURCE-pr436.json": "4a4f99f5bdb7530a0dcf9433f7f02afbf2abf908e718f7c63ffa5503d4f49693", + "vendor/bit/EXPECTED.json": "3494ba83280cc86548fe0cc6695c50d23e6b6ffca85aeb1a33337c1196e280cb", + "vendor/bit/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/bit/requirements.txt": "6023d480f929cdfa4e2f35e361eea003451cd6695af806935a32038b0115abb5", + "vendor/bit/SOURCE-pr483.json": "24e3eab4a985e115adb7f8665a401423e9636e9f16cc4373ec68cc86950445a8", + "vendor/bit/SOURCE-pr381.json": "16b1977240ca9acb58fa64572fb4231a423bc10bbf3e7bb30f1c8201fe369ba5", + "vendor/bit/SOURCE-pr471.json": "499d861e090c9e646d978dd67890a8e58a9ff6bf08512684e66605179132076b", + "vendor/bit/SOURCE-pr386.json": "87c659ba932525631a40be14dca28a6a2efade8641f23bb08d6e1567fc991131", + "vendor/bit/SOURCE-pr451.json": "a639956eec858341987a815b7464ef472505300db754b5f9ac012dd01d18c8df", + "vendor/bit/verify.sh": "0f9248aa3611dfe2b5d59dbe992c6f7d21a0cc4f1de2b5ed05a6110191191224", + "vendor/bit/SOURCE-pr484.json": "b92f43fbcba3921a1aa37bcb9f05cf5fa612ff708785e05512438a6317bf0867", + "vendor/bit/README.md": "e5212e8058c92a2b02cc12b4e174a65ce1cef7b4d7977ae770e64f5ff91b7204", + "vendor/bit/SOURCE-pr473.json": "2515c4f23dfa22a21913d92597669770f7f44c2a5b3ef069ef68a0c89779a656", + "vendor/bit/SOURCE-pr445.json": "e6f4a272442bb71ef68aaa3545b271236f9c99297e444fa01c62b0b5fb6a170f", + "vendor/bit/SOURCE-pr448.json": "c771fa9be492408a78d6d970c839e68c4dfd1b66f4f4a4748e3d12726a43cf27", + "vendor/bit/SOURCE-pr370.json": "03de1d341196cfa8cf1d39f3cc8648b25bb5f39c3c602a728cfbd089e8253ac0", + "vendor/bit/SOURCE-pr472.json": "6753bcf50c91806b75dd4dbe3963a79699a614d0dab8ce32b261cc3e76b288b1", + "vendor/bit/SOURCE-pr458.json": "cbdea984a46ab5de354b95e73fd76c1918fdc6676c658398a552772c4dc3dcaf", + "vendor/bit/NOTICE.md": "5f4b7fcbf99f572be28b6da612ce775363908cdfc7810f7aca167be01c86e49a", + "vendor/bit/SOURCE-pr478.json": "9c7c4ea678865a955b0c89f0952927159976fdf55cadc6a488dec5757f03fe7d", + "vendor/bit/portable-include/bits/stdc++.h": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99", + "vendor/bit/discovery/plan.py": "40e8dea1b4b71c5afd5993625f57bcac089dd2f72dfbc4dbc23ce917e5a61010", + "vendor/bit/discovery/README.md": "b09aa45d5651720e10326cde559c863ba3ea45fe2fb6b4aaa3bfaa66a8fcf69f", + "vendor/bit/discovery/d4part.py": "a64927c340a4772ce0682b349e0c90c80d1a766000ccf397fb41b36a31929179", + "vendor/bit/discovery/host_select.py": "2aaaac18e083d289d4341e734c32571c89c51fefba04b388d407c7372b906dc7", + "vendor/bit/code/cited.py": "a4c2dd4755f2a45ceda327b36d9ee400c2804893000626ca8ff3f6ee296fd842", + "vendor/bit/code/provenance.py": "e28fd87d0e34a6f6f6f1fddb6c4891deac220662c954de855d7aa5a7f9cceca4", + "vendor/bit/code/bit/mutate_records.py": "b0e75d6550412a7be4017695e6b237392b611bb852ad8ff309d6682c9f166a4e", + "vendor/bit/code/bit/mutate_records_mut.py": "a9e085ec60d5657cd5d77832e3d95004e81b9f4f249d9e0fc95e345366cb2d2e", + "vendor/bit/code/bit/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "vendor/bit/code/bit/checkers/gram_frames.py": "223a5a07731fc315a90a3e48177796babc155c1d9985c7ae5017eff6af2a0608", + "vendor/bit/code/bit/checkers/json.hpp": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "vendor/bit/code/bit/checkers/legality_h.cpp": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "vendor/bit/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "vendor/bit/code/bit/checkers/columns_h.cpp": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce", + "vendor/bit/code/bit/independent/mutate_mut.py": "3b002c19a5dcca76a5594f2a30fac7c01d2b45fc96b3e7cfbfd8b720f5ffb4e8", + "vendor/bit/code/bit/independent/interface.py": "2c63a039f97e3a11ce5a6b83302d4f5beda160c1db14164a5a9b0855aeb19d3c", + "vendor/bit/code/bit/independent/mutate.py": "0ff65aace5da4b57d96235bf830f8f11969322e75134d498aeb70e9753ec6b0d", + "vendor/bit/code/bit/independent/relax.py": "d6e9f58de3fa41f538516b6227c249d61fb30f0f6843027cc8a07a1a372fa6b6", + "vendor/bit/code/bit/independent/checkword.py": "11bf9620ca9db16d52d9fe806b814fc9ec9a89c4d7645354d1861d96f6e805ad", + "vendor/bit/code/bit/regression/stage_cohort.py": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "vendor/bit/code/eleven/audit.py": "5ad832830c19ec6c904d1b64480f6b1e71c5673fdd38d487d17e179b1d197c09", + "vendor/bit/code/eleven/local_audit.py": "95275473d7f9811011bda760dd0f04de5169c2a6922456dc9a5725a5d671f941", + "vendor/bit/code/eleven/assemble.py": "c47889a606701ae592374dd82a13cee8c5a4e8449b7facfdad2d90563a30a18c", + "vendor/bit/code/eleven/adapt.py": "d8a8c13b484d985f0133a5d06de4a78b8477314f922b9f693ba73640b7184d6b", + "vendor/bit/code/eleven/emit.py": "b0b25955875625ed63f82690f83aef976e3e9a978ae6620b23a23fc1207acd46", + "vendor/bit/code/skeleton/gen.py": "7cdcf48078ed4beacd2e240aa8145e4aa6984558748d07659cb1b252786e073a", + "vendor/bit/code/skeleton/geom.py": "bb356568fa05e7bfd5fcd9012903611cf742729a99b4dc3a13685355b2678ae3", + "vendor/bit/code/skeleton/e8.py": "721d859a6517d665ca84d03ef89668da3aae7433ffb0ee47faf37f2aeb85450e", + "vendor/bit/code/skeleton/wordkit.py": "2b6c12d96f24a4e81f2c807827c2b74cf80037367fc8034e8c871dd5ce008351", + "vendor/bit/code/nine/geometry.py": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca", + "vendor/bit/code/pricing/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/bit/code/pricing/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/bit/code/pricing/prime_witnesses.py": "98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab", + "vendor/bit/code/pricing/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "vendor/bit/code/hub/idle-axis-hosting/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "vendor/bit/code/hub/e8-r715-whole-hosted/code/audit.py": "d28062127a9b0d3866a3b79aad98a307233b20ebdb94cfb9f197d726b82ffea5", + "vendor/bit/code/hub/e8-r715-whole-hosted/code/local_audit.py": "23eda3fe3d774e7f2dbf4dbdd4ff90d69ae7d1762ff95c8629cdc7667aa3fe71", + "vendor/bit/code/hub/e8-r715-whole-hosted/code/assemble.py": "abb60c35e448e0f94073f38a0352d11249aaf7bb8dbd7352414ae60a1d2b79c3", + "vendor/bit/code/hub/e8-r715-whole-hosted/code/emit.py": "98d77cefbc3a76f9f10bd7df3a2590ab88b411f6afe77b5f8d73f1602eb2bef3", + "vendor/bit/code/hub/e8-r715-whole-hosted/data/hosting.json": "765382d4fefd594e94c8c5826ec6300422ce9f79c816d7f7323ef85e99320f28", + "vendor/bit/code/hub/e8-r715-whole-hosted/data/word.json.gz": "b2af02f593cd161bea64e6cd793508386914136be519f80726c071697379d5a9", + "vendor/bit/code/hub/e8-r715-whole-hosted/data/residual-isometries.json": "750221cc66badd0ed0a74e7aad2d59f91f89c107370af21c6d929fbdd4a08a9f", + "vendor/bit/code/hub/r740-hosted-rank149/code/emit.py": "ac63ee481f3d75cb9f0658faaa2412db81d55bc44d9f1ff1c0329ce1e75aa0d4", + "vendor/bit/code/hub/r740-hosted-rank149/data/word.json.gz": "41626789888ee070e1b435fa380b10ab9b88e3cf7d8d8e166ecef17269bbcf47", + "vendor/bit/code/hub/r740-hosted-rank149/data/residual-isometries.json": "b23fda74a7979179e8fd83ee9870c1e232442cc90c05077adaabfe31d050d1e4", + "vendor/bit/code/hub/r740-hosted-rank149/data/selection.json": "4d9c2cf6a3d31a6faa287731e0721cb16601b0bc5c1a186b9645bfb5760ce8db", + "vendor/bit/code/hub/e8-r740-replica32/code/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "vendor/bit/code/hub/e8-r740-replica32/code/bank_routes.py": "7c6997c455bd55acca3a1603797c34e7733d557c27a7694a1429ff15773a505d", + "vendor/bit/code/hub/e8-r740-replica32/code/tile_m.py": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd", + "vendor/bit/code/hub/e8-r740-replica32/code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/bit/code/hub/e8-r740-replica32/code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/bit/code/hub/e8-r740-replica32/code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "vendor/bit/code/hub/e8-r740-replica32/data/word.json.gz": "d8d6d3d3f336720302bc40b3c1504fe3c3583a7a8d707bb9bd7b21f85e5e69c6", + "vendor/bit/code/hub/e8-r740-replica32/data/residual-isometries.json": "e12ed7ddd13cee101ba74a083b54665fd64d0b122b0bad5b83d817dcc8bae9d8", + "vendor/bit/code/hub/r740-hosted-eleven/code/geometry.py": "9554182d67e434ea84b4430f909a2c400abc755d8487b51454a8e6968e62859d", + "vendor/bit/code/hub/r740-hosted-eleven/code/emit.py": "ac63ee481f3d75cb9f0658faaa2412db81d55bc44d9f1ff1c0329ce1e75aa0d4", + "vendor/bit/code/hub/r740-hosted-eleven/code/row_bound.py": "de4a9b9cd797e1a05da56f62cfe725c8728cea3a4aa031b7d1b0a68f869760d6", + "vendor/bit/code/hub/r740-hosted-eleven/data/selection.json": "52dbbb68e8c147690d15eaa1d952df05d074b0c121885a4159d9f6732f391872", + "vendor/bit/data/complex-b.json": "dce3f4b76aa3f6c3ba826ce556ffa61398b33e81e4d1a226dd2a36ce684fb02e", + "vendor/bit/data/bit/bitE8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "vendor/bit/data/bit/bitE8mut-r489.json.gz": "835eb96e147740fc7454f8cfb3dbd34ae89524b1dbd89a61e9288eae8ab6a5b9", + "vendor/bit/data/eleven/hosting.json": "61f790657c465d16d3455f48f90f816797b9ea08bf02dbd0c90d2cf41836257e", + "vendor/bit/data/eleven/residual-isometries.json": "0fa5b353a0321af2ce4e2045db1d4c2d6418a11663894e2afcdb1eaa1984bddc", + "vendor/bit/data/complex/pr458/EXPECTED.json": "a4312cb0c53c2066a28b683a971a41e7d76c5f6d828a96481c3ae7b3c01bb2f3", + "vendor/bit/data/complex/pr473/EXPECTED.json": "70e515f0a5a2f9508cd030d35a99f90981a6eccc027c9ad5a3c77f5860310910", + "vendor/bit/data/complex/pr484/EXPECTED.json": "0c93018a23bc573c7d155d4786e0c3978e95be0fda974076697939a1a1d8e5be", + "vendor/bit/data/complex/pr483/EXPECTED.json": "799fa4ab2f785c478c3cdcb6c1c0428a5ce6e3ddbe4a4b2fd88630d811a593f6", + "vendor/bit/data/complex/pr448/EXPECTED.json": "18b42250c3faf6f0df76fcab6c3a483582192ad7bb09cb1985f4b0bb91d67024", + "vendor/bit/data/complex/pr478/EXPECTED.json": "07bd05d14c71df8925b0b03510b2b337334b73ac425a94e03b2ec34ed2680164", + "vendor/bit/data/complex/pr471/EXPECTED.json": "188f9d1a7450496dbfd8d64381febd20b0597141537eb1a003435297df2d1720", + "vendor/bit/data/skeleton/d4part-pairs.json": "d69ffe3326140bc541b8f1639e02db43a5835ab8ca02cc742b5bee2bf2ef1ba9", + "vendor/bit/data/skeleton/plan-skB.json": "f6162bb4d8092bc233700fa7ebc6a0d79f2893135aee18e998369044abb3f44b", + "vendor/complex/idle-axis-hosting/PROOF.md": "cfe34bf0b64259661312dae22c3a23adc5bf6f6326951eee5c1488ccfc347542", + "vendor/complex/idle-axis-hosting/audit.py": "38594423a401110bd430b734037c6ecba422ee6a94d71709984e0afa9cd1edf8", + "vendor/complex/idle-axis-hosting/EXPECTED.json": "ed83c1bf1ca2d01eaab5149a34520806a07ef375dfa9e3ed69d123f4be4c9960", + "vendor/complex/idle-axis-hosting/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/complex/idle-axis-hosting/complex_hosted.py": "829c5c4f4bdfccedadd31505f1f0a394f7a208d1446b7bbf9cc92d3aa1530c0c", + "vendor/complex/idle-axis-hosting/bit_hosted.py": "6dfbf26213e8adf87563b3575cfb722bd07ecd65627f056b3293411dd3d89a61", + "vendor/complex/idle-axis-hosting/assemble.py": "f9a2e6a42aadcf971702a5a867760a092566ed03356f4f34387d38f4093ad1a6", + "vendor/complex/idle-axis-hosting/README.md": "1151f74cad54ac4937282b7a8b5d1108ed4ce35944ef9b7bb7d17abfce1fe4a0", + "vendor/complex/idle-axis-hosting/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "vendor/complex/idle-axis-hosting/MANIFEST.json": "f68b82604363329618529313ac9c3796dc1e88b176eaee4a7b0dec9be428e987", + "vendor/complex/idle-axis-hosting/SELECTION.json": "315d54be472842707cce879618be477d8b897050e873bc136d114eec6a232f97", + "vendor/complex/idle-axis-hosting/verify.py": "737a974d79fdd232b6c4b9e059c56835079971447342ed7ca3b82a614e30cb53", + "vendor/complex/idle-axis-hosting/NOTICE.md": "027a868628d0408602dbeae688b031ed9b4abfd6e5401f6e8106a3eb25ebc4ca", + "vendor/complex/e8-early-reset-reuse/PROOF.md": "09388e2f9e6b8fcc626a5172d55c45a957835075c51c68d1e86fd42ff4655ae8", + "vendor/complex/e8-early-reset-reuse/EXPECTED.json": "5521c7e995fec77941243b28e090f95f2188f193d5f61275275cfa11215eecc0", + "vendor/complex/e8-early-reset-reuse/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/complex/e8-early-reset-reuse/SOURCE.json": "c52287239c43aece2b3533ef48ee204d845d652066bca716c288b0c47e779521", + "vendor/complex/e8-early-reset-reuse/bit_global.py": "9c2178df133dc663416aac13d8c8da80a9e4f5f7174bb36413180fcbad994ffb", + "vendor/complex/e8-early-reset-reuse/bit_audit.py": "219eb4dd8e5380fb0432daa6a30c265755a78834616b2c5fc7aa161feb0231ee", + "vendor/complex/e8-early-reset-reuse/README.md": "442bf686c0b24b9d7781b7b138f32fddea5d4efffeddc6e41d04719d2545e0cd", + "vendor/complex/e8-early-reset-reuse/replay.py": "e0782ba05dda36323500390349d1180f6117a9c6112b09b9e21e29f67c4e5f5f", + "vendor/complex/e8-early-reset-reuse/VALIDATION.json": "bcb864a6b73d4ff4a24ab70ad51287653723c2115ce1c81db7817b81df2d9e92", + "vendor/complex/e8-early-reset-reuse/MANIFEST.json": "4d23bafa43634a59e25f875333408b67cbecb1c912929824b5d45dea4de51da7", + "vendor/complex/e8-early-reset-reuse/SELECTION.json": "9d47ade3fb69b3ef62a1a3ae75cebdddd57d144923977c5f2a07848ab596ea32", + "vendor/complex/e8-early-reset-reuse/bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "vendor/complex/e8-early-reset-reuse/verify.py": "4e2082878acc1298f4354325b28f3cf047006170a9883148e7cf23002f6f02f1", + "vendor/complex/e8-early-reset-reuse/NOTICE.md": "c4085541471fe63d8f735beacd397d356446376ad3e56b2673940a2df3b8437e", + "vendor/complex/e8-early-reset-reuse/combined.py": "dc621dce9ac1634a2701318311b30dffee7cce7e0c6be7ae808f44b27eb17f0f", + "vendor/complex/e8-early-reset-reuse/local-evidence/PYTHON311-GZIP-FAILURE.log": "ec1937c575536aeebe8f9c22d673fd66d1355ff870e2fdc80346205b29e42784", + "vendor/complex/e8-early-reset-reuse/local-evidence/ASSEMBLY.json": "c9ce28f59a5e460d39a888bbbc464e3fd6dd1c0b2c54ae86baeeea99febc8176", + "vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON311.json": "1dcca855b20cbac311a435f23f60001c342083edbef3194ba42a30e1f24c1982", + "vendor/complex/e8-early-reset-reuse/local-evidence/PYTHON311-INITIAL-FAILURE.json": "7902e8ca1e167b98d1c29170f8d57c9896b38ccab89065e4ed4e2c3feea79076", + "vendor/complex/e8-early-reset-reuse/local-evidence/BIT-AUDIT.json": "2e458c3936e42539095610a50c730266dddd96e94d1ead171a99dd5f1fe9ef47", + "vendor/complex/e8-early-reset-reuse/local-evidence/BIT-GLOBAL.json": "39f89d1e5bf51e9b1f1155e123dc3226627e465a246d37bb00f55d44d20bcaa0", + "vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PYTHON314-INITIAL.json": "0966528d4b30459d8b35296f31dbadfa34cdc7792419b34ab2505b7098923325", + "vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON314.json": "5687ed9209e11e64304d008a4a10678dc07cdc3522f5112c9a80557d45125c4a", + "vendor/complex/e8-early-reset-reuse/local-evidence/BIT-PRICE.json": "96ec606146b5157871048e28f6649c31c1b6117d43be732e6a96bcc269c0e1b6", + "vendor/complex/e8-early-reset-reuse/local-evidence/PARENT-FULL-REPLAY.json": "0ba447d6de6edd9fbe2371c36e3605dffa0c6526a874cfcb9bd19285c056bf1e", + "vendor/complex/e8-early-reset-reuse/local-evidence/FAILED-LATE-RESET.json": "f6ed36b59de745d50f37fcb4c80d129d9a2de0dfe1fe3de2d18e678135f7d9b6", + "vendor/complex/e8-early-reset-reuse/local-evidence/FAILED-INLINING.json": "95cbb0e6df953d25a888198c1072edf03db85b7c967a234680db3e095abd2dc7", + "vendor/complex/e8-complex-gauge-kernel/PROOF.md": "a6bf0662abdd9bbe0649b52cada82c3341e61b49b966b93aa6f8f1ab30d2d949", + "vendor/complex/e8-complex-gauge-kernel/EXPECTED.json": "0c93018a23bc573c7d155d4786e0c3978e95be0fda974076697939a1a1d8e5be", + "vendor/complex/e8-complex-gauge-kernel/SOURCE.json": "ee6dca44a773d457b9e0bbfc8d3d5f571673913686fa57187e63a84857ff505e", + "vendor/complex/e8-complex-gauge-kernel/PR-BODY.md": "839708cb1f21d34f7ecf8d9edc5c9ec800b747d92c99e384e0bc246211bd01a1", + "vendor/complex/e8-complex-gauge-kernel/README.md": "64bebef404af500d4f32e3cb17ba143a53c7f251712246e1b85a6887b2d444bc", + "vendor/complex/e8-complex-gauge-kernel/MANIFEST.json": "56199b350a49a6d9c114eec1620e889eedb89170af2b872bf8b8f42df8a961a2", + "vendor/complex/e8-complex-gauge-kernel/verify.py": "56a36950ed486a1b38334e8d75fd1efe75da7ba604fb4fafe7d8dc1e388349c5", + "vendor/complex/e8-complex-gauge-kernel/NOTICE.md": "7c7a022afe969a09ad5320935daf7db256b8f25ee56ecdcf9fc40eb0836e74ce", + "vendor/complex/e8-complex-gauge-kernel/code/controls_pipeline.py": "cc6fb8bf4644cc3a1799f3bc90dc074adb5663d1889c92f7f73ec9f307acbd36", + "vendor/complex/e8-complex-gauge-kernel/code/controls_hosting.py": "573966c7ad1deac24464414d3886171f594bb3ae3e7236a9ac2447cc40b20211", + "vendor/complex/e8-complex-gauge-kernel/code/gk_word.py": "f027a9273bcf4e0971258c160b7d3b3c196366b32a529cff6e6a0e666b03826b", + "vendor/complex/e8-complex-gauge-kernel/code/gk_common.py": "e68d190fd436b2f3955decb590adb53344d5d4ea0a19d62d86df1e4b55ecd198", + "vendor/complex/e8-complex-gauge-kernel/code/hosted_gk.py": "8d2c29a5f79e6a1391f96baf44dd9fbe35203b6c11b02a7b2d238cf792ea163f", + "vendor/complex/e8-complex-gauge-kernel/code/emit_gk.py": "4e415bff1d9f154496ed38e6889929b600aa0f3d583a375e8ca257ad8f51fa23", + "vendor/complex/e8-complex-gauge-kernel/code/controls_gk.py": "cf83aa95f03aa812c413905df9f75f13ac8f92f5db6a83cf9b1868aea2dd9de0", + "vendor/complex/e8-complex-gauge-kernel/code/controls_sel.py": "d2777571d59736c3fe62b81506ae62c22a3816fbc3abf9303d914e6da6d64258", + "vendor/complex/e8-complex-gauge-kernel/code/audit_gk.py": "cb79c6b788333a031e14c7f134823f5f6147d7f1dcc6e5e3b1420743c32f8ebc", + "vendor/complex/e8-complex-gauge-kernel/code/onehost_gk.py": "416b318c1b6b8c7b72e24713b1b18d8772ec368e042a321b4418c63a74711590", + "vendor/complex/e8-complex-gauge-kernel/code/make_meta.py": "06e44ae4fc4f3a88989828d6cbdf95524a2d9f65753045cbb3e6cfd7e042d96a", + "vendor/complex/e8-complex-gauge-kernel/code/integrate_gk.py": "2e807893180a3716b36a81f1a7d933bd55f2299489b6f236ba5c644d87739209", + "vendor/complex/e8-complex-gauge-kernel/code/audit_hosted_gk.py": "c46c69c1c6fdccce991bf5d5ec7def344d2749c53ad2db976a50ba3a6c37d657", + "vendor/complex/e8-complex-gauge-kernel/code/replay_gk.py": "2422b44fc2fb4742bb575572337158a15fb6831630f8746a1c7ee3133e0ee2e3", + "vendor/complex/e8-complex-gauge-kernel/code/adapters_gk.py": "a8d6d9ccf20c261cb0b216baa9906f2f7689e1bb1dca070313a60b2cb6d3043c", + "vendor/complex/e8-complex-gauge-kernel/code/run_variant.py": "feecf7dff32860a02fbfb96da1049ba35d05b3baf74c4f741b878d4d91903903", + "vendor/complex/e8-complex-gauge-kernel/code/assemble_gk.py": "e377ef9d9e90168290a4640250c0fb9c05015104bcc4827bc5ce63f6ca63763a", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_phys.py": "0ca37829b596d83d0b94c5f0b6b278a100f22e626b2ab3b5210a38f9657c8a27", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/check.py": "f572b7129a546e1b1193fdd5baee4f731a5b9b8a4e8dc7ac170bcad7758e5b9a", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_mutants.py": "cf0d1f8e90a0780244b6de38d6aad08dd42f4c439397a6d5a61fccd23fe7e798", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_lib.py": "00068882bf2f2ebadd3f87c94204f226c7938966124bafb9ce6da89bfaf91b45", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/gd.py": "64cdb2cfefc9ec3ed80c277a18848778427c3d3dbda9b7be13f740522478e1de", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_e2e.py": "8fe3719e8ec5ec49af480b40c15f07612a356f5071ea30e17ae2d8931b3f20ce", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/run_labels.py": "5f053e553b1c26e553a844e2891a73b6cc6b79404a7bb5d4722529f7db0d592c", + "vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_instances.py": "47dcf2e9ae2d99699424d684abebc3d1d2d25b7aa6d440761e19835d140f5fbb", + "vendor/complex/e8-complex-gauge-kernel/provenance/gauge4.py": "e4e438034a3cd4c49adc744de86819dc574b130fb8bc8dc48b1d9955a3601a42", + "vendor/complex/e8-complex-gauge-kernel/provenance/sa_long.py": "e2270814c0ff0617b1104a007e4604ac713dbb1a033771d4a5357796198e646e", + "vendor/complex/e8-complex-gauge-kernel/provenance/gauge.py": "a0fbf14085161f89d52343de80cddc8a11451bac635bc2677549ae7a26562491", + "vendor/complex/e8-complex-gauge-kernel/provenance/cxcheck.py": "1df8db02ad02e8f1cf0bbaabd92d7d88341f8e10f0e76d7777d246eb52094ac8", + "vendor/complex/e8-complex-gauge-kernel/provenance/iso1.py": "1a7e3e08b0ecb9cdf19525ef23c5f790cf19427e238e71987a30c35aa54d9612", + "vendor/complex/e8-complex-gauge-kernel/provenance/kcap.py": "96e4e067d850f1b3b5cdf241371956a99fe4f60229edd3fe43b3f7d14ae78bea", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern4.py": "0a21980027d427a6377a525d7082e460eed9e8577328831e2edde7eede1998dc", + "vendor/complex/e8-complex-gauge-kernel/provenance/hostmodel.py": "1fe732f944166dca53363d63b0bc2a5c4ceaf0ffdb8973f554720be07bf07395", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern5.py": "bb0bbf4504f714d5d14c362d90c0d66c85c912e5b2f19c7401040e967c8a3c0c", + "vendor/complex/e8-complex-gauge-kernel/provenance/README.md": "76f04346717183300ec2d3bf852d5bacc8a6c3dee458a17a1957613ddf033af0", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern2.py": "62c02a73484f0b513c2d7bd4bdd9febf1c84bf42457506a36bab30b97b267efc", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern.py": "bdc708e887bda780b3145e2f536db9ace13cae165447c6057bb8b3476f8f1dc0", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern6.py": "849c7e9404edb5bb2d2064339014d6bbfd7bcb0ab62a4ca09d7d2c658dcd14c6", + "vendor/complex/e8-complex-gauge-kernel/provenance/cxlab.py": "46dd697395d69776eaefa7d5843ada050528d76832967c76afa2e80beb7d75ee", + "vendor/complex/e8-complex-gauge-kernel/provenance/kern3.py": "e31d8b9728881d7921c404e55b875e6f8cea46a0c9fc6eea8263416cc6fba109", + "vendor/complex/e8-complex-gauge-kernel/provenance/gauge2.py": "3dda541e514944fc6486407a889ac6a0f3b1eeab08092799dec672a89cbcbcb8", + "vendor/complex/e8-complex-gauge-kernel/provenance/gauge3.py": "fb74644f093f8a725af146b560380b360dc655edde61c7695d1a2d9b33fc58fc", + "vendor/complex/e8-complex-gauge-kernel/data/bit-suppliers-pinned.json": "77121915641c8fef57ab10585fd5e8b13c817356bbbea21f4314d381cd029b83", + "vendor/complex/e8-complex-gauge-kernel/data/SELECTION.json": "89b19daca7db07a7e09723b1b74b55682ae64af98072dbb3110d0376b7f052b2", + "vendor/complex/e8-complex-gauge-kernel/data/selections/gauge80-kernel42.json": "436e4acadee227dbfcb66386c9ccaa38e68054e8ed4870bb174eeb41363375bb", + "vendor/complex/e8-complex-gauge-kernel/data/selections/empty.json": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "vendor/complex/e8-complex-gauge-kernel/data/selections/gauge80.json": "41e62cfd0d50f348eae3f81d9f62f7dab2667294554398d8bca43aadbb2c291b", + "vendor/complex/e8-complex-gauge-kernel/data/selections/kernel79.json": "febded05174c364049632db3214dc9209426d1b81581cab728d79fa6594c9e47", + "vendor/complex/split-centres-global/SOURCES.json": "11aa666d678fed084b01d1e8e47239e1674eaedbc6fe0cee7edb2753477af9be", + "vendor/complex/split-centres-global/PROOF.md": "6983e75f29af6eeaab20a30b08307ec6fab75ccb8b10291df8f9eb04d497f894", + "vendor/complex/split-centres-global/EXPECTED.json": "9b8e56eee3d5bdabd2e3e6e4ba0d9eba537525fba25a54126f9f0e41d2491a06", + "vendor/complex/split-centres-global/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/complex/split-centres-global/README.md": "b432292594adf2fcba2a8ddd87eda6167c76ff055e85aa5e3e2af7dd7e0f976e", + "vendor/complex/split-centres-global/CERTIFICATE.json": "f71580f22193726fb582eae604807ff70a7302265e001d9484a718e63bbe14c4", + "vendor/complex/split-centres-global/VALIDATION.json": "656d9bd7bd66058fdeb60cc90bd887e7ce75c0e0f9a100514e2bd84b95de89b6", + "vendor/complex/split-centres-global/.gitattributes": "2f9541c7c27f084baad73b4cd50ddaeb264cc3aa8dbf13ec21df5ab3f673ca7e", + "vendor/complex/split-centres-global/MANIFEST.json": "3129eb4321f706542470f8443f66a6b4351a12a9ceec85e7f76aa19db1e1e32f", + "vendor/complex/split-centres-global/verify.py": "12fcdb20a87f75812b09c4916fbfc86305982cb410247186a123b5c58d517b4c", + "vendor/complex/split-centres-global/NOTICE.md": "66101a9e74d0ba9c2da4c8802bcb1968534adfa7130b954628eb8bf515fc0389", + "vendor/complex/split-centres-global/proofs/PR386-BIT-GEOMETRY.txt": "c5f077b849e9add9957ab4ee36095dd47bc678dee7e09baa146dac4c0a0d66b2", + "vendor/complex/split-centres-global/proofs/INHERITED-COMPLEX-GEOMETRY.txt": "c1ff55536594222a8d2a30bc0e0956959774e1be2d5420b7838ad553ee556df2", + "vendor/complex/split-centres-global/proofs/PR426.md": "5787738ceb6faf14d3d96e8452592860a6c6a469733a9bcf196e8d1562ba1ffb", + "vendor/complex/split-centres-global/proofs/PR425-COMPLEX.txt": "2cda27b9b9a1eb24127c38c2c7a6e085155a2472183e220189a3ea2c2b7720dc", + "vendor/complex/split-centres-global/code/complex_emit.py": "f56d5f01f7c121741f175814138dca7190d769920f0a27e2d5b99c21aebed0f1", + "vendor/complex/split-centres-global/code/complex_phases_full.py": "0f2795aaffafe0c64d77f3748ef2109a3c42c58da867e4cf269a0a8cb6109466", + "vendor/complex/split-centres-global/code/bit_global.py": "3b2cb3ba21e5cf9b4deddb9e606322f33e9d8082020c0ee9092c21f4ebd9ad48", + "vendor/complex/split-centres-global/code/bit_audit.py": "7fdbc077b7501a53662769ff2bf2ab44cc2e32dafc34478d7ef2c10e3144503a", + "vendor/complex/split-centres-global/code/complex_construct.py": "0f7f45b2333ec7daf4291e2bf675b49bc330b97fb5965dd27220ba353c291d6f", + "vendor/complex/split-centres-global/code/bit_construct.py": "a461e6c983531beb5c8ac82ff593f39ce4e056387d1d6061f6e6b294dde4395f", + "vendor/complex/split-centres-global/code/complex_audit.py": "adeba5ea113652b60105db2e8719b18ffa292d3cc23730cca614b40272348330", + "vendor/complex/split-centres-global/code/bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "vendor/complex/split-centres-global/code/complex_integrate.py": "3792f41e409383e6989bda22801a4836a646a530f99e99bbd7244a8f3a1a8b4f", + "vendor/complex/split-centres-global/code/complex_phases.py": "13a959c52092776ae217df554b51c0298fa9eb3a350279acff6dece651c3f9cc", + "vendor/complex/split-centres-global/code/combined.py": "9c5bc70f2331b7342ceb252adcddb993581c45f80c37bcc58642dbad3b9775c2", + "vendor/complex/split-centres-global/code/complex_replay.py": "be2dccce2d1ad2c4f5c01a851c9c3896cc88236b5aeae706aad2ab16d6bfdad9", + "vendor/complex/split-centres-global/notices/PR426.md": "6a5593d0f284a2f0865037f5c5fa9e5f76f9e12cf50ec5284486d3b8137c89da", + "vendor/complex/split-centres-global/notices/PR426-SOURCE-PINS.json": "18ace817f2f9af22511bb303e99656ed114e534b87f3dd95a65ca4ca670baf2f", + "vendor/complex/split-centres-global/notices/NOTICE-PR352.md": "967e6d7e76e216e4898cf543c75b527e8d397ec1ddba3800cb20701f24c89524", + "vendor/complex/split-centres-global/notices/PR386.txt": "ae2241615a23063b18a04f1b7a88a52e62b3d7d42e333fbd21e3668567ab83d1", + "vendor/complex/split-centres-global/notices/SUSSMAN-NOTICE": "9419dd03a2f52cf8bdfc4d18216ce29f263ab583b27f01ced8e420985bcb7c81", + "vendor/complex/split-centres-global/notices/NOTICE.md": "025773f32fb43667395e64c627a1752877bdc93afbfe01b106703eee438d21d3", + "vendor/complex/split-centres-global/vendor/clifford_exact.py": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "vendor/complex/split-centres-global/vendor/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "vendor/complex/split-centres-global/vendor/hamming_packets.py": "daa9301e2767a711cfe66c6bebaad68e1a3bdb97ec9e848c927527ab43b37ae5", + "vendor/complex/split-centres-global/vendor/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/complex/split-centres-global/vendor/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/complex/split-centres-global/vendor/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "vendor/complex/split-centres-global/inputs/bit-geometry.json.gz": "5c980202227859e8bb9b863f94503930c2a59d460c0421356688e2b0d828b4a1", + "vendor/complex/split-centres-global/inputs/complex-template.json.gz": "1b84904a31a733aab9bfdda3f528c06719f590d2133a43687a8bded955dc991e", + "vendor/complex/split-centres-global/inputs/e8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "vendor/complex/split-centres-global/inputs/complex-phase-receipt.json": "01763fee5017745de982f2ff5ee68004e815d6684097cc88011dfbfb1e789581", + "vendor/complex/split-centres-global/inputs/bit-r767.json.gz": "bd3b84244528767b85d8d7fe423b155630b5c659e21e51563674b1dcb6305ad7", + "vendor/complex/split-centres-global/inputs/complex-ports.json.gz": "77b0c0fa19ef3da1c7316010e13493aa5eea1a50c3506eddc08f7480e659878b", + "vendor/complex/split-centres-global/inputs/complex-phase-recipes.json.gz": "b5472bb1d3f9ff41b0819780a42886a7686b4caf3c0617bb1dc86158b3fb8671", + "vendor/complex/split-centres-global/inputs/complex-data-phases.json.gz": "c972b5b60649c2a52354f5160f69adc0f4a270fa09d32012beff9888774ab84f", + "vendor/complex/e8-early-reset-kernel/PROOF.md": "fb4e1c3a23e3a0be48b5254133e584dad6fb523042ca8ef70358684fb9185962", + "vendor/complex/e8-early-reset-kernel/EXPECTED.json": "6710a99055d7ee1d83d9f811822bb72db84f6ce95bd4e1e17f1df1659c7e958b", + "vendor/complex/e8-early-reset-kernel/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/complex/e8-early-reset-kernel/SOURCE.json": "a5e84250b687624b2158597831fb36a5f2b068983862c491f8e1020c9806cc65", + "vendor/complex/e8-early-reset-kernel/bit_global.py": "79c7dc84e65dca10c35c842cf170e4719d45c38a25d03bf762332b24c700b6c9", + "vendor/complex/e8-early-reset-kernel/bit_audit.py": "203bb609952ad7b7ca761e9f9883ee9fa35a0a0474503b396d47a31169102e7d", + "vendor/complex/e8-early-reset-kernel/README.md": "4d7d736eda667533ab55bf3949e30832d4676d7ebeee00d9608307ecc5aacd4b", + "vendor/complex/e8-early-reset-kernel/VALIDATION.json": "77ad775cf69f5d913568b6276b0dfeb2eaef0306f57b71c0a467bff793807267", + "vendor/complex/e8-early-reset-kernel/MANIFEST.json": "95a9570287b64d22de30e6ae3acf931d5f6daef1a163f0c99532e1a24639fbc2", + "vendor/complex/e8-early-reset-kernel/SELECTION.json": "b5f5d8c78d912820c8ed1a67c21062bec799714b9caa6724dfd515306ad42a2b", + "vendor/complex/e8-early-reset-kernel/bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "vendor/complex/e8-early-reset-kernel/verify.py": "16c07414bc956744dc93b8e35b642267ea9819be922b0d3e081c543fdbf92a70", + "vendor/complex/e8-early-reset-kernel/NOTICE.md": "ff88b6031fe2fb5cbc483e8fcc08d228eaf2c982221adb3659da234dfa24cfeb", + "vendor/complex/e8-early-reset-kernel/combined.py": "4d514b6c70e969ec306d8c2bb38edec95b0cb7fa09f48dadbec8aa1eead69ce1", + "vendor/complex/e8-early-reset-kernel/source_span.py": "4772d177f37254c6f854af5ee3871aca193cfb24307a53c143c3bf517e56631e", + "vendor/complex/e8-early-reset-kernel/apply.py": "0d530e9703e1d1734c7af205bd393cba89ac41f75ed9781ea3dc5e46650f44f5", + "vendor/complex/e8-early-reset-kernel/local-evidence/ASSEMBLY.json": "7c3cc4b503e4cf0fd3e050be46ad0da183c5b1c490f4901245df944fd9d6194e", + "vendor/complex/e8-early-reset-kernel/local-evidence/SOURCE-SPANS.log": "bdf95dbce8337be57aab8a3d3b42a711ee276496c40cbb4c5356fc9cc9b2e811", + "vendor/complex/e8-early-reset-kernel/local-evidence/AUDIT.json": "76a146a9123d8b653e6e46ff93f153653f9cefd0f5c3fdd264a59f1322110262", + "vendor/complex/e8-early-reset-kernel/local-evidence/FULL-PYTHON314.json": "85797531db037d06fb597a4c9b6ef6bd71e6a0ab4f220ae70b1b6bf3aeda205f", + "vendor/complex/e8-early-reset-kernel/local-evidence/GLOBAL.json": "16c4e829eea1b2d12b70cec7e6a9c0e33ea0eae98a40894a3b779790fd2efbb3", + "vendor/complex/e8-early-reset-kernel/local-evidence/BIT-PRICE.json": "9a4a320cab1ce62b0c2329ac1bf3b81f73580fd603a406e4bfaae2962dfdad35", + "vendor/complex/e8-early-reset-kernel/local-evidence/FULL-PYTHON311.json": "62b37525bf7b60c0d9101ed571681f3bf46ea75df065939864307e4986018332", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/e8core.py": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "pooled_parent": { + "pr": 496, + "head": "00cf70efd6a8637531deafef698157ca83e249ee", + "manifest_sha256": "b7a3bdb801f4a9ae8c389edaee545a8d0cb16fd6211f38b54b71b5c50eb5a80c" + }, + "retimed_parent": { + "pr": 501, + "head": "1dc056496fdbbc74073ed26d948a2dc235dbf356", + "manifest_sha256": "a2295472662c4f845639c46305bd25cd713095fc23ca2478db8ee4eef3fd5e34" + } +} diff --git a/research/r489-partial-own-kernel84/code/apply_retime.py b/research/r489-partial-own-kernel84/code/apply_retime.py new file mode 100644 index 0000000000..4257c06841 --- /dev/null +++ b/research/r489-partial-own-kernel84/code/apply_retime.py @@ -0,0 +1,60 @@ +"""OpenAI Codex: apply a frozen frame-only retiming to verified PR484. +Usage: python -B apply_retime.py BASE_FULL-WORD.json.gz RETIME-FRAMES.json.gz OUT_FULL-WORD.json.gz +Source PR433/PR484 notices remain inherited. Frame accounting follows their +nested-frame contract, implemented here for independent frozen-map replay. +No optimizer runs; scalar gates, selected entrances and boundaries are fixed. +""" +import copy,gzip,hashlib,json,sys +from pathlib import Path +from collections import Counter + +def canonical(x):return json.dumps(x,sort_keys=True,separators=(',',':')).encode() +def basis(vs): + b={} + for x in vs: + for p in sorted(b,reverse=True): + if x>>p&1:x^=b[p] + if x: + p=x.bit_length()-1 + for q in b: + if b[q]>>p&1:b[q]^=x + b[p]=x + return tuple(b[p]for p in sorted(b,reverse=True)) +def inside(a,b):return basis(list(a)+list(b))==basis(b) +def registers(e):return [e[1],e[2]]if e[0]=='add'else[e[1]] +def profile(w): + v=120;n=240+w['report']['R'];full=basis([1<=0 for k in globalpaid.values());globalpaid={r:k for r,k in sorted(globalpaid.items())if k};assert globalpaid=={int(r):k for r,k in p['expected_global_profile'].items()} + z['report']['local_profile']={str(r):k for r,k in local.items()};z['report']['global_profile']={str(r):k for r,k in globalpaid.items()} + assert hashlib.sha256(canonical(z)).hexdigest()==p['candidate_word_json_sha256'] + out.write_bytes(gzip.compress(canonical(z),mtime=0));print(json.dumps(dict(status='PASS_FROZEN_FRAME_ONLY_RETIME_APPLICATION',changed_A_frames=len(p['A']),changed_B_frames=len(p['B']),local_profile=local,output_json_sha256=hashlib.sha256(canonical(z)).hexdigest(),output_gzip_sha256=hashlib.sha256(out.read_bytes()).hexdigest()),indent=2)) +if __name__=='__main__':main(*map(Path,sys.argv[1:4])) diff --git a/research/r489-partial-own-kernel84/code/audit484/assemble_candidate.py b/research/r489-partial-own-kernel84/code/audit484/assemble_candidate.py new file mode 100644 index 0000000000..72ee6f0376 --- /dev/null +++ b/research/r489-partial-own-kernel84/code/audit484/assemble_candidate.py @@ -0,0 +1,35 @@ +"""Two exact moment engines and strict outer composition of a new PR484 rehosting +with a freshly verified bit supplier. Prepared by OpenAI Codex; arithmetic +engines are pinned inherited PR361/Mercator and independent base-two code. +Usage: assemble_candidate.py AUDIT_OUT PARENT_VARIANT HOSTED BIT_RESULT +""" +from pathlib import Path +from fractions import Fraction as Q +import json,gzip,sys,hashlib,importlib.util +O,V,H,B=map(Path,sys.argv[1:5]);sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +def load(n): + p=V/'work/pr361/code/engines'/(n+'.py');s=importlib.util.spec_from_file_location('candidate_'+n,p);m=importlib.util.module_from_spec(s);s.loader.exec_module(m);return m +M,Other,Outer=[load(n)for n in ['moment','base_two_moment','outer']] +owner=json.loads((O/'OWNERS-AND-PROFILE.json').read_text());inv=json.loads((O/'PREFIX-AND-INVOICE.json').read_text());host=json.loads((H/'HOSTED.json').read_text());bit=json.loads(B.read_text());P={int(r):n for r,n in owner['paid_profile'].items()};m,W=73,owner['live'];assert m*W-sum(r*n for r,n in P.items())==2496 +rc=M.certify(P,m,W,True);b=Q(rc['lower']);bp=Q(rc['upper']);assert bp-b==Q(1,10**24) +fallback=32*m*m*sum(P.values());receipts=[] +for z,accept in[(b,True),(bp,False)]: + ml,mh=M.moment(P,m,W,z,True);a,c=Other.moment(m,W,list(P.items()),z);d,e=Other.moment(m,W,[(1,fallback)],z);a+=d/10**16;c+=e/10**16 + assert (mh<1 and c<1)if accept else(ml>1 and a>1) + receipts.append(dict(endpoint=str(z),mercator=[str(ml-1),str(mh-1)],base_two=[str(a-1),str(c-1)],accept=accept)) +c=Q(bit['bit_lower']);eta=beta=Q(1,10**18);grid=Q(1,10**18);s=min(c,(1-beta)*b)-Q(1,10**24) +assert 00 + cut=max(ceil(36/gap**2),ceil(2*(4+coeff)/gap));assert cut*gap**2>=36 and cut*gap>=2*(4+coeff);cuts.append(dict(gap=str(gap),cutoff_log2=str(cut)));chain.append(a) +q=chain[-1]*(1-2*eta);margin=(1-eta)*q/(1+q);ticks=margin/grid;kap=grid*((ticks.numerator-1)//ticks.denominator) +bridge={'semantic':{'C0':{'base':2,'exponent':210000},'strict_literal_gap':1},'rows':{'degree_gap':Q(10**6)-Q(51*row,25)}} +a=Outer.assembly(chain[-1],b,bridge,kap,eta=eta,beta=beta);assert len(a['strict_constraints'])==47 and all(x>0 for x in a['strict_constraints'].values());controls=[] +for name,k,e,be in [('next_grid',kap+grid,eta,beta),('zero_eta',kap,Q(0),beta),('zero_beta',kap,eta,Q(0)),('unit_beta',kap,eta,Q(1))]: + try:Outer.assembly(chain[-1],b,bridge,k,eta=e,beta=be) + except AssertionError:controls.append(name) + else:raise AssertionError(name) +res=dict(status='PASS_REHOSTED_COMPLEX_AND_FRESH_BIT_EXACT_ASSEMBLY',complex_lower=str(b),complex_decimal=rc['lower'],next_b_rejected=str(bp),exact_moment_receipts=receipts,bit_lower=str(c),bit_result_sha256=sha(B),bit_template_sha256=bit['bit_template_sha256'],bit_prefix_bits=bit['bit']['charged_prefix_bits'],bit_charged_three_level_coefficient_bits=coeff,external_row_allowance=row,kappa=str(kap),kappa_decimal=f'{float(kap):.18f}',binding_component='bit'if c<(1-beta)*b else'complex',strict_outer_constraints={k:str(v)for k,v in a['strict_constraints'].items()},outer_controls=controls,bootstrap=cuts,complex_template_sha256=host['template_sha256'],owner_audit_sha256=sha(O/'OWNERS-AND-PROFILE.json'),invoice_sha256=sha(O/'PREFIX-AND-INVOICE.json'),scope='Conditional finite witness. Inherited compiler, precision/tape and analytic-transfer contracts remain assumed; changed-host operator admission recorded separately.') +(O/'EXACT-ASSEMBLY.json').write_text(json.dumps(res,indent=2)+'\n');print(res['status'],'b',res['complex_decimal'],'kappa',res['kappa_decimal'],flush=True) diff --git a/research/r489-partial-own-kernel84/code/audit484/audit_pooled_candidate.py b/research/r489-partial-own-kernel84/code/audit484/audit_pooled_candidate.py new file mode 100644 index 0000000000..fb1ca8e31d --- /dev/null +++ b/research/r489-partial-own-kernel84/code/audit484/audit_pooled_candidate.py @@ -0,0 +1,20 @@ +"""Portable independent admission of the complete pooled PR484 derivative. +Prepared by OpenAI Codex. Inputs are fresh supplier replay outputs and new +serialized candidate, with separate stdlib controller audit supplied by another +checker. No source or supplier result is modified. +""" +from pathlib import Path +import argparse,json,subprocess,sys,hashlib,gzip +p=argparse.ArgumentParser() +for x in ['parent','hosted','bit-result','phases','controller-audit','out']:p.add_argument('--'+x,type=Path,required=True) +a=p.parse_args();a.out.mkdir(parents=True,exist_ok=False);C=Path(__file__).resolve().parent;steps=[];sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +commands=[('owners',[C/'audit_pooled_owners.py',a.out,a.parent,a.hosted,a.phases]),('scalar-invoice',[C/'audit_scalar_invoice.py',a.out,a.parent,a.hosted]),('global-prefix',[C/'audit_pooled_prefix.py',a.out,a.parent,a.hosted,a.controller_audit]),('two-moments-outer',[C/'assemble_candidate.py',a.out,a.parent,a.hosted,a.bit_result])] +for label,args in commands: + with(a.out/(label+'.log')).open('w')as log:r=subprocess.run([sys.executable,'-B',*map(str,args)],stdout=log,stderr=subprocess.STDOUT) + steps.append(dict(stage=label,observed_exit=r.returncode));(a.out/'OBSERVED-EXITS.json').write_text(json.dumps(steps,indent=2)+'\n');r.check_returncode() +read=lambda p:json.loads(gzip.decompress(p.read_bytes())if p.suffix=='.gz'else p.read_bytes()) +raw=gzip.decompress((a.hosted/'GLOBAL-TEMPLATE.json.gz').read_bytes());t=json.loads(raw);h=read(a.hosted/'HOSTED.json');c=read(a.controller_audit);o=read(a.out/'OWNERS-AND-PROFILE.json');g=read(a.out/'GLOBAL-PREFIX.json');x=read(a.out/'EXACT-ASSEMBLY.json') +hash_=hashlib.sha256(raw).hexdigest();assert hash_==h['template_sha256']==c['complex_template_sha256']==g['template_sha256']==x['complex_template_sha256'];assert c['complex_profile']==h['global_profile']==o['paid_profile'];assert c['complex_live']==t['live']==o['live'] +assert len(c['mutations_rejected'])>=18 and c['one_owner_per_complete_invocation'];assert all(sha(a.parent/n)==v for n,v in h['source_artifacts'].items()) +report=dict(status='PASS_COMPLETE_POOLED_COMPLEX_FINITE_ADMISSION',complex_template_sha256=hash_,complex_profile=o['paid_profile'],complex_live=o['live'],physical=o['physical'],rank_mass=o['rank_mass'],deficit=o['deficit'],complex_hosted_residuals=o['hosted_residuals'],one_owner_per_complete_invocation=True,actual_73column_sigmas=o['actual_73column_sigmas'],cross_replica_helper_roles=o['cross_replica_helper_roles'],global_prefix_bits=g['global_prefix_bits'],retained_payload_bits=g['retained_payload_bits'],source_artifacts=h['source_artifacts'],controller_audit_sha256=sha(a.controller_audit),controller_mutations_rejected=c['mutations_rejected'],bit_result_sha256=sha(a.bit_result),complex_lower=x['complex_lower'],kappa=x['kappa'],kappa_decimal=x['kappa_decimal'],observed_stages=steps,files={str(p.name):sha(p)for p in a.out.glob('*.json')},scope='Exact finite program, complete-invocation normalization, whole physical owners, both scalar orientations, full paid profile, cross-replica-safe global prefix and strict arithmetic assembly. Retains inherited all-size compiler/precision/tape/common-grid and analytic-transfer contracts. PR484 source remains unchanged; independent audit by OpenAI Codex.') +(a.out/'ADMISSION.json').write_text(json.dumps(report,indent=2)+'\n');print(report['status'],'kappa',report['kappa_decimal'],flush=True) diff --git a/research/r489-partial-own-kernel84/code/audit484/audit_pooled_owners.py b/research/r489-partial-own-kernel84/code/audit484/audit_pooled_owners.py new file mode 100644 index 0000000000..7d3e8a4a88 --- /dev/null +++ b/research/r489-partial-own-kernel84/code/audit484/audit_pooled_owners.py @@ -0,0 +1,83 @@ +"""Independent actual whole-owner charts and full paid-profile recount for PR484. +Uses raw canonical word, local programs and emitted owner arrays, no package imports. +OpenAI Codex audit; inherited all-size assumptions are outside this finite check. +""" +from pathlib import Path +from collections import Counter,defaultdict +import json,gzip,hashlib +import sys +O=Path(sys.argv[1]);V=Path(sys.argv[2]);HOSTED=Path(sys.argv[3]);PHASES=Path(sys.argv[4]) +def read(p):return json.loads(gzip.decompress(p.read_bytes())if p.suffix=='.gz'else p.read_bytes()) +w=read(V/'split-centres/CANONICAL-WORD.json.gz');t=read(HOSTED/'GLOBAL-TEMPLATE.json.gz');parent=read(V/'split-centres/GLOBAL-TEMPLATE.json.gz');ph=read(PHASES);host=read(HOSTED/'HOSTED.json');M=73;DATA=7680;H=9;n=800 +assert (w['v'],w['R'],w['h'])==(120,560,9)and t['live']==7680 +widths=[H-len(w['frames'][w['start'][240+i]])for i in range(560)] +def par(a):return a.bit_count()&1 +def basis(q): + j=0 if not(q&1)else next(i for i in range(1,9)if not(q>>i&1));u=q^(1<0;sp=r[3] + idx=list(range(off,off+w0));assert len(sp)==e0 and len(set(idx+sp))==9 + assert not set(idx)&bank[f];bank[f].update(idx);specs.append((f,sp,e0));banked+=1 + chart=idx+sp+[i for i in range(M)if i not in idx+sp];assert len(chart)==M and set(chart)==set(range(M)) + charts.update(json.dumps([s,rep,h,f,chart],separators=(',',':')).encode()+b'\n');chartcache.add((r[0],f%120 if f d*sigma^-1 is a bijection on that finite group; no family can be active +# twice in a complete cover sweep. Different dirty-helper incidences are +# permitted, since their completed endpoint is a unitary coordinate factor. +locals_=len(t['calls']);bridges=[e for e in t['recipe']if e['kind']=='bridge'];assert locals_==72 and len(bridges)==9 and all(abs(e['coefficient'])==1 for e in bridges) +for row in t['calls']: + assert row['orientation']in('forward','backward') + assert len(row['owners'])==len(set(f for f,_ in row['owners']))==800 + assert row['owners'][:240]==next(x for x in base['calls']if(x['stage'],x['replica'])==(row['stage'],row['replica']))['owners'][:240] +# The independently replayed 800-column scalar maps have row-l1 <=2; their +# fixed frame and endpoint operators are unitary. Thus maximum stream L2 norm +# grows <=2 per complete invocation (more conservatively, per cover sweep). +# All idle factors, wrappers, addresses and terminal signed exchanges are +# unitary. Unit-modulus Gauss monomials are unitary; C_q=aI+bX_q is unitary +# since |a|^2+|b|^2=1 and a*conj(b)+b*conj(a)=0. +peak=max(F(x['prefix_l1'])for x in invoice['local'].values());localbits=peak.numerator.bit_length()-peak.denominator.bit_length()+1;assert localbits>0 and peak<2**localbits +input_to_l2=37 # sqrt(2^73) <2^37 for input sup norm1 per physical stream +complete_bits=locals_+len(bridges);primitive_margin=4 +payload=localbits+input_to_l2+complete_bits+primitive_margin +assert payload<192 +# No extra helper role or chart operation is introduced: all40320roles still +# receive the two selectors already charged in the unhosted finite invoice. +assert len(t['idle_children'])==own['explicit_idle_remainder_children']<=own['source_idle_children_charged'] +assert own['banked_residuals']==0 and len(t['bank_padding']['families'])==0 +assert t['physical']<=base['physical']and t['live']<=base['live'] +assert invoice['conservative_pervertex_used']==invoice['unhosted_pervertex'] +report=dict(status='PASS_GLOBAL_POOLED_PREFIX_AND_NORMALIZED_INTERFACE',template_sha256=th,source_template_sha256=hashlib.sha256(gzip.decompress((V/'split-centres/GLOBAL-TEMPLATE.json.gz').read_bytes())).hexdigest(),controller_audit_sha256=sha(C),local_programs_sha256=sha(V/'split-centres/LOCAL-PROGRAMS.json.gz'),canonical_word_sha256=sha(V/'split-centres/CANONICAL-WORD.json.gz'),residual_adapters_sha256=sha(V/'split-centres/RESIDUAL-ADAPTERS.json'),actual_sigma_table_sha256=sha(H/'ACTUAL-SIGMAS.json.gz'),sigma_count=len(sigmas),orthogonal_73column_group_membership_checked=True,whole_owner_injection_all_calls=True,local_complete_row_l1_bound=2,complete_invocation_cover_sweeps=locals_,bridge_factor_two_sweeps=len(bridges),local_scalar_coefficient_work_prefix_bits=localbits,stream_input_sup_to_l2_bits=input_to_l2,primitive_arithmetic_margin_bits=primitive_margin,global_prefix_bits=payload,retained_payload_bits=192,charged_helper_selectors=2*40320,actual_idle_remainders=len(t['idle_children']),idle_children_already_charged=own['source_idle_children_charged'],conservative_pervertex_used=invoice['conservative_pervertex_used'],proof=f'Take the maximum L2 norm over all physical streams(F,g). A complete helper invocation has normalized endpoint C_pending tensor I and hence preserves this norm; full data endpoints have at most two unitary summands, and each bridge has coefficients±1. For each call, each actual orthogonal chart sigma induces a bijection d→d*sigma^-1 on O(73,2), so a complete cover sweep touches each active physical stream once. Completed helper interactions in other cover classes preserve its norm. Consequently72ordered invocation sweeps and9bridges contribute at most81bits, with no independence of replicas and no factor proportional to cover size. Inside an invocation the exact all-column scalar/Horner envelope contributes{localbits}bits; every frame/normalizer is unitary. An initial2^73entry stream with supremum≤1 has L2<2^37. Four bits cover primitive arithmetic before normalization, giving{payload}<192. The all-size child/compiler interfaces and their existing precision/tape contracts remain inherited.',scope='New finite cross-replica global prefix argument under verified complete-invocation normalization and inherited O(73,2) cover/compiler contracts; no unconditional all-size theorem.') +(O/'GLOBAL-PREFIX.json').write_text(json.dumps(report,indent=2)+'\n');print(report['status'],'global_prefix_bits',payload,'<192',flush=True) diff --git a/research/r489-partial-own-kernel84/code/audit484/audit_scalar_invoice.py b/research/r489-partial-own-kernel84/code/audit484/audit_scalar_invoice.py new file mode 100644 index 0000000000..b03fdf510f --- /dev/null +++ b/research/r489-partial-own-kernel84/code/audit484/audit_scalar_invoice.py @@ -0,0 +1,82 @@ +"""Fresh PR484 scalar/prefix lowering and finite overcharge recount. OpenAI Codex. +Reads emitted programs, canonical word and raw routes, importing no supplier code. +Inherited all-size compiler admissibility is a condition, not inferred here. +""" +from pathlib import Path +from fractions import Fraction as F +from collections import Counter +import gzip,json,math,hashlib +import sys +O=Path(sys.argv[1]);V=Path(sys.argv[2]);HOSTED=Path(sys.argv[3]) +def read(p):return json.loads(gzip.decompress(p.read_bytes())if p.suffix=='.gz'else p.read_bytes()) +w=read(V/'split-centres/CANONICAL-WORD.json.gz');p=read(V/'split-centres/LOCAL-PROGRAMS.json.gz');old=read(V/'split-centres/GLOBAL-TEMPLATE.json.gz');new=read(HOSTED/'GLOBAL-TEMPLATE.json.gz');integ=read(V/'split-centres/INTEGRATION.json');checks=read(V/'split-centres/LOCAL-CHECKS.json');prior=read(V/'split-centres/INDEPENDENT-REPLAY.json');owners=read(O/'OWNERS-AND-PROFILE.json') +N=800;M=73;R=560;L=9;T=8;VV=120;K=4 +local={} +for ori,evs in p.items(): + rows={('L',i):{i:F(1)}for i in range(N)};env={('L',i):F(1)for i in range(N)};peak=F(1);real=macros=0;paid=Counter();workops=0 + for e in evs: + if e[0]=='climb':paid[e[5]]+=1 + elif e[0]=='center':paid[e[4]]+=1 + elif e[0]=='scalar': + macros+=1;x=e[1];op=x[0];a=tuple(x[1]);count=0 + if op=='clear':rows[a]={};env[a]=F(0);count=1 + elif op=='copy':rows[a]=dict(rows[tuple(x[2])]);env[a]=env[tuple(x[2])];count=1 + elif op=='scale': + q=F(x[2],x[3]);num,den=abs(q.numerator),q.denominator + assert num and num&(num-1)==0 and den&(den-1)==0 + rows[a]={j:q*v for j,v in rows[a].items()};env[a]*=abs(q) + count=abs(num.bit_length()-den.bit_length())+int(q<0) + elif op=='add': + b=tuple(x[2]);q=F(x[3],x[4]);num,den=abs(q.numerator),q.denominator + assert a!=b and num>0 and den&(den-1)==0 + # Lower actual coefficient to cleared Horner work. Every intermediate + # magnitude envelope is explicitly included, before denominator halvings. + acc=0;count=1 + for i,ch in enumerate(bin(num)[2:]): + if i:acc*=2;count+=1;peak=max(peak,acc*env[b]) + if ch=='1':acc+=1;count+=1;peak=max(peak,acc*env[b]) + v=F(acc) + for i in range(den.bit_length()-1):v/=2;count+=1;peak=max(peak,v*env[b]) + assert v==abs(q);count+=2 # signed accumulation and private work clear + env[a]=env.get(a,F(0))+abs(q)*env[b];rr=rows.setdefault(a,{}) + for j,z in list(rows[b].items()): + value=rr.get(j,F(0))+q*z + if value:rr[j]=value + else:rr.pop(j,None) + workops+=count + else:raise AssertionError(op) + real+=2*count;peak=max(peak,env[a]) + assert all(not row for reg,row in rows.items()if reg[0]=='C') + for i in range(N): + expected={i:F(1)} + if ori=='forward'and 120<=i<240:expected[i-120]=F(1) + if ori=='backward'and i<120:expected[i+120]=F(-1) + assert rows['L',i]==expected + assert peak==F(prior['local'][ori]['prefix_l1_upper']) and peak<2**192 + assert real==checks[ori]['real_component_primitive_bound']and macros==checks[ori]['scalar_macros'] + assert dict(paid)=={int(r):z for r,z in checks[ori]['paid_profile'].items()} + local[ori]=dict(events=len(evs),macros=macros,real_component_primitives=real,prefix_l1=str(peak),prefix_bits=peak.numerator.bit_length()-peak.denominator.bit_length()+1,coefficient_work_primitive_count=workops,all_exact_columns=N,all_560_dirty_helper_columns_restored=True,private_centres_and_coefficient_work_cleared=True) +centres=len(w['centers']);widths=[9-len(w['frames'][f])for f in w['start'][240:]];enter=sum(x<9 for x in widths) +children=sum(checks['forward']['paid_profile'].values());macros=max(x['macros']for x in local.values());compiler=64*(M+1)**3 +adapters=16*(macros+children+N+centres)+64*M +primitive_bound=max(x['real_component_primitives']for x in local.values())+adapters*compiler +bridges=sum(e['kind']=='bridge'for e in old['recipe']);bridgeadd=2*VV*T*bridges;shifts=K*VV*T;moves=2*K*VV*T +oldW=old['live'];oldP=old['physical'];oldNB=(oldW-2*VV*K*T)//L +scalar=sum(local[c['orientation']]['real_component_primitives']for c in old['calls']) +nonlocal_items=4*VV*T*L+2*VV*T*L+2*L*T*R+sum(e['replicas']for e in old['idle_children'])+L*oldNB+bridgeadd+shifts+moves+oldW+oldP+2*L*T*enter*144 +outside=8*nonlocal_items+64*M +pervertex=scalar+bridgeadd+shifts+moves+oldW+(72*adapters+outside)*compiler+64*oldP +invoice=integ['finite_invoice'];assert (primitive_bound,adapters,pervertex,compiler)==(invoice['local_primitive_bound'],invoice['local_adapters'],invoice['pervertex'],invoice['compiler']) +# Independent hosted stock rebase, retaining the larger unhosted operation +# overcharge; only the stock and mass in the common router/literal change. +W=new['live'];P=new['physical'];mass=owners['rank_mass'];profile=owners['paid_profile'] +assert M*W-mass==2496 and P==W+R+centres+2 +rebase=pervertex-oldP*65+P*65-oldW+W;used=max(rebase,pervertex) +r=M//2;group=2**(r*r) +for i in range(1,r+1):group*=2**(2*i)-1 +stock=group*P;smass=group*mass;logical=group*used+64;router=compiler*(logical+1)*(stock+1)**2 +G,E,C0=2**30000,2**100000,2**210000;B=smass+E;literal=2*G*stock**2+8*smass+4*stock+4+32*M;row=2*stock.bit_length()+9909+252;maxchild=max(map(int,profile)) +ineq=dict(local_primitive_bound=primitive_bound<2**48,logical=logical<2**6050,router=router2*maxchild*maxchild) +assert all(ineq.values()) +out=dict(status='PASS_INDEPENDENT_SCALAR_PREFIX_AND_HOSTED_FINITE_INVOICE',local=local,entering_helpers=enter,entrance_rank=sum(9-x for x in widths),local_adapters=adapters,local_primitive_bound=primitive_bound,wrapper_elementary_factors_charged=2*72*enter*144,compiler=compiler,unhosted_pervertex=pervertex,hosted_rebased_pervertex=rebase,conservative_pervertex_used=used,finite=dict(physical_stock_bits=stock.bit_length(),router_bits=router.bit_length(),literal_bits=literal.bit_length(),physical_row_coefficient=row,retained_row_coefficient=20161,required_C0_bits=(32*M*B*B).bit_length(),halving_integer_inequality=[M*M,2*maxchild*maxchild],G_exponent=30000,E_exponent=100000,C0_exponent=210000),strict_checks=ineq,scope='Exact finite recount conditional on inherited all-size compiler/precision/tape and analytic-transfer contracts. Signed accumulation uses the supplier scalar primitive convention.') +(O/'PREFIX-AND-INVOICE.json').write_text(json.dumps(out,indent=2)+'\n');print(json.dumps(out,indent=2),flush=True) diff --git a/research/r489-partial-own-kernel84/code/audit493/review_invoice.py b/research/r489-partial-own-kernel84/code/audit493/review_invoice.py new file mode 100644 index 0000000000..7e791e5dfb --- /dev/null +++ b/research/r489-partial-own-kernel84/code/audit493/review_invoice.py @@ -0,0 +1,73 @@ +"""Independent PR493 pinned-source invoice and exact arithmetic audit, OpenAI Codex. Apache-2.0. +Usage: review_invoice.py PR493_PACKAGE FRESH_OUTPUT REPORT.json +""" +from pathlib import Path +from fractions import Fraction as Q +from collections import Counter +import gzip,hashlib,importlib.util,json,sys +if not __debug__:raise RuntimeError('assertions must remain enabled') +assert len(sys.argv)==4, 'usage: review_invoice.py PR493_PACKAGE FRESH_OUTPUT REPORT.json' +PKG,O,REPORT=map(lambda x:Path(x).resolve(),sys.argv[1:]) +sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +read=lambda p:json.loads(gzip.decompress(p.read_bytes()) if p.suffix=='.gz' else p.read_bytes()) +manifest={} +for line in (PKG/'MANIFEST.sha256').read_text().splitlines():h,p=line.split(' ',1);manifest[p]=h +actual={str(p.relative_to(PKG)):sha(p) for p in PKG.rglob('*') if p.is_file() and p.name!='MANIFEST.sha256' and '__pycache__' not in p.parts};assert actual==manifest +PINNED_BLOBS={'EXPECTED.json': '973aaf30f1ec6a4d58038acabb9361ee1f44787a', 'LICENSE': '261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64', 'MANIFEST.sha256': '1213654fbd423d66e785bf582ba8ee76a41cdd36', 'NOTICE.md': '5a0ecdcd2c7fad0488740a1da0f633b73b56a809', 'README.md': 'dd0d7c43611d6c527a17287bc550e763edca0294', 'SOURCE-pr370.json': '1b30f277afa20cb9db1e4495d655a32d64552317', 'SOURCE-pr381.json': 'fb0b0edd1375ffcbe9b2c9065bcca236a974660f', 'SOURCE-pr386.json': '3744861904f61f29b00e2dec9cb98639a0fb7dfe', 'SOURCE-pr436.json': 'f190527ae1c97a51fa9030518b59affeb0befcd3', 'SOURCE-pr445.json': 'ae29de391a7aa893bec6ab8c2b6e89688191b088', 'SOURCE-pr448.json': '3648ab36928a28564ce89d224cfb3f16c891ecf1', 'SOURCE-pr451.json': 'fbd9881e09d7219f264eb1ee67c40c2e43d0832e', 'SOURCE-pr458.json': 'c36c74cbeacf690473803b59a8d25008ec5a7710', 'SOURCE-pr471.json': '0dc019cfb1933e55d063fbd9e45bb316e4045857', 'SOURCE-pr472.json': '31acb027ecd0808f18e6f59c59662f6f94f5b9ac', 'SOURCE-pr473.json': '821caf8f073c615680ba5610e268eee2d23d2d03', 'SOURCE-pr478.json': '608323ccbe4150d5a6522ddb3b18aa9cb5dff4fa', 'SOURCE-pr483.json': '817396d9c89965a32979b943e638163d8261a205', 'SOURCE-pr484.json': '76292df8518ac72acb3754a7b4fb23c368725b13', 'code/bit/checkers/columns_h.cpp': '00c5a3a5d81d083582f60f33dd2e7bea5049c37f', 'code/bit/checkers/columns_k.cpp': '42bb232fbec4de703e70cc13dc2f39a3b43a3a01', 'code/bit/checkers/gram_frames.py': 'b740d47295c02692260d7cc01874a49fe48f78ab', 'code/bit/checkers/json.hpp': '82d69f7c5d044c9887c96b90c97f5639083ecd14', 'code/bit/checkers/legality_h.cpp': 'cb1233c7e96b1aa8bbf4d2e4165d75ab0dca64b9', 'code/bit/export_records.py': '3632d370486a02f5456f7643ced03f8c925b2350', 'code/bit/independent/checkword.py': 'da4e0fe05067184d4dab1e130ae1384c1fa983f5', 'code/bit/independent/interface.py': '8beb87c39a07e389c8f83f32ab9d17f8097ed9b1', 'code/bit/independent/mutate.py': 'eba592fd468e0d7e7e5100fe99da6eb548c5906b', 'code/bit/independent/mutate_mut.py': 'f4c6191b783094c4d241f179446085331feb052b', 'code/bit/independent/relax.py': 'a37e8b8176080d4a977bb48bd25f92f4a62b156b', 'code/bit/mutate_records.py': '6794516f665d36eac189894e350a5ad01113cb4c', 'code/bit/mutate_records_mut.py': 'ea26fcebf99312eb5d4f5440862959fa6a74ec52', 'code/bit/regression/stage_cohort.py': 'f6d7afe3e623208c4207b6a683a1e3e49249e31c', 'code/cited.py': 'e543cf2c9b2b1d43693bed6efbdba607ad9ac277', 'code/eleven/adapt.py': 'c13c91c245146670d4b454ff07b835f480171fc1', 'code/eleven/assemble.py': '87cc45bc831fa7003906e8b026ac1480a69da1de', 'code/eleven/audit.py': '10e47d32e3b4769ae5ce5bad9f76a7b3e5d797fc', 'code/eleven/emit.py': '640cdb4d1220950e198f2fd9994d76d69ecbf764', 'code/eleven/local_audit.py': '2233c5f35f2fcb58809f7a1d8f91e9b36ad74080', 'code/hub/e8-r715-whole-hosted/code/assemble.py': 'cd60b4bcfae515fccd7f21fd1ff5a7114a132eb9', 'code/hub/e8-r715-whole-hosted/code/audit.py': '155b61f2944116423a5be6ae666276e1c1827fe5', 'code/hub/e8-r715-whole-hosted/code/emit.py': 'df74ad698a98419e828b37d4dfd7c036fc49a890', 'code/hub/e8-r715-whole-hosted/code/local_audit.py': '931f884920125b334412f70cf30d9517b084dc7a', 'code/hub/e8-r715-whole-hosted/data/hosting.json': '381fb06ccbe055f4fbdc7544dcf8c0bae8f96701', 'code/hub/e8-r715-whole-hosted/data/residual-isometries.json': '5864e4d680035401d53d32adab0369046d80b171', 'code/hub/e8-r715-whole-hosted/data/word.json.gz': 'f7d55b8bd45d385011ced25e632a3d922bb77bba', 'code/hub/e8-r740-replica32/code/bank_routes.py': '9e43a876664a26899762f3b8e9a582e684a3650a', 'code/hub/e8-r740-replica32/code/e8core.py': '78983b368715e89fe8524a6dd2c13585d2b5394e', 'code/hub/e8-r740-replica32/code/engines/base_two_moment.py': '14a90fa0e788217856f070382c9e61bd7c603c61', 'code/hub/e8-r740-replica32/code/engines/moment.py': '7d697cb45203fe72d97037403d6da41f71f3b7fd', 'code/hub/e8-r740-replica32/code/engines/outer.py': '43007488ad2c43187c77cc6798beff8b1cd76ad2', 'code/hub/e8-r740-replica32/code/tile_m.py': 'cd5fd9b5399f5e7afe5d2a95bd3504bd543c0d60', 'code/hub/e8-r740-replica32/data/residual-isometries.json': '9b8b35cb1528a978e209e1098864cae48c57fd93', 'code/hub/e8-r740-replica32/data/word.json.gz': '85390b07e4747feddbf2e16f94b5e0a8a308c191', 'code/hub/idle-axis-hosting/hosting_core.py': '68b536daa9e6546c0aa046934bf840aaa3c3fde3', 'code/hub/r740-hosted-eleven/code/emit.py': '5ff0de0d6f088ac95e25a2a7aed8653e8cd0333e', 'code/hub/r740-hosted-eleven/code/geometry.py': 'b4ad5074014dc00a01143910eb1cd27fafe0e15c', 'code/hub/r740-hosted-eleven/code/row_bound.py': '11d3c0d48e4ea5a02ac3b6689f3c7d36f2972eb8', 'code/hub/r740-hosted-eleven/data/selection.json': '8e548e5a9204a909d539ba36b866804b256d4c2b', 'code/hub/r740-hosted-rank149/code/emit.py': '5ff0de0d6f088ac95e25a2a7aed8653e8cd0333e', 'code/hub/r740-hosted-rank149/data/residual-isometries.json': 'ec8b4131d203d7a288ca078ca559f922d38fe9d2', 'code/hub/r740-hosted-rank149/data/selection.json': 'c57069f7385c3b6aff4fe3c73c0a21bae727c76f', 'code/hub/r740-hosted-rank149/data/word.json.gz': '3c8489a29f0de2cad7dafaddc340a1ff197d5172', 'code/nine/geometry.py': '91594e0223e8fac49162b5aef834ffaa8e94a254', 'code/pricing/base_two_moment.py': '14a90fa0e788217856f070382c9e61bd7c603c61', 'code/pricing/moment.py': '7d697cb45203fe72d97037403d6da41f71f3b7fd', 'code/pricing/outer.py': '43007488ad2c43187c77cc6798beff8b1cd76ad2', 'code/pricing/prime_witnesses.py': '7f16d930302ae879c562dd58e085d9747fcac077', 'code/provenance.py': '9bfcb106230e454d9405ce5eb42dd2218d905ea6', 'code/skeleton/e8.py': '92e83a2e0c1f67551f583630a728b2a880b06f51', 'code/skeleton/gen.py': '9811c127d41521e906462a75322a29f0e193629c', 'code/skeleton/geom.py': '9e5fe3a781dc52e07b7c5de3a44c8be6f5024cd4', 'code/skeleton/wordkit.py': '7cc4e6d618d9d0166efe8be75a019b6aecee0582', 'data/bit/bitE8-r865.json.gz': '8bec1751f7e33c3a1e4673ef5dbc34d6f205321e', 'data/bit/bitE8mut-r489.json.gz': 'ef67bec220c96a1de7b87c9f1a6e7acb26cb3284', 'data/complex-b.json': '0df48f8e590fc9ad01ca4d6eaf97b9acc10aac7d', 'data/complex/pr448/EXPECTED.json': '1574e6488b6fc59191ae49fcc0c089e48b196fbd', 'data/complex/pr458/EXPECTED.json': 'e06a17c177eee0e0962c96ea61554239ef38ef4d', 'data/complex/pr471/EXPECTED.json': 'ed1e72239ebebdbfad847fb817e5546f980c1d8d', 'data/complex/pr473/EXPECTED.json': '45ee9fde7fdf6b19b6303372068977201b4ef61c', 'data/complex/pr478/EXPECTED.json': '77f5805cd8125602e8c50f4eaba1691440c611c2', 'data/complex/pr483/EXPECTED.json': 'f7ff643cd54a334bf46c82989ba155eb6e69adde', 'data/complex/pr484/EXPECTED.json': '7f93fcbb9f1c2799fd86dd308ec1e6f0ad2a3264', 'data/eleven/hosting.json': '72b63ff0866db6aec50ecd356d7d007b17bf6475', 'data/eleven/residual-isometries.json': '5c645b267861fd0994d2679885f8e0bbf99640b0', 'data/skeleton/d4part-pairs.json': '7ea439877369b6c2e94bb47980d08944d61454fb', 'data/skeleton/plan-skB.json': '52e341f4f0b441ff88897162cc9f25eb72f34405', 'discovery/README.md': '751a9e82df9c860b496affd423b938cb008e2d88', 'discovery/d4part.py': 'ed7418a0800321d7629e86b4946f77e8cf60a044', 'discovery/host_select.py': '5b50de453ddbd90d433f9ea8ed584308e7ab2d0f', 'discovery/plan.py': '050a3ca42bad8b3d34d149607a7c67de39a52356', 'portable-include/bits/stdc++.h': 'fc5664e929d9a81d9b4926bee049a93330be86ec', 'requirements.txt': '05bdf190fff0fda4cf958441aa15b9d7a9239ad4', 'verify.sh': 'dd7df2a4445f5a8b0d5e336a855a930ab5d34bee'} +blobs=0 +for path,blob in PINNED_BLOBS.items(): + raw=(PKG/path).read_bytes();assert hashlib.sha1(b'blob '+str(len(raw)).encode()+b'\0'+raw).hexdigest()==blob;blobs+=1 +res=read(O/'RESULT.json');exp=read(PKG/'EXPECTED.json');g=read(O/'bit/GLOBAL.json');a=read(O/'bit/AUDIT.json');geo=read(O/'bit/GEOMETRY.json');t=read(O/'bit/GLOBAL-TEMPLATE.json.gz') +assert hashlib.sha256(json.dumps(read(O/'word.json.gz'),sort_keys=True,separators=(',',':')).encode()).hexdigest()==exp['word']['content_sha256'] +assert hashlib.sha256(gzip.decompress((O/'bit/GLOBAL-TEMPLATE.json.gz').read_bytes())).hexdigest()==g['template_sha256']==a['template_sha256']==res['bit_template_sha256'] +assert g['emitted_program_sha256']==a['emitted_program_sha256']==res['emitted_program_sha256']==exp['eleven']['emitted_program_sha256'] +p=Counter() +for call in t['calls']: + for ins in t['local_programs'][call['orientation']]: + if ins[0]==0 and ins[4]:p[ins[4]]+=1 + elif ins[0]==2:p[ins[5]]+=1 +for histogram in t['hosting']['remainders'].values(): + for rank,count in histogram.items(): + if int(rank):p[int(rank)]+=count +summarized={int(k) for k in t['hosting']['remainders']} +for e in t['schedule']: + if e['kind']=='idle' and e['rank'] and e['idx'] not in summarized:p[e['rank']]+=1920 +assert {str(k):v for k,v in p.items()}==a['profile']==res['bit_profile']==exp['eleven']['profile'] +m,W,T,L,V,K,H=78,9600,8,11,120,5,489;E=sum(p.values());physical=W+9;J=8*T*L*(2*V+H)+8*(2*K*V*T)+2*L*T*H+2*g['copy_erase_episodes'] +parts={'local_dispatch':L*T*g['local_additions']+g['bridge_additions'],'high_routes':J*16*(m*m+1)**2,'route_stock':J*physical,'children':E*(8*m*m+8+128*(2*m)**3),'fixed':16*m**3+g['copy_erase_episodes'],'selectors':2*L*T*((W-1)+H*m*(geo['max_route_factors']+144+2+(m-1)+m)),'prefix':int(g['global_prefix_bound']),'one':1} +coefficient=sum(parts.values());level3=(coefficient+1)**3*(E+1)**3 +assert coefficient.bit_length()==parts['prefix'].bit_length()==res['bit']['coefficient_bits']==2119 +assert level3.bit_length()==res['bit']['three_level_coefficient_bits']==6411 +assert 64*((6411+63)//64)==res['bit']['charged_three_level_coefficient_bits']==6464 +physical_exp=0 +while 3**physical_exp<=physical:physical_exp+=1 +row=3*(m*(m+1)//2+physical_exp)+9909+252;assert row==res['bit']['row_coefficient']==19431<20161 +eng=PKG/'code/hub/e8-r740-replica32/code/engines' +def load(name,path=None): + s=importlib.util.spec_from_file_location('review_'+name,path or eng/(name+'.py'));x=importlib.util.module_from_spec(s);s.loader.exec_module(x);return x +M,B,Outer=map(load,['moment','base_two_moment','outer']) +c=Q(res['bit_lower']);step=Q(1,10**24);fb=32*m*m*E;intervals={} +for endpoint in [c,c+step]: + ml,mh=M.moment(p,m,W,endpoint,True);bl,bh=B.moment(m,W,list(p.items()),endpoint);fl,fh=B.moment(m,W,[(1,fb)],endpoint);bl+=fl/Q(10**16);bh+=fh/Q(10**16) + assert (mh<1 and bh<1) if endpoint==c else (ml>1 and bl>1) + intervals[str(endpoint)]={'mercator':[str(ml),str(mh)],'base_two':[str(bl),str(bh)]} +# Each outer result is arithmetic on its cited b; only471 has already been +# independently source-replayed in this session. +outer={} +def assembly(bit,b,allow,charge): + eta=beta=grid=Q(1,10**18);s=min(bit,(1-beta)*b)-Q(1,10**24);chain=[Q(384599,10**10)];cutoffs=[] + for _ in range(6): + old=chain[-1];a=(1-s)*s+s*old;gap=min(s-a,1-a-s,1-a-s*(1-old),1-s);assert 00 for x in ar['strict_constraints'].values()) + controls=[] + for name,kk,ee,bb in [('next_grid',k+grid,eta,beta),('zero_eta',k,Q(0),beta),('zero_beta',k,eta,Q(0)),('unit_beta',k,eta,Q(1))]: + try:Outer.assembly(chain[-1],b,bridge,kk,eta=ee,beta=bb) + except AssertionError:controls.append(name) + else:raise AssertionError(name) + return {'kappa':str(k),'bootstrap':cutoffs,'outer_controls':controls,'slacks':{k:str(v) for k,v in ar['strict_constraints'].items()}} +for name,z in res['kappa'].items(): + b=Q(z['complex_lower']);result=assembly(c,b,20161,6464);assert result['kappa']==z['kappa'] and result['bootstrap']==z['bootstrap'] and result['outer_controls']==z['outer_controls'];outer[name]=result +report={'status':'PASS_INDEPENDENT_PR493_PINNED_SOURCE_INVOICE_AND_EXACT_ASSEMBLY','head':'c3a9a436b84fe44fdc223a5784d84736d1c2d3c7','manifest_sha256':sha(PKG/'MANIFEST.sha256'),'manifest_files':len(manifest),'git_blob_files':blobs,'result_sha256':sha(O/'RESULT.json'),'native_columns_sha256':sha(O/'cout/columns.json'),'native_eleven_columns_sha256':sha(O/'cout/columns_k5.json'),'bit_lower':str(c),'actual_bit_profile':dict(sorted(p.items())),'rank_mass':sum(k*v for k,v in p.items()),'paid_calls':E,'invoice_parts':{k:str(v) for k,v in parts.items()},'prefix_bits':2119,'charged_prefix_bits':2176,'three_level_coefficient_bits':6411,'charged_coefficient_bits':6464,'row_coefficient':row,'retained_row_allowance':20161,'exact_moment_intervals':intervals,'outer':outer,'scope':'This audit independently checks pinned sources and the supplied fresh bit output. Supplier verifier execution and native compiler provenance are bound by the enclosing root verifier. The complex b values here remain cited arithmetic; the enclosing composition must bind its chosen b to a fresh complex replay. PR448 remains information-only disputed split. Inherited all-size compiler, mutable-label, restored-row and analytic contracts remain conditional.'} +REPORT.write_text(json.dumps(report,indent=2)+'\n');print(json.dumps({k:v for k,v in report.items() if k not in ['exact_moment_intervals','outer','invoice_parts','GL_sharp_screen']},indent=2)) diff --git a/research/r489-partial-own-kernel84/code/audit493/review_local.py b/research/r489-partial-own-kernel84/code/audit493/review_local.py new file mode 100644 index 0000000000..e341916fc4 --- /dev/null +++ b/research/r489-partial-own-kernel84/code/audit493/review_local.py @@ -0,0 +1,92 @@ +"""Independent PR493 actual/reflected projector and whole-owner audit, OpenAI Codex. Apache-2.0. +Usage: review_local.py PR493_PACKAGE FRESH_OUTPUT REPORT.json +""" +from pathlib import Path +from fractions import Fraction as Q +from collections import Counter,defaultdict +import gzip,hashlib,json,struct,sys +import sympy as S +if not __debug__:raise RuntimeError('assertions must remain enabled') +assert len(sys.argv)==4, 'usage: review_local.py PR493_PACKAGE FRESH_OUTPUT REPORT.json' +PKG,OUT,REPORT=map(lambda x:Path(x).resolve(),sys.argv[1:]) +read=lambda p:json.loads(gzip.decompress(p.read_bytes()) if p.suffix=='.gz' else p.read_bytes()) +w=read(PKG/'data/bit/bitE8mut-r489.json.gz');t=read(OUT/'bit/GLOBAL-TEMPLATE.json.gz');fs=read(OUT/'records/frames.json')['frames'];state=read(OUT/'records/249-states.json');records=list(struct.iter_unpack('<6i',(OUT/'records/249-records.bin').read_bytes()));v=120;n=2*v+w['R'];assert n==729 +I=S.eye(8);P={};dims={};projector_hash={} +for key,z in fs.items(): + B=S.Matrix(z['B']) if z['B'] else S.zeros(0,8);p=B.T*(B*B.T).inv()*B if B.rows else S.zeros(8);assert p==p.T and p*p==p and p.trace()==z['dim'];P[int(key)]=p;dims[int(key)]=z['dim'] + for rev in (False,True):projector_hash[rev,int(key)]=hashlib.sha256(str(I-p if rev else p).encode()).hexdigest() +results={};transitions=set() +for rev in (False,True): + ori='reverse' if rev else 'forward';cur=[state['final' if rev else 'initial'][str(i)] for i in range(n)]+[-1];rows=[1<=2*v:assert support[s]&~allowed[f]==0;checks+=1 + support[d]|=support[s] + if d=2*v: + assert support[d]&~allowed[f]==0;checks+=1;source_support_checks+=int(d=2*v) or all(not v<=s<2*v for s in ss) for phase in ['D','A','B','C'] for f,d,ss in w[phase]) +assert all(f==0 and v<=d<2*v and all(s>=2*v for s in ss) for f,d,ss in w['D']) +assert all(not v<=d<2*v for f,d,ss in w['A']) and all(v<=d<2*v for f,d,ss in w['B']) +assert w['C']==[[1,d,ss] for f,d,ss in reversed(w['A'])] +# Exact physical owner construction from every complete rational basis. +geo=read(OUT/'bit/GEOMETRY.json');idle={e['idx']:e for e in t['schedule'] if e['kind']=='idle'};bases=[] +for port in geo['ports']: + head=[[Q(x,2) for x in port['q']]]+[[Q(row[j]) for row in port['complement_columns']] for j in range(7)] + assert all(sum(x*y for x,y in zip(a,b))==int(i==j) for i,a in enumerate(head) for j,b in enumerate(head)) + cols=[tuple((i,x.numerator,x.denominator) for i,x in enumerate(col) if x) for col in head]+[((j,1,1),) for j in range(8,78)];assert len(cols)==78;bases.append(cols) +assert all(w['start'][h]==0 for h in range(240,n)) +routecount=0;stream=hashlib.sha256();unique=set();groupcount=0;occupied=defaultdict(set);pending={};mult=Counter() +for call in t['calls']: + active={fam for fam,route in call['owners'][:240]};seen=set();samefamily=defaultdict(set);counts=Counter() + for helper,(fam,route) in enumerate(call['owners'][240:]): + kind,idx,off,width=route;assert kind=='hosted' and fam not in active and width==8 + _,sub=divmod(fam,1200);pair,sp=divmod(sub,240);_,port=divmod(sp,120);child=idle[idx];assert child['pair']==pair + lo,hi=child['source_level'],child['target_level'];axes=list(range(1,8))+list(range(8,8+7*hi)) if lo==-1 else list(range(8+7*lo,8+7*hi));assert len(axes)==child['rank'];foot=axes[off:off+width];assert len(set(foot))==8 + assert not samefamily[fam]&set(foot);samefamily[fam].update(foot) + order=foot+[j for j in range(78) if j not in foot];assert set(order)==set(range(78));sigma=tuple(bases[port][j] for j in order) + # Every full sigma is orthogonal, has inverse sigma^T, and sends the full + # local8 residual to the exact8 assigned basis columns. This is a complete + # rational matrix equality, not merely an integer slot reservation. + assert tuple(sigma[:8])==tuple(bases[port][j] for j in foot) + assert (fam,sigma) not in seen;seen.add((fam,sigma));routecount+=1;counts[fam]+=1 + h=hashlib.sha256(json.dumps(sigma,separators=(',',':')).encode()).hexdigest();unique.add(h);stream.update(json.dumps([call['stage'],call['replica'],helper,fam,h],separators=(',',':')).encode()+b'\n') + key=(idx,fam);assert not occupied[key]&set(foot);occupied[key].update(foot);pending[key]=set(axes) + assert len(seen)==489;groupcount+=len(samefamily) + for count in counts.values():mult[count]+=1 +assert routecount==43032 +for key,foot in occupied.items():assert foot<=pending[key] and foot|(pending[key]-foot)==pending[key] +report={'status':'PASS_INDEPENDENT_PR493_MUTABLE_SOURCE_LEDGER_AND_ACTUAL_OWNER_AUDIT','head':'c3a9a436b84fe44fdc223a5784d84736d1c2d3c7','source_frames':len(P),'exact_oriented_projector_transitions':len(transitions),'orientations':results,'source_support_checks':checks,'mutable_source_destination_support_checks':source_support_checks,'no_targets_feed_sources_or_helpers':True,'literal_source_helper_inverse_cleanup':True,'actual_owner_routes':routecount,'actual_unique_sigma_matrices':len(unique),'cross_idle_call_family_groups':groupcount,'idle_family_completion_groups':len(occupied),'maximum_helpers_per_family':max(mult),'actual_sigma_stream_sha256':stream.hexdigest(),'modular_distinctness':'All routes for a physical family are one dyadic orthogonal port basis times distinct column permutations; equality is impossible over every odd field. Cross-idle assigned footprints are pairwise disjoint.','scope':'Exact native-frame local source/helper restoration and actual complete owner matrices. This does not unconditionally establish inherited all-size mutable-basis compiler, row or analytic contracts.'} +REPORT.write_text(json.dumps(report,indent=2)+'\n');print(json.dumps(report,indent=2)) diff --git a/research/r489-partial-own-kernel84/code/audit_partial_algebra.py b/research/r489-partial-own-kernel84/code/audit_partial_algebra.py new file mode 100644 index 0000000000..1375ebcd13 --- /dev/null +++ b/research/r489-partial-own-kernel84/code/audit_partial_algebra.py @@ -0,0 +1,230 @@ +"""Independent exact read-back of partial-own loads and selected kernel relations. +Imports no construction or kernel helper code. Prepared by OpenAI Codex. +""" +import argparse +import copy +import gzip +import hashlib +import json +from collections import Counter, defaultdict +from fractions import Fraction as Q +from pathlib import Path + +if not __debug__: + raise RuntimeError('This exact algebra audit requires assertions enabled.') + +p=argparse.ArgumentParser() +p.add_argument('--base',type=Path,required=True,help='Changed ungauged partial-own base word') +p.add_argument('--word',type=Path,required=True,help='Selected kernel word before frame retiming') +p.add_argument('--selection',type=Path,required=True) +p.add_argument('--original-base',type=Path,required=True,help='Pinned original ungauged PR433 full word') +p.add_argument('--original-selection',type=Path,required=True,help='Pinned PR484 gauge80-kernel42 selection') +p.add_argument('--retimed-word',type=Path,help='Optional frame-only successor; the entire derived prelude is checked unchanged') +p.add_argument('--out',type=Path,required=True);a=p.parse_args() +def read(p): + raw=p.read_bytes();return json.loads(gzip.decompress(raw) if p.suffix=='.gz' else raw) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def sp(f): + s={0} + for v in f:s|={x^v for x in tuple(s)} + return s +def op(e,rows): + t=e[1] + if e[0]=='scale': + q=Q(e[2],e[3]);assert q;rows[t]={j:q*x for j,x in rows[t].items()} + else: + assert e[0]=='add';s=e[2];q=Q(e[3],e[4]);assert s!=t + for j,x in list(rows[s].items()): + r=rows[t].get(j,Q(0))+q*x + if r:rows[t][j]=r + else:rows[t].pop(j,None) +def inverse(e): + r=e[:] + if r[0]=='add':r[3]=-r[3] + else:r[2],r[3]=r[3],r[2] + return r +def dual(e): + r=inverse(e) + if r[0]=='add':r[1],r[2]=r[2],r[1] + return r +def ident(n):return [{r:Q(1)} for r in range(n)] +def matrix_rank(rows): + d={} + for row in rows: + r={k:Q(v) for k,v in row.items() if v} + while r: + k=min(r) + if k not in d: + q=r[k];d[k]={j:v/q for j,v in r.items()};break + q=r[k] + for j,v in d[k].items(): + z=r.get(j,Q(0))-q*v + if z:r[j]=z + else:r.pop(j,None) + return len(d) +def determinant(mat): + m=[list(map(Q,row)) for row in mat];d=Q(1);n=len(m) + for j in range(n): + k=next(i for i in range(j,n) if m[i][j]) + if k!=j:m[k],m[j]=m[j],m[k];d=-d + v=m[j][j];d*=v + for i in range(j+1,n): + q=m[i][j]/v + m[i]=[x-q*y for x,y in zip(m[i],m[j])] + return d +def dyadic(q):return q.denominator&(q.denominator-1)==0 + +base=read(a.base);word=read(a.word);sel=read(a.selection);n=240+base['report']['R'];assert n==800 +baseline_path=a.original_base +old=read(baseline_path) +preserved=['B','center_frames','centers','cut','ports','precondition','root_lines','scatter'] +assert all(base[k]==old[k] for k in preserved) +assert len(base['A'])==2680 and len(old['A'])==2736 +root=base['root_lines'];gram=[[Q(sum(x*y for x,y in zip(r,s)),2) for s in root] for r in root] + +# Replay all clean source coefficients through actual A and inspect the first +# load of every fixed own-block register; no constructor state is trusted. +rows=[{i:Q(1)} if i<120 else {} for i in range(n)];loads={} +for i,e in enumerate(base['A']): + if e[0]=='add' and 240<=e[1]<352 and e[1] not in loads: + assert not rows[e[1]] and Q(e[3],e[4])==1 + assert len(rows[e[2]])==2 and len(sp(e[-1]))==4 + loads[e[1]]=dict(event=i,source=e[2],frame=e[-1],clean_coefficients=dict(rows[e[2]])) + op(e,rows) +assert len(loads)==112 +own_targets={} +for e in base['B']: + if e[0]=='add' and 240<=e[2]<352: + assert 120<=e[1]<240 and Q(e[3],e[4])==Q(-1,2) + h,t=e[2],e[1]-120;assert h not in own_targets;own_targets[h]=t + t_support={j for j,x in enumerate(root[t]) if x} + expected={s:gram[t][s] for s in range(120) if s!=t and gram[t][s] and {j for j,x in enumerate(root[s]) if x}==t_support} + assert rows[h]==expected,('own transfer',h,t) +assert len(own_targets)==112 +by_block=defaultdict(list) +for h in loads: + sources=tuple(sorted(loads[h]['clean_coefficients'])) + block=tuple(j for j,x in enumerate(root[sources[0]]) if x) + assert all(tuple(j for j,x in enumerate(root[s]) if x)==block for s in sources) + parity=sum(root[sources[0]][j]<0 for j in block)%2 + assert all(sum(root[s][j]<0 for j in block)%2==parity for s in sources) + by_block[block,parity].append(h) +det_hist=Counter();T_witness=[] +for (block,parity),hs in sorted(by_block.items()): + assert len(hs)==4 + srcs=sorted({s for h in hs for s in loads[h]['clean_coefficients']});assert len(srcs)==4 + T=[[loads[h]['clean_coefficients'].get(s,Q(0)) for s in srcs] for h in hs] + det=determinant(T);assert det and dyadic(det) and dyadic(1/det) + det_hist[str(det)]+=1 + T_witness.append(dict(block=block,parity=parity,helpers=hs,sources=srcs,matrix=[[str(q)for q in r]for r in T],determinant=str(det))) +assert len(T_witness)==28 + +# Exact complete dirty-response columns of the modified base, including its +# target inverse basis. Recompute; no old response columns are transplanted. +responses=ident(n) +for e in base['A']+base['cut']+base['B']:op(e,responses) +dirty=[{} for _ in range(n)] +for r in range(120,240):dirty[r]={j:q for j,q in responses[r].items() if j>=240} +for e in base['precondition']:op(e,dirty) +columns=[{} for _ in range(560)] +for t in range(120,240): + for h,q in dirty[t].items():columns[h-240][t-120]=q +first={} +for e in base['A']+base['B']: + for r in (e[1:3] if e[0]=='add' else e[1:2]): + if r>=240:first.setdefault(r-240,sp(e[-1])) +prefix=word['A'][:-len(base['A'])];assert word['A'][-len(base['A']):]==base['A'] +assert all(word[k]==base[k] for k in preserved) +gauges={int(h):f for h,f in sel['gauge'].items()} +origsel=read(a.original_selection) +assert sel['gauge']==origsel['gauge'] and sel['kernel'][:len(origsel['kernel'])]==origsel['kernel'] +assert len(gauges)==80 +pivots={h for c in sel['kernel']for h in c['pivots']};donors={h for c in sel['kernel']for h in c['donors']} +assert not pivots&donors and not (pivots|donors)&set(gauges) +assert len(pivots)==sum(len(c['pivots'])for c in sel['kernel']) +expected_entrances={str(240+h):f for h,f in gauges.items()} +kernel_ops=Counter();gauge_ops=Counter();relation_witness=[] +for e in prefix: + assert e[0]=='add' + target,source=e[1:3] + if target<240: + assert 120<=target and source-240 in gauges + gauge_ops[(target-120,source-240,Q(e[3],e[4]),tuple(e[-1]))]+=1 + else:kernel_ops[(target-240,source-240,Q(e[3],e[4]),tuple(e[-1]))]+=1 +expected_gauges=Counter((t,h,-q,tuple(f)) for h,f in gauges.items() for t,q in columns[h].items()) +assert gauge_ops==expected_gauges +for ci,cl in enumerate(sel['kernel']): + E=sp(cl['E']);ds=cl['donors'];ps=cl['pivots'] + assert matrix_rank([columns[d]for d in ds])==len(ds) + assert all(E<=first[h]for h in ds+ps) + for p in ps: + expected_entrances[str(240+p)]=cl['E'];relation={} + for d in ds: + matches=[(key,count)for key,count in kernel_ops.items()if key[0]==d and key[1]==p] + assert len(matches)<=1 + if matches: + (dd,pp,q,ef),count=matches[0];assert count==1 and sp(ef)==E and dyadic(q) + relation[d]=-q;del kernel_ops[dd,pp,q,ef] + all_t=set(columns[p])|{t for d in relation for t in columns[d]} + assert all(columns[p].get(t,Q(0))==sum(q*columns[d].get(t,Q(0))for d,q in relation.items())for t in all_t) + relation_witness.append(dict(class_index=ci,pivot=p,entrance=cl['E'],donor_coefficients={str(d):str(q)for d,q in relation.items()})) +assert not kernel_ops and word['start_extra']==expected_entrances + +# Independent full scalar word on every original source, target, and helper +# dirt column, for both the word and same-order inverse-transpose reflection. +main=word['A']+word['cut']+word['B'];m=ident(n) +for e in main:op(e,m) +dirty=[{} for _ in range(n)] +for t in range(120,240):dirty[t]={j:q for j,q in m[t].items()if j>=240} +for e in word['precondition']:op(e,dirty) +enter=set(map(int,word['start_extra']));assert all(not enter&set(dirty[t])for t in range(120,240)) +comp=[['add',t,h,-q.numerator,q.denominator,[]] for t in range(120,240)for h,q in sorted(dirty[t].items())] +cleanup=[inverse(e)for e in reversed(word['A']+word['B'])if not 120<=e[1]<240] +assert [e[:-1]for e in cleanup]==[e[:-1]for e in word['cleanup']] +program=word['precondition']+comp+main+cleanup +for back in (False,True): + m=ident(n);want=ident(n) + for e in program:op(dual(e)if back else e,m) + for t in range(120):want[t if back else t+120][t+120 if back else t]=Q(-1 if back else 1) + assert m==want +for e in program: + q=Q(e[3],e[4])if e[0]=='add'else Q(e[2],e[3]);assert dyadic(q) + if e[0]=='scale':assert dyadic(1/q) + +extra=relation_witness[42:] +retiming=None +if a.retimed_word: + retimed=read(a.retimed_word) + assert set(retimed)==set(word) + changed={} + for k in word: + if k in ('A','B'): + assert [e[:-1]for e in retimed[k]]==[e[:-1]for e in word[k]],('retimed scalar payload/order',k) + changed[k]=sum(e!=f for e,f in zip(word[k],retimed[k])) + elif k=='report': + assert set(word[k])==set(retimed[k]) + for field in word[k]: + if field not in ('local_profile','global_profile'):assert word[k][field]==retimed[k][field],('retimed report',field) + else:assert word[k]==retimed[k],('retimed fixed boundary',k) + assert retimed['A'][:len(prefix)]==word['A'][:len(prefix)],'entire gauge and kernel prelude must remain unchanged' + retiming=dict(word_sha256=sha(a.retimed_word),full_prelude_events=len(prefix), + full_prelude_including_frames_unchanged=True,changed_frame_events=changed, + scalar_payloads_and_order_identical=True,all_boundaries_and_cleanup_identical=True, + scope='Frame chronology/accounting is checked separately on native emitted streams.') +report=dict(status='PASS_INDEPENDENT_PARTIAL_OWN_BASES_KERNEL_RELATIONS_AND_ALL_DIRT', + inputs={str(p):sha(p)for p in [a.base,a.word,a.selection,baseline_path,a.original_selection]+([a.retimed_word]if a.retimed_word else [])}, + preserved_base_fields=preserved,baseline_A_events=len(old['A']),partial_A_events=len(base['A']), + own_loads=112,own_loads_rank=2,own_tetrad_basis_count=28,own_basis_determinants=dict(det_hist), + own_clean_Gram_rows_reconstructed=112,original_gauges=80,original_kernel_pivots=42, + additional_kernel_pivots=len(extra),new_classes=[dict(entrance=cl['E'],donors=len(cl['donors']),pivots=len(cl['pivots']))for cl in sel['kernel'][len(origsel['kernel']):]], + all_kernel_donor_sets_exactly_independent=True,all_kernel_relations_checked=len(relation_witness), + prefix_scalar_events=len(prefix),gauge_compensation_events=sum(gauge_ops.values()), + kernel_events=len(prefix)-sum(gauge_ops.values()),entering_helpers=len(enter),entrance_rank=sum(len(f)for f in word['start_extra'].values()), + scalar_columns_each_orientation=800,scalar_records=len(program),frame_zero_compensation=len(comp),all_entering_dirty_compensation_zero=True, + all_coefficients_dyadic=True,all_scale_inverses_dyadic=True,retiming=retiming, + scope='Exact rational algebra and raw scalar word only; does not assert Gaussian/wrapper/physical hosting/invoice/all-size admission.') +a.out.mkdir(exist_ok=False) +(a.out/'ALGEBRA.json').write_text(json.dumps(report,indent=2)+'\n') +(a.out/'OWN-BASES.json').write_text(json.dumps(T_witness,indent=2)+'\n') +(a.out/'KERNEL-RELATIONS.json').write_text(json.dumps(relation_witness,indent=2)+'\n') +print(json.dumps(report,indent=2)) diff --git a/research/r489-partial-own-kernel84/code/audit_partial_frames.py b/research/r489-partial-own-kernel84/code/audit_partial_frames.py new file mode 100644 index 0000000000..809a284ea9 --- /dev/null +++ b/research/r489-partial-own-kernel84/code/audit_partial_frames.py @@ -0,0 +1,48 @@ +"""Adapt the independent reflected-ledger reviewer to a changed scalar word. +Prepared by OpenAI Codex. Original-word scalar invariants are deliberately not +asserted; full raw/canonical binding and both emitted event ledgers are checked. +""" +import argparse +import hashlib +import importlib.util +import json +from collections import Counter +from pathlib import Path + +if not __debug__: + raise RuntimeError('This exact frame audit requires assertions enabled.') + +p=argparse.ArgumentParser() +p.add_argument('--candidate',type=Path,required=True) +p.add_argument('--reviewer',type=Path,required=True,help='Pinned independent review_frames.py') +p.add_argument('--original-selected',type=Path,required=True,help='Original PR484 gauge80-kernel42 raw word') +p.add_argument('--unretimed-canonical',type=Path,help='Optional canonical word before frame retiming') +p.add_argument('--out',type=Path,required=True);a=p.parse_args() +source=a.reviewer +spec=importlib.util.spec_from_file_location('F',source);F=importlib.util.module_from_spec(spec);spec.loader.exec_module(F) +paths=[a.candidate/n for n in ['FULL-WORD.json.gz','CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz']] +w,c,programs=map(F.read,paths) +old=F.read(a.original_selected) +base_c=F.read(a.unretimed_canonical) if a.unretimed_canonical else c +preserved=['target_levels','centers','center_frames','ports','root_lines','cut','scatter','precondition'] +assert all(w[k]==old[k]for k in preserved) +assert w['A'][:420]==old['A'][:420] +assert set(map(tuple,w['start_extra'].values()))==set(map(tuple,old['start_extra'].values())) +entrance_rank=sum(len(f)for f in w['start_extra'].values());widths=Counter(9-len(w['start_extra'].get(str(r),[]))for r in range(240,800)) +raw=F.raw_ledger(w);bindings=F.canonical_binding(w,c,base_c) +ledgers={o:F.ledger(c,programs[o],o=='backward')for o in ('forward','backward')} +assert raw['rank_mass']==9*560+8*240+72-entrance_rank +assert all(l['rank_mass']==raw['rank_mass']and l['profile']==raw['profile']for l in ledgers.values()) +negative=F.controls(w,c,programs,w,base_c) +union={tuple(e[3:5]if e[0]=='climb'else e[2:4])for seq in programs.values()for e in seq if e[0]in('climb','center')} +r=dict(status='PASS_CHANGED_SCALAR_WORD_RAW_BINDING_AND_BOTH_REFLECTED_LEDGERS', + inputs={str(p):hashlib.sha256(p.read_bytes()).hexdigest()for p in paths+[a.original_selected]+([a.unretimed_canonical]if a.unretimed_canonical else [])}, + independent_reviewer_sha256=hashlib.sha256(source.read_bytes()).hexdigest(), + raw=raw,canonical_binding=bindings,emitted_ledgers=ledgers, + entrance_rank=entrance_rank,entering_helpers=len(w['start_extra']),widths=dict(sorted(widths.items())), + unchanged_selected_boundary_fields=preserved,all_420_gauge_gates_unchanged=True, + entrance_frame_set_unchanged=True,entrance_frame_types=16, + actual_directed_edge_union=len(union),negative_controls_rejected=negative, + used_unretimed_canonical_baseline=bool(a.unretimed_canonical), + scope='Exact local frame/normalization-placement ledger. Raw-to-canonical all-event binding and both serialized reflected streams verified. Old scalar-word invariants are intentionally omitted because the partial-own construction changes A. When an unretimed canonical baseline is supplied, fixed compensation/cleanup/cut payloads and start/final/centre boundaries are also compared to it; otherwise those comparisons use the candidate itself. Gaussian phase operators, emitted wrapper identities, physical owners and complete invoice remain separate.') +a.out.write_text(json.dumps(r,indent=2)+'\n');print(r['status'],'mass',raw['rank_mass'],'edges',len(union),'controls',len(negative)) diff --git a/research/r489-partial-own-kernel84/code/audit_pooled.py b/research/r489-partial-own-kernel84/code/audit_pooled.py new file mode 100644 index 0000000000..6e6a0c2493 --- /dev/null +++ b/research/r489-partial-own-kernel84/code/audit_pooled.py @@ -0,0 +1,103 @@ +"""OpenAI Codex independent serialized cross-replica controller/spectator audit. +Imports no emitter, optimizer, expander, edge-coloring, or source hosting code. +CLI: VERIFIED_VARIANT POOLED_HOSTED OUT.json +""" +import sys,json,gzip,hashlib,copy +from pathlib import Path +from collections import Counter,defaultdict +BASE,OUT,REPORT=map(lambda p:Path(p).resolve(),sys.argv[1:4]);read=lambda p:json.loads(gzip.decompress(p.read_bytes())if p.suffix=='.gz'else p.read_bytes()) +parent=read(BASE/'split-centres/GLOBAL-TEMPLATE.json.gz');canon=read(BASE/'split-centres/CANONICAL-WORD.json.gz');checks=read(BASE/'split-centres/LOCAL-CHECKS.json');ph=read(BASE/'work/complex-nine-native/DATA-PHASES.json');ct=read(OUT/'GLOBAL-TEMPLATE.json.gz');summary=read(OUT/'HOSTED.json');width=[9-len(canon['frames'][canon['start'][240+h]])for h in range(560)];prank={e['child']:e['rank']for e in parent['idle_children']};M=73;T=8;DATA=7680 + +def orthobasis(port): + q=canon['ports'][port];z=next(i for i in range(9)if(q>>i)&1==0);a=q^(1<>i&1 else 0)for i in order]+[1<last.get(e['pair'],-1)and p!=e['pair']} + used=defaultdict(set);roles={};paid=Counter();sigmas={};digest=hashlib.sha256();entering=0;cross=0;touches=defaultdict(list) + for call,old in zip(t['calls'],parent['calls']): + assert {k:v for k,v in call.items()if k!='owners'}=={k:v for k,v in old.items()if k!='owners'} + s,rep,pair=call['stage'],call['replica'],call['pair'];own=call['owners'];assert len(own)==800 and len({f for f,rt in own})==800 and all(0<=f0 and 2*r*r<73*73 for r in paid) + return dict(profile=dict(sorted(paid.items())),mass=mass,hosted=40320,entering=entering,cross_replica=cross,sigma_digest=digest.hexdigest(),sigmas=sigmas,idle_remainders=len(wanted),busy_family_checks=len(roles),invocations=72) + +r=audit(ct);raw=gzip.decompress((OUT/'GLOBAL-TEMPLATE.json.gz').read_bytes());assert hashlib.sha256(raw).hexdigest()==summary['template_sha256'];assert r['profile']=={int(k):v for k,v in summary['global_profile'].items()};assert r['sigmas']==read(OUT/'ACTUAL-SIGMAS.json.gz');assert r['sigma_digest']==summary['sigma_stream_sha256'] +controls=[] +def reject(name,mut): + q=copy.deepcopy(ct);mut(q) + try:audit(q) + except(AssertionError,KeyError,IndexError,ValueError,TypeError):controls.append(name) + else:raise AssertionError('ACCEPTED '+name) +enter=lambda q:next(o for c in q['calls']for o in c['owners'][240:]if o[1][0]==4) +reject('alias two whole owners',lambda q:q['calls'][0]['owners'].__setitem__(241,q['calls'][0]['owners'][240])) +reject('helper on active data family',lambda q:q['calls'][0]['owners'][240].__setitem__(0,q['calls'][0]['owners'][0][0])) +reject('owner in private namespace',lambda q:q['calls'][0]['owners'][240].__setitem__(0,7680)) +reject('unbound change of owner replica',lambda q:q['calls'][0]['owners'][240].__setitem__(0,(q['calls'][0]['owners'][240][0]+960)%7680)) +reject('omit complete invocation',lambda q:q['calls'].pop()) +reject('reorder invocation replicas',lambda q:q['calls'].__setitem__(0,q['calls'][1])) +reject('interleave local invocations',lambda q:q.__setitem__('loop_order','interleaved local instructions')) +reject('change local instruction stream',lambda q:q['local_programs']['forward'].pop()) +reject('wrong residual width',lambda q:enter(q)[1].__setitem__(3,enter(q)[1][3]-1)) +reject('wrong spectator coordinate',lambda q:enter(q)[1][4].__setitem__(0,72)) +reject('omit spectator route',lambda q:enter(q).__setitem__(1,enter(q)[1][:3])) +reject('overlap residual footprint',lambda q:q['calls'][0]['owners'][240][1].__setitem__(2,100)) +reject('omit idle remainder',lambda q:q['idle_children'].pop()) +reject('underpay idle remainder',lambda q:q['idle_children'][0].__setitem__('rank',0)) +reject('omit bridge touch',lambda q:q['execution_schedule'].pop(next(i for i,e in enumerate(q['execution_schedule'])if e['kind']=='bridge'))) +reject('remove one-owner rule',lambda q:q['hosting'].pop('max_helpers_per_physical_family_per_call')) +reject('duplicate frozen role',lambda q:q['hosting']['pooled_slots'].__setitem__(1,q['hosting']['pooled_slots'][0])) +reject('understate physical reserve',lambda q:q.__setitem__('physical',8257)) +report=dict(status='PASS_INDEPENDENT_POOLED_WHOLE_OWNER_CONTROLLER_AND_SPECTATORS',template_sha256=summary['template_sha256'],complex_template_sha256=summary['template_sha256'],complex_live=7680,complex_profile=r['profile'],complex_hosted_residuals=40320,physical=8258,rank_mass=r['mass'],deficit=2496,entering_helper_roles=r['entering'],cross_replica_helper_roles=r['cross_replica'],one_owner_per_complete_invocation=True,helper_busy_family_window_checks=r['busy_family_checks'],complete_invocations=r['invocations'],actual_orthogonal_73column_maps=len(r['sigmas']),actual_sigma_stream_sha256=r['sigma_digest'],all_actual_residual_and_spectator_charts=True,idle_remainders=r['idle_remainders'],mutations_rejected=controls,widths=dict(sorted(Counter(width).items())),scope='Independent exact finite controller/owner/chart/paid-profile audit. Binds the freshly reconstructed candidate local program and its normalized residual-wrapper receipt; all-size compilation and complete coefficient invoice are separate obligations.') +REPORT.write_text(json.dumps(report,indent=2)+'\n');print(json.dumps(report,indent=2)) diff --git a/research/r489-partial-own-kernel84/code/construct_partial.py b/research/r489-partial-own-kernel84/code/construct_partial.py new file mode 100644 index 0000000000..69500f6513 --- /dev/null +++ b/research/r489-partial-own-kernel84/code/construct_partial.py @@ -0,0 +1,309 @@ +# Adapted by OpenAI Codex for isolated structural research. +# Modified from PR425 by icekylinx with Codex assistance. +"""Full discovery word for Hamming packets with borrowed X and Y registers. + +This changes the scalar architecture. It is not accepted by the old restricted +gx interface: source bases may change until full-frame cleanup, and targets use +an explicitly inverted output basis. No supplier admission is asserted. +""" +import copy,gzip,json,math,time +import itertools as it +from collections import Counter,defaultdict +from fractions import Fraction as Q +from pathlib import Path + +import sys +INPUT=Path(sys.argv[1]);OUT=Path(sys.argv[2]);OUT.mkdir(parents=True,exist_ok=False);D=json.loads((INPUT/'PROTOTYPE.json').read_text()) +P=D['binary_ports'];R=D['root_lines'];v=120;h=9 +modules=json.load(gzip.open(INPUT/'PACKET-PROGRAMS.json.gz')) + +def basis(vectors): + b={} + for x in vectors: + for p in sorted(b,reverse=True): + if x>>p&1:x^=b[p] + if x: + p=x.bit_length()-1 + for q in b: + if b[q]>>p&1:b[q]^=x + b[p]=x + return tuple(b[p] for p in sorted(b,reverse=True)) +def inside(a,b):return basis(a+b)==b +def hyper(p):return basis([x for x in range(1,512) if (x&p).bit_count()%2==0]) +FULL=basis([1<=0 and off+w<=rank[i] + B=OH.idle_basis(canon['ports'][port]);pending=list(map(int,ph['recipes'][port]['idle_children'][i]['orthogonal_axes']));assert len(pending)==rank[i] + occ=[B.index(v)for v in pending[off:off+w]];sp=OH.spectators(canon['ports'][port],pending,off,w)if w<9 else[] + order=occ+sp+[j for j in range(M)if j not in occ and j not in sp];assert len(order)==len(set(order))==M + sigma=[B[j]for j in order];sigmahash=hashlib.sha256(json.dumps(sigma,separators=(',',':')).encode()).hexdigest();sigmas[sigmahash]=sigma + route=[4,i,off,w,sp]if w<9 else[3,i,off];bycall[s,rep][h]=[f,route];entering+=w<9 + cells=set(range(off,off+w));assert not used[i,orp,port]&cells;used[i,orp,port]|=cells + digest.update(json.dumps([s,rep,h,f,sigmahash],separators=(',',':')).encode()+b'\n') +for c in t['calls']: + k=(c['stage'],c['replica']);assert set(bycall[k])==set(range(R)) + c['owners']=c['owners'][:240]+[bycall[k][h]for h in range(R)];assert len({f for f,r in c['owners']})==800 and all(f>1) + return([ar[idx(x)][:]for x in range(N)],[ai[idx(x)][:]for x in range(N)],d) +def run(back=False,mut=None): + a=[identity(f)for f in range(F)];sign=-1 if back else 1 + def call(rep,begin=True,end=True): + src=2*rep;dst=src+1;h=perm(a[4],rep) + private=copy.deepcopy(a[src]) # literal COPY of arbitrary source array + if begin:a[dst]=add(a[dst],h,-1);h=add(h,private,sign) + if end: + a[dst]=add(a[dst],h) + if mut!='omit-dirty-restoration':h=add(h,private,-sign) + assert equal(private,a[src]);private=None # ERASE unchanged copy + h=C(h,0) + if mut=='touch-borrowed-spectator':h=C(h,1) + a[4]=perm(h,rep if mut!='wrong-owner-chart'else 0) + if mut=='interleave-invocations': + call(0,end=False);call(1);call(0,begin=False) + else: + for rep in range(2): + before=copy.deepcopy(a);call(rep) + want=copy.deepcopy(before);want[2*rep+1]=add(want[2*rep+1],want[2*rep],sign);want[4]=C(want[4],rep) + if not all(equal(x,y)for x,y in zip(a,want)):return False + if mut!='omit-idle-remainder':a[4]=C(a[4],2) + expected=[identity(f)for f in range(F)] + for rep in range(2):expected[2*rep+1]=add(expected[2*rep+1],expected[2*rep],sign) + for axis in range(3):expected[4]=C(expected[4],axis) + return all(equal(x,y)for x,y in zip(a,expected)) +controls=['interleave-invocations','omit-dirty-restoration','touch-borrowed-spectator','wrong-owner-chart','omit-idle-remainder'] +for back in(False,True): + assert run(back) + for mut in controls:assert not run(back,mut),(back,mut) +out=dict(status='PASS_EXACT_GAUSSIAN_DYADIC_SERIAL_POOLING_OPERATOR',address_axes=3,addresses_per_array=8,physical_families=5,invocations=2,shared_whole_helper_families=1,all_independent_input_columns=40,scalar_field='Q(i), exact integer Gaussian numerators with explicit powers-of-two denominators',actual_C_definition='C_q=(1+i)I/2+(1-i)X_q/2',complete_scalar_add_copy_erase=True,both_shear_orientations=True,actual_owner_chart_permutations=True,borrowed_spectator_identity_checked=True,commuting_idle_completion=True,mutations_rejected=controls,scope='Finite regression of serial reuse of complete normalized local invocations on one helper family. The candidate serialized residual wrappers and local800column identity are separately admitted source484evidence; this is not a replacement local-word proof or enormouscover enumeration.') +Path(sys.argv[1]).write_text(json.dumps(out,indent=2)+'\n');print(json.dumps(out,indent=2)) diff --git a/research/r489-partial-own-kernel84/code/guarded_lemma.py b/research/r489-partial-own-kernel84/code/guarded_lemma.py new file mode 100644 index 0000000000..0388744e39 --- /dev/null +++ b/research/r489-partial-own-kernel84/code/guarded_lemma.py @@ -0,0 +1,43 @@ +"""Guard PR484 dyadic int64 expansions before executing exact arithmetic. +OpenAI Codex. Upstream simulator is unchanged; inherited identity checked fresh. +Usage: guarded_lemma.py COMPLEX_PACKAGE SCRIPT [script arguments...] +""" +import sys,runpy,json +from pathlib import Path +SRC=Path(sys.argv[1]).resolve()/'code/lemmaG';script=sys.argv[2];args=sys.argv[3:] +sys.path.insert(0,str(SRC));import gd +stats=dict(add_calls=0,scale_calls=0,primitive_calls=0,maximum_proved_numerator_bits=0) +def maxabs(a):return max(abs(int(a.min())),abs(int(a.max())))if a.size else 0 +def record_bound(x,op): + stats['maximum_proved_numerator_bits']=max(stats['maximum_proved_numerator_bits'],x.bit_length());assert x<1<<63,(op,'mathematical int64 overflow',x) +oldadd=gd.GD.add_scaled +def add(self,src,num,den): + assert den>0 and den&(den-1)==0 + e=den.bit_length()-1;D=max(self.d,src.d+e);sa=D-self.d;sb=D-src.d-e + for a,b in((self.re,src.re),(self.im,src.im)):record_bound((maxabs(a)< 0 and type(n) is int and n > 0 for r, n in profile.items()) +assert live == host['live'] == owner['live'] and physical == host['physical'] == owner['physical'] +assert profile == {int(r): count for r, count in host['global_profile'].items()} +mass = sum(r * n for r, n in profile.items()) +assert mass == owner['rank_mass'] == host['rank_mass'] and m * live - mass == owner['deficit'] == host['deficit'] == 2496 +assert max(profile) == host['maxchild'] and owner['hosted_residuals'] == host['hosted_residuals'] +assert assembly['owner_audit_sha256'] == sha(owner_path) and assembly['invoice_sha256'] == sha(invoice_path) +assert assembly['bit_result_sha256'] == sha(bit_path) and assembly['bit_template_sha256'] == bit['bit_template_sha256'] + +# Independently rebuild the stock-sensitive finite invoice. The scalar audit +# separately reconstructs the complete local primitive and wrapper charge. +old_inv = integration['finite_invoice'] +pervertex = old_inv['pervertex'] +rebased = pervertex - 65 * integration['physical'] + 65 * physical - integration['live'] + live +used = max(pervertex, rebased) +compiler = 64 * (m + 1) ** 3 +assert invoice['unhosted_pervertex'] == pervertex +assert invoice['hosted_rebased_pervertex'] == rebased +assert invoice['conservative_pervertex_used'] == used +assert invoice['compiler'] == old_inv['compiler'] == compiler +for field in ['local_adapters', 'local_primitive_bound']: + assert invoice[field] == old_inv[field], field +group = 2 ** ((m // 2) ** 2) * math.prod(2 ** (2 * i) - 1 for i in range(1, m // 2 + 1)) +stock, paid_mass = group * physical, group * mass +logical = group * used + 64 +router = compiler * (logical + 1) * (stock + 1) ** 2 +G, E, C0 = 1 << 30000, 1 << 100000, 1 << 210000 +B = paid_mass + E +literal = 2 * G * stock ** 2 + 8 * paid_mass + 4 * stock + 4 + 32 * m +complex_row = 2 * stock.bit_length() + 9909 + 252 +finite = dict( + physical_stock_bits=stock.bit_length(), router_bits=router.bit_length(), + literal_bits=literal.bit_length(), physical_row_coefficient=complex_row, + retained_row_coefficient=20161, required_C0_bits=(32 * m * B * B).bit_length(), + halving_integer_inequality=[m * m, 2 * max(profile) ** 2], + G_exponent=30000, E_exponent=100000, C0_exponent=210000, +) +assert invoice['finite'] == finite +strict = dict( + local_primitive_bound=invoice['local_primitive_bound'] < 1 << 48, + logical=logical < 1 << 6050, router=router < G, literal=literal < E, + mass=B < 1 << 100001, precision=32 * m * B * B < C0, + tape=2 * B + 18 < C0, row=complex_row < 20161, + halving=m * m > 2 * max(profile) ** 2, +) +assert all(strict.values()) and invoice['strict_checks'] == strict + + +def load_engine(name): + path = changed / 'work/pr361/code/engines' / (name + '.py') + spec = importlib.util.spec_from_file_location('composition_review_' + name, path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +M, Other, Outer = map(load_engine, ['moment', 'base_two_moment', 'outer']) +b = Q(assembly['complex_lower']) +step = Q(1, 10 ** 24) +assert b > 0 and (b / step).denominator == 1 +assert Q(assembly['complex_decimal']) == b and Q(assembly['next_b_rejected']) == b + step +fallback = 32 * m * m * sum(profile.values()) +moments = [] +for endpoint, accept in [(b, True), (b + step, False)]: + ml, mh = M.moment(profile, m, live, endpoint, True) + bl, bh = Other.moment(m, live, list(profile.items()), endpoint) + fl, fh = Other.moment(m, live, [(1, fallback)], endpoint) + bl, bh = bl + fl / 10 ** 16, bh + fh / 10 ** 16 + assert (mh < 1 and bh < 1) if accept else (ml > 1 and bl > 1) + moments.append(dict(endpoint=str(endpoint), mercator=[str(ml - 1), str(mh - 1)], base_two=[str(bl - 1), str(bh - 1)], accept=accept)) +assert assembly['exact_moment_receipts'] == moments + +# The historical two-level field is deliberately absent: use fresh depth-three +# invoice fields directly, even though the complex supplier binds numerically. +c = Q(bit['bit_lower']) +charge = bit['bit']['charged_three_level_coefficient_bits'] +row = max(20161, bit['bit']['row_coefficient'], complex_row) +assert charge == 6464 and bit['bit']['row_coefficient'] == 19431 + + +def check_bit_binding(candidate): + assert Q(candidate['bit_lower']) == c + assert candidate['bit_charged_three_level_coefficient_bits'] == charge + assert candidate['bit_prefix_bits'] == bit['bit']['charged_prefix_bits'] + assert candidate['external_row_allowance'] == row + + +check_bit_binding(assembly) +binding_controls = [] +for field, value in [ + ('bit_charged_three_level_coefficient_bits', bit['bit']['charged_prefix_bits']), + ('bit_charged_three_level_coefficient_bits', charge - 64), + ('external_row_allowance', row - 1), + ('bit_lower', str(c + step)), +]: + bad = deepcopy(assembly) + bad[field] = value + try: + check_bit_binding(bad) + except AssertionError: + binding_controls.append(dict(field=field, rejected_value=value)) + else: + raise AssertionError('binding mutation accepted: ' + field) + +eta = beta = grid = Q(1, 10 ** 18) +saving = min(c, (1 - beta) * b) - step +assert 0 < saving < c and saving < (1 - beta) * b +chain, cutoffs = [Q(384599, 10 ** 10)], [] +for _ in range(6): + old = chain[-1] + new = (1 - saving) * saving + saving * old + gap = min(saving - new, 1 - new - saving, 1 - new - saving * (1 - old), 1 - saving) + assert old < new < saving < 1 - new and gap > 0 + cutoff = max(math.ceil(36 / gap ** 2), math.ceil(2 * (4 + charge) / gap)) + assert cutoff * gap ** 2 >= 36 and cutoff * gap >= 2 * (4 + charge) + cutoffs.append(dict(gap=str(gap), cutoff_log2=str(cutoff))) + chain.append(new) +q = chain[-1] * (1 - 2 * eta) +ticks = ((1 - eta) * q / (1 + q)) / grid +kappa = grid * ((ticks.numerator - 1) // ticks.denominator) +assert assembly['kappa'] == str(kappa) and assembly['bootstrap'] == cutoffs +assert assembly['binding_component'] == ('bit' if c < (1 - beta) * b else 'complex') +bridge = {'semantic': {'C0': {'base': 2, 'exponent': 210000}, 'strict_literal_gap': 1}, 'rows': {'degree_gap': Q(10 ** 6) - Q(51 * row, 25)}} +outer = Outer.assembly(chain[-1], b, bridge, kappa, eta=eta, beta=beta) +slacks = outer['strict_constraints'] +assert len(slacks) == 47 and all(value > 0 for value in slacks.values()) +assert assembly['strict_outer_constraints'] == {name: str(value) for name, value in slacks.items()} +controls = [] +for name, k, e, be in [ + ('next_grid', kappa + grid, eta, beta), ('zero_eta', kappa, Q(0), beta), + ('zero_beta', kappa, eta, Q(0)), ('unit_beta', kappa, eta, Q(1)), +]: + try: + Outer.assembly(chain[-1], b, bridge, k, eta=e, beta=be) + except AssertionError: + controls.append(name) + else: + raise AssertionError(name) +assert assembly['outer_controls'] == controls + +report = dict( + status='PASS_INDEPENDENT_FRESH_SUPPLIER_COMPOSITION_GATE', + bit_result_sha256=sha(bit_path), assembly_sha256=sha(assembly_path), + owner_audit_sha256=sha(owner_path), invoice_sha256=sha(invoice_path), + fresh_complex_integration_sha256=sha(split / 'INTEGRATION.json'), + fresh_base_template_sha256=template_sha(split), + fresh_derivative_receipt_sha256=sha(derivative_path), + fresh_unretimed_word_sha256=derivative['unretimed_full_word_sha256'], + partial_constructor_sha256=derivative['constructor_sha256'], + kernel_selection_sha256=derivative['selection_sha256'], + changed_template_sha256=host['template_sha256'], + preserved_local_program_sha256=object_sha(new_template['local_programs']), + preserved_fields=preserved_fields, live=live, physical=physical, + profile=profile, rank_mass=mass, finite=finite, + bit_lower=str(c), complex_lower=str(b), kappa=str(kappa), + bit_charged_three_level_coefficient_bits=charge, + bit_row_coefficient=bit['bit']['row_coefficient'], external_row_allowance=row, + strict_outer_constraints=47, outer_controls=controls, + binding_mutations_rejected=binding_controls, + scope='Arithmetic and fresh-output binding gate. Enclosing fresh root execution must bind both complete pinned supplier replays, physical owner/controller admission, scalar invoice and compiler provenance. Inherited Lemma A spectator borrowing, all-size compiler/common-label/restored-row/precision/tape and analytic-transfer contracts remain conditional.', +) +report_path.write_text(json.dumps(report, indent=2) + '\n') +print(report['status'], 'live', live, 'kappa', str(kappa), flush=True) diff --git a/research/r489-partial-own-kernel84/code/review_frames.py b/research/r489-partial-own-kernel84/code/review_frames.py new file mode 100644 index 0000000000..846bfdf5df --- /dev/null +++ b/research/r489-partial-own-kernel84/code/review_frames.py @@ -0,0 +1,295 @@ +"""Independent finite common-frame retiming review (no supplier imports). + +Checks actual GF(2) subspaces, fixed scalar payloads/boundaries, raw-to-canonical +transport, and every event in both emitted label ledgers. Does not discharge +Gaussian identities, exact scalar arithmetic, global invoices or asymptotics. +""" +import argparse +import copy +import gzip +import hashlib +import json +from collections import Counter +from functools import lru_cache +from pathlib import Path + +if not __debug__: + raise RuntimeError('This verifier requires Python assertions enabled.') + +def read(p): + return json.load(gzip.open(p)) + +def sha(p): + return hashlib.sha256(Path(p).read_bytes()).hexdigest() + +def digest(x): + return hashlib.sha256(json.dumps(x,sort_keys=True,separators=(',', ':')).encode()).hexdigest() + +@lru_cache(None) +def span(vectors): + s={0} + for v in vectors: + assert type(v) is int and 0 <= v < 512 + s |= {u ^ v for u in tuple(s)} + return frozenset(s) + +def sub(vectors): + return span(tuple(vectors)) + +ZERO=sub([]) +FULL=sub([1 << i for i in range(9)]) + +def rank(s): + n=len(s) + assert n and n & (n-1)==0 + return n.bit_length()-1 + +def perp(p): + return frozenset(q for q in range(512) if (p&q).bit_count()%2==0) + +def tau(q): + return q ^ (43 if (q&43).bit_count()%2 else 0) + +def transported(s): + return frozenset(map(tau,s)) + +def regs(e): + assert e[0] in ('add','scale') + return e[1:3] if e[0]=='add' else e[1:2] + +def raw_ledger(w): + v=len(w['ports']); n=2*v+w['report']['R'] + cur=[sub([p]) for p in w['ports']]+[ZERO]*v+[sub(w['start_extra'].get(str(r),[])) for r in range(2*v,n)] + initial=cur[:] + final=[FULL]*v+[perp(p) for p in w['ports']]+[FULL]*w['report']['R'] + paid=Counter(); mass=[0]*n; center_mass=0; climbs=0 + def climb(r,f): + nonlocal climbs + assert 0 <= r < n and cur[r] <= f, ('non-nested raw climb',r,cur[r],f) + if cur[r] != f: + d=rank(f)-rank(cur[r]); assert d>0 + paid[d]+=1; mass[r]+=d; climbs+=1;cur[r]=f + for part in ('A','B'): + if part=='B': + for t in range(v): + assert cur[v+t]==sub(w['target_levels'].get(str(t),[])), ('target cut',t) + for r,frame in zip(w['centers'],w['center_frames']): + assert cur[r]==sub(frame), ('center cut',r) + served={sub(w['target_levels'].get(str(e[1]-v),[])) for e in w['cut'] if e[2]==r} + old=cur[r] + for f in sorted(served,key=rank,reverse=True): + assert f <= old + if f!=old: + d=rank(old)-rank(f);paid[d]+=1;center_mass+=d;old=f + assert old==ZERO, ('center bottom',r) + for e in w[part]: + f=sub(e[-1]); assert len(f)==2**len(e[-1]),'dependent raw frame' + for r in regs(e):climb(r,f) + assert all(cur[r]==f for r in regs(e)) + for r,f in enumerate(final):climb(r,f) + assert mass==[rank(f)-rank(i) for i,f in zip(initial,final)] + assert dict(paid)=={int(k):v for k,v in w['report']['local_profile'].items()} + return dict(profile=dict(sorted(paid.items())),rank_mass=sum(k*v for k,v in paid.items()),child_count=sum(paid.values()),climbs=climbs,center_rank_mass=center_mass,per_register_telescoping=True) + +def invariants(old,new): + assert set(old)==set(new) + changed={} + for k in old: + if k in ('A','B'): + assert [e[:-1] for e in old[k]]==[e[:-1] for e in new[k]], ('scalar payload/order changed',k) + changed[k]=sum(sub(a[-1])!=sub(b[-1]) for a,b in zip(old[k],new[k])) + elif k=='report': + for key in set(old[k])|set(new[k]): + if key not in ('local_profile','global_profile'): + assert old[k].get(key)==new[k].get(key),('report field changed',key) + else: + assert old[k]==new[k],('fixed raw field changed',k) + assert old['A'][:671]==new['A'][:671], 'compensation and kernel prelude changed' + return dict(changed_gate_frames=changed,unchanged_scalar_gates=len(new['A'])+len(new['B']),unchanged_initial_A_events_including_frames=671,fixed_fields=sorted(set(old)-{'A','B','report'})) + +def canonical_binding(w,c,base_c): + v=len(w['ports']); n=2*v+w['report']['R'];f=[sub(x) for x in c['frames']] + assert (v,n,c['h'],c['R'])==(c['v'],len(c['start']),9,w['report']['R']) + assert f[0]==ZERO and f[1]==FULL and len(set(f))==len(f) + assert all(len(s)==2**len(b) for s,b in zip(f,c['frames'])) + assert all(tau(tau(x))==x for x in range(512)) + assert all(tau(x^y)==tau(x)^tau(y) and (x&y).bit_count()%2==(tau(x)&tau(y)).bit_count()%2 for x in range(512) for y in range(512)) + assert len(set(c['ports']))==v and set(map(tau,w['ports']))==set(c['ports']) + mapping={r:c['ports'].index(tau(p)) for r,p in enumerate(w['ports'])} + mapping.update({r+v:mapping[r]+v for r in range(v)}) + mapping.update({r:r for r in range(2*v,n)}) + assert set(mapping)==set(range(n)) and len(set(mapping.values()))==n + for k in ('A','B','cut','cleanup','precondition'): + assert len(w[k])==len(c[k]) + for raw,can in zip(w[k],c[k]): + x=copy.deepcopy(raw) + for j in range(1,3 if x[0]=='add' else 2):x[j]=mapping[x[j]] + assert x[:-1]==can[:-1],('canonical payload',k) + assert (can[-1] is None) if raw[-1] is None else f[can[-1]]==transported(sub(raw[-1])), ('canonical frame',k) + starts=[sub([p]) for p in w['ports']]+[ZERO]*v+[sub(w['start_extra'].get(str(r),[])) for r in range(2*v,n)] + finals=[FULL]*v+[perp(p) for p in w['ports']]+[FULL]*w['report']['R'] + for r in range(n): + assert f[c['start'][mapping[r]]]==transported(starts[r]), ('canonical start',r) + assert f[c['final'][mapping[r]]]==transported(finals[r]), ('canonical final',r) + assert c['centers']==[mapping[r] for r in w['centers']] + assert [f[i] for i in c['center_frames']]==[transported(sub(x)) for x in w['center_frames']] + assert {str(mapping[v+int(t)]-v):transported(sub(x)) for t,x in w['target_levels'].items()}=={str(t):f[x] for t,x in c['target_levels'].items()} + assert c['local_profile']==w['report']['local_profile'] + bf=[sub(x) for x in base_c['frames']] + for k in ('compensation','precondition','cleanup','cut'): + assert [e[:-1] for e in c[k]]==[e[:-1] for e in base_c[k]], ('baseline canonical payload',k) + assert [None if e[-1] is None else f[e[-1]] for e in c[k]]==[None if e[-1] is None else bf[e[-1]] for e in base_c[k]], ('baseline canonical frame',k) + for k in ('start','final','center_frames'): + assert [f[i] for i in c[k]]==[bf[i] for i in base_c[k]], ('baseline canonical boundary',k) + assert c['ports']==base_c['ports'] and c['centers']==base_c['centers'] + return dict(transport_vector=43,transport_exhaustively_orthogonal_and_linear=True,register_permutation_bijective=True,all_raw_canonical_incidences_bound=True,fixed_compensation_operations=len(c['compensation']),actual_frame_count=len(f)) + +def scalar(e,back): + x=copy.deepcopy(e[:-1]) + if back: + if x[0]=='add':x[1],x[2]=x[2],x[1];x[3]=-x[3] + else:x[2],x[3]=x[3],x[2] + for j in range(1,3 if x[0]=='add' else 2):x[j]=['L',x[j]] + return x + +def ledger(c,events,back): + v=c['v'];n=2*v+c['R'];f=[sub(x) for x in c['frames']] + cur=[f[i] for i in c['start']]; initial=cur[:] + phases=['zero_frame_precondition','entry_adapters','A','centers','B','final','exit_adapters','full_frame_cleanup','done'] + phases_seen=[];phase=None;scalars={p:[] for p in phases}; center_events=[] + paid=Counter();mass=[0]*n;wrappers=Counter();adapters=Counter();touched=set();active=None;private={};private_life=Counter();center_mass=Counter();event_counts=Counter();actual_edges=set() + entering={r for r in range(2*v,n) if cur[r]!=ZERO} + for index,e in enumerate(events): + tag=e[0];event_counts[tag]+=1 + if tag=='phase': + assert active is None + if phase=='centers': + assert set(private)==set(range(len(c['centers']))) + phase=e[1];phases_seen.append(phase) + assert phases_seen==phases[:len(phases_seen)] + if phase=='centers': + assert all(cur[v+t]==f[c.get('target_levels',{}).get(str(t),0)] for t in range(v)) + assert all(cur[r]==f[q] for r,q in zip(c['centers'],c['center_frames'])) + if phase=='exit_adapters':assert cur==[f[i] for i in c['final']] + continue + assert phase in phases + if tag=='climb': + _,part,r,a,b,d=e + assert phase==part and phase in ('A','B','final') and active is None + assert cur[r]==f[a] and f[a] < f[b] and d==rank(f[b])-rank(f[a]),('emitted climb',back,index) + assert r not in entering or wrappers['pre',r]==1 + actual_edges.add((a,b)) + cur[r]=f[b];paid[d]+=1;mass[r]+=d;touched.add(r) + elif tag=='center': + _,k,a,b,d=e + assert phase=='centers' and active==k and private[k]==f[a] + assert f[a]0 + actual_edges.add((a,b)) + private[k]=f[b];paid[d]+=1;center_mass[k]+=d;center_events.append(e) + elif tag=='adapter': + _,kind,r,q=e + assert 0<=rz3JDDD(1?(PMO+Z%fCeSg9q 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 z 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

<{QMH{15l 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

~Lf|>8wXVG2qf|)Ae#q_C32m)CmKTa4NwwJV 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

lY0j^%xY2V~_0HU|>B<(x*K z+JZy$%8Ak>%I*gdFK(%IK0^h!_1$zE)X4u(?PepTtBZTQvP&As$apb99eBYaZ$3N6 z>+3Q{Caw*q>T9vW-XC6l>*r#tXwwn@G|PUxkf@N~?KDgDBAw*BV^y8bRlD0>!+`ej zUuV*FWc+N8gPa}(j>%FsN8;M|Y;#q#T_3DYOC_n|uO5q}id_tul?7YAmiqNYpb4G+ zwf!=(FAn-ih!k^Qp@;Kh83rrfy(mLK&C$S?g&j_Z0dKfBb0iP%Fb5&6_4BE=s9&QNO?=w=-FPuyV?|LDcn&6WyyIwA-i z7dN=C#K}mIL9%$|k#Ap(Vyo&OP1V~OBfgBA$D_gMRAd=j#h6Gdo{&ZNlmqh06Bzm> z6yr0Tpi6gu6__`efMPtG0svk5omKYfS`vFQdO%!M+8;Ef5Q|YKr(Gl>d!QqKUi^Nc zk;7pq5C>^37T(3Al*CW_>q~<4V_TDPSqibp{L$ereQpFJTow)<8u1zg|) zV`sKnKY1d+@HQ(wUNL!{CQ&;M!0zGaz+@e0VrLZ8~ zyGN7>IL0H_O7;)IXWofaZ0)~p9+Z5-SWSHaqepTz10uk$94(`82?1B z`{4Y@zdQ~x8%W8Yt3pv924+-SB5dX>TT`VgBYx-xA?-=zx~l4NV_sUpB*I+lpo?LKRo(04VbyyKCG>`x^4ZZx11jS+l+?X5AnI6g$P=@ z`>>wg>YnwVnSy%wN%Xp=+6D7J#d-Dc6|-P7M!I`P&TY!X4D<#t5j(AdmKHTyJq&O; z&J>Ox2fpdf5X<6WS=fY;?#_{y)<1%7GgZoCSCxl&@2?K^B+V2SEr3hNKl1A4v{X;5 z?ju~^OUTFbO(!=g`G<)`zhpoXY z-{;;^ojcY>-E_b8Gca49tF$Eikl#6X+6jU_P%*&_4?VY(qv!OwXJ8B@>4rN)nd%nx zmc{%OjI3Ak+&NPcpiml?wJ6S3jSdE*Qq&02d$d$5nFMOdT?>!Q=_2l)?XBf6?aF$t zZM;c-Vb$qB*N3r(j`nlI>&0G=|4Rmh!J^{3SPP=4XzgnQ;JNhY++8E7FJ{cujLw$DpBczL7%s&#+{oosZ_Ap)wo}wHE%UQEIvPXE{8D4fb15jz8t0Sx~1T`E8re=UA?55)dt( z1$5)Z9~z>=8wAPU9$J~>ye$Hj^nTT={va(~0-DOLY(3W%JDkn@D%ml?g(*q73h2mF zjECDH zzrGnoTQr>}G5N9Ut{xaMaeXt5_vh>rv@iAc_Y38=&)>f$Ts9uB-Q9ii{d3bX!GCje z^Sem!`s`-6=!wjz!dFwyA)_Bx?vDda7_Wbzt&8$s*6a=D9GM@Eg~&-py%343Bz+;2 z^2VI;uUoppdOY7yXqP3*7W2fW9Lg49VyCZtt2+dZ3=yAO(MDASp^E%vUKT$DcgV@@ z`INmo6!+Au$5$sTMv#F< zqz4u;lGbFX?$#1p5qxS1^d(3TLYF+@{uNA%rC>eWIN2ge|2bH3#GW`J)!x14nQ6@D zp4o-vrf1Ag*BQy(FN4?1z8{N_B*-P0pfD{y-~W^3$mMFxz!Xkkw>h#AB_K+Y@GD`X zU!VOpH1vvrCPxcPA!z8tTtzyB{w?z{t@rbghbrZI5|!Zu-v`BaHkV4C0cH7L{^`Hy zNPna%T14UoRvcoJp?Yq8!Ry}%z8W@#e_!6vZIiJH5}_?4PZ&*L#UfQ*J}J5UYC0A^ zVGpw%2)lHjZlSA!kp^|2RF0E6T9HvDKu9>NB(sI0|ti@y1&C)n!eH|ifd$Y{<7VOhM8Bt%9#2LL1U6Ix+=jW z&qtxT!rB(oe@pHnsDp~l-=fXw%T1n25e4#Rk`vDj-BMG4d4dX0bV#_W zNk+xjhM$$!C&NMq_NSWqiQ0wq-+mSvmjDx`7xXi`-2pxwI-r$7hXN%(Mb69}tR3id zxT(ZY(ABNKF$l(trwt=2u`h`RhFm-y>Z>_lH)u2KeiS);S-2 zyZ`HcC|yTLp)ffK8?Qr8HXrGnnu;%nbF)gn!71#1NZRBZJs zvtv<eEFs5$l(DRhlB2|8YtSwrIk2DdYMJxLlu&547w;pbqpIzKNK_Ywto{?9T zWxqbCF{~s{6Vhq!fm%_H?=JzUet3t6%ED7#D^poQA9A7Fq=T)pHOeyR!4PF~5lF*f zn{TL1!izI9{n*fKUOkgnU94t2C(1D_GyZk0MVEt72d0Xy;bTLS`J_xfX{y1z47JZ2 zuXQE#uvDm_tFk2gICkuh4UIsTUr4VxdhGR3Pb$ZjlSQl!OJFv(${!CSC=*ANO$wGt zlGacy_tfEN_@fn%LNP|624<{g^TRK(7;vHo z^631m7+;HggN!dLig?11)IP$q-b(Bz3IU_+vDHwMGcsKpA@TW{<^eQpA@y5ia<)Q5bFTna?_dm(wu$0p2;K+TLqrse%z6&nDKbH08Df#@=nENKl z;Ul$8A<|w;ZqRR4GX@s1%`I)yAEqePU!Fh0q9!h^zr}jjqF}|)Q3u@E+b{k1jmnx* zOtOR^5+*lfLw1QfGOk9zj@|j#Jf(=A61&SL70~szX{;GaoT&BYap?zZeIe4}OZGh9 zvTWeubML2-OEU^Yuj=l_=jJIT{CsmmELiu3>|~MlIQ4w)W6J0iaIbcGC;Q4+m8^S1 zcFvet$~6ZGdR@a(>SK;&p@&bL?5kr{Na2M2m<+`s@rmrXBd}!exeaHopLHHp$r6Pq z135Y5zE~24sDNSC4vA3!vVR7U-Qd#SFnh^f=oHchdg#tvtU=tpKW zGZCrNJb@Roo2zeOEss-wCdF%Sdi{{+o`VbZujC z2?goShFCi1`EI1e6*)=!vBlA!B3r^M}M$f9^)?7iO0fVoPC0jdiSow_=^Z}sX3?;$J% z=tvG1}0CU3@e~dU!^njl2yoB z(zQzW)44<^)sqCC?7CJhv+=^`=x*;(pQd_u%rsb8ASM;H={5$>w14o*w|&&L|M|+u zgrz&8ov5me8GK%hufJ0EVtW*)zAL29upZf!2da7rH9K;B2G!7F!VRTb*gRsm9tJK} zuAY#{ODhS%#<;L=@-w`H@vHlmn`YZqs!IBFrlt`Pv=YBdnOn!_6Yn3*9tiC@?hM|< zjUcKQi7#wmcjx_{=!T-LtcWjem)oq07m)&III5mZ=b#kl-d))_7`diaWNiW$gbj7O zz>e<5BW)gi86=X^6HoJDJ#QBAxc)42uSWMJZAuF68#|0pNkn+5MK~)}7no2tdK?j- zh>xaa8~982HmZK~dqfXhj2?G$W3l^=h$N@;GmwR|IN;IMn!EJ8J16v|X24`4?!cH$ zMul{RxXl8t?&JYt$Gsm)ja@~2NOH@j+DQNVha&yMVo!Dm*qSd{%qb z0NgS8RzZzQM1xvZVOh(F#`o7$SwLJ%K-?J01+%mtTKGvN!JgUqso0tNCMx|H{pvjf zwld36N$2jQV7{qjrwFc=rgu=kjM0DXk$>%8&<@g0tI0c3_rJTv<)89iWn;B#XeJY@Rv zw-5}LD@Dt`lSsZubqmt~gE6nGH*A;u!BnCErc1z4`y@c^bPs~1UwPQ8dD$msDaXXG z;;w~1wwcYfpQU`1ISHclc51|oTXZh-#`WUKXNbJmUw%8vxUKX63qiKjHVl{xupXlQ zunHcgUt0(smcJ#un|gO^YEB>~ef#0lT^ZldQO8Ghv+u)m_z$Inqmjatl@3>NDL7;h z#_w@?rd*A{Ys&1muU-*OsWX)-U%2UED`qJRizdcE7fbZG>5ZUaAE@PYYc64Nh`egc zw?5jT18dllOV6KhXm*}-a4P?OZu6$-u%nC&VtVzFY?~4<7*FA)>KwpS_5p z15K*?Cdt@6JMRYq^Do_>?%DamKX!i7@f=L_Q9d7xWq_F86Y*btZ0>+tCjll8V#zfa zsW?q={)6WvWA46p)BNeA+|{nEF5o_F7gro&cdWDxZ;g4z(FV;g?}nV#f2Ehk(v`Ro z0PUSOY%&7r*Ya1^z`@fpbnChZ&cn$_#twlH9NtHS{IAcm1m{vw`v?`uYqugT0L0Hg zh#B&f-hlg%pRTNnoLEbA;DZCo0-JfM%=x9b5%qrV2v;ksp?)7mAx@MbXf9c#Vky26 zMZCx7>Lr!d{}(=|eEC0o&VG;2x76YIT;jyHzBieF5xYPJ?zdjf=x%#5eh`K|R2(;? zB>&Hf{cWDw*i@BH>Rt|3X&jk!zVTw^Ljp`k;IpOQZLm zo{QM;DJ=E@+D=shL25t5|5_tMl6NdYyd@OS~XTv*1a8nH5Bf{_nsP#N&z}Tym4SSjL6y@+5IBV#ZjE&Kx%+XyUZi>UY8ueSo~Law{~0n&2B#o>_8 zk#ON-f<)P(*KmSzLsFSVQs%@SAm^kaW2BhK%8PEDa280FKIdFVnW^@F+@?hS#VtYwuCVd)QHTpVpQXVsL(3AxR->dm(AS{HmK z@*G;9Df;u$yvaGEjI|3OWuSj9u<`Eg4IGIJEe%Tf0$d&)1|7kbbp-37(7FLlZ@Xc= zcFpOj9?w(nt#P_iJKx~()k+ndHEYcUh@2p9!c5l&%ZseO67bdnhp8d{k7nEaR)F7b#b=8fKks!`77YyoCenR?5tWJyBaVN=j4^c>5|#fiO;O~ zevTu+QuaK?@KUQ`k#{i&KoC1P6F)8uocmYWw+1XDDua1ozrp9xNy(xbKq|ywOR(f2 zXwUP2M~Vu-Zxk0mQ_zk9c?TK3A9T;Q5xm10kXzwoo!|UFV(;Xo@la>d01&L!4{IBg zEHAQZc0M2~V|T+Dag(a40k)>Gba_;U5N6pfe_B3z}%Q-*p)SE+1r9FA=%{7#&4O;ZIq%jjqB|VL#`4VfWC_d?e~@X?;-gNSkAz#A-=zy za56TrpbZwMoMea-^N#!5ft++WyMixPn3xdL#GVObEvsO={h2M7J$jnV9lK0LE?3eW z%Tq0Mz5v>@Vd`ZScDHNAd0RCBwWMXp1qv#7H~fVD?|`*BEd*^}sspgD5SJOVQ!qS9 zyIf2BhMonYiC;ui?^c|(P%5=W#)SoI2(e^Mpb z$?kpFtKPb}j??XfUp!M$djO#G2yQ2P5zne+d*1`}_Y1-5gq!cYQkIhVMV8J{+!lD%g-SaU}>-a+Q{5n4aQJaG9u9sH6k`Tg(bdu-L zfcUJ!ZYRhc|9Wjfi62RkVo|_e!`KNom?6ZPW;aKHEo6n;m%PLD^20+q!i2$E z(sM0gj{ro^(b2fLhvTYmg`Io?fM> zVaT8V`Wh^l>V-wh7cz=lEDD_NOl)S=T89Z&6~1-^tL1Wj_l}cgX6tll3Y-puKsSYi{z2G z1@K$f5Ige+*B}aA4MQ5T4Wel5ss1`$;8y&CbDtS~zWA{i?_hes5ev0@L;< zlf1HO!cu}@LDt${p`2}X4WPd9=aGxE_Z2%D2q{1JnxBObBu{99)x#cS`(veLv*NKw zUDf2pdyjdx`_I(mOKr|9<8tVX(o#g`dPV6(Z<#z6c=TFL`PmY#{^b*fJ||)W={Me8pJp@i?%~lWO0n+ zj20}}+yJ*bJ^}-HYoJ31PUc05c%b@yH`N;rPKhK~tMm_)Uja}KRyiyHb9i7f1K$vw zyfqpH@1I~K{1OiCZ0#2w9d*Gd!3wMHqDV`(h%V_vQ%MJch=UM9+%^7es@AEC^ciFD zLAw#g=nU@~NwTiRy{=Q0P+zgZg`|CFB5D#C&8tLGP#YEcUl+1oxL`)=s7lB99P4tgL>Iuta(6lR33NOUiQd{7Pn@4M4Rja@*r^DPE+6+euQobzH?OVe_kEJ4?ni^e3UryHD2;*PuvD|k zu$BTfe@h6E__Ie5Kf&3m4q|;uf!BFc{T&C1 z$4V9y@RlV52Fa`REuNx09aQ)9?cTpJ+kcTQ|B%TI8Y#HQ?I`{kX}H8CZ=f1f%RF{g?>&R zy<$VcjN}W1&<-MCR9X^{S%=UEna4EY(F~%X$PP0mRXSMNoiwj;3o&YzkP~A#AnA!k zAzo4yeNdhmKlV*pDWd$bYRgROH=1P(l#AR2gPE(YSf`YijeI zdI5@?)pIDlyT@Cg*ExS&h>~LU9ZD;RI{2pP;Z$%n4R=iFQ75EsGEi$p|}M4 zBvKlmN6GV)Ih5{(91{r)&2^%=(H|tbI%?s-&f^MtQMX)^%-`!a-AHmKNzcdV@PQP0 zK^=*<$@FIMm+12lY8C*d^O*1$X>S&&dJ)j?DaLScu7HZ{@#9Q?o54W8s z3$#@`-BLo3R@a+ak!L?PWb8>ytea`1IOZKs)9qf*p;UQ|6 z;@Vww!TE~_1QcOCajV2|hURu~jG+uwF#Eb$GEq>$4>E((!+PEXBB2%~yXrQI=}Y#J#_Q{6x>F;R(ruHEmL>lx-YdPJPk+6&C*t1oY> zUJN2I@5Abvln`e@`+_TlRnOvVu>=+0!KBxZTrnN?`U^?Gk9;%3k}E-Q$rL*J^F9>D z$*Zxpr7w%XM=?nZ-ik^ly)pFoVVH`>#CA{3iLV4v-lj6tQZ5wa_|K7cY`sK?!!}wh zKAD(EZ|__@SAUz#;6!O0YkMkLCwD^?8HGwWJ3qUDj%{ ztP_nd#JMf{gdb!x{T`r4@+iKX_)HPpD$9mw#k{M{kJD&3U~r`K$tjyr_!Z1y#RhG9 zCpn=6) zZIk50_)Le%ukesNJ!%hZv9EoS>!hEGVS6n(>un?`1&O!d`k!*m7`N#8^Rl82O&EV$ z1U7+_`lwUc=f4Y$l6wQl1@*2gF!R3*Ef)%m)mCvML_*!8bmaWjSUBlMP>5mU6zWB8 z8Xvzcp1GlvAf@lt`mM1w7Cu41Fxo>wl`l{H`P2WQ6oXSiaid>(!OsJKX9R|LnnHde zhuU60+5$o0I?p`n%|FCK>K-ngl`)otao?$$cbYyS*%>>7`rU)!K|J6G`O|=0f$Kc= zVYs`7jPXbk3c87NXANA^7)|HZ_2XM3mwhX$sa|N9CyR5N^O{m7ms|U{H61jFL__ei zAf5N^KV3Nz&p@OuJ}oO=S=L!0d0mn3_yT z_g}qRow3#Ur4q@#z;*`H-lF#XJLCnin)&=)jVcNd7Smcuwa%w6AyawGtaqH4b2Gua z1#7IoHTdNmXGVgUge48)zIX*7q+iN!zd0$6ep;&A% z3SrrJ-_3^KYT9`URcOyHhlJsZGzn`sO4l-gZx$-;maW^$~z3g@S?0jR9b&OC$i`vRh zHSq%tn;1t**XQJ63a1%!S9#AH8?mp3xhlMDvgKXO0voGy7f_@& z17t#sW^Zp!_p!I=vh4{Klqpo)F@eII-NaWqrq4%^2&qLk9}>q%(>KG){K!AAoC;LF z!;fV6h@m5f{rbpHM@M)^9?@NL_#*g(i>u4D6rsHP>-gm)+4o8-<1TqbMPZu{q;UoW zZ@bYCqSim&y4m}*b9cwRB?xnrn@NhOOEr}b#oiAuuq|76uzl%wq0K1UZCRy|^I>9% zNRN|+#~R|{D2IKOUN_vNLNS`6(xg*my4F%CcglrC;lbf^kkRAU&Qt>qZ22^#ruc{$ z|0?20=+%dC^O63jgIg5ot~xsk-3u=I)IXGLSI7~wzM{?YYKw!R%cqUpj*{G(QtORP zXQn(@Su}T)beBXZEFP&W>5GF1us@U=7evUx9ZVld^~4iilIv>XV#a)QKiVY}<~sSc zJXBsp4@osKy3_Z+6S^eoYb9 z99Yon!J1#FZygrY57p43X;;8NE3`9s#Qg*r_b-j0-Y*Sey+n5#VVeuCP^j8sFVRLK za@5~?D>^r~ADuP1zFUFs&}A#h*y-NOfKMzftqa7|isi+@&YEVyi@6ndYo!Q*i2xxY zzQ5w!zmTvG+M2$4T16;KTw0M+5{sxkd&Z#?RcyEy8eKL2aqcRQBhYUyx*dv!jLoXN zsc@2+BT=Tyy)Nc}ORn1cMmEg7?%Rf9YBN^kjoXMKs;qp#8oVNwORX`kR@R^r)@~2e zeD(`5)hv!t+@)O6==Q7jCSH^(wT^f~A~~@dCuWQ(g^pMvt^lo|(cRZ?J$P{$bPDdT zMVK>K4_~a~{6S2Wc(FWH7LhulCV)UXEcf@)Oaf1lJ=z)Z^Pe8>pKQAa{@5rbGM+k= z>5}LA)5sW}qqJ`;i$~4`H5FnkXa0JPcwPlvPkenBg?0 z_fbMbcyoCjaJhDKA|-IFoj!ec{`v55HR5|MKXx^>qj7rTR}o42G-1XvR?Yp-``qXS z2@iznTKCm2W<*!~C0@L^{d1FTF6(rVo!=OdGeTX?UHL6&CRvzu_Yh}ZIVCJR?M#|z z3*L+$5tFlw_mHUWO&TQJ=()FKVHuGb@k+f^0z;{O~YoXPRlM?H8H<% z~d&rpwr4dR)wN2UgR$*TCHY> zDooe$L_smz*pk;?ox(VJB`ZJEVi-^P! zu+T?Ihk4>O_-XdMXlg}!wWi~-C{>Ui3ryXs<`J|U|L3hH!}((=_M!|@64D357n;oH ztWsc}9;5(3?9^S<@J8~PcMqO((2z9Rm9-5K9B z^5rE;ZLH?Tff{11g0YB1Zk84rvxy4fv40gFL`onZ2w@CpOG+m9+D9;pWTaZt$C(MM zu`}Qoe)Fclp#1_oCPPKAAwT<*u7i%8{4y3Pv@k#F?j5Mkl7{hFq^xp(y=1GxohsNY zU&a4OgtJh25MBL7%IEd*dF7ud8c|{#l&XVQ)!`U^2-Gs}YxWj){b{t09JKFcFjS*k=I+Sjdj>93OJ4CueDM7jp zozmw}0@5ihNHzkDIgWE(rEE9F^_-GMVrbJ{E zfqoEoGtmbj_8IK8b9=HU*XJc|i#cBxxrq667|asiz(ee`WHu=^pc@ZgotOAH5Njx0 zS{U>Zmd)!HY-5QMxV)GgoCk5VZJmbsie*7pnepr?-| z;j+04`ak#d0*FlaoWz4+m{5$iv>u>m~T z>|}co@1#LA(m&&97f5%MQeb$W^X|j_J++{t=>CH*D4vJ}iL6Y+2jj~);mBclvl2V= zlz(SBhq*L9(-z`hj@t5HFWj|@BPIzqi6dyhiI%y3VF(pgFfX5Y;tFW@fCu051M0g zbjqha!}MA2qS#~x{vlOk1a5)S?(Ya?)|TUjr{KMrZkv)GYiih`CpD4=HhZWO52}#)Wn@L6?ztL1# zY}4ZHdeA;fgE>DQk!g8QX7xL0@PM+f4rL&LpuT8iLg|_RUKBemmQQ#<8O!SxcG{zq z&et?zcpo2JYZ@+6lPXPVKbF1V9S^Qb{Um}QD=o$k+5^i9bx>9d^ZfG(4dL<_O@A-5 z#*Fm2MaG!PV^&`p;*pZ1H-0%o&*PwcC=m7ficzh1=OQs*-)KHi&L4v7&WIrNON$YI z9W+Dg+&rOo~!I8RtdveA+l-8X#b=Au#|Hp3SCF~LQPsP?}OPH zx1Chlcre?bv2KTYq$=W|j226?czEdP`)Y`c!UZqb>d42t_uik}Bl|Welx5JEtW$>W zM5j+v0xw@Vt^Sy?L%k0jIX&|*xa9_Rr01f)PzQu0xuaJV=uXc2I(#Ua1_rDTTi;ht zMVzjiuhG(hQYAr6zod`d!4wK3aIaZq>nhsqZmtgUH)kW1W+zl;xuA+34Gt=M{elQR$~+I2v63ShAXtVzkBb2-!rQJjk9;kB6Ig*dfL*`Ol{ z39k)2XPC>iS))u;oN6mojE3f=1i=e#xtZ_57G4^^B>aC0Ch$TjY1@gzHsNE@w!y7| zshmCNulwlmzCiNk)Y0^ApFqQ~hg!s!1B}ISmk#Q59?&X&=B+F3IMqTi;08J>J1P3w z(vCd?6eu?|6#L$=xG9>61fJPYvBL>(R78fvMG8R=QP@3Y!Dzo<2k>e?imqgpnYG{~ z{;^*l^a#-H+~8E=SeRk98i89qCQiA!SuHs?DKiPNCR zeHkKNIPJ$Vh%@Bvu!HY@plMB!c>AWxLb^cbFd_YXIp(0g#)qeC+tP4^_i5yp& z!aIokq_QO4>mdH(F1S1jmGh($%fZv}{>7bfDH3(mgAh0k#mjYrEq0^*Ivr-jaD95kl>=JN_0S< zGH1VVu;%HU$;VKMcb>t=Ej@Sx#J+qCsd(pw2d>K7lPRmbV7(kJr z?X-Z0J9O-Qd1?rr*dZ=M2AN%>mfv9Y-vu-Dk_|z#u;uC8>Y2xpRbcVcqb>?~!`VsK zv}8LhiGvsrH}y6aivgq7;264AfQQYIM>l+oeRR1{OB9k6fQ_4VY#HGSu{HwYDc{)B zw|WGY^jM^@EVKe}VOu@vD6*HbE;mh~9*@`O&7YZRRwld?6&*{<2ji0K*+8Y`5X*n3 zb5B#n3aiQ6u{`q8EJu%qX;(P~FI=ZeWgqsvl%P`q??JNimbYMGuW;Z?@RlJ=MhG>4 zPRiv#MWhjX-#BjZf09}7{DXk}W?91wc%1b?t%dR$qDYECwl-vIm%d@R*xAU4VWm7% zW@MM_Iu5OZEL_+P!VntGnz3s;k&-FK1SfkjDhpf>1OikZUCk8g2?oZ#d@9*FOT z;4dOppC1Z#)e@_DT9dWNOA`C;BgV7!Qw4s`3sHSg$FVWuLeec!MpP8FJAHpKO`Jpod;7T4yd!k2j~xX ziVXS!s^oP2OrupLYsDLw=5HFX6Y1~xz14X$nj?xF{Xld>8?o)G6_@ArGrAMK$+MuG zY&o-+fQvX>hlgz*)LJwbI=lCS=6sL9{7R0!K>nNdd2S>G6kP&EC--HB1J8bVg5Og` zZMp82ET8P=H*Ewty4w)9VTyWMoh@31nYavT^e;Qk!H35!=Q3Nygk_$;n_sI0W z;1#yeBxho$e*!_%ApliQSks|YLg)y=`6WIS#Bl8fRI)9;UH#j2^B_YIkAVK<-uuM% zpfmz>xb`I~S#dp+KWa5?zcd~vCwXAw&V&3kt1pqrWY&h2{q z{nxPS%-`FBppyek@C#g<#f8uW1x{cuffn}6DXct(282KISzq7x;VX3i%9#@T+DxGT zG-4H;Lfn}$>23C?`;;x^pD^uh_QlrsKA?$tp0H`}XVzD~8%_7n_Kr(D8kpGG&z$T@ zd$9OynYW3!|uq^PCNZ`*0x@5 z5d@pmDfM_d^lHkJw=bUT%A;GS+~etui(&~0;?1Y7GUAfV;#RE>#2MOUR}=SCIiT?_ z-oUv1*-TFtO#5Qnt29VIgTDy8cOdvP)ZcRM<)lOsAtGvsLZgP%eGi8^vcZckPaSWD zcu^6xrcUo_&pZgiwn@G48pJRkkb;lp+BB}n3$I68^hBNwT$hKs8kujiXd9l1$ z!$jS6TI381CX`n_HM%3K-d>mLLJ?n>5fG0Lb>6>tc7+X~daDEV+4*sUsm9+oL8v~p z<^6mF{^4ZH&&ZPolM$|81>!zDe>&R7d|CwT>`d(@M=bdk64;;{>1>O#$)oXo%uSx* z@D4r#w|4>jaed6`Kx*I{<9Qe0MiZ@cvWEu=w50tOxe{Z^hpU@o4r&ZVWyo9Fws`0> zsk4zj@Lfjo+J|}t9o$Sw6m>2tHtyC2r3-;H3M3QZ=5u1O?~I)%5riUdj~M(OXN^gtn+vV_6N}m=+M^TObC$E{BeA-R3Igw;8z)b4giXgLeS^Sfb>^9P zRpIr%D-8iJiUvN=!J>Xtm+FXj@e%@fLNz+Re&G_1?1>13s}HM;VYTf;@h%iW5uL~$ z-Ma=;!=H3!D5=zlZgXtEP7|?lAZ1b`dd;0}J5Bt>=*;Hd%k(n)U;FtVZrwh`a@mRb z;6Uy5@#4?Q=Svg}!Yxe&{BI2{?TxP`P*7DxbW(auieI%~a7qLP$-|?lg?EkiE0wlU zF_0Jik#2pl`Zpl~?~?dJjnu;Vla98_G_tF!r&!o{P0=sM)`wsH)&&sNU(e?(9~I;_lM%gUjm`3O`Px(AQOGdGuXHbt!Td^{%US zr>6>{V3jtjw>|q~k)DS>fhzwsj~*-4KaYRs)*;3fA49u%FZ82Cv2pbw$KM|upLSJe zu+8-pUsW4Z67Wi^i$LkZMsO-Sg_%GviEQZv63(tQ{&^Yt7e$UfAs$|VGh$*$ z^oJ(dY?2ak(Wf80+W!jk4?4h9korD-&4nMYWVX=pz!UknU$py2wPzRsFUYpgKry_X z*_k>f(G?^Pzp<#GdiC?A&?O4`^a`?$$1}73mDA{ingJR!6qdo7-;Ob538a@)MXFy* z6^p!{%q<;sgI^kDOgVwR8|4vM(!j_f42Z6Gl=}AiTm$0)kz+8*$mr{(Zyt)ngm(}o zOhQrVt3ux!+~8T&$|qSBG@+;=lB6N@7^_s3L=kc3C}@xmJ0v*29_G|&0Md>l*Jm+a zP zGJPXO9FW7%sq_V|uPa<%-t;GSw>R^ZxF`OD3|F{auU~;o^YQ+;jG$G2Ww$Gn$k?UY z=ma3^nj3RE1^;+A2cP)>K)yd;;f-kEsZ(@xPPy)h0iu2OYHdIRCyPGd%$@pHQ%sid z=RD87aQ`P?L@$fO=MJxh48F64%K!#Evp-!*Wzx7kCmx(f7(yQaITyXCL|SYW{KX9p z`JRhi8y8sd-P8X~#=u*%E=1KxYxhcN$LvXyMCX$!DF#BNZ%>tuA$hNSzU7)?HT}CN zbNbu)UoA{>+@uLPlJn@{nK?HW-c~Q5U(VH^NE{iM%)y<7+g@ux>Q#?P@P9o?@S?f3 z>)E&zgpQu8(;XTn%v3>4U;8ZOmh5FX$xoko$=5^j{>hw~P9%gM536WyoqG0x{j^8n zv2e@-r&7tKlNO1sJKU8ev8u)_|G%;M3?apYg0e0Va^Y(u&L~gp5r|#E*?=V;mJO2s zpgWxmjuX!r9D)*#tmji-AYs7UI&Wa@$qRVivrOQXTjYK0Ody!2>X^tGFPlSP7(h&x~7ntH|X@PH+cZd z=hjJ4=tvjvo`7sv5J11hZQh`rqrXBIbfh@4<`78l|sSlBOJ@I^yYP~O6 zIt0ctQeZ}5@Ej2HlNgE8C-%aDHMX-4k>uUtEqz(glKiB=ek53P(bh=SM@0>&fn`?7 z|8R2Kg94rgTjT#h?<4=vJAlhb^e!TcgNK z12q5aNCjuvDHvZx>uI1-xFP9!U=7o&=sET7M0%)_W$X)4fZ-3Bsd2Uc7pL>&hB3(@ z{y#XqUo`Q2=)d|spp*KgX8QkH?n7>hJ+R5VX%kQAarQ5< z%+BTGD`$*2oK#tm^A*7KMezJlBC7auyY`XP9pxFn6*RO(;Pz&272Ftj0P(<3|3}(M zFVv+I7^10iWvIbzdg1eGo}$Z4Fx?wF*f)LqI(iNt?T6AR(mjJ+{@?9=v>Yr5H_~mO zZK+tv1`aoanOOCSzmEvw~Sy zzW;TY1h>Hy@Vm&V?<;3R1yEf}?v2b<_kj{cTRd zB^KeyLDz}y@Pcr)h^wf;J^u$AOaQl!NFQc=7Px$N@i}}KXp?M^IG)Cz`qrZ79F$i2 zS2{sLBe2HYXVVCgPgy1*;4_$8+A$B#jOT`q#VCFr|L=Mkpc4NX9|GkgTy3ZTdNC5e zzuAjkHuKnA+RL%=hzifW=!%fuUnqc3+>0KY{sb>qq|c=#o9Q z1Wr(luJqn-jpSH_K9}P<3Mh_Bu)xRfP-LtKoFJ1 zNZ|1v`8=wU#t6QO8=@`6M~@L(DS1D%u;VV&DW&HHwx3mb)7a5=zcb}{=(T0V!MDg1 z=<9E$aGjwTACH4Y8Gq4|NGGTZmovJ^(?6qH?oU-eM=(lGlIoa)BHD32rE+6At(&Lb(D1JHk%_$boQn$AF za|NnH71+3O+bV&Szx{Lq#(~X!Jr`TY_~=cw1i(6S=};_p0C4qVpFH4%^Yh~7$1ADS z!QjB{P#H{?L)XR&m-yTA9u)L=Z#^xLeWbN=;LVdnbnJL<==qpZKzrx4XdH{%eYiIC zciZ^NWzV}yP<6BR%y0Ke>^m>Iff|A+aM&tUid!VaJT8_)3rNbm!t`r1ZP3W>&3ON%qOPl|5h8fB2m?xwA%hEYzeUjRb9+sl3`YzT$W^bfvu! zhDvB~W&Ag{@Ls@$QyK~CxMej^wmYx1-M+i|Q1Wi!8Nb<;1pk`8oiGW3P~~vRb6e9f z+MLz*I-(T*Uu7O!%1)*Mw+L%N8dZtB&Q1lzcg?S})6P9z&eKCh`(Z^qc{ExIK?W=@ zcvY2dPBUx zHl;*Iw{JLC(5Q*E+UMQl2nmqV!DzoRDYUnJdI(v72`w=%s9$V}W_o!|Ns=b9UcX^i z^SkI%oEmjnER`LiUhT~Px|_43eXGOXc-d+nz+HbNp9VDd7*+{LWslKd50!Tz8PA+; zdw)MTEEN?%wxg1DPbFpDj~xm)x!vM|G2+ail4OpjEJZZKtA%8HY#6uym&9%<)ou=# zn0D3}0^UT6C^5lg7xPv{Ms=0(BI8A$Ezand3bJzM-aE{PtBooPHF6t zTw@YBkT7q%_;sM!-hu*ZkcRqoQ7k7K`*4puslAngm=r%Ml!?~e&l34-LBO4kdx}wrz3cJFkO-Z^OH`z}gKtegdUi^}3W^7_9x4%iELr$BWW7!U zuy(ybuOXHrwkFq#N=d$9!3AC0E&KC`p((xpaC^ti0Ze5nkuOeY_Dh>(ZO!Pz`5gk5 zkJXavn`<>y=rFg)KleH3|CQ9tR{XX3COLb6DvG#HH93}9cOzUvXQSi3=2w0sH~-1@ z`!@HhWi0c+lPN2vNbAq$1lFIc(WW1PXdmUFwU4HnSl-8i(=yoX;5dLpFWOhkiKR%w z&Y5udLG~INlvFbSDEf-Uy3_4Vjbaj0DE{&bMz}{zg!ZmCs&Wq!u}@F(y^-Nsra2qc z>=wvQoc3$kuS-9C#+s|L)uG<(+_F^*!qLZylT1rDpDrKk_Y$W2I*FiyFd>gRa}e+G zV?4G`rcLB1;?^>@PkNEMrRD|a9|{8KT{X`AY{_=GId9wJ_Uk(1UFZK0``5)b_O|Of zh40n$|I656RlXJBEVDam6Vt4j%H-6#d>EV!P(dSk$gV>tXE>%>7F@7pnia))PXs63 z27mcAn}pnw(e6OY;r*$vA6gGLYa*}5EzkBIcf9BJY|L>K=6m}YI2r#eK5EcVX8qyK zPxOCGt$qR1qqC@b@{$ZW?{7-$M86^g<2=8S7iR!+-%*%O5cnMYSSD4Ml^FN6u6Xq0 zZ@Ogzcho`J|DVVHwQ-(FWdDDZ9gSW5QH~+rcr2c%CtGBj{&#|Q{c1Firy(EEVMmdF zLuks6)swNUgRqv92Nk!;&^?$!)jzMu*$F2 ze*Nlf7)N$}J*&?YHDE`M>y@1^k!&Go|=T=Ae9Xhu77l@4dKgt89f zWwe-0fVDFm#1=4k+UfvoA}2XrCG4zD&#wnu`nm)*k){o}ayE*9yEg&u4t*W>``8{% z{2_qCPDZbFv5f#NQ3M5SRSSyDAcT))DEPkzUhuO1@R?juX3@-kTm31{*9IaYC7~YN zcQL;K3pN}qUDV&!CwV){=uQU4PaEMsvBu))8#H zSh)=>o}eui{s6R-ivI`NzXQ+?|5ymtSSj2ptNHS*q&hl)+5#v*-=Xe__doa?3sauc zf}IZR>kqGcPhg9a5&(_^F#SJv{uFSVH8LbSF9>=;cTgS?>>pr6))_6iwkrqxoLv&* zhZntxO-qlbz}U%-AJ1i54 z*^~{Sx_Y|J*?jl)S{e?@hj7)Jcf?qW;tej6D5%aGDkB*d^}IWBbclC!(kKYLg~)jr zv_$zGquiQsUPA19H6{5QQBx}%qaVZwl=x_U&bMUMCJ&6Zi4hp_(UU`W7d3v=33}n2 zpEn8w8Q-3j=VCLbesDNxVrMLNl!=D%C z&+jG;p886=Q6dNl&Y$_y0d!8TfsPAF`5rvFPJkrqul|vBL^rxrJ{`_K^*^%y4m;CV ziXy4BV_j*@CJz8}>HCMJvZJ{-i07zA%}CTf@ej2dpy(k{`;G2@s2!|*k*Ix9L5c!N z-p!v`Xz~HyQE~sh$8^9EU0cB?|M?j@qyJtxE!Oy^wvbOg=@HoGLW(Cy5$_((SZ))b zJ}36iW3{Y#s4KqCmp=TDuh+)wrgit@{amiF2>Pj@qDF9NN4vu-_+E|yix@Yd# zn;-H}DhFR%QYv+oVCksNnhE0p8d6LF;$fZjBMj*E|ALBe+T2v>Ii+lfO& zeXwy2&n+YP0P0XSI@q9Jj`BU=Wi?BvOi)9es7+fvHGdYQ*$!y?-QVZm8d;R$&zhXR zJY>;c{M)bYbrC7Z`_5(o@3%9ANaD;qNl-rIX~b-$Cyf9W%(LMopz@4&85hK}Xc?$I zVhuC>5B5pE`_F3V_XWumXSRG&C+e`p9AgX*2NK}&UBa~?wxn|Cc{-Ex-JkIybUQpb z^B?(4*_JcNJt8rx{qV+Qs??S|Lu<#9zw*PUT3B~^nHWyRsmZ*zSjH2&gA zjyVO#<+_F#PKdCTGK&s(cCzbExlw7sK589+!yBpLIfhvK! zE27LpIbcSuRDG~i&r;wgq3F4;?RMxOubt{?trJ+w1mSG=`reix=f5kNVuhDJ6RBb! z1_Da$4Va{7C@8c!jU7DQ-X{v9!777ginRf*e_~k_ivo2=(GxBntWek5dhrMqafwpp zsGMYw6JP;!*8Ujzngw6^l?81UaWv}(WC@3aVppm%gwb>kQNtEsoOLnT7A2q#|E{m< zg2ls6sEH%ru*9Nh)nUZ|VvqRR&5=kDRzyVa&=3@vW2X!=pfGqt&kPLe!x*r(V9%IN zKPL#H>2RT1Ex?%TT;!SkhN(~yCFz92WpLRZFVoPJw1QsU7;7^lTO)_`(T}ZDW?RMV z&LB^a7N@;~+70K+SwgK#CA=py@~chkWBLZMl{Wz4a0WVlZyMc>7|i64qQi>Wk5Q?Y zh>y0oOPRTj>O_y(m)Co^+@1Jg>^MOvoJ2}JeU>uKp`F%4m)rrIE>wUzB|4F!+LZkQ zVLQSxLxA27X#UG;Y~x?=6j7x5wRtOvjqOwJKQEP(lAooA{N|-EJJ3e-PQb_BCJ7Dd zGgUlFgH7T*$qyjvdrrKqmb$1=IWh|ncOv^{} zK~Ce76a#LO17+H=H4hG2h3)K(1}3=%?hHL|@DI*~kfJsX5bJO79oYnTHopx_;tkZs zIb6`F6a9G+9SbE)c>8q5RxBjjt)#D?^Zf&Qox;O>g~r{$uUerfp`wLw$!{`-kEd?a zp*Rm1*z<~}>aPR8a$>#c%-ZA5@n{w9j5p{*;Vb5VdpuS4VB9C+lzhosN?cMjxy)V_ zTLCG%viqE^o<6DUT^J!ytNvlHkdy+#ndsuJ?4di$p(BJ94pYwimb1Q?;u)?Ji^{O2 zxj28cN%;7cBKsptCY-I5oQF9nLQEvFsP3YCFxF48>x((i@1Q$mauQxyH73d(RNONa z!cyG}Gh%LyeV7B3<^3oKSe8|zmQiaRXTS^vIv;y!Zvub*j2`s+@GMF#Y}o4Q=qcv; z4FYJXrBmIq4*JbIf^1Bo@2VHk=e3=ZmnlrJJ#K+|0RVetip6JgWaCHWh!dzky(y=; z-Nu@>bZ0f9oBXgQkvE0^6Pt*FN;yzE;&DS84}1HI6Z6oxu)H3Hs?59=6MJ{P%P|f* ztUGJ3Atz`3?wrJqv_~3`aXe2k_>JE^kN`gEq(szsJ6~F={T6uMDfvKRtK5?`O1$aH zDd=&X5nwOv+RE=&O%$rzN!5*5X|hI@Dk0ngfZ}Vb1d!>G5P*E%YJnDquj%@#6q=_x zAumWV2(9&UD2Wx$Q8{xS$|LB5I9m6jTwc1uR!VXdZ~*8RVt)4eLdkhbmjN$~K48*5 zQ7sx-DN61E0`EBe*GL1u49JJ?Q~UV)Jl}H0Yg=bz#J!bXcMXB)tcx{LIxTt_7dRdp z^4Px>d_vh$Tn;Ek)ChNf@Z~uUCM!SlD!pZpK&paR)pq-7J)ZT{Hnv8g>QBNP526Fy ztdLcV7jZ1llV5KRt{fq~8ekeur(ZJKmywb6C1D$DS;Dy;%Sg9`lBDdlSKNt6p$k@0 zo1G62OEvy^$%sL(3{g_oWO_4{nYcIY~5ynZ9lMkSm%ywe#+mE@bxn zlnsm@&sHXr!GYg{$(#eYZ1JiZSm3k-4g8diuw<1IHgMoLmW8Gy0N%T0_o;B6ag8BwLykoxdQRYnVQx7XkBA{RvKjs=$6XRUqX0N*3iKEfc>cpvq9^yXT)ceJkjj~g@6 z9xOcLHp4bX{y6~c&6GIKdDDDj-1mPkWKKB~KGhoa^27{2GF~S4 zeA4b+pT}euly8g{>@EMXqw-~;lvwpSTL==j@#1`L^mUGb*zg988_VP;oBm?SA&U6Q zixSLX8grlMz`69I4L`#iE#!j{-yqQuv1nZ$e<*qwJb-U!Z9Y)ic2v#=M?OD*kBs5! zQh&^I5E&ZprjX6`=T6!5`N=+vGKk!e-L!WCOtE=HT5}j#Hv5XRT}5QBwCipe!~~i9 zE3=8VqofEss@C>l3{=`1x<~Kb`(CfycQ44P#n80ugh?HNBXAF>H()G5kNhEjn!ZpT zJ>YUZ$O*sq>uyu^UJonYYJ_N<#B^8Oa+uuZeO$jw9+_$gkC0BI6k%$J^r%ZUhQUCt z1H1FvKgX>g#_jv9ZZ*VN2-awu*UjM16xYD>{1_4s%x!;F(I*Hj-AZ59%uyk}<(V3Y zFvoof)?=2w?Reb*QQA;r7Qb!7|k##FSl@i$``G1?ejDo+Qt0sQ^|qO z==O8)r;nn((Z%a=FGQ9Mw7=LFy|9yW_0Jr#@nd`2lotGHf4=;|%pn2J7EG~Pc%@bB z!cori_U!O+wV=hGuLeN($HF>|rSR;MM8+e$V(maw}e#sY@$yApv`@(VE) z;e~+KjWf=RM9#|HXXL+vUB>z@EW@RvbbQqYYMLa?o;c;!0wk{d>c$A;yUniW5Qrz1 zD;8P?o&Jd8x2O&7+Q5g?%(&+jk`x{BUX608L7A7-pspi~?&kU^b}-@$g??kx9%mP4z~n0$^`2!kUzu z!EREAp;NmJQyO8lP0!#o`2-}XW-wlAJeOaserB@dCxByEsojW`##G69UIOO;L`*-o z8`fCZPh`ubLv{xR5m3?lFeCMqc}>K!Ef>jiR82UsoLigIW~k;KrFnneFd>nwJK$`0TSdZ zTjpe&TMzlnJOo7EjcWhg0;rJJGznCS%fkkRw7{uh3s+6~(MS8jF5daIX%;4Poq|+(6(-~ z!JFq1F}4;8-!>J6)ur%*N!gS1yC6;VNNlqkM>tZhEgE{|h~J&SxuIZ5uZHODXBClG zN%@K33u2e!!g~tq`YNu~UukpiIffxaeqisPgRh(Abf|XxIu@4m0X9D(`Ayz|Sb6>$ z*G0txAbdi1u^RluI!Me2>93r-qM z?B2b91a7bQrBZ$tumsV`l?X-uZ%4&5oMkHb!}XA35`4fuMRg!um)H3Rg6y|lt^aE{ z7|&n5AU`4YZ%p18@mKyIAp|LG;{DSEsU_tJ8j5U|^j!n_Rceq>k~{p9jTv_4@4JgU z&~pzzDx9L5bKr#1gP}%_lggG5y4X0L^1{Y+^aB+T_iixKg)bQT@>2Z5q6hy=vyQd^ zm5AK%e}k2#?11H!PdQz?4JUu3`vTlpMDPC^gTVKci5T_KaWKjbxK=>GbCeb+v%ZCc zFnFvl&Cp64GxSUuzHb^53lGR%j8-}b6()~U0jD)q=)kZF{t9rP@6MIZwFtDDt$E- z6Je;^kPJQ_|GPFv;LTo{l*PBROPe7Nru~{*x?e`p<>v&Z2BZ7Ct}`oZv-rL+*svyn zwF0rQ;nq{j$$bfdlr}rO?2ikaos`K}em4BRGyj6%A7;zQQtLFNsGBtOqmXb8P^$AZ zmCE|gP!mg+G21@lYbaIrouS32x60huB+gad0*k-`&0Na!_s{iKig?fjPJaR~>*v8ZqLjC>alC6P z3KTNDw35Zn;^;QclI*JAtcaox*tHi}L(QIGhOV5?(01%PcR@ekpOkTJ?!i{{%7-812lE<J;*U z2G)^$$vf&Rq@;@1@+s5_R8)ZwEh7qb+RfMTHje@1pGE(KQ_AC zOr44GZ-bZiuiuTmC;O|Nxz6Sv-qH;wv)_psjHodx?bbw@F@~@ZYTC-{x|K7cj57b| zu%$-{wkL=%tNnUbd^QiicKP|cRkx{)6}~e+F?mO)*8t@dL~iRzRl;_4&U@sSFRuXb3EK3 zom2_!AXCx!ozhNXPeM?^gn#eiCrimoFQ@OEyz4(pc2 zch%eSqZYtYJ@Luver#Kay+0~{C~AX;$CoyU&T*iTwnEyeHn8IsEuJ9T;;~>zin{cM z9=h4_9K5qxY@rw~*TIur{;vdt7p=9ONKyHVvQ8E58U5JzA0Y@J0u)|Eh%vlX^wrtY z^GH0(s2t5KO0Q^v2K7K#FkUl>*u-~-v$=?JIy33;rKoICkzV6$nr&Hw^p&4)II0gw zhE_ypo{wXNU8!-1AXb6Ch_tYFHS`jZPVpQ5qI z0qXPtHI{bbvuM5}3`-gyXAY?SXe-kmJZ8gl{5XEwJ?PLb0;D;=iC$FZGyIHvE- zIq;%++g6NjQRI5$pPS8#o2JsUvx@SLPQiOU$lo@v@|3$n`6$eI6HkSgHY~17ra8m2 zSfy%iuL21$-A$xS!&YA;YGd9j82se^U!ePtG`nPsYdJU>=0$5FWAVK(h3vQSSAVwO zfdqpf@;&1>wwBc*3q%+zESYuc?X-D+)4TLMG2!PG6Xpd2Y9)Vtc&=C7`~L=(+mSr2 zloPk-|7*JW(3iB$E*@V%!buxd8tM>ZnCbu?CITFe2ptq*1-|Qy6@&zR5w$kj{3eNS zd!u7~Bs=WY`i6+2iFM^-Xw<6VC7Nc&%v>G+ewKRB8?9acVRaP7`=(#+>;C5Wc(lyD zfGs^^VmgLscSfxI?j|cJX|0Q_y;JWQySC}UDk#aSi>wP^5mSiD<52yTF4q_X@8}39 ze!*3?%lpj|KbF7b=H?Vi1;q%*NyXVOi`@?}HFc)Ymwf~r)jI+_Wl29{U@*uUCiPdH z1qRam@co*0B0m|rc%A9*JeZ(1#<9j7KZfl)#zDQYt4IPLAYp%hk`tJsP!MiUd&bqF z{4i|s`cEi+vN#>adO0&`QC@Ye7sdKDZ{8Ir$3)E;bQb?iEN{moAmuMxiFGkVwka&_SnzMd6ZC)T>_O1k86Cgb{; z|4mGp=tMCny|d_j=|digAU57}C3Sds`un5OPEM%y3yuNkk9Vs|OE;cUtfL;(D+|Wz z<*G(+eg`LVZE=dSj~*Rx8=kXqquk_QCE3yqP{S0xTMowa*p1?vYUitV^8ebp4X}W$ z`UHzs_Th77`F9{?MMMs)loS+CSpg3 zx0@f^k(~PO4-^}j_V#IB*82hpM@GMGB%E*fF{ZfsrE+gk1T((h?`9HTc~xmxw~3U- z!)#|kfnT1oOMG={7CStb^&yJi;`TKH5}}k!5K>%(d(Z6;HnbGqQk+b#2qm_2?61rW zyaz|a+3g^KTX^x}kA>yk1GE;dtW5Dum3Ol%rknvNjQLp43CwFm-}DQogQn^-|v|9xS8O6+geEim2djRd~6^5*%c+GNsxM zyHGMOA(^!;H7l?^HTX%Ir-;6IN?Lj}wL{RVVcNc){G+${lcX3XvA2**_SCF>&_GcG zQj{?KYY@<9|9(JKY=@C#Rl_qILSl>TAjQ>4>ph1V8NRQAaAw!%PV+r+OWycV<|Rrj z_Edpv-o75WkR<9J)nw&K!5j4_-=bc6Xg}Y&t zONoY0q1v0y1g$Vr5%!VGbloJZK(>wBoGTHQFNrb{|3oH3GDAt-_*f(7k-;Df^9@h6EWOhGMRvLZ{4x zv)?9g&rdW|?xyO^Vk*}l#eEFo;dRO2$x{72>VNdYFna)=PvOn+>i$&0S3CDmF8yLx zZRFM2#0gn-e7ICsko`?De}Mv}mfva3URrwb(>_R+52u6|*fcX**epRr1K~`s@1t}> zMuF3iEb7^31xy0^0g?w&@!&7cjb}i~ zs9M>m5yfhA8BAjDPgzNn{7FqfijQveuC3tk-M@;8<}6nZZMV-a65a{~U}d5%wiE)=^@HPC@0@<)C*-Kb2vJ9y^d#muG0y>&D# zP;4Y+S5Z=5jkFc>h{i_-x~C>(Yg>(Z?dZ~Yc!x012=0hQRtQ5q#$SKJ(h_A?>y{VK z4g=qzN0c5892`LD7~!-a^RHY;NAe)D9LQM!RO~EK|5WyJC8TZkyMlPOrr%j21s=9Rn8R_21?g8F+Q+&J3Y&12dWC?RN#pK5o*8Z{ zjk!!JHK|@@Z`?UaXzRz1w1|)D^N$ArxVB~P% zo$yuF5=ehg>&a0!NOF1m^9Z~%~WiQ!mNXQ?n}9O*rP*_ zLZ=y(EF%2f;!hv=y%z67&b7rc1gE!zJA15g`T2*@hU#GSeUcpT{Qq)l{;M%lm_*-Gx%nwZ1$IH;PYrQfZmLpfj$q#X;dN zp_|K}PH_s4n-eMNn|j&MR=)@9f&4q$|<^+GAk&S`z)bOlY!WNNVtTPY> zkV91eNWVTO^-@_Eun;(R>TS`lZ?#+CW~DVnX8PRnHVN(DTFg-J5^q+ir;6#amlg*G zD_C~PC$x$h9H}4A4yLA&#i9zx9PL>&i-B6B^@Ne+y?2fyU&TKc0cJfO8CO_8FTSRx z=>m?j%YXL3?fs|10?>cTY0b{#=(%3}IB7(u0%GxpD@}ERWP9hh z^cme9G9EscBX^zp@=eqkDh_)bPrXCb?YmpQZ#;J>XuQ@h7%YfYiYxCy!@II18B*S> zX<5I_<>ALzImb;28c>kwRsI!027Fm|i8;~Zqb0}MZuEt*ds9BR0Z?D{HTn(IU)qe4 z6FXkfwO9RDgzjOm2R!M-4orh`Djf-Mxa5kzPq2Sl+C`f{NTA8E&pDDPA9%dAo1rB% z3Lol0FU@X`FPh$lzM{88h>N>4U9CQ%`wQJW%j7!g9@94PS-XD|oB+FNv%wWVsndB# z`)u?UDI-$5ZY5P%z6V1-{iPMX9@93RA?Zp{*;)&B?ZuYU-78;2D|3TWi^nXP+Z1=y z@&$3GDR-l@DgJH0I?XHYK<<8|4Sh!6;5g1rxk2>f^yVX{$3D7yj~}7?xWSplU8s&$ zr=I>b*ej<({)1Ya)z#CArK*6BOxJ6g6`C8qe|sUgv`QqbdN;3qDt=b;6Qq@=(OWhtxn#A-wal*z&@WcU4Cho_t7>bp zm^Olf9(&cHTz8=Ud>h_fN8lr8B3sG*kw0{9ZHYW`ksE0;fNCphof<_qx*Dcs0FR^GyB>0ZX zIvo4KB10#Ae3Sz22;$jMMW3^wJ;@Y2deb3f9u`6pr)7+{Fx)`2nZ!X3V`MW0*M>05 zRYEv&Kx*+xoX%%Vk=fVEA5781b|*FEo)oG1r$>}%aTux>ptBD!wkqYtejp)}j<;GI z38S5HK&lSS^igBBvtBR_lwhA1AR4|Sv{gBtlzAt#HFVPdFU;9oG#luvHSB05e+qRwn)<#-Sr zU4s%g0I~2#l>#fIbT+s00UNAfQZOg&i06VvbV&aAW(m=1{Z&L6)}YT*9BXBmYIt%D z;PK`6{OuJ!PrS}8Mv`&^_lF1^PY7^)F_KCZI?lGFT77>jfArnJY$6E9Cj%TGuT7!@ za6B{tZP-jL>mOVXb{zu1nA~F2^P_}n6mJuaN{7Y!0?2fQ#s`L%W(I29L1WERd-<;#rMoTq24LvHI%an>bQ1T|Z1!O7d&|0+uRp&) zxDZ)2`QjGxxwD!_4P7@A$f_*zokSAnna15BCR>k&XngDqjbD3xNS6$f$YJ@{s?7@N zR6Rw;zk|j2=+mi&B26J2XDQ1(8?Hat?HT|tCGOwwXDSC~Jz(=h%*{G5I6-bZVDn|+ zMOyi1R<}CiWFP)a)gO#M#)=PzYEgbW<;h!^HPL|Yb9w$az8b+>H7u{6B9wX1`#0K^;lsSW4o;eZ>}06sj^ZUTv(i4>gS~s;%f3jlTccv8n+DnlPO|Fb z*jef1L9k831WBXUrs9ELFT~peOLa_W0psTzyg$5M*t=);4(VlYK*fW#bChWh4bo<- zyM}UKRGdt_DTa5!W`N)I0Df1p4^2o|=sOW@RUaMh9Le#H0DEGeHlZ_OwtQt$ac}ql z%#}jW_yz=xpGW@MQc=pL5Rt4D$RC0|JhG(ex6Z)mjL?W81>V z;+1Ar{vC|OmnPl}Ztuds#okpH+jdSrlZY-5>E2S7*BB>!Q!O=iw~|~S-)ZNkpP_ozCT)S5+@>-{b0=*>1h^FFZh zg#J*Lp5iilhLp{%5qv)5=fp(JuA55^L7RTbsP&d(%np`q?UxvXyl8szOWJhusU9Z9{RBc0OkQAH{-ttF#9Y(_SC(Z6)BhpJx4_f&@uEf+y_+< zKXSpr+2=oG;01$$oKWOf_W9%%dQ}$8O{=QlpWs)IsU$0|keN^bjRXMNUoMh98XP|*r&O}6U1I*@|d>wutiNbDQKT#{K(w*hr+&Q*s zf@Btd4V(ushy6GEY2CUstj3_KCPFGK_leL77AU1}k5gkZ!L|Xro6=>B7*s&kPwupY4H3GWOSYl zA1G*nq9YHboG=?QQQPy}LgwI4Ol!wO*I)n6q>h>Y^2t1_vDOx9V9);aZmaX{;WC3R zcYq;*ukGFRZJclEsj5hs$o@aj(DM4~*GW9x<{sU`6ri2N`t}fQUa^?tZt^!IvAY4@ zjysfd`s!-DCp=PcIKo+9eG~Xr7qTzb868_13K|h&bI|(58%bY*aC0~b5_AV|T$btO& zTylF1v9r;4DXw{$?N>dv@gi>k6c>?Aam)9iY`7h?^@7KeEAaH3te+vRCc1T3CZ)r_+#_6b1wo)r-i zHAoTM@%?)vll*Cv;T|S9AU}Reez$#WY0ktk)wMda{_0zXJ6ImyTb(Vpc+fjDrY_so z^={4GRp>OF0~GwMaL)$A*M#xM6@`B)&!ySllIo&}OBacuh-)&(Vtk{dCSmU`?xJg} zgb5saI+T@Y6MSF6a)AJ(=cDSHV|D^Ne!p-RB9f8$M%8uNf>x#7Twd*TU>J2rF&D0n zVYVuaIrZW_hX%2_$eoL;9CFlR@T$PV%g@3^J73GuhL@DJ6;1>3E)qYx37XwD?8>b8 zxU-CNI_~!-j}@7In;+~|827WtmYs_cgxg#3SE8D4x1M(FTt?AnqyX&whXb6r?Smf? z+K?1q6(}GaD7^N8O~XV{L^ANPz&%XL=@bP@Xh2mP=Bj ztweoz?rIteu=n#Q&O+^F9J<){!UWO4IPE(cM_ukOM!Y_Upo%Fbk6F{MCxtq6u+qDr>8jKf0E3H{R! z@nd^Z4dqn&Rc_$qAP9W)(IB)FkUgKnZ4U4;G!gs)B#+s-2*27ZnFrT^SiP*JHMNWc z{ma`+QfeTxzSk0G=&M7%8H-WlE9^-a1l`?VzSUQ<#cqb7TPOVy((GmEdW2H|)8~SQ zhRRR*duVi+!vJIDF2H}#T+TN$_TYnU7-H1cS&4hghCU43#0imFnbh%bFCI&h)Mhbx zGe~T6FU!TQ+OjKLhl5=DgXh-55EPdqVW&lk!AbsMxS5>H(CRXd17hmO$OJeo_xHM& zKcz7kc1LO7IZ2xuGWg3BHi3ieMlX_CMcYlS6%3taloMG`7^8Ex+9%?>N;b{l4QSF` zgg!I0wO0C<5Gr+W!bu)ywGWJkUIh?7UloWOFy-pPxD`$xMPa7tcV%&MIN^o0Bqc{J z+*@QG%e94gT`}!@ssaadraWC9Z-;~Pnb>c|YX_a&kMxGo%etI}5S%9f`}Y=(NtZX^ zdq`#dV4}^>hMg7pH3*ik@rB(Me}t&W_@b`KRra?(BSsk1-IPh$KaL;Y>!=%{)DMGR zweB4Ik3Lrx=s6&hz9WzVfc-dgZu`Il=xEW5m2qXBY=SGWat9nOwT3uiM{(PE`di^> z1qaC^J*2LW!d_OJkTcpBs@_Q-cyP5a)%aw)yiCmgjYc8qq^G%Z|B0Hdli#fvK+WjG z|9s=L0XOI%kbab`*@bIsq2rU*zbIbbCRqU7)($G5ePH!P)|2t*p)2(Gba9 zrN51w($wfH@qXQ|rYHcR19N_b*Ca|JOr8e1&9pDv3bdsTKi@+iE$kuAmW@Zm(Q}0Z z^iEzn#oR<1OKxmV3m(U3SgGOL)|Jue?t-%s&+!I+Bu5YA_)_8cp28o%l+WR7>!A}G z@9A4j@)kGacfbGoY^>o$>DB_0crL$U+;)Mge)ThI%#|cD#d`(n`ZZlBgq#zZ1V(ge zX_#(iHz>Y+Iy!U({Q9c{D1Pdy`^VqE`z`avvs%)c7ixdrF|G24NyBpeIc|5hITLE` z0zQ8a-8~ojA(e&q;cH zoX0WofGXfyinRPSQ9{A|MIrOwi__9I!56>hF-{)h{>9aNC)aXSLnQ&b_l+1cpJOrN zQkKI0!Hy^4l5BB9GqIM72vcM?xH?&{xhv-H0i(4jQ`2VMM4|)Wl6;64?E_A z-7Qi)O%d}@A4qARLo($VoI>H}k}Q(jE_LP_5F*}GH0{GHe_Zmw|HHS#7e&~yg4b6fGO>nL=M^qkV z|IVLFAu}A3xpTu8P$vF7b!Dkqr}sLAts38oHK;+K*#hM)=t**>KHo9jvEiPq*bZTA zwcRKMs3)5Ji!X>V+XPd&qc3qWsq1bgHUlN=PI_MSKJ-KL}@nntiLk5JNe}y`z zE-3O!ml}gkXig6S>?uV~Onk`u_uOHOrR41sn|%||Y#Q)mXdR;PX(AEt0HH5Yw?t5Q zf^NGlWP=+-f9C21Y@V>dn=g8? z$AnTt<($t+-_14LuC6wbVV6HlLPaN_cR4(yKLd)q1~n^Vc=X8~qIF9;DOn<5$nO^X z@pzm)+a0Zn-ikkn(LO~MG6 zDNIr8g{j%)16v=*U8f#iB>3rtfd20GeJ4Dg*;IwN6_zOmPAfK~CZoT~V*^ul4e!om zok9sk)RK128;wr{bH7o~EV{om2pXY$_dAwj{D*~Ib8%^#;Sk2R>+lRUiSF~7<~dk} zKQE4&jYrK;?XhFhZ;re7W{h9X*A0RZ$r^`2D?$11r_<+I|L}TcyoFlsnuvV|y1?%y zScFn8uDZ>#-(dqL%^emY6quh=cSV20dJn~@pUM?gMtC+4P8)@GE#jw}MZIu?2HtBD z&5M<~Fv=O7QaCRD7VkZ24G03Z=k#3zb3vIN}0PU^Jqnmr5OU!^Q6xNXQkTGZE*h>GqbpEXIlrQUl%oSzfpB1gK4pKup6w}EI-^Z zp@!#yWeqm{hqFMTU$&&Z?y49|TI*A!K!5)fQ}U0JS>D25zY4V=Cdv=@WGTPBWxvKS z%flrQYU(MF_|8D)kOHU5(hS&wHIIEF6WU@_;eI8c@l}#YQuN;2;F2-v39ifd@4s|L zNU*8pdC=va(7E*yRzhiq->HjKH0sShYJ-COZHJGm7sf43_{FF4JcY&?Ftv@1O0{LL z`wN}?Mjon3OaaGJOi90|S_d{*ont zhZMg_4*l>V2E#>;F)V@)O|9hY-HhwR5r)K=_RWINKRVsV{2Msy8yYCrxx@ zvYxJxtX;+l-Z_OBy;(QiOTw2H`X>;iPZa4q*T2Rc1BgBxmZ}L5Jr{)NNlw-k?pQm2oP1+RB|(Im3v$+j ziOnR_h*%3fL$qDhgsMaGXj!zuf`Jxqbw1pnU5$lBN0Wm!$|jfbQ-v}TDtwLFFonNr z?&L2@12yw1?1sgL`MT+PAk)pJjoj?(9cMF!WmKb)y31 zxb=d7@{=8X$rd5(BaNVmXdmGFC8OJ9$u!d&j=GVpLhN2tf7d#_&Kt-9D?T z5DtjHch5;5ij_F>kf8-1izGebCd0F5qZwB1ez7h+%lw)L)CZ8E9Mg3u0;~^`>fc-4 z^AQ*^$$Q{fs6QR{_BneFeLTeNHP}1UL?u$+ytC#@^Pq2dX)z*U*9^h=?-!3=c_fIr zoN~2DUMMHdkh{49e|V+1@^>;U^6B?k-mbyvyZ)xmugCGRX@UhM=ekLqh~FkCATRxv zupw~TG6#9}3AMyF$Z9t{{?RDF^|qE^o&L$PL@L1b*JYJafVh!R9Axg)@bl6uG*omz zeEwm*04N2(2B|XJY=E@AvWHjNM1+eHOf$HpaG^_nEG&2!9GU=IbuD^jNkKP|o8`%@ z{4Ha%93}o+Kj7lcgXQ-ub^3_wG*cm+e#tT7N`wk$YHkovCWn;`=F3cRim*SFEZ<4{ zv8Gfvt?QIAB))cGIikk`B7aBZ32ktKna_A6!75Pb0k9uQ*Q20dfw5aJmGx8x*J$cc z53K3~oBq?v4&iXPwGVXmh?Yy|O1^`&dL3JNM_We&7qmse#0^G~2 zXWlFZT7O-ElL{n!c@IDEQ_Dwwio}OHP77W57uQQe9Z)Kr^AC;xS_RRT#4o$FL3^xO zfC2BG*U5X{7ygyT24f>by?asD?{R;>+Tv0UlvMjY1$18l_udqq#T1G1y0%pl0lP{- zwZP>IM`USV>w;TKjgmx8JzFMU*!xl6KfhHw}r`an~ z%Eu9U9LlU!FJ5(K`AaWdnbbv>P^!qm@6|Xto>rjjwqt?;UY-XX34(ewI@K6xiJ1p`Et|Y^ z&r~-Kvv@#uJsIVs>hAh&EB0xW$Um&{ff$sv=Z4Q^J%F?^cc#sJ`>v49Aw=p!6IuvF z0GKyg##v|EsbKPEg-E>83`m*>9G(q;dBEY>XWU`Xki(k^4BNV?Mk|-iOn_}4?~jpI zv%jNVP-+zhs$*I9D+UmFAG#6%lt<^6bj@tC#-Z-biP>uz{o{u+78UBpN@0 znDvJGAQCD2>t!+LHlyNkW4(F@64ROH>uLcjPGNSqIwTa^Fh9CyW?GXULr8h14M@Gv zIq2sQFI4#O7SCQWZ({e+e0^2RJ@o>r_y zH`10q$e%!_cx$N$fcWDxP1omq0jDf1SH!9K=C1B?{OwF>FCi2USorrY(q+7Lp&~w{zVD)mWB&cHQ@4Wp7yt6>y-G#F)GjT}i z)){K#AL{}?L+np$U9}%NNnDmK^YNZtVFhRcVA}` zrucjM5^Cq)v!Q_BI9MIgp;|Bsmy`sPYbHb9q)-9^%H{+8>LHY9*b9g zS(}Yns#o+GXw8X@#S#Y6`qKHnEoiz5WMrKa3Gg*dfAIRn^#;7-#0`(%RCf?20}!40 zK5j1`w`Pgj$T9Gd?FxM4+I~;lpEp{4xJB}v&)Z1Z@{5&jN7)GR;)-s#K3iW>MK2z3 zv=ddW?#G^W;^P2|?<2Wk z@fr||4`qHfjit@LZtBr%%a zj5;X4E0|Qw7vj1x#7D7|tJ_5}d+8YXC0xTZtV2V-g@qod#FaO0=-`+e8iV?Tv_a($ zWsUi&&>O$KAfSzt%EXlIo<@3mi|W8p_=kfq^{&!u+~={fR4@6;4$mn7gI~O1@E${c zJJYN9uKUgq-Rv&1Xv;c@-fck3>B;EhOQs#zKc+QqAK66ugNQKu&sPO!f z^#)(9ak6C#K$!jOX9&jb+xr-J@u0j*_LqhUFt&&c!5caVy|)vogu4L68tXRz?l&kN z{eMwB8bI-*AF#ovk=Dl;q!TGI2)BbLy20(V%_o5KbEEg)sPNzdP4)pSUY|jp38`TO zl@fvN{el%0D(-yuXJr?;PbUCO_&XJM)Wum#D>OI^FN$3~FszUgHqSJ0k~|Cb=Y0wy zRt_AAP=7e8m+rm|-Fr6xS}Pyy=91Ywi&9$^H-pma;bTt25mV~v4|p(P1zaDkswk>p zocD9#BxHulS2=!)ldI>>L=w+{y3a6MHZTU5S1^-;49KT9e4t&byg%-%k_yX--;rjw za81g+u=-Y{n4~J_{8^r%LO*k{@E`vj%UbIP3-I3ofX|poC8uo~24AXZ@e&0l4QjcS z6;A%35-*orHfcH)WhTBF65u}r0iLlcoZQ%A$Qjhv6%yFTZ~ZTT-}x87BOtpTg1-}Y zK^1XKwLNcAR&HzX@4#N1knl;~4N@MCJTsXejq$y{>cDufZ73`N`N| zm%*MfuNA*gcp_S_-a6dLRN);6(fVoBb5$k@w-~kMXTJ(hCcBelA58N#5dIHv|GM4o zZN5Be!%;Rvq6_z&nPM7LBI;vC?*{gJZ7LAnnZIjrh!W4Kf8FNBI#Tn1hZ@nM6aBsm z{?-O)w*q0pKTMbR+d@3X${|(pX>w-*Aol*w;|u(L?wofDpjxh7c-uSlb5k;z?=bnK zNm4x?b9w825-*{2M2fwmx%?IwHIgD??5m~rQhkpkw^_xJvbNxKKKGB-82)ALznYHN zD0gza0>EJ`#5G1V6$foj8W@3zvI48cV>Ti`1+K6Vu$_bbC3^ImltUQ^uOCJjDX*{c zr%Pt3k8+g$xE23~@~|gRvLM@JjuD$VmFiH2WRf&D&O|>O3)zhPPzDsrNWc53&S+7U6)^Df?cEouZ*Z}h!G z+bg13)`WsAZ^=BcFkn(FG9z??g@Tt;z#63WhR3bWev=3t$ne^@wjZrd-j02LfCD{= z8GoZ;L3j{$g1!+1vT=8nEDsm1w77G=0|sS>LEGq~f#W)RB0z&}HJgy?rRi z-X%tdeYvj^5oGUzt;61i`1=#1plqDNe}h^dr3>NO08mQaIXt$?Q^yAB@O}brqV>*x zEe=DgSH>>{F|v>`yJ1M}kMQQ%+fMlLC`4QG7EXT?pOg+<4v>Htd;1(!aTlR%y}Ml! zb9;ml8}d2+d+L&}@8;3!8zIQMe-N^c7az_Z7Ajgi0P{al=eLaR{sAW~{zd02S0nQh zJmU9O)LOj9Z$=>6USvG!o%zA}!>QydmeD;_oDBz7WA3I!CN0bx!Jc$U#oPSuGvv9m zhd3Ky1#uiZ-nL6d7|;%5)oz>o9GYBh^Xvq#B}4qCqcc3eXq#&>yNrLJ-!P9F;ui-7PM46cfm91A-q3RkDwU) z--*7W&S^Uz1WYJ7{h&;AR`ETXF|y4lQgmwAN~l=G+w{@o2_`OiZvf!YXJ0hmU6&U$ zMaMu>J2&P78oaiWh-n}aS_wj!#};^(%GoB4*?Zrvxo*JCGNM+(97*TTd50GriT|$| zqwOU^CK~p~Dwtjp!fy9*&rQ-Ei2pq}6gW{v6?ED}koJ#& zv=?MH3t!d|2Fj2$D;*;^{3YbMexP<|a!qwD%xt_m|EqjvVhi}PVwA^LdEmjxRtY&i z!wT@dOOKx(>qt1dohai@1!r%|jb46#Hycfzc+e$1_?8`QstZW*I1q?;EnE0C>$uUe z0}yxY`2uUp+ug%@#il9cpVuyp2i=N0Z+C$tU;gX?9I$qQF+t(!Q}HM#1d10{Sm6@c z@-Rs{RaU>z;&0Z?TLv1Owr0W61bM}2ku}Y{Jt|3ct;=i_R%m`9jT6n@%6g3l*nDp1 zvH(!_DSx;XzQ_%1J|_hqIrO{~7RygDo9~_q1+)N4+Fg$M?dpw)n*U#Eq=%NwrR#j; z6BsyMdZhkZY2FVD@IOUV+EL-0TBoFPqNxHQ+Ebj&`|V*>dIcJ6S^2#}`Z6|*xHdxD z7~~8^y7X=w`go>q&naqyR@?cFs|;nRm5%^X zP?%Hdzri4kQwAXrCr`4vmOjf30bVp3)6FauFzey-T zy1f;S?)-pBOsh;8vW)=bGE175kGvmBtnvV;Oq|U9rlXmGx+f|`Vc2)08yox|um^3^k6FetEpU>ez zbsNSB1&!c8+;Ic?yv#rgCAXh3q|ZY}{8*Uu;4pZHAdL7i@U&cv=D>)Ddd7#D8)74T z_@>D_HUIeVPaq%uW7aof;LBGdw)4*@HBH?~0Nd?98nurl6f9|&kbv(9%VoTTo+WTY zuJ9&)631GMEC1CqAo?PhywbhPP8g>TsFnTIQ_T5^qnk!LHwyd|mj9yhh6}yvCtYlJ zVdo2=W~@-xP$o+Qlz(H#0|-gbQ`p&Z?^E&UCyw>~v}9RuS06EH9X|(kjOR)Qh(4)& zUk=FfF%tdq4D1iu@Bn1XJDpL>Y_tjot;s^UQZQ%KfVdHHo7yyHX&E13!}DcCy^k1s zuv4H3fIJdr@^3Udr)*=O%wvl&4&m5`J|91*5a!K@no=C*qAbwWufhoXc}Abk9m(YTV3_)! z=Z1e){ZO82h>9s)Slvx`m<&Eb>U>Bd*ZLc6NshFE>QbIuMSeYlP^ahwR^_sWaN~bx z?=I^PR;}@4=wZ@j`zc;1>Nv5&!RoRK>vqNm&^7xVFeP!8{-6SEFy=g(IqZ;npiGA~ zJ1W66r*mc5c-$*x#F)3e8S{AKDCcKG!?anKJE8PDGL`fDw~o&}tNRU*O4i&U9Df0D z{GhX%S_{SMkqM?Zf5_L}Ok>es2655>?W&;a@E<7Y7e4BZVSE6qdpAJOQ zAeB7qY)-caqd%SeNQ+SjRz zHHub7HD8Cg_1-mRG3h zlseTIwo+zNAT^MYhD>Y@VbVZBN>(zUii^Sjg;EngJGCeaq=_>;t3I$i+qEOPIN z9cNOKv%i9*)Cv%J&{1S!*0Af3kU4gCKVJ0X>aTOf+=nl+1*2ILgB_Uu)`P(N7ug6T z@Ah?DG##zXH09m%D4v)1=U3YGKN`_tp92JsGu2OsPKPt4dYC2Ax))J9LWq9BxD%tB z4gw^W1gY>|`n*7+?eh%n1WPr4wJ*=HB|fiNnfJ|tOX18uggnZ4yP=>va>Y9$dWD#u zx-x@JUY#sGH`8voZxx3+0`Bi*no|B($k9dnB-Ky7J=w%*E|KyaX;0!ORhGHuM}VTVBPRu}Ifx+jWYT zMQSkHaU<5_6hPZg3^jl@Z_xXmXonzl(>+~zmr%9WExY zx5SwBr=3yLbQ+d1kslQ+2-&olUyglL0wiyoX*1`ir@NAFlV1;e0ZMGJ9!#%G`{PGD z^ASv!f@S-uQmIrOdPt^ry4G6{q}MTA`O&_d2d+KY=DOTX>6gS93kC&=t5Y4k6ukfnHO@r>G&3)f8dKR4}wpMUK52r?fdz<8Qs5d50mP!g+OPR2G!^R)7rbcYB z^##F6G6WRW^bBw&RmNS1#OG+ylYXvqk2souaO@9Oa1zGhxL$!;Pie2oi}Q_qX7rDb za*ji~*q$<0q<$KAb|?E5waZtXAuTfRJI!z>RL;)BDfG&%=1=8C#28_ujAN>s5vb=4 z@HmbbV~k98QpRGqXmgs>!VUGwl~J%GTj@?Hrey;vJqb9YY)`h_U%p8vdG+x-Xav7y zJEiy??k51AvHIc8U0k*3f69!GBUFp!>E}D2e9r~+jDNYB<2x_)t<+-v z6%p#_>hSbpM&nykx3EHgqEy3It+aFGYcuD9@_&wUomw4qu*NC|yY>69jpp*6@KnuO zS~cW^9?ohCp))KE!4BxoF|Gl>tjIh-|t;36N zab&-y2OZ-9e7B<_yoj{!b2%n8AhEzLt{baT=nop>Elt~(@-HBACaViMfBS270D3~oIvgC&L ztB6zu81Jk|3X%7|hf*bgf6tvru>bb)TD%{=-#_MjIFRZg7_X(Ek>&nLlLKY8JzZxo zi!|rOUq4d%hO%fbb^7E`jdRMpX(glk(Rn|Y1f3UD@&shzm|qg`UQyF% z)~f?YzIbHRqDO~&g5+{tcZubPRePF_WCrivq|&no^DdTczs9OV%a{bG*HvfXiHjT= znI*OSHRMBS3PgihL5uD=^|Pz_#{+2!hXYwWhSVPUV>S^A%~Y7Rck)Vnhs!jb2@PM z(?dhG@%Gb_@=}$f3zO0})XrB+AxEfSXX499klnmt#b$~ciiV=& z*TM3?YpArFSET|g(kA)KL0FDpDj*6vzvn$JzcQ3^ocG+=-I9bkPxTRsO?g zq}-h+u(&3TW;d@_;n>dv{8NhkcU$Ml3A`1=siRR$w|YOe=`18`1OALGL$l)l zIr9AN9#jH@w>V+s-p{*hhs z>RpOg5o6Icz7MtJY7ZD}trYrtAAlO3+&VM9@o=|$C~wW4Ga0MBNakfBWI|E8^jD=_ z%wnW19lFmCjUcj~R)308v#Dzs(&ZsezhI|gm^?vMcmhK!C&a{hcmOv5uDecPZ|mo1 zwU+Brr^hu859Q;7o_(I=EUnVmM*e1&FC;|PfiJiM2N^>3IPt;H=<>XIo^9*8gw%S9 z=Pdg84Fc@G1z~p%4O+@c_1$$+tI{bH_A6Gf8)x4r!b`9?By?1%PD#l(a`_F60dyA> zkuzKHnKetBUn=?73ew@8)7d6zmzP>&|LV;d-D_DGzZ+aMsl|g1TLGHAq1UIiJn#b; z^nqu_juZoV&tN8m)xk`$ft#6~VC{vaynNu0Wg7q-rN{9BT@QnTi@G&#Oa<`wpl!Q&o*||=y00fzbC1qkZ=6z70$60|1AL3uZeG?JaThq z5q_Am_$A&WMJms~oN`|EuH6MpQ}a(T0>CG@2CKP$tyr`LSGC%kf$2`_QKYaIlb74GWs3Ja zb-YWATQXF`^*=%=UJqE7fW5Ddpx>%_ZQ z@BEm@-jYQBWl6eLcsY_E*=<-DGh1RfXca#x&ID9~eLCPU;3{0r68lhZGXbx=Rc(km1zQgV!%dspyNgRuD&omBkr zXkJwHZ4RKY_bd9Cd7jh(3%4& zSAk;bNvYupNX^!=iQ0TjP!2t+I-8GafqHU4d~^3*e4xG4B&k#e1j55s%qEOss1iV2 zr*jN6_FvHeZOI?X<|r1+7)bSfr0sng5}hNY=B1Jw&3ryih4Nli#uPiq35thLQuzZj zdM4n9U6E83 zeyv;pE~P54(M$OEsBH;_mKSC)b3+WveOzUa>)0Zh+zY5z1#5utz3B8e1p@Riv&2R9 z;UFXJ*nd*z@xCF$!Bx)j*$M}M_~WPy#z%T=;B&WsOEOUakvflalR7VsNS&902)H>z z{dXvJem&v}&Jo3&gIfkx+ceRD=mJo?qqmgZc6TU1?MNCQ5wY{@<$#Ps*U?X~*v8@u z7Ulj+oyUaM;c}R6Big}_2SDXo3QS0sp!TW=+SI@0&veVs;Ko3TR7Ne+ z?JhM2jTRg)ar3z8CQ1vbGb+Z^8+PAf?Y|qT!7`=+zPFfuGE2M$-UHEm^BJGa{^z&q zf!#g^>~{SbF$?Q=X7JEVWb|?4-id`nw8l_m{JmTq`Ew+fG|+57RNYdRbv9fzwR<`s zbck4f6JfW9T90jVcUZ81su!#EH%AWAKOU=l)S!U(H^Gi#!C>!n0K5}iuuKjOYNnsk z)(gnMIn4ZCjoS)1M zcG>J1OIk#Wg(q*(GRXuVTzC?kl*sJE$Ck z*!ra6eJ@>K_G#2kC-FB4v#}{zIRR&IVP5G(_?nZkB$xeu4at;E7-(q9W^gsg19A4Y zPa9uW+6KRtjC}x7sD)Fma@iEd#c|KdaNtw6i5c0 zMpj=t{hdU`1bOoZ4rp_Zq=pN&l>`%)I!l2z=b&+WS{n=gv}+UX0y4OX z1^9aoXZXkF01|X!0H#IVxA{sL?BxyV?GJ;xJTH%3w@#6vOnQLLS+};24HuwZ=D?O0 zQkuBDd|&@ntR;Jp1k?u5RLsrajTS}%uhE`tTFSy& zH)(CLfUpZQ9U`G}=JdXEq0Z1N#XzAntV^!=EIW0i-z@YuaS0;q&v4{G`>KUw{bmdj z6xc77SD^TE=x-s(o7}B@Ro?#wKTn3F&i+Pz+g)edGW_%;FwLp#8_(D|17^~XsipM4 z0|wN+;7Fw{p>L zy9(1CJW*O`98}lAjFhfAaphh_Mh|Ar8x?n<%{ZPQKnCsO)uFlJdjtAUT18rrbVK69 za!<`y$&8}&(Cy9c?-G}O=;vvLEP#a8GR(G3$7nATZ@bh8GvK%juaMn1?v^G(cZWMS z-+O=cz|VE;R39a&{Z_kQf9Dz*0Q8(NJ0+7(rEX*(Ycx&0m8AB7$7{Ct6bXdSt9I7; z6?bgn)?h#kp0hLjrA?FVPgf+A(cOYc%0!!$E*|s_)58 zy*Rjdxd$B?V+K!H41Y;;Fqoi|3e!Mq&!ZPl`FEO#T#TntOLnf$Djq<#H~?e* zjHPy;;$LL~ru#Lk@%bGez;nm(yXGwO?T6A+@Bh6o(dCfkvsZ!0pBMQ==_vv8-J}2Q zxRC?J(@)v%J%Ai{azNhUneD<}oflqUiRhmMdiA=sA=o85W;ow;GkKGe@DJr*X(Dt# zztVsZ`cGm|2tC%%Lkr5?C+G|~^J}i@t|fx_%c=b2&f0Y5#sm8D^C?XT$hbNsV9Oi9IHt=R^b$-+!e&N@t~uOsaiW zrACN+ylrWvS+Z25OLbbL%dGJA;vdqEvGNqJ`5G1}2J_F*jnOQQY%q?+8e@Nom2dOc zjs5(-?-ZU`LqWapSkB+T8`zF&Plb8vokGEd7L(m;El~W43byeJi0y>@>c(Shk1$WQ zz9<3Mj+=O z)61u3xAQH%eCbxA#0YJ)9lySUYA0y?7^j;FZ4N<00c!9--;{5Ft6SYR?55#*U_HKN zVj6=m!zCW^LeBd~FaXYbIpn+(bReAfUi|#H86FX`KyL4 zIl$EOAwP;`tmA%%w+bM49kZwSIdZaaSiuYniJK?5en(8J5^nuBeO~o_l6x6gG;G(?}L#f}zA<5_xbuJucCNZacjb;gZ0uX6ktFaM0P?EI(5u9v@B^ z--mL6mTQnbZz}Kzzb`#OGD33ljXH4qsW;eUiKwLdBS7u0eJz}Ve)g!OdNDZL0F_ja zdKPlLapMHZ*94X<2Q>M16@9e;%l|v~6w5C_2m`v+7t}8TdYDjeAPWv%D;Z0OUJoPVA2v8a#`qISO0lRY0{`U5A~Kn ze2$;LLyC`ncdMRn{8QgHU~--EyuGWDbMJN8S0h2)%{6@1<=Y!G1FHwDREI}0X>DJO zeT4g0dy9VPLdWvW-=3>C(0#0alyG4{Bg79rIV}C8+z>R}7kWqQ;uyY;w5pU~$Mf&@ z-S%dl!PHcEvl(g^Q*1+X@7GS|o#+zTSQLvFfBy7%UC!7mtW@^ZHWN|b#E#ug?p}!T z<}c<`aCQ++q9(v|ERi7$y*2tu~kN~kLz z_baC$o>qRig&MIz^R~u?LGH?g;R(~_p=QALp)%j?cX;?-AoBiY90< z)Zl5z{bhgu?8UV*iU3)fR0i5-NMijrd^wVU2Fz$ktj|_0dSw4N{)wH~Hul=V&+chV z0`)JyDdqkIXOIU3c8GX_Y@-okj?yuSUCKT1eWz99=uZK83oCvgQc9$WsFUyK>OTtWIN)s zin=sQJ74yjQfJg?F|j0Ozh_^LlFPzzhn-J6Ft~q0k9>Q5gTr_PEv8v7+m_6Vc$V^F z$Xt$@W1RxyjksOMDFeu?f0ka}<%xqylBL{HfcyCnGuvmc`d;#{9lE-`r$LB?oV|joqvG`M zFSI`({Nf;DPubNXS8sQ{FT(8Ir7o97;csz@8_phcKU^=pJOhVIl4I6`4J8`cPx@&F zIZ!72%eV9u2#ViIfncBiogIaF9I=;?979w%?e3n!bL%!CXEfUc#AzhF=5aPI5^l}5JG(c*=sS>vV%GgNcD z>z`zp!LMtER1R(xwv#8rm|m+<^OKlFN{qsBdun!jgp(~b;LJ0BJGcieDXrSgY8EHI z@D<^&R@}uGch8j^dUpi~A)C*FueMEjo`pH;WZDvlycp5yiQZd;!uV(FYV5Ywp_h|C z*px5dNHY83Rxi3s8HD{xm74iuJ68;W9RCEmtXeMbNVrc&!LWV<7d9rr#q!yJP_0XI z+6L{91hPf%T^a|~9r%F6pJb6$htyIX_36>l| zeN4Rta#waFvA#T&82{U=T9Suhjp#;IIR0^RI_N?QS6ruSY>9EX1219PIfOJW8dl?| ze~)^Ob|)0zeYHX1ZaVgU{5IO?{a?R|CJynjoSUcFa?y3zNj`8z-cCBRG{H*YK;>=F z)YM<&arE3wUM13++(I<#YpzsOfSkOFnziO4Ao%|6B>gxd45lYEulTP{CzS5wDO_b( zkW5Sea3U|$J?Z3CUFui6xE&+xfDCt zn7{LX^0FuxNerzl#HC{;F}6?__~wyYdcyTqw!aIyXrh3F?fMRDzmYblc& z_jRn5y7pQ*Gj!$0g88y7pW{6LdWhqP^55CGw^y*{iAvSR-iYHrbxsJOWYh~;{n9eb zjiYefzwU7B*;k@;;;;>uVKwbwu@5fw$-|2upfg@o^{s=t&W0mQU)}rd_a$GIHI>(D z$LjUQLdoj1Q!fJ6&kZfIlvoo7*3OFNy~tD&vxb8a!aww8!YCw-h?ce~ZdV3s%5R)= zM4`qT6hD{<$ef0EcLpJq{)5qYm8Qjv>TqfkQg^cXD1AB3kBC4L{P#yKuu*fH;5RlZ zrQTNJ_|4Bu*x%ZwQ87t(Tw@YU6$^5eqLC+)3D0GsqSxZTwI@yWGEKJ$7`DOwU23s)u1Le9^nwL+KVED1|MT51!e0mcoSNHGoB+%~?e|I=)lNmARL1onYIWiWqi2`uHe^Y|#-0mZ({WwH_ z|6qVb)~|~}s<^U)>0mZPtm!j%k-XpCvNu1O)yK)dmu=n-z6W2Z=zSqe8Pz3^?C$AFly{OMLFQ>fY!p`c;xF0Im%QXMx@*nQ^A*z=J zO-LU`Ji9zFC%ZM0WI)h5(UTS z#*rdAkBup;Rzk!%qfDi=m?3-q?$3)1v6gqgMsSapX$)twJ*YNOMwYu@e z!^L78{CT`=(PA85GsK{R!u0pDLkS(Z#pG>=66MNZDJRiTd8M+G=Qlp^CNB_-DdpHx z2GK-1p)B~TS7RWPUKbz9q>qv^q8__ZM!A}Ay4qJ`OYJ=K%PB6-GTbaX)am}h zgA2qCMmpzBAe7$Vz3|$D3nUIky5~hrik`8s3l8Jf@v=nGFgw@l)pQvUei(5g^l=O? zOIx8cF4H-`JF0+17Z#GjJI>>Vz;`D~pMW7VX>GlxEe#1A!O>%(PSWBj0qrkEZXEcR z#*T%Wu}y9)cvM&usb>*8z3nSy#tja$r;;Wifn{UgWAz`HEJK8GJm|hV84+_&SA$r_ zY_wF$Nd30Dgz)4pMsk2Ej7I3x&_`bO`#2$=@AW;YeO{5j9VG@HLk+% zqi&+ZzhKTot(xg`JwKTUUJ<3+g(0H$t^#xU!4ZJA!8qLsj)9u~zMpXJl5*#tLRGw5qGM;og+bq(`ctlHFBs76m3JE_bIvSW46`nZ zr)n^O-ii50ay(C95dT0c;rFNHuxK0N5GHmG$fy_hvQN5fe*TX_t{@2R9f;t*%zS?g zf$u4s+x)olLNZ{D%g1Um@VGP@3iG5)7tvu}>&}meKLQCiP^brC?N&Vuk?ktVfov%9 z?t-}ODg7J}9S`}Ju!@n(!VJ+i^XBa`V&HYj_2y+D0MafG@$--B#NQe&OWcJkbJjuE zr3Yxhut{S%KLKpmIpQx3XXK*9_KP64r>JUc{V$8&G3!5B^bwFnkA&3k5q@2D^i8)7 zdk!C$fTTNmAc6l%ryTvkG>W6&`Q8+|FZLt;e~WXh58@!f&dT%J#pWc&pOp%r;0wCN zf81yb)iNpVmm0r=rVzzb_a&Gr|Gm(w&QL8T@0Y+^UG3d!hpAl0xcSi&LUV3(;we91 zTt%YjfwF)7Af`Hbe_Idn+bh9u7j7qSz07*}$aEhaE4@1k^5+HPh`6;lF&-ZIb1Aeb zm{`oF^EqHK?%~Dxb}E?2&&Ke2(Lepfu0_O1?V0BKr_7F6j>0e_z3a-uBcSQ03cCWC zYelgw@q%((0KoJv@dp;}GLLAvNFx>BeN(MLRQDl^Jb4MaGvwk%tOlsAYJpACUs5ra zX}ZNevH4dvWjr@=raS0NLDenqM6+4S!0@}HL-0^v|Myr;awMMz8mpWce5fV)Fq zy#CX4ooz^E+J%`>i8?JRMn5P|wltoiLAGS&Wj}%8x^|jBe+iX8uY%;y?>di)X;Zbm zI}@JkTbm|lM{+!=p)4=X#U*xUki;)do8V2Sb>Y=ahQROQYyG4zB9JKg0#>pYQvF?Y z5n$bpN~JMf`{pT=y%qj~bf-VHhjCyeA)uz{ITo<4M8M|E+T8}Y-PY%F4u0!- zM<#ex7x|~#x0xiO1b5Wg#`;%=NE>Y$xH@; z4wbmaAC$T-23qTH*Vu)jGn?~ZmHrmF_3$~9KnE5&0EfErLBrp84aX?22TH)`ORxUy-{9guNHj-*ZiFNU_(tT?YF^f0N zs{?$kAtX^;+Sv{nS{)|U4k`Gh*8#-Gbvuz7?b!*wR*GYuq)iyUL#L`ryT(sGR#w1I zbx%D8t<{IcPtr0|OsD+r{Bb_ucnWO;p;xyZyCZJpb5$1( z1)5Aynw@-TQv&%3&M0MTsS^O))ilHsY0ED?5zbnLCssZma)}?k3Nsz+sn4Dp!B0v{}HBqbA^EY zkigkEgh-bX$WnnS4@IwsT{NMBmM0meGTSOWH5(oGYPt3^oUEJLEQT+n`r-*KwWJA1 z;I@R)#P#-PC4ahJ>c$yTb=1x=tR@ga%c%$3Z{>vzsppm~L5$yAUVX>%u#%kJ3S$oXv|;tOydqhR1q4B-b< zDSXdYEp-C3sVKyR&s-~KM1trEEkTvmnzE3^I-><+XqN$gr%wg*uA+kITTg@N^>OqT zNY3B)g`KvKmZb!TcAO)M@BpZ{#TvzIv1vb_$f)WLT>G#o+ASXrTC+hR`80halVOA=THV=Sa8&)1a;LfcHqSpNLF0isHwuB46(gRn7UPR?apin})J~oL+Rq*$h$QZO5Gl zuMO;Ieb19cE9*zr&p+s4nIqoRt$7r8_y*-_ld>)HHd-G z%2xtb4?KQ33f_+7ohuNl7FVd|roRDiYXIGIX*Rr&E3#t-Zy{>6P2D2nLF~#}5h+Ym zbU9sHhp_qRAN_Qju$6g-eL-sK!2*f+{k8-|gct6%r`S2udsLw4F-F%C=a9Rms9@aE zQfk|#3uOvtYI*8*a94;F{X*}TkMCTMg*5e&4 z^HXg9!sCi0x_-O2O>LqR;>M?X!-c-oSV%hn#pU9K!CL$>WV2&oi*2bL-u;CI!J{&_ zqJD&xSPEPm-@>Vs)Kp!IM%2SQzR#?qPXZHq^sYW(&n4xUrl^q0k;D({GOfRMfjBSt{Y^nYdUL7?#i;0 zm#qCNF@=9=V`iOs4%hxNd~HeRT(gUk?r%eBWGV%2QAW-zhg~1IyTKIzo6Bn0DWz|a zTR|SZw%D$MlxX<`DuQ0?$E5JVLNA<#{|D2G{cQqCgo^K0L@SZ@b zfNXiy=nNu;4B=^k{+ zIy-!X)WOGc4dC@YY0Tb(3V4K#ldJN+nk6nWMRMT>f|=89ZQwwD8G`WJSkrC|Ol$EY z@$ujPEf8W~_kn$+kQWl{5kY=6vx;F^8=B$~UY|T>J+EEwT#w4Fzht%9(d+TUkra!= zsYBhS|EopxLH8n8Pyn;PF7Is2%TflA1|gHQ*`u~MlmRLx#sCv_DM^(?16>H69?yUNmkcPRJ>dKp%Xr? zm;iM68fjUA-hI0q-P&$uG4DxDpGhp%q_@0&XeG%7R7gR5apcMBp8f*o=;|%)v--|HBo-c>!`ONNoTb8rZ;nvID-EdKq*31Rp3JH{wqI7s?2%oR- zYE;x~e?!`;LnCDJ^eyj}6+!y=@+4UELz;Kb!~MN54Dto)m(v_+?aAd_mX)gV4dPY(q$& z_fpfQo312H|8};tfSJly{qD`J)p)+f0^i#Ft!=kbX?Dktcb?jCG?^Jzr!vqDV~Tm1 z)do9M_ng6?FoxFn30mEN&z&}$-h*h@= zgx13Q9EqYY5E$naAb^B<{w3@wPfe?8Im?&c_c)BhWO1A3$Df>oet6$}l>BZcHlp^5 z1#oa%uHtj$arL@XINUUuN-# zOUxb$?LfV|InerwjVk6JNIm?sqwO)yG{LXSuH3Ib=IhcQf*LP15`GTDey+-FKuEAQ zH$OIqUUK@;ZxG*WGTuREed931(({Dc<}%tZJ$xpjPUnZqY8tWwVAtx`WEv@&a-!0GF(uIA*R90metv)9-H)`}U#IB$<%3bD z=?sPNHY#a;%%3DARcSG3!G!jV;r15lhYL>Qkk^>=T5#R(%L&IG%tc5O#f>{|;AT9# zS-+<&-`5KwlCC!{Me1{g=yqQBE)NOV(X|7_+cfu}mOrKo^

V{J*FlxG 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 YLM<uXQND? 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
iemirYUE>b?-dGx1E-leM`#d8#EP|Vo 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

@9-J`J~Fhu%tF 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%0Anv{*SpZyK;L2~5Q_o{^D=thoPoc9KNC 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 literal 0 HcmV?d00001 diff --git a/research/r489-partial-own-kernel84/data/KERNEL-SELECTION.json b/research/r489-partial-own-kernel84/data/KERNEL-SELECTION.json new file mode 100644 index 0000000000..b32646d91c --- /dev/null +++ b/research/r489-partial-own-kernel84/data/KERNEL-SELECTION.json @@ -0,0 +1,664 @@ +{ + "gauge": { + "134": [ + 510 + ], + "135": [ + 510 + ], + "136": [ + 510 + ], + "137": [ + 510 + ], + "138": [ + 510 + ], + "139": [ + 510 + ], + "164": [ + 510 + ], + "165": [ + 510 + ], + "166": [ + 510 + ], + "167": [ + 510 + ], + "190": [ + 408, + 102 + ], + "191": [ + 408, + 102 + ], + "192": [ + 510 + ], + "193": [ + 510 + ], + "194": [ + 510 + ], + "195": [ + 510 + ], + "220": [ + 510 + ], + "221": [ + 510 + ], + "222": [ + 510 + ], + "223": [ + 510 + ], + "246": [ + 408, + 102 + ], + "247": [ + 408, + 102 + ], + "248": [ + 510 + ], + "249": [ + 510 + ], + "250": [ + 510 + ], + "251": [ + 510 + ], + "274": [ + 408, + 102 + ], + "275": [ + 408, + 102 + ], + "276": [ + 510 + ], + "277": [ + 510 + ], + "278": [ + 510 + ], + "279": [ + 510 + ], + "304": [ + 510 + ], + "305": [ + 510 + ], + "306": [ + 510 + ], + "307": [ + 510 + ], + "326": [ + 408 + ], + "327": [ + 408 + ], + "330": [ + 408 + ], + "331": [ + 408 + ], + "408": [ + 408 + ], + "409": [ + 408 + ], + "414": [ + 408 + ], + "415": [ + 408 + ], + "464": [ + 408 + ], + "465": [ + 408 + ], + "470": [ + 408 + ], + "471": [ + 408 + ], + "492": [ + 408 + ], + "493": [ + 408 + ], + "494": [ + 408 + ], + "495": [ + 408 + ], + "532": [ + 510 + ], + "533": [ + 510 + ], + "534": [ + 510 + ], + "535": [ + 510 + ], + "536": [ + 408, + 102 + ], + "537": [ + 408, + 102 + ], + "538": [ + 408, + 102 + ], + "539": [ + 408, + 102 + ], + "540": [ + 291, + 163, + 102, + 24 + ], + "541": [ + 291, + 163, + 102, + 24 + ], + "542": [ + 291, + 163, + 102, + 24 + ], + "543": [ + 291, + 163, + 102, + 24 + ], + "544": [ + 510 + ], + "545": [ + 510 + ], + "546": [ + 510 + ], + "547": [ + 510 + ], + "548": [ + 408, + 102 + ], + "549": [ + 408, + 102 + ], + "550": [ + 408, + 102 + ], + "551": [ + 408, + 102 + ], + "552": [ + 510 + ], + "553": [ + 510 + ], + "554": [ + 510 + ], + "555": [ + 510 + ], + "556": [ + 510 + ], + "557": [ + 510 + ], + "558": [ + 510 + ], + "559": [ + 510 + ] + }, + "kernel": [ + { + "E": [ + 504 + ], + "donors": [ + 334, + 335, + 362, + 363 + ], + "pivots": [ + 390, + 391, + 418, + 419 + ] + }, + { + "E": [ + 390 + ], + "donors": [ + 324, + 325, + 328, + 329, + 380, + 384, + 440, + 444 + ], + "pivots": [ + 381, + 385, + 441, + 445, + 498, + 499, + 500, + 501 + ] + }, + { + "E": [ + 6 + ], + "donors": [ + 128, + 129 + ], + "pivots": [ + 156, + 157 + ] + }, + { + "E": [ + 414 + ], + "donors": [ + 218, + 219, + 302, + 303 + ], + "pivots": [ + 358, + 359, + 386, + 387 + ] + }, + { + "E": [ + 384 + ], + "donors": [ + 162, + 163, + 240, + 241, + 300, + 352, + 353, + 356, + 360, + 361, + 412, + 416, + 417, + 438, + 442 + ], + "pivots": [ + 301, + 357, + 413, + 436, + 437, + 439, + 443, + 496, + 497, + 502, + 503 + ] + }, + { + "E": [ + 126 + ], + "donors": [ + 160, + 161 + ], + "pivots": [ + 242, + 243 + ] + }, + { + "E": [ + 102 + ], + "donors": [ + 188, + 189 + ], + "pivots": [ + 244, + 245 + ] + }, + { + "E": [ + 30 + ], + "donors": [ + 132, + 133 + ], + "pivots": [ + 268, + 269 + ] + }, + { + "E": [ + 96 + ], + "donors": [ + 186, + 187 + ], + "pivots": [ + 216, + 217 + ] + }, + { + "E": [ + 120 + ], + "donors": [ + 158, + 159 + ], + "pivots": [ + 214, + 215 + ] + }, + { + "E": [ + 480 + ], + "donors": [ + 272, + 273, + 298 + ], + "pivots": [ + 299 + ] + }, + { + "E": [ + 24 + ], + "donors": [ + 130, + 131 + ], + "pivots": [ + 212, + 213 + ] + }, + { + "E": [ + 120 + ], + "donors": [ + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + "pivots": [ + 270, + 271, + 354, + 355, + 410, + 411, + 466, + 467, + 472, + 473, + 508, + 509, + 510, + 511, + 516, + 517, + 518, + 519, + 524, + 525, + 526, + 527 + ] + }, + { + "E": [ + 126 + ], + "donors": [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 332, + 333, + 388, + 389 + ], + "pivots": [ + 382, + 383, + 468, + 469, + 520, + 521, + 522, + 523, + 528, + 529, + 530, + 531 + ] + }, + { + "E": [ + 96 + ], + "donors": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + "pivots": [ + 512, + 513, + 514, + 515 + ] + }, + { + "E": [ + 24 + ], + "donors": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + "pivots": [ + 504, + 505, + 506, + 507 + ] + } + ] +} diff --git a/research/r489-partial-own-kernel84/data/RETIME-FRAMES.json.gz b/research/r489-partial-own-kernel84/data/RETIME-FRAMES.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..b79bb9a6e1fe1e358b8780c4be9db1e381bfd0a1 GIT binary patch literal 5905 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 literal 0 HcmV?d00001 diff --git a/research/r489-partial-own-kernel84/provenance/BOUND-ADMISSION.json b/research/r489-partial-own-kernel84/provenance/BOUND-ADMISSION.json new file mode 100644 index 0000000000..2e493af3dc --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/BOUND-ADMISSION.json @@ -0,0 +1,95 @@ +{ + "status": "PASS_BOUND_RETIMING_GAUSSIAN_AND_COMPLETE_FINITE_ASSEMBLY", + "word_sha256": "b544a68e2d8d1fea28b2ae4a867c4585767396062bad3b322c0800e1670baa0b", + "canonical_sha256": "dfdebff4de27cbf5fd3458de6e3d41678ecdd30bc679c438b5fb1b65460a36e3", + "programs_sha256": "e44d520a3414ca8863623aa6ea6489d3f730fbd025d69f050236deb4d0bb9137", + "complex_template_sha256": "25718162bc14a8fb620b0dc3ff2ea57672fe9fff3766c4530e09b24ee54e9215", + "source_manifest_sha256": "56199b350a49a6d9c114eec1620e889eedb89170af2b872bf8b8f42df8a961a2", + "source_manifest_files_unchanged": 55, + "receipts": { + "/private/tmp/complex484-retiming-independent/REPORT.json": "d3df6f943f38a58a4848e3437983b23b706f148fce1d30e64aedfefee34c9644", + "/private/tmp/complex484-retimed-independent-audit/guarded-final/ADMISSION.json": "ae6306dfebaffa34c5beeb375eead93e51aa5b0632b1655828f7462b9cbec438", + "/private/tmp/complex484-retimed-independent-audit/finite-final/ADMISSION.json": "b46a878c6ea3c5da9d2eb1c7a7f01ef34a887762eca08e382167630baa3d9007", + "/private/tmp/complex484-pooling-frontier/retiming/FROZEN.json": "0c64dd037ccce61cc4ebdb49b1448c5acfaa4253e9d6012337a771e5b12f17a1", + "/private/tmp/complex484-pooling-frontier/variant-final/HOSTING-AUDIT.json": "505e5ed4eecf9ec8ed4d3d1b455b7329670e3aeb0782a6596a5b55d39f3e454f", + "/private/tmp/r489-pooled-source-proof/bit/RESULT.json": "dabd498ba5292da8cbc30496cfdd4e2543aaf26294142006790f54bf91062e86", + "/private/tmp/complex484-retimed-independent-audit/finite-final/EXACT-ASSEMBLY.json": "10c167b951899e468ba72850bb8695b78ec009523c1750f4e1ee731341745438" + }, + "scalar_columns_each_orientation": 800, + "dirty_helpers_restored": 560, + "physical_basis_columns": 806, + "physical_dense_columns": 8, + "transition_operators_512columns": 2945, + "entering_helper_chains_512columns": 122, + "local_profile": { + "1": 2385, + "2": 264, + "3": 530, + "4": 84, + "5": 270, + "6": 92, + "7": 1, + "8": 17 + }, + "global_profile": { + "1": 172056, + "2": 19008, + "3": 42032, + "4": 6048, + "5": 22496, + "6": 6624, + "7": 1800, + "8": 4120 + }, + "live": 7680, + "physical": 8258, + "rank_mass": 558144, + "deficit": 2496, + "global_prefix_bits": 142, + "retained_payload_bits": 192, + "complex_lower": "1345325487149526878087/1000000000000000000000000", + "kappa": "1343518018117309/1000000000000000000", + "kappa_decimal": "0.001343518018117309", + "outer_constraints": 47, + "frame_controls_rejected": [ + "raw_scalar_payload_change", + "changed_helper_entrance", + "downward_raw_retiming", + "canonical_frame_mismatch", + "missing_forward_climb", + "wrong_forward_climb_rank", + "wrong_backward_dual_sign", + "wrong_center_label", + "missing_entering_pre_wrapper", + "missing_entering_post_wrapper", + "wrong_exit_frame", + "wrong_center_rank" + ], + "controller_controls_rejected": [ + "alias two whole owners", + "helper on active data family", + "owner in private namespace", + "unbound change of owner replica", + "omit complete invocation", + "reorder invocation replicas", + "interleave local invocations", + "change local instruction stream", + "wrong residual width", + "wrong spectator coordinate", + "omit spectator route", + "overlap residual footprint", + "omit idle remainder", + "underpay idle remainder", + "omit bridge touch", + "remove one-owner rule", + "duplicate frozen role", + "understate physical reserve" + ], + "outer_controls_rejected": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "scope": "Fresh finite candidate admission, binding actual emitted scalar words, both actual frame ledgers, exact Gaussian normalization and both sampled physical orientations, complete actual owner/profile/invoice, two exact moment engines and strict outer composition. No global retiming optimality claim. Inherited all-size compiler, precision/tape/common-grid and analytic-transfer contracts remain conditional." +} diff --git a/research/r489-partial-own-kernel84/provenance/MUTANT-ADAPTER-PREFLIGHT.json b/research/r489-partial-own-kernel84/provenance/MUTANT-ADAPTER-PREFLIGHT.json new file mode 100644 index 0000000000..816670f504 --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/MUTANT-ADAPTER-PREFLIGHT.json @@ -0,0 +1,263 @@ +{ + "status": "PASS_ALL_14_RETIMED_LEMMA_G_NECESSITY_CONTROLS", + "pinned_source_sha256": "cf0d1f8e90a0780244b6de38d6aad08dd42f4c439397a6d5a61fccd23fe7e798", + "executed_source_sha256": "16ba6af38825b908a719c365d823448267e5897ac192f21806811c47b10c6c66", + "source_substitutions": [ + { + "old": "X = next(f for f in range(len(Fr.F)) if Fr.dim[f] == Fr.dim[b] + 1 and Fr.sub(b, f) and not Fr.sub(f, a))", + "new": "X = min((f for f in range(len(Fr.F)) if Fr.dim[b] < Fr.dim[f] <= Fr.dim[a] and Fr.sub(b, f) and not Fr.sub(f, a)), key=lambda f:(Fr.dim[f],f))" + }, + { + "old": "['center', kdeep, X, b, 1]", + "new": "['center', kdeep, X, b, Fr.dim[X] - Fr.dim[b]]" + } + ], + "mutants_sha256": "0ca8487ef0c040989ae1df8e0f402619474032084db004bd86cce841730d49c5", + "controls": [ + { + "mutant": "M1 compensation gate with the target still at label 0", + "violates": "G0 (common label at a nonzero-frame compensation)", + "checker_flags": [ + "ACC", + "G0" + ], + "rejected": true, + "first_messages": [ + "forward: G0 add at 13053 ('L', 200)<-('L', 374) frame 2 but labels 0,2 (A)", + "forward: G0 add at 13064 ('L', 200)<-('L', 375) frame 2 but labels 0,2 (A)", + "backward: G0 add at 13053 ('L', 374)<-('L', 200) frame 2 but labels 2,0 (A)" + ], + "physics": { + "forward": "FAIL (registers [186, 200])", + "backward": "FAIL (registers [374, 375])" + }, + "seconds": 3.9 + }, + { + "mutant": "M2 physical T_E on an entering helper (no virtual entrance)", + "violates": "G1 (virtual entrance)", + "checker_flags": [ + "ACC", + "G1" + ], + "rejected": true, + "first_messages": [ + "forward: G1 wrapper on non-entering register 374", + "forward: G1 wrapper pre of 374 at frame 2 but start 0", + "backward: G1 wrapper on non-entering register 374" + ], + "physics": { + "forward": "FAIL (registers [374])", + "backward": "FAIL (registers [374])" + }, + "seconds": 1.0 + }, + { + "mutant": "M3 target visits its entrance levels out of nesting order (descends E2 -> E1)", + "violates": "G2 (monotone nested chain; selection condition (b))", + "checker_flags": [ + "ACC", + "G2" + ], + "rejected": true, + "first_messages": [ + "forward: G2 climb at 13505 of 200 4->2 not ascending nested", + "forward: ACC paid profile {2: 265, 1: 2384, -1: 1, 3: 530, 4: 84, 5: 270, 6: 92, 8: 17, 7: 1} != word {'1': 2385, '2': 264, '3': 530, '4': 84, '5': 270, '6': 92, '7': 1, '8': 17}", + "backward: G2 climb at 13505 of 200 4->2 not ascending nested" + ], + "physics": { + "forward": "PASS", + "backward": "PASS" + }, + "seconds": 1.1 + }, + { + "mutant": "M3b entering helper leaves the nested chain (E_j -> X -> F, X not containing E_j)", + "violates": "G2 (monotone nested chain; selection condition (a))", + "checker_flags": [ + "ACC", + "G2" + ], + "rejected": true, + "first_messages": [ + "forward: G2 climb at 14058 of 374 2->8 not ascending nested", + "forward: ACC paid profile {1: 2385, 2: 264, 0: 1, 3: 530, 4: 84, 5: 270, 6: 92, 8: 17, 7: 1} != word {'1': 2385, '2': 264, '3': 530, '4': 84, '5': 270, '6': 92, '7': 1, '8': 17}", + "backward: G2 climb at 14058 of 374 2->8 not ascending nested" + ], + "physics": { + "forward": "PASS", + "backward": "PASS" + }, + "seconds": 1.0 + }, + { + "mutant": "M4 scatter into a level-L1 target after the copy descended below L1", + "violates": "G3 (scatter meets the target at its level)", + "checker_flags": [ + "G0" + ], + "rejected": true, + "first_messages": [ + "forward: G0 add at 18384 ('L', 194)<-('C', 1) frame 5 but labels 5,4 (centers)" + ], + "physics": { + "forward": "FAIL (registers [129, 194])" + }, + "seconds": 0.5 + }, + { + "mutant": "M5 last centre descent step skipped (level-0 targets scattered at L_last)", + "violates": "G3 (chain reaches every served level; bottom 0)", + "checker_flags": [ + "ACC", + "G0" + ], + "rejected": true, + "first_messages": [ + "forward: G0 add at 18398 ('L', 127)<-('C', 1) frame 0 but labels 0,2 (centers)", + "forward: G0 add at 18399 ('L', 185)<-('C', 1) frame 0 but labels 0,2 (centers)" + ], + "physics": { + "forward": "FAIL (registers [121, 122, 123, 127])" + }, + "seconds": 0.5 + }, + { + "mutant": "M6 centre copy taken at the wrong label (after the first descent)", + "violates": "G3 (copy at the centre label c_k)", + "checker_flags": [ + "G3" + ], + "rejected": true, + "first_messages": [ + "forward: G3 centre step at 18380 on a dead copy 1", + "forward: G3 copy at 18381 from ('L', 64) at label 481 but frame 5" + ], + "physics": { + "forward": "FAIL (registers [121, 122, 123, 124])" + }, + "seconds": 0.4 + }, + { + "mutant": "M7 a child of another register runs while a centre copy is live", + "violates": "G3 (copy lifetime)", + "checker_flags": [ + "G3" + ], + "rejected": true, + "first_messages": [ + "forward: G3 climb at 18382 of 503 while centre copy [1] live" + ], + "physics": { + "forward": "PASS" + }, + "seconds": 0.5 + }, + { + "mutant": "M8 centre chain leaves the centre frame (c_k -> X -> L1, X not inside c_k)", + "violates": "G3 (nested chain inside c_k; selection condition (c))", + "checker_flags": [ + "ACC", + "G3" + ], + "rejected": true, + "first_messages": [ + "forward: G3 centre step at 18381 481->506 not a strict nested descent", + "forward: ACC paid profile {1: 2385, 2: 266, 3: 530, 4: 83, 5: 270, 6: 92, 8: 17, 7: 1} != word {'1': 2385, '2': 264, '3': 530, '4': 84, '5': 270, '6': 92, '7': 1, '8': 17}" + ], + "physics": { + "forward": "PASS" + }, + "seconds": 0.5 + }, + { + "mutant": "M9 compensation coefficient doubled", + "violates": "S (scalar identity)", + "checker_flags": [ + "S" + ], + "rejected": true, + "first_messages": [ + "forward: S column mismatch at register 186", + "forward: S column mismatch at register 200", + "backward: S column mismatch at register 374" + ], + "physics": { + "forward": "FAIL (registers [186, 200])", + "backward": "FAIL (registers [374])" + }, + "seconds": 1.2 + }, + { + "mutant": "M10 compensation moved after the helper started climbing", + "violates": "G0 + S (compensation reads the entrance value)", + "checker_flags": [ + "G0" + ], + "rejected": true, + "first_messages": [ + "forward: G0 add at 14058 ('L', 200)<-('L', 374) frame 2 but labels 4,148 (A)", + "backward: G0 add at 14058 ('L', 374)<-('L', 200) frame 2 but labels 148,4 (A)" + ], + "physics": { + "forward": "FAIL (registers [186, 200])", + "backward": "FAIL (registers [374])" + }, + "seconds": 1.2 + }, + { + "mutant": "M11 kernel donor update with the donor still at label 0", + "violates": "G0 (common label at a nonzero-frame kernel update; inherited #471)", + "checker_flags": [ + "ACC", + "G0" + ], + "rejected": true, + "first_messages": [ + "forward: G0 add at 13547 ('L', 368)<-('L', 396) frame 6 but labels 0,6 (A)", + "forward: ACC paid profile {1: 2384, 2: 263, 3: 531, 4: 84, 5: 270, 6: 92, 8: 17, 7: 1} != word {'1': 2385, '2': 264, '3': 530, '4': 84, '5': 270, '6': 92, '7': 1, '8': 17}", + "backward: G0 add at 13547 ('L', 396)<-('L', 368) frame 6 but labels 6,0 (A)" + ], + "physics": { + "forward": "FAIL (registers [130, 188, 206, 221])", + "backward": "FAIL (registers [396])" + }, + "seconds": 1.1 + }, + { + "mutant": "M12 R_E^-1 wrapper after the first gate on the helper", + "violates": "G1 (wrapper surrounds the whole invocation)", + "checker_flags": [ + "G1" + ], + "rejected": true, + "first_messages": [ + "forward: G1 pre wrapper of 374 not the first event touching it", + "forward: G1 pre wrapper of 374 outside entry adapters", + "backward: G1 pre wrapper of 374 not the first event touching it" + ], + "physics": { + "forward": "FAIL (registers [186, 200])", + "backward": "FAIL (registers [374])" + }, + "seconds": 1.2 + }, + { + "mutant": "M13 L_E^-1 wrapper dropped", + "violates": "G1 (wrapper surrounds the whole invocation)", + "checker_flags": [ + "G1" + ], + "rejected": true, + "first_messages": [ + "forward: G1 entering helper 374 without post wrapper", + "backward: G1 entering helper 374 without post wrapper" + ], + "physics": { + "forward": "FAIL (registers [374])", + "backward": "FAIL (registers [374])" + }, + "seconds": 1.0 + } + ] +} diff --git a/research/r489-partial-own-kernel84/provenance/NOMINATION.json b/research/r489-partial-own-kernel84/provenance/NOMINATION.json new file mode 100644 index 0000000000..3ad6a028ce --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/NOMINATION.json @@ -0,0 +1,847 @@ +{ + "histogram": { + "1": 148282, + "2": 66816, + "3": 7408, + "4": 19728, + "5": 24368, + "6": 1744, + "7": 1800, + "8": 4376 + }, + "live": 7746, + "banks": 66, + "unhosted_per_replica": { + "(6, 9)": 66 + }, + "deficit": 2496, + "status": "NOMINATION_ONLY", + "scipy_status": 0, + "message": "Optimization terminated successfully. (HiGHS Status 7: Optimal)", + "mip_gap": 0.0, + "objective": 30445.167647508395, + "old_objective": 30429.840815766052, + "b": 0.001326789535340266, + "patterns": [ + [ + 0, + [ + [ + 0, + 9 + ] + ], + 2 + ], + [ + 0, + [ + [ + 0, + 9 + ], + [ + 1, + 7 + ] + ], + 14 + ], + [ + 0, + [ + [ + 0, + 8 + ], + [ + 1, + 8 + ] + ], + 104 + ], + [ + 1, + [], + 120 + ], + [ + 2, + [ + [ + 0, + 9 + ] + ], + 66 + ], + [ + 2, + [ + [ + 0, + 7 + ], + [ + 1, + 9 + ] + ], + 14 + ], + [ + 2, + [ + [ + 1, + 9 + ] + ], + 40 + ], + [ + 3, + [], + 16 + ], + [ + 3, + [ + [ + 2, + 8 + ] + ], + 104 + ], + [ + 4, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ] + ], + 78 + ], + [ + 4, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 7 + ], + [ + 3, + 7 + ] + ], + 14 + ], + [ + 4, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 5 + ], + [ + 3, + 9 + ] + ], + 4 + ], + [ + 4, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 3, + 8 + ] + ], + 24 + ], + [ + 5, + [], + 16 + ], + [ + 5, + [ + [ + 4, + 8 + ] + ], + 104 + ], + [ + 6, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ] + ], + 16 + ], + [ + 6, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 5 + ] + ], + 4 + ], + [ + 6, + [ + [ + 0, + 9 + ], + [ + 1, + 5 + ], + [ + 2, + 9 + ], + [ + 3, + 9 + ] + ], + 4 + ], + [ + 6, + [ + [ + 0, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 9 + ] + ], + 16 + ], + [ + 6, + [ + [ + 0, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 8 + ] + ], + 76 + ], + [ + 6, + [ + [ + 0, + 5 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 9 + ] + ], + 4 + ], + [ + 7, + [], + 106 + ], + [ + 7, + [ + [ + 4, + 7 + ] + ], + 14 + ], + [ + 8, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 9 + ], + [ + 4, + 9 + ] + ], + 54 + ], + [ + 8, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ], + [ + 4, + 9 + ], + [ + 5, + 9 + ] + ], + 66 + ], + [ + 9, + [], + 16 + ], + [ + 9, + [ + [ + 6, + 8 + ] + ], + 104 + ], + [ + 10, + [ + [ + 1, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 9 + ], + [ + 4, + 9 + ], + [ + 5, + 9 + ] + ], + 120 + ], + [ + 11, + [], + 120 + ], + [ + 12, + [ + [ + 3, + 9 + ], + [ + 4, + 9 + ], + [ + 5, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 90 + ], + [ + 12, + [ + [ + 3, + 9 + ], + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 30 + ], + [ + 13, + [ + [ + 3, + 9 + ], + [ + 4, + 9 + ], + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ] + ], + 2 + ], + [ + 13, + [ + [ + 3, + 9 + ], + [ + 4, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 106 + ], + [ + 13, + [ + [ + 3, + 9 + ], + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 8 + ], + [ + 13, + [ + [ + 3, + 8 + ], + [ + 4, + 5 + ], + [ + 5, + 8 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 4 + ], + [ + 14, + [ + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ] + ], + 110 + ], + [ + 14, + [ + [ + 5, + 7 + ], + [ + 6, + 7 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 6 + ], + [ + 14, + [ + [ + 5, + 5 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 4 + ], + [ + 15, + [ + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 5 + ] + ], + 4 + ], + [ + 15, + [ + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 5 + ], + [ + 8, + 9 + ] + ], + 4 + ], + [ + 15, + [ + [ + 5, + 9 + ], + [ + 6, + 5 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 4 + ], + [ + 15, + [ + [ + 5, + 8 + ], + [ + 6, + 9 + ], + [ + 8, + 9 + ] + ], + 100 + ], + [ + 15, + [ + [ + 5, + 7 + ], + [ + 6, + 7 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 8 + ], + [ + 16, + [ + [ + 7, + 9 + ] + ], + 46 + ], + [ + 16, + [ + [ + 7, + 9 + ], + [ + 8, + 7 + ] + ], + 14 + ], + [ + 16, + [ + [ + 8, + 9 + ] + ], + 60 + ], + [ + 17, + [ + [ + 7, + 9 + ] + ], + 2 + ], + [ + 17, + [ + [ + 7, + 8 + ], + [ + 8, + 8 + ] + ], + 104 + ], + [ + 17, + [ + [ + 7, + 7 + ], + [ + 8, + 9 + ] + ], + 14 + ] + ] +} diff --git a/research/r489-partial-own-kernel84/provenance/POOLED-ALLOCATION.json b/research/r489-partial-own-kernel84/provenance/POOLED-ALLOCATION.json new file mode 100644 index 0000000000..0540952b13 --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/POOLED-ALLOCATION.json @@ -0,0 +1,1406 @@ +{ + "status": "EXACT_INTEGER_ALL_HOSTED_ALLOCATION_PROFILE_ONLY_COLORING_PENDING", + "T": 8, + "ambient": 73, + "live": 7680, + "banked_residuals": 0, + "profile": { + "1": 148440, + "2": 66816, + "3": 7472, + "4": 19728, + "5": 25664, + "6": 144, + "7": 1800, + "8": 4120 + }, + "root_float": 0.0013338541562084585, + "patterns": [ + [ + 0, + [ + 8, + 8 + ], + 832 + ], + [ + 0, + [ + 9 + ], + 128 + ], + [ + 2, + [ + 9 + ], + 736 + ], + [ + 2, + [ + 9, + 7 + ], + 224 + ], + [ + 1, + [], + 848 + ], + [ + 1, + [ + 7 + ], + 112 + ], + [ + 3, + [], + 128 + ], + [ + 3, + [ + 8 + ], + 832 + ], + [ + 4, + [ + 9, + 9, + 9 + ], + 928 + ], + [ + 4, + [ + 9, + 9, + 9, + 5 + ], + 32 + ], + [ + 6, + [ + 8, + 8, + 8, + 8 + ], + 152 + ], + [ + 6, + [ + 9, + 8, + 8, + 7 + ], + 112 + ], + [ + 6, + [ + 9, + 9, + 9 + ], + 600 + ], + [ + 6, + [ + 9, + 9, + 9, + 5 + ], + 96 + ], + [ + 5, + [ + 5 + ], + 16 + ], + [ + 5, + [ + 7 + ], + 112 + ], + [ + 5, + [ + 8 + ], + 832 + ], + [ + 7, + [], + 944 + ], + [ + 7, + [ + 5 + ], + 16 + ], + [ + 8, + [ + 9, + 9, + 9, + 9, + 9 + ], + 960 + ], + [ + 10, + [ + 9, + 9, + 9, + 9, + 9 + ], + 960 + ], + [ + 9, + [], + 960 + ], + [ + 11, + [], + 16 + ], + [ + 11, + [ + 7 + ], + 112 + ], + [ + 11, + [ + 8 + ], + 832 + ], + [ + 12, + [ + 9, + 9, + 9, + 9, + 9 + ], + 960 + ], + [ + 13, + [ + 9, + 9, + 9, + 9, + 9 + ], + 960 + ], + [ + 14, + [ + 8, + 8, + 8, + 8 + ], + 208 + ], + [ + 14, + [ + 9, + 9, + 7, + 7 + ], + 56 + ], + [ + 14, + [ + 9, + 9, + 9 + ], + 632 + ], + [ + 14, + [ + 9, + 9, + 9, + 5 + ], + 64 + ], + [ + 15, + [ + 9, + 9, + 9 + ], + 896 + ], + [ + 15, + [ + 9, + 9, + 9, + 5 + ], + 64 + ], + [ + 16, + [ + 8, + 8 + ], + 416 + ], + [ + 16, + [ + 9 + ], + 432 + ], + [ + 16, + [ + 9, + 7 + ], + 112 + ], + [ + 17, + [ + 8, + 8 + ], + 416 + ], + [ + 17, + [ + 9 + ], + 432 + ], + [ + 17, + [ + 9, + 7 + ], + 112 + ] + ], + "stage_assignments": [ + [ + 0, + 9, + 1, + 128 + ], + [ + 0, + 8, + 0, + 832 + ], + [ + 0, + 8, + 1, + 832 + ], + [ + 2, + 9, + 0, + 960 + ], + [ + 2, + 7, + 0, + 112 + ], + [ + 2, + 7, + 1, + 112 + ], + [ + 1, + 7, + 2, + 112 + ], + [ + 3, + 8, + 2, + 832 + ], + [ + 4, + 9, + 2, + 1128 + ], + [ + 4, + 9, + 3, + 1752 + ], + [ + 4, + 5, + 0, + 32 + ], + [ + 6, + 9, + 0, + 2200 + ], + [ + 6, + 8, + 3, + 832 + ], + [ + 6, + 7, + 3, + 112 + ], + [ + 6, + 5, + 1, + 32 + ], + [ + 6, + 5, + 2, + 32 + ], + [ + 6, + 5, + 3, + 32 + ], + [ + 5, + 8, + 4, + 832 + ], + [ + 5, + 7, + 4, + 112 + ], + [ + 5, + 5, + 4, + 16 + ], + [ + 7, + 5, + 4, + 16 + ], + [ + 8, + 9, + 1, + 2424 + ], + [ + 8, + 9, + 2, + 2376 + ], + [ + 10, + 9, + 0, + 344 + ], + [ + 10, + 9, + 1, + 952 + ], + [ + 10, + 9, + 4, + 3504 + ], + [ + 11, + 8, + 6, + 832 + ], + [ + 11, + 7, + 6, + 112 + ], + [ + 12, + 9, + 3, + 1752 + ], + [ + 12, + 9, + 6, + 3048 + ], + [ + 13, + 9, + 7, + 2416 + ], + [ + 13, + 9, + 8, + 2384 + ], + [ + 14, + 9, + 5, + 1744 + ], + [ + 14, + 9, + 6, + 456 + ], + [ + 14, + 8, + 5, + 832 + ], + [ + 14, + 7, + 5, + 112 + ], + [ + 14, + 5, + 5, + 32 + ], + [ + 14, + 5, + 7, + 32 + ], + [ + 15, + 9, + 8, + 1120 + ], + [ + 15, + 9, + 5, + 1760 + ], + [ + 15, + 5, + 8, + 32 + ], + [ + 15, + 5, + 6, + 32 + ], + [ + 16, + 9, + 7, + 544 + ], + [ + 16, + 8, + 7, + 832 + ], + [ + 16, + 7, + 7, + 112 + ], + [ + 17, + 9, + 7, + 544 + ], + [ + 17, + 8, + 8, + 832 + ], + [ + 17, + 7, + 8, + 112 + ] + ], + "windows": { + "0": [ + 1, + 16, + [ + 0, + 1 + ] + ], + "2": [ + 1, + 16, + [ + 0, + 1 + ] + ], + "1": [ + 1, + 8, + [ + 2 + ] + ], + "3": [ + 1, + 8, + [ + 2 + ] + ], + "4": [ + 2, + 32, + [ + 0, + 1, + 2, + 3 + ] + ], + "6": [ + 2, + 32, + [ + 0, + 1, + 2, + 3 + ] + ], + "5": [ + 2, + 8, + [ + 4 + ] + ], + "7": [ + 2, + 8, + [ + 4 + ] + ], + "8": [ + 3, + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5 + ] + ], + "10": [ + 3, + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5 + ] + ], + "9": [ + 3, + 8, + [ + 6 + ] + ], + "11": [ + 3, + 8, + [ + 6 + ] + ], + "12": [ + 0, + 48, + [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + ], + "13": [ + 0, + 48, + [ + 3, + 4, + 5, + 6, + 7, + 8 + ] + ], + "14": [ + 1, + 32, + [ + 5, + 6, + 7, + 8 + ] + ], + "15": [ + 1, + 32, + [ + 5, + 6, + 7, + 8 + ] + ], + "16": [ + 2, + 16, + [ + 7, + 8 + ] + ], + "17": [ + 2, + 16, + [ + 7, + 8 + ] + ] + }, + "sides": { + "0": 0, + "2": 1, + "1": 0, + "3": 1, + "4": 0, + "6": 1, + "5": 0, + "7": 1, + "8": 0, + "10": 1, + "9": 0, + "11": 1, + "12": 0, + "13": 1, + "14": 0, + "15": 1, + "16": 0, + "17": 1 + }, + "pairs": { + "0": 1, + "2": 1, + "1": 1, + "3": 1, + "4": 2, + "6": 2, + "5": 2, + "7": 2, + "8": 3, + "10": 3, + "9": 3, + "11": 3, + "12": 0, + "13": 0, + "14": 1, + "15": 1, + "16": 2, + "17": 2 + }, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 8, + 9, + 9, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 8, + 8, + 8, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 5, + 5, + 5, + 5, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8 + ], + "local_paid": { + "1": 2057, + "2": 928, + "3": 50, + "4": 274, + "5": 314, + "6": 2, + "7": 1, + "8": 17 + }, + "solver_message": " message: Optimization terminated successfully. (HiGHS Status 7: Optimal)\n success: True\n status: 0\n fun: 859.005692015194\n x: [ 0.000e+00 0.000e+00 ... 0.000e+00 0.000e+00]\n mip_node_count: 1\n mip_dual_bound: 859.005692015194\n mip_gap: 0.0", + "seconds": 0.03242441697511822, + "gap": 0.0 +} diff --git a/research/r489-partial-own-kernel84/provenance/POOLED-COLORING.json b/research/r489-partial-own-kernel84/provenance/POOLED-COLORING.json new file mode 100644 index 0000000000..a9b673baab --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/POOLED-COLORING.json @@ -0,0 +1,91 @@ +{ + "status": "PASS_EXPLICIT_CROSS_REPLICA_WHOLE_OWNER_COLORING", + "roles": 40320, + "invocations": 72, + "one_helper_per_physical_family_per_complete_invocation": true, + "all_active_owners_disjoint": true, + "all_helpers_assigned_once_each_invocation": true, + "all_idle_footprints_disjoint": true, + "live": 7680, + "banks": 0, + "rank_mass": 558144, + "deficit": 2496, + "profile": { + "1": 148440, + "2": 66816, + "3": 7472, + "4": 19728, + "5": 25664, + "6": 144, + "7": 1800, + "8": 4120 + }, + "cross_replica_helper_roles": 35280, + "perstage": [ + { + "stage": 0, + "physical_families": 2285, + "maximum_slots_per_family": 5, + "roles": 4480, + "colors": 8 + }, + { + "stage": 1, + "physical_families": 1365, + "maximum_slots_per_family": 5, + "roles": 4480, + "colors": 8 + }, + { + "stage": 2, + "physical_families": 1828, + "maximum_slots_per_family": 5, + "roles": 4480, + "colors": 8 + }, + { + "stage": 3, + "physical_families": 1231, + "maximum_slots_per_family": 5, + "roles": 4480, + "colors": 8 + }, + { + "stage": 4, + "physical_families": 1677, + "maximum_slots_per_family": 5, + "roles": 4480, + "colors": 8 + }, + { + "stage": 5, + "physical_families": 1395, + "maximum_slots_per_family": 4, + "roles": 4480, + "colors": 8 + }, + { + "stage": 6, + "physical_families": 1738, + "maximum_slots_per_family": 5, + "roles": 4480, + "colors": 8 + }, + { + "stage": 7, + "physical_families": 2020, + "maximum_slots_per_family": 5, + "roles": 4480, + "colors": 8 + }, + { + "stage": 8, + "physical_families": 1411, + "maximum_slots_per_family": 5, + "roles": 4480, + "colors": 8 + } + ], + "owner_raw_sha256": "afc95cc383004b0fada477bbc841e571bb5a10cf2bad851bd5a17bb6ee792ee8", + "scope": "Exact emitted combinatorial assignment and complete paid profile. Actual spectator routes and generalized cross-replica physical controller/compiler normalization remain to be replayed before supplier admission." +} diff --git a/research/r489-partial-own-kernel84/provenance/POOLING-PROOF.txt b/research/r489-partial-own-kernel84/provenance/POOLING-PROOF.txt new file mode 100644 index 0000000000..c479eb29a2 --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/POOLING-PROOF.txt @@ -0,0 +1,26 @@ +OpenAI Codex — complex484 cross-replica whole-owner derivative. + +UNCHANGED LOCAL OPERATOR +The source canonical word, both serialized local instruction streams, frame/phase recipes, residual adapters, local paid profile, and source data routes are unchanged. Each complete invocation has240active data owners and560helper owners, with all800physical families distinct. An entering helper uses the source paid pre/post wrappers around the whole invocation. Its residual and borrowed spectator coordinates lie in one physical owner family. Replica labels only name storage; they do not enter the local arbitrary-dirt theorem or normalized residual identity. For a fixed invocation each family has only one route sigma, so two distinct cover classes d produce distinct physical cover classes d*sigma^-1. Each complete cover sweep therefore consists of disjoint whole-owner instances of the same local theorem. A later invocation may reuse the family after that sweep has completed; its arbitrary dirty input includes the earlier invocation output. + +GLOBAL ORDER +For each recipe phase, invocation replicas run in increasing order and each complete cover sweep/complete local invocation finishes before the next. All source bridge, terminal and translation phases are retained. A helper's owner family belongs to an idle pair whose last data invocation or bridge touch precedes the helper's stage; its idle child follows the stage. Thus no data or bridge operation touches that family in the relevant interval. Spectators are restored identically at the end of each complete invocation, so later invocations may borrow them again. + +WHOLE-OWNER ASSIGNMENT +The discovery LP/MILP uses a multiset of complete residual widths per physical idle copy, with at most8slots. Aggregate stage-width demands equal8copies of each actual helper width. The finite allocation is expanded before replica assignment. At each stage, form a bipartite multigraph whose left vertices are physical families and whose right vertices are actual helper IDs; width classes are split into560right vertices, each with degree8. Every left degree is at most8. Dummy right vertices make an8regular bipartite multigraph. Eight explicit perfect matchings color every real edge by invocation replica. Each helper occurs exactly once per invocation and each physical family is used at most once per invocation. The frozen40320role map is the result; no optimizer or matching code runs in the portable emitter. + +ACTUAL CHARTS AND IDLE COMPLETION +The actual73-column orthogonal port basis is independently reconstructed. For a widthw residual, its firstwcolumns are the assigned pending axes; its next9-wcolumns are the first unused basis columns, serving as spectators; the remaining columns complete the full orthogonal map. Every helper is transported whole through this one chart. All occupied residual coordinates are disjoint within each physical idle child across all stages and replicas. Its emitted remainder is exactly the unused suffix. Completed normalized helper residual factors and this paid remainder commute and yield the original idle child. No helper residual is split and no scalar-coordinate reindexing is used. + +STOCK AND PRICE +All40320helper residuals are hosted, eliminating all66banks. Live stock7680, physical stock8258, rank mass558144, deficit2496. Complete paid profile: +1:148440,2:66816,3:7472,4:19728,5:25664,6:144,7:1800,8:4120. +Two exact rational moment engines enclose the inherited-envelope complex root in +[1333854156208409156010,1333854156208409156011]/10^24. +No all-size coefficient invoice or final kappa is claimed by this scratch profile receipt. The complete compiler/invoice must account for reuse across replicas without assuming independent physical histories. + +EVIDENCE +COLORING.json and COLORED-OWNERS.json.gz: explicit matching construction and exact integer ownership checks. +hosted/GLOBAL-TEMPLATE.json.gz and HOSTED.json: portable emitted physical controller. +HOSTING-AUDIT.json: independent source-bound read-back,40320window/owner checks,72complete invocations,3960actual orthogonal charts,8784entering spectator routes,18rejected mutations. +EXACT-MOMENT.json: two exact rational moment engines. diff --git a/research/r489-partial-own-kernel84/provenance/PR484-INDEPENDENT.json b/research/r489-partial-own-kernel84/provenance/PR484-INDEPENDENT.json new file mode 100644 index 0000000000..68b7a075b5 --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/PR484-INDEPENDENT.json @@ -0,0 +1,411 @@ +{ + "status": "PASS_INDEPENDENT_PINNED_PR484_FINITE_SUPPLIER_ADMISSION", + "source": { + "pr": 484, + "commit": "035845ce95f31d0a2dcfb42b8c8e13411271fa5f", + "archive_sha256": "540c286751302f3cad9be2fb5da0fc5f8ddddf88990c4716aa6ed97a4defbbd2", + "package_manifest_sha256": "56199b350a49a6d9c114eec1620e889eedb89170af2b872bf8b8f42df8a961a2", + "dependencies": { + "e8-early-reset-kernel": "95a9570287b64d22de30e6ae3acf931d5f6daef1a163f0c99532e1a24639fbc2", + "e8-early-reset-reuse": "4d23bafa43634a59e25f875333408b67cbecb1c912929824b5d45dea4de51da7", + "idle-axis-hosting": "f68b82604363329618529313ac9c3796dc1e88b176eaee4a7b0dec9be428e987", + "split-centres-global": "3129eb4321f706542470f8443f66a6b4351a12a9ceec85e7f76aa19db1e1e32f" + } + }, + "complex_lower": "663394767670133/500000000000000000", + "complex_decimal": "0.001326789535340266", + "complex_cap_kappa": "662515748707749/500000000000000000", + "hosted_template_sha256": "18450983dd5a5dab0534e5ecf3e5a9e0d5c2e10500d26fe720482972ba8c7759", + "paid_profile": { + "1": 148216, + "2": 66816, + "3": 7408, + "4": 19728, + "5": 24896, + "6": 1216, + "7": 1800, + "8": 4376, + "9": 66 + }, + "live": 7746, + "physical": 8324, + "rank_mass": 562962, + "deficit": 2496, + "all_800_owners_per_call_distinct": true, + "actual_owner_charts": 40320, + "owner_charts_sha256": "c9242a516985dd8da4889aaf302d2eded847335baf33a35b773d4f39c835e1c6", + "scalar_and_prefix": { + "backward": { + "events": 25082, + "macros": 19708, + "real_component_primitives": 221516, + "prefix_l1": "1039266", + "prefix_bits": 20, + "coefficient_work_primitive_count": 109970, + "all_exact_columns": 800, + "all_560_dirty_helper_columns_restored": true, + "private_centres_and_coefficient_work_cleared": true + }, + "forward": { + "events": 25082, + "macros": 19708, + "real_component_primitives": 221420, + "prefix_l1": "32209", + "prefix_bits": 15, + "coefficient_work_primitive_count": 109906, + "all_exact_columns": 800, + "all_560_dirty_helper_columns_restored": true, + "private_centres_and_coefficient_work_cleared": true + } + }, + "finite_invoice": { + "status": "PASS_INDEPENDENT_SCALAR_PREFIX_AND_HOSTED_FINITE_INVOICE", + "local": { + "backward": { + "events": 25082, + "macros": 19708, + "real_component_primitives": 221516, + "prefix_l1": "1039266", + "prefix_bits": 20, + "coefficient_work_primitive_count": 109970, + "all_exact_columns": 800, + "all_560_dirty_helper_columns_restored": true, + "private_centres_and_coefficient_work_cleared": true + }, + "forward": { + "events": 25082, + "macros": 19708, + "real_component_primitives": 221420, + "prefix_l1": "32209", + "prefix_bits": 15, + "coefficient_work_primitive_count": 109906, + "all_exact_columns": 800, + "all_560_dirty_helper_columns_restored": true, + "private_centres_and_coefficient_work_cleared": true + } + }, + "entering_helpers": 122, + "entrance_rank": 148, + "local_adapters": 391344, + "local_primitive_bound": 10149247009100, + "wrapper_elementary_factors_charged": 2529792, + "compiler": 25934336, + "unhosted_pervertex": 1299225185815824, + "hosted_rebased_pervertex": 1299225185487540, + "conservative_pervertex_used": 1299225185815824, + "finite": { + "physical_stock_bits": 2641, + "router_bits": 7984, + "literal_bits": 35282, + "physical_row_coefficient": 15443, + "retained_row_coefficient": 20161, + "required_C0_bits": 200012, + "halving_integer_inequality": [ + 5329, + 162 + ], + "G_exponent": 30000, + "E_exponent": 100000, + "C0_exponent": 210000 + }, + "strict_checks": { + "local_primitive_bound": true, + "logical": true, + "router": true, + "literal": true, + "mass": true, + "precision": true, + "tape": true, + "row": true, + "halving": true + }, + "scope": "Exact finite recount conditional on inherited all-size compiler/precision/tape and analytic-transfer contracts. Signed accumulation uses the supplier scalar primitive convention." + }, + "operator_instances": { + "variant": "gauge80-kernel42", + "I-tr": { + "transitions": 2945, + "columns_each": 512, + "failures": [] + }, + "I-comp": { + "compensation_gates": 420, + "targets": 50, + "entering_helpers_compensating": 80, + "input_registers": 130, + "columns_each": 512, + "target_levels_after_segment": [ + 2, + 4, + 5 + ], + "failures": [] + }, + "I-centre": { + "centres": 16, + "detail": [ + { + "centre": 0, + "register": 99, + "frame": 480, + "path_dims": [ + 8, + 0 + ], + "targets": 28 + }, + { + "centre": 1, + "register": 64, + "frame": 481, + "path_dims": [ + 8, + 4, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 2, + "register": 365, + "frame": 482, + "path_dims": [ + 8, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 3, + "register": 30, + "frame": 483, + "path_dims": [ + 8, + 4, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 4, + "register": 393, + "frame": 484, + "path_dims": [ + 8, + 4, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 5, + "register": 98, + "frame": 485, + "path_dims": [ + 8, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 6, + "register": 421, + "frame": 486, + "path_dims": [ + 8, + 4, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 7, + "register": 96, + "frame": 487, + "path_dims": [ + 8, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 8, + "register": 35, + "frame": 967, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 9, + "register": 0, + "frame": 964, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 10, + "register": 13, + "frame": 965, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 11, + "register": 54, + "frame": 970, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 12, + "register": 40, + "frame": 968, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 13, + "register": 119, + "frame": 971, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 14, + "register": 22, + "frame": 966, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 15, + "register": 51, + "frame": 969, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + } + ], + "failures": [] + }, + "I-helper": { + "entering_helpers": 122, + "widths": { + "8": 104, + "7": 14, + "5": 4 + }, + "columns_each": 512, + "failures": [] + }, + "seconds": 98.3 + }, + "end_to_end_sample": { + "variant": "gauge80-kernel42", + "seed": 2026, + "columns": 806, + "kinds": { + "centre": 16, + "port": 240, + "entering": 244, + "target_level": 50, + "random": 256 + }, + "batches": 26, + "failures": [], + "dense": 8, + "seconds": 65.0, + "status": "PASS" + }, + "integer_safety": { + "PREOP-GUARDS-lg_e2e": { + "add_calls": 251154, + "scale_calls": 8858, + "primitive_calls": 856399, + "maximum_proved_numerator_bits": 29 + }, + "PREOP-GUARDS-lg_instances": { + "add_calls": 1116, + "scale_calls": 884, + "primitive_calls": 100842, + "maximum_proved_numerator_bits": 14 + } + }, + "observed_process_exits": [ + { + "session_id": 41628, + "action": "full pinned source verify.py --discover-check", + "exit_code": 0 + }, + { + "session_id": 81200, + "action": "fresh independent data route phases and exact match", + "exit_code": 0 + }, + { + "session_id": 46476, + "action": "actual owner charts and complete paid profile", + "exit_code": 0 + }, + { + "session_id": 33480, + "action": "guarded exact physical e2e both orientations", + "exit_code": 0 + }, + { + "session_id": 79938, + "action": "guarded exhaustive operator instances", + "exit_code": 0 + }, + { + "session_id": 81647, + "action": "all scalar columns, explicit coefficient lowering, prefix, finite invoice", + "exit_code": 0 + } + ], + "proof_admission": { + "common_frame_invariant": "At label F write physical h=T_F*l. Serialized transition T_B*T_A^-1 preserves l; additions/copies at a common label, scales, and clears act exactly as their scalar events. Fresh both-orientation label checks and exact 800-column scalar identity therefore imply the full local physical identity on all external slices, not just the sampled e2e inputs.", + "gauge_schedule": "Targets climb through nested entrance chains; centre private copies descend through served target levels (backward gather ascends), with paid child ranks at every transition, no unrelated climb while a copy is live, and explicit private clearing. All emitted common labels/endpoints and rank telescopes checked.", + "normalization_and_owners": "Each of122entering helper complete chains is normalized by the two paid monomial wrappers to C_[w] tensor identity on all512basis columns. Complete-call all800owner injectivity ensures no other register touches its physical family during normalization. The residual and spectators extend to an explicit orthogonal73axis chart of the same owner. Disjoint residual slots across calls and untouched spectators permit the inherited whole-residual schedule.", + "scope": "Finite witness under inherited all-size compiler, precision/tape/common-grid and analytic-transfer contracts. This audit does not discharge those contracts and does not claim an unconditional integer multiplication theorem.", + "e2e_scope": "806basis and8dense inputs are direct program spot checks, not an exhaustive409600-column physical program matrix. Exhaustive local transition/normalizer identities plus all800scalar columns and the common-label proof give the all-input implication.", + "overflow_scope": "Vendored post-operation int64 guards alone do not prove no wraparound. Independent Python-integer pre-operation bounds cover all expanding arithmetic in the executed operator/e2e audits, with maxima14and29bits.", + "provenance": "PR484 author DreamingOfClouds with Claude Opus5.5, extending cited PR425/433/442/458/471. Independent audit prepared by OpenAI Codex. All public source heads remain unchanged." + } +} diff --git a/research/r489-partial-own-kernel84/provenance/PR493-INVOICE.json b/research/r489-partial-own-kernel84/provenance/PR493-INVOICE.json new file mode 100644 index 0000000000..5b25e02313 --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/PR493-INVOICE.json @@ -0,0 +1,431 @@ +{ + "status": "PASS_INDEPENDENT_PR493_PINNED_SOURCE_INVOICE_AND_EXACT_ASSEMBLY", + "head": "c3a9a436b84fe44fdc223a5784d84736d1c2d3c7", + "manifest_sha256": "7f25c41d0400ef5adf763eae6e166003a9b59e5a655b860c04b052f6731c7297", + "manifest_files": 93, + "git_blob_files": 94, + "full_verifier_observed_exit": 0, + "full_verifier_log_sha256": "a045a112024011d84dffd84eaa1b566d152bec2c49023e1f596afbabc86be0c8", + "boost_cpp_int_header": { + "path": "/private/tmp/balanced-coarse-openmp-env/boost_1_88_0/boost/multiprecision/cpp_int.hpp", + "sha256": "4099045e8ac3e3507779c08980272b261a86498a23a4d0bb0786849f5424595a" + }, + "result_sha256": "888053031873aeb7b8b90a57603983935877a211d4b3d0b8f3cec926a097a9c9", + "native_columns_sha256": "e86d290225bcb4bfdd00f2fa4eb397f93f31d8e3dbeb97685b66378c131c1f5b", + "native_eleven_columns_sha256": "3ef1fcd596b5246a622f353882966ecd01b99cf12ea10c35006a8c5252973e1e", + "bit_lower": "391360506745414227149/250000000000000000000000", + "actual_bit_profile": { + "1": 105600, + "2": 130560, + "4": 19680, + "6": 14400, + "7": 7680, + "8": 1584, + "48": 2, + "56": 2628 + }, + "rank_mass": 745536, + "paid_calls": 282134, + "invoice_parts": { + "local_dispatch": "3014160", + "high_routes": "401472278438400", + "route_stock": "6511673376", + "children": "137114282346352", + "fixed": "7593624", + "selectors": "2539200400", + "prefix": "66373732221337597552469934545939372516278749651185797136086609883642693545424899717784554520808632722221244884703980115117609601480159478352587716532455545421925053325357387274889255141046585273941336207489494200729211582783863262441944067528524628395439990459047009309017313552583961518212164275423439329481199911934032765061875022560139107478868540579186448602819729691740721954870327575692267248554215382148740178916746058459531411725026797177268277239270813996417970965847651454554965524574421221703591269967323174197929455340239966004038995589958193601232168837785498658003625941450065240231350919781390937077370557284383908026022131", + "one": "1" + }, + "prefix_bits": 2119, + "charged_prefix_bits": 2176, + "three_level_coefficient_bits": 6411, + "charged_coefficient_bits": 6464, + "row_coefficient": 19431, + "retained_row_allowance": 20161, + "exact_moment_intervals": { + "391360506745414227149/250000000000000000000000": { + "mercator": [ + "13479973333575319897333478455659963242050950604381206890507305414367/13479973333575319897333507543509815336818572211270286240551805124608", + "421249166674228746791671201739373851314092206386912715328353294199/421249166674228746791672110734681729275580381602196445017243910144" + ], + "base_two": [ + "9999999999999999999999978421424878418597113453/10000000000000000000000000000000000000000000000", + "999999999999999999999997842143487841859711357/1000000000000000000000000000000000000000000000" + ] + }, + "1565442026981656908597/1000000000000000000000000": { + "mercator": [ + "26959946667150639794667032184033602735769420219441408903824017543587/26959946667150639794667015087019630673637144422540572481103610249216", + "26959946667150639794667032184033602735769420219441408903824017543589/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two": [ + "10000000000000000000000006341634878740369872307/10000000000000000000000000000000000000000000000", + "10000000000000000000000006341644878740369872423/10000000000000000000000000000000000000000000000" + ] + } + }, + "outer": { + "pr484": { + "kappa": "662515748707749/500000000000000000", + "bootstrap": [ + { + "gap": "427335569559551465285668270564668661049905787161779873237100237689/250000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "12320956716195" + }, + { + "gap": "283492180885142603889639544206899680081729101869392670861258397954258511930123407151819032953757363/125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6999070319883749351" + }, + { + "gap": "188067229474598496934035012150457161314006714316372703962317536585017196299947505205093104765496012564747284225408989706180296060721/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "3975907591517492699653606" + }, + { + "gap": "124762816003666858856748636182886224040736703655819284863749197866868114307527699180333043981943234582196440913449541548744768401202277466550177281004893512933854107/31250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2258562988198265309176868041595" + }, + { + "gap": "82766999336624127071050550259737149212852112682736739199097884331907509175179089101169445347572709837014359036671093627713822293934627171380882169762478408196651890955053266805546136718339476713769/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1283004359191388493404376798428985262" + }, + { + "gap": "54907194295673814856379330585942307005649262055663806296626605067848318014467193065199083150106157388806274586814705945205707239871870756963620124971136825540514367912384131824750784074452593339064102406877980519739415504548838723/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "728826335287313423793325277497466743815803" + } + ], + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "slacks": { + "bit_positive": "10365543244845828059719449959480357018620669414057692994350737944336193703373394932151681985532806934800916849893842611193725413185294054794292760128129243036379875028863174459485632087615868175249215925547406660935897593122019480260584495451161277/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "65280550040519642981379330585942307005649262055663806296626605067848318014467193065199083150106157388806274586814705945205707239871870756963620124971136825540514367912384131824750784074452593339064102406877980519739415504548838723/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "14961605232329867/500000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "54915006795673814856379330585942307005649262055663806296626605067848318014467193065199083150106157388806274586814705945205707239871870756963620124971136825540514367912384131824750784074452593339064102406877980519739415504548838723/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "5182771622422914019494181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "10365543244845828059719449959480357018620669414057692994350737944336193703373394932151681985532806934800916849893842611193725413185294054794292760128129243036379875028863174459485632087615868175249215925547406660935897593122019480260584495451161277/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "37823046642682735487909115252451510521445300441889596142664040478260352710606991464751223560585885629204054143301195583796579033121229433276102822613697655806637058985055240371861024124842164844781267128986396920805605345396438841760584495451161277/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "5182771622422914996056681734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "3901067228377577085003943318265105649550409115252451510521445300441889596142664040478260352710606991464751223560585885629204054143301195583796579033121229433276102822613697655806637058985055240371861024124842164844781267128986396920805605345396438841760584495451161277/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "10365543244845828059719449959480357018620669414057692994350737944336193703373394932151681985532806934800916849893842611193725413185294054794292760128129243036379875028863174459485632087615868175249215925547406660935897593122019480260584495451161277/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "75646093285365471041098780545422664024269931469721499290977343012184511717840587997350765135638964323607191436708548556399432653057164811757912885099266068576894242941247306284236416162068461514313318332425387180675313097670858203260584495451161277/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "10365543244845828059719449959480357018620669414057692994350737944336193703373394932151681985532806934800916849893842611193725413185294054794292760128129243036379875028863174459485632087615868175249215925547406660935897593122019480260584495451161277/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "10365543244845828059719449959480357018620669414057692994350737944336193703373394932151681985532806934800916849893842611193725413185294054794292760128129243036379875028863174459485632087615868175249215925547406660935897593122019480260584495451161277/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "37823046642682735487909115252451510521445300441889596142664040478260352710606991464751223560585885629204054143301195583796579033121229433276102822613697655806637058985055240371861024124842164844781267128986396920805605345396438841760584495451161277/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "5182771622422914019494181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "3906249999999999996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/3911432771622422914019494181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723", + "epsilon_below_one": "5182771622422917925744181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723/3911432771622422914019494181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723", + "guard_width": "5182771622422917925744181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723/3911432771622422914019494181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723", + "K_geometry": "2934870271622422914996056681734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723/3911432771622422914019494181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723000000000000000000", + "K_dominates_log": "5182771622422914990873910112471435453534203012654139028963814810561914378781259963629243432057049013509129150021105835547169417284690045407475110179966150520476210507531777469465763628642415434776034860213075527079756995855767923975661783589958079045020849945277564760584495451161277/3911432771622422914019494181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723000000000000000000", + "record_suffix": "5182771622422917925744181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723/3911432771622422914019494181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723", + "phase_local": "41462172979383339494520682256731889577232896245493565378846711717334741380132976615806774457808108760250564225919906431118790414176320958831421878331360117587756452211648186823006350733255732831748865986317921613610887092950989478336424365814886186720929381787148625760584495451161277/31291462172979383312155953453879154803596727077980387915828437596464883230858687676173917178315144068281990211515312914966367566853590435329627367735030164533791177419090418753546903528119558077025111807001262681241749862968108824633555157236828489265915324036390709784000000000000000000", + "phase_boundary": "8292434595876664769757919153408046699851233861183232716096634545428156693182835676673031805692854134658395013669574458024736931303972695129527690307228490554814516939313183985483528237609271211659420385307776620210996718463929771492298576352094773988670152674580798560584495451161277/6258292434595876662431190690775830960719345415596077583165687519292976646171737535234783435663028813656398042303062582993273513370718087065925473547006032906758235483818083750709380705623911615405022361400252536248349972593621764926711031447365697853183064807278141956800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "7812499999999999988276067228377577085980505818265105649550409115252451510521445300441889596142664040478260352710606991464751223560585885629204054143301195583796579033121229433276102822613697655806637058985055240371861024124842164844781267128986396920805605345396438841760584495451161277/15645731086489691656077976726939577401798363538990193957914218798232441615429343838086958589157572034140995105757656457483183783426795217664813683867515082266895588709545209376773451764059779038512555903500631340620874931484054412316777578618414244632957662018195354892000000000000000000", + "prime_interval_packing": "5182771622422917925744181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723/3911432771622422914019494181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723", + "alpha_positive": "10365543244845831940055591847365786879687587760202628507518514368672318236117219485368890721450057548757905589435220206343115273983494461610896077058736717244373387893834121662828704643587175062915010735370910682298489866869371003170056438193519237284436354494116287760584495451161277/7822865543244845828038988363469788700899181769495096978957109399116220807714671919043479294578786017070497552878828228741591891713397608832406841933757541133447794354772604688386725882029889519256277951750315670310437465742027206158388789309207122316478831009097677446000000000000000000", + "alpha_below_one": "7812499999999999996098932771622422914019494181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723/7822865543244845828038988363469788700899181769495096978957109399116220807714671919043479294578786017070497552878828228741591891713397608832406841933757541133447794354772604688386725882029889519256277951750315670310437465742027206158388789309207122316478831009097677446000000000000000000", + "alpha_below_one_fourth": "1945350842566365625069691499020081388345107854613571616231758835410382883692550760275500932923246446718866482630271836979054857654365907746490814406380648566117575200799317050433852765863885204751154477202208006895310876568637430536427140889108261341835271397780303073739415504548838723/7822865543244845828038988363469788700899181769495096978957109399116220807714671919043479294578786017070497552878828228741591891713397608832406841933757541133447794354772604688386725882029889519256277951750315670310437465742027206158388789309207122316478831009097677446000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "30477033999456440569135151849796924432301061141507378092637525081353395676351709927441925286595227981187599605912008258703476629796613760789061753474232853120162434592578970904987178831570725692856230457545465564499457908013363903193044315911464397679787442062705826067855487215716018063883965165095954628967344349519276341275687762283944174599833819907786124149041019471163257530736175554404036831226415736831059001043072114431478858998635084817947070390231414258449684598172151279595769566168752847764746727864270729/30558068528300179015777298294803862112887428787090222574051208590297737530135437183763590994448382879181631065932922768521843327005459409501589226303740395052530446698330487064010647976679255934594835749024670587150146350554793774056206208239090321548745433629287802523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "219081697383835066540231925945900507170832299169047786377976273425961711315305165508065668638093160424821140633990682345336686864146965825749406779450337729518939682253359661728546919757115371648780983279054935728818415831370344102534097456507668723364905776254936361746718246513646516169/31291462172979383312155953453879154803596727077980387915828437596464883230858687676173917178315144068281990211515312914966367566853590435329627367735030164533791177419090418753546903528119558077025111807001262681241749862968108824633555157236828489265915324036390709784000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "3639735127798079050768877667790835393361515002286438587534932301662140354911995764172479266879820400180457628602892967438999071048550591156468727639055371725810766073104169875379325385103446977697796778917921878871864282743124081945533092003742157602126971354138635473/1955716385811211457009747090867447175224795442373774244739277349779055201928667979760869823644696504267624388219707057185397972928349402208101710483439385283361948588693151172096681470507472379814069487937578917577609366435506801539597197327301780579119707752274419361500000000000000000", + "coordinate_movement_above_kappa": "13734671287249934719449959480357018620669414057692994350737944336193703373394932151681985532806934800916849893842611193725413185294054794292760128129243036379875028863174459485632087615868175249215925547406660935897593122019480260584495451161277/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "3368037483973735187518261153846776436273439119825328685591309903766170305966655568823218886470247791825666480766371820507202196240402377896734034311231972884897634968822037406565287829191949195767454581960685922588509832615234560811871789352880754046014527203728432223/3911432771622422914019494181734894350449590884747548489478554699558110403857335959521739647289393008535248776439414114370795945856698804416203420966878770566723897177386302344193362941014944759628138975875157835155218732871013603079194394654603561158239415504548838723000000000000000000", + "bulk_exposure_above_kappa": "13734671287249934719449959480357018620669414057692994350737944336193703373394932151681985532806934800916849893842611193725413185294054794292760128129243036379875028863174459485632087615868175249215925547406660935897593122019480260584495451161277/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "38678598186657150242204571775978894541536285612845274953166143328803693659305252429150970033630161360211078175449216907170005407493315436422482537390492094779352771282735206285102391456580427845024053583310960886173734859534917295732557498786856715842834464143473973953/31291462172979383312155953453879154803596727077980387915828437596464883230858687676173917178315144068281990211515312914966367566853590435329627367735030164533791177419090418753546903528119558077025111807001262681241749862968108824633555157236828489265915324036390709784000000000000000000", + "scalar_work_above_kappa": "10864865854629368379656509700583694388666929830367093782216072425407227054946919253447585724557546678870414656241374672930637838184022130817459244251601435409249671998456083132375168644128041376707321897362318445358921958203794341609867015481054192095158425232333865769/6258292434595876662431190690775830960719345415596077583165687519292976646171737535234783435663028813656398042303062582993273513370718087065925473547006032906758235483818083750709380705623911615405022361400252536248349972593621764926711031447365697853183064807278141956800000000000000000", + "dimension_above_kappa": "1950533614188788542723738036930631875544082225417061148622237652507383385606264321901270531267299259904854878660113342995059655674543565230897360565111205873106779050362220553714084602596697495565255897165868060120187412482415077332267085415822301366413384251467738240626971354138635473/1955716385811211457009747090867447175224795442373774244739277349779055201928667979760869823644696504267624388219707057185397972928349402208101710483439385283361948588693151172096681470507472379814069487937578917577609366435506801539597197327301780579119707752274419361500000000000000000" + } + }, + "pr471": { + "kappa": "260706019542937/200000000000000000", + "bootstrap": [ + { + "gap": "1653430211745663517455165443469236854975746861404099625915696943281/1000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13168331866613" + }, + { + "gap": "2158109205785134323488734089560975071908122337643737009768916197810198064611624200740055528064493929/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "7729575901820446356" + }, + { + "gap": "2816832129356885383125751209945213695426577510264496522414328615837087326128730923710995148535320979740614890507497631184166931044961/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4537123169980686383932420" + }, + { + "gap": "3676618043103433242733914680461326209397431447217091001942470452525892496622760535337039905785092220338055800956162196256040611306010398747599426630540026013481841049/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2663210365102613299633809323590" + }, + { + "gap": "4798837706370496979153627496096856129109531806890873403278883258882651411424251043614926257501843369515214046399395544483198776622970067399520454555224388690624974253396827177780561361938490877857041/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1563256976517167590231669350803729110" + }, + { + "gap": "6263594167819675340486134473716161138837337360969320756854649839331875160175911646308735363624643931682009518358644171396407881220178497650075387053041737805966562283105002476145484630959075057780347602970585244078052569369610541769/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "917603958985582384762323575374167703666079" + } + ], + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "slacks": { + "bit_positive": "1305231506267590992430174325912733659513865526283838861162662639030679243145350160668124839824088353691264636375356068317990481641355828603592118779821502349924612946958262194033437716894997523854515369040924942219652397029414755921947430630389458231/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "7569825674087266340486134473716161138837337360969320756854649839331875160175911646308735363624643931682009518358644171396407881220178497650075387053041737805966562283105002476145484630959075057780347602970585244078052569369610541769/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29944768493732409/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "6264594167819675340486134473716161138837337360969320756854649839331875160175911646308735363624643931682009518358644171396407881220178497650075387053041737805966562283105002476145484630959075057780347602970585244078052569369610541769/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "652615753133795494909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1305231506267590992430174325912733659513865526283838861162662639030679243145350160668124839824088353691264636375356068317990481641355828603592118779821502349924612946958262194033437716894997523854515369040924942219652397029414755921947430630389458231/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "4437528590177428662673241562770814228932534206768499239589987558696616823233305983822492521636410319532269395554678154016194422251445077428629812306342371252907894088510763432106180032374535052744689170526217564258678681714220026806447430630389458231/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "652615753133795619909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499347384246866204380090144343311224162673241562770814228932534206768499239589987558696616823233305983822492521636410319532269395554678154016194422251445077428629812306342371252907894088510763432106180032374535052744689170526217564258678681714220026806447430630389458231/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "1305231506267590992430174325912733659513865526283838861162662639030679243145350160668124839824088353691264636375356068317990481641355828603592118779821502349924612946958262194033437716894997523854515369040924942219652397029414755921947430630389458231/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "8875057180354857332916308799628894798351202887253159618017312478362554403321261806976860203448732285373274154734000239714398362861534326253667505832863240155891175230063264670178922347854072581634862972011510186297704966399025297690947430630389458231/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1305231506267590992430174325912733659513865526283838861162662639030679243145350160668124839824088353691264636375356068317990481641355828603592118779821502349924612946958262194033437716894997523854515369040924942219652397029414755921947430630389458231/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1305231506267590992430174325912733659513865526283838861162662639030679243145350160668124839824088353691264636375356068317990481641355828603592118779821502349924612946958262194033437716894997523854515369040924942219652397029414755921947430630389458231/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "4437528590177428662673241562770814228932534206768499239589987558696616823233305983822492521636410319532269395554678154016194422251445077428629812306342371252907894088510763432106180032374535052744689170526217564258678681714220026806447430630389458231/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "652615753133795494909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500652615753133795494909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769", + "epsilon_below_one": "652615753133795994909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769/500652615753133795494909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769", + "guard_width": "652615753133795994909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769/500652615753133795494909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769", + "K_geometry": "375652615753133795619909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769/500652615753133795494909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769000000000000000000", + "K_dominates_log": "652615753133795619257239903554980217416902780540409933740707356002314989342546648071882416356681574874124301596895664290223126081732165516074973303233076587564609945102706175721918217831607820801714056136228379361490861848317488486010488811997537452231251083830568575447430630389458231/500652615753133795494909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769000000000000000000", + "record_suffix": "652615753133795994909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769/500652615753133795494909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769", + "phase_local": "5220926025070367458626229500376411203704211841144710331212967908622820312212633737195564653723539688116676650142023427564337357198985087402714017543117534587155923800706107405366659598256263796058453829514483010148666668164794538675259716812457349807099236671104360958447430630389458231/4005220926025070363959278845253510206698614067497833486168539726345852006083280099530427065414133552129420059826908717443741844835562574767870444621988439380570961501549261029976736847291913892543150559741003719578042486635790259485930570546286239785548420554956884334152000000000000000000", + "phase_boundary": "1044185205014073091203153297568245844812957842877921396381186831941215445588554112853912322416697984580628788615049472570861488748925273106358319952366030130386722561297283423977181764725149761538006036711507347714677359532586949930803279783465521368362792705596893636847430630389458231/801044185205014072791855769050702041339722813499566697233707945269170401216656019906085413082826710425884011965381743488748368967112514953574088924397687876114192300309852205995347369458382778508630111948200743915608497327158051897186114109257247957109684110991376866830400000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "999999999999999998499347384246866204505090144343311224162673241562770814228932534206768499239589987558696616823233305983822492521636410319532269395554678154016194422251445077428629812306342371252907894088510763432106180032374535052744689170526217564258678681714220026806447430630389458231/2002610463012535181979639422626755103349307033748916743084269863172926003041640049765213532707066776064710029913454358721870922417781287383935222310994219690285480750774630514988368423645956946271575279870501859789021243317895129742965285273143119892774210277478442167076000000000000000000", + "prime_interval_packing": "652615753133795994909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769/500652615753133795494909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769", + "alpha_positive": "1305231506267591489167095560243756179743661217769595704808173149233815749752559089375265593123375591051631779960485344757953730527054011499880551051787999158934797638760334922814024129320844388695534023761693326616801691322099924227331807097777510645783820453441110344447430630389458231/1001305231506267590989819711313377551674653516874458371542134931586463001520820024882606766353533388032355014956727179360935461208890643691967611155497109845142740375387315257494184211822978473135787639935250929894510621658947564871482642636571559946387105138739221083538000000000000000000", + "alpha_below_one": "999999999999999999500652615753133795494909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769/1001305231506267590989819711313377551674653516874458371542134931586463001520820024882606766353533388032355014956727179360935461208890643691967611155497109845142740375387315257494184211822978473135787639935250929894510621658947564871482642636571559946387105138739221083538000000000000000000", + "alpha_below_one_fourth": "249021076370299306258287832268100631738919718000844997180725559747381934630452447131276425995259971417037121959221309495475911571695606911492022237822489462126750296208068479450732028826423773895251375960051039147010853723414791293643328852045112475950992464231364160540052569369610541769/1001305231506267590989819711313377551674653516874458371542134931586463001520820024882606766353533388032355014956727179360935461208890643691967611155497109845142740375387315257494184211822978473135787639935250929894510621658947564871482642636571559946387105138739221083538000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "499346532432223727221574538992823718239681541565258346278897077657824349617752375881558416336902955287541565010886207593024326745281254445886720253499588924352522686003195144680021018150534698426624427050562790735812968196725063167395157514984657759716494061515359332516933433232990704592184251611300824362111487983701101367703344991416255626159263616936362870716801815114508591205624921561762274130073685676837385103482400909058228258006213030164643197490994353331021688868454478212814696342485132213035961708773693649361/500652615753133795494909855656688775837326758437229185771067465793231500760410012441303383176766694016177507478363589680467730604445321845983805577748554922571370187693657628747092105911489236567893819967625464947255310829473782435741321318285779973193552569369610541769000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "28041767408200562917176188609287483040073642106952734216860298086078503605979443193623111025594298454359270628145569821598467281119591367184366748789243480582519108745639753007528005341416284026586480795662497466328021352989198470729210496858711265591611328394512414592796657708108831625307/4005220926025070363959278845253510206698614067497833486168539726345852006083280099530427065414133552129420059826908717443741844835562574767870444621988439380570961501549261029976736847291913892543150559741003719578042486635790259485930570546286239785548420554956884334152000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "171144973844581015333694143202764701793554872811823942033697980789781009228229248450194908557551629668615621604494870857383935216751973254328441535209726497461882955449560276641644532940872168078669876521769728832768748013448151791265003169545788747998519142553672564447/100130523150626759098981971131337755167465351687445837154213493158646300152082002488260676635353338803235501495672717936093546120889064369196761115549710984514274037538731525749418421182297847313578763993525092989451062165894756487148264263657155994638710513873922108353800000000000000000", + "coordinate_movement_above_kappa": "1701408552905992430174325912733659513865526283838861162662639030679243145350160668124839824088353691264636375356068317990481641355828603592118779821502349924612946958262194033437716894997523854515369040924942219652397029414755921947430630389458231/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "177536126734885640586780430178567366565223802810945262198711219077836772690368114904835579805495727163450300272055382303225972739657272212829201049150038782369022294777071877230565279396435801912727781320611589608294214618883488260291847264721581883399521571699376140233/250326307876566897747454927828344387918663379218614592885533732896615750380205006220651691588383347008088753739181794840233865302222660922991902788874277461285685093846828814373546052955744618283946909983812732473627655414736891217870660659142889986596776284684805270884500000000000000000", + "bulk_exposure_above_kappa": "1701408552905992430174325912733659513865526283838861162662639030679243145350160668124839824088353691264636375356068317990481641355828603592118779821502349924612946958262194033437716894997523854515369040924942219652397029414755921947430630389458231/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "868507175003514327174643289965428838511112224057362350498516380525016573065423975160255885283646343332747465357595377178603751129570464188643726703929257057123693455902824584386064157615488108061465192206532365714894673278111431894378704038080530010794600571059769973807/801044185205014072791855769050702041339722813499566697233707945269170401216656019906085413082826710425884011965381743488748368967112514953574088924397687876114192300309852205995347369458382778508630111948200743915608497327158051897186114109257247957109684110991376866830400000000000000000", + "scalar_work_above_kappa": "6345146338030106817852855872453899295904868154035728495576851765798008868368759925566492959125298492728447356701431244614889678065633608327153855830640504975903948030288753436918689211723397486578901240903163688363494609708452289214858805463545769946747213132777292036111/4005220926025070363959278845253510206698614067497833486168539726345852006083280099530427065414133552129420059826908717443741844835562574767870444621988439380570961501549261029976736847291913892543150559741003719578042486635790259485930570546286239785548420554956884334152000000000000000000", + "dimension_above_kappa": "99869476849373240872163002713243260166228791515318864639341379653177641881615978301520332592875909646959407061878911732522075483605806488187174101202262269814167497670994971712464534267262429328065768947347075089218814355874972345620483749790995796626292655671866639644719142553672564447/100130523150626759098981971131337755167465351687445837154213493158646300152082002488260676635353338803235501495672717936093546120889064369196761115549710984514274037538731525749418421182297847313578763993525092989451062165894756487148264263657155994638710513873922108353800000000000000000" + } + }, + "pr458": { + "kappa": "323880830669511/250000000000000000", + "bootstrap": [ + { + "gap": "1632847576212894403360856767382571185673116249809121944997489866495412464335729/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13502407443073" + }, + { + "gap": "2118136212225667786614916012537813516700352798255874980967753468787080841710533300608213906447020351125448965441287817/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "8024070403938492939" + }, + { + "gap": "2747654514052901957495237487140632685669593829243271153206134381236181061216488244089975103850074892726242461599852981845427515849737708263827958365225961441/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4768461188778236548646263" + }, + { + "gap": "3564268098066465759489330571875066597518410502814250255860967899175945825235653092608151354397582390868874247973170160350367497702828985233185688696818489508782687189180603985277622471789205513593/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2833751570490164486746628377157" + }, + { + "gap": "4623582408166525631936194665766910798514901284084473974150618091392829437396912535598016175439918862882021595706318707952939744262491820618844673446995034587899732988078140631422351719328154260473471260306546625016959014253747432625489/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1684012440355614704970425115745436073" + }, + { + "gap": "5997729041960615391576851221514337755604968541668520427387559025104653701120830687908008387927287231699894605353296221602618545412076104902051335832828067439587585174751495656073962345656472441207243451816591049467533621131973610961980401296611640976474455460811801025064297/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1000757416000985939987924890040738850982191" + } + ], + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "slacks": { + "bit_positive": "1297203880559577920231067077479806680896148778485662244395031458331479572612440974895346298879169312091991612072712768300105394646703778397381454587923895097948664167171932560412414825248504343926037654343527558792756548183408950532466378868026389038019598703388359023525544539188198974935703/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "7295932922520193319103851221514337755604968541668520427387559025104653701120830687908008387927287231699894605353296221602618545412076104902051335832828067439587585174751495656073962345656472441207243451816591049467533621131973610961980401296611640976474455460811801025064297/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29952796119440422072473/1000000000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "5998729041960615391576851221514337755604968541668520427387559025104653701120830687908008387927287231699894605353296221602618545412076104902051335832828067439587585174751495656073962345656472441207243451816591049467533621131973610961980401296611640976474455460811801025064297/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "648601940279788958818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1297203880559577920231067077479806680896148778485662244395031458331479572612440974895346298879169312091991612072712768300105394646703778397381454587923895097948664167171932560412414825248504343926037654343527558792756548183408950532466378868026389038019598703388359023525544539188198974935703/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "4296568401539885616019492688236975558698633049319922458088810970883806423172856318849350492842812927941938914749360879101414667352741830848407122504337928817742456754547680388449395998076740564529659380251823083526523358749395756013456579516332209526256826433794259536057693039188198974935703/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "648601940279789083818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499351398059720210916181670341819674579782992688236975558698633049319922458088810970883806423172856318849350492842812927941938914749360879101414667352741830848407122504337928817742456754547680388449395998076740564529659380251823083526523358749395756013456579516332209526256826433794259536057693039188198974935703/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "1297203880559577920231067077479806680896148778485662244395031458331479572612440974895346298879169312091991612072712768300105394646703778397381454587923895097948664167171932560412414825248504343926037654343527558792756548183408950532466378868026389038019598703388359023525544539188198974935703/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "8593136803079771239334918298994144436501117320154182671782590483436133273733271662803354686806456543791886217426008989902723940058779883299432790420751962537536249341923428216486377170904976785133281106160118608260290169315382561494446780164638030014494054164200160048589841539188198974935703/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1297203880559577920231067077479806680896148778485662244395031458331479572612440974895346298879169312091991612072712768300105394646703778397381454587923895097948664167171932560412414825248504343926037654343527558792756548183408950532466378868026389038019598703388359023525544539188198974935703/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1297203880559577920231067077479806680896148778485662244395031458331479572612440974895346298879169312091991612072712768300105394646703778397381454587923895097948664167171932560412414825248504343926037654343527558792756548183408950532466378868026389038019598703388359023525544539188198974935703/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "4296568401539885616019492688236975558698633049319922458088810970883806423172856318849350492842812927941938914749360879101414667352741830848407122504337928817742456754547680388449395998076740564529659380251823083526523358749395756013456579516332209526256826433794259536057693039188198974935703/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "648601940279788958818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500648601940279788958818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297", + "epsilon_below_one": "648601940279789458818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297/500648601940279788958818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297", + "guard_width": "648601940279789458818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297/500648601940279788958818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297", + "K_geometry": "375648601940279789083818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297/500648601940279788958818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297000000000000000000", + "K_dominates_log": "648601940279789083169727717900536336398677653582699021084359638917053100609822078436116034915954652034455930330043390907411578093452048840524247396619048253007544848403902030664665749790248429293060756470939823919736617824917481003136021502427327513066779233063546487199753082537949990199133394606060561121990039188198974935703/500648601940279788958818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297000000000000000000", + "record_suffix": "648601940279789458818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297/500648601940279788958818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297", + "phase_local": "5188815522238315169898035325162814402917728835923870110193928293677595893988145282249471072705960420089002480430352895313839174847925895130621575927426232314157687318038400306467468467956485710147288769933755872212120956062155896317472510256657035418870722618738079803401968045978133237795282120288667736572069039188198974935703/4005188815522238311670546637265442603361736058494104195530410935605440620335289512232929548614617149449205196057257496576464488682005112967188682661178065353212743019965296569458060345963618556892404832015386075483762724957985415331787813130004833951892347363869342323789945388529645923711538455686494408200514376000000000000000000", + "phase_boundary": "1037763104447662633460725512808731713528882040640513685865179809325099625756535495905832181012240860724845634624355634142248229243835521379675446984973949743963271345801144740019191697061640196223423157624895485201940989673823630887222006252789873904992831523264220771445657222261394268564517571093141176160568239188198974935703/801037763104447662334109327453088520672347211698820839106082187121088124067057902446585909722923429889841039211451499315292897736401022593437736532235613070642548603993059313891612069192723711378480966403077215096752544991597083066357562626000966790378469472773868464757989077705929184742307691137298881640102875200000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "999999999999999998499351398059720211041181670341819674579782992688236975558698633049319922458088810970883806423172856318849350492842812927941938914749360879101414667352741830848407122504337928817742456754547680388449395998076740564529659380251823083526523358749395756013456579516332209526256826433794259536057693039188198974935703/2002594407761119155835273318632721301680868029247052097765205467802720310167644756116464774307308574724602598028628748288232244341002556483594341330589032676606371509982648284729030172981809278446202416007693037741881362478992707665893906565002416975946173681934671161894972694264822961855769227843247204100257188000000000000000000", + "prime_interval_packing": "648601940279789458818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297/500648601940279788958818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297", + "alpha_positive": "1297203880559578416988057376080861881615684965345723462385726589597130642521011107552309611743098333185105437487230462965472663344091169739109580043877217404600422344065973212922208995242568040843664758394199259390077237573094397476612662753031571499610199716731336960942926648743690454141440355417861586186287039188198974935703/1001297203880559577917636659316360650840434014623526048882602733901360155083822378058232387153654287362301299014314374144116122170501278241797170665294516338303185754991324142364515086490904639223101208003846518870940681239496353832946953282501208487973086840967335580947486347132411480927884613921623602050128594000000000000000000", + "alpha_below_one": "999999999999999999500648601940279788958818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297/1001297203880559577917636659316360650840434014623526048882602733901360155083822378058232387153654287362301299014314374144116122170501278241797170665294516338303185754991324142364515086490904639223101208003846518870940681239496353832946953282501208487973086840967335580947486347132411480927884613921623602050128594000000000000000000", + "alpha_below_one_fourth": "249027097089580316062421107453009300828492818690535788758264956885742908128434583407005787176670473507390219316091363073063557879281228390710183086279751867171196016403765062378206562627483591764931637242567430458345093072300994060760125657872270550493661510525102558275928660134359179777829713124988038926345861460811801025064297/1001297203880559577917636659316360650840434014623526048882602733901360155083822378058232387153654287362301299014314374144116122170501278241797170665294516338303185754991324142364515086490904639223101208003846518870940681239496353832946953282501208487973086840967335580947486347132411480927884613921623602050128594000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "499350556690766341126036706564733983358168079148490718774218778590349240088370782079982239460499982741683467387787199484814786573383528313605726988468704603242363949478633909571019333677877229422945786902447977197951147414065475979849781893259739852456849785936886569772215226571154176326657150476097577561395176054921418229479916701007641298027923007744841548530744922239279585516432690724548268897004028122694464534224864236189000760034520135754943576804026261539608409431721489213895067752229002421250605160457376362779855823036833666506908319885913935521578456956268874934870977977614183366012984104209/500648601940279788958818329658180325420217007311763024441301366950680077541911189029116193576827143681150649507157187072058061085250639120898585332647258169151592877495662071182257543245452319611550604001923259435470340619748176916473476641250604243986543420483667790473743173566205740463942306960811801025064297000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "28041510524177906498866318903944380193770343456927374540503938506778814036006220198715476621542670762680990149188541403655167857977512464953683644545176440188397700157664147063119261400195934668686011285859445562704753611669653100960713526899283202364559208834706551322279193369688170761113537166190572486995941928882435403075192891/4005188815522238311670546637265442603361736058494104195530410935605440620335289512232929548614617149449205196057257496576464488682005112967188682661178065353212743019965296569458060345963618556892404832015386075483762724957985415331787813130004833951892347363869342323789945388529645923711538455686494408200514376000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "190090736836330568876259703876980091324423676990405178433410541932194848845186609864347866931278768754822965521206377437932891988349978989450203122612843282343545358948043677481850630685314221775569388046228836291969006668349572129236531637631063983621021450453222112074935866549248613274800641504968181667451233/125162150485069947239704582414545081355054251827940756110325341737670019385477797257279048394206785920287662376789296768014515271312659780224646333161814542287898219373915517795564385811363079902887651000480814858867585154937044229118369160312651060996635855120916947618435793391551435115985576740202950256266074250000000000000000", + "coordinate_movement_above_kappa": "1680557881533920231067077479806680896148778485662244395031458331479572612440974895346298879169312091991612072712768300105394646703778397381454587923895097948664167171932560412414825248504343926037654343527558792756548183408950532466378868026389038019598703388359023525544539188198974935703/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "51942869081008497309244097169948007975495540129971537858468160155619863567767050085655054829657586267628242515533664535934701373629855367380445431560822992044517711659302527749028995899160913498145389636598417146481137210730022320094529981854730338099508476265844131565200058526157742527052051811812185128948127/100129720388055957791763665931636065084043401462352604888260273390136015508382237805823238715365428736230129901431437414411612217050127824179717066529451633830318575499132414236451508649090463922310120800384651887094068123949635383294695328250120848797308684096733558094748634713241148092788461392162360205012859400000000000000000", + "bulk_exposure_above_kappa": "1680557881533920231067077479806680896148778485662244395031458331479572612440974895346298879169312091991612072712768300105394646703778397381454587923895097948664167171932560412414825248504343926037654343527558792756548183408950532466378868026389038019598703388359023525544539188198974935703/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "3579660569061179259246218875772461295280472627134150587662630507076834775336415570513550773916784881748581649142818142653562238200946132057913573260374694189235487098859087323507932465702793498760467397469706464165656510288445423553201629197941026255939969312084768634029231861744926922473908993354922808233117971/4005188815522238311670546637265442603361736058494104195530410935605440620335289512232929548614617149449205196057257496576464488682005112967188682661178065353212743019965296569458060345963618556892404832015386075483762724957985415331787813130004833951892347363869342323789945388529645923711538455686494408200514376000000000000000000", + "scalar_work_above_kappa": "5582254976822298415081492194405182596961340656381202685427835974879555085504060326630015548224093456473184247171446890941794482541948688541507914590963726865841858608841735608236962638684602777206669813477399501907537872767438131219095535762943443231886142994019439795924204556009749884329678221198170012333375159/4005188815522238311670546637265442603361736058494104195530410935605440620335289512232929548614617149449205196057257496576464488682005112967188682661178065353212743019965296569458060345963618556892404832015386075483762724957985415331787813130004833951892347363869342323789945388529645923711538455686494408200514376000000000000000000", + "dimension_above_kappa": "124837849514930052700386154421785487521205452049039335214098335252735159047932744674915800450979823944060204554489471986808450249893717657708245655188164447162304903238927764547980973136680597578962979684833406916701802891291792062850637508036921068239895782510147036002585657061670676958950289809045663018534567254968181667451233/125162150485069947239704582414545081355054251827940756110325341737670019385477797257279048394206785920287662376789296768014515271312659780224646333161814542287898219373915517795564385811363079902887651000480814858867585154937044229118369160312651060996635855120916947618435793391551435115985576740202950256266074250000000000000000" + } + }, + "pr448": { + "kappa": "358867191156973/250000000000000000", + "bootstrap": [ + { + "gap": "502802939372483697817821674469757406723076709643758894956308541489/250000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "8899936383294" + }, + { + "gap": "361397732272430524424602436248698524094967778525958274701943169284002886643694615736422289773394263/125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4306770014037738053" + }, + { + "gap": "259760456163321742486680237761569532873466481426534871853861706284770903361506594661394254277653990848056504299949532856818434337121/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2084089947949909245542517" + }, + { + "gap": "186707022653125848995743156960485777129238251401573229941384931817897807568153139397470394293798881333835717169825323870961338023264782598158575963009509966490077607/31250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1008512387935418585971494239534" + }, + { + "gap": "134198687601923848803357932683364667167350106000026420057334314766521655074689884759345164248020261624013835008917755396753221141305855383397598055301969988263863412089469255076558513994700041313169/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "488029433479924828254115373346363408" + }, + { + "gap": "96457473844127192134618105428115482293656808710486042569970969685322397150931913696076271791825814584456619372612252764553761009522999267503816568121766824481729794895784134155979160869068378800486017268172876347222038940589336823/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "236162421792669220044376325903858135165162" + } + ], + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "slacks": { + "bit_positive": "11230721072959890517303992582912917240381894571884517706343191289513957430029030314677602849068086303923728208174185415543380627387747235446238990477000732496183431878233175518270205104215865844020839130931621199513982731827123652777961059410663177/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "107696007417087082759618105428115482293656808710486042569970969685322397150931913696076271791825814584456619372612252764553761009522999267503816568121766824481729794895784134155979160869068378800486017268172876347222038940589336823/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "14906233851330567/500000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "96465286344127192134618105428115482293656808710486042569970969685322397150931913696076271791825814584456619372612252764553761009522999267503816568121766824481729794895784134155979160869068378800486017268172876347222038940589336823/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "5615360536479945247421275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "11230721072959890517303992582912917240381894571884517706343191289513957430029030314677602849068086303923728208174185415543380627387747235446238990477000732496183431878233175518270205104215865844020839130931621199513982731827123652777961059410663177/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "59463364245023486584613045296970658387210298927127538991328676132175156005494987162715738744980993596152037894480311797820261132149246869198147274537884144737048329326125242596259785538750055244263847765018059373125002202121792064277961059410663177/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "5615360536479946223983775218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "3900634639463520053776016224781503431897113045296970658387210298927127538991328676132175156005494987162715738744980993596152037894480311797820261132149246869198147274537884144737048329326125242596259785538750055244263847765018059373125002202121792064277961059410663177/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "11230721072959890517303992582912917240381894571884517706343191289513957430029030314677602849068086303923728208174185415543380627387747235446238990477000732496183431878233175518270205104215865844020839130931621199513982731827123652777961059410663177/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "118926728490046973276922098011028399534038703282370560276314160974836354580960944010753874640893900888380347580786438180097141636910746502950055558598767556977913226774017309674249365973284244644506856399104497546736021672416460475777961059410663177/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "11230721072959890517303992582912917240381894571884517706343191289513957430029030314677602849068086303923728208174185415543380627387747235446238990477000732496183431878233175518270205104215865844020839130931621199513982731827123652777961059410663177/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "11230721072959890517303992582912917240381894571884517706343191289513957430029030314677602849068086303923728208174185415543380627387747235446238990477000732496183431878233175518270205104215865844020839130931621199513982731827123652777961059410663177/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "59463364245023486584613045296970658387210298927127538991328676132175156005494987162715738744980993596152037894480311797820261132149246869198147274537884144737048329326125242596259785538750055244263847765018059373125002202121792064277961059410663177/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "5615360536479945247421275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "3906249999999999996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/3911865360536479945247421275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823", + "epsilon_below_one": "5615360536479949153671275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823/3911865360536479945247421275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823", + "guard_width": "5615360536479949153671275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823/3911865360536479945247421275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823", + "K_geometry": "2935302860536479946223983775218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823/3911865360536479945247421275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823000000000000000000", + "K_dominates_log": "5615360536479946218368414682016621878903179484532773509902746369843119395881622794952382985833688969459417260513993566563700850500681798331776762331064928622113857611362724461098945211758902140788543787375187351995937773731995871138845562896267308847041142711128887277961059410663177/3911865360536479945247421275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823000000000000000000", + "record_suffix": "5615360536479949153671275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823/3911865360536479945247421275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823", + "phase_local": "44922884291839589317504841211492599575674362405738164799430653879950346456580889869726290947368778830449246045647038393499435589138499213589948837286336844235082935846173711301760639928882203966970045016124800642149003418605580259263830148043722858901313726836486648277961059410663177/31294922884291839561979370201747972544823095637624234732902317608582979688069370590942598751956040102698274090040152051230783696844157505617437910942806025046414821803696926842103613365390998059229921715689999558045889217879855525014999982383025663485776311524714694584000000000000000000", + "phase_boundary": "8984576858367914734008679813114563717197852306350378477576567013566596001084417115647289382536696671829974013525397408872478113812494719639620083041516807103225492888632237618869947616083756583032672464125154205437629114721160247263844241623192070280264507064730981077961059410663177/6258984576858367912395874040349594508964619127524846946580463521716595937613874118188519750391208020539654818008030410246156739368831501123487582188561205009282964360739385368420722673078199611845984343137999911609177843575971105002999996476605132697155262304942938916800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "7812499999999999988275634639463520054752578724781503431897113045296970658387210298927127538991328676132175156005494987162715738744980993596152037894480311797820261132149246869198147274537884144737048329326125242596259785538750055244263847765018059373125002202121792064277961059410663177/15647461442145919780989685100873986272411547818812117366451158804291489844034685295471299375978020051349137045020076025615391848422078752808718955471403012523207410901848463421051806682695499029614960857844999779022944608939927762507499991191512831742888155762357347292000000000000000000", + "prime_interval_packing": "5615360536479949153671275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823/3911865360536479945247421275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823", + "alpha_positive": "11230721072959894395477189900513190958352634187562115122692447442715580404552946662777226980338701806743678515532999970411662956020370000511515630181818059423966583073478579724050615885633659544528758248625132107732090008713936498013843360774475244569080083300465710277961059410663177/7823730721072959890494842550436993136205773909406058683225579402145744922017342647735649687989010025674568522510038012807695924211039376404359477735701506261603705450924231710525903341347749514807480428922499889511472304469963881253749995595756415871444077881178673646000000000000000000", + "alpha_below_one": "7812499999999999996099365360536479945247421275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823/7823730721072959890494842550436993136205773909406058683225579402145744922017342647735649687989010025674568522510038012807695924211039376404359477735701506261603705450924231710525903341347749514807480428922499889511472304469963881253749995595756415871444077881178673646000000000000000000", + "alpha_below_one_fourth": "1944701959195280078228233447708735093093090843163952555683702403093720650099782715271135195016913804611898452111976503231512318096739474100578353803743558505976959779657579347907425219451303719157341348981999840270135986108777033815423655538164628723291939386994202701222038940589336823/7823730721072959890494842550436993136205773909406058683225579402145744922017342647735649687989010025674568522510038012807695924211039376404359477735701506261603705450924231710525903341347749514807480428922499889511472304469963881253749995595756415871444077881178673646000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "30473645056260841084472077323443781785514227471894705789154421548367624597498942664237124489885722330665646012837991219906598934339891270910480719347011741836759031125412939315666946546628682999914221022701731094787722882911097244165689891001883360301456131922929110641593691177674557001386776093370583273067168435691658750789916516420083413590866677226642444461342514956118633167996771672236737092848917764127289417944311063756698183300702723248928346140008832599981789618841784251567943007891819544811093130943733329/30561448129191249572245478712644504438303804333617416731349919539631816101630244717717381593707070412791283291054835987530062203949372564079529209905084008834389474417672780119241809927139646542216720425478515193404188689335796411147460920295923499497828429223354193929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "219109383074334716538820557695593220194327028926649367567527201732772925529393333830759407398674334793189667252304731448358122358518317064151047173859007264977857791033127674129234465099514332039628228737541620736578334386422594034387208315769151129766835485591352180479166116821768010469/31294922884291839561979370201747972544823095637624234732902317608582979688069370590942598751956040102698274090040152051230783696844157505617437910942806025046414821803696926842103613365390998059229921715689999558045889217879855525014999982383025663485776311524714694584000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "1236199550065147518791248642373547700550241665393679379388037880053495599277860427906692380735469545773140246498135808528289032891981908402567874728629145320893969174923897007527059076769361102530226016057077626644725472219735673796659176922541638198941155995837883221/977966340134119986311855318804624142025721738675757335403197425268218115252167830966956210998626253209321065313754751600961990526379922050544934716962688282700463181365528963815737917668468689350935053615312486188934038058745485156718749449469551983930509735147334205750000000000000000", + "coordinate_movement_above_kappa": "16121349304484267303992582912917240381894571884517706343191289513957430029030314677602849068086303923728208174185415543380627387747235446238990477000732496183431878233175518270205104215865844020839130931621199513982731827123652777961059410663177/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "1032932839724110129917573294275694234098079706871688175939361819141109936102770387758944678947373170255276724737524227709308169462407945408091760046665828152774023974233472174845284636403569652717163849767060561823165736643960754559761709892288344860042585042762196061/3911865360536479945247421275218496568102886954703029341612789701072872461008671323867824843994505012837284261255019006403847962105519688202179738867850753130801852725462115855262951670673874757403740214461249944755736152234981940626874997797878207935722038940589336823000000000000000000", + "bulk_exposure_above_kappa": "16121349304484267303992582912917240381894571884517706343191289513957430029030314677602849068086303923728208174185415543380627387747235446238990477000732496183431878233175518270205104215865844020839130931621199513982731827123652777961059410663177/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "19999058799402320875082850179861043577093298519082593432353263656347496871848177073675031963562500400554066581665250840886009242015822627871273296976878884614597749970254124964551132103250181493948531441520234328852534349856631858358718672531941382687506797163865578957/31294922884291839561979370201747972544823095637624234732902317608582979688069370590942598751956040102698274090040152051230783696844157505617437910942806025046414821803696926842103613365390998059229921715689999558045889217879855525014999982383025663485776311524714694584000000000000000000", + "scalar_work_above_kappa": "35646520241548240656072535280735029849504846337894710798804422460638986715882862369146331339540520451903203626685326866501401090437901380679992252448281897137805160872102588385602938785945680523563492299365234107875478958796559620866218663723454214430394952926222926249/31294922884291839561979370201747972544823095637624234732902317608582979688069370590942598751956040102698274090040152051230783696844157505617437910942806025046414821803696926842103613365390998059229921715689999558045889217879855525014999982383025663485776311524714694584000000000000000000", + "dimension_above_kappa": "975158659865880012971219231260523376765526903697790365147044240125461264135870049086539388279234174697371315421714794172178255971755886477744098175019220119867411547263616357078231257255428318176124023154048616341291977998332141488006722770266121812728667187394303993191155995837883221/977966340134119986311855318804624142025721738675757335403197425268218115252167830966956210998626253209321065313754751600961990526379922050544934716962688282700463181365528963815737917668468689350935053615312486188934038058745485156718749449469551983930509735147334205750000000000000000" + } + } + }, + "fresh_pr471_source_receipt": "/private/tmp/r715-response-gl-v3-source-proof/ASSEMBLY.json", + "fresh_pr471_receipt_sha256": "c8c4cdc7f2a469d76b6bd0b6a4594a317c3582b24c26484c4ddfc94d020b1c4e", + "GL_sharp_screen": { + "bit_lower": "1565442029626940232571/1000000000000000000000000", + "full_row_allowance": 28416, + "coefficient_bits": 6464, + "bit_endpoint_intervals": { + "1565442029626940232571/1000000000000000000000000": [ + "21267647932558653966460869784290506457515974292442225510115455532033/21267647932558653966460912964485513216000000000000000000000000000000", + "21267647932558653966460869784311774105448532946408686423079946265321/21267647932558653966460912964485513216000000000000000000000000000000" + ], + "391360507406735058143/250000000000000000000000": [ + "2658455991569831745807616145498610889991127716330056871710165046221/2658455991569831745807614120560689152000000000000000000000000000000", + "1329227995784915872903808072750634672991348774037932242915363193941/1329227995784915872903807060280344576000000000000000000000000000000" + ] + }, + "kappas_unchanged": true, + "kappas": { + "pr484": "662515748707749/500000000000000000", + "pr471": "260706019542937/200000000000000000", + "pr458": "323880830669511/250000000000000000", + "pr448": "358867191156973/250000000000000000" + }, + "scope": "Exact arithmetic plus reviewed dyadic full owner premises; does not claim a newly packaged GL all-size source replay." + }, + "scope": "Finite construction passes from pinned source with real Boost. Both reflected actual projectors, dirty/source restoration and whole owner matrices reviewed separately. PR471 b bound to fresh source replay. PR484 and PR458 retained as cited arithmetic only; PR448 remains information-only disputed split. All all-size compiler, mutable-label, restored-row and analytic contracts remain conditional." +} diff --git a/research/r489-partial-own-kernel84/provenance/PR493-LOCAL.json b/research/r489-partial-own-kernel84/provenance/PR493-LOCAL.json new file mode 100644 index 0000000000..dc4dd38e11 --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/PR493-LOCAL.json @@ -0,0 +1,60 @@ +{ + "status": "PASS_INDEPENDENT_PR493_MUTABLE_SOURCE_LEDGER_AND_ACTUAL_OWNER_AUDIT", + "head": "c3a9a436b84fe44fdc223a5784d84736d1c2d3c7", + "source_frames": 672, + "exact_oriented_projector_transitions": 4702, + "orientations": { + "forward": { + "formal_columns": 729, + "dirty_helpers_restored": 489, + "source_registers_restored": 120, + "instructions": 36957, + "adds": 33990, + "copies": 9, + "source_write_actual_frame_dimensions": { + "4": 577, + "8": 577 + }, + "paid_profile": { + "1": 1200, + "2": 1440, + "4": 180, + "6": 120, + "8": 18 + }, + "actual_projector_ledger_sha256": "00c2ee2d60e22b4c1c612fd1e503cfe6da2b22e4a0f864bb2411ea89710c43ea" + }, + "reverse": { + "formal_columns": 729, + "dirty_helpers_restored": 489, + "source_registers_restored": 120, + "instructions": 36957, + "adds": 33990, + "copies": 9, + "source_write_actual_frame_dimensions": { + "0": 577, + "4": 577 + }, + "paid_profile": { + "1": 1200, + "2": 1440, + "4": 180, + "6": 120, + "8": 18 + }, + "actual_projector_ledger_sha256": "1158fb6b9a98f319fd70d01c3283f6525f7eb888b690317b0a4bfa8e2dd74172" + } + }, + "source_support_checks": 38838, + "mutable_source_destination_support_checks": 1154, + "no_targets_feed_sources_or_helpers": true, + "literal_source_helper_inverse_cleanup": true, + "actual_owner_routes": 43032, + "actual_unique_sigma_matrices": 2520, + "cross_idle_call_family_groups": 12780, + "idle_family_completion_groups": 12732, + "maximum_helpers_per_family": 7, + "actual_sigma_stream_sha256": "52210e222e19aa9f7e247f584b477402593e87a9713682e5f8224643d11f8103", + "modular_distinctness": "All routes for a physical family are one dyadic orthogonal port basis times distinct column permutations; equality is impossible over every odd field. Cross-idle assigned footprints are pairwise disjoint.", + "scope": "Exact native-frame local source/helper restoration and actual complete owner matrices. This does not unconditionally establish inherited all-size mutable-basis compiler, row or analytic contracts." +} diff --git a/research/r489-partial-own-kernel84/provenance/RETIME-FINITE-ADMISSION.json b/research/r489-partial-own-kernel84/provenance/RETIME-FINITE-ADMISSION.json new file mode 100644 index 0000000000..8dc82c9f53 --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/RETIME-FINITE-ADMISSION.json @@ -0,0 +1,82 @@ +{ + "status": "PASS_COMPLETE_POOLED_COMPLEX_FINITE_ADMISSION", + "complex_template_sha256": "25718162bc14a8fb620b0dc3ff2ea57672fe9fff3766c4530e09b24ee54e9215", + "complex_profile": { + "1": 172056, + "2": 19008, + "3": 42032, + "4": 6048, + "5": 22496, + "6": 6624, + "7": 1800, + "8": 4120 + }, + "complex_live": 7680, + "physical": 8258, + "rank_mass": 558144, + "deficit": 2496, + "complex_hosted_residuals": 40320, + "one_owner_per_complete_invocation": true, + "actual_73column_sigmas": 3960, + "cross_replica_helper_roles": 35280, + "global_prefix_bits": 142, + "retained_payload_bits": 192, + "source_artifacts": { + "split-centres/CANONICAL-WORD.json.gz": "dfdebff4de27cbf5fd3458de6e3d41678ecdd30bc679c438b5fb1b65460a36e3", + "split-centres/LOCAL-PROGRAMS.json.gz": "e44d520a3414ca8863623aa6ea6489d3f730fbd025d69f050236deb4d0bb9137", + "split-centres/LOCAL-CHECKS.json": "a708c222fc1d69cef6a230e1d503be4f032b8cff66f411370ec78cd47d8c111e", + "split-centres/RESIDUAL-ADAPTERS.json": "546196e37830b9ccbc544834cb6f37ba4ad841faf96f025fe5155f5ba3924e07", + "work/complex-nine-native/DATA-PHASES.json": "f621f6d4296cb215f334830356c5f79fe10d6d04d15b3ccda76ba0885ab67d0a" + }, + "controller_audit_sha256": "505e5ed4eecf9ec8ed4d3d1b455b7329670e3aeb0782a6596a5b55d39f3e454f", + "controller_mutations_rejected": [ + "alias two whole owners", + "helper on active data family", + "owner in private namespace", + "unbound change of owner replica", + "omit complete invocation", + "reorder invocation replicas", + "interleave local invocations", + "change local instruction stream", + "wrong residual width", + "wrong spectator coordinate", + "omit spectator route", + "overlap residual footprint", + "omit idle remainder", + "underpay idle remainder", + "omit bridge touch", + "remove one-owner rule", + "duplicate frozen role", + "understate physical reserve" + ], + "bit_result_sha256": "dabd498ba5292da8cbc30496cfdd4e2543aaf26294142006790f54bf91062e86", + "complex_lower": "1345325487149526878087/1000000000000000000000000", + "kappa": "1343518018117309/1000000000000000000", + "kappa_decimal": "0.001343518018117309", + "observed_stages": [ + { + "stage": "owners", + "observed_exit": 0 + }, + { + "stage": "scalar-invoice", + "observed_exit": 0 + }, + { + "stage": "global-prefix", + "observed_exit": 0 + }, + { + "stage": "two-moments-outer", + "observed_exit": 0 + } + ], + "files": { + "OWNERS-AND-PROFILE.json": "436116960f1b1528931e58c028048a15aabf4d16f03c81c8f17ae06895f00767", + "PREFIX-AND-INVOICE.json": "a7db4e041ba35ca82537b2088a1c7ec96601a2c9a529bc70986f81d0214c3800", + "OBSERVED-EXITS.json": "4b563f11d8e00dd70af2205d7e077bc7c6124ff30fa995168a8c565ebe75f8fa", + "GLOBAL-PREFIX.json": "81a417104dcae71a7340c8fe608f7d0736c761f35c02cc4a1e455c0c822ee46e", + "EXACT-ASSEMBLY.json": "10c167b951899e468ba72850bb8695b78ec009523c1750f4e1ee731341745438" + }, + "scope": "Exact finite program, complete-invocation normalization, whole physical owners, both scalar orientations, full paid profile, cross-replica-safe global prefix and strict arithmetic assembly. Retains inherited all-size compiler/precision/tape/common-grid and analytic-transfer contracts. PR484 source remains unchanged; independent audit by OpenAI Codex." +} diff --git a/research/r489-partial-own-kernel84/provenance/RETIME-FRAME-REVIEW.json b/research/r489-partial-own-kernel84/provenance/RETIME-FRAME-REVIEW.json new file mode 100644 index 0000000000..85ad0ab6bf --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/RETIME-FRAME-REVIEW.json @@ -0,0 +1,150 @@ +{ + "status": "PASS_INDEPENDENT_FIXED_SCALAR_RETIMING_AND_BOTH_ACTUAL_FRAME_LEDGERS", + "bindings": { + "/private/tmp/complex484-pooling-frontier/variant-final/split-centres/FULL-WORD.json.gz": "b544a68e2d8d1fea28b2ae4a867c4585767396062bad3b322c0800e1670baa0b", + "/private/tmp/complex484-pooling-frontier/variant-final/split-centres/CANONICAL-WORD.json.gz": "dfdebff4de27cbf5fd3458de6e3d41678ecdd30bc679c438b5fb1b65460a36e3", + "/private/tmp/complex484-pooling-frontier/variant-final/split-centres/LOCAL-PROGRAMS.json.gz": "e44d520a3414ca8863623aa6ea6489d3f730fbd025d69f050236deb4d0bb9137", + "/private/tmp/pr484-independent-full-proof/gauge80-kernel42/split-centres/FULL-WORD.json.gz": "7e0a0d7fad7c1061de6fe849c30156a82e455d2a0e9ab92b88f3b92340e6b95d", + "/private/tmp/pr484-independent-full-proof/gauge80-kernel42/split-centres/CANONICAL-WORD.json.gz": "c85d1438f69e8bb43494256047fafd7d866e0dbed19984448b5e5372d345bc35" + }, + "reviewer_sha256": "d5f194f22e08da34f50e85c99fdc150b6b6860767c8f523c5093067f8c9af1ce", + "invariants": { + "changed_gate_frames": { + "A": 411, + "B": 504 + }, + "unchanged_scalar_gates": 4107, + "unchanged_initial_A_events_including_frames": 531, + "fixed_fields": [ + "center_frames", + "centers", + "cleanup", + "cut", + "ports", + "precondition", + "root_lines", + "scatter", + "start_extra", + "target_levels" + ] + }, + "original_raw_ledger": { + "profile": { + "1": 2057, + "2": 928, + "3": 50, + "4": 274, + "5": 314, + "6": 2, + "7": 1, + "8": 17 + }, + "rank_mass": 6884, + "child_count": 3643, + "climbs": 3610, + "center_rank_mass": 72, + "per_register_telescoping": true + }, + "retimed_raw_ledger": { + "profile": { + "1": 2385, + "2": 264, + "3": 530, + "4": 84, + "5": 270, + "6": 92, + "7": 1, + "8": 17 + }, + "rank_mass": 6884, + "child_count": 3643, + "climbs": 3610, + "center_rank_mass": 72, + "per_register_telescoping": true + }, + "canonical_binding": { + "transport_vector": 43, + "transport_exhaustively_orthogonal_and_linear": true, + "register_permutation_bijective": true, + "all_raw_canonical_incidences_bound": true, + "fixed_compensation_operations": 12082, + "actual_frame_count": 972 + }, + "emitted_ledgers": { + "forward": { + "events": 25082, + "event_counts": { + "phase": 9, + "scalar": 19708, + "adapter": 1478, + "residual_adapter": 244, + "climb": 3610, + "center": 33 + }, + "event_sha256": "4e70f6a476709990516458f87463b7986c377c858045bba57be305b3a90bef05", + "profile": { + "1": 2385, + "2": 264, + "3": 530, + "4": 84, + "5": 270, + "6": 92, + "7": 1, + "8": 17 + }, + "rank_mass": 6884, + "per_register_telescoping": true, + "private_center_paths": 16, + "entering_helpers": 122, + "scalar_operations": 19708, + "all_actual_labels_checked": true, + "actual_directed_edges": 2930, + "all_actual_edges_covered_by_canonical_phase_interface": true + }, + "backward": { + "events": 25082, + "event_counts": { + "phase": 9, + "scalar": 19708, + "adapter": 1478, + "residual_adapter": 244, + "climb": 3610, + "center": 33 + }, + "event_sha256": "376b830d7c256b14c37f1f829cf163b4bec41a0f84e2f9c84e124e6906a587fb", + "profile": { + "1": 2385, + "2": 264, + "3": 530, + "4": 84, + "5": 270, + "6": 92, + "7": 1, + "8": 17 + }, + "rank_mass": 6884, + "per_register_telescoping": true, + "private_center_paths": 16, + "entering_helpers": 122, + "scalar_operations": 19708, + "all_actual_labels_checked": true, + "actual_directed_edges": 2926, + "all_actual_edges_covered_by_canonical_phase_interface": true + } + }, + "negative_controls_rejected": [ + "raw_scalar_payload_change", + "changed_helper_entrance", + "downward_raw_retiming", + "canonical_frame_mismatch", + "missing_forward_climb", + "wrong_forward_climb_rank", + "wrong_backward_dual_sign", + "wrong_center_label", + "missing_entering_pre_wrapper", + "missing_entering_post_wrapper", + "wrong_exit_frame", + "wrong_center_rank" + ], + "scope": "Finite source and emitted-label retiming check only. Gaussian phase identities, exact all-column scalar arithmetic, complete global paid invoice, and inherited all-size/analytic interfaces are separate obligations." +} diff --git a/research/r489-partial-own-kernel84/provenance/RETIME-FROZEN.json b/research/r489-partial-own-kernel84/provenance/RETIME-FROZEN.json new file mode 100644 index 0000000000..a6b37a75b1 --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/RETIME-FROZEN.json @@ -0,0 +1,40 @@ +{ + "status": "FROZEN_ACTUAL_RETIMED_WORD_GAUSSIAN_AND_GLOBAL_REPLAY_RUNNING", + "source_word": "/private/tmp/pr484-independent-full-proof/gauge80-kernel42/split-centres/FULL-WORD.json.gz", + "source_word_sha256": "7e0a0d7fad7c1061de6fe849c30156a82e455d2a0e9ab92b88f3b92340e6b95d", + "frozen_word": "/private/tmp/complex484-pooling-frontier/retiming/neutral-continue.json.gz", + "frozen_word_sha256": "b544a68e2d8d1fea28b2ae4a867c4585767396062bad3b322c0800e1670baa0b", + "variant": "/private/tmp/complex484-pooling-frontier/variant-final", + "changed_gate_frames": { + "A": 411, + "B": 504 + }, + "unchanged_prelude_A_gates": 531, + "local_profile": { + "1": 2385, + "2": 264, + "3": 530, + "4": 84, + "5": 270, + "6": 92, + "7": 1, + "8": 17 + }, + "pooled_profile": { + "1": 172056, + "2": 19008, + "3": 42032, + "4": 6048, + "5": 22496, + "6": 6624, + "7": 1800, + "8": 4120 + }, + "local_rank_mass": 6884, + "local_child_count": 3643, + "pooled_rank_mass": 558144, + "pooled_child_count": 274184, + "prospective_pooled_b": "0.00134532548714952687808771963307994282156374067364875908209549", + "discovery": "500 zero-cost/strict-descent component moves from original, then1500 continuation moves with no further cost improvement after the first100. No global retiming optimality claim.", + "scope": "Actual scalar word and source scalar/frame+emitted both-orientation audits; exact Gaussian phases/global admission pending. Frozen PR496 unchanged." +} diff --git a/research/r489-partial-own-kernel84/provenance/RETIME-GAUSSIAN-ADMISSION.json b/research/r489-partial-own-kernel84/provenance/RETIME-GAUSSIAN-ADMISSION.json new file mode 100644 index 0000000000..77c26df42f --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/RETIME-GAUSSIAN-ADMISSION.json @@ -0,0 +1,289 @@ +{ + "status": "PASS_FROZEN_RETIMED_GAUSSIAN_NORMALIZATION_AND_BOTH_PHYSICAL_ORIENTATIONS", + "word_sha256": "b544a68e2d8d1fea28b2ae4a867c4585767396062bad3b322c0800e1670baa0b", + "input_files": { + "/private/tmp/complex484-pooling-frontier/variant-final/split-centres/FULL-WORD.json.gz": "b544a68e2d8d1fea28b2ae4a867c4585767396062bad3b322c0800e1670baa0b", + "/private/tmp/complex484-pooling-frontier/variant-final/split-centres/CANONICAL-WORD.json.gz": "dfdebff4de27cbf5fd3458de6e3d41678ecdd30bc679c438b5fb1b65460a36e3", + "/private/tmp/complex484-pooling-frontier/variant-final/split-centres/LOCAL-PROGRAMS.json.gz": "e44d520a3414ca8863623aa6ea6489d3f730fbd025d69f050236deb4d0bb9137", + "/private/tmp/complex484-pooling-frontier/variant-final/split-centres/CLIFFORD-RECIPES.json": "0193454a8fce6e5b1962728c6c92acc56e88d227b3fdcac1c9e5e2e912bd9dbf", + "/private/tmp/complex484-pooling-frontier/variant-final/split-centres/RESIDUAL-ADAPTERS.json": "546196e37830b9ccbc544834cb6f37ba4ad841faf96f025fe5155f5ba3924e07" + }, + "pinned_checker_files": { + "code/lemmaG/lg_phys.py": "0ca37829b596d83d0b94c5f0b6b278a100f22e626b2ab3b5210a38f9657c8a27", + "code/lemmaG/check.py": "f572b7129a546e1b1193fdd5baee4f731a5b9b8a4e8dc7ac170bcad7758e5b9a", + "code/lemmaG/lg_mutants.py": "cf0d1f8e90a0780244b6de38d6aad08dd42f4c439397a6d5a61fccd23fe7e798", + "code/lemmaG/lg_lib.py": "00068882bf2f2ebadd3f87c94204f226c7938966124bafb9ce6da89bfaf91b45", + "code/lemmaG/gd.py": "64cdb2cfefc9ec3ed80c277a18848778427c3d3dbda9b7be13f740522478e1de", + "code/lemmaG/lg_e2e.py": "8fe3719e8ec5ec49af480b40c15f07612a356f5071ea30e17ae2d8931b3f20ce", + "code/lemmaG/run_labels.py": "5f053e553b1c26e553a844e2891a73b6cc6b79404a7bb5d4722529f7db0d592c", + "code/lemmaG/lg_instances.py": "47dcf2e9ae2d99699424d684abebc3d1d2d25b7aa6d440761e19835d140f5fbb" + }, + "guard_sha256": "e572010d33bbb39f4756c785270b5fc9cb82ee6ee4d4cd75d0a1ca49d773a587", + "observed_steps": [ + { + "stage": "lg_instances.py", + "arguments": [ + "variant-final" + ], + "exit": 0, + "seconds": 99.07321712496923 + }, + { + "stage": "lg_e2e.py", + "arguments": [ + "variant-final", + "256", + "20261111" + ], + "exit": 0, + "seconds": 64.44702758302446 + } + ], + "instances": { + "variant": "variant-final", + "I-tr": { + "transitions": 2945, + "columns_each": 512, + "failures": [] + }, + "I-comp": { + "compensation_gates": 420, + "targets": 50, + "entering_helpers_compensating": 80, + "input_registers": 130, + "columns_each": 512, + "target_levels_after_segment": [ + 2, + 4, + 5 + ], + "failures": [] + }, + "I-centre": { + "centres": 16, + "detail": [ + { + "centre": 0, + "register": 99, + "frame": 480, + "path_dims": [ + 8, + 0 + ], + "targets": 28 + }, + { + "centre": 1, + "register": 64, + "frame": 481, + "path_dims": [ + 8, + 4, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 2, + "register": 365, + "frame": 482, + "path_dims": [ + 8, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 3, + "register": 30, + "frame": 483, + "path_dims": [ + 8, + 4, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 4, + "register": 393, + "frame": 484, + "path_dims": [ + 8, + 4, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 5, + "register": 98, + "frame": 485, + "path_dims": [ + 8, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 6, + "register": 421, + "frame": 486, + "path_dims": [ + 8, + 4, + 2, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 7, + "register": 96, + "frame": 487, + "path_dims": [ + 8, + 1, + 0 + ], + "targets": 28 + }, + { + "centre": 8, + "register": 35, + "frame": 967, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 9, + "register": 0, + "frame": 964, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 10, + "register": 13, + "frame": 965, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 11, + "register": 54, + "frame": 970, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 12, + "register": 40, + "frame": 968, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 13, + "register": 119, + "frame": 971, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 14, + "register": 22, + "frame": 966, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + }, + { + "centre": 15, + "register": 51, + "frame": 969, + "path_dims": [ + 1, + 0 + ], + "targets": 1 + } + ], + "failures": [] + }, + "I-helper": { + "entering_helpers": 122, + "widths": { + "8": 104, + "7": 14, + "5": 4 + }, + "columns_each": 512, + "failures": [] + }, + "seconds": 98.5 + }, + "end_to_end": { + "variant": "variant-final", + "seed": 20261111, + "columns": 806, + "kinds": { + "port": 240, + "centre": 16, + "random": 256, + "entering": 244, + "target_level": 50 + }, + "batches": 26, + "failures": [], + "dense": 8, + "seconds": 63.7, + "status": "PASS" + }, + "preoperation_bounds": { + "lg_instances.py": { + "add_calls": 1116, + "scale_calls": 884, + "primitive_calls": 102786, + "maximum_proved_numerator_bits": 14 + }, + "lg_e2e.py": { + "add_calls": 251980, + "scale_calls": 8810, + "primitive_calls": 854127, + "maximum_proved_numerator_bits": 29 + } + }, + "scope": "All used transition recipes and entering-helper complete chains checked on all512basis columns; full physical programs tested on structured and random basis columns plus dense arbitrary dirt, both orientations. Common-label universality and exact all800column scalar audits supplied independently; inherited all-size compiler/precision/tape and analytic transfer remain conditional." +} diff --git a/research/r489-partial-own-kernel84/provenance/UNPOOLED-SELECTION.json b/research/r489-partial-own-kernel84/provenance/UNPOOLED-SELECTION.json new file mode 100644 index 0000000000..8555dae09f --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/UNPOOLED-SELECTION.json @@ -0,0 +1,828 @@ +{ + "complex-gauge80-kernel42": { + "patterns": [ + [ + 0, + [ + [ + 0, + 8 + ], + [ + 1, + 8 + ] + ], + 104 + ], + [ + 0, + [ + [ + 0, + 9 + ] + ], + 2 + ], + [ + 0, + [ + [ + 0, + 9 + ], + [ + 1, + 7 + ] + ], + 14 + ], + [ + 1, + [], + 120 + ], + [ + 2, + [ + [ + 0, + 7 + ], + [ + 1, + 9 + ] + ], + 14 + ], + [ + 2, + [ + [ + 0, + 9 + ] + ], + 66 + ], + [ + 2, + [ + [ + 1, + 9 + ] + ], + 40 + ], + [ + 3, + [], + 16 + ], + [ + 3, + [ + [ + 2, + 8 + ] + ], + 104 + ], + [ + 4, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 5 + ], + [ + 3, + 9 + ] + ], + 4 + ], + [ + 4, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 7 + ], + [ + 3, + 7 + ] + ], + 14 + ], + [ + 4, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ] + ], + 78 + ], + [ + 4, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 3, + 8 + ] + ], + 24 + ], + [ + 5, + [], + 16 + ], + [ + 5, + [ + [ + 4, + 8 + ] + ], + 104 + ], + [ + 6, + [ + [ + 0, + 5 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 9 + ] + ], + 4 + ], + [ + 6, + [ + [ + 0, + 9 + ], + [ + 1, + 5 + ], + [ + 2, + 9 + ], + [ + 3, + 9 + ] + ], + 4 + ], + [ + 6, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ] + ], + 16 + ], + [ + 6, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 5 + ] + ], + 4 + ], + [ + 6, + [ + [ + 0, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 8 + ] + ], + 76 + ], + [ + 6, + [ + [ + 0, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 9 + ] + ], + 16 + ], + [ + 7, + [], + 106 + ], + [ + 7, + [ + [ + 4, + 7 + ] + ], + 14 + ], + [ + 8, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 9 + ], + [ + 4, + 9 + ] + ], + 54 + ], + [ + 8, + [ + [ + 0, + 9 + ], + [ + 1, + 9 + ], + [ + 2, + 9 + ], + [ + 4, + 9 + ], + [ + 5, + 9 + ] + ], + 66 + ], + [ + 9, + [], + 16 + ], + [ + 9, + [ + [ + 6, + 8 + ] + ], + 104 + ], + [ + 10, + [ + [ + 1, + 9 + ], + [ + 2, + 9 + ], + [ + 3, + 9 + ], + [ + 4, + 9 + ], + [ + 5, + 9 + ] + ], + 120 + ], + [ + 11, + [], + 120 + ], + [ + 12, + [ + [ + 3, + 9 + ], + [ + 4, + 9 + ], + [ + 5, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 90 + ], + [ + 12, + [ + [ + 3, + 9 + ], + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 30 + ], + [ + 13, + [ + [ + 3, + 8 + ], + [ + 4, + 5 + ], + [ + 5, + 8 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 4 + ], + [ + 13, + [ + [ + 3, + 9 + ], + [ + 4, + 9 + ], + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ] + ], + 2 + ], + [ + 13, + [ + [ + 3, + 9 + ], + [ + 4, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 106 + ], + [ + 13, + [ + [ + 3, + 9 + ], + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 8 + ], + [ + 14, + [ + [ + 5, + 5 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 4 + ], + [ + 14, + [ + [ + 5, + 7 + ], + [ + 6, + 7 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 6 + ], + [ + 14, + [ + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ] + ], + 110 + ], + [ + 15, + [ + [ + 5, + 7 + ], + [ + 6, + 7 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 8 + ], + [ + 15, + [ + [ + 5, + 8 + ], + [ + 6, + 9 + ], + [ + 8, + 9 + ] + ], + 100 + ], + [ + 15, + [ + [ + 5, + 9 + ], + [ + 6, + 5 + ], + [ + 7, + 9 + ], + [ + 8, + 9 + ] + ], + 4 + ], + [ + 15, + [ + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 5 + ], + [ + 8, + 9 + ] + ], + 4 + ], + [ + 15, + [ + [ + 5, + 9 + ], + [ + 6, + 9 + ], + [ + 7, + 9 + ], + [ + 8, + 5 + ] + ], + 4 + ], + [ + 16, + [ + [ + 7, + 9 + ] + ], + 46 + ], + [ + 16, + [ + [ + 7, + 9 + ], + [ + 8, + 7 + ] + ], + 14 + ], + [ + 16, + [ + [ + 8, + 9 + ] + ], + 60 + ], + [ + 17, + [ + [ + 7, + 7 + ], + [ + 8, + 9 + ] + ], + 14 + ], + [ + 17, + [ + [ + 7, + 8 + ], + [ + 8, + 8 + ] + ], + 104 + ], + [ + 17, + [ + [ + 7, + 9 + ] + ], + 2 + ] + ], + "proxy_saving": 30445.167647508395, + "rule": "one-helper-per-family" + } +} diff --git a/research/r489-partial-own-kernel84/provenance/nominate.py b/research/r489-partial-own-kernel84/provenance/nominate.py new file mode 100644 index 0000000000..a3590c7fe1 --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/nominate.py @@ -0,0 +1,62 @@ +"""New nomination only: correct per-width bank padding and exact-exponent objective. +Uses PR484 frozen word. No scalar or all-size admission is implied. +Prepared by OpenAI Codex; reuses PR484 pattern enumerator with attribution. +""" +from pathlib import Path +import sys,json,gzip,math,importlib.util +from collections import Counter +import numpy as np +from scipy.optimize import milp,LinearConstraint,Bounds +from scipy.sparse import lil_matrix +ROOT=Path(__file__).resolve().parents[1]/'vendor/complex/e8-complex-gauge-kernel' +sys.path.insert(0,str(ROOT/'code')) +import onehost_gk as OH +OUT=Path(sys.argv[2]).resolve();OUT.mkdir(parents=True,exist_ok=False) +PROOF=Path(sys.argv[1]).resolve() +t=json.load(gzip.open(PROOF/'hosted/GLOBAL-TEMPLATE.json.gz')) +c=json.load(gzip.open(PROOF/'split-centres/CANONICAL-WORD.json.gz')) +widths=[9-len(c['frames'][c['start'][240+i]]) for i in range(c['R'])] +WID=Counter(widths); avail={(s,w):n for s in range(9) for w,n in WID.items()} +win={int(i):(p,r,st) for i,(p,r,st) in t['hosting']['windows'].items()} +var=[(i,pat) for i,(p,r,st) in sorted(win.items()) for pat in OH.patterns(r,sorted(st),sorted(WID))] +ids=sorted(win); aws=sorted(avail); n=len(var) +A=lil_matrix((len(ids)+len(aws),n)); idx={i:j for j,i in enumerate(ids)}; ai={sw:len(ids)+j for j,sw in enumerate(aws)} +for j,(i,pat) in enumerate(var): + A[idx[i],j]=1 + for sw in pat:A[ai[sw],j]=1 +A=A.tocsr(); lo=np.r_[np.full(len(ids),120),np.zeros(len(aws))]; hi=np.r_[np.full(len(ids),120),np.array([avail[x] for x in aws])] +print('variables',n,'windows',len(win),'widths',WID,flush=True) +oldsel=json.load(open(ROOT/'data/SELECTION.json'))['complex-gauge80-kernel42']['patterns'] +local=json.load(open(PROOF/'split-centres/LOCAL-CHECKS.json')) + +def profile(sel): + H=Counter(); used=Counter();rem=[] + for call in t['calls']: + H.update({int(r):z for r,z in local[call['orientation']]['paid_profile'].items()}) + for i,pat,n in sel: + left=win[i][1]-sum(w for s,w in pat) + if left:H[left]+=8*n + used.update({(s,w):n for s,w in pat}) + banks=0; rest={} + for sw,a in avail.items(): + z=a-used[sw]; assert z>=0 + if z:rest[str(sw)]=z; banks+=z;H[73-8*sw[1]]+=z + # original excluded windows are untouched, from parent template + parent=json.load(gzip.open(PROOF/'split-centres/GLOBAL-TEMPLATE.json.gz')) + for it in parent['idle_children']: + if it['child'] not in win:H[it['rank']]+=it['replicas'] + live=7680+banks;assert 73*live-sum(r*n for r,n in H.items())==2496 + return dict(histogram=dict(sorted(H.items())),live=live,banks=banks,unhosted_per_replica=rest,deficit=2496) +assert profile(oldsel)['histogram']=={int(r):n for r,n in json.load(open(PROOF/'hosted/HOSTED.json'))['global_profile'].items()} +for label,b in [('entropy',0),('at484',.001326789535340266)]: + def cost(r):return r*math.expm1(b*math.log(73/r))/b if r and b else r*math.log(73/r) if r else 0 + def objective(i,pat):return cost(win[i][1])-cost(win[i][1]-sum(w for s,w in pat))+sum(cost(73-8*w)/8 for s,w in pat) + obj=np.array([-objective(i,pat) for i,pat in var]) + res=milp(obj,integrality=np.ones(n),bounds=Bounds(0,np.inf),constraints=LinearConstraint(A,lo,hi),options={'time_limit':90,'mip_rel_gap':1e-10}) + assert res.x is not None,res + x=np.rint(res.x).astype(int);assert abs(A@x-hi)[:len(ids)].max()==0 and np.all(A@x<=hi) and np.all(x>=0) + sel=[[i,[list(z) for z in pat],int(x[j])] for j,(i,pat) in enumerate(var) if x[j]] + result=profile(sel)|dict(status='NOMINATION_ONLY',scipy_status=int(res.status),message=res.message,mip_gap=float(res.mip_gap),objective=-float(res.fun),old_objective=sum(n*objective(i,pat) for i,pat,n in oldsel),b=b,patterns=sel) + (OUT/f'{label}.json').write_text(json.dumps(result,indent=2)+'\n') + (OUT/f'SELECTION-{label}.json').write_text(json.dumps({'complex-gauge80-kernel42':dict(rule='one-helper-per-family',patterns=sorted(sel),proxy_saving=-float(res.fun))},indent=1,sort_keys=True)+'\n') + print(label,{k:v for k,v in result.items() if k not in ['patterns','histogram']},flush=True) diff --git a/research/r489-partial-own-kernel84/provenance/retime_continue.py b/research/r489-partial-own-kernel84/provenance/retime_continue.py new file mode 100644 index 0000000000..e02c42c1b3 --- /dev/null +++ b/research/r489-partial-own-kernel84/provenance/retime_continue.py @@ -0,0 +1,69 @@ +"""OpenAI Codex fixed-gate frame-component retiming search. +All local scalar operations and selected entrance gauges/kernel remain fixed. +""" +exec(open('/private/tmp/complex484-pooling-frontier/retime_word.py').read().split('out=[finish')[0]) +import math,time,random +random.seed(484) +alpha=133385415620840915601/10**23 +cost=lambda r:r/73*math.expm1(alpha*math.log(73/r))+32*73/10**16*73**alpha if r else 0. +def optimize(word,tag): + z=copy.deepcopy(word);labels=[];fixed=[];eventnodes={};seq=[[]for _ in range(n)] + def node(F,pin,rs,key=None): + i=len(labels);labels.append(basis(F));fixed.append(pin) + for r in rs:seq[r].append(i) + if key:eventnodes[key]=i + return i + for r,F in enumerate(start):node(F,True,[r]) + for part in ['A','B']: + if part=='B': + for r,F in zip(z['centers'],z['center_frames']):node(F,True,[r]) + for t in range(V):node(z.get('target_levels',{}).get(str(t),[]),True,[V+t]) + for j,e in enumerate(z[part]):node(e[-1],False,registers(e),(part,j)) + for r,F in enumerate(final):node(F,True,[r]) + edges=[(a,b,r)for r,ss in enumerate(seq)for a,b in zip(ss,ss[1:])] + def total():return sum(cost(len(labels[b])-len(labels[a]))for a,b,r in edges) + startcost=total();moves=[];t0=time.monotonic();tabu=set();bestcost=startcost;bestlabels=labels.copy() + for iteration in range(1500): + par=list(range(len(labels))) + def root(i): + while par[i]!=i:par[i]=par[par[i]];i=par[i] + return i + for a,b,r in edges: + assert span(labels[a])<=span(labels[b]) + if labels[a]==labels[b]:par[root(a)]=root(b) + comps={};pins={};incoming={};outgoing={} + for i in range(len(labels)): + c=root(i);comps.setdefault(c,[]).append(i);pins[c]=pins.get(c,False)or fixed[i] + for a,b,r in edges: + ca,cb=root(a),root(b) + if ca!=cb:outgoing.setdefault(ca,[]).append((a,b,r));incoming.setdefault(cb,[]).append((a,b,r)) + best=None;neutral=[];state=hash(tuple(labels)) + for c,ns in comps.items(): + if pins[c]:continue + ins=incoming.get(c,[]);outs=outgoing.get(c,[]) + low=basis([v for a,b,r in ins for v in labels[a]]);up=basis(set.intersection(*(span(labels[b])for a,b,r in outs))) + cf=labels[ns[0]];old=sum(cost(len(cf)-len(labels[a]))for a,b,r in ins)+sum(cost(len(labels[b])-len(cf))for a,b,r in outs) + for nf in {low,up}: + if nf==cf:continue + new=sum(cost(len(nf)-len(labels[a]))for a,b,r in ins)+sum(cost(len(labels[b])-len(nf))for a,b,r in outs);delta=new-old + if delta<-1e-13 and(best is None or delta 104; nine fresh total registers give R = 489 at 100 bits. + +## Scope + +Conditional on every interface #472's eleven-stage composition retains: the all-size bit/Gaussian compiler, +mutable-basis and target-label realization, whole-call correlated-helper hosting (#442), compressed windows, +restored work, common grid and tape, precision, row and analytic contracts. Complex savings are cited from their +PRs' receipts, not rebuilt; the primary κ also rests on #484's Lemmas A and G. The hosting selection is a frozen nomination of #442's integer programme +(`discovery/host_select.py`) and the plan a CP-SAT nomination (`discovery/plan.py`); neither is claimed optimal. +No unconditional multiplication theorem, Lean proof or κ = 1 result is claimed. + +## Credits + +Zhihao Chen (#425: the mutable-basis interface lemma; #386: nine-stage geometry); DreamingOfClouds (#463: the +carrier bound; #315: moment engines; #484: the primary complex supplier); DaysSky (#442: idle-axis hosting; #381: `columns_k`); chafreaky (#445, #451, +#472: eleven-stage geometry, row bound, pooled whole hosting, emitter, audit and invoice; #443's bank routes; +#458's complex supplier); Dylan Crow (#370: bitE8/1 format, independent checker, generalised official checkers); +icekylinx (#433: source rows written on the bit side); Dugongue (#471: complex supplier; #483: current +whole-residual frontier); higherbeing (#448, information only); eumemic (#436: R740 and the provenance tooling); Jacob Sussman (the E8 unit). Details in +`NOTICE.md`. + +Prepared by eumemic with substantial Anthropic Claude assistance. Apache-2.0 (`LICENSE`). diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr370.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr370.json new file mode 100644 index 0000000000..1b30f277af --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr370.json @@ -0,0 +1,69 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/370", + "head_repository": "utcorvusvolat-dotcom/e8-bit-kappa-8.7548e-4", + "commit": "b7fe9cdf2da009c947ff6b334c562bc190b30373", + "note": "PR #370 (Dylan Crow / utcorvusvolat-dotcom, with Anthropic Claude assistance): independent checker and its word-level controls, record exporter and record-level controls, PR #266's official cohort checkers as generalised there (NCOPY), Gram/prime-witness checker, PR #315's engines (DreamingOfClouds) as vendored there, the E8 label table (via its R865 word), LICENSE. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "LICENSE": { + "source_path": "research/e8-bit/LICENSE", + "blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64" + }, + "code/bit/independent/checkword.py": { + "source_path": "research/e8-bit/code/bit/independent/checkword.py", + "blob": "da4e0fe05067184d4dab1e130ae1384c1fa983f5" + }, + "code/bit/independent/mutate.py": { + "source_path": "research/e8-bit/code/bit/independent/mutate.py", + "blob": "eba592fd468e0d7e7e5100fe99da6eb548c5906b" + }, + "code/bit/export_records.py": { + "source_path": "research/e8-bit/code/bit/export_records.py", + "blob": "3632d370486a02f5456f7643ced03f8c925b2350" + }, + "code/bit/mutate_records.py": { + "source_path": "research/e8-bit/code/bit/mutate_records.py", + "blob": "6794516f665d36eac189894e350a5ad01113cb4c" + }, + "code/bit/regression/stage_cohort.py": { + "source_path": "research/e8-bit/code/bit/regression/stage_cohort.py", + "blob": "f6d7afe3e623208c4207b6a683a1e3e49249e31c" + }, + "code/bit/checkers/legality_h.cpp": { + "source_path": "research/e8-bit/code/bit/checkers/legality_h.cpp", + "blob": "cb1233c7e96b1aa8bbf4d2e4165d75ab0dca64b9" + }, + "code/bit/checkers/columns_h.cpp": { + "source_path": "research/e8-bit/code/bit/checkers/columns_h.cpp", + "blob": "00c5a3a5d81d083582f60f33dd2e7bea5049c37f" + }, + "code/bit/checkers/json.hpp": { + "source_path": "research/e8-bit/code/bit/checkers/json.hpp", + "blob": "82d69f7c5d044c9887c96b90c97f5639083ecd14" + }, + "code/bit/checkers/gram_frames.py": { + "source_path": "research/e8-bit/code/bit/checkers/gram_frames.py", + "blob": "b740d47295c02692260d7cc01874a49fe48f78ab" + }, + "code/pricing/moment.py": { + "source_path": "research/e8-bit/code/pricing/moment.py", + "blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd" + }, + "code/pricing/base_two_moment.py": { + "source_path": "research/e8-bit/code/pricing/base_two_moment.py", + "blob": "14a90fa0e788217856f070382c9e61bd7c603c61" + }, + "code/pricing/outer.py": { + "source_path": "research/e8-bit/code/pricing/outer.py", + "blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2" + }, + "code/pricing/prime_witnesses.py": { + "source_path": "research/e8-bit/code/pricing/prime_witnesses.py", + "blob": "7f16d930302ae879c562dd58e085d9747fcac077" + }, + "data/bit/bitE8-r865.json.gz": { + "source_path": "research/e8-bit/data/bit/bitE8-r865.json.gz", + "blob": "8bec1751f7e33c3a1e4673ef5dbc34d6f205321e" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr381.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr381.json new file mode 100644 index 0000000000..fb0b0edd13 --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr381.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/381", + "head_repository": "DaysSky/integer-mult-bounds", + "commit": "00765b291d0f924f337298eb1e2930cb0878b95e", + "note": "PR #381 (DaysSky, assisted with Claude): the B_K formal-columns checker columns_k.cpp (KPAIRS). Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "code/bit/checkers/columns_k.cpp": { + "source_path": "research/e8-nine-stage-kappa/code/bit/checkers/columns_k.cpp", + "blob": "42bb232fbec4de703e70cc13dc2f39a3b43a3a01" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr386.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr386.json new file mode 100644 index 0000000000..3744861904 --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr386.json @@ -0,0 +1,17 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/386", + "head_repository": "jacklightChen/integer-mult-bounds", + "commit": "dd11cf8069554f0333afde398f12a56c3a7c29dd", + "note": "PR #386 (Zhihao Chen / jacklightChen, with OpenAI Codex assistance): compressed nine-stage bit geometry (used here only as the parent geometry of the eleven-stage audit) and the portable bits/stdc++.h. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "portable-include/bits/stdc++.h": { + "source_path": "research/e8-bit-complex-nine/portable-include/bits/stdc++.h", + "blob": "fc5664e929d9a81d9b4926bee049a93330be86ec" + }, + "code/nine/geometry.py": { + "source_path": "research/e8-bit-complex-nine/geometry.py", + "blob": "91594e0223e8fac49162b5aef834ffaa8e94a254" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr436.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr436.json new file mode 100644 index 0000000000..f190527ae1 --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr436.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/436", + "head_repository": "eumemic/integer-mult-bounds", + "commit": "8f6b8297b08ad863940d5168a2db5402fad3690f", + "note": "PR #436 (eumemic, with Anthropic Claude assistance): the provenance checker. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "code/provenance.py": { + "source_path": "research/e8-bit-elimination-reuse/code/provenance.py", + "blob": "9bfcb106230e454d9405ce5eb42dd2218d905ea6" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr445.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr445.json new file mode 100644 index 0000000000..ae29de391a --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr445.json @@ -0,0 +1,25 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/445", + "head_repository": "chafreaky/integer-mult-bounds", + "commit": "40ab91daf2b5e87fc4071dedae1699d5d7e7cecc", + "note": "PR #445 (chafreaky, with OpenAI Codex assistance): eleven-stage compressed bit geometry, elementary orthogonal-cover row bound, and its eleven-stage emitter and frozen hosting selection (used unchanged for the PR #445 R740 control). Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "code/hub/r740-hosted-eleven/code/geometry.py": { + "source_path": "research/r740-hosted-eleven/code/geometry.py", + "blob": "b4ad5074014dc00a01143910eb1cd27fafe0e15c" + }, + "code/hub/r740-hosted-eleven/code/row_bound.py": { + "source_path": "research/r740-hosted-eleven/code/row_bound.py", + "blob": "11d3c0d48e4ea5a02ac3b6689f3c7d36f2972eb8" + }, + "code/hub/r740-hosted-eleven/code/emit.py": { + "source_path": "research/r740-hosted-eleven/code/emit.py", + "blob": "5ff0de0d6f088ac95e25a2a7aed8653e8cd0333e" + }, + "code/hub/r740-hosted-eleven/data/selection.json": { + "source_path": "research/r740-hosted-eleven/data/selection.json", + "blob": "8e548e5a9204a909d539ba36b866804b256d4c2b" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr448.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr448.json new file mode 100644 index 0000000000..3648ab3692 --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr448.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/448", + "head_repository": "higherbeing/integer-mult-bounds", + "commit": "359022bcd71143e45d48def0dd005bf67f339aa7", + "note": "PR #448: its EXPECTED.json receipt (cited complex b). Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/complex/pr448/EXPECTED.json": { + "source_path": "research/cross-copy-hosting/EXPECTED.json", + "blob": "1574e6488b6fc59191ae49fcc0c089e48b196fbd" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr451.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr451.json new file mode 100644 index 0000000000..fbd9881e09 --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr451.json @@ -0,0 +1,25 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/451", + "head_repository": "chafreaky/integer-mult-bounds", + "commit": "f3a38153678b55063fc005901cc968266166507d", + "note": "PR #451 (chafreaky, with OpenAI Codex assistance): its eleven-stage bit emitter (byte-identical to PR #445's), frozen hosting selection, R740 rank149 word and residual isometries, used unchanged for the PR #451 control. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "code/hub/r740-hosted-rank149/code/emit.py": { + "source_path": "research/r740-hosted-rank149/code/emit.py", + "blob": "5ff0de0d6f088ac95e25a2a7aed8653e8cd0333e" + }, + "code/hub/r740-hosted-rank149/data/selection.json": { + "source_path": "research/r740-hosted-rank149/data/selection.json", + "blob": "c57069f7385c3b6aff4fe3c73c0a21bae727c76f" + }, + "code/hub/r740-hosted-rank149/data/word.json.gz": { + "source_path": "research/r740-hosted-rank149/data/word.json.gz", + "blob": "3c8489a29f0de2cad7dafaddc340a1ff197d5172" + }, + "code/hub/r740-hosted-rank149/data/residual-isometries.json": { + "source_path": "research/r740-hosted-rank149/data/residual-isometries.json", + "blob": "ec8b4131d203d7a288ca078ca559f922d38fe9d2" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr458.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr458.json new file mode 100644 index 0000000000..c36c74cbea --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr458.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/458", + "head_repository": "chafreaky/integer-mult-bounds", + "commit": "44e9eae8287951c1e6dbbd3c553f5743fe2240b0", + "note": "PR #458: its EXPECTED.json receipt (cited complex b). Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/complex/pr458/EXPECTED.json": { + "source_path": "research/e8-complex-adapted-kernel/EXPECTED.json", + "blob": "e06a17c177eee0e0962c96ea61554239ef38ef4d" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr471.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr471.json new file mode 100644 index 0000000000..0dc019cfb1 --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr471.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/471", + "head_repository": "Dugongue/integer-mult-bounds", + "commit": "56b3da6aa1295d37ce43f1753479bfe4737b7ac3", + "note": "PR #471: its EXPECTED.json receipt (cited complex b). Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/complex/pr471/EXPECTED.json": { + "source_path": "research/e8-tensor-normalization/EXPECTED.json", + "blob": "ed1e72239ebebdbfad847fb817e5546f980c1d8d" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr472.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr472.json new file mode 100644 index 0000000000..31acb027ec --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr472.json @@ -0,0 +1,73 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/472", + "head_repository": "chafreaky/integer-mult-bounds", + "commit": "259c68488b7aa8a14cf3fcae7fc499381c9bf729", + "note": "PR #472 (chafreaky, with OpenAI Codex assistance) and the files its branch carries unchanged: research/e8-r715-whole-hosted (PR #472: eight-replica pooled whole-residual emitter, independent audit, local projector audit, assembly, R715 word, isometries, frozen hosting); research/e8-r740-replica32 (PR #443, chafreaky: bank routes, tiling, engine wrapper, the R740 rank138 word and its isometries; PR #315 engines by DreamingOfClouds); research/idle-axis-hosting/hosting_core.py (PR #442, DaysSky). Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "code/hub/e8-r740-replica32/code/bank_routes.py": { + "source_path": "research/e8-r740-replica32/code/bank_routes.py", + "blob": "9e43a876664a26899762f3b8e9a582e684a3650a" + }, + "code/hub/e8-r740-replica32/code/tile_m.py": { + "source_path": "research/e8-r740-replica32/code/tile_m.py", + "blob": "cd5fd9b5399f5e7afe5d2a95bd3504bd543c0d60" + }, + "code/hub/e8-r740-replica32/code/e8core.py": { + "source_path": "research/e8-r740-replica32/code/e8core.py", + "blob": "78983b368715e89fe8524a6dd2c13585d2b5394e" + }, + "code/hub/e8-r740-replica32/code/engines/moment.py": { + "source_path": "research/e8-r740-replica32/code/engines/moment.py", + "blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd" + }, + "code/hub/e8-r740-replica32/code/engines/base_two_moment.py": { + "source_path": "research/e8-r740-replica32/code/engines/base_two_moment.py", + "blob": "14a90fa0e788217856f070382c9e61bd7c603c61" + }, + "code/hub/e8-r740-replica32/code/engines/outer.py": { + "source_path": "research/e8-r740-replica32/code/engines/outer.py", + "blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2" + }, + "code/hub/e8-r740-replica32/data/word.json.gz": { + "source_path": "research/e8-r740-replica32/data/word.json.gz", + "blob": "85390b07e4747feddbf2e16f94b5e0a8a308c191" + }, + "code/hub/e8-r740-replica32/data/residual-isometries.json": { + "source_path": "research/e8-r740-replica32/data/residual-isometries.json", + "blob": "9b8b35cb1528a978e209e1098864cae48c57fd93" + }, + "code/hub/idle-axis-hosting/hosting_core.py": { + "source_path": "research/idle-axis-hosting/hosting_core.py", + "blob": "68b536daa9e6546c0aa046934bf840aaa3c3fde3" + }, + "code/hub/e8-r715-whole-hosted/code/emit.py": { + "source_path": "research/e8-r715-whole-hosted/code/emit.py", + "blob": "df74ad698a98419e828b37d4dfd7c036fc49a890" + }, + "code/hub/e8-r715-whole-hosted/code/audit.py": { + "source_path": "research/e8-r715-whole-hosted/code/audit.py", + "blob": "155b61f2944116423a5be6ae666276e1c1827fe5" + }, + "code/hub/e8-r715-whole-hosted/code/local_audit.py": { + "source_path": "research/e8-r715-whole-hosted/code/local_audit.py", + "blob": "931f884920125b334412f70cf30d9517b084dc7a" + }, + "code/hub/e8-r715-whole-hosted/code/assemble.py": { + "source_path": "research/e8-r715-whole-hosted/code/assemble.py", + "blob": "cd60b4bcfae515fccd7f21fd1ff5a7114a132eb9" + }, + "code/hub/e8-r715-whole-hosted/data/word.json.gz": { + "source_path": "research/e8-r715-whole-hosted/data/word.json.gz", + "blob": "f7d55b8bd45d385011ced25e632a3d922bb77bba" + }, + "code/hub/e8-r715-whole-hosted/data/residual-isometries.json": { + "source_path": "research/e8-r715-whole-hosted/data/residual-isometries.json", + "blob": "5864e4d680035401d53d32adab0369046d80b171" + }, + "code/hub/e8-r715-whole-hosted/data/hosting.json": { + "source_path": "research/e8-r715-whole-hosted/data/hosting.json", + "blob": "381fb06ccbe055f4fbdc7544dcf8c0bae8f96701" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr473.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr473.json new file mode 100644 index 0000000000..821caf8f07 --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr473.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/473", + "head_repository": "rohanarun/integer-mult-bounds", + "commit": "c7590f1d861f0eaae725cc79901445385aab9125", + "note": "PR #473: its EXPECTED.json receipt (cited complex b; frontier kappa). Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/complex/pr473/EXPECTED.json": { + "source_path": "research/r715-replica84-complex79/EXPECTED.json", + "blob": "45ee9fde7fdf6b19b6303372068977201b4ef61c" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr478.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr478.json new file mode 100644 index 0000000000..608323ccbe --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr478.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/478", + "head_repository": "Dugongue/integer-mult-bounds", + "commit": "bea1d52fd330c699903f81612ee58be81697d1eb", + "note": "PR #478: its EXPECTED.json receipt (cited complex b; frontier kappa). Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/complex/pr478/EXPECTED.json": { + "source_path": "research/tensor-r715-next/EXPECTED.json", + "blob": "77f5805cd8125602e8c50f4eaba1691440c611c2" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr483.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr483.json new file mode 100644 index 0000000000..817396d9c8 --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr483.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/483", + "head_repository": "Dugongue/integer-mult-bounds", + "commit": "3738c3ce2d04d6a6c6363408ff9402286f592bc7", + "note": "PR #483: its EXPECTED.json receipt (cited complex b; frontier kappa). Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/complex/pr483/EXPECTED.json": { + "source_path": "research/tensor-response-r715/EXPECTED.json", + "blob": "f7ff643cd54a334bf46c82989ba155eb6e69adde" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr484.json b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr484.json new file mode 100644 index 0000000000..76292df851 --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/SOURCE-pr484.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/484", + "head_repository": "DreamingOfClouds/integer-mult-bounds", + "commit": "035845ce95f31d0a2dcfb42b8c8e13411271fa5f", + "note": "PR #484: its EXPECTED.json receipt (cited complex b). Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/complex/pr484/EXPECTED.json": { + "source_path": "research/e8-complex-gauge-kernel/EXPECTED.json", + "blob": "7f93fcbb9f1c2799fd86dd308ec1e6f0ad2a3264" + } + } +} diff --git a/research/r489-partial-own-kernel84/vendor/bit/code/bit/checkers/columns_h.cpp b/research/r489-partial-own-kernel84/vendor/bit/code/bit/checkers/columns_h.cpp new file mode 100644 index 0000000000..00c5a3a5d8 --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/code/bit/checkers/columns_h.cpp @@ -0,0 +1,48 @@ +// Generalization (Dylan Crow, with Anthropic Claude assistance): the copied-centre count is the macro NCOPY, defaulting to +// HDIM, so the unmodified PR #346/#352 build (no -DNCOPY) is exactly the original checker. The E8 bit word has 9 +// retained totals at h = 8 (-DNCOPY=9). +#ifndef NCOPY +#define NCOPY HDIM +#endif +#include "json.hpp" +#include +#include +using boost::multiprecision::cpp_int; +#include +#include +#include +#include +#include +#include +#include +using J=nlohmann::json; +struct E{int kind,dst,src,c;}; +void need(bool x,const char*s){if(!x)throw std::runtime_error(s);} +int main(int argc,char**argv){try{ +need(argc==3,"usage RAW6_RECORDS OUTPUT");std::string pre=argv[1];int v=VPORTS,r=RHELP,loc=2*v+r,global=4*v+r,temp=global; +struct Raw{int op,a,b,c,f,z;};std::ifstream f(pre,std::ios::binary|std::ios::ate);size_t sz=f.tellg();need(sz%sizeof(Raw)==0,"stream alignment");std::vectorp(sz/sizeof(Raw));f.seekg(0);f.read((char*)p.data(),sz);std::vectore;std::mapH;for(auto q:p){if(q.op==0){if(q.f)H[q.f]++;}else if(q.op==1)e.push_back({0,q.a,q.b,q.c});else if(q.op==2){H[q.z]++;e.push_back({1,loc,q.a,0});}else if(q.op==3)e.push_back({2,loc,q.a,0});else need(false,"opcode");} +J prefix=J::array();cpp_int largestF=0,largestB=0;for(int rev=0;rev<2;rev++){std::vectornorms(loc+1,1);cpp_int maxrow=1;bool isopen=false;for(size_t z=0;zmaxrow)maxrow=norms[q.dst];}else if(k==1){need(!isopen,"boundcopy");norms[loc]=norms[q.src];isopen=true;}else {need(isopen,"bounderase");norms[loc]=0;isopen=false;}}need(!isopen,"prefix copy closure");if(rev)largestB=maxrow;else largestF=maxrow;prefix.push_back({{"reverse",bool(rev)},{"cancellation_free_signed_row_l1_upper",maxrow.convert_to()},{"bits",boost::multiprecision::msb(maxrow)+1}});} +cpp_int payload=64*largestF*largestF*largestF*largestB*largestB;need(payload<(cpp_int(1)<<104),"payloadfiniteprefix2^104"); +long long copies=0,adds=0,odd=0;bool open=false;int center=-1;long long reverseCopies=0; +for(auto q:e){need(q.kind>=0&&q.kind<=2,"kind");need(q.dst>=0&&q.dst<=loc,"local dst");if(q.kind==0){need(q.src>=0&&q.src<=loc&&q.dst!=q.src,"source distinct");need(q.dst!=loc,"copy immutable");need(q.src!=loc||open,"temp not open");if(open)need(q.dst!=center,"source changes inside copied-center block");adds++;odd+=q.c&1;} +else if(q.kind==1){need(!open&&q.dst==loc&&q.src>=0&&q.srca((size_t)(global+1)*words);auto row=[&](int i){return a.data()+(size_t)i*words;};for(int i=0;i=v&&i<2*v&&w==(size_t)(i-v)/64)want^=1ull<<((i-v)%64);need(x[w]==want,"local defining-decoder full formal column");}}} +if(stage==1||stage==2||stage==4){int b=stage==1?0:stage==2?1:2;for(auto q:bridges[b])for(int i=0;i(std::chrono::steady_clock::now()-t0).count()<<"s\n";} +for(int bank=0;bank<4;bank+=2)for(int i=0;i()},{"payload_prefix_bits",boost::multiprecision::msb(payload)+1},{"new_Q_categories",{28,29}},{"local_raw_H",H},{"negative_controls",controls},{"seconds",std::chrono::duration(std::chrono::steady_clock::now()-t0).count()}};std::ofstream(argv[2])< +#include +using boost::multiprecision::cpp_int; +#include +#include +#include +#include +#include +#include +#include +using J=nlohmann::json; +struct E{int kind,dst,src,c;}; +void need(bool x,const char*s){if(!x)throw std::runtime_error(s);} +int main(int argc,char**argv){try{ +need(argc==3,"usage RAW6_RECORDS OUTPUT");std::string pre=argv[1];int v=VPORTS,r=RHELP,loc=2*v+r,global=2*KPAIRS*v+r,temp=global;const int S=2*KPAIRS+1; +struct Raw{int op,a,b,c,f,z;};std::ifstream f(pre,std::ios::binary|std::ios::ate);size_t sz=f.tellg();need(sz%sizeof(Raw)==0,"stream alignment");std::vectorp(sz/sizeof(Raw));f.seekg(0);f.read((char*)p.data(),sz);std::vectore;std::mapH;for(auto q:p){if(q.op==0){if(q.f)H[q.f]++;}else if(q.op==1)e.push_back({0,q.a,q.b,q.c});else if(q.op==2){H[q.z]++;e.push_back({1,loc,q.a,0});}else if(q.op==3)e.push_back({2,loc,q.a,0});else need(false,"opcode");} +J prefix=J::array();cpp_int largestF=0,largestB=0;for(int rev=0;rev<2;rev++){std::vectornorms(loc+1,1);cpp_int maxrow=1;bool isopen=false;for(size_t z=0;zmaxrow)maxrow=norms[q.dst];}else if(k==1){need(!isopen,"boundcopy");norms[loc]=norms[q.src];isopen=true;}else {need(isopen,"bounderase");norms[loc]=0;isopen=false;}}need(!isopen,"prefix copy closure");if(rev)largestB=maxrow;else largestF=maxrow;prefix.push_back({{"reverse",bool(rev)},{"cancellation_free_signed_row_l1_upper",maxrow.convert_to()},{"bits",boost::multiprecision::msb(maxrow)+1}});} +cpp_int payload=64*largestF*largestF*largestF*largestB*largestB;need(payload<(cpp_int(1)<<104),"payloadfiniteprefix2^104"); +long long copies=0,adds=0,odd=0;bool open=false;int center=-1;long long reverseCopies=0; +for(auto q:e){need(q.kind>=0&&q.kind<=2,"kind");need(q.dst>=0&&q.dst<=loc,"local dst");if(q.kind==0){need(q.src>=0&&q.src<=loc&&q.dst!=q.src,"source distinct");need(q.dst!=loc,"copy immutable");need(q.src!=loc||open,"temp not open");if(open)need(q.dst!=center,"source changes inside copied-center block");adds++;odd+=q.c&1;} +else if(q.kind==1){need(!open&&q.dst==loc&&q.src>=0&&q.src>active;std::vectorbackward;std::vector>>after(S); +auto X=[](int p){return 2*(p-1);};auto Y=[](int p){return 2*(p-1)+1;}; +for(int t=0;t=3&&t%2==1);backward.push_back(b);active.push_back(b?std::array{Y(p),X(p)}:std::array{X(p),Y(p)});} +for(int q=2;q<=KPAIRS;q++){after[2*q-3].push_back({X(q-1),X(q),1});after[2*q-3].push_back({Y(q),Y(q-1),-1}); + after[2*q-2].push_back({Y(q),Y(q-1),1});after[2*q-2].push_back({X(q-1),X(q),-1});} +for(int p=KPAIRS;p>=2;p--){after[S-1].push_back({Y(p-1),Y(p),-1});after[S-1].push_back({X(p),X(p-1),1});} +int nbridges=0;for(auto&a:after)nbridges+=a.size();need(nbridges==6*(KPAIRS-1),"twin bridge count"); +size_t words=(global+63)/64;std::vectora((size_t)(global+1)*words);auto row=[&](int i){return a.data()+(size_t)i*words;};for(int i=0;i=v&&i<2*v&&w==(size_t)(i-v)/64)want^=1ull<<((i-v)%64);need(x[w]==want,"local defining-decoder full formal column");}}} +for(auto q:after[stage])for(int i=0;i(std::chrono::steady_clock::now()-t0).count()<<"s\n";} +for(int bank=0;bank<2*KPAIRS;bank+=2)for(int i=0;ib(2*KPAIRS);for(int z=0;z<2*KPAIRS;z++)b[z]=1u<()},{"payload_prefix_bits",boost::multiprecision::msb(payload)+1},{"new_Q_categories",{28,29}},{"local_raw_H",H},{"negative_controls",controls},{"seconds",std::chrono::duration(std::chrono::steady_clock::now()-t0).count()}};std::ofstream(argv[2])</2 in Construction-A (Hamming) coordinates, integer Gram 2 B G B^t = B B^t +Checks per frame: rank(B) = dim, A.B = 0 and |A| + dim = h (when A given), det(integer Gram) != 0 (exact Bareiss), and +the prime witness: |det| = residual * prod p^e over PR #315's allowed primes with 0 < residual < 2^80. With --new BASE +only frames absent from BASE are checked (prime_new.py's scope); otherwise every frame. +usage: python3 gram_frames.py WORDDIR --gram {triple9,e8ham} --h H [--new BASEDIR] [--positive]""" +import json, sys, argparse, importlib.util, os, collections +ap=argparse.ArgumentParser(); ap.add_argument('word'); ap.add_argument('--gram',required=True); ap.add_argument('--h',type=int,required=True) +ap.add_argument('--new'); ap.add_argument('--positive',action='store_true'); a=ap.parse_args() +HERE=os.path.dirname(os.path.abspath(__file__)) +s=importlib.util.spec_from_file_location('pw',os.path.join(HERE,'..','..','pricing','prime_witnesses.py')); pw=importlib.util.module_from_spec(s); s.loader.exec_module(pw) +def validate_record(row, dimension, determinant, allowed_primes): # PR #315 prime_check.validate_record, verbatim logic + assert type(row['dimension']) is int and type(row['determinant']) is int and type(row['residual']) is int, 'exact integer witness fields' + assert row['dimension'] == dimension and row['determinant'] == determinant != 0, 'exact determinant mismatch or singular basis' + assert 0 < row['residual'] < 2**80, 'retained prime lower bound' + product = row['residual'] + for prime, exponent in row['factors'].items(): + q = int(prime); assert q in allowed_primes and type(exponent) is int and exponent > 0, 'factor shape'; product *= q**exponent + assert product == abs(determinant), 'factor identity' +def gram(B): + if a.gram=='triple9': + s_=list(map(sum,B)); return [[9*sum(x*y for x,y in zip(B[i],B[j]))-s_[i]*s_[j] for j in range(len(B))] for i in range(len(B))] + if a.gram=='e8ham': + return [[sum(x*y for x,y in zip(B[i],B[j])) for j in range(len(B))] for i in range(len(B))] + raise SystemExit('unknown gram') +def rank_int(B): + M=[r[:] for r in B]; r=0 + for c in range(len(M[0]) if M else 0): + p=next((i for i in range(r,len(M)) if M[i][c]!=0),None) + if p is None: continue + M[r],M[p]=M[p],M[r] + for i in range(len(M)): + if i!=r and M[i][c]!=0: x,y=M[r][c],M[i][c]; M[i]=[u*x-w*y for u,w in zip(M[i],M[r])] + r+=1 + return r +fr=json.load(open(a.word+'/frames.json'))['frames'] +old=json.load(open(a.new+'/frames.json'))['frames'] if a.new else {} +keys=[k for k in fr if k not in old] +stats=collections.Counter(); primes=set(); bits=0; nonpos=0 +for k in keys: + B=fr[k]['B']; A=fr[k].get('A',[]); d=len(B); assert fr[k]['dim']==d + assert d==0 or rank_int(B)==d,('basis rank',k) + if A: assert all(sum(x*y for x,y in zip(r,b))==0 for r in A for b in B) and len(A)+d==a.h,('annihilator',k) + M=gram(B) if d else []; det=pw.det(M); assert det!=0,('degenerate frame',k) + if a.positive: # positive-definite ambient form: every leading principal minor positive + for j in range(1,d+1): + if pw.det([r[:j] for r in M[:j]])<=0: nonpos+=1; break + powers,residual=pw.factor_witness(det); row=dict(dimension=d,determinant=det,residual=residual,factors={p:e for p,e in powers.items() if e}) + validate_record(row,d,det,pw.PRIMES); primes.update(map(int,row['factors'])); bits=max(bits,abs(det).bit_length()); stats[d]+=1 +assert nonpos==0 +print('PASS %s Gram: %d frames checked, all nondegenerate%s; prime witnesses valid; max determinant bits %d; primes %s; by dim %s'%( + a.gram,sum(stats.values()),' and positive definite' if a.positive else '',bits,sorted(primes),dict(sorted(stats.items())))) diff --git a/research/r489-partial-own-kernel84/vendor/bit/code/bit/checkers/json.hpp b/research/r489-partial-own-kernel84/vendor/bit/code/bit/checkers/json.hpp new file mode 100644 index 0000000000..82d69f7c5d --- /dev/null +++ b/research/r489-partial-own-kernel84/vendor/bit/code/bit/checkers/json.hpp @@ -0,0 +1,25526 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + +/****************************************************************************\ + * Note on documentation: The source files contain links to the online * + * documentation of the public API at https://json.nlohmann.me. This URL * + * contains the most recent documentation and should also be applicable to * + * previous versions; documentation for deprecated functions is not * + * removed, but marked deprecated. See "Generate documentation" section in * + * file docs/README.md. * +\****************************************************************************/ + +#ifndef INCLUDE_NLOHMANN_JSON_HPP_ +#define INCLUDE_NLOHMANN_JSON_HPP_ + +#include // all_of, find, for_each +#include // nullptr_t, ptrdiff_t, size_t +#include // hash, less +#include // initializer_list +#ifndef JSON_NO_IO + #include // istream, ostream +#endif // JSON_NO_IO +#include // random_access_iterator_tag +#include // unique_ptr +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// This file contains all macro definitions affecting or depending on the ABI + +#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK + #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) + #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 12 || NLOHMANN_JSON_VERSION_PATCH != 0 + #warning "Already included a different version of the library!" + #endif + #endif +#endif + +#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_MINOR 12 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_PATCH 0 // NOLINT(modernize-macro-to-enum) + +#ifndef JSON_DIAGNOSTICS + #define JSON_DIAGNOSTICS 0 +#endif + +#ifndef JSON_DIAGNOSTIC_POSITIONS + #define JSON_DIAGNOSTIC_POSITIONS 0 +#endif + +#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 +#endif + +#if JSON_DIAGNOSTICS + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag +#else + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS +#endif + +#if JSON_DIAGNOSTIC_POSITIONS + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS _dp +#else + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS +#endif + +#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp +#else + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION + #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 +#endif + +// Construct the namespace ABI tags component +#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c) json_abi ## a ## b ## c +#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b, c) \ + NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c) + +#define NLOHMANN_JSON_ABI_TAGS \ + NLOHMANN_JSON_ABI_TAGS_CONCAT( \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ + NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON, \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS) + +// Construct the namespace version component +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ + _v ## major ## _ ## minor ## _ ## patch +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) + +#if NLOHMANN_JSON_NAMESPACE_NO_VERSION +#define NLOHMANN_JSON_NAMESPACE_VERSION +#else +#define NLOHMANN_JSON_NAMESPACE_VERSION \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ + NLOHMANN_JSON_VERSION_MINOR, \ + NLOHMANN_JSON_VERSION_PATCH) +#endif + +// Combine namespace components +#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b +#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ + NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) + +#ifndef NLOHMANN_JSON_NAMESPACE +#define NLOHMANN_JSON_NAMESPACE \ + nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN +#define NLOHMANN_JSON_NAMESPACE_BEGIN \ + namespace nlohmann \ + { \ + inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) \ + { +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_END +#define NLOHMANN_JSON_NAMESPACE_END \ + } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ + } // namespace nlohmann +#endif + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // transform +#include // array +#include // forward_list +#include // inserter, front_inserter, end +#include // map +#ifdef JSON_HAS_CPP_17 + #include // optional +#endif +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // unordered_map +#include // pair, declval +#include // valarray + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // nullptr_t +#include // exception +#if JSON_DIAGNOSTICS + #include // accumulate +#endif +#include // runtime_error +#include // to_string +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // uint8_t +#include // string + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // declval, pair +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template struct make_void +{ + using type = void; +}; +template using void_t = typename make_void::type; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +// https://en.cppreference.com/w/cpp/experimental/is_detected +struct nonesuch +{ + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + nonesuch(nonesuch const&&) = delete; + void operator=(nonesuch const&) = delete; + void operator=(nonesuch&&) = delete; +}; + +template class Op, + class... Args> +struct detector +{ + using value_t = std::false_type; + using type = Default; +}; + +template class Op, class... Args> +struct detector>, Op, Args...> +{ + using value_t = std::true_type; + using type = Op; +}; + +template class Op, class... Args> +using is_detected = typename detector::value_t; + +template class Op, class... Args> +struct is_detected_lazy : is_detected { }; + +template class Op, class... Args> +using detected_t = typename detector::type; + +template class Op, class... Args> +using detected_or = detector; + +template class Op, class... Args> +using detected_or_t = typename detected_or::type; + +template class Op, class... Args> +using is_detected_exact = std::is_same>; + +template class Op, class... Args> +using is_detected_convertible = + std::is_convertible, To>; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + + +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-FileCopyrightText: 2016 - 2021 Evan Nemerson +// SPDX-License-Identifier: MIT + +/* Hedley - https://nemequ.github.io/hedley + * Created by Evan Nemerson + */ + +#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 15) +#if defined(JSON_HEDLEY_VERSION) + #undef JSON_HEDLEY_VERSION +#endif +#define JSON_HEDLEY_VERSION 15 + +#if defined(JSON_HEDLEY_STRINGIFY_EX) + #undef JSON_HEDLEY_STRINGIFY_EX +#endif +#define JSON_HEDLEY_STRINGIFY_EX(x) #x + +#if defined(JSON_HEDLEY_STRINGIFY) + #undef JSON_HEDLEY_STRINGIFY +#endif +#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x) + +#if defined(JSON_HEDLEY_CONCAT_EX) + #undef JSON_HEDLEY_CONCAT_EX +#endif +#define JSON_HEDLEY_CONCAT_EX(a,b) a##b + +#if defined(JSON_HEDLEY_CONCAT) + #undef JSON_HEDLEY_CONCAT +#endif +#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b) + +#if defined(JSON_HEDLEY_CONCAT3_EX) + #undef JSON_HEDLEY_CONCAT3_EX +#endif +#define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c + +#if defined(JSON_HEDLEY_CONCAT3) + #undef JSON_HEDLEY_CONCAT3 +#endif +#define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c) + +#if defined(JSON_HEDLEY_VERSION_ENCODE) + #undef JSON_HEDLEY_VERSION_ENCODE +#endif +#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision)) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR) + #undef JSON_HEDLEY_VERSION_DECODE_MAJOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) + #undef JSON_HEDLEY_VERSION_DECODE_MINOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION) + #undef JSON_HEDLEY_VERSION_DECODE_REVISION +#endif +#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) + +#if defined(JSON_HEDLEY_GNUC_VERSION) + #undef JSON_HEDLEY_GNUC_VERSION +#endif +#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#elif defined(__GNUC__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) +#endif + +#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK) + #undef JSON_HEDLEY_GNUC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GNUC_VERSION) + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION) + #undef JSON_HEDLEY_MSVC_VERSION +#endif +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100) +#elif defined(_MSC_FULL_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) +#elif defined(_MSC_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK) + #undef JSON_HEDLEY_MSVC_VERSION_CHECK +#endif +#if !defined(JSON_HEDLEY_MSVC_VERSION) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) +#elif defined(_MSC_VER) && (_MSC_VER >= 1200) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) +#else + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor))) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION) + #undef JSON_HEDLEY_INTEL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) +#elif defined(__INTEL_COMPILER) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_VERSION) + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #undef JSON_HEDLEY_INTEL_CL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL) + #define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION) + #undef JSON_HEDLEY_PGI_VERSION +#endif +#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) + #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION_CHECK) + #undef JSON_HEDLEY_PGI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PGI_VERSION) + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #undef JSON_HEDLEY_SUNPRO_VERSION +#endif +#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10) +#elif defined(__SUNPRO_C) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf) +#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10) +#elif defined(__SUNPRO_CC) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK) + #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION +#endif +#if defined(__EMSCRIPTEN__) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION) + #undef JSON_HEDLEY_ARM_VERSION +#endif +#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100) +#elif defined(__CC_ARM) && defined(__ARMCC_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION_CHECK) + #undef JSON_HEDLEY_ARM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_ARM_VERSION) + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION) + #undef JSON_HEDLEY_IBM_VERSION +#endif +#if defined(__ibmxl__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) +#elif defined(__xlC__) && defined(__xlC_ver__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) +#elif defined(__xlC__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION_CHECK) + #undef JSON_HEDLEY_IBM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IBM_VERSION) + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_VERSION) + #undef JSON_HEDLEY_TI_VERSION +#endif +#if \ + defined(__TI_COMPILER_VERSION__) && \ + ( \ + defined(__TMS470__) || defined(__TI_ARM__) || \ + defined(__MSP430__) || \ + defined(__TMS320C2000__) \ + ) +#if (__TI_COMPILER_VERSION__ >= 16000000) + #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif +#endif + +#if defined(JSON_HEDLEY_TI_VERSION_CHECK) + #undef JSON_HEDLEY_TI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_VERSION) + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #undef JSON_HEDLEY_TI_CL2000_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) + #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #undef JSON_HEDLEY_TI_CL430_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) + #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #undef JSON_HEDLEY_TI_ARMCL_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) + #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) + #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #undef JSON_HEDLEY_TI_CL6X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) + #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #undef JSON_HEDLEY_TI_CL7X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) + #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #undef JSON_HEDLEY_TI_CLPRU_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) + #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION) + #undef JSON_HEDLEY_CRAY_VERSION +#endif +#if defined(_CRAYC) + #if defined(_RELEASE_PATCHLEVEL) + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) + #else + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK) + #undef JSON_HEDLEY_CRAY_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_CRAY_VERSION) + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION) + #undef JSON_HEDLEY_IAR_VERSION +#endif +#if defined(__IAR_SYSTEMS_ICC__) + #if __VER__ > 1000 + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) + #else + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION_CHECK) + #undef JSON_HEDLEY_IAR_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IAR_VERSION) + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION) + #undef JSON_HEDLEY_TINYC_VERSION +#endif +#if defined(__TINYC__) + #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK) + #undef JSON_HEDLEY_TINYC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION) + #undef JSON_HEDLEY_DMC_VERSION +#endif +#if defined(__DMC__) + #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION_CHECK) + #undef JSON_HEDLEY_DMC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_DMC_VERSION) + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #undef JSON_HEDLEY_COMPCERT_VERSION +#endif +#if defined(__COMPCERT_VERSION__) + #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK) + #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION) + #undef JSON_HEDLEY_PELLES_VERSION +#endif +#if defined(__POCC__) + #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK) + #undef JSON_HEDLEY_PELLES_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PELLES_VERSION) + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #undef JSON_HEDLEY_MCST_LCC_VERSION +#endif +#if defined(__LCC__) && defined(__LCC_MINOR__) + #define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION_CHECK) + #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION) + #undef JSON_HEDLEY_GCC_VERSION +#endif +#if \ + defined(JSON_HEDLEY_GNUC_VERSION) && \ + !defined(__clang__) && \ + !defined(JSON_HEDLEY_INTEL_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_ARM_VERSION) && \ + !defined(JSON_HEDLEY_CRAY_VERSION) && \ + !defined(JSON_HEDLEY_TI_VERSION) && \ + !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL430_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \ + !defined(__COMPCERT__) && \ + !defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_ATTRIBUTE +#endif +#if \ + defined(__has_attribute) && \ + ( \ + (!defined(JSON_HEDLEY_IAR_VERSION) || JSON_HEDLEY_IAR_VERSION_CHECK(8,5,9)) \ + ) +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) +#else +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE +#endif +#if \ + defined(__has_cpp_attribute) && \ + defined(__cplusplus) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS +#endif +#if !defined(__cplusplus) || !defined(__has_cpp_attribute) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#elif \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ + (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_BUILTIN) + #undef JSON_HEDLEY_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) +#else + #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN) + #undef JSON_HEDLEY_GNUC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN) + #undef JSON_HEDLEY_GCC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_FEATURE) + #undef JSON_HEDLEY_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) +#else + #define JSON_HEDLEY_HAS_FEATURE(feature) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE) + #undef JSON_HEDLEY_GNUC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_FEATURE) + #undef JSON_HEDLEY_GCC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_EXTENSION) + #undef JSON_HEDLEY_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) +#else + #define JSON_HEDLEY_HAS_EXTENSION(extension) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION) + #undef JSON_HEDLEY_GNUC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION) + #undef JSON_HEDLEY_GCC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_WARNING) + #undef JSON_HEDLEY_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) +#else + #define JSON_HEDLEY_HAS_WARNING(warning) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_WARNING) + #undef JSON_HEDLEY_GNUC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_WARNING) + #undef JSON_HEDLEY_GCC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + defined(__clang__) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \ + (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR)) + #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_PRAGMA(value) __pragma(value) +#else + #define JSON_HEDLEY_PRAGMA(value) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH) + #undef JSON_HEDLEY_DIAGNOSTIC_PUSH +#endif +#if defined(JSON_HEDLEY_DIAGNOSTIC_POP) + #undef JSON_HEDLEY_DIAGNOSTIC_POP +#endif +#if defined(__clang__) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) + #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) +#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_PUSH + #define JSON_HEDLEY_DIAGNOSTIC_POP +#endif + +/* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") +# if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") +# if JSON_HEDLEY_HAS_WARNING("-Wc++1z-extensions") +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# endif +#endif +#if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x +#endif + +#if defined(JSON_HEDLEY_CONST_CAST) + #undef JSON_HEDLEY_CONST_CAST +#endif +#if defined(__cplusplus) +# define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) +#elif \ + JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_REINTERPRET_CAST) + #undef JSON_HEDLEY_REINTERPRET_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) +#else + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_STATIC_CAST) + #undef JSON_HEDLEY_STATIC_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) +#else + #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_CPP_CAST) + #undef JSON_HEDLEY_CPP_CAST +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \ + ((T) (expr)) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0) +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("diag_suppress=Pe137") \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr)) +# endif +#else +# define JSON_HEDLEY_CPP_CAST(T, expr) (expr) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068)) +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292)) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wcast-qual") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunused-function") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(1,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif + +#if defined(JSON_HEDLEY_DEPRECATED) + #undef JSON_HEDLEY_DEPRECATED +#endif +#if defined(JSON_HEDLEY_DEPRECATED_FOR) + #undef JSON_HEDLEY_DEPRECATED_FOR +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement)) +#elif \ + (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement))) +#elif defined(__cplusplus) && (__cplusplus >= 201402L) + #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") +#else + #define JSON_HEDLEY_DEPRECATED(since) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) +#endif + +#if defined(JSON_HEDLEY_UNAVAILABLE) + #undef JSON_HEDLEY_UNAVAILABLE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since))) +#else + #define JSON_HEDLEY_UNAVAILABLE(available_since) +#endif + +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT +#endif +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) +#elif (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) +#elif defined(_Check_return_) /* SAL */ + #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ +#else + #define JSON_HEDLEY_WARN_UNUSED_RESULT + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) +#endif + +#if defined(JSON_HEDLEY_SENTINEL) + #undef JSON_HEDLEY_SENTINEL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) +#else + #define JSON_HEDLEY_SENTINEL(position) +#endif + +#if defined(JSON_HEDLEY_NO_RETURN) + #undef JSON_HEDLEY_NO_RETURN +#endif +#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NO_RETURN __noreturn +#elif \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L + #define JSON_HEDLEY_NO_RETURN _Noreturn +#elif defined(__cplusplus) && (__cplusplus >= 201103L) + #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NO_RETURN __attribute((noreturn)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#else + #define JSON_HEDLEY_NO_RETURN +#endif + +#if defined(JSON_HEDLEY_NO_ESCAPE) + #undef JSON_HEDLEY_NO_ESCAPE +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape) + #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) +#else + #define JSON_HEDLEY_NO_ESCAPE +#endif + +#if defined(JSON_HEDLEY_UNREACHABLE) + #undef JSON_HEDLEY_UNREACHABLE +#endif +#if defined(JSON_HEDLEY_UNREACHABLE_RETURN) + #undef JSON_HEDLEY_UNREACHABLE_RETURN +#endif +#if defined(JSON_HEDLEY_ASSUME) + #undef JSON_HEDLEY_ASSUME +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_ASSUME(expr) __assume(expr) +#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) + #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) +#elif \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #if defined(__cplusplus) + #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) + #else + #define JSON_HEDLEY_ASSUME(expr) _nassert(expr) + #endif +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() +#elif defined(JSON_HEDLEY_ASSUME) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif +#if !defined(JSON_HEDLEY_ASSUME) + #if defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1))) + #else + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr) + #endif +#endif +#if defined(JSON_HEDLEY_UNREACHABLE) + #if \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value)) + #else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE() + #endif +#else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) +#endif +#if !defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif + +JSON_HEDLEY_DIAGNOSTIC_PUSH +#if JSON_HEDLEY_HAS_WARNING("-Wpedantic") + #pragma clang diagnostic ignored "-Wpedantic" +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) + #pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif +#if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0) + #if defined(__clang__) + #pragma clang diagnostic ignored "-Wvariadic-macros" + #elif defined(JSON_HEDLEY_GCC_VERSION) + #pragma GCC diagnostic ignored "-Wvariadic-macros" + #endif +#endif +#if defined(JSON_HEDLEY_NON_NULL) + #undef JSON_HEDLEY_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) +#else + #define JSON_HEDLEY_NON_NULL(...) +#endif +JSON_HEDLEY_DIAGNOSTIC_POP + +#if defined(JSON_HEDLEY_PRINTF_FORMAT) + #undef JSON_HEDLEY_PRINTF_FORMAT +#endif +#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check))) +#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check))) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(format) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check))) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check)) +#else + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) +#endif + +#if defined(JSON_HEDLEY_CONSTEXPR) + #undef JSON_HEDLEY_CONSTEXPR +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) + #endif +#endif +#if !defined(JSON_HEDLEY_CONSTEXPR) + #define JSON_HEDLEY_CONSTEXPR +#endif + +#if defined(JSON_HEDLEY_PREDICT) + #undef JSON_HEDLEY_PREDICT +#endif +#if defined(JSON_HEDLEY_LIKELY) + #undef JSON_HEDLEY_LIKELY +#endif +#if defined(JSON_HEDLEY_UNLIKELY) + #undef JSON_HEDLEY_UNLIKELY +#endif +#if defined(JSON_HEDLEY_UNPREDICTABLE) + #undef JSON_HEDLEY_UNPREDICTABLE +#endif +#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) + #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability)) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 ) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 ) +#elif \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, expected, probability) \ + (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ + })) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ + })) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) +#else +# define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_LIKELY(expr) (!!(expr)) +# define JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) +#endif +#if !defined(JSON_HEDLEY_UNPREDICTABLE) + #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5) +#endif + +#if defined(JSON_HEDLEY_MALLOC) + #undef JSON_HEDLEY_MALLOC +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_MALLOC __attribute__((__malloc__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_MALLOC __declspec(restrict) +#else + #define JSON_HEDLEY_MALLOC +#endif + +#if defined(JSON_HEDLEY_PURE) + #undef JSON_HEDLEY_PURE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PURE __attribute__((__pure__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +# define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \ + ) +# define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") +#else +# define JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_CONST) + #undef JSON_HEDLEY_CONST +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(const) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_CONST __attribute__((__const__)) +#elif \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_CONST _Pragma("no_side_effect") +#else + #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_RESTRICT) + #undef JSON_HEDLEY_RESTRICT +#endif +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT restrict +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + defined(__clang__) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RESTRICT __restrict +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT _Restrict +#else + #define JSON_HEDLEY_RESTRICT +#endif + +#if defined(JSON_HEDLEY_INLINE) + #undef JSON_HEDLEY_INLINE +#endif +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + (defined(__cplusplus) && (__cplusplus >= 199711L)) + #define JSON_HEDLEY_INLINE inline +#elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0) + #define JSON_HEDLEY_INLINE __inline__ +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_INLINE __inline +#else + #define JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_ALWAYS_INLINE) + #undef JSON_HEDLEY_ALWAYS_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +# define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_ALWAYS_INLINE __forceinline +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \ + ) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") +#else +# define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_NEVER_INLINE) + #undef JSON_HEDLEY_NEVER_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#else + #define JSON_HEDLEY_NEVER_INLINE +#endif + +#if defined(JSON_HEDLEY_PRIVATE) + #undef JSON_HEDLEY_PRIVATE +#endif +#if defined(JSON_HEDLEY_PUBLIC) + #undef JSON_HEDLEY_PUBLIC +#endif +#if defined(JSON_HEDLEY_IMPORT) + #undef JSON_HEDLEY_IMPORT +#endif +#if defined(_WIN32) || defined(__CYGWIN__) +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC __declspec(dllexport) +# define JSON_HEDLEY_IMPORT __declspec(dllimport) +#else +# if \ + JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + ( \ + defined(__TI_EABI__) && \ + ( \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \ + ) \ + ) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) +# define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) +# else +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC +# endif +# define JSON_HEDLEY_IMPORT extern +#endif + +#if defined(JSON_HEDLEY_NO_THROW) + #undef JSON_HEDLEY_NO_THROW +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NO_THROW __declspec(nothrow) +#else + #define JSON_HEDLEY_NO_THROW +#endif + +#if defined(JSON_HEDLEY_FALL_THROUGH) + #undef JSON_HEDLEY_FALL_THROUGH +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) +#elif defined(__fallthrough) /* SAL */ + #define JSON_HEDLEY_FALL_THROUGH __fallthrough +#else + #define JSON_HEDLEY_FALL_THROUGH +#endif + +#if defined(JSON_HEDLEY_RETURNS_NON_NULL) + #undef JSON_HEDLEY_RETURNS_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) +#elif defined(_Ret_notnull_) /* SAL */ + #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ +#else + #define JSON_HEDLEY_RETURNS_NON_NULL +#endif + +#if defined(JSON_HEDLEY_ARRAY_PARAM) + #undef JSON_HEDLEY_ARRAY_PARAM +#endif +#if \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ + !defined(__STDC_NO_VLA__) && \ + !defined(__cplusplus) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_ARRAY_PARAM(name) (name) +#else + #define JSON_HEDLEY_ARRAY_PARAM(name) +#endif + +#if defined(JSON_HEDLEY_IS_CONSTANT) + #undef JSON_HEDLEY_IS_CONSTANT +#endif +#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR) + #undef JSON_HEDLEY_REQUIRE_CONSTEXPR +#endif +/* JSON_HEDLEY_IS_CONSTEXPR_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #undef JSON_HEDLEY_IS_CONSTEXPR_ +#endif +#if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) +#endif +#if !defined(__cplusplus) +# if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*) +#endif +# elif \ + ( \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ + !defined(JSON_HEDLEY_SUNPRO_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION)) || \ + (JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0) +#endif +# elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + defined(JSON_HEDLEY_INTEL_VERSION) || \ + defined(JSON_HEDLEY_TINYC_VERSION) || \ + defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \ + defined(JSON_HEDLEY_TI_CL2000_VERSION) || \ + defined(JSON_HEDLEY_TI_CL6X_VERSION) || \ + defined(JSON_HEDLEY_TI_CL7X_VERSION) || \ + defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \ + defined(__clang__) +# define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \ + sizeof(void) != \ + sizeof(*( \ + 1 ? \ + ((void*) ((expr) * 0L) ) : \ +((struct { char v[sizeof(void) * 2]; } *) 1) \ + ) \ + ) \ + ) +# endif +#endif +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) +#else + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) (0) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) +#endif + +#if defined(JSON_HEDLEY_BEGIN_C_DECLS) + #undef JSON_HEDLEY_BEGIN_C_DECLS +#endif +#if defined(JSON_HEDLEY_END_C_DECLS) + #undef JSON_HEDLEY_END_C_DECLS +#endif +#if defined(JSON_HEDLEY_C_DECL) + #undef JSON_HEDLEY_C_DECL +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" { + #define JSON_HEDLEY_END_C_DECLS } + #define JSON_HEDLEY_C_DECL extern "C" +#else + #define JSON_HEDLEY_BEGIN_C_DECLS + #define JSON_HEDLEY_END_C_DECLS + #define JSON_HEDLEY_C_DECL +#endif + +#if defined(JSON_HEDLEY_STATIC_ASSERT) + #undef JSON_HEDLEY_STATIC_ASSERT +#endif +#if \ + !defined(__cplusplus) && ( \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \ + (JSON_HEDLEY_HAS_FEATURE(c_static_assert) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + defined(_Static_assert) \ + ) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) +#elif \ + (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) +#else +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) +#endif + +#if defined(JSON_HEDLEY_NULL) + #undef JSON_HEDLEY_NULL +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) + #elif defined(NULL) + #define JSON_HEDLEY_NULL NULL + #else + #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0) + #endif +#elif defined(NULL) + #define JSON_HEDLEY_NULL NULL +#else + #define JSON_HEDLEY_NULL ((void*) 0) +#endif + +#if defined(JSON_HEDLEY_MESSAGE) + #undef JSON_HEDLEY_MESSAGE +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_MESSAGE(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(message msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg) +#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_WARNING) + #undef JSON_HEDLEY_WARNING +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_WARNING(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(clang warning msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_REQUIRE) + #undef JSON_HEDLEY_REQUIRE +#endif +#if defined(JSON_HEDLEY_REQUIRE_MSG) + #undef JSON_HEDLEY_REQUIRE_MSG +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) +# if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") +# define JSON_HEDLEY_REQUIRE(expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), #expr, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), msg, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error"))) +# endif +#else +# define JSON_HEDLEY_REQUIRE(expr) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) +#endif + +#if defined(JSON_HEDLEY_FLAGS) + #undef JSON_HEDLEY_FLAGS +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion")) + #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) +#else + #define JSON_HEDLEY_FLAGS +#endif + +#if defined(JSON_HEDLEY_FLAGS_CAST) + #undef JSON_HEDLEY_FLAGS_CAST +#endif +#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0) +# define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("warning(disable:188)") \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr) +#endif + +#if defined(JSON_HEDLEY_EMPTY_BASES) + #undef JSON_HEDLEY_EMPTY_BASES +#endif +#if \ + (JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) +#else + #define JSON_HEDLEY_EMPTY_BASES +#endif + +/* Remaining macros are deprecated. */ + +#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK +#endif +#if defined(__clang__) + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0) +#else + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN) + #undef JSON_HEDLEY_CLANG_HAS_BUILTIN +#endif +#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin) + +#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE) + #undef JSON_HEDLEY_CLANG_HAS_FEATURE +#endif +#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature) + +#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION) + #undef JSON_HEDLEY_CLANG_HAS_EXTENSION +#endif +#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension) + +#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_WARNING) + #undef JSON_HEDLEY_CLANG_HAS_WARNING +#endif +#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning) + +#endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ + + +// This file contains all internal macro definitions (except those affecting ABI) +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// #include + + +// exclude unsupported compilers +#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) + #if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #endif +#endif + +// C++ language standard detection +// if the user manually specified the used c++ version this is skipped +#if !defined(JSON_HAS_CPP_23) && !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) + #if (defined(__cplusplus) && __cplusplus > 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG > 202002L) + #define JSON_HAS_CPP_23 + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus > 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG > 201703L) + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus > 201402L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus > 201103L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 + #endif + // the cpp 11 flag is always specified because it is the minimal required version + #define JSON_HAS_CPP_11 +#endif + +#ifdef __has_include + #if __has_include() + #include + #endif +#endif + +#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) + #ifdef JSON_HAS_CPP_17 + #if defined(__cpp_lib_filesystem) + #define JSON_HAS_FILESYSTEM 1 + #elif defined(__cpp_lib_experimental_filesystem) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif !defined(__has_include) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #endif + + // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ + #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__clang_major__) && __clang_major__ < 7 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support + #if defined(_MSC_VER) && _MSC_VER < 1914 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before iOS 13 + #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before macOS Catalina + #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + #endif +#endif + +#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_FILESYSTEM + #define JSON_HAS_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_THREE_WAY_COMPARISON + #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ + && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L + #define JSON_HAS_THREE_WAY_COMPARISON 1 + #else + #define JSON_HAS_THREE_WAY_COMPARISON 0 + #endif +#endif + +#ifndef JSON_HAS_RANGES + // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error + #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 + #define JSON_HAS_RANGES 0 + #elif defined(__cpp_lib_ranges) + #define JSON_HAS_RANGES 1 + #else + #define JSON_HAS_RANGES 0 + #endif +#endif + +#ifndef JSON_HAS_STATIC_RTTI + #if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0 + #define JSON_HAS_STATIC_RTTI 1 + #else + #define JSON_HAS_STATIC_RTTI 0 + #endif +#endif + +#ifdef JSON_HAS_CPP_17 + #define JSON_INLINE_VARIABLE inline +#else + #define JSON_INLINE_VARIABLE +#endif + +#if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) + #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] +#else + #define JSON_NO_UNIQUE_ADDRESS +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdocumentation" + #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" +#endif + +// allow disabling exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) + #define JSON_INTERNAL_CATCH(exception) catch(exception) +#else + #include + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) + #define JSON_INTERNAL_CATCH(exception) if(false) +#endif + +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_CATCH_USER +#endif +#if defined(JSON_INTERNAL_CATCH_USER) + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER +#endif + +// allow overriding assert +#if !defined(JSON_ASSERT) + #include // assert + #define JSON_ASSERT(x) assert(x) +#endif + +// allow to access some private functions (needed by the test suite) +#if defined(JSON_TESTS_PRIVATE) + #define JSON_PRIVATE_UNLESS_TESTED public +#else + #define JSON_PRIVATE_UNLESS_TESTED private +#endif + +/*! +@brief macro to briefly define a mapping between an enum and JSON +@def NLOHMANN_JSON_SERIALIZE_ENUM +@since version 3.4.0 +*/ +#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ + template \ + inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ + { \ + /* NOLINTNEXTLINE(modernize-type-traits) we use C++11 */ \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + /* NOLINTNEXTLINE(modernize-avoid-c-arrays) we don't want to depend on */ \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [e](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.first == e; \ + }); \ + j = ((it != std::end(m)) ? it : std::begin(m))->second; \ + } \ + template \ + inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ + { \ + /* NOLINTNEXTLINE(modernize-type-traits) we use C++11 */ \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + /* NOLINTNEXTLINE(modernize-avoid-c-arrays) we don't want to depend on */ \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [&j](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.second == j; \ + }); \ + e = ((it != std::end(m)) ? it : std::begin(m))->first; \ + } + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer, \ + class BinaryType, \ + class CustomBaseClass> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +// Macros to simplify conversion from/to types + +#define NLOHMANN_JSON_EXPAND( x ) x +#define NLOHMANN_JSON_GET_MACRO(_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, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME +#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ + NLOHMANN_JSON_PASTE64, \ + NLOHMANN_JSON_PASTE63, \ + NLOHMANN_JSON_PASTE62, \ + NLOHMANN_JSON_PASTE61, \ + NLOHMANN_JSON_PASTE60, \ + NLOHMANN_JSON_PASTE59, \ + NLOHMANN_JSON_PASTE58, \ + NLOHMANN_JSON_PASTE57, \ + NLOHMANN_JSON_PASTE56, \ + NLOHMANN_JSON_PASTE55, \ + NLOHMANN_JSON_PASTE54, \ + NLOHMANN_JSON_PASTE53, \ + NLOHMANN_JSON_PASTE52, \ + NLOHMANN_JSON_PASTE51, \ + NLOHMANN_JSON_PASTE50, \ + NLOHMANN_JSON_PASTE49, \ + NLOHMANN_JSON_PASTE48, \ + NLOHMANN_JSON_PASTE47, \ + NLOHMANN_JSON_PASTE46, \ + NLOHMANN_JSON_PASTE45, \ + NLOHMANN_JSON_PASTE44, \ + NLOHMANN_JSON_PASTE43, \ + NLOHMANN_JSON_PASTE42, \ + NLOHMANN_JSON_PASTE41, \ + NLOHMANN_JSON_PASTE40, \ + NLOHMANN_JSON_PASTE39, \ + NLOHMANN_JSON_PASTE38, \ + NLOHMANN_JSON_PASTE37, \ + NLOHMANN_JSON_PASTE36, \ + NLOHMANN_JSON_PASTE35, \ + NLOHMANN_JSON_PASTE34, \ + NLOHMANN_JSON_PASTE33, \ + NLOHMANN_JSON_PASTE32, \ + NLOHMANN_JSON_PASTE31, \ + NLOHMANN_JSON_PASTE30, \ + NLOHMANN_JSON_PASTE29, \ + NLOHMANN_JSON_PASTE28, \ + NLOHMANN_JSON_PASTE27, \ + NLOHMANN_JSON_PASTE26, \ + NLOHMANN_JSON_PASTE25, \ + NLOHMANN_JSON_PASTE24, \ + NLOHMANN_JSON_PASTE23, \ + NLOHMANN_JSON_PASTE22, \ + NLOHMANN_JSON_PASTE21, \ + NLOHMANN_JSON_PASTE20, \ + NLOHMANN_JSON_PASTE19, \ + NLOHMANN_JSON_PASTE18, \ + NLOHMANN_JSON_PASTE17, \ + NLOHMANN_JSON_PASTE16, \ + NLOHMANN_JSON_PASTE15, \ + NLOHMANN_JSON_PASTE14, \ + NLOHMANN_JSON_PASTE13, \ + NLOHMANN_JSON_PASTE12, \ + NLOHMANN_JSON_PASTE11, \ + NLOHMANN_JSON_PASTE10, \ + NLOHMANN_JSON_PASTE9, \ + NLOHMANN_JSON_PASTE8, \ + NLOHMANN_JSON_PASTE7, \ + NLOHMANN_JSON_PASTE6, \ + NLOHMANN_JSON_PASTE5, \ + NLOHMANN_JSON_PASTE4, \ + NLOHMANN_JSON_PASTE3, \ + NLOHMANN_JSON_PASTE2, \ + NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) +#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) +#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) +#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) +#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) +#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) +#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) +#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) +#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) +#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) +#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) +#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) +#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) +#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) +#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) +#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) +#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) +#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) +#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) +#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) +#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) +#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) +#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) +#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) +#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) +#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) +#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) +#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) +#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) +#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) +#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) +#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) +#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) +#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) +#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) +#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) +#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) +#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) +#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) +#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) +#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) +#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) +#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) +#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) +#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) +#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) +#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) +#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) +#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) +#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) +#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) +#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) +#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) +#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) +#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) +#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) +#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) +#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) +#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) +#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) +#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) +#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) +#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) +#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) + +#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; +#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); +#define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = !nlohmann_json_j.is_null() ? nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1) : nlohmann_json_default_obj.v1; + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE +@since version 3.9.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT +@since version 3.11.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE +@since version 3.11.3 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE +@since version 3.9.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT +@since version 3.11.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE +@since version 3.11.3 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(Type, BaseType, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT(Type, BaseType, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, BaseType, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(Type, BaseType, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, BaseType, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, BaseType, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +// inspired from https://stackoverflow.com/a/26745591 +// allows calling any std function as if (e.g., with begin): +// using std::begin; begin(x); +// +// it allows using the detected idiom to retrieve the return type +// of such an expression +#define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ + namespace detail { \ + using std::std_name; \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + } \ + \ + namespace detail2 { \ + struct std_name##_tag \ + { \ + }; \ + \ + template \ + std_name##_tag std_name(T&&...); \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + \ + template \ + struct would_call_std_##std_name \ + { \ + static constexpr auto const value = ::nlohmann::detail:: \ + is_detected_exact::value; \ + }; \ + } /* namespace detail2 */ \ + \ + template \ + struct would_call_std_##std_name : detail2::would_call_std_##std_name \ + { \ + } + +#ifndef JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_USE_IMPLICIT_CONVERSIONS 1 +#endif + +#if JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_EXPLICIT +#else + #define JSON_EXPLICIT explicit +#endif + +#ifndef JSON_DISABLE_ENUM_SERIALIZATION + #define JSON_DISABLE_ENUM_SERIALIZATION 0 +#endif + +#ifndef JSON_USE_GLOBAL_UDLS + #define JSON_USE_GLOBAL_UDLS 1 +#endif + +#if JSON_HAS_THREE_WAY_COMPARISON + #include // partial_ordering +#endif + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + binary, ///< binary array (ordered collection of bytes) + discarded ///< discarded by the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string < binary +- furthermore, each type is not smaller than itself +- discarded values are not comparable +- binary is represented as a b"" string in python and directly comparable to a + string; however, making a binary array directly comparable with a string would + be surprising behavior in a JSON file. + +@since version 1.0.0 +*/ +#if JSON_HAS_THREE_WAY_COMPARISON + inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD* +#else + inline bool operator<(const value_t lhs, const value_t rhs) noexcept +#endif +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, + 6 /* binary */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); +#if JSON_HAS_THREE_WAY_COMPARISON + if (l_index < order.size() && r_index < order.size()) + { + return order[l_index] <=> order[r_index]; // *NOPAD* + } + return std::partial_ordering::unordered; +#else + return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; +#endif +} + +// GCC selects the built-in operator< over an operator rewritten from +// a user-defined spaceship operator +// Clang, MSVC, and ICC select the rewritten candidate +// (see GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105200) +#if JSON_HAS_THREE_WAY_COMPARISON && defined(__GNUC__) +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + return std::is_lt(lhs <=> rhs); // *NOPAD* +} +#endif + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief replace all occurrences of a substring by another string + +@param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t +@param[in] f the substring to replace with @a t +@param[in] t the string to replace @a f + +@pre The search string @a f must not be empty. **This precondition is +enforced with an assertion.** + +@since version 2.0.0 +*/ +template +inline void replace_substring(StringType& s, const StringType& f, + const StringType& t) +{ + JSON_ASSERT(!f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != StringType::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} +} + +/*! + * @brief string escaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to escape + * @return escaped string + * + * Note the order of escaping "~" to "~0" and "/" to "~1" is important. + */ +template +inline StringType escape(StringType s) +{ + replace_substring(s, StringType{"~"}, StringType{"~0"}); + replace_substring(s, StringType{"/"}, StringType{"~1"}); + return s; +} + +/*! + * @brief string unescaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to unescape + * @return unescaped string + * + * Note the order of escaping "~1" to "/" and "~0" to "~" is important. + */ +template +static void unescape(StringType& s) +{ + replace_substring(s, StringType{"~1"}, StringType{"/"}); + replace_substring(s, StringType{"~0"}, StringType{"~"}); +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // size_t + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/// struct to capture the start position of the current token +struct position_t +{ + /// the total number of characters read + std::size_t chars_read_total = 0; + /// the number of characters read in the current line + std::size_t chars_read_current_line = 0; + /// the number of lines read + std::size_t lines_read = 0; + + /// conversion to size_t to preserve SAX interface + constexpr operator size_t() const + { + return chars_read_total; + } +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-FileCopyrightText: 2018 The Abseil Authors +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // index_sequence, make_index_sequence, index_sequence_for + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +using uncvref_t = typename std::remove_cv::type>::type; + +#ifdef JSON_HAS_CPP_14 + +// the following utilities are natively available in C++14 +using std::enable_if_t; +using std::index_sequence; +using std::make_index_sequence; +using std::index_sequence_for; + +#else + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +// The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h +// which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. + +//// START OF CODE FROM GOOGLE ABSEIL + +// integer_sequence +// +// Class template representing a compile-time integer sequence. An instantiation +// of `integer_sequence` has a sequence of integers encoded in its +// type through its template arguments (which is a common need when +// working with C++11 variadic templates). `absl::integer_sequence` is designed +// to be a drop-in replacement for C++14's `std::integer_sequence`. +// +// Example: +// +// template< class T, T... Ints > +// void user_function(integer_sequence); +// +// int main() +// { +// // user_function's `T` will be deduced to `int` and `Ints...` +// // will be deduced to `0, 1, 2, 3, 4`. +// user_function(make_integer_sequence()); +// } +template +struct integer_sequence +{ + using value_type = T; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +// index_sequence +// +// A helper template for an `integer_sequence` of `size_t`, +// `absl::index_sequence` is designed to be a drop-in replacement for C++14's +// `std::index_sequence`. +template +using index_sequence = integer_sequence; + +namespace utility_internal +{ + +template +struct Extend; + +// Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. +template +struct Extend, SeqSize, 0> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; +}; + +template +struct Extend, SeqSize, 1> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; +}; + +// Recursion helper for 'make_integer_sequence'. +// 'Gen::type' is an alias for 'integer_sequence'. +template +struct Gen +{ + using type = + typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; +}; + +template +struct Gen +{ + using type = integer_sequence; +}; + +} // namespace utility_internal + +// Compile-time sequences of integers + +// make_integer_sequence +// +// This template alias is equivalent to +// `integer_sequence`, and is designed to be a drop-in +// replacement for C++14's `std::make_integer_sequence`. +template +using make_integer_sequence = typename utility_internal::Gen::type; + +// make_index_sequence +// +// This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, +// and is designed to be a drop-in replacement for C++14's +// `std::make_index_sequence`. +template +using make_index_sequence = make_integer_sequence; + +// index_sequence_for +// +// Converts a typename pack into an index sequence of the same length, and +// is designed to be a drop-in replacement for C++14's +// `std::index_sequence_for()` +template +using index_sequence_for = make_index_sequence; + +//// END OF CODE FROM GOOGLE ABSEIL + +#endif + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +// taken from ranges-v3 +template +struct static_const +{ + static JSON_INLINE_VARIABLE constexpr T value{}; +}; + +#ifndef JSON_HAS_CPP_17 + template + constexpr T static_const::value; +#endif + +template +constexpr std::array make_array(Args&& ... args) +{ + return std::array {{static_cast(std::forward(args))...}}; +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // numeric_limits +#include // char_traits +#include // tuple +#include // false_type, is_constructible, is_integral, is_same, true_type +#include // declval + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // random_access_iterator_tag + +// #include + +// #include + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +struct iterator_types {}; + +template +struct iterator_types < + It, + void_t> +{ + using difference_type = typename It::difference_type; + using value_type = typename It::value_type; + using pointer = typename It::pointer; + using reference = typename It::reference; + using iterator_category = typename It::iterator_category; +}; + +// This is required as some compilers implement std::iterator_traits in a way that +// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. +template +struct iterator_traits +{ +}; + +template +struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> + : iterator_types +{ +}; + +template +struct iterator_traits::value>> +{ + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); + +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); + +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + +#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ + #define INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + #include // int64_t, uint64_t + #include // map + #include // allocator + #include // string + #include // vector + + // #include + + + /*! + @brief namespace for Niels Lohmann + @see https://github.com/nlohmann + @since version 1.0.0 + */ + NLOHMANN_JSON_NAMESPACE_BEGIN + + /*! + @brief default JSONSerializer template argument + + This serializer ignores the template arguments and uses ADL + ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) + for serialization. + */ + template + struct adl_serializer; + + /// a class to store JSON values + /// @sa https://json.nlohmann.me/api/basic_json/ + template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer, + class BinaryType = std::vector, // cppcheck-suppress syntaxError + class CustomBaseClass = void> + class basic_json; + + /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document + /// @sa https://json.nlohmann.me/api/json_pointer/ + template + class json_pointer; + + /*! + @brief default specialization + @sa https://json.nlohmann.me/api/json/ + */ + using json = basic_json<>; + + /// @brief a minimal map-like container that preserves insertion order + /// @sa https://json.nlohmann.me/api/ordered_map/ + template + struct ordered_map; + + /// @brief specialization that maintains the insertion order of object keys + /// @sa https://json.nlohmann.me/api/ordered_json/ + using ordered_json = basic_json; + + NLOHMANN_JSON_NAMESPACE_END + +#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + +NLOHMANN_JSON_NAMESPACE_BEGIN +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ + +///////////// +// helpers // +///////////// + +// Note to maintainers: +// +// Every trait in this file expects a non CV-qualified type. +// The only exceptions are in the 'aliases for detected' section +// (i.e. those of the form: decltype(T::member_function(std::declval()))) +// +// In this case, T has to be properly CV-qualified to constraint the function arguments +// (e.g. to_json(BasicJsonType&, const T&)) + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// used by exceptions create() member functions +// true_type for pointer to possibly cv-qualified basic_json or std::nullptr_t +// false_type otherwise +template +struct is_basic_json_context : + std::integral_constant < bool, + is_basic_json::type>::type>::value + || std::is_same::value > +{}; + +////////////////////// +// json_ref helpers // +////////////////////// + +template +class json_ref; + +template +struct is_json_ref : std::false_type {}; + +template +struct is_json_ref> : std::true_type {}; + +////////////////////////// +// aliases for detected // +////////////////////////// + +template +using mapped_type_t = typename T::mapped_type; + +template +using key_type_t = typename T::key_type; + +template +using value_type_t = typename T::value_type; + +template +using difference_type_t = typename T::difference_type; + +template +using pointer_t = typename T::pointer; + +template +using reference_t = typename T::reference; + +template +using iterator_category_t = typename T::iterator_category; + +template +using to_json_function = decltype(T::to_json(std::declval()...)); + +template +using from_json_function = decltype(T::from_json(std::declval()...)); + +template +using get_template_function = decltype(std::declval().template get()); + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json : std::false_type {}; + +// trait checking if j.get is valid +// use this trait instead of std::is_constructible or std::is_convertible, +// both rely on, or make use of implicit conversions, and thus fail when T +// has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) +template +struct is_getable +{ + static constexpr bool value = is_detected::value; +}; + +template +struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json : std::false_type {}; + +template +struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. +template +struct has_to_json : std::false_type {}; + +template +struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +template +using detect_key_compare = typename T::key_compare; + +template +struct has_key_compare : std::integral_constant::value> {}; + +// obtains the actual object key comparator +template +struct actual_object_comparator +{ + using object_t = typename BasicJsonType::object_t; + using object_comparator_t = typename BasicJsonType::default_object_comparator_t; + using type = typename std::conditional < has_key_compare::value, + typename object_t::key_compare, object_comparator_t>::type; +}; + +template +using actual_object_comparator_t = typename actual_object_comparator::type; + +///////////////// +// char_traits // +///////////////// + +// Primary template of char_traits calls std char_traits +template +struct char_traits : std::char_traits +{}; + +// Explicitly define char traits for unsigned char since it is not standard +template<> +struct char_traits : std::char_traits +{ + using char_type = unsigned char; + using int_type = uint64_t; + + // Redefine to_int_type function + static int_type to_int_type(char_type c) noexcept + { + return static_cast(c); + } + + static char_type to_char_type(int_type i) noexcept + { + return static_cast(i); + } + + static constexpr int_type eof() noexcept + { + return static_cast(std::char_traits::eof()); + } +}; + +// Explicitly define char traits for signed char since it is not standard +template<> +struct char_traits : std::char_traits +{ + using char_type = signed char; + using int_type = uint64_t; + + // Redefine to_int_type function + static int_type to_int_type(char_type c) noexcept + { + return static_cast(c); + } + + static char_type to_char_type(int_type i) noexcept + { + return static_cast(i); + } + + static constexpr int_type eof() noexcept + { + return static_cast(std::char_traits::eof()); + } +}; + +/////////////////// +// is_ functions // +/////////////////// + +// https://en.cppreference.com/w/cpp/types/conjunction +template struct conjunction : std::true_type { }; +template struct conjunction : B { }; +template +struct conjunction +: std::conditional(B::value), conjunction, B>::type {}; + +// https://en.cppreference.com/w/cpp/types/negation +template struct negation : std::integral_constant < bool, !B::value > { }; + +// Reimplementation of is_constructible and is_default_constructible, due to them being broken for +// std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). +// This causes compile errors in e.g. clang 3.5 or gcc 4.9. +template +struct is_default_constructible : std::is_default_constructible {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_constructible : std::is_constructible {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_iterator_traits : std::false_type {}; + +template +struct is_iterator_traits> +{ + private: + using traits = iterator_traits; + + public: + static constexpr auto value = + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value; +}; + +template +struct is_range +{ + private: + using t_ref = typename std::add_lvalue_reference::type; + + using iterator = detected_t; + using sentinel = detected_t; + + // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator + // and https://en.cppreference.com/w/cpp/iterator/sentinel_for + // but reimplementing these would be too much work, as a lot of other concepts are used underneath + static constexpr auto is_iterator_begin = + is_iterator_traits>::value; + + public: + static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; +}; + +template +using iterator_t = enable_if_t::value, result_of_begin())>>; + +template +using range_value_t = value_type_t>>; + +// The following implementation of is_complete_type is taken from +// https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ +// and is written by Xiang Fan who agreed to using it in this library. + +template +struct is_complete_type : std::false_type {}; + +template +struct is_complete_type : std::true_type {}; + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl < + BasicJsonType, CompatibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + // macOS's is_constructible does not play well with nonesuch... + static constexpr bool value = + is_constructible::value && + is_constructible::value; +}; + +template +struct is_compatible_object_type + : is_compatible_object_type_impl {}; + +template +struct is_constructible_object_type_impl : std::false_type {}; + +template +struct is_constructible_object_type_impl < + BasicJsonType, ConstructibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + static constexpr bool value = + (is_default_constructible::value && + (std::is_move_assignable::value || + std::is_copy_assignable::value) && + (is_constructible::value && + std::is_same < + typename object_t::mapped_type, + typename ConstructibleObjectType::mapped_type >::value)) || + (has_from_json::value || + has_non_default_from_json < + BasicJsonType, + typename ConstructibleObjectType::mapped_type >::value); +}; + +template +struct is_constructible_object_type + : is_constructible_object_type_impl {}; + +template +struct is_compatible_string_type +{ + static constexpr auto value = + is_constructible::value; +}; + +template +struct is_constructible_string_type +{ + // launder type through decltype() to fix compilation failure on ICPC +#ifdef __INTEL_COMPILER + using laundered_type = decltype(std::declval()); +#else + using laundered_type = ConstructibleStringType; +#endif + + static constexpr auto value = + conjunction < + is_constructible, + is_detected_exact>::value; +}; + +template +struct is_compatible_array_type_impl : std::false_type {}; + +template +struct is_compatible_array_type_impl < + BasicJsonType, CompatibleArrayType, + enable_if_t < + is_detected::value&& + is_iterator_traits>>::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 + !std::is_same>::value >> +{ + static constexpr bool value = + is_constructible>::value; +}; + +template +struct is_compatible_array_type + : is_compatible_array_type_impl {}; + +template +struct is_constructible_array_type_impl : std::false_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t::value >> + : std::true_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t < !std::is_same::value&& + !is_compatible_string_type::value&& + is_default_constructible::value&& +(std::is_move_assignable::value || + std::is_copy_assignable::value)&& +is_detected::value&& +is_iterator_traits>>::value&& +is_detected::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 +!std::is_same>::value&& +is_complete_type < +detected_t>::value >> +{ + using value_type = range_value_t; + + static constexpr bool value = + std::is_same::value || + has_from_json::value || + has_non_default_from_json < + BasicJsonType, + value_type >::value; +}; + +template +struct is_constructible_array_type + : is_constructible_array_type_impl {}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl < + RealIntegerType, CompatibleNumberIntegerType, + enable_if_t < std::is_integral::value&& + std::is_integral::value&& + !std::is_same::value >> +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + is_constructible::value && + CompatibleLimits::is_integer && + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type + : is_compatible_integer_type_impl {}; + +template +struct is_compatible_type_impl: std::false_type {}; + +template +struct is_compatible_type_impl < + BasicJsonType, CompatibleType, + enable_if_t::value >> +{ + static constexpr bool value = + has_to_json::value; +}; + +template +struct is_compatible_type + : is_compatible_type_impl {}; + +template +struct is_constructible_tuple : std::false_type {}; + +template +struct is_constructible_tuple> : conjunction...> {}; + +template +struct is_json_iterator_of : std::false_type {}; + +template +struct is_json_iterator_of : std::true_type {}; + +template +struct is_json_iterator_of : std::true_type +{}; + +// checks if a given type T is a template specialization of Primary +template