From de3ddcd76df2ad5db0681e9f5816184e33657dd4 Mon Sep 17 00:00:00 2001 From: eumemic Date: Sun, 11 Oct 2026 14:09:21 -0700 Subject: [PATCH 1/2] Add independently audited pooled complex frame retiming --- .gitattributes | 2 + .../workflows/r489-pooled-retimed-complex.yml | 24 + .../r489-pooled-retimed-complex/EXPECTED.json | 143 + research/r489-pooled-retimed-complex/LICENSE | 201 + .../r489-pooled-retimed-complex/MANIFEST.json | 309 + .../r489-pooled-retimed-complex/NOTICE.md | 28 + research/r489-pooled-retimed-complex/PROOF.md | 141 + .../r489-pooled-retimed-complex/README.md | 57 + .../r489-pooled-retimed-complex/SOURCE.json | 285 + .../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_pooled.py | 103 + .../code/emit_pooled.py | 60 + .../code/finite_serial_pool.py | 53 + .../code/guarded_lemma.py | 43 + .../code/rebuild_retimed.py | 41 + .../code/review_composition.py | 236 + .../code/review_frames.py | 295 + .../data/COLORED-OWNERS.json.gz | Bin 0 -> 573758 bytes .../data/RETIME-FRAMES.json.gz | Bin 0 -> 6248 bytes .../provenance/BOUND-ADMISSION.json | 95 + .../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 + .../local-evidence/SOURCE-SPANS.log | 1 + .../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 + .../local-evidence/PYTHON311-GZIP-FAILURE.log | 5 + .../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 + .../r489-pooled-retimed-complex/verify.py | 96 + 310 files changed, 69988 insertions(+) create mode 100644 .github/workflows/r489-pooled-retimed-complex.yml create mode 100644 research/r489-pooled-retimed-complex/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/LICENSE create mode 100644 research/r489-pooled-retimed-complex/MANIFEST.json create mode 100644 research/r489-pooled-retimed-complex/NOTICE.md create mode 100644 research/r489-pooled-retimed-complex/PROOF.md create mode 100644 research/r489-pooled-retimed-complex/README.md create mode 100644 research/r489-pooled-retimed-complex/SOURCE.json create mode 100644 research/r489-pooled-retimed-complex/code/apply_retime.py create mode 100644 research/r489-pooled-retimed-complex/code/audit484/assemble_candidate.py create mode 100644 research/r489-pooled-retimed-complex/code/audit484/audit_pooled_candidate.py create mode 100644 research/r489-pooled-retimed-complex/code/audit484/audit_pooled_owners.py create mode 100644 research/r489-pooled-retimed-complex/code/audit484/audit_pooled_prefix.py create mode 100644 research/r489-pooled-retimed-complex/code/audit484/audit_scalar_invoice.py create mode 100644 research/r489-pooled-retimed-complex/code/audit493/review_invoice.py create mode 100644 research/r489-pooled-retimed-complex/code/audit493/review_local.py create mode 100644 research/r489-pooled-retimed-complex/code/audit_pooled.py create mode 100644 research/r489-pooled-retimed-complex/code/emit_pooled.py create mode 100644 research/r489-pooled-retimed-complex/code/finite_serial_pool.py create mode 100644 research/r489-pooled-retimed-complex/code/guarded_lemma.py create mode 100644 research/r489-pooled-retimed-complex/code/rebuild_retimed.py create mode 100644 research/r489-pooled-retimed-complex/code/review_composition.py create mode 100644 research/r489-pooled-retimed-complex/code/review_frames.py create mode 100644 research/r489-pooled-retimed-complex/data/COLORED-OWNERS.json.gz create mode 100644 research/r489-pooled-retimed-complex/data/RETIME-FRAMES.json.gz create mode 100644 research/r489-pooled-retimed-complex/provenance/BOUND-ADMISSION.json create mode 100644 research/r489-pooled-retimed-complex/provenance/NOMINATION.json create mode 100644 research/r489-pooled-retimed-complex/provenance/POOLED-ALLOCATION.json create mode 100644 research/r489-pooled-retimed-complex/provenance/POOLED-COLORING.json create mode 100644 research/r489-pooled-retimed-complex/provenance/POOLING-PROOF.txt create mode 100644 research/r489-pooled-retimed-complex/provenance/PR484-INDEPENDENT.json create mode 100644 research/r489-pooled-retimed-complex/provenance/PR493-INVOICE.json create mode 100644 research/r489-pooled-retimed-complex/provenance/PR493-LOCAL.json create mode 100644 research/r489-pooled-retimed-complex/provenance/RETIME-FINITE-ADMISSION.json create mode 100644 research/r489-pooled-retimed-complex/provenance/RETIME-FRAME-REVIEW.json create mode 100644 research/r489-pooled-retimed-complex/provenance/RETIME-FROZEN.json create mode 100644 research/r489-pooled-retimed-complex/provenance/RETIME-GAUSSIAN-ADMISSION.json create mode 100644 research/r489-pooled-retimed-complex/provenance/UNPOOLED-SELECTION.json create mode 100644 research/r489-pooled-retimed-complex/provenance/nominate.py create mode 100644 research/r489-pooled-retimed-complex/provenance/retime_continue.py create mode 100644 research/r489-pooled-retimed-complex/provenance/retime_neutral.py create mode 100644 research/r489-pooled-retimed-complex/provenance/retime_word.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/LICENSE create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/MANIFEST.sha256 create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/NOTICE.md create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/README.md create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr370.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr381.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr386.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr436.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr445.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr448.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr451.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr458.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr471.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr472.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr473.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr478.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr483.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr484.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/checkers/columns_h.cpp create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/checkers/columns_k.cpp create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/checkers/gram_frames.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/checkers/json.hpp create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/checkers/legality_h.cpp create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/export_records.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/independent/checkword.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/independent/interface.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/independent/mutate.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/independent/mutate_mut.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/independent/relax.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/mutate_records.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/mutate_records_mut.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/bit/regression/stage_cohort.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/cited.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/eleven/adapt.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/eleven/assemble.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/eleven/audit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/eleven/emit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/eleven/local_audit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r715-whole-hosted/code/assemble.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r715-whole-hosted/code/audit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r715-whole-hosted/code/emit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r715-whole-hosted/code/local_audit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r715-whole-hosted/data/hosting.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r715-whole-hosted/data/residual-isometries.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r715-whole-hosted/data/word.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r740-replica32/code/bank_routes.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r740-replica32/code/e8core.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r740-replica32/code/engines/base_two_moment.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r740-replica32/code/engines/moment.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r740-replica32/code/engines/outer.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r740-replica32/code/tile_m.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r740-replica32/data/residual-isometries.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/e8-r740-replica32/data/word.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/idle-axis-hosting/hosting_core.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/r740-hosted-eleven/code/emit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/r740-hosted-eleven/code/geometry.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/r740-hosted-eleven/code/row_bound.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/r740-hosted-eleven/data/selection.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/r740-hosted-rank149/code/emit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/r740-hosted-rank149/data/residual-isometries.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/r740-hosted-rank149/data/selection.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/hub/r740-hosted-rank149/data/word.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/nine/geometry.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/pricing/base_two_moment.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/pricing/moment.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/pricing/outer.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/pricing/prime_witnesses.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/provenance.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/skeleton/e8.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/skeleton/gen.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/skeleton/geom.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/code/skeleton/wordkit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/bit/bitE8-r865.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/bit/bitE8mut-r489.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/complex-b.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/complex/pr448/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/complex/pr458/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/complex/pr471/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/complex/pr473/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/complex/pr478/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/complex/pr483/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/complex/pr484/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/eleven/hosting.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/eleven/residual-isometries.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/skeleton/d4part-pairs.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/data/skeleton/plan-skB.json create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/discovery/README.md create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/discovery/d4part.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/discovery/host_select.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/discovery/plan.py create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/portable-include/bits/stdc++.h create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/requirements.txt create mode 100644 research/r489-pooled-retimed-complex/vendor/bit/verify.sh create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/MANIFEST.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/NOTICE.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/PR-BODY.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/PROOF.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/README.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/SOURCE.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/adapters_gk.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/assemble_gk.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/audit_gk.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/audit_hosted_gk.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/controls_gk.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/controls_hosting.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/controls_pipeline.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/controls_sel.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/emit_gk.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/gk_common.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/gk_word.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/hosted_gk.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/integrate_gk.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/check.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/gd.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_e2e.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_instances.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_lib.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_mutants.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/lg_phys.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/lemmaG/run_labels.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/make_meta.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/onehost_gk.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/replay_gk.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/code/run_variant.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/data/SELECTION.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/data/bit-suppliers-pinned.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/data/selections/empty.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/data/selections/gauge80-kernel42.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/data/selections/gauge80.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/data/selections/kernel79.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/README.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/cxcheck.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/cxlab.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/gauge.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/gauge2.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/gauge3.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/gauge4.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/hostmodel.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/iso1.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/kcap.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/kern.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/kern2.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/kern3.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/kern4.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/kern5.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/kern6.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/provenance/sa_long.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-complex-gauge-kernel/verify.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/LICENSE create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/MANIFEST.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/NOTICE.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/PROOF.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/README.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/SELECTION.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/SOURCE.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/VALIDATION.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/apply.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/bit_audit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/bit_global.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/bit_price.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/combined.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/local-evidence/ASSEMBLY.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/local-evidence/AUDIT.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/local-evidence/BIT-PRICE.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/local-evidence/FULL-PYTHON311.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/local-evidence/FULL-PYTHON314.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/local-evidence/GLOBAL.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/local-evidence/SOURCE-SPANS.log create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/source_span.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/vendor/kernel417/LICENSE create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/vendor/kernel417/e8core.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/base_two_moment.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/moment.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/vendor/kernel417/engines/outer.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/vendor/kernel417/stages.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-kernel/verify.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/LICENSE create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/MANIFEST.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/NOTICE.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/PROOF.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/README.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/SELECTION.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/SOURCE.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/VALIDATION.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/bit_audit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/bit_global.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/bit_price.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/combined.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/ASSEMBLY.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/BIT-AUDIT.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/BIT-GLOBAL.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/BIT-PRICE.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/FAILED-INLINING.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/FAILED-LATE-RESET.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON311.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON314.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/FULL-PYTHON314-INITIAL.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/PARENT-FULL-REPLAY.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/PYTHON311-GZIP-FAILURE.log create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/local-evidence/PYTHON311-INITIAL-FAILURE.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/replay.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/e8-early-reset-reuse/verify.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/LICENSE create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/MANIFEST.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/NOTICE.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/PROOF.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/README.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/SELECTION.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/assemble.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/audit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/bit_hosted.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/complex_hosted.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/hosting_core.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/idle-axis-hosting/verify.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/.gitattributes create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/CERTIFICATE.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/EXPECTED.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/LICENSE create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/MANIFEST.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/NOTICE.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/PROOF.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/README.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/SOURCES.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/VALIDATION.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/bit_audit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/bit_construct.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/bit_global.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/bit_price.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/combined.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/complex_audit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/complex_construct.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/complex_emit.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/complex_integrate.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/complex_phases.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/complex_phases_full.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/code/complex_replay.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/inputs/bit-geometry.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/inputs/bit-r767.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/inputs/complex-data-phases.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/inputs/complex-phase-receipt.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/inputs/complex-phase-recipes.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/inputs/complex-ports.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/inputs/complex-template.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/inputs/e8-r865.json.gz create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/notices/NOTICE-PR352.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/notices/NOTICE.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/notices/PR386.txt create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/notices/PR426-SOURCE-PINS.json create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/notices/PR426.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/notices/SUSSMAN-NOTICE create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/proofs/INHERITED-COMPLEX-GEOMETRY.txt create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/proofs/PR386-BIT-GEOMETRY.txt create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/proofs/PR425-COMPLEX.txt create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/proofs/PR426.md create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/vendor/clifford_exact.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/vendor/engines/base_two_moment.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/vendor/engines/moment.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/vendor/engines/outer.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/vendor/export_records.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/vendor/hamming_packets.py create mode 100644 research/r489-pooled-retimed-complex/vendor/complex/split-centres-global/verify.py create mode 100644 research/r489-pooled-retimed-complex/verify.py diff --git a/.gitattributes b/.gitattributes index 6825630198..c063c14595 100644 --- a/.gitattributes +++ b/.gitattributes @@ -18,3 +18,5 @@ research/coordinated-frames-and-entrance-banks/** -text -whitespace # Frozen PR210 package and round-nine evidence retain their audited bytes. research/five-stage-source527-banks/** -text -whitespace research/community-round9-audit/** -text -whitespace + +research/r489-pooled-retimed-complex/** -text diff --git a/.github/workflows/r489-pooled-retimed-complex.yml b/.github/workflows/r489-pooled-retimed-complex.yml new file mode 100644 index 0000000000..34cff259e2 --- /dev/null +++ b/.github/workflows/r489-pooled-retimed-complex.yml @@ -0,0 +1,24 @@ +name: R489 pooled retimed complex +on: + workflow_dispatch: + pull_request: + paths: + - 'research/r489-pooled-retimed-complex/**' + - '.github/workflows/r489-pooled-retimed-complex.yml' +jobs: + verify: + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.14' + - run: sudo apt-get update && sudo apt-get install -y libboost-dev + - run: python -m pip install numpy==2.3.5 sympy==1.14.0 + - run: python -B research/r489-pooled-retimed-complex/verify.py "$RUNNER_TEMP/r489-retimed-proof" --boost-include /usr/include --cxx g++ + - uses: actions/upload-artifact@v4 + if: always() + with: + name: r489-retimed-proof + path: ${{ runner.temp }}/r489-retimed-proof diff --git a/research/r489-pooled-retimed-complex/EXPECTED.json b/research/r489-pooled-retimed-complex/EXPECTED.json new file mode 100644 index 0000000000..43948fd60a --- /dev/null +++ b/research/r489-pooled-retimed-complex/EXPECTED.json @@ -0,0 +1,143 @@ +{ + "complex_lower": "1345325487149526878087/1000000000000000000000000", + "next_b_rejected": "168165685893690859761/125000000000000000000000", + "bit_lower": "391360506745414227149/250000000000000000000000", + "kappa": "1343518018117309/1000000000000000000", + "kappa_decimal": "0.001343518018117309", + "bit_charged_three_level_coefficient_bits": 6464, + "external_row_allowance": 20161, + "binding_component": "complex", + "strict_outer_constraints": { + "bit_positive": "1345325487149526868992575856839905152764432850162883798594382642865111184103929043593461548579749789321934545152248060885802500101307959888208157061594640680690829891010070337816975637009406902638543011689072391228548734410720296997142426977989919733310440705316844294091418110991919766801783/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "9094424143160094847235567149837116201405617357134888815896070956406538451420250210678065454847751939114197499898692040111791842938405359319309170108989929662183024362990593097361456988310927608771451265589279703002857573022010080266689559294683155705908581889008080233198217/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29904674512850473121913/1000000000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "7749098656010567969148567149837116201405617357134888815896070956406538451420250210678065454847751939114197499898692040111791842938405359319309170108989929662183024362990593097361456988310927608771451265589279703002857573022010080266689559294683155705908581889008080233198217/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1345325487149526868992575856839905152764432850162883798594382642865111184103929043593461548579749789321934545152248060885802500101307959888208157061594640680690829891010070337816975637009406902638543011689072391228548734410720296997142426977989919733310440705316844294091418110991919766801783/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "5219874815154810853566859431758463253467241528730328206542418121068380409814054148932494276003625758879033295101594080941698421570510639547862742116089605511782342072505366886497704131164870707024268644483712242729977520921725337130487206625331497586264731649820884410690526610991919766801783/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "672662743574763558150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499327337256425236441849037558729574292610359431758463253467241528730328206542418121068380409814054148932494276003625758879033295101594080941698421570510639547862742116089605511782342072505366886497704131164870707024268644483712242729977520921725337130487206625331497586264731649820884410690526610991919766801783/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "1345325487149526868992575856839905152764432850162883798594382642865111184103929043593461548579749789321934545152248060885802500101307959888208157061594640680690829891010070337816975637009406902638543011689072391228548734410720296997142426977989919733310440705316844294091418110991919766801783/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "10439749630309621716228143006677021354170050207297772614490453599271649635524179254271527003427501728436132045050940100997594343039713319207517327170584570342873854254000663435178432625320334511409994277278352094231406307432730377263831986272673075439219022594324924527289635110991919766801783/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1345325487149526868992575856839905152764432850162883798594382642865111184103929043593461548579749789321934545152248060885802500101307959888208157061594640680690829891010070337816975637009406902638543011689072391228548734410720296997142426977989919733310440705316844294091418110991919766801783/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1345325487149526868992575856839905152764432850162883798594382642865111184103929043593461548579749789321934545152248060885802500101307959888208157061594640680690829891010070337816975637009406902638543011689072391228548734410720296997142426977989919733310440705316844294091418110991919766801783/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "5219874815154810853566859431758463253467241528730328206542418121068380409814054148932494276003625758879033295101594080941698421570510639547862742116089605511782342072505366886497704131164870707024268644483712242729977520921725337130487206625331497586264731649820884410690526610991919766801783/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217", + "epsilon_below_one": "672662743574763933150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217/500672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217", + "guard_width": "672662743574763933150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217/500672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217", + "K_geometry": "375672662743574763558150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217/500672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217000000000000000000", + "K_dominates_log": "672662743574763557478299697695662149238678126971111039143117903028135046924823407661947796728363972135886133810428390053460980902031677937334873531083441393835679454421034036080400043584238625284637941340496179473435486681158464294291123561986905599490314296393839544222474975510613175574205038828964643888743610991919766801783/500672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217000000000000000000", + "record_suffix": "672662743574763933150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217/500672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217", + "phase_local": "5381301948598110964535036786588642225966162104661868264872427201915837601127896560183284928029984929608426201785048077900227915190873111345445922537508964558796484641793795453604005536046670419800709023186401230303554975295172765184448477109909545686079867919073356440369353426764422300740518761885526276276262610991919766801783/4005381301948598107465207699530163405659117124545932293972262067770157374347660655031452956721487566808540045791970993928967733639187247352466412627435914883617098063071283155905741263419957064908018366950681034343805850844130302058160179832626197302956102346997348019309882146801432924714475787112064641865585736000000000000000000", + "phase_boundary": "1076260389719621792368877162457917698672462467916033087062772985789938122999372535020919550839931482776389568208252934726041003841075229372315820588777057665118034184767270729010994800081018493386015462641573755258874299990931118656304611008951703321197990321194940992463635985618082529159889072233812783807673810991919766801783/801076260389719621493041539906032681131823424909186458794452413554031474869532131006290591344297513361708009158394198785793546727837449470493282525487182976723419612614256631181148252683991412981603673390136206868761170168826060411632035966525239460591220469399469603861976429360286584942895157422412928373117147200000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "999999999999999998499327337256425236566849037558729574292610359431758463253467241528730328206542418121068380409814054148932494276003625758879033295101594080941698421570510639547862742116089605511782342072505366886497704131164870707024268644483712242729977520921725337130487206625331497586264731649820884410690526610991919766801783/2002690650974299053732603849765081702829558562272966146986131033885078687173830327515726478360743783404270022895985496964483866819593623676233206313717957441808549031535641577952870631709978532454009183475340517171902925422065151029080089916313098651478051173498674009654941073400716462357237893556032320932792868000000000000000000", + "prime_interval_packing": "672662743574763933150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217/500672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217", + "alpha_positive": "1345325487149527365629262138966087981628318695212647785675876374297806840382405286593567386914309823203391857806802631174427685800437596995636451960572801845972937338331428524298057971078871738786933810175625472449166842197446221564313602640261568469003107671062341957957743325689728764883678427837044877086960610991919766801783/1001345325487149526866301924882540851414779281136483073493065516942539343586915163757863239180371891702135011447992748482241933409796811838116603156858978720904274515767820788976435315854989266227004591737670258585951462711032575514540044958156549325739025586749337004827470536700358231178618946778016160466396434000000000000000000", + "alpha_below_one": "999999999999999999500672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217/1001345325487149526866301924882540851414779281136483073493065516942539343586915163757863239180371891702135011447992748482241933409796811838116603156858978720904274515767820788976435315854989266227004591737670258585951462711032575514540044958156549325739025586749337004827470536700358231178618946778016160466396434000000000000000000", + "alpha_below_one_fourth": "248991005884637854350946219081669124872066501588908120587590502861337029056346385652872242408178663102330361004191384489386055666648765362533514337254171878380095691603623768719810770992668444817964214124241939174038698835560697657070697636898875762965753289016271909248909890849399829029771058266666995239512147889008080233198217/1001345325487149526866301924882540851414779281136483073493065516942539343586915163757863239180371891702135011447992748482241933409796811838116603156858978720904274515767820788976435315854989266227004591737670258585951462711032575514540044958156549325739025586749337004827470536700358231178618946778016160466396434000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "499326432306092049009613163770790158586250205066999959156201532245145540413174402660869205729354123659157891274119095686471982691562749290658561831704897859550540055210546186361883634279201071116081281021628912866181895717918931969782775871823952585339019078052142553492513812355612631277347329410676651264536299848491488456442750348735246869464063041382552712165327920061116549880751267032883306744591781767946035823229030787687058598251181651959990310745308466039793082702735988407121546712217114955015938661332657863045307856229625489693297296432067521222246280248629090322777422327207863568128411979089/500672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "28043050415588784865223679584472031535572389883691269628900265463865983605020883515665432669152273280105115225106325788984944386285487101543094201134182536826111689239858733328602341881011387702728799909387932174090953694359547804344208632727558441695458886213213608143087595554535468904957012101947054481692614308167024240699594651/4005381301948598107465207699530163405659117124545932293972262067770157374347660655031452956721487566808540045791970993928967733639187247352466412627435914883617098063071283155905741263419957064908018366950681034343805850844130302058160179832626197302956102346997348019309882146801432924714475787112064641865585736000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "515354650572792958117388209198022252311992362764802079842702619069230145949203973667483719062400024099332373318946945162363383973566432691053966529883948968551340145970896265211082189627335070491273181679421194370906073133185850383760596534031461564579687349539118931943393040261461190049243534404810949844361947/500672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217000000000000000000", + "coordinate_movement_above_kappa": "1807469032217868992575856839905152764432850162883798594382642865111184103929043593461548579749789321934545152248060885802500101307959888208157061594640680690829891010070337816975637009406902638543011689072391228548734410720296997142426977989919733310440705316844294091418110991919766801783/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "1468198782921819468423724675675182660460272219656054309616986059796047415574639178855209947221407824826486759495057092124241726866802677199566495145445960809920288808698587072286453169984043737777088581058606507793034177766956262649057405495318690171017455616445042952965777191128207445993406101580286961116373/50067266274357476343315096244127042570738964056824153674653275847126967179345758187893161959018594585106750572399637424112096670489840591905830157842948936045213725788391039448821765792749463311350229586883512929297573135551628775727002247907827466286951279337466850241373526835017911558930947338900808023319821700000000000000000", + "bulk_exposure_above_kappa": "1807469032217868992575856839905152764432850162883798594382642865111184103929043593461548579749789321934545152248060885802500101307959888208157061594640680690829891010070337816975637009406902638543011689072391228548734410720296997142426977989919733310440705316844294091418110991919766801783/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "1619473890864469847773350861377825889958990699277208955008957160197492808626343879945211654548270463539321457931593690093302238264039431933140224346924144946150034878347618149247569227381207398362673974091193908502369928287905364283734659876860319202289934829439608943478467980340793942447400908293447197588904491/4005381301948598107465207699530163405659117124545932293972262067770157374347660655031452956721487566808540045791970993928967733639187247352466412627435914883617098063071283155905741263419957064908018366950681034343805850844130302058160179832626197302956102346997348019309882146801432924714475787112064641865585736000000000000000000", + "scalar_work_above_kappa": "3622164541838768901505954711142907592788549261550175101995088194082571495800174207460938132909014246943591480827579187057786105083633055609373430660642102387958583909883259727200439859091185930816683157566534425674272853709970515312814749793173417853767986002938282953133409053741510404804638801849479518521697359/4005381301948598107465207699530163405659117124545932293972262067770157374347660655031452956721487566808540045791970993928967733639187247352466412627435914883617098063071283155905741263419957064908018366950681034343805850844130302058160179832626197302956102346997348019309882146801432924714475787112064641865585736000000000000000000", + "dimension_above_kappa": "499327337256425236082203688131522532409998568629780715565459604293532408049245037190298526359018027816416213338403649858211406614048539243305082395136943330601829272000038574063122488043401632097579893758499941198297450323904906613636050654107575720891083740656793062165952081188939816354083566872453109816045317404810949844361947/500672662743574763433150962441270425707389640568241536746532758471269671793457581878931619590185945851067505723996374241120966704898405919058301578429489360452137257883910394488217657927494633113502295868835129292975731355516287757270022479078274662869512793374668502413735268350179115589309473389008080233198217000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "1758159582670889716837073442589143979241877340631521741383360094008444560779569/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "11646244853943" + }, + { + "gap": "2365296897043323580235593796713331224359102922711242285417443568347607440533838658287883342632128620436712124456595497/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6434742563675516635" + }, + { + "gap": "3182094200268073613258330737871604385159398312818584759030361331023465449845962963572866924372637461460991714706389286417141215447817880845731834997007825761/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "3555301505339871712559428" + }, + { + "gap": "4280952430131330271569312938290607170548049457218387702776481869165237563881772088820459930734043025684617181823404503474086934186594826107261530302537502214354109776201343892825140220650015000793/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1964362780451609826625858782139" + }, + { + "gap": "5759274413530382817909766623916775143192486762684579405449795987991774807500876422670017378960082169125093253051222582964109462520055219080673488460271189026964351351536233865146474220170340782765207268471350481041234815890703880677009/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1085342868228752973196028259077591767" + }, + { + "gap": "7748098656010567969148567149837116201405617357134888815896070956406538451420250210678065454847751939114197499898692040111791842938405359319309170108989929662183024362990593097361456988310927608771451265589279703002857573022010080266689559294683155705908581889008080233198217/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "599669853927999715648938728111173559232484" + } + ], + "complex_profile": { + "1": 172056, + "2": 19008, + "3": 42032, + "4": 6048, + "5": 22496, + "6": 6624, + "7": 1800, + "8": 4120 + }, + "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, + 128 + ], + "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-pooled-retimed-complex/LICENSE b/research/r489-pooled-retimed-complex/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/MANIFEST.json b/research/r489-pooled-retimed-complex/MANIFEST.json new file mode 100644 index 0000000000..c850dd35d7 --- /dev/null +++ b/research/r489-pooled-retimed-complex/MANIFEST.json @@ -0,0 +1,309 @@ +{ + "PROOF.md": "a2fd0785fdb5d83366c01be1263ab09675bc76d2a5ff78c7ac6aa2e919592a2d", + "EXPECTED.json": "940505b40dee096d0426ca545e15d98fa93b2e6af1a675e59d0760748a70a659", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "SOURCE.json": "08da45430fbaaf47c82cc2a1a29dc50ced39ef4fc5d00f86e2b24467d8743fdf", + "README.md": "b23ef3ad1f8b7fccc5a3dc35c2231a21851e214aa6a3751d2cb8a0eff5bf2bb9", + "verify.py": "a55e2a0faa83d9925b3e9073bfea3fc4f39cb9e850325f3060c6ae708c5f468d", + "NOTICE.md": "a8967998d61499e2e1b9466bc17c4cd9cd56f9ef46b0eecfddf9f762ca134cef", + "code/apply_retime.py": "030819cf70ed4cfd0020957b1ff8d3e322a7e7e090dcf3aec79391584e20370f", + "code/finite_serial_pool.py": "6b7ec1e2a3251b67c39729d144c9a0ff9c08049d56ecbf3f8217774f2553ccca", + "code/audit_pooled.py": "f8542d91ebce7785355af9088a1338a682df0148baa178f2012a49b788548939", + "code/rebuild_retimed.py": "10ba70a27dca6f2e6cad0488af4e5619b8d808c4e5c9b84bedd72f31a0cb3482", + "code/guarded_lemma.py": "6314c8f453c5ddabc48d7792dd8aeb1b68f6527f4770461d0481a790392ce19c", + "code/emit_pooled.py": "c2a939f2d7c678327e73708b15e98e829a7f9e2b3f5f2e4c3139e959525313a3", + "code/review_frames.py": "d5f194f22e08da34f50e85c99fdc150b6b6860767c8f523c5093067f8c9af1ce", + "code/review_composition.py": "6e0cbb849f42d44e3fae802044bc50a96c28329131610b848ff2c3cc40588922", + "code/audit484/audit_pooled_candidate.py": "81b3dbefcb8d9cbd15ef56b09cc4babff2fdbd818c67451cf04a93dfb46d33d1", + "code/audit484/audit_scalar_invoice.py": "652eed65fe8f72ab486dcdbe761f401f8a2d43530f2fb0c5c7777be488cd4648", + "code/audit484/assemble_candidate.py": "25b9f8e94e1964a122894c1f3d0de1a8a1994acb9a1c58ac99f1f318a73c8da4", + "code/audit484/audit_pooled_prefix.py": "5dab1df1a17987d5200c398b7f1f0e3085e06440a6f58acdc2dabf357d707c11", + "code/audit484/audit_pooled_owners.py": "bd071b772e2431f9d71108ac4a00d165e950e08cfea0e3698baac0723bb379c7", + "code/audit493/review_local.py": "0b847b6ec61d17223e5e352d1e6af7cfebfc9ff727b982e71f04f8b4363358d9", + "code/audit493/review_invoice.py": "c9770db17cb668b4d148b55f3d9d9440dc50050aad6df91e021b3d0c3f4b8248", + "provenance/retime_word.py": "6be3b24558180650490781d71cba29e4227a28d5e7fc72780249bcae1d95ee53", + "provenance/POOLED-ALLOCATION.json": "7bd4ccf92bdec87ea99aca9ce0cefbed6a4a42d85dc3e935b4ca7c4ec0f0f1a5", + "provenance/RETIME-FRAME-REVIEW.json": "d3df6f943f38a58a4848e3437983b23b706f148fce1d30e64aedfefee34c9644", + "provenance/RETIME-FROZEN.json": "d4b8df5ea74be9de1ca6ed58632c6f1f848aff90bc4e7a4dd9f4033f543c0688", + "provenance/PR493-LOCAL.json": "0c2ac175eb853d98fcde7a4b0a6a3c0a8dbbbe13e5987e85881d6260204a5eb7", + "provenance/RETIME-FINITE-ADMISSION.json": "b46a878c6ea3c5da9d2eb1c7a7f01ef34a887762eca08e382167630baa3d9007", + "provenance/PR493-INVOICE.json": "30c0ab2f4f9b8bb702d72c72825c8f1819d2ad1adb73bc26d3cfc43915611bf1", + "provenance/retime_continue.py": "e3619582761711f7803593374dff9221b95c5ea9479b5e8c02352541b584f6d9", + "provenance/UNPOOLED-SELECTION.json": "85089fb301976b5739cb3d219070ae89f75e42582a54c5a0557f8530035f9eb8", + "provenance/POOLING-PROOF.txt": "dcc30730f8fd7bd6c68dbf0d0df1bc7a707d608bd0f286a61f375716a13987cb", + "provenance/NOMINATION.json": "0bbd0d7df7ea8c111b6e58a8e4757e66d8f7947fc9b29b32ed3ec26f2eb3d9ef", + "provenance/RETIME-GAUSSIAN-ADMISSION.json": "ae6306dfebaffa34c5beeb375eead93e51aa5b0632b1655828f7462b9cbec438", + "provenance/PR484-INDEPENDENT.json": "8427cec228cccd2030cd61bbdfb52e38207235ffde94459f2385a5649efc81b6", + "provenance/POOLED-COLORING.json": "5c683d2768c60a7d7eb0bddca215717d8b390614dd2d45bc6e36e1a33b2db0d1", + "provenance/nominate.py": "ff393ff86291218f8acd9f086a5d3426e67d765b2712cb9937434b0b18c593e5", + "provenance/retime_neutral.py": "3ac82aeae437880b3ded869cfabb85e3739fb07aaa2ae00a79aa126926c2491c", + "provenance/BOUND-ADMISSION.json": "21db5fbaa6d73c03691eef54f965792a5f2d5c073defa19be2c968944535ef92", + "data/COLORED-OWNERS.json.gz": "e597d547372420a4d4fbdc2d0317bfb404c57d1ee5f39c5f1afcbe070a3b28b0", + "data/RETIME-FRAMES.json.gz": "0ef98bd78bb62b59c28578a9fc56c97c97578883d62a966b5d51c2c1c3583481", + "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" +} diff --git a/research/r489-pooled-retimed-complex/NOTICE.md b/research/r489-pooled-retimed-complex/NOTICE.md new file mode 100644 index 0000000000..896ca39727 --- /dev/null +++ b/research/r489-pooled-retimed-complex/NOTICE.md @@ -0,0 +1,28 @@ +# 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. diff --git a/research/r489-pooled-retimed-complex/PROOF.md b/research/r489-pooled-retimed-complex/PROOF.md new file mode 100644 index 0000000000..902cba3da5 --- /dev/null +++ b/research/r489-pooled-retimed-complex/PROOF.md @@ -0,0 +1,141 @@ +# Common-frame retiming with 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. + +## Frame-only change + +A frozen map changes the common frames of 411 A gates and 504 B gates of +PR484's gauge80-kernel42 word. All 4,107 scalar payloads and their order are +unchanged. The first 531 A gates, all helper entrances, target levels, centre +frames, cuts and cleanup are fixed. Each register's frame path stays nested; +each scalar gate executes at one common frame for every participating register. + +The verifier starts from a newly reconstructed PR484 word, applies the frozen +map, and recompiles both emitted orientations. The independent frame reviewer +checks the actual GF(2) subspaces, the orthogonal tau43 raw-to-canonical map, +every event of both 25,082-event ledgers, per-register telescoping and all +private-centre lifetimes. The changed local paid profile is +`{1:2385,2:264,3:530,4:84,5:270,6:92,7:1,8:17}`. Its rank mass remains 6,884; +its 3,643 children redistribute that mass and improve the complete charged +moment. No scalar cost or dimension reduction is inferred merely from rank. + +All phase recipes are rebuilt for the changed transitions. The exhaustive +512-column normalization audit includes all used transition operators, gauge +compensations, centres and entering-helper chains. Both full physical +orientations are tested on 806 basis columns and eight dense dirty columns. +The exact all-800-column scalar audit and common-label proof supply the +universal scalar identity; the end-to-end samples alone are not a universal +physical proof. Integer bounds are established before int64 arithmetic, with +observed maxima of 14 bits for normalization and 29 for end-to-end replay. +The pinned source contracts remain the stated conditional interfaces. + +## Placement + +Retain PR496's pooled whole-owner placement. Entrances and helper residual +widths are fixed by the retiming, so all of its actual host charts and execution +windows remain valid. 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 +count 172056 19008 42032 6048 22496 6624 1800 4120 +``` + +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 +`1345325487149526878087/10^24`; both rational engines reject the next grid +point. The strict outer assembly yields `κ = 1343518018117309/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 eight, so the degree-two halving inequality is 73^2 > 2*8^2. + +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. Frame discovery +used common-frame component moves, including zero-cost moves before descent; +the final 1,500-move continuation plateau 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-pooled-retimed-complex/README.md b/research/r489-pooled-retimed-complex/README.md new file mode 100644 index 0000000000..b0cb0e87da --- /dev/null +++ b/research/r489-pooled-retimed-complex/README.md @@ -0,0 +1,57 @@ +# Conditional κ = 0.001343518018117309 + +This finite construction combines the pinned PR493 R489 bit word with a +frame-only retiming of PR484's gauge/kernel complex word and PR496's pooled +whole-owner placement. The 4,107 scalar gates keep their payloads and order; +411 A frames and 504 B frames change. Fixed entrances, centres, boundaries +and cleanup remain exact. Every helper residual occupies one physical family, +each invocation has 800 distinct owners, and no bank families are needed. + +The exact complex saving is +`b = 1345325487149526878087/10^24`; the bit saving is +`c = 391360506745414227149/250000000000000000000000`. +The resulting bound is +`κ = 1343518018117309/10^18 = 0.001343518018117309`. +It improves the frozen whole-owner PR496 result by about 0.859%. +The larger draft PR494 number uses the disputed cross-family split of PR448 +and is not a comparison within this package's whole-owner scope. + +Run from the committed repository package: + +```sh +python3 -B research/r489-pooled-retimed-complex/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`). The release replays use +Python 3.14; inherited source receipts compare gzip byte hashes, so other +Python minor versions are not covered by this release. Search additionally used SciPy, but verification performs no +optimization and needs no network. + +The verifier reconstructs both pinned suppliers in full, applies the frozen +retiming map to the fresh word, rebuilds all changed scalar programs and exact +Gaussian recipes with the unchanged upstream tools, then rebuilds the +serialized owner map, audits both reflected local programs and arbitrary dirty +restoration, checks all actual whole-family matrices and spectators, checks +complete idle remainders and mutation controls, and independently recomputes +the complete paid profiles, finite invoices, six bootstrap cutoffs and all 47 +strict inequalities. Guarded exact simulations bound expanding integer +operations before they execute. Source files are checked before and after the +run; each subprocess exit is recorded. `EXACT-MATH.json` contains reproducible +mathematical results; runtime-dependent source/template hashes are bound +separately in each run's receipts. + +`PROOF.md` gives the retiming, placement and serial execution argument. +The independent frame reviewer checks both 25,082-event ledgers, all fixed +scalar payloads, raw-to-canonical orthogonality and 12 targeted rejection +controls. Fresh source mutation suites and Lemma G necessity controls also run. +`SOURCE.json` pins all 266 original supplier files. `MANIFEST.json` binds this +entire package. `EXPECTED.json` fixes the exact result. `NOTICE.md` preserves +provenance and AI disclosures. The original bit/complex packages and previously +published PRs are unchanged. + +This remains conditional on the inherited all-size compiler, mutable-basis and +common-label interfaces, PR484's Lemma A realization, restored-row, +precision/tape and analytic-transfer contracts. It is a finite construction +with exact checks, not an unconditional multiplication theorem or Lean proof. diff --git a/research/r489-pooled-retimed-complex/SOURCE.json b/research/r489-pooled-retimed-complex/SOURCE.json new file mode 100644 index 0000000000..3a82c7659f --- /dev/null +++ b/research/r489-pooled-retimed-complex/SOURCE.json @@ -0,0 +1,285 @@ +{ + "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" + } +} diff --git a/research/r489-pooled-retimed-complex/code/apply_retime.py b/research/r489-pooled-retimed-complex/code/apply_retime.py new file mode 100644 index 0000000000..01a0d7008c --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/code/audit484/assemble_candidate.py b/research/r489-pooled-retimed-complex/code/audit484/assemble_candidate.py new file mode 100644 index 0000000000..72ee6f0376 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/code/audit484/audit_pooled_candidate.py b/research/r489-pooled-retimed-complex/code/audit484/audit_pooled_candidate.py new file mode 100644 index 0000000000..fb1ca8e31d --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/code/audit484/audit_pooled_owners.py b/research/r489-pooled-retimed-complex/code/audit484/audit_pooled_owners.py new file mode 100644 index 0000000000..7d3e8a4a88 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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==20 and peak<2**20 +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==142 and 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='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 contributes20bits; every frame/normalizer is unitary. An initial2^73entry stream with supremum≤1 has L2<2^37. Four bits cover primitive arithmetic before normalization, giving142<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-pooled-retimed-complex/code/audit484/audit_scalar_invoice.py b/research/r489-pooled-retimed-complex/code/audit484/audit_scalar_invoice.py new file mode 100644 index 0000000000..b03fdf510f --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/code/audit493/review_invoice.py b/research/r489-pooled-retimed-complex/code/audit493/review_invoice.py new file mode 100644 index 0000000000..7e791e5dfb --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/code/audit493/review_local.py b/research/r489-pooled-retimed-complex/code/audit493/review_local.py new file mode 100644 index 0000000000..e341916fc4 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/code/audit_pooled.py b/research/r489-pooled-retimed-complex/code/audit_pooled.py new file mode 100644 index 0000000000..1e2621684b --- /dev/null +++ b/research/r489-pooled-retimed-complex/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<=f=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-pooled-retimed-complex/code/guarded_lemma.py b/research/r489-pooled-retimed-complex/code/guarded_lemma.py new file mode 100644 index 0000000000..0388744e39 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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=base['template_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-pooled-retimed-complex/code/review_frames.py b/research/r489-pooled-retimed-complex/code/review_frames.py new file mode 100644 index 0000000000..3b75db5a64 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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'][:531]==new['A'][:531], '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=531,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 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

<90yPlOgu@uL#IZ#rwCr6?4)W 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

fRmKxMfyG~92i^h>L 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 z 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 G^Zx*~_&D1D literal 0 HcmV?d00001 diff --git a/research/r489-pooled-retimed-complex/data/RETIME-FRAMES.json.gz b/research/r489-pooled-retimed-complex/data/RETIME-FRAMES.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..bbf423ac16039bb3773c38da20baae9b02a92583 GIT binary patch literal 6248 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 + 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-pooled-retimed-complex/provenance/retime_continue.py b/research/r489-pooled-retimed-complex/provenance/retime_continue.py new file mode 100644 index 0000000000..e02c42c1b3 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr370.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr370.json new file mode 100644 index 0000000000..1b30f277af --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr381.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr381.json new file mode 100644 index 0000000000..fb0b0edd13 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr386.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr386.json new file mode 100644 index 0000000000..3744861904 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr436.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr436.json new file mode 100644 index 0000000000..f190527ae1 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr445.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr445.json new file mode 100644 index 0000000000..ae29de391a --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr448.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr448.json new file mode 100644 index 0000000000..3648ab3692 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr451.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr451.json new file mode 100644 index 0000000000..fbd9881e09 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr458.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr458.json new file mode 100644 index 0000000000..c36c74cbea --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr471.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr471.json new file mode 100644 index 0000000000..0dc019cfb1 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr472.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr472.json new file mode 100644 index 0000000000..31acb027ec --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr473.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr473.json new file mode 100644 index 0000000000..821caf8f07 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr478.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr478.json new file mode 100644 index 0000000000..608323ccbe --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr483.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr483.json new file mode 100644 index 0000000000..817396d9c8 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/SOURCE-pr484.json b/research/r489-pooled-retimed-complex/vendor/bit/SOURCE-pr484.json new file mode 100644 index 0000000000..76292df851 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/code/bit/checkers/columns_h.cpp b/research/r489-pooled-retimed-complex/vendor/bit/code/bit/checkers/columns_h.cpp new file mode 100644 index 0000000000..00c5a3a5d8 --- /dev/null +++ b/research/r489-pooled-retimed-complex/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-pooled-retimed-complex/vendor/bit/code/bit/checkers/json.hpp b/research/r489-pooled-retimed-complex/vendor/bit/code/bit/checkers/json.hpp new file mode 100644 index 0000000000..82d69f7c5d --- /dev/null +++ b/research/r489-pooled-retimed-complex/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